@openapi-typescript-infra/service 4.25.0 → 4.27.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.
- package/build/bin/start-service.js +2 -2
- package/build/bin/start-service.js.map +1 -1
- package/build/bootstrap.d.ts +5 -0
- package/build/bootstrap.js +1 -1
- package/build/bootstrap.js.map +1 -1
- package/build/development/repl.d.ts +6 -1
- package/build/development/repl.js +51 -1
- package/build/development/repl.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.js +3 -0
- package/build/index.js.map +1 -1
- package/build/telemetry/index.d.ts +1 -0
- package/build/telemetry/index.js +13 -2
- package/build/telemetry/index.js.map +1 -1
- package/build/telemetry/instrumentations.d.ts +0 -2
- package/build/telemetry/instrumentations.js +0 -21
- package/build/telemetry/instrumentations.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +31 -31
- package/src/bin/start-service.ts +2 -2
- package/src/bootstrap.ts +1 -1
- package/src/development/repl.ts +66 -1
- package/src/index.ts +1 -0
- package/src/telemetry/index.ts +19 -3
- package/src/telemetry/instrumentations.ts +0 -31
|
@@ -21,9 +21,9 @@ const noTelemetry = (argv.repl || (0, env_1.isDev)()) && !argv.telemetry;
|
|
|
21
21
|
(0, bootstrap_1.bootstrap)({
|
|
22
22
|
...argv,
|
|
23
23
|
telemetry: !noTelemetry,
|
|
24
|
-
}).then(({ app, server }) => {
|
|
24
|
+
}).then(({ app, codepath, server }) => {
|
|
25
25
|
if (argv.repl) {
|
|
26
|
-
(0, repl_1.serviceRepl)(app, () => {
|
|
26
|
+
(0, repl_1.serviceRepl)(app, codepath, () => {
|
|
27
27
|
server?.close();
|
|
28
28
|
});
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-service.js","sourceRoot":"","sources":["../../src/bin/start-service.ts"],"names":[],"mappings":";;;;;;AACA,wDAAgC;AAEhC,8CAAkD;AAClD,gCAA+B;AAC/B,4CAAyC;AAEzC;;;;;GAKG;AACH,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC3C,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAA,WAAK,GAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9D,IAAA,qBAAS,EAAC;IACR,GAAG,IAAI;IACP,SAAS,EAAE,CAAC,WAAW;CACxB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"start-service.js","sourceRoot":"","sources":["../../src/bin/start-service.ts"],"names":[],"mappings":";;;;;;AACA,wDAAgC;AAEhC,8CAAkD;AAClD,gCAA+B;AAC/B,4CAAyC;AAEzC;;;;;GAKG;AACH,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC3C,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAA,WAAK,GAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9D,IAAA,qBAAS,EAAC;IACR,GAAG,IAAI;IACP,SAAS,EAAE,CAAC,WAAW;CACxB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;IACpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,IAAA,kBAAW,EAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;YAC9B,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/build/bootstrap.d.ts
CHANGED
|
@@ -11,7 +11,12 @@ interface BootstrapArguments {
|
|
|
11
11
|
version?: string;
|
|
12
12
|
}
|
|
13
13
|
export declare function bootstrap<SLocals extends AnyServiceLocals = ServiceLocals<ConfigurationSchema>, RLocals extends RequestLocals = RequestLocals>(argv?: BootstrapArguments): Promise<{
|
|
14
|
+
app: import("./types").ServiceExpress<SLocals>;
|
|
15
|
+
codepath: "build" | "src" | "dist" | undefined;
|
|
16
|
+
server: import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>;
|
|
17
|
+
} | {
|
|
14
18
|
server: import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | undefined;
|
|
15
19
|
app: import("./types").ServiceExpress<SLocals>;
|
|
20
|
+
codepath: "build" | "src" | "dist";
|
|
16
21
|
}>;
|
|
17
22
|
export {};
|
package/build/bootstrap.js
CHANGED
|
@@ -102,6 +102,6 @@ async function bootstrap(argv) {
|
|
|
102
102
|
const { startApp, listen } = await import('./express-app/app.js');
|
|
103
103
|
const app = await startApp(opts);
|
|
104
104
|
const server = argv?.nobind ? undefined : await listen(app);
|
|
105
|
-
return { server, app };
|
|
105
|
+
return { server, app, codepath };
|
|
106
106
|
}
|
|
107
107
|
//# sourceMappingURL=bootstrap.js.map
|
package/build/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import { AnyServiceLocals, ServiceExpress, ServiceLocals } from '../types';
|
|
2
2
|
import { ConfigurationSchema } from '../config/schema';
|
|
3
|
-
export declare function serviceRepl<SLocals extends AnyServiceLocals = ServiceLocals<ConfigurationSchema>>(app: ServiceExpress<SLocals>, onExit: () => void): void;
|
|
3
|
+
export declare function serviceRepl<SLocals extends AnyServiceLocals = ServiceLocals<ConfigurationSchema>>(app: ServiceExpress<SLocals>, codepath: string | undefined, onExit: () => void): void;
|
|
4
|
+
/**
|
|
5
|
+
* This decorator-like function can be applied to functions and the service will load and expose
|
|
6
|
+
* the function when the repl is engaged.
|
|
7
|
+
*/
|
|
8
|
+
export declare function addToRepl<SLocals extends AnyServiceLocals = ServiceLocals<ConfigurationSchema>>(fn: (app: ServiceExpress<SLocals>, ...args: unknown[]) => unknown, name?: string): void;
|
|
@@ -4,9 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.serviceRepl = serviceRepl;
|
|
7
|
+
exports.addToRepl = addToRepl;
|
|
7
8
|
const repl_1 = __importDefault(require("repl"));
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
10
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
|
|
11
|
+
const glob_1 = require("glob");
|
|
12
|
+
function serviceRepl(app, codepath, onExit) {
|
|
10
13
|
const rl = repl_1.default.start({
|
|
11
14
|
prompt: '> ',
|
|
12
15
|
});
|
|
@@ -24,6 +27,53 @@ function serviceRepl(app, onExit) {
|
|
|
24
27
|
}
|
|
25
28
|
});
|
|
26
29
|
app.locals.service.attachRepl?.(app, rl);
|
|
30
|
+
loadReplFunctions(app, codepath, rl);
|
|
27
31
|
rl.on('exit', onExit);
|
|
28
32
|
}
|
|
33
|
+
function loadReplFunctions(app, codepath, rl) {
|
|
34
|
+
if (!codepath) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const files = glob_1.glob.sync(path_1.default.join(codepath, '**/*.{js,ts}'));
|
|
38
|
+
files.forEach((file) => {
|
|
39
|
+
try {
|
|
40
|
+
// Read the file content as text
|
|
41
|
+
const fileContent = fs_1.default.readFileSync(file, 'utf-8');
|
|
42
|
+
// Check if @repl is present
|
|
43
|
+
if (/addToRepl\(/.test(fileContent)) {
|
|
44
|
+
// eslint-disable-next-line global-require, import/no-dynamic-require, @typescript-eslint/no-var-requires
|
|
45
|
+
const module = require(file); // Only require if @repl is found
|
|
46
|
+
// Look for functions with the __isReplFunction marker
|
|
47
|
+
Object.values(module).forEach((exported) => {
|
|
48
|
+
if (!exported) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (typeof exported === 'function' || typeof exported === 'object') {
|
|
52
|
+
const obj = exported;
|
|
53
|
+
for (const key of Object.keys(obj)) {
|
|
54
|
+
if (obj[key].__openApiServiceReplFunction) {
|
|
55
|
+
const fn = obj[key];
|
|
56
|
+
rl.context[key] = (...args) => fn(app, ...args);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
console.error(`Failed to load REPL functions from ${file}:`, err);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* This decorator-like function can be applied to functions and the service will load and expose
|
|
70
|
+
* the function when the repl is engaged.
|
|
71
|
+
*/
|
|
72
|
+
function addToRepl(fn, name) {
|
|
73
|
+
const functionName = name || fn.name;
|
|
74
|
+
if (!functionName) {
|
|
75
|
+
throw new Error('Function must have a name or a name must be provided.');
|
|
76
|
+
}
|
|
77
|
+
fn.__openApiServiceReplFunction = functionName;
|
|
78
|
+
}
|
|
29
79
|
//# sourceMappingURL=repl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/development/repl.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/development/repl.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
package/build/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.addToRepl = void 0;
|
|
17
18
|
__exportStar(require("./telemetry"), exports);
|
|
18
19
|
__exportStar(require("./express-app"), exports);
|
|
19
20
|
__exportStar(require("./types"), exports);
|
|
@@ -22,4 +23,6 @@ __exportStar(require("./config"), exports);
|
|
|
22
23
|
__exportStar(require("./error"), exports);
|
|
23
24
|
__exportStar(require("./bootstrap"), exports);
|
|
24
25
|
__exportStar(require("./hook"), exports);
|
|
26
|
+
var repl_1 = require("./development/repl");
|
|
27
|
+
Object.defineProperty(exports, "addToRepl", { enumerable: true, get: function () { return repl_1.addToRepl; } });
|
|
25
28
|
//# sourceMappingURL=index.js.map
|
package/build/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,8CAA4B;AAC5B,gDAA8B;AAC9B,0CAAwB;AACxB,wCAAsB;AACtB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,yCAAuB;AACvB,2CAA+C;AAAtC,iGAAA,SAAS,OAAA"}
|
|
@@ -14,5 +14,6 @@ export declare function getGlobalPrometheusExporter(): PrometheusExporter | unde
|
|
|
14
14
|
export declare function shutdownGlobalTelemetry(): Promise<void>;
|
|
15
15
|
export declare function startWithTelemetry<SLocals extends AnyServiceLocals = ServiceLocals<ConfigurationSchema>, RLocals extends RequestLocals = RequestLocals>(options: DelayLoadServiceStartOptions): Promise<{
|
|
16
16
|
app: import("../types").ServiceExpress<SLocals>;
|
|
17
|
+
codepath: "build" | "src" | "dist" | undefined;
|
|
17
18
|
server: import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>;
|
|
18
19
|
}>;
|
package/build/telemetry/index.js
CHANGED
|
@@ -28,6 +28,9 @@ exports.getGlobalPrometheusExporter = getGlobalPrometheusExporter;
|
|
|
28
28
|
exports.shutdownGlobalTelemetry = shutdownGlobalTelemetry;
|
|
29
29
|
exports.startWithTelemetry = startWithTelemetry;
|
|
30
30
|
const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto");
|
|
31
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
32
|
+
const resource_detector_container_1 = require("@opentelemetry/resource-detector-container");
|
|
33
|
+
const resource_detector_gcp_1 = require("@opentelemetry/resource-detector-gcp");
|
|
31
34
|
const opentelemetry = __importStar(require("@opentelemetry/sdk-node"));
|
|
32
35
|
const exporter_prometheus_1 = require("@opentelemetry/exporter-prometheus");
|
|
33
36
|
const instrumentations_1 = require("./instrumentations");
|
|
@@ -65,9 +68,17 @@ async function startGlobalTelemetry(serviceName) {
|
|
|
65
68
|
serviceName,
|
|
66
69
|
autoDetectResources: false,
|
|
67
70
|
traceExporter: getExporter(),
|
|
68
|
-
|
|
71
|
+
resourceDetectors: [
|
|
72
|
+
resources_1.envDetectorSync,
|
|
73
|
+
resources_1.hostDetectorSync,
|
|
74
|
+
resources_1.osDetectorSync,
|
|
75
|
+
resources_1.processDetectorSync,
|
|
76
|
+
resource_detector_container_1.containerDetector,
|
|
77
|
+
resource_detector_gcp_1.gcpDetector,
|
|
78
|
+
],
|
|
69
79
|
metricReader: prometheusExporter,
|
|
70
80
|
instrumentations,
|
|
81
|
+
logRecordProcessors: [],
|
|
71
82
|
views: [
|
|
72
83
|
new opentelemetry.metrics.View({
|
|
73
84
|
instrumentName: 'http_request_duration_seconds',
|
|
@@ -105,6 +116,6 @@ async function startWithTelemetry(options) {
|
|
|
105
116
|
await shutdownGlobalTelemetry();
|
|
106
117
|
app.locals.logger.info('OpenTelemetry shut down');
|
|
107
118
|
});
|
|
108
|
-
return { app, server };
|
|
119
|
+
return { app, codepath: options.codepath, server };
|
|
109
120
|
}
|
|
110
121
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ import { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';
|
|
|
8
8
|
import { NetInstrumentation } from '@opentelemetry/instrumentation-net';
|
|
9
9
|
import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';
|
|
10
10
|
import { PinoInstrumentation } from '@opentelemetry/instrumentation-pino';
|
|
11
|
-
import { Resource } from '@opentelemetry/resources';
|
|
12
11
|
declare const InstrumentationMap: {
|
|
13
12
|
'@opentelemetry/instrumentation-http': typeof HttpInstrumentation;
|
|
14
13
|
'@opentelemetry/instrumentation-dns': typeof DnsInstrumentation;
|
|
@@ -25,5 +24,4 @@ export type InstrumentationConfigMap = {
|
|
|
25
24
|
[Name in keyof typeof InstrumentationMap]?: ConfigArg<(typeof InstrumentationMap)[Name]>;
|
|
26
25
|
};
|
|
27
26
|
export declare function getAutoInstrumentations(inputConfigs?: InstrumentationConfigMap): Instrumentation[];
|
|
28
|
-
export declare function getResource(): Promise<Resource>;
|
|
29
27
|
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAutoInstrumentations = getAutoInstrumentations;
|
|
4
|
-
exports.getResource = getResource;
|
|
5
4
|
const instrumentation_dns_1 = require("@opentelemetry/instrumentation-dns");
|
|
6
5
|
const instrumentation_express_1 = require("@opentelemetry/instrumentation-express");
|
|
7
6
|
const instrumentation_undici_1 = require("@opentelemetry/instrumentation-undici");
|
|
@@ -11,9 +10,6 @@ const instrumentation_ioredis_1 = require("@opentelemetry/instrumentation-ioredi
|
|
|
11
10
|
const instrumentation_net_1 = require("@opentelemetry/instrumentation-net");
|
|
12
11
|
const instrumentation_pg_1 = require("@opentelemetry/instrumentation-pg");
|
|
13
12
|
const instrumentation_pino_1 = require("@opentelemetry/instrumentation-pino");
|
|
14
|
-
const resource_detector_container_1 = require("@opentelemetry/resource-detector-container");
|
|
15
|
-
const resource_detector_gcp_1 = require("@opentelemetry/resource-detector-gcp");
|
|
16
|
-
const resources_1 = require("@opentelemetry/resources");
|
|
17
13
|
const InstrumentationMap = {
|
|
18
14
|
'@opentelemetry/instrumentation-http': instrumentation_http_1.HttpInstrumentation,
|
|
19
15
|
'@opentelemetry/instrumentation-dns': instrumentation_dns_1.DnsInstrumentation,
|
|
@@ -43,21 +39,4 @@ function getAutoInstrumentations(inputConfigs = {}) {
|
|
|
43
39
|
})
|
|
44
40
|
.filter((i) => !!i);
|
|
45
41
|
}
|
|
46
|
-
// Async function to get combined resources
|
|
47
|
-
async function getResource() {
|
|
48
|
-
const syncDetectors = [
|
|
49
|
-
resources_1.envDetectorSync,
|
|
50
|
-
resources_1.hostDetectorSync,
|
|
51
|
-
resources_1.osDetectorSync,
|
|
52
|
-
resources_1.processDetectorSync,
|
|
53
|
-
];
|
|
54
|
-
const asyncDetectors = [
|
|
55
|
-
resource_detector_container_1.containerDetector,
|
|
56
|
-
resource_detector_gcp_1.gcpDetector,
|
|
57
|
-
];
|
|
58
|
-
const asyncResources = await (0, resources_1.detectResources)({ detectors: asyncDetectors });
|
|
59
|
-
const syncResources = (0, resources_1.detectResourcesSync)({ detectors: syncDetectors });
|
|
60
|
-
// Combine async and sync resources
|
|
61
|
-
return syncResources.merge(asyncResources);
|
|
62
|
-
}
|
|
63
42
|
//# sourceMappingURL=instrumentations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentations.js","sourceRoot":"","sources":["../../src/telemetry/instrumentations.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"instrumentations.js","sourceRoot":"","sources":["../../src/telemetry/instrumentations.ts"],"names":[],"mappings":";;AA6BA,0DAmBC;AA/CD,4EAAwE;AACxE,oFAAgF;AAChF,kFAA8E;AAC9E,8FAAyF;AACzF,8EAA0E;AAC1E,oFAAgF;AAChF,4EAAwE;AACxE,0EAAsE;AACtE,8EAA0E;AAE1E,MAAM,kBAAkB,GAAG;IACzB,qCAAqC,EAAE,0CAAmB;IAC1D,oCAAoC,EAAE,wCAAkB;IACxD,wCAAwC,EAAE,gDAAsB;IAChE,uCAAuC,EAAE,8CAAqB;IAC9D,6CAA6C,EAAE,yDAA0B;IACzE,wCAAwC,EAAE,gDAAsB;IAChE,oCAAoC,EAAE,wCAAkB;IACxD,mCAAmC,EAAE,sCAAiB;IACtD,qCAAqC,EAAE,0CAAmB;CAC3D,CAAC;AAQF,SAAgB,uBAAuB,CACrC,eAAyC,EAAE;IAE3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAA2C,CAAC;IACvF,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,qDAAqD;QACrD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5C,IAAI,CAAC;YACH,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAsB,CAAC;AAC7C,CAAC"}
|