@open-charging-cloud/chargy-core 0.1.0 → 0.2.0

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 (58) hide show
  1. package/README.md +45 -30
  2. package/dist/ACrypt.d.ts +21 -0
  3. package/dist/ACrypt.d.ts.map +1 -0
  4. package/dist/Alfen.d.ts +64 -0
  5. package/dist/Alfen.d.ts.map +1 -0
  6. package/dist/BSMCrypt01.d.ts +77 -0
  7. package/dist/BSMCrypt01.d.ts.map +1 -0
  8. package/dist/CanonicalJSON.d.ts +14 -0
  9. package/dist/CanonicalJSON.d.ts.map +1 -0
  10. package/dist/CryptoUtils.d.ts +47 -0
  11. package/dist/CryptoUtils.d.ts.map +1 -0
  12. package/dist/EMHCrypt01.d.ts +40 -0
  13. package/dist/EMHCrypt01.d.ts.map +1 -0
  14. package/dist/GDFCrypt01.d.ts +31 -0
  15. package/dist/GDFCrypt01.d.ts.map +1 -0
  16. package/dist/Mennekes.d.ts +87 -0
  17. package/dist/Mennekes.d.ts.map +1 -0
  18. package/dist/OCMF.d.ts +179 -0
  19. package/dist/OCMF.d.ts.map +1 -0
  20. package/dist/OCPI.d.ts +11 -0
  21. package/dist/OCPI.d.ts.map +1 -0
  22. package/dist/PCDF.d.ts +119 -0
  23. package/dist/PCDF.d.ts.map +1 -0
  24. package/dist/QIDigital_DCC.d.ts +398 -0
  25. package/dist/QIDigital_DCC.d.ts.map +1 -0
  26. package/dist/QIDigital_DCoA.d.ts +7 -0
  27. package/dist/QIDigital_DCoA.d.ts.map +1 -0
  28. package/dist/QIDigital_DCoC.d.ts +7 -0
  29. package/dist/QIDigital_DCoC.d.ts.map +1 -0
  30. package/dist/SAFE_XML.d.ts +35 -0
  31. package/dist/SAFE_XML.d.ts.map +1 -0
  32. package/dist/XMLContainer.d.ts +9 -0
  33. package/dist/XMLContainer.d.ts.map +1 -0
  34. package/dist/chargeIT.d.ts +13 -0
  35. package/dist/chargeIT.d.ts.map +1 -0
  36. package/dist/chargePoint.d.ts +44 -0
  37. package/dist/chargePoint.d.ts.map +1 -0
  38. package/dist/chargy.d.ts +86 -0
  39. package/dist/chargy.d.ts.map +1 -0
  40. package/dist/chargyLib.d.ts +207 -0
  41. package/dist/chargyLib.d.ts.map +1 -0
  42. package/dist/index.d.ts +32 -2354
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/interfaces/IChargeTransparencyLiveLink.d.ts +55 -0
  45. package/dist/interfaces/IChargeTransparencyLiveLink.d.ts.map +1 -0
  46. package/dist/interfaces/IChargeTransparencyRecord.d.ts +112 -0
  47. package/dist/interfaces/IChargeTransparencyRecord.d.ts.map +1 -0
  48. package/dist/interfaces/IPublicKeyInfo.d.ts +26 -0
  49. package/dist/interfaces/IPublicKeyInfo.d.ts.map +1 -0
  50. package/dist/interfaces/chargyInterfaces.d.ts +547 -0
  51. package/dist/interfaces/chargyInterfaces.d.ts.map +1 -0
  52. package/dist/qrCodeReader.d.ts +9 -0
  53. package/dist/qrCodeReader.d.ts.map +1 -0
  54. package/dist/secp224k1.d.ts +30 -0
  55. package/dist/secp224k1.d.ts.map +1 -0
  56. package/dist/verificationResults.d.ts +17 -0
  57. package/dist/verificationResults.d.ts.map +1 -0
  58. package/package.json +86 -84
