@maplibre/mlt 1.1.6 → 1.1.8

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 (221) hide show
  1. package/dist/decoding/bigEndianDecode.d.ts +13 -0
  2. package/dist/decoding/bigEndianDecode.js +50 -0
  3. package/dist/decoding/bigEndianDecode.js.map +1 -0
  4. package/dist/decoding/decodingTestUtils.d.ts +2 -2
  5. package/dist/decoding/decodingTestUtils.js +20 -21
  6. package/dist/decoding/decodingTestUtils.js.map +1 -1
  7. package/dist/decoding/decodingUtils.js +4 -2
  8. package/dist/decoding/decodingUtils.js.map +1 -1
  9. package/dist/decoding/fastPforDecoder.d.ts +47 -0
  10. package/dist/decoding/fastPforDecoder.js +482 -0
  11. package/dist/decoding/fastPforDecoder.js.map +1 -0
  12. package/dist/decoding/fastPforShared.d.ts +7 -0
  13. package/dist/decoding/fastPforShared.js +29 -0
  14. package/dist/decoding/fastPforShared.js.map +1 -0
  15. package/dist/decoding/fastPforUnpack.d.ts +23 -0
  16. package/dist/decoding/fastPforUnpack.js +910 -0
  17. package/dist/decoding/fastPforUnpack.js.map +1 -0
  18. package/dist/decoding/geometryDecoder.d.ts +2 -2
  19. package/dist/decoding/geometryDecoder.js +52 -49
  20. package/dist/decoding/geometryDecoder.js.map +1 -1
  21. package/dist/decoding/intWrapper.js +0 -1
  22. package/dist/decoding/intWrapper.js.map +1 -1
  23. package/dist/decoding/integerDecodingUtils.d.ts +33 -25
  24. package/dist/decoding/integerDecodingUtils.js +115 -52
  25. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  26. package/dist/decoding/integerStreamDecoder.d.ts +15 -11
  27. package/dist/decoding/integerStreamDecoder.js +159 -65
  28. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  29. package/dist/decoding/propertyDecoder.js +38 -36
  30. package/dist/decoding/propertyDecoder.js.map +1 -1
  31. package/dist/decoding/stringDecoder.js +19 -23
  32. package/dist/decoding/stringDecoder.js.map +1 -1
  33. package/dist/decoding/unpackNullableUtils.d.ts +2 -2
  34. package/dist/decoding/unpackNullableUtils.js.map +1 -1
  35. package/dist/encoding/bigEndianEncode.d.ts +7 -0
  36. package/dist/encoding/bigEndianEncode.js +16 -0
  37. package/dist/encoding/bigEndianEncode.js.map +1 -0
  38. package/dist/encoding/constGeometryVectorEncoder.d.ts +19 -0
  39. package/dist/encoding/constGeometryVectorEncoder.js +248 -0
  40. package/dist/encoding/constGeometryVectorEncoder.js.map +1 -0
  41. package/dist/encoding/encodingUtils.d.ts +2 -2
  42. package/dist/encoding/encodingUtils.js +3 -3
  43. package/dist/encoding/encodingUtils.js.map +1 -1
  44. package/dist/encoding/fastPforEncoder.d.ts +18 -0
  45. package/dist/encoding/fastPforEncoder.js +310 -0
  46. package/dist/encoding/fastPforEncoder.js.map +1 -0
  47. package/dist/encoding/integerEncodingUtils.d.ts +20 -20
  48. package/dist/encoding/integerEncodingUtils.js +64 -48
  49. package/dist/encoding/integerEncodingUtils.js.map +1 -1
  50. package/dist/encoding/integerStreamEncoder.d.ts +3 -2
  51. package/dist/encoding/integerStreamEncoder.js +57 -23
  52. package/dist/encoding/integerStreamEncoder.js.map +1 -1
  53. package/dist/encoding/packNullableUtils.d.ts +1 -1
  54. package/dist/encoding/packNullableUtils.js.map +1 -1
  55. package/dist/encoding/propertyEncoder.d.ts +1 -1
  56. package/dist/encoding/propertyEncoder.js +17 -24
  57. package/dist/encoding/propertyEncoder.js.map +1 -1
  58. package/dist/encoding/stringEncoder.js +9 -42
  59. package/dist/encoding/stringEncoder.js.map +1 -1
  60. package/dist/encoding/zOrderCurveEncoder.js +1 -1
  61. package/dist/encoding/zOrderCurveEncoder.js.map +1 -1
  62. package/dist/metadata/tile/logicalStreamType.d.ts +8 -12
  63. package/dist/metadata/tile/logicalStreamType.js +1 -19
  64. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  65. package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
  66. package/dist/metadata/tile/streamMetadataDecoder.js +9 -4
  67. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  68. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +1 -1
  69. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  70. package/dist/metadata/tileset/typeMap.d.ts +10 -2
  71. package/dist/metadata/tileset/typeMap.js +25 -15
  72. package/dist/metadata/tileset/typeMap.js.map +1 -1
  73. package/dist/mltDecoder.js +46 -47
  74. package/dist/mltDecoder.js.map +1 -1
  75. package/dist/mltMetadata.js.map +1 -1
  76. package/dist/vector/constant/int32ConstVector.d.ts +6 -0
  77. package/dist/vector/constant/int32ConstVector.js +10 -0
  78. package/dist/vector/constant/int32ConstVector.js.map +1 -0
  79. package/dist/vector/constant/int64ConstVector.d.ts +6 -0
  80. package/dist/vector/constant/int64ConstVector.js +10 -0
  81. package/dist/vector/constant/int64ConstVector.js.map +1 -0
  82. package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -2
  83. package/dist/vector/dictionary/stringDictionaryVector.js +0 -3
  84. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  85. package/dist/vector/featureTable.d.ts +7 -8
  86. package/dist/vector/featureTable.js +10 -42
  87. package/dist/vector/featureTable.js.map +1 -1
  88. package/dist/vector/filter/flatSelectionVector.d.ts +1 -1
  89. package/dist/vector/filter/flatSelectionVector.js +0 -2
  90. package/dist/vector/filter/flatSelectionVector.js.map +1 -1
  91. package/dist/vector/filter/selectionVectorUtils.d.ts +1 -1
  92. package/dist/vector/filter/selectionVectorUtils.js.map +1 -1
  93. package/dist/vector/filter/sequenceSelectionVector.d.ts +1 -1
  94. package/dist/vector/filter/sequenceSelectionVector.js +1 -5
  95. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
  96. package/dist/vector/flat/bitVector.js +0 -2
  97. package/dist/vector/flat/bitVector.js.map +1 -1
  98. package/dist/vector/flat/booleanFlatVector.js +0 -1
  99. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  100. package/dist/vector/flat/{intFlatVector.d.ts → int32FlatVector.d.ts} +1 -1
  101. package/dist/vector/flat/{intFlatVector.js → int32FlatVector.js} +2 -2
  102. package/dist/vector/flat/int32FlatVector.js.map +1 -0
  103. package/dist/vector/flat/{longFlatVector.d.ts → int64FlatVector.d.ts} +1 -1
  104. package/dist/vector/flat/{longFlatVector.js → int64FlatVector.js} +2 -2
  105. package/dist/vector/flat/int64FlatVector.js.map +1 -0
  106. package/dist/vector/flat/stringFlatVector.d.ts +0 -1
  107. package/dist/vector/flat/stringFlatVector.js +0 -2
  108. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  109. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -3
  110. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -42
  111. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  112. package/dist/vector/geometry/constGeometryVector.d.ts +5 -5
  113. package/dist/vector/geometry/constGeometryVector.js +1 -3
  114. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  115. package/dist/vector/geometry/constGpuVector.d.ts +4 -4
  116. package/dist/vector/geometry/constGpuVector.js +1 -3
  117. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  118. package/dist/vector/geometry/flatGeometryVector.d.ts +4 -4
  119. package/dist/vector/geometry/flatGeometryVector.js +1 -5
  120. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  121. package/dist/vector/geometry/flatGpuVector.d.ts +3 -3
  122. package/dist/vector/geometry/flatGpuVector.js +0 -1
  123. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  124. package/dist/vector/geometry/geometryType.js.map +1 -1
  125. package/dist/vector/geometry/geometryVector.d.ts +7 -8
  126. package/dist/vector/geometry/geometryVector.js +0 -13
  127. package/dist/vector/geometry/geometryVector.js.map +1 -1
  128. package/dist/vector/geometry/geometryVectorConverter.d.ts +1 -1
  129. package/dist/vector/geometry/geometryVectorConverter.js +167 -211
  130. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  131. package/dist/vector/geometry/gpuVector.d.ts +6 -6
  132. package/dist/vector/geometry/gpuVector.js +0 -4
  133. package/dist/vector/geometry/gpuVector.js.map +1 -1
  134. package/dist/vector/geometry/topologyVector.d.ts +5 -9
  135. package/dist/vector/geometry/topologyVector.js +1 -19
  136. package/dist/vector/geometry/topologyVector.js.map +1 -1
  137. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  138. package/dist/vector/idVector.d.ts +8 -0
  139. package/dist/vector/idVector.js +2 -0
  140. package/dist/vector/idVector.js.map +1 -0
  141. package/dist/vector/sequence/{intSequenceVector.d.ts → int32SequenceVector.d.ts} +1 -1
  142. package/dist/vector/sequence/{intSequenceVector.js → int32SequenceVector.js} +2 -2
  143. package/dist/vector/sequence/int32SequenceVector.js.map +1 -0
  144. package/dist/vector/sequence/{longSequenceVector.d.ts → int64SequenceVector.d.ts} +1 -1
  145. package/dist/vector/sequence/{longSequenceVector.js → int64SequenceVector.js} +2 -2
  146. package/dist/vector/sequence/int64SequenceVector.js.map +1 -0
  147. package/dist/vector/sequence/sequenceVector.js +0 -1
  148. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  149. package/dist/vector/variableSizeVector.js +0 -1
  150. package/dist/vector/variableSizeVector.js.map +1 -1
  151. package/dist/vector/vector.js +1 -5
  152. package/dist/vector/vector.js.map +1 -1
  153. package/dist/vector/vectorType.js.map +1 -1
  154. package/package.json +9 -10
  155. package/dist/decoding/decodingUtils.spec.d.ts +0 -1
  156. package/dist/decoding/decodingUtils.spec.js +0 -141
  157. package/dist/decoding/decodingUtils.spec.js.map +0 -1
  158. package/dist/decoding/fsstDecoder.spec.d.ts +0 -1
  159. package/dist/decoding/fsstDecoder.spec.js +0 -57
  160. package/dist/decoding/fsstDecoder.spec.js.map +0 -1
  161. package/dist/decoding/integerDecodingUtils.spec.d.ts +0 -1
  162. package/dist/decoding/integerDecodingUtils.spec.js +0 -300
  163. package/dist/decoding/integerDecodingUtils.spec.js.map +0 -1
  164. package/dist/decoding/integerStreamDecoder.spec.d.ts +0 -1
  165. package/dist/decoding/integerStreamDecoder.spec.js +0 -402
  166. package/dist/decoding/integerStreamDecoder.spec.js.map +0 -1
  167. package/dist/decoding/propertyDecoder.spec.d.ts +0 -1
  168. package/dist/decoding/propertyDecoder.spec.js +0 -448
  169. package/dist/decoding/propertyDecoder.spec.js.map +0 -1
  170. package/dist/decoding/stringDecoder.spec.d.ts +0 -1
  171. package/dist/decoding/stringDecoder.spec.js +0 -387
  172. package/dist/decoding/stringDecoder.spec.js.map +0 -1
  173. package/dist/decoding/unpackNullableUtils.spec.d.ts +0 -1
  174. package/dist/decoding/unpackNullableUtils.spec.js +0 -71
  175. package/dist/decoding/unpackNullableUtils.spec.js.map +0 -1
  176. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +0 -1
  177. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +0 -142
  178. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +0 -1
  179. package/dist/mltDecoder.spec.d.ts +0 -1
  180. package/dist/mltDecoder.spec.js +0 -152
  181. package/dist/mltDecoder.spec.js.map +0 -1
  182. package/dist/vector/constant/intConstVector.d.ts +0 -6
  183. package/dist/vector/constant/intConstVector.js +0 -10
  184. package/dist/vector/constant/intConstVector.js.map +0 -1
  185. package/dist/vector/constant/longConstVector.d.ts +0 -6
  186. package/dist/vector/constant/longConstVector.js +0 -10
  187. package/dist/vector/constant/longConstVector.js.map +0 -1
  188. package/dist/vector/filter/flatSelectionVector.spec.d.ts +0 -1
  189. package/dist/vector/filter/flatSelectionVector.spec.js +0 -51
  190. package/dist/vector/filter/flatSelectionVector.spec.js.map +0 -1
  191. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +0 -1
  192. package/dist/vector/filter/selectionVectorUtil.spec.js +0 -154
  193. package/dist/vector/filter/selectionVectorUtil.spec.js.map +0 -1
  194. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +0 -1
  195. package/dist/vector/filter/sequenceSelectionVector.spec.js +0 -115
  196. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +0 -1
  197. package/dist/vector/flat/floatFlatVector.spec.d.ts +0 -1
  198. package/dist/vector/flat/floatFlatVector.spec.js +0 -14
  199. package/dist/vector/flat/floatFlatVector.spec.js.map +0 -1
  200. package/dist/vector/flat/intFlatVector.js.map +0 -1
  201. package/dist/vector/flat/intFlatVector.spec.d.ts +0 -1
  202. package/dist/vector/flat/intFlatVector.spec.js +0 -15
  203. package/dist/vector/flat/intFlatVector.spec.js.map +0 -1
  204. package/dist/vector/flat/longFlatVector.js.map +0 -1
  205. package/dist/vector/flat/longFlatVector.spec.d.ts +0 -1
  206. package/dist/vector/flat/longFlatVector.spec.js +0 -14
  207. package/dist/vector/flat/longFlatVector.spec.js.map +0 -1
  208. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +0 -1
  209. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +0 -28
  210. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +0 -1
  211. package/dist/vector/geometry/zOrderCurve.spec.d.ts +0 -1
  212. package/dist/vector/geometry/zOrderCurve.spec.js +0 -25
  213. package/dist/vector/geometry/zOrderCurve.spec.js.map +0 -1
  214. package/dist/vector/intVector.d.ts +0 -8
  215. package/dist/vector/intVector.js +0 -2
  216. package/dist/vector/intVector.js.map +0 -1
  217. package/dist/vector/sequence/intSequenceVector.js.map +0 -1
  218. package/dist/vector/sequence/longSequenceVector.js.map +0 -1
  219. package/dist/vector/sequence/longSequenceVektor.spec.d.ts +0 -1
  220. package/dist/vector/sequence/longSequenceVektor.spec.js +0 -11
  221. package/dist/vector/sequence/longSequenceVektor.spec.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastPforUnpack.js","sourceRoot":"","sources":["../../src/decoding/fastPforUnpack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IACjG,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IACjG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IACjG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACtD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACtD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IACjG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IACjG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,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AC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IACjG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IACjG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IACjG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG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CjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAA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AAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC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ChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAA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,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IAClG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IACnC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IAClG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IACnC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IAClG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACtD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACtD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IACnC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IAClG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IACnC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IAClG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,KAAa,EAAE,GAAgB,EAAE,MAAc;IAClG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,G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,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACvD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACxD,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,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AI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,C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","sourcesContent":["import { MASKS } from \"./fastPforShared\";\n\nexport function fastUnpack32_1(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n const in0 = inValues[inPos] >>> 0;\n for (let i = 0; i < 32; i++) {\n out[outPos + i] = (in0 >>> i) & 1;\n }\n}\n\nexport function fastUnpack32_2(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n out[op++] = (in0 >>> 0) & 0x3;\n out[op++] = (in0 >>> 2) & 0x3;\n out[op++] = (in0 >>> 4) & 0x3;\n out[op++] = (in0 >>> 6) & 0x3;\n out[op++] = (in0 >>> 8) & 0x3;\n out[op++] = (in0 >>> 10) & 0x3;\n out[op++] = (in0 >>> 12) & 0x3;\n out[op++] = (in0 >>> 14) & 0x3;\n out[op++] = (in0 >>> 16) & 0x3;\n out[op++] = (in0 >>> 18) & 0x3;\n out[op++] = (in0 >>> 20) & 0x3;\n out[op++] = (in0 >>> 22) & 0x3;\n out[op++] = (in0 >>> 24) & 0x3;\n out[op++] = (in0 >>> 26) & 0x3;\n out[op++] = (in0 >>> 28) & 0x3;\n out[op++] = (in0 >>> 30) & 0x3;\n out[op++] = (in1 >>> 0) & 0x3;\n out[op++] = (in1 >>> 2) & 0x3;\n out[op++] = (in1 >>> 4) & 0x3;\n out[op++] = (in1 >>> 6) & 0x3;\n out[op++] = (in1 >>> 8) & 0x3;\n out[op++] = (in1 >>> 10) & 0x3;\n out[op++] = (in1 >>> 12) & 0x3;\n out[op++] = (in1 >>> 14) & 0x3;\n out[op++] = (in1 >>> 16) & 0x3;\n out[op++] = (in1 >>> 18) & 0x3;\n out[op++] = (in1 >>> 20) & 0x3;\n out[op++] = (in1 >>> 22) & 0x3;\n out[op++] = (in1 >>> 24) & 0x3;\n out[op++] = (in1 >>> 26) & 0x3;\n out[op++] = (in1 >>> 28) & 0x3;\n out[op] = (in1 >>> 30) & 0x3;\n}\n\nexport function fastUnpack32_3(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n out[op++] = (in0 >>> 0) & 0x7;\n out[op++] = (in0 >>> 3) & 0x7;\n out[op++] = (in0 >>> 6) & 0x7;\n out[op++] = (in0 >>> 9) & 0x7;\n out[op++] = (in0 >>> 12) & 0x7;\n out[op++] = (in0 >>> 15) & 0x7;\n out[op++] = (in0 >>> 18) & 0x7;\n out[op++] = (in0 >>> 21) & 0x7;\n out[op++] = (in0 >>> 24) & 0x7;\n out[op++] = (in0 >>> 27) & 0x7;\n out[op++] = ((in0 >>> 30) | ((in1 & 0x1) << 2)) & 0x7;\n out[op++] = (in1 >>> 1) & 0x7;\n out[op++] = (in1 >>> 4) & 0x7;\n out[op++] = (in1 >>> 7) & 0x7;\n out[op++] = (in1 >>> 10) & 0x7;\n out[op++] = (in1 >>> 13) & 0x7;\n out[op++] = (in1 >>> 16) & 0x7;\n out[op++] = (in1 >>> 19) & 0x7;\n out[op++] = (in1 >>> 22) & 0x7;\n out[op++] = (in1 >>> 25) & 0x7;\n out[op++] = (in1 >>> 28) & 0x7;\n out[op++] = ((in1 >>> 31) | ((in2 & 0x3) << 1)) & 0x7;\n out[op++] = (in2 >>> 2) & 0x7;\n out[op++] = (in2 >>> 5) & 0x7;\n out[op++] = (in2 >>> 8) & 0x7;\n out[op++] = (in2 >>> 11) & 0x7;\n out[op++] = (in2 >>> 14) & 0x7;\n out[op++] = (in2 >>> 17) & 0x7;\n out[op++] = (in2 >>> 20) & 0x7;\n out[op++] = (in2 >>> 23) & 0x7;\n out[op++] = (in2 >>> 26) & 0x7;\n out[op] = (in2 >>> 29) & 0x7;\n}\n\nexport function fastUnpack32_4(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n out[op++] = (in0 >>> 0) & 0xf;\n out[op++] = (in0 >>> 4) & 0xf;\n out[op++] = (in0 >>> 8) & 0xf;\n out[op++] = (in0 >>> 12) & 0xf;\n out[op++] = (in0 >>> 16) & 0xf;\n out[op++] = (in0 >>> 20) & 0xf;\n out[op++] = (in0 >>> 24) & 0xf;\n out[op++] = (in0 >>> 28) & 0xf;\n out[op++] = (in1 >>> 0) & 0xf;\n out[op++] = (in1 >>> 4) & 0xf;\n out[op++] = (in1 >>> 8) & 0xf;\n out[op++] = (in1 >>> 12) & 0xf;\n out[op++] = (in1 >>> 16) & 0xf;\n out[op++] = (in1 >>> 20) & 0xf;\n out[op++] = (in1 >>> 24) & 0xf;\n out[op++] = (in1 >>> 28) & 0xf;\n out[op++] = (in2 >>> 0) & 0xf;\n out[op++] = (in2 >>> 4) & 0xf;\n out[op++] = (in2 >>> 8) & 0xf;\n out[op++] = (in2 >>> 12) & 0xf;\n out[op++] = (in2 >>> 16) & 0xf;\n out[op++] = (in2 >>> 20) & 0xf;\n out[op++] = (in2 >>> 24) & 0xf;\n out[op++] = (in2 >>> 28) & 0xf;\n out[op++] = (in3 >>> 0) & 0xf;\n out[op++] = (in3 >>> 4) & 0xf;\n out[op++] = (in3 >>> 8) & 0xf;\n out[op++] = (in3 >>> 12) & 0xf;\n out[op++] = (in3 >>> 16) & 0xf;\n out[op++] = (in3 >>> 20) & 0xf;\n out[op++] = (in3 >>> 24) & 0xf;\n out[op] = (in3 >>> 28) & 0xf;\n}\n\nexport function fastUnpack32_5(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n out[op++] = (in0 >>> 0) & 0x1f;\n out[op++] = (in0 >>> 5) & 0x1f;\n out[op++] = (in0 >>> 10) & 0x1f;\n out[op++] = (in0 >>> 15) & 0x1f;\n out[op++] = (in0 >>> 20) & 0x1f;\n out[op++] = (in0 >>> 25) & 0x1f;\n out[op++] = ((in0 >>> 30) | ((in1 & 0x7) << 2)) & 0x1f;\n out[op++] = (in1 >>> 3) & 0x1f;\n out[op++] = (in1 >>> 8) & 0x1f;\n out[op++] = (in1 >>> 13) & 0x1f;\n out[op++] = (in1 >>> 18) & 0x1f;\n out[op++] = (in1 >>> 23) & 0x1f;\n out[op++] = ((in1 >>> 28) | ((in2 & 0x1) << 4)) & 0x1f;\n out[op++] = (in2 >>> 1) & 0x1f;\n out[op++] = (in2 >>> 6) & 0x1f;\n out[op++] = (in2 >>> 11) & 0x1f;\n out[op++] = (in2 >>> 16) & 0x1f;\n out[op++] = (in2 >>> 21) & 0x1f;\n out[op++] = (in2 >>> 26) & 0x1f;\n out[op++] = ((in2 >>> 31) | ((in3 & 0xf) << 1)) & 0x1f;\n out[op++] = (in3 >>> 4) & 0x1f;\n out[op++] = (in3 >>> 9) & 0x1f;\n out[op++] = (in3 >>> 14) & 0x1f;\n out[op++] = (in3 >>> 19) & 0x1f;\n out[op++] = (in3 >>> 24) & 0x1f;\n out[op++] = ((in3 >>> 29) | ((in4 & 0x3) << 3)) & 0x1f;\n out[op++] = (in4 >>> 2) & 0x1f;\n out[op++] = (in4 >>> 7) & 0x1f;\n out[op++] = (in4 >>> 12) & 0x1f;\n out[op++] = (in4 >>> 17) & 0x1f;\n out[op++] = (in4 >>> 22) & 0x1f;\n out[op] = (in4 >>> 27) & 0x1f;\n}\n\nexport function fastUnpack32_6(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n const in5 = inValues[inPos + 5] >>> 0;\n out[op++] = (in0 >>> 0) & 0x3f;\n out[op++] = (in0 >>> 6) & 0x3f;\n out[op++] = (in0 >>> 12) & 0x3f;\n out[op++] = (in0 >>> 18) & 0x3f;\n out[op++] = (in0 >>> 24) & 0x3f;\n out[op++] = ((in0 >>> 30) | ((in1 & 0xf) << 2)) & 0x3f;\n out[op++] = (in1 >>> 4) & 0x3f;\n out[op++] = (in1 >>> 10) & 0x3f;\n out[op++] = (in1 >>> 16) & 0x3f;\n out[op++] = (in1 >>> 22) & 0x3f;\n out[op++] = ((in1 >>> 28) | ((in2 & 0x3) << 4)) & 0x3f;\n out[op++] = (in2 >>> 2) & 0x3f;\n out[op++] = (in2 >>> 8) & 0x3f;\n out[op++] = (in2 >>> 14) & 0x3f;\n out[op++] = (in2 >>> 20) & 0x3f;\n out[op++] = (in2 >>> 26) & 0x3f;\n out[op++] = (in3 >>> 0) & 0x3f;\n out[op++] = (in3 >>> 6) & 0x3f;\n out[op++] = (in3 >>> 12) & 0x3f;\n out[op++] = (in3 >>> 18) & 0x3f;\n out[op++] = (in3 >>> 24) & 0x3f;\n out[op++] = ((in3 >>> 30) | ((in4 & 0xf) << 2)) & 0x3f;\n out[op++] = (in4 >>> 4) & 0x3f;\n out[op++] = (in4 >>> 10) & 0x3f;\n out[op++] = (in4 >>> 16) & 0x3f;\n out[op++] = (in4 >>> 22) & 0x3f;\n out[op++] = ((in4 >>> 28) | ((in5 & 0x3) << 4)) & 0x3f;\n out[op++] = (in5 >>> 2) & 0x3f;\n out[op++] = (in5 >>> 8) & 0x3f;\n out[op++] = (in5 >>> 14) & 0x3f;\n out[op++] = (in5 >>> 20) & 0x3f;\n out[op] = (in5 >>> 26) & 0x3f;\n}\n\nexport function fastUnpack32_7(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n const in5 = inValues[inPos + 5] >>> 0;\n const in6 = inValues[inPos + 6] >>> 0;\n out[op++] = (in0 >>> 0) & 0x7f;\n out[op++] = (in0 >>> 7) & 0x7f;\n out[op++] = (in0 >>> 14) & 0x7f;\n out[op++] = (in0 >>> 21) & 0x7f;\n out[op++] = ((in0 >>> 28) | ((in1 & 0x7) << 4)) & 0x7f;\n out[op++] = (in1 >>> 3) & 0x7f;\n out[op++] = (in1 >>> 10) & 0x7f;\n out[op++] = (in1 >>> 17) & 0x7f;\n out[op++] = (in1 >>> 24) & 0x7f;\n out[op++] = ((in1 >>> 31) | ((in2 & 0x3f) << 1)) & 0x7f;\n out[op++] = (in2 >>> 6) & 0x7f;\n out[op++] = (in2 >>> 13) & 0x7f;\n out[op++] = (in2 >>> 20) & 0x7f;\n out[op++] = ((in2 >>> 27) | ((in3 & 0x3) << 5)) & 0x7f;\n out[op++] = (in3 >>> 2) & 0x7f;\n out[op++] = (in3 >>> 9) & 0x7f;\n out[op++] = (in3 >>> 16) & 0x7f;\n out[op++] = (in3 >>> 23) & 0x7f;\n out[op++] = ((in3 >>> 30) | ((in4 & 0x1f) << 2)) & 0x7f;\n out[op++] = (in4 >>> 5) & 0x7f;\n out[op++] = (in4 >>> 12) & 0x7f;\n out[op++] = (in4 >>> 19) & 0x7f;\n out[op++] = ((in4 >>> 26) | ((in5 & 0x1) << 6)) & 0x7f;\n out[op++] = (in5 >>> 1) & 0x7f;\n out[op++] = (in5 >>> 8) & 0x7f;\n out[op++] = (in5 >>> 15) & 0x7f;\n out[op++] = (in5 >>> 22) & 0x7f;\n out[op++] = ((in5 >>> 29) | ((in6 & 0xf) << 3)) & 0x7f;\n out[op++] = (in6 >>> 4) & 0x7f;\n out[op++] = (in6 >>> 11) & 0x7f;\n out[op++] = (in6 >>> 18) & 0x7f;\n out[op] = (in6 >>> 25) & 0x7f;\n}\n\nexport function fastUnpack32_8(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n const in5 = inValues[inPos + 5] >>> 0;\n const in6 = inValues[inPos + 6] >>> 0;\n const in7 = inValues[inPos + 7] >>> 0;\n out[op++] = (in0 >>> 0) & 0xff;\n out[op++] = (in0 >>> 8) & 0xff;\n out[op++] = (in0 >>> 16) & 0xff;\n out[op++] = (in0 >>> 24) & 0xff;\n out[op++] = (in1 >>> 0) & 0xff;\n out[op++] = (in1 >>> 8) & 0xff;\n out[op++] = (in1 >>> 16) & 0xff;\n out[op++] = (in1 >>> 24) & 0xff;\n out[op++] = (in2 >>> 0) & 0xff;\n out[op++] = (in2 >>> 8) & 0xff;\n out[op++] = (in2 >>> 16) & 0xff;\n out[op++] = (in2 >>> 24) & 0xff;\n out[op++] = (in3 >>> 0) & 0xff;\n out[op++] = (in3 >>> 8) & 0xff;\n out[op++] = (in3 >>> 16) & 0xff;\n out[op++] = (in3 >>> 24) & 0xff;\n out[op++] = (in4 >>> 0) & 0xff;\n out[op++] = (in4 >>> 8) & 0xff;\n out[op++] = (in4 >>> 16) & 0xff;\n out[op++] = (in4 >>> 24) & 0xff;\n out[op++] = (in5 >>> 0) & 0xff;\n out[op++] = (in5 >>> 8) & 0xff;\n out[op++] = (in5 >>> 16) & 0xff;\n out[op++] = (in5 >>> 24) & 0xff;\n out[op++] = (in6 >>> 0) & 0xff;\n out[op++] = (in6 >>> 8) & 0xff;\n out[op++] = (in6 >>> 16) & 0xff;\n out[op++] = (in6 >>> 24) & 0xff;\n out[op++] = (in7 >>> 0) & 0xff;\n out[op++] = (in7 >>> 8) & 0xff;\n out[op++] = (in7 >>> 16) & 0xff;\n out[op] = (in7 >>> 24) & 0xff;\n}\n\nexport function fastUnpack32_9(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n const in5 = inValues[inPos + 5] >>> 0;\n const in6 = inValues[inPos + 6] >>> 0;\n const in7 = inValues[inPos + 7] >>> 0;\n const in8 = inValues[inPos + 8] >>> 0;\n out[op++] = (in0 >>> 0) & 0x1ff;\n out[op++] = (in0 >>> 9) & 0x1ff;\n out[op++] = (in0 >>> 18) & 0x1ff;\n out[op++] = ((in0 >>> 27) | ((in1 & 0xf) << 5)) & 0x1ff;\n out[op++] = (in1 >>> 4) & 0x1ff;\n out[op++] = (in1 >>> 13) & 0x1ff;\n out[op++] = (in1 >>> 22) & 0x1ff;\n out[op++] = ((in1 >>> 31) | ((in2 & 0xff) << 1)) & 0x1ff;\n out[op++] = (in2 >>> 8) & 0x1ff;\n out[op++] = (in2 >>> 17) & 0x1ff;\n out[op++] = ((in2 >>> 26) | ((in3 & 0x7) << 6)) & 0x1ff;\n out[op++] = (in3 >>> 3) & 0x1ff;\n out[op++] = (in3 >>> 12) & 0x1ff;\n out[op++] = (in3 >>> 21) & 0x1ff;\n out[op++] = ((in3 >>> 30) | ((in4 & 0x7f) << 2)) & 0x1ff;\n out[op++] = (in4 >>> 7) & 0x1ff;\n out[op++] = (in4 >>> 16) & 0x1ff;\n out[op++] = ((in4 >>> 25) | ((in5 & 0x3) << 7)) & 0x1ff;\n out[op++] = (in5 >>> 2) & 0x1ff;\n out[op++] = (in5 >>> 11) & 0x1ff;\n out[op++] = (in5 >>> 20) & 0x1ff;\n out[op++] = ((in5 >>> 29) | ((in6 & 0x3f) << 3)) & 0x1ff;\n out[op++] = (in6 >>> 6) & 0x1ff;\n out[op++] = (in6 >>> 15) & 0x1ff;\n out[op++] = ((in6 >>> 24) | ((in7 & 0x1) << 8)) & 0x1ff;\n out[op++] = (in7 >>> 1) & 0x1ff;\n out[op++] = (in7 >>> 10) & 0x1ff;\n out[op++] = (in7 >>> 19) & 0x1ff;\n out[op++] = ((in7 >>> 28) | ((in8 & 0x1f) << 4)) & 0x1ff;\n out[op++] = (in8 >>> 5) & 0x1ff;\n out[op++] = (in8 >>> 14) & 0x1ff;\n out[op] = (in8 >>> 23) & 0x1ff;\n}\n\nexport function fastUnpack32_10(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n const in5 = inValues[inPos + 5] >>> 0;\n const in6 = inValues[inPos + 6] >>> 0;\n const in7 = inValues[inPos + 7] >>> 0;\n const in8 = inValues[inPos + 8] >>> 0;\n const in9 = inValues[inPos + 9] >>> 0;\n out[op++] = (in0 >>> 0) & 0x3ff;\n out[op++] = (in0 >>> 10) & 0x3ff;\n out[op++] = (in0 >>> 20) & 0x3ff;\n out[op++] = ((in0 >>> 30) | ((in1 & 0xff) << 2)) & 0x3ff;\n out[op++] = (in1 >>> 8) & 0x3ff;\n out[op++] = (in1 >>> 18) & 0x3ff;\n out[op++] = ((in1 >>> 28) | ((in2 & 0x3f) << 4)) & 0x3ff;\n out[op++] = (in2 >>> 6) & 0x3ff;\n out[op++] = (in2 >>> 16) & 0x3ff;\n out[op++] = ((in2 >>> 26) | ((in3 & 0xf) << 6)) & 0x3ff;\n out[op++] = (in3 >>> 4) & 0x3ff;\n out[op++] = (in3 >>> 14) & 0x3ff;\n out[op++] = ((in3 >>> 24) | ((in4 & 0x3) << 8)) & 0x3ff;\n out[op++] = (in4 >>> 2) & 0x3ff;\n out[op++] = (in4 >>> 12) & 0x3ff;\n out[op++] = (in4 >>> 22) & 0x3ff;\n out[op++] = (in5 >>> 0) & 0x3ff;\n out[op++] = (in5 >>> 10) & 0x3ff;\n out[op++] = (in5 >>> 20) & 0x3ff;\n out[op++] = ((in5 >>> 30) | ((in6 & 0xff) << 2)) & 0x3ff;\n out[op++] = (in6 >>> 8) & 0x3ff;\n out[op++] = (in6 >>> 18) & 0x3ff;\n out[op++] = ((in6 >>> 28) | ((in7 & 0x3f) << 4)) & 0x3ff;\n out[op++] = (in7 >>> 6) & 0x3ff;\n out[op++] = (in7 >>> 16) & 0x3ff;\n out[op++] = ((in7 >>> 26) | ((in8 & 0xf) << 6)) & 0x3ff;\n out[op++] = (in8 >>> 4) & 0x3ff;\n out[op++] = (in8 >>> 14) & 0x3ff;\n out[op++] = ((in8 >>> 24) | ((in9 & 0x3) << 8)) & 0x3ff;\n out[op++] = (in9 >>> 2) & 0x3ff;\n out[op++] = (in9 >>> 12) & 0x3ff;\n out[op] = (in9 >>> 22) & 0x3ff;\n}\n\nexport function fastUnpack32_11(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n const in5 = inValues[inPos + 5] >>> 0;\n const in6 = inValues[inPos + 6] >>> 0;\n const in7 = inValues[inPos + 7] >>> 0;\n const in8 = inValues[inPos + 8] >>> 0;\n const in9 = inValues[inPos + 9] >>> 0;\n const in10 = inValues[inPos + 10] >>> 0;\n out[op++] = (in0 >>> 0) & 0x7ff;\n out[op++] = (in0 >>> 11) & 0x7ff;\n out[op++] = ((in0 >>> 22) | ((in1 & 0x1) << 10)) & 0x7ff;\n out[op++] = (in1 >>> 1) & 0x7ff;\n out[op++] = (in1 >>> 12) & 0x7ff;\n out[op++] = ((in1 >>> 23) | ((in2 & 0x3) << 9)) & 0x7ff;\n out[op++] = (in2 >>> 2) & 0x7ff;\n out[op++] = (in2 >>> 13) & 0x7ff;\n out[op++] = ((in2 >>> 24) | ((in3 & 0x7) << 8)) & 0x7ff;\n out[op++] = (in3 >>> 3) & 0x7ff;\n out[op++] = (in3 >>> 14) & 0x7ff;\n out[op++] = ((in3 >>> 25) | ((in4 & 0xf) << 7)) & 0x7ff;\n out[op++] = (in4 >>> 4) & 0x7ff;\n out[op++] = (in4 >>> 15) & 0x7ff;\n out[op++] = ((in4 >>> 26) | ((in5 & 0x1f) << 6)) & 0x7ff;\n out[op++] = (in5 >>> 5) & 0x7ff;\n out[op++] = (in5 >>> 16) & 0x7ff;\n out[op++] = ((in5 >>> 27) | ((in6 & 0x3f) << 5)) & 0x7ff;\n out[op++] = (in6 >>> 6) & 0x7ff;\n out[op++] = (in6 >>> 17) & 0x7ff;\n out[op++] = ((in6 >>> 28) | ((in7 & 0x7f) << 4)) & 0x7ff;\n out[op++] = (in7 >>> 7) & 0x7ff;\n out[op++] = (in7 >>> 18) & 0x7ff;\n out[op++] = ((in7 >>> 29) | ((in8 & 0xff) << 3)) & 0x7ff;\n out[op++] = (in8 >>> 8) & 0x7ff;\n out[op++] = (in8 >>> 19) & 0x7ff;\n out[op++] = ((in8 >>> 30) | ((in9 & 0x1ff) << 2)) & 0x7ff;\n out[op++] = (in9 >>> 9) & 0x7ff;\n out[op++] = (in9 >>> 20) & 0x7ff;\n out[op++] = ((in9 >>> 31) | ((in10 & 0x3ff) << 1)) & 0x7ff;\n out[op++] = (in10 >>> 10) & 0x7ff;\n out[op] = (in10 >>> 21) & 0x7ff;\n}\n\nexport function fastUnpack32_12(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n const in5 = inValues[inPos + 5] >>> 0;\n const in6 = inValues[inPos + 6] >>> 0;\n const in7 = inValues[inPos + 7] >>> 0;\n const in8 = inValues[inPos + 8] >>> 0;\n const in9 = inValues[inPos + 9] >>> 0;\n const in10 = inValues[inPos + 10] >>> 0;\n const in11 = inValues[inPos + 11] >>> 0;\n out[op++] = (in0 >>> 0) & 0xfff;\n out[op++] = (in0 >>> 12) & 0xfff;\n out[op++] = ((in0 >>> 24) | ((in1 & 0xf) << 8)) & 0xfff;\n out[op++] = (in1 >>> 4) & 0xfff;\n out[op++] = (in1 >>> 16) & 0xfff;\n out[op++] = ((in1 >>> 28) | ((in2 & 0xff) << 4)) & 0xfff;\n out[op++] = (in2 >>> 8) & 0xfff;\n out[op++] = (in2 >>> 20) & 0xfff;\n out[op++] = (in3 >>> 0) & 0xfff;\n out[op++] = (in3 >>> 12) & 0xfff;\n out[op++] = ((in3 >>> 24) | ((in4 & 0xf) << 8)) & 0xfff;\n out[op++] = (in4 >>> 4) & 0xfff;\n out[op++] = (in4 >>> 16) & 0xfff;\n out[op++] = ((in4 >>> 28) | ((in5 & 0xff) << 4)) & 0xfff;\n out[op++] = (in5 >>> 8) & 0xfff;\n out[op++] = (in5 >>> 20) & 0xfff;\n out[op++] = (in6 >>> 0) & 0xfff;\n out[op++] = (in6 >>> 12) & 0xfff;\n out[op++] = ((in6 >>> 24) | ((in7 & 0xf) << 8)) & 0xfff;\n out[op++] = (in7 >>> 4) & 0xfff;\n out[op++] = (in7 >>> 16) & 0xfff;\n out[op++] = ((in7 >>> 28) | ((in8 & 0xff) << 4)) & 0xfff;\n out[op++] = (in8 >>> 8) & 0xfff;\n out[op++] = (in8 >>> 20) & 0xfff;\n out[op++] = (in9 >>> 0) & 0xfff;\n out[op++] = (in9 >>> 12) & 0xfff;\n out[op++] = ((in9 >>> 24) | ((in10 & 0xf) << 8)) & 0xfff;\n out[op++] = (in10 >>> 4) & 0xfff;\n out[op++] = (in10 >>> 16) & 0xfff;\n out[op++] = ((in10 >>> 28) | ((in11 & 0xff) << 4)) & 0xfff;\n out[op++] = (in11 >>> 8) & 0xfff;\n out[op] = (in11 >>> 20) & 0xfff;\n}\n\nexport function fastUnpack32_16(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n const in0 = inValues[inPos] >>> 0;\n const in1 = inValues[inPos + 1] >>> 0;\n const in2 = inValues[inPos + 2] >>> 0;\n const in3 = inValues[inPos + 3] >>> 0;\n const in4 = inValues[inPos + 4] >>> 0;\n const in5 = inValues[inPos + 5] >>> 0;\n const in6 = inValues[inPos + 6] >>> 0;\n const in7 = inValues[inPos + 7] >>> 0;\n const in8 = inValues[inPos + 8] >>> 0;\n const in9 = inValues[inPos + 9] >>> 0;\n const in10 = inValues[inPos + 10] >>> 0;\n const in11 = inValues[inPos + 11] >>> 0;\n const in12 = inValues[inPos + 12] >>> 0;\n const in13 = inValues[inPos + 13] >>> 0;\n const in14 = inValues[inPos + 14] >>> 0;\n const in15 = inValues[inPos + 15] >>> 0;\n out[op++] = (in0 >>> 0) & 0xffff;\n out[op++] = (in0 >>> 16) & 0xffff;\n out[op++] = (in1 >>> 0) & 0xffff;\n out[op++] = (in1 >>> 16) & 0xffff;\n out[op++] = (in2 >>> 0) & 0xffff;\n out[op++] = (in2 >>> 16) & 0xffff;\n out[op++] = (in3 >>> 0) & 0xffff;\n out[op++] = (in3 >>> 16) & 0xffff;\n out[op++] = (in4 >>> 0) & 0xffff;\n out[op++] = (in4 >>> 16) & 0xffff;\n out[op++] = (in5 >>> 0) & 0xffff;\n out[op++] = (in5 >>> 16) & 0xffff;\n out[op++] = (in6 >>> 0) & 0xffff;\n out[op++] = (in6 >>> 16) & 0xffff;\n out[op++] = (in7 >>> 0) & 0xffff;\n out[op++] = (in7 >>> 16) & 0xffff;\n out[op++] = (in8 >>> 0) & 0xffff;\n out[op++] = (in8 >>> 16) & 0xffff;\n out[op++] = (in9 >>> 0) & 0xffff;\n out[op++] = (in9 >>> 16) & 0xffff;\n out[op++] = (in10 >>> 0) & 0xffff;\n out[op++] = (in10 >>> 16) & 0xffff;\n out[op++] = (in11 >>> 0) & 0xffff;\n out[op++] = (in11 >>> 16) & 0xffff;\n out[op++] = (in12 >>> 0) & 0xffff;\n out[op++] = (in12 >>> 16) & 0xffff;\n out[op++] = (in13 >>> 0) & 0xffff;\n out[op++] = (in13 >>> 16) & 0xffff;\n out[op++] = (in14 >>> 0) & 0xffff;\n out[op++] = (in14 >>> 16) & 0xffff;\n out[op++] = (in15 >>> 0) & 0xffff;\n out[op] = (in15 >>> 16) & 0xffff;\n}\n\nexport function fastUnpack256_1(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let c = 0; c < 8; c++) {\n const in0 = inValues[ip++] >>> 0;\n out[op++] = (in0 >>> 0) & 0x1;\n out[op++] = (in0 >>> 1) & 0x1;\n out[op++] = (in0 >>> 2) & 0x1;\n out[op++] = (in0 >>> 3) & 0x1;\n out[op++] = (in0 >>> 4) & 0x1;\n out[op++] = (in0 >>> 5) & 0x1;\n out[op++] = (in0 >>> 6) & 0x1;\n out[op++] = (in0 >>> 7) & 0x1;\n out[op++] = (in0 >>> 8) & 0x1;\n out[op++] = (in0 >>> 9) & 0x1;\n out[op++] = (in0 >>> 10) & 0x1;\n out[op++] = (in0 >>> 11) & 0x1;\n out[op++] = (in0 >>> 12) & 0x1;\n out[op++] = (in0 >>> 13) & 0x1;\n out[op++] = (in0 >>> 14) & 0x1;\n out[op++] = (in0 >>> 15) & 0x1;\n out[op++] = (in0 >>> 16) & 0x1;\n out[op++] = (in0 >>> 17) & 0x1;\n out[op++] = (in0 >>> 18) & 0x1;\n out[op++] = (in0 >>> 19) & 0x1;\n out[op++] = (in0 >>> 20) & 0x1;\n out[op++] = (in0 >>> 21) & 0x1;\n out[op++] = (in0 >>> 22) & 0x1;\n out[op++] = (in0 >>> 23) & 0x1;\n out[op++] = (in0 >>> 24) & 0x1;\n out[op++] = (in0 >>> 25) & 0x1;\n out[op++] = (in0 >>> 26) & 0x1;\n out[op++] = (in0 >>> 27) & 0x1;\n out[op++] = (in0 >>> 28) & 0x1;\n out[op++] = (in0 >>> 29) & 0x1;\n out[op++] = (in0 >>> 30) & 0x1;\n out[op++] = (in0 >>> 31) & 0x1;\n }\n}\n\nexport function fastUnpack256_2(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let c = 0; c < 8; c++) {\n const in0 = inValues[ip++] >>> 0;\n const in1 = inValues[ip++] >>> 0;\n out[op++] = (in0 >>> 0) & 0x3;\n out[op++] = (in0 >>> 2) & 0x3;\n out[op++] = (in0 >>> 4) & 0x3;\n out[op++] = (in0 >>> 6) & 0x3;\n out[op++] = (in0 >>> 8) & 0x3;\n out[op++] = (in0 >>> 10) & 0x3;\n out[op++] = (in0 >>> 12) & 0x3;\n out[op++] = (in0 >>> 14) & 0x3;\n out[op++] = (in0 >>> 16) & 0x3;\n out[op++] = (in0 >>> 18) & 0x3;\n out[op++] = (in0 >>> 20) & 0x3;\n out[op++] = (in0 >>> 22) & 0x3;\n out[op++] = (in0 >>> 24) & 0x3;\n out[op++] = (in0 >>> 26) & 0x3;\n out[op++] = (in0 >>> 28) & 0x3;\n out[op++] = (in0 >>> 30) & 0x3;\n out[op++] = (in1 >>> 0) & 0x3;\n out[op++] = (in1 >>> 2) & 0x3;\n out[op++] = (in1 >>> 4) & 0x3;\n out[op++] = (in1 >>> 6) & 0x3;\n out[op++] = (in1 >>> 8) & 0x3;\n out[op++] = (in1 >>> 10) & 0x3;\n out[op++] = (in1 >>> 12) & 0x3;\n out[op++] = (in1 >>> 14) & 0x3;\n out[op++] = (in1 >>> 16) & 0x3;\n out[op++] = (in1 >>> 18) & 0x3;\n out[op++] = (in1 >>> 20) & 0x3;\n out[op++] = (in1 >>> 22) & 0x3;\n out[op++] = (in1 >>> 24) & 0x3;\n out[op++] = (in1 >>> 26) & 0x3;\n out[op++] = (in1 >>> 28) & 0x3;\n out[op++] = (in1 >>> 30) & 0x3;\n }\n}\n\nexport function fastUnpack256_3(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let c = 0; c < 8; c++) {\n const in0 = inValues[ip++] >>> 0;\n const in1 = inValues[ip++] >>> 0;\n const in2 = inValues[ip++] >>> 0;\n out[op++] = (in0 >>> 0) & 0x7;\n out[op++] = (in0 >>> 3) & 0x7;\n out[op++] = (in0 >>> 6) & 0x7;\n out[op++] = (in0 >>> 9) & 0x7;\n out[op++] = (in0 >>> 12) & 0x7;\n out[op++] = (in0 >>> 15) & 0x7;\n out[op++] = (in0 >>> 18) & 0x7;\n out[op++] = (in0 >>> 21) & 0x7;\n out[op++] = (in0 >>> 24) & 0x7;\n out[op++] = (in0 >>> 27) & 0x7;\n out[op++] = ((in0 >>> 30) | ((in1 & 0x1) << 2)) & 0x7;\n out[op++] = (in1 >>> 1) & 0x7;\n out[op++] = (in1 >>> 4) & 0x7;\n out[op++] = (in1 >>> 7) & 0x7;\n out[op++] = (in1 >>> 10) & 0x7;\n out[op++] = (in1 >>> 13) & 0x7;\n out[op++] = (in1 >>> 16) & 0x7;\n out[op++] = (in1 >>> 19) & 0x7;\n out[op++] = (in1 >>> 22) & 0x7;\n out[op++] = (in1 >>> 25) & 0x7;\n out[op++] = (in1 >>> 28) & 0x7;\n out[op++] = ((in1 >>> 31) | ((in2 & 0x3) << 1)) & 0x7;\n out[op++] = (in2 >>> 2) & 0x7;\n out[op++] = (in2 >>> 5) & 0x7;\n out[op++] = (in2 >>> 8) & 0x7;\n out[op++] = (in2 >>> 11) & 0x7;\n out[op++] = (in2 >>> 14) & 0x7;\n out[op++] = (in2 >>> 17) & 0x7;\n out[op++] = (in2 >>> 20) & 0x7;\n out[op++] = (in2 >>> 23) & 0x7;\n out[op++] = (in2 >>> 26) & 0x7;\n out[op++] = (in2 >>> 29) & 0x7;\n }\n}\n\nexport function fastUnpack256_4(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let c = 0; c < 8; c++) {\n const in0 = inValues[ip++] >>> 0;\n const in1 = inValues[ip++] >>> 0;\n const in2 = inValues[ip++] >>> 0;\n const in3 = inValues[ip++] >>> 0;\n out[op++] = (in0 >>> 0) & 0xf;\n out[op++] = (in0 >>> 4) & 0xf;\n out[op++] = (in0 >>> 8) & 0xf;\n out[op++] = (in0 >>> 12) & 0xf;\n out[op++] = (in0 >>> 16) & 0xf;\n out[op++] = (in0 >>> 20) & 0xf;\n out[op++] = (in0 >>> 24) & 0xf;\n out[op++] = (in0 >>> 28) & 0xf;\n out[op++] = (in1 >>> 0) & 0xf;\n out[op++] = (in1 >>> 4) & 0xf;\n out[op++] = (in1 >>> 8) & 0xf;\n out[op++] = (in1 >>> 12) & 0xf;\n out[op++] = (in1 >>> 16) & 0xf;\n out[op++] = (in1 >>> 20) & 0xf;\n out[op++] = (in1 >>> 24) & 0xf;\n out[op++] = (in1 >>> 28) & 0xf;\n out[op++] = (in2 >>> 0) & 0xf;\n out[op++] = (in2 >>> 4) & 0xf;\n out[op++] = (in2 >>> 8) & 0xf;\n out[op++] = (in2 >>> 12) & 0xf;\n out[op++] = (in2 >>> 16) & 0xf;\n out[op++] = (in2 >>> 20) & 0xf;\n out[op++] = (in2 >>> 24) & 0xf;\n out[op++] = (in2 >>> 28) & 0xf;\n out[op++] = (in3 >>> 0) & 0xf;\n out[op++] = (in3 >>> 4) & 0xf;\n out[op++] = (in3 >>> 8) & 0xf;\n out[op++] = (in3 >>> 12) & 0xf;\n out[op++] = (in3 >>> 16) & 0xf;\n out[op++] = (in3 >>> 20) & 0xf;\n out[op++] = (in3 >>> 24) & 0xf;\n out[op++] = (in3 >>> 28) & 0xf;\n }\n}\n\nexport function fastUnpack256_5(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let c = 0; c < 8; c++) {\n const in0 = inValues[ip++] >>> 0;\n const in1 = inValues[ip++] >>> 0;\n const in2 = inValues[ip++] >>> 0;\n const in3 = inValues[ip++] >>> 0;\n const in4 = inValues[ip++] >>> 0;\n out[op++] = (in0 >>> 0) & 0x1f;\n out[op++] = (in0 >>> 5) & 0x1f;\n out[op++] = (in0 >>> 10) & 0x1f;\n out[op++] = (in0 >>> 15) & 0x1f;\n out[op++] = (in0 >>> 20) & 0x1f;\n out[op++] = (in0 >>> 25) & 0x1f;\n out[op++] = ((in0 >>> 30) | ((in1 & 0x7) << 2)) & 0x1f;\n out[op++] = (in1 >>> 3) & 0x1f;\n out[op++] = (in1 >>> 8) & 0x1f;\n out[op++] = (in1 >>> 13) & 0x1f;\n out[op++] = (in1 >>> 18) & 0x1f;\n out[op++] = (in1 >>> 23) & 0x1f;\n out[op++] = ((in1 >>> 28) | ((in2 & 0x1) << 4)) & 0x1f;\n out[op++] = (in2 >>> 1) & 0x1f;\n out[op++] = (in2 >>> 6) & 0x1f;\n out[op++] = (in2 >>> 11) & 0x1f;\n out[op++] = (in2 >>> 16) & 0x1f;\n out[op++] = (in2 >>> 21) & 0x1f;\n out[op++] = (in2 >>> 26) & 0x1f;\n out[op++] = ((in2 >>> 31) | ((in3 & 0xf) << 1)) & 0x1f;\n out[op++] = (in3 >>> 4) & 0x1f;\n out[op++] = (in3 >>> 9) & 0x1f;\n out[op++] = (in3 >>> 14) & 0x1f;\n out[op++] = (in3 >>> 19) & 0x1f;\n out[op++] = (in3 >>> 24) & 0x1f;\n out[op++] = ((in3 >>> 29) | ((in4 & 0x3) << 3)) & 0x1f;\n out[op++] = (in4 >>> 2) & 0x1f;\n out[op++] = (in4 >>> 7) & 0x1f;\n out[op++] = (in4 >>> 12) & 0x1f;\n out[op++] = (in4 >>> 17) & 0x1f;\n out[op++] = (in4 >>> 22) & 0x1f;\n out[op++] = (in4 >>> 27) & 0x1f;\n }\n}\n\nexport function fastUnpack256_6(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let c = 0; c < 8; c++) {\n const in0 = inValues[ip++] >>> 0;\n const in1 = inValues[ip++] >>> 0;\n const in2 = inValues[ip++] >>> 0;\n const in3 = inValues[ip++] >>> 0;\n const in4 = inValues[ip++] >>> 0;\n const in5 = inValues[ip++] >>> 0;\n out[op++] = (in0 >>> 0) & 0x3f;\n out[op++] = (in0 >>> 6) & 0x3f;\n out[op++] = (in0 >>> 12) & 0x3f;\n out[op++] = (in0 >>> 18) & 0x3f;\n out[op++] = (in0 >>> 24) & 0x3f;\n out[op++] = ((in0 >>> 30) | ((in1 & 0xf) << 2)) & 0x3f;\n out[op++] = (in1 >>> 4) & 0x3f;\n out[op++] = (in1 >>> 10) & 0x3f;\n out[op++] = (in1 >>> 16) & 0x3f;\n out[op++] = (in1 >>> 22) & 0x3f;\n out[op++] = ((in1 >>> 28) | ((in2 & 0x3) << 4)) & 0x3f;\n out[op++] = (in2 >>> 2) & 0x3f;\n out[op++] = (in2 >>> 8) & 0x3f;\n out[op++] = (in2 >>> 14) & 0x3f;\n out[op++] = (in2 >>> 20) & 0x3f;\n out[op++] = (in2 >>> 26) & 0x3f;\n out[op++] = (in3 >>> 0) & 0x3f;\n out[op++] = (in3 >>> 6) & 0x3f;\n out[op++] = (in3 >>> 12) & 0x3f;\n out[op++] = (in3 >>> 18) & 0x3f;\n out[op++] = (in3 >>> 24) & 0x3f;\n out[op++] = ((in3 >>> 30) | ((in4 & 0xf) << 2)) & 0x3f;\n out[op++] = (in4 >>> 4) & 0x3f;\n out[op++] = (in4 >>> 10) & 0x3f;\n out[op++] = (in4 >>> 16) & 0x3f;\n out[op++] = (in4 >>> 22) & 0x3f;\n out[op++] = ((in4 >>> 28) | ((in5 & 0x3) << 4)) & 0x3f;\n out[op++] = (in5 >>> 2) & 0x3f;\n out[op++] = (in5 >>> 8) & 0x3f;\n out[op++] = (in5 >>> 14) & 0x3f;\n out[op++] = (in5 >>> 20) & 0x3f;\n out[op++] = (in5 >>> 26) & 0x3f;\n }\n}\n\nexport function fastUnpack256_7(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let c = 0; c < 8; c++) {\n const in0 = inValues[ip++] >>> 0;\n const in1 = inValues[ip++] >>> 0;\n const in2 = inValues[ip++] >>> 0;\n const in3 = inValues[ip++] >>> 0;\n const in4 = inValues[ip++] >>> 0;\n const in5 = inValues[ip++] >>> 0;\n const in6 = inValues[ip++] >>> 0;\n out[op++] = (in0 >>> 0) & 0x7f;\n out[op++] = (in0 >>> 7) & 0x7f;\n out[op++] = (in0 >>> 14) & 0x7f;\n out[op++] = (in0 >>> 21) & 0x7f;\n out[op++] = ((in0 >>> 28) | ((in1 & 0x7) << 4)) & 0x7f;\n out[op++] = (in1 >>> 3) & 0x7f;\n out[op++] = (in1 >>> 10) & 0x7f;\n out[op++] = (in1 >>> 17) & 0x7f;\n out[op++] = (in1 >>> 24) & 0x7f;\n out[op++] = ((in1 >>> 31) | ((in2 & 0x3f) << 1)) & 0x7f;\n out[op++] = (in2 >>> 6) & 0x7f;\n out[op++] = (in2 >>> 13) & 0x7f;\n out[op++] = (in2 >>> 20) & 0x7f;\n out[op++] = ((in2 >>> 27) | ((in3 & 0x3) << 5)) & 0x7f;\n out[op++] = (in3 >>> 2) & 0x7f;\n out[op++] = (in3 >>> 9) & 0x7f;\n out[op++] = (in3 >>> 16) & 0x7f;\n out[op++] = (in3 >>> 23) & 0x7f;\n out[op++] = ((in3 >>> 30) | ((in4 & 0x1f) << 2)) & 0x7f;\n out[op++] = (in4 >>> 5) & 0x7f;\n out[op++] = (in4 >>> 12) & 0x7f;\n out[op++] = (in4 >>> 19) & 0x7f;\n out[op++] = ((in4 >>> 26) | ((in5 & 0x1) << 6)) & 0x7f;\n out[op++] = (in5 >>> 1) & 0x7f;\n out[op++] = (in5 >>> 8) & 0x7f;\n out[op++] = (in5 >>> 15) & 0x7f;\n out[op++] = (in5 >>> 22) & 0x7f;\n out[op++] = ((in5 >>> 29) | ((in6 & 0xf) << 3)) & 0x7f;\n out[op++] = (in6 >>> 4) & 0x7f;\n out[op++] = (in6 >>> 11) & 0x7f;\n out[op++] = (in6 >>> 18) & 0x7f;\n out[op++] = (in6 >>> 25) & 0x7f;\n }\n}\n\nexport function fastUnpack256_8(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let c = 0; c < 8; c++) {\n const in0 = inValues[ip++] >>> 0;\n const in1 = inValues[ip++] >>> 0;\n const in2 = inValues[ip++] >>> 0;\n const in3 = inValues[ip++] >>> 0;\n const in4 = inValues[ip++] >>> 0;\n const in5 = inValues[ip++] >>> 0;\n const in6 = inValues[ip++] >>> 0;\n const in7 = inValues[ip++] >>> 0;\n out[op++] = (in0 >>> 0) & 0xff;\n out[op++] = (in0 >>> 8) & 0xff;\n out[op++] = (in0 >>> 16) & 0xff;\n out[op++] = (in0 >>> 24) & 0xff;\n out[op++] = (in1 >>> 0) & 0xff;\n out[op++] = (in1 >>> 8) & 0xff;\n out[op++] = (in1 >>> 16) & 0xff;\n out[op++] = (in1 >>> 24) & 0xff;\n out[op++] = (in2 >>> 0) & 0xff;\n out[op++] = (in2 >>> 8) & 0xff;\n out[op++] = (in2 >>> 16) & 0xff;\n out[op++] = (in2 >>> 24) & 0xff;\n out[op++] = (in3 >>> 0) & 0xff;\n out[op++] = (in3 >>> 8) & 0xff;\n out[op++] = (in3 >>> 16) & 0xff;\n out[op++] = (in3 >>> 24) & 0xff;\n out[op++] = (in4 >>> 0) & 0xff;\n out[op++] = (in4 >>> 8) & 0xff;\n out[op++] = (in4 >>> 16) & 0xff;\n out[op++] = (in4 >>> 24) & 0xff;\n out[op++] = (in5 >>> 0) & 0xff;\n out[op++] = (in5 >>> 8) & 0xff;\n out[op++] = (in5 >>> 16) & 0xff;\n out[op++] = (in5 >>> 24) & 0xff;\n out[op++] = (in6 >>> 0) & 0xff;\n out[op++] = (in6 >>> 8) & 0xff;\n out[op++] = (in6 >>> 16) & 0xff;\n out[op++] = (in6 >>> 24) & 0xff;\n out[op++] = (in7 >>> 0) & 0xff;\n out[op++] = (in7 >>> 8) & 0xff;\n out[op++] = (in7 >>> 16) & 0xff;\n out[op++] = (in7 >>> 24) & 0xff;\n }\n}\n\nexport function fastUnpack256_16(inValues: Uint32Array, inPos: number, out: Uint32Array, outPos: number): void {\n let op = outPos;\n let ip = inPos;\n for (let i = 0; i < 128; i++) {\n const in0 = inValues[ip++] >>> 0;\n out[op++] = in0 & 0xffff;\n out[op++] = (in0 >>> 16) & 0xffff;\n }\n}\n\nexport function fastUnpack256_Generic(\n inValues: Uint32Array,\n inPos: number,\n out: Uint32Array,\n outPos: number,\n bitWidth: number,\n): void {\n const mask = MASKS[bitWidth] >>> 0;\n\n let inputWordIndex = inPos;\n let bitOffset = 0;\n let currentWord = inValues[inputWordIndex] >>> 0;\n let op = outPos;\n\n for (let c = 0; c < 8; c++) {\n for (let i = 0; i < 32; i++) {\n if (bitOffset + bitWidth <= 32) {\n const value = (currentWord >>> bitOffset) & mask;\n out[op + i] = value | 0;\n bitOffset += bitWidth;\n\n if (bitOffset === 32) {\n bitOffset = 0;\n inputWordIndex++;\n if (i !== 31) {\n currentWord = inValues[inputWordIndex] >>> 0;\n }\n }\n } else {\n const lowBits = 32 - bitOffset;\n const low = currentWord >>> bitOffset;\n\n inputWordIndex++;\n currentWord = inValues[inputWordIndex] >>> 0;\n\n const highBits = bitWidth - lowBits;\n const highMask = (-1 >>> (32 - highBits)) >>> 0;\n\n const high = currentWord & highMask;\n\n const value = (low | (high << lowBits)) & mask;\n out[op + i] = value | 0;\n bitOffset = highBits;\n }\n }\n op += 32;\n\n bitOffset = 0;\n if (c < 7) {\n currentWord = inValues[inputWordIndex] >>> 0;\n }\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { type GeometryVector } from "../vector/geometry/geometryVector";
