@eulerxyz/euler-v2-sdk 0.2.7-beta → 0.2.9-beta

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 (134) hide show
  1. package/dist/src/entities/Account.d.ts +10 -2
  2. package/dist/src/entities/Account.d.ts.map +1 -1
  3. package/dist/src/entities/Account.js +15 -2
  4. package/dist/src/entities/Account.js.map +1 -1
  5. package/dist/src/entities/EVault.d.ts +3 -1
  6. package/dist/src/entities/EVault.d.ts.map +1 -1
  7. package/dist/src/entities/EVault.js +28 -2
  8. package/dist/src/entities/EVault.js.map +1 -1
  9. package/dist/src/entities/Portfolio.d.ts +143 -18
  10. package/dist/src/entities/Portfolio.d.ts.map +1 -1
  11. package/dist/src/entities/Portfolio.js +240 -36
  12. package/dist/src/entities/Portfolio.js.map +1 -1
  13. package/dist/src/plugins/keyring/keyringPlugin.d.ts.map +1 -1
  14. package/dist/src/plugins/keyring/keyringPlugin.js +67 -17
  15. package/dist/src/plugins/keyring/keyringPlugin.js.map +1 -1
  16. package/dist/src/plugins/pyth/pythPlugin.d.ts +3 -1
  17. package/dist/src/plugins/pyth/pythPlugin.d.ts.map +1 -1
  18. package/dist/src/plugins/pyth/pythPlugin.js +101 -6
  19. package/dist/src/plugins/pyth/pythPlugin.js.map +1 -1
  20. package/dist/src/plugins/types.d.ts +38 -2
  21. package/dist/src/plugins/types.d.ts.map +1 -1
  22. package/dist/src/plugins/types.js.map +1 -1
  23. package/dist/src/sdk/buildSDK.d.ts.map +1 -1
  24. package/dist/src/sdk/buildSDK.js +3 -2
  25. package/dist/src/sdk/buildSDK.js.map +1 -1
  26. package/dist/src/sdk/sdk.d.ts +15 -4
  27. package/dist/src/sdk/sdk.d.ts.map +1 -1
  28. package/dist/src/sdk/sdk.js +40 -3
  29. package/dist/src/sdk/sdk.js.map +1 -1
  30. package/dist/src/services/accountService/accountService.d.ts +7 -1
  31. package/dist/src/services/accountService/accountService.d.ts.map +1 -1
  32. package/dist/src/services/accountService/accountService.js +55 -1
  33. package/dist/src/services/accountService/accountService.js.map +1 -1
  34. package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.d.ts.map +1 -1
  35. package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.js +2 -2
  36. package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.js.map +1 -1
  37. package/dist/src/services/accountService/index.d.ts +1 -1
  38. package/dist/src/services/accountService/index.d.ts.map +1 -1
  39. package/dist/src/services/executionService/cowExecutor.d.ts +3 -0
  40. package/dist/src/services/executionService/cowExecutor.d.ts.map +1 -1
  41. package/dist/src/services/executionService/cowExecutor.js.map +1 -1
  42. package/dist/src/services/executionService/execute.d.ts +8 -0
  43. package/dist/src/services/executionService/execute.d.ts.map +1 -1
  44. package/dist/src/services/executionService/execute.js.map +1 -1
  45. package/dist/src/services/executionService/executionService.d.ts +69 -7
  46. package/dist/src/services/executionService/executionService.d.ts.map +1 -1
  47. package/dist/src/services/executionService/executionService.js +266 -122
  48. package/dist/src/services/executionService/executionService.js.map +1 -1
  49. package/dist/src/services/executionService/executionServiceTypes.d.ts +4 -0
  50. package/dist/src/services/executionService/executionServiceTypes.d.ts.map +1 -1
  51. package/dist/src/services/executionService/simulate.d.ts +29 -0
  52. package/dist/src/services/executionService/simulate.d.ts.map +1 -1
  53. package/dist/src/services/executionService/simulate.js +42 -5
  54. package/dist/src/services/executionService/simulate.js.map +1 -1
  55. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts +2 -1
  56. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts.map +1 -1
  57. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js +2 -2
  58. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js.map +1 -1
  59. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.d.ts +2 -1
  60. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.d.ts.map +1 -1
  61. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js +11 -2
  62. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js.map +1 -1
  63. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts +4 -0
  64. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts.map +1 -1
  65. package/dist/src/services/rewardsService/index.d.ts +4 -1
  66. package/dist/src/services/rewardsService/index.d.ts.map +1 -1
  67. package/dist/src/services/rewardsService/index.js +2 -0
  68. package/dist/src/services/rewardsService/index.js.map +1 -1
  69. package/dist/src/services/rewardsService/rewardCampaignEligibility.d.ts +32 -0
  70. package/dist/src/services/rewardsService/rewardCampaignEligibility.d.ts.map +1 -0
  71. package/dist/src/services/rewardsService/rewardCampaignEligibility.js +21 -0
  72. package/dist/src/services/rewardsService/rewardCampaignEligibility.js.map +1 -0
  73. package/dist/src/services/rewardsService/rewardsService.d.ts +6 -0
  74. package/dist/src/services/rewardsService/rewardsService.d.ts.map +1 -1
  75. package/dist/src/services/rewardsService/rewardsService.js +20 -3
  76. package/dist/src/services/rewardsService/rewardsService.js.map +1 -1
  77. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts +8 -5
  78. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts.map +1 -1
  79. package/dist/src/services/rewardsService/rewardsServiceTypes.js +1 -1
  80. package/dist/src/services/rewardsService/rewardsServiceTypes.js.map +1 -1
  81. package/dist/src/services/rewardsService/vaultRewardInfo.d.ts +25 -0
  82. package/dist/src/services/rewardsService/vaultRewardInfo.d.ts.map +1 -0
  83. package/dist/src/services/rewardsService/vaultRewardInfo.js +39 -0
  84. package/dist/src/services/rewardsService/vaultRewardInfo.js.map +1 -0
  85. package/dist/src/services/swapService/swapService.d.ts +2 -1
  86. package/dist/src/services/swapService/swapService.d.ts.map +1 -1
  87. package/dist/src/services/swapService/swapService.js +19 -19
  88. package/dist/src/services/swapService/swapService.js.map +1 -1
  89. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.d.ts.map +1 -1
  90. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.js +13 -1
  91. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.js.map +1 -1
  92. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.d.ts.map +1 -1
  93. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js +39 -2
  94. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js.map +1 -1
  95. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.d.ts +6 -0
  96. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.d.ts.map +1 -1
  97. package/dist/src/services/vaults/eVaultService/eVaultService.d.ts.map +1 -1
  98. package/dist/src/services/vaults/eVaultService/eVaultService.js +9 -1
  99. package/dist/src/services/vaults/eVaultService/eVaultService.js.map +1 -1
  100. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.d.ts.map +1 -1
  101. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.js +52 -17
  102. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.js.map +1 -1
  103. package/dist/src/utils/accountComputations.d.ts +45 -9
  104. package/dist/src/utils/accountComputations.d.ts.map +1 -1
  105. package/dist/src/utils/accountComputations.js +133 -81
  106. package/dist/src/utils/accountComputations.js.map +1 -1
  107. package/dist/src/utils/accountPositionClassification.d.ts.map +1 -1
  108. package/dist/src/utils/accountPositionClassification.js +12 -1
  109. package/dist/src/utils/accountPositionClassification.js.map +1 -1
  110. package/dist/src/utils/oracle.d.ts +70 -0
  111. package/dist/src/utils/oracle.d.ts.map +1 -1
  112. package/dist/src/utils/oracle.js +307 -0
  113. package/dist/src/utils/oracle.js.map +1 -1
  114. package/dist/src/utils/stateOverrides/approvalOverrides.d.ts +25 -8
  115. package/dist/src/utils/stateOverrides/approvalOverrides.d.ts.map +1 -1
  116. package/dist/src/utils/stateOverrides/approvalOverrides.js +76 -16
  117. package/dist/src/utils/stateOverrides/approvalOverrides.js.map +1 -1
  118. package/dist/src/utils/stateOverrides/balanceOverrides.d.ts +26 -7
  119. package/dist/src/utils/stateOverrides/balanceOverrides.d.ts.map +1 -1
  120. package/dist/src/utils/stateOverrides/balanceOverrides.js +72 -13
  121. package/dist/src/utils/stateOverrides/balanceOverrides.js.map +1 -1
  122. package/dist/src/utils/stateOverrides/getStateOverrides.d.ts +38 -0
  123. package/dist/src/utils/stateOverrides/getStateOverrides.d.ts.map +1 -1
  124. package/dist/src/utils/stateOverrides/getStateOverrides.js +14 -4
  125. package/dist/src/utils/stateOverrides/getStateOverrides.js.map +1 -1
  126. package/dist/src/utils/stateOverrides/index.d.ts +3 -2
  127. package/dist/src/utils/stateOverrides/index.d.ts.map +1 -1
  128. package/dist/src/utils/stateOverrides/index.js +2 -1
  129. package/dist/src/utils/stateOverrides/index.js.map +1 -1
  130. package/dist/src/utils/stateOverrides/slotHints.d.ts +78 -0
  131. package/dist/src/utils/stateOverrides/slotHints.d.ts.map +1 -0
  132. package/dist/src/utils/stateOverrides/slotHints.js +152 -0
  133. package/dist/src/utils/stateOverrides/slotHints.js.map +1 -0
  134. package/package.json +1 -1