package/dist/OCMF.d.ts ADDED
@@ -0,0 +1,179 @@
1
+ import type { Chargy, EllipticCurve } from './chargy';
2
+ import { ACrypt } from './ACrypt';
3
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
4
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
5
+ import Decimal from 'decimal.js';
6
+ export interface IOCMFv1_0MeasurementValue extends IOCMFMeasurementValue {
7
+ statusMeter: string;
8
+ secondsIndex: number;
9
+ paginationId: string;
10
+ logBookIndex: string;
11
+ }
12
+ export interface IOCMFv1_0Result extends chargyInterfaces.ICryptoResult {
13
+ sha256value?: string;
14
+ meterId?: string;
15
+ meter?: chargyInterfaces.IMeter;
16
+ timestamp?: string;
17
+ infoStatus?: string;
18
+ secondsIndex?: string;
19
+ paginationId?: string;
20
+ obis?: string;
21
+ unitEncoded?: string;
22
+ scale?: string;
23
+ value?: string;
24
+ logBookIndex?: string;
25
+ authorizationStart?: string;
26
+ authorizationStop?: string;
27
+ authorizationStartTimestamp?: string;
28
+ publicKey?: string;
29
+ publicKeyFormat?: string;
30
+ publicKeySignatures?: Array<unknown>;
31
+ signature?: chargyInterfaces.ISignatureRS;
32
+ }
33
+ export declare class OCMFv1_x extends ACrypt {
34
+ readonly curve: EllipticCurve;
35
+ constructor(chargy: Chargy);
36
+ VerifyChargingSession(chargingSession: chargeTransparencyRecord.IChargingSession): Promise<chargyInterfaces.ISessionCryptoResult>;
37
+ VerifyMeasurement(measurementValue: IOCMFv1_0MeasurementValue): Promise<IOCMFv1_0Result>;
38
+ private PayloadDictionary;
39
+ private SignatureDictionary;
40
+ ViewMeasurement(measurementValue: IOCMFv1_0MeasurementValue, errorDiv: HTMLDivElement, introDiv: HTMLDivElement, infoDiv: HTMLDivElement, PlainTextDiv: HTMLDivElement, HashedPlainTextDiv: HTMLDivElement, PublicKeyDiv: HTMLDivElement, SignatureExpectedDiv: HTMLDivElement, SignatureCheckDiv: HTMLDivElement): Promise<Error | undefined>;
41
+ }
42
+ export declare const enum OCMFTransactionTypes {
43
+ undefined = "undefined",
44
+ fiscal = "fiscal",
45
+ transaction = "transaction"
46
+ }
47
+ export declare const enum TimeStatusTypes {
48
+ unknown = "unknown",
49
+ informative = "informative",
50
+ syncronized = "syncronized",
51
+ relative = "relative"
52
+ }
53
+ export interface IOCMFLossCompensation {
54
+ LN?: string;
55
+ LI?: string;
56
+ LR: string;
57
+ LU: string;
58
+ }
59
+ export interface IOCMFReading {
60
+ TM?: string;
61
+ TX?: string;
62
+ RV?: Decimal;
63
+ RI?: string;
64
+ RU?: string;
65
+ RT?: string;
66
+ CL?: number;
67
+ EF?: string;
68
+ ST?: string;
69
+ }
70
+ export interface IOCMFSignature {
71
+ SA?: string;
72
+ SE?: string;
73
+ SM?: string;
74
+ SD: string;
75
+ A?: unknown;
76
+ B?: unknown;
77
+ C?: unknown;
78
+ D?: unknown;
79
+ E?: unknown;
80
+ F?: unknown;
81
+ U?: unknown;
82
+ V?: unknown;
83
+ W?: unknown;
84
+ X?: unknown;
85
+ Y?: unknown;
86
+ Z?: unknown;
87
+ }
88
+ export interface IOCMFPayload {
89
+ FV?: string;
90
+ GI?: string;
91
+ VI?: string;
92
+ GS?: string;
93
+ GV?: string;
94
+ VV?: string;
95
+ PG: string;
96
+ MV?: string;
97
+ MM?: string;
98
+ MS?: string;
99
+ MF?: string;
100
+ IS: boolean | string;
101
+ IL?: string;
102
+ IF?: string[];
103
+ IT?: string;
104
+ ID?: string;
105
+ TT?: string;
106
+ CF?: string;
107
+ LC?: IOCMFLossCompensation;
108
+ CT?: string;
109
+ CI?: string;
110
+ RD: Array<IOCMFReading>;
111
+ U?: unknown;
112
+ V?: unknown;
113
+ W?: unknown;
114
+ X?: unknown;
115
+ Y?: unknown;
116
+ Z?: unknown;
117
+ }
118
+ export interface IOCMFJSONDocument {
119
+ "@context": string | string[];
120
+ raw?: string;
121
+ rawPayload?: string;
122
+ hashAlgorithm: string;
123
+ hashValue: string;
124
+ payload: IOCMFPayload;
125
+ signature: IOCMFSignature;
126
+ signatureRS?: chargyInterfaces.ISignatureRS;
127
+ publicKey?: string | chargyInterfaces.IPublicKeyXY;
128
+ publicKeyEncoding?: string;
129
+ validationStatus?: chargyInterfaces.VerificationResult;
130
+ }
131
+ export interface IOCMFMeasurementValue extends chargeTransparencyRecord.IMeasurementValue {
132
+ measurement?: IOCMFMeasurement;
133
+ timeSync: string;
134
+ transaction?: string;
135
+ transactionType: OCMFTransactionTypes;
136
+ pagination: number;
137
+ errorFlags?: string;
138
+ cumulatedLoss?: Decimal;
139
+ status: string;
140
+ ocmfDocument?: IOCMFJSONDocument;
141
+ }
142
+ export interface IOCMFMeasurement extends chargeTransparencyRecord.IMeasurement {
143
+ currentType?: string;
144
+ values: Array<IOCMFMeasurementValue>;
145
+ }
146
+ export interface IOCMFAuthorization extends chargyInterfaces.IAuthorization {
147
+ identificationStatus?: boolean | string;
148
+ identificationLevel?: string;
149
+ identificationFlags?: Array<string>;
150
+ }
151
+ export interface IOCMFChargingSession extends chargeTransparencyRecord.IChargingSession {
152
+ internalSessionId?: string;
153
+ authorizationStart: IOCMFAuthorization;
154
+ meter?: chargyInterfaces.IMeter;
155
+ measurements: Array<IOCMFMeasurement>;
156
+ }
157
+ export interface IOCMFCTRExtensions {
158
+ formatVersion?: string;
159
+ gatewayInformation?: string;
160
+ gatewaySerial?: string;
161
+ gatewayVersion?: string;
162
+ }
163
+ export interface IOCMFChargeTransparencyRecord extends chargeTransparencyRecord.IChargeTransparencyRecord {
164
+ ocmf?: IOCMFCTRExtensions;
165
+ chargingSessions?: Array<IOCMFChargingSession>;
166
+ }
167
+ export declare class OCMF {
168
+ private readonly chargy;
169
+ constructor(chargy: Chargy);
170
+ private tryToParseOCMFv1_0;
171
+ private mergeOCMFSessions;
172
+ private mergeChargeTransparencyRecords;
173
+ private validateOCMFSignature;
174
+ private parseOCMFJSONDocuments;
175
+ TryToParseOCMFDocument(OCMFDocument: string, PublicKey?: string | chargyInterfaces.IPublicKeyXY, PublicKeyEncoding?: string, ContainerInfos?: unknown): Promise<chargeTransparencyRecord.IChargeTransparencyRecord | chargyInterfaces.ISessionCryptoResult>;
176
+ TryToParseOCMFDocuments(OCMFDocuments: string[], PublicKey?: string | chargyInterfaces.IPublicKeyXY, PublicKeyEncoding?: string, ContainerInfos?: unknown): Promise<chargeTransparencyRecord.IChargeTransparencyRecord | chargyInterfaces.ISessionCryptoResult>;
177
+ private convertToISO8601;
178
+ }
179
+ //# sourceMappingURL=OCMF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OCMF.d.ts","sourceRoot":"","sources":["../src/OCMF.ts"],"names":[],"mappings":"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"}
package/dist/OCPI.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { Chargy } from './chargy';
2
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
3
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
4
+ export declare class OCPI {
5
+ private readonly chargy;
6
+ constructor(chargy: Chargy);
7
+ private bufferToHex;
8
+ private bufferToNumber;
9
+ tryToParseOCPIFormat(SomeJSON: unknown): Promise<chargeTransparencyRecord.IChargeTransparencyRecord | chargyInterfaces.ISessionCryptoResult>;
10
+ }
11
+ //# sourceMappingURL=OCPI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OCPI.d.ts","sourceRoot":"","sources":["../src/OCPI.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAA0B,UAAU,CAAA;AAGrD,OAAO,KAAK,gBAAgB,MAAe,+BAA+B,CAAA;AAC1E,OAAO,KAAK,wBAAwB,MAAO,wCAAwC,CAAA;AAKnF,qBAAa,IAAI;IAEb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAG,MAAM;IAK3B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;IAWT,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAI,OAAO,CAAC,wBAAwB,CAAC,yBAAyB,GAAC,gBAAgB,CAAC,oBAAoB,CAAC;CA2pB3J"}
package/dist/PCDF.d.ts ADDED
@@ -0,0 +1,119 @@
1
+ import type { Chargy } from './chargy';
2
+ import { ACrypt } from './ACrypt';
3
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
4
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
5
+ import Decimal from 'decimal.js';
6
+ export declare const PCDF_PREFIX = "128.8.0";
7
+ export declare const PCDF_FIELD_ORDER: readonly ["ST", "CT", "CD", "TV", "BV", "CSC", "SP", "RV", "SI", "CS", "HW", "DT", "PK", "SG"];
8
+ export type PCDFFieldKey = typeof PCDF_FIELD_ORDER[number];
9
+ export interface IPCDFRawFields extends Record<PCDFFieldKey, string> {
10
+ ST: string;
11
+ CT: string;
12
+ CD: string;
13
+ TV: string;
14
+ BV: string;
15
+ CSC: string;
16
+ SP: string;
17
+ RV: string;
18
+ SI: string;
19
+ CS: string;
20
+ HW: string;
21
+ DT: string;
22
+ PK: string;
23
+ SG: string;
24
+ }
25
+ export interface IPCDFSessionInfo {
26
+ idTag: string;
27
+ idTagType: string;
28
+ transactionId: string;
29
+ }
30
+ export interface IPCDFValidatedData {
31
+ startTime: string;
32
+ stopTime: string;
33
+ durationSeconds: number;
34
+ timeValid: boolean;
35
+ billingValid: boolean;
36
+ chargingSessionCounter: number;
37
+ stopPresent: boolean;
38
+ readingValue: Decimal;
39
+ readingUnit: string;
40
+ session: IPCDFSessionInfo;
41
+ softwareChecksum: string;
42
+ hardwareSerial: string;
43
+ dcMeterType: number;
44
+ publicKey: chargyInterfaces.IPublicKeyXY;
45
+ signature: chargyInterfaces.ISignatureRS;
46
+ }
47
+ export interface IPCDFDocument {
48
+ "@context": "PCDF";
49
+ raw: string;
50
+ fields: IPCDFRawFields;
51
+ signedPayload: string;
52
+ hashAlgorithm: string;
53
+ hashValue: string;
54
+ data: IPCDFValidatedData;
55
+ publicKeyHex: string;
56
+ signatureHex: string;
57
+ validationStatus: chargyInterfaces.VerificationResult;
58
+ }
59
+ export interface IPCDFMeasurementValue extends chargeTransparencyRecord.IMeasurementValue {
60
+ pcdfDocument?: IPCDFDocument;
61
+ }
62
+ export interface IPCDFMeasurement extends chargeTransparencyRecord.IMeasurement {
63
+ values: Array<IPCDFMeasurementValue>;
64
+ }
65
+ export interface IPCDFChargingSession extends chargeTransparencyRecord.IChargingSession {
66
+ measurements: Array<IPCDFMeasurement>;
67
+ }
68
+ export interface IPCDFChargeTransparencyRecord extends chargeTransparencyRecord.IChargeTransparencyRecord {
69
+ pcdf?: {
70
+ chargingSessionCounter: number;
71
+ timeValid: boolean;
72
+ billingValid: boolean;
73
+ stopPresent: boolean;
74
+ chargingDuration: number;
75
+ dcMeterType: number;
76
+ softwareChecksum: string;
77
+ };
78
+ chargingSessions?: Array<IPCDFChargingSession>;
79
+ }
80
+ export declare class PCDFParseError extends Error {
81
+ readonly code: string;
82
+ readonly field?: PCDFFieldKey | undefined;
83
+ constructor(code: string, message: string, field?: PCDFFieldKey | undefined);
84
+ }
85
+ export declare class PCDFValidationError extends Error {
86
+ readonly errors: Array<string>;
87
+ constructor(errors: Array<string>);
88
+ }
89
+ export declare function isPCDFText(input: string | undefined): boolean;
90
+ export declare function unquotePCDFText(input: string): string;
91
+ export declare function stripPCDFControlCharacters(input: string): string;
92
+ export declare function parsePCDFDocument(input: string): {
93
+ raw: string;
94
+ fields: IPCDFRawFields;
95
+ signedPayload: string;
96
+ };
97
+ export declare function validatePCDFFields(fields: IPCDFRawFields): IPCDFValidatedData;
98
+ export declare function normalizePCDFPublicKeyHex(publicKeyHex: string): string;
99
+ export declare function parsePCDFPublicKey(publicKeyHex: string): chargyInterfaces.IPublicKeyXY;
100
+ export declare function parsePCDFSignature(signatureHex: string): chargyInterfaces.ISignatureRS;
101
+ export declare function verifyPCDFDocument(document: IPCDFDocument, chargy: Chargy): Promise<chargyInterfaces.VerificationResult>;
102
+ export declare class PCDFCrypt01 extends ACrypt {
103
+ constructor(chargy: Chargy);
104
+ VerifyChargingSession(chargingSession: chargeTransparencyRecord.IChargingSession): Promise<chargyInterfaces.ISessionCryptoResult>;
105
+ VerifyMeasurement(measurementValue: IPCDFMeasurementValue): Promise<chargyInterfaces.ICryptoResult>;
106
+ ViewMeasurement(measurementValue: IPCDFMeasurementValue, errorDiv: HTMLDivElement, introDiv: HTMLDivElement, infoDiv: HTMLDivElement, PlainTextDiv: HTMLDivElement, HashedPlainTextDiv: HTMLDivElement, PublicKeyDiv: HTMLDivElement, SignatureExpectedDiv: HTMLDivElement, SignatureCheckDiv: HTMLDivElement): Promise<Error | undefined>;
107
+ }
108
+ export interface IPCDFCrypt01Result extends chargyInterfaces.ICryptoResult {
109
+ hashValue?: string;
110
+ publicKey?: string;
111
+ signature?: chargyInterfaces.ISignatureRS;
112
+ }
113
+ export declare class PCDF {
114
+ private readonly chargy;
115
+ constructor(chargy: Chargy);
116
+ TryToParsePCDFDocument(PCDFDocument: string, externalPublicKey?: string): Promise<IPCDFChargeTransparencyRecord | chargyInterfaces.ISessionCryptoResult>;
117
+ private createChargeTransparencyRecord;
118
+ }
119
+ //# sourceMappingURL=PCDF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PCDF.d.ts","sourceRoot":"","sources":["../src/PCDF.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAqB,UAAU,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAA0B,UAAU,CAAA;AACrD,OAAO,KAAK,gBAAgB,MAAe,+BAA+B,CAAA;AAC1E,OAAO,KAAK,wBAAwB,MAAO,wCAAwC,CAAA;AAEnF,OAAO,OAAO,MAA6B,YAAY,CAAC;AAGxD,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,eAAO,MAAM,gBAAgB,gGAenB,CAAC;AAMX,MAAM,MAAM,YAAY,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC;IAChE,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;IACZ,EAAE,EAAG,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAW,MAAM,CAAC;IACvB,SAAS,EAAO,MAAM,CAAC;IACvB,aAAa,EAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAe,MAAM,CAAC;IAC/B,QAAQ,EAAgB,MAAM,CAAC;IAC/B,eAAe,EAAS,MAAM,CAAC;IAC/B,SAAS,EAAe,OAAO,CAAC;IAChC,YAAY,EAAY,OAAO,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAa,OAAO,CAAC;IAChC,YAAY,EAAY,OAAO,CAAC;IAChC,WAAW,EAAa,MAAM,CAAC;IAC/B,OAAO,EAAiB,gBAAgB,CAAC;IACzC,gBAAgB,EAAQ,MAAM,CAAC;IAC/B,cAAc,EAAU,MAAM,CAAC;IAC/B,WAAW,EAAa,MAAM,CAAC;IAC/B,SAAS,EAAe,gBAAgB,CAAC,YAAY,CAAC;IACtD,SAAS,EAAe,gBAAgB,CAAC,YAAY,CAAC;CACzD;AAED,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAS,MAAM,CAAC;IAC1B,GAAG,EAAgB,MAAM,CAAC;IAC1B,MAAM,EAAa,cAAc,CAAC;IAClC,aAAa,EAAM,MAAM,CAAC;IAC1B,aAAa,EAAM,MAAM,CAAC;IAC1B,SAAS,EAAU,MAAM,CAAC;IAC1B,IAAI,EAAe,kBAAkB,CAAC;IACtC,YAAY,EAAO,MAAM,CAAC;IAC1B,YAAY,EAAO,MAAM,CAAC;IAC1B,gBAAgB,EAAG,gBAAgB,CAAC,kBAAkB,CAAC;CAC1D;AAED,MAAM,WAAW,qBAAsB,SAAQ,wBAAwB,CAAC,iBAAiB;IACrF,YAAY,CAAC,EAAE,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,gBAAiB,SAAQ,wBAAwB,CAAC,YAAY;IAC3E,MAAM,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB,CAAC,gBAAgB;IACnF,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB,CAAC,yBAAyB;IACrG,IAAI,CAAC,EAAE;QACH,sBAAsB,EAAE,MAAM,CAAC;QAC/B,SAAS,EAAe,OAAO,CAAC;QAChC,YAAY,EAAY,OAAO,CAAC;QAChC,WAAW,EAAa,OAAO,CAAC;QAChC,gBAAgB,EAAQ,MAAM,CAAC;QAC/B,WAAW,EAAa,MAAM,CAAC;QAC/B,gBAAgB,EAAQ,MAAM,CAAC;KAClC,CAAC;IACF,gBAAgB,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;CAClD;AAED,qBAAa,cAAe,SAAQ,KAAK;IAEzB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAErB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY;gBAFpB,IAAI,EAAE,MAAM,EACrB,OAAO,EAAQ,MAAM,EACZ,KAAK,CAAC,EAAE,YAAY,YAAA;CAK5C;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAE9B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;gBAArB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;CAK7C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAS7D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASrD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYhE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;IAC9C,GAAG,EAAa,MAAM,CAAC;IACvB,MAAM,EAAU,cAAc,CAAC;IAC/B,aAAa,EAAG,MAAM,CAAC;CAC1B,CAoEA;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,CAyF7E;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAkBtE;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAatF;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAAC,YAAY,CA0BtF;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAI,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAoBvG;AAED,qBAAa,WAAY,SAAQ,MAAM;gBAEvB,MAAM,EAAE,MAAM;IAKpB,qBAAqB,CAAC,eAAe,EAAE,wBAAwB,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IAgCjI,iBAAiB,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC;IA0BnG,eAAe,CAAC,gBAAgB,EAAO,qBAAqB,EAC5C,QAAQ,EAAe,cAAc,EACrC,QAAQ,EAAe,cAAc,EACrC,OAAO,EAAgB,cAAc,EACrC,YAAY,EAAW,cAAc,EACrC,kBAAkB,EAAK,cAAc,EACrC,YAAY,EAAW,cAAc,EACrC,oBAAoB,EAAG,cAAc,EACrC,iBAAiB,EAAM,cAAc,GAAI,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;CA0B5F;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB,CAAC,aAAa;IACtE,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,SAAS,CAAC,EAAG,gBAAgB,CAAC,YAAY,CAAC;CAC9C;AAED,qBAAa,IAAI;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAG9B,sBAAsB,CAAC,YAAY,EAAQ,MAAM,EAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,GAAC,gBAAgB,CAAC,oBAAoB,CAAC;IAmD7I,OAAO,CAAC,8BAA8B;CA2GzC"}