@aztec/bb.js 3.0.0-devnet.2 → 3.0.0-manual.20251030

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 (136) hide show
  1. package/dest/browser/barretenberg/backend.js +13 -13
  2. package/dest/browser/barretenberg/index.d.ts +1 -1
  3. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  4. package/dest/browser/barretenberg/index.js +2 -2
  5. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +1 -1
  6. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  7. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  8. package/dest/browser/bbapi_exception.d.ts +7 -0
  9. package/dest/browser/bbapi_exception.d.ts.map +1 -0
  10. package/dest/browser/bbapi_exception.js +14 -0
  11. package/dest/browser/cbind/generate.js +93 -1
  12. package/dest/browser/cbind/generated/api_types.d.ts +623 -377
  13. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
  14. package/dest/browser/cbind/generated/api_types.js +778 -452
  15. package/dest/browser/cbind/generated/async.d.ts +15 -10
  16. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  17. package/dest/browser/cbind/generated/async.js +304 -96
  18. package/dest/browser/cbind/generated/curve_constants.d.ts +45 -0
  19. package/dest/browser/cbind/generated/curve_constants.d.ts.map +1 -0
  20. package/dest/browser/cbind/generated/curve_constants.js +45 -0
  21. package/dest/browser/cbind/generated/sync.d.ts +15 -10
  22. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  23. package/dest/browser/cbind/generated/sync.js +299 -96
  24. package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
  25. package/dest/browser/cbind/schema_compiler.js +24 -4
  26. package/dest/browser/index.d.ts +3 -1
  27. package/dest/browser/index.d.ts.map +1 -1
  28. package/dest/browser/index.js +4 -2
  29. package/dest/browser/serialize/index.d.ts +0 -1
  30. package/dest/browser/serialize/index.d.ts.map +1 -1
  31. package/dest/browser/serialize/index.js +1 -2
  32. package/dest/browser/types/fields.d.ts +6 -26
  33. package/dest/browser/types/fields.d.ts.map +1 -1
  34. package/dest/browser/types/fields.js +15 -56
  35. package/dest/browser/types/point.d.ts +8 -6
  36. package/dest/browser/types/point.d.ts.map +1 -1
  37. package/dest/browser/types/point.js +12 -15
  38. package/dest/node/barretenberg/backend.js +13 -13
  39. package/dest/node/barretenberg/index.d.ts +1 -1
  40. package/dest/node/barretenberg/index.d.ts.map +1 -1
  41. package/dest/node/barretenberg/index.js +2 -2
  42. package/dest/node/barretenberg/poseidon.bench.test.js +3 -2
  43. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  44. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +1 -1
  45. package/dest/node/bbapi_exception.d.ts +7 -0
  46. package/dest/node/bbapi_exception.d.ts.map +1 -0
  47. package/dest/node/bbapi_exception.js +14 -0
  48. package/dest/node/cbind/generate.js +93 -1
  49. package/dest/node/cbind/generated/api_types.d.ts +623 -377
  50. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  51. package/dest/node/cbind/generated/api_types.js +778 -452
  52. package/dest/node/cbind/generated/async.d.ts +15 -10
  53. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  54. package/dest/node/cbind/generated/async.js +304 -96
  55. package/dest/node/cbind/generated/curve_constants.d.ts +45 -0
  56. package/dest/node/cbind/generated/curve_constants.d.ts.map +1 -0
  57. package/dest/node/cbind/generated/curve_constants.js +45 -0
  58. package/dest/node/cbind/generated/sync.d.ts +15 -10
  59. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  60. package/dest/node/cbind/generated/sync.js +299 -96
  61. package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
  62. package/dest/node/cbind/schema_compiler.js +24 -4
  63. package/dest/node/index.d.ts +3 -1
  64. package/dest/node/index.d.ts.map +1 -1
  65. package/dest/node/index.js +4 -2
  66. package/dest/node/serialize/index.d.ts +0 -1
  67. package/dest/node/serialize/index.d.ts.map +1 -1
  68. package/dest/node/serialize/index.js +1 -2
  69. package/dest/node/types/fields.d.ts +6 -26
  70. package/dest/node/types/fields.d.ts.map +1 -1
  71. package/dest/node/types/fields.js +15 -56
  72. package/dest/node/types/point.d.ts +8 -6
  73. package/dest/node/types/point.d.ts.map +1 -1
  74. package/dest/node/types/point.js +12 -15
  75. package/dest/node-cjs/barretenberg/backend.js +12 -12
  76. package/dest/node-cjs/barretenberg/index.d.ts +1 -1
  77. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  78. package/dest/node-cjs/barretenberg/index.js +2 -2
  79. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +5 -4
  80. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  81. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +1 -1
  82. package/dest/node-cjs/bbapi_exception.d.ts +7 -0
  83. package/dest/node-cjs/bbapi_exception.d.ts.map +1 -0
  84. package/dest/node-cjs/bbapi_exception.js +18 -0
  85. package/dest/node-cjs/cbind/generate.js +93 -1
  86. package/dest/node-cjs/cbind/generated/api_types.d.ts +623 -377
  87. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  88. package/dest/node-cjs/cbind/generated/api_types.js +848 -492
  89. package/dest/node-cjs/cbind/generated/async.d.ts +15 -10
  90. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  91. package/dest/node-cjs/cbind/generated/async.js +303 -95
  92. package/dest/node-cjs/cbind/generated/curve_constants.d.ts +45 -0
  93. package/dest/node-cjs/cbind/generated/curve_constants.d.ts.map +1 -0
  94. package/dest/node-cjs/cbind/generated/curve_constants.js +48 -0
  95. package/dest/node-cjs/cbind/generated/sync.d.ts +15 -10
  96. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  97. package/dest/node-cjs/cbind/generated/sync.js +298 -95
  98. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
  99. package/dest/node-cjs/cbind/schema_compiler.js +24 -4
  100. package/dest/node-cjs/index.d.ts +3 -1
  101. package/dest/node-cjs/index.d.ts.map +1 -1
  102. package/dest/node-cjs/index.js +23 -8
  103. package/dest/node-cjs/serialize/index.d.ts +0 -1
  104. package/dest/node-cjs/serialize/index.d.ts.map +1 -1
  105. package/dest/node-cjs/serialize/index.js +1 -2
  106. package/dest/node-cjs/types/fields.d.ts +6 -26
  107. package/dest/node-cjs/types/fields.d.ts.map +1 -1
  108. package/dest/node-cjs/types/fields.js +15 -57
  109. package/dest/node-cjs/types/point.d.ts +8 -6
  110. package/dest/node-cjs/types/point.d.ts.map +1 -1
  111. package/dest/node-cjs/types/point.js +13 -16
  112. package/package.json +1 -1
  113. package/src/barretenberg/backend.ts +12 -12
  114. package/src/barretenberg/index.ts +1 -1
  115. package/src/barretenberg/poseidon.bench.test.ts +2 -1
  116. package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +4 -4
  117. package/src/bbapi_exception.ts +13 -0
  118. package/src/cbind/generate.ts +99 -0
  119. package/src/cbind/schema_compiler.ts +25 -3
  120. package/src/index.ts +28 -1
  121. package/src/serialize/index.ts +0 -1
  122. package/src/types/fields.ts +14 -63
  123. package/src/types/point.ts +13 -19
  124. package/dest/browser/serialize/buffer_reader.d.ts +0 -28
  125. package/dest/browser/serialize/buffer_reader.d.ts.map +0 -1
  126. package/dest/browser/serialize/buffer_reader.js +0 -66
  127. package/dest/node/serialize/buffer_reader.d.ts +0 -28
  128. package/dest/node/serialize/buffer_reader.d.ts.map +0 -1
  129. package/dest/node/serialize/buffer_reader.js +0 -66
  130. package/dest/node-cjs/serialize/buffer_reader.d.ts +0 -28
  131. package/dest/node-cjs/serialize/buffer_reader.d.ts.map +0 -1
  132. package/dest/node-cjs/serialize/buffer_reader.js +0 -70
  133. package/src/cbind/generated/api_types.ts +0 -3757
  134. package/src/cbind/generated/async.ts +0 -504
  135. package/src/cbind/generated/sync.ts +0 -455
  136. package/src/serialize/buffer_reader.ts +0 -85
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Exception thrown when barretenberg API operations fail
3
+ */
4
+ export declare class BBApiException extends Error {
5
+ constructor(message: string);
6
+ }
7
+ //# sourceMappingURL=bbapi_exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bbapi_exception.d.ts","sourceRoot":"","sources":["../../src/bbapi_exception.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAQ5B"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Exception thrown when barretenberg API operations fail
3
+ */
4
+ export class BBApiException extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'BBApiException';
8
+ // Maintains proper stack trace for where our error was thrown (only available on V8)
9
+ if (Error.captureStackTrace) {
10
+ Error.captureStackTrace(this, BBApiException);
11
+ }
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJhcGlfZXhjZXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JiYXBpX2V4Y2VwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsS0FBSztJQUN2QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztRQUM3QixxRkFBcUY7UUFDckYsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -6,6 +6,7 @@ import { dirname, join } from 'path';
6
6
  import { exec } from 'child_process';
