sealbridge 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.ja.md +492 -30
  2. package/README.md +522 -109
  3. package/dist/cli/dist/accept.d.ts +13 -0
  4. package/dist/cli/dist/accept.js +115 -0
  5. package/dist/cli/dist/accept.js.map +1 -0
  6. package/dist/cli/dist/approval-summary.d.ts +1 -1
  7. package/dist/cli/dist/board.d.ts +10 -9
  8. package/dist/cli/dist/board.js +62 -31
  9. package/dist/cli/dist/board.js.map +1 -1
  10. package/dist/cli/dist/command-identity.d.ts +6 -0
  11. package/dist/cli/dist/command-identity.js +13 -0
  12. package/dist/cli/dist/command-identity.js.map +1 -0
  13. package/dist/cli/dist/config.d.ts +3 -0
  14. package/dist/cli/dist/config.js +29 -0
  15. package/dist/cli/dist/config.js.map +1 -0
  16. package/dist/cli/dist/connections.d.ts +15 -0
  17. package/dist/cli/dist/connections.js +191 -0
  18. package/dist/cli/dist/connections.js.map +1 -0
  19. package/dist/cli/dist/contacts.d.ts +4 -3
  20. package/dist/cli/dist/contacts.js +39 -28
  21. package/dist/cli/dist/contacts.js.map +1 -1
  22. package/dist/cli/dist/doctor.d.ts +9 -0
  23. package/dist/cli/dist/doctor.js +46 -5
  24. package/dist/cli/dist/doctor.js.map +1 -1
  25. package/dist/cli/dist/error-messages.js +22 -0
  26. package/dist/cli/dist/error-messages.js.map +1 -1
  27. package/dist/cli/dist/index.js +44 -6
  28. package/dist/cli/dist/index.js.map +1 -1
  29. package/dist/cli/dist/invite-output.d.ts +14 -0
  30. package/dist/cli/dist/invite-output.js +66 -0
  31. package/dist/cli/dist/invite-output.js.map +1 -0
  32. package/dist/cli/dist/invite-share.d.ts +6 -3
  33. package/dist/cli/dist/invite-share.js +40 -15
  34. package/dist/cli/dist/invite-share.js.map +1 -1
  35. package/dist/cli/dist/invites-migrate.d.ts +3 -0
  36. package/dist/cli/dist/invites-migrate.js +33 -0
  37. package/dist/cli/dist/invites-migrate.js.map +1 -0
  38. package/dist/cli/dist/mcp.d.ts +7 -5
  39. package/dist/cli/dist/mcp.js +23 -18
  40. package/dist/cli/dist/mcp.js.map +1 -1
  41. package/dist/cli/dist/network.d.ts +11 -1
  42. package/dist/cli/dist/network.js +150 -87
  43. package/dist/cli/dist/network.js.map +1 -1
  44. package/dist/cli/dist/pending.d.ts +8 -0
  45. package/dist/cli/dist/pending.js +50 -0
  46. package/dist/cli/dist/pending.js.map +1 -0
  47. package/dist/cli/dist/public-settings.d.ts +5 -4
  48. package/dist/cli/dist/public-settings.js +13 -15
  49. package/dist/cli/dist/public-settings.js.map +1 -1
  50. package/dist/cli/dist/receipt.d.ts +1 -1
  51. package/dist/cli/dist/relay-auth.d.ts +3 -0
  52. package/dist/cli/dist/relay-auth.js +23 -0
  53. package/dist/cli/dist/relay-auth.js.map +1 -0
  54. package/dist/cli/dist/requests.d.ts +10 -0
  55. package/dist/cli/dist/requests.js +91 -0
  56. package/dist/cli/dist/requests.js.map +1 -0
  57. package/dist/cli/dist/sdk.d.ts +10 -0
  58. package/dist/cli/dist/sdk.js +7 -0
  59. package/dist/cli/dist/sdk.js.map +1 -0
  60. package/dist/cli/dist/setup-files.d.ts +24 -0
  61. package/dist/cli/dist/setup-files.js +190 -0
  62. package/dist/cli/dist/setup-files.js.map +1 -0
  63. package/dist/cli/dist/setup-hosts.d.ts +29 -0
  64. package/dist/cli/dist/setup-hosts.js +75 -0
  65. package/dist/cli/dist/setup-hosts.js.map +1 -0
  66. package/dist/cli/dist/setup.d.ts +61 -0
  67. package/dist/cli/dist/setup.js +243 -0
  68. package/dist/cli/dist/setup.js.map +1 -0
  69. package/dist/cli/dist/task-input.d.ts +1 -1
  70. package/dist/cli/dist/wake-hook.d.ts +1 -1
  71. package/dist/cli/dist/worker-json.d.ts +4 -0
  72. package/dist/cli/dist/worker-json.js +87 -0
  73. package/dist/cli/dist/worker-json.js.map +1 -0
  74. package/dist/examples/two-owner-demo/dist/run-demo.d.ts +13 -13
  75. package/dist/package.json +1 -1
  76. package/dist/packages/adapters/dist/command.d.ts +2 -2
  77. package/dist/packages/adapters/dist/credential-proxy.d.ts +2 -2
  78. package/dist/packages/adapters/dist/index.d.ts +1 -1
  79. package/dist/packages/adapters/dist/mcp.d.ts +2 -2
  80. package/dist/packages/adapters/dist/openai.d.ts +2 -2
  81. package/dist/packages/adapters/dist/sandbox.d.ts +2 -2
  82. package/dist/packages/core/dist/connection.d.ts +58 -0
  83. package/dist/packages/core/dist/connection.js +132 -0
  84. package/dist/packages/core/dist/connection.js.map +1 -0
  85. package/dist/packages/core/dist/delivery-status.d.ts +22 -0
  86. package/dist/packages/core/dist/delivery-status.js +53 -0
  87. package/dist/packages/core/dist/delivery-status.js.map +1 -0
  88. package/dist/packages/core/dist/discovery.d.ts +7 -6
  89. package/dist/packages/core/dist/discovery.js +19 -20
  90. package/dist/packages/core/dist/discovery.js.map +1 -1
  91. package/dist/packages/core/dist/edge.d.ts +1 -0
  92. package/dist/packages/core/dist/edge.js +1 -0
  93. package/dist/packages/core/dist/edge.js.map +1 -1
  94. package/dist/packages/core/dist/index.d.ts +3 -0
  95. package/dist/packages/core/dist/index.js +3 -0
  96. package/dist/packages/core/dist/index.js.map +1 -1
  97. package/dist/packages/core/dist/protocol.d.ts +24 -0
  98. package/dist/packages/core/dist/protocol.js +54 -0
  99. package/dist/packages/core/dist/protocol.js.map +1 -0
  100. package/dist/packages/core/dist/receipts.d.ts +1 -0
  101. package/dist/packages/core/dist/receipts.js +1 -1
  102. package/dist/packages/core/dist/receipts.js.map +1 -1
  103. package/dist/packages/core/dist/schema.d.ts +1 -0
  104. package/dist/packages/core/dist/schema.js +13 -2
  105. package/dist/packages/core/dist/schema.js.map +1 -1
  106. package/dist/packages/ledger/dist/index.d.ts +1 -1
  107. package/dist/packages/relay/dist/admission.d.ts +14 -0
  108. package/dist/packages/relay/dist/admission.js +70 -0
  109. package/dist/packages/relay/dist/admission.js.map +1 -0
  110. package/dist/packages/relay/dist/fetch.d.ts +8 -2
  111. package/dist/packages/relay/dist/fetch.js +41 -12
  112. package/dist/packages/relay/dist/fetch.js.map +1 -1
  113. package/dist/packages/relay/dist/index.d.ts +23 -12
  114. package/dist/packages/relay/dist/index.js +130 -78
  115. package/dist/packages/relay/dist/index.js.map +1 -1
  116. package/dist/packages/relay/dist/journal.d.ts +1 -1
  117. package/dist/packages/relay/dist/notifications.d.ts +1 -1
  118. package/dist/packages/relay/dist/retry.d.ts +23 -0
  119. package/dist/packages/relay/dist/retry.js +43 -1
  120. package/dist/packages/relay/dist/retry.js.map +1 -1
  121. package/dist/packages/relay/dist/ssrf.d.ts +3 -2
  122. package/dist/packages/relay/dist/ssrf.js.map +1 -1
  123. package/dist/packages/relay/dist/worker.js +1 -1
  124. package/dist/packages/relay/dist/worker.js.map +1 -1
  125. package/dist/packages/runtime/dist/a2a.d.ts +1 -1
  126. package/dist/packages/runtime/dist/a2a.js +1 -1
  127. package/dist/packages/runtime/dist/adapter.d.ts +2 -2
  128. package/dist/packages/runtime/dist/application-config.d.ts +20 -0
  129. package/dist/packages/runtime/dist/application-config.js +222 -0
  130. package/dist/packages/runtime/dist/application-config.js.map +1 -0
  131. package/dist/packages/runtime/dist/approval-providers.d.ts +24 -3
  132. package/dist/packages/runtime/dist/approval-providers.js +79 -3
  133. package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
  134. package/dist/packages/runtime/dist/connection-admission-review.d.ts +39 -0
  135. package/dist/packages/runtime/dist/connection-admission-review.js +86 -0
  136. package/dist/packages/runtime/dist/connection-admission-review.js.map +1 -0
  137. package/dist/packages/runtime/dist/connection-persistence.d.ts +35 -0
  138. package/dist/packages/runtime/dist/connection-persistence.js +181 -0
  139. package/dist/packages/runtime/dist/connection-persistence.js.map +1 -0
  140. package/dist/packages/runtime/dist/connection-records.d.ts +167 -0
  141. package/dist/packages/runtime/dist/connection-records.js +132 -0
  142. package/dist/packages/runtime/dist/connection-records.js.map +1 -0
  143. package/dist/packages/runtime/dist/connection-router.d.ts +45 -0
  144. package/dist/packages/runtime/dist/connection-router.js +130 -0
  145. package/dist/packages/runtime/dist/connection-router.js.map +1 -0
  146. package/dist/packages/runtime/dist/connection-service.d.ts +159 -0
  147. package/dist/packages/runtime/dist/connection-service.js +239 -0
  148. package/dist/packages/runtime/dist/connection-service.js.map +1 -0
  149. package/dist/packages/runtime/dist/connection-transport.d.ts +14 -0
  150. package/dist/packages/runtime/dist/connection-transport.js +89 -0
  151. package/dist/packages/runtime/dist/connection-transport.js.map +1 -0
  152. package/dist/packages/runtime/dist/delivery-records.d.ts +180 -0
  153. package/dist/packages/runtime/dist/delivery-records.js +205 -0
  154. package/dist/packages/runtime/dist/delivery-records.js.map +1 -0
  155. package/dist/packages/runtime/dist/delivery-status-router.d.ts +27 -0
  156. package/dist/packages/runtime/dist/delivery-status-router.js +150 -0
  157. package/dist/packages/runtime/dist/delivery-status-router.js.map +1 -0
  158. package/dist/packages/runtime/dist/delivery-status.d.ts +43 -0
  159. package/dist/packages/runtime/dist/delivery-status.js +193 -0
  160. package/dist/packages/runtime/dist/delivery-status.js.map +1 -0
  161. package/dist/packages/runtime/dist/delivery-store.d.ts +125 -0
  162. package/dist/packages/runtime/dist/delivery-store.js +1047 -0
  163. package/dist/packages/runtime/dist/delivery-store.js.map +1 -0
  164. package/dist/packages/runtime/dist/gateway.d.ts +4 -3
  165. package/dist/packages/runtime/dist/gateway.js.map +1 -1
  166. package/dist/packages/runtime/dist/held-request-review.d.ts +49 -0
  167. package/dist/packages/runtime/dist/held-request-review.js +122 -0
  168. package/dist/packages/runtime/dist/held-request-review.js.map +1 -0
  169. package/dist/packages/runtime/dist/held-request-store.d.ts +112 -0
  170. package/dist/packages/runtime/dist/held-request-store.js +290 -0
  171. package/dist/packages/runtime/dist/held-request-store.js.map +1 -0
  172. package/dist/packages/runtime/dist/idempotency-store.d.ts +53 -0
  173. package/dist/packages/runtime/dist/idempotency-store.js +331 -0
  174. package/dist/packages/runtime/dist/idempotency-store.js.map +1 -0
  175. package/dist/packages/runtime/dist/inbox.d.ts +1 -1
  176. package/dist/packages/runtime/dist/index.d.ts +27 -1
  177. package/dist/packages/runtime/dist/index.js +26 -0
  178. package/dist/packages/runtime/dist/index.js.map +1 -1
  179. package/dist/packages/runtime/dist/invite-store.d.ts +76 -0
  180. package/dist/packages/runtime/dist/invite-store.js +337 -0
  181. package/dist/packages/runtime/dist/invite-store.js.map +1 -0
  182. package/dist/packages/runtime/dist/key-store.d.ts +77 -0
  183. package/dist/packages/runtime/dist/key-store.js +226 -0
  184. package/dist/packages/runtime/dist/key-store.js.map +1 -0
  185. package/dist/packages/runtime/dist/local-identity.d.ts +33 -0
  186. package/dist/packages/runtime/dist/local-identity.js +278 -0
  187. package/dist/packages/runtime/dist/local-identity.js.map +1 -0
  188. package/dist/packages/runtime/dist/mcp-rpc.d.ts +19 -0
  189. package/dist/packages/runtime/dist/mcp-rpc.js +175 -0
  190. package/dist/packages/runtime/dist/mcp-rpc.js.map +1 -0
  191. package/dist/packages/runtime/dist/mcp-server.d.ts +46 -19
  192. package/dist/packages/runtime/dist/mcp-server.js +427 -184
  193. package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
  194. package/dist/packages/runtime/dist/mcp-tool-catalog.d.ts +1 -1
  195. package/dist/packages/runtime/dist/mcp-tool-catalog.js +172 -13
  196. package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
  197. package/dist/packages/runtime/dist/mcp.d.ts +2 -2
  198. package/dist/packages/runtime/dist/message-status.d.ts +32 -0
  199. package/dist/packages/runtime/dist/message-status.js +29 -0
  200. package/dist/packages/runtime/dist/message-status.js.map +1 -0
  201. package/dist/packages/runtime/dist/outbox.d.ts +91 -0
  202. package/dist/packages/runtime/dist/outbox.js +462 -0
  203. package/dist/packages/runtime/dist/outbox.js.map +1 -0
  204. package/dist/packages/runtime/dist/policy.d.ts +1 -1
  205. package/dist/packages/runtime/dist/protocol-peer-store.d.ts +40 -0
  206. package/dist/packages/runtime/dist/protocol-peer-store.js +176 -0
  207. package/dist/packages/runtime/dist/protocol-peer-store.js.map +1 -0
  208. package/dist/packages/runtime/dist/protocol-release.d.ts +26 -0
  209. package/dist/packages/runtime/dist/protocol-release.js +76 -0
  210. package/dist/packages/runtime/dist/protocol-release.js.map +1 -0
  211. package/dist/packages/runtime/dist/quota.d.ts +1 -1
  212. package/dist/packages/runtime/dist/relay-selection.d.ts +20 -0
  213. package/dist/packages/runtime/dist/relay-selection.js +34 -0
  214. package/dist/packages/runtime/dist/relay-selection.js.map +1 -0
  215. package/dist/packages/runtime/dist/requester-pending-store.d.ts +59 -0
  216. package/dist/packages/runtime/dist/requester-pending-store.js +266 -0
  217. package/dist/packages/runtime/dist/requester-pending-store.js.map +1 -0
  218. package/dist/packages/runtime/dist/secret-store.d.ts +19 -0
  219. package/dist/packages/runtime/dist/secret-store.js +51 -0
  220. package/dist/packages/runtime/dist/secret-store.js.map +1 -0
  221. package/dist/packages/runtime/dist/session-audit.d.ts +29 -7
  222. package/dist/packages/runtime/dist/session-audit.js +149 -29
  223. package/dist/packages/runtime/dist/session-audit.js.map +1 -1
  224. package/dist/packages/runtime/dist/session.d.ts +101 -9
  225. package/dist/packages/runtime/dist/session.js +696 -96
  226. package/dist/packages/runtime/dist/session.js.map +1 -1
  227. package/dist/packages/runtime/dist/task-journal.d.ts +18 -3
  228. package/dist/packages/runtime/dist/task-journal.js +271 -18
  229. package/dist/packages/runtime/dist/task-journal.js.map +1 -1
  230. package/dist/packages/runtime/dist/verifier.d.ts +3 -2
  231. package/dist/packages/runtime/dist/verifier.js +1 -0
  232. package/dist/packages/runtime/dist/verifier.js.map +1 -1
  233. package/dist/packages/runtime/dist/worker-trust-store.d.ts +111 -0
  234. package/dist/packages/runtime/dist/worker-trust-store.js +592 -0
  235. package/dist/packages/runtime/dist/worker-trust-store.js.map +1 -0
  236. package/dist/packages/sandbox/dist/container.d.ts +1 -1
  237. package/dist/packages/sandbox/dist/index.d.ts +1 -1
  238. package/dist/spec/README.ja.md +21 -1
  239. package/dist/spec/README.md +20 -1
  240. package/dist/spec/agent-card.schema.json +11 -1
  241. package/dist/spec/delivery-status.schema.json +106 -0
  242. package/dist/spec/examples/protocol-versions/sample-agent-card.json +35 -0
  243. package/dist/spec/examples/sample-delivery-status.json +21 -0
  244. package/dist/spec/examples/sample-task-manifest.0.1.0.json +173 -0
  245. package/dist/spec/examples/sample-task-manifest.0.2.0.json +173 -0
  246. package/dist/spec/task-manifest.0.1.0.schema.json +422 -0
  247. package/dist/spec/task-manifest.0.2.0.schema.json +422 -0
  248. package/dist/spec/task-manifest.schema.json +9 -418
  249. package/docs/sdk.ja.md +133 -0
  250. package/docs/sdk.md +138 -0
  251. package/package.json +15 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.js","sourceRoot":"","sources":["../src/outbox.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAoD,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGvI,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAqB9F,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACrD,MAAM,UAAU,gBAAgB,CAAC,YAAoB,IAAY,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7H,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,IAAI,GAAI,KAA4B,EAAE,IAAI,CAAC;IACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAChF,CAAC;AAED,sFAAsF;AACtF,MAAM,oCAAoC;IAanB;IAAyB;IAZrC,KAAK,CAAgB;IACrB,YAAY,CAAuB;IAC5C,eAAe,CAA+B;IACtC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,MAAM,GAAG,KAAK,CAAC;IACf,KAAK,CAAiC;IAC7B,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,cAAc,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC1C,WAAW,GAAG,IAAI,GAAG,EAAiD,CAAC;IACxF,aAAa,CAAC,QAAuD,IAAU,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/F,KAAK,CAA+C;IACpD,MAAM,CAAgD;IACvE,YAAqB,KAAc,EAAW,OAA+B;QAAxD,UAAK,GAAL,KAAK,CAAS;QAAW,YAAO,GAAP,OAAO,CAAwB;QAC3E,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAChH,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC;QAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;IAC9F,CAAC;IACD,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAC5E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrF,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;QACjC,8DAA8D;QAC9D,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YACzO,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7F,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAC7H,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IACD,IAAI;QACF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IACO,MAAM,CAAC,KAAc;QAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;;YACtD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACO,QAAQ;QACd,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACvC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACjI,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC3F,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC5C,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC1D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;oBACxC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;wBAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACrE,CAAC;gBACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;oBAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;YAC/H,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,MAAoB;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;IACO,UAAU,CAAC,QAAmC,EAAE,OAAwB;QAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,UAAU,EAAE,CAAC;QACrD,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;QACnH,eAAe,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,aAAa;YAClF,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChH,MAAM,OAAO,GAAqB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU;YAC/F,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;YACtF,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC1F,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG;YAC3G,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAgC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS;YAC3F,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY;YACjG,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe;YAC1F,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,qBAAqB;YAC5H,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC;YACvE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,OAAO;YAAE,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3J,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,CAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;YAClG,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAa,EAAE,CAAC;QAC1F,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC;IACO,cAAc,CAAC,OAAyB;QAC9C,IAAI,CAAC,OAAO,EAAE,WAAW;YAAE,OAAO;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1F,eAAe,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU,IAAI,MAAM;YACnE,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC;YAClE,MAAM,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY;YAC5F,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;YACpC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;QAC7H,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtC,CAAC;IACO,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAkE,EAAE,QAAkC,EACnJ,SAA8E;QAC9E,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAE,EAAE;YACvC,IAAI,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAE,CAAC,CAAC;;gBAClG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK;gBAAE,OAAO;YACzH,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,IAAI,GAAG;YAAE,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC;IACb,CAAC;IACO,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAkE,EACrH,OAAuC,EACvC,SAA8E;QAC9E,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,KAAK;gBAAE,MAAM,aAAa,CAAC,0BAA0B,CAAC,CAAC;YAC3D,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7D,IAAI,KAAK;gBAAE,MAAM,aAAa,CAAC,0BAA0B,CAAC,CAAC;YAC3D,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,SAAS;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3G,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACO,WAAW,CAAC,KAAqE;QACvF,MAAM,MAAM,GAAoB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACjH,IAAI,KAAK,CAAC,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,2FAA2F;IAC3F,OAAO,CAAC,QAAmC,EAAE,OAAwB;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAE,CAAC;QAClE,SAAS,CAAC;YACR,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBACrE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC;gBACH,2EAA2E;gBAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBACxD,IAAI,GAAG;oBAAE,OAAO,GAAG,CAAC;YACtB,CAAC;oBAAS,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,wGAAwG;IACxG,KAAK,CAAC,eAAe,CAAC,MAAiC,EAAE,OAAwB,EAAE,MAAoB;QACrG,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC;YACH,SAAS,CAAC;gBACR,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrJ,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;oBAC1E,IAAI,GAAG;wBAAE,OAAO,GAAG,CAAC;gBACtB,CAAC;wBAAS,CAAC;oBAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;YACjD,CAAC;QACH,CAAC;gBAAS,CAAC;YAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;IACnD,CAAC;IACD,sFAAsF;IACtF,aAAa,CAAC,MAAiC,EAAE,OAAwB;QACvE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAClI,CAAC;IACO,KAAK,CAAC,OAAO,CAAC,MAAmB;QACvC,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAClD,OAAO,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;QACvC,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;IACD,mFAAmF;IACnF,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC;YAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAAC,CAAC;QACtE,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1D,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC;gBAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IACD,uFAAuF;IACvF,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7G,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAC3C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,MAAoB;QACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,SAAS,CAAC;YACR,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;gBAAE,MAAM,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAC7G,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU;gBAAE,OAAO;YACnC,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAAE,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,yBAAyB,CAAC,CAAC;YAC/H,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9H,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,EAC9F,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IACO,OAAO,CAAC,EAAU,EAAE,MAAmB;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAAC,OAAO,GAAG,CAAC;IACzC,CAAC;IACO,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,MAAmB;QACvD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,OAAO;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7B,6FAA6F;YAC7F,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,+BAA+B,EAAE,CAAC,CAAC;gBAAC,OAAO;YAChH,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB;oBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC,CAAC;;oBAC7H,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,yBAAyB,EAAE,UAAU,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,aAAa,GAAG,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;gBAAE,OAAO;YACpE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;gBAAE,OAAO;YACrL,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAClG,4EAA4E;YAC5E,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,KAAc,EAAE,QAAQ,GAAG,KAAK,EAAE,QAA4B,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACvH,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,aAAa,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC9B,aAAa,CAAC,cAAc,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjE,aAAa,CAAC,cAAc,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC;oBAAE,MAAM,aAAa,CAAC,+BAA+B,CAAC,CAAC;gBAC/I,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChF,aAAa,CAAC,cAAc,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,gBAAgB;oBAAE,MAAM,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBACjG,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC;oBAAE,MAAM,aAAa,CAAC,+BAA+B,CAAC,CAAC;gBAC/I,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpD,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9D,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;YACpC,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,KAAK,GAAG,CAAgC,CAAC;YAC/C,QAAQ,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,6BAA6B,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB;gBAC7G,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,KAAK,qBAAqB,CAAC;QAChE,CAAC;QACD,mGAAmG;QACnG,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ;gBAAE,OAAO;YAC1E,OAAO,CAAC,CAAC,KAAK,CAAC;YACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;gBAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC;gBAAC,OAAO,CAAC,CAAC,SAAS,CAAC;gBAC7D,IAAI,QAAQ;oBAAE,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;gBACxE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;oBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACzJ,CAAC;iBAAM,IAAI,GAAG,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtE,IAAI,KAAK,YAAY,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,gBAAgB;oBAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC3F,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtF,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB;oBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;;oBACxG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC3F,OAAO;YACT,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,MAAM,GAAG,KAA4B,CAAC;gBAC5C,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;oBAClG,MAAM,CAAC,IAAI,KAAK,mBAAmB,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;oBAChF,MAAM,CAAC,YAAa,GAAG,CAAC,IAAI,MAAM,CAAC,YAAa,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3F,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YACzG,CAAC;YACD,gGAAgG;YAChG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,CAAC,cAAc,EAAE,CAAC;IAC9C,CAAC;IACO,WAAW,CAAC,SAAiB,EAAE,IAAY,EAAE,QAAuC;QAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAE,CAAC;gBACzD,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,QAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC;gBACpF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACpK,CAAC;IACD,YAAY,CAAC,SAAiB,EAAE,IAAI,GAAG,WAAW;QAChD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,gBAAgB,CAAC,SAAiB,EAAE,WAAoF;QACtH,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACjD,eAAe,CAAC,WAAW,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,UAAmB,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC;gBACnG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC;gBACrF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;oBACrG,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC,CAAC;QACF,IAAI,WAAW,CAAC,eAAe;YAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;;YACnE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAGD,MAAM,CAAC,MAAM,sBAAsB,GAG/B,oCAAoC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ApprovalReceipt, Gate, KeyPair } from '@acp/core';
