@aztec/prover-client 0.55.1 → 0.56.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 (44) hide show
  1. package/dest/mocks/fixtures.d.ts.map +1 -1
  2. package/dest/mocks/fixtures.js +6 -27
  3. package/dest/mocks/test_context.d.ts +4 -5
  4. package/dest/mocks/test_context.d.ts.map +1 -1
  5. package/dest/mocks/test_context.js +7 -9
  6. package/dest/orchestrator/block-building-helpers.d.ts +12 -3
  7. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  8. package/dest/orchestrator/block-building-helpers.js +34 -32
  9. package/dest/orchestrator/{proving-state.d.ts → block-proving-state.d.ts} +17 -13
  10. package/dest/orchestrator/block-proving-state.d.ts.map +1 -0
  11. package/dest/orchestrator/block-proving-state.js +170 -0
  12. package/dest/orchestrator/epoch-proving-state.d.ts +57 -0
  13. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -0
  14. package/dest/orchestrator/epoch-proving-state.js +151 -0
  15. package/dest/orchestrator/orchestrator.d.ts +32 -11
  16. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  17. package/dest/orchestrator/orchestrator.js +246 -139
  18. package/dest/orchestrator/tx-proving-state.d.ts +3 -2
  19. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  20. package/dest/orchestrator/tx-proving-state.js +54 -26
  21. package/dest/prover-agent/memory-proving-queue.d.ts +11 -5
  22. package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
  23. package/dest/prover-agent/memory-proving-queue.js +16 -6
  24. package/dest/prover-agent/prover-agent.d.ts.map +1 -1
  25. package/dest/prover-agent/prover-agent.js +10 -10
  26. package/dest/prover-agent/rpc.d.ts.map +1 -1
  27. package/dest/prover-agent/rpc.js +6 -2
  28. package/dest/test/mock_prover.d.ts +4 -2
  29. package/dest/test/mock_prover.d.ts.map +1 -1
  30. package/dest/test/mock_prover.js +9 -3
  31. package/package.json +12 -11
  32. package/src/mocks/fixtures.ts +5 -49
  33. package/src/mocks/test_context.ts +7 -12
  34. package/src/orchestrator/block-building-helpers.ts +90 -57
  35. package/src/orchestrator/{proving-state.ts → block-proving-state.ts} +42 -40
  36. package/src/orchestrator/epoch-proving-state.ts +232 -0
  37. package/src/orchestrator/orchestrator.ts +410 -244
  38. package/src/orchestrator/tx-proving-state.ts +63 -27
  39. package/src/prover-agent/memory-proving-queue.ts +30 -16
  40. package/src/prover-agent/prover-agent.ts +11 -9
  41. package/src/prover-agent/rpc.ts +6 -0
  42. package/src/test/mock_prover.ts +23 -1
  43. package/dest/orchestrator/proving-state.d.ts.map +0 -1
  44. package/dest/orchestrator/proving-state.js +0 -170