2
1
  import type IntWrapper from "./intWrapper";
3
- import { type GpuVector } from "../vector/geometry/gpuVector";
2
+ import type { GeometryVector } from "../vector/geometry/geometryVector";
3
+ import type { GpuVector } from "../vector/geometry/gpuVector";
4
4
  import type GeometryScaling from "./geometryScaling";
5
5
  export declare function decodeGeometryColumn(tile: Uint8Array, numStreams: number, offset: IntWrapper, numFeatures: number, scalingData?: GeometryScaling): GeometryVector | GpuVector;
@@ -1,12 +1,11 @@
1
1
  import { decodeStreamMetadata } from "../metadata/tile/streamMetadataDecoder";
2
- import { decodeConstIntStream, decodeIntStream, decodeLengthStreamToOffsetBuffer, getVectorType, } from "./integerStreamDecoder";
2
+ import { decodeSignedInt32Stream, decodeLengthStreamToOffsetBuffer, decodeUnsignedConstInt32Stream, decodeUnsignedInt32Stream, getVectorType, } from "./integerStreamDecoder";
3
3
  import { VectorType } from "../vector/vectorType";
4
4
  import { PhysicalStreamType } from "../metadata/tile/physicalStreamType";
5
5
  import { LengthType } from "../metadata/tile/lengthType";
