@interfere/types 9.0.2 → 9.0.3-canary.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 (174) hide show
  1. package/README.md +1 -1
  2. package/dist/data/frame.cjs +1 -0
  3. package/dist/data/frame.d.cts +27 -0
  4. package/dist/data/frame.d.mts +2 -1
  5. package/dist/data/frame.mjs +2 -1
  6. package/dist/data/session.cjs +1 -0
  7. package/dist/data/session.d.cts +8 -0
  8. package/dist/data/session.d.mts +2 -1
  9. package/dist/data/session.mjs +2 -1
  10. package/dist/data/source-maps.cjs +1 -0
  11. package/dist/data/source-maps.d.cts +151 -0
  12. package/dist/data/source-maps.d.mts +7 -2
  13. package/dist/data/source-maps.mjs +2 -1
  14. package/dist/events/error.cjs +1 -0
  15. package/dist/events/error.d.cts +196 -0
  16. package/dist/events/error.d.mts +2 -1
  17. package/dist/events/error.mjs +2 -1
  18. package/dist/events/pageleave.cjs +1 -0
  19. package/dist/events/pageleave.d.cts +13 -0
  20. package/dist/events/pageleave.d.mts +2 -1
  21. package/dist/events/pageleave.mjs +2 -1
  22. package/dist/events/pageview.cjs +1 -0
  23. package/dist/events/pageview.d.cts +14 -0
  24. package/dist/events/pageview.d.mts +2 -1
  25. package/dist/events/pageview.mjs +2 -1
  26. package/dist/integrations/index.cjs +1 -0
  27. package/dist/integrations/index.d.cts +77 -0
  28. package/dist/integrations/index.d.mts +31 -1
  29. package/dist/integrations/index.mjs +2 -1
  30. package/dist/integrations/platforms/cli.cjs +1 -0
  31. package/dist/integrations/platforms/cli.d.cts +12 -0
  32. package/dist/integrations/platforms/cli.d.mts +12 -0
  33. package/dist/integrations/platforms/cli.mjs +2 -0
  34. package/dist/integrations/platforms/github.cjs +1 -0
  35. package/dist/integrations/platforms/github.d.cts +77 -0
  36. package/dist/integrations/platforms/github.d.mts +63 -1
  37. package/dist/integrations/platforms/github.mjs +2 -1
  38. package/dist/integrations/platforms/slack.cjs +1 -0
  39. package/dist/integrations/platforms/slack.d.cts +33 -0
  40. package/dist/integrations/platforms/slack.d.mts +2 -1
  41. package/dist/integrations/platforms/slack.mjs +2 -1
  42. package/dist/integrations/platforms/vercel.cjs +1 -0
  43. package/dist/integrations/platforms/vercel.d.cts +47 -0
  44. package/dist/integrations/platforms/vercel.d.mts +2 -1
  45. package/dist/integrations/platforms/vercel.mjs +2 -1
  46. package/dist/releases/definition.cjs +1 -0
  47. package/dist/releases/definition.d.cts +71 -0
  48. package/dist/releases/definition.d.mts +16 -1
  49. package/dist/releases/definition.mjs +2 -1
  50. package/dist/releases/slug.cjs +1 -0
  51. package/dist/releases/slug.d.cts +24 -0
  52. package/dist/releases/slug.d.mts +3 -1
  53. package/dist/releases/slug.mjs +2 -1
  54. package/dist/sdk/env.cjs +1 -0
  55. package/dist/sdk/env.d.cts +6 -0
  56. package/dist/sdk/env.d.mts +2 -1
  57. package/dist/sdk/env.mjs +2 -1
  58. package/dist/sdk/envelope.cjs +1 -0
  59. package/dist/sdk/envelope.d.cts +1441 -0
  60. package/dist/sdk/envelope.d.mts +14 -61
  61. package/dist/sdk/envelope.mjs +2 -1
  62. package/dist/sdk/errors.cjs +2 -0
  63. package/dist/sdk/errors.d.cts +156 -0
  64. package/dist/sdk/errors.d.mts +4 -1
  65. package/dist/sdk/errors.mjs +3 -2
  66. package/dist/sdk/geo.cjs +1 -0
  67. package/dist/sdk/geo.d.cts +11 -0
  68. package/dist/sdk/geo.d.mts +2 -1
  69. package/dist/sdk/geo.mjs +2 -1
  70. package/dist/sdk/identify.cjs +1 -0
  71. package/dist/sdk/identify.d.cts +35 -0
  72. package/dist/sdk/identify.d.mts +2 -1
  73. package/dist/sdk/identify.mjs +2 -1
  74. package/dist/sdk/plugins/context/browser.cjs +1 -0
  75. package/dist/sdk/plugins/context/browser.d.cts +92 -0
  76. package/dist/sdk/plugins/context/browser.d.mts +2 -1
  77. package/dist/sdk/plugins/context/browser.mjs +2 -1
  78. package/dist/sdk/plugins/context/edge.cjs +1 -0
  79. package/dist/sdk/plugins/context/edge.d.cts +10 -0
  80. package/dist/sdk/plugins/context/edge.d.mts +2 -1
  81. package/dist/sdk/plugins/context/edge.mjs +2 -1
  82. package/dist/sdk/plugins/context/next.cjs +1 -0
  83. package/dist/sdk/plugins/context/next.d.cts +62 -0
  84. package/dist/sdk/plugins/context/next.d.mts +2 -1
  85. package/dist/sdk/plugins/context/next.mjs +2 -1
  86. package/dist/sdk/plugins/context/node.cjs +1 -0
  87. package/dist/sdk/plugins/context/node.d.cts +13 -0
  88. package/dist/sdk/plugins/context/node.d.mts +2 -1
  89. package/dist/sdk/plugins/context/node.mjs +2 -1
  90. package/dist/sdk/plugins/manifest.cjs +1 -0
  91. package/dist/sdk/plugins/manifest.d.cts +60 -0
  92. package/dist/sdk/plugins/manifest.d.mts +2 -1
  93. package/dist/sdk/plugins/manifest.mjs +2 -1
  94. package/dist/sdk/plugins/payload/errors.cjs +1 -0
  95. package/dist/sdk/plugins/payload/errors.d.cts +65 -0
  96. package/dist/sdk/plugins/payload/errors.d.mts +2 -1
  97. package/dist/sdk/plugins/payload/errors.mjs +2 -1
  98. package/dist/sdk/plugins/payload/page-events.cjs +1 -0
  99. package/dist/sdk/plugins/payload/page-events.d.cts +20 -0
  100. package/dist/sdk/plugins/payload/page-events.d.mts +2 -1
  101. package/dist/sdk/plugins/payload/page-events.mjs +2 -1
  102. package/dist/sdk/plugins/payload/rage-click.cjs +1 -0
  103. package/dist/sdk/plugins/payload/rage-click.d.cts +16 -0
  104. package/dist/sdk/plugins/payload/rage-click.d.mts +2 -1
  105. package/dist/sdk/plugins/payload/rage-click.mjs +2 -1
  106. package/dist/sdk/plugins/payload/replay.cjs +1 -0
  107. package/dist/sdk/plugins/payload/replay.d.cts +14 -0
  108. package/dist/sdk/plugins/payload/replay.d.mts +2 -1
  109. package/dist/sdk/plugins/payload/replay.mjs +2 -1
  110. package/dist/sdk/remote-config.cjs +1 -0
  111. package/dist/sdk/remote-config.d.cts +39 -0
  112. package/dist/sdk/remote-config.d.mts +2 -1
  113. package/dist/sdk/remote-config.mjs +2 -1
  114. package/dist/sdk/runtime.cjs +1 -0
  115. package/dist/sdk/runtime.d.cts +41 -0
  116. package/dist/sdk/runtime.d.mts +27 -7
  117. package/dist/sdk/runtime.mjs +2 -1
  118. package/package.json +120 -45
  119. package/dist/data/frame.d.mts.map +0 -1
  120. package/dist/data/frame.mjs.map +0 -1
  121. package/dist/data/session.d.mts.map +0 -1
  122. package/dist/data/session.mjs.map +0 -1
  123. package/dist/data/source-maps.d.mts.map +0 -1
  124. package/dist/data/source-maps.mjs.map +0 -1
  125. package/dist/events/error.d.mts.map +0 -1
  126. package/dist/events/error.mjs.map +0 -1
  127. package/dist/events/pageleave.d.mts.map +0 -1
  128. package/dist/events/pageleave.mjs.map +0 -1
  129. package/dist/events/pageview.d.mts.map +0 -1
  130. package/dist/events/pageview.mjs.map +0 -1
  131. package/dist/integrations/index.d.mts.map +0 -1
  132. package/dist/integrations/index.mjs.map +0 -1
  133. package/dist/integrations/platforms/github.d.mts.map +0 -1
  134. package/dist/integrations/platforms/github.mjs.map +0 -1
  135. package/dist/integrations/platforms/slack.d.mts.map +0 -1
  136. package/dist/integrations/platforms/slack.mjs.map +0 -1
  137. package/dist/integrations/platforms/vercel.d.mts.map +0 -1
  138. package/dist/integrations/platforms/vercel.mjs.map +0 -1
  139. package/dist/releases/definition.d.mts.map +0 -1
  140. package/dist/releases/definition.mjs.map +0 -1
  141. package/dist/releases/slug.d.mts.map +0 -1
  142. package/dist/releases/slug.mjs.map +0 -1
  143. package/dist/sdk/env.d.mts.map +0 -1
  144. package/dist/sdk/env.mjs.map +0 -1
  145. package/dist/sdk/envelope.d.mts.map +0 -1
  146. package/dist/sdk/envelope.mjs.map +0 -1
  147. package/dist/sdk/errors.d.mts.map +0 -1
  148. package/dist/sdk/errors.mjs.map +0 -1
  149. package/dist/sdk/geo.d.mts.map +0 -1
  150. package/dist/sdk/geo.mjs.map +0 -1
  151. package/dist/sdk/identify.d.mts.map +0 -1
  152. package/dist/sdk/identify.mjs.map +0 -1
  153. package/dist/sdk/plugins/context/browser.d.mts.map +0 -1
  154. package/dist/sdk/plugins/context/browser.mjs.map +0 -1
  155. package/dist/sdk/plugins/context/edge.d.mts.map +0 -1
  156. package/dist/sdk/plugins/context/edge.mjs.map +0 -1
  157. package/dist/sdk/plugins/context/next.d.mts.map +0 -1
  158. package/dist/sdk/plugins/context/next.mjs.map +0 -1
  159. package/dist/sdk/plugins/context/node.d.mts.map +0 -1
  160. package/dist/sdk/plugins/context/node.mjs.map +0 -1
  161. package/dist/sdk/plugins/manifest.d.mts.map +0 -1
  162. package/dist/sdk/plugins/manifest.mjs.map +0 -1
  163. package/dist/sdk/plugins/payload/errors.d.mts.map +0 -1
  164. package/dist/sdk/plugins/payload/errors.mjs.map +0 -1
  165. package/dist/sdk/plugins/payload/page-events.d.mts.map +0 -1
  166. package/dist/sdk/plugins/payload/page-events.mjs.map +0 -1
  167. package/dist/sdk/plugins/payload/rage-click.d.mts.map +0 -1
  168. package/dist/sdk/plugins/payload/rage-click.mjs.map +0 -1
  169. package/dist/sdk/plugins/payload/replay.d.mts.map +0 -1
  170. package/dist/sdk/plugins/payload/replay.mjs.map +0 -1
  171. package/dist/sdk/remote-config.d.mts.map +0 -1
  172. package/dist/sdk/remote-config.mjs.map +0 -1
  173. package/dist/sdk/runtime.d.mts.map +0 -1
  174. package/dist/sdk/runtime.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-events.mjs","names":[],"sources":["../../../../src/sdk/plugins/payload/page-events.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const uiEventPayloadSchema = z\n .object({\n event: z.record(z.string(), z.unknown()),\n })\n .meta({\n id: \"UiEventPayload\",\n title: \"UiEventPayload\",\n description: \"Payload for a UI event envelope.\",\n });\n\nexport type UiEventPayload = z.infer<typeof uiEventPayloadSchema>;\n\nexport const pageviewPayloadSchema = z\n .object({\n url: z.url(),\n title: z.string().optional(),\n })\n .meta({\n id: \"PageviewPayload\",\n title: \"PageviewPayload\",\n description: \"Payload for a pageview envelope.\",\n });\n\nexport type PageviewPayload = z.infer<typeof pageviewPayloadSchema>;\n\nexport const pageleavePayloadSchema = z\n .object({\n url: z.url(),\n durationMs: z.number().optional(),\n })\n .meta({\n id: \"PageleavePayload\",\n title: \"PageleavePayload\",\n description: \"Payload for a pageleave envelope.\",\n });\n\nexport type PageleavePayload = z.infer<typeof pageleavePayloadSchema>;\n"],"mappings":"wBAEA,MAAa,EAAuB,EACjC,OAAO,CACN,MAAO,EAAE,OAAO,EAAE,QAAQ,CAAE,EAAE,SAAS,CAAC,CACzC,CAAC,CACD,KAAK,CACJ,GAAI,iBACJ,MAAO,iBACP,YAAa,mCACd,CAAC,CAIS,EAAwB,EAClC,OAAO,CACN,IAAK,EAAE,KAAK,CACZ,MAAO,EAAE,QAAQ,CAAC,UAAU,CAC7B,CAAC,CACD,KAAK,CACJ,GAAI,kBACJ,MAAO,kBACP,YAAa,mCACd,CAAC,CAIS,EAAyB,EACnC,OAAO,CACN,IAAK,EAAE,KAAK,CACZ,WAAY,EAAE,QAAQ,CAAC,UAAU,CAClC,CAAC,CACD,KAAK,CACJ,GAAI,mBACJ,MAAO,mBACP,YAAa,oCACd,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rage-click.d.mts","names":[],"sources":["../../../../src/sdk/plugins/payload/rage-click.ts"],"mappings":";;;cAEa,sBAAA,EAAsB,CAAA,CAAA,SAAA;;;;;;;;;KAgBvB,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rage-click.mjs","names":[],"sources":["../../../../src/sdk/plugins/payload/rage-click.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const rageClickPayloadSchema = z\n .object({\n count: z.number(),\n timeWindow: z.number(),\n selector: z.string(),\n text: z.string(),\n x: z.number(),\n y: z.number(),\n timestamp: z.number(),\n })\n .meta({\n id: \"RageClickPayload\",\n title: \"RageClickPayload\",\n description: \"Payload for a rage-click envelope.\",\n });\n\nexport type RageClickPayload = z.infer<typeof rageClickPayloadSchema>;\n"],"mappings":"wBAEA,MAAa,EAAyB,EACnC,OAAO,CACN,MAAO,EAAE,QAAQ,CACjB,WAAY,EAAE,QAAQ,CACtB,SAAU,EAAE,QAAQ,CACpB,KAAM,EAAE,QAAQ,CAChB,EAAG,EAAE,QAAQ,CACb,EAAG,EAAE,QAAQ,CACb,UAAW,EAAE,QAAQ,CACtB,CAAC,CACD,KAAK,CACJ,GAAI,mBACJ,MAAO,mBACP,YAAa,qCACd,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay.d.mts","names":[],"sources":["../../../../src/sdk/plugins/payload/replay.ts"],"mappings":";;;cAEa,wBAAA,EAAwB,CAAA,CAAA,SAAA;;;;;;;KAgBzB,kBAAA,GAAqB,CAAA,CAAE,KAAA,QAAa,wBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay.mjs","names":[],"sources":["../../../../src/sdk/plugins/payload/replay.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const replayChunkPayloadSchema = z\n .object({\n ts: z.number(),\n count: z.number(),\n events: z.array(z.string()),\n /** First rrweb event timestamp (ms) in this chunk – actual recording start */\n first_event_ts: z.number().optional(),\n /** Last rrweb event timestamp (ms) in this chunk – actual recording end */\n last_event_ts: z.number().optional(),\n })\n .meta({\n id: \"ReplayChunkPayload\",\n title: \"ReplayChunkPayload\",\n description: \"Payload for a replay-chunk envelope.\",\n });\n\nexport type ReplayChunkPayload = z.infer<typeof replayChunkPayloadSchema>;\n"],"mappings":"wBAEA,MAAa,EAA2B,EACrC,OAAO,CACN,GAAI,EAAE,QAAQ,CACd,MAAO,EAAE,QAAQ,CACjB,OAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAE3B,eAAgB,EAAE,QAAQ,CAAC,UAAU,CAErC,cAAe,EAAE,QAAQ,CAAC,UAAU,CACrC,CAAC,CACD,KAAK,CACJ,GAAI,qBACJ,MAAO,qBACP,YAAa,uCACd,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-config.d.mts","names":[],"sources":["../../src/sdk/remote-config.ts"],"mappings":";;;;;KAKY,kBAAA,GAAqB,OAAA,CAAQ,MAAA,CAAO,SAAA;;AAAhD;;;;;;;;;cAYa,wBAAA,EAAwB,CAAA,CAAA,SAAA;;;;;;;;cAQxB,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;;;;;;;KAMnB,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,cAE7B,oBAAA,EAAsB,MAAA,CAAO,SAAA,EAAW,SAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-config.mjs","names":[],"sources":["../../src/sdk/remote-config.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport type { EventType } from \"./envelope.js\";\nimport { PLUGIN_MANIFEST, type PluginKey } from \"./plugins/manifest.js\";\n\nexport type RemotePluginConfig = Partial<Record<PluginKey, boolean>>;\n\n/**\n * Closed-shape schema for the SDK's per-plugin enabled state. Derived\n * from `PLUGIN_MANIFEST` so adding a plugin to the manifest extends\n * this schema automatically — no separate place to keep in sync.\n *\n * The closed shape (vs `Record<string, boolean>`) is what makes Speakeasy\n * generate a typed `{ errors?: boolean, replay?: boolean, ... }` instead\n * of a generic dictionary, and lets the SDK reject typo'd plugin names\n * before they silently drop on the wire.\n */\nexport const remotePluginConfigSchema = z\n .object(\n Object.fromEntries(\n PLUGIN_MANIFEST.map((p) => [p.name, z.boolean()])\n ) as Record<PluginKey, z.ZodBoolean>\n )\n .meta({ id: \"RemotePluginConfig\", title: \"RemotePluginConfig\" });\n\nexport const remoteConfigSchema = z\n .object({\n plugins: remotePluginConfigSchema,\n })\n .meta({ id: \"RemoteConfig\", title: \"RemoteConfig\" });\n\nexport type RemoteConfig = z.infer<typeof remoteConfigSchema>;\n\nexport const EVENT_TYPE_TO_PLUGIN: Record<EventType, PluginKey> =\n Object.fromEntries(\n PLUGIN_MANIFEST.flatMap((plugin) =>\n plugin.events.map((event) => [event.name, plugin.name])\n )\n ) as Record<EventType, PluginKey>;\n"],"mappings":"iFAiBA,MAAa,EAA2B,EACrC,OACC,OAAO,YACL,EAAgB,IAAK,GAAM,CAAC,EAAE,KAAM,EAAE,SAAS,CAAC,CAAC,CAClD,CACF,CACA,KAAK,CAAE,GAAI,qBAAsB,MAAO,qBAAsB,CAAC,CAErD,EAAqB,EAC/B,OAAO,CACN,QAAS,EACV,CAAC,CACD,KAAK,CAAE,GAAI,eAAgB,MAAO,eAAgB,CAAC,CAIzC,EACX,OAAO,YACL,EAAgB,QAAS,GACvB,EAAO,OAAO,IAAK,GAAU,CAAC,EAAM,KAAM,EAAO,KAAK,CAAC,CACxD,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.mts","names":[],"sources":["../../src/sdk/runtime.ts"],"mappings":";;;cAEa,SAAA,EAAS,CAAA,CAAA,WAAA,CAAA,CAAA,CAAA,OAAA;;;;;KASV,GAAA,GAAM,CAAA,CAAE,KAAA,QAAa,SAAA;AAAA,cAEpB,aAAA,EAAa,CAAA,CAAA,WAAA,CAAA,CAAA,CAAA,OAAA;;;;;KASd,OAAA,GAAU,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,iBAErB,YAAA,CAAa,OAAA;EAAA,SAClB,WAAA;AAAA,IACP,OAAA;AAAA,iBAiCY,YAAA,CAAa,KAAA,YAAiB,GAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.mjs","names":[],"sources":["../../src/sdk/runtime.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const envSchema = z\n .enum([\"development\", \"preview\", \"production\"])\n .nullable()\n .meta({\n id: \"Environment\",\n title: \"Environment\",\n description: \"Deployment environment the SDK is running in.\",\n });\n\nexport type Env = z.infer<typeof envSchema>;\n\nexport const runtimeSchema = z\n .enum([\"browser\", \"node\", \"edge\"])\n .nullable()\n .meta({\n id: \"Runtime\",\n title: \"Runtime\",\n description: \"JavaScript runtime the SDK is running in.\",\n });\n\nexport type Runtime = z.infer<typeof runtimeSchema>;\n\nexport function inferRuntime(options?: {\n readonly nextRuntime?: unknown;\n}): Runtime {\n // Browser\n if (\n typeof window !== \"undefined\" &&\n typeof document !== \"undefined\" &&\n typeof navigator !== \"undefined\"\n ) {\n return \"browser\";\n }\n\n // Edge (Vercel sets globalThis.EdgeRuntime = \"edge-runtime\")\n if (\n typeof (globalThis as { EdgeRuntime?: unknown }).EdgeRuntime === \"string\"\n ) {\n return \"edge\";\n }\n\n // Next.js Edge (explicit signal)\n if (options?.nextRuntime === \"edge\") {\n return \"edge\";\n }\n\n // Node\n if (\n typeof process !== \"undefined\" &&\n typeof process.versions?.node === \"string\"\n ) {\n return \"node\";\n }\n\n return null;\n}\n\nexport function normalizeEnv(value: unknown): Env {\n if (typeof value !== \"string\") {\n return null;\n }\n\n const env = value.toLowerCase();\n\n if (envSchema.safeParse(env).success) {\n return env as Env;\n }\n\n return null;\n}\n"],"mappings":"wBAEA,MAAa,EAAY,EACtB,KAAK,CAAC,cAAe,UAAW,aAAa,CAAC,CAC9C,UAAU,CACV,KAAK,CACJ,GAAI,cACJ,MAAO,cACP,YAAa,gDACd,CAAC,CAIS,EAAgB,EAC1B,KAAK,CAAC,UAAW,OAAQ,OAAO,CAAC,CACjC,UAAU,CACV,KAAK,CACJ,GAAI,UACJ,MAAO,UACP,YAAa,4CACd,CAAC,CAIJ,SAAgB,EAAa,EAEjB,CA8BV,OA3BE,OAAO,OAAW,KAClB,OAAO,SAAa,KACpB,OAAO,UAAc,IAEd,UAKP,OAAQ,WAAyC,aAAgB,UAM/D,GAAS,cAAgB,OACpB,OAKP,OAAO,QAAY,KACnB,OAAO,QAAQ,UAAU,MAAS,SAE3B,OAGF,KAGT,SAAgB,EAAa,EAAqB,CAChD,GAAI,OAAO,GAAU,SACnB,OAAO,KAGT,IAAM,EAAM,EAAM,aAAa,CAM/B,OAJI,EAAU,UAAU,EAAI,CAAC,QACpB,EAGF"}