forkoff 1.0.11 → 1.0.13
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 +7 -4
- package/dist/__tests__/cli-commands.test.d.ts +6 -0
- package/dist/__tests__/cli-commands.test.d.ts.map +1 -0
- package/dist/__tests__/cli-commands.test.js +213 -0
- package/dist/__tests__/cli-commands.test.js.map +1 -0
- package/dist/__tests__/startup.test.d.ts +11 -0
- package/dist/__tests__/startup.test.d.ts.map +1 -0
- package/dist/__tests__/startup.test.js +234 -0
- package/dist/__tests__/startup.test.js.map +1 -0
- package/dist/__tests__/tools/claude-process.test.js +221 -15
- package/dist/__tests__/tools/claude-process.test.js.map +1 -1
- package/dist/__tests__/tools/permission-hook.test.d.ts +17 -0
- package/dist/__tests__/tools/permission-hook.test.d.ts.map +1 -0
- package/dist/__tests__/tools/permission-hook.test.js +616 -0
- package/dist/__tests__/tools/permission-hook.test.js.map +1 -0
- package/dist/__tests__/tools/permission-ipc.test.d.ts +11 -0
- package/dist/__tests__/tools/permission-ipc.test.d.ts.map +1 -0
- package/dist/__tests__/tools/permission-ipc.test.js +612 -0
- package/dist/__tests__/tools/permission-ipc.test.js.map +1 -0
- package/dist/config.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1010 -898
- package/dist/index.js.map +1 -1
- package/dist/startup.d.ts.map +1 -1
- package/dist/startup.js +45 -15
- package/dist/startup.js.map +1 -1
- package/dist/tools/__tests__/claude-sessions.test.d.ts +2 -0
- package/dist/tools/__tests__/claude-sessions.test.d.ts.map +1 -0
- package/dist/tools/__tests__/claude-sessions.test.js +306 -0
- package/dist/tools/__tests__/claude-sessions.test.js.map +1 -0
- package/dist/tools/claude-process.d.ts +81 -4
- package/dist/tools/claude-process.d.ts.map +1 -1
- package/dist/tools/claude-process.js +332 -20
- package/dist/tools/claude-process.js.map +1 -1
- package/dist/tools/claude-sessions.d.ts +5 -0
- package/dist/tools/claude-sessions.d.ts.map +1 -1
- package/dist/tools/claude-sessions.js +16 -2
- package/dist/tools/claude-sessions.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/permission-hook.d.ts +41 -0
- package/dist/tools/permission-hook.d.ts.map +1 -0
- package/dist/tools/permission-hook.js +312 -0
- package/dist/tools/permission-hook.js.map +1 -0
- package/dist/tools/permission-ipc.d.ts +109 -0
- package/dist/tools/permission-ipc.d.ts.map +1 -0
- package/dist/tools/permission-ipc.js +295 -0
- package/dist/tools/permission-ipc.js.map +1 -0
- package/dist/websocket.d.ts +14 -0
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +34 -4
- package/dist/websocket.js.map +1 -1
- package/jest.config.js +3 -0
- package/package.json +1 -1
|
@@ -10,6 +10,26 @@ const events_1 = require("events");
|
|
|
10
10
|
// Mock cross-spawn before importing the module
|
|
11
11
|
const mockSpawn = jest.fn();
|
|
12
12
|
jest.mock('cross-spawn', () => mockSpawn);
|
|
13
|
+
// Mock fs to prevent hook config from writing real files
|
|
14
|
+
jest.mock('fs', () => {
|
|
15
|
+
const actual = jest.requireActual('fs');
|
|
16
|
+
return {
|
|
17
|
+
...actual,
|
|
18
|
+
existsSync: jest.fn((p) => {
|
|
19
|
+
// Hook script doesn't exist in test env — skip hook config
|
|
20
|
+
if (typeof p === 'string' && p.includes('permission-hook'))
|
|
21
|
+
return false;
|
|
22
|
+
return actual.existsSync(p);
|
|
23
|
+
}),
|
|
24
|
+
mkdirSync: jest.fn(),
|
|
25
|
+
writeFileSync: jest.fn(),
|
|
26
|
+
readFileSync: jest.fn((p, enc) => {
|
|
27
|
+
if (typeof p === 'string' && p.includes('settings.local.json'))
|
|
28
|
+
return '{}';
|
|
29
|
+
return actual.readFileSync(p, enc);
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
});
|
|
13
33
|
// Create a mock child process
|
|
14
34
|
function createMockProcess() {
|
|
15
35
|
const stdin = {
|
|
@@ -42,39 +62,38 @@ describe('ClaudeProcessManager', () => {
|
|
|
42
62
|
// ==================== Bug 1: dangerouslySkipPermissions ====================
|
|
43
63
|
describe('Bug 1: dangerouslySkipPermissions flag', () => {
|
|
44
64
|
describe('startSession', () => {
|
|
45
|
-
it('should NOT include --
|
|
65
|
+
it('should NOT include --dangerously-skip-permissions when flag is false', async () => {
|
|
46
66
|
await manager.startSession('/test/dir', 'session-1', false);
|
|
47
67
|
expect(mockSpawn).toHaveBeenCalledTimes(1);
|
|
48
68
|
const args = mockSpawn.mock.calls[0][1];
|
|
49
|
-
expect(args).not.toContain('--
|
|
69
|
+
expect(args).not.toContain('--dangerously-skip-permissions');
|
|
50
70
|
});
|
|
51
|
-
it('should NOT include --
|
|
71
|
+
it('should NOT include --dangerously-skip-permissions when flag is undefined', async () => {
|
|
52
72
|
await manager.startSession('/test/dir', 'session-1');
|
|
53
73
|
expect(mockSpawn).toHaveBeenCalledTimes(1);
|
|
54
74
|
const args = mockSpawn.mock.calls[0][1];
|
|
55
|
-
expect(args).not.toContain('--
|
|
75
|
+
expect(args).not.toContain('--dangerously-skip-permissions');
|
|
56
76
|
});
|
|
57
|
-
it('should include --
|
|
77
|
+
it('should include --dangerously-skip-permissions when flag is true', async () => {
|
|
58
78
|
await manager.startSession('/test/dir', 'session-1', true);
|
|
59
79
|
expect(mockSpawn).toHaveBeenCalledTimes(1);
|
|
60
80
|
const args = mockSpawn.mock.calls[0][1];
|
|
61
|
-
expect(args).toContain('--
|
|
81
|
+
expect(args).toContain('--dangerously-skip-permissions');
|
|
62
82
|
});
|
|
63
83
|
});
|
|
64
84
|
describe('resumeSession', () => {
|
|
65
|
-
it('should
|
|
85
|
+
it('should NOT include --dangerously-skip-permissions when flag is false (uses hooks instead)', async () => {
|
|
66
86
|
await manager.resumeSession('key-1', '/test/dir', 'session-1', false);
|
|
67
87
|
const args = mockSpawn.mock.calls[0][1];
|
|
68
|
-
expect(args).toContain('--
|
|
69
|
-
|
|
70
|
-
expect(args).not.toContain('--
|
|
88
|
+
expect(args).not.toContain('--dangerously-skip-permissions');
|
|
89
|
+
// No longer uses --permission-mode; interactive hooks handle permissions
|
|
90
|
+
expect(args).not.toContain('--permission-mode');
|
|
71
91
|
});
|
|
72
|
-
it('should use --
|
|
92
|
+
it('should use --dangerously-skip-permissions when flag is true', async () => {
|
|
73
93
|
await manager.resumeSession('key-1', '/test/dir', 'session-1', true);
|
|
74
94
|
const args = mockSpawn.mock.calls[0][1];
|
|
75
|
-
expect(args).toContain('--
|
|
95
|
+
expect(args).toContain('--dangerously-skip-permissions');
|
|
76
96
|
expect(args).not.toContain('--permission-mode');
|
|
77
|
-
expect(args).not.toContain('acceptEdits');
|
|
78
97
|
});
|
|
79
98
|
});
|
|
80
99
|
describe('registerSession', () => {
|
|
@@ -91,13 +110,19 @@ describe('ClaudeProcessManager', () => {
|
|
|
91
110
|
// Spy on resumeSession to check the flag is passed
|
|
92
111
|
const resumeSpy = jest.spyOn(manager, 'resumeSession');
|
|
93
112
|
await manager.sendInput('session-1', 'hello');
|
|
94
|
-
expect(resumeSpy).toHaveBeenCalledWith('key-1', expect.any(String), 'session-1', true);
|
|
113
|
+
expect(resumeSpy).toHaveBeenCalledWith('key-1', expect.any(String), 'session-1', true, undefined);
|
|
95
114
|
});
|
|
96
115
|
it('should not pass dangerouslySkipPermissions when not set', async () => {
|
|
97
116
|
manager.registerSession('key-1', '/test/dir', 'session-1');
|
|
98
117
|
const resumeSpy = jest.spyOn(manager, 'resumeSession');
|
|
99
118
|
await manager.sendInput('session-1', 'hello');
|
|
100
|
-
expect(resumeSpy).toHaveBeenCalledWith('key-1', expect.any(String), 'session-1', undefined);
|
|
119
|
+
expect(resumeSpy).toHaveBeenCalledWith('key-1', expect.any(String), 'session-1', undefined, undefined);
|
|
120
|
+
});
|
|
121
|
+
it('should pass interactivePermissions=true to resumeSession when respawning', async () => {
|
|
122
|
+
manager.registerSession('key-1', '/test/dir', 'session-1', false, true);
|
|
123
|
+
const resumeSpy = jest.spyOn(manager, 'resumeSession');
|
|
124
|
+
await manager.sendInput('session-1', 'hello');
|
|
125
|
+
expect(resumeSpy).toHaveBeenCalledWith('key-1', expect.any(String), 'session-1', false, true);
|
|
101
126
|
});
|
|
102
127
|
});
|
|
103
128
|
});
|
|
@@ -220,5 +245,186 @@ describe('ClaudeProcessManager', () => {
|
|
|
220
245
|
});
|
|
221
246
|
});
|
|
222
247
|
});
|
|
248
|
+
// ==================== getAllPendingPrompts ====================
|
|
249
|
+
describe('getAllPendingPrompts()', () => {
|
|
250
|
+
it('returns empty array when no IPC managers exist', () => {
|
|
251
|
+
expect(manager.getAllPendingPrompts()).toEqual([]);
|
|
252
|
+
});
|
|
253
|
+
it('returns empty array when IPC managers have no pending prompts', async () => {
|
|
254
|
+
// Start a session with interactivePermissions to create an IPC manager
|
|
255
|
+
// (hook script doesn't exist in test env, so IPC manager won't be created via configureHook,
|
|
256
|
+
// but we can test the method itself returns [] when the map is empty)
|
|
257
|
+
expect(manager.getAllPendingPrompts()).toEqual([]);
|
|
258
|
+
});
|
|
259
|
+
it('delegates to IPC manager getPendingPromptData()', () => {
|
|
260
|
+
// Create a mock IPC manager and inject it
|
|
261
|
+
const mockIpcManager = {
|
|
262
|
+
getPendingPromptData: jest.fn().mockReturnValue([
|
|
263
|
+
{
|
|
264
|
+
promptId: 'p1',
|
|
265
|
+
terminalSessionId: 'ts1',
|
|
266
|
+
sessionKey: 'sk1',
|
|
267
|
+
toolName: 'Bash',
|
|
268
|
+
toolInput: { command: 'ls' },
|
|
269
|
+
toolUseId: 'toolu_1',
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
promptId: 'p2',
|
|
273
|
+
terminalSessionId: 'ts1',
|
|
274
|
+
sessionKey: 'sk1',
|
|
275
|
+
toolName: 'Edit',
|
|
276
|
+
toolInput: { file_path: '/a.ts' },
|
|
277
|
+
toolUseId: 'toolu_2',
|
|
278
|
+
},
|
|
279
|
+
]),
|
|
280
|
+
};
|
|
281
|
+
// Inject mock IPC manager
|
|
282
|
+
manager.permissionIpcManagers.set('ts1', mockIpcManager);
|
|
283
|
+
const result = manager.getAllPendingPrompts();
|
|
284
|
+
expect(mockIpcManager.getPendingPromptData).toHaveBeenCalled();
|
|
285
|
+
expect(result).toHaveLength(2);
|
|
286
|
+
expect(result[0].promptId).toBe('p1');
|
|
287
|
+
expect(result[1].promptId).toBe('p2');
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
// ==================== Fix: takenOverSessions tracking ====================
|
|
291
|
+
describe('takenOverSessions tracking', () => {
|
|
292
|
+
describe('markTakenOver / isTakenOver', () => {
|
|
293
|
+
it('should return false for unknown sessions', () => {
|
|
294
|
+
expect(manager.isTakenOver('unknown-session')).toBe(false);
|
|
295
|
+
});
|
|
296
|
+
it('should return true after markTakenOver', () => {
|
|
297
|
+
manager.markTakenOver('session-taken');
|
|
298
|
+
expect(manager.isTakenOver('session-taken')).toBe(true);
|
|
299
|
+
});
|
|
300
|
+
it('should track multiple sessions independently', () => {
|
|
301
|
+
manager.markTakenOver('session-a');
|
|
302
|
+
manager.markTakenOver('session-b');
|
|
303
|
+
expect(manager.isTakenOver('session-a')).toBe(true);
|
|
304
|
+
expect(manager.isTakenOver('session-b')).toBe(true);
|
|
305
|
+
expect(manager.isTakenOver('session-c')).toBe(false);
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
describe('clearTakenOver', () => {
|
|
309
|
+
it('should clear a single session', () => {
|
|
310
|
+
manager.markTakenOver('session-x');
|
|
311
|
+
manager.markTakenOver('session-y');
|
|
312
|
+
manager.clearTakenOver('session-x');
|
|
313
|
+
expect(manager.isTakenOver('session-x')).toBe(false);
|
|
314
|
+
expect(manager.isTakenOver('session-y')).toBe(true);
|
|
315
|
+
});
|
|
316
|
+
it('should be safe on non-existent session', () => {
|
|
317
|
+
expect(() => manager.clearTakenOver('nonexistent')).not.toThrow();
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
describe('clearAllTakenOver', () => {
|
|
321
|
+
it('should clear all sessions', () => {
|
|
322
|
+
manager.markTakenOver('session-1');
|
|
323
|
+
manager.markTakenOver('session-2');
|
|
324
|
+
manager.markTakenOver('session-3');
|
|
325
|
+
manager.clearAllTakenOver();
|
|
326
|
+
expect(manager.isTakenOver('session-1')).toBe(false);
|
|
327
|
+
expect(manager.isTakenOver('session-2')).toBe(false);
|
|
328
|
+
expect(manager.isTakenOver('session-3')).toBe(false);
|
|
329
|
+
});
|
|
330
|
+
it('should be safe when empty', () => {
|
|
331
|
+
expect(() => manager.clearAllTakenOver()).not.toThrow();
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
describe('independence from isClaudeSession', () => {
|
|
335
|
+
it('isClaudeSession=true but isTakenOver=false for registered-only sessions', () => {
|
|
336
|
+
manager.registerSession('key-1', '/test/dir', 'session-reg');
|
|
337
|
+
expect(manager.isClaudeSession('session-reg')).toBe(true);
|
|
338
|
+
expect(manager.isTakenOver('session-reg')).toBe(false);
|
|
339
|
+
});
|
|
340
|
+
it('both true after registerSession + markTakenOver', () => {
|
|
341
|
+
manager.registerSession('key-1', '/test/dir', 'session-both');
|
|
342
|
+
manager.markTakenOver('session-both');
|
|
343
|
+
expect(manager.isClaudeSession('session-both')).toBe(true);
|
|
344
|
+
expect(manager.isTakenOver('session-both')).toBe(true);
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
describe('preserves session info', () => {
|
|
348
|
+
it('clearAllTakenOver does not affect closedSessions', () => {
|
|
349
|
+
manager.registerSession('key-1', '/test/dir', 'session-preserved');
|
|
350
|
+
manager.markTakenOver('session-preserved');
|
|
351
|
+
manager.clearAllTakenOver();
|
|
352
|
+
// Session is still registered (closedSessions intact), just not taken over
|
|
353
|
+
expect(manager.isClaudeSession('session-preserved')).toBe(true);
|
|
354
|
+
expect(manager.isTakenOver('session-preserved')).toBe(false);
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
// ==================== Fix: Mobile-generated session keys (brainstorm) ====================
|
|
359
|
+
describe('isRealSession flag (brainstorm session fix)', () => {
|
|
360
|
+
describe('registerSession stores isRealSession', () => {
|
|
361
|
+
it('should store isRealSession=false for mobile-generated keys', () => {
|
|
362
|
+
manager.registerSession('brainstorm-12345', '/test/dir', 'session-bs', false, true, false);
|
|
363
|
+
expect(manager.isClaudeSession('session-bs')).toBe(true);
|
|
364
|
+
});
|
|
365
|
+
it('should store isRealSession=true for known Claude sessions', () => {
|
|
366
|
+
manager.registerSession('real-uuid-key', '/test/dir', 'session-real', false, true, true);
|
|
367
|
+
expect(manager.isClaudeSession('session-real')).toBe(true);
|
|
368
|
+
});
|
|
369
|
+
it('should default isRealSession to undefined when not specified', () => {
|
|
370
|
+
manager.registerSession('key-1', '/test/dir', 'session-default');
|
|
371
|
+
expect(manager.isClaudeSession('session-default')).toBe(true);
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
describe('sendInput with isRealSession=false uses startAndSendMessage', () => {
|
|
375
|
+
it('should call startAndSendMessage instead of resumeSession for non-real sessions', async () => {
|
|
376
|
+
manager.registerSession('brainstorm-99999', '/test/dir', 'bs-session', false, true, false);
|
|
377
|
+
const resumeSpy = jest.spyOn(manager, 'resumeSession');
|
|
378
|
+
const startSpy = jest.spyOn(manager, 'startAndSendMessage');
|
|
379
|
+
await manager.sendInput('bs-session', 'hello world');
|
|
380
|
+
// Should NOT call resumeSession
|
|
381
|
+
expect(resumeSpy).not.toHaveBeenCalled();
|
|
382
|
+
// SHOULD call startAndSendMessage with the directory and message
|
|
383
|
+
expect(startSpy).toHaveBeenCalledWith(expect.stringContaining('test'), // resolved directory
|
|
384
|
+
'bs-session', 'hello world', false, true);
|
|
385
|
+
});
|
|
386
|
+
it('should still call resumeSession for real sessions (isRealSession=true)', async () => {
|
|
387
|
+
manager.registerSession('real-session-key', '/test/dir', 'real-session', false, true, true);
|
|
388
|
+
const resumeSpy = jest.spyOn(manager, 'resumeSession');
|
|
389
|
+
const startSpy = jest.spyOn(manager, 'startAndSendMessage');
|
|
390
|
+
await manager.sendInput('real-session', 'hello world');
|
|
391
|
+
expect(resumeSpy).toHaveBeenCalledWith('real-session-key', expect.any(String), 'real-session', false, true);
|
|
392
|
+
expect(startSpy).not.toHaveBeenCalled();
|
|
393
|
+
});
|
|
394
|
+
it('should call resumeSession when isRealSession is undefined (backward compat)', async () => {
|
|
395
|
+
manager.registerSession('old-key', '/test/dir', 'old-session');
|
|
396
|
+
const resumeSpy = jest.spyOn(manager, 'resumeSession');
|
|
397
|
+
const startSpy = jest.spyOn(manager, 'startAndSendMessage');
|
|
398
|
+
await manager.sendInput('old-session', 'hello');
|
|
399
|
+
expect(resumeSpy).toHaveBeenCalled();
|
|
400
|
+
expect(startSpy).not.toHaveBeenCalled();
|
|
401
|
+
});
|
|
402
|
+
});
|
|
403
|
+
describe('close handler preserves captured session_id', () => {
|
|
404
|
+
it('should use processInfo.sessionKey (captured from SDK) over closure sessionKey', async () => {
|
|
405
|
+
// Start a session with NO sessionKey (like startAndSendMessage)
|
|
406
|
+
await manager.startSession('/test/dir', 'capture-session');
|
|
407
|
+
// Simulate SDK result with session_id
|
|
408
|
+
const resultMessage = {
|
|
409
|
+
type: 'result',
|
|
410
|
+
subtype: 'success',
|
|
411
|
+
session_id: 'real-claude-uuid-from-sdk',
|
|
412
|
+
cost_usd: 0.01,
|
|
413
|
+
};
|
|
414
|
+
mockProc.stdout.emit('data', Buffer.from(JSON.stringify(resultMessage) + '\n'));
|
|
415
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
416
|
+
// Now simulate process close
|
|
417
|
+
mockProc.emit('close', 0);
|
|
418
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
419
|
+
// The closedSessions should have the captured session_id, not undefined
|
|
420
|
+
const closedInfo = manager.closedSessions.get('capture-session');
|
|
421
|
+
expect(closedInfo).toBeDefined();
|
|
422
|
+
// processInfo.sessionKey was set by the result handler,
|
|
423
|
+
// close handler should use it via resolvedSessionKey
|
|
424
|
+
expect(closedInfo.sessionKey).toBe('real-claude-uuid-from-sdk');
|
|
425
|
+
expect(closedInfo.isRealSession).toBe(true);
|
|
426
|
+
});
|
|
427
|
+
});
|
|
428
|
+
});
|
|
223
429
|
});
|
|
224
430
|
//# sourceMappingURL=claude-process.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-process.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools/claude-process.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-process.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools/claude-process.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for Permission Hook Script (permission-hook.ts)
|
|
3
|
+
*
|
|
4
|
+
* The permission hook is a standalone script spawned by Claude Code as a
|
|
5
|
+
* PreToolUse hook. It reads JSON from stdin, decides whether to auto-approve
|
|
6
|
+
* (safe tools) or request approval via temp files (dangerous tools), and
|
|
7
|
+
* writes a JSON decision to stdout.
|
|
8
|
+
*
|
|
9
|
+
* These tests spawn the real hook script as a child process using ts-node,
|
|
10
|
+
* write JSON to its stdin, and verify stdout output and exit codes.
|
|
11
|
+
*
|
|
12
|
+
* For dangerous-tool tests, we also watch the temp directory for the
|
|
13
|
+
* .request.json file the hook writes, then write a .response.json file
|
|
14
|
+
* to simulate the IPC manager's response.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=permission-hook.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-hook.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/tools/permission-hook.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|