@paraswap/dex-lib 2.28.10 → 2.28.11-factory-crvusd.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 (164) hide show
  1. package/build/dex/curve-v1-factory/config.js +17 -9
  2. package/build/dex/curve-v1-factory/config.js.map +1 -1
  3. package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +1 -1
  4. package/build/dex/curve-v1-factory/curve-v1-factory.js +192 -177
  5. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  6. package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js +1 -0
  7. package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js.map +1 -1
  8. package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js +1 -0
  9. package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js.map +1 -1
  10. package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js +1 -0
  11. package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js.map +1 -1
  12. package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js +1 -0
  13. package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js.map +1 -1
  14. package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js +1 -0
  15. package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js.map +1 -1
  16. package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js +47 -0
  17. package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js.map +1 -1
  18. package/build/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.js +1 -0
  19. package/build/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.js.map +1 -1
  20. package/build/dex/curve-v1-factory/price-handlers/functions/constants.js +10 -0
  21. package/build/dex/curve-v1-factory/price-handlers/functions/constants.js.map +1 -1
  22. package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js +1 -0
  23. package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js.map +1 -1
  24. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js +1 -0
  25. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js.map +1 -1
  26. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js +1 -0
  27. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js.map +1 -1
  28. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js +1 -0
  29. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js.map +1 -1
  30. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js +1 -0
  31. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js.map +1 -1
  32. package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js +1 -0
  33. package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js.map +1 -1
  34. package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js +1 -0
  35. package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js.map +1 -1
  36. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.d.ts +1 -1
  37. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js +2 -2
  38. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js.map +1 -1
  39. package/build/dex/curve-v1-factory/types.d.ts +4 -1
  40. package/build/dex/curve-v1-factory/types.js +1 -0
  41. package/build/dex/curve-v1-factory/types.js.map +1 -1
  42. package/build/dex/{ramses-v2 → test-dex}/config.d.ts +1 -1
  43. package/build/dex/test-dex/config.js +15 -0
  44. package/build/dex/test-dex/config.js.map +1 -0
  45. package/build/dex/test-dex/test-dex-pool.d.ts +39 -0
  46. package/build/dex/test-dex/test-dex-pool.js +63 -0
  47. package/build/dex/test-dex/test-dex-pool.js.map +1 -0
  48. package/build/dex/test-dex/test-dex.d.ts +37 -0
  49. package/build/dex/test-dex/test-dex.js +126 -0
  50. package/build/dex/test-dex/test-dex.js.map +1 -0
  51. package/build/dex/test-dex/types.d.ts +6 -0
  52. package/build/dex/{pancakeswap-v3 → test-dex}/types.js.map +1 -1
  53. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +16 -0
  54. package/build/dex/woo-fi-v2/woo-fi-math.js +137 -0
  55. package/build/dex/woo-fi-v2/woo-fi-math.js.map +1 -0
  56. package/package.json +1 -1
  57. package/src/dex/curve-v1-factory/config.ts +17 -9
  58. package/src/dex/curve-v1-factory/curve-v1-factory.ts +415 -367
  59. package/src/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.ts +1 -0
  60. package/src/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.ts +1 -0
  61. package/src/dex/curve-v1-factory/price-handlers/functions/_rates.ts +1 -0
  62. package/src/dex/curve-v1-factory/price-handlers/functions/_xp.ts +1 -0
  63. package/src/dex/curve-v1-factory/price-handlers/functions/_xp_mem.ts +1 -0
  64. package/src/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.ts +58 -0
  65. package/src/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.ts +1 -0
  66. package/src/dex/curve-v1-factory/price-handlers/functions/constants.ts +11 -0
  67. package/src/dex/curve-v1-factory/price-handlers/functions/get_D.ts +2 -0
  68. package/src/dex/curve-v1-factory/price-handlers/functions/get_D_mem.ts +1 -0
  69. package/src/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.ts +1 -0
  70. package/src/dex/curve-v1-factory/price-handlers/functions/get_dy.ts +1 -0
  71. package/src/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.ts +1 -0
  72. package/src/dex/curve-v1-factory/price-handlers/functions/get_y.ts +1 -0
  73. package/src/dex/curve-v1-factory/price-handlers/functions/get_y_D.ts +1 -0
  74. package/src/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.ts +2 -1
  75. package/src/dex/curve-v1-factory/types.ts +3 -1
  76. package/tests/constants-e2e.ts +0 -4
  77. package/.idea/aws.xml +0 -17
  78. package/.idea/codeStyles/Project.xml +0 -19
  79. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  80. package/.idea/misc.xml +0 -6
  81. package/.idea/modules.xml +0 -8
  82. package/.idea/paraswap-dex-lib.iml +0 -9
  83. package/.idea/vcs.xml +0 -6
  84. package/build/abi/RamsesV2StateMulticall.abi.json +0 -891
  85. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  86. package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
  87. package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
  88. package/build/abi/wBETH.json +0 -1527
  89. package/build/dex/algebra/algebra-pool.d.ts +0 -46
  90. package/build/dex/algebra/algebra-pool.js +0 -336
  91. package/build/dex/algebra/algebra-pool.js.map +0 -1
  92. package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
  93. package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
  94. package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
  95. package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
  96. package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
  97. package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
  98. package/build/dex/pancakeswap-v3/types.d.ts +0 -14
  99. package/build/dex/ramses-v2/config.js +0 -28
  100. package/build/dex/ramses-v2/config.js.map +0 -1
  101. package/build/dex/ramses-v2/constants.d.ts +0 -28
  102. package/build/dex/ramses-v2/constants.js +0 -35
  103. package/build/dex/ramses-v2/constants.js.map +0 -1
  104. package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
  105. package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
  106. package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
  107. package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
  108. package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
  109. package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
  110. package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
  111. package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
  112. package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
  113. package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
  114. package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
  115. package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
  116. package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
  117. package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
  118. package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
  119. package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
  120. package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
  121. package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
  122. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
  123. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
  124. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
  125. package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
  126. package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
  127. package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
  128. package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
  129. package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
  130. package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
  131. package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
  132. package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
  133. package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
  134. package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
  135. package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
  136. package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
  137. package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
  138. package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
  139. package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
  140. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
  141. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
  142. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
  143. package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
  144. package/build/dex/ramses-v2/contract-math/utils.js +0 -16
  145. package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
  146. package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
  147. package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
  148. package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
  149. package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
  150. package/build/dex/ramses-v2/ramses-v2.js +0 -690
  151. package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
  152. package/build/dex/ramses-v2/types.d.ts +0 -154
  153. package/build/dex/ramses-v2/types.js +0 -9
  154. package/build/dex/ramses-v2/types.js.map +0 -1
  155. package/build/dex/ramses-v2/utils.d.ts +0 -6
  156. package/build/dex/ramses-v2/utils.js +0 -71
  157. package/build/dex/ramses-v2/utils.js.map +0 -1
  158. package/build/dex/solidly/forks-override/ramses.d.ts +0 -8
  159. package/build/dex/solidly/forks-override/ramses.js +0 -15
  160. package/build/dex/solidly/forks-override/ramses.js.map +0 -1
  161. package/build/dex/uniswap-v3/forks/ramses-v2/utils.d.ts +0 -4
  162. package/build/dex/uniswap-v3/forks/ramses-v2/utils.js +0 -63
  163. package/build/dex/uniswap-v3/forks/ramses-v2/utils.js.map +0 -1
  164. /package/build/dex/{pancakeswap-v3 → test-dex}/types.js +0 -0