6
6
  import { DictionaryType } from "../metadata/tile/dictionaryType";
7
- import TopologyVector from "../vector/geometry/topologyVector";
8
7
  import { createConstGeometryVector, createMortonEncodedConstGeometryVector, } from "../vector/geometry/constGeometryVector";
9
- import { createFlatGeometryVector, createFlatGeometryVectorMortonEncoded, } from "../vector/geometry/flatGeometryVector";
8
+ import { createFlatGeometryVector, createFlatGeometryVectorMortonEncoded } from "../vector/geometry/flatGeometryVector";
10
9
  import { OffsetType } from "../metadata/tile/offsetType";
11
10
  import { createConstGpuVector } from "../vector/geometry/constGpuVector";
12
11
  import { createFlatGpuVector } from "../vector/geometry/flatGpuVector";
@@ -14,20 +13,20 @@ import { createFlatGpuVector } from "../vector/geometry/flatGpuVector";
14
13
  export function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData) {
15
14
  const geometryTypeMetadata = decodeStreamMetadata(tile, offset);
16
15
  const geometryTypesVectorType = getVectorType(geometryTypeMetadata, numFeatures, tile, offset);
17
- let vertexOffsets = null;
18
- let vertexBuffer = null;
19
- let mortonSettings = null;
20
- let indexBuffer = null;
16
+ let vertexOffsets;
17
+ let vertexBuffer;
18
+ let mortonSettings;
19
+ let indexBuffer;
21
20
  if (geometryTypesVectorType === VectorType.CONST) {
22
- /* All geometries in the colum have the same geometry type */
23
- const geometryType = decodeConstIntStream(tile, offset, geometryTypeMetadata, false);
21
+ /* All geometries in the column have the same geometry type */
22
+ const geometryType = decodeUnsignedConstInt32Stream(tile, offset, geometryTypeMetadata);
24
23
  // Variables for const geometry path (directly decoded as offsets)
25
- let geometryOffsets = null;
26
- let partOffsets = null;
27
- let ringOffsets = null;
24
+ let geometryOffsets;
25
+ let partOffsets;
26
+ let ringOffsets;
28
27
  //TODO: use geometryOffsets for that? -> but then tessellated polygons can't be used with normal polygons
29
28
  // in one FeatureTable?
30
- let triangleOffsets = null;
29
+ let triangleOffsets;
31
30
  for (let i = 0; i < numStreams - 1; i++) {
32
31
  const geometryStreamMetadata = decodeStreamMetadata(tile, offset);
33
32
  switch (geometryStreamMetadata.physicalStreamType) {
@@ -49,17 +48,17 @@ export function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scal
49
48
  case PhysicalStreamType.OFFSET: {
50
49
  switch (geometryStreamMetadata.logicalStreamType.offsetType) {
51
50
  case OffsetType.VERTEX:
52
- vertexOffsets = decodeIntStream(tile, offset, geometryStreamMetadata, false);
51
+ vertexOffsets = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
53
52
  break;
54
53
  case OffsetType.INDEX:
55
- indexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false);
54
+ indexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
56
55
  break;
57
56
  }
58
57
  break;
59
58
  }
60
59
  case PhysicalStreamType.DATA: {
61
60
  if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {
62
- vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, true, scalingData);
61
+ vertexBuffer = decodeSignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
63
62
  }
64
63
  else {
65
64
  const mortonMetadata = geometryStreamMetadata;
@@ -67,48 +66,48 @@ export function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scal
67
66
  numBits: mortonMetadata.numBits,
68
67
  coordinateShift: mortonMetadata.coordinateShift,
69
68
  };
70
- vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false, scalingData);
69
+ vertexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
71
70
  }
72
71
  break;
73
72
  }
