@sphereon/ssi-sdk.pd-manager 0.32.1-next.54 → 0.33.1-feature.jose.vcdm.55
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/index.cjs +1386 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{ssi-sdk.pd-manager.d.ts → index.d.cts} +113 -132
- package/dist/index.d.ts +109 -5
- package/dist/index.js +1354 -25
- package/dist/index.js.map +1 -1
- package/package.json +23 -12
- package/plugin.schema.json +167 -31
- package/src/agent/PDManager.ts +10 -3
- package/dist/agent/PDManager.d.ts +0 -35
- package/dist/agent/PDManager.d.ts.map +0 -1
- package/dist/agent/PDManager.js +0 -233
- package/dist/agent/PDManager.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/tsdoc-metadata.json +0 -11
- package/dist/types/IPDManager.d.ts +0 -73
- package/dist/types/IPDManager.d.ts.map +0 -1
- package/dist/types/IPDManager.js +0 -3
- package/dist/types/IPDManager.js.map +0 -1
package/plugin.schema.json
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
},
|
|
12
12
|
"required": [
|
|
13
13
|
"itemId"
|
|
14
|
-
]
|
|
14
|
+
],
|
|
15
|
+
"additionalProperties": false
|
|
15
16
|
},
|
|
16
17
|
"DeleteDefinitionItemsArgs": {
|
|
17
18
|
"$ref": "#/components/schemas/GetDefinitionItemsArgs"
|
|
@@ -25,7 +26,8 @@
|
|
|
25
26
|
"opts": {
|
|
26
27
|
"$ref": "#/components/schemas/FetchOptions"
|
|
27
28
|
}
|
|
28
|
-
}
|
|
29
|
+
},
|
|
30
|
+
"additionalProperties": false
|
|
29
31
|
},
|
|
30
32
|
"FindDefinitionArgs": {
|
|
31
33
|
"type": "array",
|
|
@@ -34,6 +36,9 @@
|
|
|
34
36
|
}
|
|
35
37
|
},
|
|
36
38
|
"PresentationDefinitionItemFilter": {
|
|
39
|
+
"$ref": "#/components/schemas/Partial<Omit<PresentationDefinitionItem,(\"definitionPayload\"|\"dcqlPayload\")>>"
|
|
40
|
+
},
|
|
41
|
+
"Partial<Omit<PresentationDefinitionItem,(\"definitionPayload\"|\"dcqlPayload\")>>": {
|
|
37
42
|
"type": "object",
|
|
38
43
|
"properties": {
|
|
39
44
|
"id": {
|
|
@@ -62,7 +67,8 @@
|
|
|
62
67
|
"type": "string",
|
|
63
68
|
"format": "date-time"
|
|
64
69
|
}
|
|
65
|
-
}
|
|
70
|
+
},
|
|
71
|
+
"additionalProperties": false
|
|
66
72
|
},
|
|
67
73
|
"FetchOptions": {
|
|
68
74
|
"type": "object",
|
|
@@ -70,7 +76,8 @@
|
|
|
70
76
|
"showVersionHistory": {
|
|
71
77
|
"type": "boolean"
|
|
72
78
|
}
|
|
73
|
-
}
|
|
79
|
+
},
|
|
80
|
+
"additionalProperties": false
|
|
74
81
|
},
|
|
75
82
|
"GetDefinitionItemArgs": {
|
|
76
83
|
"type": "object",
|
|
@@ -81,7 +88,8 @@
|
|
|
81
88
|
},
|
|
82
89
|
"required": [
|
|
83
90
|
"itemId"
|
|
84
|
-
]
|
|
91
|
+
],
|
|
92
|
+
"additionalProperties": false
|
|
85
93
|
},
|
|
86
94
|
"PresentationDefinitionItem": {
|
|
87
95
|
"type": "object",
|
|
@@ -107,6 +115,9 @@
|
|
|
107
115
|
"definitionPayload": {
|
|
108
116
|
"$ref": "#/components/schemas/IPresentationDefinition"
|
|
109
117
|
},
|
|
118
|
+
"dcqlPayload": {
|
|
119
|
+
"$ref": "#/components/schemas/DcqlQueryREST"
|
|
120
|
+
},
|
|
110
121
|
"createdAt": {
|
|
111
122
|
"type": "string",
|
|
112
123
|
"format": "date-time"
|
|
@@ -123,7 +134,8 @@
|
|
|
123
134
|
"definitionPayload",
|
|
124
135
|
"createdAt",
|
|
125
136
|
"lastUpdatedAt"
|
|
126
|
-
]
|
|
137
|
+
],
|
|
138
|
+
"additionalProperties": false
|
|
127
139
|
},
|
|
128
140
|
"IPresentationDefinition": {
|
|
129
141
|
"anyOf": [
|
|
@@ -166,7 +178,8 @@
|
|
|
166
178
|
"required": [
|
|
167
179
|
"id",
|
|
168
180
|
"input_descriptors"
|
|
169
|
-
]
|
|
181
|
+
],
|
|
182
|
+
"additionalProperties": false
|
|
170
183
|
},
|
|
171
184
|
"Format": {
|
|
172
185
|
"type": "object",
|
|
@@ -210,7 +223,8 @@
|
|
|
210
223
|
"mso_mdoc": {
|
|
211
224
|
"$ref": "#/components/schemas/MsoMdocObject"
|
|
212
225
|
}
|
|
213
|
-
}
|
|
226
|
+
},
|
|
227
|
+
"additionalProperties": false
|
|
214
228
|
},
|
|
215
229
|
"JwtObject": {
|
|
216
230
|
"type": "object",
|
|
@@ -224,7 +238,8 @@
|
|
|
224
238
|
},
|
|
225
239
|
"required": [
|
|
226
240
|
"alg"
|
|
227
|
-
]
|
|
241
|
+
],
|
|
242
|
+
"additionalProperties": false
|
|
228
243
|
},
|
|
229
244
|
"LdpObject": {
|
|
230
245
|
"type": "object",
|
|
@@ -238,7 +253,8 @@
|
|
|
238
253
|
},
|
|
239
254
|
"required": [
|
|
240
255
|
"proof_type"
|
|
241
|
-
]
|
|
256
|
+
],
|
|
257
|
+
"additionalProperties": false
|
|
242
258
|
},
|
|
243
259
|
"DiObject": {
|
|
244
260
|
"type": "object",
|
|
@@ -259,7 +275,8 @@
|
|
|
259
275
|
"required": [
|
|
260
276
|
"proof_type",
|
|
261
277
|
"cryptosuite"
|
|
262
|
-
]
|
|
278
|
+
],
|
|
279
|
+
"additionalProperties": false
|
|
263
280
|
},
|
|
264
281
|
"SdJwtObject": {
|
|
265
282
|
"type": "object",
|
|
@@ -276,7 +293,8 @@
|
|
|
276
293
|
"type": "string"
|
|
277
294
|
}
|
|
278
295
|
}
|
|
279
|
-
}
|
|
296
|
+
},
|
|
297
|
+
"additionalProperties": false
|
|
280
298
|
},
|
|
281
299
|
"MsoMdocObject": {
|
|
282
300
|
"type": "object",
|
|
@@ -290,7 +308,8 @@
|
|
|
290
308
|
},
|
|
291
309
|
"required": [
|
|
292
310
|
"alg"
|
|
293
|
-
]
|
|
311
|
+
],
|
|
312
|
+
"additionalProperties": false
|
|
294
313
|
},
|
|
295
314
|
"SubmissionRequirement": {
|
|
296
315
|
"type": "object",
|
|
@@ -325,7 +344,8 @@
|
|
|
325
344
|
},
|
|
326
345
|
"required": [
|
|
327
346
|
"rule"
|
|
328
|
-
]
|
|
347
|
+
],
|
|
348
|
+
"additionalProperties": false
|
|
329
349
|
},
|
|
330
350
|
"Rules": {
|
|
331
351
|
"type": "string",
|
|
@@ -371,7 +391,8 @@
|
|
|
371
391
|
"required": [
|
|
372
392
|
"id",
|
|
373
393
|
"schema"
|
|
374
|
-
]
|
|
394
|
+
],
|
|
395
|
+
"additionalProperties": false
|
|
375
396
|
},
|
|
376
397
|
"Schema": {
|
|
377
398
|
"type": "object",
|
|
@@ -385,7 +406,8 @@
|
|
|
385
406
|
},
|
|
386
407
|
"required": [
|
|
387
408
|
"uri"
|
|
388
|
-
]
|
|
409
|
+
],
|
|
410
|
+
"additionalProperties": false
|
|
389
411
|
},
|
|
390
412
|
"Issuance": {
|
|
391
413
|
"type": "object",
|
|
@@ -426,7 +448,8 @@
|
|
|
426
448
|
"$ref": "#/components/schemas/HolderSubject"
|
|
427
449
|
}
|
|
428
450
|
}
|
|
429
|
-
}
|
|
451
|
+
},
|
|
452
|
+
"additionalProperties": false
|
|
430
453
|
},
|
|
431
454
|
"Optionality": {
|
|
432
455
|
"type": "string",
|
|
@@ -447,7 +470,8 @@
|
|
|
447
470
|
"revoked": {
|
|
448
471
|
"$ref": "#/components/schemas/PdStatus"
|
|
449
472
|
}
|
|
450
|
-
}
|
|
473
|
+
},
|
|
474
|
+
"additionalProperties": false
|
|
451
475
|
},
|
|
452
476
|
"PdStatus": {
|
|
453
477
|
"type": "object",
|
|
@@ -455,7 +479,8 @@
|
|
|
455
479
|
"directive": {
|
|
456
480
|
"$ref": "#/components/schemas/Directives"
|
|
457
481
|
}
|
|
458
|
-
}
|
|
482
|
+
},
|
|
483
|
+
"additionalProperties": false
|
|
459
484
|
},
|
|
460
485
|
"Directives": {
|
|
461
486
|
"type": "string",
|
|
@@ -489,7 +514,8 @@
|
|
|
489
514
|
},
|
|
490
515
|
"required": [
|
|
491
516
|
"path"
|
|
492
|
-
]
|
|
517
|
+
],
|
|
518
|
+
"additionalProperties": false
|
|
493
519
|
},
|
|
494
520
|
"FilterV1": {
|
|
495
521
|
"type": "object",
|
|
@@ -533,7 +559,8 @@
|
|
|
533
559
|
"type": {
|
|
534
560
|
"type": "string"
|
|
535
561
|
}
|
|
536
|
-
}
|
|
562
|
+
},
|
|
563
|
+
"additionalProperties": false
|
|
537
564
|
},
|
|
538
565
|
"OneOfNumberStringBoolean": {
|
|
539
566
|
"type": [
|
|
@@ -564,7 +591,8 @@
|
|
|
564
591
|
"required": [
|
|
565
592
|
"field_id",
|
|
566
593
|
"directive"
|
|
567
|
-
]
|
|
594
|
+
],
|
|
595
|
+
"additionalProperties": false
|
|
568
596
|
},
|
|
569
597
|
"PresentationDefinitionV2": {
|
|
570
598
|
"type": "object",
|
|
@@ -600,7 +628,8 @@
|
|
|
600
628
|
"required": [
|
|
601
629
|
"id",
|
|
602
630
|
"input_descriptors"
|
|
603
|
-
]
|
|
631
|
+
],
|
|
632
|
+
"additionalProperties": false
|
|
604
633
|
},
|
|
605
634
|
"InputDescriptorV2": {
|
|
606
635
|
"type": "object",
|
|
@@ -636,7 +665,8 @@
|
|
|
636
665
|
"required": [
|
|
637
666
|
"id",
|
|
638
667
|
"constraints"
|
|
639
|
-
]
|
|
668
|
+
],
|
|
669
|
+
"additionalProperties": false
|
|
640
670
|
},
|
|
641
671
|
"ConstraintsV2": {
|
|
642
672
|
"type": "object",
|
|
@@ -668,7 +698,8 @@
|
|
|
668
698
|
"$ref": "#/components/schemas/HolderSubject"
|
|
669
699
|
}
|
|
670
700
|
}
|
|
671
|
-
}
|
|
701
|
+
},
|
|
702
|
+
"additionalProperties": false
|
|
672
703
|
},
|
|
673
704
|
"FieldV2": {
|
|
674
705
|
"type": "object",
|
|
@@ -703,7 +734,8 @@
|
|
|
703
734
|
},
|
|
704
735
|
"required": [
|
|
705
736
|
"path"
|
|
706
|
-
]
|
|
737
|
+
],
|
|
738
|
+
"additionalProperties": false
|
|
707
739
|
},
|
|
708
740
|
"FilterV2": {
|
|
709
741
|
"type": "object",
|
|
@@ -765,7 +797,8 @@
|
|
|
765
797
|
"items": {
|
|
766
798
|
"$ref": "#/components/schemas/FilterV2Items"
|
|
767
799
|
}
|
|
768
|
-
}
|
|
800
|
+
},
|
|
801
|
+
"additionalProperties": false
|
|
769
802
|
},
|
|
770
803
|
"FilterV2Items": {
|
|
771
804
|
"type": "object",
|
|
@@ -827,7 +860,103 @@
|
|
|
827
860
|
"items": {
|
|
828
861
|
"$ref": "#/components/schemas/FilterV2Items"
|
|
829
862
|
}
|
|
830
|
-
}
|
|
863
|
+
},
|
|
864
|
+
"additionalProperties": false
|
|
865
|
+
},
|
|
866
|
+
"DcqlQueryREST": {
|
|
867
|
+
"type": "object",
|
|
868
|
+
"properties": {
|
|
869
|
+
"credentials": {
|
|
870
|
+
"type": "array",
|
|
871
|
+
"items": {
|
|
872
|
+
"$ref": "#/components/schemas/DcqlCredentialQuery"
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
},
|
|
876
|
+
"required": [
|
|
877
|
+
"credentials"
|
|
878
|
+
],
|
|
879
|
+
"additionalProperties": false
|
|
880
|
+
},
|
|
881
|
+
"DcqlCredentialQuery": {
|
|
882
|
+
"type": "object",
|
|
883
|
+
"properties": {
|
|
884
|
+
"id": {
|
|
885
|
+
"type": "string"
|
|
886
|
+
},
|
|
887
|
+
"format": {
|
|
888
|
+
"type": "string"
|
|
889
|
+
},
|
|
890
|
+
"alg": {
|
|
891
|
+
"type": "array",
|
|
892
|
+
"items": {
|
|
893
|
+
"type": "string"
|
|
894
|
+
}
|
|
895
|
+
},
|
|
896
|
+
"claims": {
|
|
897
|
+
"type": "array",
|
|
898
|
+
"items": {
|
|
899
|
+
"$ref": "#/components/schemas/DcqlClaim"
|
|
900
|
+
}
|
|
901
|
+
},
|
|
902
|
+
"meta": {
|
|
903
|
+
"$ref": "#/components/schemas/Record<string,any>"
|
|
904
|
+
}
|
|
905
|
+
},
|
|
906
|
+
"required": [
|
|
907
|
+
"id",
|
|
908
|
+
"format",
|
|
909
|
+
"claims"
|
|
910
|
+
],
|
|
911
|
+
"additionalProperties": false
|
|
912
|
+
},
|
|
913
|
+
"DcqlClaim": {
|
|
914
|
+
"type": "object",
|
|
915
|
+
"properties": {
|
|
916
|
+
"namespace": {
|
|
917
|
+
"type": "string"
|
|
918
|
+
},
|
|
919
|
+
"claim_name": {
|
|
920
|
+
"type": "string"
|
|
921
|
+
},
|
|
922
|
+
"filter": {
|
|
923
|
+
"$ref": "#/components/schemas/DcqlFilter"
|
|
924
|
+
}
|
|
925
|
+
},
|
|
926
|
+
"required": [
|
|
927
|
+
"namespace",
|
|
928
|
+
"claim_name"
|
|
929
|
+
],
|
|
930
|
+
"additionalProperties": false
|
|
931
|
+
},
|
|
932
|
+
"DcqlFilter": {
|
|
933
|
+
"type": "object",
|
|
934
|
+
"properties": {
|
|
935
|
+
"type": {
|
|
936
|
+
"type": "string",
|
|
937
|
+
"enum": [
|
|
938
|
+
"string",
|
|
939
|
+
"number",
|
|
940
|
+
"boolean"
|
|
941
|
+
]
|
|
942
|
+
},
|
|
943
|
+
"pattern": {
|
|
944
|
+
"type": "string"
|
|
945
|
+
},
|
|
946
|
+
"minimum": {
|
|
947
|
+
"type": "number"
|
|
948
|
+
},
|
|
949
|
+
"maximum": {
|
|
950
|
+
"type": "number"
|
|
951
|
+
}
|
|
952
|
+
},
|
|
953
|
+
"required": [
|
|
954
|
+
"type"
|
|
955
|
+
],
|
|
956
|
+
"additionalProperties": false
|
|
957
|
+
},
|
|
958
|
+
"Record<string,any>": {
|
|
959
|
+
"type": "object"
|
|
831
960
|
},
|
|
832
961
|
"HasDefinitionItemArgs": {
|
|
833
962
|
"$ref": "#/components/schemas/GetDefinitionItemArgs"
|
|
@@ -847,10 +976,12 @@
|
|
|
847
976
|
},
|
|
848
977
|
"required": [
|
|
849
978
|
"definitionItem"
|
|
850
|
-
]
|
|
979
|
+
],
|
|
980
|
+
"additionalProperties": false
|
|
851
981
|
},
|
|
852
982
|
"PersistPresentationDefinitionItem": {
|
|
853
983
|
"type": "object",
|
|
984
|
+
"additionalProperties": false,
|
|
854
985
|
"properties": {
|
|
855
986
|
"id": {
|
|
856
987
|
"type": "string"
|
|
@@ -872,6 +1003,9 @@
|
|
|
872
1003
|
},
|
|
873
1004
|
"definitionPayload": {
|
|
874
1005
|
"$ref": "#/components/schemas/IPresentationDefinition"
|
|
1006
|
+
},
|
|
1007
|
+
"dcqlPayload": {
|
|
1008
|
+
"$ref": "#/components/schemas/DcqlQueryREST"
|
|
875
1009
|
}
|
|
876
1010
|
},
|
|
877
1011
|
"required": [
|
|
@@ -887,7 +1021,8 @@
|
|
|
887
1021
|
"versionIncrementReleaseType": {
|
|
888
1022
|
"$ref": "#/components/schemas/ReleaseType"
|
|
889
1023
|
}
|
|
890
|
-
}
|
|
1024
|
+
},
|
|
1025
|
+
"additionalProperties": false
|
|
891
1026
|
},
|
|
892
1027
|
"VersionControlMode": {
|
|
893
1028
|
"type": "string",
|
|
@@ -907,7 +1042,8 @@
|
|
|
907
1042
|
"preminor",
|
|
908
1043
|
"patch",
|
|
909
1044
|
"prepatch",
|
|
910
|
-
"prerelease"
|
|
1045
|
+
"prerelease",
|
|
1046
|
+
"release"
|
|
911
1047
|
]
|
|
912
1048
|
}
|
|
913
1049
|
},
|
package/src/agent/PDManager.ts
CHANGED
|
@@ -128,11 +128,18 @@ export class PDManager implements IAgentPlugin {
|
|
|
128
128
|
|
|
129
129
|
const existing = await this.store.getDefinitions({ filter: [{ id, definitionId, tenantId, version }] })
|
|
130
130
|
const existingItem = existing[0]
|
|
131
|
-
let latestVersionItem: PresentationDefinitionItem | undefined = existingItem
|
|
132
131
|
|
|
132
|
+
// Always fetch all definitions for the definitionId/tenantId and determine the truly latest version
|
|
133
|
+
const allDefinitions = await this.store.getDefinitions({ filter: [{ definitionId, tenantId }] })
|
|
134
|
+
allDefinitions.sort((a, b) => semver.compare(this.normalizeToSemverVersionFormat(a.version), this.normalizeToSemverVersionFormat(b.version)))
|
|
135
|
+
const trulyLatestVersionItem = allDefinitions[allDefinitions.length - 1]
|
|
136
|
+
|
|
137
|
+
let latestVersionItem: PresentationDefinitionItem | undefined = trulyLatestVersionItem
|
|
138
|
+
|
|
139
|
+
// If a specific version exists and matches existingItem, we keep that as a base.
|
|
140
|
+
// Otherwise we use the trulyLatestVersionItem
|
|
133
141
|
if (existingItem && version) {
|
|
134
|
-
|
|
135
|
-
latestVersionItem = latest[0] ?? existingItem
|
|
142
|
+
latestVersionItem = trulyLatestVersionItem ?? existingItem
|
|
136
143
|
}
|
|
137
144
|
|
|
138
145
|
const isPayloadModified = !existingItem || !isPresentationDefinitionEqual(existingItem, definitionItem)
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { IAgentPlugin } from '@veramo/core';
|
|
2
|
-
import { IPDManager } from '../index';
|
|
3
|
-
import { AbstractPDStore } from '@sphereon/ssi-sdk.data-store';
|
|
4
|
-
export declare const pdManagerMethods: Array<string>;
|
|
5
|
-
/**
|
|
6
|
-
* {@inheritDoc IPDManager}
|
|
7
|
-
*/
|
|
8
|
-
export declare class PDManager implements IAgentPlugin {
|
|
9
|
-
readonly schema: any;
|
|
10
|
-
readonly methods: IPDManager;
|
|
11
|
-
private readonly store;
|
|
12
|
-
constructor(options: {
|
|
13
|
-
store: AbstractPDStore;
|
|
14
|
-
});
|
|
15
|
-
/** {@inheritDoc IPDManager.pdmHasDefinition} */
|
|
16
|
-
private pdmHasDefinition;
|
|
17
|
-
/** {@inheritDoc IPDManager.pdmHasDefinitions} */
|
|
18
|
-
private pdmHasDefinitions;
|
|
19
|
-
/** {@inheritDoc IPDManager.pdmGetDefinition} */
|
|
20
|
-
private pdmGetDefinition;
|
|
21
|
-
/** {@inheritDoc IPDManager.pdmGetDefinitions} */
|
|
22
|
-
private pdmGetDefinitions;
|
|
23
|
-
/** {@inheritDoc IPDManager.pdmDeleteDefinition} */
|
|
24
|
-
private pdmDeleteDefinition;
|
|
25
|
-
/** {@inheritDoc IPDManager.pdmDeleteDefinitions} */
|
|
26
|
-
private pdmDeleteDefinitions;
|
|
27
|
-
/** {@inheritDoc IPDManager.pdmPersistDefinition} */
|
|
28
|
-
private pdmPersistDefinition;
|
|
29
|
-
private handleOverwriteMode;
|
|
30
|
-
private handleOverwriteLatestMode;
|
|
31
|
-
private handleManualMode;
|
|
32
|
-
private handleAutoIncrementMode;
|
|
33
|
-
private normalizeToSemverVersionFormat;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=PDManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PDManager.d.ts","sourceRoot":"","sources":["../../src/agent/PDManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAOL,UAAU,EAGX,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,eAAe,EAIhB,MAAM,8BAA8B,CAAA;AAKrC,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAQ1C,CAAA;AAED;;GAEG;AACH,qBAAa,SAAU,YAAW,YAAY;IAC5C,QAAQ,CAAC,MAAM,MAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAQ3B;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;gBAE3B,OAAO,EAAE;QAAE,KAAK,EAAE,eAAe,CAAA;KAAE;IAI/C,gDAAgD;YAClC,gBAAgB;IAK9B,iDAAiD;YACnC,iBAAiB;IAK/B,gDAAgD;YAClC,gBAAgB;IAK9B,iDAAiD;YACnC,iBAAiB;IA4B/B,mDAAmD;YACrC,mBAAmB;IAIjC,oDAAoD;YACtC,oBAAoB;IAIlC,oDAAoD;YACtC,oBAAoB;YA2CpB,mBAAmB;YAmBnB,yBAAyB;YAiBzB,gBAAgB;YAehB,uBAAuB;IA0CrC,OAAO,CAAC,8BAA8B;CAYvC"}
|