@@ -176,6 +176,215 @@ const resolveAdapterPair = (context, override) => {
176
176
  return null;
177
177
  return { base, quote };
178
178
  };
179
+ const routeKey = (route) => `${route.source}:${route.base.toLowerCase()}:${route.quote.toLowerCase()}`;
180
+ const makeOracleAdapterEntry = (info, context, override) => {
181
+ const pair = resolveAdapterPair(context, override);
182
+ if (!pair)
183
+ return null;
184
+ const extra = isChainlinkOracleName(info.name)
185
+ ? { chainlinkDetail: { oracle: info.oracle } }
186
+ : undefined;
187
+ return {
188
+ oracle: info.oracle,
189
+ name: info.name,
190
+ base: pair.base,
191
+ quote: pair.quote,
192
+ ...extra,
193
+ };
194
+ };
195
+ const makeRouteAdapterStep = (info, context) => {
196
+ if (info.name === "PythOracle") {
197
+ const decoded = decodePythOracleInfo(info.oracleInfo);
198
+ if (decoded) {
199
+ if (decoded.base.toLowerCase() !== context.base.toLowerCase() ||
200
+ decoded.quote.toLowerCase() !== context.quote.toLowerCase()) {
201
+ return null;
202
+ }
203
+ const adapter = {
204
+ oracle: info.oracle,
205
+ name: info.name,
206
+ base: decoded.base,
207
+ quote: decoded.quote,
208
+ pythDetail: decoded,
209
+ };
210
+ return {
211
+ kind: "adapter",
212
+ oracle: adapter.oracle,
213
+ name: adapter.name,
214
+ base: adapter.base,
215
+ quote: adapter.quote,
216
+ adapter,
217
+ };
218
+ }
219
+ }
220
+ const adapter = makeOracleAdapterEntry(info, context);
221
+ if (!adapter)
222
+ return null;
223
+ return {
224
+ kind: "adapter",
225
+ oracle: adapter.oracle,
226
+ name: adapter.name,
227
+ base: adapter.base,
228
+ quote: adapter.quote,
229
+ adapter,
230
+ };
231
+ };
232
+ const buildVaultRouteSteps = (resolvedAssets, base) => {
233
+ if (!base || !resolvedAssets?.length)
234
+ return [];
235
+ const path = resolvedAssets.length >= 2
236
+ ? [...resolvedAssets]
237
+ : [base, ...resolvedAssets];
238
+ const steps = [];
239
+ for (let i = 0; i < path.length - 1; i += 1) {
240
+ const vault = path[i];
241
+ const asset = path[i + 1];
242
+ if (vault.toLowerCase() === asset.toLowerCase())
243
+ continue;
244
+ steps.push({
245
+ kind: "vault",
246
+ oracle: vault,
247
+ name: "ERC4626Vault",
248
+ base: vault,
249
+ quote: asset,
250
+ vault,
251
+ asset,
252
+ });
253
+ }
254
+ return steps;
255
+ };
256
+ const makeRoute = (base, quote, steps, source) => {
257
+ const adapters = steps
258
+ .filter((step) => step.kind === "adapter")
259
+ .map((step) => step.adapter);
260
+ const resolvedVaults = steps
261
+ .filter((step) => step.kind === "vault")
262
+ .map((step) => ({
263
+ vault: step.vault,
264
+ quote,
265
+ asset: step.asset,
266
+ resolvedAssets: [step.asset],
267
+ }));
268
+ return { base, quote, steps, adapters, resolvedVaults, source };
269
+ };
270
+ export const selectOracleRouteForPair = (routes, base, quote) => {
271
+ const baseKey = base.toLowerCase();
272
+ const quoteKey = quote.toLowerCase();
273
+ return routes?.find((route) => route.base.toLowerCase() === baseKey &&
274
+ route.quote.toLowerCase() === quoteKey);
275
+ };
276
+ export const decodeOracleRouteForPair = (oracleInfo, base, quote, maxDepth = 3) => {
277
+ const visited = new Set();
278
+ const visit = (info, depth, context, source) => {
279
+ if (!isValidOracleDetailedInfo(info) || depth > maxDepth)
280
+ return null;
281
+ const key = `${info.oracle}-${info.name}-${info.oracleInfo}-${context.base}-${context.quote}`;
282
+ if (visited.has(key))
283
+ return null;
284
+ visited.add(key);
285
+ if (info.name === "EulerRouter") {
286
+ const decoded = decodeEulerRouterInfo(info.oracleInfo);
287
+ if (!decoded)
288
+ return null;
289
+ const targetBase = context.base.toLowerCase();
290
+ const targetQuote = context.quote.toLowerCase();
291
+ const total = Math.max(decoded.resolvedOraclesInfo?.length ?? 0, decoded.bases?.length ?? 0, decoded.quotes?.length ?? 0);
292
+ for (let i = 0; i < total; i += 1) {
293
+ const child = decoded.resolvedOraclesInfo?.[i];
294
+ const childBase = decoded.bases?.[i];
295
+ const childQuote = decoded.quotes?.[i];
296
+ if (!child || !childBase || !childQuote)
297
+ continue;
298
+ if (childBase.toLowerCase() !== targetBase ||
299
+ childQuote.toLowerCase() !== targetQuote) {
300
+ continue;
301
+ }
302
+ const vaultSteps = buildVaultRouteSteps(decoded.resolvedAssets?.[i], childBase);
303
+ const effectiveBase = vaultSteps.at(-1)?.quote ?? childBase;
304
+ const childRoute = visit(child, depth + 1, { base: effectiveBase, quote: childQuote }, "configured");
305
+ if (childRoute) {
306
+ return {
307
+ steps: [...vaultSteps, ...childRoute.steps],
308
+ source: "configured",
309
+ };
310
+ }
311
+ if (vaultSteps.length > 0 &&
312
+ effectiveBase.toLowerCase() === childQuote.toLowerCase()) {
313
+ return { steps: vaultSteps, source: "configured" };
314
+ }
315
+ }
316
+ const fallbackRoute = visit(decoded.fallbackOracleInfo, depth + 1, context, "fallback");
317
+ return fallbackRoute;
318
+ }
319
+ if (info.name === "CrossAdapter") {
320
+ const decoded = decodeCrossAdapterInfo(info.oracleInfo);
321
+ if (!decoded) {
322
+ const adapterStep = makeRouteAdapterStep(info, context);
323
+ return adapterStep ? { steps: [adapterStep], source } : null;
324
+ }
325
+ if (decoded.base.toLowerCase() !== context.base.toLowerCase() ||
326
+ decoded.quote.toLowerCase() !== context.quote.toLowerCase()) {
327
+ return null;
328
+ }
329
+ const baseCross = visit(decoded.oracleBaseCrossInfo, depth + 1, { base: decoded.base, quote: decoded.cross }, source);
330
+ const crossQuote = visit(decoded.oracleCrossQuoteInfo, depth + 1, { base: decoded.cross, quote: decoded.quote }, source);
331
+ const steps = [...(baseCross?.steps ?? []), ...(crossQuote?.steps ?? [])];
332
+ if (steps.length > 0)
333
+ return { steps, source };
334
+ const adapterStep = makeRouteAdapterStep(info, context);
335
+ return adapterStep ? { steps: [adapterStep], source } : null;
336
+ }
337
+ const adapterStep = makeRouteAdapterStep(info, context);
338
+ return adapterStep ? { steps: [adapterStep], source } : null;
339
+ };
340
+ const route = visit(oracleInfo, 0, { base, quote }, "direct");
341
+ if (!route || route.steps.length === 0)
342
+ return undefined;
343
+ return makeRoute(base, quote, route.steps, route.source);
344
+ };
345
+ export const decodeOracleRoutes = (oracleInfo, maxDepth = 3) => {
346
+ if (!isValidOracleDetailedInfo(oracleInfo))
347
+ return [];
348
+ const routes = [];
349
+ if (oracleInfo.name === "EulerRouter") {
350
+ const decoded = decodeEulerRouterInfo(oracleInfo.oracleInfo);
351
+ if (!decoded)
352
+ return [];
353
+ const total = Math.max(decoded.resolvedOraclesInfo?.length ?? 0, decoded.bases?.length ?? 0, decoded.quotes?.length ?? 0);
354
+ for (let i = 0; i < total; i += 1) {
355
+ const base = decoded.bases?.[i];
356
+ const quote = decoded.quotes?.[i];
357
+ if (!base || !quote)
358
+ continue;
359
+ const route = decodeOracleRouteForPair(oracleInfo, base, quote, maxDepth);
360
+ if (route)
361
+ routes.push(route);
362
+ }
363
+ }
364
+ else if (oracleInfo.name === "CrossAdapter") {
365
+ const decoded = decodeCrossAdapterInfo(oracleInfo.oracleInfo);
366
+ if (decoded) {
367
+ const route = decodeOracleRouteForPair(oracleInfo, decoded.base, decoded.quote, maxDepth);
368
+ if (route)
369
+ routes.push(route);
370
+ }
371
+ }
372
+ else if (oracleInfo.name === "PythOracle") {
373
+ const decoded = decodePythOracleInfo(oracleInfo.oracleInfo);
374
+ if (decoded) {
375
+ const route = decodeOracleRouteForPair(oracleInfo, decoded.base, decoded.quote, maxDepth);
376
+ if (route)
377
+ routes.push(route);
378
+ }
379
+ }
380
+ const deduped = new Map();
381
+ for (const route of routes) {
382
+ const key = routeKey(route);
383
+ if (!deduped.has(key))
384
+ deduped.set(key, route);
385
+ }
386
+ return [...deduped.values()];
387
+ };
179
388
  export const decodeOracleInfo = (oracleInfo, maxDepth = 3, options = {}) => {
180
389
  const adapters = [];
181
390
  const visited = new Set();
@@ -379,6 +588,104 @@ export const collectChainlinkOracles = (oracleInfo, maxDepth = 3) => {
379
588
  });
