@felan-ai/ext-browser 0.3.0 → 0.4.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/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,eAAO,MAAM,6BAA6B,QAAS,CAAC;AACpD,eAAO,MAAM,mCAAmC,SAAU,CAAC;AAC3D,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AA6CzC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,GAChB,mBAAmB,CAarB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,sBAAsB,CAmCxB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,sBAAsB,EAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE;IACP,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACjC,GACL,OAAO,CAAC,gBAAgB,CAAC,CAkD3B;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,sBAAsB,EAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAG9E"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,eAAO,MAAM,6BAA6B,QAAS,CAAC;AACpD,eAAO,MAAM,mCAAmC,SAAU,CAAC;AAC3D,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,GAChB,mBAAmB,CAarB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,GAChB,mBAAmB,CAMrB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,sBAAsB,CAExB;AAkBD,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,sBAAsB,EAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE;IACP,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAClC,GACL,OAAO,CAAC,gBAAgB,CAAC,CAuE3B;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,sBAAsB,EAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAsC3B"}
package/dist/cli.js CHANGED
@@ -1,49 +1,12 @@
1
1
  import { createHash, randomUUID } from 'node:crypto';
2
2
  import { joinRuntimePath } from './runtime-path.js';
3
+ import { inspectScreenshotArguments, validateAttachedBrowserCommand, validateBrowserCommand } from './command-policy.js';
4
+ export { findBrowserCommand } from './command-policy.js';
3
5
  export const MAX_BROWSER_OUTPUT_CHARACTERS = 44_000;
4
6
  export const MAX_BROWSER_SKILL_OUTPUT_CHARACTERS = 100_000;
5
7
  export const DEFAULT_BROWSER_TIMEOUT_MS = 60_000;
6
8
  export const MAX_BROWSER_TIMEOUT_MS = 300_000;
7
9
  export const BROWSER_IDLE_TIMEOUT = '1h';
8
- const BLOCKED_MODEL_COMMANDS = new Set([
9
- 'install',
10
- 'upgrade',
11
- 'doctor',
12
- 'mcp',
13
- 'chat',
14
- 'dashboard',
15
- 'stream',
16
- 'plugin',
17
- 'plugins',
18
- 'batch',
19
- 'confirm',
20
- 'deny',
21
- ]);
22
- const RESERVED_POLICY_OPTIONS = new Set([
23
- '--session',
24
- '--namespace',
25
- '--idle-timeout',
26
- '--json',
27
- '--content-boundaries',
28
- '--max-output',
29
- '--config',
30
- '--allowed-domains',
31
- '--action-policy',
32
- '--confirm-actions',
33
- '--confirm-interactive',
34
- '--allow-file-access',
35
- ]);
36
- const CLOSE_COMMANDS = new Set(['close', 'quit', 'exit']);
37
- const OPTIONS_WITH_VALUES = new Set([
38
- '--session', '--namespace', '--executable-path', '--extension', '--init-script',
39
- '--enable', '--args', '--user-agent', '--proxy', '--proxy-bypass', '--hide-scrollbars',
40
- '--provider', '-p', '--device', '--screenshot-dir', '--screenshot-quality',
41
- '--screenshot-format', '--cdp', '--color-scheme', '--download-path', '--max-output',
42
- '--allowed-domains', '--action-policy', '--confirm-actions', '--engine', '--model',
43
- '--config', '--idle-timeout', '--headers', '--profile', '--restore', '--restore-save',
44
- '--restore-check-url', '--restore-check-text', '--restore-check-fn', '--session-name',
45
- '--state', '--timeout',
46
- ]);
47
10
  export function createBrowserSessionScope(runtime, sessionId) {
48
11
  const namespaceHash = createHash('sha256')
49
12
  .update(`${runtime.storage('agent').root}\u0000${runtime.storage('session').root}`)
@@ -58,46 +21,59 @@ export function createBrowserSessionScope(runtime, sessionId) {
58
21
  namespace: `f-${namespaceHash}`,
59
22
  };
60
23
  }
