cojson 0.13.5 → 0.13.10

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.
Files changed (88) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +16 -0
  3. package/LICENSE.txt +1 -1
  4. package/dist/PeerState.d.ts +6 -0
  5. package/dist/PeerState.d.ts.map +1 -1
  6. package/dist/PeerState.js +43 -0
  7. package/dist/PeerState.js.map +1 -1
  8. package/dist/coValueCore.d.ts +3 -1
  9. package/dist/coValueCore.d.ts.map +1 -1
  10. package/dist/coValueCore.js +26 -8
  11. package/dist/coValueCore.js.map +1 -1
  12. package/dist/coValueState.d.ts +1 -0
  13. package/dist/coValueState.d.ts.map +1 -1
  14. package/dist/coValueState.js +27 -2
  15. package/dist/coValueState.js.map +1 -1
  16. package/dist/coValues/group.d.ts +1 -0
  17. package/dist/coValues/group.d.ts.map +1 -1
  18. package/dist/coValues/group.js +45 -21
  19. package/dist/coValues/group.js.map +1 -1
  20. package/dist/crypto/crypto.d.ts +2 -2
  21. package/dist/crypto/crypto.d.ts.map +1 -1
  22. package/dist/permissions.d.ts +1 -0
  23. package/dist/permissions.d.ts.map +1 -1
  24. package/dist/permissions.js +19 -3
  25. package/dist/permissions.js.map +1 -1
  26. package/dist/storage/FileSystem.d.ts +2 -2
  27. package/dist/storage/FileSystem.d.ts.map +1 -1
  28. package/dist/sync.d.ts +14 -4
  29. package/dist/sync.d.ts.map +1 -1
  30. package/dist/sync.js +146 -146
  31. package/dist/sync.js.map +1 -1
  32. package/dist/tests/SyncStateManager.test.js +51 -46
  33. package/dist/tests/SyncStateManager.test.js.map +1 -1
  34. package/dist/tests/coValueCore.test.js +66 -4
  35. package/dist/tests/coValueCore.test.js.map +1 -1
  36. package/dist/tests/coValueState.test.js +31 -4
  37. package/dist/tests/coValueState.test.js.map +1 -1
  38. package/dist/tests/group.test.js +135 -2
  39. package/dist/tests/group.test.js.map +1 -1
  40. package/dist/tests/messagesTestUtils.d.ts +13 -0
  41. package/dist/tests/messagesTestUtils.d.ts.map +1 -0
  42. package/dist/tests/messagesTestUtils.js +42 -0
  43. package/dist/tests/messagesTestUtils.js.map +1 -0
  44. package/dist/tests/sync.load.test.d.ts +2 -0
  45. package/dist/tests/sync.load.test.d.ts.map +1 -0
  46. package/dist/tests/sync.load.test.js +249 -0
  47. package/dist/tests/sync.load.test.js.map +1 -0
  48. package/dist/tests/sync.mesh.test.d.ts +2 -0
  49. package/dist/tests/sync.mesh.test.d.ts.map +1 -0
  50. package/dist/tests/sync.mesh.test.js +157 -0
  51. package/dist/tests/sync.mesh.test.js.map +1 -0
  52. package/dist/tests/sync.peerReconciliation.test.d.ts +2 -0
  53. package/dist/tests/sync.peerReconciliation.test.d.ts.map +1 -0
  54. package/dist/tests/sync.peerReconciliation.test.js +166 -0
  55. package/dist/tests/sync.peerReconciliation.test.js.map +1 -0
  56. package/dist/tests/sync.storage.test.d.ts +2 -0
  57. package/dist/tests/sync.storage.test.d.ts.map +1 -0
  58. package/dist/tests/sync.storage.test.js +201 -0
  59. package/dist/tests/sync.storage.test.js.map +1 -0
  60. package/dist/tests/sync.test.js +139 -1048
  61. package/dist/tests/sync.test.js.map +1 -1
  62. package/dist/tests/sync.upload.test.d.ts +2 -0
  63. package/dist/tests/sync.upload.test.d.ts.map +1 -0
  64. package/dist/tests/sync.upload.test.js +156 -0
  65. package/dist/tests/sync.upload.test.js.map +1 -0
  66. package/dist/tests/testUtils.d.ts +76 -33
  67. package/dist/tests/testUtils.d.ts.map +1 -1
  68. package/dist/tests/testUtils.js +154 -47
  69. package/dist/tests/testUtils.js.map +1 -1
  70. package/package.json +2 -2
  71. package/src/PeerState.ts +59 -1
  72. package/src/coValueCore.ts +37 -7
  73. package/src/coValueState.ts +34 -3
  74. package/src/coValues/group.ts +83 -45
  75. package/src/permissions.ts +31 -3
  76. package/src/sync.ts +169 -185
  77. package/src/tests/SyncStateManager.test.ts +58 -70
  78. package/src/tests/coValueCore.test.ts +90 -3
  79. package/src/tests/coValueState.test.ts +59 -5
  80. package/src/tests/group.test.ts +250 -2
  81. package/src/tests/messagesTestUtils.ts +75 -0
  82. package/src/tests/sync.load.test.ts +327 -0
  83. package/src/tests/sync.mesh.test.ts +219 -0
  84. package/src/tests/sync.peerReconciliation.test.ts +251 -0
  85. package/src/tests/sync.storage.test.ts +259 -0
  86. package/src/tests/sync.test.ts +170 -1245
  87. package/src/tests/sync.upload.test.ts +202 -0
  88. package/src/tests/testUtils.ts +215 -61
