@acmekit/auth 2.13.38 → 2.13.39
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.d.ts.map +1 -1
- package/dist/index.js +27 -5
- package/dist/index.js.map +1 -1
- package/dist/services/auth-provider.d.ts +5 -10
- package/dist/services/auth-provider.d.ts.map +1 -1
- package/dist/services/auth-provider.js +10 -43
- package/dist/services/auth-provider.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/loaders/providers.d.ts +0 -5
- package/dist/loaders/providers.d.ts.map +0 -1
- package/dist/loaders/providers.js +0 -41
- package/dist/loaders/providers.js.map +0 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAChB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAChB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;;;;AAU7C,wBA2BE"}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
require("./types");
|
|
7
4
|
const _services_1 = require("./services");
|
|
8
|
-
const providers_1 = __importDefault(require("./loaders/providers"));
|
|
9
5
|
const utils_1 = require("@acmekit/framework/utils");
|
|
6
|
+
const modules_sdk_1 = require("@acmekit/framework/modules-sdk");
|
|
7
|
+
const _types_1 = require("./types");
|
|
8
|
+
const acmekit_cloud_auth_1 = require("./providers/acmekit-cloud-auth");
|
|
10
9
|
exports.default = (0, utils_1.Module)(utils_1.Modules.AUTH, {
|
|
11
10
|
service: _services_1.AuthModuleService,
|
|
12
|
-
loaders: [
|
|
11
|
+
loaders: [
|
|
12
|
+
(0, modules_sdk_1.createProvidersLoader)({
|
|
13
|
+
prefix: _types_1.AuthProviderRegistrationPrefix,
|
|
14
|
+
identifiersKey: _types_1.AuthIdentifiersRegistrationName,
|
|
15
|
+
defaults: [
|
|
16
|
+
{
|
|
17
|
+
service: acmekit_cloud_auth_1.AcmeKitCloudAuthService,
|
|
18
|
+
id: "cloud",
|
|
19
|
+
options: (opts) => (opts.cloud ?? {}),
|
|
20
|
+
condition: (opts) => {
|
|
21
|
+
const c = opts?.cloud;
|
|
22
|
+
if (!c || c.disabled)
|
|
23
|
+
return false;
|
|
24
|
+
if (!c.environment_handle && !c.sandbox_handle)
|
|
25
|
+
return false;
|
|
26
|
+
return !!(c.oauth_authorize_endpoint &&
|
|
27
|
+
c.oauth_token_endpoint &&
|
|
28
|
+
c.api_key &&
|
|
29
|
+
c.callback_url);
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
}),
|
|
34
|
+
],
|
|
13
35
|
});
|
|
14
36
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,mBAAgB;AAChB,yCAA6C;AAC7C,oDAA0D;AAC1D,gEAAsE;AACtE,mCAIe;AACf,uEAAwE;AAExE,kBAAe,IAAA,cAAM,EAAC,eAAO,CAAC,IAAI,EAAE;IAClC,OAAO,EAAE,6BAAiB;IAC1B,OAAO,EAAE;QACP,IAAA,mCAAqB,EAAC;YACpB,MAAM,EAAE,uCAA8B;YACtC,cAAc,EAAE,wCAA+B;YAC/C,QAAQ,EAAE;gBACR;oBACE,OAAO,EAAE,4CAAuB;oBAChC,EAAE,EAAE,OAAO;oBACX,OAAO,EAAE,CAAC,IAA6B,EAAE,EAAE,CACzC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAA4B;oBAC/C,SAAS,EAAE,CAAC,IAA6B,EAAE,EAAE;wBAC3C,MAAM,CAAC,GAAG,IAAI,EAAE,KAAmC,CAAA;wBACnD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ;4BAAE,OAAO,KAAK,CAAA;wBAClC,IAAI,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,cAAc;4BAAE,OAAO,KAAK,CAAA;wBAC5D,OAAO,CAAC,CAAC,CACP,CAAC,CAAC,wBAAwB;4BAC1B,CAAC,CAAC,oBAAoB;4BACtB,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,YAAY,CACf,CAAA;oBACH,CAAC;iBACF;aACF;SACF,CAAC;KACH;CACF,CAAC,CAAA"}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
import { AuthenticationInput, AuthenticationResponse, AuthIdentityProviderService, AuthTypes
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
logger?: Logger;
|
|
1
|
+
import { AuthenticationInput, AuthenticationResponse, AuthIdentityProviderService, AuthTypes } from "@acmekit/framework/types";
|
|
2
|
+
declare const AuthProviderService_base: new (container: Record<string, unknown>) => {
|
|
3
|
+
readonly __container__: Record<string, unknown>;
|
|
4
|
+
readonly providers: import("@acmekit/framework/utils").ProviderRegistry<AuthTypes.IAuthProvider>;
|
|
6
5
|
};
|
|
7
|
-
export default class AuthProviderService {
|
|
8
|
-
#private;
|
|
9
|
-
protected dependencies: InjectedDependencies;
|
|
10
|
-
constructor(container: InjectedDependencies);
|
|
11
|
-
protected retrieveProviderRegistration(providerId: string): AuthTypes.IAuthProvider;
|
|
6
|
+
export default class AuthProviderService extends AuthProviderService_base {
|
|
12
7
|
authenticate(provider: string, auth: AuthenticationInput, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
|
|
13
8
|
register(provider: string, auth: AuthenticationInput, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
|
|
14
9
|
update(provider: string, data: Record<string, unknown>, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/services/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,SAAS,
|
|
1
|
+
{"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/services/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,SAAS,EACV,MAAM,0BAA0B,CAAA;;;;;AAOjC,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,wBAI/C;IACM,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,mBAAmB,EACzB,2BAA2B,EAAE,2BAA2B,GACvD,OAAO,CAAC,sBAAsB,CAAC;IAK5B,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,mBAAmB,EACzB,2BAA2B,EAAE,2BAA2B,GACvD,OAAO,CAAC,sBAAsB,CAAC;IAK5B,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,2BAA2B,EAAE,2BAA2B,GACvD,OAAO,CAAC,sBAAsB,CAAC;IAK5B,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,mBAAmB,EACzB,2BAA2B,EAAE,2BAA2B,GACvD,OAAO,CAAC,sBAAsB,CAAC;CAOnC"}
|
|
@@ -1,61 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
-
};
|
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var _AuthProviderService_logger;
|
|
14
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
15
4
|
const _types_1 = require("../types");
|
|
16
|
-
class AuthProviderService {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
? container.logger
|
|
22
|
-
: console, "f");
|
|
23
|
-
}
|
|
24
|
-
retrieveProviderRegistration(providerId) {
|
|
25
|
-
try {
|
|
26
|
-
return this.dependencies[`${_types_1.AuthProviderRegistrationPrefix}${providerId}`];
|
|
27
|
-
}
|
|
28
|
-
catch (err) {
|
|
29
|
-
if (err.name === "AwilixResolutionError") {
|
|
30
|
-
const errMessage = `
|
|
31
|
-
Unable to retrieve the auth provider with id: ${providerId}
|
|
32
|
-
Please make sure that the provider is registered in the container and it is configured correctly in your project configuration file.`;
|
|
33
|
-
// Log full error for debugging
|
|
34
|
-
__classPrivateFieldGet(this, _AuthProviderService_logger, "f").error(`AwilixResolutionError: ${err.message}`, err);
|
|
35
|
-
throw new Error(errMessage);
|
|
36
|
-
}
|
|
37
|
-
const errMessage = `Unable to retrieve the auth provider with id: ${providerId}, the following error occurred: ${err.message}`;
|
|
38
|
-
__classPrivateFieldGet(this, _AuthProviderService_logger, "f").error(errMessage);
|
|
39
|
-
throw new Error(errMessage);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
5
|
+
class AuthProviderService extends (0, utils_1.ProviderService)({
|
|
6
|
+
prefix: _types_1.AuthProviderRegistrationPrefix,
|
|
7
|
+
identifiersKey: _types_1.AuthIdentifiersRegistrationName,
|
|
8
|
+
moduleName: "auth",
|
|
9
|
+
}) {
|
|
42
10
|
async authenticate(provider, auth, authIdentityProviderService) {
|
|
43
|
-
const providerHandler = this.
|
|
11
|
+
const providerHandler = this.providers.resolve(provider);
|
|
44
12
|
return await providerHandler.authenticate(auth, authIdentityProviderService);
|
|
45
13
|
}
|
|
46
14
|
async register(provider, auth, authIdentityProviderService) {
|
|
47
|
-
const providerHandler = this.
|
|
15
|
+
const providerHandler = this.providers.resolve(provider);
|
|
48
16
|
return await providerHandler.register(auth, authIdentityProviderService);
|
|
49
17
|
}
|
|
50
18
|
async update(provider, data, authIdentityProviderService) {
|
|
51
|
-
const providerHandler = this.
|
|
19
|
+
const providerHandler = this.providers.resolve(provider);
|
|
52
20
|
return await providerHandler.update(data, authIdentityProviderService);
|
|
53
21
|
}
|
|
54
22
|
async validateCallback(provider, auth, authIdentityProviderService) {
|
|
55
|
-
const providerHandler = this.
|
|
23
|
+
const providerHandler = this.providers.resolve(provider);
|
|
56
24
|
return await providerHandler.validateCallback(auth, authIdentityProviderService);
|
|
57
25
|
}
|
|
58
26
|
}
|
|
59
|
-
_AuthProviderService_logger = new WeakMap();
|
|
60
27
|
exports.default = AuthProviderService;
|
|
61
28
|
//# sourceMappingURL=auth-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/services/auth-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/services/auth-provider.ts"],"names":[],"mappings":";;AAMA,oDAA0D;AAC1D,mCAGe;AAEf,MAAqB,mBAAoB,SAAQ,IAAA,uBAAe,EAA0B;IACxF,MAAM,EAAE,uCAA8B;IACtC,cAAc,EAAE,wCAA+B;IAC/C,UAAU,EAAE,MAAM;CACnB,CAAC;IACA,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,IAAyB,EACzB,2BAAwD;QAExD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACxD,OAAO,MAAM,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,IAAyB,EACzB,2BAAwD;QAExD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACxD,OAAO,MAAM,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IAC1E,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAAgB,EAChB,IAA6B,EAC7B,2BAAwD;QAExD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACxD,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,IAAyB,EACzB,2BAAwD;QAExD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACxD,OAAO,MAAM,eAAe,CAAC,gBAAgB,CAC3C,IAAI,EACJ,2BAA2B,CAC5B,CAAA;IACH,CAAC;CACF;AA3CD,sCA2CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/index.ts","../src/joiner-config.ts","../src/
|
|
1
|
+
{"root":["../src/index.ts","../src/joiner-config.ts","../src/migrations/migration20240205025928.ts","../src/migrations/migration20240529080336.ts","../src/migrations/migration20241202100304.ts","../src/models/auth-identity.ts","../src/models/index.ts","../src/models/provider-identity.ts","../src/providers/acmekit-cloud-auth.ts","../src/services/auth-module.ts","../src/services/auth-provider.ts","../src/services/index.ts","../src/types/index.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acmekit/auth",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.39",
|
|
4
4
|
"description": "AcmeKit Auth module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"orm:cache:clear": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm cache:clear"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@acmekit/framework": "2.13.
|
|
40
|
-
"@acmekit/test-utils": "2.13.
|
|
39
|
+
"@acmekit/framework": "2.13.39",
|
|
40
|
+
"@acmekit/test-utils": "2.13.39"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
|
-
"@acmekit/framework": "2.13.
|
|
43
|
+
"@acmekit/framework": "2.13.39"
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { LoaderOptions, ModulesSdkTypes } from "@acmekit/framework/types";
|
|
2
|
-
import { AuthModuleOptions } from "../types";
|
|
3
|
-
declare const _default: ({ container, options, }: LoaderOptions<(ModulesSdkTypes.ModuleServiceInitializeOptions | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions) & AuthModuleOptions>) => Promise<void>;
|
|
4
|
-
export default _default;
|
|
5
|
-
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAEL,iBAAiB,EAElB,MAAM,QAAQ,CAAA;yBA6CO,yBAGnB,aAAa,CACd,CACI,eAAe,CAAC,8BAA8B,GAC9C,eAAe,CAAC,6CAA6C,CAChE,GACC,iBAAiB,CACpB,KAAG,OAAO,CAAC,IAAI,CAAC;AATjB,wBAsBC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const awilix_1 = require("@acmekit/framework/awilix");
|
|
4
|
-
const modules_sdk_1 = require("@acmekit/framework/modules-sdk");
|
|
5
|
-
const _types_1 = require("../types");
|
|
6
|
-
const acmekit_cloud_auth_1 = require("../providers/acmekit-cloud-auth");
|
|
7
|
-
const validateCloudOptions = (options) => {
|
|
8
|
-
const { oauth_authorize_endpoint, oauth_token_endpoint, environment_handle, sandbox_handle, api_key, callback_url, } = options ?? {};
|
|
9
|
-
if (!environment_handle && !sandbox_handle) {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
if (!oauth_authorize_endpoint ||
|
|
13
|
-
!oauth_token_endpoint ||
|
|
14
|
-
!api_key ||
|
|
15
|
-
!callback_url) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
return true;
|
|
19
|
-
};
|
|
20
|
-
const registrationFn = async (klass, container, pluginOptions) => {
|
|
21
|
-
container.register({
|
|
22
|
-
[_types_1.AuthProviderRegistrationPrefix + pluginOptions.id]: (0, awilix_1.asFunction)((cradle) => new klass(cradle, pluginOptions.options ?? {}), {
|
|
23
|
-
lifetime: klass.LIFE_TIME || awilix_1.Lifetime.SINGLETON,
|
|
24
|
-
}),
|
|
25
|
-
});
|
|
26
|
-
container.registerAdd(_types_1.AuthIdentifiersRegistrationName, (0, awilix_1.asValue)(pluginOptions.id));
|
|
27
|
-
};
|
|
28
|
-
exports.default = async ({ container, options, }) => {
|
|
29
|
-
if (validateCloudOptions(options?.cloud) && !options?.cloud?.disabled) {
|
|
30
|
-
await registrationFn(acmekit_cloud_auth_1.AcmeKitCloudAuthService, container, {
|
|
31
|
-
options: options?.cloud,
|
|
32
|
-
id: "cloud",
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
await (0, modules_sdk_1.moduleProviderLoader)({
|
|
36
|
-
container,
|
|
37
|
-
providers: options?.providers || [],
|
|
38
|
-
registerServiceFn: registrationFn,
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=providers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":";;AAAA,sDAAyE;AACzE,gEAAqE;AAErE,mCAIe;AACf,wEAAyE;AAEzE,MAAM,oBAAoB,GAAG,CAAC,OAAmC,EAAE,EAAE;IACnE,MAAM,EACJ,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,YAAY,GACb,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjB,IAAI,CAAC,kBAAkB,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IACE,CAAC,wBAAwB;QACzB,CAAC,oBAAoB;QACrB,CAAC,OAAO;QACR,CAAC,YAAY,EACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE;IAC/D,SAAS,CAAC,QAAQ,CAAC;QACjB,CAAC,uCAA8B,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,IAAA,mBAAU,EAC7D,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,EAC1D;YACE,QAAQ,EAAE,KAAK,CAAC,SAAS,IAAI,iBAAQ,CAAC,SAAS;SAChD,CACF;KACF,CAAC,CAAA;IAEF,SAAS,CAAC,WAAW,CACnB,wCAA+B,EAC/B,IAAA,gBAAO,EAAC,aAAa,CAAC,EAAE,CAAC,CAC1B,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,KAAK,EAAE,EACpB,SAAS,EACT,OAAO,GAOR,EAAiB,EAAE;IAClB,IAAI,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACtE,MAAM,cAAc,CAAC,4CAAuB,EAAE,SAAS,EAAE;YACvD,OAAO,EAAE,OAAO,EAAE,KAAK;YACvB,EAAE,EAAE,OAAO;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,IAAA,kCAAoB,EAAC;QACzB,SAAS;QACT,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE;QACnC,iBAAiB,EAAE,cAAc;KAClC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|