h*,++      !"#$%&'()*0.0.14.02018 Luis Pedro CoelhoMITluis@luispedro.org Safe-Inferred"conduit-algorithmswrite a Storable vector&This uses the same format as in-memorySee conduit-algorithmsread a Storable vector5This expects the same format as the in-memory vector.This will break up the incoming data into vectors of the given size. The last vector may be smaller if there is not enough data. Any unconsumed Bytes will be leftover for the next conduit in the pipeline.See 2013-2021 Luis Pedro CoelhoMITluis@luispedro.org Safe-Inferred"conduit-algorithms0Act on the next input (do nothing if no input).  awaitJust f is equivalent to  do next <- C.await case next of Just val -> f val Nothing -> return () 'This is a simple utility adapted from http://neilmitchell.blogspot.de/2015/07/thoughts-on-conduits.htmlconduit-algorithms/Conduit analogue to Python's enumerate functionconduit-algorithms!This function is deprecated; use  %groupC yields the input as groups of n. elements. If the input is not a multiple of n%, the last element will be incompleteExample: 8 CC.yieldMany [0..10] .| groupC 3 .| CC.consumeList  results in &[ [0,1,2], [3,4,5], [6,7,8], [9, 10] ]conduit-algorithms9dispatchC dispatches indexed input to the respective sinkExample:  let input = [(0, "one") ,(1, "two") ,(0, "three") ] CC.yieldMany input .| dispatches [sink1, sink2] Then sink1' will receive "one" and "three", while sink2 will receive "two"=Out of bounds indices are clipped to the 0..n-1 range (where n is 'length sinks')conduit-algorithms Version of  that returns ()2013-2021 Luis Pedro CoelhoMITluis@luispedro.org Safe-Inferred" conduit-algorithmsUnique conduit./For each element, it checks its key (using the a -> b; key function) and yields it if it has not seen it before.Note that this conduit does not5 assume that the input is sorted. Instead it uses a    to store previously seen elements. Thus, memory usage is O(N) and time is O(N log N). If the input is sorted, you can use  conduit-algorithmsUnique conduitSee  and  conduit-algorithmsRemoves repeated elements  yieldMany [0, 0, 1, 1, 1, 2, 2, 0] .| removeRepeatsC .| consume is equivalent to  [0, 1, 2, 0]See  and  conduit-algorithmsMerge a list of sorted sources to produce a single (sorted) source3This takes a list of sorted sources and produces a +- which outputs all elements in sorted order.See  conduit-algorithms'Take two sorted sources and merge them.See     Safe-Inferred" J conduit-algorithms Decompress a ,$ from a lzma or xz container stream.conduit-algorithms Compress a , into a xz container stream. conduit-algorithmsMemory limit, in bytes.conduit-algorithms-Compression level from [0..9], defaults to 6.  2013-2022 Luis Pedro CoelhoMITluis@luispedro.org Safe-Inferred"'conduit-algorithms This is like  , except that each element is processed in a separate thread (up to  maxThreads can be queued up at any one time). Results are evaluated to normal form (not weak-head normal form!, i.e., the structure is deeply evaluated) to ensure that the computation is fully evaluated in the worker thread.Note that there is some overhead in threading. It is often a good idea to build larger chunks of input before passing it to ' to amortize the costs. That is, when f" is not a lot of work, instead of  asyncMapC f, it is sometimes better to do = CC.conduitVector 4096 .| asyncMapC (V.map f) .| CC.concat where CC refers to  See conduit-algorithms A version of ( which can reorder results in the streamIf the order of the results is not important, this function can lead to a better use of resources if some of the chunks take longer to complete.See conduit-algorithms with error handling. The inner function can now return an error (as a -$). When the first error is seen, it . s in the main monad. Note that f may be evaluated for arguments beyond the first error (as some threads may be running in the background and already processing elements after the first error).See /conduit-algorithmsconcatenates input into larger chunks and yields it. Its indended use is to build up larger blocks from smaller ones so that they can be sent across thread barriers with little overhead.the chunkSize parameter is a hint, not an exact element. In particular, larger chunks are not split up and smaller chunks can be yielded too.conduit-algorithmsA simple sink which performs gzip compression in a separate thread and writes the results to h. See also conduit-algorithmsA simple sink which performs gzip compression in a separate thread and writes the results to h with a given compression level.conduit-algorithmsCompresses the output and writes to the given file with compression being performed in a separate thread. See also conduit-algorithmsA source which produces the ungzipped content from the the given handle. Note that this "reads ahead" so if you do not use all the input, the Handle will probably be left at an undefined position in the file.%Note: unlike the ungzip conduit from  , this function will read *all* the compressed files in the stream (not just the first). See also conduit-algorithmsOpen and read a gzip file with the uncompression being performed in a separate thread. See also conduit-algorithmsA simple sink which performs bzip2 compression in a separate thread and writes the results to h. See also conduit-algorithmsCompresses the output and writes to the given file with compression being performed in a separate thread. See also conduit-algorithmsA source which produces the bzipped2 content from the the given handle. Note that this "reads ahead" so if you do not use all the input, the Handle will probably be left at an undefined position in the file. See also conduit-algorithmsOpen and read a bzip2 file with the uncompression being performed in a separate thread. See also conduit-algorithmsA simple sink which performs lzma/xz compression in a separate thread and writes the results to h. See also conduit-algorithmsA simple sink which performs lzma/xz compression in a separate thread and writes the results to h. See also  and conduit-algorithmsCompresses the output and writes to the given file with compression being performed in a separate thread. See also conduit-algorithmsA source which produces the unxzipped content from the the given handle. Note that this "reads ahead" so if you do not use all the input, the Handle will probably be left at an undefined position in the file. See also  conduit-algorithmsOpen and read a lzma/xz file with the uncompression being performed in a separate thread. See also !conduit-algorithms.Decompress ZStd format using a separate thread See also ""conduit-algorithmsCompress in ZStd format using a separate thread and write to a file See also !#conduit-algorithms/Compress in Zstd format using a separate thread See also $$conduit-algorithmsCompress in ZStd format using a separate thread and write to a fileThis will use compression level 3 as this is the default in the ZStd C API See also #%conduit-algorithmsIf the filename indicates a supported compressed file (gzip, xz, and, on Unix, bzip2), then it reads it and uncompresses it.Usage  withPossiblyCompressedFile fname $ src -> runConduit (src .| mySink) Unlike ', this ensures that the file is closed even if the conduit terminates early.=On Windows, attempting to read from a bzip2 file, results in 0.&conduit-algorithmsIf the filename indicates a supported compressed file (gzip, xz, and, on Unix, bzip2), then it provides an output sourceUsage  withPossiblyCompressedFileOutput fname $ out -> runConduit (mySrc .| out) This ensures that the file is closed even if the conduit terminates early.=On Windows, attempting to read from a bzip2 file, results in 0.'conduit-algorithmsIf the filename indicates a gzipped file (or, on Unix, also a bz2 file), then it reads it and uncompresses it.To ensure that the file is closed even if the downstream finishes early, consider using %.=On Windows, attempting to read from a bzip2 file, results in 0.(conduit-algorithmsIf the filename indicates a gzipped file (or, on Unix, also a bz2 file), then it compresses and write with the algorithm matching the filenameConsider using & to ensure prompt file closing.?@ABCDEFGAHIJ2conduit-algorithms-0.0.14.0-3GOCaOyoXHi4ZJyeygu7It Data.Conduit.Algorithms.StorableData.Conduit.Algorithms.UtilsData.Conduit.AlgorithmsData.Conduit.Lzma2Data.Conduit.Algorithms.Async(Data.Conduit.Algorithms.Async.ByteStringconduit-algorithmsData.Conduit.ListchunksOfDataSetmap Data.Conduit CombinatorsZlibwriteStorableV readStorableV awaitJust enumerateCgroupC dispatchC dispatchC_ uniqueOnCuniqueCremoveRepeatsCmergeCmergeC2 decompressdecompressWithcompress compressWith asyncMapCunorderedAsyncMapCasyncMapEitherC asyncGzipTo asyncGzipTo'asyncGzipToFile asyncGzipFromasyncGzipFromFile asyncBzip2ToasyncBzip2ToFileasyncBzip2FromasyncBzip2FromFile asyncXzTo asyncXzTo' asyncXzToFile asyncXzFromasyncXzFromFile asyncZstdFromasyncZstdFromFile asyncZstdToasyncZstdToFilewithPossiblyCompressedFile withPossiblyCompressedFileOutputconduitPossiblyCompressedFileconduitPossiblyCompressedToFileasyncMapLineGroupsCasyncFilterLinesC$conduit-1.3.5-L7a7Dy375rfHNUuBcPBJOVData.Conduit.Internal.ConduitSourcebytestring-0.11.5.2Data.ByteString.Internal.Type ByteStringbase Data.EitherLeft mtl-2.3.1Control.Monad.Error.Class throwError bsConcatToGHC.ErrerrorasyncMapCHelper