@libp2p/kad-dht 15.0.2 → 15.1.0-aa25d38ab
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 +2 -15
- package/dist/index.min.js.map +7 -0
- package/dist/src/constants.d.ts +1 -1
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +1 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/content-fetching/index.d.ts +4 -4
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +40 -13
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +88 -38
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/index.d.ts +58 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts +3 -1
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +14 -10
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/message/dht.d.ts +1 -1
- package/dist/src/message/dht.d.ts.map +1 -1
- package/dist/src/message/dht.js +0 -5
- package/dist/src/message/dht.js.map +1 -1
- package/dist/src/network.d.ts +14 -8
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +17 -16
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-distance-list.d.ts +10 -3
- package/dist/src/peer-distance-list.d.ts.map +1 -1
- package/dist/src/peer-distance-list.js +13 -5
- package/dist/src/peer-distance-list.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts +10 -8
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +79 -49
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +4 -4
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +12 -12
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/events.d.ts +15 -3
- package/dist/src/query/events.d.ts.map +1 -1
- package/dist/src/query/events.js +9 -0
- package/dist/src/query/events.js.map +1 -1
- package/dist/src/query/manager.d.ts +3 -5
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +41 -16
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query/query-path.d.ts +10 -14
- package/dist/src/query/query-path.d.ts.map +1 -1
- package/dist/src/query/query-path.js +67 -53
- package/dist/src/query/query-path.js.map +1 -1
- package/dist/src/query/types.d.ts +6 -5
- package/dist/src/query/types.d.ts.map +1 -1
- package/dist/src/query-self.d.ts +2 -3
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +11 -14
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/routing-table/closest-peers.js +1 -1
- package/dist/src/routing-table/closest-peers.js.map +1 -1
- package/dist/src/routing-table/k-bucket.js +1 -1
- package/dist/src/routing-table/k-bucket.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +1 -1
- package/dist/src/rpc/handlers/get-providers.js.map +1 -1
- package/dist/src/rpc/index.d.ts +7 -7
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +1 -1
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/topology-listener.d.ts +2 -2
- package/dist/src/topology-listener.d.ts.map +1 -1
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +4 -0
- package/dist/src/utils.js.map +1 -1
- package/package.json +30 -39
- package/src/constants.ts +1 -1
- package/src/content-fetching/index.ts +41 -14
- package/src/content-routing/index.ts +93 -45
- package/src/index.ts +65 -6
- package/src/kad-dht.ts +14 -10
- package/src/message/dht.ts +2 -7
- package/src/network.ts +36 -22
- package/src/peer-distance-list.ts +19 -7
- package/src/peer-routing/index.ts +84 -53
- package/src/providers.ts +13 -13
- package/src/query/events.ts +27 -3
- package/src/query/manager.ts +48 -22
- package/src/query/query-path.ts +86 -76
- package/src/query/types.ts +7 -5
- package/src/query-self.ts +15 -17
- package/src/routing-table/closest-peers.ts +1 -1
- package/src/routing-table/k-bucket.ts +1 -1
- package/src/rpc/handlers/add-provider.ts +1 -1
- package/src/rpc/handlers/get-providers.ts +1 -1
- package/src/rpc/index.ts +12 -8
- package/src/topology-listener.ts +2 -2
- package/src/utils.ts +9 -0
- package/dist/typedoc-urls.json +0 -59
|
@@ -29,26 +29,34 @@ export class PeerDistanceList {
|
|
|
29
29
|
* The peers in the list, in order of distance from the origin key
|
|
30
30
|
*/
|
|
31
31
|
get peers() {
|
|
32
|
-
return this.peerDistances
|
|
32
|
+
return [...this.peerDistances];
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Add a peerId to the list.
|
|
36
36
|
*/
|
|
37
|
-
async add(peer) {
|
|
37
|
+
async add(peer, path = { index: -1, queued: 0, running: 0, total: 0 }) {
|
|
38
38
|
const dhtKey = await convertPeerId(peer.id);
|
|
39
|
-
this.addWithKadId(peer, dhtKey);
|
|
39
|
+
this.addWithKadId(peer, dhtKey, path);
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
42
|
* Add a peerId to the list.
|
|
43
43
|
*/
|
|
44
|
-
addWithKadId(peer, kadId) {
|
|
44
|
+
addWithKadId(peer, kadId, path = { index: -1, queued: 0, running: 0, total: 0 }) {
|
|
45
45
|
if (this.peerDistances.find(pd => pd.peer.id.equals(peer.id)) != null) {
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
48
|
const el = {
|
|
49
49
|
peer,
|
|
50
|
-
distance: uint8ArrayXor(this.originDhtKey, kadId)
|
|
50
|
+
distance: uint8ArrayXor(this.originDhtKey, kadId),
|
|
51
|
+
path
|
|
51
52
|
};
|
|
53
|
+
if (this.peerDistances.length === this.capacity) {
|
|
54
|
+
const lastPeer = this.peerDistances[this.peerDistances.length - 1];
|
|
55
|
+
// only add if it's closer than our furthest peer
|
|
56
|
+
if (lastPeer != null && uint8ArrayXorCompare(el.distance, lastPeer.distance) !== -1) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
52
60
|
let added = false;
|
|
53
61
|
for (let j = 0; j < this.peerDistances.length; j++) {
|
|
54
62
|
const distance = uint8ArrayXorCompare(this.peerDistances[j].distance, el.distance);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-distance-list.js","sourceRoot":"","sources":["../../src/peer-distance-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"peer-distance-list.js","sourceRoot":"","sources":["../../src/peer-distance-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import type { DHTRecord, FinalPeerEvent, QueryEvent, Validators } from '../index.js';
|
|
2
|
-
import type { Network } from '../network.js';
|
|
2
|
+
import type { Network, SendMessageOptions } from '../network.js';
|
|
3
3
|
import type { QueryManager, QueryOptions } from '../query/manager.js';
|
|
4
4
|
import type { RoutingTable } from '../routing-table/index.js';
|
|
5
5
|
import type { ComponentLogger, Metrics, PeerId, PeerInfo, PeerStore, RoutingOptions } from '@libp2p/interface';
|
|
6
|
+
import type { ConnectionManager } from '@libp2p/interface-internal';
|
|
6
7
|
export interface PeerRoutingComponents {
|
|
7
8
|
peerId: PeerId;
|
|
8
9
|
peerStore: PeerStore;
|
|
9
10
|
logger: ComponentLogger;
|
|
10
11
|
metrics?: Metrics;
|
|
12
|
+
connectionManager: ConnectionManager;
|
|
11
13
|
}
|
|
12
14
|
export interface PeerRoutingInit {
|
|
13
15
|
routingTable: RoutingTable;
|
|
@@ -22,8 +24,7 @@ export declare class PeerRouting {
|
|
|
22
24
|
private readonly network;
|
|
23
25
|
private readonly validators;
|
|
24
26
|
private readonly queryManager;
|
|
25
|
-
private readonly
|
|
26
|
-
private readonly peerId;
|
|
27
|
+
private readonly components;
|
|
27
28
|
constructor(components: PeerRoutingComponents, init: PeerRoutingInit);
|
|
28
29
|
/**
|
|
29
30
|
* Look if we are connected to a peer with the given id.
|
|
@@ -33,7 +34,7 @@ export declare class PeerRouting {
|
|
|
33
34
|
/**
|
|
34
35
|
* Get a value via rpc call for the given parameters
|
|
35
36
|
*/
|
|
36
|
-
_getValueSingle(peer: PeerId, key: Uint8Array, options
|
|
37
|
+
_getValueSingle(peer: PeerId, key: Uint8Array, options: SendMessageOptions): AsyncGenerator<QueryEvent>;
|
|
37
38
|
/**
|
|
38
39
|
* Get the public key directly from a node
|
|
39
40
|
*/
|
|
@@ -43,8 +44,8 @@ export declare class PeerRouting {
|
|
|
43
44
|
*/
|
|
44
45
|
findPeer(id: PeerId, options?: RoutingOptions): AsyncGenerator<FinalPeerEvent | QueryEvent>;
|
|
45
46
|
/**
|
|
46
|
-
* Kademlia 'FIND_NODE' operation on a key, which could be the bytes from
|
|
47
|
-
*
|
|
47
|
+
* Kademlia 'FIND_NODE' operation on a key, which could be the bytes from a
|
|
48
|
+
* multihash or a peer ID
|
|
48
49
|
*/
|
|
49
50
|
getClosestPeers(key: Uint8Array, options?: QueryOptions): AsyncGenerator<QueryEvent>;
|
|
50
51
|
/**
|
|
@@ -53,14 +54,15 @@ export declare class PeerRouting {
|
|
|
53
54
|
*
|
|
54
55
|
* Note: The peerStore is updated with new addresses found for the given peer.
|
|
55
56
|
*/
|
|
56
|
-
getValueOrPeers(peer: PeerId, key: Uint8Array, options
|
|
57
|
+
getValueOrPeers(peer: PeerId, key: Uint8Array, options: SendMessageOptions): AsyncGenerator<QueryEvent>;
|
|
57
58
|
/**
|
|
58
59
|
* Verify a record, fetching missing public keys from the network.
|
|
59
60
|
* Throws an error if the record is invalid.
|
|
60
61
|
*/
|
|
61
62
|
_verifyRecordOnline(record: DHTRecord): Promise<void>;
|
|
62
63
|
/**
|
|
63
|
-
* Get the
|
|
64
|
+
* Get the peers in our routing table that are closer than the passed PeerId
|
|
65
|
+
* to the passed key
|
|
64
66
|
*/
|
|
65
67
|
getCloserPeersOffline(key: Uint8Array, closerThan: PeerId): Promise<PeerInfo[]>;
|
|
66
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/peer-routing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/peer-routing/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEpF,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAU,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACtH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;gBAErC,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,eAAe;IAgBrE;;;OAGG;IACG,aAAa,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAsCjE;;OAEG;IACK,eAAe,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,GAAG,cAAc,CAAC,UAAU,CAAC;IAShH;;OAEG;IACK,oBAAoB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,CAAC;IAuCrG;;OAEG;IACK,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,cAAc,GAAG,UAAU,CAAC;IAuExG;;;OAGG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;IAqDjG;;;;;OAKG;IACK,eAAe,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,GAAG,cAAc,CAAC,UAAU,CAAC;IAyBhH;;;OAGG;IACG,mBAAmB,CAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D;;;OAGG;IACG,qBAAqB,CAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CA+CvF"}
|
|
@@ -3,7 +3,6 @@ import { InvalidPublicKeyError, NotFoundError } from '@libp2p/interface';
|
|
|
3
3
|
import { peerIdFromPublicKey, peerIdFromMultihash } from '@libp2p/peer-id';
|
|
4
4
|
import { Libp2pRecord } from '@libp2p/record';
|
|
5
5
|
import * as Digest from 'multiformats/hashes/digest';
|
|
6
|
-
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
7
6
|
import { xor as uint8ArrayXor } from 'uint8arrays/xor';
|
|
8
7
|
import { xorCompare as uint8ArrayXorCompare } from 'uint8arrays/xor-compare';
|
|
9
8
|
import { QueryError, InvalidRecordError } from '../errors.js';
|
|
@@ -18,15 +17,13 @@ export class PeerRouting {
|
|
|
18
17
|
network;
|
|
19
18
|
validators;
|
|
20
19
|
queryManager;
|
|
21
|
-
|
|
22
|
-
peerId;
|
|
20
|
+
components;
|
|
23
21
|
constructor(components, init) {
|
|
24
22
|
this.routingTable = init.routingTable;
|
|
25
23
|
this.network = init.network;
|
|
26
24
|
this.validators = init.validators;
|
|
27
25
|
this.queryManager = init.queryManager;
|
|
28
|
-
this.
|
|
29
|
-
this.peerId = components.peerId;
|
|
26
|
+
this.components = components;
|
|
30
27
|
this.log = components.logger.forComponent(`${init.logPrefix}:peer-routing`);
|
|
31
28
|
this.findPeer = components.metrics?.traceFunction('libp2p.kadDHT.findPeer', this.findPeer.bind(this), {
|
|
32
29
|
optionsIndex: 1
|
|
@@ -45,7 +42,7 @@ export class PeerRouting {
|
|
|
45
42
|
if (p != null) {
|
|
46
43
|
this.log('findPeerLocal found %p in routing table', peer);
|
|
47
44
|
try {
|
|
48
|
-
peerData = await this.peerStore.get(p);
|
|
45
|
+
peerData = await this.components.peerStore.get(p);
|
|
49
46
|
}
|
|
50
47
|
catch (err) {
|
|
51
48
|
if (err.name !== 'NotFoundError') {
|
|
@@ -55,7 +52,7 @@ export class PeerRouting {
|
|
|
55
52
|
}
|
|
56
53
|
if (peerData == null) {
|
|
57
54
|
try {
|
|
58
|
-
peerData = await this.peerStore.get(peer);
|
|
55
|
+
peerData = await this.components.peerStore.get(peer);
|
|
59
56
|
}
|
|
60
57
|
catch (err) {
|
|
61
58
|
if (err.name !== 'NotFoundError') {
|
|
@@ -75,7 +72,7 @@ export class PeerRouting {
|
|
|
75
72
|
/**
|
|
76
73
|
* Get a value via rpc call for the given parameters
|
|
77
74
|
*/
|
|
78
|
-
async *_getValueSingle(peer, key, options
|
|
75
|
+
async *_getValueSingle(peer, key, options) {
|
|
79
76
|
const msg = {
|
|
80
77
|
type: MessageType.GET_VALUE,
|
|
81
78
|
key
|
|
@@ -87,7 +84,16 @@ export class PeerRouting {
|
|
|
87
84
|
*/
|
|
88
85
|
async *getPublicKeyFromNode(peer, options = {}) {
|
|
89
86
|
const pkKey = keyForPublicKey(peer);
|
|
90
|
-
|
|
87
|
+
const path = {
|
|
88
|
+
index: -1,
|
|
89
|
+
queued: 0,
|
|
90
|
+
running: 0,
|
|
91
|
+
total: 0
|
|
92
|
+
};
|
|
93
|
+
for await (const event of this._getValueSingle(peer, pkKey, {
|
|
94
|
+
...options,
|
|
95
|
+
path
|
|
96
|
+
})) {
|
|
91
97
|
yield event;
|
|
92
98
|
if (event.name === 'PEER_RESPONSE' && event.record != null) {
|
|
93
99
|
const publicKey = publicKeyFromProtobuf(event.record.value);
|
|
@@ -101,7 +107,8 @@ export class PeerRouting {
|
|
|
101
107
|
}
|
|
102
108
|
yield valueEvent({
|
|
103
109
|
from: peer,
|
|
104
|
-
value: event.record.value
|
|
110
|
+
value: event.record.value,
|
|
111
|
+
path
|
|
105
112
|
}, options);
|
|
106
113
|
}
|
|
107
114
|
}
|
|
@@ -119,30 +126,41 @@ export class PeerRouting {
|
|
|
119
126
|
if (pi != null) {
|
|
120
127
|
this.log('found local');
|
|
121
128
|
yield finalPeerEvent({
|
|
122
|
-
from: this.peerId,
|
|
123
|
-
peer: pi
|
|
129
|
+
from: this.components.peerId,
|
|
130
|
+
peer: pi,
|
|
131
|
+
path: {
|
|
132
|
+
index: -1,
|
|
133
|
+
queued: 0,
|
|
134
|
+
running: 0,
|
|
135
|
+
total: 0
|
|
136
|
+
}
|
|
124
137
|
}, options);
|
|
125
138
|
return;
|
|
126
139
|
}
|
|
127
140
|
}
|
|
128
141
|
let foundPeer = false;
|
|
129
142
|
if (options.useNetwork !== false) {
|
|
130
|
-
const self = this;
|
|
131
|
-
const findPeerQuery = async function* ({ peer, signal }) {
|
|
143
|
+
const self = this;
|
|
144
|
+
const findPeerQuery = async function* ({ peer, signal, path }) {
|
|
132
145
|
const request = {
|
|
133
146
|
type: MessageType.FIND_NODE,
|
|
134
147
|
key: id.toMultihash().bytes
|
|
135
148
|
};
|
|
136
|
-
for await (const event of self.network.sendRequest(peer, request, {
|
|
149
|
+
for await (const event of self.network.sendRequest(peer.id, request, {
|
|
137
150
|
...options,
|
|
138
|
-
signal
|
|
151
|
+
signal,
|
|
152
|
+
path
|
|
139
153
|
})) {
|
|
140
154
|
yield event;
|
|
141
155
|
if (event.name === 'PEER_RESPONSE') {
|
|
142
156
|
const match = event.closer.find((p) => p.id.equals(id));
|
|
143
157
|
// found the peer
|
|
144
158
|
if (match != null) {
|
|
145
|
-
yield finalPeerEvent({
|
|
159
|
+
yield finalPeerEvent({
|
|
160
|
+
from: event.from,
|
|
161
|
+
peer: match,
|
|
162
|
+
path: event.path
|
|
163
|
+
}, options);
|
|
146
164
|
}
|
|
147
165
|
}
|
|
148
166
|
}
|
|
@@ -155,45 +173,56 @@ export class PeerRouting {
|
|
|
155
173
|
}
|
|
156
174
|
}
|
|
157
175
|
if (!foundPeer) {
|
|
158
|
-
|
|
176
|
+
throw new NotFoundError('Not found');
|
|
159
177
|
}
|
|
160
178
|
}
|
|
161
179
|
/**
|
|
162
|
-
* Kademlia 'FIND_NODE' operation on a key, which could be the bytes from
|
|
163
|
-
*
|
|
180
|
+
* Kademlia 'FIND_NODE' operation on a key, which could be the bytes from a
|
|
181
|
+
* multihash or a peer ID
|
|
164
182
|
*/
|
|
165
183
|
async *getClosestPeers(key, options = {}) {
|
|
166
184
|
this.log('getClosestPeers to %b', key);
|
|
167
185
|
const kadId = await convertBuffer(key);
|
|
168
|
-
const tablePeers = this.routingTable.closestPeers(kadId);
|
|
169
|
-
const self = this; // eslint-disable-line @typescript-eslint/no-this-alias
|
|
170
186
|
const peers = new PeerDistanceList(kadId, this.routingTable.kBucketSize);
|
|
171
|
-
|
|
172
|
-
const getCloserPeersQuery = async function* ({ peer, signal }) {
|
|
173
|
-
self.log('
|
|
187
|
+
const self = this;
|
|
188
|
+
const getCloserPeersQuery = async function* ({ peer, path, peerKadId, signal }) {
|
|
189
|
+
self.log('getClosestPeers asking %p', peer);
|
|
174
190
|
const request = {
|
|
175
191
|
type: MessageType.FIND_NODE,
|
|
176
192
|
key
|
|
177
193
|
};
|
|
178
|
-
yield* self.network.sendRequest(peer, request, {
|
|
194
|
+
yield* self.network.sendRequest(peer.id, request, {
|
|
179
195
|
...options,
|
|
180
|
-
signal
|
|
196
|
+
signal,
|
|
197
|
+
path
|
|
181
198
|
});
|
|
199
|
+
// add the peer to the list if we've managed to contact it successfully
|
|
200
|
+
peers.addWithKadId(peer, peerKadId, path);
|
|
182
201
|
};
|
|
183
|
-
|
|
184
|
-
if (event.name === 'PEER_RESPONSE') {
|
|
185
|
-
await Promise.all(event.closer.map(async (peerData) => {
|
|
186
|
-
await peers.add(peerData);
|
|
187
|
-
}));
|
|
188
|
-
}
|
|
189
|
-
yield event;
|
|
190
|
-
}
|
|
202
|
+
yield* this.queryManager.run(key, getCloserPeersQuery, options);
|
|
191
203
|
this.log('found %d peers close to %b', peers.length, key);
|
|
192
|
-
for (
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
204
|
+
for (let { peer, path } of peers.peers) {
|
|
205
|
+
try {
|
|
206
|
+
if (peer.multiaddrs.length === 0) {
|
|
207
|
+
peer = await self.components.peerStore.getInfo(peer.id);
|
|
208
|
+
}
|
|
209
|
+
if (peer.multiaddrs.length === 0) {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
yield finalPeerEvent({
|
|
213
|
+
from: this.components.peerId,
|
|
214
|
+
peer: await self.components.peerStore.getInfo(peer.id),
|
|
215
|
+
path: {
|
|
216
|
+
index: path.index,
|
|
217
|
+
queued: 0,
|
|
218
|
+
running: 0,
|
|
219
|
+
total: 0
|
|
220
|
+
}
|
|
221
|
+
}, options);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
197
226
|
}
|
|
198
227
|
}
|
|
199
228
|
/**
|
|
@@ -202,7 +231,7 @@ export class PeerRouting {
|
|
|
202
231
|
*
|
|
203
232
|
* Note: The peerStore is updated with new addresses found for the given peer.
|
|
204
233
|
*/
|
|
205
|
-
async *getValueOrPeers(peer, key, options
|
|
234
|
+
async *getValueOrPeers(peer, key, options) {
|
|
206
235
|
for await (const event of this._getValueSingle(peer, key, options)) {
|
|
207
236
|
if (event.name === 'PEER_RESPONSE') {
|
|
208
237
|
if (event.record != null) {
|
|
@@ -213,7 +242,11 @@ export class PeerRouting {
|
|
|
213
242
|
catch (err) {
|
|
214
243
|
const errMsg = 'invalid record received, discarded';
|
|
215
244
|
this.log(errMsg);
|
|
216
|
-
yield queryErrorEvent({
|
|
245
|
+
yield queryErrorEvent({
|
|
246
|
+
from: event.from,
|
|
247
|
+
error: new QueryError(errMsg),
|
|
248
|
+
path: options.path
|
|
249
|
+
}, options);
|
|
217
250
|
continue;
|
|
218
251
|
}
|
|
219
252
|
}
|
|
@@ -232,7 +265,8 @@ export class PeerRouting {
|
|
|
232
265
|
await verifyRecord(this.validators, new Libp2pRecord(record.key, record.value, record.timeReceived));
|
|
233
266
|
}
|
|
234
267
|
/**
|
|
235
|
-
* Get the
|
|
268
|
+
* Get the peers in our routing table that are closer than the passed PeerId
|
|
269
|
+
* to the passed key
|
|
236
270
|
*/
|
|
237
271
|
async getCloserPeersOffline(key, closerThan) {
|
|
238
272
|
const output = [];
|
|
@@ -240,7 +274,7 @@ export class PeerRouting {
|
|
|
240
274
|
try {
|
|
241
275
|
const multihash = Digest.decode(key);
|
|
242
276
|
const targetPeerId = peerIdFromMultihash(multihash);
|
|
243
|
-
const peer = await this.peerStore.get(targetPeerId);
|
|
277
|
+
const peer = await this.components.peerStore.get(targetPeerId);
|
|
244
278
|
output.push({
|
|
245
279
|
id: peer.id,
|
|
246
280
|
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
@@ -259,11 +293,7 @@ export class PeerRouting {
|
|
|
259
293
|
continue;
|
|
260
294
|
}
|
|
261
295
|
try {
|
|
262
|
-
|
|
263
|
-
output.push({
|
|
264
|
-
id: peerId,
|
|
265
|
-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
266
|
-
});
|
|
296
|
+
output.push(await this.components.peerStore.getInfo(peerId));
|
|
267
297
|
}
|
|
268
298
|
catch (err) {
|
|
269
299
|
if (err.name !== 'NotFoundError') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/peer-routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/peer-routing/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/providers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComponentLogger, Metrics, PeerId } from '@libp2p/interface';
|
|
1
|
+
import type { AbortOptions, ComponentLogger, Metrics, PeerId } from '@libp2p/interface';
|
|
2
2
|
import type { Datastore } from 'interface-datastore';
|
|
3
3
|
import type { Mortice } from 'mortice';
|
|
4
4
|
import type { CID } from 'multiformats';
|
|
@@ -24,15 +24,15 @@ export declare class Providers {
|
|
|
24
24
|
/**
|
|
25
25
|
* Add a new provider for the given CID
|
|
26
26
|
*/
|
|
27
|
-
addProvider(cid: CID, provider: PeerId): Promise<void>;
|
|
27
|
+
addProvider(cid: CID, provider: PeerId, options?: AbortOptions): Promise<void>;
|
|
28
28
|
/**
|
|
29
29
|
* Remove a provider for the given CID
|
|
30
30
|
*/
|
|
31
|
-
removeProvider(cid: CID, provider: PeerId): Promise<void>;
|
|
31
|
+
removeProvider(cid: CID, provider: PeerId, options?: AbortOptions): Promise<void>;
|
|
32
32
|
/**
|
|
33
33
|
* Get a list of providers for the given CID
|
|
34
34
|
*/
|
|
35
|
-
getProviders(cid: CID): Promise<PeerId[]>;
|
|
35
|
+
getProviders(cid: CID, options?: AbortOptions): Promise<PeerId[]>;
|
|
36
36
|
/**
|
|
37
37
|
* Write a provider into the given store
|
|
38
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAU,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAU,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAEjB,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa;IAOjE;;OAEG;IACG,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrF;;OAEG;IACG,cAAc,CAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxF;;OAEG;IACG,YAAY,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcxE;;OAEG;YACW,kBAAkB;IAOhC;;OAEG;YACW,aAAa;CAW5B"}
|
package/dist/src/providers.js
CHANGED
|
@@ -18,10 +18,10 @@ export class Providers {
|
|
|
18
18
|
/**
|
|
19
19
|
* Add a new provider for the given CID
|
|
20
20
|
*/
|
|
21
|
-
async addProvider(cid, provider) {
|
|
21
|
+
async addProvider(cid, provider, options) {
|
|
22
22
|
const release = await this.lock.readLock();
|
|
23
23
|
try {
|
|
24
|
-
this.log('%p provides %s', provider, cid);
|
|
24
|
+
this.log.trace('%p provides %s', provider, cid);
|
|
25
25
|
await this.writeProviderEntry(cid, provider);
|
|
26
26
|
}
|
|
27
27
|
finally {
|
|
@@ -31,11 +31,11 @@ export class Providers {
|
|
|
31
31
|
/**
|
|
32
32
|
* Remove a provider for the given CID
|
|
33
33
|
*/
|
|
34
|
-
async removeProvider(cid, provider) {
|
|
34
|
+
async removeProvider(cid, provider, options) {
|
|
35
35
|
const release = await this.lock.writeLock();
|
|
36
36
|
try {
|
|
37
37
|
const key = toProviderKey(this.datastorePrefix, cid, provider);
|
|
38
|
-
this.log('%p no longer provides %s', provider, cid);
|
|
38
|
+
this.log.trace('%p no longer provides %s', provider, cid);
|
|
39
39
|
await this.datastore.delete(key);
|
|
40
40
|
}
|
|
41
41
|
finally {
|
|
@@ -45,12 +45,12 @@ export class Providers {
|
|
|
45
45
|
/**
|
|
46
46
|
* Get a list of providers for the given CID
|
|
47
47
|
*/
|
|
48
|
-
async getProviders(cid) {
|
|
48
|
+
async getProviders(cid, options) {
|
|
49
49
|
const release = await this.lock.readLock();
|
|
50
50
|
try {
|
|
51
|
-
this.log('get providers for %c', cid);
|
|
52
|
-
const provs = await this.loadProviders(cid);
|
|
53
|
-
this.log('got %d providers for %c', provs.size, cid);
|
|
51
|
+
this.log.trace('get providers for %c', cid);
|
|
52
|
+
const provs = await this.loadProviders(cid, options);
|
|
53
|
+
this.log.trace('got %d providers for %c', provs.size, cid);
|
|
54
54
|
return [...provs.keys()];
|
|
55
55
|
}
|
|
56
56
|
finally {
|
|
@@ -60,18 +60,18 @@ export class Providers {
|
|
|
60
60
|
/**
|
|
61
61
|
* Write a provider into the given store
|
|
62
62
|
*/
|
|
63
|
-
async writeProviderEntry(cid, peerId, time = new Date()) {
|
|
63
|
+
async writeProviderEntry(cid, peerId, time = new Date(), options) {
|
|
64
64
|
const key = toProviderKey(this.datastorePrefix, cid, peerId);
|
|
65
65
|
const buffer = varint.encode(time.getTime());
|
|
66
|
-
await this.datastore.put(key, buffer);
|
|
66
|
+
await this.datastore.put(key, buffer, options);
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* Load providers for the given CID from the store
|
|
70
70
|
*/
|
|
71
|
-
async loadProviders(cid) {
|
|
71
|
+
async loadProviders(cid, options) {
|
|
72
72
|
const providers = new PeerMap();
|
|
73
73
|
const key = toProviderKey(this.datastorePrefix, cid);
|
|
74
|
-
for await (const entry of this.datastore.query({ prefix: key.toString() })) {
|
|
74
|
+
for await (const entry of this.datastore.query({ prefix: key.toString() }, options)) {
|
|
75
75
|
const { peerId } = parseProviderKey(entry.key);
|
|
76
76
|
providers.set(peerId, readProviderTime(entry.value));
|
|
77
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAkB9E;;GAEG;AACH,MAAM,OAAO,SAAS;IACH,GAAG,CAAQ;IACX,SAAS,CAAW;IACpB,eAAe,CAAQ;IACvB,IAAI,CAAS;IAE9B,YAAa,UAA+B,EAAE,IAAmB;QAC/D,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,YAAY,CAAC,CAAA;QACxE,IAAI,CAAC,eAAe,GAAG,GAAG,IAAI,CAAC,eAAe,WAAW,CAAA;QACzD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAE,GAAQ,EAAE,QAAgB;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import type { MessageType, SendQueryEvent, PeerResponseEvent,
|
|
1
|
+
import type { MessageType, SendQueryEvent, PeerResponseEvent, AddPeerEvent, ValueEvent, ProviderEvent, QueryErrorEvent, FinalPeerEvent, DisjointPath, PathEndedEvent, DialPeerEvent } from '../index.js';
|
|
2
2
|
import type { PeerId, PeerInfo } from '@libp2p/interface';
|
|
3
3
|
import type { Libp2pRecord } from '@libp2p/record';
|
|
4
4
|
import type { ProgressOptions } from 'progress-events';
|
|
5
5
|
export interface QueryEventFields {
|
|
6
6
|
to: PeerId;
|
|
7
7
|
type: MessageType;
|
|
8
|
+
path: DisjointPath;
|
|
8
9
|
}
|
|
9
10
|
export declare function sendQueryEvent(fields: QueryEventFields, options?: ProgressOptions): SendQueryEvent;
|
|
10
11
|
export interface PeerResponseEventFields {
|
|
11
12
|
from: PeerId;
|
|
12
13
|
messageType: MessageType;
|
|
14
|
+
path: DisjointPath;
|
|
13
15
|
closer?: PeerInfo[];
|
|
14
16
|
providers?: PeerInfo[];
|
|
15
17
|
record?: Libp2pRecord;
|
|
@@ -18,29 +20,39 @@ export declare function peerResponseEvent(fields: PeerResponseEventFields, optio
|
|
|
18
20
|
export interface FinalPeerEventFields {
|
|
19
21
|
from: PeerId;
|
|
20
22
|
peer: PeerInfo;
|
|
23
|
+
path: DisjointPath;
|
|
21
24
|
}
|
|
22
25
|
export declare function finalPeerEvent(fields: FinalPeerEventFields, options?: ProgressOptions): FinalPeerEvent;
|
|
23
26
|
export interface ErrorEventFields {
|
|
24
27
|
from: PeerId;
|
|
25
28
|
error: Error;
|
|
29
|
+
path: DisjointPath;
|
|
26
30
|
}
|
|
27
31
|
export declare function queryErrorEvent(fields: ErrorEventFields, options?: ProgressOptions): QueryErrorEvent;
|
|
28
32
|
export interface ProviderEventFields {
|
|
29
33
|
from: PeerId;
|
|
30
34
|
providers: PeerInfo[];
|
|
35
|
+
path: DisjointPath;
|
|
31
36
|
}
|
|
32
37
|
export declare function providerEvent(fields: ProviderEventFields, options?: ProgressOptions): ProviderEvent;
|
|
33
38
|
export interface ValueEventFields {
|
|
34
39
|
from: PeerId;
|
|
35
40
|
value: Uint8Array;
|
|
41
|
+
path: DisjointPath;
|
|
36
42
|
}
|
|
37
43
|
export declare function valueEvent(fields: ValueEventFields, options?: ProgressOptions): ValueEvent;
|
|
38
|
-
export interface
|
|
44
|
+
export interface AddPeerEventFields {
|
|
39
45
|
peer: PeerId;
|
|
46
|
+
path: DisjointPath;
|
|
40
47
|
}
|
|
41
|
-
export declare function addPeerEvent(fields:
|
|
48
|
+
export declare function addPeerEvent(fields: AddPeerEventFields, options?: ProgressOptions): AddPeerEvent;
|
|
42
49
|
export interface DialPeerEventFields {
|
|
43
50
|
peer: PeerId;
|
|
51
|
+
path: DisjointPath;
|
|
44
52
|
}
|
|
45
53
|
export declare function dialPeerEvent(fields: DialPeerEventFields, options?: ProgressOptions): DialPeerEvent;
|
|
54
|
+
export interface PathEndedEventFields {
|
|
55
|
+
path: DisjointPath;
|
|
56
|
+
}
|
|
57
|
+
export declare function pathEndedEvent(fields: PathEndedEventFields, options?: ProgressOptions): PathEndedEvent;
|
|
46
58
|
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/query/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/query/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACxM,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CAYvG;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,WAAW,CAAA;IACxB,IAAI,EAAE,YAAY,CAAA;IAClB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;IACnB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,wBAAgB,iBAAiB,CAAE,MAAM,EAAE,uBAAuB,EAAE,OAAO,GAAE,eAAoB,GAAG,iBAAiB,CAapH;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CAU3G;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,wBAAgB,eAAe,CAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAE,eAAoB,GAAG,eAAe,CAUzG;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,GAAE,eAAoB,GAAG,aAAa,CAUxG;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAE,eAAoB,GAAG,UAAU,CAU/F;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,CAUrG;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,GAAE,eAAoB,GAAG,aAAa,CAUxG;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CAU3G"}
|