@substrate/api-sidecar 20.7.3 → 20.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/build/package.json +1 -1
  2. package/build/src/Specs.js +1 -0
  3. package/build/src/Specs.js.map +1 -1
  4. package/build/src/chains-config/assetHubKusamaControllers.js +2 -0
  5. package/build/src/chains-config/assetHubKusamaControllers.js.map +1 -1
  6. package/build/src/chains-config/assetHubNextWestendControllers.js +2 -0
  7. package/build/src/chains-config/assetHubNextWestendControllers.js.map +1 -1
  8. package/build/src/chains-config/assetHubPolkadotControllers.js +2 -0
  9. package/build/src/chains-config/assetHubPolkadotControllers.js.map +1 -1
  10. package/build/src/chains-config/assetHubWestendControllers.js +2 -0
  11. package/build/src/chains-config/assetHubWestendControllers.js.map +1 -1
  12. package/build/src/chains-config/defaultControllers.js +1 -0
  13. package/build/src/chains-config/defaultControllers.js.map +1 -1
  14. package/build/src/chains-config/index.js +8 -1
  15. package/build/src/chains-config/index.js.map +1 -1
  16. package/build/src/chains-config/kusamaControllers.js +1 -0
  17. package/build/src/chains-config/kusamaControllers.js.map +1 -1
  18. package/build/src/chains-config/polkadotControllers.js +1 -0
  19. package/build/src/chains-config/polkadotControllers.js.map +1 -1
  20. package/build/src/chains-config/westendControllers.js +1 -0
  21. package/build/src/chains-config/westendControllers.js.map +1 -1
  22. package/build/src/controllers/AbstractController.d.ts +1 -1
  23. package/build/src/controllers/AbstractController.js +8 -7
  24. package/build/src/controllers/AbstractController.js.map +1 -1
  25. package/build/src/controllers/blocks/BlocksController.js +251 -186
  26. package/build/src/controllers/blocks/BlocksController.js.map +1 -1
  27. package/build/src/controllers/blocks/BlocksExtrinsicsController.js +52 -48
  28. package/build/src/controllers/blocks/BlocksExtrinsicsController.js.map +1 -1
  29. package/build/src/controllers/blocks/BlocksParaInclusionsController.d.ts +19 -0
  30. package/build/src/controllers/blocks/BlocksParaInclusionsController.js +52 -0
  31. package/build/src/controllers/blocks/BlocksParaInclusionsController.js.map +1 -0
  32. package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js +18 -14
  33. package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js.map +1 -1
  34. package/build/src/controllers/blocks/index.d.ts +1 -0
  35. package/build/src/controllers/blocks/index.js +3 -1
  36. package/build/src/controllers/blocks/index.js.map +1 -1
  37. package/build/src/controllers/index.d.ts +7 -4
  38. package/build/src/controllers/index.js +4 -1
  39. package/build/src/controllers/index.js.map +1 -1
  40. package/build/src/controllers/paras/ParasInclusionController.d.ts +16 -0
  41. package/build/src/controllers/paras/ParasInclusionController.js +71 -0
  42. package/build/src/controllers/paras/ParasInclusionController.js.map +1 -0
  43. package/build/src/controllers/paras/index.d.ts +1 -0
  44. package/build/src/controllers/paras/index.js +3 -1
  45. package/build/src/controllers/paras/index.js.map +1 -1
  46. package/build/src/controllers/rc/blocks/RcBlocksParaInclusionsController.d.ts +19 -0
  47. package/build/src/controllers/rc/blocks/RcBlocksParaInclusionsController.js +59 -0
  48. package/build/src/controllers/rc/blocks/RcBlocksParaInclusionsController.js.map +1 -0
  49. package/build/src/controllers/rc/blocks/index.d.ts +1 -0
  50. package/build/src/controllers/rc/blocks/index.js +3 -1
  51. package/build/src/controllers/rc/blocks/index.js.map +1 -1
  52. package/build/src/services/blocks/BlocksParaInclusionsService.d.ts +17 -0
  53. package/build/src/services/blocks/BlocksParaInclusionsService.js +85 -0
  54. package/build/src/services/blocks/BlocksParaInclusionsService.js.map +1 -0
  55. package/build/src/services/blocks/index.d.ts +1 -0
  56. package/build/src/services/blocks/index.js +1 -0
  57. package/build/src/services/blocks/index.js.map +1 -1
  58. package/build/src/services/paras/ParasInclusionService.d.ts +24 -0
  59. package/build/src/services/paras/ParasInclusionService.js +110 -0
  60. package/build/src/services/paras/ParasInclusionService.js.map +1 -0
  61. package/build/src/services/paras/index.d.ts +1 -0
  62. package/build/src/services/paras/index.js +1 -0
  63. package/build/src/services/paras/index.js.map +1 -1
  64. package/build/src/types/responses/BlockParaInclusions.d.ts +77 -0
  65. package/build/src/types/responses/BlockParaInclusions.js +18 -0
  66. package/build/src/types/responses/BlockParaInclusions.js.map +1 -0
  67. package/build/src/types/responses/ParachainInclusion.d.ts +8 -0
  68. package/build/src/types/responses/ParachainInclusion.js +18 -0
  69. package/build/src/types/responses/ParachainInclusion.js.map +1 -0
  70. package/build/src/types/responses/index.d.ts +2 -0
  71. package/build/src/types/responses/index.js +2 -0
  72. package/build/src/types/responses/index.js.map +1 -1
  73. package/package.json +1 -1