@@ -7,7 +7,10 @@ const utils_1 = require("../../utils");
7
7
  const CurveV1FactoryConfig = {
8
8
  CurveV1Factory: {
9
9
  [constants_1.Network.MAINNET]: {
10
- factoryAddress: '0xB9fC157394Af804a3578134A6585C0dc9cc990d4',
10
+ factoryAddresses: [
11
+ '0xB9fC157394Af804a3578134A6585C0dc9cc990d4',
12
+ '0x4f8846ae9380b90d2e71d5e3d042dff3e7ebb40d',
13
+ ],
11
14
  stateUpdatePeriodMs: 5 * 1000,
12
15
  disabledPools: new Set([
13
16
  '0x28B0Cf1baFB707F2c6826d10caf6DD901a6540C5', // It is rug pool token
@@ -144,6 +147,11 @@ const CurveV1FactoryConfig = {
144
147
  name: types_1.ImplementationNames.FACTORY_PLAIN_4_OPTIMIZED,
145
148
  address: '0xad4753d045d3aed5c1a6606dfb6a7d7ad67c1ad7',
146
149
  },
150
+ '0x67fe41A94e779CcFa22cff02cc2957DC9C0e4286': {
151
+ name: types_1.ImplementationNames.FACTORY_PLAIN_2_CRV_EMA,
152
+ address: '0x67fe41A94e779CcFa22cff02cc2957DC9C0e4286',
153
+ liquidityApiSlug: '/factory-crvusd',
154
+ },
147
155
  },
148
156
  customPools: {
149
157
  '0xDcEF968d416a41Cdac0ED8702fAC8128A64241A2': {
@@ -194,7 +202,7 @@ const CurveV1FactoryConfig = {
194
202
  },
195
203
  },
196
204
  [constants_1.Network.POLYGON]: {
197
- factoryAddress: '0x722272D36ef0Da72FF51c5A65Db7b870E2e8D4ee',
205
+ factoryAddresses: ['0x722272D36ef0Da72FF51c5A65Db7b870E2e8D4ee'],
198
206
  stateUpdatePeriodMs: 2 * 1000,
199
207
  disabledPools: new Set([
200
208
  '0x666Dc3b4baBfd063FaF965BD020024AF0dC51B64',
@@ -300,7 +308,7 @@ const CurveV1FactoryConfig = {
300
308
  },
301
309
  },
302
310
  [constants_1.Network.FANTOM]: {
303
- factoryAddress: '0x686d67265703D1f124c45E33d47d794c566889Ba',
311
+ factoryAddresses: ['0x686d67265703D1f124c45E33d47d794c566889Ba'],
304
312
  stateUpdatePeriodMs: 2 * 1000,
305
313
  disabledPools: new Set([]),
306
314
  disabledImplementations: new Set([]),
@@ -415,7 +423,7 @@ const CurveV1FactoryConfig = {
415
423
  },
416
424
  },
417
425
  [constants_1.Network.AVALANCHE]: {
418
- factoryAddress: '0xb17b674D9c5CB2e441F8e196a2f048A81355d031',
426
+ factoryAddresses: ['0xb17b674D9c5CB2e441F8e196a2f048A81355d031'],
419
427
  stateUpdatePeriodMs: 2 * 1000,
420
428
  // FIX: This must be removed when we go for full CurveV1 event based support
421
429
  disabledPools: new Set(['0x16a7da911a4dd1d83f3ff066fe28f3c792c50d90']),
@@ -513,7 +521,7 @@ const CurveV1FactoryConfig = {
513
521
  },
514
522
  },
515
523
  [constants_1.Network.ARBITRUM]: {
516
- factoryAddress: '0xb17b674D9c5CB2e441F8e196a2f048A81355d031',
524
+ factoryAddresses: ['0xb17b674D9c5CB2e441F8e196a2f048A81355d031'],
517
525
  stateUpdatePeriodMs: 2 * 1000,
518
526
  disabledPools: new Set([]),
519
527
  disabledImplementations: new Set([]),
@@ -639,7 +647,7 @@ const CurveV1FactoryConfig = {
639
647
  },
640
648
  },
641
649
  [constants_1.Network.OPTIMISM]: {
642
- factoryAddress: '0x2db0E83599a91b508Ac268a6197b8B14F5e72840',
650
+ factoryAddresses: ['0x2db0E83599a91b508Ac268a6197b8B14F5e72840'],
643
651
  stateUpdatePeriodMs: 2 * 1000,
644
652
  disabledPools: new Set([]),
645
653
  disabledImplementations: new Set([]),
@@ -849,9 +857,9 @@ const configAddressesNormalizer = (config) => {
849
857
  }, {});
850
858
  // Unite everything into top level config
851
859
  const normalizedConfig = {
852
- factoryAddress: _config.factoryAddress
853
- ? _config.factoryAddress.toLowerCase()
854
- : _config.factoryAddress,
860
+ factoryAddresses: _config.factoryAddresses
861
+ ? _config.factoryAddresses.map(e => e.toLowerCase())
862
+ : _config.factoryAddresses,
855
863
  stateUpdatePeriodMs: _config.stateUpdatePeriodMs,
856
864
  factoryPoolImplementations,
857
865
  customPools,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/curve-v1-factory/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/curve-v1-factory/config.ts"],"names":[],"mappings":";;;AAAA,mCAOiB;AAEjB,+CAAoD;AACpD,uCAA+C;AAE/C,MAAM,oBAAoB,GAA4B;IACpD,cAAc,EAAE;QACd,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,gBAAgB,EAAE;gBAChB,4CAA4C;gBAC5C,4CAA4C;aAC7C;YACD,mBAAmB,EAAE,CAAC,GAAG,IAAI;YAC7B,aAAa,EAAE,IAAI,GAAG,CAAC;gBACrB,4CAA4C,EAAE,uBAAuB;aACtE,CAAC;YACF,uBAAuB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,0BAA0B,EAAE;gBAC1B,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,oBAAoB;oBAC9C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,6BAA6B;oBACvD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,0BAA0B;oBACpD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mCAAmC;oBAC7D,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,sBAAsB;oBAChD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,+BAA+B;oBACzD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,aAAa,EAAE,MAAO;iBACvB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,uBAAuB;oBACjD,OAAO,EAAE,4CAA4C;oBACrD,aAAa,EAAE,MAAO;iBACvB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;oBACrD,aAAa,EAAE,MAAO;oBACtB,oBAAoB,EAAE,IAAI;iBAC3B;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;oBACrD,aAAa,EAAE,MAAO;oBACtB,oBAAoB,EAAE,IAAI;iBAC3B;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,uBAAuB;oBACjD,OAAO,EAAE,4CAA4C;oBACrD,gBAAgB,EAAE,iBAAiB;iBACpC;aACF;YACD,WAAW,EAAE;gBACX,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,uBAAuB;oBACvD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,uBAAuB;oBACvD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,QAAQ;oBACxB,iBAAiB,EAAE,QAAQ;oBAC3B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,wBAAwB;oBACxD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,yBAAyB;oBACzD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,QAAQ;oBACxB,iBAAiB,EAAE,QAAQ;oBAC3B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,uBAAuB;oBACvD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,IAAI;iBACpB;aACF;SACF;QACD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,gBAAgB,EAAE,CAAC,4CAA4C,CAAC;YAChE,mBAAmB,EAAE,CAAC,GAAG,IAAI;YAC7B,aAAa,EAAE,IAAI,GAAG,CAAC;gBACrB,4CAA4C;gBAC5C,4CAA4C;gBAC5C,4CAA4C;gBAC5C,4CAA4C;gBAC5C,4CAA4C;gBAC5C,4CAA4C;gBAC5C,4CAA4C;gBAC5C,4CAA4C;gBAC5C,4CAA4C;aAC7C,CAAC;YACF,uBAAuB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,0BAA0B,EAAE;gBAC1B,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;aACF;YACD,WAAW,EAAE;gBACX,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,4BAA4B;oBAC5D,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,4BAA4B;oBAC5D,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;aACF;SACF;QACD,CAAC,mBAAO,CAAC,MAAM,CAAC,EAAE;YAChB,gBAAgB,EAAE,CAAC,4CAA4C,CAAC;YAChE,mBAAmB,EAAE,CAAC,GAAG,IAAI;YAC7B,aAAa,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,uBAAuB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,0BAA0B,EAAE;gBAC1B,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;aACF;YACD,WAAW,EAAE;gBACX,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,uBAAuB;oBACvD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,uBAAuB;oBACvD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,2BAA2B;oBAC3D,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;aACF;SACF;QACD,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE;YACnB,gBAAgB,EAAE,CAAC,4CAA4C,CAAC;YAChE,mBAAmB,EAAE,CAAC,GAAG,IAAI;YAC7B,4EAA4E;YAC5E,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,4CAA4C,CAAC,CAAC;YACtE,uBAAuB,EAAE,IAAI,GAAG,CAAC;gBAC/B,4CAA4C;gBAC5C,4CAA4C;aAC7C,CAAC;YACF,0BAA0B,EAAE;gBAC1B,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,iFAAiF;gBACjF,kDAAkD;gBAClD,gDAAgD;gBAChD,2DAA2D;gBAC3D,KAAK;gBACL,kDAAkD;gBAClD,yDAAyD;gBACzD,2DAA2D;gBAC3D,KAAK;aACN;YACD,WAAW,EAAE;gBACX,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,8BAA8B;oBAC9D,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4FAA4F;gBAC5F,iBAAiB;gBACjB,UAAU;gBACV,cAAc;gBACd,2DAA2D;gBAC3D,wBAAwB;gBACxB,0BAA0B;gBAC1B,KAAK;aACN;SACF;QACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,gBAAgB,EAAE,CAAC,4CAA4C,CAAC;YAChE,mBAAmB,EAAE,CAAC,GAAG,IAAI;YAC7B,aAAa,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,uBAAuB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,0BAA0B,EAAE;gBAC1B,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,aAAa,EAAE,MAAO;iBACvB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;oBACrD,aAAa,EAAE,MAAO;oBACtB,oBAAoB,EAAE,IAAI;iBAC3B;aACF;YACD,WAAW,EAAE;gBACX,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,yBAAyB;oBACzD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,kCAA0B,CAAC,qBAAqB;oBACtD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,UAAU;oBAC5B,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,yBAAyB;oBACzD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;aACF;SACF;QACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,gBAAgB,EAAE,CAAC,4CAA4C,CAAC;YAChE,mBAAmB,EAAE,CAAC,GAAG,IAAI;YAC7B,aAAa,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,uBAAuB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,0BAA0B,EAAE;gBAC1B,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,qBAAqB;oBAC/C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,mBAAmB;oBAC7C,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;iBACtD;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,gBAAgB;oBAC1C,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,eAAe,EAAE,4CAA4C;iBAC9D;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,yBAAyB;oBACnD,OAAO,EAAE,4CAA4C;oBACrD,aAAa,EAAE,MAAO;iBACvB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,wBAAwB;oBAClD,OAAO,EAAE,4CAA4C;oBACrD,aAAa,EAAE,MAAO;oBACtB,oBAAoB,EAAE,IAAI;iBAC3B;aACF;YACD,WAAW,EAAE;gBACX,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,iCAAyB,CAAC,yBAAyB;oBACzD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,OAAO;oBACzB,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;gBACD,4CAA4C,EAAE;oBAC5C,IAAI,EAAE,kCAA0B,CAAC,qBAAqB;oBACtD,OAAO,EAAE,4CAA4C;oBACrD,cAAc,EAAE,4CAA4C;oBAC5D,gBAAgB,EAAE,UAAU;oBAC5B,cAAc,EAAE,SAAS;oBACzB,iBAAiB,EAAE,SAAS;oBAC5B,aAAa,EAAE,KAAK;iBACrB;aACF;SACF;KACF;CACF,CAAC;AA0IO,oDAAoB;AAxIhB,QAAA,QAAQ,GAAoC;IACvD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,CAAC;aACT;SACF;KACF;IACD,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;QACb,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf,iBAAiB;YACjB;gBACE,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,CAAC;aACT;SACF;KACF;IACD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,CAAC;aACT;SACF;KACF;IACD,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE;QACnB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,CAAC;aACT;SACF;KACF;IACD,CAAC,mBAAO,CAAC,MAAM,CAAC,EAAE;QAChB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,CAAC;aACT;SACF;KACF;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,CAAC;aACT;SACF;KACF;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,CAAC;aACT;SACF;KACF;CACF,CAAC;AAEF,4BAA4B;AAC5B,mHAAmH;AACnH,MAAM,yBAAyB,GAAG,CAChC,MAA+B,EACN,EAAE;IAC3B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACxC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;YACjD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAEzC,+BAA+B;YAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC3C,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO;oBAC5B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC/C,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc;oBACnC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAE5D,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,EAAE;gBAC/C,MAAM,wBAAwB,GAAqB;oBACjD,IAAI,EAAE,gBAAgB,CAAC,IAAI;oBAC3B,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;oBACnD,cAAc,EAAE,gBAAgB,CAAC,cAAc;oBAC/C,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;oBACrD,OAAO,EAAE,IAAA,wBAAgB,EAAC,gBAAgB,CAAC,OAAO,CAAC;oBACnD,cAAc,EAAE,IAAA,wBAAgB,EAAC,gBAAgB,CAAC,cAAc,CAAC;oBACjE,aAAa,EAAE,gBAAgB,CAAC,aAAa;iBAC9C,CAAC;gBACF,GAAG,CAAC,IAAA,wBAAgB,EAAC,iBAAiB,CAAC,CAAC,GAAG,wBAAwB,CAAC;gBACpE,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,qDAAqD;YACrD,MAAM,0BAA0B,GAAG,MAAM,CAAC,OAAO,CAC/C,OAAO,CAAC,0BAA0B,CACnC,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,EAAE,EAAE;gBACrD,MAAM,wBAAwB,GAA+B;oBAC3D,IAAI,EAAE,oBAAoB,CAAC,IAAI;oBAC/B,OAAO,EAAE,IAAA,wBAAgB,EAAC,oBAAoB,CAAC,OAAO,CAAC;oBACvD,eAAe,EAAE,oBAAoB,CAAC,eAAe;wBACnD,CAAC,CAAC,IAAA,wBAAgB,EAAC,oBAAoB,CAAC,eAAe,CAAC;wBACxD,CAAC,CAAC,SAAS;oBACb,oBAAoB,EAAE,oBAAoB,CAAC,oBAAoB;iBAChE,CAAC;gBACF,GAAG,CAAC,IAAA,wBAAgB,EAAC,qBAAqB,CAAC,CAAC;oBAC1C,wBAAwB,CAAC;gBAC3B,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAE,CACH,CAAC;YAEF,yCAAyC;YACzC,MAAM,gBAAgB,GAAc;gBAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;oBACxC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBACpD,CAAC,CAAC,OAAO,CAAC,gBAAgB;gBAC5B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;gBAChD,0BAA0B;gBAC1B,WAAW;gBACX,aAAa,EAAE,IAAI,GAAG,CACpB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,wBAAgB,CAAC,CACxD;gBACD,uBAAuB,EAAE,IAAI,GAAG,CAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,wBAAgB,CAAC,CAClE;aACF,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC;SAC7C;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,yBAAyB,CAAC,oBAAoB,CAAC,CAAC"}
@@ -34,7 +34,7 @@ export declare class CurveV1Factory extends SimpleExchange implements IDex<Curve
34
34
  logger: Logger;
35
35
  constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings, config?: import("./types").DexParams, coinsTypeTemplate?: AbiItem);
36
36
  initializePricing(blockNumber: number): Promise<void>;
37
- initializeCustomPollingPools(blockNumber?: number, initializeInitialState?: boolean): Promise<void>;
37
+ initializeCustomPollingPools(factoryAddresses: string[], blockNumber?: number, initializeInitialState?: boolean): Promise<void>;
38
38
  fetchFactoryPools(blockNumber?: number, initializeInitialState?: boolean): Promise<void>;
39
39
  getAdapters(side: SwapSide): {
40
40
  name: string;
@@ -85,7 +85,7 @@ class CurveV1Factory extends simple_exchange_1.SimpleExchange {
85
85
  this.SRC_TOKEN_DEX_TRANSFERS = 1;
86
86
  this.DEST_TOKEN_DEX_TRANSFERS = 1;
87
87
  this.directSwapIface = new abi_1.Interface(DirectSwap_json_1.default);
88
- this.logger = dexHelper.getLogger(dexKey);
88
+ this.logger = dexHelper.getLogger(`${this.dexKey}-${this.network}`);
89
89
  this.ifaces = {
90
90
  exchangeRouter: new abi_1.Interface(Curve_json_1.default),
91
91
  factory: new abi_1.Interface(FactoryCurveV1_json_1.default),
@@ -123,59 +123,62 @@ class CurveV1Factory extends simple_exchange_1.SimpleExchange {
123
123
  await this.fetchFactoryPools(blockNumber);
124
124
  this.logger.info(`${this.dexKey}: successfully initialized`);
125
125
  }
126
- async initializeCustomPollingPools(blockNumber,
126
+ async initializeCustomPollingPools(factoryAddresses, blockNumber,
127
127
  // We don't want to initialize state for PoolTracker. It doesn't make any sense
128
128
  initializeInitialState = true) {
129
129
  if (this.areCustomPoolsFetched) {
130
130
  return;
131
131
  }
132
- const { factoryAddress } = this.config;
133
- if (!factoryAddress) {
134
- this.logger.warn(`${this.dexKey}: No factory address specified for ${this.network}`);
135
- return;
136
- }
137
- await Promise.all(Object.values(this.config.customPools).map(async (customPool) => {
138
- const poolIdentifier = this.getPoolIdentifier(customPool.address, false);
139
- const poolContextConstants = constants_3.default[customPool.name];
140
- const { N_COINS: nCoins, USE_LENDING: useLending, isLending, } = poolContextConstants;
141
- const coinsAndImplementations = await this.dexHelper.multiWrapper.aggregate(lodash_1.default.range(0, nCoins)
142
- .map(i => ({
143
- target: customPool.address,
144
- callData: this.abiCoder.encodeFunctionCall(this._getCoinsABI(customPool.coinsInputType), [i.toString()]),
145
- decodeFunction: decoders_1.addressDecode,
146
- }))
147
- .concat([
148
- {
149
- target: factoryAddress,
150
- callData: this.ifaces.factory.encodeFunctionData('get_implementation_address', [customPool.address]),
151
- decodeFunction: decoders_1.addressDecode,
152
- },
153
- ]));
154
- const COINS = coinsAndImplementations.slice(0, -1);
155
- const implementationAddress = coinsAndImplementations.slice(-1)[0];
156
- const coins_decimals = (await this.dexHelper.multiWrapper.tryAggregate(true, COINS.map(c => ({
157
- target: c,
158
- callData: this.ifaces.erc20.encodeFunctionData('decimals', []),
159
- decodeFunction: decoders_1.uint8ToNumber,
160
- })))).map(r => r.returnData);
161
- const poolConstants = {
162
- COINS,
163
- coins_decimals,
164
- rate_multipliers: this._calcRateMultipliers(coins_decimals),
165
- lpTokenAddress: customPool.lpTokenAddress,
166
- };
167
- let newPool;
168
- if (Object.values(types_1.CustomImplementationNames).includes(customPool.name)) {
169
- // We don't want custom pools to be used for pricing, unless explicitly specified
170
- newPool = new custom_pool_polling_1.CustomBasePoolForFactory(this.logger, this.dexKey, this.dexHelper.config.data.network, this.cacheStateKey, customPool.name, implementationAddress, customPool.address, this.config.stateUpdatePeriodMs, poolIdentifier, poolConstants, poolContextConstants, customPool.liquidityApiSlug, customPool.lpTokenAddress, isLending, customPool.balancesInputType, useLending, customPool.useForPricing);
171
- }
172
- else {
173
- // Use for pricing pools from factory
174
- newPool = new custom_pool_polling_1.CustomBasePoolForFactory(this.logger, this.dexKey, this.dexHelper.config.data.network, this.cacheStateKey, customPool.name, implementationAddress, customPool.address, this.config.stateUpdatePeriodMs, poolIdentifier, poolConstants, poolContextConstants, customPool.liquidityApiSlug, customPool.lpTokenAddress, isLending, customPool.balancesInputType, useLending, true);
132
+ await Promise.all(factoryAddresses.map(async (factoryAddress) => {
133
+ try {
134
+ await Promise.all(Object.values(this.config.customPools).map(async (customPool) => {
135
+ const poolIdentifier = this.getPoolIdentifier(customPool.address, false);
136
+ const poolContextConstants = constants_3.default[customPool.name];
137
+ const { N_COINS: nCoins, USE_LENDING: useLending, isLending, } = poolContextConstants;
138
+ const coinsAndImplementations = await this.dexHelper.multiWrapper.aggregate(lodash_1.default.range(0, nCoins)
139
+ .map(i => ({
140
+ target: customPool.address,
141
+ callData: this.abiCoder.encodeFunctionCall(this._getCoinsABI(customPool.coinsInputType), [i.toString()]),
142
+ decodeFunction: decoders_1.addressDecode,
143
+ }))
144
+ .concat([
145
+ {
146
+ target: factoryAddress,
147
+ callData: this.ifaces.factory.encodeFunctionData('get_implementation_address', [customPool.address]),
148
+ decodeFunction: decoders_1.addressDecode,
149
+ },
150
+ ]));
151
+ const COINS = coinsAndImplementations.slice(0, -1);
152
+ const implementationAddress = coinsAndImplementations.slice(-1)[0];
153
+ const coins_decimals = (await this.dexHelper.multiWrapper.tryAggregate(true, COINS.map(c => ({
154
+ target: c,
155
+ callData: this.ifaces.erc20.encodeFunctionData('decimals', []),
156
+ decodeFunction: decoders_1.uint8ToNumber,
157
+ })))).map(r => r.returnData);
158
+ const poolConstants = {
159
+ COINS,
160
+ coins_decimals,
161
+ rate_multipliers: this._calcRateMultipliers(coins_decimals),
162
+ lpTokenAddress: customPool.lpTokenAddress,
163
+ };
164
+ let newPool;
165
+ if (Object.values(types_1.CustomImplementationNames).includes(customPool.name)) {
166
+ // We don't want custom pools to be used for pricing, unless explicitly specified
167
+ newPool = new custom_pool_polling_1.CustomBasePoolForFactory(this.logger, this.dexKey, this.dexHelper.config.data.network, this.cacheStateKey, customPool.name, implementationAddress, customPool.address, this.config.stateUpdatePeriodMs, poolIdentifier, poolConstants, poolContextConstants, customPool.liquidityApiSlug, customPool.lpTokenAddress, isLending, customPool.balancesInputType, useLending, customPool.useForPricing);
168
+ }
169
+ else {
170
+ // Use for pricing pools from factory
171
+ newPool = new custom_pool_polling_1.CustomBasePoolForFactory(this.logger, this.dexKey, this.dexHelper.config.data.network, this.cacheStateKey, customPool.name, implementationAddress, customPool.address, this.config.stateUpdatePeriodMs, poolIdentifier, poolConstants, poolContextConstants, customPool.liquidityApiSlug, customPool.lpTokenAddress, isLending, customPool.balancesInputType, useLending, true);
172
+ }
173
+ this.poolManager.initializeNewPoolForState(poolIdentifier, newPool);
174
+ if (initializeInitialState) {
175
+ await this.poolManager.initializeIndividualPollingPoolState(poolIdentifier, custom_pool_polling_1.CustomBasePoolForFactory.IS_SRC_FEE_ON_TRANSFER_SUPPORTED, blockNumber);
176
+ }
177
+ }));
175
178
  }
176
- this.poolManager.initializeNewPoolForState(poolIdentifier, newPool);
177
- if (initializeInitialState) {
178
- await this.poolManager.initializeIndividualPollingPoolState(poolIdentifier, custom_pool_polling_1.CustomBasePoolForFactory.IS_SRC_FEE_ON_TRANSFER_SUPPORTED, blockNumber);
179
+ catch (e) {
180
+ this.logger.error(`Error initializing custom polling pools for factory ${factoryAddress}: `, e);
181
+ throw e;
179
182
  }
180
183
  }));
181
184
  this.areCustomPoolsFetched = true;
@@ -188,140 +191,152 @@ class CurveV1Factory extends simple_exchange_1.SimpleExchange {
188
191
  if (this.areFactoryPoolsFetched) {
189
192
  return;
190
193
  }
194
+ if (!this.config.factoryAddresses ||
195
+ this.config.factoryAddresses.length == 0) {
196
+ this.logger.warn(`No factory address specified in configs`);
197
+ return;
198
+ }
191
199
  // There is no scenario when we need to call initialize custom pools without factory pools
192
200
  // So I put it here to not forget call, because custom pools must be initialised before factory pools
193
201
  // This function may be called multiple times, but will execute only once
194
- await this.initializeCustomPollingPools(blockNumber, initializeInitialState);
195
- const { factoryAddress } = this.config;
196
- if (!factoryAddress) {
197
- this.logger.warn(`${this.dexKey}: No factory address specified for ${this.network}`);
198
- return;
199
- }
200
- const poolCountResult = await this.dexHelper.multiWrapper.tryAggregate(true, [
201
- {
202
- target: factoryAddress,
203
- callData: this.ifaces.factory.encodeFunctionData('pool_count'),
204
- decodeFunction: decoders_1.uint256DecodeToNumber,
205
- },
206
- // This is used later to request all available implementations. In particular meta implementations
207
- {
208
- target: factoryAddress,
209
- callData: this.ifaces.factory.encodeFunctionData('base_pool_count'),
210
- decodeFunction: decoders_1.uint256DecodeToNumber,
211
- },
212
- ]);
213
- const poolCount = poolCountResult[0].returnData;
214
- const basePoolCount = poolCountResult[1].returnData;
215
- const calldataGetPoolAddresses = lodash_1.default.range(0, poolCount).map(i => ({
216
- target: factoryAddress,
217
- callData: this.ifaces.factory.encodeFunctionData('pool_list', [i]),
218
- decodeFunction: decoders_1.addressDecode,
219
- }));
220
- const calldataGetBasePoolAddresses = lodash_1.default.range(0, basePoolCount).map(i => ({
221
- target: factoryAddress,
222
- callData: this.ifaces.factory.encodeFunctionData('base_pool_list', [i]),
223
- decodeFunction: decoders_1.addressDecode,
224
- }));
225
- const allPoolAddresses = (await this.dexHelper.multiWrapper.tryAggregate(true, calldataGetPoolAddresses.concat(calldataGetBasePoolAddresses))).map(e => e.returnData);
226
- const poolAddresses = allPoolAddresses.slice(0, poolCount);
227
- const basePoolAddresses = allPoolAddresses.slice(poolCount);
228
- const customPoolAddresses = Object.values(this.config.customPools).map(customPool => customPool.address);
229
- basePoolAddresses.forEach(basePool => {
230
- if (!customPoolAddresses.includes(basePool) &&
231
- !this.config.disabledPools.has(basePool)) {
232
- this._reportForUnspecifiedCustomPool(basePool);
233
- }
234
- });
235
- let callDataFromFactoryPools = poolAddresses
236
- .map(p => [
237
- {
238
- target: factoryAddress,
239
- callData: this.ifaces.factory.encodeFunctionData('get_implementation_address', [p]),
240
- decodeFunction: decoders_1.addressDecode,
241
- },
242
- {
243
- target: factoryAddress,
244
- callData: this.ifaces.factory.encodeFunctionData('get_coins', [p]),
245
- decodeFunction: (result) => (0, decoders_1.generalDecoder)(result, ['address[4]'], new Array(4).fill(constants_1.NULL_ADDRESS), parsed => parsed[0].map((p) => p.toLowerCase())),
246
- },
247
- {
248
- target: factoryAddress,
249
- callData: this.ifaces.factory.encodeFunctionData('get_decimals', [p]),
250
- decodeFunction: (result) => (0, decoders_1.generalDecoder)(result, ['uint256[4]'], [0, 0, 0, 0], parsed => parsed[0].map((p) => Number(p.toString()))),
251
- },
252
- ])
253
- .flat();
254
- // This is divider between pools related results and implementations
255
- const factoryResultsDivider = callDataFromFactoryPools.length;
256
- // Implementations must be requested from factory, but it accepts as arg basePool address
257
- // for metaPools
258
- callDataFromFactoryPools = callDataFromFactoryPools.concat(...basePoolAddresses.map(basePoolAddress => ({
259
- target: factoryAddress,
260
- callData: this.ifaces.factory.encodeFunctionData('metapool_implementations', [basePoolAddress]),
261
- decodeFunction: (result) => (0, decoders_1.generalDecoder)(result, ['address[10]'], new Array(10).fill(constants_1.NULL_ADDRESS), parsed => parsed[0].map((p) => p.toLowerCase())),
262
- })),
263
- // To receive plain pool implementation address, you have to call plain_implementations
264
- // with two variables: N_COINS and implementations_index
265
- // N_COINS is between 2-4. Currently more than 4 coins is not supported
266
- // as for implementation index, there are only 0-9 indexes
267
- ...lodash_1.default.flattenDeep(lodash_1.default.range(2, constants_2.FACTORY_MAX_PLAIN_COINS + 1).map(coinNumber => lodash_1.default.range(constants_2.FACTORY_MAX_PLAIN_IMPLEMENTATIONS_FOR_COIN).map(implInd => ({
268
- target: factoryAddress,
269
- callData: this.ifaces.factory.encodeFunctionData('plain_implementations', [coinNumber, implInd]),
270
- decodeFunction: decoders_1.addressDecode,
271
- })))));
272
- const allResultsFromFactory = (await this.dexHelper.multiWrapper.tryAggregate(true, callDataFromFactoryPools)).map(r => r.returnData);
273
- const resultsFromFactory = allResultsFromFactory.slice(0, factoryResultsDivider);
274
- const allAvailableImplementations = lodash_1.default.flattenDeep(allResultsFromFactory.slice(factoryResultsDivider)).filter(implementation => implementation !== constants_1.NULL_ADDRESS &&
275
- !this.config.disabledImplementations.has(implementation));
276
- allAvailableImplementations.forEach(implementation => {
277
- const currentImplementation = this.config.factoryPoolImplementations[implementation];
278
- if (currentImplementation === undefined) {
279
- this._reportForUnspecifiedImplementation(implementation);
280
- }
281
- });
282
- const stateInitializePromises = [];
283
- lodash_1.default.chunk(resultsFromFactory, 3).forEach((result, i) => {
284
- if (this.config.disabledPools.has(poolAddresses[i])) {
285
- this.logger.trace(`Filtering disabled pool ${poolAddresses[i]}`);
286
- return;
287
- }
288
- let [implementationAddress, coins, coins_decimals] = result;
289
- implementationAddress = implementationAddress.toLowerCase();
290
- coins = coins.map(c => c.toLowerCase()).filter(c => c !== constants_1.NULL_ADDRESS);
291
- coins_decimals = coins_decimals.filter(cd => cd !== 0);
292
- const factoryImplementationFromConfig = this.config.factoryPoolImplementations[implementationAddress];
293
- if (factoryImplementationFromConfig === undefined &&
294
- !this.config.disabledImplementations.has(implementationAddress)) {
295
- this._reportForUnspecifiedImplementation(implementationAddress, poolAddresses[i]);
296
- return;
297
- }
298
- const factoryImplementationConstants = constants_3.default[factoryImplementationFromConfig.name];
299
- let isMeta = false;
300
- let basePoolStateFetcher;
301
- if (factoryImplementationFromConfig.basePoolAddress !== undefined) {
302
- isMeta = true;
303
- const basePoolIdentifier = this.getPoolIdentifier(factoryImplementationFromConfig.basePoolAddress, false);
304
- const basePool = this.poolManager.getPool(basePoolIdentifier, false);
305
- if (basePool === null) {
306
- this.logger.error(`${this.dexKey}_${this.dexHelper.config.data.network}: custom base pool ${basePoolIdentifier} was not initialized properly. ` +
307
- `You must call initializeCustomPollingPools before fetching factory`);
308
- return;
309
- }
310
- basePoolStateFetcher = basePool;
202
+ await this.initializeCustomPollingPools(this.config.factoryAddresses, blockNumber, initializeInitialState);
203
+ await Promise.all(this.config.factoryAddresses.map(async (factoryAddress) => {
204
+ try {
205
+ const poolCountResult = await this.dexHelper.multiWrapper.tryAggregate(true, [
206
+ {
207
+ target: factoryAddress,
208
+ callData: this.ifaces.factory.encodeFunctionData('pool_count'),
209
+ decodeFunction: decoders_1.uint256DecodeToNumber,
210
+ },
211
+ // This is used later to request all available implementations. In particular meta implementations
212
+ {
213
+ target: factoryAddress,
214
+ callData: this.ifaces.factory.encodeFunctionData('base_pool_count'),
215
+ decodeFunction: decoders_1.uint256DecodeToNumber,
216
+ },
217
+ ]);
218
+ const poolCount = poolCountResult[0].returnData;
219
+ const basePoolCount = poolCountResult[1].returnData;
220
+ const calldataGetPoolAddresses = lodash_1.default.range(0, poolCount).map(i => ({
221
+ target: factoryAddress,
222
+ callData: this.ifaces.factory.encodeFunctionData('pool_list', [i]),
223
+ decodeFunction: decoders_1.addressDecode,
224
+ }));
225
+ const calldataGetBasePoolAddresses = lodash_1.default.range(0, basePoolCount).map(i => ({
226
+ target: factoryAddress,
227
+ callData: this.ifaces.factory.encodeFunctionData('base_pool_list', [i]),
228
+ decodeFunction: decoders_1.addressDecode,
229
+ }));
230
+ const allPoolAddresses = (await this.dexHelper.multiWrapper.tryAggregate(true, calldataGetPoolAddresses.concat(calldataGetBasePoolAddresses))).map(e => e.returnData);
231
+ const poolAddresses = allPoolAddresses.slice(0, poolCount);
232
+ const basePoolAddresses = allPoolAddresses.slice(poolCount);
233
+ const customPoolAddresses = Object.values(this.config.customPools).map(customPool => customPool.address);
234
+ basePoolAddresses.forEach(basePool => {
235
+ if (!customPoolAddresses.includes(basePool) &&
236
+ !this.config.disabledPools.has(basePool)) {
237
+ this._reportForUnspecifiedCustomPool(basePool);
238
+ }
239
+ });
240
+ let callDataFromFactoryPools = poolAddresses
241
+ .map(p => [
242
+ {
243
+ target: factoryAddress,
244
+ callData: this.ifaces.factory.encodeFunctionData('get_implementation_address', [p]),
245
+ decodeFunction: decoders_1.addressDecode,
246
+ },
247
+ {
248
+ target: factoryAddress,
249
+ callData: this.ifaces.factory.encodeFunctionData('get_coins', [
250
+ p,
251
+ ]),
252
+ decodeFunction: (result) => (0, decoders_1.generalDecoder)(result, ['address[4]'], new Array(4).fill(constants_1.NULL_ADDRESS), parsed => parsed[0].map((p) => p.toLowerCase())),
253
+ },
254
+ {
255
+ target: factoryAddress,
256
+ callData: this.ifaces.factory.encodeFunctionData('get_decimals', [p]),
257
+ decodeFunction: (result) => (0, decoders_1.generalDecoder)(result, ['uint256[4]'], [0, 0, 0, 0], parsed => parsed[0].map((p) => Number(p.toString()))),
258
+ },
259
+ ])
260
+ .flat();
261
+ // This is divider between pools related results and implementations
262
+ const factoryResultsDivider = callDataFromFactoryPools.length;
263
+ // Implementations must be requested from factory, but it accepts as arg basePool address
264
+ // for metaPools
265
+ callDataFromFactoryPools = callDataFromFactoryPools.concat(...basePoolAddresses.map(basePoolAddress => ({
266
+ target: factoryAddress,
267
+ callData: this.ifaces.factory.encodeFunctionData('metapool_implementations', [basePoolAddress]),
268
+ decodeFunction: (result) => (0, decoders_1.generalDecoder)(result, ['address[10]'], new Array(10).fill(constants_1.NULL_ADDRESS), parsed => parsed[0].map((p) => p.toLowerCase())),
269
+ })),
270
+ // To receive plain pool implementation address, you have to call plain_implementations
271
+ // with two variables: N_COINS and implementations_index
272
+ // N_COINS is between 2-4. Currently more than 4 coins is not supported
273
+ // as for implementation index, there are only 0-9 indexes
274
+ ...lodash_1.default.flattenDeep(lodash_1.default.range(2, constants_2.FACTORY_MAX_PLAIN_COINS + 1).map(coinNumber => lodash_1.default.range(constants_2.FACTORY_MAX_PLAIN_IMPLEMENTATIONS_FOR_COIN).map(implInd => ({
275
+ target: factoryAddress,
276
+ callData: this.ifaces.factory.encodeFunctionData('plain_implementations', [coinNumber, implInd]),
277
+ decodeFunction: decoders_1.addressDecode,
278
+ })))));
279
+ const allResultsFromFactory = (await this.dexHelper.multiWrapper.tryAggregate(true, callDataFromFactoryPools)).map(r => r.returnData);
280
+ const resultsFromFactory = allResultsFromFactory.slice(0, factoryResultsDivider);
281
+ const allAvailableImplementations = lodash_1.default.flattenDeep(allResultsFromFactory.slice(factoryResultsDivider)).filter(implementation => implementation !== constants_1.NULL_ADDRESS &&
282
+ !this.config.disabledImplementations.has(implementation));
283
+ allAvailableImplementations.forEach(implementation => {
284
+ const currentImplementation = this.config.factoryPoolImplementations[implementation];
285
+ if (currentImplementation === undefined) {
286
+ this._reportForUnspecifiedImplementation(implementation);
287
+ }
288
+ });
289
+ const stateInitializePromises = [];
290
+ lodash_1.default.chunk(resultsFromFactory, 3).forEach((result, i) => {
291
+ if (this.config.disabledPools.has(poolAddresses[i])) {
292
+ this.logger.trace(`Filtering disabled pool ${poolAddresses[i]}`);
293
+ return;
294
+ }
295
+ let [implementationAddress, coins, coins_decimals] = result;
296
+ implementationAddress = implementationAddress.toLowerCase();
297
+ coins = coins
298
+ .map(c => c.toLowerCase())
299
+ .filter(c => c !== constants_1.NULL_ADDRESS);
300
+ coins_decimals = coins_decimals.filter(cd => cd !== 0);
301
+ const factoryImplementationFromConfig = this.config.factoryPoolImplementations[implementationAddress];
302
+ if (factoryImplementationFromConfig === undefined &&
303
+ !this.config.disabledImplementations.has(implementationAddress)) {
304
+ this._reportForUnspecifiedImplementation(implementationAddress, poolAddresses[i]);
305
+ return;
306
+ }
307
+ const factoryImplementationConstants = constants_3.default[factoryImplementationFromConfig.name];
308
+ let isMeta = false;
309
+ let basePoolStateFetcher;
310
+ if (factoryImplementationFromConfig.basePoolAddress !== undefined) {
311
+ isMeta = true;
312
+ const basePoolIdentifier = this.getPoolIdentifier(factoryImplementationFromConfig.basePoolAddress, false);
313
+ const basePool = this.poolManager.getPool(basePoolIdentifier, false);
314
+ if (basePool === null) {
315
+ this.logger.error(`${this.dexKey}_${this.dexHelper.config.data.network}: custom base pool ${basePoolIdentifier} was not initialized properly. ` +
316
+ `You must call initializeCustomPollingPools before fetching factory`);
317
+ return;
318
+ }
319
+ basePoolStateFetcher = basePool;
320
+ }
321
+ const poolConstants = {
322
+ COINS: coins,
323
+ coins_decimals,
324
+ rate_multipliers: this._calcRateMultipliers(coins_decimals),
325
+ };
326
+ const poolIdentifier = this.getPoolIdentifier(poolAddresses[i], isMeta);
327
+ const newPool = new factory_pool_polling_1.FactoryStateHandler(this.logger, this.dexKey, this.dexHelper.config.data.network, this.cacheStateKey, factoryImplementationFromConfig.name, implementationAddress.toLowerCase(), poolAddresses[i], this.config.stateUpdatePeriodMs, factoryAddress, poolIdentifier, poolConstants, factoryImplementationConstants, factoryImplementationConstants.isFeeOnTransferSupported, factoryImplementationFromConfig.liquidityApiSlug ?? '/factory', basePoolStateFetcher, factoryImplementationFromConfig.customGasCost, factoryImplementationFromConfig.isStoreRateSupported);
328
+ this.poolManager.initializeNewPool(poolIdentifier, newPool);
329
+ if (initializeInitialState) {
330
+ stateInitializePromises.push(this.poolManager.initializeIndividualPollingPoolState(poolIdentifier, factoryImplementationConstants.isFeeOnTransferSupported));
331
+ }
332
+ });
333
+ await Promise.all(stateInitializePromises);
311
334
  }
312
- const poolConstants = {
313
- COINS: coins,
314
- coins_decimals,
315
- rate_multipliers: this._calcRateMultipliers(coins_decimals),
316
- };
317
- const poolIdentifier = this.getPoolIdentifier(poolAddresses[i], isMeta);
318
- const newPool = new factory_pool_polling_1.FactoryStateHandler(this.logger, this.dexKey, this.dexHelper.config.data.network, this.cacheStateKey, factoryImplementationFromConfig.name, implementationAddress.toLowerCase(), poolAddresses[i], this.config.stateUpdatePeriodMs, factoryAddress, poolIdentifier, poolConstants, factoryImplementationConstants, factoryImplementationConstants.isFeeOnTransferSupported, basePoolStateFetcher, factoryImplementationFromConfig.customGasCost, factoryImplementationFromConfig.isStoreRateSupported);
319
- this.poolManager.initializeNewPool(poolIdentifier, newPool);
320
- if (initializeInitialState) {
321
- stateInitializePromises.push(this.poolManager.initializeIndividualPollingPoolState(poolIdentifier, factoryImplementationConstants.isFeeOnTransferSupported));
335
+ catch (e) {
336
+ this.logger.error(`Error fetching factory pools for ${factoryAddress}: `, e);
337
+ throw e;
322
338
  }
323
- });
324
- await Promise.all(stateInitializePromises);
339
+ }));
325
340
  this.areFactoryPoolsFetched = true;
326
341
  }
327
342
  getAdapters(side) {