@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.
- package/dist/decoding/bigEndianDecode.d.ts +13 -0
- package/dist/decoding/bigEndianDecode.js +50 -0
- package/dist/decoding/bigEndianDecode.js.map +1 -0
- package/dist/decoding/decodingTestUtils.d.ts +2 -2
- package/dist/decoding/decodingTestUtils.js +20 -21
- package/dist/decoding/decodingTestUtils.js.map +1 -1
- package/dist/decoding/decodingUtils.js +4 -2
- package/dist/decoding/decodingUtils.js.map +1 -1
- package/dist/decoding/fastPforDecoder.d.ts +47 -0
- package/dist/decoding/fastPforDecoder.js +482 -0
- package/dist/decoding/fastPforDecoder.js.map +1 -0
- package/dist/decoding/fastPforShared.d.ts +7 -0
- package/dist/decoding/fastPforShared.js +29 -0
- package/dist/decoding/fastPforShared.js.map +1 -0
- package/dist/decoding/fastPforUnpack.d.ts +23 -0
- package/dist/decoding/fastPforUnpack.js +910 -0
- package/dist/decoding/fastPforUnpack.js.map +1 -0
- package/dist/decoding/geometryDecoder.d.ts +2 -2
- package/dist/decoding/geometryDecoder.js +52 -49
- package/dist/decoding/geometryDecoder.js.map +1 -1
- package/dist/decoding/intWrapper.js +0 -1
- package/dist/decoding/intWrapper.js.map +1 -1
- package/dist/decoding/integerDecodingUtils.d.ts +33 -25
- package/dist/decoding/integerDecodingUtils.js +115 -52
- package/dist/decoding/integerDecodingUtils.js.map +1 -1
- package/dist/decoding/integerStreamDecoder.d.ts +15 -11
- package/dist/decoding/integerStreamDecoder.js +159 -65
- package/dist/decoding/integerStreamDecoder.js.map +1 -1
- package/dist/decoding/propertyDecoder.js +38 -36
- package/dist/decoding/propertyDecoder.js.map +1 -1
- package/dist/decoding/stringDecoder.js +19 -23
- package/dist/decoding/stringDecoder.js.map +1 -1
- package/dist/decoding/unpackNullableUtils.d.ts +2 -2
- package/dist/decoding/unpackNullableUtils.js.map +1 -1
- package/dist/encoding/bigEndianEncode.d.ts +7 -0
- package/dist/encoding/bigEndianEncode.js +16 -0
- package/dist/encoding/bigEndianEncode.js.map +1 -0
- package/dist/encoding/constGeometryVectorEncoder.d.ts +19 -0
- package/dist/encoding/constGeometryVectorEncoder.js +248 -0
- package/dist/encoding/constGeometryVectorEncoder.js.map +1 -0
- package/dist/encoding/encodingUtils.d.ts +2 -2
- package/dist/encoding/encodingUtils.js +3 -3
- package/dist/encoding/encodingUtils.js.map +1 -1
- package/dist/encoding/fastPforEncoder.d.ts +18 -0
- package/dist/encoding/fastPforEncoder.js +310 -0
- package/dist/encoding/fastPforEncoder.js.map +1 -0
- package/dist/encoding/integerEncodingUtils.d.ts +20 -20
- package/dist/encoding/integerEncodingUtils.js +64 -48
- package/dist/encoding/integerEncodingUtils.js.map +1 -1
- package/dist/encoding/integerStreamEncoder.d.ts +3 -2
- package/dist/encoding/integerStreamEncoder.js +57 -23
- package/dist/encoding/integerStreamEncoder.js.map +1 -1
- package/dist/encoding/packNullableUtils.d.ts +1 -1
- package/dist/encoding/packNullableUtils.js.map +1 -1
- package/dist/encoding/propertyEncoder.d.ts +1 -1
- package/dist/encoding/propertyEncoder.js +17 -24
- package/dist/encoding/propertyEncoder.js.map +1 -1
- package/dist/encoding/stringEncoder.js +9 -42
- package/dist/encoding/stringEncoder.js.map +1 -1
- package/dist/encoding/zOrderCurveEncoder.js +1 -1
- package/dist/encoding/zOrderCurveEncoder.js.map +1 -1
- package/dist/metadata/tile/logicalStreamType.d.ts +8 -12
- package/dist/metadata/tile/logicalStreamType.js +1 -19
- package/dist/metadata/tile/logicalStreamType.js.map +1 -1
- package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
- package/dist/metadata/tile/streamMetadataDecoder.js +9 -4
- package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +1 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
- package/dist/metadata/tileset/typeMap.d.ts +10 -2
- package/dist/metadata/tileset/typeMap.js +25 -15
- package/dist/metadata/tileset/typeMap.js.map +1 -1
- package/dist/mltDecoder.js +46 -47
- package/dist/mltDecoder.js.map +1 -1
- package/dist/mltMetadata.js.map +1 -1
- package/dist/vector/constant/int32ConstVector.d.ts +6 -0
- package/dist/vector/constant/int32ConstVector.js +10 -0
- package/dist/vector/constant/int32ConstVector.js.map +1 -0
- package/dist/vector/constant/int64ConstVector.d.ts +6 -0
- package/dist/vector/constant/int64ConstVector.js +10 -0
- package/dist/vector/constant/int64ConstVector.js.map +1 -0
- package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -2
- package/dist/vector/dictionary/stringDictionaryVector.js +0 -3
- package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
- package/dist/vector/featureTable.d.ts +7 -8
- package/dist/vector/featureTable.js +10 -42
- package/dist/vector/featureTable.js.map +1 -1
- package/dist/vector/filter/flatSelectionVector.d.ts +1 -1
- package/dist/vector/filter/flatSelectionVector.js +0 -2
- package/dist/vector/filter/flatSelectionVector.js.map +1 -1
- package/dist/vector/filter/selectionVectorUtils.d.ts +1 -1
- package/dist/vector/filter/selectionVectorUtils.js.map +1 -1
- package/dist/vector/filter/sequenceSelectionVector.d.ts +1 -1
- package/dist/vector/filter/sequenceSelectionVector.js +1 -5
- package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
- package/dist/vector/flat/bitVector.js +0 -2
- package/dist/vector/flat/bitVector.js.map +1 -1
- package/dist/vector/flat/booleanFlatVector.js +0 -1
- package/dist/vector/flat/booleanFlatVector.js.map +1 -1
- package/dist/vector/flat/{intFlatVector.d.ts → int32FlatVector.d.ts} +1 -1
- package/dist/vector/flat/{intFlatVector.js → int32FlatVector.js} +2 -2
- package/dist/vector/flat/int32FlatVector.js.map +1 -0
- package/dist/vector/flat/{longFlatVector.d.ts → int64FlatVector.d.ts} +1 -1
- package/dist/vector/flat/{longFlatVector.js → int64FlatVector.js} +2 -2
- package/dist/vector/flat/int64FlatVector.js.map +1 -0
- package/dist/vector/flat/stringFlatVector.d.ts +0 -1
- package/dist/vector/flat/stringFlatVector.js +0 -2
- package/dist/vector/flat/stringFlatVector.js.map +1 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -3
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -42
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
- package/dist/vector/geometry/constGeometryVector.d.ts +5 -5
- package/dist/vector/geometry/constGeometryVector.js +1 -3
- package/dist/vector/geometry/constGeometryVector.js.map +1 -1
- package/dist/vector/geometry/constGpuVector.d.ts +4 -4
- package/dist/vector/geometry/constGpuVector.js +1 -3
- package/dist/vector/geometry/constGpuVector.js.map +1 -1
- package/dist/vector/geometry/flatGeometryVector.d.ts +4 -4
- package/dist/vector/geometry/flatGeometryVector.js +1 -5
- package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
- package/dist/vector/geometry/flatGpuVector.d.ts +3 -3
- package/dist/vector/geometry/flatGpuVector.js +0 -1
- package/dist/vector/geometry/flatGpuVector.js.map +1 -1
- package/dist/vector/geometry/geometryType.js.map +1 -1
- package/dist/vector/geometry/geometryVector.d.ts +7 -8
- package/dist/vector/geometry/geometryVector.js +0 -13
- package/dist/vector/geometry/geometryVector.js.map +1 -1
- package/dist/vector/geometry/geometryVectorConverter.d.ts +1 -1
- package/dist/vector/geometry/geometryVectorConverter.js +167 -211
- package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
- package/dist/vector/geometry/gpuVector.d.ts +6 -6
- package/dist/vector/geometry/gpuVector.js +0 -4
- package/dist/vector/geometry/gpuVector.js.map +1 -1
- package/dist/vector/geometry/topologyVector.d.ts +5 -9
- package/dist/vector/geometry/topologyVector.js +1 -19
- package/dist/vector/geometry/topologyVector.js.map +1 -1
- package/dist/vector/geometry/vertexBufferType.js.map +1 -1
- package/dist/vector/idVector.d.ts +8 -0
- package/dist/vector/idVector.js +2 -0
- package/dist/vector/idVector.js.map +1 -0
- package/dist/vector/sequence/{intSequenceVector.d.ts → int32SequenceVector.d.ts} +1 -1
- package/dist/vector/sequence/{intSequenceVector.js → int32SequenceVector.js} +2 -2
- package/dist/vector/sequence/int32SequenceVector.js.map +1 -0
- package/dist/vector/sequence/{longSequenceVector.d.ts → int64SequenceVector.d.ts} +1 -1
- package/dist/vector/sequence/{longSequenceVector.js → int64SequenceVector.js} +2 -2
- package/dist/vector/sequence/int64SequenceVector.js.map +1 -0
- package/dist/vector/sequence/sequenceVector.js +0 -1
- package/dist/vector/sequence/sequenceVector.js.map +1 -1
- package/dist/vector/variableSizeVector.js +0 -1
- package/dist/vector/variableSizeVector.js.map +1 -1
- package/dist/vector/vector.js +1 -5
- package/dist/vector/vector.js.map +1 -1
- package/dist/vector/vectorType.js.map +1 -1
- package/package.json +9 -10
- package/dist/decoding/decodingUtils.spec.d.ts +0 -1
- package/dist/decoding/decodingUtils.spec.js +0 -141
- package/dist/decoding/decodingUtils.spec.js.map +0 -1
- package/dist/decoding/fsstDecoder.spec.d.ts +0 -1
- package/dist/decoding/fsstDecoder.spec.js +0 -57
- package/dist/decoding/fsstDecoder.spec.js.map +0 -1
- package/dist/decoding/integerDecodingUtils.spec.d.ts +0 -1
- package/dist/decoding/integerDecodingUtils.spec.js +0 -300
- package/dist/decoding/integerDecodingUtils.spec.js.map +0 -1
- package/dist/decoding/integerStreamDecoder.spec.d.ts +0 -1
- package/dist/decoding/integerStreamDecoder.spec.js +0 -402
- package/dist/decoding/integerStreamDecoder.spec.js.map +0 -1
- package/dist/decoding/propertyDecoder.spec.d.ts +0 -1
- package/dist/decoding/propertyDecoder.spec.js +0 -448
- package/dist/decoding/propertyDecoder.spec.js.map +0 -1
- package/dist/decoding/stringDecoder.spec.d.ts +0 -1
- package/dist/decoding/stringDecoder.spec.js +0 -387
- package/dist/decoding/stringDecoder.spec.js.map +0 -1
- package/dist/decoding/unpackNullableUtils.spec.d.ts +0 -1
- package/dist/decoding/unpackNullableUtils.spec.js +0 -71
- package/dist/decoding/unpackNullableUtils.spec.js.map +0 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +0 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +0 -142
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +0 -1
- package/dist/mltDecoder.spec.d.ts +0 -1
- package/dist/mltDecoder.spec.js +0 -152
- package/dist/mltDecoder.spec.js.map +0 -1
- package/dist/vector/constant/intConstVector.d.ts +0 -6
- package/dist/vector/constant/intConstVector.js +0 -10
- package/dist/vector/constant/intConstVector.js.map +0 -1
- package/dist/vector/constant/longConstVector.d.ts +0 -6
- package/dist/vector/constant/longConstVector.js +0 -10
- package/dist/vector/constant/longConstVector.js.map +0 -1
- package/dist/vector/filter/flatSelectionVector.spec.d.ts +0 -1
- package/dist/vector/filter/flatSelectionVector.spec.js +0 -51
- package/dist/vector/filter/flatSelectionVector.spec.js.map +0 -1
- package/dist/vector/filter/selectionVectorUtil.spec.d.ts +0 -1
- package/dist/vector/filter/selectionVectorUtil.spec.js +0 -154
- package/dist/vector/filter/selectionVectorUtil.spec.js.map +0 -1
- package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +0 -1
- package/dist/vector/filter/sequenceSelectionVector.spec.js +0 -115
- package/dist/vector/filter/sequenceSelectionVector.spec.js.map +0 -1
- package/dist/vector/flat/floatFlatVector.spec.d.ts +0 -1
- package/dist/vector/flat/floatFlatVector.spec.js +0 -14
- package/dist/vector/flat/floatFlatVector.spec.js.map +0 -1
- package/dist/vector/flat/intFlatVector.js.map +0 -1
- package/dist/vector/flat/intFlatVector.spec.d.ts +0 -1
- package/dist/vector/flat/intFlatVector.spec.js +0 -15
- package/dist/vector/flat/intFlatVector.spec.js.map +0 -1
- package/dist/vector/flat/longFlatVector.js.map +0 -1
- package/dist/vector/flat/longFlatVector.spec.d.ts +0 -1
- package/dist/vector/flat/longFlatVector.spec.js +0 -14
- package/dist/vector/flat/longFlatVector.spec.js.map +0 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +0 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +0 -28
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +0 -1
- package/dist/vector/geometry/zOrderCurve.spec.d.ts +0 -1
- package/dist/vector/geometry/zOrderCurve.spec.js +0 -25
- package/dist/vector/geometry/zOrderCurve.spec.js.map +0 -1
- package/dist/vector/intVector.d.ts +0 -8
- package/dist/vector/intVector.js +0 -2
- package/dist/vector/intVector.js.map +0 -1
- package/dist/vector/sequence/intSequenceVector.js.map +0 -1
- package/dist/vector/sequence/longSequenceVector.js.map +0 -1
- package/dist/vector/sequence/longSequenceVektor.spec.d.ts +0 -1
- package/dist/vector/sequence/longSequenceVektor.spec.js +0 -11
- 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,G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AG,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 {
|
|
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 {
|
|
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
|
|
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
|
|
18
|
-
let vertexBuffer
|
|
19
|
-
let mortonSettings
|
|
20
|
-
let indexBuffer
|
|
16
|
+
let vertexOffsets;
|
|
17
|
+
let vertexBuffer;
|
|
18
|
+
let mortonSettings;
|
|
19
|
+
let indexBuffer;
|
|
21
20
|
if (geometryTypesVectorType === VectorType.CONST) {
|
|
22
|
-
/* All geometries in the
|
|
23
|
-
const geometryType =
|
|
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
|
|
26
|
-
let partOffsets
|
|
27
|
-
let ringOffsets
|
|
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
|
|
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 =
|
|
51
|
+
vertexOffsets = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
53
52
|
break;
|
|
54
53
|
case OffsetType.INDEX:
|
|
55
|
-
indexBuffer =
|
|
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 =
|
|
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 =
|
|
69
|
+
vertexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
|
|
71
70
|
}
|
|
72
71
|
break;
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
|
-
if (indexBuffer
|
|
77
|
-
if (geometryOffsets
|
|
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 =
|
|
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 ===
|
|
84
|
+
return mortonSettings === undefined
|
|
86
85
|
? /* Currently only 2D coordinates (Vec2) are implemented in the encoder */
|
|
87
|
-
createConstGeometryVector(numFeatures, geometryType,
|
|
88
|
-
: createMortonEncodedConstGeometryVector(numFeatures, geometryType,
|
|
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 =
|
|
90
|
+
const geometryTypeVector = decodeUnsignedInt32Stream(tile, offset, geometryTypeMetadata);
|
|
92
91
|
// Variables for flat geometry path (decoded as lengths, then converted to offsets)
|
|
93
|
-
let geometryLengths
|
|
94
|
-
let partLengths
|
|
95
|
-
let ringLengths
|
|
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
|
|
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 =
|
|
104
|
+
geometryLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
106
105
|
break;
|
|
107
106
|
case LengthType.PARTS:
|
|
108
|
-
partLengths =
|
|
107
|
+
partLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
109
108
|
break;
|
|
110
109
|
case LengthType.RINGS:
|
|
111
|
-
ringLengths =
|
|
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 =
|
|
119
|
+
vertexOffsets = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
121
120
|
break;
|
|
122
121
|
case OffsetType.INDEX:
|
|
123
|
-
indexBuffer =
|
|
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 =
|
|
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 =
|
|
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
|
|
145
|
-
let partOffsets
|
|
146
|
-
let ringOffsets
|
|
147
|
-
if (geometryLengths
|
|
143
|
+
let geometryOffsets;
|
|
144
|
+
let partOffsets;
|
|
145
|
+
let ringOffsets;
|
|
146
|
+
if (geometryLengths) {
|
|
148
147
|
geometryOffsets = decodeRootLengthStream(geometryTypeVector, geometryLengths, 2);
|
|
149
|
-
if (partLengths
|
|
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
|
|
152
|
+
else if (partLengths) {
|
|
154
153
|
partOffsets = decodeLevel1WithoutRingBufferLengthStream(geometryTypeVector, geometryOffsets, partLengths);
|
|
155
154
|
}
|
|
156
155
|
}
|
|
157
|
-
else if (partLengths
|
|
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
|
|
160
|
+
else if (partLengths) {
|
|
162
161
|
partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 0);
|
|
163
162
|
}
|
|
164
|
-
if (indexBuffer
|
|
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
|
|
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,
|
|
170
|
+
return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer, {
|
|
171
|
+
geometryOffsets,
|
|
172
|
+
partOffsets,
|
|
173
|
+
ringOffsets,
|
|
174
|
+
});
|
|
172
175
|
}
|
|
173
|
-
return mortonSettings ===
|
|
174
|
-
? createFlatGeometryVector(geometryTypeVector,
|
|
175
|
-
: createFlatGeometryVectorMortonEncoded(geometryTypeVector,
|
|
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
|