@libp2p/autonat 2.0.38-8484de8a2 → 2.0.38-87bc8d4fb
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/dist/index.min.js +1 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/autonat.d.ts +2 -2
- package/dist/src/autonat.d.ts.map +1 -1
- package/dist/src/autonat.js +33 -34
- package/dist/src/autonat.js.map +1 -1
- package/package.json +19 -17
- package/src/autonat.ts +38 -37
package/dist/src/autonat.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { serviceCapabilities, serviceDependencies } from '@libp2p/interface';
|
|
2
2
|
import type { AutoNATComponents, AutoNATServiceInit } from './index.js';
|
|
3
|
-
import type { Connection, Startable, AbortOptions,
|
|
3
|
+
import type { Connection, Startable, AbortOptions, IncomingStreamData } from '@libp2p/interface';
|
|
4
4
|
export declare class AutoNATService implements Startable {
|
|
5
5
|
private readonly components;
|
|
6
6
|
private readonly protocol;
|
|
@@ -27,7 +27,7 @@ export declare class AutoNATService implements Startable {
|
|
|
27
27
|
/**
|
|
28
28
|
* Handle an incoming AutoNAT request
|
|
29
29
|
*/
|
|
30
|
-
handleIncomingAutonatStream(
|
|
30
|
+
handleIncomingAutonatStream(data: IncomingStreamData): Promise<void>;
|
|
31
31
|
private handleAutonatMessage;
|
|
32
32
|
/**
|
|
33
33
|
* The AutoNAT v1 server is not required to send us the address that it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autonat.d.ts","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"autonat.d.ts","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAgB5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,KAAK,EAAU,UAAU,EAAU,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAmEhH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;gBAE/B,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,kBAAkB;IAkBpE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAoB;IAEjD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAK,MAAM,EAAE,CAIrC;IAED,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IA4BvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,uBAAuB;IAWzB,eAAe,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C7D;;OAEG;IACG,2BAA2B,CAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;YA2B7D,oBAAoB;IAuKlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,2BAA2B;IAsGnC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAoBtC;;OAEG;IACG,uBAAuB,CAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDvD,eAAe;IAsG7B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAY1B"}
|
package/dist/src/autonat.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { serviceCapabilities, serviceDependencies } from '@libp2p/interface';
|
|
2
2
|
import { peerSet } from '@libp2p/peer-collections';
|
|
3
3
|
import { peerIdFromMultihash } from '@libp2p/peer-id';
|
|
4
|
-
import { createScalableCuckooFilter
|
|
5
|
-
import {
|
|
4
|
+
import { createScalableCuckooFilter } from '@libp2p/utils/filters';
|
|
5
|
+
import { isGlobalUnicast } from '@libp2p/utils/multiaddr/is-global-unicast';
|
|
6
|
+
import { isPrivate } from '@libp2p/utils/multiaddr/is-private';
|
|
7
|
+
import { PeerQueue } from '@libp2p/utils/peer-queue';
|
|
8
|
+
import { repeatingTask } from '@libp2p/utils/repeating-task';
|
|
9
|
+
import { trackedMap } from '@libp2p/utils/tracked-map';
|
|
10
|
+
import { multiaddr, protocols } from '@multiformats/multiaddr';
|
|
6
11
|
import { anySignal } from 'any-signal';
|
|
12
|
+
import { pbStream } from 'it-protobuf-stream';
|
|
7
13
|
import { setMaxListeners } from 'main-event';
|
|
8
14
|
import * as Digest from 'multiformats/hashes/digest';
|
|
9
15
|
import { DEFAULT_CONNECTION_THRESHOLD, MAX_INBOUND_STREAMS, MAX_MESSAGE_SIZE, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, TIMEOUT } from './constants.js';
|
|
@@ -60,8 +66,8 @@ export class AutoNATService {
|
|
|
60
66
|
if (this.started) {
|
|
61
67
|
return;
|
|
62
68
|
}
|
|
63
|
-
await this.components.registrar.handle(this.protocol, (
|
|
64
|
-
void this.handleIncomingAutonatStream(
|
|
69
|
+
await this.components.registrar.handle(this.protocol, (data) => {
|
|
70
|
+
void this.handleIncomingAutonatStream(data)
|
|
65
71
|
.catch(err => {
|
|
66
72
|
this.log.error('error handling incoming autonat stream - %e', err);
|
|
67
73
|
});
|
|
@@ -139,34 +145,34 @@ export class AutoNATService {
|
|
|
139
145
|
/**
|
|
140
146
|
* Handle an incoming AutoNAT request
|
|
141
147
|
*/
|
|
142
|
-
async handleIncomingAutonatStream(
|
|
148
|
+
async handleIncomingAutonatStream(data) {
|
|
143
149
|
const signal = AbortSignal.timeout(this.timeout);
|
|
144
150
|
setMaxListeners(Infinity, signal);
|
|
151
|
+
const messages = pbStream(data.stream, {
|
|
152
|
+
maxDataLength: this.maxMessageSize
|
|
153
|
+
}).pb(Message);
|
|
145
154
|
try {
|
|
146
|
-
const messages = pbStream(stream, {
|
|
147
|
-
maxDataLength: this.maxMessageSize
|
|
148
|
-
}).pb(Message);
|
|
149
155
|
const request = await messages.read({
|
|
150
156
|
signal
|
|
151
157
|
});
|
|
152
|
-
const response = await this.handleAutonatMessage(request, connection, {
|
|
158
|
+
const response = await this.handleAutonatMessage(request, data.connection, {
|
|
153
159
|
signal
|
|
154
160
|
});
|
|
155
161
|
await messages.write(response, {
|
|
156
162
|
signal
|
|
157
163
|
});
|
|
158
|
-
await
|
|
164
|
+
await messages.unwrap().unwrap().close({
|
|
159
165
|
signal
|
|
160
166
|
});
|
|
161
167
|
}
|
|
162
168
|
catch (err) {
|
|
163
169
|
this.log.error('error handling incoming autonat stream - %e', err);
|
|
164
|
-
stream.abort(err);
|
|
170
|
+
data.stream.abort(err);
|
|
165
171
|
}
|
|
166
172
|
}
|
|
167
173
|
async handleAutonatMessage(message, connection, options) {
|
|
168
174
|
const ourHosts = this.components.addressManager.getAddresses()
|
|
169
|
-
.map(ma =>
|
|
175
|
+
.map(ma => ma.toOptions().host);
|
|
170
176
|
const dialRequest = message.dial;
|
|
171
177
|
if (dialRequest == null) {
|
|
172
178
|
this.log.error('dial was missing from message');
|
|
@@ -221,12 +227,12 @@ export class AutoNATService {
|
|
|
221
227
|
.map(buf => multiaddr(buf))
|
|
222
228
|
.filter(ma => {
|
|
223
229
|
try {
|
|
224
|
-
const options =
|
|
230
|
+
const options = ma.toOptions();
|
|
225
231
|
if (isPrivate(ma)) {
|
|
226
232
|
// don't try to dial private addresses
|
|
227
233
|
return false;
|
|
228
234
|
}
|
|
229
|
-
if (options.host !==
|
|
235
|
+
if (options.host !== connection.remoteAddr.toOptions().host) {
|
|
230
236
|
// skip any Multiaddrs where the target node's IP does not match the sending node's IP
|
|
231
237
|
this.log.trace('not dialing %a - target host did not match remote host %a', ma, connection.remoteAddr);
|
|
232
238
|
return false;
|
|
@@ -249,7 +255,7 @@ export class AutoNATService {
|
|
|
249
255
|
}
|
|
250
256
|
})
|
|
251
257
|
.map(ma => {
|
|
252
|
-
if (ma.
|
|
258
|
+
if (ma.getPeerId() == null) {
|
|
253
259
|
// make sure we have the PeerId as part of the Multiaddr
|
|
254
260
|
ma = ma.encapsulate(`/p2p/${peerId.toString()}`);
|
|
255
261
|
}
|
|
@@ -283,7 +289,7 @@ export class AutoNATService {
|
|
|
283
289
|
type: Message.MessageType.DIAL_RESPONSE,
|
|
284
290
|
dialResponse: {
|
|
285
291
|
status: Message.ResponseStatus.OK,
|
|
286
|
-
addr: connection.remoteAddr.decapsulateCode(
|
|
292
|
+
addr: connection.remoteAddr.decapsulateCode(protocols('p2p').code).bytes
|
|
287
293
|
}
|
|
288
294
|
};
|
|
289
295
|
}
|
|
@@ -336,8 +342,8 @@ export class AutoNATService {
|
|
|
336
342
|
// skip verified/non-verified addresses within their TTL
|
|
337
343
|
return false;
|
|
338
344
|
}
|
|
339
|
-
const options =
|
|
340
|
-
if (options.
|
|
345
|
+
const options = addr.multiaddr.toOptions();
|
|
346
|
+
if (options.family === 6) {
|
|
341
347
|
// do not send IPv6 addresses to peers without IPv6 addresses
|
|
342
348
|
if (!supportsIPv6) {
|
|
343
349
|
return false;
|
|
@@ -435,7 +441,7 @@ export class AutoNATService {
|
|
|
435
441
|
// if the remote peer has IPv6 addresses, we can probably send them an IPv6
|
|
436
442
|
// address to verify, otherwise only send them IPv4 addresses
|
|
437
443
|
const supportsIPv6 = peer.addresses.some(({ multiaddr }) => {
|
|
438
|
-
return
|
|
444
|
+
return multiaddr.toOptions().family === 6;
|
|
439
445
|
});
|
|
440
446
|
// get multiaddrs this peer is eligible to verify
|
|
441
447
|
const segment = this.getNetworkSegment(connection.remoteAddr);
|
|
@@ -477,7 +483,7 @@ export class AutoNATService {
|
|
|
477
483
|
}
|
|
478
484
|
const signal = AbortSignal.timeout(this.timeout);
|
|
479
485
|
setMaxListeners(Infinity, signal);
|
|
480
|
-
this.log.trace('asking %
|
|
486
|
+
this.log.trace('asking %p to verify multiaddr %s', connection.remotePeer, options.multiaddr);
|
|
481
487
|
const stream = await connection.newStream(this.protocol, {
|
|
482
488
|
signal
|
|
483
489
|
});
|
|
@@ -579,20 +585,13 @@ export class AutoNATService {
|
|
|
579
585
|
}
|
|
580
586
|
getNetworkSegment(ma) {
|
|
581
587
|
// make sure we use different network segments
|
|
582
|
-
const options =
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
return octets[0].padStart(3, '0');
|
|
587
|
-
}
|
|
588
|
-
case 'ip6': {
|
|
589
|
-
const octets = options.host.split(':');
|
|
590
|
-
return octets[0].padStart(4, '0');
|
|
591
|
-
}
|
|
592
|
-
default: {
|
|
593
|
-
throw new InvalidParametersError(`Remote address ${ma} was not an IPv4 or Ipv6 address`);
|
|
594
|
-
}
|
|
588
|
+
const options = ma.toOptions();
|
|
589
|
+
if (options.family === 4) {
|
|
590
|
+
const octets = options.host.split('.');
|
|
591
|
+
return octets[0].padStart(3, '0');
|
|
595
592
|
}
|
|
593
|
+
const octets = options.host.split(':');
|
|
594
|
+
return octets[0].padStart(4, '0');
|
|
596
595
|
}
|
|
597
596
|
}
|
|
598
597
|
//# sourceMappingURL=autonat.js.map
|
package/dist/src/autonat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autonat.js","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACpJ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACrL,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAQvC,+EAA+E;AAC/E,gEAAgE;AAChE,qFAAqF;AACrF,MAAM,yBAAyB,GAAG,CAAC,CAAA;AACnC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAwD/B,MAAM,OAAO,cAAc;IACR,UAAU,CAAmB;IAC7B,QAAQ,CAAQ;IAChB,OAAO,CAAQ;IACf,iBAAiB,CAAQ;IACzB,kBAAkB,CAAQ;IAC1B,cAAc,CAAQ;IAC/B,OAAO,CAAS;IACP,GAAG,CAAQ;IACpB,UAAU,CAAS;IACV,WAAW,CAA0B;IACrC,SAAS,CAAe;IACxB,aAAa,CAAQ;IACrB,mBAAmB,CAAQ;IAE5C,YAAa,UAA6B,EAAE,IAAwB;QAClE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;QAC5D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,cAAc,IAAI,eAAe,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAAA;QACjG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAA;QACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,mBAAmB,CAAA;QACtE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,oBAAoB,CAAA;QACzE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,4BAA4B,CAAA;QACnF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,gBAAgB,CAAA;QAC7D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC5B,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QACvE,IAAI,CAAC,aAAa,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAA;IACvD,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAA;IAExC,CAAC,mBAAmB,CAAC,GAAa;QACzC,iBAAiB;KAClB,CAAA;IAED,IAAI,CAAC,mBAAmB,CAAC;QACvB,OAAO;YACL,kBAAkB;SACnB,CAAA;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;YAC3E,KAAK,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC;iBACtD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAA;YACpE,CAAC,CAAC,CAAA;QACN,CAAC,EAAE;YACD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;YACxE,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;gBAChC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;qBACrC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAA;gBACxD,CAAC,CAAC,CAAA;YACN,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEvD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAEO,uBAAuB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC5E,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC9B,mDAAmD;gBACnD,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,IAAI,CAAC,QAAQ,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAE,OAAsB;QAC3C,qCAAqC;QACrC,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACnC,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC;YACvB,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3B,OAAO,EAAE,MAAM;SAChB,CAAC,CAAA;QAEF,sEAAsE;QACtE,6DAA6D;QAC7D,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;YAE7D,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBAC3E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;oBAElH,2BAA2B;oBAC3B,SAAQ;gBACV,CAAC;gBAED,IAAI,CAAC;oBACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;oBAC9C,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE;wBACtE,MAAM;qBACP,CAAC,CAAA;gBACJ,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAEV,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;oBACnC,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;oBAC5D,OAAM;gBACR,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;oBAClC,IAAI,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;oBAC9D,OAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,CAAE,MAAc,EAAE,UAAsB;QACvE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAChD,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAEjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE;gBAChC,aAAa,EAAE,IAAI,CAAC,cAAc;aACnC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;YAEd,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;gBAClC,MAAM;aACP,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE;gBACpE,MAAM;aACP,CAAC,CAAA;YACF,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC7B,MAAM;aACP,CAAC,CAAA;YACF,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,MAAM;aACP,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAA;YAClE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAE,OAAgB,EAAE,UAAsB,EAAE,OAAsB;QAClG,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE;aAC3D,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QAEnC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAA;QAEhC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;YAE/C,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;gBACvC,YAAY,EAAE;oBACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa;oBAC5C,UAAU,EAAE,kCAAkC;iBAC/C;aACF,CAAA;QACH,CAAC;QAED,IAAI,MAAc,CAAA;QAClB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;QAE7B,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAE7C,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;gBACvC,YAAY,EAAE;oBACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa;oBAC5C,UAAU,EAAE,mBAAmB;iBAChC;aACF,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACrC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAA;YAE1C,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;gBACvC,YAAY,EAAE;oBACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa;oBAC5C,UAAU,EAAE,aAAa;iBAC1B;aACF,CAAA;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;QAE5C,kDAAkD;QAClD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,8CAA8C,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YAEvF,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;gBACvC,YAAY,EAAE;oBACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa;oBAC5C,UAAU,EAAE,kBAAkB;iBAC/B;aACF,CAAA;QACH,CAAC;QAED,mCAAmC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK;aAC1B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAC1B,MAAM,CAAC,EAAE,CAAC,EAAE;YACX,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;gBAEhC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;oBAClB,sCAAsC;oBACtC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9D,sFAAsF;oBACtF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2DAA2D,EAAE,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;oBACtG,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,iDAAiD;oBACjD,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC3E,6DAA6D;oBAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAA;oBAC5D,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;gBACrE,OAAO;gBACP,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAC;aACD,GAAG,CAAC,EAAE,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;gBACrE,wDAAwD;gBACxD,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAClD,CAAC;YAED,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QAEJ,sCAAsC;QACtC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,oDAAoD,EAAE,MAAM,CAAC,CAAA;YAEtE,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;gBACvC,YAAY,EAAE;oBACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc;oBAC7C,UAAU,EAAE,uBAAuB;iBACpC;aACF,CAAA;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,gCAAgC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QAElG,IAAI,YAAY,GAAG,EAAE,CAAA;QACrB,IAAI,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAEjC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,UAAkC,CAAA;YACtC,aAAa,GAAG,SAAS,CAAA;YAEzB,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBAEvF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;oBAClF,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;gBAC9C,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;gBAE5D,OAAO;oBACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;oBACvC,YAAY,EAAE;wBACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE;wBACjC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK;qBAC5D;iBACF,CAAA;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;gBACrD,YAAY,GAAG,GAAG,CAAC,OAAO,CAAA;YAC5B,CAAC;oBAAS,CAAC;gBACT,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa;YACvC,YAAY,EAAE;gBACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,YAAY;gBAC3C,UAAU,EAAE,YAAY;gBACxB,IAAI,EAAE,aAAa,CAAC,KAAK;aAC1B;SACF,CAAA;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACK,2BAA2B,CAAE,OAAe,EAAE,YAAqB;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,wBAAwB,EAAE;aACpE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,mDAAmD;YACnD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnD,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnD,OAAO,CAAC,CAAC,CAAA;YACX,CAAC;YAED,OAAO,CAAC,CAAA;QACV,CAAC,CAAC;aACD,MAAM,CAAC,IAAI,CAAC,EAAE;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,wDAAwD;gBACxD,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAE5C,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,6DAA6D;gBAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrC,uCAAuC;oBACvC,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,yBAAyB;gBACzB,OAAO,KAAK,CAAA;YACd,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;QAEJ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;YAC5C,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAE9C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,IAAI,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iDAAiD,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;oBAC7F,8DAA8D;oBAC9D,iCAAiC;oBACjC,SAAQ;gBACV,CAAC;gBAED,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;oBACvE,mEAAmE;oBACnE,WAAW;oBACX,SAAQ;gBACV,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAEnD,uDAAuD;gBACvD,IAAI,iBAAiB,EAAE,CAAC;oBACtB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAA;gBACzC,CAAC;gBAED,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBACvC,SAAQ;gBACV,CAAC;gBAED,wCAAwC;gBACxC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBAElC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;gBACrG,OAAO,GAAG;oBACR,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;oBACV,eAAe,EAAE,EAAE;oBACnB,cAAc,EAAE,OAAO,EAAE;oBACzB,KAAK,EAAE,IAAI,SAAS,CAAC;wBACnB,WAAW,EAAE,CAAC;wBACd,OAAO,EAAE,EAAE;qBACZ,CAAC;oBACF,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,YAAY,EAAE,IAAI,CAAC,YAAY;iBAChC,CAAA;gBAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAC3C,CAAC;YAED,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,8BAA8B;QACpC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,wBAAwB,EAAE;aAC3F,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACtB,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAC9C,CAAA;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAA;gBAClD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAE,UAAsB;QACnD,mCAAmC;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACtB,OAAM;QACR,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,8BAA8B,EAAE,CAAA;QAErC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QAEvE,2EAA2E;QAC3E,6DAA6D;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YACzD,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,KAAK,CAAA;QAC/C,CAAC,CAAC,CAAA;QAEF,iDAAiD;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QAEvE,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yFAAyF,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YAChI,OAAM;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAClC,uEAAuE;YACvE,wEAAwE;YACxE,sDAAsD;YAEtD,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,gFAAgF,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;gBAC7G,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,wEAAwE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;YACvG,CAAC;YAED,OAAM;QACR,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;YACtD,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC1D,CAAC,EAAE;YACD,MAAM,EAAE,UAAU,CAAC,UAAU;YAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;aACC,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;YAC3G,CAAC;QACH,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,KAAK,CAAC,eAAe,CAAE,UAAsB,EAAE,OAAe,EAAE,OAA2B;QACjG,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEhE,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,qCAAqC,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YACzF,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAChD,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAEjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QAE5F,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvD,MAAM;SACP,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;YAC7C,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACrC,QAAQ,CAAC,KAAK,CAAC;oBACb,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI;oBAC9B,IAAI,EAAE;wBACJ,IAAI,EAAE;4BACJ,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK;4BAC9C,KAAK,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;yBACjC;qBACF;iBACF,EAAE,EAAE,MAAM,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;aAC1B,CAAC,CAAA;YAEF,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,aAAa,IAAI,QAAQ,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBACzF,IAAI,CAAC,GAAG,CAAC,uCAAuC,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;gBAClF,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAA;YAE3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAEzG,IAAI,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;gBAC3F,OAAM;YACR,CAAC;YAED,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;YAE5D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sDAAsD,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;gBACvH,OAAM;YACR,CAAC;YAED,IAAI,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBACpF,OAAM;YACR,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wDAAwD,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;gBAClH,OAAM;YACR,CAAC;YAED,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oDAAoD,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;gBAC9G,OAAM;YACR,CAAC;YAED,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YACjD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAErC,IAAI,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACzC,OAAO,CAAC,OAAO,EAAE,CAAA;gBAEjB,gDAAgD;gBAChD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAChC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;oBAC5B,OAAM;gBACR,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;gBAC1D,OAAO,CAAC,OAAO,EAAE,CAAA;YACnB,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YAEzF,IAAI,OAAO,CAAC,OAAO,KAAK,yBAAyB,EAAE,CAAC;gBAClD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAC9B,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,KAAK,qBAAqB,EAAE,CAAC;gBAC9C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC;oBACjB,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAA;QACtE,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,CAAA;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAA;QAE5E,OAAO,CAAC,CAAC,sBAAsB,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAA;IACrF,CAAC;IAEO,cAAc,CAAE,OAAoB;QAC1C,uBAAuB;QACvB,IAAI,CAAC,GAAG,CAAC,sCAAsC,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QACjF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACrE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;QAErD,sEAAsE;QACtE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA;QACrB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAEO,gBAAgB,CAAE,OAAoB;QAC5C,yBAAyB;QACzB,IAAI,CAAC,GAAG,CAAC,0CAA0C,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QACrF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACpE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;QAErD,sEAAsE;QACtE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAA;QACtB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAEO,iBAAiB,CAAE,EAAa;QACtC,8CAA8C;QAC9C,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;QAEhC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACtC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACnC,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACtC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACnC,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CAAA;YAC1F,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"autonat.js","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/autonat",
|
|
3
|
-
"version": "2.0.38-
|
|
3
|
+
"version": "2.0.38-87bc8d4fb",
|
|
4
4
|
"description": "Implementation of Autonat Protocol",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/protocol-autonat#readme",
|
|
@@ -45,29 +45,31 @@
|
|
|
45
45
|
"doc-check": "aegir doc-check"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@libp2p/interface": "2.11.0-
|
|
49
|
-
"@libp2p/interface-internal": "2.3.19-
|
|
50
|
-
"@libp2p/peer-collections": "6.0.35-
|
|
51
|
-
"@libp2p/peer-id": "5.1.9-
|
|
52
|
-
"@libp2p/utils": "6.7.2-
|
|
53
|
-
"@multiformats/multiaddr": "^
|
|
48
|
+
"@libp2p/interface": "2.11.0-87bc8d4fb",
|
|
49
|
+
"@libp2p/interface-internal": "2.3.19-87bc8d4fb",
|
|
50
|
+
"@libp2p/peer-collections": "6.0.35-87bc8d4fb",
|
|
51
|
+
"@libp2p/peer-id": "5.1.9-87bc8d4fb",
|
|
52
|
+
"@libp2p/utils": "6.7.2-87bc8d4fb",
|
|
53
|
+
"@multiformats/multiaddr": "^12.4.4",
|
|
54
54
|
"any-signal": "^4.1.1",
|
|
55
|
+
"it-protobuf-stream": "^2.0.2",
|
|
55
56
|
"main-event": "^1.0.1",
|
|
56
|
-
"multiformats": "^13.
|
|
57
|
-
"protons-runtime": "^5.
|
|
57
|
+
"multiformats": "^13.3.6",
|
|
58
|
+
"protons-runtime": "^5.5.0",
|
|
58
59
|
"uint8arraylist": "^2.4.8"
|
|
59
60
|
},
|
|
60
61
|
"devDependencies": {
|
|
61
|
-
"@libp2p/crypto": "5.1.8-
|
|
62
|
-
"@libp2p/logger": "5.2.0-
|
|
63
|
-
"aegir": "^47.0.
|
|
64
|
-
"
|
|
65
|
-
"it-
|
|
62
|
+
"@libp2p/crypto": "5.1.8-87bc8d4fb",
|
|
63
|
+
"@libp2p/logger": "5.2.0-87bc8d4fb",
|
|
64
|
+
"aegir": "^47.0.14",
|
|
65
|
+
"it-all": "^3.0.8",
|
|
66
|
+
"it-drain": "^3.0.9",
|
|
66
67
|
"it-length-prefixed": "^10.0.1",
|
|
67
68
|
"it-pipe": "^3.0.1",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
69
|
+
"it-pushable": "^3.2.3",
|
|
70
|
+
"p-retry": "^6.2.1",
|
|
71
|
+
"protons": "^7.6.1",
|
|
72
|
+
"sinon": "^20.0.0",
|
|
71
73
|
"sinon-ts": "^2.0.0"
|
|
72
74
|
},
|
|
73
75
|
"sideEffects": false
|
package/src/autonat.ts
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { serviceCapabilities, serviceDependencies } from '@libp2p/interface'
|
|
2
2
|
import { peerSet } from '@libp2p/peer-collections'
|
|
3
3
|
import { peerIdFromMultihash } from '@libp2p/peer-id'
|
|
4
|
-
import { createScalableCuckooFilter
|
|
5
|
-
import {
|
|
4
|
+
import { createScalableCuckooFilter } from '@libp2p/utils/filters'
|
|
5
|
+
import { isGlobalUnicast } from '@libp2p/utils/multiaddr/is-global-unicast'
|
|
6
|
+
import { isPrivate } from '@libp2p/utils/multiaddr/is-private'
|
|
7
|
+
import { PeerQueue } from '@libp2p/utils/peer-queue'
|
|
8
|
+
import { repeatingTask } from '@libp2p/utils/repeating-task'
|
|
9
|
+
import { trackedMap } from '@libp2p/utils/tracked-map'
|
|
10
|
+
import { multiaddr, protocols } from '@multiformats/multiaddr'
|
|
6
11
|
import { anySignal } from 'any-signal'
|
|
12
|
+
import { pbStream } from 'it-protobuf-stream'
|
|
7
13
|
import { setMaxListeners } from 'main-event'
|
|
8
14
|
import * as Digest from 'multiformats/hashes/digest'
|
|
9
15
|
import { DEFAULT_CONNECTION_THRESHOLD, MAX_INBOUND_STREAMS, MAX_MESSAGE_SIZE, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, TIMEOUT } from './constants.js'
|
|
10
16
|
import { Message } from './pb/index.js'
|
|
11
17
|
import type { AutoNATComponents, AutoNATServiceInit } from './index.js'
|
|
12
|
-
import type { Logger, Connection, PeerId, Startable, AbortOptions,
|
|
18
|
+
import type { Logger, Connection, PeerId, Startable, AbortOptions, IncomingStreamData } from '@libp2p/interface'
|
|
13
19
|
import type { AddressType } from '@libp2p/interface-internal'
|
|
14
20
|
import type { PeerSet } from '@libp2p/peer-collections'
|
|
15
|
-
import type { Filter
|
|
21
|
+
import type { Filter } from '@libp2p/utils/filters'
|
|
22
|
+
import type { RepeatingTask } from '@libp2p/utils/repeating-task'
|
|
16
23
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
17
24
|
|
|
18
25
|
// if more than 3 peers manage to dial us on what we believe to be our external
|
|
@@ -129,8 +136,8 @@ export class AutoNATService implements Startable {
|
|
|
129
136
|
return
|
|
130
137
|
}
|
|
131
138
|
|
|
132
|
-
await this.components.registrar.handle(this.protocol, (
|
|
133
|
-
void this.handleIncomingAutonatStream(
|
|
139
|
+
await this.components.registrar.handle(this.protocol, (data) => {
|
|
140
|
+
void this.handleIncomingAutonatStream(data)
|
|
134
141
|
.catch(err => {
|
|
135
142
|
this.log.error('error handling incoming autonat stream - %e', err)
|
|
136
143
|
})
|
|
@@ -222,36 +229,36 @@ export class AutoNATService implements Startable {
|
|
|
222
229
|
/**
|
|
223
230
|
* Handle an incoming AutoNAT request
|
|
224
231
|
*/
|
|
225
|
-
async handleIncomingAutonatStream (
|
|
232
|
+
async handleIncomingAutonatStream (data: IncomingStreamData): Promise<void> {
|
|
226
233
|
const signal = AbortSignal.timeout(this.timeout)
|
|
227
234
|
setMaxListeners(Infinity, signal)
|
|
228
235
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
}).pb(Message)
|
|
236
|
+
const messages = pbStream(data.stream, {
|
|
237
|
+
maxDataLength: this.maxMessageSize
|
|
238
|
+
}).pb(Message)
|
|
233
239
|
|
|
240
|
+
try {
|
|
234
241
|
const request = await messages.read({
|
|
235
242
|
signal
|
|
236
243
|
})
|
|
237
|
-
const response = await this.handleAutonatMessage(request, connection, {
|
|
244
|
+
const response = await this.handleAutonatMessage(request, data.connection, {
|
|
238
245
|
signal
|
|
239
246
|
})
|
|
240
247
|
await messages.write(response, {
|
|
241
248
|
signal
|
|
242
249
|
})
|
|
243
|
-
await
|
|
250
|
+
await messages.unwrap().unwrap().close({
|
|
244
251
|
signal
|
|
245
252
|
})
|
|
246
253
|
} catch (err: any) {
|
|
247
254
|
this.log.error('error handling incoming autonat stream - %e', err)
|
|
248
|
-
stream.abort(err)
|
|
255
|
+
data.stream.abort(err)
|
|
249
256
|
}
|
|
250
257
|
}
|
|
251
258
|
|
|
252
259
|
private async handleAutonatMessage (message: Message, connection: Connection, options?: AbortOptions): Promise<Message> {
|
|
253
260
|
const ourHosts = this.components.addressManager.getAddresses()
|
|
254
|
-
.map(ma =>
|
|
261
|
+
.map(ma => ma.toOptions().host)
|
|
255
262
|
|
|
256
263
|
const dialRequest = message.dial
|
|
257
264
|
|
|
@@ -317,14 +324,14 @@ export class AutoNATService implements Startable {
|
|
|
317
324
|
.map(buf => multiaddr(buf))
|
|
318
325
|
.filter(ma => {
|
|
319
326
|
try {
|
|
320
|
-
const options =
|
|
327
|
+
const options = ma.toOptions()
|
|
321
328
|
|
|
322
329
|
if (isPrivate(ma)) {
|
|
323
330
|
// don't try to dial private addresses
|
|
324
331
|
return false
|
|
325
332
|
}
|
|
326
333
|
|
|
327
|
-
if (options.host !==
|
|
334
|
+
if (options.host !== connection.remoteAddr.toOptions().host) {
|
|
328
335
|
// skip any Multiaddrs where the target node's IP does not match the sending node's IP
|
|
329
336
|
this.log.trace('not dialing %a - target host did not match remote host %a', ma, connection.remoteAddr)
|
|
330
337
|
return false
|
|
@@ -349,7 +356,7 @@ export class AutoNATService implements Startable {
|
|
|
349
356
|
}
|
|
350
357
|
})
|
|
351
358
|
.map(ma => {
|
|
352
|
-
if (ma.
|
|
359
|
+
if (ma.getPeerId() == null) {
|
|
353
360
|
// make sure we have the PeerId as part of the Multiaddr
|
|
354
361
|
ma = ma.encapsulate(`/p2p/${peerId.toString()}`)
|
|
355
362
|
}
|
|
@@ -393,7 +400,7 @@ export class AutoNATService implements Startable {
|
|
|
393
400
|
type: Message.MessageType.DIAL_RESPONSE,
|
|
394
401
|
dialResponse: {
|
|
395
402
|
status: Message.ResponseStatus.OK,
|
|
396
|
-
addr: connection.remoteAddr.decapsulateCode(
|
|
403
|
+
addr: connection.remoteAddr.decapsulateCode(protocols('p2p').code).bytes
|
|
397
404
|
}
|
|
398
405
|
}
|
|
399
406
|
} catch (err: any) {
|
|
@@ -450,9 +457,9 @@ export class AutoNATService implements Startable {
|
|
|
450
457
|
return false
|
|
451
458
|
}
|
|
452
459
|
|
|
453
|
-
const options =
|
|
460
|
+
const options = addr.multiaddr.toOptions()
|
|
454
461
|
|
|
455
|
-
if (options.
|
|
462
|
+
if (options.family === 6) {
|
|
456
463
|
// do not send IPv6 addresses to peers without IPv6 addresses
|
|
457
464
|
if (!supportsIPv6) {
|
|
458
465
|
return false
|
|
@@ -571,7 +578,7 @@ export class AutoNATService implements Startable {
|
|
|
571
578
|
// if the remote peer has IPv6 addresses, we can probably send them an IPv6
|
|
572
579
|
// address to verify, otherwise only send them IPv4 addresses
|
|
573
580
|
const supportsIPv6 = peer.addresses.some(({ multiaddr }) => {
|
|
574
|
-
return
|
|
581
|
+
return multiaddr.toOptions().family === 6
|
|
575
582
|
})
|
|
576
583
|
|
|
577
584
|
// get multiaddrs this peer is eligible to verify
|
|
@@ -622,7 +629,7 @@ export class AutoNATService implements Startable {
|
|
|
622
629
|
const signal = AbortSignal.timeout(this.timeout)
|
|
623
630
|
setMaxListeners(Infinity, signal)
|
|
624
631
|
|
|
625
|
-
this.log.trace('asking %
|
|
632
|
+
this.log.trace('asking %p to verify multiaddr %s', connection.remotePeer, options.multiaddr)
|
|
626
633
|
|
|
627
634
|
const stream = await connection.newStream(this.protocol, {
|
|
628
635
|
signal
|
|
@@ -745,20 +752,14 @@ export class AutoNATService implements Startable {
|
|
|
745
752
|
|
|
746
753
|
private getNetworkSegment (ma: Multiaddr): string {
|
|
747
754
|
// make sure we use different network segments
|
|
748
|
-
const options =
|
|
755
|
+
const options = ma.toOptions()
|
|
749
756
|
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
return octets[0].padStart(3, '0')
|
|
754
|
-
}
|
|
755
|
-
case 'ip6': {
|
|
756
|
-
const octets = options.host.split(':')
|
|
757
|
-
return octets[0].padStart(4, '0')
|
|
758
|
-
}
|
|
759
|
-
default: {
|
|
760
|
-
throw new InvalidParametersError(`Remote address ${ma} was not an IPv4 or Ipv6 address`)
|
|
761
|
-
}
|
|
757
|
+
if (options.family === 4) {
|
|
758
|
+
const octets = options.host.split('.')
|
|
759
|
+
return octets[0].padStart(3, '0')
|
|
762
760
|
}
|
|
761
|
+
|
|
762
|
+
const octets = options.host.split(':')
|
|
763
|
+
return octets[0].padStart(4, '0')
|
|
763
764
|
}
|
|
764
765
|
}
|