úÎ!DHA0+      !"#$%&'()*Safe+ulidCUnroll and produce an exact number of bytes (left-pad with 0 bytes),ulid Source: [https://hackage.haskell.org/package/binary-0.8.5.1/docs/src/Data-Binary-Class.html#line-311:Fold and unfold an Integer to and from a list of its bytesGMOST SIGNIFICANT BYTE FIRST please (this is a change from the default  impl)+,-Safeº.ulid¶Returns the digits of a positive integer as a Maybe list, in reverse order or Nothing if a zero or negative base is given This is slightly more efficient than in forward order./ulidzReturns the digits of a positive integer as a list, in reverse order. Throws an error if given a zero or negative base.ulidhReturns the digits of a positive integer as a list. Throws an error if given a zero or negative base.ulidGTakes a list of digits, and converts them back into a positive integer..ulidThe base to use.ulid$The number to convert to digit form.ulidENothing or Just the digits of the number in list form, in reverse./ulidThe base to use.ulid$The number to convert to digit from.ulid2The digits of the number in list from, in reverse.ulidThe base to use (typically 10).ulid$The number to convert to digit form.ulid8Either Nothing or the digits of the number in list form.ulidThe base to use.ulid&The digits of the number in list form.ulidThe original number.Safe%¹0ulid$Decodes a Crockford base 32 encoded 1/ into an natural number, if possible. Returns 2 if the 1 is not a valid encoded value.3ulid]Encodes an natural number into a Text, using Douglas Crockford's base 32 encoding. Returns 2 if number is negative.ulid/Decode a character to its corresponding integerulid0Encode an integer to its corresponding character4ulidSource:  $https://stackoverflow.com/a/29153602h The safety for m > length was removed, because that should never happen. If it does, it should crash.5ulid"Converts all negative numbers to 0ulid encode 5 123"0003V"| >>> encode (-5) (-123) ""uliddecode 5 "0003V" [(123,"")]ulid Overall length of resulting TextulidNatural number to encodeulid20 padded, Douglas Crockford's base 32 encoded TextulidOverall length of input TextulidBase 32 encoded TextulidList of possible parsesNone2-ÜulidNewtype wrapping a 6ulid Generate a F based on a cryptographically secure random number generator. See: Mhttps://hackage.haskell.org/package/crypto-api-0.13.3/docs/Crypto-Random.htmlulid Generate a 5 based on a standard random number generator. See: Fhttps://hackage.haskell.org/package/random-1.1/docs/System-Random.html ulidNote: The call to 7> splits the generator, so this is safe to call multiple timesCGenerate a ULID Random based on the global random number generator.  Safe21ãulidUNIX time in millisecondsulid3Generate a ULID Timestamp based on a specified timeulid;Generate a ULID Timestamp based on current system UNIX timeulidESpecified UNIX time with millisecond precision (e.g. 1469918176.385)None2@ìulid 8t <- getULIDTimeStamp r <- getULIDRandom pure $ ULID t rulidHDerive a ULID using a specified time and default random number generatorulidHDerive a ULID using the current time and default random number generator ulidÛConvert a ULID to its corresponding (at most) 128-bit Integer. Integer equivalents retain sortable trait (same sort order). This could be useful for storing in a database using a smaller field than storing the shown 16, but still human-readable unlike the Binary version.!ulid6Convert a ULID from its corresponding 128-bit Integer.$ulidâBecause of the strictness annotations, this shouldn't be needed and shouldn't do anything. This is tested and confirmed in the benchmark, but since the work to put it here has already been done it's no harm to leave it in.ulidGSpecified UNIX time with millisecond precision (e.g. 1469918176.385)!ulid8The ULID's Integer equivalent, as generated by toInteger ! !8      !"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGH#ulid-0.3.0.0-DOu1NnKPnvXKD5DEOLvBKoData.ULID.DigitsData.ULID.Base32Data.ULID.RandomData.ULID.TimeStamp Data.ULIDData.Binary.RollDataBinarydigitsunDigits decodeChar encodeCharencodedecode ULIDRandommkCryptoULIDRandom mkULIDRandom getULIDRandom$fNFDataULIDRandom$fBinaryULIDRandom$fReadULIDRandom$fShowULIDRandom$fEqULIDRandom$fDataULIDRandom ULIDTimeStampmkULIDTimeStampgetULIDTimeStamp$fNFDataULIDTimeStamp$fBinaryULIDTimeStamp$fReadULIDTimeStamp$fShowULIDTimeStamp$fEqULIDTimeStamp$fOrdULIDTimeStamp$fDataULIDTimeStampULID timeStamprandom getULIDTimegetULID ulidToIntegerulidFromInteger$fHashableULID $fRandomULID $fNFDataULID $fBinaryULID $fReadULID $fShowULID $fOrdULID$fEqULID $fDataULIDunrollunroll'roll mDigitsRev digitsRev decodePlain text-1.2.3.1Data.Text.InternalTextbase GHC.MaybeNothing encodePlainleftpad clampZerobytestring-0.10.8.2Data.ByteString.Internal ByteString!random-1.1-3ypV4EIycgb35PKjTYYr5q System.Random newStdGen