@digitaldefiance/node-express-suite 4.24.0 → 4.24.2
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/package.json +1 -1
- package/src/interfaces/authentication-provider.d.ts +8 -1
- package/src/interfaces/authentication-provider.d.ts.map +1 -1
- package/src/middlewares/authenticate-token.d.ts.map +1 -1
- package/src/middlewares/authenticate-token.js +15 -12
- package/src/middlewares/authenticate-token.js.map +1 -1
- package/src/types.d.ts +1 -1
- package/src/types.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@ import type { IRequestUserDTO, ITokenUser } from '@digitaldefiance/suite-core-li
|
|
|
13
13
|
* Minimal user record returned by the authentication provider.
|
|
14
14
|
* Contains only the fields needed by the authentication middlewares.
|
|
15
15
|
*/
|
|
16
|
-
export interface IAuthenticatedUser<TLanguage extends string = string> {
|
|
16
|
+
export interface IAuthenticatedUser<TLanguage extends string = string, TID extends PlatformID = Buffer> {
|
|
17
17
|
/** Stringified user ID */
|
|
18
18
|
id: string;
|
|
19
19
|
/** Account status (e.g. 'Active', 'Suspended') */
|
|
@@ -26,6 +26,13 @@ export interface IAuthenticatedUser<TLanguage extends string = string> {
|
|
|
26
26
|
timezone: string;
|
|
27
27
|
/** Last login timestamp (ISO string or undefined) */
|
|
28
28
|
lastLogin?: string;
|
|
29
|
+
/**
|
|
30
|
+
* The full backend Member object with crypto capabilities.
|
|
31
|
+
* Populated by providers that load the Member during findUserById
|
|
32
|
+
* (e.g. BrightChain's MemberStore-backed provider).
|
|
33
|
+
* The middleware attaches this to req.member when present.
|
|
34
|
+
*/
|
|
35
|
+
member?: BackendMember<TID>;
|
|
29
36
|
}
|
|
30
37
|
/**
|
|
31
38
|
* Result of a crypto-authentication (mnemonic or password login).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication-provider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/authentication-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACX,MAAM,iCAAiC,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,kBAAkB,
|
|
1
|
+
{"version":3,"file":"authentication-provider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/authentication-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACX,MAAM,iCAAiC,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,kBAAkB,CACjC,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,GAAG,SAAS,UAAU,GAAG,MAAM;IAE/B,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM;IAChE,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,uBAAuB,CACtC,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,SAAS,SAAS,MAAM,GAAG,MAAM;IAEjC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAErE;;;OAGG;IACH,WAAW,CAAC,UAAU,SAAS,UAAU,GAAG,UAAU,EACpD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE9B;;;OAGG;IACH,wBAAwB,CAAC,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnC;;;OAGG;IACH,wBAAwB,CAAC,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticate-token.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAalE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CASzE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM,EACrE,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,EAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"authenticate-token.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAalE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CASzE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM,EACrE,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,EAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,CAmFnB"}
|
|
@@ -68,15 +68,10 @@ async function authenticateToken(application, req, res, next) {
|
|
|
68
68
|
// amazonq-ignore-next-line false positive, hardcoded string
|
|
69
69
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
|
|
70
70
|
}
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return res.status(403).send(
|
|
76
|
-
// amazonq-ignore-next-line false positive, hardcoded string
|
|
77
|
-
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
|
|
78
|
-
}
|
|
79
|
-
// Build the full request user DTO with roles
|
|
71
|
+
// Build the full request user DTO with roles.
|
|
72
|
+
// buildRequestUserDTO already checks account status (returns null for
|
|
73
|
+
// inactive accounts) and loads the Member + profile from the store,
|
|
74
|
+
// so we don't need a separate findUserById call.
|
|
80
75
|
const requestUserDTO = await authProvider.buildRequestUserDTO(user.userId);
|
|
81
76
|
if (!requestUserDTO) {
|
|
82
77
|
return res.status(403).send(
|
|
@@ -84,13 +79,21 @@ async function authenticateToken(application, req, res, next) {
|
|
|
84
79
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
|
|
85
80
|
}
|
|
86
81
|
req.user = requestUserDTO;
|
|
82
|
+
// If the auth provider attached the full backend Member object to the
|
|
83
|
+
// DTO, move it to req.member for handlers that need crypto capabilities
|
|
84
|
+
// (e.g. document sealing/signing). This avoids a redundant store lookup.
|
|
85
|
+
if ('member' in requestUserDTO) {
|
|
86
|
+
const { member, ...cleanDTO } = requestUserDTO;
|
|
87
|
+
req.user = cleanDTO;
|
|
88
|
+
req.member = member;
|
|
89
|
+
}
|
|
87
90
|
// Update global context with user's language and timezone
|
|
88
91
|
const context = i18n_lib_1.GlobalActiveContext.getInstance();
|
|
89
|
-
if (
|
|
90
|
-
context.userLanguage =
|
|
92
|
+
if (requestUserDTO.siteLanguage) {
|
|
93
|
+
context.userLanguage = requestUserDTO.siteLanguage;
|
|
91
94
|
}
|
|
92
95
|
context.setLanguageContextSpace('user');
|
|
93
|
-
context.userTimezone = createTimezone(
|
|
96
|
+
context.userTimezone = createTimezone(requestUserDTO.timezone);
|
|
94
97
|
next();
|
|
95
98
|
return res;
|
|
96
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticate-token.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-token.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA+BH,sCASC;AAkBD,
|
|
1
|
+
{"version":3,"file":"authenticate-token.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-token.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA+BH,sCASC;AAkBD,8CAwFC;AA/ID,wDAAgE;AAChE,oEAGyC;AAIzC,2DAA4D;AAO5D,iFAAiF;AACjF,SAAS,cAAc,CAAC,EAAU;IAChC,MAAM,OAAO,GAAG,8BAAmB,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa;SAC9C,WAAkC,CAAC;IACtC,OAAO,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAA4B;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACxE,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,iBAAiB,CACrC,WAA8B,EAC9B,GAAY,EACZ,GAAa,EACb,IAAkB;IAElB,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;IAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,GAAG;aACP,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CACH,IAAA,wCAAuB,EAAC,mCAAkB,CAAC,uBAAuB,CAAC,CACpE,CAAC;IACN,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI;YACzB,4DAA4D;YAC5D,IAAA,wCAAuB,EAAC,mCAAkB,CAAC,uBAAuB,CAAC,CACpE,CAAC;QACJ,CAAC;QAED,8CAA8C;QAC9C,sEAAsE;QACtE,oEAAoE;QACpE,iDAAiD;QACjD,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI;YACzB,4DAA4D;YAC5D,IAAA,wCAAuB,EAAC,mCAAkB,CAAC,uBAAuB,CAAC,CACpE,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC;QAE1B,sEAAsE;QACtE,wEAAwE;QACxE,yEAAyE;QACzE,IAAI,QAAQ,IAAI,cAAc,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,cAE/B,CAAC;YACF,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACnB,GAA8C,CAAC,MAAM,GAAG,MAAM,CAAC;QAClE,CAAC;QAED,0DAA0D;QAC1D,MAAM,OAAO,GAAG,8BAAmB,CAAC,WAAW,EAAE,CAAC;QAClD,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE/D,IAAI,EAAE,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,iCAAiB,EAAE,CAAC;YACrC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,IAAA,wCAAuB,EAC9B,mCAAkB,CAAC,uBAAuB,CAC3C;gBACD,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACpE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,IAAA,wCAAuB,EAC9B,mCAAkB,CAAC,uBAAuB,CAC3C;gBACD,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,IAAA,wCAAuB,EAC9B,mCAAkB,CAAC,sBAAsB,CAC1C;gBACD,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/src/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Member, PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
7
7
|
import { IRequestUserDTO } from '@digitaldefiance/suite-core-lib';
|
|
8
|
-
import { NextFunction, RequestHandler, Response } from 'express';
|
|
8
|
+
import { NextFunction, Request, RequestHandler, Response } from 'express';
|
|
9
9
|
import { ValidationChain } from 'express-validator';
|
|
10
10
|
import { IApiErrorResponse, IApiExpressValidationErrorResponse, IApiMessageResponse, IStatusCodeResponse, OpenAPIRouteMetadata } from './interfaces';
|
|
11
11
|
/**
|
package/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,kCAAkC,EAClC,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CACnC,OAAO,EAAE,OAAO,EAChB,GAAG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KACpB,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;KAC3C,CAAC,IAAI,CAAC,GAAG,OAAO;CAClB,CAAC;AAEF,OAAO,QAAQ,2BAA2B,CAAC;IACzC,UAAU,OAAO;QACf,IAAI,CAAC,EAAE,eAAe,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/B,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QACtC,QAAQ,CAAC,EAAE;YACT,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;YACzC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;YAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;YAC1C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;YAC3C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;SAC5C,CAAC;KACH;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,IAAI,CAAC,EAAE,eAAe,CAAC;YACvB,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/B,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;YACtC,QAAQ,CAAC,EAAE;gBACT,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;gBACzC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;gBAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;gBAC1C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;gBAC3C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC;aAC5C,CAAC;SACH;KACF;CACF;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,IAAI,CACrD,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,KACf,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,aAAa,EACvB,SAAS,SAAS,MAAM;IAExB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC,CAAC;QACpB,UAAU,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,KAAK,eAAe,EAAE,CAAC;QAClE,iBAAiB,EAAE,OAAO,CAAC;QAC3B,uBAAuB,EAAE,OAAO,CAAC;KAClC,CAAC;CACH;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM;IACrE,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,uBAAuB,EAAE,OAAO,CAAC;IACjC,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,EACpE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,EACnD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,UAAU,EAAE,MAAM,CAAC,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,KAAK,eAAe,EAAE,CAAC;IAClE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,uBAAuB,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GACA,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAU3B;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvD,MAAM,MAAM,uBAAuB,CAAC,SAAS,SAAS,MAAM,IACxD,eAAe,EAAE,GACjB,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,eAAe,EAAE,CAAC,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEzE,MAAM,MAAM,YAAY,GACpB,aAAa,GACb;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,GAC/B,YAAY,EAAE,CAAC;AAEnB,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,kCAAkC,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAEhF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,WAAW,IAAI,CAChD,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KACb,IAAI,CAAC"}
|