@mlola/browser-protocol 0.1.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/LICENSE +21 -0
- package/README.md +14 -0
- package/dist/actions.d.ts +124 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +155 -0
- package/dist/actions.js.map +1 -0
- package/dist/budget.d.ts +57 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +25 -0
- package/dist/budget.js.map +1 -0
- package/dist/capabilities.d.ts +31 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +54 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/decision.d.ts +188 -0
- package/dist/decision.d.ts.map +1 -0
- package/dist/decision.js +9 -0
- package/dist/decision.js.map +1 -0
- package/dist/errors.d.ts +40 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +104 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +326 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +75 -0
- package/dist/events.js.map +1 -0
- package/dist/human.d.ts +43 -0
- package/dist/human.d.ts.map +1 -0
- package/dist/human.js +10 -0
- package/dist/human.js.map +1 -0
- package/dist/ids.d.ts +34 -0
- package/dist/ids.d.ts.map +1 -0
- package/dist/ids.js +22 -0
- package/dist/ids.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/memory.d.ts +37 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +54 -0
- package/dist/memory.js.map +1 -0
- package/dist/observation.d.ts +157 -0
- package/dist/observation.d.ts.map +1 -0
- package/dist/observation.js +45 -0
- package/dist/observation.js.map +1 -0
- package/dist/policy.d.ts +89 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +138 -0
- package/dist/policy.js.map +1 -0
- package/dist/provenance.d.ts +27 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +46 -0
- package/dist/provenance.js.map +1 -0
- package/dist/schemas.d.ts +449 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +218 -0
- package/dist/schemas.js.map +1 -0
- package/dist/task.d.ts +94 -0
- package/dist/task.d.ts.map +1 -0
- package/dist/task.js +13 -0
- package/dist/task.js.map +1 -0
- package/dist/verification.d.ts +70 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +24 -0
- package/dist/verification.js.map +1 -0
- package/package.json +52 -0
package/dist/policy.d.ts
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interaction permissions and risk policy (PRD §20, §61).
|
|
3
|
+
*
|
|
4
|
+
* Models cannot override these settings. Policy is evaluated by code, before
|
|
5
|
+
* execution, from the runtime's own risk classification of an action.
|
|
6
|
+
*/
|
|
7
|
+
import type { OperationId } from "./actions.ts";
|
|
8
|
+
import type { ApprovalId, RunId, StepId } from "./ids.ts";
|
|
9
|
+
export declare const ACTION_RISKS: readonly ["read", "navigate", "download", "upload", "send_message", "publish", "purchase", "delete", "credential_change", "permission_change", "irreversible", "unknown"];
|
|
10
|
+
export type ActionRisk = (typeof ACTION_RISKS)[number];
|
|
11
|
+
export type PermissionMode = "allow" | "deny" | "ask" | "takeover";
|
|
12
|
+
export interface SiteRule {
|
|
13
|
+
/** Glob-ish pattern matched against the page origin or full URL. */
|
|
14
|
+
pattern: string;
|
|
15
|
+
risk: ActionRisk;
|
|
16
|
+
mode: PermissionMode;
|
|
17
|
+
note?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface PolicyConfig {
|
|
20
|
+
defaults: Record<ActionRisk, PermissionMode>;
|
|
21
|
+
siteRules: SiteRule[];
|
|
22
|
+
/** Browser ownership permissions (PRD §20.1). */
|
|
23
|
+
borrowTabs: PermissionMode;
|
|
24
|
+
useExistingProfile: PermissionMode;
|
|
25
|
+
clipboard: PermissionMode;
|
|
26
|
+
/** Secret handling (PRD §18). */
|
|
27
|
+
secretsRequireTakeover: boolean;
|
|
28
|
+
/** Hard bound on runtime-generated text typed into a field. */
|
|
29
|
+
maxTypedLength: number;
|
|
30
|
+
allowedOrigins: string[];
|
|
31
|
+
blockedOrigins: string[];
|
|
32
|
+
/** When non-empty, navigation is restricted to allowedOrigins. */
|
|
33
|
+
restrictNavigation: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface SnapshotHistory {
|
|
36
|
+
canGoBack: boolean;
|
|
37
|
+
canGoForward: boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare const DEFAULT_POLICY: PolicyConfig;
|
|
40
|
+
/** Deterministic default risk for an operation; refined by target context. */
|
|
41
|
+
export declare const operationRisk: (op: OperationId) => ActionRisk;
|
|
42
|
+
export interface PolicyRequest {
|
|
43
|
+
runId: RunId;
|
|
44
|
+
stepId: StepId;
|
|
45
|
+
operation: OperationId;
|
|
46
|
+
/** Refined risk, may be raised (never lowered) by target context. */
|
|
47
|
+
risk: ActionRisk;
|
|
48
|
+
origin: string;
|
|
49
|
+
url: string;
|
|
50
|
+
targetLabel?: string;
|
|
51
|
+
/** True when the target field holds or requests a secret. */
|
|
52
|
+
secretsTouched?: boolean;
|
|
53
|
+
/** True when the action could send data off-device (submit-like). */
|
|
54
|
+
submitsData?: boolean;
|
|
55
|
+
/** True when the target is a destructive affordance by label. */
|
|
56
|
+
destructive?: boolean;
|
|
57
|
+
/** True when the only justification came from quarantined page content. */
|
|
58
|
+
untrustedJustification?: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface PolicyOutcome {
|
|
61
|
+
mode: PermissionMode;
|
|
62
|
+
risk: ActionRisk;
|
|
63
|
+
reason: string;
|
|
64
|
+
rule?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface ApprovalRequest {
|
|
67
|
+
id: ApprovalId;
|
|
68
|
+
runId: RunId;
|
|
69
|
+
stepId: StepId;
|
|
70
|
+
summary: string;
|
|
71
|
+
risk: ActionRisk;
|
|
72
|
+
origin: string;
|
|
73
|
+
url: string;
|
|
74
|
+
targetLabel?: string;
|
|
75
|
+
expiresAt?: number;
|
|
76
|
+
}
|
|
77
|
+
export type ApprovalResolution = "approved" | "denied" | "takeover";
|
|
78
|
+
/** Label patterns that raise a destructive/sensitive signal (deterministic). */
|
|
79
|
+
export declare const DESTRUCTIVE_PATTERNS: readonly RegExp[];
|
|
80
|
+
export declare const SEND_PATTERNS: readonly RegExp[];
|
|
81
|
+
export declare const SECRET_FIELD_PATTERNS: readonly RegExp[];
|
|
82
|
+
export declare const looksSecretField: (text: string) => boolean;
|
|
83
|
+
export interface SecretScreenResult {
|
|
84
|
+
hasSecret: boolean;
|
|
85
|
+
reasons: string[];
|
|
86
|
+
}
|
|
87
|
+
/** Scans runtime-generated text before it can reach a field or a trace (PRD §18). */
|
|
88
|
+
export declare const screenGeneratedText: (text: string) => SecretScreenResult;
|
|
89
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/policy.js
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interaction permissions and risk policy (PRD §20, §61).
|
|
3
|
+
*
|
|
4
|
+
* Models cannot override these settings. Policy is evaluated by code, before
|
|
5
|
+
* execution, from the runtime's own risk classification of an action.
|
|
6
|
+
*/
|
|
7
|
+
export const ACTION_RISKS = [
|
|
8
|
+
"read",
|
|
9
|
+
"navigate",
|
|
10
|
+
"download",
|
|
11
|
+
"upload",
|
|
12
|
+
"send_message",
|
|
13
|
+
"publish",
|
|
14
|
+
"purchase",
|
|
15
|
+
"delete",
|
|
16
|
+
"credential_change",
|
|
17
|
+
"permission_change",
|
|
18
|
+
"irreversible",
|
|
19
|
+
"unknown",
|
|
20
|
+
];
|
|
21
|
+
export const DEFAULT_POLICY = {
|
|
22
|
+
defaults: {
|
|
23
|
+
read: "allow",
|
|
24
|
+
navigate: "allow",
|
|
25
|
+
download: "allow",
|
|
26
|
+
upload: "ask",
|
|
27
|
+
send_message: "ask",
|
|
28
|
+
publish: "ask",
|
|
29
|
+
purchase: "takeover",
|
|
30
|
+
delete: "takeover",
|
|
31
|
+
credential_change: "takeover",
|
|
32
|
+
permission_change: "takeover",
|
|
33
|
+
irreversible: "takeover",
|
|
34
|
+
unknown: "ask",
|
|
35
|
+
},
|
|
36
|
+
siteRules: [],
|
|
37
|
+
borrowTabs: "ask",
|
|
38
|
+
useExistingProfile: "ask",
|
|
39
|
+
clipboard: "ask",
|
|
40
|
+
secretsRequireTakeover: true,
|
|
41
|
+
maxTypedLength: 2000,
|
|
42
|
+
allowedOrigins: [],
|
|
43
|
+
blockedOrigins: [],
|
|
44
|
+
restrictNavigation: false,
|
|
45
|
+
};
|
|
46
|
+
/** Deterministic default risk for an operation; refined by target context. */
|
|
47
|
+
export const operationRisk = (op) => {
|
|
48
|
+
switch (op) {
|
|
49
|
+
case "CLICK":
|
|
50
|
+
case "SELECT":
|
|
51
|
+
case "PRESS":
|
|
52
|
+
return "read";
|
|
53
|
+
case "TYPE_TEXT":
|
|
54
|
+
return "read";
|
|
55
|
+
case "SCROLL_UP":
|
|
56
|
+
case "SCROLL_DOWN":
|
|
57
|
+
case "WAIT":
|
|
58
|
+
return "read";
|
|
59
|
+
case "BACK":
|
|
60
|
+
case "FORWARD":
|
|
61
|
+
case "OPEN_TAB":
|
|
62
|
+
case "SWITCH_TAB":
|
|
63
|
+
case "CLOSE_TAB":
|
|
64
|
+
return "navigate";
|
|
65
|
+
case "DOWNLOAD":
|
|
66
|
+
return "download";
|
|
67
|
+
case "UPLOAD":
|
|
68
|
+
return "upload";
|
|
69
|
+
case "DONE":
|
|
70
|
+
case "BLOCKED":
|
|
71
|
+
case "ASK_USER":
|
|
72
|
+
return "read";
|
|
73
|
+
default:
|
|
74
|
+
return "unknown";
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
/** Label patterns that raise a destructive/sensitive signal (deterministic). */
|
|
78
|
+
export const DESTRUCTIVE_PATTERNS = [
|
|
79
|
+
/\bdelete\b/i,
|
|
80
|
+
/\bremove\b/i,
|
|
81
|
+
/\bdestroy\b/i,
|
|
82
|
+
/\bcancel\s+(my\s+)?(account|subscription|order|booking)\b/i,
|
|
83
|
+
/\bdeactivate\b/i,
|
|
84
|
+
/\bclose\s+(my\s+)?account\b/i,
|
|
85
|
+
/\bunsubscribe\b/i,
|
|
86
|
+
/\bempty\s+(trash|cart|basket)\b/i,
|
|
87
|
+
/\barchive\s+all\b/i,
|
|
88
|
+
];
|
|
89
|
+
export const SEND_PATTERNS = [
|
|
90
|
+
/\bsend\b/i,
|
|
91
|
+
/\bsubmit\b/i,
|
|
92
|
+
/\bpost\b/i,
|
|
93
|
+
/\bpublish\b/i,
|
|
94
|
+
/\bshare\b/i,
|
|
95
|
+
/\bconfirm\s+(order|payment|booking|transfer)\b/i,
|
|
96
|
+
/\bpay\b/i,
|
|
97
|
+
/\bbuy\b/i,
|
|
98
|
+
/\bplace\s+order\b/i,
|
|
99
|
+
/\bcheck\s?out\b/i,
|
|
100
|
+
/\btransfer\b/i,
|
|
101
|
+
];
|
|
102
|
+
export const SECRET_FIELD_PATTERNS = [
|
|
103
|
+
/password/i,
|
|
104
|
+
/\bpasscode\b/i,
|
|
105
|
+
/\botp\b/i,
|
|
106
|
+
/\bone[\s-]?time\s+code\b/i,
|
|
107
|
+
/\bmfa\b/i,
|
|
108
|
+
/\b2fa\b/i,
|
|
109
|
+
/\bsecurity\s+code\b/i,
|
|
110
|
+
/\bcvv\b/i,
|
|
111
|
+
/\bcvc\b/i,
|
|
112
|
+
/\bcard\s+number\b/i,
|
|
113
|
+
/\bcredit\s+card\b/i,
|
|
114
|
+
/\bpin\b/i,
|
|
115
|
+
/\bapi[\s_-]?key\b/i,
|
|
116
|
+
/\bsecret\b/i,
|
|
117
|
+
/\btoken\b/i,
|
|
118
|
+
/\brecovery\s+code\b/i,
|
|
119
|
+
/\bprivate\s+key\b/i,
|
|
120
|
+
];
|
|
121
|
+
export const looksSecretField = (text) => SECRET_FIELD_PATTERNS.some((re) => re.test(text));
|
|
122
|
+
const SECRET_VALUE_PATTERNS = [
|
|
123
|
+
/-----BEGIN [A-Z ]*PRIVATE KEY-----/,
|
|
124
|
+
/\bsk-[A-Za-z0-9_-]{16,}\b/,
|
|
125
|
+
/\bAKIA[0-9A-Z]{16}\b/,
|
|
126
|
+
/\b\d(?:[ -]?\d){12,18}\b/, // card-like digit run (optionally spaced)
|
|
127
|
+
/\b\d{3,8}\b(?=\s*(?:is|:)?\s*(?:the\s+)?(?:otp|code|pin)\b)/i,
|
|
128
|
+
];
|
|
129
|
+
/** Scans runtime-generated text before it can reach a field or a trace (PRD §18). */
|
|
130
|
+
export const screenGeneratedText = (text) => {
|
|
131
|
+
const reasons = [];
|
|
132
|
+
for (const re of SECRET_VALUE_PATTERNS) {
|
|
133
|
+
if (re.test(text))
|
|
134
|
+
reasons.push(`matched ${re.source}`);
|
|
135
|
+
}
|
|
136
|
+
return { hasSecret: reasons.length > 0, reasons };
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trust and provenance (PRD §21, §22).
|
|
3
|
+
*
|
|
4
|
+
* Every state item carries where it came from. Authority is code, not a prompt:
|
|
5
|
+
* webpage content can describe a task environment but can never promote itself
|
|
6
|
+
* into agent instructions.
|
|
7
|
+
*/
|
|
8
|
+
export declare const PROVENANCE_CLASSES: readonly ["system_runtime", "user_goal", "browser_runtime", "interface_structure", "application_data", "page_content", "third_party_content", "model_generated", "untrusted_page_content"];
|
|
9
|
+
export type ProvenanceClass = (typeof PROVENANCE_CLASSES)[number];
|
|
10
|
+
/**
|
|
11
|
+
* Higher number = higher authority. Used by policy code to decide what may
|
|
12
|
+
* justify an action and what may never be treated as an instruction.
|
|
13
|
+
*/
|
|
14
|
+
export declare const PROVENANCE_AUTHORITY: Record<ProvenanceClass, number>;
|
|
15
|
+
/** Provenance classes that may carry instructions to the agent. */
|
|
16
|
+
export declare const INSTRUCTION_CAPABLE: readonly ProvenanceClass[];
|
|
17
|
+
export declare const mayCarryInstructions: (p: ProvenanceClass) => boolean;
|
|
18
|
+
/** Provenance classes whose text content is quarantined by default (PRD §22.4). */
|
|
19
|
+
export declare const QUARANTINED: readonly ProvenanceClass[];
|
|
20
|
+
export declare const isQuarantined: (p: ProvenanceClass) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Structural provenance given to text that arrives from a page. Text inside an
|
|
23
|
+
* iframe of a different origin, or text that pattern-matches agent instructions,
|
|
24
|
+
* is downgraded to `untrusted_page_content`.
|
|
25
|
+
*/
|
|
26
|
+
export declare const downgradeForUntrustedContent: (p: ProvenanceClass) => ProvenanceClass;
|
|
27
|
+
//# sourceMappingURL=provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,kBAAkB,4LAUrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAUhE,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,EAAE,SAAS,eAAe,EAAoC,CAAC;AAE/F,eAAO,MAAM,oBAAoB,GAAI,GAAG,eAAe,KAAG,OAA0C,CAAC;AAErG,mFAAmF;AACnF,eAAO,MAAM,WAAW,EAAE,SAAS,eAAe,EAAsD,CAAC;AAEzG,eAAO,MAAM,aAAa,GAAI,GAAG,eAAe,KAAG,OAAkC,CAAC;AAEtF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAI,GAAG,eAAe,KAAG,eACe,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trust and provenance (PRD §21, §22).
|
|
3
|
+
*
|
|
4
|
+
* Every state item carries where it came from. Authority is code, not a prompt:
|
|
5
|
+
* webpage content can describe a task environment but can never promote itself
|
|
6
|
+
* into agent instructions.
|
|
7
|
+
*/
|
|
8
|
+
export const PROVENANCE_CLASSES = [
|
|
9
|
+
"system_runtime",
|
|
10
|
+
"user_goal",
|
|
11
|
+
"browser_runtime",
|
|
12
|
+
"interface_structure",
|
|
13
|
+
"application_data",
|
|
14
|
+
"page_content",
|
|
15
|
+
"third_party_content",
|
|
16
|
+
"model_generated",
|
|
17
|
+
"untrusted_page_content",
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* Higher number = higher authority. Used by policy code to decide what may
|
|
21
|
+
* justify an action and what may never be treated as an instruction.
|
|
22
|
+
*/
|
|
23
|
+
export const PROVENANCE_AUTHORITY = {
|
|
24
|
+
system_runtime: 100,
|
|
25
|
+
user_goal: 90,
|
|
26
|
+
browser_runtime: 80,
|
|
27
|
+
interface_structure: 60,
|
|
28
|
+
application_data: 50,
|
|
29
|
+
page_content: 30,
|
|
30
|
+
third_party_content: 20,
|
|
31
|
+
model_generated: 10,
|
|
32
|
+
untrusted_page_content: 0,
|
|
33
|
+
};
|
|
34
|
+
/** Provenance classes that may carry instructions to the agent. */
|
|
35
|
+
export const INSTRUCTION_CAPABLE = ["system_runtime", "user_goal"];
|
|
36
|
+
export const mayCarryInstructions = (p) => INSTRUCTION_CAPABLE.includes(p);
|
|
37
|
+
/** Provenance classes whose text content is quarantined by default (PRD §22.4). */
|
|
38
|
+
export const QUARANTINED = ["third_party_content", "untrusted_page_content"];
|
|
39
|
+
export const isQuarantined = (p) => QUARANTINED.includes(p);
|
|
40
|
+
/**
|
|
41
|
+
* Structural provenance given to text that arrives from a page. Text inside an
|
|
42
|
+
* iframe of a different origin, or text that pattern-matches agent instructions,
|
|
43
|
+
* is downgraded to `untrusted_page_content`.
|
|
44
|
+
*/
|
|
45
|
+
export const downgradeForUntrustedContent = (p) => p === "page_content" || p === "application_data" ? "untrusted_page_content" : p;
|
|
46
|
+
//# sourceMappingURL=provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,gBAAgB;IAChB,WAAW;IACX,iBAAiB;IACjB,qBAAqB;IACrB,kBAAkB;IAClB,cAAc;IACd,qBAAqB;IACrB,iBAAiB;IACjB,wBAAwB;CAChB,CAAC;AAIX;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,cAAc,EAAE,GAAG;IACnB,SAAS,EAAE,EAAE;IACb,eAAe,EAAE,EAAE;IACnB,mBAAmB,EAAE,EAAE;IACvB,gBAAgB,EAAE,EAAE;IACpB,YAAY,EAAE,EAAE;IAChB,mBAAmB,EAAE,EAAE;IACvB,eAAe,EAAE,EAAE;IACnB,sBAAsB,EAAE,CAAC;CAC1B,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAA+B,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;AAE/F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAkB,EAAW,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAErG,mFAAmF;AACnF,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;AAEzG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAkB,EAAW,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAkB,EAAmB,EAAE,CAClF,CAAC,KAAK,cAAc,IAAI,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC"}
|