@@ -138,31 +138,98 @@ class BlocksController extends AbstractController_1.default {
138
138
  * @param res Express Response
139
139
  */
140
140
  this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId, useRcBlock, useEvmFormat }, method, route, }, res) => {
141
- var _a, _b, _c;
141
+ var _a;
142
142
  const eventDocsArg = eventDocs === 'true';
143
143
  const extrinsicDocsArg = extrinsicDocs === 'true';
144
144
  const useRcBlockArg = useRcBlock === 'true';
145
+ if (useRcBlockArg) {
146
+ const rcApi = (_a = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _a === void 0 ? void 0 : _a.api;
147
+ let rcHash;
148
+ if (!this.options.finalizes) {
149
+ const rcHeader = await rcApi.rpc.chain.getHeader();
150
+ rcHash = rcHeader.hash;
151
+ }
152
+ else if (finalized === 'false') {
153
+ const rcHeader = await rcApi.rpc.chain.getHeader();
154
+ rcHash = rcHeader.hash;
155
+ }
156
+ else {
157
+ rcHash = await rcApi.rpc.chain.getFinalizedHead();
158
+ }
159
+ const rcAtResults = await this.getHashFromRcAt(rcHash);
160
+ // Return empty array if no Asset Hub blocks found
161
+ if (rcAtResults.length === 0) {
162
+ BlocksController.sanitizedSend(res, []);
163
+ return;
164
+ }
165
+ // Process each Asset Hub block found
166
+ const results = [];
167
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
168
+ const queryFinalizedHead = !this.options.finalizes ? false : finalized === 'false';
169
+ const omitFinalizedTag = !this.options.finalizes ? true : false;
170
+ const noFeesArg = noFees === 'true';
171
+ const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
172
+ const paraIdArg = paraId ? this.parseNumberOrThrow(paraId, 'paraId must be an integer') : undefined;
173
+ const options = {
174
+ eventDocs: eventDocsArg,
175
+ extrinsicDocs: extrinsicDocsArg,
176
+ checkFinalized: false,
177
+ queryFinalizedHead,
178
+ omitFinalizedTag,
179
+ noFees: noFeesArg,
180
+ checkDecodedXcm: decodedXcmMsgsArg,
181
+ paraId: paraIdArg,
182
+ useEvmAddressFormat: useEvmFormat === 'true',
183
+ };
184
+ // Create a key for the cache that is a concatenation of the block hash and all the query params included in the request
185
+ const cacheKey = ahHash.toString() +
186
+ Number(options.eventDocs) +
187
+ Number(options.extrinsicDocs) +
188
+ Number(options.checkFinalized) +
189
+ Number(options.noFees) +
190
+ Number(options.checkDecodedXcm) +
191
+ Number(options.paraId) +
192
+ Number(options.useEvmAddressFormat);
193
+ const isBlockCached = this.blockStore.get(cacheKey);
194
+ let block;
195
+ if (isBlockCached) {
196
+ block = isBlockCached;
197
+ }
198
+ else {
199
+ const historicApi = await this.api.at(ahHash);
200
+ block = await this.service.fetchBlock(ahHash, historicApi, options);
201
+ this.blockStore.set(cacheKey, block);
202
+ }
203
+ const apiAt = await this.api.at(ahHash);
204
+ const ahTimestamp = await apiAt.query.timestamp.now();
205
+ const enhancedResult = {
206
+ ...block,
207
+ rcBlockNumber,
208
+ ahTimestamp: ahTimestamp.toString(),
209
+ };
210
+ results.push(enhancedResult);
211
+ }
212
+ BlocksController.sanitizedSend(res, results);
213
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
214
+ const path = route.path;
215
+ if (res.locals.metrics) {
216
+ const totExtrinsics = results.reduce((current, block) => {
217
+ const extrinsics = block.extrinsics;
218
+ if (Array.isArray(extrinsics)) {
219
+ return current + extrinsics.length;
220
+ }
221
+ return current;
222
+ }, 0);
223
+ this.emitExtrinsicMetrics(totExtrinsics, results.length, method, path, res);
224
+ }
225
+ return;
226
+ }
145
227
  let hash, queryFinalizedHead, omitFinalizedTag;
146
- let rcBlockNumber;
147
228
  if (!this.options.finalizes) {
148
229
  // If the network chain doesn't finalize blocks, we dont want a finalized tag.
149
230
  omitFinalizedTag = true;
150
231
  queryFinalizedHead = false;
151
- if (useRcBlockArg) {
152
- const rcApi = (_a = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _a === void 0 ? void 0 : _a.api;
153
- const rcHeader = await rcApi.rpc.chain.getHeader();
154
- const rcHash = rcHeader.hash;
155
- rcBlockNumber = rcHeader.number.toString();
156
- hash = await this.getAhAtFromRcAt(rcHash);
157
- // Return empty array if no Asset Hub block found
158
- if (!hash) {
159
- BlocksController.sanitizedSend(res, []);
160
- return;
161
- }
162
- }
163
- else {
164
- hash = (await this.api.rpc.chain.getHeader()).hash;
165
- }
232
+ hash = (await this.api.rpc.chain.getHeader()).hash;
166
233
  }
167
234
  else if (finalized === 'false') {
168
235
  // We query the finalized head to know where the latest finalized block
@@ -170,40 +237,12 @@ class BlocksController extends AbstractController_1.default {
170
237
  // equal to the finalized head.
171
238
  omitFinalizedTag = false;
172
239
  queryFinalizedHead = true;
173
- if (useRcBlockArg) {
174
- const rcApi = (_b = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _b === void 0 ? void 0 : _b.api;
175
- const rcHeader = await rcApi.rpc.chain.getHeader();
176
- const rcHash = rcHeader.hash;
177
- rcBlockNumber = rcHeader.number.toString();
178
- hash = await this.getAhAtFromRcAt(rcHash);
179
- // Return empty array if no Asset Hub block found
180
- if (!hash) {
181
- BlocksController.sanitizedSend(res, []);
182
- return;
183
- }
184
- }
185
- else {
186
- hash = (await this.api.rpc.chain.getHeader()).hash;
187
- }
240
+ hash = (await this.api.rpc.chain.getHeader()).hash;
188
241
  }
189
242
  else {
190
243
  omitFinalizedTag = false;
191
244
  queryFinalizedHead = false;
192
- if (useRcBlockArg) {
193
- const rcApi = (_c = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _c === void 0 ? void 0 : _c.api;
194
- const rcHash = await rcApi.rpc.chain.getFinalizedHead();
195
- const rcHeader = await rcApi.rpc.chain.getHeader(rcHash);
196
- rcBlockNumber = rcHeader.number.toString();
197
- hash = await this.getAhAtFromRcAt(rcHash);
198
- // Return empty array if no Asset Hub block found
199
- if (!hash) {
200
- BlocksController.sanitizedSend(res, []);
201
- return;
202
- }
203
- }
204
- else {
205
- hash = await this.api.rpc.chain.getFinalizedHead();
206
- }
245
+ hash = await this.api.rpc.chain.getFinalizedHead();
207
246
  }
208
247
  const noFeesArg = noFees === 'true';
209
248
  const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
@@ -230,37 +269,13 @@ class BlocksController extends AbstractController_1.default {
230
269
  Number(options.useEvmAddressFormat);
231
270
  const isBlockCached = this.blockStore.get(cacheKey);
232
271
  if (isBlockCached) {
233
- if (rcBlockNumber) {
234
- const apiAt = await this.api.at(hash);
235
- const ahTimestamp = await apiAt.query.timestamp.now();
236
- const enhancedCachedResult = {
237
- ...isBlockCached,
238
- rcBlockNumber,
239
- ahTimestamp: ahTimestamp.toString(),
240
- };
241
- BlocksController.sanitizedSend(res, [enhancedCachedResult]);
242
- }
243
- else {
244
- BlocksController.sanitizedSend(res, isBlockCached);
245
- }
272
+ BlocksController.sanitizedSend(res, isBlockCached);
246
273
  return;
247
274
  }
248
275
  const historicApi = await this.api.at(hash);
249
276
  const block = await this.service.fetchBlock(hash, historicApi, options);
250
277
  this.blockStore.set(cacheKey, block);
251
- if (rcBlockNumber) {
252
- const apiAt = await this.api.at(hash);
253
- const ahTimestamp = await apiAt.query.timestamp.now();
254
- const enhancedResult = {
255
- ...block,
256
- rcBlockNumber,
257
- ahTimestamp: ahTimestamp.toString(),
258
- };
259
- BlocksController.sanitizedSend(res, [enhancedResult]);
260
- }
261
- else {
262
- BlocksController.sanitizedSend(res, block);
263
- }
278
+ BlocksController.sanitizedSend(res, block);
264
279
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
265
280
  const path = route.path;
266
281
  if (res.locals.metrics) {
@@ -276,21 +291,84 @@ class BlocksController extends AbstractController_1.default {
276
291
  this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId, useRcBlock, useEvmFormat }, method, route, }, res) => {
277
292
  const useRcBlockArg = useRcBlock === 'true';
278
293
  const checkFinalized = (0, util_1.isHex)(number);
279
- let hash;
280
- let rcBlockNumber;
281
294
  if (useRcBlockArg) {
282
295
  // Treat the 'number' parameter as a relay chain block identifier
283
- rcBlockNumber = number;
284
- hash = await this.getAhAtFromRcAt(number);
285
- // Return empty array if no Asset Hub block found
286
- if (!hash) {
296
+ const rcAtResults = await this.getHashFromRcAt(number);
297
+ // Return empty array if no Asset Hub blocks found
298
+ if (rcAtResults.length === 0) {
287
299
  BlocksController.sanitizedSend(res, []);
288
300
  return;
289
301
  }
302
+ // Process each Asset Hub block found
303
+ const results = [];
304
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
305
+ const eventDocsArg = eventDocs === 'true';
306
+ const extrinsicDocsArg = extrinsicDocs === 'true';
307
+ const finalizeOverride = finalizedKey === 'false';
308
+ const queryFinalizedHead = !this.options.finalizes ? false : true;
309
+ const noFeesArg = noFees === 'true';
310
+ let omitFinalizedTag = !this.options.finalizes ? true : false;
311
+ if (finalizeOverride) {
312
+ omitFinalizedTag = true;
313
+ }
314
+ const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
315
+ const paraIdArg = paraId ? this.parseNumberOrThrow(paraId, 'paraId must be an integer') : undefined;
316
+ const options = {
317
+ eventDocs: eventDocsArg,
318
+ extrinsicDocs: extrinsicDocsArg,
319
+ checkFinalized,
320
+ queryFinalizedHead,
321
+ omitFinalizedTag,
322
+ noFees: noFeesArg,
323
+ checkDecodedXcm: decodedXcmMsgsArg,
324
+ paraId: paraIdArg,
325
+ useEvmAddressFormat: useEvmFormat === 'true',
326
+ };
327
+ // Create a key for the cache that is a concatenation of the block hash and all the query params included in the request
328
+ const cacheKey = ahHash.toString() +
329
+ Number(options.eventDocs) +
330
+ Number(options.extrinsicDocs) +
331
+ Number(options.checkFinalized) +
332
+ Number(options.noFees) +
333
+ Number(options.checkDecodedXcm) +
334
+ Number(options.paraId) +
335
+ Number(options.useEvmAddressFormat);
336
+ const isBlockCached = this.blockStore.get(cacheKey);
337
+ let block;
338
+ if (isBlockCached) {
339
+ block = isBlockCached;
340
+ }
341
+ else {
342
+ // HistoricApi to fetch any historic information that doesnt include the current runtime
343
+ const historicApi = await this.api.at(ahHash);
344
+ block = await this.service.fetchBlock(ahHash, historicApi, options);
345
+ this.blockStore.set(cacheKey, block);
346
+ }
347
+ const apiAt = await this.api.at(ahHash);
348
+ const ahTimestamp = await apiAt.query.timestamp.now();
349
+ const enhancedResult = {
350
+ ...block,
351
+ rcBlockNumber,
352
+ ahTimestamp: ahTimestamp.toString(),
353
+ };
354
+ results.push(enhancedResult);
355
+ }
356
+ BlocksController.sanitizedSend(res, results);
357
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
358
+ const path = route.path;
359
+ if (res.locals.metrics) {
360
+ const totExtrinsics = results.reduce((current, block) => {
361
+ const extrinsics = block.extrinsics;
362
+ if (Array.isArray(extrinsics)) {
363
+ return current + extrinsics.length;
364
+ }
365
+ return current;
366
+ }, 0);
367
+ this.emitExtrinsicMetrics(totExtrinsics, results.length, method, path, res);
368
+ }
369
+ return;
290
370
  }
291
- else {
292
- hash = await this.getHashForBlock(number);
293
- }
371
+ const hash = await this.getHashForBlock(number);
294
372
  const eventDocsArg = eventDocs === 'true';
295
373
  const extrinsicDocsArg = extrinsicDocs === 'true';
296
374
  const finalizeOverride = finalizedKey === 'false';
@@ -324,39 +402,15 @@ class BlocksController extends AbstractController_1.default {
324
402
  Number(options.useEvmAddressFormat);
325
403
  const isBlockCached = this.blockStore.get(cacheKey);
326
404
  if (isBlockCached) {
327
- if (rcBlockNumber) {
328
- const apiAt = await this.api.at(hash);
329
- const ahTimestamp = await apiAt.query.timestamp.now();
330
- const enhancedCachedResult = {
331
- ...isBlockCached,
332
- rcBlockNumber,
333
- ahTimestamp: ahTimestamp.toString(),
334
- };
335
- BlocksController.sanitizedSend(res, [enhancedCachedResult]);
336
- }
337
- else {
338
- BlocksController.sanitizedSend(res, isBlockCached);
339
- }
405
+ BlocksController.sanitizedSend(res, isBlockCached);
340
406
  return;
341
407
  }
342
408
  // HistoricApi to fetch any historic information that doesnt include the current runtime
343
409
  const historicApi = await this.api.at(hash);
344
410
  const block = await this.service.fetchBlock(hash, historicApi, options);
345
411
  this.blockStore.set(cacheKey, block);
346
- if (rcBlockNumber) {
347
- const apiAt = await this.api.at(hash);
348
- const ahTimestamp = await apiAt.query.timestamp.now();
349
- const enhancedResult = {
350
- ...block,
351
- rcBlockNumber,
352
- ahTimestamp: ahTimestamp.toString(),
353
- };
354
- BlocksController.sanitizedSend(res, [enhancedResult]);
355
- }
356
- else {
357
- // We set the last param to true because we haven't queried the finalizedHead
358
- BlocksController.sanitizedSend(res, block);
359
- }
412
+ // We set the last param to true because we haven't queried the finalizedHead
413
+ BlocksController.sanitizedSend(res, block);
360
414
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
361
415
  const path = route.path;
362
416
  if (res.locals.metrics) {
@@ -371,37 +425,36 @@ class BlocksController extends AbstractController_1.default {
371
425
  */
372
426
  this.getBlockHeaderById = async ({ params: { number }, query: { useRcBlock } }, res) => {
373
427
  const useRcBlockArg = useRcBlock === 'true';
374
- let hash;
375
- let rcBlockNumber;
376
428
  if (useRcBlockArg) {
377
429
  // Treat the 'number' parameter as a relay chain block identifier
378
- rcBlockNumber = number;
379
- hash = await this.getAhAtFromRcAt(number);
380
- // Return empty array if no Asset Hub block found
381
- if (!hash) {
430
+ const rcAtResults = await this.getHashFromRcAt(number);
431
+ // Return empty array if no Asset Hub blocks found
432
+ if (rcAtResults.length === 0) {
382
433
  BlocksController.sanitizedSend(res, []);
383
434
  return;
384
435
  }
436
+ // Process each Asset Hub block found
437
+ const results = [];
438
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
439
+ const headerResult = await this.service.fetchBlockHeader(ahHash);
440
+ const apiAt = await this.api.at(ahHash);
441
+ const ahTimestamp = await apiAt.query.timestamp.now();
442
+ const enhancedResult = {
443
+ parentHash: headerResult.parentHash,
444
+ number: headerResult.number,
445
+ stateRoot: headerResult.stateRoot,
446
+ extrinsicsRoot: headerResult.extrinsicsRoot,
447
+ digest: headerResult.digest,
448
+ rcBlockNumber,
449
+ ahTimestamp: ahTimestamp.toString(),
450
+ };
451
+ results.push(enhancedResult);
452
+ }
453
+ BlocksController.sanitizedSend(res, results);
385
454
  }
386
455
  else {
387
- hash = await this.getHashForBlock(number);
388
- }
389
- const headerResult = await this.service.fetchBlockHeader(hash);
390
- if (rcBlockNumber) {
391
- const apiAt = await this.api.at(hash);
392
- const ahTimestamp = await apiAt.query.timestamp.now();
393
- const enhancedResult = {
394
- parentHash: headerResult.parentHash,
395
- number: headerResult.number,
396
- stateRoot: headerResult.stateRoot,
397
- extrinsicsRoot: headerResult.extrinsicsRoot,
398
- digest: headerResult.digest,
399
- rcBlockNumber,
400
- ahTimestamp: ahTimestamp.toString(),
401
- };
402
- BlocksController.sanitizedSend(res, [enhancedResult]);
403
- }
404
- else {
456
+ const hash = await this.getHashForBlock(number);
457
+ const headerResult = await this.service.fetchBlockHeader(hash);
405
458
  BlocksController.sanitizedSend(res, headerResult);
406
459
  }
407
460
  };
@@ -415,47 +468,44 @@ class BlocksController extends AbstractController_1.default {
415
468
  var _a;
416
469
  const paramFinalized = finalized !== 'false';
417
470
  const useRcBlockArg = useRcBlock === 'true';
418
- let hash;
419
- let rcBlockNumber;
420
471
  if (useRcBlockArg) {
421
472
  const rcApi = (_a = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _a === void 0 ? void 0 : _a.api;
473
+ let rcHash;
422
474
  if (paramFinalized) {
423
- const rcHash = await rcApi.rpc.chain.getFinalizedHead();
424
- const rcHeader = await rcApi.rpc.chain.getHeader(rcHash);
425
- rcBlockNumber = rcHeader.number.toString();
426
- hash = await this.getAhAtFromRcAt(rcHash);
475
+ rcHash = await rcApi.rpc.chain.getFinalizedHead();
427
476
  }
428
477
  else {
429
478
  const rcHeader = await rcApi.rpc.chain.getHeader();
430
- const rcHash = rcHeader.hash;
431
- rcBlockNumber = rcHeader.number.toString();
432
- hash = await this.getAhAtFromRcAt(rcHash);
479
+ rcHash = rcHeader.hash;
433
480
  }
434
- // Return empty array if no Asset Hub block found
435
- if (!hash) {
481
+ const rcAtResults = await this.getHashFromRcAt(rcHash);
482
+ // Return empty array if no Asset Hub blocks found
483
+ if (rcAtResults.length === 0) {
436
484
  BlocksController.sanitizedSend(res, []);
437
485
  return;
438
486
  }
487
+ // Process each Asset Hub block found
488
+ const results = [];
489
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
490
+ const headerResult = await this.service.fetchBlockHeader(ahHash);
491
+ const apiAt = await this.api.at(ahHash);
492
+ const ahTimestamp = await apiAt.query.timestamp.now();
493
+ const enhancedResult = {
494
+ parentHash: headerResult.parentHash,
495
+ number: headerResult.number,
496
+ stateRoot: headerResult.stateRoot,
497
+ extrinsicsRoot: headerResult.extrinsicsRoot,
498
+ digest: headerResult.digest,
499
+ rcBlockNumber,
500
+ ahTimestamp: ahTimestamp.toString(),
501
+ };
502
+ results.push(enhancedResult);
503
+ }
504
+ BlocksController.sanitizedSend(res, results);
439
505
  }
440
506
  else {
441
- hash = paramFinalized ? await this.api.rpc.chain.getFinalizedHead() : undefined;
442
- }
443
- const headerResult = await this.service.fetchBlockHeader(hash);
444
- if (rcBlockNumber) {
445
- const apiAt = await this.api.at(hash);
446
- const ahTimestamp = await apiAt.query.timestamp.now();
447
- const enhancedResult = {
448
- parentHash: headerResult.parentHash,
449
- number: headerResult.number,
450
- stateRoot: headerResult.stateRoot,
451
- extrinsicsRoot: headerResult.extrinsicsRoot,
452
- digest: headerResult.digest,
453
- rcBlockNumber,
454
- ahTimestamp: ahTimestamp.toString(),
455
- };
456
- BlocksController.sanitizedSend(res, [enhancedResult]);
457
- }
458
- else {
507
+ const hash = paramFinalized ? await this.api.rpc.chain.getFinalizedHead() : undefined;
508
+ const headerResult = await this.service.fetchBlockHeader(hash);
459
509
  BlocksController.sanitizedSend(res, headerResult);
460
510
  }
461
511
  };
@@ -491,43 +541,58 @@ class BlocksController extends AbstractController_1.default {
491
541
  const blocksPromise = [];
492
542
  for (let i = 0; i < rangeOfNums.length; i++) {
493
543
  const result = pQueue.run(async () => {
494
- let hash;
495
- let rcBlockNumber;
496
544
  if (useRcBlockArg) {
497
545
  // Treat range numbers as relay chain block identifiers
498
- rcBlockNumber = rangeOfNums[i].toString();
499
- hash = await this.getAhAtFromRcAt(rcBlockNumber);
500
- // Skip this RC block if it doesn't have a corresponding AH block
501
- if (!hash) {
546
+ const rcBlockNumber = rangeOfNums[i].toString();
547
+ const rcAtResults = await this.getHashFromRcAt(rcBlockNumber);
548
+ // Skip this RC block if it doesn't have corresponding AH blocks
549
+ if (rcAtResults.length === 0) {
502
550
  return null;
503
551
  }
552
+ // Process each Asset Hub block found for this RC block
553
+ const rcBlockResults = [];
554
+ for (const { ahHash, rcBlockNumber: rcNum } of rcAtResults) {
555
+ const historicApi = await this.api.at(ahHash);
556
+ const block = await this.service.fetchBlock(ahHash, historicApi, options);
557
+ const apiAt = await this.api.at(ahHash);
558
+ const ahTimestamp = await apiAt.query.timestamp.now();
559
+ const enhancedBlock = {
560
+ ...block,
561
+ rcBlockNumber: rcNum,
562
+ ahTimestamp: ahTimestamp.toString(),
563
+ };
564
+ rcBlockResults.push(enhancedBlock);
565
+ }
566
+ return rcBlockResults;
504
567
  }
505
568
  else {
506
569
  // Get block hash:
507
- hash = await this.getHashForBlock(rangeOfNums[i].toString());
570
+ const hash = await this.getHashForBlock(rangeOfNums[i].toString());
571
+ // Get API at that hash:
572
+ const historicApi = await this.api.at(hash);
573
+ // Get block details using this API/hash:
574
+ const block = await this.service.fetchBlock(hash, historicApi, options);
575
+ return block;
508
576
  }
509
- // Get API at that hash:
510
- const historicApi = await this.api.at(hash);
511
- // Get block details using this API/hash:
512
- const block = await this.service.fetchBlock(hash, historicApi, options);
513
- if (rcBlockNumber) {
514
- // Add RC context to the block
515
- const apiAt = await this.api.at(hash);
516
- const ahTimestamp = await apiAt.query.timestamp.now();
517
- return {
518
- ...block,
519
- rcBlockNumber,
520
- ahTimestamp: ahTimestamp.toString(),
521
- };
522
- }
523
- return block;
524
577
  });
525
578
  blocksPromise.push(result);
526
579
  }
527
580
  const allBlocks = await Promise.all(blocksPromise);
528
581
  blocksPromise.length = 0;
529
- // Filter out null values (skipped RC blocks that don't have corresponding AH blocks)
530
- const blocks = allBlocks.filter((block) => block !== null);
582
+ // Filter out null values and flatten nested arrays (for useRcBlock case)
583
+ const blocks = [];
584
+ for (const block of allBlocks) {
585
+ if (block !== null) {
586
+ if (Array.isArray(block)) {
587
+ // This is from useRcBlock case where we might have multiple blocks per RC block
588
+ blocks.push(...block);
589
+ }
590
+ else {
591
+ // Single block case
592
+ blocks.push(block);
593
+ }
594
+ }
595
+ }
531
596
  /**
532
597
  * Sort blocks from least to greatest.
533
598
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAExE,yCAAuC;AAEvC,6CAAyC;AAIzC,mDAAuD;AACvD,wDAAgF;AAChF,6CAA+C;AAU/C,0DAAuD;AACvD,+EAAuD;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AACH,MAAqB,gBAAiB,SAAQ,4BAAiC;IAI9E,YACC,GAAW,EACM,OAA0B;QAE3C,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,wBAAa,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QAFhF,YAAO,GAAP,OAAO,CAAmB;QAkBpC,yBAAoB,GAAG,CAC9B,aAAqB,EACrB,SAAiB,EACjB,MAAc,EACd,IAAY,EACZ,GAAgC,EACzB,EAAE;YACT,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAE3C,MAAM,qBAAqB,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAqB,CAAC;gBAC3G,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAElH,MAAM,qBAAqB,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAqB,CAAC;gBAC3G,qBAAqB;qBACnB,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;qBACpE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,CAAC;gBAEnC,MAAM,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAqB,CAAC;gBAC9G,yBAAyB;qBACvB,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;qBACnE,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;gBAErC,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAqB,CAAC;gBACnG,iBAAiB;qBACf,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;qBACpE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;gBAE/B,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBACnB,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAqB,CAAC;oBACnG,iBAAiB;yBACf,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;yBACpE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;QACF,CAAC,CAAC;QACF;;;;;WAKG;QACK,mBAAc,GAA2D,KAAK,EACrF,EACC,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,EACxG,MAAM,EACN,KAAK,GACL,EACD,GAAG,EACF,EAAE;;YACH,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM,CAAC;YAC1C,MAAM,gBAAgB,GAAG,aAAa,KAAK,MAAM,CAAC;YAClD,MAAM,aAAa,GAAG,UAAU,KAAK,MAAM,CAAC;YAE5C,IAAI,aAAa,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,MAAA,gCAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAC;gBAC/D,IAAI,MAAM,CAAC;gBAEX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC7B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBACnD,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACxB,CAAC;qBAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;oBAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBACnD,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACP,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBACnD,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAEvD,kDAAkD;gBAClD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACxC,OAAO;gBACR,CAAC;gBAED,qCAAqC;gBACrC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC;oBACrD,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC;oBACnF,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;oBAChE,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC;oBACpC,MAAM,iBAAiB,GAAG,cAAc,KAAK,MAAM,CAAC;oBACpD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAEpG,MAAM,OAAO,GAAG;wBACf,SAAS,EAAE,YAAY;wBACvB,aAAa,EAAE,gBAAgB;wBAC/B,cAAc,EAAE,KAAK;wBACrB,kBAAkB;wBAClB,gBAAgB;wBAChB,MAAM,EAAE,SAAS;wBACjB,eAAe,EAAE,iBAAiB;wBAClC,MAAM,EAAE,SAAS;wBACjB,mBAAmB,EAAE,YAAY,KAAK,MAAM;qBAC5C,CAAC;oBAEF,wHAAwH;oBACxH,MAAM,QAAQ,GACb,MAAM,CAAC,QAAQ,EAAE;wBACjB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;wBACzB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;wBAC7B,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;wBAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;wBACtB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;wBAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;wBACtB,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;oBAErC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAEpD,IAAI,KAAK,CAAC;oBACV,IAAI,aAAa,EAAE,CAAC;wBACnB,KAAK,GAAG,aAAa,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACP,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;wBAC9C,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;wBACpE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACtC,CAAC;oBAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oBAEtD,MAAM,cAAc,GAAG;wBACtB,GAAG,KAAK;wBACR,aAAa;wBACb,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;qBACnC,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;gBAED,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAE7C,sEAAsE;gBACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;gBAClC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAe,EAAE,KAAK,EAAE,EAAE;wBAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;wBACpC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC/B,OAAO,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;wBACpC,CAAC;wBACD,OAAO,OAAO,CAAC;oBAChB,CAAC,EAAE,CAAC,CAAC,CAAC;oBACN,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC7E,CAAC;gBACD,OAAO;YACR,CAAC;YAED,IAAI,IAAI,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC7B,8EAA8E;gBAC9E,gBAAgB,GAAG,IAAI,CAAC;gBACxB,kBAAkB,GAAG,KAAK,CAAC;gBAC3B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;YACpD,CAAC;iBAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gBAClC,uEAAuE;gBACvE,uEAAuE;gBACvE,+BAA+B;gBAC/B,gBAAgB,GAAG,KAAK,CAAC;gBACzB,kBAAkB,GAAG,IAAI,CAAC;gBAC1B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACP,gBAAgB,GAAG,KAAK,CAAC;gBACzB,kBAAkB,GAAG,KAAK,CAAC;gBAC3B,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC;YACpC,MAAM,iBAAiB,GAAG,cAAc,KAAK,MAAM,CAAC;YACpD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEpG,MAAM,OAAO,GAAG;gBACf,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,gBAAgB;gBAC/B,cAAc,EAAE,KAAK;gBACrB,kBAAkB;gBAClB,gBAAgB;gBAChB,MAAM,EAAE,SAAS;gBACjB,eAAe,EAAE,iBAAiB;gBAClC,MAAM,EAAE,SAAS;gBACjB,mBAAmB,EAAE,YAAY,KAAK,MAAM;aAC5C,CAAC;YACF,wHAAwH;YACxH,MAAM,QAAQ,GACb,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC7B,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAErC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEpD,IAAI,aAAa,EAAE,CAAC;gBACnB,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;gBACnD,OAAO;YACR,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAErC,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAE3C,sEAAsE;YACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;YAElC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1E,CAAC;QACF,CAAC,CAAC;QAEF;;;;;WAKG;QACK,iBAAY,GAAgE,KAAK,EACxF,EACC,MAAM,EAAE,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,EAC3G,MAAM,EACN,KAAK,GACL,EACD,GAAG,EACa,EAAE;YAClB,MAAM,aAAa,GAAG,UAAU,KAAK,MAAM,CAAC;YAC5C,MAAM,cAAc,GAAG,IAAA,YAAK,EAAC,MAAM,CAAC,CAAC;YAErC,IAAI,aAAa,EAAE,CAAC;gBACnB,iEAAiE;gBACjE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAEvD,kDAAkD;gBAClD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACxC,OAAO;gBACR,CAAC;gBAED,qCAAqC;gBACrC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC;oBACrD,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM,CAAC;oBAC1C,MAAM,gBAAgB,GAAG,aAAa,KAAK,MAAM,CAAC;oBAClD,MAAM,gBAAgB,GAAG,YAAY,KAAK,OAAO,CAAC;oBAElD,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;oBAClE,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC;oBACpC,IAAI,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;oBAE9D,IAAI,gBAAgB,EAAE,CAAC;wBACtB,gBAAgB,GAAG,IAAI,CAAC;oBACzB,CAAC;oBAED,MAAM,iBAAiB,GAAG,cAAc,KAAK,MAAM,CAAC;oBACpD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAEpG,MAAM,OAAO,GAAG;wBACf,SAAS,EAAE,YAAY;wBACvB,aAAa,EAAE,gBAAgB;wBAC/B,cAAc;wBACd,kBAAkB;wBAClB,gBAAgB;wBAChB,MAAM,EAAE,SAAS;wBACjB,eAAe,EAAE,iBAAiB;wBAClC,MAAM,EAAE,SAAS;wBACjB,mBAAmB,EAAE,YAAY,KAAK,MAAM;qBAC5C,CAAC;oBAEF,wHAAwH;oBACxH,MAAM,QAAQ,GACb,MAAM,CAAC,QAAQ,EAAE;wBACjB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;wBACzB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;wBAC7B,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;wBAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;wBACtB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;wBAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;wBACtB,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;oBAErC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAEpD,IAAI,KAAK,CAAC;oBACV,IAAI,aAAa,EAAE,CAAC;wBACnB,KAAK,GAAG,aAAa,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACP,wFAAwF;wBACxF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;wBAC9C,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;wBACpE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACtC,CAAC;oBAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oBAEtD,MAAM,cAAc,GAAG;wBACtB,GAAG,KAAK;wBACR,aAAa;wBACb,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;qBACnC,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;gBAED,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAE7C,sEAAsE;gBACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;gBAClC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAe,EAAE,KAAK,EAAE,EAAE;wBAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;wBACpC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC/B,OAAO,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;wBACpC,CAAC;wBACD,OAAO,OAAO,CAAC;oBAChB,CAAC,EAAE,CAAC,CAAC,CAAC;oBACN,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC7E,CAAC;gBACD,OAAO;YACR,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAEhD,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM,CAAC;YAC1C,MAAM,gBAAgB,GAAG,aAAa,KAAK,MAAM,CAAC;YAClD,MAAM,gBAAgB,GAAG,YAAY,KAAK,OAAO,CAAC;YAElD,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC;YACpC,IAAI,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAE9D,IAAI,gBAAgB,EAAE,CAAC;gBACtB,gBAAgB,GAAG,IAAI,CAAC;YACzB,CAAC;YAED,MAAM,iBAAiB,GAAG,cAAc,KAAK,MAAM,CAAC;YACpD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEpG,MAAM,OAAO,GAAG;gBACf,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,gBAAgB;gBAC/B,cAAc;gBACd,kBAAkB;gBAClB,gBAAgB;gBAChB,MAAM,EAAE,SAAS;gBACjB,eAAe,EAAE,iBAAiB;gBAClC,MAAM,EAAE,SAAS;gBACjB,mBAAmB,EAAE,YAAY,KAAK,MAAM;aAC5C,CAAC;YAEF,wHAAwH;YACxH,MAAM,QAAQ,GACb,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC7B,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAErC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEpD,IAAI,aAAa,EAAE,CAAC;gBACnB,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;gBACnD,OAAO;YACR,CAAC;YACD,wFAAwF;YACxF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAExE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAErC,6EAA6E;YAC7E,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3C,sEAAsE;YACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;YAClC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1E,CAAC;QACF,CAAC,CAAC;QAEF;;;;;WAKG;QACK,uBAAkB,GAAsE,KAAK,EACpG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAC7C,GAAG,EACa,EAAE;YAClB,MAAM,aAAa,GAAG,UAAU,KAAK,MAAM,CAAC;YAE5C,IAAI,aAAa,EAAE,CAAC;gBACnB,iEAAiE;gBACjE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAEvD,kDAAkD;gBAClD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACxC,OAAO;gBACR,CAAC;gBAED,qCAAqC;gBACrC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC;oBACrD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAEjE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oBACtD,MAAM,cAAc,GAAG;wBACtB,UAAU,EAAE,YAAY,CAAC,UAAU;wBACnC,MAAM,EAAE,YAAY,CAAC,MAAM;wBAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;wBACjC,cAAc,EAAE,YAAY,CAAC,cAAc;wBAC3C,MAAM,EAAE,YAAY,CAAC,MAAM;wBAC3B,aAAa;wBACb,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;qBACnC,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;gBAED,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAChD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC/D,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACnD,CAAC;QACF,CAAC,CAAC;QAEF;;;;;WAKG;QACK,yBAAoB,GAAmB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAiB,EAAE;;YACjH,MAAM,cAAc,GAAG,SAAS,KAAK,OAAO,CAAC;YAC7C,MAAM,aAAa,GAAG,UAAU,KAAK,MAAM,CAAC;YAE5C,IAAI,aAAa,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,MAAA,gCAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAC;gBAC/D,IAAI,MAAM,CAAC;gBAEX,IAAI,cAAc,EAAE,CAAC;oBACpB,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACP,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBACnD,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACxB,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAEvD,kDAAkD;gBAClD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACxC,OAAO;gBACR,CAAC;gBAED,qCAAqC;gBACrC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC;oBACrD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAEjE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oBACtD,MAAM,cAAc,GAAG;wBACtB,UAAU,EAAE,YAAY,CAAC,UAAU;wBACnC,MAAM,EAAE,YAAY,CAAC,MAAM;wBAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;wBACjC,cAAc,EAAE,YAAY,CAAC,cAAc;wBAC3C,MAAM,EAAE,YAAY,CAAC,MAAM;wBAC3B,aAAa;wBACb,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;qBACnC,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;gBAED,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC/D,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACnD,CAAC;QACF,CAAC,CAAC;QAEF;;;;;WAKG;QACK,cAAS,GAA8E,KAAK,EACnG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAC/F,GAAG,EACa,EAAE;YAClB,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,wBAAU,CAAC,yCAAyC,CAAC,CAAC;YAE5E,oCAAoC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,aAAa,GAAG,UAAU,KAAK,MAAM,CAAC;YAE5C,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM,CAAC;YAC1C,MAAM,gBAAgB,GAAG,aAAa,KAAK,MAAM,CAAC;YAClD,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAChE,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC;YACpC,MAAM,OAAO,GAAG;gBACf,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,gBAAgB;gBAC/B,cAAc,EAAE,KAAK;gBACrB,kBAAkB;gBAClB,gBAAgB;gBAChB,MAAM,EAAE,SAAS;gBACjB,eAAe,EAAE,KAAK;gBACtB,MAAM,EAAE,SAAS;gBACjB,mBAAmB,EAAE,YAAY,KAAK,MAAM;aAC5C,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,2BAAY,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,aAAa,GAAuB,EAAE,CAAC;YAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;oBACpC,IAAI,aAAa,EAAE,CAAC;wBACnB,uDAAuD;wBACvD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAChD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;wBAE9D,gEAAgE;wBAChE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC9B,OAAO,IAAI,CAAC;wBACb,CAAC;wBAED,uDAAuD;wBACvD,MAAM,cAAc,GAAG,EAAE,CAAC;wBAC1B,KAAK,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC;4BAC5D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;4BAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;4BAE1E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;4BACxC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;4BACtD,MAAM,aAAa,GAAG;gCACrB,GAAG,KAAK;gCACR,aAAa,EAAE,KAAK;gCACpB,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;6BACnC,CAAC;4BAEF,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBACpC,CAAC;wBAED,OAAO,cAAc,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACP,kBAAkB;wBAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAEnE,wBAAwB;wBACxB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;wBAC5C,yCAAyC;wBACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;wBAExE,OAAO,KAAK,CAAC;oBACd,CAAC;gBACF,CAAC,CAAC,CAAC;gBACH,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACnD,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YAEzB,yEAAyE;YACzE,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1B,gFAAgF;wBAChF,MAAM,CAAC,IAAI,CAAC,GAAI,KAAkB,CAAC,CAAC;oBACrC,CAAC;yBAAM,CAAC;wBACP,oBAAoB;wBACpB,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;oBAC9B,CAAC;gBACF,CAAC;YACF,CAAC;YAED;;eAEG;YACH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEjE,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC5C,sEAAsE;YACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;YAClC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAe,EAAE,KAAK,EAAE,EAAE;oBAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;oBAEpC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC/B,OAAO,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;oBACpC,CAAC;oBAED,OAAO,OAAO,CAAC;gBAChB,CAAC,EAAE,CAAC,CAAC,CAAC;gBACN,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5E,CAAC;QACF,CAAC,CAAC;QAjnBD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAA,0BAAe,EAAC,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,EAAE,6BAAkB,CAAC,CAAC;QAC7G,IAAI,CAAC,yBAAyB,CAAC;YAC9B,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;YACrB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;YAC9B,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;YAC/B,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC;YAC3C,CAAC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC;SAC5C,CAAC,CAAC;IACJ,CAAC;;AApBM,+BAAc,GAAG,QAAQ,AAAX,CAAY;AAC1B,gCAAe,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,AAA1B,CAA2B;kBAH7B,gBAAgB"}