74
73
  }
75
74
  }
76
- if (indexBuffer !== null) {
77
- if (geometryOffsets != null || partOffsets != null) {
75
+ if (indexBuffer) {
76
+ if (geometryOffsets !== undefined || partOffsets !== undefined) {
78
77
  /* Case when the indices of a Polygon outline are encoded in the tile */
79
- const topologyVector = new TopologyVector(geometryOffsets, partOffsets, ringOffsets);
78
+ const topologyVector = { geometryOffsets, partOffsets, ringOffsets };
80
79
  return createConstGpuVector(numFeatures, geometryType, triangleOffsets, indexBuffer, vertexBuffer, topologyVector);
81
80
  }
82
81
  /* Case when the no Polygon outlines are encoded in the tile */
83
82
  return createConstGpuVector(numFeatures, geometryType, triangleOffsets, indexBuffer, vertexBuffer);
84
83
  }
85
- return mortonSettings === null
84
+ return mortonSettings === undefined
86
85
  ? /* Currently only 2D coordinates (Vec2) are implemented in the encoder */
87
- createConstGeometryVector(numFeatures, geometryType, new TopologyVector(geometryOffsets, partOffsets, ringOffsets), vertexOffsets, vertexBuffer)
88
- : createMortonEncodedConstGeometryVector(numFeatures, geometryType, new TopologyVector(geometryOffsets, partOffsets, ringOffsets), vertexOffsets, vertexBuffer, mortonSettings);
86
+ createConstGeometryVector(numFeatures, geometryType, { geometryOffsets, partOffsets, ringOffsets }, vertexOffsets, vertexBuffer)
87
+ : createMortonEncodedConstGeometryVector(numFeatures, geometryType, { geometryOffsets, partOffsets, ringOffsets }, vertexOffsets, vertexBuffer, mortonSettings);
89
88
  }
90
89
  /* Different geometry types are mixed in the geometry column */
91
- const geometryTypeVector = decodeIntStream(tile, offset, geometryTypeMetadata, false);
90
+ const geometryTypeVector = decodeUnsignedInt32Stream(tile, offset, geometryTypeMetadata);
92
91
  // Variables for flat geometry path (decoded as lengths, then converted to offsets)
93
- let geometryLengths = null;
94
- let partLengths = null;
95
- let ringLengths = null;
92
+ let geometryLengths;
93
+ let partLengths;
94
+ let ringLengths;
96
95
  //TODO: use geometryOffsets for that? -> but then tessellated polygons can't be used with normal polygons
97
96
  // in one FeatureTable?
98
- let triangleOffsets = null;
97
+ let triangleOffsets;
99
98
  for (let i = 0; i < numStreams - 1; i++) {
100
99
  const geometryStreamMetadata = decodeStreamMetadata(tile, offset);
101
100
  switch (geometryStreamMetadata.physicalStreamType) {
102
101
  case PhysicalStreamType.LENGTH:
103
102
  switch (geometryStreamMetadata.logicalStreamType.lengthType) {
104
103
  case LengthType.GEOMETRIES:
105
- geometryLengths = decodeIntStream(tile, offset, geometryStreamMetadata, false);
104
+ geometryLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
106
105
  break;
107
106
  case LengthType.PARTS:
108
- partLengths = decodeIntStream(tile, offset, geometryStreamMetadata, false);
107
+ partLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
109
108
  break;
110
109
  case LengthType.RINGS:
111
- ringLengths = decodeIntStream(tile, offset, geometryStreamMetadata, false);
110
+ ringLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
112
111
  break;
113
112
  case LengthType.TRIANGLES:
114
113
  triangleOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
@@ -117,16 +116,16 @@ export function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scal
117
116
  case PhysicalStreamType.OFFSET:
118
117
  switch (geometryStreamMetadata.logicalStreamType.offsetType) {
119
118
  case OffsetType.VERTEX:
120
- vertexOffsets = decodeIntStream(tile, offset, geometryStreamMetadata, false);
119
+ vertexOffsets = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
121
120
  break;
122
121
  case OffsetType.INDEX:
123
- indexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false);
122
+ indexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
124
123
  break;
125
124
  }
126
125
  break;
127
126
  case PhysicalStreamType.DATA:
128
127
  if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {
129
- vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, true, scalingData);
128
+ vertexBuffer = decodeSignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
130
129
  }
131
130
  else {
132
131
  const mortonMetadata = geometryStreamMetadata;
@@ -134,45 +133,49 @@ export function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scal
134
133
  numBits: mortonMetadata.numBits,
135
134
  coordinateShift: mortonMetadata.coordinateShift,
136
135
  };
137
- vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false, scalingData);
136
+ vertexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
138
137
  }