7
7
  import { promisify } from 'util';
8
8
  import { fileURLToPath } from 'url';
9
+ import { unpack } from 'msgpackr';
9
10
  import { createSharedTypesCompiler, createSyncApiCompiler, createAsyncApiCompiler, } from './schema_compiler.js';
10
11
  const execAsync = promisify(exec);
11
12
  const GENERATORS = [
@@ -49,11 +50,102 @@ async function generate() {
49
50
  writeFileSync(outputPath, content);
50
51
  console.log(`✓ ${config.name}: ${outputPath}`);
51
52
  }
53
+ // Generate curve constants
54
+ console.log('\nGenerating curve constants...');
55
+ await generateCurveConstants(bbBuildPath, outputDir);
52
56
  console.log('\nGeneration complete!');
53
57
  }
58
+ async function generateCurveConstants(bbBuildPath, outputDir) {
59
+ // Get curve constants from bb as msgpack binary
60
+ const { stdout: constantsBuffer } = await execAsync(`${bbBuildPath} msgpack curve_constants`, {
61
+ encoding: 'buffer',
62
+ maxBuffer: 10 * 1024 * 1024, // 10MB buffer
63
+ });
64
+ // Decode msgpack
65
+ const constants = unpack(constantsBuffer);
66
+ // Helper to convert Uint8Array to hex string
67
+ const toHex = (bytes) => '0x' + Buffer.from(bytes).toString('hex');
68
+ // Helper to convert Uint8Array to bigint (big-endian)
69
+ const toBigInt = (bytes) => {
70
+ let result = 0n;
71
+ for (const byte of bytes) {
72
+ result = (result << 8n) | BigInt(byte);
73
+ }
74
+ return result;
75
+ };
76
+ // Helper to serialize point coordinate (handles both Uint8Array and array of Uint8Array for field2)
77
+ const serializeCoordinate = (coord) => {
78
+ if (Array.isArray(coord)) {
79
+ // For field2 (like BN254 G2), we have array of two Uint8Arrays
80
+ return `[${coord.map(c => `new Uint8Array([${Array.from(c).join(', ')}])`).join(', ')}]`;
81
+ }
82
+ else {
83
+ // For regular fields, single Uint8Array
84
+ return `new Uint8Array([${Array.from(coord).join(', ')}])`;
85
+ }
86
+ };
87
+ // Generate TypeScript file
88
+ const content = `/**
89
+ * Curve constants generated from barretenberg native binary.
90
+ * DO NOT EDIT - This file is auto-generated by generate.ts
91
+ */
92
+
93
+ /**
94
+ * BN254 curve constants
95
+ */
96
+ export const BN254_FR_MODULUS = ${toBigInt(constants.bn254_fr_modulus)}n;
97
+ export const BN254_FQ_MODULUS = ${toBigInt(constants.bn254_fq_modulus)}n;
98
+
99
+ export const BN254_G1_GENERATOR = {
100
+ x: ${serializeCoordinate(constants.bn254_g1_generator.x)},
101
+ y: ${serializeCoordinate(constants.bn254_g1_generator.y)},
102
+ } as const;
103
+
104
+ export const BN254_G2_GENERATOR = {
105
+ x: ${serializeCoordinate(constants.bn254_g2_generator.x)},
106
+ y: ${serializeCoordinate(constants.bn254_g2_generator.y)},
107
+ } as const;
108
+
109
+ /**
110
+ * Grumpkin curve constants
111
+ */
112
+ export const GRUMPKIN_FR_MODULUS = ${toBigInt(constants.grumpkin_fr_modulus)}n;
113
+ export const GRUMPKIN_FQ_MODULUS = ${toBigInt(constants.grumpkin_fq_modulus)}n;
114
+
115
+ export const GRUMPKIN_G1_GENERATOR = {
116
+ x: ${serializeCoordinate(constants.grumpkin_g1_generator.x)},
117
+ y: ${serializeCoordinate(constants.grumpkin_g1_generator.y)},
118
+ } as const;
119
+
120
+ /**
121
+ * Secp256k1 curve constants
122
+ */
123
+ export const SECP256K1_FR_MODULUS = ${toBigInt(constants.secp256k1_fr_modulus)}n;
124
+ export const SECP256K1_FQ_MODULUS = ${toBigInt(constants.secp256k1_fq_modulus)}n;
125
+
126
+ export const SECP256K1_G1_GENERATOR = {
127
+ x: ${serializeCoordinate(constants.secp256k1_g1_generator.x)},
128
+ y: ${serializeCoordinate(constants.secp256k1_g1_generator.y)},
129
+ } as const;
130
+
131
+ /**
132
+ * Secp256r1 curve constants
133
+ */
134
+ export const SECP256R1_FR_MODULUS = ${toBigInt(constants.secp256r1_fr_modulus)}n;
135
+ export const SECP256R1_FQ_MODULUS = ${toBigInt(constants.secp256r1_fq_modulus)}n;
136
+
137
+ export const SECP256R1_G1_GENERATOR = {
138
+ x: ${serializeCoordinate(constants.secp256r1_g1_generator.x)},
139
+ y: ${serializeCoordinate(constants.secp256r1_g1_generator.y)},
140
+ } as const;
141
+ `;
142
+ const outputPath = join(outputDir, 'curve_constants.ts');
143
+ writeFileSync(outputPath, content);
144
+ console.log(`✓ Curve constants: ${outputPath}`);
145
+ }
54
146
  // Run the generator