24
+ export function createBrowserAttachmentScope(runtime, sessionId) {
25
+ const base = createBrowserSessionScope(runtime, sessionId);
26
+ return {
27
+ namespace: base.namespace,
28
+ session: `f-${randomUUID().replaceAll('-', '').slice(0, 16)}`,
29
+ };
30
+ }
61
31
  export function prepareBrowserCommand(runtime, args) {
62
- const command = findBrowserCommand(args);
63
- if (!command) {
64
- throw new Error('browser run args must start with an agent-browser command; place global options after the command.');
65
- }
66
- if (BLOCKED_MODEL_COMMANDS.has(command)) {
67
- throw new Error(`The browser tool does not run ${command}; use Felan's explicit dependency onboarding or host controls.`);
68
- }
69
- if (command === 'skills') {
70
- throw new Error('Use browser operation "skill" to retrieve version-matched agent-browser instructions.');
71
- }
72
- if (CLOSE_COMMANDS.has(command) && args.some((arg) => arg.split('=', 1)[0] === '--all')) {
73
- throw new Error('The browser tool closes only its own Felan session; omit --all.');
74
- }
75
- for (const arg of args.slice(1)) {
76
- if (arg === '--') {
77
- throw new Error('The browser tool does not accept the -- option terminator because Felan enforces trailing session and output policy.');
78
- }
79
- const option = arg.split('=', 1)[0];
80
- if (option && RESERVED_POLICY_OPTIONS.has(option)) {
81
- throw new Error(`The browser tool owns ${option}; omit it from args.`);
82
- }
83
- }
32
+ return preparePublicBrowserCommand(runtime, args, true);
33
+ }
34
+ function preparePublicBrowserCommand(runtime, args, stageScreenshot) {
35
+ const command = validateBrowserCommand(args);
84
36
  const normalized = [...args];
85
37
  if (command !== 'screenshot')
86
38
  return { args: normalized };
87
- if (hasPositionalArgument(normalized.slice(1)))
39
+ const screenshot = inspectScreenshotArguments(args);
40
+ if (!stageScreenshot || screenshot.path !== undefined)
88
41
  return { args: normalized };
89
- const screenshotPath = joinRuntimePath(runtime.storage('session').root, 'browser/screenshots', `screenshot-${randomUUID()}.png`);
42
+ const screenshotPath = joinRuntimePath(runtime.storage('session').root, 'browser/screenshots', `screenshot-${randomUUID()}.${screenshot.format}`);
90
43
  normalized.push(screenshotPath);
91
44
  return { args: normalized, generatedScreenshotPath: screenshotPath };
92
45
  }
