@limrun/api 0.60.0 → 0.62.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/CHANGELOG.md +50 -0
- package/destination-tunnel-dialer.d.mts +8 -0
- package/destination-tunnel-dialer.d.mts.map +1 -1
- package/destination-tunnel-dialer.d.ts +8 -0
- package/destination-tunnel-dialer.d.ts.map +1 -1
- package/destination-tunnel-dialer.js +6 -5
- package/destination-tunnel-dialer.js.map +1 -1
- package/destination-tunnel-dialer.mjs +5 -5
- package/destination-tunnel-dialer.mjs.map +1 -1
- package/internal/destination-tunnel-wire-reader.d.mts +2 -0
- package/internal/destination-tunnel-wire-reader.d.mts.map +1 -1
- package/internal/destination-tunnel-wire-reader.d.ts +2 -0
- package/internal/destination-tunnel-wire-reader.d.ts.map +1 -1
- package/internal/destination-tunnel-wire-reader.js +17 -0
- package/internal/destination-tunnel-wire-reader.js.map +1 -1
- package/internal/destination-tunnel-wire-reader.mjs +15 -0
- package/internal/destination-tunnel-wire-reader.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/android-instances.d.mts +6 -6
- package/resources/android-instances.d.ts +6 -6
- package/resources/ios-instances.d.mts +6 -6
- package/resources/ios-instances.d.ts +6 -6
- package/src/destination-tunnel-dialer.ts +6 -5
- package/src/internal/destination-tunnel-wire-reader.ts +17 -0
- package/src/resources/android-instances.ts +6 -6
- package/src/resources/ios-instances.ts +6 -6
- package/src/tunnel-connector.ts +132 -42
- package/src/version.ts +1 -1
- package/tunnel-connector.d.mts +21 -10
- package/tunnel-connector.d.mts.map +1 -1
- package/tunnel-connector.d.ts +21 -10
- package/tunnel-connector.d.ts.map +1 -1
- package/tunnel-connector.js +96 -29
- package/tunnel-connector.js.map +1 -1
- package/tunnel-connector.mjs +98 -31
- package/tunnel-connector.mjs.map +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-connector.d.mts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel-connector.d.mts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"AA0BA,OAAO,EAGL,KAAK,iCAAiC,EAEvC,iCAA6B;AAC9B,OAAO,EAAiB,KAAK,QAAQ,EAAE,qBAAiB;AAyBxD,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACxD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,oBAAoB;AAC9B,wFAAwF;AACtF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACrD,+FAA+F;GAC7F;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC9C,iEAAiE;GAC/D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC5D,6CAA6C;GAC3C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACxE,mFAAmF;GACjF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,uFAAuF;IACvF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAoDD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CA+gB1E"}
|
package/tunnel-connector.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { type DestinationTunnelInspectionConfig
|
|
1
|
+
import { type DestinationTunnelInspectionConfig } from "./destination-tunnel.js";
|
|
2
2
|
import { type LogLevel } from "./tunnel.js";
|
|
3
3
|
export interface TunnelConnectorOptions {
|
|
4
|
-
|
|
4
|
+
/** The tunnel's token; no other credential connects. */
|
|
5
|
+
token: string;
|
|
5
6
|
/** Limrun API base URL, such as https://api.limrun.com. */
|
|
6
7
|
baseURL: string;
|
|
7
8
|
organizationId: string;
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* The ID of a tunnel created in the console or the API. Its name, which
|
|
11
|
+
* instances set in `spec.tunnel`, and its selectors come from the platform.
|
|
12
|
+
*/
|
|
13
|
+
tunnelId: string;
|
|
11
14
|
/** Inspection for every instance tunnel. Defaults to enabled without bodies. */
|
|
12
15
|
inspection?: Partial<DestinationTunnelInspectionConfig>;
|
|
13
16
|
/** Take the name over from the connector that holds it now. */
|
|
@@ -21,10 +24,16 @@ export interface TunnelConnectorOptions {
|
|
|
21
24
|
onEvent?: (event: TunnelConnectorEvent) => void;
|
|
22
25
|
}
|
|
23
26
|
export type TunnelConnectorEvent =
|
|
24
|
-
/** This connector holds the
|
|
27
|
+
/** This connector holds the tunnel; emitted once per session and control connection. */
|
|
25
28
|
{
|
|
26
29
|
type: 'active';
|
|
27
30
|
sessionId: string;
|
|
31
|
+
name: string;
|
|
32
|
+
}
|
|
33
|
+
/** The connector's tunnel token expires within two weeks; emitted once a day until it does. */
|
|
34
|
+
| {
|
|
35
|
+
type: 'tokenExpiring';
|
|
36
|
+
expiresAt: string;
|
|
28
37
|
}
|
|
29
38
|
/** Another connector holds the name; emitted once per holder. */
|
|
30
39
|
| {
|
|
@@ -68,10 +77,12 @@ export interface TunnelConnector {
|
|
|
68
77
|
close: () => Promise<void>;
|
|
69
78
|
}
|
|
70
79
|
/**
|
|
71
|
-
* Serve a persistent tunnel: hold
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
80
|
+
* Serve a persistent tunnel: hold it through one control WebSocket to the
|
|
81
|
+
* Limrun API and open a destination tunnel to every instance created with
|
|
82
|
+
* `spec.tunnel` set to its name, with a short-lived token the API hands out
|
|
83
|
+
* for each. Instance tunnels stay up while the control channel reconnects,
|
|
84
|
+
* so an API outage never becomes a tunnel outage; one that drops re-dials
|
|
85
|
+
* once the API sends a fresh token.
|
|
75
86
|
*/
|
|
76
87
|
export declare function runTunnel(options: TunnelConnectorOptions): TunnelConnector;
|
|
77
88
|
//# sourceMappingURL=tunnel-connector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-connector.d.ts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel-connector.d.ts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"AA0BA,OAAO,EAGL,KAAK,iCAAiC,EAEvC,gCAA6B;AAC9B,OAAO,EAAiB,KAAK,QAAQ,EAAE,oBAAiB;AAyBxD,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACxD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,oBAAoB;AAC9B,wFAAwF;AACtF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACrD,+FAA+F;GAC7F;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC9C,iEAAiE;GAC/D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC5D,6CAA6C;GAC3C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACxE,mFAAmF;GACjF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,uFAAuF;IACvF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAoDD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CA+gB1E"}
|
package/tunnel-connector.js
CHANGED
|
@@ -12,7 +12,7 @@ const destination_tunnel_dialer_1 = require("./destination-tunnel-dialer.js");
|
|
|
12
12
|
const destination_tunnel_1 = require("./destination-tunnel.js");
|
|
13
13
|
const tunnel_1 = require("./tunnel.js");
|
|
14
14
|
const version_1 = require("./version.js");
|
|
15
|
-
const CONTROL_PROTOCOL_VERSION =
|
|
15
|
+
const CONTROL_PROTOCOL_VERSION = 2;
|
|
16
16
|
const CONTROL_HANDSHAKE_TIMEOUT_MS = 15000;
|
|
17
17
|
const CONTROL_PING_INTERVAL_MS = 15000;
|
|
18
18
|
const CONTROL_DEAD_PEER_MS = 45000;
|
|
@@ -28,21 +28,23 @@ const MAX_REJECTION_REASON_CHARS = 200;
|
|
|
28
28
|
/** Every tunnel WebSocket counts as instance activity, so retries must end. */
|
|
29
29
|
const ATTACH_GIVE_UP_MS = 5 * 60000;
|
|
30
30
|
const TAKEN_OVER_MESSAGE = 'another connector for this tunnel took the instance over';
|
|
31
|
+
/** A token this close to its expiry is not dialed with; the hub refreshes it at half its life. */
|
|
32
|
+
const TOKEN_EXPIRY_MARGIN_MS = 5000;
|
|
33
|
+
/** How long before its token expires the connector starts warning, and how often. */
|
|
34
|
+
const TOKEN_WARNING_WINDOW_MS = 14 * 24 * 60 * 60000;
|
|
35
|
+
const TOKEN_WARNING_EVERY_MS = 24 * 60 * 60000;
|
|
31
36
|
/**
|
|
32
|
-
* Serve a persistent tunnel: hold
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
37
|
+
* Serve a persistent tunnel: hold it through one control WebSocket to the
|
|
38
|
+
* Limrun API and open a destination tunnel to every instance created with
|
|
39
|
+
* `spec.tunnel` set to its name, with a short-lived token the API hands out
|
|
40
|
+
* for each. Instance tunnels stay up while the control channel reconnects,
|
|
41
|
+
* so an API outage never becomes a tunnel outage; one that drops re-dials
|
|
42
|
+
* once the API sends a fresh token.
|
|
36
43
|
*/
|
|
37
44
|
function runTunnel(options) {
|
|
38
|
-
const selectors = (0, destination_tunnel_1.validateDestinationTunnelSelectors)(options.selectors);
|
|
39
|
-
const dialOptions = {
|
|
40
|
-
...(0, destination_tunnel_dialer_1.destinationTunnelDialOptions)({ selectors, ...(options.inspection ? { inspection: options.inspection } : {}) }, options.logLevel ?? 'warn'),
|
|
41
|
-
name: options.name,
|
|
42
|
-
};
|
|
43
45
|
// Reject a bad inspection config now rather than on every attach.
|
|
44
|
-
(0, destination_tunnel_1.normalizeDestinationTunnelInspection)(
|
|
45
|
-
const controlURL = (0, destination_tunnel_url_1.deriveTunnelConnectURL)(options.baseURL, options.organizationId, options.
|
|
46
|
+
(0, destination_tunnel_1.normalizeDestinationTunnelInspection)((0, destination_tunnel_dialer_1.destinationTunnelInspection)(options.inspection));
|
|
47
|
+
const controlURL = (0, destination_tunnel_url_1.deriveTunnelConnectURL)(options.baseURL, options.organizationId, options.tunnelId);
|
|
46
48
|
const client = {
|
|
47
49
|
hostname: options.hostname ?? os_1.default.hostname(),
|
|
48
50
|
version: options.clientVersion ?? version_1.VERSION,
|
|
@@ -58,6 +60,9 @@ function runTunnel(options) {
|
|
|
58
60
|
let replace = options.replace ?? false;
|
|
59
61
|
// When the last confirmed lease runs out; zero while on standby.
|
|
60
62
|
let leaseExpiresAt = 0;
|
|
63
|
+
// The tunnel's name, from the first active; instances set it in spec.tunnel.
|
|
64
|
+
let tunnelName;
|
|
65
|
+
let lastTokenWarning = 0;
|
|
61
66
|
let announcedSession;
|
|
62
67
|
let announcedHolder;
|
|
63
68
|
let resolveClosed;
|
|
@@ -106,13 +111,22 @@ function runTunnel(options) {
|
|
|
106
111
|
if (!shutdown())
|
|
107
112
|
return;
|
|
108
113
|
ws?.terminate();
|
|
109
|
-
rejectClosed(new Error(`tunnel ${options.
|
|
114
|
+
rejectClosed(new Error(`tunnel ${tunnelName ?? options.tunnelId}: ${detail}`));
|
|
110
115
|
};
|
|
111
|
-
const
|
|
112
|
-
|
|
116
|
+
const dialOptions = (attachment) => ({
|
|
117
|
+
...(0, destination_tunnel_dialer_1.destinationTunnelDialOptions)({ selectors: attachment.selectors, ...(options.inspection ? { inspection: options.inspection } : {}) }, options.logLevel ?? 'warn'),
|
|
118
|
+
...(tunnelName === undefined ? {} : { name: tunnelName }),
|
|
119
|
+
});
|
|
120
|
+
const tokenUsable = (attachment) => Date.now() < attachment.tokenExpiresAt - TOKEN_EXPIRY_MARGIN_MS;
|
|
121
|
+
// Tells the platform and the caller that the connector gave up on an instance.
|
|
122
|
+
const reportGivenUp = (instanceId, code, message) => {
|
|
113
123
|
send({ type: 'attachFailed', instanceId, code, message, terminal: true });
|
|
114
124
|
emit({ type: 'attachFailed', instanceId, code, message });
|
|
115
125
|
};
|
|
126
|
+
const giveUp = (instanceId, attachment, code, message) => {
|
|
127
|
+
forget(instanceId, attachment);
|
|
128
|
+
reportGivenUp(instanceId, code, message);
|
|
129
|
+
};
|
|
116
130
|
const scheduleAttachRetry = (instanceId, attachment, reason) => {
|
|
117
131
|
const delayMs = jittered(attachment.backoffMs);
|
|
118
132
|
const maxMs = attachment.lastTunnelId === undefined ? ATTACH_FIRST_MAX_BACKOFF_MS : ATTACH_MAX_BACKOFF_MS;
|
|
@@ -134,7 +148,8 @@ function runTunnel(options) {
|
|
|
134
148
|
const takenOver = async (attachment) => {
|
|
135
149
|
try {
|
|
136
150
|
const active = (await (0, destination_tunnel_management_1.getDestinationTunnelStatus)(attachment.url, attachment.token)).active;
|
|
137
|
-
return (active
|
|
151
|
+
return (active !== undefined &&
|
|
152
|
+
active.name === tunnelName &&
|
|
138
153
|
active.state !== 'stopping' &&
|
|
139
154
|
active.tunnelId !== attachment.lastTunnelId);
|
|
140
155
|
}
|
|
@@ -170,7 +185,7 @@ function runTunnel(options) {
|
|
|
170
185
|
retryAfterFailure(instanceId, attachment, 'already_active', 'the previous tunnel is still stopping');
|
|
171
186
|
return;
|
|
172
187
|
}
|
|
173
|
-
if (active.name !==
|
|
188
|
+
if (active.name !== tunnelName) {
|
|
174
189
|
giveUp(instanceId, attachment, 'instance_busy', 'the instance already has another tunnel');
|
|
175
190
|
return;
|
|
176
191
|
}
|
|
@@ -204,6 +219,12 @@ function runTunnel(options) {
|
|
|
204
219
|
retryAfterFailure(instanceId, attachment, 'not_holder', 'this connector does not hold the tunnel');
|
|
205
220
|
return;
|
|
206
221
|
}
|
|
222
|
+
// A token past its life is refused; the API sends a fresh one at half
|
|
223
|
+
// life, so this only waits while the control channel is down.
|
|
224
|
+
if (!tokenUsable(attachment)) {
|
|
225
|
+
retryAfterFailure(instanceId, attachment, 'token_expired', 'waiting for a fresh attach token');
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
207
228
|
let tunnel;
|
|
208
229
|
try {
|
|
209
230
|
if (attachment.lastTunnelId !== undefined && (await takenOver(attachment))) {
|
|
@@ -214,7 +235,7 @@ function runTunnel(options) {
|
|
|
214
235
|
}
|
|
215
236
|
if (attachment.done)
|
|
216
237
|
return;
|
|
217
|
-
tunnel = await (0, destination_tunnel_dialer_1.startDestinationTcpTunnel)((0, destination_tunnel_url_1.deriveDestinationTunnelURL)(attachment.url), attachment.token, dialOptions);
|
|
238
|
+
tunnel = await (0, destination_tunnel_dialer_1.startDestinationTcpTunnel)((0, destination_tunnel_url_1.deriveDestinationTunnelURL)(attachment.url), attachment.token, dialOptions(attachment));
|
|
218
239
|
}
|
|
219
240
|
catch (error) {
|
|
220
241
|
if (attachment.done)
|
|
@@ -268,17 +289,26 @@ function runTunnel(options) {
|
|
|
268
289
|
if (stopped)
|
|
269
290
|
return;
|
|
270
291
|
switch (message.type) {
|
|
271
|
-
case 'active':
|
|
292
|
+
case 'active': {
|
|
272
293
|
replace = false;
|
|
273
294
|
leaseExpiresAt = Date.now() + message.leaseSeconds * 1000;
|
|
274
295
|
controlBackoffMs = CONTROL_INITIAL_BACKOFF_MS;
|
|
275
296
|
sessionId = message.sessionId;
|
|
297
|
+
tunnelName = message.name;
|
|
276
298
|
announcedHolder = undefined;
|
|
277
299
|
if (announcedSession !== message.sessionId) {
|
|
278
300
|
announcedSession = message.sessionId;
|
|
279
|
-
emit({ type: 'active', sessionId: message.sessionId });
|
|
301
|
+
emit({ type: 'active', sessionId: message.sessionId, name: message.name });
|
|
302
|
+
}
|
|
303
|
+
const now = Date.now();
|
|
304
|
+
if (message.tokenExpiresAt !== undefined &&
|
|
305
|
+
Date.parse(message.tokenExpiresAt) - now < TOKEN_WARNING_WINDOW_MS &&
|
|
306
|
+
now - lastTokenWarning >= TOKEN_WARNING_EVERY_MS) {
|
|
307
|
+
lastTokenWarning = now;
|
|
308
|
+
emit({ type: 'tokenExpiring', expiresAt: message.tokenExpiresAt });
|
|
280
309
|
}
|
|
281
310
|
return;
|
|
311
|
+
}
|
|
282
312
|
case 'standby': {
|
|
283
313
|
leaseExpiresAt = 0;
|
|
284
314
|
controlBackoffMs = CONTROL_INITIAL_BACKOFF_MS;
|
|
@@ -291,20 +321,47 @@ function runTunnel(options) {
|
|
|
291
321
|
}
|
|
292
322
|
return;
|
|
293
323
|
}
|
|
324
|
+
case 'token': {
|
|
325
|
+
// A fresh token at half its life, or after a resume. An instance this
|
|
326
|
+
// connector gave up on stays given up.
|
|
327
|
+
const attachment = instances.get(message.instanceId);
|
|
328
|
+
if (attachment) {
|
|
329
|
+
attachment.token = message.token;
|
|
330
|
+
attachment.tokenExpiresAt = Date.now() + message.expiresInSeconds * 1000;
|
|
331
|
+
}
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
294
334
|
case 'attach': {
|
|
335
|
+
// Expiry is relative, so this host's clock never matters.
|
|
336
|
+
const tokenExpiresAt = Date.now() + message.expiresInSeconds * 1000;
|
|
295
337
|
const existing = instances.get(message.instanceId);
|
|
296
338
|
if (existing) {
|
|
297
|
-
//
|
|
339
|
+
// A new holder session re-attaches every instance, including ones
|
|
340
|
+
// this connector still serves; a live tunnel only needs confirming.
|
|
341
|
+
// The instance keeps the selectors it first got.
|
|
298
342
|
existing.url = message.url;
|
|
299
343
|
existing.token = message.token;
|
|
344
|
+
existing.tokenExpiresAt = tokenExpiresAt;
|
|
300
345
|
if (existing.tunnel) {
|
|
301
346
|
send({ type: 'attached', instanceId: message.instanceId, tunnelId: existing.tunnel.tunnelId });
|
|
302
347
|
}
|
|
303
348
|
return;
|
|
304
349
|
}
|
|
350
|
+
// The instance itself refuses what its platform cannot route, such
|
|
351
|
+
// as Android routes below port 1024.
|
|
352
|
+
let selectors;
|
|
353
|
+
try {
|
|
354
|
+
selectors = (0, destination_tunnel_1.validateDestinationTunnelSelectors)(message.selectors);
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
reportGivenUp(message.instanceId, 'invalid_selectors', errorMessage(error));
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
305
360
|
const attachment = {
|
|
306
361
|
url: message.url,
|
|
307
362
|
token: message.token,
|
|
363
|
+
tokenExpiresAt,
|
|
364
|
+
selectors,
|
|
308
365
|
mayReclaim: true,
|
|
309
366
|
failingSince: Date.now(),
|
|
310
367
|
backoffMs: ATTACH_INITIAL_BACKOFF_MS,
|
|
@@ -367,7 +424,7 @@ function runTunnel(options) {
|
|
|
367
424
|
return;
|
|
368
425
|
const proxyAgent = proxy_transport_1.nodeProxyTransport.getWebSocketAgent(controlURL);
|
|
369
426
|
const socket = new ws_1.WebSocket(controlURL, {
|
|
370
|
-
headers: { Authorization: `Bearer ${options.
|
|
427
|
+
headers: { Authorization: `Bearer ${options.token}` },
|
|
371
428
|
...(proxyAgent ? { agent: proxyAgent } : {}),
|
|
372
429
|
perMessageDeflate: false,
|
|
373
430
|
// A stalled upgrade, such as after a laptop wakes, would otherwise
|
|
@@ -399,7 +456,6 @@ function runTunnel(options) {
|
|
|
399
456
|
send({
|
|
400
457
|
type: 'hello',
|
|
401
458
|
version: CONTROL_PROTOCOL_VERSION,
|
|
402
|
-
selectors,
|
|
403
459
|
replace,
|
|
404
460
|
...(sessionId === undefined ? {} : { sessionId }),
|
|
405
461
|
attached: Array.from(instances)
|
|
@@ -500,11 +556,13 @@ function decodeControlServerMessage(value) {
|
|
|
500
556
|
const type = (0, destination_tunnel_wire_reader_1.readString)(message, 'type');
|
|
501
557
|
switch (type) {
|
|
502
558
|
case 'active': {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
559
|
+
return {
|
|
560
|
+
type,
|
|
561
|
+
sessionId: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'sessionId'),
|
|
562
|
+
leaseSeconds: (0, destination_tunnel_wire_reader_1.readPositiveInteger)(message, 'leaseSeconds'),
|
|
563
|
+
name: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'name'),
|
|
564
|
+
...(0, destination_tunnel_wire_reader_1.readOptionalString)(message, 'tokenExpiresAt'),
|
|
565
|
+
};
|
|
508
566
|
}
|
|
509
567
|
case 'standby': {
|
|
510
568
|
const holder = (0, destination_tunnel_wire_reader_1.readRecord)(message['holder'], 'holder');
|
|
@@ -518,7 +576,16 @@ function decodeControlServerMessage(value) {
|
|
|
518
576
|
type,
|
|
519
577
|
instanceId: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'instanceId'),
|
|
520
578
|
url: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'url'),
|
|
579
|
+
selectors: (0, destination_tunnel_wire_reader_1.readStringArray)(message, 'selectors'),
|
|
580
|
+
token: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'token'),
|
|
581
|
+
expiresInSeconds: (0, destination_tunnel_wire_reader_1.readPositiveInteger)(message, 'expiresInSeconds'),
|
|
582
|
+
};
|
|
583
|
+
case 'token':
|
|
584
|
+
return {
|
|
585
|
+
type,
|
|
586
|
+
instanceId: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'instanceId'),
|
|
521
587
|
token: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'token'),
|
|
588
|
+
expiresInSeconds: (0, destination_tunnel_wire_reader_1.readPositiveInteger)(message, 'expiresInSeconds'),
|
|
522
589
|
};
|
|
523
590
|
case 'detach':
|
|
524
591
|
return {
|
|
@@ -547,7 +614,7 @@ function revokedMessage(reason) {
|
|
|
547
614
|
case 'deleted':
|
|
548
615
|
return 'the tunnel was deleted';
|
|
549
616
|
case 'credential':
|
|
550
|
-
return '
|
|
617
|
+
return 'its tunnel token was rotated, revoked or has expired';
|
|
551
618
|
default:
|
|
552
619
|
return `the tunnel was revoked (${reason})`;
|
|
553
620
|
}
|
package/tunnel-connector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-connector.js","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":";;AAwIA,8BAydC;;AAjmBD,oDAAoB;AACpB,2BAA6C;AAC7C,mEAAgE;AAChE,iFAAuG;AACvG,+FAIkD;AAClD,iGAQmD;AACnD,8EAKqC;AACrC,gEAK8B;AAC9B,wCAAwD;AACxD,0CAAoC;AAEpC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,4BAA4B,GAAG,KAAM,CAAC;AAC5C,MAAM,wBAAwB,GAAG,KAAM,CAAC;AACxC,MAAM,oBAAoB,GAAG,KAAM,CAAC;AACpC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,sBAAsB,GAAG,KAAM,CAAC;AACtC,MAAM,YAAY,GAAG,IAAK,CAAC;AAC3B,MAAM,yBAAyB,GAAG,IAAK,CAAC;AACxC,MAAM,qBAAqB,GAAG,KAAM,CAAC;AACrC,2FAA2F;AAC3F,MAAM,2BAA2B,GAAG,IAAK,CAAC;AAC1C,wEAAwE;AACxE,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,+EAA+E;AAC/E,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAM,CAAC;AACrC,MAAM,kBAAkB,GAAG,0DAA0D,CAAC;AAkFtF;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,OAA+B;IACvD,MAAM,SAAS,GAAG,IAAA,uDAAkC,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG;QAClB,GAAG,IAAA,wDAA4B,EAC7B,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAChF,OAAO,CAAC,QAAQ,IAAI,MAAM,CAC3B;QACD,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;IACF,kEAAkE;IAClE,IAAA,yDAAoC,EAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAA,+CAAsB,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAE,CAAC,QAAQ,EAAE;QAC3C,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,iBAAO;KAC1C,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IACxD,IAAI,EAAyB,CAAC;IAC9B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,cAA0C,CAAC;IAC/C,IAAI,gBAAgB,GAAG,0BAA0B,CAAC;IAClD,IAAI,SAA6B,CAAC;IAClC,wEAAwE;IACxE,kDAAkD;IAClD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IACvC,iEAAiE;IACjE,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,gBAAoC,CAAC;IACzC,IAAI,eAAmC,CAAC;IAExC,IAAI,aAA0B,CAAC;IAC/B,IAAI,YAAqC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,aAAa,GAAG,OAAO,CAAC;QACxB,YAAY,GAAG,MAAM,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,wEAAwE;IACxE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEvB,MAAM,IAAI,GAAG,CAAC,KAA2B,EAAQ,EAAE;QACjD,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC,CAAC;IAEF,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,IAAI,GAAG,CAAC,OAA6B,EAAQ,EAAE;QACnD,IAAI,EAAE,EAAE,UAAU,KAAK,cAAS,CAAC,IAAI;YAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;IAErE,MAAM,MAAM,GAAG,CAAC,UAAkB,EAAE,UAA8B,EAAQ,EAAE;QAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;QAC9B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,UAAU;YAAE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC,CAAC;IAEF,iFAAiF;IACjF,MAAM,QAAQ,GAAG,GAAY,EAAE;QAC7B,IAAI,OAAO;YAAE,OAAO,KAAK,CAAC;QAC1B,OAAO,GAAG,IAAI,CAAC;QACf,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,SAAS;YAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,MAAc,EAAQ,EAAE;QACpC,IAAI,CAAC,QAAQ,EAAE;YAAE,OAAO;QACxB,EAAE,EAAE,SAAS,EAAE,CAAC;QAChB,YAAY,CAAC,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CACb,UAAkB,EAClB,UAA8B,EAC9B,IAAY,EACZ,OAAe,EACT,EAAE;QACR,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,UAA8B,EAAE,MAAc,EAAQ,EAAE;QACvG,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC1G,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CACxB,UAAkB,EAClB,UAA8B,EAC9B,IAAY,EACZ,OAAe,EACT,EAAE;QACR,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,YAAY,IAAI,iBAAiB,EAAE,CAAC;YAC9D,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,sCAAsC,OAAO,EAAE,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,wEAAwE;IACxE,oEAAoE;IACpE,uEAAuE;IACvE,MAAM,SAAS,GAAG,KAAK,EAAE,UAA8B,EAAoB,EAAE;QAC3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,MAAM,IAAA,0DAA0B,EAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3F,OAAO,CACL,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI;gBAC7B,MAAM,CAAC,KAAK,KAAK,UAAU;gBAC3B,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,YAAY,CAC5C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,iEAAiE;IACjE,MAAM,WAAW,GAAG,KAAK,EAAE,UAA8B,EAAE,QAAgB,EAAiB,EAAE;QAC5F,IAAI,CAAC;YACH,MAAM,IAAA,qDAAqB,EAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,UAAkB,EAAE,UAA8B,EAAiB,EAAE;QACvG,IAAI,MAAyC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,IAAA,0DAA0B,EAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,IAAI;gBAAE,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YACvG,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,IAAI;YAAE,OAAO;QAC5B,sEAAsE;QACtE,gEAAgE;QAChE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC3C,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,uCAAuC,CAAC,CAAC;YACrG,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,yCAAyC,CAAC,CAAC;YAC3F,OAAO;QACT,CAAC;QACD,yEAAyE;QACzE,2EAA2E;QAC3E,sBAAsB;QACtB,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;YAChD,MAAM,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACrB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;YAC7F,CAAC;YACD,OAAO;QACT,CAAC;QACD,wEAAwE;QACxE,6DAA6D;QAC7D,IAAI,UAAU,CAAC,UAAU,IAAI,iBAAiB,EAAE,EAAE,CAAC;YACjD,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;YAC9B,MAAM,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI;gBAAE,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,EAAE,UAAkB,EAAE,UAA8B,EAAiB,EAAE;QACzF,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;QAClC,qEAAqE;QACrE,mEAAmE;QACnE,kEAAkE;QAClE,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACzB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,yCAAyC,CAAC,CAAC;YACnG,OAAO;QACT,CAAC;QACD,IAAI,MAA4B,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAC3E,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;oBACrB,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;gBACnE,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,UAAU,CAAC,IAAI;gBAAE,OAAO;YAC5B,MAAM,GAAG,MAAM,IAAA,qDAAyB,EACtC,IAAA,mDAA0B,EAAC,UAAU,CAAC,GAAG,CAAC,EAC1C,UAAU,CAAC,KAAK,EAChB,WAAW,CACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,IAAI;gBAAE,OAAO;YAC5B,IAAI,IAAA,sBAAa,EAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC/C,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,qCAAqC,CAAC,CAAC;YACzF,CAAC;iBAAM,IAAI,CAAC,CAAC,KAAK,YAAY,yDAA6B,CAAC,EAAE,CAAC;gBAC7D,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YACnF,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrE,kEAAkE;gBAClE,8BAA8B;gBAC9B,iBAAiB,CACf,UAAU,EACV,UAAU,EACV,KAAK,CAAC,IAAI,EACV,4CAA4C,KAAK,CAAC,IAAI,EAAE,CACzD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,qCAAqC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAChG,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3B,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;QAC9B,UAAU,CAAC,SAAS,GAAG,yBAAyB,CAAC;QACjD,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;YAC9B,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,kCAAkC,CAAC,CAAC;QAClF,CAAC,CAAC;QACF,MAAM,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,KAAK,KAAK,cAAc,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,EAAE,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,2EAA2E;QAC3E,IAAI,MAAM,CAAC,kBAAkB,EAAE,KAAK,cAAc,EAAE,CAAC;YACnD,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,OAA6B,EAAQ,EAAE;QAC5D,sEAAsE;QACtE,IAAI,OAAO;YAAE,OAAO;QACpB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,QAAQ;gBACX,OAAO,GAAG,KAAK,CAAC;gBAChB,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;gBAC1D,gBAAgB,GAAG,0BAA0B,CAAC;gBAC9C,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;gBAC9B,eAAe,GAAG,SAAS,CAAC;gBAC5B,IAAI,gBAAgB,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC3C,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;oBACrC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBACzD,CAAC;gBACD,OAAO;YACT,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,cAAc,GAAG,CAAC,CAAC;gBACnB,gBAAgB,GAAG,0BAA0B,CAAC;gBAC9C,SAAS,GAAG,SAAS,CAAC;gBACtB,gBAAgB,GAAG,SAAS,CAAC;gBAC7B,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBAC3E,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;oBAC/B,eAAe,GAAG,MAAM,CAAC;oBACzB,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpD,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAI,QAAQ,EAAE,CAAC;oBACb,gEAAgE;oBAChE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;oBAC3B,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC/B,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACpB,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACjG,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,MAAM,UAAU,GAAuB;oBACrC,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;oBACxB,SAAS,EAAE,yBAAyB;oBACpC,IAAI,EAAE,KAAK;iBACZ,CAAC;gBACF,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC9C,KAAK,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrD,IAAI,CAAC,UAAU;oBAAE,OAAO;gBACxB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACvC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnF,OAAO;YACT,CAAC;YACD,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,CAAC,CAAC;gBACd,OAAO;YACT,KAAK,SAAS;gBACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,MAAe,EAAQ,EAAE;QAClE,IAAI,OAAO;YAAE,OAAO;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM;YAAE,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACvF,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,cAAc,GAAG,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,MAAc,EAAQ,EAAE;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI;gBACP,IAAI,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;gBAC9C,OAAO;YACT,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,iBAAiB,CAAC,kCAAkC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;gBACnE,OAAO;YACT,KAAK,IAAI;gBACP,IAAI,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;gBACnD,OAAO;YACT,KAAK,IAAI;gBACP,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAC/B,OAAO;YACT,KAAK,IAAI;gBACP,IAAI,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;gBACxC,OAAO;YACT;gBACE,iBAAiB,CAAC,kCAAkC,IAAI,GAAG,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,cAAc,GAAG,SAAS,CAAC;QAC3B,IAAI,OAAO;YAAE,OAAO;QACpB,MAAM,UAAU,GAAG,oCAAkB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,cAAS,CAAC,UAAU,EAAE;YACvC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE,EAAE;YACtD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,iBAAiB,EAAE,KAAK;YACxB,mEAAmE;YACnE,mBAAmB;YACnB,gBAAgB,EAAE,4BAA4B;SAC/C,CAAC,CAAC;QACH,EAAE,GAAG,MAAM,CAAC;QACZ,gBAAgB,GAAG,SAAS,CAAC;QAC7B,IAAI,YAAwC,CAAC;QAC7C,IAAI,aAAyC,CAAC;QAC9C,IAAI,cAAkC,CAAC;QACvC,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,SAA6B,CAAC;QAElC,MAAM,WAAW,GAAG,GAAS,EAAE;YAC7B,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,SAAS,GAAG,iBAAiB,oBAAoB,IAAI,CAAC;gBACtD,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC,EAAE,oBAAoB,CAAC,CAAC;YACzB,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACrB,WAAW,EAAE,CAAC;YACd,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;gBAC9B,IAAI,MAAM,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI;oBAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1D,CAAC,EAAE,wBAAwB,CAAC,CAAC;YAC7B,YAAY,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,wBAAwB;gBACjC,SAAS;gBACT,OAAO;gBACP,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;gBACjD,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;qBAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;qBAC7C,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC;gBACpC,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,QAAiB,EAAE,EAAE;YACxD,WAAW,EAAE,CAAC;YACd,IAAI,OAAyC,CAAC;YAC9C,IAAI,CAAC;gBACH,IAAI,QAAQ;oBAAE,MAAM,IAAI,+DAA8B,CAAC,iCAAiC,CAAC,CAAC;gBAC1F,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,yCAAQ,EAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,4BAA4B,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9D,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,IAAI,OAAO;gBAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACtD,cAAc,GAAG,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;YAC1C,mEAAmE;YACnE,2BAA2B;YAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7E,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACpC,cAAc,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YAClC,SAAS,KAAT,SAAS,GAAK,KAAK,CAAC,OAAO,EAAC;QAC9B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;YACpD,aAAa,CAAC,YAAY,CAAC,CAAC;YAC5B,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,IAAI,EAAE,KAAK,MAAM;gBAAE,EAAE,GAAG,SAAS,CAAC;YAClC,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,cAAc,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,cAAc,EAAE,CAAC;gBACvF,sEAAsE;gBACtE,gBAAgB;gBAChB,IAAI,cAAc,IAAI,GAAG,IAAI,cAAc,GAAG,GAAG,IAAI,cAAc,KAAK,GAAG,EAAE,CAAC;oBAC5E,IAAI,CAAC,sCAAsC,MAAM,GAAG,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACN,iBAAiB,CAAC,uBAAuB,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC5D,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACpC,OAAO;YACT,CAAC;YACD,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,IAAI,CAAC,QAAQ,EAAE;YAAE,OAAO;QACxB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,MAAM,EAAE,UAAU,KAAK,cAAS,CAAC,IAAI,EAAE,CAAC;YAC1C,oEAAoE;YACpE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;gBACjE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;oBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,SAAS,EAAE,CAAC;QACtB,CAAC;QACD,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,cAAc,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc;IAChD,MAAM,OAAO,GAAG,IAAA,2CAAU,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAA,2CAAU,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,YAAY,GAAG,IAAA,4CAAW,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC1D,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,+DAA8B,CAAC,+BAA+B,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAA,mDAAkB,EAAC,OAAO,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;QACrF,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,IAAA,2CAAU,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YACvD,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAA,2CAAU,EAAC,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,IAAA,mDAAkB,EAAC,MAAM,EAAE,OAAO,CAAC,EAAE;aAC7F,CAAC;QACJ,CAAC;QACD,KAAK,QAAQ;YACX,OAAO;gBACL,IAAI;gBACJ,UAAU,EAAE,IAAA,mDAAkB,EAAC,OAAO,EAAE,YAAY,CAAC;gBACrD,GAAG,EAAE,IAAA,mDAAkB,EAAC,OAAO,EAAE,KAAK,CAAC;gBACvC,KAAK,EAAE,IAAA,mDAAkB,EAAC,OAAO,EAAE,OAAO,CAAC;aAC5C,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO;gBACL,IAAI;gBACJ,UAAU,EAAE,IAAA,mDAAkB,EAAC,OAAO,EAAE,YAAY,CAAC;gBACrD,MAAM,EAAE,IAAA,2CAAU,EAAC,OAAO,EAAE,QAAQ,CAAC;aACtC,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO;gBACL,IAAI;gBACJ,IAAI,EAAE,IAAA,2CAAU,EAAC,OAAO,EAAE,MAAM,CAAC;gBACjC,OAAO,EAAE,IAAA,2CAAU,EAAC,OAAO,EAAE,SAAS,CAAC;gBACvC,GAAG,IAAA,mDAAkB,EAAC,OAAO,EAAE,YAAY,CAAC;aAC7C,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAA,2CAAU,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QACzD;YACE,yEAAyE;YACzE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,qCAAqC,CAAC;QAC/C,KAAK,SAAS;YACZ,OAAO,wBAAwB,CAAC;QAClC,KAAK,YAAY;YACf,OAAO,yBAAyB,CAAC;QACnC;YACE,OAAO,2BAA2B,MAAM,GAAG,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
1
|
+
{"version":3,"file":"tunnel-connector.js","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"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"}
|