55
147
  generate().catch(error => {
56
148
  console.error('Generation failed:', error);
57
149
  process.exit(1);
58
150
  });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2JpbmQvZ2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNwQyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixzQkFBc0IsR0FFdkIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFRbEMsTUFBTSxVQUFVLEdBQXNCO0lBQ3BDO1FBQ0UsSUFBSSxFQUFFLGNBQWM7UUFDcEIsVUFBVSxFQUFFLHdCQUF3QjtRQUNwQyxjQUFjLEVBQUUseUJBQXlCO0tBQzFDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixVQUFVLEVBQUUsbUJBQW1CO1FBQy9CLGNBQWMsRUFBRSxxQkFBcUI7S0FDdEM7SUFDRDtRQUNFLElBQUksRUFBRSxXQUFXO1FBQ2pCLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsY0FBYyxFQUFFLHNCQUFzQjtLQUN2QztDQUNGLENBQUM7QUFFRixhQUFhO0FBQ2IsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFMUQsS0FBSyxVQUFVLFFBQVE7SUFDckIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBRS9GLHFCQUFxQjtJQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDbEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsV0FBVyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFFbkQsaUNBQWlDO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDL0MsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTFDLDRCQUE0QjtJQUM1QixLQUFLLE1BQU0sTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLGFBQWEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxvQkFBb0I7QUFDcEIsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyJ9
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2JpbmQvZ2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQVFsQyxNQUFNLFVBQVUsR0FBc0I7SUFDcEM7UUFDRSxJQUFJLEVBQUUsY0FBYztRQUNwQixVQUFVLEVBQUUsd0JBQXdCO1FBQ3BDLGNBQWMsRUFBRSx5QkFBeUI7S0FDMUM7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLFVBQVUsRUFBRSxtQkFBbUI7UUFDL0IsY0FBYyxFQUFFLHFCQUFxQjtLQUN0QztJQUNEO1FBQ0UsSUFBSSxFQUFFLFdBQVc7UUFDakIsVUFBVSxFQUFFLG9CQUFvQjtRQUNoQyxjQUFjLEVBQUUsc0JBQXNCO0tBQ3ZDO0NBQ0YsQ0FBQztBQUVGLGFBQWE7QUFDYixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUUxRCxLQUFLLFVBQVUsUUFBUTtJQUNyQixNQUFNLFdB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