380
589
  return [...deduped.values()];
381
590
  };
591
+ /**
592
+ * Walk an OracleDetailedInfo tree for the active price path of (base, quote)
593
+ * and collect only the Pyth feed IDs actually used to price that pair.
594
+ *
595
+ * Unlike collectPythFeedIds (which returns every Pyth feed anywhere in the
596
+ * tree) this avoids pulling Hermes updates for fallback routes that aren't
597
+ * exercised during a given operation.
598
+ */
599
+ export const collectPythFeedIdsForPair = (oracleInfo, base, quote, maxDepth = 3) => {
600
+ const feeds = [];
601
+ const visited = new Set();
602
+ const visit = (info, depth, context) => {
603
+ if (!info || depth > maxDepth)
604
+ return;
605
+ const key = `${info.oracle}-${info.name}-${info.oracleInfo}-${context.base || ""}-${context.quote || ""}`;
606
+ if (visited.has(key))
607
+ return;
608
+ visited.add(key);
609
+ if (info.name === "EulerRouter") {
610
+ const decoded = decodeEulerRouterInfo(info.oracleInfo);
611
+ if (!decoded)
612
+ return;
613
+ const targetBase = context.base?.toLowerCase();
614
+ const targetQuote = context.quote?.toLowerCase();
615
+ let matched = false;
616
+ const total = Math.max(decoded.resolvedOraclesInfo?.length ?? 0, decoded.bases?.length ?? 0, decoded.quotes?.length ?? 0);
617
+ for (let i = 0; i < total; i += 1) {
618
+ const child = decoded.resolvedOraclesInfo?.[i];
619
+ const childBase = decoded.bases?.[i];
620
+ const childQuote = decoded.quotes?.[i];
621
+ const resolvedAssets = decoded.resolvedAssets?.[i] ?? [];
622
+ if (!child)
623
+ continue;
624
+ if (targetBase && targetQuote) {
625
+ if (!childBase || !childQuote)
626
+ continue;
627
+ if (childBase.toLowerCase() !== targetBase ||
628
+ childQuote.toLowerCase() !== targetQuote)
629
+ continue;
630
+ matched = true;
631
+ }
632
+ visit(child, depth + 1, {
633
+ base: resolvedAssets.at(-1) ?? childBase,
634
+ quote: childQuote,
635
+ });
636
+ }
637
+ if (decoded.fallbackOracleInfo &&
638
+ (!targetBase || !targetQuote || !matched)) {
639
+ visit(decoded.fallbackOracleInfo, depth + 1, context);
640
+ }
641
+ return;
642
+ }
643
+ if (info.name === "CrossAdapter") {
644
+ const decoded = decodeCrossAdapterInfo(info.oracleInfo);
645
+ if (!decoded)
646
+ return;
647
+ visit(decoded.oracleBaseCrossInfo, depth + 1, {
648
+ base: decoded.base,
649
+ quote: decoded.cross,
650
+ });
651
+ visit(decoded.oracleCrossQuoteInfo, depth + 1, {
652
+ base: decoded.cross,
653
+ quote: decoded.quote,
654
+ });
655
+ return;
656
+ }
657
+ if (info.name === "PythOracle") {
658
+ const decoded = decodePythOracleInfo(info.oracleInfo);
659
+ const pair = resolveAdapterPair(context, decoded ? { base: decoded.base, quote: decoded.quote } : undefined);
660
+ if (decoded && pair) {
661
+ feeds.push({
662
+ pythAddress: decoded.pyth,
663
+ feedId: normalizeHex(decoded.feedId),
664
+ });
665
+ }
666
+ }
667
+ };
668
+ visit(oracleInfo, 0, { base, quote });
669
+ const deduped = new Map();
670
+ for (const feed of feeds) {
671
+ const key = `${feed.pythAddress.toLowerCase()}:${feed.feedId.toLowerCase()}`;
672
+ if (!deduped.has(key))
673
+ deduped.set(key, feed);
674
+ }
675
+ return [...deduped.values()];
676
+ };
677
+ /**
678
+ * Route-aware Pyth feed selection over already-decoded OracleAdapterEntry[].
679
+ * Uses selectResolvedVaultAdaptersForPair / selectLeafAdaptersForPair to pick
680
+ * only the adapters on the active (base, quote) route, then extracts Pyth
681
+ * feeds from that subset.
682
+ */
683
+ export const collectPythFeedsForPair = (adapters, resolvedVaults, base, quote) => {
684
+ const routeAdapters = resolvedVaults && resolvedVaults.length
685
+ ? selectResolvedVaultAdaptersForPair(adapters, resolvedVaults, base, quote)
686
+ : selectLeafAdaptersForPair(adapters, base, quote);
687
+ return collectPythFeedsFromAdapters(routeAdapters);
688
+ };
382
689
  /**
383
690
  * Extract unique PythFeed entries from already-decoded oracle adapters.
384
691
  * Use this instead of collectPythFeedIds when you have OracleAdapterEntry[] (e.g. from vault.oracle.adapters).
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../../src/utils/oracle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../../src/utils/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EAGnB,KAAK,EACL,KAAK,GACL,MAAM,MAAM,CAAC;AAiJd,SAAS,uBAAuB,CAC/B,KAYY;IAEZ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC5B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,uBAAuB,CACpC,KAAiC,CAAC,GAAG,CAY1B,CACZ,CAAC;YACF,IAAI,MAAM,KAAK,SAAS;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QAC7C,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAA2B;IAClE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CACjC,QAA8B;IAE9B,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACzC,uBAAuB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAC3E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,cAAqC;IAErC,MAAM,OAAO,GAAG,CAAC,aAAkC,EAAE,EAAE,CACtD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAC3C,CAAC;AACH,CAAC;AAED,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE,CAC9C,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1C,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE,CAC3C,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC;AACvC,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAElE,MAAM,yBAAyB,GAAG,CACjC,IAA2C,EACd,EAAE;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QACjE,OAAO,KAAK,CAAC;IACd,IACC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,YAAY;QAE1C,OAAO,KAAK,CAAC;IACd,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAQF,MAAM,+BAA+B,GAAG;IACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;CAC5B,CAAC;AAEX,MAAM,uBAAuB,GAAG;IAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3C;QACC,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,+BAA+B;KAC3C;IACD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE;IACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE;IAC/C,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE;IAC9C;QACC,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,+BAA+B;KAC3C;CACQ,CAAC;AAEX,MAAM,wBAAwB,GAAG;IAChC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IACjC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5C,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC7C;QACC,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,+BAA+B;KAC3C;IACD;QACC,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,+BAA+B;KAC3C;CACQ,CAAC;AAEX,MAAM,sBAAsB,GAAG;IAC9B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IACjC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IACjC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;IACzC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;CAChC,CAAC;AAEX,MAAM,YAAY,GAAG,CAAC,KAAgC,EAAO,EAAE;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAQ,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,UAAqC,EACZ,EAAE;IAC3B,IAAI,CAAC;QACJ,MAAM,CAAC,OAAO,CAAC,GAAG,mBAAmB,CACpC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,CAAC,EACxD,YAAY,CAAC,UAAU,CAAC,CACxB,CAAC;QACF,OAAO,OAA0B,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACrC,UAAqC,EACX,EAAE;IAC5B,IAAI,CAAC;QACJ,MAAM,CAAC,OAAO,CAAC,GAAG,mBAAmB,CACpC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,CAAC,EACzD,YAAY,CAAC,UAAU,CAAC,CACxB,CAAC;QACF,OAAO,OAA2B,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,UAAqC,EACb,EAAE;IAC1B,IAAI,CAAC;QACJ,MAAM,CAAC,OAAO,CAAC,GAAG,mBAAmB,CACpC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAC,EACvD,YAAY,CAAC,UAAU,CAAC,CACxB,CAAC;QACF,OAAO,OAAyB,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,UAAiD,EACjD,QAAQ,GAAG,CAAC,EACC,EAAE;IACf,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,KAAK,GAAG,CACb,IAA2C,EAC3C,KAAa,EACZ,EAAE;QACH,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QACtC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC;oBACV,WAAW,EAAE,OAAO,CAAC,IAAI;oBACzB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;iBACpC,CAAC,CAAC;YACJ,CAAC;YACD,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACzE,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9C,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;IACF,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAOF,MAAM,kBAAkB,GAAG,CAC1B,OAA6B,EAC7B,QAA+B,EAC9B,EAAE;IACH,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC5C,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC/C,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAqD,EAAE,EAAE,CAC1E,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;AAE5E,MAAM,sBAAsB,GAAG,CAC9B,IAAwB,EACxB,OAA6B,EAC7B,QAA+B,EACH,EAAE;IAC9B,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7C,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;QAC9C,CAAC,CAAC,SAAS,CAAC;IACb,OAAO;QACN,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,KAAK;KACR,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC5B,IAAwB,EACxB,OAAuC,EACP,EAAE;IAClC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,OAAO,EAAE,CAAC;YACb,IACC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;gBACzD,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAC1D,CAAC;gBACF,OAAO,IAAI,CAAC;YACb,CAAC;YACD,MAAM,OAAO,GAAuB;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,UAAU,EAAE,OAAO;aACnB,CAAC;YACF,OAAO;gBACN,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO;aACP,CAAC;QACH,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO;QACN,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO;KACP,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC5B,cAAqC,EACrC,IAAyB,EACA,EAAE;IAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAChD,MAAM,IAAI,GACT,cAAc,CAAC,MAAM,IAAI,CAAC;QACzB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;QACrB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC;IAC9B,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QAC1D,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;YACZ,KAAK;YACL,KAAK;SACL,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CACjB,IAAa,EACb,KAAc,EACd,KAAwB,EACxB,MAAyB,EACX,EAAE;IAChB,MAAM,QAAQ,GAAG,KAAK;SACpB,MAAM,CAAC,CAAC,IAAI,EAAkC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;SACzE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,cAAc,GAAG,KAAK;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;SACrE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;KAC5B,CAAC,CAAC,CAAC;IACL,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,MAAiC,EACjC,IAAa,EACb,KAAc,EACY,EAAE;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,MAAM,EAAE,IAAI,CAClB,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO;QACpC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CACvC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,UAAiD,EACjD,IAAa,EACb,KAAc,EACd,QAAQ,GAAG,CAAC,EACc,EAAE;IAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,KAAK,GAAG,CACb,IAA2C,EAC3C,KAAa,EACb,OAAuC,EACvC,MAAyB,EACwC,EAAE;QACnE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO,IAAI,CAAC;QACtE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9F,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACrB,OAAO,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,EACxC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,EAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAC3B,CAAC;YACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAClD,IACC,SAAS,CAAC,WAAW,EAAE,KAAK,UAAU;oBACtC,UAAU,CAAC,WAAW,EAAE,KAAK,WAAW,EACvC,CAAC;oBACF,SAAS;gBACV,CAAC;gBAED,MAAM,UAAU,GAAG,oBAAoB,CACtC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAC3B,SAAS,CACT,CAAC;gBACF,MAAM,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC;gBAC5D,MAAM,UAAU,GAAG,KAAK,CACvB,KAAK,EACL,KAAK,GAAG,CAAC,EACT,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,EAC1C,YAAY,CACZ,CAAC;gBACF,IAAI,UAAU,EAAE,CAAC;oBAChB,OAAO;wBACN,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC;wBAC3C,MAAM,EAAE,YAAY;qBACpB,CAAC;gBACH,CAAC;gBACD,IACC,UAAU,CAAC,MAAM,GAAG,CAAC;oBACrB,aAAa,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,EACvD,CAAC;oBACF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;gBACpD,CAAC;YACF,CAAC;YAED,MAAM,aAAa,GAAG,KAAK,CAC1B,OAAO,CAAC,kBAAkB,EAC1B,KAAK,GAAG,CAAC,EACT,OAAO,EACP,UAAU,CACV,CAAC;YACF,OAAO,aAAa,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACxD,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;YACD,IACC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;gBACzD,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAC1D,CAAC;gBACF,OAAO,IAAI,CAAC;YACb,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CACtB,OAAO,CAAC,mBAAmB,EAC3B,KAAK,GAAG,CAAC,EACT,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAC5C,MAAM,CACN,CAAC;YACF,MAAM,UAAU,GAAG,KAAK,CACvB,OAAO,CAAC,oBAAoB,EAC5B,KAAK,GAAG,CAAC,EACT,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAC7C,MAAM,CACN,CAAC;YACF,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,UAAiD,EACjD,QAAQ,GAAG,CAAC,EACI,EAAE;IAClB,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IACtD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACrB,OAAO,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,EACxC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,EAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAC3B,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;gBAAE,SAAS;YAC9B,MAAM,KAAK,GAAG,wBAAwB,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1E,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,sBAAsB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,wBAAwB,CACrC,UAAU,EACV,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,KAAK,EACb,QAAQ,CACR,CAAC;YACF,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,wBAAwB,CACrC,UAAU,EACV,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,KAAK,EACb,QAAQ,CACR,CAAC;YACF,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,UAAiD,EACjD,QAAQ,GAAG,CAAC,EACZ,UAAgC,EAAE,EACX,EAAE;IACzB,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC3C,MAAM,gBAAgB,GACrB,kBAAkB,CAAC;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACpB,CAAC,IAAI,SAAS,CAAC;IAEjB,MAAM,UAAU,GAAG,CAClB,IAAwB,EACxB,IAAa,EACb,KAAc,EACd,KAAkE,EACjE,EAAE;QACH,QAAQ,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI;YACJ,KAAK;YACL,GAAG,KAAK;SACR,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CACb,IAA2C,EAC3C,KAAa,EACb,OAA6B,EAC5B,EAAE;QACH,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QACjE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QAC1G,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YACjD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACrB,OAAO,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,EACxC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,EAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAC3B,CAAC;YACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;oBAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;wBAAE,SAAS;oBAC9B,IACC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU;wBACjC,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW;wBAEnC,SAAS;oBACV,OAAO,GAAG,IAAI,CAAC;gBAChB,CAAC;gBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvD,UAAU,CACT;wBACC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAE;wBAC1B,IAAI,EAAE,cAAc;wBACpB,UAAU,EAAE,IAAI;qBAChB,EACD,cAAc,CAAC,CAAC,CAAE,EAClB,cAAc,CAAC,CAAC,GAAG,CAAC,CAAE,CACtB,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE;oBACvB,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;oBACnC,KAAK;iBACL,CAAC,CAAC;YACJ,CAAC;YACD,IACC,OAAO,CAAC,kBAAkB;gBAC1B,CAAC,CAAC,UAAU,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,EACxC,CAAC;gBACF,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;YACD,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,GAAG,CAAC,EAAE;gBAC7C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,EAAE;gBAC9C,IAAI,EAAE,OAAO,CAAC,KAAK;gBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,kBAAkB,CAC9B,OAAO,EACP,OAAO;gBACN,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;gBAC9C,CAAC,CAAC,KAAK,KAAK,CAAC;oBACZ,CAAC,CAAC,gBAAgB;oBAClB,CAAC,CAAC,SAAS,CACb,CAAC;YACF,IAAI,IAAI,EAAE,CAAC;gBACV,UAAU,CACT,IAAI,EACJ,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7C,CAAC;YACH,CAAC;YACD,OAAO;QACR,CAAC;QAED,MAAM,IAAI,GAAG,kBAAkB,CAC9B,OAAO,EACP,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAC1C,CAAC;QACF,IAAI,IAAI,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7C,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;gBAC9C,CAAC,CAAC,SAAS,CAAC;YACb,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;IACF,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;IACtD,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3G,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,UAAiD,EACjD,QAAQ,GAAG,CAAC,EACY,EAAE;IAC1B,MAAM,cAAc,GAA0B,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,KAAK,GAAG,CACb,IAA2C,EAC3C,KAAa,EACZ,EAAE;QACH,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QACjE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACrB,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,EAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAC3B,OAAO,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,EACnC,OAAO,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,CACxC,CAAC;YACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,KAAK,IAAI,KAAK,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,cAAc,CAAC,IAAI,CAAC;wBACnB,KAAK;wBACL,KAAK;wBACL,KAAK,EAAE,cAAc,CAAC,CAAC,CAAE;wBACzB,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC;qBACnC,CAAC,CAAC;gBACJ,CAAC;gBACD,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7C,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9C,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;IACF,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACvD,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC,cAAc;aACnH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACnC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,OAAO,wBAAwB,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,UAAiD,EACjD,QAAQ,GAAG,CAAC,EACA,EAAE;IACd,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,KAAK,GAAG,CACb,IAA2C,EAC3C,KAAa,EACZ,EAAE;QACH,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QACtC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACzE,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9C,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;IACF,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACxC,UAAiD,EACjD,IAAa,EACb,KAAc,EACd,QAAQ,GAAG,CAAC,EACC,EAAE;IACf,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,KAAK,GAAG,CACb,IAA2C,EAC3C,KAAa,EACb,OAA6B,EAC5B,EAAE;QACH,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QACtC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QAC1G,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YACjD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACrB,OAAO,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,EACxC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,EAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAC3B,CAAC;YACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;oBAC/B,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;wBAAE,SAAS;oBACxC,IACC,SAAS,CAAC,WAAW,EAAE,KAAK,UAAU;wBACtC,UAAU,CAAC,WAAW,EAAE,KAAK,WAAW;wBAExC,SAAS;oBACV,OAAO,GAAG,IAAI,CAAC;gBAChB,CAAC;gBACD,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE;oBACvB,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS;oBACxC,KAAK,EAAE,UAAU;iBACjB,CAAC,CAAC;YACJ,CAAC;YACD,IACC,OAAO,CAAC,kBAAkB;gBAC1B,CAAC,CAAC,UAAU,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,EACxC,CAAC;gBACF,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;YACD,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,GAAG,CAAC,EAAE;gBAC7C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,EAAE;gBAC9C,IAAI,EAAE,OAAO,CAAC,KAAK;gBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,kBAAkB,CAC9B,OAAO,EACP,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAClE,CAAC;YACF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC;oBACV,WAAW,EAAE,OAAO,CAAC,IAAI;oBACzB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;iBACpC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,QAA8B,EAC9B,cAAiD,EACjD,IAAa,EACb,KAAc,EACD,EAAE;IACf,MAAM,aAAa,GAClB,cAAc,IAAI,cAAc,CAAC,MAAM;QACtC,CAAC,CAAC,kCAAkC,CAClC,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,KAAK,CACL;QACF,CAAC,CAAC,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO,4BAA4B,CAAC,aAAa,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC3C,QAA8B,EACjB,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,SAAS;QAClC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAClG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;gBAChB,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI;gBACpC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;aAC/C,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACxC,QAA8B,EAC9B,IAAa,EACb,KAAc,EACd,QAAQ,GAAG,CAAC,EACW,EAAE;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CACpC,CAAC,OAAO,EAAE,EAAE,CACX,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO;QACtC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CACzC,CAAC;IAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAC9C,CAAC;IACF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAEtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IACvD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,OAA2B,EAAE,EAAE,CAC/C,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;IAEhG,MAAM,GAAG,GAAG,CACX,OAAe,EACf,KAAa,EACb,QAAqB,EACX,EAAE;QACZ,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YACjD,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3B,KAAK,GAAG,IAAI,CAAC;YACd,CAAC;QACF,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAE3D,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CACjD,QAA8B,EAC9B,cAAqC,EACrC,IAAa,EACb,KAAc,EACS,EAAE;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CACxC,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO;QACrC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ;QACtC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAChC,CAAC;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,OAAO,kBAAkB,CAAC,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;IACpD,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,cAAc,GAAyB,EAAE,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,cAAc,CAAC,IAAI,CAAC;YACnB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAE;YAC1B,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAE;YACxB,KAAK,EAAE,cAAc,CAAC,CAAC,GAAG,CAAC,CAAE;SAC7B,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACvE,MAAM,sBAAsB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO;QACrC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QACjC,CAAC,CAAC,OAAO,CACV,CAAC;IAEF,MAAM,qBAAqB,GAC1B,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAEnE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;IACtD,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,cAAc,EAAE,GAAG,qBAAqB,CAAC,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3G,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { type Address, type PublicClient, type StateMapping, type StateOverride } from "viem";
2
+ import { type SlotHints } from "./slotHints.js";
2
3
  /**
3
4
  * Compute Permit2 allowance storage slots for the given approvals.
4
5
  *
@@ -6,16 +7,32 @@ import { type Address, type PublicClient, type StateMapping, type StateOverride
6
7
  * Storage slot 1 is the base slot for the allowance mapping.
7
8
  */