1
+ import type { ApprovalReceipt, Gate, KeyPair } from '../../core/dist/index.js';
2
2
  export declare const gates: Gate[];
3
3
  export interface OwnerPolicy {
4
4
  requiredGates: Gate[];
@@ -0,0 +1,40 @@
1
+ import type { KeyPair, ManifestProtocolVersion, ProtocolCompatibilityPhase, ProtocolCompatibilityPolicy, SignedAgentCard } from '../../core/dist/index.js';
2
+ import type { LocalIdentityOptions } from './local-identity.js';
3
+ export interface ProtocolPeerObservation {
4
+ ownerDid: string;
5
+ agentDid: string;
6
+ highestVersion: ManifestProtocolVersion;
7
+ cardDigest: string;
8
+ observedAt: string;
9
+ }
10
+ export interface ProtocolPeerState {
11
+ version: 1;
12
+ localOwnerDid: string;
13
+ policyEpoch?: string;
14
+ maximumObservedPhase?: ProtocolCompatibilityPhase;
15
+ observations: ProtocolPeerObservation[];
16
+ }
17
+ export interface ProtocolPeerStoreOptions extends LocalIdentityOptions {
18
+ now?: () => number;
19
+ }
20
+ export declare function protocolPeerPath(ownerDid: string, options?: LocalIdentityOptions): string;
21
+ /** Local compatibility observations confer no permission to execute tasks. */
22
+ export declare class ProtocolPeerStore {
23
+ private readonly owner;
24
+ private readonly options;
25
+ readonly path: string;
26
+ private readonly root;
27
+ private readonly directory;
28
+ private readonly io;
29
+ private readonly now;
30
+ constructor(owner: KeyPair, options?: ProtocolPeerStoreOptions);
31
+ private read;
32
+ private mutate;
33
+ /** Inspection does not create files, prune observations or advance policy. */
34
+ snapshot(): ProtocolPeerState;
35
+ floor(ownerDid: string, agentDid: string): ManifestProtocolVersion | undefined;
36
+ /** Resolve the current card from the caller's directory snapshot before recording it. */
37
+ observe(ownerDid: string, agentDid: string, currentCards: readonly SignedAgentCard[]): ProtocolPeerObservation | undefined;
38
+ /** Persist before using the returned policy. Epoch replacement requires separate migration. */
39
+ observePolicy(policy: ProtocolCompatibilityPolicy): ProtocolCompatibilityPolicy;
40
+ }
@@ -0,0 +1,176 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import * as fs from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { randomUUID } from 'node:crypto';
5
+ import { compareProtocolVersions, digest, digestBytes, findDiscoveredAgentCard, isManifestProtocolVersion, protocolCompatibilityPhase, resolveDid, signPayload, understoodProtocolVersions, verifySigned, DEFAULT_CLOCK_SKEW_MS, } from '../../core/dist/index.js';
6
+ import { checkPath, inspectDirectory, privateDirectory, readPrivateFile, resolveDataRoot, writePrivateFile, } from './local-identity.js';
7
+ const MAX_BYTES = 1024 * 1024;
8
+ const MAX_OBSERVATIONS = 1000;
9
+ const code = (error) => error.code;
10
+ function validInstant(value) {
11
+ return typeof value === 'string' && Number.isFinite(Date.parse(value)) &&
12
+ new Date(Date.parse(value)).toISOString() === value;
13
+ }
14
+ function exactKeys(value, required, optional = []) {
15
+ return required.every(key => Object.hasOwn(value, key)) &&
16
+ Object.keys(value).every(key => required.includes(key) || optional.includes(key));
17
+ }
18
+ export function protocolPeerPath(ownerDid, options = {}) {
19
+ return join(resolveDataRoot(options), 'protocol-peers', digestBytes(ownerDid).slice(7) + '.json');
20
+ }
21
+ /** Local compatibility observations confer no permission to execute tasks. */
22
+ export class ProtocolPeerStore {
23
+ owner;
24
+ options;
25
+ path;
26
+ root;
27
+ directory;
28
+ io;
29
+ now;
30
+ constructor(owner, options = {}) {
31
+ this.owner = owner;
32
+ this.options = options;
33
+ this.root = resolveDataRoot(options);
34
+ this.directory = join(this.root, 'protocol-peers');
35
+ this.path = protocolPeerPath(owner.did, options);
36
+ this.io = options.fs ?? fs;
37
+ this.now = options.now ?? Date.now;
38
+ }
39
+ read() {
40
+ try {
41
+ for (const directory of [this.root, this.directory]) {
42
+ try {
43
+ inspectDirectory(directory, this.io, this.options.platform);
44
+ }
45
+ catch (error) {
46
+ if (code(error) !== 'ENOENT')
47
+ throw error;
48
+ }
49
+ }
50
+ const bytes = readPrivateFile(this.path, this.io, MAX_BYTES, this.options.platform);
51
+ if (bytes === undefined)
52
+ return { version: 1, localOwnerDid: this.owner.did, observations: [] };
53
+ const signed = JSON.parse(bytes);
54
+ const state = signed.payload;
55
+ if (!verifySigned(signed, this.owner.did) || !state ||
56
+ !exactKeys(state, ['version', 'localOwnerDid', 'observations'], ['policyEpoch', 'maximumObservedPhase']) ||
57
+ state.version !== 1 || state.localOwnerDid !== this.owner.did ||
58
+ !Array.isArray(state.observations) || state.observations.length > MAX_OBSERVATIONS ||
59
+ ((state.policyEpoch === undefined) !== (state.maximumObservedPhase === undefined)) ||
60
+ (state.policyEpoch !== undefined && (!validInstant(state.policyEpoch) ||
61
+ ![0, 1, 2].includes(state.maximumObservedPhase))))
62
+ throw new Error();
63
+ const peers = new Set();
64
+ for (const entry of state.observations) {
65
+ if (!entry || !exactKeys(entry, ['ownerDid', 'agentDid', 'highestVersion', 'cardDigest', 'observedAt']) ||
66
+ !isManifestProtocolVersion(entry.highestVersion) || !validInstant(entry.observedAt) ||
67
+ typeof entry.cardDigest !== 'string' || !/^sha256:[a-f0-9]{64}$/.test(entry.cardDigest))
68
+ throw new Error();
69
+ resolveDid(entry.ownerDid);
70
+ resolveDid(entry.agentDid);
71
+ const key = JSON.stringify([entry.ownerDid, entry.agentDid]);
72
+ if (peers.has(key))
73
+ throw new Error();
74
+ peers.add(key);
75
+ }
76
+ return state;
77
+ }
78
+ catch {
79
+ throw new Error('PROTOCOL_STORE_INVALID');
80
+ }
81
+ }
82
+ mutate(change) {
83
+ let locked = false, temporary;
84
+ try {
85
+ for (const directory of [this.root, this.directory])
86
+ privateDirectory(directory, this.io, this.options.platform);
87
+ try {
88
+ writePrivateFile(this.path + '.lock', Buffer.alloc(0), this.io, this.options.platform);
89
+ locked = true;
90
+ }
91
+ catch (error) {
92
+ if (code(error) === 'EEXIST')
93
+ throw new Error('PROTOCOL_STORE_BUSY');
94
+ throw error;
95
+ }
96
+ const state = this.read(), now = this.now();
97
+ if (!Number.isFinite(now))
98
+ throw new Error('PROTOCOL_STORE_INVALID');
99
+ const result = change(state, now);
100
+ const bytes = Buffer.from(JSON.stringify(signPayload(state, this.owner, new Date(now).toISOString())) + '\n');
101
+ if (state.observations.length > MAX_OBSERVATIONS || bytes.length > MAX_BYTES)
102
+ throw new Error('PROTOCOL_STORE_UNWRITABLE');
103
+ temporary = this.path + '.' + randomUUID() + '.tmp';
104
+ writePrivateFile(temporary, bytes, this.io, this.options.platform);
105
+ checkPath(this.path, this.io, this.options.platform);
106
+ this.io.renameSync(temporary, this.path);
107
+ return structuredClone(result);
108
+ }
109
+ catch (error) {
110
+ if (error instanceof Error && /^PROTOCOL_/.test(error.message))
111
+ throw error;
112
+ throw new Error('PROTOCOL_STORE_UNWRITABLE');
113
+ }
114
+ finally {
115
+ let cleanupFailed = false;
116
+ for (const path of [temporary, locked ? this.path + '.lock' : undefined]) {
117
+ if (!path)
118
+ continue;
119
+ try {
120
+ this.io.unlinkSync(path);
121
+ }
122
+ catch (error) {
123
+ if (code(error) !== 'ENOENT')
124
+ cleanupFailed = true;
125
+ }
126
+ }
127
+ if (cleanupFailed)
128
+ throw new Error('PROTOCOL_STORE_UNWRITABLE');
129
+ }
130
+ }
131
+ /** Inspection does not create files, prune observations or advance policy. */
132
+ snapshot() { return this.read(); }
133
+ floor(ownerDid, agentDid) {
134
+ return this.read().observations.find(entry => entry.ownerDid === ownerDid && entry.agentDid === agentDid)?.highestVersion;
135
+ }
136
+ /** Resolve the current card from the caller's directory snapshot before recording it. */
137
+ observe(ownerDid, agentDid, currentCards) {
138
+ return this.mutate((state, now) => {
139
+ let card;
140
+ try {
141
+ card = findDiscoveredAgentCard(currentCards, agentDid, now);
142
+ }
143
+ catch {
144
+ throw new Error('PROTOCOL_STORE_INVALID');
145
+ }
146
+ if (!card || card.payload.ownerDid !== ownerDid || card.payload.agentDid !== agentDid ||
147
+ Date.parse(card.signature.signedAt) > now + DEFAULT_CLOCK_SKEW_MS)
148
+ throw new Error('PROTOCOL_STORE_INVALID');
149
+ const highestVersion = understoodProtocolVersions(card.payload.protocolVersions)[0];
150
+ const previous = state.observations.find(entry => entry.ownerDid === ownerDid && entry.agentDid === agentDid);
151
+ if (!highestVersion || (previous && compareProtocolVersions(highestVersion, previous.highestVersion) <= 0))
152
+ return previous;
153
+ const entry = {
154
+ ownerDid, agentDid, highestVersion, cardDigest: digest(card), observedAt: new Date(now).toISOString(),
155
+ };
156
+ if (previous)
157
+ state.observations.splice(state.observations.indexOf(previous), 1, entry);
158
+ else
159
+ state.observations.push(entry);
160
+ return entry;
161
+ });
162
+ }
163
+ /** Persist before using the returned policy. Epoch replacement requires separate migration. */
164
+ observePolicy(policy) {
165
+ return this.mutate((state, now) => {
166
+ const phase = protocolCompatibilityPhase(policy, now);
167
+ const epoch = new Date(Date.parse(policy.releasedAt)).toISOString();
168
+ if (state.policyEpoch !== undefined && state.policyEpoch !== epoch)
169
+ throw new Error('PROTOCOL_STORE_INVALID');
170
+ state.policyEpoch = epoch;
171
+ state.maximumObservedPhase = Math.max(phase, state.maximumObservedPhase ?? 0);
172
+ return { ...policy, maximumObservedPhase: state.maximumObservedPhase };
173
+ });
174
+ }
175
+ }
176
+ //# sourceMappingURL=protocol-peer-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-peer-store.js","sourceRoot":"","sources":["../src/protocol-peer-store.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,uBAAuB,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EACrE,yBAAyB,EAAE,0BAA0B,EAAE,UAAU,EACjE,WAAW,EAAE,0BAA0B,EAAE,YAAY,EAAE,qBAAqB,GAC7E,MAAM,WAAW,CAAC;AAKnB,OAAO,EACL,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,GAClG,MAAM,qBAAqB,CAAC;AAoB7B,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAE,KAA+B,CAAC,IAAI,CAAC;AACvE,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;AACxD,CAAC;AACD,SAAS,SAAS,CAAC,KAAa,EAAE,QAAkB,EAAE,WAAqB,EAAE;IAC3E,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtF,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,UAAgC,EAAE;IACnF,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AACpG,CAAC;AACD,8EAA8E;AAC9E,MAAM,OAAO,iBAAiB;IAMC;IAAiC;IALrD,IAAI,CAAS;IACL,IAAI,CAAS;IACb,SAAS,CAAS;IAClB,EAAE,CAAY;IACd,GAAG,CAAe;IACnC,YAA6B,KAAc,EAAmB,UAAoC,EAAE;QAAvE,UAAK,GAAL,KAAK,CAAS;QAAmB,YAAO,GAAP,OAAO,CAA+B;QAClG,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACrC,CAAC;IACO,IAAI;QACV,IAAI,CAAC;YACH,KAAK,MAAM,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC;oBAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAC,CAAC;gBACpE,OAAO,KAAK,EAAE,CAAC;oBAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ;wBAAE,MAAM,KAAK,CAAC;gBAAC,CAAC;YAC9D,CAAC;YACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpF,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YAChG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAA8B,CAAC;YAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;gBAC/C,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;gBACxG,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG;gBAC7D,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,gBAAgB;gBAClF,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC;gBAClF,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC;oBACnE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAqB,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;oBACnG,CAAC,yBAAyB,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;oBACnF,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;oBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC/G,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7D,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;gBACtC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAAC,CAAC;IACxD,CAAC;IACO,MAAM,CAAI,MAAoD;QACpE,IAAI,MAAM,GAAG,KAAK,EAAE,SAA6B,CAAC;QAClD,IAAI,CAAC;YACH,KAAK,MAAM,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjH,IAAI,CAAC;gBAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC;YAC9G,OAAO,KAAK,EAAE,CAAC;gBAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAAC,MAAM,KAAK,CAAC;YAAC,CAAC;YACpG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9G,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,gBAAgB,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;gBAC1E,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;YACpD,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;gBAAS,CAAC;YACT,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzE,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,IAAI,CAAC;oBAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;gBACjC,OAAO,KAAK,EAAE,CAAC;oBAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ;wBAAE,aAAa,GAAG,IAAI,CAAC;gBAAC,CAAC;YACvE,CAAC;YACD,IAAI,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,8EAA8E;IAC9E,QAAQ,KAAwB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,KAAK,CAAC,QAAgB,EAAE,QAAgB;QACtC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC5H,CAAC;IACD,yFAAyF;IACzF,OAAO,CAAC,QAAgB,EAAE,QAAgB,EAAE,YAAwC;QAClF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChC,IAAI,IAAiC,CAAC;YACtC,IAAI,CAAC;gBAAC,IAAI,GAAG,uBAAuB,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC;YACpE,MAAM,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAAC,CAAC;YACpD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBACjF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,qBAAqB;gBACnE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,MAAM,cAAc,GAAG,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAC9G,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,uBAAuB,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACxG,OAAO,QAAQ,CAAC;YAClB,MAAM,KAAK,GAA4B;gBACrC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;aACtG,CAAC;YACF,IAAI,QAAQ;gBAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;gBACnF,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IACD,+FAA+F;IAC/F,aAAa,CAAC,MAAmC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACpE,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK;gBAChE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;YAC1B,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAA+B,CAAC;YAC5G,OAAO,EAAE,GAAG,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import type { ManifestProtocolVersion, ProtocolCompatibilityPolicy, SignedAgentCard } from '../../core/dist/index.js';
2
+ import type { ProtocolPeerStore } from './protocol-peer-store.js';
3
+ /** UTC release instant for the public 0.2.0 protocol, intended as the 0.3.0 npm publish time. */
4
+ export declare const PROTOCOL_020_RELEASED_AT: string | null;
5
+ export interface ProtocolReleaseOptions {
6
+ /** Host/test injection; CLI installations do not choose their own release epoch. */
7
+ protocolPolicy?: ProtocolCompatibilityPolicy;
8
+ protocolPeers?: Pick<ProtocolPeerStore, 'floor' | 'observe' | 'observePolicy'>;
9
+ now?: () => number;
10
+ }
11
+ export declare function assertProtocolReleaseConfigured(releasedAt?: string | null): void;
12
+ /** Unset means a pre-release build: both versions, newest common first, no retirement clock. */
13
+ export declare class LiveProtocol {
14
+ private readonly options;
15
+ private readonly floors;
16
+ private maximumObservedPhase;
17
+ readonly now: () => number;
18
+ constructor(options?: ProtocolReleaseOptions);
19
+ private policy;
20
+ receiveVersions(): ManifestProtocolVersion[];
21
+ private key;
22
+ floor(owner: string, agent: string): ManifestProtocolVersion | undefined;
23
+ observe(card: SignedAgentCard, cards?: readonly SignedAgentCard[]): void;
24
+ outbound(card?: SignedAgentCard, supplied?: string, owner?: string, agent?: string): ManifestProtocolVersion;
25
+ inbound(version: string, owner: string, agent: string): void;
26
+ }
@@ -0,0 +1,76 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { assertInboundProtocolVersion, compareProtocolVersions, protocolCompatibilityPhase, selectProtocolVersion, supportedReceiveVersions, understoodProtocolVersions, findDiscoveredAgentCard, DEFAULT_CLOCK_SKEW_MS } from '../../core/dist/index.js';
3
+ /** UTC release instant for the public 0.2.0 protocol, intended as the 0.3.0 npm publish time. */
4
+ export const PROTOCOL_020_RELEASED_AT = '2026-11-03T12:22:18Z';
5
+ export function assertProtocolReleaseConfigured(releasedAt = PROTOCOL_020_RELEASED_AT) {
6
+ if (releasedAt === null)
7
+ throw new Error('PROTOCOL_RELEASE_UNSET');
8
+ protocolCompatibilityPhase({ releasedAt, sendLegacyUntilDays: 90, receiveLegacyUntilDays: 180 }, Date.parse(releasedAt));
9
+ }
10
+ /** Unset means a pre-release build: both versions, newest common first, no retirement clock. */
11
+ export class LiveProtocol {
12
+ options;
13
+ floors = new Map();
14
+ maximumObservedPhase = 0;
15
+ now;
16
+ constructor(options = {}) {
17
+ this.options = options;
18
+ this.now = options.now ?? Date.now;
19
+ }
20
+ policy() {
21
+ const releasedAt = this.options.protocolPolicy?.releasedAt ?? PROTOCOL_020_RELEASED_AT;
22
+ if (releasedAt === null)
23
+ return undefined;
24
+ const policy = this.options.protocolPolicy ?? { releasedAt, sendLegacyUntilDays: 90, receiveLegacyUntilDays: 180 };
25
+ if (this.options.protocolPeers)
26
+ return this.options.protocolPeers.observePolicy(policy);
27
+ this.maximumObservedPhase = Math.max(this.maximumObservedPhase, protocolCompatibilityPhase(policy, this.now()));
28
+ return { ...policy, maximumObservedPhase: this.maximumObservedPhase };
29
+ }
30
+ receiveVersions() {
31
+ const policy = this.policy();
32
+ return policy ? supportedReceiveVersions(policy, this.now()) : ['0.2.0', '0.1.0'];
33
+ }
34
+ key(owner, agent) { return JSON.stringify([owner, agent]); }
35
+ floor(owner, agent) {
36
+ return this.options.protocolPeers?.floor(owner, agent) ?? this.floors.get(this.key(owner, agent));
37
+ }
38
+ observe(card, cards = [card]) {
39
+ const current = findDiscoveredAgentCard(cards, card.payload.agentDid, this.now());
40
+ if (!current || current.payload.ownerDid !== card.payload.ownerDid || Date.parse(current.signature.signedAt) > this.now() + DEFAULT_CLOCK_SKEW_MS)
41
+ throw new Error('PROTOCOL_STORE_INVALID');
42
+ card = current;
43
+ if (this.options.protocolPeers)
44
+ this.options.protocolPeers.observe(card.payload.ownerDid, card.payload.agentDid, cards);
45
+ const version = understoodProtocolVersions(card.payload.protocolVersions)[0];
46
+ const key = this.key(card.payload.ownerDid, card.payload.agentDid), previous = this.floors.get(key);
47
+ if (version && (!previous || compareProtocolVersions(version, previous) > 0))
48
+ this.floors.set(key, version);
49
+ }
50
+ outbound(card, supplied, owner = '', agent = '') {
51
+ const policy = this.policy(), floor = this.floor(card?.payload.ownerDid ?? owner, card?.payload.agentDid ?? agent);
52
+ const version = policy ? selectProtocolVersion(card?.payload.protocolVersions, floor, policy, this.now())
53
+ : understoodProtocolVersions(card?.payload.protocolVersions)[0];
54
+ if (!version)
55
+ throw new Error('PROTOCOL_VERSION_UNSUPPORTED: Peer upgrade required.');
56
+ if (floor && compareProtocolVersions(version, floor) < 0)
57
+ throw new Error('PROTOCOL_DOWNGRADE_REFUSED');
58
+ if (supplied !== undefined && supplied !== version)
59
+ throw new Error('PROTOCOL_VERSION_UNSUPPORTED: Supplied manifest does not match negotiated version.');
60
+ if (card)
61
+ this.observe(card);
62
+ return version;
63
+ }
64
+ inbound(version, owner, agent) {
65
+ const policy = this.policy(), floor = this.floor(owner, agent);
66
+ if (policy)
67
+ assertInboundProtocolVersion(version, floor, policy, this.now());
68
+ else {
69
+ if (!this.receiveVersions().includes(version))
70
+ throw new Error('PROTOCOL_VERSION_UNSUPPORTED');
71
+ if (floor && compareProtocolVersions(version, floor) < 0)
72
+ throw new Error('PROTOCOL_DOWNGRADE_REFUSED');
73
+ }
74
+ }
75
+ }
76
+ //# sourceMappingURL=protocol-release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-release.js","sourceRoot":"","sources":["../src/protocol-release.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { BudgetSpec, KeyPair, Usage, UsageReceipt, ApprovalReceipt } from '@acp/core';
1
+ import type { BudgetSpec, KeyPair, Usage, UsageReceipt, ApprovalReceipt } from '../../core/dist/index.js';
2
2
  export declare function usageWithinBudget(usage: Usage, budget: BudgetSpec): boolean;
3
3
  export declare function verifyUsage(receipt: UsageReceipt, signerDid: string, taskId: string, budget: BudgetSpec): boolean;
4
4
  export declare class QuotaMeter {
@@ -0,0 +1,20 @@
1
+ import type { RelayTransport } from '../../relay/dist/index.js';
2
+ export declare const DEFAULT_PUBLIC_RELAY = "https://relay.sealbridge.dev";
3
+ export declare function normalizeRelayUrl(value: string): string;
4
+ export interface RelaySelectionOptions {
5
+ configured?: RelayTransport | string;
6
+ explicit?: string;
7
+ /** Ordered local defaults; only the first is selected, and these are not pins. */
8
+ fallbackCandidates?: readonly string[];
9
+ /** Must come from an already verified invitation. */
10
+ inviteRelay?: string;
11
+ allowPrivateRelay?: boolean;
12
+ allowAnyRelay?: boolean;
13
+ allowedRelayUrls?: string[];
14
+ conflictError?: string;
15
+ }
16
+ /** Keep an injected transport or explicit pin distinct from the implicit public fallback. */
17
+ export declare function selectApplicationRelay(options?: RelaySelectionOptions): {
18
+ relay: RelayTransport | string;
19
+ source: 'transport' | 'configured' | 'explicit' | 'invite' | 'local-default' | 'default';
20
+ };
@@ -0,0 +1,34 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { validateRelayEndpointUrl } from '../../core/dist/index.js';
3
+ export const DEFAULT_PUBLIC_RELAY = 'https://relay.sealbridge.dev';
4
+ export function normalizeRelayUrl(value) {
5
+ const url = new URL(value);
6
+ return url.origin + url.pathname.replace(/\/+$/, '');
7
+ }
8
+ /** Keep an injected transport or explicit pin distinct from the implicit public fallback. */
9
+ export function selectApplicationRelay(options = {}) {
10
+ const { configured, explicit, inviteRelay } = options;
11
+ const transport = configured !== undefined && typeof configured !== 'string';
12
+ const relay = configured && transport ? configured : explicit ?? configured ?? inviteRelay ?? options.fallbackCandidates?.[0] ?? DEFAULT_PUBLIC_RELAY;
13
+ const urls = [explicit, typeof configured === 'string' ? configured : undefined, inviteRelay,
14
+ typeof relay === 'string' ? relay : undefined].filter((v) => v !== undefined);
15
+ for (const url of urls)
16
+ validateRelayEndpointUrl(url, options);
17
+ if (options.allowedRelayUrls !== undefined) {
18
+ const allow = new Set(options.allowedRelayUrls.map(normalizeRelayUrl));
19
+ if (urls.some(url => !allow.has(normalizeRelayUrl(url))))
20
+ throw new Error(options.conflictError ?? 'CONFLICTING_RELAY');
21
+ }
22
+ else if (!options.allowAnyRelay) {
23
+ if (typeof configured === 'string' && [explicit, inviteRelay].some(url => url !== undefined && normalizeRelayUrl(url) !== normalizeRelayUrl(configured)))
24
+ throw new Error(options.conflictError ?? 'CONFLICTING_RELAY');
25
+ if (transport && explicit !== undefined)
26
+ throw new Error(options.conflictError ?? 'CONFLICTING_RELAY');
27
+ }
28
+ if (options.allowedRelayUrls === undefined && !options.allowAnyRelay && explicit !== undefined && inviteRelay !== undefined &&
29
+ normalizeRelayUrl(explicit) !== normalizeRelayUrl(inviteRelay))
30
+ throw new Error(options.conflictError ?? 'CONFLICTING_RELAY');
31
+ return { relay, source: transport ? 'transport' : explicit ? 'explicit' : configured ? 'configured'
32
+ : inviteRelay ? 'invite' : options.fallbackCandidates?.length ? 'local-default' : 'default' };
33
+ }
34
+ //# sourceMappingURL=relay-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-selection.js","sourceRoot":"","sources":["../src/relay-selection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { IdempotencyStoreOptions } from './idempotency-store.js';
2
+ import type { Json, KeyPair, TaskManifest } from '../../core/dist/index.js';
3
+ import type { LocalIdentityOptions } from './local-identity.js';
4
+ import type { DelegateOptions } from './session.js';
5
+ import type { SessionTimeoutOptions } from './session-timeouts.js';
6
+ export declare const PENDING_NEXT_STEP = "Use sealbridge pending list or acp_list_pending_requests; after worker owner approval, explicitly use sealbridge pending resubmit ID or acp_resubmit_pending_request. Listing shows local observations only; do not retry automatically.";
7
+ export interface PendingSummary {
8
+ id: string;
9
+ workerDid: string;
10
+ originalTaskId: string;
11
+ lastTaskId: string;
12
+ state: 'pending' | 'resolved' | 'failed' | 'expired';
13
+ createdAt: number;
14
+ expiresAt: number;
15
+ lastChecked: number;
16
+ attempts: number;
17
+ lastError?: string;
18
+ }
19
+ export interface PendingRequest extends PendingSummary {
20
+ request: ({
21
+ to: string;
22
+ workerRef?: never;
23
+ } | {
24
+ workerRef: string;
25
+ to?: never;
26
+ }) & {
27
+ relayUrl?: string;
28
+ manifest: TaskManifest;
29
+ input: Json;
30
+ timeouts: SessionTimeoutOptions;
31
+ };
32
+ }
33
+ export declare function requesterPendingPath(did: string, options?: LocalIdentityOptions): string;
34
+ export declare function pendingErrorCode(error: unknown): string;
35
+ export declare class RequesterPendingStore {
36
+ private readonly owner;
37
+ private readonly options;
38
+ readonly path: string;
39
+ private idempotency?;
40
+ private readonly io;
41
+ private readonly platform;
42
+ private readonly now;
43
+ constructor(owner: KeyPair, options?: LocalIdentityOptions & {
44
+ now?: () => number;
45
+ });
46
+ private directories;
47
+ private read;
48
+ private mutate;
49
+ list(): PendingSummary[];
50
+ save(request: PendingRequest['request']): string;
51
+ remove(id: string): void;
52
+ resolve(id: string): void;
53
+ private get;
54
+ /** The callback must use the current host's normal delegation and approval path. */
55
+ resubmit<T>(id: string, run: (request: DelegateOptions, relayUrl?: string) => Promise<T>, options?: {
56
+ idempotencyKey?: string;
57
+ idempotencyOptions?: IdempotencyStoreOptions;
58
+ }): Promise<T>;
59
+ }