úᦱº      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ None"#.6K]h./Specialized version of 0 data type. This type alias is used in practice.DMonad for bidirectional Toml conversion. Contains pair of functions: How to read value of type a$ from immutable environment context r?How to store value of type a in stateful context w?In practice instead of r we will use some  Reader Toml and instead of w we will use  State Tomlb. This approach with the bunch of utility functions allows to have single description for from/to Toml conversion.?In practice this type will always be used in the following way: type  r w a =  r w a a Type parameter cE if fictional. Here some trick is used. This trick is implemented in  (http://hackage.haskell.org/package/codeccodec" and described in more details in  Khttps://blog.poisson.chat/posts/2016-10-12-bidirectional-serialization.htmlrelated blog post.Extract value of type a from monadic context r.Store value of type c inside monadic context w and returning value of type a+. Type of this function actually should be  a -> w ()- but with such type it's impossible to have º and other instances.This is an instance of  Profunctor for . But since there's no  Profunctor type class in base or package with no dependencies (and we don't want to bring extra dependencies) this instance is implemented as a single top-level function.Useful when you want to parse newtype/s. For example, if you had data type like this: Adata Example = Example { foo :: Bool , bar :: Text } ?toml bidirectional converter for this type will look like this: 2exampleT :: BiToml Example exampleT = Example  $ bool "foo" .= foo  * str "bar" .= bar 1Now if you change your time in the following way: mnewtype Email = Email { unEmail :: Text } data Example = Example { foo :: Bool , bar :: Email } -you need to patch your toml parser like this: 2exampleT :: BiToml Example exampleT = Example  $ bool "foo" .= foo  *) dimap unEmail Email (str "bar") .= bar #Operator to connect two operations: How to get field from object? How to write this field to toml?&In code this should be used like this: Qdata Foo = Foo { fooBar :: Int, fooBaz :: String } foo :: BiToml Foo foo = Foo  $ int "bar" .= fooBar  * str "baz" .= fooBaz Mapper for consumerMapper for producerSource  object5None "#%.6K]dhCJ Keys are equal  Keys don't have any common part. /The first key is the prefix for the second one./The second key is the prefix for the first one.Key have same prefix.+Data structure to represent table tree for toml.greatest common prefixvalue by key = prefixsuffixes of prefix%Map of layer names and corresponding s.Type synonym for .Key of value in  key = val9 pair. Represents as non-empty list of key components --  s. Key like site."google.com" is represented like /Key (Piece "site" :| [Piece "\"google.com\""]) 'Represents the key piece of some layer.» Prepends  to the beginning of the .# Creates a  of one key-value element.$ Creates a  of one key-value element.%)Inserts key-value element into the given .&)Inserts key-value element into the given .'#Looks up the value at a key in the .(#Looks up the value at a key in the .) Constructs " structure from the given list of  and value pairs.* Converts  to the list of pairs.+ Converts  to the list of pairs.,"Split a dot-separated string into . Empty string turns into a  with single element - empty `. This instance is not safe for now. Use carefully. If you try to use as a key string like this site."google.com"? you will have list of three components instead of desired two."  !"#$%&'()*+##%'*$&()+ !"   !None"#&'-.06;=FKST]hZ¯=.Data type that holds expected vs. actual type.BOffset date-time: =odt1 = 1979-05-27T07:32:00Z odt2 = 1979-05-27T00:32:00-07:00 C!Local date-time (without offset): =ldt1 = 1979-05-27T07:32:00 ldt2 = 1979-05-27T00:32:00.999999 DLocal date (only day): ld1 = 1979-05-27 ELocal time (time of the day): &lt1 = 07:32:00 lt2 = 00:32:00.999999 F Value in  key = value pair.GBoolean value: bool1 = true bool2 = false HInteger value: Žint1 = +99 int2 = 42 int3 = 0 int4 = -17 int5 = 5_349_221 hex1 = 0xDEADBEEF oct2 = 0o755 # useful for Unix file permissions bin1 = 0b11010110 IFloating point number: sflt1 = -3.1415 # fractional flt2 = 1e6 # exponent flt3 = 6.626e-34 # both flt4 = 9_224_617.445_991_228_313 J String value: 4key = "value" bare_key = "value" bare-key = "value" K!Date-time. See documentation for A type.L“Array of values. According to TOML specification all values in array should have the same type. This is guaranteed statically with this type. farr1 = [ 1, 2, 3 ] arr2 = [ "red", "yellow", "green" ] arr3 = [ [ 1, 2 ], [3, 4, 5] ] arr4 = [ "all", strings, """are the same""", ''type''D] arr5 = [ [ 1, 2 ], ["a", "b", "c"] ] arr6 = [ 1, 2.0 ] # INVALID M Needed for GADT parameterizationVReifies type of F into  ValueType2. Unfortunately, there's no way to guarante that V will return t for object with type Value 't.=>?@ADBCEFLGIHJKMSNOPQRTUVWMNOPQRSTFGHIJKLABCDEUV=>?@W=>?@ABCDEFGHIJKLMNOPQRSNone"#&'-.6CFKV]ha‹bExistential wrapper for F.dExtract ¼ from F.eExtract ½ from F.fExtract ¾ from F.gExtract ¿ from F.hExtract A from F.i!Extract list of elements of type a from array.k1Checks whether all elements inside given list of b have the same type as given F. Returns list of Value t without given F. bcdefghijk bckjdefghibcNone "#&'.6K]hd°nUntyped value of TOML1. You shouldn't use this type in your code. Use F instead.u Ensures that n"s represents type-safe version of toml.ntqoprsunopqrstunopqrstNone"#.6K]hgCx%Represents TOML configuration value. |!Inserts given key-value into the x.}Inserts given table into the x.xyz{|}xyz{|}xyz{ None"#.6K]hgü3=>?@ADBCEFLGIHJKMSNOPQRTUVWbcdefghijkntqoprsuxyz{|}None "#-.6FKQV]hu® ‚TImplementation of prism idea using simple data prism approach. Single value of type ‚ has two capabilities: „,: first-class pattern-matching (deconstruct object to possible field).…: constructor of object from field.†Creates prism for b.‡Allows to match against given F using provided prism for b.ˆ¼ prism for b. Usually used with arrayOf combinator.‰½ prism for b. Usually used with arrayOf combinator.о prism for b. Usually used with arrayOf combinator.‹¿ prism for b. Usually used with arrayOf combinator.ŒL prism for b. Usually used with arrayOf combinator.Unsafe function for creating L from list of bg. This function assumes that every element in this list has the same type. Usually used when list of b is created using single prism. ‚ƒ„…†‡ˆ‰Š‹Œ ‚ƒ„…‡†ˆ‰Š‹Œ‚ƒ„…None "#.6FKT]hƒd Converts x type into ¿.For example, this ÿ TOML { tomlPairs = HashMap.fromList [(Key "title", String "TOML example")] , tomlTables = HashMap.fromList [( TableId (NonEmpty.fromList ["example", "owner"]) , TOML { tomlPairs = HashMap.fromList [(Key "name", String Kowainikœ)] , tomlTables = mempty , tomlTableArrays = mempty } )] , tomlTableArrays = mempty } will be translated to this 1title = "TOML Example" [example.owner] name = Kowainik  Converts x into ¿ with the given indent.À1Returns pretty formatted key-value pairs of the x.Á/Returns pretty formatted tables section of the x. Number of spaces for indentationAccumulator for table namesGiven x Pretty result None"#.6K]h„ú‘(Pretty parse exception for parsing toml.œParses ¿ as x object. ‘’“”•–—˜™š›œ ‘’œ˜—“–•™”𛑒 None"#.6K]h‡ŸCreates x from the Â. Adds key-value pair to the Â.¡Adds table to the Â.Ÿ ¡Ÿ ¡ None"#.6K]h¢ ¢ Specialied  type alias for Toml monad. Keeps x( object either as environment or state.£Mutable context for Toml conversion. This is w type variable in  data type.¤Immutable environment for Toml conversion. This is r type variable in  data type.¥&Type of exception for converting from Toml to user custom data type.¦ No such key§ No such table¨Expected type vs actual type©Exception during parsingª Converts ¥! into pretty human-readable text.«;Convert textual representation of toml into user data type.¬)Convert object to textual representation. ¢£¤¥©¦§¨ª«¬ ¢¤£¥¦§¨©ª«¬¥¦§¨© None"#&'-.6<FKQV]h¢¿ ¯?General function to create bidirectional converters for values.°Helper dimapper to turn ³ parser into parser for Ã, Natural, Ä, etc.±Almost same as J. Useful when you want to have fields like this inside your configuration: tdata GhcVer = Ghc7103 | Ghc802 | Ghc822 | Ghc842 showGhcVer :: GhcVer -> Text parseGhcVer :: Text -> Maybe GhcVer <When you specify couple of functions of the following types: ,show :: a -> Text parse :: Text -> Maybe a they should satisfy property parse . show == Just7 if you want to use your converter for pretty-printing.²Parser for boolean values.³Parser for integer values.´Parser for integer values.µParser for floating values.¶Parser for string values.·aParser for array of values. Takes converter for single array element and returns list of values.¸Bidirectional converter for  Maybe smth values.¹<Parser for tables. Use it when when you have nested objects.¯How to convert from b to aConvert a to AnyvaleKey of the value±!Convert from safe to unsafe valueParser for more type safe valueSource  object ¯°±²³´µ¶·¸¹ ¯°±²´³µ¶·¸¹None"#.6K]h£¢£¤¥©¦§¨ª«¬¯°±²³´µ¶·¸¹None"#.6K]h¤{Œ  !"#$%&'()*+=>?@ADBCEFLGIHJKMSNOPQRTUVWbcdefghijkntqoprsuxyz{|}‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œ¢£¤¥©¦§¨ª«¬¯°±²³´µ¶·¸¹Å !"#$%&'()*++,--./0123456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnnopqrstuvwxyz{|}~€‚ƒƒ„…†‡ˆ‰Š‹ŒŒŽ‘’“”•–—˜™ š š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À ©ÁÂÃÄÅÆSÇÈTÅÆUÉÊVËÌ ÍÅÆÎÅÆÏÐ"tomland-0.3-I3JcEpreXmuGee0F59jarq Toml.Bi.MonadToml.PrefixTreeToml.Type.ValueToml.Type.AnyValueToml.Type.UValueToml.Type.TOML Toml.Prism Toml.Printer Toml.Parser Toml.Edsl Toml.Bi.CodeToml.Bi.Combinators Toml.TypeToml.BiTomlBi BijectionbiReadbiWritedimap.=$fMonadBijection$fApplicativeBijection$fFunctorBijectionKeysDiffEqualNoPrefix FstIsPref SndIsPrefDiffdiffprefdiffFstdiffSnd PrefixTreeLeafBranch bCommonPrefbVal bPrefixMap PrefixMapPrefixKeyunKeyPieceunPiece:||singleTsingleinsertTinsertlookupTlookupfromListtoListTtoList $fIsStringKey $fHashableKey$fSemigroupPrefixTree $fShowPiece $fEqPiece $fOrdPiece$fHashablePiece$fIsStringPiece $fShowKey$fEqKey$fOrdKey$fSemigroupKey $fGenericKey$fShowPrefixTree$fEqPrefixTree$fShowKeysDiff $fEqKeysDiffTypeMismatchError typeExpected typeActualDateTimeZonedLocalDayHoursValueBoolIntegerDoubleTextDateArrayTValueTBoolTIntegerTDoubleTTextTDateTArrayshowType eqValueList valueType sameValue $fEqDateTime $fEqValue$fIsStringValue $fNumValue$fShowTypeMismatchError $fEqTValue $fShowTValue$fShowDateTime$fEqTypeMismatchError $fShowValueAnyValue matchBool matchInteger matchDouble matchText matchDate matchArray liftMatchreifyAnyValues $fEqAnyValue$fShowAnyValueUValueUBoolUIntegerUDoubleUTextUDateUArray typeCheck $fEqUValue $fShowUValueTOML tomlPairs tomlTables insertKeyVal insertTable $fMonoidTOML$fSemigroupTOML $fShowTOML$fEqTOMLPrismpreviewreviewmkAnyValuePrismmatch_Bool_Integer_Double_Text_Array unsafeArray$fCategoryTYPEPrism prettyToml prettyTomlIndParseExceptiondoublePtextPkeyPintegerPboolParrayPkeyValP tableHeaderPtomlPparse$fShowParseException$fEqParseExceptionmkToml=:tableBiTomlStEnvDecodeException KeyNotFound TableNotFound TypeMismatch ParseErrorprettyExceptiondecodeencode$fEqDecodeException$fShowDecodeExceptionbijectionMakerdimapNummdimapboolintegerintdoubletextarrayOfmaybeTbaseGHC.BaseMonad<|ghc-prim GHC.Types integer-gmpGHC.Integer.Type#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalprettyKeyValue prettyTablesTDSLIntWord