@aeolus-fleet/gateway 0.28.1 → 0.29.1

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 (584) hide show
  1. package/README.md +13 -6
  2. package/dist/adapters/crypto/account-sign-in-seals.d.ts +7 -0
  3. package/dist/adapters/crypto/account-sign-in-seals.js +21 -0
  4. package/dist/adapters/crypto/account-sign-in-seals.js.map +1 -0
  5. package/dist/adapters/crypto/sign-in-seals.d.ts +1 -1
  6. package/dist/adapters/crypto/sign-in-seals.js +3 -6
  7. package/dist/adapters/crypto/sign-in-seals.js.map +1 -1
  8. package/dist/adapters/fleet/core-version.d.ts +1 -1
  9. package/dist/adapters/fleet/core-version.js +1 -1
  10. package/dist/adapters/fleet/fleet-ships.d.ts +6 -0
  11. package/dist/adapters/fleet/fleet-ships.js +23 -0
  12. package/dist/adapters/fleet/fleet-ships.js.map +1 -0
  13. package/dist/adapters/fleet/proxy-ship-reads.d.ts +2 -2
  14. package/dist/adapters/fleet/proxy-ship-reads.js +6 -3
  15. package/dist/adapters/fleet/proxy-ship-reads.js.map +1 -1
  16. package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -1
  17. package/dist/adapters/fleet/rest-fleet-door.js +34 -14
  18. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  19. package/dist/adapters/http/account-sign-in-routes.d.ts +19 -0
  20. package/dist/adapters/http/account-sign-in-routes.js +61 -0
  21. package/dist/adapters/http/account-sign-in-routes.js.map +1 -0
  22. package/dist/adapters/http/forms.d.ts +9 -0
  23. package/dist/adapters/http/forms.js +23 -0
  24. package/dist/adapters/http/forms.js.map +1 -0
  25. package/dist/adapters/http/front-door.d.ts +11 -4
  26. package/dist/adapters/http/front-door.js +48 -8
  27. package/dist/adapters/http/front-door.js.map +1 -1
  28. package/dist/adapters/http/live.d.ts +2 -12
  29. package/dist/adapters/http/live.js +4 -65
  30. package/dist/adapters/http/live.js.map +1 -1
  31. package/dist/adapters/http/oauth-routes.d.ts +14 -16
  32. package/dist/adapters/http/oauth-routes.js +23 -139
  33. package/dist/adapters/http/oauth-routes.js.map +1 -1
  34. package/dist/adapters/http/person-tools.d.ts +9 -4
  35. package/dist/adapters/http/person-tools.js +49 -5
  36. package/dist/adapters/http/person-tools.js.map +1 -1
  37. package/dist/adapters/pagasae/shared-sign-in.d.ts +11 -0
  38. package/dist/adapters/pagasae/shared-sign-in.js +123 -0
  39. package/dist/adapters/pagasae/shared-sign-in.js.map +1 -0
  40. package/dist/adapters/prisma/generated/browser.d.ts +1 -1
  41. package/dist/adapters/prisma/generated/client.d.ts +1 -1
  42. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  43. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  44. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +1 -0
  45. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +1 -0
  46. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  47. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +1 -0
  48. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +1 -0
  49. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  50. package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +30 -2
  51. package/dist/adapters/prisma/opened-deliveries.js +18 -12
  52. package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
  53. package/dist/adapters/trpc/router.d.ts +143 -4
  54. package/dist/adapters/trpc/router.js +151 -5
  55. package/dist/adapters/trpc/router.js.map +1 -1
  56. package/dist/adapters/web/next-web-app.d.ts +10 -0
  57. package/dist/adapters/web/next-web-app.js +27 -0
  58. package/dist/adapters/web/next-web-app.js.map +1 -0
  59. package/dist/app.d.ts +9 -1
  60. package/dist/app.js +53 -29
  61. package/dist/app.js.map +1 -1
  62. package/dist/bin/aeolus-gateway.js +12 -1
  63. package/dist/bin/aeolus-gateway.js.map +1 -1
  64. package/dist/config.d.ts +18 -0
  65. package/dist/config.js +16 -1
  66. package/dist/config.js.map +1 -1
  67. package/dist/core/account-sign-in/account-in-view.d.ts +43 -0
  68. package/dist/core/account-sign-in/account-in-view.js +52 -0
  69. package/dist/core/account-sign-in/account-in-view.js.map +1 -0
  70. package/dist/core/account-sign-in/account-of-sign-in.d.ts +23 -0
  71. package/dist/core/account-sign-in/account-of-sign-in.js +41 -0
  72. package/dist/core/account-sign-in/account-of-sign-in.js.map +1 -0
  73. package/dist/core/account-sign-in/complete-account-sign-in.d.ts +37 -0
  74. package/dist/core/account-sign-in/complete-account-sign-in.js +25 -0
  75. package/dist/core/account-sign-in/complete-account-sign-in.js.map +1 -0
  76. package/dist/core/account-sign-in/ports.d.ts +92 -0
  77. package/dist/core/account-sign-in/ports.js +3 -0
  78. package/dist/core/account-sign-in/ports.js.map +1 -0
  79. package/dist/core/account-sign-in/sign-out-account.d.ts +15 -0
  80. package/dist/core/account-sign-in/sign-out-account.js +12 -0
  81. package/dist/core/account-sign-in/sign-out-account.js.map +1 -0
  82. package/dist/core/account-sign-in/start-account-sign-in.d.ts +25 -0
  83. package/dist/core/account-sign-in/start-account-sign-in.js +26 -0
  84. package/dist/core/account-sign-in/start-account-sign-in.js.map +1 -0
  85. package/dist/core/actors/authenticate-actor.d.ts +14 -15
  86. package/dist/core/actors/authenticate-actor.js +10 -12
  87. package/dist/core/actors/authenticate-actor.js.map +1 -1
  88. package/dist/core/actors/credential-of.d.ts +4 -6
  89. package/dist/core/actors/credential-of.js +4 -8
  90. package/dist/core/actors/credential-of.js.map +1 -1
  91. package/dist/core/connection/answer-pings.d.ts +19 -0
  92. package/dist/core/connection/answer-pings.js +34 -0
  93. package/dist/core/connection/answer-pings.js.map +1 -0
  94. package/dist/core/connection/ports.d.ts +18 -1
  95. package/dist/core/operator/authenticate-operator.d.ts +4 -3
  96. package/dist/core/operator/authenticate-operator.js +4 -2
  97. package/dist/core/operator/authenticate-operator.js.map +1 -1
  98. package/dist/core/parties/list-owner-choices.d.ts +24 -0
  99. package/dist/core/parties/list-owner-choices.js +25 -0
  100. package/dist/core/parties/list-owner-choices.js.map +1 -0
  101. package/dist/core/parties/list-parties.js +1 -1
  102. package/dist/core/parties/list-parties.js.map +1 -1
  103. package/dist/core/parties/ports.d.ts +14 -5
  104. package/dist/core/parties/shown-party.d.ts +8 -2
  105. package/dist/core/parties/shown-party.js.map +1 -1
  106. package/dist/core/people/crew-person-ship.d.ts +3 -5
  107. package/dist/core/people/crew-person-ship.js +6 -5
  108. package/dist/core/people/crew-person-ship.js.map +1 -1
  109. package/dist/core/people/inbox-entry.d.ts +2 -1
  110. package/dist/core/people/inbox-entry.js +3 -0
  111. package/dist/core/people/inbox-entry.js.map +1 -1
  112. package/dist/core/people/list-ships.d.ts +17 -0
  113. package/dist/core/people/list-ships.js +20 -0
  114. package/dist/core/people/list-ships.js.map +1 -0
  115. package/dist/core/people/open-delivery.d.ts +14 -9
  116. package/dist/core/people/open-delivery.js +24 -4
  117. package/dist/core/people/open-delivery.js.map +1 -1
  118. package/dist/core/people/person-crew.d.ts +13 -1
  119. package/dist/core/people/person-crew.js.map +1 -1
  120. package/dist/core/people/ports.d.ts +42 -3
  121. package/dist/core/people/read-inbox.d.ts +15 -9
  122. package/dist/core/people/read-inbox.js +17 -6
  123. package/dist/core/people/read-inbox.js.map +1 -1
  124. package/dist/core/people/send-message.d.ts +32 -0
  125. package/dist/core/people/send-message.js +22 -0
  126. package/dist/core/people/send-message.js.map +1 -0
  127. package/dist/core/requests/ask-for-server.d.ts +2 -2
  128. package/dist/core/requests/watch-waiting.d.ts +2 -1
  129. package/dist/core/requests/watch-waiting.js +2 -2
  130. package/dist/core/requests/watch-waiting.js.map +1 -1
  131. package/dist/core/sign-in/complete-sign-in.d.ts +4 -11
  132. package/dist/core/sign-in/complete-sign-in.js +1 -23
  133. package/dist/core/sign-in/complete-sign-in.js.map +1 -1
  134. package/dist/core/sign-in/own-page.d.ts +10 -0
  135. package/dist/core/sign-in/own-page.js +35 -0
  136. package/dist/core/sign-in/own-page.js.map +1 -0
  137. package/dist/core/sign-in/ports.d.ts +3 -24
  138. package/dist/ping-worker.d.ts +20 -0
  139. package/dist/ping-worker.js +33 -0
  140. package/dist/ping-worker.js.map +1 -0
  141. package/package.json +23 -5
  142. package/src/adapters/prisma/migrations/20261021120000_opened_deliveries_sent_at/migration.sql +4 -0
  143. package/src/adapters/prisma/schema.prisma +2 -1
  144. package/web/.next/BUILD_ID +1 -0
  145. package/web/.next/app-path-routes-manifest.json +17 -0
  146. package/web/.next/build/chunks/[root-of-the-server]__17pn3jjqv9c44._.js +192 -0
  147. package/web/.next/build/chunks/[root-of-the-server]__17pn3jjqv9c44._.js.map +8 -0
  148. package/web/.next/build/chunks/[root-of-the-server]__1ehkf7gbe4e6q._.js +502 -0
  149. package/web/.next/build/chunks/[root-of-the-server]__1ehkf7gbe4e6q._.js.map +11 -0
  150. package/web/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_1t6pazwwggn3s._.js +13 -0
  151. package/web/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_1t6pazwwggn3s._.js.map +5 -0
  152. package/web/.next/build/chunks/[turbopack]_runtime.js +1056 -0
  153. package/web/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
  154. package/web/.next/build/chunks/node_modules_0ds4fgws35qq2._.js +7337 -0
  155. package/web/.next/build/chunks/node_modules_0ds4fgws35qq2._.js.map +47 -0
  156. package/web/.next/build/chunks/pool_entry-[turbopack-node]_transforms_postcss_ts_1inl-dyesk97a._.js +6 -0
  157. package/web/.next/build/chunks/pool_entry-[turbopack-node]_transforms_postcss_ts_1inl-dyesk97a._.js.map +5 -0
  158. package/web/.next/build/package.json +1 -0
  159. package/web/.next/build-manifest.json +194 -0
  160. package/web/.next/diagnostics/build-diagnostics.json +6 -0
  161. package/web/.next/diagnostics/framework.json +1 -0
  162. package/web/.next/diagnostics/route-bundle-stats.json +195 -0
  163. package/web/.next/export-marker.json +6 -0
  164. package/web/.next/fallback-build-manifest.json +15 -0
  165. package/web/.next/images-manifest.json +68 -0
  166. package/web/.next/next-minimal-server.js.nft.json +1 -0
  167. package/web/.next/next-server.js.nft.json +1 -0
  168. package/web/.next/package.json +1 -0
  169. package/web/.next/prerender-manifest.json +40 -0
  170. package/web/.next/required-server-files.js +367 -0
  171. package/web/.next/required-server-files.json +367 -0
  172. package/web/.next/routes-manifest.json +144 -0
  173. package/web/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  174. package/web/.next/server/app/_global-error/page/build-manifest.json +23 -0
  175. package/web/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  176. package/web/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  177. package/web/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  178. package/web/.next/server/app/_global-error/page.js +12 -0
  179. package/web/.next/server/app/_global-error/page.js.map +5 -0
  180. package/web/.next/server/app/_global-error/page.js.nft.json +1 -0
  181. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  182. package/web/.next/server/app/_global-error.html +1 -0
  183. package/web/.next/server/app/_global-error.meta +30 -0
  184. package/web/.next/server/app/_global-error.rsc +18 -0
  185. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +23 -0
  186. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
  187. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -0
  188. package/web/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  189. package/web/.next/server/app/_not-found/page/build-manifest.json +23 -0
  190. package/web/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  191. package/web/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  192. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +15 -0
  193. package/web/.next/server/app/_not-found/page.js +17 -0
  194. package/web/.next/server/app/_not-found/page.js.map +5 -0
  195. package/web/.next/server/app/_not-found/page.js.nft.json +1 -0
  196. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
  197. package/web/.next/server/app/authorize/failed/page/app-paths-manifest.json +3 -0
  198. package/web/.next/server/app/authorize/failed/page/build-manifest.json +23 -0
  199. package/web/.next/server/app/authorize/failed/page/next-font-manifest.json +11 -0
  200. package/web/.next/server/app/authorize/failed/page/react-loadable-manifest.json +1 -0
  201. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +15 -0
  202. package/web/.next/server/app/authorize/failed/page.js +18 -0
  203. package/web/.next/server/app/authorize/failed/page.js.map +5 -0
  204. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -0
  205. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +3 -0
  206. package/web/.next/server/app/authorize/pick/page/app-paths-manifest.json +3 -0
  207. package/web/.next/server/app/authorize/pick/page/build-manifest.json +23 -0
  208. package/web/.next/server/app/authorize/pick/page/next-font-manifest.json +11 -0
  209. package/web/.next/server/app/authorize/pick/page/react-loadable-manifest.json +1 -0
  210. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +15 -0
  211. package/web/.next/server/app/authorize/pick/page.js +19 -0
  212. package/web/.next/server/app/authorize/pick/page.js.map +5 -0
  213. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -0
  214. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +3 -0
  215. package/web/.next/server/app/authorize/waiting/approval/page/app-paths-manifest.json +3 -0
  216. package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +23 -0
  217. package/web/.next/server/app/authorize/waiting/approval/page/next-font-manifest.json +11 -0
  218. package/web/.next/server/app/authorize/waiting/approval/page/react-loadable-manifest.json +1 -0
  219. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +15 -0
  220. package/web/.next/server/app/authorize/waiting/approval/page.js +19 -0
  221. package/web/.next/server/app/authorize/waiting/approval/page.js.map +5 -0
  222. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -0
  223. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +3 -0
  224. package/web/.next/server/app/outside-parties/[name]/change/page/app-paths-manifest.json +3 -0
  225. package/web/.next/server/app/outside-parties/[name]/change/page/build-manifest.json +23 -0
  226. package/web/.next/server/app/outside-parties/[name]/change/page/next-font-manifest.json +11 -0
  227. package/web/.next/server/app/outside-parties/[name]/change/page/react-loadable-manifest.json +1 -0
  228. package/web/.next/server/app/outside-parties/[name]/change/page/server-reference-manifest.json +35 -0
  229. package/web/.next/server/app/outside-parties/[name]/change/page.js +22 -0
  230. package/web/.next/server/app/outside-parties/[name]/change/page.js.map +5 -0
  231. package/web/.next/server/app/outside-parties/[name]/change/page.js.nft.json +1 -0
  232. package/web/.next/server/app/outside-parties/[name]/change/page_client-reference-manifest.js +3 -0
  233. package/web/.next/server/app/outside-parties/[name]/page/app-paths-manifest.json +3 -0
  234. package/web/.next/server/app/outside-parties/[name]/page/build-manifest.json +23 -0
  235. package/web/.next/server/app/outside-parties/[name]/page/next-font-manifest.json +11 -0
  236. package/web/.next/server/app/outside-parties/[name]/page/react-loadable-manifest.json +1 -0
  237. package/web/.next/server/app/outside-parties/[name]/page/server-reference-manifest.json +15 -0
  238. package/web/.next/server/app/outside-parties/[name]/page.js +20 -0
  239. package/web/.next/server/app/outside-parties/[name]/page.js.map +5 -0
  240. package/web/.next/server/app/outside-parties/[name]/page.js.nft.json +1 -0
  241. package/web/.next/server/app/outside-parties/[name]/page_client-reference-manifest.js +3 -0
  242. package/web/.next/server/app/outside-parties/[name]/retire/page/app-paths-manifest.json +3 -0
  243. package/web/.next/server/app/outside-parties/[name]/retire/page/build-manifest.json +23 -0
  244. package/web/.next/server/app/outside-parties/[name]/retire/page/next-font-manifest.json +11 -0
  245. package/web/.next/server/app/outside-parties/[name]/retire/page/react-loadable-manifest.json +1 -0
  246. package/web/.next/server/app/outside-parties/[name]/retire/page/server-reference-manifest.json +35 -0
  247. package/web/.next/server/app/outside-parties/[name]/retire/page.js +21 -0
  248. package/web/.next/server/app/outside-parties/[name]/retire/page.js.map +5 -0
  249. package/web/.next/server/app/outside-parties/[name]/retire/page.js.nft.json +1 -0
  250. package/web/.next/server/app/outside-parties/[name]/retire/page_client-reference-manifest.js +3 -0
  251. package/web/.next/server/app/outside-parties/add/page/app-paths-manifest.json +3 -0
  252. package/web/.next/server/app/outside-parties/add/page/build-manifest.json +23 -0
  253. package/web/.next/server/app/outside-parties/add/page/next-font-manifest.json +11 -0
  254. package/web/.next/server/app/outside-parties/add/page/react-loadable-manifest.json +1 -0
  255. package/web/.next/server/app/outside-parties/add/page/server-reference-manifest.json +35 -0
  256. package/web/.next/server/app/outside-parties/add/page.js +19 -0
  257. package/web/.next/server/app/outside-parties/add/page.js.map +5 -0
  258. package/web/.next/server/app/outside-parties/add/page.js.nft.json +1 -0
  259. package/web/.next/server/app/outside-parties/add/page_client-reference-manifest.js +3 -0
  260. package/web/.next/server/app/outside-parties/page/app-paths-manifest.json +3 -0
  261. package/web/.next/server/app/outside-parties/page/build-manifest.json +23 -0
  262. package/web/.next/server/app/outside-parties/page/next-font-manifest.json +11 -0
  263. package/web/.next/server/app/outside-parties/page/react-loadable-manifest.json +1 -0
  264. package/web/.next/server/app/outside-parties/page/server-reference-manifest.json +25 -0
  265. package/web/.next/server/app/outside-parties/page.js +20 -0
  266. package/web/.next/server/app/outside-parties/page.js.map +5 -0
  267. package/web/.next/server/app/outside-parties/page.js.nft.json +1 -0
  268. package/web/.next/server/app/outside-parties/page_client-reference-manifest.js +3 -0
  269. package/web/.next/server/app/overview/changes/route/app-paths-manifest.json +3 -0
  270. package/web/.next/server/app/overview/changes/route/build-manifest.json +12 -0
  271. package/web/.next/server/app/overview/changes/route/server-reference-manifest.json +4 -0
  272. package/web/.next/server/app/overview/changes/route.js +6 -0
  273. package/web/.next/server/app/overview/changes/route.js.map +5 -0
  274. package/web/.next/server/app/overview/changes/route.js.nft.json +1 -0
  275. package/web/.next/server/app/overview/changes/route_client-reference-manifest.js +3 -0
  276. package/web/.next/server/app/overview/page/app-paths-manifest.json +3 -0
  277. package/web/.next/server/app/overview/page/build-manifest.json +23 -0
  278. package/web/.next/server/app/overview/page/next-font-manifest.json +11 -0
  279. package/web/.next/server/app/overview/page/react-loadable-manifest.json +1 -0
  280. package/web/.next/server/app/overview/page/server-reference-manifest.json +45 -0
  281. package/web/.next/server/app/overview/page.js +24 -0
  282. package/web/.next/server/app/overview/page.js.map +5 -0
  283. package/web/.next/server/app/overview/page.js.nft.json +1 -0
  284. package/web/.next/server/app/overview/page_client-reference-manifest.js +3 -0
  285. package/web/.next/server/app/overview/requests/[requestId]/page/app-paths-manifest.json +3 -0
  286. package/web/.next/server/app/overview/requests/[requestId]/page/build-manifest.json +23 -0
  287. package/web/.next/server/app/overview/requests/[requestId]/page/next-font-manifest.json +11 -0
  288. package/web/.next/server/app/overview/requests/[requestId]/page/react-loadable-manifest.json +1 -0
  289. package/web/.next/server/app/overview/requests/[requestId]/page/server-reference-manifest.json +25 -0
  290. package/web/.next/server/app/overview/requests/[requestId]/page.js +24 -0
  291. package/web/.next/server/app/overview/requests/[requestId]/page.js.map +5 -0
  292. package/web/.next/server/app/overview/requests/[requestId]/page.js.nft.json +1 -0
  293. package/web/.next/server/app/overview/requests/[requestId]/page_client-reference-manifest.js +3 -0
  294. package/web/.next/server/app/parties/page/app-paths-manifest.json +3 -0
  295. package/web/.next/server/app/parties/page/build-manifest.json +23 -0
  296. package/web/.next/server/app/parties/page/next-font-manifest.json +11 -0
  297. package/web/.next/server/app/parties/page/react-loadable-manifest.json +1 -0
  298. package/web/.next/server/app/parties/page/server-reference-manifest.json +55 -0
  299. package/web/.next/server/app/parties/page.js +22 -0
  300. package/web/.next/server/app/parties/page.js.map +5 -0
  301. package/web/.next/server/app/parties/page.js.nft.json +1 -0
  302. package/web/.next/server/app/parties/page_client-reference-manifest.js +3 -0
  303. package/web/.next/server/app/sign-in/failed/page/app-paths-manifest.json +3 -0
  304. package/web/.next/server/app/sign-in/failed/page/build-manifest.json +23 -0
  305. package/web/.next/server/app/sign-in/failed/page/next-font-manifest.json +11 -0
  306. package/web/.next/server/app/sign-in/failed/page/react-loadable-manifest.json +1 -0
  307. package/web/.next/server/app/sign-in/failed/page/server-reference-manifest.json +15 -0
  308. package/web/.next/server/app/sign-in/failed/page.js +18 -0
  309. package/web/.next/server/app/sign-in/failed/page.js.map +5 -0
  310. package/web/.next/server/app/sign-in/failed/page.js.nft.json +1 -0
  311. package/web/.next/server/app/sign-in/failed/page_client-reference-manifest.js +3 -0
  312. package/web/.next/server/app-paths-manifest.json +17 -0
  313. package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +3 -0
  314. package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js.map +1 -0
  315. package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js +369 -0
  316. package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js.map +1 -0
  317. package/web/.next/server/chunks/[turbopack]_runtime.js +937 -0
  318. package/web/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
  319. package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js +3 -0
  320. package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js.map +1 -0
  321. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js +4 -0
  322. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js.map +1 -0
  323. package/web/.next/server/chunks/ssr/[root-of-the-server]__04_bc8g0oe4jt._.js +3 -0
  324. package/web/.next/server/chunks/ssr/[root-of-the-server]__04_bc8g0oe4jt._.js.map +1 -0
  325. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js +3 -0
  326. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js.map +1 -0
  327. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js +3 -0
  328. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js.map +1 -0
  329. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js +3 -0
  330. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js.map +1 -0
  331. package/web/.next/server/chunks/ssr/[root-of-the-server]__0py1t7q9ntzgc._.js +3 -0
  332. package/web/.next/server/chunks/ssr/[root-of-the-server]__0py1t7q9ntzgc._.js.map +1 -0
  333. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js +3 -0
  334. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js.map +1 -0
  335. package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js +3 -0
  336. package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js.map +1 -0
  337. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +3 -0
  338. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +1 -0
  339. package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js +4 -0
  340. package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js.map +1 -0
  341. package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js +3 -0
  342. package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js.map +1 -0
  343. package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js +3 -0
  344. package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js.map +1 -0
  345. package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js +3 -0
  346. package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js.map +1 -0
  347. package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js +3 -0
  348. package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js.map +1 -0
  349. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js +4 -0
  350. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js.map +1 -0
  351. package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js +3 -0
  352. package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js.map +1 -0
  353. package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js +14 -0
  354. package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js.map +1 -0
  355. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js +4 -0
  356. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js.map +1 -0
  357. package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js +3 -0
  358. package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js.map +1 -0
  359. package/web/.next/server/chunks/ssr/[turbopack]_runtime.js +937 -0
  360. package/web/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
  361. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +4 -0
  362. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -0
  363. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +57 -0
  364. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -0
  365. package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js +4 -0
  366. package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js.map +1 -0
  367. package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js +4 -0
  368. package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js.map +1 -0
  369. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +4 -0
  370. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -0
  371. package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js +4 -0
  372. package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js.map +1 -0
  373. package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js +4 -0
  374. package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js.map +1 -0
  375. package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js +3 -0
  376. package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js.map +1 -0
  377. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +4 -0
  378. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -0
  379. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +4 -0
  380. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -0
  381. package/web/.next/server/chunks/ssr/node_modules_0gxlxpuufujz9._.js +33 -0
  382. package/web/.next/server/chunks/ssr/node_modules_0gxlxpuufujz9._.js.map +1 -0
  383. package/web/.next/server/chunks/ssr/node_modules_0h91jdk0pr40d._.js +33 -0
  384. package/web/.next/server/chunks/ssr/node_modules_0h91jdk0pr40d._.js.map +1 -0
  385. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +3 -0
  386. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +1 -0
  387. package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +17 -0
  388. package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js.map +1 -0
  389. package/web/.next/server/chunks/ssr/node_modules_next_164yuq6c86vw2._.js +291 -0
  390. package/web/.next/server/chunks/ssr/node_modules_next_164yuq6c86vw2._.js.map +1 -0
  391. package/web/.next/server/chunks/ssr/node_modules_next_17rgm9-6qzdn5._.js +313 -0
  392. package/web/.next/server/chunks/ssr/node_modules_next_17rgm9-6qzdn5._.js.map +1 -0
  393. package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +6 -0
  394. package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js.map +1 -0
  395. package/web/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js +3 -0
  396. package/web/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js.map +1 -0
  397. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lhdi0ir6._.js +3 -0
  398. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lhdi0ir6._.js.map +1 -0
  399. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892nagajq.js +3 -0
  400. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892nagajq.js.map +1 -0
  401. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0xky89qu.js +3 -0
  402. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0xky89qu.js.map +1 -0
  403. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@edge-runtime_cookies_index_1kiz_an963mbg.js +3 -0
  404. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@edge-runtime_cookies_index_1kiz_an963mbg.js.map +1 -0
  405. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js +3 -0
  406. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js.map +1 -0
  407. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js +3 -0
  408. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js.map +1 -0
  409. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js +3 -0
  410. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js.map +1 -0
  411. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js +3 -0
  412. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js.map +1 -0
  413. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js +3 -0
  414. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js.map +1 -0
  415. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js +3 -0
  416. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js.map +1 -0
  417. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js +3 -0
  418. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js.map +1 -0
  419. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js +3 -0
  420. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js.map +1 -0
  421. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z4y02i7.js +3 -0
  422. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z4y02i7.js.map +1 -0
  423. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js +3 -0
  424. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js.map +1 -0
  425. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js +3 -0
  426. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js.map +1 -0
  427. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js +3 -0
  428. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js.map +1 -0
  429. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js +3 -0
  430. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js.map +1 -0
  431. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js +3 -0
  432. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js.map +1 -0
  433. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js +3 -0
  434. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js.map +1 -0
  435. package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js +3 -0
  436. package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js.map +1 -0
  437. package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js +3 -0
  438. package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js.map +1 -0
  439. package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js +3 -0
  440. package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js.map +1 -0
  441. package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js +3 -0
  442. package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js.map +1 -0
  443. package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js +3 -0
  444. package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js.map +1 -0
  445. package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js +3 -0
  446. package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js.map +1 -0
  447. package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js +10 -0
  448. package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js.map +1 -0
  449. package/web/.next/server/chunks/ssr/web__next-internal_server_app__global-error_page_actions_0crg1npwvbfn5.js +3 -0
  450. package/web/.next/server/chunks/ssr/web__next-internal_server_app__global-error_page_actions_0crg1npwvbfn5.js.map +1 -0
  451. package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js +3 -0
  452. package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js.map +1 -0
  453. package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js +3 -0
  454. package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js.map +1 -0
  455. package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js +3 -0
  456. package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js.map +1 -0
  457. package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js +3 -0
  458. package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js.map +1 -0
  459. package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js +3 -0
  460. package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js.map +1 -0
  461. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js +3 -0
  462. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js.map +1 -0
  463. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js +3 -0
  464. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js.map +1 -0
  465. package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js +3 -0
  466. package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js.map +1 -0
  467. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +3 -0
  468. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js.map +1 -0
  469. package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js +3 -0
  470. package/web/.next/server/chunks/ssr/web_features_0fxkmm4vqke5q._.js.map +1 -0
  471. package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js +3 -0
  472. package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js.map +1 -0
  473. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js +3 -0
  474. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js.map +1 -0
  475. package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js +3 -0
  476. package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js.map +1 -0
  477. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +3 -0
  478. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -0
  479. package/web/.next/server/chunks/ssr/web_features_authorize_ui_waiting-for-approval_tsx_00iwjvj4orq9g._.js +3 -0
  480. package/web/.next/server/chunks/ssr/web_features_authorize_ui_waiting-for-approval_tsx_00iwjvj4orq9g._.js.map +1 -0
  481. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js +3 -0
  482. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js.map +1 -0
  483. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js +3 -0
  484. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js.map +1 -0
  485. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js +3 -0
  486. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js.map +1 -0
  487. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +3 -0
  488. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -0
  489. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +3 -0
  490. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -0
  491. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js +3 -0
  492. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map +1 -0
  493. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +3 -0
  494. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js.map +1 -0
  495. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +3 -0
  496. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -0
  497. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +3 -0
  498. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -0
  499. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js +3 -0
  500. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map +1 -0
  501. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +3 -0
  502. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map +1 -0
  503. package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js +3 -0
  504. package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js.map +1 -0
  505. package/web/.next/server/functions-config-manifest.json +4 -0
  506. package/web/.next/server/interception-route-rewrite-manifest.js +1 -0
  507. package/web/.next/server/middleware-build-manifest.js +194 -0
  508. package/web/.next/server/middleware-manifest.json +6 -0
  509. package/web/.next/server/next-font-manifest.js +1 -0
  510. package/web/.next/server/next-font-manifest.json +59 -0
  511. package/web/.next/server/pages/500.html +1 -0
  512. package/web/.next/server/pages-manifest.json +3 -0
  513. package/web/.next/server/prefetch-hints.json +11 -0
  514. package/web/.next/server/preview-props.json +5 -0
  515. package/web/.next/server/server-reference-manifest.js +1 -0
  516. package/web/.next/server/server-reference-manifest.json +202 -0
  517. package/web/.next/static/MLIzjhz2u5r5gyyuciHvf/_buildManifest.js +11 -0
  518. package/web/.next/static/MLIzjhz2u5r5gyyuciHvf/_clientMiddlewareManifest.js +1 -0
  519. package/web/.next/static/MLIzjhz2u5r5gyyuciHvf/_ssgManifest.js +1 -0
  520. package/web/.next/static/chunks/0214opd1iq3ld.js +1 -0
  521. package/web/.next/static/chunks/0a1vw3r93lh06.js +1 -0
  522. package/web/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  523. package/web/.next/static/chunks/0hobzrlhklo3e.js +1 -0
  524. package/web/.next/static/chunks/0lzisjsmhlhjf.js +1 -0
  525. package/web/.next/static/chunks/0umf92h1sb77c.js +1 -0
  526. package/web/.next/static/chunks/1ma7v1viiz247.js +1 -0
  527. package/web/.next/static/chunks/1sgi4p93eayf4.js +1 -0
  528. package/web/.next/static/chunks/22u81hd6kxqsx.js +1 -0
  529. package/web/.next/static/chunks/2ewacyhp73due.js +1 -0
  530. package/web/.next/static/chunks/2hz8yws_wswjz.js +31 -0
  531. package/web/.next/static/chunks/2qpupho1jn-iy.js +1 -0
  532. package/web/.next/static/chunks/2rap-vrom5-zw.css +3 -0
  533. package/web/.next/static/chunks/3jr0srcv_-pfa.js +1 -0
  534. package/web/.next/static/chunks/3knqujtrdi225.js +1 -0
  535. package/web/.next/static/chunks/3l_1gcuoe8bfn.js +1 -0
  536. package/web/.next/static/chunks/3sv0_hjr9t4cp.js +1 -0
  537. package/web/.next/static/chunks/41rcj9-d-7p_4.js +22 -0
  538. package/web/.next/static/chunks/turbopack-3-ry682tkyiqk.js +1 -0
  539. package/web/.next/static/media/geist_mono_variable-s.p.3ms9vq719j3f8.woff2 +0 -0
  540. package/web/.next/static/media/geist_variable-s.p.0mrjj4bg00-he.woff2 +0 -0
  541. package/web/.next/trace +1 -0
  542. package/web/.next/trace-build +1 -0
  543. package/web/.next/turbopack +0 -0
  544. package/web/.next/types/cache-life.d.ts +114 -0
  545. package/web/.next/types/root-params.d.ts +3 -0
  546. package/web/.next/types/routes.d.ts +85 -0
  547. package/web/.next/types/validator.ts +288 -0
  548. package/web/next.config.ts +9 -0
  549. package/dist/adapters/crypto/page-sessions.d.ts +0 -15
  550. package/dist/adapters/crypto/page-sessions.js +0 -40
  551. package/dist/adapters/crypto/page-sessions.js.map +0 -1
  552. package/dist/adapters/http/add-server-page.d.ts +0 -7
  553. package/dist/adapters/http/add-server-page.js +0 -175
  554. package/dist/adapters/http/add-server-page.js.map +0 -1
  555. package/dist/adapters/http/delivery-page.d.ts +0 -24
  556. package/dist/adapters/http/delivery-page.js +0 -115
  557. package/dist/adapters/http/delivery-page.js.map +0 -1
  558. package/dist/adapters/http/html.d.ts +0 -15
  559. package/dist/adapters/http/html.js +0 -53
  560. package/dist/adapters/http/html.js.map +0 -1
  561. package/dist/adapters/http/outside-parties-page.d.ts +0 -33
  562. package/dist/adapters/http/outside-parties-page.js +0 -153
  563. package/dist/adapters/http/outside-parties-page.js.map +0 -1
  564. package/dist/adapters/http/outside-party-page.d.ts +0 -7
  565. package/dist/adapters/http/outside-party-page.js +0 -212
  566. package/dist/adapters/http/outside-party-page.js.map +0 -1
  567. package/dist/adapters/http/overview-page.d.ts +0 -17
  568. package/dist/adapters/http/overview-page.js +0 -298
  569. package/dist/adapters/http/overview-page.js.map +0 -1
  570. package/dist/adapters/http/parties-page.d.ts +0 -7
  571. package/dist/adapters/http/parties-page.js +0 -139
  572. package/dist/adapters/http/parties-page.js.map +0 -1
  573. package/dist/adapters/http/scope-rows.d.ts +0 -10
  574. package/dist/adapters/http/scope-rows.js +0 -30
  575. package/dist/adapters/http/scope-rows.js.map +0 -1
  576. package/dist/adapters/http/signal.d.ts +0 -61
  577. package/dist/adapters/http/signal.js +0 -263
  578. package/dist/adapters/http/signal.js.map +0 -1
  579. package/dist/core/sign-in/sign-out.d.ts +0 -10
  580. package/dist/core/sign-in/sign-out.js +0 -9
  581. package/dist/core/sign-in/sign-out.js.map +0 -1
  582. package/dist/core/sign-in/start-page-sign-in.d.ts +0 -25
  583. package/dist/core/sign-in/start-page-sign-in.js +0 -30
  584. package/dist/core/sign-in/start-page-sign-in.js.map +0 -1
