h&UO      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(; text-compression.Abstract BWTCounter and associated state type.text-compressionAbstract data type representing a BWTSeq in the (strict) ST monad.text-compression!Abstract BWTSeq type utilizing a .text-compression!The BWTMatrix data type. Uses a    internally.text-compressionThe BWT data type. Uses  internally.text-compression!The SuffixArray data type. Uses  internally.text-compressionBasic suffix data type. Used to describe the core data inside of the  data type. text-compressionComputes the Burrows-Wheeler Transform (BWT) using the suffix array and the original string (represented as a  for performance).text-compressionComputes the corresponding  of a given string. Please see  *https://en.wikipedia.org/wiki/Suffix_array suffix array for more information. text-compressionHierarchical sorting scheme that compares fst first then snd. Necessary for the setting up the BWT in order to correctly invert it using the  +https://www.youtube.com/watch?v=QwSsppKrCj4Magic algorithm.text-compression1State function to push BWTString data into stack.text-compression0State function to create empty STBWTString type.text-compression$State function to update BWTCounter.text-compression1State function to create empty STBWTCounter type.text-compressionMagic Inverse BWT function.text-compressionSimple yet efficient implementation of converting a given string into a BWT Matrix (the BWTMatrix type is a  ( a).   (c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(;8%text-compression*A newtype to ensure you only uncompress a  created from ) , since [] ->  is partial.'text-compressionTakes a String and returns the Burrows-Wheeler Transform (BWT). Implemented via a .(text-compression!Helper function for converting a  to a  .)text-compressionHelper function for converting  to a %.*text-compression"Takes a BWT data type (please see Data.BWT.Internal-) and inverts it back to the original string.This function utilizes the state monad (strict) in order to implement the  +https://www.youtube.com/watch?v=QwSsppKrCj4Magic Inverse BWT algorithm by backtracking indices starting with the (Nothing ,_) entry.+text-compression!Helper function for converting a  of s to a .,text-compression!Helper function for converting a  s to a .-text-compressionHelper function for converting % to a  %&'()*+,- '(%&)*+,-(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(;/3text-compression Abstract 3 and associated state type.4text-compression"Abstract data type representing a 5 in the (strict) ST monad.5text-compression Abstract 5 type utilizing a .6text-compression Abstract 6 and associated state type.7text-compression"Abstract data type representing a 8 in the (strict) ST monad.8text-compression Abstract 8 type utilizing a .9text-compression Abstract 9 and associated state type.:text-compression Abstract : and associated state type.;text-compression"Abstract data type representing a < in the (strict) ST monad.<text-compression Abstract < type utilizing a .=text-compression Abstract = type utilizing a >text-compression Abstract > and associated state type.?text-compression Abstract ? and associated state type.@text-compression"Abstract data type representing a A in the (strict) ST monad.Atext-compression Abstract A type utilizing a .Btext-compression Abstract B type utilizing a Ctext-compression Basic MTF ( ) data type.Etext-compression Basic MTF ( ) data type.Gtext-compression6Useful to acquire the unique elements that make up a ". Credit to @DavidFletcher. See  https://stackoverflow.com/questions/45757839/removing-duplicate-elements-in-a-seqthis stackoverflow post.Htext-compression#Abstract data type to initialize a @ using the initial list.Itext-compressionState function to update A with each step of the MTF.Jtext-compressionState function to create empty @ type.Ktext-compression!State function to load list into ?.Ltext-compressionState function to create empty ? type.Mtext-compressionState function to update >.Ntext-compressionState function to create empty > type.Otext-compressionStrict state monad function.Ptext-compression#Abstract data type to initialize a ; using the initial list.Qtext-compressionState function to update ; with each step of the MTF.Rtext-compressionState function to create empty ; type.Stext-compression!State function to load list into :.Ttext-compressionState function to create empty : type.Utext-compressionState function to update 9.Vtext-compressionState function to create empty 9 type.Wtext-compressionStrict state monad function.Xtext-compressionState function to update 7# with each step of the inverse MTF.Ytext-compressionState function to create empty 7 type.Ztext-compression!State function to load list into 6.[text-compressionState function to update 6.\text-compressionState function to create empty 6 type.]text-compressionStrict state monad function.^text-compressionState function to update 4# with each step of the inverse MTF._text-compressionState function to create empty 4 type.`text-compression!State function to load list into 3.atext-compressionState function to update 3.btext-compressionState function to create empty 3 type.ctext-compressionStrict state monad function.13456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc1EFCDGBA@HIJ?KL>MNO=<;PQR:ST9UVW87XY6Z[\]54^_3`abc(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred"('ntext-compression!Helper function for converting a  to a E via a  first.otext-compression!Helper function for converting a  to a C via a  first.ptext-compression!Helper function for converting a  to a E via a  first.qtext-compression!Helper function for converting a  to a C via a  first.rtext-compressionTake a  of -s and generate the Move-to-front transform (E).stext-compressionTake a  of -s and generate the Move-to-front transform (E).ttext-compressionTake a  of -s and generate the Move-to-front transform (E).utext-compressionTake a  of -s and generate the Move-to-front transform (C).vtext-compressionTakes a * and returns the Move-to-front transform (E).wtext-compressionTakes a  of +s and returns the Move-to-front transform (E).xtext-compressionTakes a * and returns the Move-to-front transform (C).ytext-compressionTakes a * and returns the Move-to-front transform (C).ztext-compression!Helper function for converting a ed E back to the original .{text-compression!Helper function for converting a ed C back to the original .|text-compression!Helper function for converting a ed E back to the original .}text-compression!Helper function for converting a ed C back to the original .~text-compressionTakes a C and returns the  of s.text-compressionTakes a C and returns the  of s.text-compressionTakes a E and returns the  of s.text-compressionTake a E and returns the  of s.text-compressionTakes a E and returns the original  of s.text-compressionTakes a E and returns the original  of s.text-compressionTakes a C and returns the original  of s.text-compressionTakes a C and returns the original  of s.nopqrstuvwxyz{|}~nopqrstuvwxyz{|}~(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(;2A text-compression Abstract  type utilizing a .text-compression Abstract  type utilizing a .text-compression Abstract  and associated state type.text-compression Abstract  and associated state type.text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a . (c,(indexofinputcurrentelement,Occ(c,k),inputcurrentelement)) Please see  &https://en.wikipedia.org/wiki/FM-indexthis0 for an explanation of the above abbreviations.text-compression Abstract  type utilizing a .text-compression Abstract  and associated state type.text-compression Abstract  and associated state type.text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a . (c,(indexofinputcurrentelement,Occ(c,k),inputcurrentelement)) Please see  &https://en.wikipedia.org/wiki/FM-indexthis0 for an explanation of the above abbreviations.text-compression Abstract  type utilizing a .text-compressionBasic FMIndex ( ) data type.text-compressionBasic FMIndex ( ) data type.text-compressionState function to update  with each step of the FMIndex.text-compressionState function to update  with each step of the FMIndex.text-compressionState function to create empty  type.text-compression!State function to load list into .text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionStrict state monad function.text-compressionState function to update  with each step of the FMIndex.text-compressionState function to update  with each step of the FMIndex.text-compressionState function to create empty  type.text-compression!State function to load list into .text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionStrict state monad function.text-compression!Simple Inverse FMIndex function. text-compression Simple Inverse FMIndex function.""(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(;;text-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compressionTake a  of s and generate the FM-index ().text-compressionTake a  of s and generate the FM-index ().text-compressionTake a  of s and generate the FM-index ().text-compressionTake a  of s and generate the FM-index ().text-compressionTakes a  and returns the FM-index ().text-compressionTakes a  of s and returns the FM-index ().text-compressionTakes a  and returns the FM-index ().text-compressionTakes a  and returns the FM-index ().text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compressionTakes a  and returns the  of s.text-compressionTakes a  and returns the  of s.text-compressionTakes a  and returns the  of s.text-compressionTake a  and returns the  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(;Es"text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a .text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a .text-compression Abstract  and associated state type.text-compression Abstract  state type.text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a .text-compression Abstract  state type.text-compression Abstract  and associated state type.text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a .text-compression Basic RLE ( ) data type.text-compression Basic RLE ( ) data type.text-compressionState function to push  data into stack.text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionStrict state monad function.text-compressionState function to push  data into stack.text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionStrict state monad function.text-compressionState function to push  data into stack.text-compressionState function to create empty  type.text-compressionStrict state monad function.text-compressionState function to push  data into stack.text-compressionState function to create empty  type.text-compressionStrict state monad function.$$(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred"(OItext-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compressionTake a  of )s and generate the Run-length encoding ().text-compressionTake a  of )s and generate the Run-length encoding ().text-compressionTake a  of )s and generate the Run-length encoding ().text-compressionTake a  of )s and generate the Run-length encoding ().text-compressionTakes a & and returns the Run-length encoding ().text-compressionTakes a  of 's and returns the Run-length encoding ().text-compressionTakes a + and returns the Run-length encoding (RLE).text-compressionTakes a + and returns the Run-length encoding (RLE).text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compressionTakes a  and returns the  of s.text-compressionTakes a  and returns the  of s.text-compressionTakes a  and returns the  of s.text-compressionTake a  and returns the  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.    !"#$%&'()*+,--./0123456789:;<=>?@ABCDEFGHIJJKKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0text-compression-0.1.0.13-GSHeI0OPPvDF5IxLjVddXfData.BWT.InternalData.BWTData.MTF.InternalData.MTFData.FMIndex.Internal Data.FMIndexData.RLE.InternalData.RLEDMAArray STBWTCounterSTBWTSeqBWTSeq BWTMatrixBWT SuffixArraySuffix suffixindexsuffixstartpossuffixsaToBWTcreateSuffixArraysortTB pushSTBWTSeq emptySTBWTSequpdateSTBWTCounteremptySTBWTCountermagicInverseBWTcreateBWTMatrix $fEqBWTMatrix$fOrdBWTMatrix$fShowBWTMatrix$fReadBWTMatrix$fGenericBWTMatrix$fEqBWT$fOrdBWT $fShowBWT $fReadBWT $fGenericBWT $fEqSuffix $fOrdSuffix $fShowSuffix $fReadSuffix$fGenericSuffixTextBWTtoBWTbytestringToBWT textToBWTfromBWTbytestringFromWord8BWTbytestringFromByteStringBWT textFromBWT $fEqTextBWT $fOrdTextBWT $fShowTextBWT $fReadTextBWT$fGenericTextBWT FSTMTFILT FSTMTFSeqTFMTFSeqT FSTMTFILB FSTMTFSeqBFMTFSeqB STMTFCounterTSTMTFILT STMTFLSSeqT MTFLSSeqT PTMTFSeqT STMTFCounterBSTMTFILB STMTFLSSeqB MTFLSSeqB PBMTFSeqBMTFTMTFBnubSeq'initializeSTMTFLSSeqBupdateSTMTFLSSeqBemptySTMTFLSSeqB loadSTMTFILB emptySTMTFILBupdateSTMTFCounterBemptySTMTFCounterB seqToMTFBinitializeSTMTFLSSeqTupdateSTMTFLSSeqTemptySTMTFLSSeqT loadSTMTFILT emptySTMTFILTupdateSTMTFCounterTemptySTMTFCounterT seqToMTFTupdateFSTMTFSeqBemptyFSTMTFSeqB loadFSTMTFILBupdateFSTMTFILBemptyFSTMTFILB seqFromMTFBupdateFSTMTFSeqTemptyFSTMTFSeqT loadFSTMTFILTupdateFSTMTFILTemptyFSTMTFILT seqFromMTFT$fEqMTFT $fOrdMTFT $fShowMTFT $fReadMTFT $fGenericMTFT$fEqMTFB $fOrdMTFB $fShowMTFB $fReadMTFB $fGenericMTFBbytestringToBWTToMTFBbytestringToBWTToMTFTtextToBWTToMTFBtextToBWTToMTFT textBWTToMTFBbytestringBWTToMTFB textBWTToMTFTbytestringBWTToMTFT textToMTFBbytestringToMTFB textToMTFTbytestringToMTFTbytestringFromBWTFromMTFBbytestringFromBWTFromMTFTtextFromBWTFromMTFBtextFromBWTFromMTFTtextBWTFromMTFTbytestringBWTFromMTFTtextBWTFromMTFBbytestringBWTFromMTFB textFromMTFBbytestringFromMTFB textFromMTFTbytestringFromMTFT FFMIndexSeqT FFMIndexSeqBSTFMIndexCounterT STFMIndexILT STFMIndexSeqT FMIndexSeqT PTFMIndexSeqTSTFMIndexCounterB STFMIndexILB STFMIndexSeqB FMIndexSeqB PBFMIndexSeqBFMIndexTFMIndexBupdateSTFMIndexSeqABupdateSTFMIndexSeqBBemptySTFMIndexSeqBloadSTFMIndexILBemptySTFMIndexILBupdateSTFMIndexCounterBemptySTFMIndexCounterB seqToFMIndexBupdateSTFMIndexSeqATupdateSTFMIndexSeqBTemptySTFMIndexSeqTloadSTFMIndexILTemptySTFMIndexILTupdateSTFMIndexCounterTemptySTFMIndexCounterT seqToFMIndexTseqFromFMIndexBseqFromFMIndexT $fEqFMIndexT $fOrdFMIndexT$fShowFMIndexT$fReadFMIndexT$fGenericFMIndexT $fEqFMIndexB $fOrdFMIndexB$fShowFMIndexB$fReadFMIndexB$fGenericFMIndexBbytestringToBWTToFMIndexBbytestringToBWTToFMIndexTtextToBWTToFMIndexBtextToBWTToFMIndexTtextBWTToFMIndexBbytestringBWTToFMIndexBtextBWTToFMIndexTbytestringBWTToFMIndexTtextToFMIndexBbytestringToFMIndexBtextToFMIndexTbytestringToFMIndexTbytestringFromBWTFromFMIndexBbytestringFromBWTFromFMIndexTtextFromBWTFromFMIndexBtextFromBWTFromFMIndexTtextBWTFromFMIndexTbytestringBWTFromFMIndexTtextBWTFromFMIndexBbytestringBWTFromFMIndexBtextFromFMIndexBbytestringFromFMIndexBtextFromFMIndexTbytestringFromFMIndexT FSTRLESeqTFRLESeqT FSTRLESeqBFRLESeqB STRLECounterT STRLETempT STRLESeqTRLESeqT STRLECounterB STRLETempB STRLESeqBRLESeqBRLETRLEB pushSTRLESeqBemptySTRLESeqBupdateSTRLETempBemptySTRLETempBupdateSTRLECounterBemptySTRLECounterB seqToRLEB pushSTRLESeqTemptySTRLESeqTupdateSTRLETempTemptySTRLETempTupdateSTRLECounterTemptySTRLECounterT seqToRLETpushFSTRLESeqBemptyFSTRLESeqB seqFromRLEBpushFSTRLESeqTemptyFSTRLESeqT seqFromRLET$fEqRLET $fOrdRLET $fShowRLET $fReadRLET $fGenericRLET$fEqRLEB $fOrdRLEB $fShowRLEB $fReadRLEB $fGenericRLEBbytestringToBWTToRLEBbytestringToBWTToRLETtextToBWTToRLEBtextToBWTToRLET textBWTToRLEBbytestringBWTToRLEB textBWTToRLETbytestringBWTToRLET textToRLEBbytestringToRLEB textToRLETbytestringToRLETbytestringFromBWTFromRLEBbytestringFromBWTFromRLETtextFromBWTFromRLEBtextFromBWTFromRLETtextBWTFromRLETbytestringBWTFromRLETtextBWTFromRLEBbytestringBWTFromRLEB textFromRLEBbytestringFromRLEB textFromRLETbytestringFromRLETcontainers-0.6.5.1Data.Sequence.InternalSeqbase GHC.MaybeMaybeGHC.WordWord8 text-1.2.5.0Data.Text.InternalTextbytestring-0.11.3.1Data.ByteString.Internal ByteString