firebase-mcp 0.2.0 → 0.3.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/README.md +6 -11
- package/dist/cli/index.js +9 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts +39 -47
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +46 -37
- package/dist/config/index.js.map +1 -1
- package/dist/firebase/index.d.ts +9 -18
- package/dist/firebase/index.d.ts.map +1 -1
- package/dist/firebase/index.js +28 -30
- package/dist/firebase/index.js.map +1 -1
- package/dist/project/index.d.ts +17 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +38 -0
- package/dist/project/index.js.map +1 -0
- package/dist/server/index.d.ts +11 -19
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +96 -46
- package/dist/server/index.js.map +1 -1
- package/dist/task/index.d.ts +53 -0
- package/dist/task/index.d.ts.map +1 -0
- package/dist/task/index.js +177 -0
- package/dist/task/index.js.map +1 -0
- package/dist/tools/auth/get_user.d.ts +9 -15
- package/dist/tools/auth/get_user.d.ts.map +1 -1
- package/dist/tools/auth/get_user.js +29 -20
- package/dist/tools/auth/get_user.js.map +1 -1
- package/dist/tools/auth/index.d.ts +1 -0
- package/dist/tools/auth/index.d.ts.map +1 -1
- package/dist/tools/auth/index.js +1 -0
- package/dist/tools/auth/index.js.map +1 -1
- package/dist/tools/auth/list_users.d.ts +7 -11
- package/dist/tools/auth/list_users.d.ts.map +1 -1
- package/dist/tools/auth/list_users.js +19 -11
- package/dist/tools/auth/list_users.js.map +1 -1
- package/dist/tools/auth/read.d.ts +15 -0
- package/dist/tools/auth/read.d.ts.map +1 -0
- package/dist/tools/auth/read.js +72 -0
- package/dist/tools/auth/read.js.map +1 -0
- package/dist/tools/config/get_config.d.ts +6 -0
- package/dist/tools/config/get_config.d.ts.map +1 -0
- package/dist/tools/config/get_config.js +31 -0
- package/dist/tools/config/get_config.js.map +1 -0
- package/dist/tools/config/index.d.ts +3 -0
- package/dist/tools/config/index.d.ts.map +1 -0
- package/dist/tools/config/index.js +19 -0
- package/dist/tools/config/index.js.map +1 -0
- package/dist/tools/config/reload_config.d.ts +8 -0
- package/dist/tools/config/reload_config.d.ts.map +1 -0
- package/dist/tools/config/reload_config.js +44 -0
- package/dist/tools/config/reload_config.js.map +1 -0
- package/dist/tools/firestore/aggregate_collection.d.ts +7 -12
- package/dist/tools/firestore/aggregate_collection.d.ts.map +1 -1
- package/dist/tools/firestore/aggregate_collection.js +21 -15
- package/dist/tools/firestore/aggregate_collection.js.map +1 -1
- package/dist/tools/firestore/count_documents.d.ts +7 -12
- package/dist/tools/firestore/count_documents.d.ts.map +1 -1
- package/dist/tools/firestore/count_documents.js +21 -15
- package/dist/tools/firestore/count_documents.js.map +1 -1
- package/dist/tools/firestore/get_collection_schema.d.ts +8 -13
- package/dist/tools/firestore/get_collection_schema.d.ts.map +1 -1
- package/dist/tools/firestore/get_collection_schema.js +23 -19
- package/dist/tools/firestore/get_collection_schema.js.map +1 -1
- package/dist/tools/firestore/get_document.d.ts +10 -17
- package/dist/tools/firestore/get_document.d.ts.map +1 -1
- package/dist/tools/firestore/get_document.js +32 -23
- package/dist/tools/firestore/get_document.js.map +1 -1
- package/dist/tools/firestore/get_many_documents.d.ts +7 -13
- package/dist/tools/firestore/get_many_documents.d.ts.map +1 -1
- package/dist/tools/firestore/get_many_documents.js +25 -26
- package/dist/tools/firestore/get_many_documents.js.map +1 -1
- package/dist/tools/firestore/index.d.ts +1 -0
- package/dist/tools/firestore/index.d.ts.map +1 -1
- package/dist/tools/firestore/index.js +1 -0
- package/dist/tools/firestore/index.js.map +1 -1
- package/dist/tools/firestore/list_collections.d.ts +7 -12
- package/dist/tools/firestore/list_collections.d.ts.map +1 -1
- package/dist/tools/firestore/list_collections.js +25 -22
- package/dist/tools/firestore/list_collections.js.map +1 -1
- package/dist/tools/firestore/list_documents.d.ts +7 -12
- package/dist/tools/firestore/list_documents.d.ts.map +1 -1
- package/dist/tools/firestore/list_documents.js +22 -20
- package/dist/tools/firestore/list_documents.js.map +1 -1
- package/dist/tools/firestore/list_indexes.d.ts +7 -11
- package/dist/tools/firestore/list_indexes.d.ts.map +1 -1
- package/dist/tools/firestore/list_indexes.js +22 -22
- package/dist/tools/firestore/list_indexes.js.map +1 -1
- package/dist/tools/firestore/query_collection.d.ts +7 -13
- package/dist/tools/firestore/query_collection.d.ts.map +1 -1
- package/dist/tools/firestore/query_collection.js +24 -27
- package/dist/tools/firestore/query_collection.js.map +1 -1
- package/dist/tools/firestore/query_collection_group.d.ts +7 -13
- package/dist/tools/firestore/query_collection_group.d.ts.map +1 -1
- package/dist/tools/firestore/query_collection_group.js +24 -24
- package/dist/tools/firestore/query_collection_group.js.map +1 -1
- package/dist/tools/firestore/read.d.ts +65 -0
- package/dist/tools/firestore/read.d.ts.map +1 -0
- package/dist/tools/firestore/read.js +197 -0
- package/dist/tools/firestore/read.js.map +1 -0
- package/dist/tools/firestore/read_collections.d.ts +7 -13
- package/dist/tools/firestore/read_collections.d.ts.map +1 -1
- package/dist/tools/firestore/read_collections.js +27 -33
- package/dist/tools/firestore/read_collections.js.map +1 -1
- package/dist/tools/index.d.ts +9 -103
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +76 -79
- package/dist/tools/index.js.map +1 -1
- package/package.json +3 -5
- package/dist/access/index.d.ts +0 -23
- package/dist/access/index.d.ts.map +0 -1
- package/dist/access/index.js +0 -35
- package/dist/access/index.js.map +0 -1
package/dist/tools/index.js
CHANGED
|
@@ -33,24 +33,34 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.dispatchTool = exports.allToolDefinitions = void 0;
|
|
37
|
-
const
|
|
36
|
+
exports.dispatchTool = exports.allToolDefinitions = exports.FIRESTORE_READ = exports.reloadConfig = exports.RELOAD_CONFIG = exports.getConfig = exports.GET_CONFIG = exports.AUTH_READ = void 0;
|
|
37
|
+
const task_1 = require("../task");
|
|
38
38
|
const AuthTool = __importStar(require("./auth"));
|
|
39
|
+
const ConfigTool = __importStar(require("./config"));
|
|
39
40
|
const FirestoreTool = __importStar(require("./firestore"));
|
|
41
|
+
var auth_1 = require("./auth");
|
|
42
|
+
Object.defineProperty(exports, "AUTH_READ", { enumerable: true, get: function () { return auth_1.AUTH_READ; } });
|
|
43
|
+
var config_1 = require("./config");
|
|
44
|
+
Object.defineProperty(exports, "GET_CONFIG", { enumerable: true, get: function () { return config_1.GET_CONFIG; } });
|
|
45
|
+
Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return config_1.getConfig; } });
|
|
46
|
+
Object.defineProperty(exports, "RELOAD_CONFIG", { enumerable: true, get: function () { return config_1.RELOAD_CONFIG; } });
|
|
47
|
+
Object.defineProperty(exports, "reloadConfig", { enumerable: true, get: function () { return config_1.reloadConfig; } });
|
|
48
|
+
var firestore_1 = require("./firestore");
|
|
49
|
+
Object.defineProperty(exports, "FIRESTORE_READ", { enumerable: true, get: function () { return firestore_1.FIRESTORE_READ; } });
|
|
50
|
+
class UnknownToolError extends Error {
|
|
51
|
+
toolName;
|
|
52
|
+
_tag = 'UnknownTool';
|
|
53
|
+
constructor(toolName) {
|
|
54
|
+
super(`Unknown tool: ${toolName}`);
|
|
55
|
+
this.toolName = toolName;
|
|
56
|
+
this.name = 'UnknownToolError';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
40
59
|
exports.allToolDefinitions = [
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
FirestoreTool.
|
|
44
|
-
|
|
45
|
-
FirestoreTool.getCollectionSchemaDefinition,
|
|
46
|
-
FirestoreTool.countDocumentsDefinition,
|
|
47
|
-
FirestoreTool.readCollectionDefinition,
|
|
48
|
-
FirestoreTool.getDocumentDefinition,
|
|
49
|
-
FirestoreTool.getManyDocumentsDefinition,
|
|
50
|
-
FirestoreTool.queryCollectionDefinition,
|
|
51
|
-
FirestoreTool.queryCollectionGroupDefinition,
|
|
52
|
-
AuthTool.getUserDefinition,
|
|
53
|
-
AuthTool.listUsersDefinition,
|
|
60
|
+
ConfigTool.getConfigDefinition,
|
|
61
|
+
ConfigTool.reloadConfigDefinition,
|
|
62
|
+
FirestoreTool.firestoreReadDefinition,
|
|
63
|
+
AuthTool.authReadDefinition,
|
|
54
64
|
];
|
|
55
65
|
const toErrorResult = (code, message, details) => ({
|
|
56
66
|
content: [
|
|
@@ -67,69 +77,56 @@ const toErrorResult = (code, message, details) => ({
|
|
|
67
77
|
const toSuccessResult = (data) => ({
|
|
68
78
|
content: [{ type: 'text', text: JSON.stringify({ success: true, data }) }],
|
|
69
79
|
});
|
|
70
|
-
const dispatchTool = (name, args) =>
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
cause: String(err.cause),
|
|
122
|
-
}));
|
|
123
|
-
case 'AuthGetUserError':
|
|
124
|
-
case 'AuthListUsersError':
|
|
125
|
-
return effect_1.Effect.succeed(toErrorResult('AUTH_ERROR', err.message, {
|
|
126
|
-
cause: String(err.cause),
|
|
127
|
-
}));
|
|
128
|
-
case 'AuthUserNotFoundError':
|
|
129
|
-
return effect_1.Effect.succeed(toErrorResult('NOT_FOUND', `User not found: ${err.identifier}`, { identifier: err.identifier }));
|
|
130
|
-
case 'UnknownTool':
|
|
131
|
-
return effect_1.Effect.succeed(toErrorResult('UNKNOWN_TOOL', `Unknown tool: ${err.name}`));
|
|
132
|
-
}
|
|
133
|
-
}));
|
|
80
|
+
const dispatchTool = (ctx, name, args) => {
|
|
81
|
+
const { operation, ...rest } = args;
|
|
82
|
+
return task_1.Task.gen(function* () {
|
|
83
|
+
switch (name) {
|
|
84
|
+
case FirestoreTool.FIRESTORE_READ:
|
|
85
|
+
return yield* FirestoreTool.dispatchFirestoreRead(ctx, operation, rest);
|
|
86
|
+
case AuthTool.AUTH_READ:
|
|
87
|
+
return yield* AuthTool.dispatchAuthRead(ctx, operation, rest);
|
|
88
|
+
default:
|
|
89
|
+
return yield* task_1.Task.fail(new UnknownToolError(name));
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
.map(toSuccessResult)
|
|
93
|
+
.catchAll((err) => {
|
|
94
|
+
switch (err._tag) {
|
|
95
|
+
case 'AccessDeniedError':
|
|
96
|
+
return task_1.Task.succeed(toErrorResult('ACCESS_DENIED', `Access to path '${err.path}' is not allowed`, { path: err.path, suggestion: { allow: [err.path] } }));
|
|
97
|
+
case 'DocumentNotFoundError':
|
|
98
|
+
return task_1.Task.succeed(toErrorResult('NOT_FOUND', `Document not found: ${err.path}`, {
|
|
99
|
+
path: err.path,
|
|
100
|
+
}));
|
|
101
|
+
case 'FirestoreAggregateError':
|
|
102
|
+
case 'FirestoreReadError':
|
|
103
|
+
case 'FirestoreGetError':
|
|
104
|
+
case 'FirestoreQueryError':
|
|
105
|
+
case 'FirestoreListCollectionsError':
|
|
106
|
+
case 'FirestoreListDocumentsError':
|
|
107
|
+
case 'FirestoreCountError':
|
|
108
|
+
case 'FirestoreSchemaError':
|
|
109
|
+
case 'FirestoreGetManyError':
|
|
110
|
+
case 'FirestoreListIndexesError':
|
|
111
|
+
case 'FirestoreCollectionGroupQueryError':
|
|
112
|
+
return task_1.Task.succeed(toErrorResult('FIRESTORE_ERROR', err.message, {
|
|
113
|
+
cause: String(err.cause),
|
|
114
|
+
}));
|
|
115
|
+
case 'AuthGetUserError':
|
|
116
|
+
case 'AuthListUsersError':
|
|
117
|
+
return task_1.Task.succeed(toErrorResult('AUTH_ERROR', err.message, {
|
|
118
|
+
cause: String(err.cause),
|
|
119
|
+
}));
|
|
120
|
+
case 'AuthUserNotFoundError':
|
|
121
|
+
return task_1.Task.succeed(toErrorResult('NOT_FOUND', `User not found: ${err.identifier}`, {
|
|
122
|
+
identifier: err.identifier,
|
|
123
|
+
}));
|
|
124
|
+
case 'UnknownFirestoreOperationError':
|
|
125
|
+
case 'UnknownAuthOperationError':
|
|
126
|
+
case 'UnknownTool':
|
|
127
|
+
return task_1.Task.succeed(toErrorResult('UNKNOWN_TOOL', err.message));
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
};
|
|
134
131
|
exports.dispatchTool = dispatchTool;
|
|
135
132
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "firebase-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "MCP server that exposes Firebase Firestore to AI agents (Cursor, Claude Desktop, etc.)",
|
|
5
5
|
"main": "dist/cli/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -32,12 +32,10 @@
|
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"packageManager": "pnpm@10.33.0",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@effect/platform": "^0.96.0",
|
|
36
|
-
"@effect/platform-node": "^0.106.0",
|
|
37
35
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
38
|
-
"effect": "^3.21.0",
|
|
39
36
|
"firebase-admin": "^13.7.0",
|
|
40
37
|
"micromatch": "^4.0.8",
|
|
41
|
-
"minimist": "^1.2.8"
|
|
38
|
+
"minimist": "^1.2.8",
|
|
39
|
+
"zod": "^4.3.6"
|
|
42
40
|
}
|
|
43
41
|
}
|
package/dist/access/index.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Effect } from 'effect';
|
|
2
|
-
import { ConfigService } from '../config';
|
|
3
|
-
declare const AccessDeniedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
4
|
-
readonly _tag: "AccessDeniedError";
|
|
5
|
-
} & Readonly<A>;
|
|
6
|
-
export declare class AccessDeniedError extends AccessDeniedError_base<{
|
|
7
|
-
readonly path: string;
|
|
8
|
-
}> {
|
|
9
|
-
}
|
|
10
|
-
export declare const isAllowed: (path: string, rules: {
|
|
11
|
-
allow: readonly string[];
|
|
12
|
-
deny: readonly string[];
|
|
13
|
-
}) => boolean;
|
|
14
|
-
declare const AccessService_base: Effect.Service.Class<AccessService, "AccessService", {
|
|
15
|
-
readonly accessors: true;
|
|
16
|
-
readonly effect: Effect.Effect<{
|
|
17
|
-
check: (path: string) => Effect.Effect<void, never, never> | Effect.Effect<never, AccessDeniedError, never>;
|
|
18
|
-
}, never, ConfigService>;
|
|
19
|
-
}>;
|
|
20
|
-
export declare class AccessService extends AccessService_base {
|
|
21
|
-
}
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;;;;AAE1C,qBAAa,iBAAkB,SAAQ,uBAAsC;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;CAAG;AAEL,eAAO,MAAM,SAAS,GACpB,MAAM,MAAM,EACZ,OAAO;IAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,KAC3D,OAIF,CAAC;;;;sBAWoB,MAAM;;;AAT5B,qBAAa,aAAc,SAAQ,kBAgBlC;CAAG"}
|
package/dist/access/index.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AccessService = exports.isAllowed = exports.AccessDeniedError = void 0;
|
|
7
|
-
const effect_1 = require("effect");
|
|
8
|
-
const micromatch_1 = __importDefault(require("micromatch"));
|
|
9
|
-
const config_1 = require("../config");
|
|
10
|
-
class AccessDeniedError extends effect_1.Data.TaggedError('AccessDeniedError') {
|
|
11
|
-
}
|
|
12
|
-
exports.AccessDeniedError = AccessDeniedError;
|
|
13
|
-
const isAllowed = (path, rules) => {
|
|
14
|
-
if (micromatch_1.default.isMatch(path, [...rules.deny]))
|
|
15
|
-
return false;
|
|
16
|
-
if (micromatch_1.default.isMatch(path, [...rules.allow]))
|
|
17
|
-
return true;
|
|
18
|
-
return false;
|
|
19
|
-
};
|
|
20
|
-
exports.isAllowed = isAllowed;
|
|
21
|
-
class AccessService extends effect_1.Effect.Service()('AccessService', {
|
|
22
|
-
accessors: true,
|
|
23
|
-
effect: effect_1.Effect.gen(function* () {
|
|
24
|
-
const { config } = yield* config_1.ConfigService;
|
|
25
|
-
const rules = config.firestore.rules;
|
|
26
|
-
return {
|
|
27
|
-
check: (path) => (0, exports.isAllowed)(path, rules)
|
|
28
|
-
? effect_1.Effect.void
|
|
29
|
-
: effect_1.Effect.fail(new AccessDeniedError({ path })),
|
|
30
|
-
};
|
|
31
|
-
}),
|
|
32
|
-
}) {
|
|
33
|
-
}
|
|
34
|
-
exports.AccessService = AccessService;
|
|
35
|
-
//# sourceMappingURL=index.js.map
|
package/dist/access/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAsC;AACtC,4DAAoC;AACpC,sCAA0C;AAE1C,MAAa,iBAAkB,SAAQ,aAAI,CAAC,WAAW,CAAC,mBAAmB,CAEzE;CAAG;AAFL,8CAEK;AAEE,MAAM,SAAS,GAAG,CACvB,IAAY,EACZ,KAA4D,EACnD,EAAE;IACX,IAAI,oBAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,oBAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAPW,QAAA,SAAS,aAOpB;AAEF,MAAa,aAAc,SAAQ,eAAM,CAAC,OAAO,EAAiB,CAChE,eAAe,EACf;IACE,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,sBAAa,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAErC,OAAO;YACL,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CACtB,IAAA,iBAAS,EAAC,IAAI,EAAE,KAAK,CAAC;gBACpB,CAAC,CAAC,eAAM,CAAC,IAAI;gBACb,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACnD,CAAC;IACJ,CAAC,CAAC;CACH,CACF;CAAG;AAhBJ,sCAgBI"}
|