8
9
  export declare function computePermit2StateDiff(account: Address, approvals: [Address, Address][]): StateMapping;
10
+ export type GetApprovalOverridesOptions = {
11
+ /**
12
+ * Caller-supplied on-chain allowances keyed by `${asset}:${spender}`.
13
+ * When the supplied allowance is `maxUint256` the approval override for
14
+ * that pair is skipped entirely (no override, no RPC).
15
+ */
16
+ walletAllowances?: Record<`${Address}:${Address}`, bigint>;
17
+ /**
18
+ * Caller-supplied slot hints. When `allowanceSlotIndex` is present for an
19
+ * asset, the storage slot is computed cryptographically and no probing
20
+ * RPC fires.
21
+ */
22
+ slotHints?: SlotHints;
23
+ };
9
24
  /**
10
25
  * Generate state overrides for ERC20 approvals and Permit2 allowances.
11
26
  *
12
- * 1. Computes Permit2 storage slots deterministically (keccak256 mapping layout)
13
- * 2. Traces actual ERC20 approve() calls to discover approval storage slots
14
- *
15
- * @param client - viem PublicClient (must support eth_createAccessList and eth_call with state overrides)
16
- * @param account - token owner address
17
- * @param approvals - array of [assetAddress, spenderAddress] pairs
18
- * @param permit2Address - Permit2 contract address
27
+ * Resolution order, per asset:
28
+ * 1. Permit2 storage slots are always derivable cryptographically — no RPC.
29
+ * 2. Apply caller-supplied `walletAllowances[asset:spender]` — if `maxUint256`,
30
+ * skip emitting an override entirely.
31
+ * 3. Use caller-supplied `slotHints[asset].allowanceSlotIndex` →
32
+ * cryptographic slot, no RPC.
33
+ * 4. Use cached probed slot index (`fetchErc20SlotHints` cache) → same.
34
+ * 5. Probe sequentially via `fetchErc20SlotHints`.
35
+ * 6. Fall back to legacy `eth_createAccessList` discovery.
19
36
  */
