@nsshunt/stsfhirpg 1.2.6 → 1.2.8
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/stsfhirpg.cjs +72 -63
- package/dist/stsfhirpg.cjs.map +1 -1
- package/dist/stsfhirpg.mjs +72 -63
- package/dist/stsfhirpg.mjs.map +1 -1
- package/package.json +2 -1
- package/types/fhir-database/dbsearchindexbase.d.ts +1 -1
- package/types/fhir-database/dbsearchindexbase.d.ts.map +1 -1
- package/types/fhir-database/dbsearchindexcomposite.d.ts +1 -1
- package/types/fhir-database/dbsearchindexcomposite.d.ts.map +1 -1
- package/types/fhir-database/dbsearchindexdates.d.ts +1 -1
- package/types/fhir-database/dbsearchindexdates.d.ts.map +1 -1
- package/types/fhir-database/dbsearchindexnumber.d.ts +1 -1
- package/types/fhir-database/dbsearchindexnumber.d.ts.map +1 -1
- package/types/fhir-database/dbsearchindexquantity.d.ts +1 -1
- package/types/fhir-database/dbsearchindexquantity.d.ts.map +1 -1
- package/types/fhir-database/dbsearchindexreference.d.ts +1 -1
- package/types/fhir-database/dbsearchindexreference.d.ts.map +1 -1
- package/types/fhir-database/dbsearchindexstring.d.ts +1 -1
- package/types/fhir-database/dbsearchindexstring.d.ts.map +1 -1
- package/types/fhir-database/dbsearchindextoken.d.ts +1 -1
- package/types/fhir-database/dbsearchindextoken.d.ts.map +1 -1
- package/types/fhir-database/dbsearchindexuri.d.ts +1 -1
- package/types/fhir-database/dbsearchindexuri.d.ts.map +1 -1
- package/types/fhir-utils/resourceHelper.d.ts +8 -7
- package/types/fhir-utils/resourceHelper.d.ts.map +1 -1
- package/types/redisDistributedLock.d.ts +36 -0
- package/types/redisDistributedLock.d.ts.map +1 -0
- package/types/searchParameterManager.d.ts +38 -0
- package/types/searchParameterManager.d.ts.map +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nsshunt/stsfhirpg",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.8",
|
|
4
4
|
"description": "STS FHIR Postgres (pg) Persistence",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./dist/stsfhirpg.cjs",
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
"luxon": "^3.7.2",
|
|
50
50
|
"murmurhash3js": "^3.0.1",
|
|
51
51
|
"pg": "^8.20.0",
|
|
52
|
+
"redis": "^5.11.0",
|
|
52
53
|
"tiny-emitter": "^2.1.0",
|
|
53
54
|
"uuid": "^13.0.0",
|
|
54
55
|
"valid-url": "^1.0.9"
|
|
@@ -8,7 +8,7 @@ export declare abstract class DBSearchIndexBase {
|
|
|
8
8
|
GetNewBaseIndexRecord: (tir: IBaseIndexRecordEx) => IBaseIndexRecordEx;
|
|
9
9
|
ComputeCompositeHash: (path: string, index: number, tir: IBaseIndexRecordEx) => void;
|
|
10
10
|
GetValueFromPath: (resource: Resource, path: string, searchParamRecord: ISearchParamRecord, searchParamExpressionRecord: ISearchParamExpressionRecord) => any;
|
|
11
|
-
abstract OutputIndexRecordFromFhirElement(path: string, inputNumberVal: any, tir: IBaseIndexRecordEx, searchParamExpressionRecord?: ISearchParamExpressionRecord, resource?: Resource): IBaseIndexRecordEx[]
|
|
11
|
+
abstract OutputIndexRecordFromFhirElement(path: string, inputNumberVal: any, tir: IBaseIndexRecordEx, searchParamExpressionRecord?: ISearchParamExpressionRecord, resource?: Resource): Promise<IBaseIndexRecordEx[]>;
|
|
12
12
|
abstract OutputIndexRecord(resource: Resource, tir: IBaseIndexRecordEx, searchFieldRecord: ISearchParamRecord): Promise<IBaseIndexRecordEx[]>;
|
|
13
13
|
abstract OutputIndexRecordToConsole(tir: IBaseIndexRecordEx[]): string;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindexbase.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexbase.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,8BAAsB,iBAAiB;;IAanC,SAAS,SAA0B;IAEnC,WAAW,GAAI,KAAK,GAAG,KAAG,OAAO,CAUhC;IAED,SAAS,GAAI,KAAK,GAAG,KAAG,OAAO,CAU9B;IAED,qBAAqB,GAAI,KAAK,kBAAkB,KAAG,kBAAkB,CAMpE;IAkBD,oBAAoB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,KAAK,kBAAkB,UAU3E;IAID,gBAAgB,GAAI,UAAU,QAAQ,EAAE,MAAM,MAAM,EAAE,mBAAmB,kBAAkB,EAAE,6BAA6B,4BAA4B,KAAG,GAAG,CAuF3J;IAED,QAAQ,CAAC,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,kBAAkB,EAChG,2BAA2B,CAAC,EAAE,4BAA4B,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,kBAAkB,EAAE;
|
|
1
|
+
{"version":3,"file":"dbsearchindexbase.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexbase.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,8BAAsB,iBAAiB;;IAanC,SAAS,SAA0B;IAEnC,WAAW,GAAI,KAAK,GAAG,KAAG,OAAO,CAUhC;IAED,SAAS,GAAI,KAAK,GAAG,KAAG,OAAO,CAU9B;IAED,qBAAqB,GAAI,KAAK,kBAAkB,KAAG,kBAAkB,CAMpE;IAkBD,oBAAoB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,KAAK,kBAAkB,UAU3E;IAID,gBAAgB,GAAI,UAAU,QAAQ,EAAE,MAAM,MAAM,EAAE,mBAAmB,kBAAkB,EAAE,6BAA6B,4BAA4B,KAAG,GAAG,CAuF3J;IAED,QAAQ,CAAC,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,kBAAkB,EAChG,2BAA2B,CAAC,EAAE,4BAA4B,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAEnH,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,kBAAkB,EAClE,iBAAiB,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAEzE,QAAQ,CAAC,0BAA0B,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,MAAM;CACzE"}
|
|
@@ -4,7 +4,7 @@ import { DBSearchIndexBase } from './dbsearchindexbase';
|
|
|
4
4
|
export declare class DBSearchIndexComposite extends DBSearchIndexBase {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
7
|
-
OutputIndexRecordFromFhirElement: (path: string, inputReferenceVal: any, tir: IBaseIndexRecordEx) => IBaseIndexRecordEx[]
|
|
7
|
+
OutputIndexRecordFromFhirElement: (path: string, inputReferenceVal: any, tir: IBaseIndexRecordEx) => Promise<IBaseIndexRecordEx[]>;
|
|
8
8
|
OutputIndexRecord: (resource: Resource, tir: IBaseIndexRecordEx, searchFieldRecord: ISearchParamRecord) => Promise<IBaseIndexRecordEx[]>;
|
|
9
9
|
OutputIndexRecordToConsole: (tir: IComboNonUniqueRecord[]) => string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindexcomposite.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexcomposite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD,OAAO,EAA+B,kBAAkB,EAAE,kBAAkB,EACxE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKvD,qBAAa,sBAAuB,SAAQ,iBAAiB;;;IAczD,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dbsearchindexcomposite.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexcomposite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD,OAAO,EAA+B,kBAAkB,EAAE,kBAAkB,EACxE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKvD,qBAAa,sBAAuB,SAAQ,iBAAiB;;;IAczD,gCAAgC,GAAU,MAAM,MAAM,EAAE,mBAAmB,GAAG,EAAE,KAAK,kBAAkB,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAGtI;IAcD,iBAAiB,GAAU,UAAU,QAAQ,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,kBAAkB,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwD5I;IAED,0BAA0B,GAAI,KAAK,qBAAqB,EAAE,KAAG,MAAM,CA6BlE;CAEJ"}
|
|
@@ -4,7 +4,7 @@ import { DBSearchIndexBase } from './dbsearchindexbase';
|
|
|
4
4
|
export declare class DBSearchIndexDates extends DBSearchIndexBase {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
7
|
-
OutputIndexRecordFromFhirElement: (path: string, inputReferenceVal: any, tir: IBaseIndexRecordEx) => IDateIndexRecord[]
|
|
7
|
+
OutputIndexRecordFromFhirElement: (path: string, inputReferenceVal: any, tir: IBaseIndexRecordEx) => Promise<IDateIndexRecord[]>;
|
|
8
8
|
OutputIndexRecord: (resource: Resource, tir: IBaseIndexRecordEx, searchFieldRecord: ISearchParamRecord) => Promise<IDateIndexRecord[]>;
|
|
9
9
|
OutputIndexRecordToConsole: (tir: IDateIndexRecord[]) => string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindexdates.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexdates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,kBAAmB,SAAQ,iBAAiB;;;IAoBrD,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dbsearchindexdates.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexdates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,kBAAmB,SAAQ,iBAAiB;;;IAoBrD,gCAAgC,GAAU,MAAM,MAAM,EAAE,mBAAmB,GAAG,EAAE,KAAK,kBAAkB,KAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA0FpI;IAED,iBAAiB,GAAU,UAAU,QAAQ,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,kBAAkB,KAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAO1I;IAED,0BAA0B,GAAI,KAAK,gBAAgB,EAAE,KAAG,MAAM,CA6B7D;CAEJ"}
|
|
@@ -4,7 +4,7 @@ import { Resource } from '@nsshunt/stsfhirclient';
|
|
|
4
4
|
export declare class DBSearchIndexNumber extends DBSearchIndexBase {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
7
|
-
OutputIndexRecordFromFhirElement: (path: string, inputNumberVal: any, tir: IBaseIndexRecordEx) => INumberIndexRecord[]
|
|
7
|
+
OutputIndexRecordFromFhirElement: (path: string, inputNumberVal: any, tir: IBaseIndexRecordEx) => Promise<INumberIndexRecord[]>;
|
|
8
8
|
OutputIndexRecord: (resource: Resource, tir: IBaseIndexRecordEx, searchFieldRecord: ISearchParamRecord) => Promise<INumberIndexRecord[]>;
|
|
9
9
|
OutputIndexRecordToConsole: (tir: IBaseIndexRecordEx[]) => string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindexnumber.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexnumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,qBAAa,mBAAoB,SAAQ,iBAAiB;;;IAqBtD,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dbsearchindexnumber.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexnumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,qBAAa,mBAAoB,SAAQ,iBAAiB;;;IAqBtD,gCAAgC,GAAU,MAAM,MAAM,EAAE,gBAAgB,GAAG,EAAE,KAAK,kBAAkB,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwBnI;IAED,iBAAiB,GAAU,UAAU,QAAQ,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,kBAAkB,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAO5I;IAED,0BAA0B,GAAI,KAAK,kBAAkB,EAAE,KAAG,MAAM,CAG/D;CACJ"}
|
|
@@ -4,7 +4,7 @@ import { Resource } from '@nsshunt/stsfhirclient';
|
|
|
4
4
|
export declare class DBSearchIndexQuantity extends DBSearchIndexBase {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
7
|
-
OutputIndexRecordFromFhirElement: (path: string, inputQuantityVal: any, tir: IBaseIndexRecordEx) => IQuantityIndexRecord[]
|
|
7
|
+
OutputIndexRecordFromFhirElement: (path: string, inputQuantityVal: any, tir: IBaseIndexRecordEx) => Promise<IQuantityIndexRecord[]>;
|
|
8
8
|
OutputIndexRecord: (resource: Resource, tir: IBaseIndexRecordEx, searchFieldRecord: ISearchParamRecord) => Promise<IQuantityIndexRecord[]>;
|
|
9
9
|
OutputIndexRecordToConsole: (tir: IQuantityIndexRecord[]) => string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindexquantity.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexquantity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACxG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,qBAAa,qBAAsB,SAAQ,iBAAiB;;;IAsCxD,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dbsearchindexquantity.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexquantity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACxG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,qBAAa,qBAAsB,SAAQ,iBAAiB;;;IAsCxD,gCAAgC,GAAU,MAAM,MAAM,EAAE,kBAAkB,GAAG,EAAE,KAAK,kBAAkB,KAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA4BvI;IAED,iBAAiB,GAAU,UAAU,QAAQ,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,kBAAkB,KAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAO9I;IAED,0BAA0B,GAAI,KAAK,oBAAoB,EAAE,KAAG,MAAM,CAkCjE;CAEJ"}
|
|
@@ -4,7 +4,7 @@ import { Resource } from '@nsshunt/stsfhirclient';
|
|
|
4
4
|
export declare class DBSearchIndexReference extends DBSearchIndexBase {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
7
|
-
OutputIndexRecordFromFhirElement: (path: string, inputReferenceVal: any, tir: IBaseIndexRecordEx, searchParamExpressionRecord: ISearchParamExpressionRecord, resource: Resource) => IResourceLinkIndexRecord[]
|
|
7
|
+
OutputIndexRecordFromFhirElement: (path: string, inputReferenceVal: any, tir: IBaseIndexRecordEx, searchParamExpressionRecord: ISearchParamExpressionRecord, resource: Resource) => Promise<IResourceLinkIndexRecord[]>;
|
|
8
8
|
OutputIndexRecord: (resource: Resource, tir: IBaseIndexRecordEx, searchFieldRecord: ISearchParamRecord) => Promise<IResourceLinkIndexRecord[]>;
|
|
9
9
|
OutputIndexRecordToConsole: (tir: IResourceLinkIndexRecord[]) => string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindexreference.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexreference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAC1I,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AAEjE,qBAAa,sBAAuB,SAAQ,iBAAiB;;;IAgEzD,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dbsearchindexreference.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexreference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAC1I,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AAEjE,qBAAa,sBAAuB,SAAQ,iBAAiB;;;IAgEzD,gCAAgC,GAAU,MAAM,MAAM,EAAE,mBAAmB,GAAG,EAAE,KAAK,kBAAkB,EACnG,6BAA6B,4BAA4B,EAAE,UAAU,QAAQ,KAC9E,OAAO,CAAC,wBAAwB,EAAE,CAAC,CA2CrC;IAED,iBAAiB,GAAU,UAAU,QAAQ,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,kBAAkB,KAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAOlJ;IAED,0BAA0B,GAAI,KAAK,wBAAwB,EAAE,KAAG,MAAM,CA8BrE;CACJ"}
|
|
@@ -4,7 +4,7 @@ import { DBSearchIndexBase } from './dbsearchindexbase';
|
|
|
4
4
|
export declare class DBSearchIndexString extends DBSearchIndexBase {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
7
|
-
OutputIndexRecordFromFhirElement: (path: string, inputStringVal: any, tir: IBaseIndexRecordEx, expression?: ISearchParamExpressionRecord) => IStringIndexRecord[]
|
|
7
|
+
OutputIndexRecordFromFhirElement: (path: string, inputStringVal: any, tir: IBaseIndexRecordEx, expression?: ISearchParamExpressionRecord) => Promise<IStringIndexRecord[]>;
|
|
8
8
|
OutputIndexRecord: (resource: Resource, tir: IBaseIndexRecordEx, searchParamRecord: ISearchParamRecord) => Promise<IStringIndexRecord[]>;
|
|
9
9
|
OutputIndexRecordToConsole: (tir: IStringIndexRecord[]) => string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindexstring.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexstring.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAIjD,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACpI,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,mBAAoB,SAAQ,iBAAiB;;;IA8FtD,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dbsearchindexstring.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexstring.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAIjD,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACpI,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,mBAAoB,SAAQ,iBAAiB;;;IA8FtD,gCAAgC,GAAU,MAAM,MAAM,EAAE,gBAAgB,GAAG,EAAE,KAAK,kBAAkB,EAAE,aAAa,4BAA4B,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0B9K;IAED,iBAAiB,GAAU,UAAU,QAAQ,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,kBAAkB,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAO5I;IAED,0BAA0B,GAAI,KAAK,kBAAkB,EAAE,KAAG,MAAM,CAgC/D;CACJ"}
|
|
@@ -4,7 +4,7 @@ import { Resource } from '@nsshunt/stsfhirclient';
|
|
|
4
4
|
export declare class DBSearchIndexToken extends DBSearchIndexBase {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
7
|
-
OutputIndexRecordFromFhirElement: (path: string, inputTokens: any, tir: IBaseIndexRecordEx) => ITokenIndexRecord[]
|
|
7
|
+
OutputIndexRecordFromFhirElement: (path: string, inputTokens: any, tir: IBaseIndexRecordEx) => Promise<ITokenIndexRecord[]>;
|
|
8
8
|
OutputIndexRecord: (resource: Resource, tir: IBaseIndexRecordEx, searchFieldRecord: ISearchParamRecord) => Promise<ITokenIndexRecord[]>;
|
|
9
9
|
OutputIndexRecordToConsole: (tir: ITokenIndexRecord[]) => string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindextoken.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindextoken.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAgEjD,qBAAa,kBAAmB,SAAQ,iBAAiB;;;IAuKrD,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dbsearchindextoken.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindextoken.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAgEjD,qBAAa,kBAAmB,SAAQ,iBAAiB;;;IAuKrD,gCAAgC,GAAU,MAAM,MAAM,EAAE,aAAa,GAAG,EAAE,KAAK,kBAAkB,KAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiC/H;IAED,iBAAiB,GAAU,UAAU,QAAQ,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,kBAAkB,KAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAO3I;IAED,0BAA0B,GAAI,KAAK,iBAAiB,EAAE,KAAG,MAAM,CAiC9D;CACJ"}
|
|
@@ -4,7 +4,7 @@ import { DBSearchIndexBase } from './dbsearchindexbase';
|
|
|
4
4
|
export declare class DBSearchIndexURI extends DBSearchIndexBase {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
7
|
-
OutputIndexRecordFromFhirElement: (path: string, inputUriVal: any, tir: IBaseIndexRecordEx) => IUriIndexRecord[]
|
|
7
|
+
OutputIndexRecordFromFhirElement: (path: string, inputUriVal: any, tir: IBaseIndexRecordEx) => Promise<IUriIndexRecord[]>;
|
|
8
8
|
OutputIndexRecord: (resource: Resource, tir: IBaseIndexRecordEx, searchFieldRecord: ISearchParamRecord) => Promise<IUriIndexRecord[]>;
|
|
9
9
|
OutputIndexRecordToConsole: (tir: IBaseIndexRecordEx[]) => string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbsearchindexuri.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexuri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,gBAAiB,SAAQ,iBAAiB;;;IA4BnD,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dbsearchindexuri.d.ts","sourceRoot":"","sources":["../../src/fhir-database/dbsearchindexuri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,gBAAiB,SAAQ,iBAAiB;;;IA4BnD,gCAAgC,GAAU,MAAM,MAAM,EAAE,aAAa,GAAG,EAAE,KAAK,kBAAkB,KAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA0B7H;IAED,iBAAiB,GAAU,UAAU,QAAQ,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,kBAAkB,KAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAOzI;IAED,0BAA0B,GAAI,KAAK,kBAAkB,EAAE,KAAG,MAAM,CAE/D;CACJ"}
|
|
@@ -8,16 +8,17 @@ export interface IResources {
|
|
|
8
8
|
}
|
|
9
9
|
export declare class ResourceHelper {
|
|
10
10
|
#private;
|
|
11
|
+
private searchParameterManager?;
|
|
11
12
|
private static instance;
|
|
12
13
|
private constructor();
|
|
13
14
|
static getInstance(): ResourceHelper;
|
|
14
|
-
private
|
|
15
|
-
GetType: (typeName: string) => any[]
|
|
16
|
-
GetResource: (resourceType: string) => any[]
|
|
17
|
-
GetResourceField: (resourceType: string, fieldPath: string) => any
|
|
18
|
-
GetSearchParam: (url: string) => any
|
|
19
|
-
GetSearchParams: () => any
|
|
20
|
-
GetSearchParamsByResource: (resource: string) => SearchParameter[]
|
|
15
|
+
private GetDefinitions;
|
|
16
|
+
GetType: (typeName: string) => Promise<any[]>;
|
|
17
|
+
GetResource: (resourceType: string) => Promise<any[]>;
|
|
18
|
+
GetResourceField: (resourceType: string, fieldPath: string) => Promise<any>;
|
|
19
|
+
GetSearchParam: (url: string) => Promise<any>;
|
|
20
|
+
GetSearchParams: () => Promise<any>;
|
|
21
|
+
GetSearchParamsByResource: (resource: string) => Promise<SearchParameter[]>;
|
|
21
22
|
ProcessExpressions: (resourceName: string, SP_EXPRESSION: string) => any;
|
|
22
23
|
private _LoadSearchParameters;
|
|
23
24
|
GetSearchParamFromResourceTypeUrl: (resourceType: string, url: string) => Promise<ISearchParamRecord | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceHelper.d.ts","sourceRoot":"","sources":["../../src/fhir-utils/resourceHelper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,kBAAkB,EACH,YAAY,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"resourceHelper.d.ts","sourceRoot":"","sources":["../../src/fhir-utils/resourceHelper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,kBAAkB,EACH,YAAY,EAAE,MAAM,eAAe,CAAA;AAiB3D,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACtD,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAC7D;AAED,qBAAa,cAAc;;IAEvB,OAAO,CAAC,sBAAsB,CAAC,CAAyB;IAExD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IAExC,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,cAAc;IAmDpC,OAAO,CAAC,cAAc,CAKrB;IAED,OAAO,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAGjD;IAED,WAAW,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAIzD;IAED,gBAAgB,GAAU,cAAc,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC,CAU/E;IAED,cAAc,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC,CAGjD;IAED,eAAe,QAAa,OAAO,CAAC,GAAG,CAAC,CAGvC;IAED,yBAAyB,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAK/E;IAoCD,kBAAkB,GAAI,cAAc,MAAM,EAAE,eAAe,MAAM,KAAG,GAAG,CA8GtE;IAED,OAAO,CAAC,qBAAqB,CAiE5B;IAED,iCAAiC,GAAU,cAAc,MAAM,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAMrH;IAED,8BAA8B,GAAU,cAAc,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAMnH;IAED,+BAA+B,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAG5F;CACJ"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createClient } from 'redis';
|
|
2
|
+
export type AppRedisClient = ReturnType<typeof createClient>;
|
|
3
|
+
export interface RedisDistributedLockOptions {
|
|
4
|
+
ttlMs?: number;
|
|
5
|
+
heartbeatMs?: number;
|
|
6
|
+
keyPrefix?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface LockHandle {
|
|
9
|
+
key: string;
|
|
10
|
+
token: string;
|
|
11
|
+
ttlMs: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class RedisDistributedLock {
|
|
14
|
+
private readonly client;
|
|
15
|
+
private readonly ttlMs;
|
|
16
|
+
private readonly heartbeatMs;
|
|
17
|
+
private readonly keyPrefix;
|
|
18
|
+
constructor(client: AppRedisClient, options?: RedisDistributedLockOptions);
|
|
19
|
+
private buildKey;
|
|
20
|
+
acquire(name: string, ttlMs?: number): Promise<LockHandle | null>;
|
|
21
|
+
release(lock: LockHandle): Promise<boolean>;
|
|
22
|
+
renew(lock: LockHandle, ttlMs?: number): Promise<boolean>;
|
|
23
|
+
isOwner(lock: LockHandle): Promise<boolean>;
|
|
24
|
+
runExclusive<T>(name: string, task: () => Promise<T>, options?: {
|
|
25
|
+
ttlMs?: number;
|
|
26
|
+
autoRenew?: boolean;
|
|
27
|
+
heartbeatMs?: number;
|
|
28
|
+
onLockNotAcquired?: () => void | Promise<void>;
|
|
29
|
+
}): Promise<{
|
|
30
|
+
acquired: true;
|
|
31
|
+
result: T;
|
|
32
|
+
} | {
|
|
33
|
+
acquired: false;
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=redisDistributedLock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redisDistributedLock.d.ts","sourceRoot":"","sources":["../src/redisDistributedLock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmB,MAAM,OAAO,CAAC;AAGtD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAkB7D,MAAM,WAAW,2BAA2B;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAG/B,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,2BAA2B;IAoBzC,OAAO,CAAC,QAAQ;IAIH,OAAO,CAChB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAqBhB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWzD,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3C,YAAY,CAAC,CAAC,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAChD,GACE,OAAO,CAAC;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAA;KAAE,CAAC;CAkElE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SearchParameter } from '@nsshunt/stsfhirclient';
|
|
2
|
+
import { ISearchParamRecord } from './fhir-utils/commonTypes';
|
|
3
|
+
export interface ISearchParameterManagerOptions {
|
|
4
|
+
name: string;
|
|
5
|
+
pollIntervalMs?: number;
|
|
6
|
+
lockTtlMs?: number;
|
|
7
|
+
autoRenew?: boolean;
|
|
8
|
+
heartbeatMs?: number;
|
|
9
|
+
completeTtlSeconds?: number;
|
|
10
|
+
timeoutMs?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class SearchParameterManager {
|
|
13
|
+
#private;
|
|
14
|
+
private redis?;
|
|
15
|
+
private alreadyComplete;
|
|
16
|
+
private options;
|
|
17
|
+
constructor(options: ISearchParameterManagerOptions);
|
|
18
|
+
EnsureSearchParameterDataLoaded: () => Promise<string>;
|
|
19
|
+
Stop: () => Promise<void>;
|
|
20
|
+
private GetTypeKey;
|
|
21
|
+
private GetSearchParameterByFullUrlKey;
|
|
22
|
+
private GetResourceKey;
|
|
23
|
+
private GetSearchParameterByResourceTypeKey;
|
|
24
|
+
private GetSTSCustomSearchParameterByResourceTypeKey;
|
|
25
|
+
private _RemoveOuterParentheses;
|
|
26
|
+
private _RemoveSurroundingParentheses;
|
|
27
|
+
private _ProcessExpressions;
|
|
28
|
+
GetType: (typeName: string) => Promise<any[]>;
|
|
29
|
+
GetResource: (resourceType: string) => Promise<any[]>;
|
|
30
|
+
GetResourceField: (resourceType: string, fieldPath: string) => Promise<any>;
|
|
31
|
+
GetSearchParam: (fullUrl: string) => Promise<any>;
|
|
32
|
+
GetSearchParamsByResourceType: (resourceType: string) => Promise<SearchParameter[]>;
|
|
33
|
+
GetSTSCustomSearchParametersByResourceType: (resourceType: string) => Promise<ISearchParamRecord[]>;
|
|
34
|
+
GetSearchParamFromResourceTypeUrl: (resourceType: string, url: string) => Promise<ISearchParamRecord | undefined>;
|
|
35
|
+
GetSearchParamFromResourceType: (resourceType: string, name: string) => Promise<ISearchParamRecord | undefined>;
|
|
36
|
+
GetPathsFromResourceType: (resourceType: string, name: string) => Promise<string[]>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=searchParameterManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchParameterManager.d.ts","sourceRoot":"","sources":["../src/searchParameterManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAGxD,OAAO,EAAE,kBAAkB,EACiB,MAAM,0BAA0B,CAAA;AAS5E,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,sBAAsB;;IAC/B,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,OAAO,CAAiC;gBAEpC,OAAO,EAAE,8BAA8B;IAInD,+BAA+B,QAAa,OAAO,CAAC,MAAM,CAAC,CAgH1D;IAED,IAAI,sBAKH;IAED,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,8BAA8B;IAItC,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mCAAmC;IAI3C,OAAO,CAAC,4CAA4C;IAKpD,OAAO,CAAC,uBAAuB,CAE9B;IAGD,OAAO,CAAC,6BAA6B,CAEpC;IAsBD,OAAO,CAAC,mBAAmB,CA8G1B;IA+ID,OAAO,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAOjD;IAED,WAAW,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAOzD;IAED,gBAAgB,GAAU,cAAc,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC,CAS/E;IAED,cAAc,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC,CAOrD;IAED,6BAA6B,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAKvF;IAED,0CAA0C,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAKvG;IAED,iCAAiC,GAAU,cAAc,MAAM,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAMrH;IAED,8BAA8B,GAAU,cAAc,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAMnH;IAED,wBAAwB,GAAU,cAAc,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOvF;CAEJ"}
|