93
46
  export async function runBrowserCli(runtime, invocation, args, scope, options = {}) {
94
47
  const sessionStorage = runtime.storage('session');
95
- const prepared = options.prepareScreenshot === false
48
+ if (!options.internalAttachment && options.attached)
49
+ validateAttachedBrowserCommand(args);
50
+ const prepared = options.internalAttachment
96
51
  ? { args: [...args] }
97
- : prepareBrowserCommand(runtime, args);
52
+ : preparePublicBrowserCommand(runtime, args, options.prepareScreenshot !== false);
53
+ const attached = options.attached === true || options.internalAttachment === true;
54
+ const endpoint = options.attachmentEndpoint;
55
+ const localOnly = ['close', 'quit', 'exit'].includes(args[0] ?? '') || (args[0] === 'session' && args[1] === 'info');
56
+ if (attached && !localOnly && !args.includes('--cdp') && !endpoint)
57
+ throw new Error('Attached commands require their leased endpoint.');
58
+ if (endpoint !== undefined) {
59
+ let parsed;
60
+ try {
61
+ parsed = new URL(endpoint);
62
+ }
63
+ catch {
64
+ throw new Error('Invalid leased endpoint.');
65
+ }
66
+ if (!attached || parsed.protocol !== 'ws:' || parsed.hostname !== '127.0.0.1' || Number(parsed.port) < 1
67
+ || parsed.username || parsed.password || parsed.search || parsed.hash || parsed.href !== endpoint
68
+ || !/^\/(?:devtools\/browser(?:\/[A-Za-z0-9._-]+)?|felan-browser\/[A-Za-z0-9._-]+)$/u.test(parsed.pathname)
69
+ || args.includes('--cdp')) {
70
+ throw new Error('Invalid leased endpoint or command.');
71
+ }
72
+ }
73
+ options.signal?.throwIfAborted();
98
74
  if (prepared.generatedScreenshotPath)
99
75
  await sessionStorage.mkdir('browser/screenshots', { recursive: true });
100
- const configPath = await writeIsolatedBrowserConfig(runtime);
76
+ const configPath = await writeBrowserConfig(runtime, attached ? 'attached' : 'isolated', scope);
101
77
  const timeoutMs = normalizeTimeout(options.timeoutMs);
102
78
  const trustedArgs = [
103
79
  ...prepared.args,
@@ -112,40 +88,49 @@ export async function runBrowserCli(runtime, invocation, args, scope, options =
112
88
  String(MAX_BROWSER_OUTPUT_CHARACTERS),
113
89
  '--config',
114
90
  configPath,
91
+ ...(endpoint === undefined || localOnly ? [] : ['--cdp', endpoint]),
92
+ ...(!attached || (endpoint !== undefined && !localOnly) ? ['--no-webmcp'] : []),
115
93
  ];
116
94
  let result;
117
95
  try {
96
+ options.signal?.throwIfAborted();
118
97
  result = await runtime.exec(invocation.command, trustedArgs, {
119
98
  cwd: runtime.cwd,
120
99
  timeout: timeoutMs,
100
+ maxOutputBytes: MAX_BROWSER_OUTPUT_CHARACTERS * 4,
121
101
  ...(options.signal === undefined ? {} : { signal: options.signal }),
122
102
  });
123
103
  }
124
104
  catch (error) {
105
+ const message = errorMessage(error);
125
106
  return {
126
107
  stdout: '',
127
- stderr: boundOutput(errorMessage(error)),
108
+ stderr: boundOutput(message),
128
109
  code: 1,
129
- killed: false,
110
+ killed: options.signal?.aborted ?? false,
130
111
  ...(prepared.generatedScreenshotPath === undefined ? {} : { generatedScreenshotPath: prepared.generatedScreenshotPath }),
131
- outputTruncated: false,
112
+ outputTruncated: message.length > MAX_BROWSER_OUTPUT_CHARACTERS,
132
113
  };
133
114
  }
134
115
  return {
135
116
  stdout: boundOutput(result.stdout),
136
117
  stderr: boundOutput(result.stderr),
137
118
  code: result.code,
138
- killed: result.killed,
119
+ killed: result.killed || options.signal?.aborted === true,
139
120
  ...(prepared.generatedScreenshotPath === undefined ? {} : { generatedScreenshotPath: prepared.generatedScreenshotPath }),
140
- outputTruncated: result.stdout.length > MAX_BROWSER_OUTPUT_CHARACTERS
121
+ outputTruncated: result.truncated === true || result.stdout.length > MAX_BROWSER_OUTPUT_CHARACTERS
141
122
  || result.stderr.length > MAX_BROWSER_OUTPUT_CHARACTERS,
142
123
  };
143
124
  }
144
125
  export async function runBrowserSkill(runtime, invocation, skill, full, signal, timeoutMs) {
126
+ if (!/^[a-z0-9][a-z0-9-]{0,63}$/u.test(skill))
127
+ throw new Error('Invalid browser skill name.');
128
+ signal?.throwIfAborted();
145
129
  const args = ['skills', 'get', skill, ...(full ? ['--full'] : [])];
146
130
  let result;
147
131
  try {
148
- const configPath = await writeIsolatedBrowserConfig(runtime);
132
+ const configPath = await writeBrowserConfig(runtime, 'skills');
133
+ signal?.throwIfAborted();
149
134
  result = await runtime.exec(invocation.command, [
150
135
  ...args,
151
136
  '--max-output',
@@ -155,52 +140,51 @@ export async function runBrowserSkill(runtime, invocation, skill, full, signal,
155
140
  ], {
156
141
  cwd: runtime.cwd,
157
142
  timeout: normalizeTimeout(timeoutMs),
143
+ maxOutputBytes: MAX_BROWSER_SKILL_OUTPUT_CHARACTERS * 4,
158
144
  ...(signal === undefined ? {} : { signal }),
159
145
  });
160
146
  }
161
147
  catch (error) {
148
+ const message = errorMessage(error);
162
149
  return {
163
150
  stdout: '',
164
- stderr: errorMessage(error),
151
+ stderr: boundOutput(message, MAX_BROWSER_SKILL_OUTPUT_CHARACTERS),
165
152
  code: 1,
166
- killed: false,
167
- outputTruncated: false,
153
+ killed: signal?.aborted ?? false,
154
+ outputTruncated: message.length > MAX_BROWSER_SKILL_OUTPUT_CHARACTERS,
168
155
  };
169
156
  }
170
157
  return {
171
158
  stdout: boundOutput(result.stdout, MAX_BROWSER_SKILL_OUTPUT_CHARACTERS),
172
159
  stderr: boundOutput(result.stderr, MAX_BROWSER_SKILL_OUTPUT_CHARACTERS),
173
160
  code: result.code,
174
- killed: result.killed,
175
- outputTruncated: result.stdout.length > MAX_BROWSER_SKILL_OUTPUT_CHARACTERS
161
+ killed: result.killed || signal?.aborted === true,
162
+ outputTruncated: result.truncated === true || result.stdout.length > MAX_BROWSER_SKILL_OUTPUT_CHARACTERS
176
163
  || result.stderr.length > MAX_BROWSER_SKILL_OUTPUT_CHARACTERS,
177
164
  };
178
165
  }
179
- export function findBrowserCommand(args) {
180
- const first = args[0]?.trim();
181
- return !first || first.startsWith('-') ? undefined : first.toLowerCase();
182
- }
183
- function hasPositionalArgument(args) {
184
- let consumeValue = false;
185
- for (const arg of args) {
186
- if (consumeValue) {
187
- consumeValue = false;
188
- continue;
189
- }
190
- if (arg === '--')
191
- return true;
192
- if (!arg.startsWith('-'))
193
- return true;
194
- if (!arg.includes('=') && OPTIONS_WITH_VALUES.has(arg))
195
- consumeValue = true;
196
- }
197
- return false;
198
- }
199
- async function writeIsolatedBrowserConfig(runtime) {
166
+ async function writeBrowserConfig(runtime, mode, scope) {
200
167
  const storage = runtime.storage('session');
201
- const relativePath = 'browser/agent-browser.json';
202
- await storage.mkdir('browser', { recursive: true });
203
- await storage.writeFile(relativePath, new TextEncoder().encode('{"plugins":[]}\n'));
168
+ const scopeHash = scope && createHash('sha256').update(JSON.stringify([scope.namespace, scope.session])).digest('hex').slice(0, 32);
169
+ const directory = `browser/controls/${mode}${scopeHash ? `/${scopeHash}` : ''}`;
170
+ const relativePath = `${directory}/agent-browser.json`;
171
+ const attached = mode === 'attached';
172
+ const config = {
173
+ plugins: [], extensions: [], initScripts: [], enable: [],
174
+ autoConnect: false, profile: null, state: null, restore: null, sessionName: null,
175
+ restoreSave: 'never', restoreCheckUrl: null, restoreCheckText: null, restoreCheckFn: null,
176
+ cdp: null, executablePath: null, provider: null, engine: null, args: null,
177
+ proxy: null, proxyBypass: null, userAgent: null, device: null, headers: null,
178
+ caCert: null, clearCaCert: false, ignoreHttpsErrors: false, allowFileAccess: false,
179
+ headed: false, webgpu: false, debug: false, colorScheme: null, downloadPath: null,
180
+ actionPolicy: null, confirmActions: null, confirmInteractive: false, allowedDomains: null,
181
+ pinTab: attached, noAutoDialog: attached,
182
+ // Cleanup must not request a local launch through noWebmcp without --cdp.
183
+ noWebmcp: !attached,
184
+ screenshotDir: joinRuntimePath(storage.root, 'browser/screenshots'), screenshotFormat: 'png',
185
+ };
186
+ await storage.mkdir(directory, { recursive: true });
187
+ await storage.writeFile(relativePath, new TextEncoder().encode(`${JSON.stringify(config)}\n`));
204
188
  return joinRuntimePath(storage.root, relativePath);
205
189
  }
206
190
  function normalizeTimeout(value) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function findBrowserCommand(args: readonly string[]): string | undefined;
2
+ export declare function validateBrowserCommand(args: readonly string[]): string;
3
+ export declare function validateAttachedBrowserCommand(args: readonly string[], origin?: string): void;
4
+ export declare function inspectScreenshotArguments(args: readonly string[]): {
5
+ path?: string;
6
+ format: string;
7
+ };
8
+ //# sourceMappingURL=command-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-policy.d.ts","sourceRoot":"","sources":["../src/command-policy.ts"],"names":[],"mappings":"AAwDA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAyCtE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CA2G7F;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAarG"}