20
- export declare function getApprovalOverrides(client: PublicClient, account: Address, approvals: [Address, Address][], permit2Address: Address): Promise<StateOverride>;
37
+ export declare function getApprovalOverrides(client: PublicClient, account: Address, approvals: [Address, Address][], permit2Address: Address, options?: GetApprovalOverridesOptions): Promise<StateOverride>;
21
38
  //# sourceMappingURL=approvalOverrides.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"approvalOverrides.d.ts","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/approvalOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,OAAO,EAEZ,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAQlB,MAAM,MAAM,CAAC;AAId;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAC7B,YAAY,CA8Bd;AAyED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAC/B,cAAc,EAAE,OAAO,GACrB,OAAO,CAAC,aAAa,CAAC,CA2BxB"}
1
+ {"version":3,"file":"approvalOverrides.d.ts","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/approvalOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,OAAO,EAEZ,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAQlB,MAAM,MAAM,CAAC;AAGd,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,gBAAgB,CAAC;AAExB;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAC7B,YAAY,CA8Bd;AAyED,MAAM,MAAM,2BAA2B,GAAG;IACzC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,IAAI,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3D;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAKF;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAC/B,cAAc,EAAE,OAAO,EACvB,OAAO,GAAE,2BAAgC,GACvC,OAAO,CAAC,aAAa,CAAC,CAwFxB"}
@@ -1,6 +1,7 @@
1
1
  import { erc20Abi, encodePacked, getAddress, hexToBigInt, keccak256, maxUint256, toHex, } from "viem";