139
138
  break;
140
139
  }
141
140
  }
142
141
  // TODO: refactor the following instructions -> decode in one pass for performance reasons
143
142
  /* Calculate the offsets from the length buffer for util access */
144
- let geometryOffsets = null;
145
- let partOffsets = null;
146
- let ringOffsets = null;
147
- if (geometryLengths !== null) {
143
+ let geometryOffsets;
144
+ let partOffsets;
145
+ let ringOffsets;
146
+ if (geometryLengths) {
148
147
  geometryOffsets = decodeRootLengthStream(geometryTypeVector, geometryLengths, 2);
149
- if (partLengths !== null && ringLengths !== null) {
148
+ if (partLengths && ringLengths) {
150
149
  partOffsets = decodeLevel1LengthStream(geometryTypeVector, geometryOffsets, partLengths, false);
151
150
  ringOffsets = decodeLevel2LengthStream(geometryTypeVector, geometryOffsets, partOffsets, ringLengths);
152
151
  }
153
- else if (partLengths !== null) {
152
+ else if (partLengths) {
154
153
  partOffsets = decodeLevel1WithoutRingBufferLengthStream(geometryTypeVector, geometryOffsets, partLengths);
155
154
  }
156
155
  }
157
- else if (partLengths !== null && ringLengths !== null) {
156
+ else if (partLengths && ringLengths) {
158
157
  partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 1);
159
158
  ringOffsets = decodeLevel1LengthStream(geometryTypeVector, partOffsets, ringLengths, true);
160
159
  }
161
- else if (partLengths !== null) {
160
+ else if (partLengths) {
162
161
  partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 0);
163
162
  }
164
- if (indexBuffer !== null && partOffsets === null) {
163
+ if (indexBuffer && !partOffsets) {
165
164
  /* Case when the indices of a Polygon outline are not encoded in the data so no
166
165
  * topology data are present in the tile */
167
166
  return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer);
168
167
  }
169
- if (indexBuffer !== null) {
168
+ if (indexBuffer) {
170
169
  /* Case when the indices of a Polygon outline are encoded in the tile */
171
- return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer, new TopologyVector(geometryOffsets, partOffsets, ringOffsets));
170
+ return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer, {
171
+ geometryOffsets,
172
+ partOffsets,
173
+ ringOffsets,
174
+ });
172
175
  }
173
- return mortonSettings === null /* Currently only 2D coordinates (Vec2) are implemented in the encoder */
174
- ? createFlatGeometryVector(geometryTypeVector, new TopologyVector(geometryOffsets, partOffsets, ringOffsets), vertexOffsets, vertexBuffer)
175
- : createFlatGeometryVectorMortonEncoded(geometryTypeVector, new TopologyVector(geometryOffsets, partOffsets, ringOffsets), vertexOffsets, vertexBuffer, mortonSettings);
176
+ return mortonSettings === undefined /* Currently only 2D coordinates (Vec2) are implemented in the encoder */
177
+ ? createFlatGeometryVector(geometryTypeVector, { geometryOffsets, partOffsets, ringOffsets }, vertexOffsets, vertexBuffer)
178
+ : createFlatGeometryVectorMortonEncoded(geometryTypeVector, { geometryOffsets, partOffsets, ringOffsets }, vertexOffsets, vertexBuffer, mortonSettings);
176
179
  }
177
180
  /*
178
181
  * Handle the parsing of the different topology length buffers separate not generic to reduce the