@@ -0,0 +1,170 @@
1
+ import { NUM_BASE_PARITY_PER_ROOT_PARITY, } from '@aztec/circuits.js';
2
+ var PROVING_STATE_LIFECYCLE;
3
+ (function (PROVING_STATE_LIFECYCLE) {
4
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_CREATED"] = 0] = "PROVING_STATE_CREATED";
5
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_RESOLVED"] = 1] = "PROVING_STATE_RESOLVED";
6
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_REJECTED"] = 2] = "PROVING_STATE_REJECTED";
7
+ })(PROVING_STATE_LIFECYCLE || (PROVING_STATE_LIFECYCLE = {}));
8
+ /**
9
+ * The current state of the proving schedule for a given block. Managed by ProvingState.
10
+ * Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
11
+ */
12
+ export class BlockProvingState {
13
+ constructor(index, totalNumTxs, globalVariables, newL1ToL2Messages, messageTreeSnapshot, messageTreeRootSiblingPath, messageTreeSnapshotAfterInsertion, archiveTreeSnapshot, archiveTreeRootSiblingPath, previousBlockHash, completionCallback, rejectionCallback) {
14
+ this.index = index;
15
+ this.totalNumTxs = totalNumTxs;
16
+ this.globalVariables = globalVariables;
17
+ this.newL1ToL2Messages = newL1ToL2Messages;
18
+ this.messageTreeSnapshot = messageTreeSnapshot;
19
+ this.messageTreeRootSiblingPath = messageTreeRootSiblingPath;
20
+ this.messageTreeSnapshotAfterInsertion = messageTreeSnapshotAfterInsertion;
21
+ this.archiveTreeSnapshot = archiveTreeSnapshot;
22
+ this.archiveTreeRootSiblingPath = archiveTreeRootSiblingPath;
23
+ this.previousBlockHash = previousBlockHash;
24
+ this.completionCallback = completionCallback;
25
+ this.rejectionCallback = rejectionCallback;
26
+ this.mergeRollupInputs = [];
27
+ this.rootParityInputs = [];
28
+ this.txs = [];
29
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
30
+ this.rootParityInputs = Array.from({ length: NUM_BASE_PARITY_PER_ROOT_PARITY }).map(_ => undefined);
31
+ }
32
+ get blockNumber() {
33
+ return this.globalVariables.blockNumber.toNumber();
34
+ }
35
+ // Returns the number of levels of merge rollups
36
+ get numMergeLevels() {
37
+ return BigInt(Math.ceil(Math.log2(this.totalNumTxs)) - 1);
38
+ }
39
+ // Calculates the index and level of the parent rollup circuit
40
+ // Based on tree implementation in unbalanced_tree.ts -> batchInsert()
41
+ findMergeLevel(currentLevel, currentIndex) {
42
+ const moveUpMergeLevel = (levelSize, index, nodeToShift) => {
43
+ levelSize /= 2;
44
+ if (levelSize & 1) {
45
+ [levelSize, nodeToShift] = nodeToShift ? [levelSize + 1, false] : [levelSize - 1, true];
46
+ }
47
+ index >>= 1n;
48
+ return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift };
49
+ };
50
+ let [thisLevelSize, shiftUp] = this.totalNumTxs & 1 ? [this.totalNumTxs - 1, true] : [this.totalNumTxs, false];
51
+ const maxLevel = this.numMergeLevels + 1n;
52
+ let placeholder = currentIndex;
53
+ for (let i = 0; i < maxLevel - currentLevel; i++) {
54
+ ({ thisLevelSize, thisIndex: placeholder, shiftUp } = moveUpMergeLevel(thisLevelSize, placeholder, shiftUp));
55
+ }
56
+ let thisIndex = currentIndex;
57
+ let mergeLevel = currentLevel;
58
+ while (thisIndex >= thisLevelSize && mergeLevel != 0n) {
59
+ mergeLevel -= 1n;
60
+ ({ thisLevelSize, thisIndex, shiftUp } = moveUpMergeLevel(thisLevelSize, thisIndex, shiftUp));
61
+ }
62
+ return [mergeLevel - 1n, thisIndex >> 1n, thisIndex & 1n];
63
+ }
64
+ // Adds a transaction to the proving state, returns it's index
65
+ addNewTx(tx) {
66
+ this.txs.push(tx);
67
+ return this.txs.length - 1;
68
+ }
69
+ // Returns the number of received transactions
70
+ get transactionsReceived() {
71
+ return this.txs.length;
72
+ }
73
+ // Returns the final set of root parity inputs
74
+ get finalRootParityInput() {
75
+ return this.finalRootParityInputs;
76
+ }
77
+ // Sets the final set of root parity inputs
78
+ set finalRootParityInput(input) {
79
+ this.finalRootParityInputs = input;
80
+ }
81
+ // Returns the set of root parity inputs
82
+ get rootParityInput() {
83
+ return this.rootParityInputs;
84
+ }
85
+ // Returns the complete set of transaction proving state objects
86
+ get allTxs() {
87
+ return this.txs;
88
+ }
89
+ /** Returns the block number as an epoch number. Used for prioritizing proof requests. */
90
+ get epochNumber() {
91
+ return this.globalVariables.blockNumber.toNumber();
92
+ }
93
+ /**
94
+ * Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
95
+ * @param mergeInputs - The inputs to store
96
+ * @param indexWithinMerge - The index in the set of inputs to this merge circuit
97
+ * @param indexOfMerge - The global index of this merge circuit
98
+ * @returns True if the merge circuit is ready to be executed, false otherwise
99
+ */
100
+ storeMergeInputs(mergeInputs, indexWithinMerge, indexOfMerge) {
101
+ if (!this.mergeRollupInputs[indexOfMerge]) {
102
+ const mergeInputData = {
103
+ inputs: [undefined, undefined],
104
+ proofs: [undefined, undefined],
105
+ verificationKeys: [undefined, undefined],
106
+ };
107
+ mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
108
+ mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
109
+ mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
110
+ this.mergeRollupInputs[indexOfMerge] = mergeInputData;
111
+ return false;
112
+ }
113
+ const mergeInputData = this.mergeRollupInputs[indexOfMerge];
114
+ mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
115
+ mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
116
+ mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
117
+ return true;
118
+ }
119
+ // Returns a specific transaction proving state
120
+ getTxProvingState(txIndex) {
121
+ return this.txs[txIndex];
122
+ }
123
+ // Returns a set of merge rollup inputs
124
+ getMergeInputs(indexOfMerge) {
125
+ return this.mergeRollupInputs[indexOfMerge];
126
+ }
127
+ // Returns true if we have sufficient inputs to execute the block root rollup
128
+ isReadyForBlockRootRollup() {
129
+ return !(this.mergeRollupInputs[0] === undefined ||
130
+ this.finalRootParityInput === undefined ||
131
+ this.mergeRollupInputs[0].inputs.findIndex(p => !p) !== -1);
132
+ }
133
+ // Stores a set of root parity inputs at the given index
134
+ setRootParityInputs(inputs, index) {
135
+ this.rootParityInputs[index] = inputs;
136
+ }
137
+ // Returns true if we have sufficient root parity inputs to execute the root parity circuit
138
+ areRootParityInputsReady() {
139
+ return this.rootParityInputs.findIndex(p => !p) === -1;
140
+ }
141
+ // Returns true if we are still able to accept transactions, false otherwise
142
+ isAcceptingTransactions() {
143
+ return (this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED && this.totalNumTxs > this.txs.length);
144
+ }
145
+ // Returns true if this proving state is still valid, false otherwise
146
+ verifyState() {
147
+ return this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
148
+ }
149
+ // Attempts to reject the proving state promise with the given reason
150
+ reject(reason) {
151
+ if (!this.verifyState()) {
152
+ return;
153
+ }
154
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_REJECTED;
155
+ if (this.rejectionCallback) {
156
+ this.rejectionCallback(reason);
157
+ }
158
+ }
159
+ // Attempts to resolve the proving state promise with the given result
160
+ resolve(result) {
161
+ if (!this.verifyState()) {
162
+ return;
163
+ }
164
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_RESOLVED;
165
+ if (this.completionCallback) {
166
+ this.completionCallback(result);
167
+ }
168
+ }
169
+ }
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvdmluZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvYmxvY2stcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBVUwsK0JBQStCLEdBTWhDLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIsSUFBSyx1QkFJSjtBQUpELFdBQUssdUJBQXVCO0lBQzFCLHVHQUFxQixDQUFBO0lBQ3JCLHlHQUFzQixDQUFBO0lBQ3RCLHlHQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFKSSx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBSTNCO0FBYUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNrQixLQUFhLEVBQ2IsV0FBbUIsRUFDbkIsZUFBZ0MsRUFDaEMsaUJBQXdFLEVBQ3hFLG1CQUEyQyxFQUMzQywwQkFBc0YsRUFDdEYsaUNBQXlELEVBQ3pELG1CQUEyQyxFQUMzQywwQkFBNEQsRUFDNUQsaUJBQXFCLEVBQzdCLGtCQUFvRCxFQUNwRCxpQkFBNEM7UUFYcEMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXVEO1FBQ3hFLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0RDtRQUN0RixzQ0FBaUMsR0FBakMsaUNBQWlDLENBQXdCO1FBQ3pELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUFrQztRQUM1RCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQUk7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFrQztRQUNwRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTJCO1FBdEI5QyxzQkFBaUIsR0FBMkIsRUFB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
@@ -0,0 +1,57 @@
1
+ import { type MerkleTreeId, type ProvingResult } from '@aztec/circuit-types';
2
+ import { type ARCHIVE_HEIGHT, type AppendOnlyTreeSnapshot, type BlockRootOrBlockMergePublicInputs, Fr, type GlobalVariables, type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_PROOF_LENGTH, type Proof, type RecursiveProof, type RootRollupPublicInputs, type VerificationKeyAsFields } from '@aztec/circuits.js';
3
+ import { type Tuple } from '@aztec/foundation/serialize';
4
+ import { BlockProvingState } from './block-proving-state.js';
5
+ export type TreeSnapshots = Map<MerkleTreeId, AppendOnlyTreeSnapshot>;
6
+ export type BlockMergeRollupInputData = {
7
+ inputs: [BlockRootOrBlockMergePublicInputs | undefined, BlockRootOrBlockMergePublicInputs | undefined];
8
+ proofs: [
9
+ RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined,
10
+ RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined
11
+ ];
12
+ verificationKeys: [VerificationKeyAsFields | undefined, VerificationKeyAsFields | undefined];
13
+ };
14
+ /**
15
+ * The current state of the proving schedule for an epoch.
16
+ * Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
17
+ * Carries an identifier so we can identify if the proving state is discarded and a new one started.
18
+ * Captures resolve and reject callbacks to provide a promise base interface to the consumer of our proving.
19
+ */
20
+ export declare class EpochProvingState {
21
+ readonly epochNumber: number;
22
+ readonly totalNumBlocks: number;
23
+ private completionCallback;
24
+ private rejectionCallback;
25
+ private provingStateLifecycle;
26
+ private mergeRollupInputs;
27
+ rootRollupPublicInputs: RootRollupPublicInputs | undefined;
28
+ finalProof: Proof | undefined;
29
+ blocks: BlockProvingState[];
30
+ constructor(epochNumber: number, totalNumBlocks: number, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
31
+ /** Returns the current block proving state */
32
+ get currentBlock(): BlockProvingState | undefined;
33
+ get numMergeLevels(): bigint;
34
+ findMergeLevel(currentLevel: bigint, currentIndex: bigint): bigint[];
35
+ startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[], messageTreeSnapshot: AppendOnlyTreeSnapshot, messageTreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, messageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot, archiveTreeSnapshot: AppendOnlyTreeSnapshot, archiveTreeRootSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousBlockHash: Fr, completionCallback?: (result: ProvingResult) => void, rejectionCallback?: (reason: string) => void): number;
36
+ verifyState(): boolean;
37
+ isAcceptingBlocks(): boolean;
38
+ /**
39
+ * Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
40
+ * @param mergeInputs - The inputs to store
41
+ * @param indexWithinMerge - The index in the set of inputs to this merge circuit
42
+ * @param indexOfMerge - The global index of this merge circuit
43
+ * @returns True if the merge circuit is ready to be executed, false otherwise
44
+ */
45
+ storeMergeInputs(mergeInputs: [
46
+ BlockRootOrBlockMergePublicInputs,
47
+ RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
48
+ VerificationKeyAsFields
49
+ ], indexWithinMerge: number, indexOfMerge: number): boolean;
50
+ getBlockProvingState(index: number): BlockProvingState;
51
+ getMergeInputs(indexOfMerge: number): BlockMergeRollupInputData;
52
+ isReadyForRootRollup(): boolean;
53
+ cancel(): void;
54
+ reject(reason: string): void;
55
+ resolve(result: ProvingResult): void;
56
+ }
57
+ //# sourceMappingURL=epoch-proving-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,EAAE,EACF,KAAK,eAAe,EACpB,KAAK,wCAAwC,EAC7C,KAAK,6BAA6B,EAElC,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AAStE,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,CAAC,iCAAiC,GAAG,SAAS,EAAE,iCAAiC,GAAG,SAAS,CAAC,CAAC;IACvG,MAAM,EAAE;QACN,cAAc,CAAC,OAAO,6BAA6B,CAAC,GAAG,SAAS;QAChE,cAAc,CAAC,OAAO,6BAA6B,CAAC,GAAG,SAAS;KACjE,CAAC;IACF,gBAAgB,EAAE,CAAC,uBAAuB,GAAG,SAAS,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAC;CAC9F,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,iBAAiB;aASV,WAAW,EAAE,MAAM;aACnB,cAAc,EAAE,MAAM;IACtC,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,iBAAiB;IAX3B,OAAO,CAAC,qBAAqB,CAAiD;IAE9E,OAAO,CAAC,iBAAiB,CAAmC;IACrD,sBAAsB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC3D,UAAU,EAAE,KAAK,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,iBAAiB,EAAE,CAAM;gBAGtB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EAC9B,kBAAkB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,EACnD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAGrD,8CAA8C;IAC9C,IAAW,YAAY,IAAI,iBAAiB,GAAG,SAAS,CAEvD;IAGD,IAAW,cAAc,WAExB;IAKM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IA2BzD,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,mBAAmB,EAAE,sBAAsB,EAC3C,0BAA0B,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,wCAAwC,CAAC,EACtF,iCAAiC,EAAE,sBAAsB,EACzD,mBAAmB,EAAE,sBAAsB,EAC3C,0BAA0B,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,EAC5D,iBAAiB,EAAE,EAAE,EACrB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,EACpD,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IA+BvC,WAAW;IAQX,iBAAiB;IAIxB;;;;;;OAMG;IACI,gBAAgB,CACrB,WAAW,EAAE;QACX,iCAAiC;QACjC,cAAc,CAAC,OAAO,6BAA6B,CAAC;QACpD,uBAAuB;KACxB,EACD,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM;IAsBf,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAKlC,cAAc,CAAC,YAAY,EAAE,MAAM;IAKnC,oBAAoB;IAKpB,MAAM;IAMN,MAAM,CAAC,MAAM,EAAE,MAAM;IAcrB,OAAO,CAAC,MAAM,EAAE,aAAa;CAOrC"}
@@ -0,0 +1,151 @@
1
+ import { Fr, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, } from '@aztec/circuits.js';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
+ import { BlockProvingState } from './block-proving-state.js';
4
+ var PROVING_STATE_LIFECYCLE;
5
+ (function (PROVING_STATE_LIFECYCLE) {
6
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_CREATED"] = 0] = "PROVING_STATE_CREATED";
7
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_FULL"] = 1] = "PROVING_STATE_FULL";
8
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_RESOLVED"] = 2] = "PROVING_STATE_RESOLVED";
9
+ PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_REJECTED"] = 3] = "PROVING_STATE_REJECTED";
10
+ })(PROVING_STATE_LIFECYCLE || (PROVING_STATE_LIFECYCLE = {}));
11
+ /**
12
+ * The current state of the proving schedule for an epoch.
13
+ * Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
14
+ * Carries an identifier so we can identify if the proving state is discarded and a new one started.
15
+ * Captures resolve and reject callbacks to provide a promise base interface to the consumer of our proving.
16
+ */
17
+ export class EpochProvingState {
18
+ constructor(epochNumber, totalNumBlocks, completionCallback, rejectionCallback) {
19
+ this.epochNumber = epochNumber;
20
+ this.totalNumBlocks = totalNumBlocks;
21
+ this.completionCallback = completionCallback;
22
+ this.rejectionCallback = rejectionCallback;
23
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
24
+ this.mergeRollupInputs = [];
25
+ this.blocks = [];
26
+ }
27
+ /** Returns the current block proving state */
28
+ get currentBlock() {
29
+ return this.blocks[this.blocks.length - 1];
30
+ }
31
+ // Returns the number of levels of merge rollups
32
+ get numMergeLevels() {
33
+ return BigInt(Math.ceil(Math.log2(this.totalNumBlocks)) - 1);
34
+ }
35
+ // Calculates the index and level of the parent rollup circuit
36
+ // Based on tree implementation in unbalanced_tree.ts -> batchInsert()
37
+ // REFACTOR: This is repeated from the block orchestrator
38
+ findMergeLevel(currentLevel, currentIndex) {
39
+ const moveUpMergeLevel = (levelSize, index, nodeToShift) => {
40
+ levelSize /= 2;
41
+ if (levelSize & 1) {
42
+ [levelSize, nodeToShift] = nodeToShift ? [levelSize + 1, false] : [levelSize - 1, true];
43
+ }
44
+ index >>= 1n;
45
+ return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift };
46
+ };
47
+ let [thisLevelSize, shiftUp] = this.totalNumBlocks & 1 ? [this.totalNumBlocks - 1, true] : [this.totalNumBlocks, false];
48
+ const maxLevel = this.numMergeLevels + 1n;
49
+ let placeholder = currentIndex;
50
+ for (let i = 0; i < maxLevel - currentLevel; i++) {
51
+ ({ thisLevelSize, thisIndex: placeholder, shiftUp } = moveUpMergeLevel(thisLevelSize, placeholder, shiftUp));
52
+ }
53
+ let thisIndex = currentIndex;
54
+ let mergeLevel = currentLevel;
55
+ while (thisIndex >= thisLevelSize && mergeLevel != 0n) {
56
+ mergeLevel -= 1n;
57
+ ({ thisLevelSize, thisIndex, shiftUp } = moveUpMergeLevel(thisLevelSize, thisIndex, shiftUp));
58
+ }
59
+ return [mergeLevel - 1n, thisIndex >> 1n, thisIndex & 1n];
60
+ }
61
+ // Adds a block to the proving state, returns its index
62
+ // Will update the proving life cycle if this is the last block
63
+ startNewBlock(numTxs, globalVariables, l1ToL2Messages, messageTreeSnapshot, messageTreeRootSiblingPath, messageTreeSnapshotAfterInsertion, archiveTreeSnapshot, archiveTreeRootSiblingPath, previousBlockHash, completionCallback, rejectionCallback) {
64
+ const block = new BlockProvingState(this.blocks.length, numTxs, globalVariables, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), messageTreeSnapshot, messageTreeRootSiblingPath, messageTreeSnapshotAfterInsertion, archiveTreeSnapshot, archiveTreeRootSiblingPath, previousBlockHash, completionCallback, reason => {
65
+ // Reject the block
66
+ if (rejectionCallback) {
67
+ rejectionCallback(reason);
68
+ }
69
+ // An error on any block rejects this whole epoch
70
+ this.reject(reason);
71
+ });
72
+ this.blocks.push(block);
73
+ if (this.blocks.length === this.totalNumBlocks) {
74
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_FULL;
75
+ }
76
+ return this.blocks.length - 1;
77
+ }
78
+ // Returns true if this proving state is still valid, false otherwise
79
+ verifyState() {
80
+ return (this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED ||
81
+ this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_FULL);
82
+ }
83
+ // Returns true if we are still able to accept blocks, false otherwise
84
+ isAcceptingBlocks() {
85
+ return this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
86
+ }
87
+ /**
88
+ * Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
89
+ * @param mergeInputs - The inputs to store
90
+ * @param indexWithinMerge - The index in the set of inputs to this merge circuit
91
+ * @param indexOfMerge - The global index of this merge circuit
92
+ * @returns True if the merge circuit is ready to be executed, false otherwise
93
+ */
94
+ storeMergeInputs(mergeInputs, indexWithinMerge, indexOfMerge) {
95
+ if (!this.mergeRollupInputs[indexOfMerge]) {
96
+ const mergeInputData = {
97
+ inputs: [undefined, undefined],
98
+ proofs: [undefined, undefined],
99
+ verificationKeys: [undefined, undefined],
100
+ };
101
+ mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
102
+ mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
103
+ mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
104
+ this.mergeRollupInputs[indexOfMerge] = mergeInputData;
105
+ return false;
106
+ }
107
+ const mergeInputData = this.mergeRollupInputs[indexOfMerge];
108
+ mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
109
+ mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
110
+ mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
111
+ return true;
112
+ }
113
+ // Returns a specific transaction proving state
114
+ getBlockProvingState(index) {
115
+ return this.blocks[index];
116
+ }
117
+ // Returns a set of merge rollup inputs
118
+ getMergeInputs(indexOfMerge) {
119
+ return this.mergeRollupInputs[indexOfMerge];
120
+ }
121
+ // Returns true if we have sufficient inputs to execute the block root rollup
122
+ isReadyForRootRollup() {
123
+ return !(this.mergeRollupInputs[0] === undefined || this.mergeRollupInputs[0].inputs.findIndex(p => !p) !== -1);
124
+ }
125
+ // Attempts to reject the proving state promise with a reason of 'cancelled'
126
+ cancel() {
127
+ this.reject('Proving cancelled');
128
+ }
129
+ // Attempts to reject the proving state promise with the given reason
130
+ // Does nothing if not in a valid state
131
+ reject(reason) {
132
+ if (!this.verifyState()) {
133
+ return;
134
+ }
135
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_REJECTED;
136
+ this.rejectionCallback(reason);
137
+ for (const block of this.blocks) {
138
+ block.reject('Proving cancelled');
139
+ }
140
+ }
141
+ // Attempts to resolve the proving state promise with the given result
142
+ // Does nothing if not in a valid state
143
+ resolve(result) {
144
+ if (!this.verifyState()) {
145
+ return;
146
+ }
147
+ this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_RESOLVED;
148
+ this.completionCallback(result);
149
+ }
150
+ }
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvZXBvY2gtcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUwsRUFBRSxFQUlGLG1DQUFtQyxHQUtwQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUk3RCxJQUFLLHVCQUtKO0FBTEQsV0FBSyx1QkFBdUI7SUFDMUIsdUdBQXFCLENBQUE7SUFDckIsaUdBQWtCLENBQUE7SUFDbEIseUdBQXNCLENBQUE7SUFDdEIseUdBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUxJLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFLM0I7QUFXRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDa0IsV0FBbUIsRUFDbkIsY0FBc0IsRUFDOUIsa0JBQW1ELEVBQ25ELGlCQUEyQztRQUhuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWlDO1FBQ25ELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFYN0MsMEJBQXFCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFFdEUsc0JBQWlCLEdBQWdDLEVBQUUsQ0FBQztRQUdyRCxXQUFNLEdBQXdCLEVBQUUsQ0FBQztJQU9yQyxDQUFDO0lBRUosOENBQThDO0lBQzlDLElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxJQUFXLGNBQWM7UUFD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
@@ -1,6 +1,6 @@
1
- import { type ProcessedTx } from '@aztec/circuit-types';
2
- import { type BlockProver, type ProvingBlockResult, type ProvingTicket, type ServerCircuitProver } from '@aztec/circuit-types/interfaces';
3
- import { Fr, type GlobalVariables } from '@aztec/circuits.js';
1
+ import { type ProcessedTx, type ProvingBlockResult, type ProvingTicket, type ServerCircuitProver } from '@aztec/circuit-types';
2
+ import { type EpochProver } from '@aztec/circuit-types/interfaces';
3
+ import { Fr, type GlobalVariables, type Proof } from '@aztec/circuits.js';
4
4
  import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