@@ -1,19 +1,59 @@
1
- import { signalPage } from './signal.js';
1
+ import { isSameOrigin } from './forms.js';
2
2
  const HTTP_SEE_OTHER = 303;
3
+ const HTTP_FORBIDDEN = 403;
3
4
  const HTTP_NOT_FOUND = 404;
4
5
  const OVERVIEW = '/overview';
5
- /** Whether a browser asks for a page: a GET (or HEAD) that accepts HTML. */
6
+ /** Where the web app's built files are served from. */
7
+ const WEB_APP_FILES = '/_next/*';
8
+ /** The header a server action of the web app (a page's form) is posted with: Next.js reads its body itself. */
9
+ const SERVER_ACTION_HEADER = 'next-action';
10
+ /** A form a page sends before its script took over the browser: the server has no form of its own of this kind. */
11
+ const PAGE_FORM_TYPE = 'multipart/form-data';
12
+ /** Whether a page of the web app sends one of its forms (a server action), with or without its script. */
13
+ function isPageForm(request) {
14
+ return request.method === 'POST' && (request.headers[SERVER_ACTION_HEADER] !== undefined || (request.headers['content-type'] ?? '').startsWith(PAGE_FORM_TYPE));
15
+ }
16
+ /** The header a page's refresh or navigation asks for its server components with. */
17
+ const SERVER_COMPONENTS_HEADER = 'rsc';
18
+ /**
19
+ * Whether a browser asks for a page or a page asks for its own: a GET (or
20
+ * HEAD) that accepts HTML, a page's refresh of its server components, or
21
+ * its live updates (an event stream).
22
+ */
6
23
  function isPageAsked(request) {
7
- return (request.method === 'GET' || request.method === 'HEAD') && (request.headers.accept ?? '').includes('text/html');
24
+ if (request.method !== 'GET' && request.method !== 'HEAD') {
25
+ return false;
26
+ }
27
+ const accept = request.headers.accept ?? '';
28
+ return accept.includes('text/html') || accept.includes('text/event-stream') || request.headers[SERVER_COMPONENTS_HEADER] !== undefined;
8
29
  }
