@aphexcms/cms-core 2.0.5 → 2.0.6
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.
- package/dist/api/documents.d.ts +18 -0
- package/dist/api/documents.d.ts.map +1 -1
- package/dist/api/documents.js +22 -1
- package/dist/components/AdminApp.svelte +53 -1
- package/dist/components/AdminApp.svelte.d.ts.map +1 -1
- package/dist/components/admin/DocumentEditor.svelte +440 -51
- package/dist/components/admin/DocumentEditor.svelte.d.ts +7 -0
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
- package/dist/components/admin/MediaBrowser.svelte +42 -13
- package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ArrayField.svelte +102 -2
- package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
- package/dist/db/interfaces/document.d.ts +14 -0
- package/dist/db/interfaces/document.d.ts.map +1 -1
- package/dist/db/interfaces/index.d.ts +6 -0
- package/dist/db/interfaces/index.d.ts.map +1 -1
- package/dist/graphql/resolvers.js +1 -1
- package/dist/lib/api/documents.d.ts +18 -0
- package/dist/lib/api/documents.d.ts.map +1 -1
- package/dist/lib/api/documents.js +22 -1
- package/dist/lib/api/documents.js.map +1 -1
- package/dist/lib/db/interfaces/document.d.ts +14 -0
- package/dist/lib/db/interfaces/document.d.ts.map +1 -1
- package/dist/lib/db/interfaces/index.d.ts +6 -0
- package/dist/lib/db/interfaces/index.d.ts.map +1 -1
- package/dist/lib/graphql/resolvers.js +1 -1
- package/dist/lib/graphql/resolvers.js.map +1 -1
- package/dist/lib/local-api/collection-api.d.ts +5 -1
- package/dist/lib/local-api/collection-api.d.ts.map +1 -1
- package/dist/lib/local-api/collection-api.js +26 -6
- package/dist/lib/local-api/collection-api.js.map +1 -1
- package/dist/lib/local-api/index.d.ts +2 -0
- package/dist/lib/local-api/index.d.ts.map +1 -1
- package/dist/lib/local-api/index.js +7 -2
- package/dist/lib/local-api/index.js.map +1 -1
- package/dist/lib/routes/document-versions.d.ts +5 -0
- package/dist/lib/routes/document-versions.d.ts.map +1 -0
- package/dist/lib/routes/document-versions.js +100 -0
- package/dist/lib/routes/document-versions.js.map +1 -0
- package/dist/lib/routes-exports.d.ts +1 -0
- package/dist/lib/routes-exports.d.ts.map +1 -1
- package/dist/lib/routes-exports.js +1 -0
- package/dist/lib/routes-exports.js.map +1 -1
- package/dist/lib/services/index.d.ts +1 -0
- package/dist/lib/services/index.d.ts.map +1 -1
- package/dist/lib/services/index.js +1 -0
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/version-service.d.ts +39 -0
- package/dist/lib/services/version-service.d.ts.map +1 -0
- package/dist/lib/services/version-service.js +129 -0
- package/dist/lib/services/version-service.js.map +1 -0
- package/dist/lib/types/config.d.ts +7 -0
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/document.d.ts +2 -2
- package/dist/lib/types/document.d.ts.map +1 -1
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js +1 -0
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/schemas.d.ts +3 -0
- package/dist/lib/types/schemas.d.ts.map +1 -1
- package/dist/lib/types/version.d.ts +15 -0
- package/dist/lib/types/version.d.ts.map +1 -0
- package/dist/lib/types/version.js +2 -0
- package/dist/lib/types/version.js.map +1 -0
- package/dist/local-api/collection-api.d.ts +5 -1
- package/dist/local-api/collection-api.d.ts.map +1 -1
- package/dist/local-api/collection-api.js +26 -6
- package/dist/local-api/index.d.ts +2 -0
- package/dist/local-api/index.d.ts.map +1 -1
- package/dist/local-api/index.js +7 -2
- package/dist/routes/document-versions.d.ts +5 -0
- package/dist/routes/document-versions.d.ts.map +1 -0
- package/dist/routes/document-versions.js +99 -0
- package/dist/routes-exports.d.ts +1 -0
- package/dist/routes-exports.d.ts.map +1 -1
- package/dist/routes-exports.js +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/version-service.d.ts +39 -0
- package/dist/services/version-service.d.ts.map +1 -0
- package/dist/services/version-service.js +128 -0
- package/dist/types/config.d.ts +7 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/document.d.ts +2 -2
- package/dist/types/document.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/schemas.d.ts +3 -0
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/version.d.ts +15 -0
- package/dist/types/version.d.ts.map +1 -0
- package/dist/types/version.js +1 -0
- package/package.json +1 -1
package/dist/api/documents.d.ts
CHANGED
|
@@ -41,6 +41,21 @@ export declare class DocumentsApi {
|
|
|
41
41
|
* Get draft documents only (convenience method)
|
|
42
42
|
*/
|
|
43
43
|
static getDrafts(params?: Omit<DocumentListParams, 'status'>): Promise<ApiResponse<Document[]>>;
|
|
44
|
+
/**
|
|
45
|
+
* List document version history
|
|
46
|
+
*/
|
|
47
|
+
static listVersions(id: string, params?: {
|
|
48
|
+
limit?: number;
|
|
49
|
+
offset?: number;
|
|
50
|
+
}): Promise<ApiResponse<any[]>>;
|
|
51
|
+
/**
|
|
52
|
+
* Get a specific version
|
|
53
|
+
*/
|
|
54
|
+
static getVersion(id: string, versionNumber: number): Promise<ApiResponse<any>>;
|
|
55
|
+
/**
|
|
56
|
+
* Restore a version to draft
|
|
57
|
+
*/
|
|
58
|
+
static restoreVersion(id: string, versionNumber: number): Promise<ApiResponse<Document>>;
|
|
44
59
|
}
|
|
45
60
|
export declare const documents: {
|
|
46
61
|
list: typeof DocumentsApi.list;
|
|
@@ -53,5 +68,8 @@ export declare const documents: {
|
|
|
53
68
|
getByType: typeof DocumentsApi.getByType;
|
|
54
69
|
getPublished: typeof DocumentsApi.getPublished;
|
|
55
70
|
getDrafts: typeof DocumentsApi.getDrafts;
|
|
71
|
+
listVersions: typeof DocumentsApi.listVersions;
|
|
72
|
+
getVersion: typeof DocumentsApi.getVersion;
|
|
73
|
+
restoreVersion: typeof DocumentsApi.restoreVersion;
|
|
56
74
|
};
|
|
57
75
|
//# sourceMappingURL=documents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/lib/api/documents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB,qBAAa,YAAY;IACxB;;;OAGG;WACU,IAAI,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAYpF;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7E;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7F;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIlE;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAI/D;;OAEG;WACU,SAAS,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAM,GAC9C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,YAAY,CACxB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,SAAS,CACrB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/lib/api/documents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB,qBAAa,YAAY;IACxB;;;OAGG;WACU,IAAI,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAYpF;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7E;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7F;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIlE;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAI/D;;OAEG;WACU,SAAS,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAM,GAC9C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,YAAY,CACxB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,SAAS,CACrB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,YAAY,CACxB,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;IAI9B;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAIrF;;OAEG;WACU,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;CAG9F;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;CAcrB,CAAC"}
|
package/dist/api/documents.js
CHANGED
|
@@ -69,6 +69,24 @@ export class DocumentsApi {
|
|
|
69
69
|
static async getDrafts(params = {}) {
|
|
70
70
|
return this.list({ ...params, status: 'draft' });
|
|
71
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* List document version history
|
|
74
|
+
*/
|
|
75
|
+
static async listVersions(id, params) {
|
|
76
|
+
return apiClient.get(`/documents/${id}/versions`, params);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get a specific version
|
|
80
|
+
*/
|
|
81
|
+
static async getVersion(id, versionNumber) {
|
|
82
|
+
return apiClient.get(`/documents/${id}/versions/${versionNumber}`);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Restore a version to draft
|
|
86
|
+
*/
|
|
87
|
+
static async restoreVersion(id, versionNumber) {
|
|
88
|
+
return apiClient.post(`/documents/${id}/versions/${versionNumber}/restore`);
|
|
89
|
+
}
|
|
72
90
|
}
|
|
73
91
|
// Export convenience functions for direct use
|
|
74
92
|
export const documents = {
|
|
@@ -81,5 +99,8 @@ export const documents = {
|
|
|
81
99
|
deleteById: DocumentsApi.deleteById.bind(DocumentsApi),
|
|
82
100
|
getByType: DocumentsApi.getByType.bind(DocumentsApi),
|
|
83
101
|
getPublished: DocumentsApi.getPublished.bind(DocumentsApi),
|
|
84
|
-
getDrafts: DocumentsApi.getDrafts.bind(DocumentsApi)
|
|
102
|
+
getDrafts: DocumentsApi.getDrafts.bind(DocumentsApi),
|
|
103
|
+
listVersions: DocumentsApi.listVersions.bind(DocumentsApi),
|
|
104
|
+
getVersion: DocumentsApi.getVersion.bind(DocumentsApi),
|
|
105
|
+
restoreVersion: DocumentsApi.restoreVersion.bind(DocumentsApi)
|
|
85
106
|
};
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import type { SchemaType } from '../types/index';
|
|
15
15
|
import type { UserSessionPreferences } from '../types/organization';
|
|
16
16
|
import DocumentEditor from './admin/DocumentEditor.svelte';
|
|
17
|
+
import DocumentVersionPanel from './admin/DocumentVersionPanel.svelte';
|
|
17
18
|
import DocumentsSkeleton from './admin/DocumentsSkeleton.svelte';
|
|
18
19
|
import MediaBrowser from './admin/MediaBrowser.svelte';
|
|
19
20
|
import { documents, organizations } from '../api/index';
|
|
@@ -103,6 +104,11 @@
|
|
|
103
104
|
let editingDocumentId = $state<string | null>(null);
|
|
104
105
|
let isCreatingDocument = $state(false);
|
|
105
106
|
|
|
107
|
+
// Version history panel state
|
|
108
|
+
let showVersionPanel = $state(false);
|
|
109
|
+
let versionPanelDocId = $state<string | null>(null);
|
|
110
|
+
let versionPreviewData = $state<{ versionNumber: number; data: Record<string, any>; eventType: string } | null>(null);
|
|
111
|
+
|
|
106
112
|
// Documents list sorting state
|
|
107
113
|
let sortDropdownOpen = $state(false);
|
|
108
114
|
let currentSortName = $state<string>('updatedAtDesc'); // Default to "Last Edited"
|
|
@@ -170,7 +176,7 @@
|
|
|
170
176
|
|
|
171
177
|
let layoutConfig = $derived.by(() => {
|
|
172
178
|
const start = performance.now();
|
|
173
|
-
const totalEditors = (currentView === 'editor' ? 1 : 0) + editorStack.length;
|
|
179
|
+
const totalEditors = (currentView === 'editor' ? 1 : 0) + editorStack.length + (showVersionPanel ? 1 : 0);
|
|
174
180
|
|
|
175
181
|
if (totalEditors === 0) {
|
|
176
182
|
return {
|
|
@@ -575,6 +581,30 @@
|
|
|
575
581
|
}
|
|
576
582
|
|
|
577
583
|
// Handle opening reference in new editor panel
|
|
584
|
+
function handleOpenVersionHistory(docId: string) {
|
|
585
|
+
showVersionPanel = true;
|
|
586
|
+
versionPanelDocId = docId;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
function handleCloseVersionPanel() {
|
|
590
|
+
showVersionPanel = false;
|
|
591
|
+
versionPanelDocId = null;
|
|
592
|
+
versionPreviewData = null;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
// Close version panel when navigating away
|
|
596
|
+
let prevDocType = $state(selectedDocumentType);
|
|
597
|
+
let prevDocId = $state(editingDocumentId);
|
|
598
|
+
$effect(() => {
|
|
599
|
+
if (selectedDocumentType !== prevDocType || editingDocumentId !== prevDocId) {
|
|
600
|
+
prevDocType = selectedDocumentType;
|
|
601
|
+
prevDocId = editingDocumentId;
|
|
602
|
+
if (showVersionPanel) {
|
|
603
|
+
handleCloseVersionPanel();
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
});
|
|
607
|
+
|
|
578
608
|
async function handleOpenReference(documentId: string, documentType: string) {
|
|
579
609
|
// On mobile, navigate to the referenced document directly
|
|
580
610
|
// Add fromDocId to track where we came from for proper back navigation
|
|
@@ -1271,6 +1301,8 @@
|
|
|
1271
1301
|
isCreating={isCreatingDocument}
|
|
1272
1302
|
onBack={navigateBack}
|
|
1273
1303
|
onOpenReference={handleOpenReference}
|
|
1304
|
+
onOpenVersionHistory={handleOpenVersionHistory}
|
|
1305
|
+
externalVersionPreview={versionPreviewData}
|
|
1274
1306
|
onSaved={async (docId) => {
|
|
1275
1307
|
if (selectedDocumentType) {
|
|
1276
1308
|
await fetchDocuments(selectedDocumentType);
|
|
@@ -1351,6 +1383,7 @@
|
|
|
1351
1383
|
isCreating={stackedEditor.isCreating}
|
|
1352
1384
|
onBack={() => handleCloseStackedEditor(index)}
|
|
1353
1385
|
onOpenReference={handleOpenReference}
|
|
1386
|
+
onOpenVersionHistory={handleOpenVersionHistory}
|
|
1354
1387
|
onSaved={async (_) => {}}
|
|
1355
1388
|
onAutoSaved={() => {}}
|
|
1356
1389
|
onPublished={async (_) => {}}
|
|
@@ -1381,6 +1414,25 @@
|
|
|
1381
1414
|
{/if}
|
|
1382
1415
|
{/each}
|
|
1383
1416
|
{/if}
|
|
1417
|
+
|
|
1418
|
+
<!-- Version History Panel -->
|
|
1419
|
+
{#if showVersionPanel && versionPanelDocId}
|
|
1420
|
+
<div
|
|
1421
|
+
class="h-full w-[280px] min-w-[250px] overflow-y-auto border-l transition-all duration-200"
|
|
1422
|
+
>
|
|
1423
|
+
<DocumentVersionPanel
|
|
1424
|
+
documentId={versionPanelDocId}
|
|
1425
|
+
onClose={handleCloseVersionPanel}
|
|
1426
|
+
onPreviewVersion={(v) => { versionPreviewData = v; }}
|
|
1427
|
+
onRestored={async () => {
|
|
1428
|
+
versionPreviewData = null;
|
|
1429
|
+
if (selectedDocumentType) {
|
|
1430
|
+
await fetchDocuments(selectedDocumentType);
|
|
1431
|
+
}
|
|
1432
|
+
}}
|
|
1433
|
+
/>
|
|
1434
|
+
</div>
|
|
1435
|
+
{/if}
|
|
1384
1436
|
</div>
|
|
1385
1437
|
{/key}
|
|
1386
1438
|
</Tabs.Content>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminApp.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/AdminApp.svelte.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"AdminApp.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/AdminApp.svelte.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAwBnE,UAAU,KAAK;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC;IACxD,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAChD;AA8wCF,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|