@evelan/jexity-widget 0.11.8 → 0.12.1
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.mjs +1047 -951
- package/dist/index.mjs.map +1 -1
- package/dist/react.mjs +1002 -906
- package/dist/react.mjs.map +1 -1
- package/dist/types/lib/history-patch.d.ts +8 -0
- package/dist/types/lib/history-patch.d.ts.map +1 -0
- package/dist/types/lib/widgetBootstrap.d.ts +2 -0
- package/dist/types/lib/widgetBootstrap.d.ts.map +1 -1
- package/dist/types/module/shell/WidgetShell.d.ts +6 -2
- package/dist/types/module/shell/WidgetShell.d.ts.map +1 -1
- package/dist/types/module/shell/hooks/useBootstrap.d.ts +10 -1
- package/dist/types/module/shell/hooks/useBootstrap.d.ts.map +1 -1
- package/dist/types/module/shell/hooks/usePathGuard.d.ts +7 -0
- package/dist/types/module/shell/hooks/usePathGuard.d.ts.map +1 -0
- package/dist/types/module/shell/shell.state.d.ts +12 -0
- package/dist/types/module/shell/shell.state.d.ts.map +1 -1
- package/dist/types/types.d.ts +13 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/widget.js +20 -20
- package/dist/widget.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Singleton history patch — wraps pushState/replaceState once and notifies
|
|
3
|
+
* all registered listeners on programmatic SPA navigation. Also forwards
|
|
4
|
+
* popstate so listeners don't need to wire it themselves.
|
|
5
|
+
*/
|
|
6
|
+
/** Register a navigation listener. Returns a cleanup function. */
|
|
7
|
+
export declare function addHistoryListener(fn: () => void): () => void;
|
|
8
|
+
//# sourceMappingURL=history-patch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-patch.d.ts","sourceRoot":"","sources":["../../../src/lib/history-patch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAQ7D"}
|
|
@@ -7,6 +7,7 @@ type BootstrapOk = {
|
|
|
7
7
|
ok: true;
|
|
8
8
|
token: string;
|
|
9
9
|
excludePaths: string[];
|
|
10
|
+
allowedUrls: string[];
|
|
10
11
|
};
|
|
11
12
|
type BootstrapErr = {
|
|
12
13
|
ok: false;
|
|
@@ -16,5 +17,6 @@ type BootstrapErr = {
|
|
|
16
17
|
type BootstrapResult = BootstrapOk | BootstrapErr;
|
|
17
18
|
export declare function bootstrapWidget(orgSlug: string, convexSiteUrl: string, projSlug?: string): Promise<BootstrapResult>;
|
|
18
19
|
export declare function isPathExcluded(pathname: string, excludePaths: string[]): boolean;
|
|
20
|
+
export declare function isUrlMatched(currentUrl: string, allowedUrl: string): boolean;
|
|
19
21
|
export {};
|
|
20
22
|
//# sourceMappingURL=widgetBootstrap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetBootstrap.d.ts","sourceRoot":"","sources":["../../../src/lib/widgetBootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"widgetBootstrap.d.ts","sourceRoot":"","sources":["../../../src/lib/widgetBootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAC7F,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,cAAc,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,CAAA;IAChE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AACD,KAAK,eAAe,GAAG,WAAW,GAAG,YAAY,CAAA;AAEjD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CA+B1B;AAGD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAKhF;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAY5E"}
|
|
@@ -2,7 +2,11 @@ import type { JexityChatOptions } from '../../types';
|
|
|
2
2
|
interface WidgetShellProps {
|
|
3
3
|
options: JexityChatOptions;
|
|
4
4
|
}
|
|
5
|
-
/**
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Outer shell: always runs bootstrap + path guard.
|
|
7
|
+
* Only mounts WidgetContent (and its Convex subscriptions) when the path is allowed,
|
|
8
|
+
* keeping hook counts stable in each component regardless of navigation.
|
|
9
|
+
*/
|
|
10
|
+
export declare function WidgetShell({ options }: WidgetShellProps): import("preact").JSX.Element | null;
|
|
7
11
|
export {};
|
|
8
12
|
//# sourceMappingURL=WidgetShell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetShell.d.ts","sourceRoot":"","sources":["../../../../src/module/shell/WidgetShell.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WidgetShell.d.ts","sourceRoot":"","sources":["../../../../src/module/shell/WidgetShell.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,UAAU,gBAAgB;IACxB,OAAO,EAAE,iBAAiB,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,uCAaxD"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
interface UseBootstrapOptions {
|
|
2
|
+
orgSlug: string;
|
|
3
|
+
projSlug?: string;
|
|
4
|
+
preToken?: string;
|
|
5
|
+
convexUrl?: string;
|
|
6
|
+
preAllowedUrls?: string[];
|
|
7
|
+
preExcludedPaths?: string[];
|
|
8
|
+
}
|
|
1
9
|
/**
|
|
2
10
|
* If no pre-existing bootstrap token was passed via mount options (i.e. the
|
|
3
11
|
* ESM/React path — JexityChatProvider), call POST /widget/bootstrap here and
|
|
@@ -8,5 +16,6 @@
|
|
|
8
16
|
* the initial fetch but still records the inputs so refreshBootstrapToken()
|
|
9
17
|
* can re-POST when the 1-hour token TTL elapses mid-session.
|
|
10
18
|
*/
|
|
11
|
-
export declare function useBootstrap(orgSlug
|
|
19
|
+
export declare function useBootstrap({ orgSlug, projSlug, preToken, convexUrl, preAllowedUrls, preExcludedPaths, }: UseBootstrapOptions): void;
|
|
20
|
+
export {};
|
|
12
21
|
//# sourceMappingURL=useBootstrap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBootstrap.d.ts","sourceRoot":"","sources":["../../../../../src/module/shell/hooks/useBootstrap.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"useBootstrap.d.ts","sourceRoot":"","sources":["../../../../../src/module/shell/hooks/useBootstrap.ts"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,EAAE,mBAAmB,GAAG,IAAI,CA+C5B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true when the widget is allowed to display on the current page.
|
|
3
|
+
* If no path-scoped allowedUrls are set, always returns true.
|
|
4
|
+
* Reacts to SPA navigation (popstate + history.pushState/replaceState).
|
|
5
|
+
*/
|
|
6
|
+
export declare function usePathGuard(): boolean;
|
|
7
|
+
//# sourceMappingURL=usePathGuard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePathGuard.d.ts","sourceRoot":"","sources":["../../../../../src/module/shell/hooks/usePathGuard.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAgCtC"}
|
|
@@ -16,6 +16,18 @@ export declare const isOpen: import("@preact/signals").Signal<boolean>;
|
|
|
16
16
|
export declare const widgetSource: import("@preact/signals").Signal<string | undefined>;
|
|
17
17
|
/** Bootstrap token issued by POST /widget/bootstrap. Read by useConvexSession. */
|
|
18
18
|
export declare const bootstrapToken: import("@preact/signals").Signal<Id<"widgetBootstrapTokens"> | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Path-scoped allow URLs from the bootstrap response (e.g. ["https://example.com/en", "https://example.com/ru"]).
|
|
21
|
+
* Multiple entries arise when a project has several path rules for the same origin.
|
|
22
|
+
* Set once after bootstrap; consumed by usePathGuard. Empty = no path restriction.
|
|
23
|
+
*/
|
|
24
|
+
export declare const allowedUrls: import("@preact/signals").Signal<string[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Per-domain exclude paths from the bootstrap response.
|
|
27
|
+
* Paths listed here hide the widget even when the domain/origin is allowed.
|
|
28
|
+
* Set once after bootstrap; consumed by usePathGuard.
|
|
29
|
+
*/
|
|
30
|
+
export declare const excludedPaths: import("@preact/signals").Signal<string[]>;
|
|
19
31
|
/**
|
|
20
32
|
* Inputs needed to re-POST /widget/bootstrap when the current token expires
|
|
21
33
|
* mid-session. Populated by useBootstrap on mount (both IIFE preToken path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.state.d.ts","sourceRoot":"","sources":["../../../../src/module/shell/shell.state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2CAA2C,CAAA;AAEnE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,2CAAgB,CAAA;AAEnC,wEAAwE;AACxE,eAAO,MAAM,YAAY,sDAAwC,CAAA;AAEjE,kFAAkF;AAClF,eAAO,MAAM,cAAc,2EAA6D,CAAA;AAExF;;;;GAIG;AACH,eAAO,MAAM,eAAe;aACjB,MAAM;cACL,MAAM,GAAG,SAAS;aACnB,MAAM;SACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"shell.state.d.ts","sourceRoot":"","sources":["../../../../src/module/shell/shell.state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2CAA2C,CAAA;AAEnE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,2CAAgB,CAAA;AAEnC,wEAAwE;AACxE,eAAO,MAAM,YAAY,sDAAwC,CAAA;AAEjE,kFAAkF;AAClF,eAAO,MAAM,cAAc,2EAA6D,CAAA;AAExF;;;;GAIG;AACH,eAAO,MAAM,WAAW,4CAAuB,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,aAAa,4CAAuB,CAAA;AAEjD;;;;GAIG;AACH,eAAO,MAAM,eAAe;aACjB,MAAM;cACL,MAAM,GAAG,SAAS;aACnB,MAAM;SACF,CAAA"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -87,6 +87,19 @@ export interface JexityChatOptions {
|
|
|
87
87
|
source?: string;
|
|
88
88
|
/** Bootstrap token from /widget/bootstrap — required for origin-gated sessions. */
|
|
89
89
|
bootstrapToken?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Path-scoped allow URLs returned by /widget/bootstrap alongside the token.
|
|
92
|
+
* Multiple entries arise when a project has several path rules for the same origin
|
|
93
|
+
* (e.g. /en and /ru). Pass alongside a pre-fetched `bootstrapToken` so the widget
|
|
94
|
+
* enforces path-scoped rules without re-fetching bootstrap.
|
|
95
|
+
*/
|
|
96
|
+
allowedUrls?: string[];
|
|
97
|
+
/**
|
|
98
|
+
* Excluded paths from /widget/bootstrap — paths where the widget should not
|
|
99
|
+
* appear even though the domain is otherwise allowed. Pass alongside a
|
|
100
|
+
* pre-fetched `bootstrapToken` so the widget enforces exclusions without a refetch.
|
|
101
|
+
*/
|
|
102
|
+
excludePaths?: string[];
|
|
90
103
|
}
|
|
91
104
|
export interface JexityChatInstance {
|
|
92
105
|
open: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE;QACH,wCAAwC;QACxC,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,iCAAiC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,qCAAqC;QACrC,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,oCAAoC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,6BAA6B;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,6BAA6B;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,IAAI,CAAC,EAAE;QACL,iCAAiC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,8BAA8B;QAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,6BAA6B;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,8BAA8B;QAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,iCAAiC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,MAAM,CAAC,EAAE;QACP,+BAA+B;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,+BAA+B;QAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAChC,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,CAAA;IACzC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAGrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,CAAA;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;IACpD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;qEAEiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;IAC9B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;CACzD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE;QACH,wCAAwC;QACxC,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,iCAAiC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,qCAAqC;QACrC,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,oCAAoC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,6BAA6B;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,6BAA6B;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,IAAI,CAAC,EAAE;QACL,iCAAiC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,8BAA8B;QAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,6BAA6B;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,8BAA8B;QAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,iCAAiC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,MAAM,CAAC,EAAE;QACP,+BAA+B;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,+BAA+B;QAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAChC,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,CAAA;IACzC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAGrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,CAAA;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;IACpD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;qEAEiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;IAC9B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;CACzD"}
|