@thermal-label/brother-ql-node 0.6.0 → 0.6.2
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 +3 -3
- package/dist/__tests__/discovery.test.js +305 -72
- package/dist/__tests__/discovery.test.js.map +1 -1
- package/dist/__tests__/printer-network.test.d.ts +2 -0
- package/dist/__tests__/printer-network.test.d.ts.map +1 -0
- package/dist/__tests__/printer-network.test.js +242 -0
- package/dist/__tests__/printer-network.test.js.map +1 -0
- package/dist/__tests__/printer.test.js +80 -10
- package/dist/__tests__/printer.test.js.map +1 -1
- package/dist/discovery.d.ts +36 -16
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +178 -72
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/printer.d.ts +28 -5
- package/dist/printer.d.ts.map +1 -1
- package/dist/printer.js +143 -10
- package/dist/printer.js.map +1 -1
- package/package.json +4 -5
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@ await printer.close();
|
|
|
75
75
|
|
|
76
76
|
<!-- HARDWARE_TABLE:START -->
|
|
77
77
|
|
|
78
|
-
**24 devices** —
|
|
78
|
+
**24 devices** — 3 verified · 0 partial · 15 expected · 0 unsupported · 6 unverified
|
|
79
79
|
|
|
80
80
|
| Model | Key | USB PID | Transports | Status |
|
|
81
81
|
| ---------------------------------------------------------------------------- | ------------ | ------- | ---------------- | ------------- |
|
|
@@ -92,10 +92,10 @@ await printer.close();
|
|
|
92
92
|
| [QL-580N](https://thermal-label.github.io/hardware/brother-ql/ql-580n) | `QL_580N` | 0x201b | USB, TCP | 🔄 expected |
|
|
93
93
|
| [QL-600](https://thermal-label.github.io/hardware/brother-ql/ql-600) | `QL_600` | 0x2100 | USB | 🔄 expected |
|
|
94
94
|
| [QL-650TD](https://thermal-label.github.io/hardware/brother-ql/ql-650td) | `QL_650TD` | 0x201c | USB | 🔄 expected |
|
|
95
|
-
| [QL-700](https://thermal-label.github.io/hardware/brother-ql/ql-700) | `QL_700` | 0x2042 | USB |
|
|
95
|
+
| [QL-700](https://thermal-label.github.io/hardware/brother-ql/ql-700) | `QL_700` | 0x2042 | USB | ✅ verified |
|
|
96
96
|
| [QL-710W](https://thermal-label.github.io/hardware/brother-ql/ql-710w) | `QL_710W` | 0x2044 | USB, TCP | 🔄 expected |
|
|
97
97
|
| [QL-720NW](https://thermal-label.github.io/hardware/brother-ql/ql-720nw) | `QL_720NW` | 0x2045 | USB, TCP | 🔄 expected |
|
|
98
|
-
| [QL-800](https://thermal-label.github.io/hardware/brother-ql/ql-800) | `QL_800` | 0x209b | USB |
|
|
98
|
+
| [QL-800](https://thermal-label.github.io/hardware/brother-ql/ql-800) | `QL_800` | 0x209b | USB | ✅ verified |
|
|
99
99
|
| [QL-810W](https://thermal-label.github.io/hardware/brother-ql/ql-810w) | `QL_810W` | 0x209c | USB, TCP | 🔄 expected |
|
|
100
100
|
| [QL-820NWBc](https://thermal-label.github.io/hardware/brother-ql/ql-820nwbc) | `QL_820NWBc` | 0x209d | USB, TCP, BT SPP | ✅ verified |
|
|
101
101
|
| [QL-1050](https://thermal-label.github.io/hardware/brother-ql/ql-1050) | `QL_1050` | 0x2027 | USB | 🔄 expected |
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
-
|
|
2
|
+
import { DEVICES, MEDIA, getUsbIds } from '@thermal-label/brother-ql-core';
|
|
3
|
+
import { DeviceIdentificationRequiredError, DeviceNotFoundError, TransportTimeoutError, } from '@thermal-label/contracts';
|
|
4
|
+
const { usbOpen, tcpConnect, serialOpen, enumerate, enumerateNetwork, identify, snmpGet } = vi.hoisted(() => ({
|
|
3
5
|
usbOpen: vi.fn(),
|
|
4
6
|
tcpConnect: vi.fn(),
|
|
5
7
|
serialOpen: vi.fn(),
|
|
8
|
+
enumerate: vi.fn(),
|
|
9
|
+
enumerateNetwork: vi.fn(),
|
|
10
|
+
identify: vi.fn(),
|
|
11
|
+
snmpGet: vi.fn(),
|
|
6
12
|
}));
|
|
7
|
-
vi.mock('@thermal-label/transport/node', () =>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
vi.mock('@thermal-label/transport/node', async (importOriginal) => {
|
|
14
|
+
const actual = await importOriginal();
|
|
15
|
+
return {
|
|
16
|
+
PRINTER_MIB: actual.PRINTER_MIB,
|
|
17
|
+
UsbTransport: { open: usbOpen },
|
|
18
|
+
TcpTransport: { connect: tcpConnect },
|
|
19
|
+
SerialTransport: { open: serialOpen },
|
|
20
|
+
enumerateUsbDevices: enumerate,
|
|
21
|
+
enumerateNetworkDevices: enumerateNetwork,
|
|
22
|
+
identifyNetworkDevice: identify,
|
|
23
|
+
snmpGet,
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
import { PRINTER_MIB } from '@thermal-label/transport/node';
|
|
27
|
+
import { BrotherQLDiscovery, discovery } from '../discovery.js';
|
|
17
28
|
function fakeTransport() {
|
|
18
29
|
return {
|
|
19
30
|
connected: true,
|
|
@@ -22,129 +33,351 @@ function fakeTransport() {
|
|
|
22
33
|
close: vi.fn(),
|
|
23
34
|
};
|
|
24
35
|
}
|
|
25
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Build an `EnumeratedUsbDevice` (the shape the transport helper returns)
|
|
38
|
+
* for the device whose USB ids are `vid`/`pid`. Returns `undefined` when the
|
|
39
|
+
* vid/pid is not in the registry — modelling the helper silently dropping
|
|
40
|
+
* unknown devices, including a same-VID Editor-Lite mass-storage PID.
|
|
41
|
+
*/
|
|
42
|
+
function enumerated(vid, pid, serialNumber) {
|
|
43
|
+
const descriptor = Object.values(DEVICES).find(d => {
|
|
44
|
+
const ids = getUsbIds(d);
|
|
45
|
+
return ids?.vid === vid && ids.pid === pid;
|
|
46
|
+
});
|
|
47
|
+
if (!descriptor)
|
|
48
|
+
return undefined;
|
|
26
49
|
return {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}),
|
|
50
|
+
descriptor,
|
|
51
|
+
...(serialNumber === undefined ? {} : { serialNumber }),
|
|
52
|
+
connectionId: '1:2',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** The bench QL-820NWBc as `enumerateNetworkDevices` / `identifyNetworkDevice` report it. */
|
|
56
|
+
function networked(host = '192.168.1.67', serialNumber = 'M5G679125') {
|
|
57
|
+
return {
|
|
58
|
+
descriptor: DEVICES.QL_820NWBc,
|
|
59
|
+
host,
|
|
60
|
+
port: 9100,
|
|
61
|
+
...(serialNumber === null ? {} : { serialNumber }),
|
|
62
|
+
modelName: 'Brother QL-820NWB',
|
|
63
|
+
connectionId: `${host}:9100`,
|
|
39
64
|
};
|
|
40
65
|
}
|
|
41
|
-
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {
|
|
42
|
-
/* suppress */
|
|
43
|
-
});
|
|
44
66
|
beforeEach(() => {
|
|
45
67
|
usbOpen.mockReset();
|
|
46
68
|
tcpConnect.mockReset();
|
|
47
69
|
serialOpen.mockReset();
|
|
48
|
-
|
|
49
|
-
|
|
70
|
+
enumerate.mockReset().mockResolvedValue([]);
|
|
71
|
+
enumerateNetwork.mockReset().mockResolvedValue([]);
|
|
72
|
+
identify.mockReset();
|
|
73
|
+
snmpGet.mockReset().mockResolvedValue({});
|
|
50
74
|
});
|
|
51
75
|
describe('BrotherQLDiscovery', () => {
|
|
52
76
|
it('exposes the brother-ql family', () => {
|
|
53
77
|
expect(discovery.family).toBe('brother-ql');
|
|
54
78
|
});
|
|
79
|
+
it('exposes the media catalog', () => {
|
|
80
|
+
const media = discovery.listMedia();
|
|
81
|
+
expect(media.length).toBe(Object.keys(MEDIA).length);
|
|
82
|
+
expect(media).toContain(MEDIA[259]);
|
|
83
|
+
});
|
|
55
84
|
describe('listPrinters', () => {
|
|
56
85
|
it('returns known Brother QL devices from USB enumeration', async () => {
|
|
57
|
-
|
|
86
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x209d)]);
|
|
58
87
|
const printers = await discovery.listPrinters();
|
|
59
88
|
expect(printers).toHaveLength(1);
|
|
60
89
|
expect(printers[0].device.name).toBe('QL-820NWBc');
|
|
61
90
|
expect(printers[0].transport).toBe('usb');
|
|
62
|
-
expect(printers[0].connectionId).toBe('1
|
|
63
|
-
|
|
64
|
-
it('excludes unknown (non-Brother) USB devices', async () => {
|
|
65
|
-
vi.mocked(usb.getDeviceList).mockReturnValueOnce([makeUsbDevice(0x1234, 0x5678)]);
|
|
66
|
-
expect(await discovery.listPrinters()).toHaveLength(0);
|
|
91
|
+
expect(printers[0].connectionId).toBe('1:2');
|
|
92
|
+
expect(printers[0].host).toBeUndefined();
|
|
67
93
|
});
|
|
68
|
-
it('
|
|
69
|
-
// Brother VID but not in the DEVICES registry and not a mass-storage PID
|
|
70
|
-
vi.mocked(usb.getDeviceList).mockReturnValueOnce([makeUsbDevice(0x04f9, 0x9999)]);
|
|
94
|
+
it('returns nothing when neither half finds a device', async () => {
|
|
71
95
|
expect(await discovery.listPrinters()).toHaveLength(0);
|
|
72
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
73
96
|
});
|
|
74
|
-
it('
|
|
75
|
-
|
|
97
|
+
it('omits a same-VID mass-storage device — it is never enumerated', async () => {
|
|
98
|
+
// The Editor-Lite mass-storage PID is outside the registry, so the
|
|
99
|
+
// shared helper drops it like any unknown device: no entry, no warning.
|
|
100
|
+
expect(enumerated(0x04f9, 0x20aa)).toBeUndefined();
|
|
101
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x20aa)].filter(Boolean));
|
|
76
102
|
expect(await discovery.listPrinters()).toHaveLength(0);
|
|
77
|
-
expect(warnSpy).toHaveBeenCalledOnce();
|
|
78
103
|
});
|
|
79
|
-
it('
|
|
80
|
-
|
|
81
|
-
makeUsbDevice(0x04f9, 0x209d, 'SN123'),
|
|
82
|
-
]);
|
|
104
|
+
it('surfaces the serial number reported by the helper', async () => {
|
|
105
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x209d, 'SN123')]);
|
|
83
106
|
const [printer] = await discovery.listPrinters();
|
|
84
107
|
expect(printer?.serialNumber).toBe('SN123');
|
|
85
108
|
});
|
|
86
|
-
it('
|
|
87
|
-
|
|
88
|
-
device.getStringDescriptor.mockImplementation((_idx, cb) => {
|
|
89
|
-
cb(new Error('descriptor read failed'));
|
|
90
|
-
});
|
|
91
|
-
vi.mocked(usb.getDeviceList).mockReturnValueOnce([device]);
|
|
109
|
+
it('leaves serialNumber undefined when the helper reports none', async () => {
|
|
110
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x209d)]);
|
|
92
111
|
const [printer] = await discovery.listPrinters();
|
|
93
112
|
expect(printer?.serialNumber).toBeUndefined();
|
|
94
113
|
});
|
|
114
|
+
it('lists network printers after USB ones, with host/port and serial', async () => {
|
|
115
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x209d, 'SN-USB')]);
|
|
116
|
+
enumerateNetwork.mockResolvedValueOnce([networked()]);
|
|
117
|
+
const printers = await discovery.listPrinters();
|
|
118
|
+
expect(printers.map(p => p.transport)).toEqual(['usb', 'tcp']);
|
|
119
|
+
expect(printers[1]).toMatchObject({
|
|
120
|
+
device: DEVICES.QL_820NWBc,
|
|
121
|
+
serialNumber: 'M5G679125',
|
|
122
|
+
host: '192.168.1.67',
|
|
123
|
+
port: 9100,
|
|
124
|
+
connectionId: '192.168.1.67:9100',
|
|
125
|
+
});
|
|
126
|
+
expect(enumerateNetwork).toHaveBeenCalledWith(Object.values(DEVICES), {});
|
|
127
|
+
});
|
|
128
|
+
it('omits serialNumber on a network printer whose agent has none', async () => {
|
|
129
|
+
enumerateNetwork.mockResolvedValueOnce([networked('10.0.0.9', null)]);
|
|
130
|
+
const [printer] = await discovery.listPrinters();
|
|
131
|
+
expect(printer).not.toHaveProperty('serialNumber');
|
|
132
|
+
});
|
|
133
|
+
it('still lists network printers when the usb addon is missing', async () => {
|
|
134
|
+
enumerate.mockRejectedValueOnce(new Error("Cannot find package 'usb'"));
|
|
135
|
+
enumerateNetwork.mockResolvedValueOnce([networked()]);
|
|
136
|
+
const printers = await discovery.listPrinters();
|
|
137
|
+
expect(printers).toHaveLength(1);
|
|
138
|
+
expect(printers[0].transport).toBe('tcp');
|
|
139
|
+
});
|
|
140
|
+
it('still lists USB printers when the network scan fails', async () => {
|
|
141
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x209d)]);
|
|
142
|
+
enumerateNetwork.mockRejectedValueOnce(new Error('EACCES'));
|
|
143
|
+
const printers = await discovery.listPrinters();
|
|
144
|
+
expect(printers).toHaveLength(1);
|
|
145
|
+
expect(printers[0].transport).toBe('usb');
|
|
146
|
+
});
|
|
147
|
+
it('rejects with the USB error when both halves fail', async () => {
|
|
148
|
+
enumerate.mockRejectedValueOnce(new Error("Cannot find package 'usb'"));
|
|
149
|
+
enumerateNetwork.mockRejectedValueOnce(new Error('EACCES'));
|
|
150
|
+
await expect(discovery.listPrinters()).rejects.toThrow("Cannot find package 'usb'");
|
|
151
|
+
});
|
|
152
|
+
it('skips the network scan with { network: false }', async () => {
|
|
153
|
+
const usbOnly = new BrotherQLDiscovery({ network: false });
|
|
154
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x209d)]);
|
|
155
|
+
expect(await usbOnly.listPrinters()).toHaveLength(1);
|
|
156
|
+
expect(enumerateNetwork).not.toHaveBeenCalled();
|
|
157
|
+
});
|
|
158
|
+
it('forwards the constructor community to the scan', async () => {
|
|
159
|
+
await new BrotherQLDiscovery({ community: 'office' }).listPrinters();
|
|
160
|
+
expect(enumerateNetwork).toHaveBeenCalledWith(Object.values(DEVICES), {
|
|
161
|
+
community: 'office',
|
|
162
|
+
});
|
|
163
|
+
});
|
|
95
164
|
});
|
|
96
|
-
describe('openPrinter', () => {
|
|
165
|
+
describe('openPrinter (USB)', () => {
|
|
97
166
|
it('opens a USB printer via UsbTransport', async () => {
|
|
98
|
-
|
|
167
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x209d)]);
|
|
99
168
|
usbOpen.mockResolvedValue(fakeTransport());
|
|
100
169
|
const printer = await discovery.openPrinter();
|
|
101
170
|
expect(printer.device.transports.usb?.pid).toBe('0x209d');
|
|
102
171
|
expect(usbOpen).toHaveBeenCalledWith(0x04f9, 0x209d);
|
|
103
172
|
});
|
|
104
173
|
it('filters by VID/PID when multiple devices are attached', async () => {
|
|
105
|
-
|
|
106
|
-
makeUsbDevice(0x04f9, 0x209d),
|
|
107
|
-
makeUsbDevice(0x04f9, 0x209b),
|
|
108
|
-
]);
|
|
174
|
+
enumerate.mockResolvedValueOnce([enumerated(0x04f9, 0x209d), enumerated(0x04f9, 0x209b)]);
|
|
109
175
|
usbOpen.mockResolvedValue(fakeTransport());
|
|
110
176
|
const printer = await discovery.openPrinter({ vid: 0x04f9, pid: 0x209b });
|
|
111
177
|
expect(printer.device.transports.usb?.pid).toBe('0x209b');
|
|
112
178
|
expect(usbOpen).toHaveBeenCalledWith(0x04f9, 0x209b);
|
|
113
179
|
});
|
|
114
180
|
it('filters by serialNumber when multiple devices share a PID', async () => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
181
|
+
enumerate.mockResolvedValueOnce([
|
|
182
|
+
enumerated(0x04f9, 0x209d, 'SN-A'),
|
|
183
|
+
enumerated(0x04f9, 0x209d, 'SN-TARGET'),
|
|
118
184
|
]);
|
|
119
185
|
usbOpen.mockResolvedValue(fakeTransport());
|
|
120
186
|
const printer = await discovery.openPrinter({ serialNumber: 'SN-TARGET' });
|
|
121
187
|
expect(printer.device.transports.usb?.pid).toBe('0x209d');
|
|
188
|
+
expect(enumerateNetwork).not.toHaveBeenCalled();
|
|
122
189
|
});
|
|
123
|
-
it('throws when no matching device is attached', async () => {
|
|
124
|
-
await expect(discovery.openPrinter()).rejects.
|
|
190
|
+
it('throws DeviceNotFoundError when no matching device is attached', async () => {
|
|
191
|
+
await expect(discovery.openPrinter()).rejects.toBeInstanceOf(DeviceNotFoundError);
|
|
192
|
+
expect(enumerateNetwork).not.toHaveBeenCalled();
|
|
125
193
|
});
|
|
126
|
-
it('
|
|
194
|
+
it('falls back to the network scan for a serial number USB does not have', async () => {
|
|
195
|
+
enumerateNetwork.mockResolvedValueOnce([networked()]);
|
|
127
196
|
tcpConnect.mockResolvedValue(fakeTransport());
|
|
128
|
-
const printer = await discovery.openPrinter({
|
|
197
|
+
const printer = await discovery.openPrinter({ serialNumber: 'M5G679125' });
|
|
129
198
|
expect(printer.transportType).toBe('tcp');
|
|
130
|
-
expect(
|
|
199
|
+
expect(printer.device).toBe(DEVICES.QL_820NWBc);
|
|
200
|
+
expect(tcpConnect).toHaveBeenCalledWith('192.168.1.67', 9100);
|
|
201
|
+
// The scan already identified the model: no second SNMP round trip.
|
|
202
|
+
expect(identify).not.toHaveBeenCalled();
|
|
203
|
+
});
|
|
204
|
+
it('throws DeviceNotFoundError when the serial is on neither transport', async () => {
|
|
205
|
+
enumerateNetwork.mockResolvedValueOnce([networked()]);
|
|
206
|
+
await expect(discovery.openPrinter({ serialNumber: 'nope' })).rejects.toBeInstanceOf(DeviceNotFoundError);
|
|
207
|
+
});
|
|
208
|
+
it('does not scan the network for a serial with { network: false }', async () => {
|
|
209
|
+
const usbOnly = new BrotherQLDiscovery({ network: false });
|
|
210
|
+
await expect(usbOnly.openPrinter({ serialNumber: 'M5G679125' })).rejects.toBeInstanceOf(DeviceNotFoundError);
|
|
211
|
+
expect(enumerateNetwork).not.toHaveBeenCalled();
|
|
212
|
+
});
|
|
213
|
+
it('surfaces the usb addon error when USB is the only option', async () => {
|
|
214
|
+
enumerate.mockRejectedValueOnce(new Error("Cannot find package 'usb'"));
|
|
215
|
+
await expect(discovery.openPrinter()).rejects.toThrow("Cannot find package 'usb'");
|
|
131
216
|
});
|
|
132
|
-
it('
|
|
217
|
+
it('reaches a network printer by serial even when the usb addon is missing', async () => {
|
|
218
|
+
enumerate.mockRejectedValueOnce(new Error("Cannot find package 'usb'"));
|
|
219
|
+
enumerateNetwork.mockResolvedValueOnce([networked()]);
|
|
133
220
|
tcpConnect.mockResolvedValue(fakeTransport());
|
|
134
|
-
await discovery.openPrinter({
|
|
221
|
+
const printer = await discovery.openPrinter({ serialNumber: 'M5G679125' });
|
|
222
|
+
expect(printer.transportType).toBe('tcp');
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
describe('openPrinter (TCP)', () => {
|
|
226
|
+
it('identifies the model over SNMP, then connects', async () => {
|
|
227
|
+
identify.mockResolvedValueOnce(networked());
|
|
228
|
+
tcpConnect.mockResolvedValue(fakeTransport());
|
|
229
|
+
const printer = await discovery.openPrinter({ host: '192.168.1.67' });
|
|
230
|
+
expect(printer.transportType).toBe('tcp');
|
|
231
|
+
expect(printer.device).toBe(DEVICES.QL_820NWBc);
|
|
232
|
+
expect(identify).toHaveBeenCalledWith('192.168.1.67', Object.values(DEVICES), {});
|
|
233
|
+
expect(identify.mock.invocationCallOrder[0]).toBeLessThan(tcpConnect.mock.invocationCallOrder[0]);
|
|
234
|
+
expect(tcpConnect).toHaveBeenCalledWith('192.168.1.67', undefined);
|
|
235
|
+
});
|
|
236
|
+
it('passes port and community through', async () => {
|
|
237
|
+
identify.mockResolvedValueOnce(networked('10.0.0.5'));
|
|
238
|
+
tcpConnect.mockResolvedValue(fakeTransport());
|
|
239
|
+
await discovery.openPrinter({ host: '10.0.0.5', port: 9101, snmpCommunity: 'office' });
|
|
240
|
+
expect(identify).toHaveBeenCalledWith('10.0.0.5', Object.values(DEVICES), {
|
|
241
|
+
community: 'office',
|
|
242
|
+
});
|
|
135
243
|
expect(tcpConnect).toHaveBeenCalledWith('10.0.0.5', 9101);
|
|
136
244
|
});
|
|
137
|
-
it('
|
|
245
|
+
it('uses the discovery community for identify and the status side channel', async () => {
|
|
246
|
+
identify.mockResolvedValueOnce(networked());
|
|
247
|
+
tcpConnect.mockResolvedValue(fakeTransport());
|
|
248
|
+
const office = new BrotherQLDiscovery({ community: 'office' });
|
|
249
|
+
const printer = await office.openPrinter({ host: '192.168.1.67' });
|
|
250
|
+
expect(identify).toHaveBeenCalledWith('192.168.1.67', Object.values(DEVICES), {
|
|
251
|
+
community: 'office',
|
|
252
|
+
});
|
|
253
|
+
await expect(printer.getStatus()).resolves.toBeDefined();
|
|
254
|
+
expect(snmpGet).toHaveBeenCalledWith('192.168.1.67', expect.any(Array), {
|
|
255
|
+
community: 'office',
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
it('per-call snmpCommunity wins over the discovery community', async () => {
|
|
259
|
+
identify.mockResolvedValueOnce(networked());
|
|
260
|
+
tcpConnect.mockResolvedValue(fakeTransport());
|
|
261
|
+
const office = new BrotherQLDiscovery({ community: 'office' });
|
|
262
|
+
const printer = await office.openPrinter({ host: '192.168.1.67', snmpCommunity: 'lab' });
|
|
263
|
+
expect(identify).toHaveBeenCalledWith('192.168.1.67', Object.values(DEVICES), {
|
|
264
|
+
community: 'lab',
|
|
265
|
+
});
|
|
266
|
+
await expect(printer.getStatus()).resolves.toBeDefined();
|
|
267
|
+
expect(snmpGet).toHaveBeenCalledWith('192.168.1.67', expect.any(Array), {
|
|
268
|
+
community: 'lab',
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
it('carries the discovery community into a serial-number network re-open', async () => {
|
|
272
|
+
enumerateNetwork.mockResolvedValueOnce([networked()]);
|
|
273
|
+
tcpConnect.mockResolvedValue(fakeTransport());
|
|
274
|
+
const office = new BrotherQLDiscovery({ community: 'office' });
|
|
275
|
+
const printer = await office.openPrinter({ serialNumber: 'M5G679125' });
|
|
276
|
+
expect(enumerateNetwork).toHaveBeenCalledWith(Object.values(DEVICES), {
|
|
277
|
+
community: 'office',
|
|
278
|
+
});
|
|
279
|
+
await expect(printer.getStatus()).resolves.toBeDefined();
|
|
280
|
+
expect(snmpGet).toHaveBeenCalledWith('192.168.1.67', expect.any(Array), {
|
|
281
|
+
community: 'office',
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
it('deviceKey wins: no SNMP, that descriptor', async () => {
|
|
285
|
+
tcpConnect.mockResolvedValue(fakeTransport());
|
|
286
|
+
const printer = await discovery.openPrinter({ host: '192.168.1.67', deviceKey: 'PT_E550W' });
|
|
287
|
+
expect(printer.device).toBe(DEVICES.PT_E550W);
|
|
288
|
+
expect(identify).not.toHaveBeenCalled();
|
|
289
|
+
expect(tcpConnect).toHaveBeenCalledWith('192.168.1.67', undefined);
|
|
290
|
+
});
|
|
291
|
+
it('rejects an unknown deviceKey before connecting', async () => {
|
|
292
|
+
await expect(discovery.openPrinter({ host: '192.168.1.67', deviceKey: 'QL_9999' })).rejects.toThrow(/Unknown deviceKey "QL_9999".*TCP-capable Brother QL keys: .*QL_820NWBc/);
|
|
293
|
+
expect(tcpConnect).not.toHaveBeenCalled();
|
|
294
|
+
});
|
|
295
|
+
it('rejects a deviceKey without a TCP transport before connecting', async () => {
|
|
296
|
+
await expect(discovery.openPrinter({ host: '192.168.1.67', deviceKey: 'QL_700' })).rejects.toThrow(/QL_700 has no tcp transport/);
|
|
297
|
+
expect(tcpConnect).not.toHaveBeenCalled();
|
|
298
|
+
});
|
|
299
|
+
it('throws DeviceIdentificationRequiredError naming the model when SNMP answers with a stranger', async () => {
|
|
300
|
+
snmpGet.mockResolvedValueOnce({
|
|
301
|
+
[PRINTER_MIB.hrDeviceDescr]: {
|
|
302
|
+
type: 'string',
|
|
303
|
+
value: 'DYMO LabelWriter 550',
|
|
304
|
+
raw: new Uint8Array(),
|
|
305
|
+
},
|
|
306
|
+
});
|
|
307
|
+
const err = await discovery.openPrinter({ host: '192.168.1.80' }).catch((e) => e);
|
|
308
|
+
expect(err).toBeInstanceOf(DeviceIdentificationRequiredError);
|
|
309
|
+
const typed = err;
|
|
310
|
+
expect(typed.message).toMatch(/192\.168\.1\.80 reports "DYMO LabelWriter 550", which is not in the brother-ql registry/);
|
|
311
|
+
expect(typed.message).toMatch(/Pass deviceKey, one of: .*PT_E550W.*QL_820NWBc/);
|
|
312
|
+
// The CLI decides whether to suggest --media by sniffing the
|
|
313
|
+
// message; a stranger on SNMP still has readable status.
|
|
314
|
+
expect(typed.message).not.toMatch(/no SNMP answer|status is unavailable/i);
|
|
315
|
+
expect(typed.candidates.every(c => c.transports.tcp !== undefined)).toBe(true);
|
|
316
|
+
expect(typed.candidates.map(c => c.key)).toContain('QL_820NWBc');
|
|
317
|
+
expect(tcpConnect).not.toHaveBeenCalled();
|
|
318
|
+
});
|
|
319
|
+
it('names "a model" when the follow-up model read fails too', async () => {
|
|
320
|
+
snmpGet.mockRejectedValueOnce(new Error('gone'));
|
|
321
|
+
await expect(discovery.openPrinter({ host: '192.168.1.80' })).rejects.toThrow(/192\.168\.1\.80 reports a model, which is not/);
|
|
322
|
+
});
|
|
323
|
+
it('throws DeviceIdentificationRequiredError saying SNMP did not answer', async () => {
|
|
324
|
+
identify.mockRejectedValueOnce(new TransportTimeoutError('tcp', 2000));
|
|
325
|
+
const err = await discovery.openPrinter({ host: '192.168.1.80' }).catch((e) => e);
|
|
326
|
+
expect(err).toBeInstanceOf(DeviceIdentificationRequiredError);
|
|
327
|
+
expect(err.message).toMatch(/No SNMP answer from 192\.168\.1\.80 \(Read timed out after 2000ms\).*status is unavailable, so pass media too/);
|
|
328
|
+
// Pinned: thermal-label-cli matches /no SNMP answer|status is unavailable/i
|
|
329
|
+
// on this message to add `--media <id>` to its hint.
|
|
330
|
+
expect(err.message).toMatch(/no SNMP answer/i);
|
|
331
|
+
expect(err.message).toMatch(/status is unavailable/);
|
|
332
|
+
expect(snmpGet).not.toHaveBeenCalled();
|
|
333
|
+
expect(tcpConnect).not.toHaveBeenCalled();
|
|
334
|
+
});
|
|
335
|
+
it('continueWith(deviceKey) opens with that key and returns an adapter map', async () => {
|
|
336
|
+
identify.mockRejectedValueOnce(new Error('no answer'));
|
|
337
|
+
tcpConnect.mockResolvedValue(fakeTransport());
|
|
338
|
+
const err = (await discovery
|
|
339
|
+
.openPrinter({ host: '192.168.1.80', port: 9101 })
|
|
340
|
+
.catch((e) => e));
|
|
341
|
+
const printers = await err.continueWith('QL_820NWBc');
|
|
342
|
+
expect(Object.keys(printers)).toEqual(['primary']);
|
|
343
|
+
expect(printers.primary.device.key).toBe('QL_820NWBc');
|
|
344
|
+
expect(identify).toHaveBeenCalledTimes(1);
|
|
345
|
+
expect(tcpConnect).toHaveBeenCalledWith('192.168.1.80', 9101);
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
describe('openPrinter (serial)', () => {
|
|
349
|
+
it('opens a serial printer with serialPath + deviceKey', async () => {
|
|
138
350
|
serialOpen.mockResolvedValue(fakeTransport());
|
|
139
|
-
const printer = await discovery.openPrinter({
|
|
351
|
+
const printer = await discovery.openPrinter({
|
|
352
|
+
serialPath: '/dev/rfcomm0',
|
|
353
|
+
deviceKey: 'QL_820NWBc',
|
|
354
|
+
});
|
|
140
355
|
expect(printer.transportType).toBe('serial');
|
|
356
|
+
expect(printer.device).toBe(DEVICES.QL_820NWBc);
|
|
141
357
|
expect(serialOpen).toHaveBeenCalledWith('/dev/rfcomm0', undefined);
|
|
142
358
|
});
|
|
143
|
-
it('forwards baudRate
|
|
359
|
+
it('still accepts the deprecated path alias and forwards baudRate', async () => {
|
|
144
360
|
serialOpen.mockResolvedValue(fakeTransport());
|
|
145
|
-
await discovery.openPrinter({ path: 'COM3', baudRate: 115200 });
|
|
361
|
+
await discovery.openPrinter({ path: 'COM3', baudRate: 115200, deviceKey: 'PT_P910BT' });
|
|
146
362
|
expect(serialOpen).toHaveBeenCalledWith('COM3', 115200);
|
|
147
363
|
});
|
|
364
|
+
it('throws DeviceIdentificationRequiredError without deviceKey, before opening the port', async () => {
|
|
365
|
+
const err = await discovery
|
|
366
|
+
.openPrinter({ serialPath: '/dev/rfcomm0' })
|
|
367
|
+
.catch((e) => e);
|
|
368
|
+
expect(err).toBeInstanceOf(DeviceIdentificationRequiredError);
|
|
369
|
+
const typed = err;
|
|
370
|
+
expect(typed.message).toMatch(/Serial port \/dev\/rfcomm0 carries no model signal/);
|
|
371
|
+
expect(typed.candidates.map(c => c.key).sort()).toEqual(['PT_P910BT', 'QL_820NWBc']);
|
|
372
|
+
expect(serialOpen).not.toHaveBeenCalled();
|
|
373
|
+
serialOpen.mockResolvedValue(fakeTransport());
|
|
374
|
+
const printers = await typed.continueWith('QL_820NWBc');
|
|
375
|
+
expect(printers.primary.transportType).toBe('serial');
|
|
376
|
+
});
|
|
377
|
+
it('rejects a deviceKey without a serial transport', async () => {
|
|
378
|
+
await expect(discovery.openPrinter({ serialPath: '/dev/rfcomm0', deviceKey: 'QL_700' })).rejects.toThrow(/QL_700 has no serial transport.*Serial-capable keys: PT_P910BT, QL_820NWBc/);
|
|
379
|
+
expect(serialOpen).not.toHaveBeenCalled();
|
|
380
|
+
});
|
|
148
381
|
});
|
|
149
382
|
});
|
|
150
383
|
//# sourceMappingURL=discovery.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.test.js","sourceRoot":"","sources":["../../src/__tests__/discovery.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"discovery.test.js","sourceRoot":"","sources":["../../src/__tests__/discovery.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EACL,iCAAiC,EACjC,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,0BAA0B,CAAC;AAGlC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,GACvF,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;IAClB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;IACzB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;IACjB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;CACjB,CAAC,CAAC,CAAC;AACN,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,EAAC,cAAc,EAAC,EAAE;IAC9D,MAAM,MAAM,GAAG,MAAM,cAAc,EAAwB,CAAC;IAC5D,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC/B,YAAY,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;QACrC,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QACrC,mBAAmB,EAAE,SAAS;QAC9B,uBAAuB,EAAE,gBAAgB;QACzC,qBAAqB,EAAE,QAAQ;QAC/B,OAAO;KACR,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEhE,SAAS,aAAa;IAMpB,OAAO;QACL,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;KACf,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CACjB,GAAW,EACX,GAAW,EACX,YAAqB;IAErB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO;QACL,UAAU;QACV,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,SAAS,SAAS,CAChB,IAAI,GAAG,cAAc,EACrB,eAA8B,WAAW;IAEzC,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI;QACJ,IAAI,EAAE,IAAI;QACV,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QAClD,SAAS,EAAE,mBAAmB;QAC9B,YAAY,EAAE,GAAG,IAAI,OAAO;KAC7B,CAAC;AACJ,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,OAAO,CAAC,SAAS,EAAE,CAAC;IACpB,UAAU,CAAC,SAAS,EAAE,CAAC;IACvB,UAAU,CAAC,SAAS,EAAE,CAAC;IACvB,SAAS,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC5C,gBAAgB,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,CAAC,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,mEAAmE;YACnE,wEAAwE;YACxE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YACnD,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9E,MAAM,CAAC,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YACjD,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YACjD,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,aAAa,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YAChD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,MAAM,EAAE,OAAO,CAAC,UAAU;gBAC1B,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,mBAAmB;aAClC,CAAC,CAAC;YACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,SAAS,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACxE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,SAAS,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACxE,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5D,MAAM,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;YACrE,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACpE,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,SAAS,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,SAAS,CAAC,qBAAqB,CAAC;gBAC9B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAClC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;aACxC,CAAC,CAAC;YACH,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;YAClF,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtD,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC9D,oEAAoE;YACpE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAClF,mBAAmB,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACrF,mBAAmB,CACpB,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,SAAS,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACxE,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,SAAS,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACxE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtD,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,QAAQ,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5C,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAClF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CACvD,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAE,CACxC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YACtD,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvF,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACxE,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,QAAQ,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5C,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC5E,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACtE,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,QAAQ,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5C,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YACzF,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC5E,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACtE,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtD,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACpE,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACtE,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,CACV,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CACtE,CAAC,OAAO,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC;YAC5F,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,CACV,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CACrE,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;YACjD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;YAC3G,OAAO,CAAC,qBAAqB,CAAC;gBAC5B,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;oBAC3B,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,sBAAsB;oBAC7B,GAAG,EAAE,IAAI,UAAU,EAAE;iBACtB;aACF,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,iCAAiC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,GAAwC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAC3B,yFAAyF,CAC1F,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;YAChF,6DAA6D;YAC7D,yDAAyD;YACzD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;YAC3E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,OAAO,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC3E,+CAA+C,CAChD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,QAAQ,CAAC,qBAAqB,CAAC,IAAI,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAEvE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,iCAAiC,CAAC,CAAC;YAC9D,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CACpC,+GAA+G,CAChH,CAAC;YACF,4EAA4E;YAC5E,qDAAqD;YACrD,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC1D,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,QAAQ,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YACvD,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,GAAG,GAAG,CAAC,MAAM,SAAS;iBACzB,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;iBACjD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAsC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACnD,MAAM,CAAE,QAAQ,CAAC,OAA4B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7E,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC;gBAC1C,UAAU,EAAE,cAAc;gBAC1B,SAAS,EAAE,YAAY;aACxB,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAE9C,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;YACxF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;YACnG,MAAM,GAAG,GAAG,MAAM,SAAS;iBACxB,WAAW,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;iBAC3C,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,iCAAiC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,GAAwC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;YACpF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;YACrF,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAE1C,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACxD,MAAM,CAAE,QAAQ,CAAC,OAA4B,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,CACV,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAC3E,CAAC,OAAO,CAAC,OAAO,CACf,4EAA4E,CAC7E,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printer-network.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/printer-network.test.ts"],"names":[],"mappings":""}
|