@okrapdf/cli 0.4.7 → 0.5.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 (63) hide show
  1. package/dist/commands/auth.d.ts.map +1 -1
  2. package/dist/commands/auth.js +94 -26
  3. package/dist/commands/auth.js.map +1 -1
  4. package/dist/commands/chat.d.ts +6 -17
  5. package/dist/commands/chat.d.ts.map +1 -1
  6. package/dist/commands/chat.js +344 -332
  7. package/dist/commands/chat.js.map +1 -1
  8. package/dist/commands/elements.d.ts.map +1 -1
  9. package/dist/commands/elements.js +15 -12
  10. package/dist/commands/elements.js.map +1 -1
  11. package/dist/commands/jobs.d.ts.map +1 -1
  12. package/dist/commands/jobs.js +228 -13
  13. package/dist/commands/jobs.js.map +1 -1
  14. package/dist/commands/read.d.ts.map +1 -1
  15. package/dist/commands/read.js +11 -9
  16. package/dist/commands/read.js.map +1 -1
  17. package/dist/commands/search.d.ts.map +1 -1
  18. package/dist/commands/search.js +3 -24
  19. package/dist/commands/search.js.map +1 -1
  20. package/dist/lib/backends/do-adapters.test.d.ts +6 -0
  21. package/dist/lib/backends/do-adapters.test.d.ts.map +1 -0
  22. package/dist/lib/backends/do-adapters.test.js +311 -0
  23. package/dist/lib/backends/do-adapters.test.js.map +1 -0
  24. package/dist/lib/backends/do.d.ts +23 -0
  25. package/dist/lib/backends/do.d.ts.map +1 -0
  26. package/dist/lib/backends/do.js +340 -0
  27. package/dist/lib/backends/do.js.map +1 -0
  28. package/dist/lib/backends/index.d.ts +7 -0
  29. package/dist/lib/backends/index.d.ts.map +1 -0
  30. package/dist/lib/backends/index.js +8 -0
  31. package/dist/lib/backends/index.js.map +1 -0
  32. package/dist/lib/backends/okrapdf.d.ts +9 -0
  33. package/dist/lib/backends/okrapdf.d.ts.map +1 -0
  34. package/dist/lib/backends/okrapdf.js +50 -0
  35. package/dist/lib/backends/okrapdf.js.map +1 -0
  36. package/dist/lib/backends/types.d.ts +205 -0
  37. package/dist/lib/backends/types.d.ts.map +1 -0
  38. package/dist/lib/backends/types.js +7 -0
  39. package/dist/lib/backends/types.js.map +1 -0
  40. package/dist/lib/completion-stream.d.ts +22 -0
  41. package/dist/lib/completion-stream.d.ts.map +1 -0
  42. package/dist/lib/completion-stream.js +69 -0
  43. package/dist/lib/completion-stream.js.map +1 -0
  44. package/dist/lib/config.d.ts +4 -0
  45. package/dist/lib/config.d.ts.map +1 -1
  46. package/dist/lib/config.js +6 -0
  47. package/dist/lib/config.js.map +1 -1
  48. package/dist/lib/general-chat.d.ts +11 -0
  49. package/dist/lib/general-chat.d.ts.map +1 -0
  50. package/dist/lib/general-chat.js +69 -0
  51. package/dist/lib/general-chat.js.map +1 -0
  52. package/dist/lib/multi-doc-chat.d.ts +20 -0
  53. package/dist/lib/multi-doc-chat.d.ts.map +1 -0
  54. package/dist/lib/multi-doc-chat.js +162 -0
  55. package/dist/lib/multi-doc-chat.js.map +1 -0
  56. package/dist/lib/single-doc-chat.d.ts +14 -0
  57. package/dist/lib/single-doc-chat.d.ts.map +1 -0
  58. package/dist/lib/single-doc-chat.js +165 -0
  59. package/dist/lib/single-doc-chat.js.map +1 -0
  60. package/dist/lib/task-agent.d.ts.map +1 -1
  61. package/dist/lib/task-agent.js +29 -10
  62. package/dist/lib/task-agent.js.map +1 -1
  63. package/package.json +3 -1
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Pure function tests for DO → CLI adapter logic.
3
+ * No network, no mocking — just input shapes → output shapes.
4
+ */
5
+ import { describe, it, expect } from 'vitest';
6
+ import { adaptNodes, adaptStatusToVerificationTree, adaptPageContent, adaptMutations, adaptNodesToResults, fallbackLedgerFromStatus, } from './do.js';
7
+ // ─── fixtures ────────────────────────────────────────────────────────────────
8
+ const DOC_ID = 'ocr-test123';
9
+ const sampleNodes = [
10
+ { id: 'n1', type: 'table', label: 'Revenue Table', value: '|a|b|', page_number: 1, status: 'verified', bbox_x: 10, bbox_y: 20, bbox_w: 100, bbox_h: 50, metadata: '{"schema":["Year","Revenue"]}' },
11
+ { id: 'n2', type: 'table', label: 'Cost Table', value: '|c|d|', page_number: 2, status: 'verified', bbox_x: null, bbox_y: null, bbox_w: null, bbox_h: null, metadata: null },
12
+ { id: 'n3', type: 'figure', label: 'Chart 1', value: null, page_number: 1, status: 'pending', bbox_x: 0, bbox_y: 0, bbox_w: 200, bbox_h: 300, metadata: null },
13
+ { id: 'n4', type: 'text', label: null, value: 'paragraph text', page_number: 1, status: 'verified' },
14
+ { id: 'n5', type: 'footnote', label: 'Footnote 1', value: 'See appendix', page_number: 3, status: 'verified' },
15
+ { id: 'n6', type: 'heading', label: 'Chapter 1', value: null, page_number: 1, status: 'verified' },
16
+ ];
17
+ const sampleStatus = {
18
+ documentId: DOC_ID,
19
+ phase: 'complete',
20
+ fileName: 'report.pdf',
21
+ pagesTotal: 5,
22
+ pagesCompleted: 5,
23
+ totalNodes: 20,
24
+ verifiedNodes: 18,
25
+ activeVendor: 'docai',
26
+ };
27
+ const sampleLedger = {
28
+ ledger: [
29
+ { page_number: 1, status: 'completed', pass: 2 },
30
+ { page_number: 2, status: 'completed', pass: 1 },
31
+ { page_number: 3, status: 'running', pass: 1 },
32
+ { page_number: 4, status: 'pending', pass: 0 },
33
+ { page_number: 5, status: 'failed', pass: 1 },
34
+ ],
35
+ };
36
+ const samplePage = {
37
+ page: 1,
38
+ content: '# Chapter 1\n\nSome text here.',
39
+ blocks: [
40
+ { text: 'Chapter 1', bbox: { x: 10, y: 20, w: 200, h: 30 }, confidence: 0.98 },
41
+ { text: 'Some text here.', confidence: 0.95 },
42
+ ],
43
+ entities: [
44
+ { id: 'n1', type: 'table', label: 'Revenue Table' },
45
+ { id: 'n3', type: 'figure', label: 'Chart 1' },
46
+ ],
47
+ };
48
+ const sampleMutations = {
49
+ mutations: [
50
+ {
51
+ id: 'm1',
52
+ action: 'verify',
53
+ page_number: 1,
54
+ entity_id: 'n1',
55
+ entity_type: 'table',
56
+ previous_state: { status: 'pending' },
57
+ new_state: { status: 'verified' },
58
+ triggered_by: 'user:alice',
59
+ created_at: '2025-01-15T10:30:00Z',
60
+ },
61
+ {
62
+ id: 'm2',
63
+ action: 'ocr_complete',
64
+ page_number: 2,
65
+ entity_id: null,
66
+ entity_type: null,
67
+ previous_state: null,
68
+ new_state: null,
69
+ triggered_by: 'system',
70
+ created_at: '2025-01-15T10:29:00Z',
71
+ },
72
+ ],
73
+ };
74
+ // ─── adaptNodes tests ────────────────────────────────────────────────────────
75
+ describe('adaptNodes → EntitiesResponse', () => {
76
+ it('maps entity-type nodes, ignoring text/heading', () => {
77
+ const result = adaptNodes(DOC_ID, sampleNodes);
78
+ // Should only include table, figure, footnote — not text or heading
79
+ expect(result.entities).toHaveLength(4); // 2 tables + 1 figure + 1 footnote
80
+ expect(result.entities.map((e) => e.type)).toEqual(['table', 'table', 'figure', 'footnote']);
81
+ });
82
+ it('counts by type correctly', () => {
83
+ const result = adaptNodes(DOC_ID, sampleNodes);
84
+ expect(result.counts).toEqual({
85
+ tables: 2,
86
+ figures: 1,
87
+ footnotes: 1,
88
+ summaries: 0,
89
+ signatures: 0,
90
+ });
91
+ });
92
+ it('filters by type when requested', () => {
93
+ const result = adaptNodes(DOC_ID, sampleNodes, 'tables');
94
+ expect(result.entities).toHaveLength(2);
95
+ expect(result.entities.every((e) => e.type === 'table')).toBe(true);
96
+ // Counts should still reflect all nodes (not just filtered)
97
+ expect(result.counts.figures).toBe(1);
98
+ });
99
+ it('parses bbox when present', () => {
100
+ const result = adaptNodes(DOC_ID, sampleNodes);
101
+ const n1 = result.entities.find((e) => e.id === 'n1');
102
+ expect(n1.bbox).toEqual({ x: 10, y: 20, width: 100, height: 50 });
103
+ });
104
+ it('returns undefined bbox when coords are null', () => {
105
+ const result = adaptNodes(DOC_ID, sampleNodes);
106
+ const n2 = result.entities.find((e) => e.id === 'n2');
107
+ expect(n2.bbox).toBeUndefined();
108
+ });
109
+ it('parses schema from metadata JSON', () => {
110
+ const result = adaptNodes(DOC_ID, sampleNodes);
111
+ const n1 = result.entities.find((e) => e.id === 'n1');
112
+ expect(n1.schema).toEqual(['Year', 'Revenue']);
113
+ });
114
+ it('returns undefined schema when metadata is null', () => {
115
+ const result = adaptNodes(DOC_ID, sampleNodes);
116
+ const n2 = result.entities.find((e) => e.id === 'n2');
117
+ expect(n2.schema).toBeUndefined();
118
+ });
119
+ it('handles invalid metadata JSON gracefully', () => {
120
+ const nodes = [
121
+ { id: 'bad', type: 'table', label: 'Bad', value: null, page_number: 1, status: 'ok', metadata: '{invalid json' },
122
+ ];
123
+ const result = adaptNodes(DOC_ID, nodes);
124
+ expect(result.entities[0].schema).toBeUndefined();
125
+ });
126
+ it('handles empty nodes array', () => {
127
+ const result = adaptNodes(DOC_ID, []);
128
+ expect(result.entities).toHaveLength(0);
129
+ expect(result.counts).toEqual({ tables: 0, figures: 0, footnotes: 0, summaries: 0, signatures: 0 });
130
+ });
131
+ it('sets jobId from docId', () => {
132
+ const result = adaptNodes(DOC_ID, sampleNodes);
133
+ expect(result.jobId).toBe(DOC_ID);
134
+ });
135
+ it('handles null page_number as 0', () => {
136
+ const nodes = [
137
+ { id: 'x', type: 'table', label: null, value: null, page_number: null, status: 'ok' },
138
+ ];
139
+ const result = adaptNodes(DOC_ID, nodes);
140
+ expect(result.entities[0].page).toBe(0);
141
+ });
142
+ });
143
+ // ─── adaptStatusToVerificationTree tests ─────────────────────────────────────
144
+ describe('adaptStatusToVerificationTree', () => {
145
+ it('maps completed ledger entries to "complete" status', () => {
146
+ const tree = adaptStatusToVerificationTree(DOC_ID, sampleStatus, sampleLedger);
147
+ const p1 = tree.pages.find((p) => p.page === 1);
148
+ expect(p1.status).toBe('complete');
149
+ expect(p1.verified).toBe(1);
150
+ expect(p1.hasOcr).toBe(true); // pass=2 >= 1
151
+ });
152
+ it('maps running entries to "partial"', () => {
153
+ const tree = adaptStatusToVerificationTree(DOC_ID, sampleStatus, sampleLedger);
154
+ const p3 = tree.pages.find((p) => p.page === 3);
155
+ expect(p3.status).toBe('partial');
156
+ expect(p3.hasOcr).toBe(true); // pass=1 >= 1
157
+ });
158
+ it('maps pending entries (pass=0) to "pending"', () => {
159
+ const tree = adaptStatusToVerificationTree(DOC_ID, sampleStatus, sampleLedger);
160
+ const p4 = tree.pages.find((p) => p.page === 4);
161
+ expect(p4.status).toBe('pending');
162
+ expect(p4.hasOcr).toBe(false); // pass=0 < 1
163
+ });
164
+ it('maps failed entries to "flagged"', () => {
165
+ const tree = adaptStatusToVerificationTree(DOC_ID, sampleStatus, sampleLedger);
166
+ const p5 = tree.pages.find((p) => p.page === 5);
167
+ expect(p5.status).toBe('flagged');
168
+ expect(p5.flagged).toBe(1);
169
+ });
170
+ it('computes summary counts', () => {
171
+ const tree = adaptStatusToVerificationTree(DOC_ID, sampleStatus, sampleLedger);
172
+ expect(tree.summary).toEqual({
173
+ complete: 2,
174
+ partial: 1,
175
+ flagged: 1,
176
+ pending: 1,
177
+ empty: 0,
178
+ gap: 0,
179
+ resolved: 0,
180
+ stale: 0,
181
+ });
182
+ });
183
+ it('sets totalPages from status', () => {
184
+ const tree = adaptStatusToVerificationTree(DOC_ID, sampleStatus, sampleLedger);
185
+ expect(tree.totalPages).toBe(5);
186
+ });
187
+ it('handles empty ledger', () => {
188
+ const tree = adaptStatusToVerificationTree(DOC_ID, sampleStatus, { ledger: [] });
189
+ expect(tree.pages).toHaveLength(0);
190
+ expect(tree.summary.complete).toBe(0);
191
+ });
192
+ });
193
+ describe('fallbackLedgerFromStatus', () => {
194
+ it('creates completed ledger when phase is complete', () => {
195
+ const ledger = fallbackLedgerFromStatus({
196
+ ...sampleStatus,
197
+ phase: 'complete',
198
+ pagesTotal: 3,
199
+ pagesCompleted: 1,
200
+ });
201
+ expect(ledger.ledger).toHaveLength(3);
202
+ expect(ledger.ledger.every((entry) => entry.status === 'completed')).toBe(true);
203
+ });
204
+ it('creates running + pending pages when processing', () => {
205
+ const ledger = fallbackLedgerFromStatus({
206
+ ...sampleStatus,
207
+ phase: 'processing',
208
+ pagesTotal: 4,
209
+ pagesCompleted: 2,
210
+ });
211
+ expect(ledger.ledger[0].status).toBe('completed');
212
+ expect(ledger.ledger[1].status).toBe('completed');
213
+ expect(ledger.ledger[2].status).toBe('running');
214
+ expect(ledger.ledger[3].status).toBe('pending');
215
+ });
216
+ });
217
+ // ─── adaptPageContent tests ──────────────────────────────────────────────────
218
+ describe('adaptPageContent', () => {
219
+ it('maps content and page number', () => {
220
+ const result = adaptPageContent(DOC_ID, 1, samplePage);
221
+ expect(result.content).toBe('# Chapter 1\n\nSome text here.');
222
+ expect(result.pageNum).toBe(1);
223
+ expect(result.jobId).toBe(DOC_ID);
224
+ });
225
+ it('converts bbox w/h → width/height', () => {
226
+ const result = adaptPageContent(DOC_ID, 1, samplePage);
227
+ expect(result.blocks[0].bbox).toEqual({ x: 10, y: 20, width: 200, height: 30 });
228
+ });
229
+ it('handles blocks without bbox', () => {
230
+ const result = adaptPageContent(DOC_ID, 1, samplePage);
231
+ expect(result.blocks[1].bbox).toBeUndefined();
232
+ expect(result.blocks[1].confidence).toBe(0.95);
233
+ });
234
+ it('sets version=1 (DO has no versioning)', () => {
235
+ const result = adaptPageContent(DOC_ID, 1, samplePage);
236
+ expect(result.version).toBe(1);
237
+ });
238
+ it('handles empty blocks array', () => {
239
+ const page = { page: 5, content: '', blocks: [], entities: [] };
240
+ const result = adaptPageContent(DOC_ID, 5, page);
241
+ expect(result.blocks).toHaveLength(0);
242
+ expect(result.content).toBe('');
243
+ });
244
+ });
245
+ // ─── adaptMutations tests ────────────────────────────────────────────────────
246
+ describe('adaptMutations → history', () => {
247
+ it('maps mutation fields to HistoryEntry shape', () => {
248
+ const result = adaptMutations(sampleMutations);
249
+ expect(result.history).toHaveLength(2);
250
+ const h0 = result.history[0];
251
+ expect(h0.id).toBe('m1');
252
+ expect(h0.action).toBe('verify');
253
+ expect(h0.pageNumber).toBe(1);
254
+ expect(h0.entityId).toBe('n1');
255
+ expect(h0.entityType).toBe('table');
256
+ expect(h0.triggeredBy).toBe('user:alice');
257
+ expect(h0.createdAt).toBe('2025-01-15T10:30:00Z');
258
+ });
259
+ it('handles null page/entity fields', () => {
260
+ const h1 = adaptMutations(sampleMutations).history[1];
261
+ expect(h1.pageNumber).toBe(2);
262
+ expect(h1.entityId).toBeNull();
263
+ expect(h1.entityType).toBeNull();
264
+ });
265
+ it('handles empty mutations', () => {
266
+ const result = adaptMutations({ mutations: [] });
267
+ expect(result.history).toHaveLength(0);
268
+ });
269
+ });
270
+ // ─── adaptNodesToResults tests ───────────────────────────────────────────────
271
+ describe('adaptNodesToResults → JobResults', () => {
272
+ const pages = [
273
+ {
274
+ page: 1,
275
+ content: 'Page 1 text',
276
+ blocks: [{ text: 'Page 1 text' }],
277
+ entities: [{ id: 'n1', type: 'table', label: 'T1' }],
278
+ },
279
+ {
280
+ page: 2,
281
+ content: 'Page 2 text',
282
+ blocks: [{ text: 'Page 2 text' }],
283
+ entities: [],
284
+ },
285
+ ];
286
+ it('builds page results from page content', () => {
287
+ const result = adaptNodesToResults(DOC_ID, sampleStatus, pages);
288
+ expect(result.pages).toHaveLength(2);
289
+ expect(result.pages[0].page_number).toBe(1);
290
+ expect(result.pages[0].text).toBe('Page 1 text');
291
+ expect(result.pages[1].page_number).toBe(2);
292
+ });
293
+ it('extracts table entities from pages', () => {
294
+ const result = adaptNodesToResults(DOC_ID, sampleStatus, pages);
295
+ expect(result.tables).toHaveLength(1);
296
+ expect(result.tables[0].id).toBe('n1');
297
+ expect(result.tables[0].page_number).toBe(1);
298
+ });
299
+ it('sets job metadata from status', () => {
300
+ const result = adaptNodesToResults(DOC_ID, sampleStatus, pages);
301
+ expect(result.job_id).toBe(DOC_ID);
302
+ expect(result.filename).toBe('report.pdf');
303
+ expect(result.total_pages).toBe(5);
304
+ });
305
+ it('handles empty pages', () => {
306
+ const result = adaptNodesToResults(DOC_ID, sampleStatus, []);
307
+ expect(result.pages).toHaveLength(0);
308
+ expect(result.tables).toHaveLength(0);
309
+ });
310
+ });
311
+ //# sourceMappingURL=do-adapters.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"do-adapters.test.js","sourceRoot":"","sources":["../../../src/lib/backends/do-adapters.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * DO backend — talks to agent-session Durable Object worker.
3
+ *
4
+ * Extracted from commands/search.ts; provides the Backend interface
5
+ * so commands never call fetch directly.
6
+ */
7
+ import type { Backend, BackendEntitiesResult, BackendHistoryEntry, BackendJobResults, BackendPageContent, BackendVerificationTree, DOLedgerResponse, DOMutationsResponse, DONode, DOPageResponse, DOStatusResponse } from './types.js';
8
+ export declare function getWorkerUrl(): string;
9
+ export declare function authHeaders(): Record<string, string>;
10
+ export declare function workerFetch<T>(path: string): Promise<T>;
11
+ export declare function isWorkerStatusError(error: unknown, status: number): boolean;
12
+ /** Fetch scoped to a specific document. */
13
+ export declare function workerDocFetch<T>(docId: string, path: string): Promise<T>;
14
+ export declare function fallbackLedgerFromStatus(status: DOStatusResponse): DOLedgerResponse;
15
+ export declare function adaptNodes(docId: string, nodes: DONode[], typeFilter?: string): BackendEntitiesResult;
16
+ export declare function adaptStatusToVerificationTree(docId: string, status: DOStatusResponse, ledger: DOLedgerResponse): BackendVerificationTree;
17
+ export declare function adaptPageContent(docId: string, pageNum: number, doPage: DOPageResponse): BackendPageContent;
18
+ export declare function adaptMutations(resp: DOMutationsResponse): {
19
+ history: BackendHistoryEntry[];
20
+ };
21
+ export declare function adaptNodesToResults(docId: string, status: DOStatusResponse, pages: DOPageResponse[]): BackendJobResults;
22
+ export declare function createDOBackend(): Backend;
23
+ //# sourceMappingURL=do.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"do.d.ts","sourceRoot":"","sources":["../../../src/lib/backends/do.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,qBAAqB,EAErB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAElB,uBAAuB,EAEvB,gBAAgB,EAChB,mBAAmB,EACnB,MAAM,EAEN,cAAc,EACd,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAYpB,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAapD;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAI7D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAG3E;AAaD,2CAA2C;AAC3C,wBAAsB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAuB/E;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAsBnF;AAmDD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAmCrG;AAID,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,GACvB,uBAAuB,CA+CzB;AAID,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB,CAe3G;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,mBAAmB,GAAG;IAAE,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAc5F;AAID,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,cAAc,EAAE,GACtB,iBAAiB,CA+BnB;AAID,wBAAgB,eAAe,IAAI,OAAO,CAwDzC"}