5
5
  import { type MerkleTreeOperations } from '@aztec/world-state';
6
6
  /**
@@ -16,7 +16,7 @@ import { type MerkleTreeOperations } from '@aztec/world-state';
16
16
  /**
17
17
  * The orchestrator, managing the flow of recursive proving operations required to build the rollup proof tree.
18
18
  */
19
- export declare class ProvingOrchestrator implements BlockProver {
19
+ export declare class ProvingOrchestrator implements EpochProver {
20
20
  private db;
21
21
  private prover;
22
22
  private readonly proverId;
@@ -31,6 +31,7 @@ export declare class ProvingOrchestrator implements BlockProver {
31
31
  * Resets the orchestrator's cached padding tx.
32
32
  */
33
33
  reset(): void;
34
+ startNewEpoch(epochNumber: number, totalNumBlocks: number): ProvingTicket;
34
35
  /**
35
36
  * Starts off a new block
36
37
  * @param numTxs - The total number of transactions in the block. Must be a power of 2
@@ -47,8 +48,10 @@ export declare class ProvingOrchestrator implements BlockProver {
47
48
  addNewTx(tx: ProcessedTx): Promise<void>;
48
49
  /**
49
50
  * Marks the block as full and pads it if required, no more transactions will be accepted.
51
+ * Computes the block header and updates the archive tree.
50
52
  */
51
53
  setBlockCompleted(): Promise<void>;
54
+ private buildBlockHeader;
52
55
  private enqueuePaddingTxs;
53
56
  /**
54
57
  * Prepares the cached sets of base rollup inputs for padding transactions and proves them
@@ -58,20 +61,28 @@ export declare class ProvingOrchestrator implements BlockProver {
58
61
  */
59
62
  private provePaddingTransactions;
60
63
  /**
61
- * Cancel any further proving of the block
64
+ * Cancel any further proving
62
65
  */
63
- cancelBlock(): void;
66
+ cancel(): void;
64
67
  /**
65
68
  * Extract the block header from public inputs.
66
- * TODO(#7346): Refactor this once new batch rollup circuits are integrated
67
69
  * @returns The header of this proving state's block.
68
70
  */
69
- private extractBlockHeader;
71
+ private extractBlockHeaderFromPublicInputs;
70
72
  /**
71
- * Performs the final tree update for the block and returns the fully proven block.
73
+ * Returns the fully proven block. Requires proving to have been completed.
74
+ * @param index - The index of the block to finalise. Defaults to the last block.
72
75
  * @returns The fully proven block and proof.
73
76
  */
74
- finaliseBlock(): Promise<ProvingBlockResult>;
77
+ finaliseBlock(index?: number): Promise<ProvingBlockResult>;
78
+ /**
79
+ * Returns the proof for the current epoch.
80
+ * Requires proving to have been completed.
81
+ */
82
+ finaliseEpoch(): {
83
+ proof: Proof;
84
+ publicInputs: import("@aztec/circuits.js").RootRollupPublicInputs;
85
+ };
75
86
  /**
76
87
  * Starts the proving process for the given transaction and adds it to our state
77
88
  * @param tx - The transaction whose proving we wish to commence
@@ -87,14 +98,16 @@ export declare class ProvingOrchestrator implements BlockProver {
87
98
  */
88
99
  private deferredProving;
89
100
  private prepareBaseRollupInputs;
90
- private storeMergeInputs;
91
101
  private enqueueBaseRollup;
92
102
  private enqueueTube;
93
103
  private enqueueMergeRollup;
94
104
  private enqueueBlockRootRollup;
95
105
  private enqueueBaseParityCircuit;
96
106
  private enqueueRootParityCircuit;
107
+ private enqueueBlockMergeRollup;
108
+ private enqueueRootRollup;
97
109
  private checkAndEnqueueBlockRootRollup;
110
+ private checkAndEnqueueRootRollup;
98
111
  /**
99
112
  * Stores the inputs to a merge/root circuit and enqueues the circuit if ready
100
113
  * @param provingState - The proving state being operated on
@@ -103,6 +116,14 @@ export declare class ProvingOrchestrator implements BlockProver {
103
116
  * @param mergeInputData - The inputs to be stored
104
117
  */
105
118
  private storeAndExecuteNextMergeLevel;
119
+ /**
120
+ * Stores the inputs to a block merge/root circuit and enqueues the circuit if ready
121
+ * @param provingState - The proving state being operated on
122
+ * @param currentLevel - The level of the merge/root circuit
123
+ * @param currentIndex - The index of the merge/root circuit
124
+ * @param mergeInputData - The inputs to be stored
125
+ */
126
+ private storeAndExecuteNextBlockMergeLevel;
106
127
  /**
107
128
  * Executes the VM circuit for a public function, will enqueue the corresponding kernel if the
108
129
  * previous kernel is ready
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,WAAW,EASjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EAElB,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAML,EAAE,EACF,KAAK,eAAe,EAsBrB,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,MAAM,EAAiC,MAAM,yBAAyB,CAAC;AACvH,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAoB/D;;;;;;;;;GASG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAQnD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,SAAS,CAA6C;IAE9D,OAAO,CAAC,OAAO,CAA6B;gBAGlC,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,mBAAmB,EACnC,eAAe,EAAE,eAAe,EACf,QAAQ,GAAE,EAAY;IAKzC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,WAAW,IAAI,EAAE;IAIxB;;OAEG;IACI,KAAK;IAIZ;;;;;;;OAOG;IAKU,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,GACnB,OAAO,CAAC,aAAa,CAAC;IAiFzB;;;OAGG;IAIU,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBrD;;OAEG;IAYU,iBAAiB;IA2C9B,OAAO,CAAC,iBAAiB;IA4CzB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;OAEG;IACI,WAAW;IAQlB;;;;OAIG;YACW,kBAAkB;IAyChC;;;OAGG;IAQU,aAAa;IAkE1B;;;;OAIG;YACW,kBAAkB;IAShC,OAAO,CAAC,kBAAkB;IAkB1B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YA4DT,uBAAuB;IAwCrC,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,iBAAiB;IAgFzB,OAAO,CAAC,WAAW;IA2CnB,OAAO,CAAC,kBAAkB;YAiCZ,sBAAsB;IAgDpC,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,wBAAwB;YAmBlB,8BAA8B;IAQ5C;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IA0BrC;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAmDjB,OAAO,CAAC,sCAAsC;IAqB9C,OAAO,CAAC,4BAA4B;IAsCpC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CA+C5B"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EAGvB,KAAK,aAAa,EAElB,KAAK,mBAAmB,EAQzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAOL,EAAE,EACF,KAAK,eAAe,EAQpB,KAAK,KAAK,EAaX,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,MAAM,EAAiC,MAAM,yBAAyB,CAAC;AACvH,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAyB/D;;;;;;;;;GASG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAQnD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,SAAS,CAA6C;IAE9D,OAAO,CAAC,OAAO,CAA6B;gBAGlC,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,mBAAmB,EACnC,eAAe,EAAE,eAAe,EACf,QAAQ,GAAE,EAAY;IAKzC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,WAAW,IAAI,EAAE;IAIxB;;OAEG;IACI,KAAK;IAQL,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,aAAa;IAahF;;;;;;;OAOG;IAKU,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,GACnB,OAAO,CAAC,aAAa,CAAC;IA4FzB;;;OAGG;IAIU,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrD;;;OAGG;IAYU,iBAAiB;YA8ChB,gBAAgB;IAsC9B,OAAO,CAAC,iBAAiB;IA4CzB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;OAEG;IACI,MAAM;IAQb;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAmB1C;;;;OAIG;IACI,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM;IAiCnC;;;OAGG;IACI,aAAa;;;;IAQpB;;;;OAIG;YACW,kBAAkB;IAShC,OAAO,CAAC,kBAAkB;IAkB1B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YA4DT,uBAAuB;IAyCrC,OAAO,CAAC,iBAAiB;IAgFzB,OAAO,CAAC,WAAW;IAoCnB,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,sBAAsB;IAkF9B,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,uBAAuB;IAiC/B,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,yBAAyB;IAQjC;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IA+BrC;;;;;;OAMG;IACH,OAAO,CAAC,kCAAkC;IAqC1C;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,sCAAsC;IAqB9C,OAAO,CAAC,4BAA4B;IAqCpC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAsD5B"}