h$jb      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE F G H IJKLMNO P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s tuvwxyz{|}~                                                    BSD-style#Vincent Hanquez  experimentalunknown Safe-Inferred/ memory-cd.A simple Extended Word128 composed of 2 Word64NoneS BSD-style#Vincent Hanquez stableGoodNone memory-cdperform io for hashes that do allocation and ffi. unsafeDupablePerformIO is used when possible as the computation is pure and the output is directly linked to the input. we also do not modify anything after it has been returned to the user. BSD-style#Vincent Hanquez stablegoodNone  memory-cd(Class of types that can be byte-swapped.e.g. Word16, Word32, Word64 memory-cdBig Endian value memory-cdLittle Endian value  memory-cdrepresent the CPU endiannessBig endian system stores bytes with the MSB as the first byte. Little endian system stores bytes with the LSB as the first byte.#middle endian is purposely avoided. memory-cdReturn the system endianness memory-cd.Convert a value in cpu endianess to big endian memory-cd5Convert from a big endian value to the cpu endianness memory-cd1Convert a value in cpu endianess to little endian memory-cd8Convert from a little endian value to the cpu endianness    BSD-style#Vincent Hanquez  experimentalgoodNone3  memory-cdSiphash tag value  memory-cd SigHash Key memory-cd;produce a siphash with a key and a memory pointer + length. memory-cdsame as , except also specifies the number of sipround iterations for compression and digest. memory-cd siphash C memory-cd siphash D memory-cdkey for the hash memory-cdmemory pointer memory-cdlength of the data ! BSD-style#Vincent Hanquez  experimentalunknownNone " memory-cd)Transform a raw memory to an hexadecimal user beware, no checks are made# memory-cd'Transform a number of bytes pointed by.0src in the hexadecimal binary representation in dstdestination memory need to be of correct size, otherwise it will lead to really bad things.$ memory-cdconvert a base16 src in dst.n need to even" memory-cda with1 type of function to hold reference to the object memory-cdlength in bytes# memory-cddestination memory memory-cd source memory memory-cdnumber of bytes"#$"#$ BSD-style#Vincent Hanquez stableCompatNone memory-cd$byteswap Word# to or from Big Endian0on a big endian machine, this function is a nop. memory-cd'byteswap Word# to or from Little Endian3on a little endian machine, this function is a nop. memory-cdSimple compatibility for byteswap the lower 32 bits of a Word# at the primitive level memory-cdSimple wrapper to handle pre 7.8 and future, where most comparaison functions don't returns a boolean anymore. BSD-style&Nicolas DI PRIMA  experimentalunknownNone % memory-cd'Transform a number of bytes pointed by.+src in the base32 binary representation in dstdestination memory need to be of correct size, otherwise it will lead to really bad things.& memory-cdGet the length needed for the destination buffer for a base32 decoding.9if the length is not a multiple of 8, Nothing is returned' memory-cdconvert from base32 in src to binary in (dst, using the number of bytes specifiedthe user should use unBase32Length to compute the correct length, or check that the length specification is proper. no check is done here.% memory-cdinput memory-cdoutput memory-cd input len%&'%&' BSD-style#Vincent Hanquez stableCompatNone5 BSD-style#Vincent Hanquez  experimentalunknown Safe-Inferred BSD-style#Vincent Hanquez  experimentalunknown Safe-InferredK1 BSD-style#Vincent Hanquez  experimentalgoodNone( memory-cdFNV1(a) hash (64 bit variants)* memory-cdFNV1(a) hash (32 bit variants) memory-cd6compute FNV1 (32 bit variant) of a raw piece of memory memory-cd7compute FNV1a (32 bit variant) of a raw piece of memory memory-cd6compute FNV1 (64 bit variant) of a raw piece of memory memory-cd7compute FNV1a (64 bit variant) of a raw piece of memory()*+ BSD-style#Vincent Hanquez  experimentalunknownNone , memory-cd'Transform a number of bytes pointed by src$ to base64 binary representation in dstThe destination memory need to be of correct size, otherwise it will lead to really bad things.- memory-cd'Transform a number of bytes pointed by src/ to, URL-safe base64 binary representation in dst. The result will be either padded or unpadded, depending on the boolean padded argument.The destination memory need to be of correct size, otherwise it will lead to really bad things./ memory-cdGet the length needed for the destination buffer for a base64 decoding.9if the length is not a multiple of 4, Nothing is returned0 memory-cd9Get the length needed for the destination buffer for an  .http://tools.ietf.org/html/rfc4648#section-3.2unpadded base64 decoding.If the length of the encoded string is a multiple of 4, plus one, Nothing is returned. Any other value can be valid without padding.3 memory-cdconvert from base64 in src to binary in dst%, using the number of bytes specifiedthe user should use unBase64Length to compute the correct length, or check that the length specification is proper. no check is done here.,-./0123,-./0321(c) Vincent Hanquez 2014 BSD-styleVincent Hanquez provisionalnon-portable (requires POSIX)None#) memory-cdMemory synchronization flags memory-cdperform asynchronous write. memory-cdperform synchronous write. memory-cdinvalidate cache data. memory-cdAdvice to put on memory.only define the posix one. memory-cd no specific advice, the default. memory-cdExpect page references in random order. No readahead should occur. memory-cdExpect page references in sequential order. Page should be readahead aggressively. memory-cdExpect access in the near future. Probably a good idea to readahead early memory-cd(Do not expect access in the near future. memory-cdMemory protection memory-cd Mapping flag memory-cd)memory changes are shared between process memory-cd%memory changes are private to process memory-cdMap pages of memory.If fd is present, this memory will represent the file associated. Otherwise, the memory will be an anonymous mapping.use mmap memory-cdUnmap pages of memoryuse munmap memory-cd7give advice to the operating system about use of memorycall madvise memory-cd%lock a range of process address spacecall mlock memory-cd'unlock a range of process address spacecall munlock memory-cd set protection of memory mappingcall mprotect memory-cd4memorySync synchronize memory with physical storage.On an anonymous mapping this function doesn't have any effect. call msync memory-cd&Return the operating system page size.call sysconf memory-cd*The address to map to if MapFixed is used. memory-cdThe length of the mapping memory-cd1the memory protection associated with the mapping memory-cd BSD-style#Vincent Hanquez  experimentalunknown Safe-Inferred'\ 4 memory-cdCreate a new temporary buffer5 memory-cd1xor bytes from source1 and source2 to destination d = s1 xor s22s1, nor s2 are modified unless d point to s1 or s26 memory-cd:xor bytes from source with a specific value to destinationd = replicate (sizeof s) v  s7 memory-cd Copy a set number of bytes from src to dst8 memory-cdSet $n number of bytes to the same value v9 memory-cd#Reverse a set number of bytes from src to dst(. Memory locations should not overlap.: memory-cd'Check if two piece of memory are equals; memory-cd8Compare two piece of memory and returns how they compare< memory-cd2A constant time equality test for 2 Memory bufferscompared to normal equality function, this function will go over all the bytes present before yielding a result even when knowing the overall result early in the processing. 456789:;< 456789:<; BSD-style#Vincent Hanquez stableGoodNone )= memory-cd0Class to allocate new ByteArray of specific size> memory-cd allocate n& bytes and perform the given operation? memory-cd7Class to Access size properties and data of a ByteArray@ memory-cd)Return the length in bytes of a bytearrayA memory-cdAllow to use using a pointerB memory-cd%Copy the data of a bytearray to a ptr> memory-cdnumber of bytes to allocate. i.e. might not match the size of the given type ba.=>?@AB BSD-style#Vincent Hanquez stableGoodNone+C memory-cd*A simple abstraction to a piece of memory.Do beware that garbage collection related to piece of memory could be triggered before this is used.Only use with the appropriate handler has been used (e.g. withForeignPtr on ForeignPtr) memory-cd>Increase the memory view while reducing the size of the windowthis is useful as an abtraction to represent the current offset in a buffer, and the remaining bytes left.CD!Copyright  2014 Nicolas DI PRIMA BSD-Style#Vincent Hanquez  experimentalunknownNone-=E memory-cdSimple ByteArray PackerF memory-cdPacking result:=PackerMore: the next state of Packing with an arbitrary valuePackerFail: an error happened memory-cdrun a sized action memory-cdrun a sized actionEFGH BSD-style#Vincent Hanquez  experimentalgoodNone0:I memory-cd8Compute the SipHash tag of a byte array for a given key.I# is equivalent to 'sipHashWith 2 4'J memory-cd8Compute the SipHash tag of a byte array for a given key.2The user can choose the C and D numbers of rounds.calling I# is equivalent to 'sipHashWith 2 4'K memory-cd2Compute the FNV1 32 bit hash value of a byte arrayL memory-cd3Compute the FNV1a 32 bit hash value of a byte arrayM memory-cd2Compute the FNV1 64 bit hash value of a byte arrayN memory-cd3Compute the FNV1a 64 bit hash value of a byte arrayJ memory-cdc rounds memory-cdd rounds memory-cdkey memory-cd data to hash !()*+IJKLMN !IJ*+()KLMN  BSD-style*Nicolas Di Prima stableGoodNone />?9O memory-cdWrapper around any collection type with the size as type parameterQ memory-cd/Type class to emulate exactly the behaviour of =) but with a known length at compile timeR memory-cd just like R$ but with the size at the type levelS memory-cd create a O from the given ?- if the size is the same as the target size.T memory-cdjust like the S9 function but throw an exception if the size is invalid.U memory-cdAllocate a new bytearray of specific size, and run the initializer on this memoryV memory-cdAllocate a new bytearray of specific size, and run the initializer on this memoryW memory-cd similar to allocN: but hide the allocation and initializer in a pure contextX memory-cd similar to createN: but hide the allocation and initializer in a pure contextZ memory-cdCreate an empty byte array[ memory-cd%Pack a list of bytes into a bytearray\ memory-cd(Un-pack a bytearray into a list of bytes] memory-cd%prepend a single byte to a byte array^ memory-cd$append a single byte to a byte array_ memory-cd&Create a xor of bytes between a and b.9the returns byte array is the size of the smallest input.` memory-cdreturn a specific byte indexed by a number from 0 in a bytearray"unsafe, no bound checking are donea memory-cd7Split a bytearray at a specific length in two bytearrayb memory-cdTake the first n byte of a bytearrayc memory-cddrop the first n byte of a bytearrayd memory-cd!append one bytearray to the othere memory-cdDuplicate a bytearray into another bytearray, and run an initializer on itf memory-cd Similar to e> but also provide a way to return a value from the initializerg memory-cd Similiar to e5 but expect the resulting bytearray in a pure contexth memory-cdCreate a bytearray of a specific size containing a repeated byte valuei memory-cd6Create a bytearray of a specific size initialized to 0j memory-cd0Convert a bytearray to another type of bytearrayk memory-cd6Convert a ByteArrayAccess to another type of bytearray;This function returns nothing if the size is not compatiblel memory-cd6Convert a ByteArrayAccess to another type of bytearrayOPQRSTUVWXYZ[\]^_`abcdefghijklQROPSTUVWXYZ[\]^_`abcdefghijkl BSD-style#Vincent Hanquez StableGHCNone3;,t memory-cd=ScrubbedBytes is a memory chunk which have the properties of:+Being scrubbed after its goes out of scope.6A Show instance that doesn't actually show any content#A Eq instance that is constant timet BSD-style#Vincent Hanquez stableGoodNoneEu memory-cdAllocate a new bytearray of specific size, and run the initializer on this memoryv memory-cdAllocate a new bytearray of specific size, and run the initializer on this memoryw memory-cd similar to u: but hide the allocation and initializer in a pure contextx memory-cd similar to v: but hide the allocation and initializer in a pure contexty memory-cdCreate an empty byte arrayz memory-cdCheck if a byte array is empty{ memory-cd%Pack a list of bytes into a bytearray| memory-cd(Un-pack a bytearray into a list of bytes} memory-cdreturns the first byte, and the remaining bytearray if the bytearray is not null~ memory-cd&Create a byte array from a single byte memory-cd%prepend a single byte to a byte array memory-cd$append a single byte to a byte array memory-cd&Create a xor of bytes between a and b.9the returns byte array is the size of the smallest input. memory-cdreturn a specific byte indexed by a number from 0 in a bytearray"unsafe, no bound checking are done memory-cd7Split a bytearray at a specific length in two bytearray memory-cdTake the first n byte of a bytearray memory-cddrop the first n byte of a bytearray memory-cd%Split a bytearray at the point where pred becomes invalid memory-cdReverse a bytearray memory-cd-Concatenate bytearray into a larger bytearray memory-cd!append one bytearray to the other memory-cdDuplicate a bytearray into another bytearray, and run an initializer on it memory-cd Similar to > but also provide a way to return a value from the initializer memory-cd Similiar to 5 but expect the resulting bytearray in a pure context memory-cdCreate a bytearray of a specific size containing a repeated byte value memory-cd6Create a bytearray of a specific size initialized to 0 memory-cd!Check if two bytearray are equalsThis is not constant time, as soon some byte differs the function will returns. use + in sensitive context where timing matters. memory-cd;A constant time equality test for 2 ByteArrayAccess values.If values are of 2 different sizes, the function will abort early without comparing any bytes.compared to == , this function will go over all the bytes present before yielding a result even when knowing the overall result early in the processing. memory-cd:Check if any element of a byte array satisfies a predicate memory-cd9Check if all elements of a byte array satisfy a predicate memory-cd0Convert a bytearray to another type of bytearrayuvwxyz{|}~ BSD-style&Nicolas DI PRIMA stableGoodNoneI\ memory-cda view on a given bytesEquality test in constant time memory-cd"create a view on a given bytearrayThis function update the offset and the size in order to guarantee: offset >= 0 size >= 0offset < lengthsize =< length - offset memory-cd&create a view from the given bytearray memory-cdcreate a view from the given byte array starting after having dropped the fist n bytes memory-cdthe byte array we put a view on memory-cd%the offset to start the byte array on memory-cdthe size of the view memory-cd byte aray memory-cdsize of the view memory-cd byte array memory-cd7the number of bytes do dropped before creating the view  BSD-style#Vincent Hanquez  experimentalportableNone Op memory-cd"Simple ByteString parser structure memory-cd3Simple parsing result, that represent respectively:failure: with the error message+continuation: that need for more input data9success: the remaining unparsed data and the parser value memory-cd&Run a parser on an @initial byteArray.If the Parser need more data than available, the @feeder function is automatically called and fed to the More continuation. memory-cd*Run a Parser on a ByteString and return a  memory-cd!Get the next byte from the parser memory-cd)Parse a specific byte at current positionif the byte is different than the expected on, this parser will raise a failure. memory-cd/Parse a sequence of bytes from current positionif the following bytes don't match the expected bytestring completely, the parser will raise a failure memory-cd7Take a storable from the current position in the stream memory-cd5Take @n bytes from the current position in the stream memory-cdTake bytes while the @predicate hold from the current position in the stream memory-cdTake the remaining bytes from the current position in the stream memory-cd5Skip @n bytes from the current position in the stream memory-cdSkip bytes while the @predicate hold from the current position in the stream memory-cdSkip all the remaining bytes from the current position in the stream  BSD-style#Vincent Hanquez stableGoodNoneR memory-cdTransform a bytearray at a specific offset into a Word64 tagged as BE (Big Endian)no bounds checking. unsafe memory-cdTransform a bytearray at a specific offset into a Word64 tagged as LE (Little Endian)no bounds checking. unsafe memory-cd Serialize a Word64 to a  ByteArray in big endian format memory-cdmap blocks of 128 bits of a bytearray, creating a new bytestring of equivalent size where each blocks has been mapped through f"no length checking is done. unsafe memory-cdmap blocks of 64 bits of a bytearray, creating a new bytestring of equivalent size where each blocks has been mapped through f"no length checking is done. unsafe  BSD-style#Vincent Hanquez  experimentalunknownNone[? memory-cd%The different bases that can be used.See  "http://tools.ietf.org/html/rfc4648RFC46489 for details. In particular, Base64 can be standard or  ,http://tools.ietf.org/html/rfc4648#section-5URL-safe. URL-safe encoding is often used in other specifications without  .http://tools.ietf.org/html/rfc4648#section-3.2padding characters. $https://www.ietf.org/rfc/rfc2045.txtRFC 2045 defines a separate Base64 encoding, which is not supported. This format requires a newline at least every 76 encoded characters, which works around limitations of older email programs that could not handle long lines. Be aware that other languages, such as Ruby, encode the RFC 2045 version by default. To decode their ouput, remove all newlines before decoding.Examples(A quick example to show the differences:%let input = "Is 3 > 2?" :: ByteString=let convertedTo base = convertToBase base input :: ByteStringconvertedTo Base16"49732033203e20323f"convertedTo Base32"JFZSAMZAHYQDEPY="convertedTo Base64"SXMgMyA+IDI/"convertedTo Base64URLUnpadded"SXMgMyA-IDI_"convertedTo Base64OpenBSD"QVKeKw.8GBG9" memory-cdsimilar to hexadecimal memory-cdstandard Base64 memory-cdunpadded URL-safe Base64 memory-cdstableGoodNone3[ memory-cdSimplest Byte Array BSD-style#Vincent Hanquez stableGoodNone\>-=>?B@ACDtuvwxyz{|}~-?@AB=>tCDuwvx{|}y~z  BSD-Style#Vincent Hanquez  experimentalunknownNoneb  memory-cd>Fill a given sized buffer with the result of the Packer action memory-cd/Pack the given packer into the given bytestring memory-cd6Put a storable from the current position in the stream memory-cd8Put a Byte Array from the current position in the stream)If the ByteArray is null, then do nothing memory-cd7Skip some bytes from the current position in the stream memory-cdSkip the size of a storable from the current position in the stream memory-cd:Fill up from the current position in the stream to the endIt is equivalent to: #fillUpWith s == fillList (repeat s) memory-cdWill put the given storable list from the current position in the stream to the end.This function will fail with not enough storage if the given storable can't be written (not enough space)Example: > pack (fillList $ [1..] :: Word8) 9 "\1\2\3\4\5\6\7\8\9" > pack (fillList $ [1..] :: Word32) 4 "\1\0\0\0" > pack (fillList $ [1..] :: Word32) 64 .. <..succesful..> > pack (fillList $ [1..] :: Word32) 1 .. <.. not enough space ..> > pack (fillList $ [1..] :: Word32) 131 .. <.. not enough space ..> memory-cd/put Word8 in the current position in the stream memory-cdput Word16 in the current position in the stream /! use Host Endianness memory-cdput Word32 in the current position in the stream /! use Host EndiannessEFGHEFGH !""#$$%&'()*+,-./01234567899::;<=>?@AABBCDEFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abcd e f g U h i j k l m n o p q r s t u v w x y z { | } ~          jklmopqrstuvwxyz{|}~  \           w                             p         ot[)memory-cd-0.16.0.1-DAK4ls2JbAF9pQ0n6LbiPdData.Memory.ExtendedWordsData.Memory.EndianData.ByteArray.HashData.Memory.Encoding.Base16Data.Memory.Encoding.Base32Data.Memory.Encoding.Base64Data.Memory.PtrMethodsData.ByteArrayData.ByteArray.PackData.ByteArray.SizedData.ByteArray.ParseData.ByteArray.MappingData.ByteArray.EncodingData.Memory.HeadHackageUtilsData.Memory.Internal.CompatData.Memory.Hash.SipHashData.Memory.Internal.CompatPrim!Data.Memory.Internal.CompatPrim64Data.Memory.Internal.DeepSeqData.Memory.Internal.ImportsData.Memory.Hash.FNVData.Memory.MemMap.PosixData.ByteArray.TypesData.ByteArray.MemViewData.ByteArray.Pack.InternalData.ByteArray.ScrubbedBytesData.ByteArray.MethodsData.ByteArray.ViewData.ByteArray.BytesWord128 $fShowWord128 $fEqWord128ByteSwapBEunBELEunLE Endianness LittleEndian BigEndiangetSystemEndiannesstoBEfromBEtoLEfromLE$fByteSwapWord64$fByteSwapWord32$fByteSwapWord16$fShowBE$fEqBE $fStorableBE$fShowLE$fEqLE $fStorableLE$fShowEndianness$fEqEndiannessSipHashSipKeyshowHexadecimal toHexadecimalfromHexadecimaltoBase32unBase32Length fromBase32 FnvHash64 FnvHash32toBase64 toBase64URLtoBase64OpenBSDunBase64LengthunBase64LengthUnpaddedfromBase64OpenBSDfromBase64URLUnpadded fromBase64memCreateTemporarymemXor memXorWithmemCopymemSet memReversememEqual memCompare memConstEqual ByteArrayallocRetByteArrayAccesslength withByteArraycopyByteArrayToPtrMemViewPackerResult PackerMore PackerFailsipHash sipHashWithfnv1Hash fnv1aHash fnv1_64Hash fnv1a_64HashSizedByteArrayunSizedByteArray ByteArrayNsizedByteArrayunsafeSizedByteArrayalloccreateallocAndFreeze unsafeCreateinlineUnsafeCreateemptypackunpackconssnocxorindexsplitAttakedropappendcopycopyRet copyAndFreeze replicatezeroconvertfromByteArrayAccessunsafeFromByteArrayAccess$fByteArrayNnbytesBlockN$fByteArrayNnSizedByteArray$fByteArrayAccessSizedByteArray$fEqSizedByteArray$fShowSizedByteArray$fOrdSizedByteArray$fNormalFormSizedByteArray ScrubbedBytesnulluncons singletonspanreverseconcateqconstEqanyallViewviewtakeViewdropViewParser ParseFail ParseMoreParseOK parseFeedparsehasMoreanyBytebytebytes takeStorable takeWhiletakeAllskip skipWhileskipAll $fShowResult$fAlternativeParser$fMonadPlusParser$fMonadFailParser $fMonadParser$fApplicativeParser$fFunctorParsertoW64BEtoW64LE fromW64BE mapAsWord128 mapAsWord64BaseBase16Base32Base64Base64URLUnpadded Base64OpenBSD convertToBaseconvertFromBase $fShowBase$fEqBaseBytesfill putStorableputBytes skipStorable fillUpWithfillListputWord8 putWord16 putWord32word8ToWordCompat#wordToWord8Compat#wordToWord32Compat#narrow32WordCompat# unsafeDoIObaseGHC.Word byteSwap64 byteSwap32 byteSwap16 Data.Bits unsafeShiftRpopCount unsafeShiftLhashhashWithGHC.BaseStringbe32Primle32Primbyteswap32Prim booleanPrimInt64#Word64# eqWord64# neWord64# ltWord64# leWord64# gtWord64# geWord64#eqInt64#neInt64#ltInt64#leInt64#gtInt64#geInt64# quotInt64# remInt64#and64#or64#xor64#not64#uncheckedShiftL64#uncheckedShiftRL64#int64ToWord64#word64ToInt64# intToInt64# int64ToInt# wordToWord64# word64ToWord# timesWord64#w64#deepseq-1.4.4.0Control.DeepSeqNFDatarnf<$ Applicative<*liftA2*>pure<*>ghc-prim GHC.TypesWordWord8Word16Word32Word64Data.TraversableforMControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipList Control.ArrowfirstsecondData.Functor.ConstConstgetConst Data.FoldableforM_ bitReverse64 bitReverse32 bitReverse16 bitReverse8 Data.Functorvoid<$>whenliftA3liftA<**> Alternativemanysome<|>fnv1fnv1afnv1_64fnv1a_64MemorySyncFlagMemorySyncAsyncMemorySyncSyncMemorySyncInvalidate MemoryAdviceMemoryAdviceNormalMemoryAdviceRandomMemoryAdviceSequentialMemoryAdviceWillNeedMemoryAdviceDontNeedMemoryProtection MemoryMapFlagMemoryMapSharedMemoryMapPrivate memoryMap memoryUnmap memoryAdvise memoryLock memoryUnlock memoryProtect memorySyncsysconfPageSizeMemoryProtectionNoneMemoryProtectionReadMemoryProtectionWriteMemoryProtectionExecute memViewPlus actionPackeractionPackerWithRemain runPacker_