@ttt-productions/ttt-core 0.79.47 → 0.79.48
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/doc-schemas/notifications.d.ts +24 -8
- package/dist/doc-schemas/notifications.d.ts.map +1 -1
- package/dist/doc-schemas/notifications.js +10 -4
- package/dist/doc-schemas/notifications.js.map +1 -1
- package/dist/doc-schemas/registry.d.ts +14 -16
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -26,6 +26,23 @@ export declare const PendingNotificationSchema: z.ZodObject<{
|
|
|
26
26
|
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
27
27
|
createdAt: z.ZodNumber;
|
|
28
28
|
}, z.core.$strip>;
|
|
29
|
+
export declare const StoredNotificationCardSchema: z.ZodObject<{
|
|
30
|
+
type: z.ZodString;
|
|
31
|
+
message: z.ZodString;
|
|
32
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
33
|
+
createdAt: z.ZodNumber;
|
|
34
|
+
updatedAt: z.ZodNumber;
|
|
35
|
+
title: z.ZodString;
|
|
36
|
+
count: z.ZodNumber;
|
|
37
|
+
category: z.ZodString;
|
|
38
|
+
dedupKey: z.ZodString;
|
|
39
|
+
targetUserId: z.ZodNullable<z.ZodString>;
|
|
40
|
+
latestActorIds: z.ZodArray<z.ZodString>;
|
|
41
|
+
targetPath: z.ZodOptional<z.ZodString>;
|
|
42
|
+
seenAt: z.ZodNumber;
|
|
43
|
+
activityGeneration: z.ZodOptional<z.ZodString>;
|
|
44
|
+
seenAtGeneration: z.ZodOptional<z.ZodString>;
|
|
45
|
+
}, z.core.$strip>;
|
|
29
46
|
export declare const NotificationHistoryDocSchema: z.ZodObject<{
|
|
30
47
|
archiveOccurrenceId: z.ZodString;
|
|
31
48
|
requestId: z.ZodString;
|
|
@@ -35,22 +52,21 @@ export declare const NotificationHistoryDocSchema: z.ZodObject<{
|
|
|
35
52
|
category: z.ZodString;
|
|
36
53
|
audienceScope: z.ZodString;
|
|
37
54
|
archivedSnapshot: z.ZodObject<{
|
|
38
|
-
id: z.ZodString;
|
|
39
55
|
type: z.ZodString;
|
|
40
|
-
dedupKey: z.ZodString;
|
|
41
|
-
category: z.ZodString;
|
|
42
|
-
targetUserId: z.ZodNullable<z.ZodString>;
|
|
43
|
-
title: z.ZodString;
|
|
44
56
|
message: z.ZodString;
|
|
57
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
58
|
+
createdAt: z.ZodNumber;
|
|
59
|
+
updatedAt: z.ZodNumber;
|
|
60
|
+
title: z.ZodString;
|
|
45
61
|
count: z.ZodNumber;
|
|
62
|
+
category: z.ZodString;
|
|
63
|
+
dedupKey: z.ZodString;
|
|
64
|
+
targetUserId: z.ZodNullable<z.ZodString>;
|
|
46
65
|
latestActorIds: z.ZodArray<z.ZodString>;
|
|
47
66
|
targetPath: z.ZodOptional<z.ZodString>;
|
|
48
|
-
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
49
67
|
seenAt: z.ZodNumber;
|
|
50
68
|
activityGeneration: z.ZodOptional<z.ZodString>;
|
|
51
69
|
seenAtGeneration: z.ZodOptional<z.ZodString>;
|
|
52
|
-
createdAt: z.ZodNumber;
|
|
53
|
-
updatedAt: z.ZodNumber;
|
|
54
70
|
}, z.core.$strip>;
|
|
55
71
|
archivedAt: z.ZodNumber;
|
|
56
72
|
expireAt: z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/notifications.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;iBAA4B,CAAC;AAC/D,eAAO,MAAM,yBAAyB;;;;;;;;iBAAgC,CAAC;AAMvE,eAAO,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/notifications.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;iBAA4B,CAAC;AAC/D,eAAO,MAAM,yBAAyB;;;;;;;;iBAAgC,CAAC;AAMvE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;iBAA2C,CAAC;AAOrF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYvC,CAAC"}
|
|
@@ -18,10 +18,16 @@ import { FirestoreTimestampSchema } from './firestore-primitives.js';
|
|
|
18
18
|
// the base schema rather than re-declaring it here.
|
|
19
19
|
export const NotificationDocSchema = NotificationDocSchemaBase;
|
|
20
20
|
export const PendingNotificationSchema = PendingNotificationSchemaBase;
|
|
21
|
+
// The STORED active-card body. `id` is the Firestore document id, injected at read
|
|
22
|
+
// (COLLECTION_DOC_ID_FIELDS) and never persisted — both materializers write the card
|
|
23
|
+
// without it. Derived from the one card schema so there is a single definition of the
|
|
24
|
+
// card and one of "the card as stored".
|
|
25
|
+
export const StoredNotificationCardSchema = NotificationDocSchema.omit({ id: true });
|
|
21
26
|
// Archived history doc = the wrapper persisted by notification-core's server archive
|
|
22
|
-
// helper (server/observed-generation.ts): the
|
|
23
|
-
// `archivedSnapshot`, plus archive metadata and a native-TTL `expireAt` Timestamp
|
|
24
|
-
// (native TTL only honors a real Firestore Timestamp — never epoch-ms).
|
|
27
|
+
// helper (server/observed-generation.ts): the active card's stored body copied verbatim
|
|
28
|
+
// under `archivedSnapshot`, plus archive metadata and a native-TTL `expireAt` Timestamp
|
|
29
|
+
// (native TTL only honors a real Firestore Timestamp — never epoch-ms). The snapshot is
|
|
30
|
+
// a nested copy, so nothing injects a document id into it — it is the stored shape.
|
|
25
31
|
export const NotificationHistoryDocSchema = z.object({
|
|
26
32
|
archiveOccurrenceId: z.string(),
|
|
27
33
|
requestId: z.string(),
|
|
@@ -30,7 +36,7 @@ export const NotificationHistoryDocSchema = z.object({
|
|
|
30
36
|
observedActivityGeneration: z.string(),
|
|
31
37
|
category: z.string(),
|
|
32
38
|
audienceScope: z.string(),
|
|
33
|
-
archivedSnapshot:
|
|
39
|
+
archivedSnapshot: StoredNotificationCardSchema,
|
|
34
40
|
archivedAt: z.number(),
|
|
35
41
|
expireAt: FirestoreTimestampSchema,
|
|
36
42
|
handledBy: z.string().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/doc-schemas/notifications.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,kFAAkF;AAClF,8EAA8E;AAC9E,mFAAmF;AACnF,EAAE;AACF,0EAA0E;AAC1E,gFAAgF;AAChF,+EAA+E;AAC/E,kFAAkF;AAClF,8EAA8E;AAC9E,qCAAqC;AAErC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,IAAI,yBAAyB,EAClD,yBAAyB,IAAI,6BAA6B,GAC3D,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AACjF,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE,qFAAqF;AACrF,
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/doc-schemas/notifications.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,kFAAkF;AAClF,8EAA8E;AAC9E,mFAAmF;AACnF,EAAE;AACF,0EAA0E;AAC1E,gFAAgF;AAChF,+EAA+E;AAC/E,kFAAkF;AAClF,8EAA8E;AAC9E,qCAAqC;AAErC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,IAAI,yBAAyB,EAClD,yBAAyB,IAAI,6BAA6B,GAC3D,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AACjF,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE,mFAAmF;AACnF,qFAAqF;AACrF,sFAAsF;AACtF,wCAAwC;AACxC,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAErF,qFAAqF;AACrF,wFAAwF;AACxF,wFAAwF;AACxF,wFAAwF;AACxF,oFAAoF;AACpF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,4BAA4B;IAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,wBAAwB;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC","sourcesContent":["// Registry schemas for the notification-core-owned Firestore docs as stored in TTT:\n// activeUserNotifications/{id} + activeAdminNotifications/{id} (NotificationDoc),\n// adminNotificationHistory/{id} + userProfiles/{uid}/notificationHistory/{id}\n// (the archived-history wrapper), pendingNotifications/{id} (PendingNotification).\n//\n// @ttt-productions/notification-core OWNS the generic NotificationDoc and\n// PendingNotification shapes AND their schemas; ttt-core composes those schemas\n// here (single owner — no hand-mirroring, so drift is impossible). The history\n// doc has no consumer-facing package type (the server archive helper builds it as\n// an untyped wrapper), so NotificationHistoryDocSchema below is its canonical\n// shape and stays owned by ttt-core.\n\nimport { z } from 'zod';\nimport {\n NotificationDocSchema as NotificationDocSchemaBase,\n PendingNotificationSchema as PendingNotificationSchemaBase,\n} from '@ttt-productions/notification-core';\nimport { FirestoreTimestampSchema } from './firestore-primitives.js';\n\n// TTT stores the generic shapes verbatim (no TTT-specific field refinements), so\n// these re-export notification-core's canonical schemas under ttt-core's stable\n// registry names. If TTT ever refines a field, compose via `.extend`/`.merge` on\n// the base schema rather than re-declaring it here.\nexport const NotificationDocSchema = NotificationDocSchemaBase;\nexport const PendingNotificationSchema = PendingNotificationSchemaBase;\n\n// The STORED active-card body. `id` is the Firestore document id, injected at read\n// (COLLECTION_DOC_ID_FIELDS) and never persisted — both materializers write the card\n// without it. Derived from the one card schema so there is a single definition of the\n// card and one of \"the card as stored\".\nexport const StoredNotificationCardSchema = NotificationDocSchema.omit({ id: true });\n\n// Archived history doc = the wrapper persisted by notification-core's server archive\n// helper (server/observed-generation.ts): the active card's stored body copied verbatim\n// under `archivedSnapshot`, plus archive metadata and a native-TTL `expireAt` Timestamp\n// (native TTL only honors a real Firestore Timestamp — never epoch-ms). The snapshot is\n// a nested copy, so nothing injects a document id into it — it is the stored shape.\nexport const NotificationHistoryDocSchema = z.object({\n archiveOccurrenceId: z.string(),\n requestId: z.string(),\n payloadHash: z.string(),\n activeId: z.string(),\n observedActivityGeneration: z.string(),\n category: z.string(),\n audienceScope: z.string(),\n archivedSnapshot: StoredNotificationCardSchema,\n archivedAt: z.number(),\n expireAt: FirestoreTimestampSchema,\n handledBy: z.string().optional(),\n});\n"]}
|
|
@@ -295,22 +295,21 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
295
295
|
category: z.ZodString;
|
|
296
296
|
audienceScope: z.ZodString;
|
|
297
297
|
archivedSnapshot: z.ZodObject<{
|
|
298
|
-
id: z.ZodString;
|
|
299
298
|
type: z.ZodString;
|
|
300
|
-
dedupKey: z.ZodString;
|
|
301
|
-
category: z.ZodString;
|
|
302
|
-
targetUserId: z.ZodNullable<z.ZodString>;
|
|
303
|
-
title: z.ZodString;
|
|
304
299
|
message: z.ZodString;
|
|
300
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
301
|
+
createdAt: z.ZodNumber;
|
|
302
|
+
updatedAt: z.ZodNumber;
|
|
303
|
+
title: z.ZodString;
|
|
305
304
|
count: z.ZodNumber;
|
|
305
|
+
category: z.ZodString;
|
|
306
|
+
dedupKey: z.ZodString;
|
|
307
|
+
targetUserId: z.ZodNullable<z.ZodString>;
|
|
306
308
|
latestActorIds: z.ZodArray<z.ZodString>;
|
|
307
309
|
targetPath: z.ZodOptional<z.ZodString>;
|
|
308
|
-
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
309
310
|
seenAt: z.ZodNumber;
|
|
310
311
|
activityGeneration: z.ZodOptional<z.ZodString>;
|
|
311
312
|
seenAtGeneration: z.ZodOptional<z.ZodString>;
|
|
312
|
-
createdAt: z.ZodNumber;
|
|
313
|
-
updatedAt: z.ZodNumber;
|
|
314
313
|
}, z.core.$strip>;
|
|
315
314
|
archivedAt: z.ZodNumber;
|
|
316
315
|
expireAt: z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>;
|
|
@@ -4172,22 +4171,21 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
4172
4171
|
category: z.ZodString;
|
|
4173
4172
|
audienceScope: z.ZodString;
|
|
4174
4173
|
archivedSnapshot: z.ZodObject<{
|
|
4175
|
-
id: z.ZodString;
|
|
4176
4174
|
type: z.ZodString;
|
|
4177
|
-
dedupKey: z.ZodString;
|
|
4178
|
-
category: z.ZodString;
|
|
4179
|
-
targetUserId: z.ZodNullable<z.ZodString>;
|
|
4180
|
-
title: z.ZodString;
|
|
4181
4175
|
message: z.ZodString;
|
|
4176
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
4177
|
+
createdAt: z.ZodNumber;
|
|
4178
|
+
updatedAt: z.ZodNumber;
|
|
4179
|
+
title: z.ZodString;
|
|
4182
4180
|
count: z.ZodNumber;
|
|
4181
|
+
category: z.ZodString;
|
|
4182
|
+
dedupKey: z.ZodString;
|
|
4183
|
+
targetUserId: z.ZodNullable<z.ZodString>;
|
|
4183
4184
|
latestActorIds: z.ZodArray<z.ZodString>;
|
|
4184
4185
|
targetPath: z.ZodOptional<z.ZodString>;
|
|
4185
|
-
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
4186
4186
|
seenAt: z.ZodNumber;
|
|
4187
4187
|
activityGeneration: z.ZodOptional<z.ZodString>;
|
|
4188
4188
|
seenAtGeneration: z.ZodOptional<z.ZodString>;
|
|
4189
|
-
createdAt: z.ZodNumber;
|
|
4190
|
-
updatedAt: z.ZodNumber;
|
|
4191
4189
|
}, z.core.$strip>;
|
|
4192
4190
|
archivedAt: z.ZodNumber;
|
|
4193
4191
|
expireAt: z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6M7B,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6M7B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4PkB,CAAC;AAElD,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAEvE;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;CAmBiC,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAOvC,CAAC"}
|