2
2
  import { encodeFunctionData } from "viem/utils";
3
3
  import { getAccessedSlots } from "./accessList.js";
4
+ import { computeAllowanceSlot, fetchErc20SlotHints, getCachedSlotHints, } from "./slotHints.js";
4
5
  /**
5
6
  * Compute Permit2 allowance storage slots for the given approvals.
6
7
  *
@@ -30,7 +31,7 @@ export function computePermit2StateDiff(account, approvals) {
30
31
  * Traces allowance(account, permit2) to find candidate slots, then
31
32
  * tests each by overriding and re-reading to verify.
32
33
  */
33
- async function discoverAllowanceSlots(client, account, assets, permit2) {
34
+ async function discoverAllowanceSlotsViaAccessList(client, account, assets, permit2) {
34
35
  const stateOverride = [];
35
36
  const valueHex = toHex(maxUint256, { size: 32 });
36
37
  for (const asset of assets) {
@@ -77,22 +78,30 @@ async function discoverAllowanceSlots(client, account, assets, permit2) {
77
78
  }
78
79
  return stateOverride;
79
80
  }
81
+ const allowanceKey = (asset, spender) => `${getAddress(asset)}:${getAddress(spender)}`;
80
82
  /**
81
83
  * Generate state overrides for ERC20 approvals and Permit2 allowances.
82
84
  *
83
- * 1. Computes Permit2 storage slots deterministically (keccak256 mapping layout)
84
- * 2. Traces actual ERC20 approve() calls to discover approval storage slots
85
- *
86
- * @param client - viem PublicClient (must support eth_createAccessList and eth_call with state overrides)
87
- * @param account - token owner address
88
- * @param approvals - array of [assetAddress, spenderAddress] pairs
89
- * @param permit2Address - Permit2 contract address
85
+ * Resolution order, per asset:
86
+ * 1. Permit2 storage slots are always derivable cryptographically — no RPC.
87
+ * 2. Apply caller-supplied `walletAllowances[asset:spender]` — if `maxUint256`,
88
+ * skip emitting an override entirely.
89
+ * 3. Use caller-supplied `slotHints[asset].allowanceSlotIndex` →
90
+ * cryptographic slot, no RPC.
91
+ * 4. Use cached probed slot index (`fetchErc20SlotHints` cache) → same.
92
+ * 5. Probe sequentially via `fetchErc20SlotHints`.
93
+ * 6. Fall back to legacy `eth_createAccessList` discovery.
90
94
  */
91
- export async function getApprovalOverrides(client, account, approvals, permit2Address) {
95
+ export async function getApprovalOverrides(client, account, approvals, permit2Address, options = {}) {
92
96
  if (approvals.length === 0)
93
97
  return [];
98
+ const chainId = client.chain?.id;
99
+ if (!chainId)
100
+ throw new Error("Client must have a chain configured");
94
101
  const stateOverride = [];
95
- // 1. Permit2 allowance overrides (deterministic slot computation)
102
+ const { walletAllowances, slotHints } = options;
103
+ const valueHex = toHex(maxUint256, { size: 32 });
104
+ // 1. Permit2 allowance overrides (deterministic, no RPC).
96
105
  const permit2StateDiff = computePermit2StateDiff(account, approvals);
97
106
  if (permit2StateDiff.length > 0) {
98
107
  stateOverride.push({
@@ -100,12 +109,63 @@ export async function getApprovalOverrides(client, account, approvals, permit2Ad
100
109
  stateDiff: permit2StateDiff,
101
110
  });
102
111
  }
103
- // 2. ERC20 approval overrides (discovered via eth_createAccessList)
104
- const uniqueAssets = [
105
- ...new Set(approvals.map(([asset]) => getAddress(asset))),
106
- ];
107
- const allowanceOverrides = await discoverAllowanceSlots(client, account, uniqueAssets, permit2Address);
108
- stateOverride.push(...allowanceOverrides);
112
+ // Decide which assets still need an ERC20 allowance override.
113
+ const uniqueAssets = [];
114
+ const seen = new Set();
115
+ for (const [asset, spender] of approvals) {
116
+ const a = getAddress(asset);
117
+ // Token already approved → skip.
118
+ const supplied = walletAllowances?.[allowanceKey(a, spender)];
119
+ if (supplied !== undefined && supplied === maxUint256)
120
+ continue;
121
+ if (!seen.has(a)) {
122
+ seen.add(a);
123
+ uniqueAssets.push(a);
124
+ }
125
+ }
126
+ // Partition assets by which resolution path applies.
127
+ const fallbackAssets = [];
128
+ for (const asset of uniqueAssets) {
129
+ const callerHintIdx = slotHints?.[asset]?.allowanceSlotIndex;
130
+ const cachedIdx = getCachedSlotHints(chainId, asset)?.allowanceSlotIndex;
131
+ const idx = callerHintIdx ?? cachedIdx;
132
+ if (idx !== undefined) {
133
+ const slot = computeAllowanceSlot(account, permit2Address, idx);
134
+ stateOverride.push({
135
+ address: asset,
136
+ stateDiff: [{ slot, value: valueHex }],
137
+ });
138
+ continue;
139
+ }
140
+ fallbackAssets.push(asset);
141
+ }
142
+ // Probe via sequential scan first; only fall back to access-list for the
143
+ // rare token where that fails.
144
+ const stillUnknown = [];
145
+ for (const asset of fallbackAssets) {
146
+ try {
147
+ const hints = await fetchErc20SlotHints(client, asset, {
148
+ skipBalance: true,
149
+ allowanceSpender: permit2Address,
150
+ });
151
+ if (hints.allowanceSlotIndex !== undefined) {
152
+ const slot = computeAllowanceSlot(account, permit2Address, hints.allowanceSlotIndex);
153
+ stateOverride.push({
154
+ address: asset,
155
+ stateDiff: [{ slot, value: valueHex }],
156
+ });
157
+ continue;
158
+ }
159
+ }
160
+ catch (e) {
161
+ // fall through
162
+ }
163
+ stillUnknown.push(asset);
164
+ }
165
+ if (stillUnknown.length > 0) {
166
+ const legacy = await discoverAllowanceSlotsViaAccessList(client, account, stillUnknown, permit2Address);
167
+ stateOverride.push(...legacy);
168
+ }
109
169
  return stateOverride;
110
170
  }
111
171
  //# sourceMappingURL=approvalOverrides.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approvalOverrides.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/approvalOverrides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approvalOverrides.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/approvalOverrides.ts"],"names":[],"mappings":"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"}