vtac-terminal 1.2.0 → 1.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 CHANGED
@@ -267,7 +267,7 @@ vtac -p /dev/ttyUSB0 -b 115200 -a none -d 8 -t 1
267
267
 
268
268
  - `-v, --version` - Output the current version
269
269
  - `-h, --help` - Display help information
270
- - `-p, --path <path>` - Path to the serial port (e.g., /dev/ttyUSB0)
270
+ - `-p, --port <port>` - Path to the serial port (e.g., /dev/ttyUSB0)
271
271
  - `-b, --baudrate <baudrate>` - Baud rate (default: "9600")
272
272
  - `-a, --parity <parity>` - Parity (default: "none")
273
273
  - `-d, --databits <databits>` - Data bits (default: "8")
@@ -0,0 +1,54 @@
1
+ export declare class VTAC {
2
+ static COLUMNS: number;
3
+ static ROWS: number;
4
+ static WIDTH: number;
5
+ static HEIGHT: number;
6
+ buffer: Buffer<ArrayBuffer>;
7
+ mode: 'text' | 'graphics';
8
+ column: number;
9
+ row: number;
10
+ offset: number;
11
+ columnNextByte: boolean;
12
+ rowNextByte: boolean;
13
+ cursorChar: number;
14
+ cursorMode: 'solid' | 'blinking';
15
+ cursorCharNextByte: boolean;
16
+ bellDuration: number;
17
+ bellFrequency: number;
18
+ bellDurationNextByte: boolean;
19
+ bellFrequencyNextByte: boolean;
20
+ bellQueue: Array<{
21
+ frequency: number;
22
+ duration: number;
23
+ }>;
24
+ dataNextByte: boolean;
25
+ foregroundColor: number;
26
+ backgroundColor: number;
27
+ foregroundColorNextByte: boolean;
28
+ backgroundColorNextByte: boolean;
29
+ reset: () => void;
30
+ bell: () => void;
31
+ getNextBell: () => {
32
+ frequency: number;
33
+ duration: number;
34
+ } | undefined;
35
+ hasQueuedBells: () => boolean;
36
+ backspace: () => void;
37
+ tab: () => void;
38
+ lineFeed: () => void;
39
+ carriageReturn: () => void;
40
+ deleteTo: (destination: "startOfLine" | "endOfLine" | "startOfScreen" | "endOfScreen") => void;
41
+ scroll: (direction: "left" | "right" | "up" | "down") => void;
42
+ cursor: (direction: "left" | "right" | "up" | "down") => void;
43
+ delete: () => void;
44
+ data: (data: number) => void;
45
+ insertTextData: (data: number) => void;
46
+ insertGraphicsData: (data: number) => void;
47
+ copyCharacterCell: (sourceCol: number, sourceRow: number, destCol: number, destRow: number) => void;
48
+ clearCharacterCell: (col: number, row: number) => void;
49
+ parse: (data: number) => void;
50
+ static NOTE_FREQUENCIES: {
51
+ [key: number]: number;
52
+ };
53
+ static CHARACTERS: number[][];
54
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,433 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const VTAC_1 = require("./VTAC");
4
+ const pixelIndex = (col, row, x = 0, y = 0) => {
5
+ return (row * 8 + y) * VTAC_1.VTAC.WIDTH + (col * 8 + x);
6
+ };
7
+ const fillCell = (vtac, col, row, color) => {
8
+ for (let y = 0; y < 8; y++) {
9
+ for (let x = 0; x < 8; x++) {
10
+ vtac.buffer[pixelIndex(col, row, x, y)] = color;
11
+ }
12
+ }
13
+ };
14
+ const expectCellColor = (vtac, col, row, color) => {
15
+ for (let y = 0; y < 8; y++) {
16
+ for (let x = 0; x < 8; x++) {
17
+ expect(vtac.buffer[pixelIndex(col, row, x, y)]).toBe(color);
18
+ }
19
+ }
20
+ };
21
+ describe('VTAC', () => {
22
+ it('resets state and clears buffer', () => {
23
+ const vtac = new VTAC_1.VTAC();
24
+ vtac.column = 12;
25
+ vtac.row = 8;
26
+ vtac.mode = 'graphics';
27
+ vtac.foregroundColor = 0x22;
28
+ vtac.backgroundColor = 0x11;
29
+ vtac.bellDuration = 0x10;
30
+ vtac.bellFrequency = 0x20;
31
+ vtac.buffer.fill(0xAB);
32
+ vtac.reset();
33
+ expect(vtac.column).toBe(0);
34
+ expect(vtac.row).toBe(0);
35
+ expect(vtac.offset).toBe(0);
36
+ expect(vtac.mode).toBe('text');
37
+ expect(vtac.foregroundColor).toBe(0xFF);
38
+ expect(vtac.backgroundColor).toBe(0x00);
39
+ expect(vtac.bellDuration).toBe(0x3C);
40
+ expect(vtac.bellFrequency).toBe(0x3D);
41
+ expect(vtac.buffer.every((value) => value === 0x00)).toBe(true);
42
+ });
43
+ it('parses set-column and set-row commands', () => {
44
+ const vtac = new VTAC_1.VTAC();
45
+ vtac.parse(0x0E);
46
+ vtac.parse(0x2A);
47
+ vtac.parse(0x0F);
48
+ vtac.parse(0x21);
49
+ expect(vtac.column).toBe(0x2A % VTAC_1.VTAC.COLUMNS);
50
+ expect(vtac.row).toBe(0x21 % VTAC_1.VTAC.ROWS);
51
+ expect(vtac.offset).toBe(0);
52
+ });
53
+ it('queues and dequeues bell events when bell command is parsed', () => {
54
+ const vtac = new VTAC_1.VTAC();
55
+ vtac.parse(0x05);
56
+ vtac.parse(0x1E);
57
+ vtac.parse(0x06);
58
+ vtac.parse(0x2E);
59
+ vtac.parse(0x07);
60
+ expect(vtac.hasQueuedBells()).toBe(true);
61
+ const bell = vtac.getNextBell();
62
+ expect(bell).toBeDefined();
63
+ expect(bell === null || bell === void 0 ? void 0 : bell.duration).toBe(0x1E);
64
+ expect(typeof (bell === null || bell === void 0 ? void 0 : bell.frequency)).toBe('number');
65
+ expect(bell === null || bell === void 0 ? void 0 : bell.frequency).toBeGreaterThan(0);
66
+ expect(vtac.hasQueuedBells()).toBe(false);
67
+ });
68
+ it('inserts command-range byte as data after data-next instruction', () => {
69
+ const vtac = new VTAC_1.VTAC();
70
+ expect(vtac.column).toBe(0);
71
+ expect(vtac.row).toBe(0);
72
+ vtac.parse(0x1A);
73
+ vtac.parse(0x00);
74
+ expect(vtac.column).toBe(1);
75
+ expect(vtac.row).toBe(0);
76
+ expect(vtac.offset).toBe(0);
77
+ });
78
+ it('toggles between text and graphics modes', () => {
79
+ const vtac = new VTAC_1.VTAC();
80
+ expect(vtac.mode).toBe('text');
81
+ vtac.parse(0x0B);
82
+ expect(vtac.mode).toBe('graphics');
83
+ vtac.parse(0x0B);
84
+ expect(vtac.mode).toBe('text');
85
+ });
86
+ it('does not queue bell when frequency is invalid or duration is zero', () => {
87
+ const vtac = new VTAC_1.VTAC();
88
+ vtac.bellFrequency = 0x00;
89
+ vtac.bellDuration = 0x10;
90
+ vtac.bell();
91
+ expect(vtac.hasQueuedBells()).toBe(false);
92
+ vtac.bellFrequency = 0x2E;
93
+ vtac.bellDuration = 0x00;
94
+ vtac.bell();
95
+ expect(vtac.hasQueuedBells()).toBe(false);
96
+ });
97
+ it('handles backspace, tab, line feed, and carriage return edge cases', () => {
98
+ const vtac = new VTAC_1.VTAC();
99
+ const scrollSpy = jest.spyOn(vtac, 'scroll');
100
+ vtac.column = 0;
101
+ vtac.offset = 7;
102
+ vtac.backspace();
103
+ expect(vtac.column).toBe(0);
104
+ expect(vtac.offset).toBe(0);
105
+ vtac.column = 5;
106
+ vtac.backspace();
107
+ expect(vtac.column).toBe(4);
108
+ vtac.column = 3;
109
+ vtac.tab();
110
+ expect(vtac.column).toBe(4);
111
+ vtac.column = VTAC_1.VTAC.COLUMNS - 1;
112
+ vtac.tab();
113
+ expect(vtac.column).toBe(VTAC_1.VTAC.COLUMNS - 1);
114
+ vtac.row = 0;
115
+ vtac.offset = 3;
116
+ vtac.lineFeed();
117
+ expect(vtac.row).toBe(1);
118
+ expect(vtac.offset).toBe(0);
119
+ vtac.row = VTAC_1.VTAC.ROWS - 1;
120
+ vtac.lineFeed();
121
+ expect(vtac.row).toBe(VTAC_1.VTAC.ROWS - 1);
122
+ expect(scrollSpy).toHaveBeenCalledWith('up');
123
+ vtac.column = 12;
124
+ vtac.offset = 2;
125
+ vtac.carriageReturn();
126
+ expect(vtac.column).toBe(0);
127
+ expect(vtac.offset).toBe(0);
128
+ });
129
+ it('clears ranges correctly for all deleteTo destinations', () => {
130
+ const vtac = new VTAC_1.VTAC();
131
+ vtac.backgroundColor = 0x11;
132
+ fillCell(vtac, 0, 0, 0xAA);
133
+ fillCell(vtac, 1, 0, 0xAA);
134
+ fillCell(vtac, 2, 0, 0xAA);
135
+ fillCell(vtac, 3, 0, 0xAA);
136
+ fillCell(vtac, 4, 0, 0xAA);
137
+ vtac.row = 0;
138
+ vtac.column = 2;
139
+ vtac.deleteTo('startOfLine');
140
+ expectCellColor(vtac, 0, 0, 0x11);
141
+ expectCellColor(vtac, 1, 0, 0x11);
142
+ expectCellColor(vtac, 2, 0, 0x11);
143
+ expectCellColor(vtac, 3, 0, 0xAA);
144
+ vtac.deleteTo('endOfLine');
145
+ expectCellColor(vtac, 2, 0, 0x11);
146
+ expectCellColor(vtac, 3, 0, 0x11);
147
+ expectCellColor(vtac, 4, 0, 0x11);
148
+ fillCell(vtac, 0, 0, 0xAA);
149
+ fillCell(vtac, 0, 1, 0xAA);
150
+ fillCell(vtac, 1, 1, 0xAA);
151
+ fillCell(vtac, 2, 1, 0xAA);
152
+ fillCell(vtac, 0, 2, 0xAA);
153
+ vtac.row = 1;
154
+ vtac.column = 1;
155
+ vtac.deleteTo('startOfScreen');
156
+ expectCellColor(vtac, 0, 0, 0x11);
157
+ expectCellColor(vtac, 0, 1, 0x11);
158
+ expectCellColor(vtac, 1, 1, 0x11);
159
+ expectCellColor(vtac, 2, 1, 0xAA);
160
+ vtac.deleteTo('endOfScreen');
161
+ expectCellColor(vtac, 1, 1, 0x11);
162
+ expectCellColor(vtac, 2, 1, 0x11);
163
+ expectCellColor(vtac, 0, 2, 0x11);
164
+ });
165
+ it('scrolls left/right/up/down and clears vacated cells', () => {
166
+ const vtac = new VTAC_1.VTAC();
167
+ vtac.backgroundColor = 0x05;
168
+ fillCell(vtac, 0, 0, 0x10);
169
+ fillCell(vtac, 1, 0, 0x20);
170
+ fillCell(vtac, 2, 0, 0x30);
171
+ vtac.scroll('left');
172
+ expectCellColor(vtac, 0, 0, 0x20);
173
+ expectCellColor(vtac, 1, 0, 0x30);
174
+ expectCellColor(vtac, VTAC_1.VTAC.COLUMNS - 1, 0, 0x05);
175
+ fillCell(vtac, 0, 0, 0x10);
176
+ fillCell(vtac, 1, 0, 0x20);
177
+ vtac.scroll('right');
178
+ expectCellColor(vtac, 1, 0, 0x10);
179
+ expectCellColor(vtac, 0, 0, 0x05);
180
+ fillCell(vtac, 0, 0, 0x60);
181
+ fillCell(vtac, 0, 1, 0x70);
182
+ vtac.scroll('up');
183
+ expectCellColor(vtac, 0, 0, 0x70);
184
+ expectCellColor(vtac, 0, VTAC_1.VTAC.ROWS - 1, 0x05);
185
+ fillCell(vtac, 0, 0, 0x80);
186
+ fillCell(vtac, 0, 1, 0x90);
187
+ vtac.scroll('down');
188
+ expectCellColor(vtac, 0, 1, 0x80);
189
+ expectCellColor(vtac, 0, 0, 0x05);
190
+ });
191
+ it('handles cursor movement bounds and delete operation', () => {
192
+ const vtac = new VTAC_1.VTAC();
193
+ vtac.offset = 7;
194
+ vtac.column = 0;
195
+ vtac.cursor('left');
196
+ expect(vtac.column).toBe(0);
197
+ expect(vtac.offset).toBe(0);
198
+ vtac.column = VTAC_1.VTAC.COLUMNS - 1;
199
+ vtac.cursor('right');
200
+ expect(vtac.column).toBe(VTAC_1.VTAC.COLUMNS - 1);
201
+ vtac.row = 0;
202
+ vtac.cursor('up');
203
+ expect(vtac.row).toBe(0);
204
+ vtac.row = VTAC_1.VTAC.ROWS - 1;
205
+ vtac.cursor('down');
206
+ expect(vtac.row).toBe(VTAC_1.VTAC.ROWS - 1);
207
+ vtac.backgroundColor = 0x44;
208
+ fillCell(vtac, 2, 2, 0x99);
209
+ vtac.column = 2;
210
+ vtac.row = 2;
211
+ vtac.delete();
212
+ expectCellColor(vtac, 2, 2, 0x44);
213
+ });
214
+ it('dispatches data insertion by mode', () => {
215
+ const vtac = new VTAC_1.VTAC();
216
+ const textSpy = jest.spyOn(vtac, 'insertTextData');
217
+ const graphicsSpy = jest.spyOn(vtac, 'insertGraphicsData');
218
+ vtac.mode = 'text';
219
+ vtac.data(0x41);
220
+ expect(textSpy).toHaveBeenCalledWith(0x41);
221
+ vtac.mode = 'graphics';
222
+ vtac.data(0xAA);
223
+ expect(graphicsSpy).toHaveBeenCalledWith(0xAA);
224
+ });
225
+ it('renders text data, advances cursor, wraps, and scrolls at screen end', () => {
226
+ const vtac = new VTAC_1.VTAC();
227
+ const scrollSpy = jest.spyOn(vtac, 'scroll');
228
+ vtac.foregroundColor = 0xF0;
229
+ vtac.backgroundColor = 0x0F;
230
+ vtac.insertTextData(0x41);
231
+ expect(vtac.column).toBe(1);
232
+ expect(vtac.row).toBe(0);
233
+ expect(vtac.offset).toBe(0);
234
+ const renderedPixels = Array.from({ length: 64 }, (_, index) => {
235
+ const x = index % 8;
236
+ const y = Math.floor(index / 8);
237
+ return vtac.buffer[pixelIndex(0, 0, x, y)];
238
+ });
239
+ expect(renderedPixels.some((color) => color === 0xF0)).toBe(true);
240
+ expect(renderedPixels.some((color) => color === 0x0F)).toBe(true);
241
+ vtac.column = VTAC_1.VTAC.COLUMNS - 1;
242
+ vtac.row = 0;
243
+ vtac.insertTextData(0x41);
244
+ expect(vtac.column).toBe(0);
245
+ expect(vtac.row).toBe(1);
246
+ vtac.column = VTAC_1.VTAC.COLUMNS - 1;
247
+ vtac.row = VTAC_1.VTAC.ROWS - 1;
248
+ vtac.insertTextData(0x41);
249
+ expect(vtac.column).toBe(0);
250
+ expect(vtac.row).toBe(VTAC_1.VTAC.ROWS - 1);
251
+ expect(scrollSpy).toHaveBeenCalledWith('up');
252
+ });
253
+ it('renders graphics data rows and wraps offset, column, and row', () => {
254
+ const vtac = new VTAC_1.VTAC();
255
+ vtac.foregroundColor = 0xE1;
256
+ vtac.backgroundColor = 0x1E;
257
+ vtac.insertGraphicsData(0b10100000);
258
+ expect(vtac.buffer[pixelIndex(0, 0, 0, 0)]).toBe(0xE1);
259
+ expect(vtac.buffer[pixelIndex(0, 0, 1, 0)]).toBe(0x1E);
260
+ expect(vtac.buffer[pixelIndex(0, 0, 2, 0)]).toBe(0xE1);
261
+ expect(vtac.offset).toBe(1);
262
+ vtac.column = VTAC_1.VTAC.COLUMNS - 1;
263
+ vtac.row = VTAC_1.VTAC.ROWS - 1;
264
+ vtac.offset = 7;
265
+ vtac.insertGraphicsData(0xFF);
266
+ expect(vtac.offset).toBe(0);
267
+ expect(vtac.column).toBe(0);
268
+ expect(vtac.row).toBe(0);
269
+ });
270
+ it('copies and clears 8x8 character cells', () => {
271
+ const vtac = new VTAC_1.VTAC();
272
+ vtac.backgroundColor = 0x33;
273
+ fillCell(vtac, 3, 3, 0xA5);
274
+ fillCell(vtac, 4, 4, 0x5A);
275
+ vtac.copyCharacterCell(3, 3, 4, 4);
276
+ expectCellColor(vtac, 4, 4, 0xA5);
277
+ vtac.clearCharacterCell(4, 4);
278
+ expectCellColor(vtac, 4, 4, 0x33);
279
+ });
280
+ it('honors parse next-byte state handlers', () => {
281
+ const vtac = new VTAC_1.VTAC();
282
+ const dataSpy = jest.spyOn(vtac, 'data');
283
+ vtac.cursorCharNextByte = true;
284
+ vtac.parse(0x5A);
285
+ expect(vtac.cursorChar).toBe(0x5A);
286
+ expect(vtac.cursorCharNextByte).toBe(false);
287
+ vtac.columnNextByte = true;
288
+ vtac.parse(0x99);
289
+ expect(vtac.column).toBe(0x99 % VTAC_1.VTAC.COLUMNS);
290
+ expect(vtac.columnNextByte).toBe(false);
291
+ vtac.rowNextByte = true;
292
+ vtac.parse(0x77);
293
+ expect(vtac.row).toBe(0x77 % VTAC_1.VTAC.ROWS);
294
+ expect(vtac.rowNextByte).toBe(false);
295
+ vtac.bellDurationNextByte = true;
296
+ vtac.parse(0x1C);
297
+ expect(vtac.bellDuration).toBe(0x1C);
298
+ expect(vtac.bellDurationNextByte).toBe(false);
299
+ vtac.bellFrequencyNextByte = true;
300
+ vtac.parse(0x2E);
301
+ expect(vtac.bellFrequency).toBe(0x2E);
302
+ expect(vtac.bellFrequencyNextByte).toBe(false);
303
+ vtac.foregroundColorNextByte = true;
304
+ vtac.parse(0xAA);
305
+ expect(vtac.foregroundColor).toBe(0xAA);
306
+ expect(vtac.foregroundColorNextByte).toBe(false);
307
+ vtac.backgroundColorNextByte = true;
308
+ vtac.parse(0xBB);
309
+ expect(vtac.backgroundColor).toBe(0xBB);
310
+ expect(vtac.backgroundColorNextByte).toBe(false);
311
+ vtac.dataNextByte = true;
312
+ vtac.parse(0x00);
313
+ expect(dataSpy).toHaveBeenCalledWith(0x00);
314
+ expect(vtac.dataNextByte).toBe(false);
315
+ });
316
+ it('routes parse command bytes to the expected operations', () => {
317
+ const vtac = new VTAC_1.VTAC();
318
+ const resetSpy = jest.spyOn(vtac, 'reset');
319
+ const bellSpy = jest.spyOn(vtac, 'bell');
320
+ const backspaceSpy = jest.spyOn(vtac, 'backspace');
321
+ const tabSpy = jest.spyOn(vtac, 'tab');
322
+ const lineFeedSpy = jest.spyOn(vtac, 'lineFeed');
323
+ const carriageReturnSpy = jest.spyOn(vtac, 'carriageReturn');
324
+ const deleteToSpy = jest.spyOn(vtac, 'deleteTo');
325
+ const scrollSpy = jest.spyOn(vtac, 'scroll');
326
+ const cursorSpy = jest.spyOn(vtac, 'cursor');
327
+ const dataSpy = jest.spyOn(vtac, 'data');
328
+ const deleteSpy = jest.spyOn(vtac, 'delete');
329
+ vtac.column = 5;
330
+ vtac.row = 6;
331
+ vtac.offset = 7;
332
+ vtac.parse(0x01);
333
+ expect(vtac.column).toBe(0);
334
+ expect(vtac.row).toBe(0);
335
+ expect(vtac.offset).toBe(0);
336
+ vtac.parse(0x02);
337
+ expect(vtac.cursorCharNextByte).toBe(true);
338
+ vtac.parse(0x5A);
339
+ expect(vtac.cursorChar).toBe(0x5A);
340
+ vtac.parse(0x03);
341
+ expect(vtac.cursorMode).toBe('blinking');
342
+ vtac.parse(0x04);
343
+ expect(resetSpy).toHaveBeenCalled();
344
+ vtac.parse(0x05);
345
+ expect(vtac.bellDurationNextByte).toBe(true);
346
+ vtac.parse(0x10);
347
+ expect(vtac.bellDuration).toBe(0x10);
348
+ vtac.parse(0x06);
349
+ expect(vtac.bellFrequencyNextByte).toBe(true);
350
+ vtac.parse(0x2E);
351
+ expect(vtac.bellFrequency).toBe(0x2E);
352
+ vtac.parse(0x07);
353
+ expect(bellSpy).toHaveBeenCalled();
354
+ vtac.parse(0x08);
355
+ expect(backspaceSpy).toHaveBeenCalled();
356
+ vtac.parse(0x09);
357
+ expect(tabSpy).toHaveBeenCalled();
358
+ vtac.parse(0x0A);
359
+ expect(lineFeedSpy).toHaveBeenCalled();
360
+ const modeBefore = vtac.mode;
361
+ vtac.parse(0x0B);
362
+ expect(vtac.mode).not.toBe(modeBefore);
363
+ vtac.backgroundColor = 0x24;
364
+ vtac.buffer.fill(0xFF);
365
+ vtac.parse(0x0C);
366
+ expect(vtac.buffer.every((value) => value === 0x24)).toBe(true);
367
+ vtac.parse(0x0D);
368
+ expect(carriageReturnSpy).toHaveBeenCalled();
369
+ vtac.parse(0x0E);
370
+ expect(vtac.columnNextByte).toBe(true);
371
+ vtac.parse(0x21);
372
+ expect(vtac.column).toBe(0x21 % VTAC_1.VTAC.COLUMNS);
373
+ vtac.parse(0x0F);
374
+ expect(vtac.rowNextByte).toBe(true);
375
+ vtac.parse(0x22);
376
+ expect(vtac.row).toBe(0x22 % VTAC_1.VTAC.ROWS);
377
+ vtac.parse(0x10);
378
+ vtac.parse(0x11);
379
+ vtac.parse(0x12);
380
+ vtac.parse(0x13);
381
+ expect(deleteToSpy).toHaveBeenCalledWith('startOfLine');
382
+ expect(deleteToSpy).toHaveBeenCalledWith('endOfLine');
383
+ expect(deleteToSpy).toHaveBeenCalledWith('startOfScreen');
384
+ expect(deleteToSpy).toHaveBeenCalledWith('endOfScreen');
385
+ vtac.parse(0x14);
386
+ vtac.parse(0x15);
387
+ vtac.parse(0x16);
388
+ vtac.parse(0x17);
389
+ expect(scrollSpy).toHaveBeenCalledWith('left');
390
+ expect(scrollSpy).toHaveBeenCalledWith('right');
391
+ expect(scrollSpy).toHaveBeenCalledWith('up');
392
+ expect(scrollSpy).toHaveBeenCalledWith('down');
393
+ vtac.parse(0x18);
394
+ expect(vtac.foregroundColorNextByte).toBe(true);
395
+ vtac.parse(0xAB);
396
+ expect(vtac.foregroundColor).toBe(0xAB);
397
+ vtac.parse(0x19);
398
+ expect(vtac.backgroundColorNextByte).toBe(true);
399
+ vtac.parse(0xBC);
400
+ expect(vtac.backgroundColor).toBe(0xBC);
401
+ vtac.parse(0x1A);
402
+ expect(vtac.dataNextByte).toBe(true);
403
+ vtac.parse(0x00);
404
+ expect(vtac.dataNextByte).toBe(false);
405
+ const preEscColumn = vtac.column;
406
+ const preEscRow = vtac.row;
407
+ vtac.parse(0x1B);
408
+ expect(vtac.column).toBe(preEscColumn);
409
+ expect(vtac.row).toBe(preEscRow);
410
+ vtac.parse(0x1C);
411
+ vtac.parse(0x1D);
412
+ vtac.parse(0x1E);
413
+ vtac.parse(0x1F);
414
+ expect(cursorSpy).toHaveBeenCalledWith('left');
415
+ expect(cursorSpy).toHaveBeenCalledWith('right');
416
+ expect(cursorSpy).toHaveBeenCalledWith('up');
417
+ expect(cursorSpy).toHaveBeenCalledWith('down');
418
+ vtac.parse(0x20);
419
+ vtac.parse(0x80);
420
+ expect(dataSpy).toHaveBeenCalledWith(0x20);
421
+ expect(dataSpy).toHaveBeenCalledWith(0x80);
422
+ vtac.parse(0x7F);
423
+ expect(deleteSpy).toHaveBeenCalled();
424
+ const preDefaultColumn = vtac.column;
425
+ const preDefaultRow = vtac.row;
426
+ vtac.parse(0x100);
427
+ expect(vtac.column).toBe(preDefaultColumn);
428
+ expect(vtac.row).toBe(preDefaultRow);
429
+ vtac.parse(0x00);
430
+ expect(vtac.column).toBe(vtac.column);
431
+ });
432
+ });
433
+ //# sourceMappingURL=VTAC.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VTAC.test.js","sourceRoot":"","sources":["../../src/VTAC/VTAC.test.ts"],"names":[],"mappings":";;AAAA,iCAA6B;AAE7B,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;IAC5D,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,WAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,GAAW,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;QACjD,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,GAAW,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;IAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QAEvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEtB,IAAI,CAAC,KAAK,EAAE,CAAA;QAEZ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QAEvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,OAAO,CAAC,CAAA;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QAEvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,CAAC,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAA,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QAEvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAExB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QAEvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAElC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QAEvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,IAAI,EAAE,CAAA;QACX,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,IAAI,EAAE,CAAA;QACX,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAE5C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,CAAC,MAAM,GAAG,WAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QAE1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,CAAC,GAAG,GAAG,WAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QACpC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAE5C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAE3B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAE1B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAC5B,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAEjC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAC1B,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAEjC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAE1B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;QAC9B,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAEjC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAC5B,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAE3B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnB,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,WAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAEhD,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpB,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAEjC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,WAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QAE7C,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnB,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QAEf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,CAAC,MAAM,GAAG,WAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QAE1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAExB,IAAI,CAAC,GAAG,GAAG,WAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QAEpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;QAE1D,IAAI,CAAC,IAAI,GAAG,MAAM,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAE1C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAE5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC7D,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;YACnB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEjE,IAAI,CAAC,MAAM,GAAG,WAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAExB,IAAI,CAAC,MAAM,GAAG,WAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG,GAAG,WAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QACpC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAE3B,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;QACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,CAAC,MAAM,GAAG,WAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG,GAAG,WAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAE3B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAClC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAEjC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7B,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAExC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAE3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,OAAO,CAAC,CAAA;QAC7C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAA;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAE7C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAA;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAE9C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAE5C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAExC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAEnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAElC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAEjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAEtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAE5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,OAAO,CAAC,CAAA;QAE7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,IAAI,CAAC,CAAA;QAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;QACvD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;QACrD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAA;QACzD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;QAEvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAE9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAErC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAA;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACtC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEhC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAE9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAE1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAEpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAA;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ #! /usr/bin/env node
2
+ export {};
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ const fs_1 = require("fs");
10
10
  const sdl_1 = __importDefault(require("@kmamal/sdl"));
11
11
  const serialport_1 = require("serialport");
12
12
  const VTAC_1 = require("./VTAC/VTAC");
13
- const VERSION = '1.2.0';
13
+ const VERSION = '1.3.0';
14
14
  // Parse command line arguments
15
15
  const program = new commander_1.Command();
16
16
  program.showHelpAfterError();
@@ -19,7 +19,7 @@ program
19
19
  .description('A fantasy ASCII terminal emulator.')
20
20
  .version(VERSION, '-v, --version', 'Output the current version')
21
21
  .helpOption('-h, --help', 'Output help / options')
22
- .option('-p, --path <path>', 'Path to the serial port (e.g., /dev/ttyUSB0)')
22
+ .option('-p, --port <port>', 'Path to the serial port (e.g., /dev/ttyUSB0)')
23
23
  .option('-b, --baudrate <baudrate>', 'Baud Rate', '9600')
24
24
  .option('-a, --parity <parity>', 'Parity (odd | even | none)', 'none')
25
25
  .option('-d, --databits <databits>', 'Data Bits (5 | 6 | 7 | 8)', '8')
@@ -31,13 +31,11 @@ program
31
31
  .parse(process.argv);
32
32
  const options = program.opts();
33
33
  // Serial port configuration
34
- const serialPath = options.path;
34
+ const port = options.port;
35
35
  const baudRate = parseInt(options.baudrate);
36
36
  const parity = options.parity;
37
37
  const dataBits = parseInt(options.databits);
38
38
  const stopBits = parseFloat(options.stopbits);
39
- const fullscreen = options.fullscreen;
40
- const scale = parseInt(options.scale);
41
39
  // Validate options
42
40
  if (dataBits !== 5 && dataBits !== 6 && dataBits !== 7 && dataBits !== 8) {
43
41
  console.log('Error: Invalid Data Bits');
@@ -47,14 +45,17 @@ if (stopBits !== 1 && stopBits !== 1.5 && stopBits !== 2) {
47
45
  console.log('Error: Invalid Stop Bits');
48
46
  process.exit(1);
49
47
  }
48
+ // Display options
49
+ const fullscreen = options.fullscreen;
50
+ const scale = parseInt(options.scale);
50
51
  // Create VTAC instance
51
52
  const vtac = new VTAC_1.VTAC();
52
53
  // Serial port instance
53
- let port;
54
+ let serialPort;
54
55
  // Setup serial port connection
55
- if (serialPath) {
56
- port = new serialport_1.SerialPort({
57
- path: serialPath,
56
+ if (port) {
57
+ serialPort = new serialport_1.SerialPort({
58
+ path: port,
58
59
  baudRate: baudRate,
59
60
  parity: parity,
60
61
  dataBits: dataBits,
@@ -64,7 +65,7 @@ if (serialPath) {
64
65
  console.log('Error: ', err.message);
65
66
  }
66
67
  });
67
- port.on('data', (data) => {
68
+ serialPort.on('data', (data) => {
68
69
  for (let i = 0; i < data.length; i++) {
69
70
  vtac.parse(data[i]);
70
71
  }
@@ -102,7 +103,7 @@ const window = sdl_1.default.video.createWindow({
102
103
  });
103
104
  // Handle window keyboard events
104
105
  window.on('keyDown', (event) => {
105
- if (!port || !port.isOpen)
106
+ if (!serialPort || !serialPort.isOpen)
106
107
  return;
107
108
  let code;
108
109
  switch (event.key) {
@@ -114,7 +115,7 @@ window.on('keyDown', (event) => {
114
115
  break;
115
116
  case 'enter':
116
117
  case 'return':
117
- port.write([0x0D, 0x0A], 'hex');
118
+ serialPort.write([0x0D, 0x0A], 'hex');
118
119
  return;
119
120
  case 'escape':
120
121
  code = 0x1B;
@@ -138,26 +139,26 @@ window.on('keyDown', (event) => {
138
139
  break;
139
140
  }
140
141
  if (code !== undefined) {
141
- port.write([code], 'hex');
142
+ serialPort.write([code], 'hex');
142
143
  }
143
144
  });
144
145
  // Handle window text input events
145
146
  window.on('textInput', (event) => {
146
- if (!port || !port.isOpen)
147
+ if (!serialPort || !serialPort.isOpen)
147
148
  return;
148
149
  // Convert text to ASCII code
149
150
  const text = event.text;
150
151
  if (text.length === 1) {
151
152
  const code = text.charCodeAt(0);
152
153
  if (code >= 0x20 && code <= 0x7E) {
153
- port.write([code], 'hex');
154
+ serialPort.write([code], 'hex');
154
155
  }
155
156
  }
156
157
  });
157
158
  // Handle window close
158
159
  window.on('close', () => {
159
- if (port && port.isOpen) {
160
- port.close();
160
+ if (serialPort && serialPort.isOpen) {
161
+ serialPort.close();
161
162
  }
162
163
  });
163
164
  // Audio playback function
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { VTAC } from './VTAC/VTAC';
package/dist/lib.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VTAC = void 0;
4
+ var VTAC_1 = require("./VTAC/VTAC");
5
+ Object.defineProperty(exports, "VTAC", { enumerable: true, get: function () { return VTAC_1.VTAC; } });
6
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;AAAA,oCAAkC;AAAzB,4FAAA,IAAI,OAAA"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "vtac-terminal",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "A fantasy ASCII terminal emulator",
5
- "main": "index.js",
5
+ "main": "dist/lib.js",
6
+ "types": "dist/lib.d.ts",
6
7
  "bin": {
7
8
  "vtac": "dist/index.js"
8
9
  },
@@ -37,15 +38,15 @@
37
38
  "type": "commonjs",
38
39
  "dependencies": {
39
40
  "@kmamal/sdl": "^0.11.13",
40
- "commander": "^14.0.1",
41
- "figlet": "^1.9.3",
41
+ "commander": "^14.0.3",
42
+ "figlet": "^1.10.0",
42
43
  "serialport": "^13.0.0"
43
44
  },
44
45
  "devDependencies": {
45
46
  "@types/jest": "^30.0.0",
46
- "@types/node": "^24.7.0",
47
+ "@types/node": "^25.3.3",
47
48
  "jest": "^30.2.0",
48
- "ts-jest": "^29.4.5",
49
+ "ts-jest": "^29.4.6",
49
50
  "typescript": "^5.9.3"
50
51
  }
51
52
  }
package/src/index.ts CHANGED
@@ -3,11 +3,11 @@
3
3
  import figlet from 'figlet'
4
4
  import { Command } from 'commander'
5
5
  import { readFileSync } from 'fs'
6
- import sdl, { Sdl } from '@kmamal/sdl'
6
+ import sdl from '@kmamal/sdl'
7
7
  import { SerialPort } from 'serialport'
8
8
  import { VTAC } from './VTAC/VTAC'
9
9
 
10
- const VERSION = '1.2.0'
10
+ const VERSION = '1.3.0'
11
11
 
12
12
  // Parse command line arguments
13
13
  const program = new Command()
@@ -17,7 +17,7 @@ program
17
17
  .description('A fantasy ASCII terminal emulator.')
18
18
  .version(VERSION, '-v, --version', 'Output the current version')
19
19
  .helpOption('-h, --help', 'Output help / options')
20
- .option('-p, --path <path>', 'Path to the serial port (e.g., /dev/ttyUSB0)')
20
+ .option('-p, --port <port>', 'Path to the serial port (e.g., /dev/ttyUSB0)')
21
21
  .option('-b, --baudrate <baudrate>', 'Baud Rate', '9600')
22
22
  .option('-a, --parity <parity>', 'Parity (odd | even | none)', 'none')
23
23
  .option('-d, --databits <databits>', 'Data Bits (5 | 6 | 7 | 8)', '8')
@@ -31,13 +31,11 @@ program
31
31
  const options = program.opts()
32
32
 
33
33
  // Serial port configuration
34
- const serialPath = options.path
34
+ const port = options.port
35
35
  const baudRate = parseInt(options.baudrate)
36
36
  const parity = options.parity as 'odd' | 'even' | 'none'
37
37
  const dataBits = parseInt(options.databits) as 5 | 6 | 7 | 8
38
38
  const stopBits = parseFloat(options.stopbits) as 1 | 1.5 | 2
39
- const fullscreen = options.fullscreen
40
- const scale = parseInt(options.scale)
41
39
 
42
40
  // Validate options
43
41
  if (dataBits !== 5 && dataBits !== 6 && dataBits !== 7 && dataBits !== 8) {
@@ -49,16 +47,20 @@ if (stopBits !== 1 && stopBits !== 1.5 && stopBits !== 2) {
49
47
  process.exit(1)
50
48
  }
51
49
 
50
+ // Display options
51
+ const fullscreen = options.fullscreen
52
+ const scale = parseInt(options.scale)
53
+
52
54
  // Create VTAC instance
53
55
  const vtac = new VTAC()
54
56
 
55
57
  // Serial port instance
56
- let port: SerialPort | undefined
58
+ let serialPort: SerialPort | undefined
57
59
 
58
60
  // Setup serial port connection
59
- if (serialPath) {
60
- port = new SerialPort({
61
- path: serialPath,
61
+ if (port) {
62
+ serialPort = new SerialPort({
63
+ path: port,
62
64
  baudRate: baudRate,
63
65
  parity: parity,
64
66
  dataBits: dataBits,
@@ -69,7 +71,7 @@ if (serialPath) {
69
71
  }
70
72
  })
71
73
 
72
- port.on('data', (data: Buffer<ArrayBuffer>) => {
74
+ serialPort.on('data', (data: Buffer<ArrayBuffer>) => {
73
75
  for (let i = 0; i < data.length; i++) {
74
76
  vtac.parse(data[i])
75
77
  }
@@ -112,7 +114,7 @@ const window = sdl.video.createWindow({
112
114
 
113
115
  // Handle window keyboard events
114
116
  window.on('keyDown', (event: sdl.Events.Window.KeyDown) => {
115
- if (!port || !port.isOpen) return
117
+ if (!serialPort || !serialPort.isOpen) return
116
118
 
117
119
  let code: number | undefined
118
120
 
@@ -125,7 +127,7 @@ window.on('keyDown', (event: sdl.Events.Window.KeyDown) => {
125
127
  break
126
128
  case 'enter':
127
129
  case 'return':
128
- port.write([0x0D, 0x0A], 'hex')
130
+ serialPort.write([0x0D, 0x0A], 'hex')
129
131
  return
130
132
  case 'escape':
131
133
  code = 0x1B
@@ -150,28 +152,28 @@ window.on('keyDown', (event: sdl.Events.Window.KeyDown) => {
150
152
  }
151
153
 
152
154
  if (code !== undefined) {
153
- port.write([code], 'hex')
155
+ serialPort.write([code], 'hex')
154
156
  }
155
157
  })
156
158
 
157
159
  // Handle window text input events
158
160
  window.on('textInput', (event: sdl.Events.Window.TextInput) => {
159
- if (!port || !port.isOpen) return
161
+ if (!serialPort || !serialPort.isOpen) return
160
162
 
161
163
  // Convert text to ASCII code
162
164
  const text = event.text
163
165
  if (text.length === 1) {
164
166
  const code = text.charCodeAt(0)
165
167
  if (code >= 0x20 && code <= 0x7E) {
166
- port.write([code], 'hex')
168
+ serialPort.write([code], 'hex')
167
169
  }
168
170
  }
169
171
  })
170
172
 
171
173
  // Handle window close
172
174
  window.on('close', () => {
173
- if (port && port.isOpen) {
174
- port.close()
175
+ if (serialPort && serialPort.isOpen) {
176
+ serialPort.close()
175
177
  }
176
178
  })
177
179
 
package/src/lib.ts ADDED
@@ -0,0 +1 @@
1
+ export { VTAC } from './VTAC/VTAC'
package/tsconfig.json CHANGED
@@ -7,6 +7,7 @@
7
7
  "module": "commonjs",
8
8
  "sourceMap": true,
9
9
  "esModuleInterop": true,
10
- "moduleResolution": "node"
10
+ "moduleResolution": "node",
11
+ "declaration": true
11
12
  }
12
13
  }