appium-ios-remotexpc 5.16.0 → 5.16.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/CHANGELOG.md +12 -0
- package/build/src/lib/port-forwarding/device-port-forwarder.d.ts +9 -0
- package/build/src/lib/port-forwarding/device-port-forwarder.d.ts.map +1 -1
- package/build/src/lib/port-forwarding/device-port-forwarder.js +41 -3
- package/build/src/lib/port-forwarding/device-port-forwarder.js.map +1 -1
- package/build/src/lib/usbmux/index.d.ts +0 -2
- package/build/src/lib/usbmux/index.d.ts.map +1 -1
- package/build/src/lib/usbmux/index.js +11 -22
- package/build/src/lib/usbmux/index.js.map +1 -1
- package/build/src/lib/usbmux/usbmux-decoder.d.ts +1 -0
- package/build/src/lib/usbmux/usbmux-decoder.d.ts.map +1 -1
- package/build/src/lib/usbmux/usbmux-decoder.js +14 -6
- package/build/src/lib/usbmux/usbmux-decoder.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/port-forwarding/device-port-forwarder.ts +45 -4
- package/src/lib/usbmux/index.ts +12 -23
- package/src/lib/usbmux/usbmux-decoder.ts +14 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [5.16.2](https://github.com/appium/appium-ios-remotexpc/compare/v5.16.1...v5.16.2) (2026-08-27)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **port-forwarding:** destroy upstream socket when client disconnects during connect ([#305](https://github.com/appium/appium-ios-remotexpc/issues/305)) ([957181d](https://github.com/appium/appium-ios-remotexpc/commit/957181d05a8ae4fdcfed7c0ddf73446408c5f444))
|
|
6
|
+
|
|
7
|
+
## [5.16.1](https://github.com/appium/appium-ios-remotexpc/compare/v5.16.0...v5.16.1) (2026-08-27)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **usbmux:** handle decoder errors and preserve unconsumed bytes on connect ([#304](https://github.com/appium/appium-ios-remotexpc/issues/304)) ([52db21c](https://github.com/appium/appium-ios-remotexpc/commit/52db21c748de050e294219358d7a9ed85688e960))
|
|
12
|
+
|
|
1
13
|
## [5.16.0](https://github.com/appium/appium-ios-remotexpc/compare/v5.15.5...v5.16.0) (2026-08-27)
|
|
2
14
|
|
|
3
15
|
### Features
|
|
@@ -25,6 +25,15 @@ export declare class DevicePortForwarder extends EventEmitter {
|
|
|
25
25
|
once<K extends keyof DevicePortForwarderEvents>(eventName: K, listener: DevicePortForwarderEvents[K]): this;
|
|
26
26
|
off<K extends keyof DevicePortForwarderEvents>(eventName: K, listener: DevicePortForwarderEvents[K]): this;
|
|
27
27
|
private handleDownstreamConnection;
|
|
28
|
+
/**
|
|
29
|
+
* Opens the upstream socket while watching for the client going away.
|
|
30
|
+
* Returns undefined after cleanup if the connect fails or the client disconnected meanwhile.
|
|
31
|
+
*/
|
|
32
|
+
private openUpstreamForClient;
|
|
33
|
+
/**
|
|
34
|
+
* Pipes the two sockets together and tears both down when either side closes or errors.
|
|
35
|
+
*/
|
|
36
|
+
private bridgeSockets;
|
|
28
37
|
private openUpstreamSocket;
|
|
29
38
|
}
|
|
30
39
|
//# sourceMappingURL=device-port-forwarder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-port-forwarder.d.ts","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAIzC,OAAO,KAAK,EAAC,yBAAyB,EAAE,0BAA0B,EAA0B,MAAM,YAAY,CAAC;AAE/G;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA0B;IAC7D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B;IAStF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlB,EAAE,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzG,IAAI,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3G,GAAG,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;YAIrG,0BAA0B;
|
|
1
|
+
{"version":3,"file":"device-port-forwarder.d.ts","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAIzC,OAAO,KAAK,EAAC,yBAAyB,EAAE,0BAA0B,EAA0B,MAAM,YAAY,CAAC;AAE/G;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA0B;IAC7D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B;IAStF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlB,EAAE,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzG,IAAI,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3G,GAAG,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;YAIrG,0BAA0B;IAcxC;;;OAGG;YACW,qBAAqB;IAqCnC;;OAEG;IACH,OAAO,CAAC,aAAa;YAwCP,kBAAkB;CAUjC"}
|
|
@@ -67,6 +67,29 @@ export class DevicePortForwarder extends EventEmitter {
|
|
|
67
67
|
async handleDownstreamConnection(localSocket) {
|
|
68
68
|
this.activeSockets.add(localSocket);
|
|
69
69
|
this.emit('clientConnected', localSocket);
|
|
70
|
+
const upstreamSocket = await this.openUpstreamForClient(localSocket);
|
|
71
|
+
if (!upstreamSocket) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.activeSockets.add(upstreamSocket);
|
|
75
|
+
this.emit('upstreamConnected', upstreamSocket);
|
|
76
|
+
this.bridgeSockets(localSocket, upstreamSocket);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Opens the upstream socket while watching for the client going away.
|
|
80
|
+
* Returns undefined after cleanup if the connect fails or the client disconnected meanwhile.
|
|
81
|
+
*/
|
|
82
|
+
async openUpstreamForClient(localSocket) {
|
|
83
|
+
let clientError;
|
|
84
|
+
let clientClosed = false;
|
|
85
|
+
const onEarlyError = (err) => {
|
|
86
|
+
clientError = err;
|
|
87
|
+
};
|
|
88
|
+
const onEarlyClose = () => {
|
|
89
|
+
clientClosed = true;
|
|
90
|
+
};
|
|
91
|
+
localSocket.once('error', onEarlyError);
|
|
92
|
+
localSocket.once('close', onEarlyClose);
|
|
70
93
|
let upstreamSocket;
|
|
71
94
|
try {
|
|
72
95
|
upstreamSocket = await this.openUpstreamSocket();
|
|
@@ -76,10 +99,25 @@ export class DevicePortForwarder extends EventEmitter {
|
|
|
76
99
|
this.emit('upstreamConnectError', err);
|
|
77
100
|
this.emit('clientDisconnected', localSocket, err);
|
|
78
101
|
localSocket.destroy();
|
|
79
|
-
return;
|
|
102
|
+
return undefined;
|
|
80
103
|
}
|
|
81
|
-
|
|
82
|
-
|
|
104
|
+
finally {
|
|
105
|
+
localSocket.off('error', onEarlyError);
|
|
106
|
+
localSocket.off('close', onEarlyClose);
|
|
107
|
+
}
|
|
108
|
+
if (clientClosed || localSocket.destroyed || clientError !== undefined) {
|
|
109
|
+
this.activeSockets.delete(localSocket);
|
|
110
|
+
this.emit('clientDisconnected', localSocket, clientError);
|
|
111
|
+
localSocket.destroy();
|
|
112
|
+
upstreamSocket.destroy();
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
return upstreamSocket;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Pipes the two sockets together and tears both down when either side closes or errors.
|
|
119
|
+
*/
|
|
120
|
+
bridgeSockets(localSocket, upstreamSocket) {
|
|
83
121
|
let cleanedUp = false;
|
|
84
122
|
const teardown = () => {
|
|
85
123
|
this.activeSockets.delete(localSocket);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-port-forwarder.js","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"device-port-forwarder.js","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,6 @@ export interface Device {
|
|
|
24
24
|
export declare const USBMUXD_PORT = 27015;
|
|
25
25
|
export declare const DEFAULT_USBMUXD_SOCKET = "/var/run/usbmuxd";
|
|
26
26
|
export declare const DEFAULT_USBMUXD_HOST = "127.0.0.1";
|
|
27
|
-
export declare const MAX_FRAME_SIZE: number;
|
|
28
27
|
export declare const USBMUX_RESULT: {
|
|
29
28
|
OK: number;
|
|
30
29
|
BADCOMMAND: number;
|
|
@@ -45,7 +44,6 @@ export interface SocketOptions {
|
|
|
45
44
|
*/
|
|
46
45
|
export declare class Usbmux extends BaseSocketService {
|
|
47
46
|
private readonly _decoder;
|
|
48
|
-
private readonly _splitter;
|
|
49
47
|
private readonly _encoder;
|
|
50
48
|
private _tag;
|
|
51
49
|
private readonly _responseCallbacks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/usbmux/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,MAAM,EAAiC,MAAM,UAAU,CAAC;AAGlF,OAAO,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAC,KAAK,UAAU,EAAuB,MAAM,yBAAyB,CAAC;AAQ9E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAID,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,oBAAoB,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/usbmux/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { release } from 'node:os';
|
|
|
4
4
|
import { BaseSocketService } from '../../base-socket-service.js';
|
|
5
5
|
import { getLogger } from '../logger.js';
|
|
6
6
|
import { processPlistResponse } from '../pair-record/index.js';
|
|
7
|
-
import {
|
|
7
|
+
import { parsePlist } from '../plist/index.js';
|
|
8
8
|
import { UsbmuxDecoder } from '../usbmux/usbmux-decoder.js';
|
|
9
9
|
import { UsbmuxEncoder } from '../usbmux/usbmux-encoder.js';
|
|
10
10
|
import { prioritizeUsbOverNetworkForDuplicateUdids } from './utils.js';
|
|
@@ -12,7 +12,6 @@ const log = getLogger('Usbmux');
|
|
|
12
12
|
export const USBMUXD_PORT = 27015;
|
|
13
13
|
export const DEFAULT_USBMUXD_SOCKET = '/var/run/usbmuxd';
|
|
14
14
|
export const DEFAULT_USBMUXD_HOST = '127.0.0.1';
|
|
15
|
-
export const MAX_FRAME_SIZE = 100 * 1024 * 1024; // 1MB
|
|
16
15
|
// Result codes from usbmuxd
|
|
17
16
|
export const USBMUX_RESULT = {
|
|
18
17
|
OK: 0,
|
|
@@ -28,7 +27,6 @@ const CLIENT_VERSION_STRING = 'appium-internal-1.0.0';
|
|
|
28
27
|
*/
|
|
29
28
|
export class Usbmux extends BaseSocketService {
|
|
30
29
|
_decoder;
|
|
31
|
-
_splitter;
|
|
32
30
|
_encoder;
|
|
33
31
|
_tag;
|
|
34
32
|
_responseCallbacks;
|
|
@@ -39,15 +37,10 @@ export class Usbmux extends BaseSocketService {
|
|
|
39
37
|
constructor(socketClient) {
|
|
40
38
|
super(socketClient);
|
|
41
39
|
this._decoder = new UsbmuxDecoder();
|
|
42
|
-
this._splitter = new LengthBasedSplitter({
|
|
43
|
-
readableStream: socketClient,
|
|
44
|
-
littleEndian: true,
|
|
45
|
-
maxFrameLength: MAX_FRAME_SIZE,
|
|
46
|
-
lengthFieldOffset: 0,
|
|
47
|
-
lengthFieldLength: 4,
|
|
48
|
-
lengthAdjustment: 0,
|
|
49
|
-
});
|
|
50
40
|
this._socketClient.pipe(this._decoder);
|
|
41
|
+
this._decoder.on('error', (err) => {
|
|
42
|
+
log.error(`Usbmux decoder error: ${err.message}`);
|
|
43
|
+
});
|
|
51
44
|
this._encoder = new UsbmuxEncoder();
|
|
52
45
|
this._encoder.pipe(this._socketClient);
|
|
53
46
|
this._assignClientFailureHandlers(this._encoder);
|
|
@@ -160,20 +153,16 @@ export class Usbmux extends BaseSocketService {
|
|
|
160
153
|
}
|
|
161
154
|
if (data.payload.Number === USBMUX_RESULT.OK) {
|
|
162
155
|
// Detach constructor-owned consumers from the raw socket so the caller
|
|
163
|
-
// gets full byte-stream ownership.
|
|
164
|
-
// lets their unread buffers grow, eventually applying backpressure that
|
|
165
|
-
// stalls long-lived forwards.
|
|
166
|
-
//
|
|
167
|
-
// Order matters: unpipe() must happen before removeAllListeners() /
|
|
168
|
-
// shutdown(). Removing listeners first breaks Node's pipe cleanup, leaving
|
|
169
|
-
// orphaned source listeners that continue pushing bytes into detached
|
|
170
|
-
// streams and eventually stall the socket.
|
|
171
|
-
this._socketClient.unpipe(this._splitter);
|
|
172
|
-
this._splitter.unpipe(this._decoder);
|
|
156
|
+
// gets full byte-stream ownership.
|
|
173
157
|
this._socketClient.unpipe(this._decoder);
|
|
174
158
|
this._encoder.unpipe(this._socketClient);
|
|
175
|
-
this._splitter.shutdown();
|
|
176
159
|
this._decoder.removeAllListeners('data');
|
|
160
|
+
// Hand any unconsumed bytes back to the raw socket stream so the caller
|
|
161
|
+
// receives them immediately when attaching listeners.
|
|
162
|
+
const pending = this._decoder.buffer;
|
|
163
|
+
if (pending.length > 0) {
|
|
164
|
+
this._socketClient.unshift(pending);
|
|
165
|
+
}
|
|
177
166
|
return this._socketClient;
|
|
178
167
|
}
|
|
179
168
|
else if (data.payload.Number === USBMUX_RESULT.CONNREFUSED) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/usbmux/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAA2B,gBAAgB,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAClF,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAkB,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EAAC,mBAAmB,EAAE,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAqB,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAC,yCAAyC,EAAC,MAAM,YAAY,CAAC;AAwBrE,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAClC,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAEvD,4BAA4B;AAC5B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,EAAE,CAAC;IACL,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;CACf,CAAC;AAEF,yCAAyC;AACzC,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAYtD;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,iBAAiB;IAC1B,QAAQ,CAAgB;IACxB,SAAS,CAAsB;IAC/B,QAAQ,CAAgB;IACjC,IAAI,CAAS;IACJ,kBAAkB,CAAgD;IAEnF;;;OAGG;IACH,YAAY,YAAoB;QAC9B,KAAK,CAAC,YAAY,CAAC,CAAC;QAEpB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACvC,cAAc,EAAE,YAAY;YAC5B,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,cAAc;YAC9B,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;YACpB,gBAAgB,EAAE,CAAC;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC9B,GAAG,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI;QAC3B,MAAM,EAAC,GAAG,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,oBAAoB,CAAS,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChF,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAc,CAAC;YACrC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,GAAG;YACH,OAAO,EAAE;gBACP,WAAW,EAAE,UAAU;gBACvB,QAAQ,EAAE,SAAS;gBACnB,mBAAmB,EAAE,qBAAqB;aAC3C;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,cAAc,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,OAAO,GAAG,IAAI;QAC/C,6CAA6C;QAC7C,MAAM,EAAC,GAAG,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,oBAAoB,CAAoB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBACH,4CAA4C;gBAC5C,OAAO,oBAAoB,CACzB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAwB,CAAqC,CACtF,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,EAAE,EAAE;oBACxD,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,GAAG;YACH,OAAO,EAAE;gBACP,WAAW,EAAE,gBAAgB;gBAC7B,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,SAAS;gBACnB,mBAAmB,EAAE,qBAAqB;aAC3C;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,cAAc,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI;QAC9B,MAAM,EAAC,GAAG,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,oBAAoB,CAAW,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAClF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAiC,CAAC;YACxD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,GAAG;YACH,OAAO,EAAE;gBACP,WAAW,EAAE,aAAa;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,mBAAmB,EAAE,qBAAqB;aAC3C;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;QACrC,OAAO,yCAAyC,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,OAAO,GAAG,IAAI;QAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,QAAyB,EAAE,IAAY,EAAE,OAAO,GAAG,IAAI;QACnE,MAAM,EAAC,GAAG,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,oBAAoB,CAAS,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChF,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,EAAE,EAAE,CAAC;gBAC7C,uEAAuE;gBACvE,yEAAyE;gBACzE,wEAAwE;gBACxE,8BAA8B;gBAC9B,EAAE;gBACF,oEAAoE;gBACpE,2EAA2E;gBAC3E,sEAAsE;gBACtE,2CAA2C;gBAC3C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC,aAAa,CAAC;YAC5B,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,GAAG;YACH,OAAO,EAAE;gBACP,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,SAAS;gBACnB,mBAAmB,EAAE,qBAAqB;gBAC1C,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC;aAC7B;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,cAAc,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,kDAAkD;YAClD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE;oBAC9B,IAAI,GAAG,EAAE,CAAC;wBACR,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;wBACjD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;wBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;wBAC7B,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC;gBACF,sDAAsD;gBACtD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,IAAmB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,IAA6C;QAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB,CAC1B,OAAO,GAAG,IAAI,EACd,gBAA4C;QAE5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,SAAqC,CAAC;QAC1C,MAAM,cAAc,GAAG,CAAC,KAAK,IAAgB,EAAE;YAC7C,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC9C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;wBACtC,IAAI,SAAS,EAAE,CAAC;4BACd,YAAY,CAAC,SAAS,CAAC,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC;4BACH,uBAAuB;4BACvB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;wBAClC,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,MAAM,CAAC,CAAC,CAAC,CAAC;wBACZ,CAAC;oBACH,CAAC,CAAC;oBAEF,0BAA0B;oBAC1B,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC1B,GAAG,CAAC,IAAI,CAAC,yCAAyC,GAAG,UAAU,OAAO,IAAI,CAAC,CAAC;wBAC5E,MAAM,CACJ,IAAI,KAAK,CACP,kDAAkD,OAAO,+CAA+C,CACzG,CACF,CAAC;oBACJ,CAAC,EAAE,OAAO,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;gBACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,EAAC,GAAG,EAAE,cAAc,EAAC,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IACN,QAAQ,CAAkB;IAC1B,UAAU,CAAS;IAC5B,SAAS,CAAS;IAClB,YAAY,CAAgB;IAC5B,MAAM,CAAgB;IAE9B;;;;;;OAMG;IACH,YAAY,QAAyB,EAAE,UAAkB,EAAE,YAAoB,CAAC;QAC9E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,GAAG,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;QAEpF,qDAAqD;QACrD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzE,0BAA0B;QAC1B,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,WAAmB,EAAE,EAAE;YACjD,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAEjD,2EAA2E;YAC3E,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxD,CAAC;YAED,uBAAuB;YACvB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3B,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACrC,GAAG,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBACtC,qFAAqF;gBACrF,kBAAkB;gBAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACvC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAC3C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;gBAChC,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,qCAAqC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAChE,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACrC,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC,EAAE,GAAG,EAAE;gBAC9E,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACnD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAChC,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE;oBAC9B,IAAI,GAAG,EAAE,CAAC;wBACR,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;wBACjD,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;wBACjC,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA+B,EAAE;IACtE,MAAM,QAAQ,GAAG;QACf,UAAU,EAAE,sBAAsB;QAClC,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACnG,GAAG,CAAC,KAAK,CACP,wEAAwE,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAC7G,CAAC;QACF,+DAA+D;QAC/D,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACf,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;YACzB,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,UAAU,GAAG,oBAAoB,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,EAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAC,GAAG;QACpD,GAAG,QAAQ;QACX,GAAG,IAAI;KACR,CAAC;IAEF,IAAI,MAAc,CAAC;IACnB,IAAI,MAAM,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,gBAAgB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1G,0CAA0C;QAC1C,MAAM,GAAG,gBAAgB,CAAC;YACxB,IAAI,EAAE,UAAoB;YAC1B,IAAI,EAAE,UAAoB;SAC3B,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,uCAAuC,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,OAAO,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;QAEpB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3B,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YAC1B,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA+B,EAAE;IAClE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAyB,EAAE,IAAY,EAAE,YAAoB,CAAC;IAClG,qCAAqC;IACrC,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,MAA0B,CAAC;IAE/B,IAAI,CAAC;QACH,kBAAkB;QAClB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QAEpB,uBAAuB;QACvB,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/usbmux/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export interface DecodedUsbmux {
|
|
|
13
13
|
export declare class UsbmuxDecoder extends Transform {
|
|
14
14
|
private _buffer;
|
|
15
15
|
constructor();
|
|
16
|
+
get buffer(): Buffer;
|
|
16
17
|
_transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void;
|
|
17
18
|
private _decode;
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usbmux-decoder.d.ts","sourceRoot":"","sources":["../../../../src/lib/usbmux/usbmux-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,KAAK,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAG9D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,OAAO,CAA2B;;IAM1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"usbmux-decoder.d.ts","sourceRoot":"","sources":["../../../../src/lib/usbmux/usbmux-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,KAAK,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAG9D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,OAAO,CAA2B;;IAM1C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IA4BtF,OAAO,CAAC,OAAO;CAWhB"}
|
|
@@ -6,6 +6,9 @@ export class UsbmuxDecoder extends Transform {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
super({ objectMode: true });
|
|
8
8
|
}
|
|
9
|
+
get buffer() {
|
|
10
|
+
return this._buffer;
|
|
11
|
+
}
|
|
9
12
|
_transform(chunk, encoding, callback) {
|
|
10
13
|
// Append the new chunk to the internal buffer
|
|
11
14
|
this._buffer = Buffer.concat([this._buffer, chunk]);
|
|
@@ -17,11 +20,16 @@ export class UsbmuxDecoder extends Transform {
|
|
|
17
20
|
if (this._buffer.length < totalLength) {
|
|
18
21
|
break; // Wait for more data
|
|
19
22
|
}
|
|
20
|
-
// Extract the full message
|
|
21
|
-
|
|
22
|
-
this.
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
// Extract the full message and remove it from the buffer before decoding,
|
|
24
|
+
// so any synchronous data listeners see only the unconsumed remainder.
|
|
25
|
+
const message = this._buffer.subarray(0, totalLength);
|
|
26
|
+
this._buffer = this._buffer.subarray(totalLength);
|
|
27
|
+
try {
|
|
28
|
+
this._decode(message);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
return callback(err instanceof Error ? err : new Error(String(err)));
|
|
32
|
+
}
|
|
25
33
|
}
|
|
26
34
|
callback();
|
|
27
35
|
}
|
|
@@ -32,7 +40,7 @@ export class UsbmuxDecoder extends Transform {
|
|
|
32
40
|
type: data.readUInt32LE(8),
|
|
33
41
|
tag: data.readUInt32LE(12),
|
|
34
42
|
};
|
|
35
|
-
const payload = data.
|
|
43
|
+
const payload = data.subarray(HEADER_LENGTH);
|
|
36
44
|
this.push({ header, payload: parsePlist(payload) });
|
|
37
45
|
}
|
|
38
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usbmux-decoder.js","sourceRoot":"","sources":["../../../../src/lib/usbmux/usbmux-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAyB,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAG7C,MAAM,aAAa,GAAG,EAAE,CAAC;AAczB,MAAM,OAAO,aAAc,SAAQ,SAAS;IAClC,OAAO,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1C;QACE,KAAK,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAwB,EAAE,QAA2B;QAC7E,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,0CAA0C;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;YAC5C,yDAAyD;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACtC,MAAM,CAAC,qBAAqB;YAC9B,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"usbmux-decoder.js","sourceRoot":"","sources":["../../../../src/lib/usbmux/usbmux-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAyB,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAG7C,MAAM,aAAa,GAAG,EAAE,CAAC;AAczB,MAAM,OAAO,aAAc,SAAQ,SAAS;IAClC,OAAO,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1C;QACE,KAAK,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAwB,EAAE,QAA2B;QAC7E,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,0CAA0C;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;YAC5C,yDAAyD;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACtC,MAAM,CAAC,qBAAqB;YAC9B,CAAC;YAED,0EAA0E;YAC1E,uEAAuE;YACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAElD,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;SAC3B,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAkB,CAAC,CAAC;IACrE,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -83,7 +83,33 @@ export class DevicePortForwarder extends EventEmitter {
|
|
|
83
83
|
this.activeSockets.add(localSocket);
|
|
84
84
|
this.emit('clientConnected', localSocket);
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
const upstreamSocket = await this.openUpstreamForClient(localSocket);
|
|
87
|
+
if (!upstreamSocket) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
this.activeSockets.add(upstreamSocket);
|
|
92
|
+
this.emit('upstreamConnected', upstreamSocket);
|
|
93
|
+
this.bridgeSockets(localSocket, upstreamSocket);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Opens the upstream socket while watching for the client going away.
|
|
98
|
+
* Returns undefined after cleanup if the connect fails or the client disconnected meanwhile.
|
|
99
|
+
*/
|
|
100
|
+
private async openUpstreamForClient(localSocket: Socket): Promise<Socket | undefined> {
|
|
101
|
+
let clientError: Error | undefined;
|
|
102
|
+
let clientClosed = false;
|
|
103
|
+
const onEarlyError = (err: Error): void => {
|
|
104
|
+
clientError = err;
|
|
105
|
+
};
|
|
106
|
+
const onEarlyClose = (): void => {
|
|
107
|
+
clientClosed = true;
|
|
108
|
+
};
|
|
109
|
+
localSocket.once('error', onEarlyError);
|
|
110
|
+
localSocket.once('close', onEarlyClose);
|
|
111
|
+
|
|
112
|
+
let upstreamSocket: Socket;
|
|
87
113
|
try {
|
|
88
114
|
upstreamSocket = await this.openUpstreamSocket();
|
|
89
115
|
} catch (err) {
|
|
@@ -91,12 +117,27 @@ export class DevicePortForwarder extends EventEmitter {
|
|
|
91
117
|
this.emit('upstreamConnectError', err);
|
|
92
118
|
this.emit('clientDisconnected', localSocket, err);
|
|
93
119
|
localSocket.destroy();
|
|
94
|
-
return;
|
|
120
|
+
return undefined;
|
|
121
|
+
} finally {
|
|
122
|
+
localSocket.off('error', onEarlyError);
|
|
123
|
+
localSocket.off('close', onEarlyClose);
|
|
95
124
|
}
|
|
96
125
|
|
|
97
|
-
|
|
98
|
-
|
|
126
|
+
if (clientClosed || localSocket.destroyed || clientError !== undefined) {
|
|
127
|
+
this.activeSockets.delete(localSocket);
|
|
128
|
+
this.emit('clientDisconnected', localSocket, clientError);
|
|
129
|
+
localSocket.destroy();
|
|
130
|
+
upstreamSocket.destroy();
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return upstreamSocket;
|
|
135
|
+
}
|
|
99
136
|
|
|
137
|
+
/**
|
|
138
|
+
* Pipes the two sockets together and tears both down when either side closes or errors.
|
|
139
|
+
*/
|
|
140
|
+
private bridgeSockets(localSocket: Socket, upstreamSocket: Socket): void {
|
|
100
141
|
let cleanedUp = false;
|
|
101
142
|
const teardown = (): void => {
|
|
102
143
|
this.activeSockets.delete(localSocket);
|
package/src/lib/usbmux/index.ts
CHANGED
|
@@ -6,7 +6,7 @@ import {BaseSocketService} from '../../base-socket-service.js';
|
|
|
6
6
|
import {getLogger} from '../logger.js';
|
|
7
7
|
import {type PairRecord, processPlistResponse} from '../pair-record/index.js';
|
|
8
8
|
import {type RawPairRecordResponse} from '../pair-record/pair-record.js';
|
|
9
|
-
import {
|
|
9
|
+
import {parsePlist} from '../plist/index.js';
|
|
10
10
|
import type {PlistDictionary} from '../types.js';
|
|
11
11
|
import {type DecodedUsbmux, UsbmuxDecoder} from '../usbmux/usbmux-decoder.js';
|
|
12
12
|
import {UsbmuxEncoder} from '../usbmux/usbmux-encoder.js';
|
|
@@ -39,7 +39,6 @@ const log = getLogger('Usbmux');
|
|
|
39
39
|
export const USBMUXD_PORT = 27015;
|
|
40
40
|
export const DEFAULT_USBMUXD_SOCKET = '/var/run/usbmuxd';
|
|
41
41
|
export const DEFAULT_USBMUXD_HOST = '127.0.0.1';
|
|
42
|
-
export const MAX_FRAME_SIZE = 100 * 1024 * 1024; // 1MB
|
|
43
42
|
|
|
44
43
|
// Result codes from usbmuxd
|
|
45
44
|
export const USBMUX_RESULT = {
|
|
@@ -68,7 +67,6 @@ export interface SocketOptions {
|
|
|
68
67
|
*/
|
|
69
68
|
export class Usbmux extends BaseSocketService {
|
|
70
69
|
private readonly _decoder: UsbmuxDecoder;
|
|
71
|
-
private readonly _splitter: LengthBasedSplitter;
|
|
72
70
|
private readonly _encoder: UsbmuxEncoder;
|
|
73
71
|
private _tag: number;
|
|
74
72
|
private readonly _responseCallbacks: Record<number, (data: DecodedUsbmux) => void>;
|
|
@@ -81,16 +79,10 @@ export class Usbmux extends BaseSocketService {
|
|
|
81
79
|
super(socketClient);
|
|
82
80
|
|
|
83
81
|
this._decoder = new UsbmuxDecoder();
|
|
84
|
-
this._splitter = new LengthBasedSplitter({
|
|
85
|
-
readableStream: socketClient,
|
|
86
|
-
littleEndian: true,
|
|
87
|
-
maxFrameLength: MAX_FRAME_SIZE,
|
|
88
|
-
lengthFieldOffset: 0,
|
|
89
|
-
lengthFieldLength: 4,
|
|
90
|
-
lengthAdjustment: 0,
|
|
91
|
-
});
|
|
92
|
-
|
|
93
82
|
this._socketClient.pipe(this._decoder);
|
|
83
|
+
this._decoder.on('error', (err: Error) => {
|
|
84
|
+
log.error(`Usbmux decoder error: ${err.message}`);
|
|
85
|
+
});
|
|
94
86
|
|
|
95
87
|
this._encoder = new UsbmuxEncoder();
|
|
96
88
|
this._encoder.pipe(this._socketClient);
|
|
@@ -219,20 +211,17 @@ export class Usbmux extends BaseSocketService {
|
|
|
219
211
|
|
|
220
212
|
if (data.payload.Number === USBMUX_RESULT.OK) {
|
|
221
213
|
// Detach constructor-owned consumers from the raw socket so the caller
|
|
222
|
-
// gets full byte-stream ownership.
|
|
223
|
-
// lets their unread buffers grow, eventually applying backpressure that
|
|
224
|
-
// stalls long-lived forwards.
|
|
225
|
-
//
|
|
226
|
-
// Order matters: unpipe() must happen before removeAllListeners() /
|
|
227
|
-
// shutdown(). Removing listeners first breaks Node's pipe cleanup, leaving
|
|
228
|
-
// orphaned source listeners that continue pushing bytes into detached
|
|
229
|
-
// streams and eventually stall the socket.
|
|
230
|
-
this._socketClient.unpipe(this._splitter);
|
|
231
|
-
this._splitter.unpipe(this._decoder);
|
|
214
|
+
// gets full byte-stream ownership.
|
|
232
215
|
this._socketClient.unpipe(this._decoder);
|
|
233
216
|
this._encoder.unpipe(this._socketClient);
|
|
234
|
-
this._splitter.shutdown();
|
|
235
217
|
this._decoder.removeAllListeners('data');
|
|
218
|
+
|
|
219
|
+
// Hand any unconsumed bytes back to the raw socket stream so the caller
|
|
220
|
+
// receives them immediately when attaching listeners.
|
|
221
|
+
const pending = this._decoder.buffer;
|
|
222
|
+
if (pending.length > 0) {
|
|
223
|
+
this._socketClient.unshift(pending);
|
|
224
|
+
}
|
|
236
225
|
return this._socketClient;
|
|
237
226
|
} else if (data.payload.Number === USBMUX_RESULT.CONNREFUSED) {
|
|
238
227
|
throw new Error(`Connection was refused to port ${port}`);
|
|
@@ -24,6 +24,10 @@ export class UsbmuxDecoder extends Transform {
|
|
|
24
24
|
super({objectMode: true});
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
get buffer(): Buffer {
|
|
28
|
+
return this._buffer;
|
|
29
|
+
}
|
|
30
|
+
|
|
27
31
|
_transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void {
|
|
28
32
|
// Append the new chunk to the internal buffer
|
|
29
33
|
this._buffer = Buffer.concat([this._buffer, chunk]);
|
|
@@ -38,12 +42,16 @@ export class UsbmuxDecoder extends Transform {
|
|
|
38
42
|
break; // Wait for more data
|
|
39
43
|
}
|
|
40
44
|
|
|
41
|
-
// Extract the full message
|
|
42
|
-
|
|
43
|
-
this.
|
|
45
|
+
// Extract the full message and remove it from the buffer before decoding,
|
|
46
|
+
// so any synchronous data listeners see only the unconsumed remainder.
|
|
47
|
+
const message = this._buffer.subarray(0, totalLength);
|
|
48
|
+
this._buffer = this._buffer.subarray(totalLength);
|
|
44
49
|
|
|
45
|
-
|
|
46
|
-
|
|
50
|
+
try {
|
|
51
|
+
this._decode(message);
|
|
52
|
+
} catch (err) {
|
|
53
|
+
return callback(err instanceof Error ? err : new Error(String(err)));
|
|
54
|
+
}
|
|
47
55
|
}
|
|
48
56
|
callback();
|
|
49
57
|
}
|
|
@@ -56,7 +64,7 @@ export class UsbmuxDecoder extends Transform {
|
|
|
56
64
|
tag: data.readUInt32LE(12),
|
|
57
65
|
};
|
|
58
66
|
|
|
59
|
-
const payload = data.
|
|
67
|
+
const payload = data.subarray(HEADER_LENGTH);
|
|
60
68
|
this.push({header, payload: parsePlist(payload)} as DecodedUsbmux);
|
|
61
69
|
}
|
|
62
70
|
}
|