@lodestar/beacon-node 1.42.0-dev.eec18d0609 → 1.42.0-dev.f403d99def
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/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +31 -11
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +4 -0
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/index.js +13 -10
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/lodestar/index.d.ts.map +1 -1
- package/lib/api/impl/lodestar/index.js +4 -0
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +9 -3
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts +2 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.js +5 -5
- package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
- package/lib/chain/GetBlobsTracker.d.ts +2 -1
- package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
- package/lib/chain/GetBlobsTracker.js +14 -12
- package/lib/chain/GetBlobsTracker.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts +5 -5
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/blockInput/types.d.ts +4 -4
- package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +19 -5
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +14 -5
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
- package/lib/chain/blocks/index.js +1 -1
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +14 -6
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +33 -2
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +2 -1
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/types.d.ts +3 -3
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +3 -2
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +4 -2
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/chain.d.ts +4 -2
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +77 -28
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +29 -7
- package/lib/chain/emitter.d.ts.map +1 -1
- package/lib/chain/emitter.js +12 -3
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/blockError.d.ts +11 -1
- package/lib/chain/errors/blockError.d.ts.map +1 -1
- package/lib/chain/errors/blockError.js +4 -0
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts +31 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.js +7 -0
- package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +10 -8
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/interface.d.ts +5 -2
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/lightClient/index.d.ts +2 -2
- package/lib/chain/lightClient/index.d.ts.map +1 -1
- package/lib/chain/lightClient/index.js +7 -0
- package/lib/chain/lightClient/index.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +5 -2
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/executionPayloadBidPool.d.ts +2 -2
- package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
- package/lib/chain/opPools/executionPayloadBidPool.js +2 -2
- package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +7 -1
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts +3 -3
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js +8 -8
- package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -5
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +23 -4
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +2 -2
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +2 -2
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
- package/lib/chain/validation/block.d.ts.map +1 -1
- package/lib/chain/validation/block.js +27 -5
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +11 -4
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.js +184 -5
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +7 -4
- package/lib/chain/validation/executionPayloadBid.js.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.js +6 -1
- package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.js +4 -1
- package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
- package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
- package/lib/chain/validation/syncCommittee.js +4 -0
- package/lib/chain/validation/syncCommittee.js.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.js +4 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +3 -3
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/db/buckets.d.ts +2 -2
- package/lib/db/buckets.d.ts.map +1 -1
- package/lib/db/buckets.js +2 -2
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
- package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
- package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
- package/lib/db/repositories/dataColumnSidecar.js +4 -2
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js +4 -2
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +20 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +33 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/interface.d.ts +3 -2
- package/lib/network/interface.d.ts.map +1 -1
- package/lib/network/network.d.ts +3 -2
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +3 -0
- package/lib/network/network.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
- package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js +25 -5
- package/lib/network/processor/extractSlotRootFns.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +246 -66
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/index.d.ts +11 -1
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +234 -22
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +2 -0
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +7 -3
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +6 -0
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +2 -2
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +7 -3
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +2 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +3 -8
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +3 -3
- package/lib/network/reqresp/types.d.ts.map +1 -1
- package/lib/network/reqresp/types.js +9 -3
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +4 -1
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/notifier.d.ts.map +1 -1
- package/lib/node/notifier.js +2 -2
- package/lib/node/notifier.js.map +1 -1
- package/lib/sync/unknownBlock.js +2 -2
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +3 -3
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +4 -2
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts +3 -3
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRoot.js +10 -5
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/util/blobs.d.ts +3 -3
- package/lib/util/blobs.d.ts.map +1 -1
- package/lib/util/blobs.js +21 -10
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/dataColumns.d.ts +18 -11
- package/lib/util/dataColumns.d.ts.map +1 -1
- package/lib/util/dataColumns.js +51 -17
- package/lib/util/dataColumns.js.map +1 -1
- package/lib/util/execution.d.ts +6 -2
- package/lib/util/execution.d.ts.map +1 -1
- package/lib/util/execution.js +49 -25
- package/lib/util/execution.js.map +1 -1
- package/lib/util/sszBytes.d.ts +25 -1
- package/lib/util/sszBytes.d.ts.map +1 -1
- package/lib/util/sszBytes.js +189 -2
- package/lib/util/sszBytes.js.map +1 -1
- package/package.json +15 -15
- package/src/api/impl/beacon/blocks/index.ts +46 -14
- package/src/api/impl/beacon/pool/index.ts +4 -0
- package/src/api/impl/beacon/state/index.ts +15 -15
- package/src/api/impl/debug/index.ts +2 -2
- package/src/api/impl/lodestar/index.ts +4 -0
- package/src/api/impl/validator/index.ts +9 -2
- package/src/chain/ColumnReconstructionTracker.ts +6 -5
- package/src/chain/GetBlobsTracker.ts +14 -12
- package/src/chain/blocks/blockInput/blockInput.ts +8 -8
- package/src/chain/blocks/blockInput/types.ts +4 -4
- package/src/chain/blocks/importBlock.ts +29 -8
- package/src/chain/blocks/importExecutionPayload.ts +15 -5
- package/src/chain/blocks/index.ts +1 -1
- package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +53 -12
- package/src/chain/blocks/payloadEnvelopeInput/types.ts +2 -1
- package/src/chain/blocks/types.ts +3 -3
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +2 -1
- package/src/chain/blocks/verifyBlocksSignatures.ts +9 -2
- package/src/chain/chain.ts +93 -32
- package/src/chain/emitter.ts +25 -7
- package/src/chain/errors/blockError.ts +7 -1
- package/src/chain/errors/dataColumnSidecarError.ts +32 -1
- package/src/chain/forkChoice/index.ts +11 -8
- package/src/chain/interface.ts +9 -2
- package/src/chain/lightClient/index.ts +15 -3
- package/src/chain/opPools/aggregatedAttestationPool.ts +6 -1
- package/src/chain/opPools/executionPayloadBidPool.ts +3 -3
- package/src/chain/prepareNextSlot.ts +8 -0
- package/src/chain/produceBlock/computeNewStateRoot.ts +11 -10
- package/src/chain/produceBlock/produceBlockBody.ts +40 -10
- package/src/chain/seenCache/seenGossipBlockInput.ts +2 -2
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +2 -2
- package/src/chain/validation/block.ts +30 -7
- package/src/chain/validation/dataColumnSidecar.ts +230 -7
- package/src/chain/validation/executionPayloadBid.ts +7 -3
- package/src/chain/validation/executionPayloadEnvelope.ts +10 -1
- package/src/chain/validation/payloadAttestationMessage.ts +4 -0
- package/src/chain/validation/syncCommittee.ts +5 -1
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +5 -1
- package/src/chain/validatorMonitor.ts +3 -2
- package/src/db/buckets.ts +2 -2
- package/src/db/repositories/dataColumnSidecar.ts +4 -2
- package/src/db/repositories/dataColumnSidecarArchive.ts +4 -2
- package/src/metrics/metrics/lodestar.ts +34 -0
- package/src/network/interface.ts +3 -2
- package/src/network/network.ts +7 -4
- package/src/network/processor/extractSlotRootFns.ts +32 -6
- package/src/network/processor/gossipHandlers.ts +310 -79
- package/src/network/processor/index.ts +304 -22
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +3 -1
- package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +3 -0
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +15 -3
- package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +11 -0
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +19 -3
- package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +3 -1
- package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +3 -12
- package/src/network/reqresp/types.ts +13 -5
- package/src/node/nodejs.ts +5 -2
- package/src/node/notifier.ts +7 -2
- package/src/sync/unknownBlock.ts +3 -3
- package/src/sync/utils/downloadByRange.ts +9 -7
- package/src/sync/utils/downloadByRoot.ts +16 -12
- package/src/util/blobs.ts +35 -15
- package/src/util/dataColumns.ts +69 -25
- package/src/util/execution.ts +49 -30
- package/src/util/sszBytes.ts +245 -3
|
@@ -7,6 +7,7 @@ import { ChainEvent } from "../../chain/emitter.js";
|
|
|
7
7
|
import { GossipErrorCode } from "../../chain/errors/gossipValidation.js";
|
|
8
8
|
import { ClockEvent } from "../../util/clock.js";
|
|
9
9
|
import { callInNextEventLoop } from "../../util/eventLoop.js";
|
|
10
|
+
import { getBeaconBlockRootFromExecutionPayloadEnvelopeSerialized, getDataIndexFromSignedAggregateAndProofSerialized, getDataIndexFromSingleAttestationSerialized, getParentBlockHashFromGloasSignedBeaconBlockSerialized, getParentBlockHashFromSignedExecutionPayloadBidSerialized, getParentBlockRootFromSignedExecutionPayloadBidSerialized, getParentRootFromSignedBeaconBlockSerialized, getPayloadPresentFromPayloadAttestationMessageSerialized, } from "../../util/sszBytes.js";
|
|
10
11
|
import { NetworkEvent } from "../events.js";
|
|
11
12
|
import { GossipType, } from "../gossip/interface.js";
|
|
12
13
|
import { createExtractBlockSlotRootFns } from "./extractSlotRootFns.js";
|
|
@@ -52,6 +53,8 @@ const executeGossipWorkOrder = Object.keys(executeGossipWorkOrderObj);
|
|
|
52
53
|
const MAX_JOBS_SUBMITTED_PER_TICK = 128;
|
|
53
54
|
// How many gossip messages we keep before new ones get dropped.
|
|
54
55
|
const MAX_QUEUED_UNKNOWN_BLOCK_GOSSIP_OBJECTS = 16_384;
|
|
56
|
+
// TODO gloas: arbitrary constant, check metrics.
|
|
57
|
+
const MAX_QUEUED_UNKNOWN_PAYLOAD_GOSSIP_OBJECTS = 1024;
|
|
55
58
|
// We don't want to process too many gossip messages in a single tick
|
|
56
59
|
// As seen on mainnet, gossip messages concurrency metric ranges from 1000 to 2000
|
|
57
60
|
// so make this constant a little bit conservative
|
|
@@ -88,6 +91,15 @@ var CannotAcceptWorkReason;
|
|
|
88
91
|
*/
|
|
89
92
|
CannotAcceptWorkReason["regen"] = "regen_busy";
|
|
90
93
|
})(CannotAcceptWorkReason || (CannotAcceptWorkReason = {}));
|
|
94
|
+
/**
|
|
95
|
+
* No metrics needed here; using a number to keep it lightweight
|
|
96
|
+
*/
|
|
97
|
+
var PreprocessAction;
|
|
98
|
+
(function (PreprocessAction) {
|
|
99
|
+
PreprocessAction[PreprocessAction["AwaitBlock"] = 0] = "AwaitBlock";
|
|
100
|
+
PreprocessAction[PreprocessAction["AwaitEnvelope"] = 1] = "AwaitEnvelope";
|
|
101
|
+
PreprocessAction[PreprocessAction["PushToQueue"] = 2] = "PushToQueue";
|
|
102
|
+
})(PreprocessAction || (PreprocessAction = {}));
|
|
91
103
|
/**
|
|
92
104
|
* Network processor handles the gossip queues and throtles processing to not overload the main thread
|
|
93
105
|
* - Decides when to process work and what to process
|
|
@@ -122,7 +134,11 @@ export class NetworkProcessor {
|
|
|
122
134
|
// we may not receive the block for messages like Attestation and SignedAggregateAndProof messages, in that case PendingGossipsubMessage needs
|
|
123
135
|
// to be stored in this Map and reprocessed once the block comes
|
|
124
136
|
awaitingMessagesByBlockRoot;
|
|
137
|
+
// we may not receive the payload for messages that require the FULL payload variant to be processed,
|
|
138
|
+
// in that case PendingGossipsubMessage needs to be stored in this Map and reprocessed once the payload comes
|
|
139
|
+
awaitingMessagesByPayloadBlockRoot;
|
|
125
140
|
unknownBlocksBySlot = new MapDef(() => new Set());
|
|
141
|
+
unknownEnvelopesBySlot = new MapDef(() => new Set());
|
|
126
142
|
constructor(modules, opts) {
|
|
127
143
|
this.opts = opts;
|
|
128
144
|
const { chain, events, logger, metrics } = modules;
|
|
@@ -135,10 +151,12 @@ export class NetworkProcessor {
|
|
|
135
151
|
this.gossipTopicConcurrency = mapValues(this.gossipQueues, () => 0);
|
|
136
152
|
this.gossipValidatorFn = getGossipValidatorFn(modules.gossipHandlers ?? getGossipHandlers(modules, opts), modules);
|
|
137
153
|
this.gossipValidatorBatchFn = getGossipValidatorBatchFn(modules.gossipHandlers ?? getGossipHandlers(modules, opts), modules);
|
|
138
|
-
events.on(NetworkEvent.pendingGossipsubMessage, this.onPendingGossipsubMessage
|
|
139
|
-
this.chain.emitter.on(routes.events.EventType.block, this.onBlockProcessed
|
|
140
|
-
this.chain.
|
|
154
|
+
events.on(NetworkEvent.pendingGossipsubMessage, this.onPendingGossipsubMessage);
|
|
155
|
+
this.chain.emitter.on(routes.events.EventType.block, this.onBlockProcessed);
|
|
156
|
+
this.chain.emitter.on(routes.events.EventType.executionPayload, this.onPayloadEnvelopeProcessed);
|
|
157
|
+
this.chain.clock.on(ClockEvent.slot, this.onClockSlot);
|
|
141
158
|
this.awaitingMessagesByBlockRoot = new MapDef(() => new Set());
|
|
159
|
+
this.awaitingMessagesByPayloadBlockRoot = new MapDef(() => new Set());
|
|
142
160
|
// TODO: Implement queues and priorization for ReqResp incoming requests
|
|
143
161
|
// Listens to NetworkEvent.reqRespIncomingRequest event
|
|
144
162
|
if (metrics) {
|
|
@@ -149,6 +167,7 @@ export class NetworkProcessor {
|
|
|
149
167
|
metrics.gossipValidationQueue.concurrency.set({ topic }, this.gossipTopicConcurrency[topic]);
|
|
150
168
|
}
|
|
151
169
|
metrics.awaitingBlockGossipMessages.countPerSlot.set(this.unknownBlockGossipsubMessagesCount);
|
|
170
|
+
metrics.awaitingPayloadGossipMessages.countPerSlot.set(this.unknownPayloadGossipsubMessagesCount);
|
|
152
171
|
// specific metric for beacon_attestation topic
|
|
153
172
|
metrics.gossipValidationQueue.keyAge.reset();
|
|
154
173
|
for (const ageMs of this.gossipQueues.beacon_attestation.getDataAgeMs()) {
|
|
@@ -163,6 +182,7 @@ export class NetworkProcessor {
|
|
|
163
182
|
async stop() {
|
|
164
183
|
this.events.off(NetworkEvent.pendingGossipsubMessage, this.onPendingGossipsubMessage);
|
|
165
184
|
this.chain.emitter.off(routes.events.EventType.block, this.onBlockProcessed);
|
|
185
|
+
this.chain.emitter.off(routes.events.EventType.executionPayload, this.onPayloadEnvelopeProcessed);
|
|
166
186
|
this.chain.emitter.off(ClockEvent.slot, this.onClockSlot);
|
|
167
187
|
}
|
|
168
188
|
dropAllJobs() {
|
|
@@ -179,7 +199,7 @@ export class NetworkProcessor {
|
|
|
179
199
|
}
|
|
180
200
|
/**
|
|
181
201
|
* Search block via `ChainEvent.unknownBlockRoot` event
|
|
182
|
-
*
|
|
202
|
+
* Slot is the message slot, which is not necessarily the same as the block's slot, but it can be used for a good prune strategy.
|
|
183
203
|
* In the rare case, if 2 messages on 2 slots search for the same root (for example beacon_attestation) we may emit the same root twice but BlockInputSync should handle it well.
|
|
184
204
|
*/
|
|
185
205
|
searchUnknownBlock({ slot, root }, source, peer) {
|
|
@@ -192,9 +212,25 @@ export class NetworkProcessor {
|
|
|
192
212
|
this.unknownBlocksBySlot.getOrDefault(slot).add(root);
|
|
193
213
|
this.chain.emitter.emit(ChainEvent.unknownBlockRoot, { rootHex: root, peer, source });
|
|
194
214
|
}
|
|
195
|
-
|
|
215
|
+
/**
|
|
216
|
+
* Search envelope via `ChainEvent.unknownEnvelopeBlockRoot` event
|
|
217
|
+
* Slot is the message slot, which is not necessarily the same as the envelope's slot, but it can be used for a good prune strategy.
|
|
218
|
+
* In the rare case, if 2 messages on 2 slots search for the same root (for example beacon_attestation) we may emit the same root twice but BlockInputSync should handle it well.
|
|
219
|
+
*/
|
|
220
|
+
searchUnknownEnvelope({ slot, root }, source, peer) {
|
|
221
|
+
if (this.chain.seenPayloadEnvelope(root) ||
|
|
222
|
+
this.awaitingMessagesByPayloadBlockRoot.has(root) ||
|
|
223
|
+
this.unknownEnvelopesBySlot.getOrDefault(slot).has(root)) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
this.unknownEnvelopesBySlot.getOrDefault(slot).add(root);
|
|
227
|
+
this.chain.emitter.emit(ChainEvent.unknownEnvelopeBlockRoot, { rootHex: root, peer, source });
|
|
228
|
+
}
|
|
229
|
+
onPendingGossipsubMessage = (message) => {
|
|
196
230
|
const topicType = message.topic.type;
|
|
197
231
|
const extractBlockSlotRootFn = this.extractBlockSlotRootFns[topicType];
|
|
232
|
+
// 1st extract round: make sure slot is in range and if block root is not available
|
|
233
|
+
// proactively search for it + queue the message
|
|
198
234
|
const slotRoot = extractBlockSlotRootFn
|
|
199
235
|
? extractBlockSlotRootFn(message.msg.data, message.topic.boundary.fork)
|
|
200
236
|
: null;
|
|
@@ -223,24 +259,153 @@ export class NetworkProcessor {
|
|
|
223
259
|
return;
|
|
224
260
|
}
|
|
225
261
|
message.msgSlot = slot;
|
|
262
|
+
// this determines whether this message needs to wait for a Block or Envelope
|
|
263
|
+
// a message should only wait for what it voted for, hence we don't want to put it on both queues
|
|
264
|
+
let preprocessResult = { action: PreprocessAction.PushToQueue };
|
|
226
265
|
// no need to check if root is a descendant of the current finalized block, it will be checked once we validate the message if needed
|
|
227
266
|
if (root && !this.chain.forkChoice.hasBlockHexUnsafe(root)) {
|
|
267
|
+
// starting from GLOAS, unknown root from data_column_sidecar also falls into this case
|
|
228
268
|
this.searchUnknownBlock({ slot, root }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
269
|
+
// for beacon_attestation and beacon_aggregate_and_proof messages, this is only temporary.
|
|
270
|
+
// if "index = 1" we need to await for the Envelope instead
|
|
271
|
+
preprocessResult = { action: PreprocessAction.AwaitBlock, root };
|
|
272
|
+
}
|
|
273
|
+
// 2nd extract round for some specific topics
|
|
274
|
+
// we separate the search action from the await action
|
|
275
|
+
// beacon_block: proactively search for parent block/envelope across all forks, but never queue.
|
|
276
|
+
// BlockInputSync handles cascading recovery if the gossip handler throws.
|
|
277
|
+
if (topicType === GossipType.beacon_block) {
|
|
278
|
+
const parentRoot = getParentRootFromSignedBeaconBlockSerialized(message.msg.data);
|
|
279
|
+
if (parentRoot) {
|
|
280
|
+
if (ForkSeq[fork] >= ForkSeq.gloas) {
|
|
281
|
+
// GLOAS: also check parent envelope, same logic as execution_payload_bid
|
|
282
|
+
const parentBlockHash = getParentBlockHashFromGloasSignedBeaconBlockSerialized(message.msg.data);
|
|
283
|
+
if (parentBlockHash && !this.chain.forkChoice.getBlockHexAndBlockHash(parentRoot, parentBlockHash)) {
|
|
284
|
+
const protoBlock = this.chain.forkChoice.getBlockHexDefaultStatus(parentRoot);
|
|
285
|
+
if (protoBlock === null) {
|
|
286
|
+
this.searchUnknownBlock({ slot, root: parentRoot }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
287
|
+
}
|
|
288
|
+
else if (protoBlock.executionPayloadBlockHash &&
|
|
289
|
+
protoBlock.executionPayloadBlockHash !== parentBlockHash) {
|
|
290
|
+
// only search for the envelope by block root if we're sure there is one. Otherwise UnknownBlockSync will penalize the peer.
|
|
291
|
+
this.searchUnknownEnvelope({ slot, root: parentRoot }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
else if (!this.chain.forkChoice.hasBlockHexUnsafe(parentRoot)) {
|
|
296
|
+
this.searchUnknownBlock({ slot, root: parentRoot }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
297
|
+
}
|
|
236
298
|
}
|
|
237
|
-
|
|
238
|
-
const awaitingGossipsubMessages = this.awaitingMessagesByBlockRoot.getOrDefault(root);
|
|
239
|
-
awaitingGossipsubMessages.add(message);
|
|
240
|
-
return;
|
|
299
|
+
preprocessResult = { action: PreprocessAction.PushToQueue };
|
|
241
300
|
}
|
|
242
|
-
|
|
243
|
-
|
|
301
|
+
if (ForkSeq[fork] >= ForkSeq.gloas) {
|
|
302
|
+
// specific check for each topic
|
|
303
|
+
// note that it's supposed to NOT queue beacon_block (handled above) and execution_payload because it's not a one-off;
|
|
304
|
+
// for those topics, gossip handlers will throw and BlockInputSync will handle a tree of them instead
|
|
305
|
+
switch (topicType) {
|
|
306
|
+
case GossipType.beacon_attestation:
|
|
307
|
+
case GossipType.beacon_aggregate_and_proof: {
|
|
308
|
+
if (root == null)
|
|
309
|
+
break;
|
|
310
|
+
const attIndex = topicType === GossipType.beacon_attestation
|
|
311
|
+
? getDataIndexFromSingleAttestationSerialized(fork, message.msg.data)
|
|
312
|
+
: getDataIndexFromSignedAggregateAndProofSerialized(message.msg.data);
|
|
313
|
+
if (attIndex === 1 && !this.chain.forkChoice.hasPayloadHexUnsafe(root)) {
|
|
314
|
+
// attestation votes that the payload is available but it is not yet known
|
|
315
|
+
this.searchUnknownEnvelope({ slot, root }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
316
|
+
preprocessResult = { action: PreprocessAction.AwaitEnvelope, root };
|
|
317
|
+
}
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
case GossipType.payload_attestation_message: {
|
|
321
|
+
if (root == null)
|
|
322
|
+
break;
|
|
323
|
+
const payloadPresent = getPayloadPresentFromPayloadAttestationMessageSerialized(message.msg.data);
|
|
324
|
+
if (payloadPresent && !this.chain.forkChoice.hasPayloadHexUnsafe(root)) {
|
|
325
|
+
// payload attestation votes that the payload is available but it is not yet known
|
|
326
|
+
this.searchUnknownEnvelope({ slot, root }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
327
|
+
// do not await the envelope, payload attestation processing only requires that the block is known
|
|
328
|
+
// also do not reset preprocessResult, we may already await for the block
|
|
329
|
+
}
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
case GossipType.data_column_sidecar: {
|
|
333
|
+
if (root == null)
|
|
334
|
+
break;
|
|
335
|
+
if (!this.chain.forkChoice.hasPayloadHexUnsafe(root)) {
|
|
336
|
+
this.searchUnknownEnvelope({ slot, root }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
337
|
+
// do not await the envelope, we can do gossip validation
|
|
338
|
+
// also do not reset preprocessResult, we may already await for the block
|
|
339
|
+
}
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
case GossipType.execution_payload: {
|
|
343
|
+
// extractBlockSlotRootFn does not return a root for this topic.
|
|
344
|
+
// Extract beacon_block_root directly and proactively trigger block sync if missing.
|
|
345
|
+
// Do NOT await the block — the handler runs immediately; BlockInputSync handles recovery.
|
|
346
|
+
const blockRoot = getBeaconBlockRootFromExecutionPayloadEnvelopeSerialized(message.msg.data);
|
|
347
|
+
if (blockRoot && !this.chain.forkChoice.hasBlockHexUnsafe(blockRoot)) {
|
|
348
|
+
this.searchUnknownBlock({ slot, root: blockRoot }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
349
|
+
}
|
|
350
|
+
// do not await the block, we want UnknownBlockSync to handle it.
|
|
351
|
+
preprocessResult = { action: PreprocessAction.PushToQueue };
|
|
352
|
+
break;
|
|
353
|
+
}
|
|
354
|
+
case GossipType.execution_payload_bid: {
|
|
355
|
+
// instead of searching for the message root, this searches for the parent root
|
|
356
|
+
const parentBlockRoot = getParentBlockRootFromSignedExecutionPayloadBidSerialized(message.msg.data);
|
|
357
|
+
const parentBlockHash = getParentBlockHashFromSignedExecutionPayloadBidSerialized(message.msg.data);
|
|
358
|
+
if (parentBlockRoot &&
|
|
359
|
+
parentBlockHash &&
|
|
360
|
+
!this.chain.forkChoice.getBlockHexAndBlockHash(parentBlockRoot, parentBlockHash)) {
|
|
361
|
+
const protoBlock = this.chain.forkChoice.getBlockHexDefaultStatus(parentBlockRoot);
|
|
362
|
+
if (protoBlock === null) {
|
|
363
|
+
this.searchUnknownBlock({ slot, root: parentBlockRoot }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
364
|
+
preprocessResult = { action: PreprocessAction.AwaitBlock, root: parentBlockRoot };
|
|
365
|
+
}
|
|
366
|
+
else if (protoBlock.executionPayloadBlockHash &&
|
|
367
|
+
protoBlock.executionPayloadBlockHash !== parentBlockHash) {
|
|
368
|
+
this.searchUnknownEnvelope({ slot, root: parentBlockRoot }, BlockInputSource.network_processor, message.propagationSource.toString());
|
|
369
|
+
preprocessResult = { action: PreprocessAction.AwaitEnvelope, root: parentBlockRoot };
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
switch (preprocessResult.action) {
|
|
377
|
+
case PreprocessAction.PushToQueue:
|
|
378
|
+
this.pushPendingGossipsubMessageToQueue(message);
|
|
379
|
+
break;
|
|
380
|
+
case PreprocessAction.AwaitBlock: {
|
|
381
|
+
if (this.unknownBlockGossipsubMessagesCount > MAX_QUEUED_UNKNOWN_BLOCK_GOSSIP_OBJECTS) {
|
|
382
|
+
// No need to report the dropped job to gossip. It will be eventually pruned from the mcache
|
|
383
|
+
this.metrics?.awaitingBlockGossipMessages.reject.inc({
|
|
384
|
+
reason: ReprocessRejectReason.reached_limit,
|
|
385
|
+
topic: topicType,
|
|
386
|
+
});
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
this.metrics?.awaitingBlockGossipMessages.queue.inc({ topic: topicType });
|
|
390
|
+
const awaitingGossipsubMessages = this.awaitingMessagesByBlockRoot.getOrDefault(preprocessResult.root);
|
|
391
|
+
awaitingGossipsubMessages.add(message);
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
case PreprocessAction.AwaitEnvelope: {
|
|
395
|
+
if (this.unknownPayloadGossipsubMessagesCount > MAX_QUEUED_UNKNOWN_PAYLOAD_GOSSIP_OBJECTS) {
|
|
396
|
+
this.metrics?.awaitingPayloadGossipMessages.reject.inc({
|
|
397
|
+
reason: ReprocessRejectReason.reached_limit,
|
|
398
|
+
topic: topicType,
|
|
399
|
+
});
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
this.metrics?.awaitingPayloadGossipMessages.queue.inc({ topic: topicType });
|
|
403
|
+
const awaitingPayloadGossipsubMessages = this.awaitingMessagesByPayloadBlockRoot.getOrDefault(preprocessResult.root);
|
|
404
|
+
awaitingPayloadGossipsubMessages.add(message);
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
};
|
|
244
409
|
pushPendingGossipsubMessageToQueue(message) {
|
|
245
410
|
const topicType = message.topic.type;
|
|
246
411
|
const droppedCount = this.gossipQueues[topicType].add(message);
|
|
@@ -251,7 +416,7 @@ export class NetworkProcessor {
|
|
|
251
416
|
// Tentatively perform work
|
|
252
417
|
this.executeWork();
|
|
253
418
|
}
|
|
254
|
-
async
|
|
419
|
+
onBlockProcessed = async ({ block: rootHex }) => {
|
|
255
420
|
const waitingGossipsubMessages = this.awaitingMessagesByBlockRoot.get(rootHex);
|
|
256
421
|
if (!waitingGossipsubMessages || waitingGossipsubMessages.size === 0) {
|
|
257
422
|
return;
|
|
@@ -273,8 +438,28 @@ export class NetworkProcessor {
|
|
|
273
438
|
}
|
|
274
439
|
}
|
|
275
440
|
this.awaitingMessagesByBlockRoot.delete(rootHex);
|
|
276
|
-
}
|
|
277
|
-
|
|
441
|
+
};
|
|
442
|
+
onPayloadEnvelopeProcessed = async ({ blockRoot: rootHex }) => {
|
|
443
|
+
const waitingGossipsubMessages = this.awaitingMessagesByPayloadBlockRoot.get(rootHex);
|
|
444
|
+
if (!waitingGossipsubMessages || waitingGossipsubMessages.size === 0) {
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
const nowSec = Date.now() / 1000;
|
|
448
|
+
let count = 0;
|
|
449
|
+
for (const message of waitingGossipsubMessages) {
|
|
450
|
+
const topicType = message.topic.type;
|
|
451
|
+
this.metrics?.awaitingPayloadGossipMessages.waitSecBeforeResolve.set({ topic: topicType }, nowSec - message.seenTimestampSec);
|
|
452
|
+
this.metrics?.awaitingPayloadGossipMessages.resolve.inc({ topic: topicType });
|
|
453
|
+
this.pushPendingGossipsubMessageToQueue(message);
|
|
454
|
+
count++;
|
|
455
|
+
if (count === MAX_AWAITING_GOSSIP_OBJECTS_PER_TICK) {
|
|
456
|
+
count = 0;
|
|
457
|
+
await sleep(AWAITING_GOSSIP_OBJECTS_YIELD_EVERY_MS);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
this.awaitingMessagesByPayloadBlockRoot.delete(rootHex);
|
|
461
|
+
};
|
|
462
|
+
onClockSlot = (clockSlot) => {
|
|
278
463
|
const nowSec = Date.now() / 1000;
|
|
279
464
|
const minSlot = clockSlot - MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE;
|
|
280
465
|
for (const [slot, roots] of this.unknownBlocksBySlot) {
|
|
@@ -297,7 +482,27 @@ export class NetworkProcessor {
|
|
|
297
482
|
}
|
|
298
483
|
this.unknownBlocksBySlot.delete(slot);
|
|
299
484
|
}
|
|
300
|
-
|
|
485
|
+
for (const [slot, roots] of this.unknownEnvelopesBySlot) {
|
|
486
|
+
if (slot > minSlot)
|
|
487
|
+
continue;
|
|
488
|
+
for (const rootHex of roots) {
|
|
489
|
+
const gossipMessages = this.awaitingMessagesByPayloadBlockRoot.get(rootHex);
|
|
490
|
+
if (gossipMessages !== undefined) {
|
|
491
|
+
for (const message of gossipMessages) {
|
|
492
|
+
const topicType = message.topic.type;
|
|
493
|
+
this.metrics?.awaitingPayloadGossipMessages.reject.inc({
|
|
494
|
+
topic: topicType,
|
|
495
|
+
reason: ReprocessRejectReason.expired,
|
|
496
|
+
});
|
|
497
|
+
this.metrics?.awaitingPayloadGossipMessages.waitSecBeforeReject.set({ topic: topicType, reason: ReprocessRejectReason.expired }, nowSec - message.seenTimestampSec);
|
|
498
|
+
// No need to report the dropped job to gossip. It will be eventually pruned from the mcache
|
|
499
|
+
}
|
|
500
|
+
this.awaitingMessagesByPayloadBlockRoot.delete(rootHex);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
this.unknownEnvelopesBySlot.delete(slot);
|
|
504
|
+
}
|
|
505
|
+
};
|
|
301
506
|
executeWork() {
|
|
302
507
|
// TODO: Maybe de-bounce by timing the last time executeWork was run
|
|
303
508
|
this.metrics?.networkProcessor.executeWorkCalls.inc();
|
|
@@ -418,5 +623,12 @@ export class NetworkProcessor {
|
|
|
418
623
|
}
|
|
419
624
|
return count;
|
|
420
625
|
}
|
|
626
|
+
get unknownPayloadGossipsubMessagesCount() {
|
|
627
|
+
let count = 0;
|
|
628
|
+
for (const messages of this.awaitingMessagesByPayloadBlockRoot.values()) {
|
|
629
|
+
count += messages.size;
|
|
630
|
+
}
|
|
631
|
+
return count;
|
|
632
|
+
}
|
|
421
633
|
}
|
|
422
634
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/processor/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/processor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAS,MAAM,EAAE,SAAS,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,wCAAwC,CAAC;AAIvE,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EACL,wDAAwD,EACxD,iDAAiD,EACjD,2CAA2C,EAC3C,sDAAsD,EACtD,yDAAyD,EACzD,yDAAyD,EACzD,4CAA4C,EAC5C,wDAAwD,GACzD,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,YAAY,EAAkB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAGL,UAAU,GAGX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,6BAA6B,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAyC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAqB,yBAAyB,EAAE,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG3G,cAAc,YAAY,CAAC;AAiB3B;;GAEG;AACH,MAAM,iCAAiC,GAAG,CAAC,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,0CAA0C,GAAG,EAAE,CAAC;AAMtD;;;GAGG;AACH,MAAM,yBAAyB,GAAiC;IAC9D,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;IAC9C,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;IAC9C,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;IACrD,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,EAAE;IAC3C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,EAAE;IAC/B,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,EAAE;IACxC,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,EAAE;IACnC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,EAAE;IAClC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,EAAE;IAClC,CAAC,UAAU,CAAC,qCAAqC,CAAC,EAAE,EAAE;IACtD,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,EAAE;IAC/B,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,EAAE;IAC7C,CAAC,UAAU,CAAC,8BAA8B,CAAC,EAAE,EAAE;IAC/C,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;IACnD,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,EAAE;IAC5C,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,EAAE;CACvC,CAAC;AACF,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAA+C,CAAC;AAEpH,0CAA0C;AAC1C,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAExC,gEAAgE;AAChE,MAAM,uCAAuC,GAAG,MAAM,CAAC;AACvD,iDAAiD;AACjD,MAAM,yCAAyC,GAAG,IAAI,CAAC;AAEvD,qEAAqE;AACrE,kFAAkF;AAClF,kDAAkD;AAClD,MAAM,oCAAoC,GAAG,IAAI,CAAC;AAElD,yEAAyE;AACzE,MAAM,sCAAsC,GAAG,EAAE,CAAC;SAKtC,qBAAqB;AAHjC;;GAEG;AACH,IAAY,qBASX;AATD,WAAY,qBAAqB;IAC/B;;OAEG;IACH,wDAA+B,CAAA;IAC/B;;OAEG;IACH,4CAAmB,CAAA;AAAC,CACtB,EATY,qBAAqB,KAArB,qBAAqB,QAShC;SAKW,sBAAsB;AAHlC;;GAEG;AACH,IAAY,sBASX;AATD,WAAY,sBAAsB;IAChC;;OAEG;IACH,0CAAgB,CAAA;IAChB;;OAEG;IACH,8CAAoB,CAAA;AAAC,CACvB,EATY,sBAAsB,KAAtB,sBAAsB,QASjC;AAED;;GAEG;AACH,IAAK,gBAIJ;AAJD,WAAK,gBAAgB;IACnB,mEAAU,CAAA;IACV,yEAAa,CAAA;IACb,qEAAW,CAAA;AAAC,CACd,EAJK,gBAAgB,KAAhB,gBAAgB,QAIpB;AAOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,gBAAgB;IAqBR,IAAI;IApBN,KAAK,CAAe;IACpB,MAAM,CAAkB;IACxB,MAAM,CAAS;IACf,OAAO,CAAiB;IACxB,iBAAiB,CAAoB;IACrC,sBAAsB,CAAyB;IAC/C,YAAY,CAAwC;IACpD,sBAAsB,CAA8B;IACpD,uBAAuB,GAAG,6BAA6B,EAAE,CAAC;IAC3E,8IAA8I;IAC9I,gEAAgE;IAC/C,2BAA2B,CAAgD;IAC5F,qGAAqG;IACrG,6GAA6G;IAC5F,kCAAkC,CAAgD;IAC3F,mBAAmB,GAAG,IAAI,MAAM,CAAqB,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACtE,sBAAsB,GAAG,IAAI,MAAM,CAAqB,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAEjF,YACE,OAAgC,EACf,IAA0B,EAC3C;oBADiB,IAAI;QAErB,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,GAAG,OAAO,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,cAAc,IAAI,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACnH,IAAI,CAAC,sBAAsB,GAAG,yBAAyB,CACrD,OAAO,CAAC,cAAc,IAAI,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAC1D,OAAO,CACR,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACjG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvD,IAAI,CAAC,2BAA2B,GAAG,IAAI,MAAM,CAAwC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACtG,IAAI,CAAC,kCAAkC,GAAG,IAAI,MAAM,CAAwC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QAE7G,wEAAwE;QACxE,uDAAuD;QAEvD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBACpD,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;oBAC3C,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;oBACnF,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;oBACrF,OAAO,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7F,CAAC;gBACD,OAAO,CAAC,2BAA2B,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBAC9F,OAAO,CAAC,6BAA6B,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAClG,+CAA+C;gBAC/C,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,CAAC;oBACxE,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;gBAC7D,CAAC;YAAA,CACF,CAAC,CAAC;QACL,CAAC;QAED,qCAAqC;QACrC,kDAAkD;QAClD,oDAAoD;IAJnD,CAKF;IAED,KAAK,CAAC,IAAI,GAAkB;QAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC3D;IAED,WAAW,GAAS;QAClB,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACnC,CAAC;IAAA,CACF;IAED,eAAe,CAAC,KAAiB,EAA6B;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,sBAAsB,KAAK,mBAAmB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;IAAA,CACvB;IAED;;;;OAIG;IACH,kBAAkB,CAAC,EAAC,IAAI,EAAE,IAAI,EAAc,EAAE,MAAwB,EAAE,IAAgB,EAAQ;QAC9F,IACE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EACrD,CAAC;YACD,OAAO;QACT,CAAC;QACD,+BAA+B;QAC/B,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAAA,CACrF;IAED;;;;OAIG;IACH,qBAAqB,CAAC,EAAC,IAAI,EAAE,IAAI,EAAc,EAAE,MAAwB,EAAE,IAAgB,EAAQ;QACjG,IACE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACpC,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,IAAI,CAAC;YACjD,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EACxD,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAAA,CAC7F;IAEO,yBAAyB,GAAG,CAAC,OAAgC,EAAQ,EAAE,CAAC;QAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,MAAM,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAEvE,mFAAmF;QACnF,gDAAgD;QAChD,MAAM,QAAQ,GAAG,sBAAsB;YACrC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvE,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,yCAAyC;YACzC,kHAAkH;YAClH,IAAI,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,6DAA6D;QAC7D,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,GAAG,QAAQ,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/C,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtC,IAAI,uBAAuB,GAAG,SAAS,GAAG,0CAA0C,CAAC;QACrF,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,KAAK,UAAU,CAAC,kBAAkB,EAAE,CAAC;YAClF,qEAAqE;YACrE,uBAAuB,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,IAAI,GAAG,uBAAuB,EAAE,CAAC;YACnC,4FAA4F;YAC5F,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC;gBACvD,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,eAAe,CAAC,SAAS;aACjC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QAEvB,6EAA6E;QAC7E,iGAAiG;QACjG,IAAI,gBAAgB,GAAqB,EAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAC,CAAC;QAChF,qIAAqI;QACrI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,uFAAuF;YACvF,IAAI,CAAC,kBAAkB,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChH,0FAA0F;YAC1F,2DAA2D;YAC3D,gBAAgB,GAAG,EAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAC,CAAC;QACjE,CAAC;QAED,6CAA6C;QAC7C,sDAAsD;QAEtD,gGAAgG;QAChG,0EAA0E;QAC1E,IAAI,SAAS,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,4CAA4C,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClF,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnC,yEAAyE;oBACzE,MAAM,eAAe,GAAG,sDAAsD,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACjG,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,CAAC;wBACnG,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;wBAC9E,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;4BACxB,IAAI,CAAC,kBAAkB,CACrB,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC,EACxB,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;wBACJ,CAAC;6BAAM,IACL,UAAU,CAAC,yBAAyB;4BACpC,UAAU,CAAC,yBAAyB,KAAK,eAAe,EACxD,CAAC;4BACD,4HAA4H;4BAC5H,IAAI,CAAC,qBAAqB,CACxB,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC,EACxB,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChE,IAAI,CAAC,kBAAkB,CACrB,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC,EACxB,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,gBAAgB,GAAG,EAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAC,CAAC;QAC5D,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACnC,gCAAgC;YAChC,sHAAsH;YACtH,qGAAqG;YACrG,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,UAAU,CAAC,kBAAkB,CAAC;gBACnC,KAAK,UAAU,CAAC,0BAA0B,EAAE,CAAC;oBAC3C,IAAI,IAAI,IAAI,IAAI;wBAAE,MAAM;oBACxB,MAAM,QAAQ,GACZ,SAAS,KAAK,UAAU,CAAC,kBAAkB;wBACzC,CAAC,CAAC,2CAA2C,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;wBACrE,CAAC,CAAC,iDAAiD,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC1E,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvE,0EAA0E;wBAC1E,IAAI,CAAC,qBAAqB,CACxB,EAAC,IAAI,EAAE,IAAI,EAAC,EACZ,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;wBACF,gBAAgB,GAAG,EAAC,MAAM,EAAE,gBAAgB,CAAC,aAAa,EAAE,IAAI,EAAC,CAAC;oBACpE,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,UAAU,CAAC,2BAA2B,EAAE,CAAC;oBAC5C,IAAI,IAAI,IAAI,IAAI;wBAAE,MAAM;oBACxB,MAAM,cAAc,GAAG,wDAAwD,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAClG,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvE,kFAAkF;wBAClF,IAAI,CAAC,qBAAqB,CACxB,EAAC,IAAI,EAAE,IAAI,EAAC,EACZ,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;wBACF,kGAAkG;wBAClG,yEAAyE;oBAC3E,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,UAAU,CAAC,mBAAmB,EAAE,CAAC;oBACpC,IAAI,IAAI,IAAI,IAAI;wBAAE,MAAM;oBACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrD,IAAI,CAAC,qBAAqB,CACxB,EAAC,IAAI,EAAE,IAAI,EAAC,EACZ,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;wBACF,yDAAyD;wBACzD,yEAAyE;oBAC3E,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,UAAU,CAAC,iBAAiB,EAAE,CAAC;oBAClC,gEAAgE;oBAChE,oFAAoF;oBACpF,0FAA0F;oBAC1F,MAAM,SAAS,GAAG,wDAAwD,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC7F,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;wBACrE,IAAI,CAAC,kBAAkB,CACrB,EAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,EACvB,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;oBACJ,CAAC;oBACD,iEAAiE;oBACjE,gBAAgB,GAAG,EAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAC,CAAC;oBAC1D,MAAM;gBACR,CAAC;gBACD,KAAK,UAAU,CAAC,qBAAqB,EAAE,CAAC;oBACtC,+EAA+E;oBAC/E,MAAM,eAAe,GAAG,yDAAyD,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpG,MAAM,eAAe,GAAG,yDAAyD,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpG,IACE,eAAe;wBACf,eAAe;wBACf,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,eAAe,EAAE,eAAe,CAAC,EAChF,CAAC;wBACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;wBACnF,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;4BACxB,IAAI,CAAC,kBAAkB,CACrB,EAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAC,EAC7B,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;4BACF,gBAAgB,GAAG,EAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC;wBAClF,CAAC;6BAAM,IACL,UAAU,CAAC,yBAAyB;4BACpC,UAAU,CAAC,yBAAyB,KAAK,eAAe,EACxD,CAAC;4BACD,IAAI,CAAC,qBAAqB,CACxB,EAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAC,EAC7B,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CACrC,CAAC;4BACF,gBAAgB,GAAG,EAAC,MAAM,EAAE,gBAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC;wBACrF,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,QAAQ,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,gBAAgB,CAAC,WAAW;gBAC/B,IAAI,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,kCAAkC,GAAG,uCAAuC,EAAE,CAAC;oBACtF,4FAA4F;oBAC5F,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC;wBACnD,MAAM,EAAE,qBAAqB,CAAC,aAAa;wBAC3C,KAAK,EAAE,SAAS;qBACjB,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;gBACxE,MAAM,yBAAyB,GAAG,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvG,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM;YACR,CAAC;YACD,KAAK,gBAAgB,CAAC,aAAa,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,oCAAoC,GAAG,yCAAyC,EAAE,CAAC;oBAC1F,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,MAAM,CAAC,GAAG,CAAC;wBACrD,MAAM,EAAE,qBAAqB,CAAC,aAAa;wBAC3C,KAAK,EAAE,SAAS;qBACjB,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;gBAC1E,MAAM,gCAAgC,GAAG,IAAI,CAAC,kCAAkC,CAAC,YAAY,CAC3F,gBAAgB,CAAC,IAAI,CACtB,CAAC;gBACF,gCAAgC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9C,MAAM;YACR,CAAC;QACH,CAAC;IAAA,CACF,CAAC;IAEM,kCAAkC,CAAC,OAAgC,EAAQ;QACjF,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,YAAY,EAAE,CAAC;YACjB,4FAA4F;YAC5F,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAC,EAAE,YAAY,CAAC,CAAC;QACjG,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;IAAA,CACpB;IAEO,gBAAgB,GAAG,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,EAAgD,EAAiB,EAAE,CAAC;QACnH,MAAM,wBAAwB,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC,wBAAwB,IAAI,wBAAwB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,mGAAmG;QACnG,8CAA8C;QAC9C,KAAK,MAAM,OAAO,IAAI,wBAAwB,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,oBAAoB,CAAC,GAAG,CAChE,EAAC,KAAK,EAAE,SAAS,EAAC,EAClB,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAClC,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;YACjD,KAAK,EAAE,CAAC;YACR,oHAAoH;YACpH,IAAI,KAAK,KAAK,oCAAoC,EAAE,CAAC;gBACnD,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAAA,CAClD,CAAC;IAEM,0BAA0B,GAAG,KAAK,EAAE,EAAC,SAAS,EAAE,OAAO,EAAuB,EAAiB,EAAE,CAAC;QACxG,MAAM,wBAAwB,GAAG,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtF,IAAI,CAAC,wBAAwB,IAAI,wBAAwB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,OAAO,IAAI,wBAAwB,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,oBAAoB,CAAC,GAAG,CAClE,EAAC,KAAK,EAAE,SAAS,EAAC,EAClB,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAClC,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;YACjD,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,oCAAoC,EAAE,CAAC;gBACnD,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAAA,CACzD,CAAC;IAEM,WAAW,GAAG,CAAC,SAAe,EAAQ,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,OAAO,GAAG,SAAS,GAAG,iCAAiC,CAAC;QAE9D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrD,IAAI,IAAI,GAAG,OAAO;gBAAE,SAAS;YAC7B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;gBAC5B,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;oBACjC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;wBACrC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;wBACrC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC;4BACnD,KAAK,EAAE,SAAS;4BAChB,MAAM,EAAE,qBAAqB,CAAC,OAAO;yBACtC,CAAC,CAAC;wBACH,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,mBAAmB,CAAC,GAAG,CAC/D,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,EAAC,EACzD,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAClC,CAAC;wBACF,4FAA4F;oBAC9F,CAAC;oBACD,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACxD,IAAI,IAAI,GAAG,OAAO;gBAAE,SAAS;YAC7B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;gBAC5B,MAAM,cAAc,GAAG,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5E,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;oBACjC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;wBACrC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;wBACrC,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,MAAM,CAAC,GAAG,CAAC;4BACrD,KAAK,EAAE,SAAS;4BAChB,MAAM,EAAE,qBAAqB,CAAC,OAAO;yBACtC,CAAC,CAAC;wBACH,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,mBAAmB,CAAC,GAAG,CACjE,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,EAAC,EACzD,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAClC,CAAC;wBACF,4FAA4F;oBAC9F,CAAC;oBACD,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IAAA,CACF,CAAC;IAEM,WAAW,GAAS;QAC1B,oEAAoE;QAEpE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;QACtD,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,QAAQ,EAAE,OAAO,aAAa,GAAG,2BAA2B,EAAE,CAAC;YAC7D,yFAAyF;YACzF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAEtC,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;gBAC3C,wDAAwD;gBACxD,2CAA2C;gBAC3C,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;oBACtE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;oBAC9D,MAAM,QAAQ,CAAC;gBACjB,CAAC;gBACD,IACE,IAAI,CAAC,IAAI,CAAC,yBAAyB,KAAK,SAAS;oBACjD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,EACxE,CAAC;oBACD,8DAA8D;oBAC9D,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;oBAClD,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC;yBACtC,OAAO,CAAC,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;oBAAA,CACnD,CAAC;yBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBAEtF,aAAa,IAAI,WAAW,CAAC;oBAC7B,yGAAyG;oBACzG,SAAS,QAAQ,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,8DAA8D;YAC9D,MAAM;QACR,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtE,CAAC;IAAA,CACF;IAEO,KAAK,CAAC,8BAA8B,CAC1C,cAAmE,EACpD;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBACjC,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC;gBACjC,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACnC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;gBAC1F,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,cAAc,CAAC,mBAAmB,GAAG,MAAM,CAAC;QAC9C,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;YACjD,CAAC,CAAC,gFAAgF;gBAChF,qFAAqF;gBACrF,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAqC,CAAC;YAC1E,CAAC,CAAC;gBACE,mBAAmB;gBACnB,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAC,GAAG,cAAc,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,IAAI,EAAC,CAAC;aAC3F,CAAC;QAEN,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,6CAA6C;QAC7C,+EAA+E;QAC/E,gEAAgE;QAEhE,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;gBAChD,mBAAmB,CAAC,GAAG,EAAE,CAAC;oBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE;wBAC3D,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;wBACxC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;qBAC7B,CAAC,CAAC;gBAAA,CACJ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE;oBAC3D,KAAK,EAAE,cAAc,CAAC,KAAK;oBAC3B,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;oBACnD,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;iBAC7B,CAAC,CAAC;YAAA,CACJ,CAAC,CAAC;QACL,CAAC;IAAA,CACF;IAEO,YAAY,CAAC,OAAgC,EAAE,MAAc,EAAQ;QAC3E,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,WAAW,CAAC,OAAO,CACrD,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAC,EAC3B,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CACvD,CAAC;YACF,mEAAmE;YACnE,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,OAAO,CACjD,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAC,EAC3B,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAC3D,CAAC;QACJ,CAAC;IAAA,CACF;IAED;;OAEG;IACK,eAAe,GAAkC;QACvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,CAAC;YAC7C,OAAO,sBAAsB,CAAC,GAAG,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACrC,OAAO,sBAAsB,CAAC,KAAK,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IAAA,CACb;IAED,IAAY,kCAAkC,GAAW;QACvD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,EAAE,CAAC;YACjE,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,KAAK,CAAC;IAAA,CACd;IAED,IAAY,oCAAoC,GAAW;QACzD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,EAAE,CAAC;YACxE,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,KAAK,CAAC;IAAA,CACd;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beaconBlocksByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAK/C,wBAAuB,qBAAqB,CAC1C,OAAO,EAAE,MAAM,CAAC,0BAA0B,EAC1C,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,aAAa,CAAC,gBAAgB,CAAC,CAoEjC;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,CAAC,0BAA0B,GACzC,KAAK,CAAC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"beaconBlocksByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAK/C,wBAAuB,qBAAqB,CAC1C,OAAO,EAAE,MAAM,CAAC,0BAA0B,EAC1C,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,aAAa,CAAC,gBAAgB,CAAC,CAoEjC;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,CAAC,0BAA0B,GACzC,KAAK,CAAC,0BAA0B,CAyBlC"}
|
|
@@ -66,10 +66,11 @@ export function validateBeaconBlocksByRangeRequest(config, request) {
|
|
|
66
66
|
if (count < 1) {
|
|
67
67
|
throw new ResponseError(RespStatus.INVALID_REQUEST, "count < 1");
|
|
68
68
|
}
|
|
69
|
-
// TODO: validate against MIN_EPOCHS_FOR_BLOCK_REQUESTS
|
|
70
69
|
if (startSlot < GENESIS_SLOT) {
|
|
71
70
|
throw new ResponseError(RespStatus.INVALID_REQUEST, "startSlot < genesis");
|
|
72
71
|
}
|
|
72
|
+
// The phase0 req/resp spec uses MIN_EPOCHS_FOR_BLOCK_REQUESTS to define the minimum range peers MUST serve.
|
|
73
|
+
// Archival nodes may still serve older retained blocks to allow genesis sync.
|
|
73
74
|
// step > 1 is deprecated, see https://github.com/ethereum/consensus-specs/pull/2856
|
|
74
75
|
const maxRequestBlocks = isForkPostDeneb(config.getForkName(startSlot))
|
|
75
76
|
? config.MAX_REQUEST_BLOCKS_DENEB
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beaconBlocksByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRange.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"beaconBlocksByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beaconBlocksByRoot.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,yBAAyB,EAAC,MAAM,wBAAwB,CAAC;AAEjE,wBAAuB,oBAAoB,CACzC,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,YAAY,GAClB,aAAa,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"beaconBlocksByRoot.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,yBAAyB,EAAC,MAAM,wBAAwB,CAAC;AAEjE,wBAAuB,oBAAoB,CACzC,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,YAAY,GAClB,aAAa,CAAC,gBAAgB,CAAC,CAejC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { computeEpochAtSlot } from "@lodestar/state-transition";
|
|
2
2
|
import { toRootHex } from "@lodestar/utils";
|
|
3
3
|
export async function* onBeaconBlocksByRoot(requestBody, chain) {
|
|
4
|
+
// The phase0 req/resp spec uses MIN_EPOCHS_FOR_BLOCK_REQUESTS to define the minimum range peers MUST serve.
|
|
5
|
+
// Archival nodes may still serve older retained blocks to allow genesis sync.
|
|
4
6
|
for (const blockRoot of requestBody) {
|
|
5
7
|
const root = blockRoot;
|
|
6
8
|
const block = await chain.getSerializedBlockByRoot(toRootHex(root));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beaconBlocksByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRoot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAI1C,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,oBAAoB,CACzC,WAAsC,EACtC,KAAmB,EACc;IACjC,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM;gBACJ,IAAI,EAAE,KAAK,CAAC,KAAK;gBACjB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC9E,CAAC;QACJ,CAAC;IACH,CAAC;AAAA,CACF"}
|
|
1
|
+
{"version":3,"file":"beaconBlocksByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRoot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAI1C,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,oBAAoB,CACzC,WAAsC,EACtC,KAAmB,EACc;IACjC,4GAA4G;IAC5G,8EAA8E;IAE9E,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM;gBACJ,IAAI,EAAE,KAAK,CAAC,KAAK;gBACjB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC9E,CAAC;QACJ,CAAC;IACH,CAAC;AAAA,CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ChainConfig } from "@lodestar/config";
|
|
2
2
|
import { ResponseOutgoing } from "@lodestar/reqresp";
|
|
3
|
-
import { Slot, deneb } from "@lodestar/types";
|
|
3
|
+
import { Epoch, Slot, deneb } from "@lodestar/types";
|
|
4
4
|
import { IBeaconChain } from "../../../chain/index.js";
|
|
5
5
|
import { IBeaconDb } from "../../../db/index.js";
|
|
6
6
|
export declare function onBlobSidecarsByRange(request: deneb.BlobSidecarsByRangeRequest, chain: IBeaconChain, db: IBeaconDb): AsyncIterable<ResponseOutgoing>;
|
|
7
7
|
export declare function iterateBlobBytesFromWrapper(chain: IBeaconChain, blobSideCarsBytesWrapped: Uint8Array, blockSlot: Slot): Iterable<ResponseOutgoing>;
|
|
8
|
-
export declare function validateBlobSidecarsByRangeRequest(config: ChainConfig, request: deneb.BlobSidecarsByRangeRequest): deneb.BlobSidecarsByRangeRequest;
|
|
8
|
+
export declare function validateBlobSidecarsByRangeRequest(config: ChainConfig, currentEpoch: Epoch, request: deneb.BlobSidecarsByRangeRequest): deneb.BlobSidecarsByRangeRequest;
|
|
9
9
|
//# sourceMappingURL=blobSidecarsByRange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobSidecarsByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"blobSidecarsByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAG/C,wBAAuB,qBAAqB,CAC1C,OAAO,EAAE,KAAK,CAAC,0BAA0B,EACzC,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,GACZ,aAAa,CAAC,gBAAgB,CAAC,CAoDjC;AAED,wBAAiB,2BAA2B,CAC1C,KAAK,EAAE,YAAY,EACnB,wBAAwB,EAAE,UAAU,EACpC,SAAS,EAAE,IAAI,GACd,QAAQ,CAAC,gBAAgB,CAAC,CAoB5B;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,KAAK,EACnB,OAAO,EAAE,KAAK,CAAC,0BAA0B,GACxC,KAAK,CAAC,0BAA0B,CA4BlC"}
|
|
@@ -5,7 +5,7 @@ import { fromHex } from "@lodestar/utils";
|
|
|
5
5
|
import { BLOB_SIDECARS_IN_WRAPPER_INDEX } from "../../../db/repositories/blobSidecars.js";
|
|
6
6
|
export async function* onBlobSidecarsByRange(request, chain, db) {
|
|
7
7
|
// Non-finalized range of blobs
|
|
8
|
-
const { startSlot, count } = validateBlobSidecarsByRangeRequest(chain.config, request);
|
|
8
|
+
const { startSlot, count } = validateBlobSidecarsByRangeRequest(chain.config, chain.clock.currentEpoch, request);
|
|
9
9
|
const endSlot = startSlot + count;
|
|
10
10
|
const finalized = db.blobSidecarsArchive;
|
|
11
11
|
const unfinalized = db.blobSidecars;
|
|
@@ -63,16 +63,20 @@ export function* iterateBlobBytesFromWrapper(chain, blobSideCarsBytesWrapped, bl
|
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
export function validateBlobSidecarsByRangeRequest(config, request) {
|
|
66
|
+
export function validateBlobSidecarsByRangeRequest(config, currentEpoch, request) {
|
|
67
67
|
const { startSlot } = request;
|
|
68
68
|
let { count } = request;
|
|
69
69
|
if (count < 1) {
|
|
70
70
|
throw new ResponseError(RespStatus.INVALID_REQUEST, "count < 1");
|
|
71
71
|
}
|
|
72
|
-
// TODO: validate against MIN_EPOCHS_FOR_BLOCK_REQUESTS
|
|
73
72
|
if (startSlot < GENESIS_SLOT) {
|
|
74
73
|
throw new ResponseError(RespStatus.INVALID_REQUEST, "startSlot < genesis");
|
|
75
74
|
}
|
|
75
|
+
// Spec: [max(current_epoch - MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, DENEB_FORK_EPOCH), current_epoch]
|
|
76
|
+
const minimumRequestEpoch = Math.max(currentEpoch - config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, config.DENEB_FORK_EPOCH);
|
|
77
|
+
if (computeEpochAtSlot(startSlot) < minimumRequestEpoch) {
|
|
78
|
+
throw new ResponseError(RespStatus.RESOURCE_UNAVAILABLE, "startSlot is before MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS");
|
|
79
|
+
}
|
|
76
80
|
if (count > config.MAX_REQUEST_BLOCKS_DENEB) {
|
|
77
81
|
count = config.MAX_REQUEST_BLOCKS_DENEB;
|
|
78
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRange.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAC,8BAA8B,EAAC,MAAM,0CAA0C,CAAC;AAExF,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC1C,OAAyC,EACzC,KAAmB,EACnB,EAAa,EACoB;IACjC,+BAA+B;IAC/B,MAAM,EAAC,SAAS,EAAE,KAAK,EAAC,GAAG,kCAAkC,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"blobSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobSidecarsByRoot.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRoot.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAI9E,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,yBAAyB,EAAC,MAAM,wBAAwB,CAAC;AAEjE,wBAAuB,oBAAoB,CACzC,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,YAAY,GAClB,aAAa,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"blobSidecarsByRoot.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRoot.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAI9E,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,yBAAyB,EAAC,MAAM,wBAAwB,CAAC;AAEjE,wBAAuB,oBAAoB,CACzC,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,YAAY,GAClB,aAAa,CAAC,gBAAgB,CAAC,CAyDjC"}
|
|
@@ -4,6 +4,9 @@ import { computeEpochAtSlot } from "@lodestar/state-transition";
|
|
|
4
4
|
import { toRootHex } from "@lodestar/utils";
|
|
5
5
|
export async function* onBlobSidecarsByRoot(requestBody, chain) {
|
|
6
6
|
const finalizedSlot = chain.forkChoice.getFinalizedBlock().slot;
|
|
7
|
+
// Spec: [max(current_epoch - MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, DENEB_FORK_EPOCH), current_epoch]
|
|
8
|
+
const currentEpoch = chain.clock.currentEpoch;
|
|
9
|
+
const minimumRequestEpoch = Math.max(currentEpoch - chain.config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, chain.config.DENEB_FORK_EPOCH);
|
|
7
10
|
// In sidecars by root request, it can be expected that sidecar requests will be come
|
|
8
11
|
// clustured by blockroots, and this helps us save db lookups once we load sidecars
|
|
9
12
|
// for a root
|
|
@@ -18,6 +21,9 @@ export async function* onBlobSidecarsByRoot(requestBody, chain) {
|
|
|
18
21
|
if (!block || block.slot <= finalizedSlot) {
|
|
19
22
|
continue;
|
|
20
23
|
}
|
|
24
|
+
if (computeEpochAtSlot(block.slot) < minimumRequestEpoch) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
21
27
|
// Check if we need to load sidecars for a new block root
|
|
22
28
|
if (lastFetchedSideCars === null || lastFetchedSideCars.blockRoot !== blockRootHex) {
|
|
23
29
|
const blobSidecarsBytes = await chain.getSerializedBlobSidecars(block.slot, blockRootHex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAI1C,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,oBAAoB,CACzC,WAAsC,EACtC,KAAmB,EACc;IACjC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC;IAEhE,qFAAqF;IACrF,mFAAmF;IACnF,aAAa;IACb,IAAI,mBAAmB,GAAmD,IAAI,CAAC;IAE/E,KAAK,MAAM,cAAc,IAAI,WAAW,EAAE,CAAC;QACzC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAC,GAAG,cAAc,CAAC;QAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;QAEtE,2CAA2C;QAC3C,8FAA8F;QAC9F,+JAA+J;QAC/J,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,yDAAyD;QACzD,IAAI,mBAAmB,KAAK,IAAI,IAAI,mBAAmB,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;YACnF,MAAM,iBAAiB,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC1F,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,2CAA2C;gBAC3C,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,oBAAoB,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7G,CAAC;YAED,mBAAmB,GAAG,EAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAC,CAAC;QAC5E,CAAC;QAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CACtD,KAAK,GAAG,uBAAuB,EAC/B,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,uBAAuB,CACtC,CAAC;QACF,IAAI,gBAAgB,CAAC,MAAM,KAAK,uBAAuB,EAAE,CAAC;YACxD,MAAM,KAAK,CACT,6CAA6C,YAAY,UAAU,KAAK,qBAAqB,gBAAgB,CAAC,MAAM,aAAa,uBAAuB,EAAE,CAC3J,CAAC;QACJ,CAAC;QAED,MAAM;YACJ,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC9E,CAAC;IACJ,CAAC;AAAA,CACF"}
|
|
1
|
+
{"version":3,"file":"blobSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAI1C,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,oBAAoB,CACzC,WAAsC,EACtC,KAAmB,EACc;IACjC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC;IAEhE,sGAAsG;IACtG,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;IAC9C,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAClC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,qCAAqC,EACjE,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAC9B,CAAC;IAEF,qFAAqF;IACrF,mFAAmF;IACnF,aAAa;IACb,IAAI,mBAAmB,GAAmD,IAAI,CAAC;IAE/E,KAAK,MAAM,cAAc,IAAI,WAAW,EAAE,CAAC;QACzC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAC,GAAG,cAAc,CAAC;QAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;QAEtE,2CAA2C;QAC3C,8FAA8F;QAC9F,+JAA+J;QAC/J,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,EAAE,CAAC;YACzD,SAAS;QACX,CAAC;QAED,yDAAyD;QACzD,IAAI,mBAAmB,KAAK,IAAI,IAAI,mBAAmB,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;YACnF,MAAM,iBAAiB,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC1F,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,2CAA2C;gBAC3C,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,oBAAoB,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7G,CAAC;YAED,mBAAmB,GAAG,EAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAC,CAAC;QAC5E,CAAC;QAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CACtD,KAAK,GAAG,uBAAuB,EAC/B,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,uBAAuB,CACtC,CAAC;QACF,IAAI,gBAAgB,CAAC,MAAM,KAAK,uBAAuB,EAAE,CAAC;YACxD,MAAM,KAAK,CACT,6CAA6C,YAAY,UAAU,KAAK,qBAAqB,gBAAgB,CAAC,MAAM,aAAa,uBAAuB,EAAE,CAC3J,CAAC;QACJ,CAAC;QAED,MAAM;YACJ,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC9E,CAAC;IACJ,CAAC;AAAA,CACF"}
|