s=kG      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF Safe !"(*3457;<>GIKLNV\Class of storage formats that can have values packed and unpacked from foreign bufferes. The methods are written using continuations to make it easier for GHC to optimise its core code when packing/unpacking many fields.2Pack a value into a buffer using the given format.4Unpack a value from a buffer using the given format.#Takes pointers to the first byte in the buffer, the first byte after the buffer, and a special field terminating character. The field terminating character is used by variable length encodings where the length of the encoded data cannot be determined from the encoding itself.If a value can be successfully unpacked from the buffer then it is passed to the continuation, along with a pointer to the byte after the last one that was read. If not, then the fail action is invoked.3Packer wraps a function that can write to a buffer. Takes start of buffer, packs data into it, and calls the continuation with a pointer to the byte just after the last one that was written. [Relates a storage format to the Haskell type of the value that is stored in that format. )Get the type of a value with this format. 3Yield the number of separate fields in this format.OYield the minumum number of bytes that a value of this format will take up. {Packing a value into this format is guaranteed to use at least this many bytes. This is exact for fixed-size formats.;For fixed size formats, yield their size (length) in bytes.Yields G$ if this is not a fixed size format..Yield the size of a value in the given format.Yields G when a collection of values is to be packed into a fixed length format, but the size of the collection does not match the format.If  returns a size then  returns the same size. Pack data into the given buffer.yPRECONDITION: The buffer needs to be big enough to hold the packed data, otherwise you'll corrupt the heap (bad). Use ' to work out how big it needs to be."Unpack data from the given buffer.PRECONDITION: The buffer must be at least the minimum size of the format (minSize). This allows us to avoid repeatedly checking for buffer overrun when unpacking fixed size format. If the buffer is not long enough then you'll get an indeterminate result (bad).Storage format.Value to pack.!Packer that can write the value.Storage format.Unpacker for that format. Packer to run.Start of buffer./Pointer to the byte after the last one written.Unpacker to run.Source buffer.Length of source buffer.Detect a field terminator.DUnpacked result, and pointer to the byte after the last one read.HIJK    HIJKNone !"(*3457;<>GIKLNV!Append fields without separators.LMNOLMNONone !"(*3457;<>GIKLNV !Big-endian 64-bit IEEE 754 float.!Big-endian 32-bit IEEE 754 float.!Big-endian 64-bit signed integer. Big-endian 64-bit unsigned word.!Big-endian 32-bit signed integer. Big-endian 32-bit unsigned word.# Big-endian 32-bit unsigned word.% Big-endian 8-bit signed integer.'Big-endian 8-bit unsigned word.PBitwise cast of Q to R.The resulting R$ contains the representation of the Q, rather than it's value.S Inverse of doubleToFloat32TBitwise cast of U to V.The resulting V$ contains the representation of the U, rather than it's value.W Inverse of T4 !"#$%&'(XYZ[\]^_PSTW`abcdefghijklmnopqrs  !"#$%&'(* !"#$%&'(XYZ[\]^_PSTW`abcdefghijklmnopqrsNone !"(*3457;<>GIKLNVtFormatting fields.tuvtuvNone !"(*3457;<>GIKLNV)cVariable length string in double quotes, and standard backslash encoding of special characters.+,Variable length raw string (with no quotes).-Fixed length string.fWhen packing, the length of the provided string must match the field width, else packing will fail.NWhen unpacking, the length of the result will be as set by the field width.w*Unpack a ascii text from the given buffer.x&Unpack a string from the given buffer.)*+,-.wFirst byte in buffer.First byte after buffer.Detect field deliminator.xFirst byte in buffer.First byte after buffer.yz{|}~)*+,-. )*+,-.wxyz{|}~ None !"(*3457;<>GIKLNV/Human-readable ASCII Double.11Human-readable ASCII integer, with leading zeros.3Human-readable ASCII Integer. /01234/01234 /01234 None !"(*3457;<>GIKLNV5"Date32 in ASCII DDsMMsYYYY format.7"Date32 in ASCII YYYYsMMsDD format. 567856785678 None !"(*3457;<>GIKLNV9)Separate fields with the given character.*The separating character is un-escapable.  The format  (Sep ',')D does NOT parse a CSV file according to the CSV specification:  "http://tools.ietf.org/html/rfc4180.9:9:9: None !"(*3457;<>GIKLNV; Display fields as a tuple, like (x,y,z).;<;<;< None !"(*3457;<>GIKLNV =QClass of types that can be formatted in some default human readable ASCII way.>#The format for values of this type.?*Get the standard ASCII format for a value.)The element value itself is not demanded."Dates are formatted as YYYY-MM-DD.ZStrings are formatted with double quotes and back-slash escaping of special characters.)Doubles are formatted as base-10 decimal.Ints are formated in base-10.LTuples are displayed with round parens and commas to separate the fields.Empty tuples produce no output. =>?=>? =>?None !"(*3457;<>GIKLNV/ !"#$%&'()*+,-./0123456789:;<=>?/=>?9:;<-.+,)*3412/07856'(%&#$!" Safe !"(*3457;<>GIKLNV   None !"(*3457;<>GIKLNV@Pack a value to a list of  using the default Ascii format.APack a value to a list of .BUnpack a value from a list of .CPack a value to a String.DUnpack a value from a String.E8Constrain the type of a value to match the given format.The value itself is not used.F<Constrain the type of some values to match the given format.The value itself is not used.@ABCDEFG  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF EF @ABCD@ABCDEF  !!""##$$%%&&''(())**++,,-- . . / / 0 0 1 1 2 2 3 3 4 4 5 6 789:;<=>?@ABCDEFGHIJKLM?NOPQKLR?NSTUVWXYZ[\]^_`abcdefghijklmnopqrstuUvwxyz{ | } ~  U   ?Nrepac_4jyCUwvqyhw3IV82r1nIErData.Repa.Convert.FormatsData.Repa.Convert.FormatData.Repa.ConvertData.Repa.Convert.Format.BaseData.Repa.Convert.Format.AppData.Repa.Convert.Format.BinaryData.Repa.Convert.Format.FieldsData.Repa.Convert.Format.Lists Data.Repa.Convert.Format.NumericData.Repa.Convert.Format.Date32Data.Repa.Convert.Format.SepData.Repa.Convert.Format.TupData.Repa.Convert.Format.Asciirepas_6wYzR6B7wdqJFeTAXmBLrQData.Repa.Scalar.Product:*:PackablepackunpackUnpacker fromUnpackerPacker fromPackerFormatValue fieldCountminSize fixedSize packedSizeunsafeRunPackerunsafeRunUnpackerApp Float64be Float32beInt64beWord64beInt32beWord32beInt16beWord16beInt8beWord8be VarStringVarAscFixAsc DoubleAscIntAsc0IntAsc DDsMMsYYYY YYYYsMMsDDSepTup FormatAscii FormatAscii' formatAscii packToAscii packToList8unpackFromList8 packToStringunpackFromString forFormat listFormatbaseGHC.BaseNothing$fMonadUnpacker$fApplicativeUnpacker$fFunctorUnpacker$fMonoidPacker $fPackableApp$fPackableApp0 $fFormatApp $fFormatApp0 floatToWord32ghc-prim GHC.TypesFloatGHC.WordWord32 word32ToFloatdoubleToWord64DoubleWord64word64ToDoublew8i8w16i16w32i32w64i64$fPackableFloat64be$fFormatFloat64be$fPackableFloat32be$fFormatFloat32be$fPackableInt64be$fFormatInt64be$fPackableWord64be$fFormatWord64be$fPackableInt32be$fFormatInt32be$fPackableWord32be$fFormatWord32be$fPackableInt16be$fFormatInt16be$fPackableWord16be$fFormatWord16be$fPackableInt8be$fFormatInt8be$fPackableWord8be$fFormatWord8be $fFormat:*: $fPackable() $fFormat() unpackAsc unpackString$fPackableVarString$fFormatVarString$fPackableVarAsc$fFormatVarAsc$fPackableFixAsc$fFormatFixAsc$fPackableDoubleAsc$fFormatDoubleAsc$fPackableIntAsc0$fFormatIntAsc0$fPackableIntAsc$fFormatIntAsccw8$fPackableDDsMMsYYYY$fFormatDDsMMsYYYY$fPackableYYYYsMMsDD$fFormatYYYYsMMsDD $fPackableSep $fFormatSep$fPackableSep0 $fFormatSep0 $fPackableTup $fFormatTup$fPackableTup0 $fFormatTup0$fFormatAsciiDate32$fFormatAscii[]$fFormatAsciiDouble$fFormatAsciiInt$fFormatAscii:*:$fFormatAscii()Plain$fFormatAsciiPlain$fFormatAsciiPlain0Word8