Îõ³h*‘£®      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­0.1.0.0(c) Alexey Kuleshevich 2024BSD3(Alexey Kuleshevich  experimental non-portable Safe-InferredË;mempackImmutable memory buffer mempacküIt is ok to use ByteString withing ST, as long as underlying pointer is never mutated or returned from the supplied action.    (c) Alexey Kuleshevich 2024BSD3(Alexey Kuleshevich  experimental non-portable Safe-Inferred%&)*=ÀÒJ"mempackVery similar interface to  Exceptions., except not intended for run time exceptions. !"$#%&'(%&"$# !'((c) Alexey Kuleshevich 2024BSD3(Alexey Kuleshevich  experimental non-portable Safe-Inferred=ÂÄÅÆËÒÝäæðôC=mempack2This is a helper type that is useful for creating F instances for sum types.@mempackÝThis is a helper type useful for serializing number of elements in data structures. It uses CŒ underneath, since sizes of common data structures aren't too big. It also prevents negative values from being serialized and deserialized.CmempackÉVariable length encoding for bounded types. This type of encoding will use less memory for small values, but for larger values it will consume more memory and will be slower during packing/unpacking.FmempackËEfficient serialization interface that operates directly on memory buffers.GmempackãName of the type that is being deserialized for error reporting. Default implementation relies on ®.HmempackŠReport the exact size in number of bytes that packed version of this type will occupy. It is very important to get this right, otherwise Iæ will result in a runtime exception. Another words this is the expected property that it should hold:-packedByteCount a == bufferByteCount (pack a)Imempack/Write binary representation of a type into the ¯ which can be accessed with °1, whenever direct operations on it are necessary.JmempackÝRead binary representation of the type directly from the buffer, which can be accessed with °è when necessary. Direct reads from the buffer should be preceded with advancing the buffer offset with ±° by the number of bytes that will be consumed from the buffer and making sure that no reads outside of the buffer can happen. Violation of these rules will lead to segfaults.Kmempack8Monad that is used for deserializing data from a memory . It is based on ( that tracks the current index into the  a=, from where the next read suppose to happen. Unpacking can ² with ³ instance or with Q5 that provides a more type safe way of failing using " interface.Nmempack/Monad that is used for serializing data into a ¯. It is based on ( that tracks the current index into the ¯) where next write is expected to happen.QmempackFailing unpacking with an ".RmempackTail recursive version of  replicateMSmempackThis is the implementation of J for ´ and µTmempack Increment the offset counter of N monad by then number of H! and return the starting offset.Umempack Increment the offset counter of KÓ monad by the supplied number of bytes. Returns the original offset or fails with , whenever there is not enough bytes in the .Vmempack"Serialize a type into an unpinned ´Examples:set -XTypeApplications+unpack @[Int] $ pack ([1,2,3,4,5] :: [Int])Right [1,2,3,4,5]WmempackSerialize a type into a pinned µXmempack"Serialize a type into an unpinned ¶YmempackSame as V;, but allows controlling the pinnedness of allocated memoryZmempackSame as Y&, but produces a mutable array instead[mempackUnpack a memory  into a type using its Fè instance. Besides the unpacked type it also returns an index into a buffer where unpacked has stopped.\mempackUnpack a memory  into a type using its Fê instance. Besides potential unpacking failures due to a malformed buffer it will also fail the supplied  was not fully consumed. Use [4, whenever a partially consumed buffer is possible.]mempackSame as \ except fails in a · monad, instead of ¸.^mempackSame as ] except fails in any ³ , instead of ·._mempackSame as \1 except throws a runtime exception upon a failure¹mempack†Decode a variable length integral value that is encoded with 7 bits of data and the most significant bit (MSB), the 8th bit is set whenever there are more bits following. Continuation style allows us to avoid recursion. Removing loops is good for performance.Ymempack/Should the array be allocated in pinned memory?Zmempack/Should the array be allocated in pinned memory?¹mempack/Continuation that will be invoked if MSB is setmempack÷Will be set either to 0 initially or to the very first unmodified byte, which is guaranteed to have the first bit set.mempack Accumulator.NOPKLMFGHIJVYWXZTU\]^_[QSCDE@AB=>?bac`Rde.NOPKLMFGHIJVYWXZTU\]^_[QSCDE@AB=>?bac`Rdeº        !!""##$%&''()*+,-./0123456789:;<=>>?@@ABBCDEFGHIIJKKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬ª­®¯°±¯²³ª´µª´¶ª­·¸¹º¸»¼½ª¾¿ÀÁ&mempack-0.1.0.0-57E3GR2aAit7hIfsct6Il8 Data.MemPackData.MemPack.BufferData.MemPack.Errormempack$FailT-0.1.2.0-BcGd5i1kT6QJ1PH63yiI77Control.Monad.Trans.FailFailTtransformers-0.6.1.0 Control.Monad.Trans.State.StrictStateT runStateTBufferbufferByteCountbuffernewMutableByteArrayfreezeMutableByteArraywithPtrByteStringSTpinnedByteArrayToByteStringpinnedByteArrayToForeignPtrbyteArrayToShortByteStringbyteArrayFromShortByteString$fBufferByteString$fBufferShortByteString$fBufferByteArrayNotFullyConsumedErrornotFullyConsumedReadnotFullyConsumedAvailablenotFullyConsumedTypeNameRanOutOfBytesErrorranOutOfBytesReadranOutOfBytesAvailableranOutOfBytesRequested UnknownError ManyErrors TextErrorError toSomeError fromSomeError SomeErrorfromMultipleErrors showBytes$fErrorSomeError$fExceptionSomeError$fShowSomeError$fIsStringSomeError$fErrorTextError$fErrorManyErrors$fErrorUnknownError$fErrorRanOutOfBytesError$fShowRanOutOfBytesError$fErrorNotFullyConsumedError$fShowNotFullyConsumedError$fEqNotFullyConsumedError$fOrdNotFullyConsumedError$fEqRanOutOfBytesError$fOrdRanOutOfBytesError$fShowUnknownError$fShowManyErrors $fEqTextError$fShowTextError$fIsStringTextErrorTagunTagLengthunLengthVarLenunVarLenMemPacktypeNamepackedByteCountpackMunpackMUnpack runUnpackPackrunPack failUnpackreplicateTailMunpackByteArray packIncrementguardAdvanceUnpackpackpackByteStringpackShortByteString packByteArraypackMutableByteArrayunpackLeftOverunpack unpackFailunpackMonadFail unpackErrorpackedTagByteCount unpackTagMpackTagM unknownTagMlift_#st_$fMonadStateIntPack!$fMonadReaderMutableByteArrayPack $fMonadPack$fApplicativePack $fFunctorPack$fAlternativeUnpack$fMonadStateIntUnpack$fMonadReaderbUnpack$fMonadFailUnpack $fMonadUnpack$fApplicativeUnpack$fFunctorUnpack$fMemPack(,,,,,,)$fMemPack(,,,,,)$fMemPack(,,,,)$fMemPack(,,,) $fMemPack(,,) $fMemPack(,)$fMemPackRatio$fMemPackComplex$fMemPackNatural$fMemPackInteger$fMemPackWord64$fMemPackWord32$fMemPackWord16$fMemPackWord8 $fMemPackWord$fMemPackInt64$fMemPackInt32$fMemPackInt16 $fMemPackInt8 $fMemPackInt$fMemPackStablePtr $fMemPackPtr$fMemPackDouble$fMemPackFloat $fMemPackChar$fMemPackEither$fMemPackMaybe $fMemPackBool $fMemPack()$fMemPackVarLen$fMemPackVarLen0$fMemPackVarLen1$fMemPackVarLen2$fMemPackLength $fEnumLength$fBoundedLength$fMemPackByteString$fMemPackShortByteString$fMemPackByteArray $fMemPackList $fMemPackTag$fEqTag$fOrdTag $fShowTag$fNumTag $fEnumTag $fBoundedTag $fEqLength $fShowLength $fNumLength $fEqVarLen $fOrdVarLen $fShowVarLen$fBoundedVarLen $fEnumVarLen $fNumVarLen $fRealVarLen$fIntegralVarLen $fBitsVarLen$fFiniteBitsVarLenbaseData.Typeable.InternalTypeableData.Array.ByteMutableByteArray mtl-2.3.1Control.Monad.Reader.ClassaskControl.Monad.State.Class MonadStateControl.Monad.Failfail MonadFail ByteArraybytestring-0.11.5.2Data.ByteString.Internal.Type ByteStringData.ByteString.Short.InternalShortByteStringFail Data.EitherEitherunpack7BitVarLen