9
- export function registerFrontDoor(server) {
30
+ export function registerFrontDoor(server, deps) {
10
31
  server.get('/', (_request, reply) => reply.code(HTTP_SEE_OTHER).header('location', OVERVIEW).send());
11
- server.setNotFoundHandler((request, reply) => {
12
- if (!isPageAsked(request)) {
32
+ const { web } = deps;
33
+ if (web !== undefined) {
34
+ // The web app writes the answer itself: Fastify, hijacked, sends nothing more.
35
+ server.get(WEB_APP_FILES, async (request, reply) => {
36
+ reply.hijack();
37
+ await web(request.raw, reply.raw);
38
+ });
39
+ // Before any route or body parser: the web app reads the form's body as the browser sent it.
40
+ server.addHook('onRequest', async (request, reply) => {
41
+ if (isPageForm(request)) {
42
+ // As the old pages did: a form comes from the gateway's own pages, never from another site with the browser's cookies.
43
+ if (!isSameOrigin(request)) {
44
+ return reply.code(HTTP_FORBIDDEN).type('text/plain; charset=utf-8').send('A form for this page is sent only from this page.');
45
+ }
46
+ reply.hijack();
47
+ await web(request.raw, reply.raw);
48
+ }
49
+ });
50
+ }
51
+ server.setNotFoundHandler(async (request, reply) => {
52
+ if (web === undefined || !isPageAsked(request)) {
13
53
  return reply.code(HTTP_NOT_FOUND).send({ message: `Route ${request.method}:${request.url} not found`, error: 'Not Found', statusCode: HTTP_NOT_FOUND });
14
54
  }
15
- const body = `<section class="card"><h2>This page does not exist</h2><div class="actions"><a class="button" href="${OVERVIEW}">Go to the Overview</a></div></section>`;
16
- return reply.code(HTTP_NOT_FOUND).type('text/html; charset=utf-8').send(signalPage({ title: 'Not found', body }));
55
+ reply.hijack();
56
+ await web(request.raw, reply.raw);
17
57
  });
18
58
  }
19
59
  //# sourceMappingURL=front-door.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"front-door.js","sourceRoot":"","sources":["../../../src/adapters/http/front-door.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,QAAQ,GAAG,WAAW,CAAC;AAE7B,4EAA4E;AAC5E,SAAS,WAAW,CAAC,OAAuB;IAC1C,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACzH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAErG,MAAM,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC3C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1J,CAAC;QACD,MAAM,IAAI,GAAG,uGAAuG,QAAQ,0CAA0C,CAAC;QACvK,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACpH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"front-door.js","sourceRoot":"","sources":["../../../src/adapters/http/front-door.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,14 @@
1
1
  import type { FleetId } from '@aeolus-fleet/common';
2
2
  import type { FastifyInstance } from 'fastify';
3
3
  import type { Change } from '../prisma/changes.js';
4
- import type { Context } from '../trpc/router.js';
5
- /** A page the live channel serves: its sections' HTML by name, read as the caller, from the page's query. */
6
- export interface LivePage {
7
- render(context: Context, params: URLSearchParams): Promise<Record<string, string>>;
8
- }
9
4
  interface Listener {
10
5
  readonly fleetId: FleetId;
11
6
  readonly read: () => void;
12
7
  }
13
- /** Hands each change to the sockets of its fleet, on this gateway. */
8
+ /** Hands each change to the listeners of its fleet, on this gateway. */
14
9
  export interface ChangeHub {
15
10
  publish: (change: Change) => void;
16
- /** Every socket reads its page again: changes may have been missed. */
11
+ /** Every listener reads again: changes may have been missed. */
17
12
  resync: () => void;
18
13
  subscribe: (listener: Listener) => () => void;
19
14
  listeners: () => number;
@@ -21,9 +16,4 @@ export interface ChangeHub {
21
16
  export declare function createChangeHub(): ChangeHub;
22
17
  /** Serves websockets on the server, once whichever route asks first; its routes register once it is loaded. */
23
18
  export declare function acceptWebsockets(server: FastifyInstance, routes: () => void): void;
24
- export declare function registerLive(server: FastifyInstance, deps: {
25
- contextFor: (cookie: string | undefined) => Context;
26
- hub: ChangeHub;
27
- pages: Record<string, LivePage>;
28
- }): void;
29
19
  export {};
@@ -1,18 +1,10 @@
1
1
  /**
2
- * The pages' live channel: a page whose content changes opens a websocket
3
- * on /live naming itself, and is sent its sections again whenever its
4
- * fleet's requests change, so it never reloads itself or polls. A change
5
- * carries no content: each socket reads its page again through the
6
- * gateway's API as its own caller, so it is never sent what its actor may
7
- * not see. Only the gateway's own pages open it: a socket from another
8
- * origin, with no session, or for a page that is not live is closed.
2
+ * What hears each committed change to a fleet's requests on this gateway:
3
+ * the API's requests.changes, which the web app's pages follow, and the
4
+ * waiting page of a client asked for. A change carries no content: each
5
+ * listener reads what it shows again, as its own caller.
9
6
  */
10
7
  import websocket from '@fastify/websocket';
11
- import { isSameOrigin } from './html.js';
12
- /** Why a socket was closed, as the page reads it: it does not open again for these. */
13
- const CLOSE_NO_SESSION = 4401;
14
- const CLOSE_OTHER_ORIGIN = 4403;
15
- const CLOSE_NOT_LIVE = 4404;
16
8
  export function createChangeHub() {
17
9
  const listening = new Set();
18
10
  return {
@@ -35,33 +27,6 @@ export function createChangeHub() {
35
27
  listeners: () => listening.size,
36
28
  };
37
29
  }
38
- /** Reads a page again and sends it, one read at a time per socket, so an older read never lands after a newer one. */
39
- function reader(send) {
40
- let isReading = false;
41
- let isWanted = false;
42
- const run = async () => {
43
- isReading = true;
44
- while (isWanted) {
45
- isWanted = false;
46
- try {
47
- const sections = await send.read();
48
- if (send.socket.readyState === send.socket.OPEN) {
49
- send.socket.send(JSON.stringify({ sections }));
50
- }
51
- }
52
- catch {
53
- // A read that failed leaves the page as it was; the next change reads it again.
54
- }
55
- }
56
- isReading = false;
57
- };
58
- return () => {
59
- isWanted = true;
60
- if (!isReading) {
61
- void run();
62
- }
63
- };
64
- }
65
30
  const servingWebsockets = new WeakSet();
66
31
  /** Serves websockets on the server, once whichever route asks first; its routes register once it is loaded. */
67
32
  export function acceptWebsockets(server, routes) {
@@ -71,30 +36,4 @@ export function acceptWebsockets(server, routes) {
71
36
  }
72
37
  void server.after(routes);
73
38
  }
74
- export function registerLive(server, deps) {
75
- acceptWebsockets(server, () => {
76
- server.get('/live', { websocket: true }, async (socket, request) => {
77
- if (!isSameOrigin(request)) {
78
- socket.close(CLOSE_OTHER_ORIGIN, 'Opened only from the gateway pages');
79
- return;
80
- }
81
- const params = new URLSearchParams(request.url.slice(request.url.indexOf('?') + 1));
82
- const page = deps.pages[params.get('page') ?? ''];
83
- if (page === undefined) {
84
- socket.close(CLOSE_NOT_LIVE, 'No such live page');
85
- return;
86
- }
87
- const context = deps.contextFor(request.headers.cookie);
88
- const actor = await context.authenticateActor({ cookie: context.cookie, crewToken: context.crewToken });
89
- if (!actor.isOk) {
90
- socket.close(CLOSE_NO_SESSION, 'Sign in again');
91
- return;
92
- }
93
- const read = reader({ socket, read: () => page.render(context, params) });
94
- const unsubscribe = deps.hub.subscribe({ fleetId: actor.value.fleetId, read });
95
- socket.on('close', unsubscribe);
96
- read();
97
- });
98
- });
99
- }
100
39
  //# sourceMappingURL=live.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/adapters/http/live.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/adapters/http/live.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAoB3C,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;IACtC,OAAO;QACL,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YAClB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QACD,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAmB,CAAC;AAEzD,+GAA+G;AAC/G,MAAM,UAAU,gBAAgB,CAAC,MAAuB,EAAE,MAAkB;IAC1E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
@@ -3,12 +3,12 @@
3
3
  * clients (MCP 2026-07-28 authorization): the metadata of RFC 9728 and RFC
4
4
  * 8414; /authorize, where a person picks what the client acts as (Q1 a) and
5
5
  * is sent to pagasae to sign in; /pagasae/callback, where pagasae sends them
6
- * back; the waiting page, where a client asked for waits for an approver
7
- * (decision 0056); and /token. /sign-in and /sign-out sign a person in to
8
- * the gateway's own pages through pagasae too, the browser holding a page
9
- * session. Each route parses the request and calls one use case. Only a
10
- * signed-in account asks for a client, so a gateway where no pagasae is set
11
- * answers no client (Thomas's question A), and signs no one in to its pages.
6
+ * back; the waiting address, where a client asked for waits for an approver
7
+ * (decision 0056); and /token. What a person reads is the web app's (header
8
+ * design H3): a door sends the browser to its page, the pick page, the
9
+ * waiting page or the page saying why it got nowhere. Each route parses the
10
+ * request and calls one use case. Only a signed-in account asks for a client,
11
+ * so a gateway where no pagasae is set answers no client (Thomas's question A).
12
12
  */
13
13
  import type { FastifyInstance } from 'fastify';
14
14
  import type { ExchangeToken } from '../../core/oauth/exchange-token.js';
@@ -17,9 +17,6 @@ import type { ReadWaiting } from '../../core/requests/read-waiting.js';
17
17
  import type { WatchWaiting } from '../../core/requests/watch-waiting.js';
18
18
  import type { Clock } from '../../core/shared/clock.js';
19
19
  import type { CompleteSignIn } from '../../core/sign-in/complete-sign-in.js';
20
- import type { PageSessions } from '../../core/sign-in/ports.js';
21
- import type { SignOut } from '../../core/sign-in/sign-out.js';
22
- import { type StartPageSignIn } from '../../core/sign-in/start-page-sign-in.js';
23
20
  import { type StartSignIn } from '../../core/sign-in/start-sign-in.js';
24
21
  import { type ChangeHub } from './live.js';
25
22
  export interface OAuthRoutesDeps {
@@ -35,13 +32,14 @@ export interface OAuthRoutesDeps {
35
32
  watchWaiting: WatchWaiting;
36
33
  hub: ChangeHub;
37
34
  clock: Clock;
38
- pages: PageSignInDeps;
39
35
  };
40
36
  }
41
- /** Signing a person in to the gateway's own pages, and out again. */
42
- export interface PageSignInDeps {
43
- start: StartPageSignIn;
44
- signOut: SignOut;
45
- sessions: PageSessions;
46
- }
37
+ /**
38
+ * Why a browser got nowhere, as the web app's page at /authorize/failed
39
+ * says it: the client is unknown; no pick was made; the sign-in is unknown
40
+ * or ended, or another browser's; the fleet is not served, or its outside
41
+ * parties are off; pagasae refused; the wait is unknown, or another
42
+ * browser's; or this gateway signs no one in.
43
+ */
44
+ export type FailedReason = 'invalidClient' | 'noPick' | 'unknownSignIn' | 'otherBrowser' | 'fleetNotServed' | 'outsidePartiesOff' | 'pagasaeRefused' | 'unknownWaiting' | 'otherBrowserWaiting' | 'noSignIn';
47
45
  export declare function registerOAuthRoutes(server: FastifyInstance, deps: OAuthRoutesDeps): void;
@@ -1,18 +1,11 @@
1
1
  import { z } from 'zod';
2
2
  import { REQUEST_LIFETIME_MS } from '../../core/requests/open-request.js';
3
- import { FIRST_PAGE } from '../../core/sign-in/start-page-sign-in.js';
4
3
  import { SIGN_IN_LIFETIME_MS } from '../../core/sign-in/start-sign-in.js';
5
- import { PAGE_SESSION_COOKIE } from '../crypto/page-sessions.js';
6
- import { acceptForms, escaped, isSameOrigin } from './html.js';
4
+ import { acceptForms, isSameOrigin } from './forms.js';
7
5
  import { acceptWebsockets } from './live.js';
8
- import { handshake, icon, ring, signInPage, statusBadge } from './signal.js';
9
6
  const HTTP_FOUND = 302;
10
- const HTTP_SEE_OTHER = 303;
11
7
  const HTTP_BAD_REQUEST = 400;
12
8
  const HTTP_UNAUTHORIZED = 401;
13
- const HTTP_FORBIDDEN = 403;
14
- const HTTP_NOT_FOUND = 404;
15
- const HTTP_BAD_GATEWAY = 502;
16
9
  const MS_PER_SECOND = 1000;
17
10
  /** Why the waiting page's live channel was closed: it does not open again. */
18
11
  const CLOSE_OTHER_ORIGIN = 4403;
@@ -30,41 +23,12 @@ function fieldsOf(value) {
30
23
  function authorizationRequestOf(fields) {
31
24
  return Object.fromEntries(AUTHORIZATION_PARAMETERS.map((name) => [name, fields[name]]));
32
25
  }
33
- /** A page of the gateway, never cached. */
34
- function htmlPage(reply, page) {
35
- return reply.code(page.status).type('text/html; charset=utf-8').header('cache-control', 'no-store').send(signInPage({ title: page.title, body: page.body }));
36
- }
37
- /** How an error page leads (design B): one ring in its tone around one icon, dashed for what ended, and one title. */
38
- const ERROR_LOOKS = {
39
- invalidClient: { tone: 'attention', icon: 'alert', heading: 'This client cannot connect' },
40
- noPick: { tone: 'attention', icon: 'alert', heading: 'Pick how to connect' },
41
- signInEnded: { tone: 'ended', icon: 'timerOff', heading: 'Sign-in ended', isDashed: true },
42
- otherBrowser: { tone: 'attention', icon: 'shieldX', heading: 'Not this browser' },
43
- noFleet: { tone: 'attention', icon: 'shieldX', heading: 'No fleet for you' },
44
- outsidePartiesOff: { tone: 'ended', icon: 'powerOff', heading: 'Outside parties are off' },
45
- signInFailed: { tone: 'attention', icon: 'alert', heading: 'Sign-in did not go through' },
46
- requestEnded: { tone: 'ended', icon: 'timerOff', heading: 'Request ended', isDashed: true },
47
- noSignIn: { tone: 'ended', icon: 'ban', heading: 'No sign-in here' },
48
- };
49
- /** A page that tells a person why their client got nothing, sending them nowhere. */
50
- function errorPage(reply, page) {
51
- const look = ERROR_LOOKS[page.look];
52
- const lead = ring({ tone: look.tone, center: { icon: look.icon }, label: look.heading, size: 144, ...(look.isDashed === undefined ? {} : { isDashed: look.isDashed }) });
53
- return htmlPage(reply, { status: page.status, title: page.title, body: `${lead}<h1>${escaped(look.heading)}</h1><p class="muted">${escaped(page.message)}</p>` });
54
- }
55
26
  /** The cookie the browser that started a sign-in holds its secret in, sent back to the callback only. */
56
27
  const SIGN_IN_COOKIE = { name: 'aeolus_sign_in', path: '/pagasae/callback' };
57
28
  /** The cookie the browser that asked for a client holds the same secret in, sent back to the waiting page only. */
58
29
  const WAITING_COOKIE = { name: 'aeolus_waiting', path: '/authorize/waiting' };
59
- /**
60
- * The page session cookie: every page and the API under it, for the browser's
61
- * session. Lax, so a link to a page from elsewhere arrives signed in, while a
62
- * form from another site does not (and each page form checks its origin too).
63
- */
64
- const PAGE_SESSION = { name: PAGE_SESSION_COOKIE, path: '/' };
65
- function pageSessionHeader(set) {
66
- return `${PAGE_SESSION.name}=${set.value}; Path=${PAGE_SESSION.path};${set.isEnding ? ' Max-Age=0;' : ''} HttpOnly;${set.isSecure ? ' Secure;' : ''} SameSite=Lax`;
67
- }
30
+ /** The web app's waiting page, under the waiting cookie's path, so the browser sends the page its secret. */
31
+ const WAITING_PAGE = `${WAITING_COOKIE.path}/approval`;
68
32
  function cookieHeader(cookie, set) {
69
33
  return `${cookie.name}=${set.value}; Path=${cookie.path}; Max-Age=${String(set.maxAgeSeconds)}; HttpOnly;${set.isSecure ? ' Secure;' : ''} SameSite=Lax`;
70
34
  }
@@ -77,10 +41,17 @@ function cookieValue(cookie, header) {
77
41
  .find((part) => part.startsWith(prefix))
78
42
  ?.slice(prefix.length);
79
43
  }
44
+ /** The web app's pages the doors send a browser to. */
45
+ const PICK_PAGE = '/authorize/pick';
46
+ const FAILED_PAGE = '/authorize/failed';
47
+ /** Sends the browser to the web app's page saying why it got nowhere. */
48
+ function failed(reply, reason) {
49
+ return reply.code(HTTP_FOUND).header('location', `${FAILED_PAGE}?${new URLSearchParams({ reason }).toString()}`).send();
50
+ }
80
51
  function sendBack(reply, answer) {
81
52
  const { refusal, issuer } = answer;
82
53
  if (refusal.kind === 'invalidClient') {
83
- return errorPage(reply, { status: HTTP_BAD_REQUEST, title: 'Connect an MCP client', look: 'invalidClient', message: refusal.message });
54
+ return failed(reply, 'invalidClient');
84
55
  }
85
56
  const url = new URL(refusal.redirectUri);
86
57
  url.searchParams.append('error', refusal.error);
@@ -91,70 +62,6 @@ function sendBack(reply, answer) {
91
62
  url.searchParams.append('iss', issuer);
92
63
  return reply.code(HTTP_FOUND).header('location', url.toString()).send();
93
64
  }
94
- /** The page at /authorize: the client, and the two picks (Q1 a), each starting a sign-in through pagasae. */
95
- function pickPage(request, authorization) {
96
- const hidden = Object.entries(request)
97
- .flatMap(([name, value]) => (value === undefined ? [] : [`<input type="hidden" name="${escaped(name)}" value="${escaped(value)}">`]))
98
- .join('');
99
- return `${handshake({ name: authorization.clientName, fleet: 'Aeolus' })}
100
- <h1>Connect an MCP client</h1>
101
- <p><strong>${escaped(authorization.clientName)}</strong> asks to call your fleet's ships through the gateway.</p>
102
- <form method="get" action="/authorize/sign-in">${hidden}<div class="tiles">
103
- <button class="tile" name="holder" value="account">${icon('signIn', 20)}<strong>Sign in as yourself</strong><span class="muted">The client acts as you.</span></button>
104
- <button class="tile" name="holder" value="party">${icon('hourglass', 20)}<strong>Ask for access for this client</strong><span class="muted">An approver of your fleet decides; the client then acts as its own party.</span></button>
105
- </div></form>
106
- <p class="muted">Client ${escaped(authorization.clientId)}, sent back to ${escaped(authorization.redirectUri)}.</p>`;
107
- }
108
- /**
109
- * What the waiting page runs: it follows its request on the live channel
110
- * and goes to its own address again once told to, there to be sent on; it
111
- * goes there too when the request expires. A dropped socket opens again
112
- * with backoff. It never reloads on a timer.
113
- */
114
- const WAITING_SCRIPT = `(function () {
115
- var wait = 500, expiry, HOUR = 3600000;
116
- function goOn() { location.replace(location.href); }
117
- function countDown() {
118
- var holder = document.querySelector('[data-expires-at]'), text = document.querySelector('[data-time-left]');
119
- if (!holder || !text) return;
120
- var hours = Math.max(0, Math.floor((Date.parse(holder.getAttribute('data-expires-at')) - Date.now()) / HOUR));
121
- text.textContent = Math.floor(hours / 24) + ' d ' + (hours % 24) + ' h';
122
- }
123
- setInterval(countDown, 60000);
124
- function open() {
125
- var socket = new WebSocket((location.protocol === 'https:' ? 'wss://' : 'ws://') + location.host + '${WAITING_COOKIE.path}/live' + location.search);
126
- socket.onopen = function () { wait = 500; };
127
- socket.onmessage = function (event) {
128
- var told = JSON.parse(event.data);
129
- if (told.go) return goOn();
130
- if (told.expiresAt) { clearTimeout(expiry); expiry = setTimeout(goOn, Math.max(0, Date.parse(told.expiresAt) - Date.now())); }
131
- };
132
- socket.onclose = function (event) {
133
- if (event.code === ${String(CLOSE_OTHER_ORIGIN)}) return;
134
- setTimeout(open, wait);
135
- wait = Math.min(wait * 2, 10000);
136
- };
137
- }
138
- open();
139
- })();`;
140
- const MS_PER_HOUR = 3_600_000;
141
- const HOURS_PER_DAY = 24;
142
- /** The time left of a request, in days and hours, as the waiting page's ring shows it. */
143
- function timeLeft(expiresAt, now) {
144
- const hours = Math.max(0, Math.floor((expiresAt.getTime() - now.getTime()) / MS_PER_HOUR));
145
- return `${String(Math.floor(hours / HOURS_PER_DAY))} d ${String(hours % HOURS_PER_DAY)} h`;
146
- }
147
- /** The waiting page: the client waits for approval, the ring counting its time left, and the page goes on by itself once it is decided. */
148
- function waitingPage(waiting) {
149
- const left = timeLeft(waiting.expiresAt, waiting.now);
150
- return `${handshake({ name: waiting.clientName, fleet: 'Aeolus' })}
151
- <div data-expires-at="${waiting.expiresAt.toISOString()}">${ring({ tone: 'waiting', center: { text: left, icon: 'hourglass' }, label: `${left} left`, size: 176 })}</div>
152
- ${statusBadge({ tone: 'waiting', icon: 'hourglass', label: 'Waiting for approval' })}
153
- <p><strong>${escaped(waiting.clientName)}</strong> waits for an approver of your fleet.</p>
154
- <p><span class="going-on">Goes on by itself</span></p>
155
- <p class="muted">Closed this page? Connect again later.</p>
156
- <script>${WAITING_SCRIPT}</script>`;
157
- }
158
65
  /** Client credentials in an HTTP Basic header (RFC 6749, 2.3.1): each part form-urlencoded. */
159
66
  function basicCredentials(header) {
160
67
  if (header?.startsWith('Basic ') !== true) {
@@ -176,7 +83,7 @@ function registerSignIn(server, deps) {
176
83
  const fields = fieldsOf(request.query);
177
84
  const holder = holderSchema.safeParse(fields.holder);
178
85
  if (!holder.success) {
179
- return errorPage(reply, { status: HTTP_BAD_REQUEST, title: 'Connect an MCP client', look: 'noPick', message: 'Pick on the page whether to sign in as yourself or to ask for access for the client.' });
86
+ return failed(reply, 'noPick');
180
87
  }
181
88
  const started = await signIn.start({ request: authorizationRequestOf(fields), holder: holder.data });
182
89
  if (!started.isOk) {
@@ -185,32 +92,12 @@ function registerSignIn(server, deps) {
185
92
  const cookie = cookieHeader(SIGN_IN_COOKIE, { value: started.value.browserSecret, maxAgeSeconds: SIGN_IN_LIFETIME_MS / MS_PER_SECOND, isSecure });
186
93
  return reply.code(HTTP_FOUND).header('location', started.value.redirectTo).header('set-cookie', cookie).send();
187
94
  });
188
- server.get('/sign-in', (request, reply) => {
189
- const { return_to: returnTo } = fieldsOf(request.query);
190
- const started = signIn.pages.start({ returnTo });
191
- const cookie = cookieHeader(SIGN_IN_COOKIE, { value: started.browserSecret, maxAgeSeconds: SIGN_IN_LIFETIME_MS / MS_PER_SECOND, isSecure });
192
- return reply.code(HTTP_FOUND).header('location', started.redirectTo).header('set-cookie', cookie).send();
193
- });
194
- server.post('/sign-out', async (request, reply) => {
195
- if (!isSameOrigin(request)) {
196
- return reply.code(HTTP_FORBIDDEN).type('text/plain; charset=utf-8').send('Signing out is sent only from the gateway\'s own pages.');
197
- }
198
- const session = request.headers.cookie === undefined ? undefined : signIn.pages.sessions.inCookie(request.headers.cookie);
199
- if (session !== undefined) {
200
- await signIn.pages.signOut(session);
201
- }
202
- return reply.code(HTTP_SEE_OTHER).header('location', FIRST_PAGE).header('set-cookie', pageSessionHeader({ value: '', isSecure, isEnding: true })).send();
203
- });
204
- /** Where the browser goes next: back to the client or the page, or, holding the secret in its waiting cookie, to the waiting page. */
95
+ /** Where the browser goes next: back to the client, or, holding the secret in its waiting cookie, to the waiting page. */
205
96
  const goOn = (reply, { answer, browserSecret }) => {
206
97
  const cleared = cookieHeader(SIGN_IN_COOKIE, { value: '', maxAgeSeconds: 0, isSecure });
207
98
  if (answer.kind === 'answered') {
208
99
  return reply.code(HTTP_FOUND).header('location', answer.redirectTo).header('set-cookie', cleared).send();
209
100
  }
210
- if (answer.kind === 'signedIn') {
211
- const session = pageSessionHeader({ value: answer.session, isSecure, isEnding: false });
212
- return reply.code(HTTP_FOUND).header('location', answer.redirectTo).header('set-cookie', [cleared, session]).send();
213
- }
214
101
  const waiting = cookieHeader(WAITING_COOKIE, { value: browserSecret ?? '', maxAgeSeconds: REQUEST_LIFETIME_MS / MS_PER_SECOND, isSecure });
215
102
  return reply.code(HTTP_FOUND).header('location', `${WAITING_COOKIE.path}?${new URLSearchParams({ waiting: answer.waiting }).toString()}`).header('set-cookie', [cleared, waiting]).send();
216
103
  };
@@ -223,31 +110,27 @@ function registerSignIn(server, deps) {
223
110
  }
224
111
  void reply.header('set-cookie', cookieHeader(SIGN_IN_COOKIE, { value: '', maxAgeSeconds: 0, isSecure }));
225
112
  const refusal = completed.error;
226
- const title = 'Sign in';
227
113
  switch (refusal.kind) {
228
114
  case 'invalidClient':
229
115
  case 'redirect':
230
116
  return sendBack(reply, { refusal, issuer });
117
+ case 'pagasaeRefused':
118
+ request.log.warn({ reason: refusal.message }, 'pagasae did not take the sign-in code');
119
+ return failed(reply, refusal.kind);
231
120
  case 'unknownSignIn':
232
- return errorPage(reply, { status: HTTP_BAD_REQUEST, title, look: 'signInEnded', message: 'This sign-in is unknown, or took over 10 minutes. Start again from your MCP client.' });
233
121
  case 'otherBrowser':
234
- return errorPage(reply, { status: HTTP_BAD_REQUEST, title, look: 'otherBrowser', message: 'This sign-in was started in another browser, so it is not yours to finish. Start again from your MCP client.' });
235
122
  case 'fleetNotServed':
236
- return errorPage(reply, { status: HTTP_FORBIDDEN, title, look: 'noFleet', message: 'This gateway does not serve the fleet you signed in to.' });
237
123
  case 'outsidePartiesOff':
238
- return errorPage(reply, { status: HTTP_FORBIDDEN, title, look: 'outsidePartiesOff', message: "Your fleet's outside parties are off, so no MCP client can ask for access. Sign in as yourself instead, or ask whoever runs your fleet." });
239
- case 'pagasaeRefused':
240
- return errorPage(reply, { status: HTTP_BAD_GATEWAY, title, look: 'signInFailed', message: `The sign-in did not go through: ${refusal.message}. Start again from your MCP client.` });
124
+ return failed(reply, refusal.kind);
241
125
  }
242
126
  });
243
127
  // The sealed waiting goes in the query, as it is longer than a path parameter may be.
244
128
  server.get(WAITING_COOKIE.path, async (request, reply) => {
245
129
  const { waiting = '' } = fieldsOf(request.query);
246
130
  const read = await signIn.readWaiting({ waiting, browserSecret: cookieValue(WAITING_COOKIE, request.headers.cookie) });
247
- const title = 'Waiting for approval';
248
131
  if (read.isOk) {
249
132
  if (read.value.kind === 'waiting') {
250
- return htmlPage(reply, { status: 200, title, body: waitingPage({ ...read.value, now: signIn.clock.now() }) });
133
+ return reply.code(HTTP_FOUND).header('location', `${WAITING_PAGE}?${new URLSearchParams({ waiting }).toString()}`).send();
251
134
  }
252
135
  const cleared = cookieHeader(WAITING_COOKIE, { value: '', maxAgeSeconds: 0, isSecure });
253
136
  return reply.code(HTTP_FOUND).header('location', read.value.redirectTo).header('set-cookie', cleared).send();
@@ -258,9 +141,9 @@ function registerSignIn(server, deps) {
258
141
  case 'redirect':
259
142
  return sendBack(reply, { refusal, issuer });
260
143
  case 'unknownWaiting':
261
- return errorPage(reply, { status: HTTP_NOT_FOUND, title, look: 'requestEnded', message: 'This request is unknown, or ended long ago. Start again from your MCP client.' });
144
+ return failed(reply, 'unknownWaiting');
262
145
  case 'otherBrowser':
263
- return errorPage(reply, { status: HTTP_BAD_REQUEST, title, look: 'otherBrowser', message: 'This request was made in another browser, so it is not yours to follow. Start again from your MCP client.' });
146
+ return failed(reply, 'otherBrowserWaiting');
264
147
  }
265
148
  });
266
149
  // The waiting page's live channel: told when its request expires, and to go on once the request no longer waits.
@@ -311,14 +194,15 @@ export function registerOAuthRoutes(server, deps) {
311
194
  }));
312
195
  server.get('/authorize', async (request, reply) => {
313
196
  if (deps.signIn === undefined) {
314
- return errorPage(reply, { status: HTTP_FORBIDDEN, title: 'Connect an MCP client', look: 'noSignIn', message: 'This gateway signs no one in, so no MCP client can connect to it: its operator sets pagasae first.' });
197
+ return failed(reply, 'noSignIn');
315
198
  }
316
199
  const parameters = authorizationRequestOf(fieldsOf(request.query));
317
200
  const read = await deps.readAuthorization(parameters);
318
201
  if (!read.isOk) {
319
202
  return sendBack(reply, { refusal: read.error, issuer: deps.issuer });
320
203
  }
321
- return htmlPage(reply, { status: 200, title: 'Connect an MCP client', body: pickPage(parameters, read.value) });
204
+ const asked = Object.entries(parameters).flatMap(([name, value]) => (value === undefined ? [] : [[name, value]]));
205
+ return reply.code(HTTP_FOUND).header('location', `${PICK_PAGE}?${new URLSearchParams(asked).toString()}`).send();
322
206
  });
323
207
  if (deps.signIn !== undefined) {
324
208
  registerSignIn(server, { issuer: deps.issuer, signIn: deps.signIn });
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-routes.js","sourceRoot":"","sources":["../../../src/adapters/http/oauth-routes.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAO1E,OAAO,EAAE,UAAU,EAAwB,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAoB,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAkB,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAwB,MAAM,aAAa,CAAC;AAEnG,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,mFAAmF;AACnF,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAE1E,8FAA8F;AAC9F,MAAM,wBAAwB,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAElK,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1E,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC1H,CAAC;AAEF,qDAAqD;AACrD,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAkBlD,SAAS,QAAQ,CAAC,KAAc;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA8B;IAC5D,OAAO,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,2CAA2C;AAC3C,SAAS,QAAQ,CAAC,KAAmB,EAAE,IAAqD;IAC1F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/J,CAAC;AAED,sHAAsH;AACtH,MAAM,WAAW,GAAG;IAClB,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,4BAA4B,EAAE;IAC1F,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE;IAC5E,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC1F,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE;IACjF,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE;IAC5E,iBAAiB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,EAAE;IAC1F,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,4BAA4B,EAAE;IACzF,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3F,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE;CAC8B,CAAC;AAErG,qFAAqF;AACrF,SAAS,SAAS,CAAC,KAAmB,EAAE,IAAwF;IAC9H,MAAM,IAAI,GAAoE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrG,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACzK,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACpK,CAAC;AAQD,yGAAyG;AACzG,MAAM,cAAc,GAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;AAE5F,mHAAmH;AACnH,MAAM,cAAc,GAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;AAE7F;;;;GAIG;AACH,MAAM,YAAY,GAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAE7E,SAAS,iBAAiB,CAAC,GAA4D;IACrF,OAAO,GAAG,YAAY,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,UAAU,YAAY,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;AACrK,CAAC;AAED,SAAS,YAAY,CAAC,MAAqB,EAAE,GAAgE;IAC3G,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,UAAU,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;AAC3J,CAAC;AAED,uEAAuE;AACvE,SAAS,WAAW,CAAC,MAAqB,EAAE,MAA0B;IACpE,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;IACjC,OAAO,MAAM;QACX,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAmB,EAAE,MAAyD;IAC9F,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACnC,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACzI,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED,6GAA6G;AAC7G,SAAS,QAAQ,CAAC,OAA2C,EAAE,aAAmC;IAChG,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACnC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SACpI,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;;aAE7D,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;iDACG,MAAM;qDACF,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;mDACpB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;;0BAE9C,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC;AACrH,CAAC;AAED;;;;;GAKG;AACH,MAAM,cAAc,GAAG;;;;;;;;;;;0GAWmF,cAAc,CAAC,IAAI;;;;;;;;2BAQlG,MAAM,CAAC,kBAAkB,CAAC;;;;;;MAM/C,CAAC;AAEP,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,0FAA0F;AAC1F,SAAS,QAAQ,CAAC,SAAe,EAAE,GAAS;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAC3F,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC;AAC7F,CAAC;AAED,2IAA2I;AAC3I,SAAS,WAAW,CAAC,OAA2D;IAC9E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;wBAC5C,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;EAChK,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;aACvE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;;;UAG9B,cAAc,WAAW,CAAC;AACpC,CAAC;AAED,+FAA+F;AAC/F,SAAS,gBAAgB,CAAC,MAA0B;IAClD,IAAI,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACjH,CAAC;AAED,sFAAsF;AACtF,SAAS,cAAc,CAAC,MAAuB,EAAE,IAAwE;IACvH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,sFAAsF,EAAE,CAAC,CAAC;QACzM,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,mBAAmB,GAAG,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClJ,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACjH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,mBAAmB,GAAG,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5I,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAChD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACtI,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1H,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3J,CAAC,CAAC,CAAC;IAEH,sIAAsI;IACtI,MAAM,IAAI,GAAG,CAAC,KAAmB,EAAE,EAAE,MAAM,EAAE,aAAa,EAA+D,EAAgB,EAAE;QACzI,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxF,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3G,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACxF,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtH,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,EAAE,aAAa,EAAE,mBAAmB,GAAG,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3I,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,cAAc,CAAC,IAAI,IAAI,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5L,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QAC/E,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzG,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;QAChC,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,eAAe,CAAC;YACrB,KAAK,UAAU;gBACb,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,KAAK,eAAe;gBAClB,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,qFAAqF,EAAE,CAAC,CAAC;YACpL,KAAK,cAAc;gBACjB,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,8GAA8G,EAAE,CAAC,CAAC;YAC9M,KAAK,gBAAgB;gBACnB,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,yDAAyD,EAAE,CAAC,CAAC;YAClJ,KAAK,mBAAmB;gBACtB,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,yIAAyI,EAAE,CAAC,CAAC;YAC5O,KAAK,gBAAgB;gBACnB,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,mCAAmC,OAAO,CAAC,OAAO,qCAAqC,EAAE,CAAC,CAAC;QACzL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sFAAsF;IACtF,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvH,MAAM,KAAK,GAAG,sBAAsB,CAAC;QACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAChH,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxF,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/G,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,eAAe,CAAC;YACrB,KAAK,UAAU;gBACb,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,KAAK,gBAAgB;gBACnB,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,+EAA+E,EAAE,CAAC,CAAC;YAC7K,KAAK,cAAc;gBACjB,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,2GAA2G,EAAE,CAAC,CAAC;QAC7M,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iHAAiH;IACjH,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;YACvF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACtI,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAClD,2EAA2E;YAC3E,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;YAClF,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;gBACvC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;gBAC9B,IAAI,EAAE,GAAG,EAAE;oBACT,KAAK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;4BAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;4BAC1C,WAAW,EAAE,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAuB,EAAE,IAAqB;IAChF,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClI,MAAM,CAAC,GAAG,CAAC,uCAAuC,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,CAAC,wCAAwC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC/G,MAAM,CAAC,GAAG,CAAC,yCAAyC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,sBAAsB,EAAE,GAAG,IAAI,CAAC,MAAM,YAAY;QAClD,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,QAAQ;QACtC,wBAAwB,EAAE,CAAC,MAAM,CAAC;QAClC,qBAAqB,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;QAC9D,gCAAgC,EAAE,CAAC,MAAM,CAAC;QAC1C,qCAAqC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,CAAC;QAC5F,qCAAqC,EAAE,IAAI;QAC3C,8CAA8C,EAAE,IAAI;KACrD,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,oGAAoG,EAAE,CAAC,CAAC;QACvN,CAAC;QACD,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClH,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,cAAc,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC9H,KAAK,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACjG,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACnH,CAAC;QACD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QAC/E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC9J,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"oauth-routes.js","sourceRoot":"","sources":["../../../src/adapters/http/oauth-routes.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAK1E,OAAO,EAAE,mBAAmB,EAAoB,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,WAAW,CAAC;AAE7D,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,mFAAmF;AACnF,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAE1E,8FAA8F;AAC9F,MAAM,wBAAwB,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAElK,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1E,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC1H,CAAC;AAEF,qDAAqD;AACrD,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAWlD,SAAS,QAAQ,CAAC,KAAc;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA8B;IAC5D,OAAO,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAQD,yGAAyG;AACzG,MAAM,cAAc,GAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;AAE5F,mHAAmH;AACnH,MAAM,cAAc,GAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;AAE7F,6GAA6G;AAC7G,MAAM,YAAY,GAAG,GAAG,cAAc,CAAC,IAAI,WAAW,CAAC;AAEvD,SAAS,YAAY,CAAC,MAAqB,EAAE,GAAgE;IAC3G,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,UAAU,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;AAC3J,CAAC;AAED,uEAAuE;AACvE,SAAS,WAAW,CAAC,MAAqB,EAAE,MAA0B;IACpE,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;IACjC,OAAO,MAAM;QACX,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAqBD,uDAAuD;AACvD,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC,yEAAyE;AACzE,SAAS,MAAM,CAAC,KAAmB,EAAE,MAAoB;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,WAAW,IAAI,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1H,CAAC;AAED,SAAS,QAAQ,CAAC,KAAmB,EAAE,MAAyD;IAC9F,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACnC,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED,+FAA+F;AAC/F,SAAS,gBAAgB,CAAC,MAA0B;IAClD,IAAI,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACjH,CAAC;AAED,sFAAsF;AACtF,SAAS,cAAc,CAAC,MAAuB,EAAE,IAAwE;IACvH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,mBAAmB,GAAG,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClJ,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACjH,CAAC,CAAC,CAAC;IAEH,0HAA0H;IAC1H,MAAM,IAAI,GAAG,CAAC,KAAmB,EAAE,EAAE,MAAM,EAAE,aAAa,EAA+D,EAAgB,EAAE;QACzI,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxF,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3G,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,EAAE,aAAa,EAAE,mBAAmB,GAAG,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3I,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,cAAc,CAAC,IAAI,IAAI,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5L,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QAC/E,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzG,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;QAChC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,eAAe,CAAC;YACrB,KAAK,UAAU;gBACb,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,KAAK,gBAAgB;gBACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,uCAAuC,CAAC,CAAC;gBACvF,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACrC,KAAK,eAAe,CAAC;YACrB,KAAK,cAAc,CAAC;YACpB,KAAK,gBAAgB,CAAC;YACtB,KAAK,mBAAmB;gBACtB,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sFAAsF;IACtF,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,YAAY,IAAI,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5H,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxF,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/G,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,eAAe,CAAC;YACrB,KAAK,UAAU;gBACb,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,KAAK,gBAAgB;gBACnB,OAAO,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACzC,KAAK,cAAc;gBACjB,OAAO,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iHAAiH;IACjH,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;YACvF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACtI,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAClD,2EAA2E;YAC3E,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;YAClF,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;gBACvC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;gBAC9B,IAAI,EAAE,GAAG,EAAE;oBACT,KAAK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;4BAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;4BAC1C,WAAW,EAAE,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAuB,EAAE,IAAqB;IAChF,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClI,MAAM,CAAC,GAAG,CAAC,uCAAuC,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,CAAC,wCAAwC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC/G,MAAM,CAAC,GAAG,CAAC,yCAAyC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,sBAAsB,EAAE,GAAG,IAAI,CAAC,MAAM,YAAY;QAClD,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,QAAQ;QACtC,wBAAwB,EAAE,CAAC,MAAM,CAAC;QAClC,qBAAqB,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;QAC9D,gCAAgC,EAAE,CAAC,MAAM,CAAC;QAC1C,qCAAqC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,CAAC;QAC5F,qCAAqC,EAAE,IAAI;QAC3C,8CAA8C,EAAE,IAAI;KACrD,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClH,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,SAAS,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnH,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,cAAc,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC9H,KAAK,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACjG,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACnH,CAAC;QACD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QAC/E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC9J,CAAC,CAAC,CAAC;AACL,CAAC"}