package/dist/sync.js CHANGED
@@ -36,8 +36,16 @@ export class SyncManager {
36
36
  valueType: ValueType.INT,
37
37
  unit: "peer",
38
38
  });
39
+ this.nextPeer = new Map();
39
40
  this.local = local;
40
41
  this.syncState = new SyncStateManager(this);
42
+ this.transactionsSizeHistogram = metrics
43
+ .getMeter("cojson")
44
+ .createHistogram("jazz.transactions.size", {
45
+ description: "The size of transactions in a covalue",
46
+ unit: "bytes",
47
+ valueType: ValueType.INT,
48
+ });
41
49
  }
42
50
  peersInPriorityOrder() {
43
51
  return Object.values(this.peers).sort((a, b) => {
@@ -50,7 +58,9 @@ export class SyncManager {
50
58
  return Object.values(this.peers);
51
59
  }
52
60
  getServerAndStoragePeers(excludePeerId) {
53
- return this.peersInPriorityOrder().filter((peer) => peer.isServerOrStoragePeer() && peer.id !== excludePeerId);
61
+ return this.peersInPriorityOrder().filter((peer) => peer.isServerOrStoragePeer() &&
62
+ peer.id !== excludePeerId &&
63
+ !peer.closed);
54
64
  }
55
65
  async handleSyncMessage(msg, peer) {
56
66
  if (peer.erroredCoValues.has(msg.id)) {
@@ -89,37 +99,28 @@ export class SyncManager {
89
99
  throw new Error(`Unknown message type ${msg.action}`);
90
100
  }
91
101
  }
92
- async subscribeToIncludingDependencies(id, peer) {
93
- const entry = this.local.coValuesStore.get(id);
94
- if (entry.state.type !== "available") {
95
- entry.loadFromPeers([peer]).catch((e) => {
96
- logger.error("Error sending load", { err: e });
97
- });
98
- return;
99
- }
100
- const coValue = entry.state.coValue;
101
- for (const id of coValue.getDependedOnCoValues()) {
102
- await this.subscribeToIncludingDependencies(id, peer);
103
- }
104
- if (!peer.toldKnownState.has(id)) {
105
- peer.toldKnownState.add(id);
106
- this.trySendToPeer(peer, {
107
- action: "load",
108
- ...coValue.knownState(),
109
- }).catch((e) => {
110
- logger.error("Error sending load", { err: e });
111
- });
112
- }
113
- }
114
- async tellUntoldKnownStateIncludingDependencies(id, peer, asDependencyOf) {
102
+ async sendNewContentIncludingDependencies(id, peer) {
115
103
  const coValue = this.local.expectCoValueLoaded(id);
116
104
  await Promise.all(coValue
117
105
  .getDependedOnCoValues()
118
- .map((dependentCoID) => this.tellUntoldKnownStateIncludingDependencies(dependentCoID, peer, asDependencyOf || id)));
119
- if (!peer.toldKnownState.has(id)) {
106
+ .map((id) => this.sendNewContentIncludingDependencies(id, peer)));
107
+ const newContentPieces = coValue.newContentSince(peer.optimisticKnownStates.get(id));
108
+ if (newContentPieces) {
109
+ for (const piece of newContentPieces) {
110
+ this.trySendToPeer(peer, piece).catch((e) => {
111
+ logger.error("Error sending content piece", { err: e });
112
+ });
113
+ }
114
+ peer.toldKnownState.add(id);
115
+ peer.optimisticKnownStates.dispatch({
116
+ type: "COMBINE_WITH",
117
+ id: id,
118
+ value: coValue.knownState(),
119
+ });
120
+ }
121
+ else if (!peer.toldKnownState.has(id)) {
120
122
  this.trySendToPeer(peer, {
121
123
  action: "known",
122
- asDependencyOf,
123
124
  ...coValue.knownState(),
124
125
  }).catch((e) => {
125
126
  logger.error("Error sending known state", { err: e });
@@ -127,88 +128,93 @@ export class SyncManager {
127
128
  peer.toldKnownState.add(id);
128
129
  }
129
130
  }
130
- async sendNewContentIncludingDependencies(id, peer) {
131
- const coValue = this.local.expectCoValueLoaded(id);
132
- await Promise.all(coValue
133
- .getDependedOnCoValues()
134
- .map((id) => this.sendNewContentIncludingDependencies(id, peer)));
135
- const newContentPieces = coValue.newContentSince(peer.optimisticKnownStates.get(id));
136
- if (newContentPieces) {
137
- const optimisticKnownStateBefore = peer.optimisticKnownStates.get(id) || emptyKnownState(id);
138
- const sendPieces = async () => {
139
- let lastYield = performance.now();
140
- for (const [_i, piece] of newContentPieces.entries()) {
141
- this.trySendToPeer(peer, piece).catch((e) => {
142
- logger.error("Error sending content piece", { err: e });
143
- });
144
- if (performance.now() - lastYield > 10) {
145
- await new Promise((resolve) => {
146
- setTimeout(resolve, 0);
131
+ async startPeerReconciliation(peer) {
132
+ const coValuesOrderedByDependency = [];
133
+ const gathered = new Set();
134
+ const buildOrderedCoValueList = (coValue) => {
135
+ if (gathered.has(coValue.id)) {
136
+ return;
137
+ }
138
+ gathered.add(coValue.id);
139
+ for (const id of coValue.getDependedOnCoValues()) {
140
+ const entry = this.local.coValuesStore.get(id);
141
+ if (entry.state.type === "available") {
142
+ buildOrderedCoValueList(entry.state.coValue);
143
+ }
144
+ }
145
+ coValuesOrderedByDependency.push(coValue);
146
+ };
147
+ for (const entry of this.local.coValuesStore.getValues()) {
148
+ switch (entry.state.type) {
149
+ case "unavailable":
150
+ // If the coValue is unavailable and we never tried this peer
151
+ // we try to load it from the peer
152
+ if (!peer.toldKnownState.has(entry.id)) {
153
+ await entry.loadFromPeers([peer]).catch((e) => {
154
+ logger.error("Error sending load", { err: e });
147
155
  });
148
- lastYield = performance.now();
149
156
  }
150
- }
151
- };
152
- sendPieces().catch((e) => {
153
- logger.error("Error sending new content piece, retrying", { err: e });
157
+ break;
158
+ case "available":
159
+ const coValue = entry.state.coValue;
160
+ // Build the list of coValues ordered by dependency
161
+ // so we can send the load message in the correct order
162
+ buildOrderedCoValueList(coValue);
163
+ break;
164
+ }
165
+ // Fill the missing known states with empty known states
166
+ if (!peer.optimisticKnownStates.has(entry.id)) {
154
167
  peer.optimisticKnownStates.dispatch({
155
- type: "SET",
156
- id,
157
- value: optimisticKnownStateBefore ?? emptyKnownState(id),
168
+ type: "SET_AS_EMPTY",
169
+ id: entry.id,
158
170
  });
159
- return this.sendNewContentIncludingDependencies(id, peer);
160
- });
161
- peer.optimisticKnownStates.dispatch({
162
- type: "COMBINE_WITH",
163
- id,
164
- value: coValue.knownState(),
171
+ }
172
+ }
173
+ for (const coValue of coValuesOrderedByDependency) {
174
+ /**
175
+ * We send the load messages to:
176
+ * - Subscribe to the coValue updates
177
+ * - Start the sync process in case we or the other peer
178
+ * lacks some transactions
179
+ */
180
+ peer.toldKnownState.add(coValue.id);
181
+ this.trySendToPeer(peer, {
182
+ action: "load",
183
+ ...coValue.knownState(),
184
+ }).catch((e) => {
185
+ logger.error("Error sending load", { err: e });
165
186
  });
166
187
  }
167
188
  }
168
- addPeer(peer) {
189
+ async addPeer(peer) {
169
190
  const prevPeer = this.peers[peer.id];
191
+ if (prevPeer) {
192
+ // Assign to nextPeer to check against race conditions
193
+ prevPeer.nextPeer = peer;
194
+ if (!prevPeer.closed) {
195
+ prevPeer.gracefulShutdown();
196
+ }
197
+ // Wait for the previous peer to finish processing the incoming messages
198
+ await prevPeer.incomingMessagesProcessingPromise?.catch((e) => { });
199
+ // If another peer was added in the meantime, we close this peer
200
+ if (prevPeer.nextPeer !== peer) {
201
+ peer.outgoing.close();
202
+ return;
203
+ }
204
+ }
170
205
  const peerState = new PeerState(peer, prevPeer?.knownStates);
171
206
  this.peers[peer.id] = peerState;
172
- if (prevPeer && !prevPeer.closed) {
173
- prevPeer.gracefulShutdown();
174
- }
175
207
  this.peersCounter.add(1, { role: peer.role });
176
208
  const unsubscribeFromKnownStatesUpdates = peerState.knownStates.subscribe((id) => {
177
209
  this.syncState.triggerUpdate(peer.id, id);
178
210
  });
179
211
  if (peerState.isServerOrStoragePeer()) {
180
- const initialSync = async () => {
181
- for (const entry of this.local.coValuesStore.getValues()) {
182
- await this.subscribeToIncludingDependencies(entry.id, peerState);
183
- if (entry.state.type === "available") {
184
- await this.sendNewContentIncludingDependencies(entry.id, peerState);
185
- }
186
- if (!peerState.optimisticKnownStates.has(entry.id)) {
187
- peerState.optimisticKnownStates.dispatch({
188
- type: "SET_AS_EMPTY",
189
- id: entry.id,
190
- });
191
- }
192
- }
193
- };
194
- void initialSync();
212
+ void this.startPeerReconciliation(peerState);
195
213
  }
196
- const processMessages = async () => {
197
- for await (const msg of peerState.incoming) {
198
- if (msg === "Disconnected") {
199
- return;
200
- }
201
- if (msg === "PingTimeout") {
202
- logger.error("Ping timeout from peer", {
203
- peerId: peer.id,
204
- peerRole: peer.role,
205
- });
206
- return;
207
- }
208
- await this.handleSyncMessage(msg, peerState);
209
- }
210
- };
211
- processMessages()
214
+ peerState
215
+ .processIncomingMessages(async (msg) => {
216
+ await this.handleSyncMessage(msg, peerState);
217
+ })
212
218
  .then(() => {
213
219
  if (peer.crashOnClose) {
214
220
  logger.error("Unexepcted close from peer", {
@@ -231,11 +237,10 @@ export class SyncManager {
231
237
  }
232
238
  })
233
239
  .finally(() => {
234
- const state = this.peers[peer.id];
235
- state?.gracefulShutdown();
240
+ peerState.gracefulShutdown();
236
241
  unsubscribeFromKnownStatesUpdates();
237
242
  this.peersCounter.add(-1, { role: peer.role });
238
- if (peer.deletePeerStateOnClose) {
243
+ if (peer.deletePeerStateOnClose && this.peers[peer.id] === peerState) {
239
244
  delete this.peers[peer.id];
240
245
  }
241
246
  });
@@ -243,7 +248,21 @@ export class SyncManager {
243
248
  trySendToPeer(peer, msg) {
244
249
  return peer.pushOutgoingMessage(msg);
245
250
  }
251
+ /**
252
+ * Handles the load message from a peer.
253
+ *
254
+ * Differences with the known state message:
255
+ * - The load message triggers the CoValue loading process on the other peer
256
+ * - The peer known state is stored as-is instead of being merged
257
+ * - The load message always replies with a known state message
258
+ */
246
259
  async handleLoad(msg, peer) {
260
+ /**
261
+ * We use the msg sessions as source of truth for the known states
262
+ *
263
+ * This way we can track part of the data loss that may occur when the other peer is restarted
264
+ *
265
+ */
247
266
  peer.dispatchToKnownStates({
248
267
  type: "SET",
249
268
  id: msg.id,
@@ -253,31 +272,22 @@ export class SyncManager {
253
272
  if (entry.state.type === "unknown" || entry.state.type === "unavailable") {
254
273
  const eligiblePeers = this.getServerAndStoragePeers(peer.id);
255
274
  if (eligiblePeers.length === 0) {
256
- // If the load request contains a header or any session data
257
- // and we don't have any eligible peers to load the coValue from
258
- // we try to load it from the sender because it is the only place
259
- // where we can get informations about the coValue
260
- if (msg.header || Object.keys(msg.sessions).length > 0) {
261
- entry.loadFromPeers([peer]).catch((e) => {
262
- logger.error("Error loading coValue in handleLoad", { err: e });
263
- });
264
- }
265
- else {
266
- // We don't have any eligible peers to load the coValue from
267
- // so we send a known state back to the sender to let it know
268
- // that the coValue is unavailable
269
- this.trySendToPeer(peer, {
270
- action: "known",
271
- id: msg.id,
272
- header: false,
273
- sessions: {},
274
- }).catch((e) => {
275
- logger.error("Error sending known state back", { err: e });
276
- });
277
- }
275
+ // We don't have any eligible peers to load the coValue from
276
+ // so we send a known state back to the sender to let it know
277
+ // that the coValue is unavailable
278
+ peer.toldKnownState.add(msg.id);
279
+ this.trySendToPeer(peer, {
280
+ action: "known",
281
+ id: msg.id,
282
+ header: false,
283
+ sessions: {},
284
+ }).catch((e) => {
285
+ logger.error("Error sending known state back", { err: e });
286
+ });
278
287
  return;
279
288
  }
280
289
  else {
290
+ // Should move the state to loading
281
291
  this.local.loadCoValueCore(msg.id, peer.id).catch((e) => {
282
292
  logger.error("Error loading coValue in handleLoad", { err: e });
283
293
  });
@@ -292,11 +302,6 @@ export class SyncManager {
292
302
  .getCoValue()
293
303
  .then(async (value) => {
294
304
  if (value === "unavailable") {
295
- peer.dispatchToKnownStates({
296
- type: "SET",
297
- id: msg.id,
298
- value: knownStateIn(msg),
299
- });
300
305
  peer.toldKnownState.add(msg.id);
301
306
  this.trySendToPeer(peer, {
302
307
  action: "known",
@@ -308,7 +313,6 @@ export class SyncManager {
308
313
  });
309
314
  return;
310
315
  }
311
- await this.tellUntoldKnownStateIncludingDependencies(msg.id, peer);
312
316
  await this.sendNewContentIncludingDependencies(msg.id, peer);
313
317
  })
314
318
  .catch((e) => {
@@ -317,7 +321,10 @@ export class SyncManager {
317
321
  });
318
322
  });
319
323
  }
320
- else if (entry.state.type === "unavailable") {
324
+ else if (entry.state.type === "available") {
325
+ await this.sendNewContentIncludingDependencies(msg.id, peer);
326
+ }
327
+ else {
321
328
  this.trySendToPeer(peer, {
322
329
  action: "known",
323
330
  id: msg.id,
@@ -325,10 +332,6 @@ export class SyncManager {
325
332
  sessions: {},
326
333
  });
327
334
  }
328
- if (entry.state.type === "available") {
329
- await this.tellUntoldKnownStateIncludingDependencies(msg.id, peer);
330
- await this.sendNewContentIncludingDependencies(msg.id, peer);
331
- }
332
335
  }
333
336
  async handleKnownState(msg, peer) {
334
337
  const entry = this.local.coValuesStore.get(msg.id);
@@ -337,19 +340,6 @@ export class SyncManager {
337
340
  id: msg.id,
338
341
  value: knownStateIn(msg),
339
342
  });
340
- if (entry.state.type === "unknown" || entry.state.type === "unavailable") {
341
- if (msg.asDependencyOf) {
342
- const dependencyEntry = this.local.coValuesStore.get(msg.asDependencyOf);
343
- if (dependencyEntry.state.type === "available" ||
344
- dependencyEntry.state.type === "loading") {
345
- this.local
346
- .loadCoValueCore(msg.id, peer.role === "storage" ? undefined : peer.id)
347
- .catch((e) => {
348
- logger.error(`Error loading coValue ${msg.id} to create loading state, as dependency of ${msg.asDependencyOf}`, { err: e });
349
- });
350
- }
351
- }
352
- }
353
343
  // The header is a boolean value that tells us if the other peer do have information about the header.
354
344
  // If it's false in this point it means that the coValue is unavailable on the other peer.
355
345
  if (entry.state.type !== "available") {
@@ -363,10 +353,19 @@ export class SyncManager {
363
353
  return;
364
354
  }
365
355
  if (entry.state.type === "available") {
366
- await this.tellUntoldKnownStateIncludingDependencies(msg.id, peer);
367
356
  await this.sendNewContentIncludingDependencies(msg.id, peer);
368
357
  }
369
358
  }
359
+ recordTransactionsSize(newTransactions, source) {
360
+ for (const tx of newTransactions) {
361
+ const txLength = tx.privacy === "private"
362
+ ? tx.encryptedChanges.length
363
+ : tx.changes.length;
364
+ this.transactionsSizeHistogram.record(txLength, {
365
+ source,
366
+ });
367
+ }
368
+ }
370
369
  async handleNewContent(msg, peer) {
371
370
  const entry = this.local.coValuesStore.get(msg.id);
372
371
  let coValue;
@@ -442,6 +441,7 @@ export class SyncManager {
442
441
  peer.erroredCoValues.set(msg.id, result.error);
443
442
  continue;
444
443
  }
444
+ this.recordTransactionsSize(newTransactions, peer.role);
445
445
  peer.dispatchToKnownStates({
446
446
  type: "UPDATE_SESSION_COUNTER",
447
447
  id: msg.id,
@@ -462,6 +462,7 @@ export class SyncManager {
462
462
  err: e,
463
463
  });
464
464
  });
465
+ peer.toldKnownState.add(msg.id);
465
466
  }
466
467
  else {
467
468
  /**
@@ -481,13 +482,14 @@ export class SyncManager {
481
482
  err: e,
482
483
  });
483
484
  });
485
+ peer.toldKnownState.add(msg.id);
484
486
  }
485
487
  /**
486
488
  * We do send a correction/ack message before syncing to give an immediate
487
489
  * response to the peers that are waiting for confirmation that a coValue is
488
490
  * fully synced
489
491
  */
490
- await this.syncCoValue(coValue);
492
+ this.syncCoValue(coValue);
491
493
  }
492
494
  async handleCorrection(msg, peer) {
493
495
  peer.dispatchToKnownStates({
@@ -528,11 +530,9 @@ export class SyncManager {
528
530
  if (peer.erroredCoValues.has(coValue.id))
529
531
  continue;
530
532
  if (peer.optimisticKnownStates.has(coValue.id)) {
531
- await this.tellUntoldKnownStateIncludingDependencies(coValue.id, peer);
532
533
  await this.sendNewContentIncludingDependencies(coValue.id, peer);
533
534
  }
534
535
  else if (peer.isServerOrStoragePeer()) {
535
- await this.subscribeToIncludingDependencies(coValue.id, peer);
536
536
  await this.sendNewContentIncludingDependencies(coValue.id, peer);
537
537
  }
538
538
  }
package/dist/sync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}