h$+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""  ####*$ Safe-InferredY Safe-Inferred   api-tools Render a  in ISO 8601 format to a precision of seconds (i.e. omitting any subseconds). api-toolsParse text as a  in ISO 8601 format or a number of slight variations thereof (the T may be replaced with a space, and the seconds, milliseconds and/or Z/ timezone indicator may optionally be omitted)."Time zone designations other than Z% for UTC are not currently supported. api-toolsParse text as a  in  YYYY-MM-DD format. api-toolsParse text as a  in ISO 8601 format or a number of slight variations thereof (the T may be replaced with a space, and the seconds and timezone indicator may optionally be omitted). api-tools Variant of = that throws an error if the input text could not be parsed. api-tools Variant of = that throws an error if the input text could not be parsed. Safe-Inferred api-toolsThe "oh noes!" operator. api-toolsAttempts to match the keys of the maps to produce a map from keys to pairs.   Nonel api-toolsEncode an element of a union as single-element map from a field name to a value.%(c) Chris Kuklewicz 2006, (c) shelarcy 2012, derived from (c) The University of Glasgow 2001 BSD-style (see the file LICENSE)libraries@haskell.org experimental'non-portable (regex-base needs MPTC+FD)None api-toolsMakes a regular expression with the default options (multi-line, case-sensitive). The syntax of regular expressions is otherwise that of egrep. (i.e. POSIX "extended" regular expressions). api-toolsMakes a regular expression, where the multi-line and case-sensitive options can be changed from the default settings. api-tools+Match a regular expression against a string api-toolsMatch a regular expression against a string, returning more information about the match. api-tools!The regular expression to compile api-tools <=> '^' and '$' match the beginning and end of individual lines respectively, and '.' does not match the newline character. api-tools <=> matching is case-sensitive api-tools(Returns: the compiled regular expression api-toolsThe regular expression api-toolsThe string to match against api-tools Returns:  strs if the match succeeded (and strs, is the list of subexpression matches), or  otherwise. api-toolsThe regular expression api-toolsThe string to match against api-tools Returns:  if the match failed, or:  Just ( everything before match, portion matched, everything after the match, subexpression matches )None  #$;)a" api-toolsBinary data is represented in JSON format as a base64-encoded string  api-toolsA default value for a field' api-tools;the basic JSON types (N.B., no floating point numbers, yet)( api-toolsa JSON UTF-8 string) api-toolsa base-64-encoded byte string* api-tools a JSON bool+ api-toolsa JSON integral number, api-toolsa JSON UTC string- api-toolsType is either a list, Maybe, a named element of the API or a basic type. api-toolslist elements are types/ api-toolsMaybe elements are types0 api-tools.the referenced type must be defined by the API1 api-toolsa JSON string, int, bool etc.2 api-toolsa generic JSON value3 api-toolsConversion possibly converts to an internal representation. If specified, a conversion is a pair of an injection function name and a projection function name.4 api-tools(SpecEnum is your classic enumerated type7 api-tools%SpecUnion is your classsic union type: api-toolsIn addition to the type and comment, record fields may carry a flag indicating that they are read-only, and may have a default value, which must be of a compatible type.@ api-tools)SpecRecord is your classsic product type.S api-toolsSpecNewtype elements are isomorphisms of string, inetgers or booleansW api-toolstype/element specs are either simple type isomorphisms of basic JSON types, records, unions or enumerated types] api-toolsa distinct case-insensitive short prefix used to form unique record field names and data constructors:"must be a valid Haskell identifiermust be unique within the API^ api-tools,Markdown comments are represented by strings_ api-toolsFieldName identifies recod fields and union alternatives must contain a valid identifier valid in Haskell and any API client wrappers (e.g., if Ruby wrappers are to be generated the names should easily map into Ruby)b api-tools6TypeName must contain a valid Haskell type constructore api-tools/Specifies an individual element/type of the APIg api-toolsname of Haskell typeh api-tools#comment describing type in Markdowni api-tools!distinct short prefix (see below)j api-toolsthe type specificationk api-toolsoptional conversion functionso api-toolsan API spec is made up of a list of type/element specs, each specifying a Haskell type and JSON wrapperss api-tools$Convert a default value to an Aeson . This differs from  as it will not round-trip with .: UTC default values are turned into strings. api-toolsIt is sometimes helpful to write a type name directly as a string !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstolmnefghijkbcd_`a^]WXYZ[\STUV@AB:;<=>?7894563-./012 !"#$%&'()*+,OPQRKLMNGHIJCDEFsrpqtNone/M api-toolsA  a is something that can generate TH declarations from a value of type a#. Tools can be combined using the  instance. api-tools0Execute a tool to generate some TH declarations. api-toolsSettings to control the behaviour of API tools. This record may be extended in the future, so you should construct a value by overriding individual fields of . api-toolsGenerate a warning when an instance declaration is omitted because it already exists api-toolsRename the constructors of filtered newtypes and generate smart constructors that enforce the invariants api-tools+Default settings designed to be overridden. api-tools5Construct a tool that does not depend on any settings api-tools0Construct a tool that may depend on the settings api-tools is a contravariant functor api-tools8Make a tool that reads its argument to decide what to do api-tools?Apply a tool that acts on elements of a list to the entire list api-tools0Apply a tool that acts on nodes to an entire API api-toolsApply a tool that acts on datatype nodes (i.e. those that are not synonyms) to an entire API api-toolsCreate a tool that acts on nodes from its action on individual specs.None1 api-toolsConstruct an idiomatic expression (an expression in an Applicative context), i.e. app ke [] = ke app ke [e1,e2,...,en] = ke <$> e1 <*> e2 ... <*> en api-toolsAdd an instance declaration for a class, if such an instance does not already exist api-tools-Construct a TH function with a type signature api-tools Construct a simple TH definition api-tools6Construct a simple TH definition with a type signature api-tools!Field name as a string expression api-toolsField name as a variable  &None22None>2 None; api-tools"...and an enum is a set of values. api-tools<...similarly a union is a map from fields to alternatives... api-toolsThe canonical form of a record type is a map from fields to values... api-tools8The normal or canonical form for a type declaration, an e=. Equality of the normal form indicates equivalence of APIs.We track all types. api-toolsThe API type has too much extra info for us to be able to simply compare them with (==). Our strategy is to strip out ancillary information and normalise into a canonical form, and then we can use a simple (==) compare.Our normalised API discards most of the details of each type, keeping just essential information about each type. We discard order of types and fields, so we can use just associative maps. api-toolsCompute the normal form of an API, discarding extraneous information. api-tools5Compute the normal form of a single type declaration. api-tools)Find the set of type names used in an API api-tools0Find the set of type names used in a declaration api-tools*Find the set of type names used in an type api-tools&Check if a type is declared in the API api-tools+Check if a type is used anywhere in the API api-toolsCheck if the first type's transitive dependencies include the second type api-tools5Compute the transitive dependencies of a set of types api-toolsCompute the set of types that depend (transitively) on the given types api-toolsTest that all the free type names in a type are declared in the API. If not, return the set of undeclared types. api-toolsTest that all the types used in a type declaration are declared in the API. If not, return the set of undeclared types. api-toolsTest that all the types used in the API are declared. If not, return the set of undeclared types. api-tools0Substitute types for type names in a declaration api-tools)Substitute types for type names in a type api-tools6Rename the first type to the second throughout the API None#$<6 api-tools:Create human-readable API documentation in Markdown format api-tools8Document a single API comment or node in Markdown format  None (Sub -> f Sub) -> Root -> f Root=along with similar functions for all the types nested inside Root that depend on Sub.Note that types with custom representations will not have traversals generated automatically: if required, these must be defined manually in the same module as the call to :, otherwise the generated code will lead to scope errors.None[ api-toolsTool to derive  instances for generated types. At present, this derives only base version instances.None \; api-toolsTool to generate  instances for generated types.None\ api-tools2Tool to make lenses for fields in generated types.None 9_d api-toolsThe Example class is used to generate a documentation-friendly example for each type in the model api-tools*Generator for example values; defaults to  if not specified api-toolsGenerate a list of (type name, sample generator) pairs corresponding to each type in the API, with samples encoded as JSON. This depends on the  instances generated by $. It generates something like this: samples :: [(String, Gen Value)] samples = [("Foo", fmap toJSON (example :: Gen Foo)), ... ] api-toolsTool to generate # instances for types generated by . This depends on quickCheckTool.Nonec api-tools3Tool to generate the maps between enumerations and Text strings named by  and . api-toolsFor an enum type E, name a function _text_E :: E -> Text that gives a string corresponding to the inhabitant of the type. For example, we generate something like this:  _text_FrameRate :: FrameRate -> T.Text _text_FrameRate fr = case fr of FRauto -> "auto" FR10 -> "10" FR15 -> "15" FR23_97 -> "23.97" FR24 -> "24" FR25 -> "25" FR29_97 -> "29.97" FR30 -> "30" FR60 -> "60" api-toolsFor an enum type E, name a map from Text1 values to inhabitants of the type, for example: _map_FrameRate :: Map Text FrameRate _map_FrameRate = genTextMap _text_FrameRateNonec api-toolsTool to generate  instances for generated types.Noned api-toolsTool to generate # instances for types generated by . This depends on .None &59p api-toolsLike FromJSON, but keeping track of multiple errors and their positions. Moreover, this class is more liberal in accepting invalid inputs:a string like "3" is accepted as an integer; and the integers 0 and 1 are accepted as booleans. api-toolsParse a JSON value with structured error-reporting support. If this method is omitted, fromJSON will be used instead: note that this will result in less precise errors. api-tools2Options to modify the behaviour of the JSON parser api-toolsIf true, default values from the schema will be used when a field is missing from the JSON data api-toolsIf true, fields in the schema marked read-only will be overwritten with default values api-toolsIf true, parse errors will be generated when invalid values are supplied for filtered newtypes api-toolsLike , but keeping track of locations within the JSON structure and able to report multiple errors. Careful! The " instance does not agree with the 8 instance in all circumstances, and you should use the * instance where possible. In particular: pf <*> ps# returns errors from both arguments pf `ap` ps returns errors from pf only api-tools=Use this as a basis for overriding individual fields of the 4 record, in case more flags are added in the future. api-toolsRun a parser with given flags, starting in the outermost location, and returning warnings even if the parse was successful api-toolsRun the JSON parser on a value to produce a result or a list of errors with their positions. This should not be used inside an implementation of . as it will not pass on the current position. api-toolsRun the JSON parser on a value to produce a result or a list of errors with their positions. This version allows the  to be specified. api-toolsRun the JSON parser on a value to produce a result or a list of errors with their positions. This version allows the  to be specified, and produces warnings even if the parse succeeded. api-tools Decode a  ByteString and run the JSON parser api-tools Decode a  ByteString( and run the JSON parser, allowing the  to be specified api-tools!Suitable as an implementation of  parseJSON that uses the 9 instance (provided said instance was not defined using fromJSON!). api-toolsIt's contrary to my principles, but I'll accept a string containing a number instead of an actual number, and will silently truncate floating point numbers to integers... api-tools=Look up the value of a field, treating missing fields as null api-toolsLook up the value of a field, which may be read-only or use a default value (depending on the ). api-tools;Parse the value of a field, treating missing fields as null api-tools5Parse the value of a field, failing on missing fields api-toolsMatch an inhabitant of a disjoint union, which should be an object with a single field, and call the continuation corresponding to the field name.None}/ api-tools?A record is represented as a list of (field name, value) pairs.Invariant: these are in ascending order by field name, and there are no duplicates.*TODO: consider if it would be worth using  instead. api-toolsGeneric representation of a data value belonging to a schema type. This representation has the following properties::it is straightforward to convert into either CBOR or JSON;decoding CBOR or parsing JSON requires the schema, and takes advantage of it by introducing type distinctions and interning field names;&decoding CBOR is relatively efficient. api-tools Convert a   into a generic , failing if the type is not compatible. This requires type information so that it can introduce type distinctions absent in   , e.g. when ! is used at type / (. t). api-toolsParse a generic  from a JSON , given the schema and expected type. This is not particularly optimized. For the other direction, use . api-toolsEfficiently encode a generic  in CBOR format. api-tools%Efficiently decode CBOR as a generic &, given the schema and expected type. api-toolsCheck that the value is of the given type in the schema, reporting the first error encountered if it does not conform. api-toolsGiven a schema, generate an arbitrary type corresponding to the schema and an arbitrary value of that type. api-toolsGiven a schema and a type, generate an arbitrary value of that type. api-tools'A reasonably varied generator for JSON s.Hack alert: we do not generate %, because Aeson fails to round-trip   ::  . api-tools&QuickCheck property that converting a 1 to and from JSON gives back the original value. api-toolsQuickCheck property that the type-specific JSON serialisation agrees with deserialising as generic JSON and then serialising again. api-tools&QuickCheck property that converting a 1 to and from CBOR gives back the original value. api-toolsQuickCheck property that the type-specific CBOR serialisation agrees with deserialising as generic CBOR and then serialising again. api-toolsInsert a (field, value) pair into a record, replacing the existing field if it is present and preserving the ordering invariant. api-toolsDelete a field from a record, trivially preserving the ordering invariant. api-tools>Rename a field in a record, preserving the ordering invariant. api-toolsSplit a record at a given field, returning the preceding fields, value and succeeding fields. Fails if the field is absent. api-toolsJoin together two records with a (field, value) pair in between. The ordering invariant is not checked!++None api-toolsTool to generate  and # instances for types generated by . This depends on 1. For historical reasons this does not generate & instances; you probably want to use  instead. api-toolsTool to generate ,  and # instances for types generated by . This depends on . Note that generated  and  instances will always agree on the decoding of a value, but that the 2 instances for basic types are more liberal than . api-toolsTool to generate  instance for an API node api-toolsTool to generate 0 instance for an API node, which relies on the  instance. api-toolsTool to generate  instance for an API nodeNone| api-toolsWhen to validate the data against the schema (each level implies the preceding levels): api-tools Not at all api-tools!At start and end of the migration api-toolsAfter custom migrations api-toolsAfter every change api-toolsCustom migrations used in the changelog must be implemented in Haskell, and supplied in this record. There are three kinds:Whole-database migrations, which may arbitrarily change the API schema and the data to match;Type migrations, which may change the schema of a single type; andSingle field migrations, which may change only the type of the field (with the new type specified in the changelog).For database and type migrations, if the schema is unchanged, the corresponding function should return .The db, ty and fld parameters should be instantiated with the enumeration types generated by , which correspond to the exact set of custom migration tags used in the changelog. api-toolsMigrate a dataset from one version of an API schema to another. The data must be described by a named type, the name of which is assumed not to change.The db, rec and fld types must be enumerations of all the custom migration tags in the changelog, as generated by generateMigrationKind. api-tools:Lift a custom record migration to work on arbitrary values api-toolsLift a schema change on record types to work on arbitrary type declarations api-toolsUse for ,  or 7 to indicate that changes to the data are not required api-toolsUse for  or 3 to indicate that the schema should not be changed api-tools%The earliest version in the changelog api-tools#The latest version in the changelog api-toolsCheck that a changelog adequately describes how to migrate from one version to another. api-toolsCheck that a dataset matches an API, which is necessary for succesful migration. The name of the dataset's type must be specified. api-toolsGenerate enumeration datatypes corresponding to the custom migrations used in an API migration changelog. api-toolsStarting schema and version api-toolsEnding schema and version api-tools(Log of changes, containing both versions api-toolsCustom migration functions api-toolsName of the dataset's type api-tools"How thoroughly to validate changes api-toolsDataset to be migrated api-toolsStarting schema and version api-toolsEnding schema and version api-tools(Log of changes, containing both versions api-toolsCustom migration functions api-toolsName of the dataset's type api-tools"How thoroughly to validate changes api-toolsDataset to be migrated api-toolsStarting schema and version api-toolsEnding schema and version api-toolsChangelog to be validated api-toolsCustom migration functions api-toolsName of the dataset's type api-tools"How thoroughly to validate changes  None >9 9 None  api-tools+API description of the api-tools API itselfNone w api-toolsSerialise a JSON value as a CBOR term in a generic but schema-dependent fashion. This is necessary because the JSON representation carries less information than we need in CBOR (e.g. it lacks a distinction between bytestrings and text).There is a corner case where this may lose information: if the schema contains a field with type ? json (i.e.  ), then we have 5toJSON Nothing == Null toJSON (Just Null) == Nullso  cannot distinguish these values, and will use the CBOR-encoding of  for both. api-toolsConvert a JSON value into a CBOR term in a generic but schema-dependent fashion. api-toolsWhen a JSON value has been deserialised from CBOR, the representation may need some modifications in order to match the result of  on a Haskell datatype. In particular, Aeson's representation of  does not round-trip (because  is encoded as  and  x as  x), so CBOR uses a different representation (as an empty or 1-element list).Noneo  api-tools:Tool to generate a list of JSON round-trip tests of type [(, )]( with the given name. This depends on jsonTool and quickCheckTool. api-tools:Tool to generate a list of CBOR round-trip tests of type [(, )]( with the given name. This depends on cborTool and quickCheckTool. api-toolsTool to generate a list of CBOR-to-JSON conversion tests of type [(, )]. The first name must be the o being tested, and the second should be the name of the declaration to be produced. This depends on cborTool, jsonTool and quickCheckTool. api-toolsTool to generate a list of JSON-to-CBOR conversion tests of type [(, )]. The first name must be the o being tested, and the second should be the name of the declaration to be produced. This depends on cborTool, jsonTool and quickCheckTool. api-tools*Tool to generate a list of tests that the  generic representation agrees with the type-specific JSON representation. api-tools*Tool to generate a list of tests that the  generic representation agrees with the type-specific CBOR representation. api-toolsQuickCheck property that a . decodes to an expected Haskell value, using  api-toolsQuickCheck property that a . decodes to an expected Haskell value, using  with the given  api-tools=QuickCheck property that Haskell values can be encoded with toJSON and decoded with  to get the original value api-toolsQuickCheck property that CBOR decoding is a left inverse for encoding api-toolsQuickCheck property that toJSON agrees with encoding to CBOR directly and then decoding using the schema-aware generic decoder. From this and  it follows that >fromJSONWithErrs . deserialiseJSONWithSchema . serialise == id api-toolsQuickCheck property that direct encoding to CBOR agrees with conversion to JSON followed by the schema-aware generic encoder. From this and  it follows that 4deserialise . serialiseJSONWithSchema . toJSON == id   None api-tools/Generate the datatypes corresponding to an API. api-tools>Generate the datatypes corresponding to an API, allowing the  to be overriden. api-toolsApply a list of tools to an o, generating TH declarations. See the individual tool descriptions for details. Note that  must be called first, and some tools have dependencies, which must be included in the same or a preceding call to . api-toolsApply a list of tools to an o4, generating TH declarations. This form allows the  to be overridden.!None 3"None(None #$ api-tools(Generate a web page documenting all the s in a web application)None #$ api-tools"Generate a web page documenting a *None None944#None#$ api-tools;Take an API spec and generate a JSON description of the API api-tools"Generate an API spec from the JSON+,-+./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXYZ[\]^_`abccdeefgghijkllmnnopqqrsttuvwxyz{{|}~                                            ''''''''''''''''''''''''''''''''''''''''''''''''''                                                         !O!!!!!!!V!!!!!!!!!\!!!!!!!!!!!!!b!b!!!q!q!!!t!t!!!!!!w!!!!{!{!!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!v!u!s!r!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""()####$$$$$$$%%%%00+++0&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&000+++00)api-tools-0.10.0.0-EJnhqKV0oiVLtKGktWeqIZData.API.JSON.Compat Data.Binary.Serialise.CBOR.Extra Data.API.TimeData.API.UtilsData.API.TypesData.API.Tools.Combinators Data.API.TH Data.API.PPData.API.NormalFormData.API.MarkdownData.Binary.Serialise.CBOR.JSON Data.API.DocData.API.Changes.TypesData.API.ErrorData.API.Tools.DatatypesData.API.Tools.TraversalData.API.Tools.SafeCopyData.API.Tools.QuickCheckData.API.Tools.LensData.API.Tools.ExampleData.API.Tools.EnumData.API.Tools.DeepSeqData.API.Tools.CBOR Data.API.JSONData.API.ValueData.API.Tools.JSONData.API.ChangesData.API.ParseData.API.API.DSLData.API.JSONToCBORData.API.Tools.JSONTestsData.API.ToolsData.API.API.GenData.API.Doc.Subst Data.API.APIData.API.TH.Compat Text.Regex Data.API.ScanData.API.Doc.TypesData.API.Doc.DirData.API.Doc.CallData.API.Tutorial$aeson-2.0.3.0-Eb3n9TmmpULFKIhJacWN3TData.Aeson.KeyMapKeyMapData.Aeson.KeyKeybase Control.Monad<$!>printUTCparseUTCparseDay parseUTC_oldunsafeParseUTCunsafeParseDay$fArbitraryUTCTime MergeResult OnlyInLeftInBoth OnlyInRightsimpleParseVersion?!?!? mergeMapsdiffMaps matchMaps$fEqMergeResult$fShowMergeResultencodeListWithencodeMaybeWithencodeRecordFields encodeUnion decodeUniondecodeListWithdecodeMaybeWithBinary_Binary DefaultValue DefValList DefValMaybe DefValString DefValBool DefValInt DefValUtc BasicTypeBTstringBTbinaryBTboolBTintBTutcAPITypeTyListTyMaybeTyNameTyBasicTyJSON ConversionSpecEnumseAlts SpecUnionsuFields FieldTypeftType ftReadOnly ftDefault ftComment SpecRecordsrFieldsRegExre_textre_regexUTCRangeur_lour_hiIntRangeir_loir_hiFilterFtrStrgFtrIntgFtrUTC SpecNewtypesnTypesnFilterSpec SpNewtypeSpRecordSpUnionSpEnum SpSynonymPrefix MDComment FieldName _FieldNameTypeName _TypeNameAPINodeanName anCommentanPrefixanSpec anConvertThing ThCommentThNodeAPI inIntRange inUTCRangemkRegExdefaultValueAsJsValuebase64ToBinary$fArbitraryText$fLiftLiftedRepTypeName$fLiftLiftedRepFieldName$fNFDataIntRange$fLiftLiftedRepUTCRange$fNFDataUTCRange$fLiftLiftedRepRegEx $fShowRegEx $fEqRegEx$fFromJSONRegEx $fToJSONRegEx $fNFDataRegEx$fNFDataFilter$fNFDataSpecEnum$fNFDataBasicType$fNFDataAPIType$fIsStringAPIType$fNFDataSpecUnion$fNFDataSpecNewtype$fLiftLiftedRepDefaultValue$fNFDataDefaultValue$fNFDataFieldType$fNFDataSpecRecord $fNFDataSpec$fLiftLiftedRepAPINode$fNFDataAPINode $fNFDataThing$fArbitraryBinary$fFromJSONBinary$fToJSONBinary $fShowBinary $fEqBinary $fOrdBinary$fNFDataBinary$fSerialiseBinary $fEqThing$fLiftLiftedRepThing $fShowThing $fEqAPINode $fShowAPINode$fEqSpec$fLiftLiftedRepSpec $fShowSpec$fEqSpecRecord$fLiftLiftedRepSpecRecord$fShowSpecRecord $fEqFieldType$fLiftLiftedRepFieldType$fShowFieldType$fEqDefaultValue$fShowDefaultValue$fEqSpecNewtype$fLiftLiftedRepSpecNewtype$fShowSpecNewtype $fEqSpecUnion$fLiftLiftedRepSpecUnion$fShowSpecUnion $fEqAPIType$fLiftLiftedRepAPIType $fShowAPIType $fEqBasicType$fLiftLiftedRepBasicType$fShowBasicType $fEqSpecEnum$fLiftLiftedRepSpecEnum$fShowSpecEnum $fEqFilter$fLiftLiftedRepFilter $fShowFilter $fEqUTCRange$fShowUTCRange $fEqIntRange$fLiftLiftedRepIntRange$fShowIntRange $fEqFieldName$fOrdFieldName$fShowFieldName$fNFDataFieldName$fIsStringFieldName $fEqTypeName $fOrdTypeName$fShowTypeName$fNFDataTypeName$fIsStringTypeName$fSafeCopyBinary$fFromJSONThing $fToJSONThing$fFromJSONAPINode$fToJSONAPINode$fFromJSONSpec $fToJSONSpec$fFromJSONAPIType$fToJSONAPIType$fFromJSONBasicType$fToJSONBasicType$fFromJSONUTCRange$fToJSONUTCRange$fFromJSONIntRange$fToJSONIntRange$fFromJSONFilter$fToJSONFilter$fFromJSONSpecNewtype$fToJSONSpecNewtype$fFromJSONFieldType$fToJSONFieldType$fFromJSONSpecRecord$fToJSONSpecRecord$fFromJSONSpecUnion$fToJSONSpecUnion$fFromJSONSpecEnum$fToJSONSpecEnum$fFromJSONDefaultValue$fToJSONDefaultValue$fFromJSONFieldName$fToJSONFieldName$fFromJSONTypeName$fToJSONTypeName $fFromJSONCI $fToJSONCI APINodeToolAPIToolToolrunTool ToolSettingswarnOnOmittedInstancenewtypeSmartConstructorsdefaultToolSettings simpleToolmkTool contramapToolreadToolsubTools apiNodeToolapiDataTypeTool apiSpecTool $fMonoidTool$fSemigroupTool applicativeEoptionalInstanceDfunSigDsimpleD simpleSigD mkNameText fieldNameE fieldNameVarE typeNameEPPLinesppLinesPPpp inFrontOfindent$fPPDefaultValue $fPPBasicType $fPPAPIType $fPPFieldName $fPPTypeName$fPPText$fPPSet $fPPVersion$fPP[] $fPPLines(,) $fPPLines[]$fPPLinesValue NormEnumType NormUnionTypeNormRecordType NormTypeDecl NRecordType NUnionType NEnumType NTypeSynonymNNewtypeNormAPI apiNormalFormdeclNFtypeDeclsFreeVarstypeDeclFreeVars typeFreeVarstypeDeclaredInApi typeUsedInApitypeUsedInTransitiveDeptransitiveDepstransitiveReverseDeps typeIsValid declIsValid apiInvariant substTypeDecl substTyperenameTypeUses$fPPLinesNormTypeDecl$fNFDataNormTypeDecl$fEqNormTypeDecl$fShowNormTypeDeclMarkdownMethodsMDMmdmSummaryPostfixmdmLinkmdmPpmdmFieldDefaultdefaultMarkdownMethodsmarkdownthing lookupKey listToObject objectToListmatchSingletonObjectsingletonObject insertKey deleteKey objectToMap mapToObjecttraverseObjectWithKeyfieldNameToKey textToKeykeyToFieldName keyToText adjustObject encodeJSON decodeJSON cborToJson jsonToCbor$fSerialiseValueDocInfodoc_info_call_urldoc_info_type_urlBody EmptyBodyJSONBody OtherBodySample sample_status sample_typesample_responseViewview_id view_typeview_doc view_paramsParam param_name param_expl param_desc param_typeparam_requiredHeader header_name header_expl header_desc header_typeheader_requiredCallcall_http_method call_pathcall_descriptioncall_auth_required call_headers call_body call_params call_views call_samples StatusCode HTTPMethodURLrenderBodyType renderAPITypemk_linkAPITableChange APIChange ValidateData UpdateTypePos UpdateList UpdateMaybe UpdateNamed UpdateDeclPos UpdateHere UpdateRecord UpdateUnion UpdateType VersionExtraRelease DevVersion MigrationTag ChAddType ChDeleteType ChRenameType ChAddField ChDeleteField ChRenameField ChChangeField ChAddUnionAltChDeleteUnionAltChRenameUnionAlt ChAddEnumValChDeleteEnumValChRenameEnumVal ChCustomType ChCustomAll APIChangelog ChangesUpTo ChangesStartAPIWithChangelogshowVersionExtra$fPPLinesAPIChange$fPPVersionExtra$fPPLinesAPITableChange$fEqAPITableChange$fShowAPITableChange$fEqUpdateDeclPos$fShowUpdateDeclPos$fEqUpdateTypePos$fShowUpdateTypePos$fEqAPIChangelog$fShowAPIChangelog$fEqVersionExtra$fOrdVersionExtra$fShowVersionExtra $fEqAPIChange$fShowAPIChangeMigrateWarningMigrateFailureValidateFailure ValueErrorTypeKindTKRecordTKUnionTKEnum TKNewtype TKTypeSynonym ApplyFailure TypeExistsTypeDoesNotExist TypeWrongKind TypeInUse TypeMalformed DeclMalformed FieldExistsFieldDoesNotExistFieldBadDefaultValueDefaultMissingTableChangeErrorafExistingType afMissingType afTypeNameafExpectedKindafTypeafMissingTypesafDecl afTypeKindafExistingFieldafMissingField afFieldName afFieldType afBadDefaultafCustomMessageValidateWarningChangelogOutOfOrderCannotDowngrade ApiInvalidChangelogEntryInvalidChangelogIncompletevfLaterVersionvfEarlierVersion vfFromVersion vfToVersionvfInvalidVersionvfMissingDeclarationsvfSuccessfullyAppliedvfFailedToApplyvfApplyFailurevfChangelogVersionvfTargetVersion vfDifferences JSONErrorCustomMigrationError InvalidAPIStepInFieldInElemPositionFormatExpected FmtBinaryFmtUTCFmtOtherExpectedExpArrayExpBoolExpInt ExpObject ExpString JSONWarning BadFormat MissingField MissingAltUnexpectedFieldUnexpectedEnumVal IntRangeError UTCRangeError RegexError SyntaxError expectedArray expectedBool expectedIntexpectedObjectexpectedString badFormatprettyJSONErrorinField prettyStepprettyJSONErrorPositionsprettyMigrateFailureprettyValidateFailureprettyValueErrorprettyValueErrorPosition $fPPLinesStep $fPPTypeKind$fPPLinesApplyFailure$fPPLinesValidateFailure$fPPLinesValueError$fPPLinesMigrateFailure$fEqMigrateFailure$fShowMigrateFailure$fEqValueError$fShowValueError$fEqValidateFailure$fShowValidateFailure$fEqApplyFailure$fShowApplyFailure $fEqTypeKind$fShowTypeKind$fShowValidateWarning$fEqStep $fShowStep $fEqJSONError$fShowJSONError$fEqFormatExpected$fShowFormatExpected $fEqExpected$fShowExpected$fFromJSONExpected$fToJSONExpected$fFromJSONFormatExpected$fToJSONFormatExpected$fFromJSONStep $fToJSONStep$fFromJSONJSONError$fToJSONJSONError$fSafeCopyStep datatypesTooldatatypesTool'defaultDerivedClassestype_nm rep_type_nmnodeTnodeRepTnodeConEnodeNewtypeConE nodeFieldE nodeFieldP nodeAltConE nodeAltConPnewtypeProjectionE traversalTool safeCopyToolquickCheckToollensToolbinaryExampleexample samplesTool exampleTool$fExampleUTCTime$fExampleValue$fExampleBinary $fExampleText $fExampleBool $fExampleInt $fExample[]$fExampleMaybeenumTool text_enum_nm map_enum_nm deepSeqToolcborToolFromJSONWithErrsparseJSONWithErrs ParseFlags useDefaultsenforceReadOnlyFieldsenforceFiltersParserWithErrsdefaultParseFlagsrunParserWithErrsTopfromJSONWithErrsfromJSONWithErrs'fromJSONWithErrs''decodeWithErrsdecodeWithErrs'parseJSONDefaultwithParseFlagsfailWithwithInt withIntRange withBinarywithBoolwithText withRegExwithUTC withUTCRange withVersion withFieldwithDefaultField.:..:: withUnion$fMonadFailParserWithErrs$fMonadParserWithErrs$fAlternativeParserWithErrs$fApplicativeParserWithErrs$fFromJSONWithErrsVersion$fFromJSONWithErrsUTCTime$fFromJSONWithErrsText$fFromJSONWithErrsBinary$fFromJSONWithErrsBool$fFromJSONWithErrsInteger$fFromJSONWithErrsInt$fFromJSONWithErrs[]$fFromJSONWithErrsMaybe$fFromJSONWithErrs()$fFromJSONWithErrsValue$fFunctorParserWithErrsField fieldName fieldValueRecordValueStringUTCTimeBytesBoolIntListMaybeUnionEnumJSONfromDefaultValuefromJSON parseJSONencodedecodematchesNormAPI expectRecord expectEnum expectUnion expectList expectMaybe lookupType arbitraryarbitraryOfTypearbitraryJSONValueprop_jsonRoundTripprop_jsonGenericprop_cborRoundTripprop_cborGeneric recordToMap mapToRecord insertField deleteField renameField findField joinRecords $fToJSONValue $fNFDataField $fNFDataValue $fEqField $fShowField $fEqValue $fShowValuejsonTool jsonTool'toJsonNodeToolfromJsonNodeToolfromJsonWithErrsNodeTool DataChecksNoChecksCheckStartAndEnd CheckCustomCheckAllCustomMigrationsdatabaseMigrationdatabaseMigrationSchema typeMigrationtypeMigrationSchemafieldMigrationmigrateDataDumpmigrateDataDump'mkRecordMigrationmkRecordMigration'mkRecordMigrationSchema noDataChangesnoSchemaChangeschangelogStartVersionchangelogVersionvalidateChangesdataMatchesAPIgenerateMigrationKinds$fEqDataChecks$fOrdDataChecksparseAPIparseAPIWithChangelogapiapiWithChangelogapiAPIserialiseJSONWithSchemajsonToCBORWithSchemadeserialiseJSONWithSchemapostprocessJSON jsonTestsTool cborTestsToolcborToJSONTestsTooljsonToCBORTestsTooljsonGenericValueTestsToolcborGenericValueTestsToolprop_decodesToprop_decodesTo'prop_resultsMatchRoundtripprop_cborRoundtripprop_cborToJSONprop_jsonToCBORgenerate generateWithgenerateAPIToolsgenerateAPIToolsWithDV_listDV_maybe DV_string DV_boolean DV_integerDV_utc BT_string BT_binary BT_boolean BT_integerBT_utcTypeRef_TypeRefTY_listTY_maybeTY_refTY_basicTY_json_fd_name_fd_type _fd_readonly _fd_default _fd_comment _cv_injection_cv_projection_ur_lo_ur_hi_ir_lo_ir_hiRegularExpression_RegularExpression FT_string FT_integerFT_utc_sn_type _sn_filter SP_newtype SP_recordSP_unionSP_enum SP_synonym_an_name _an_comment _an_prefix_an_spec _an_convertAPISpec$fOrdBasicType$fBoundedBasicType$fEnumBasicType$fIsStringTypeRef $fShowTypeRef $fEqTypeRef $fOrdTypeRef$fShowConversion$fEqConversion$fIsStringRegularExpression$fShowRegularExpression$fEqRegularExpression$fOrdRegularExpression_text_BasicType_map_BasicType an_comment an_convertan_name an_prefixan_spec sn_filtersn_typeregularExpression cv_injection cv_projection fd_comment fd_defaultfd_name fd_readonlyfd_typetypeRef apiAPISamplesapiAPITestsJSONapiAPITestsCBORapiAPITestsCBORToJSONapiAPITestsJSONToCBOR$fExampleDefaultValue$fExampleBasicType$fExampleTypeRef$fExampleAPIType$fExampleField$fExampleConversion$fExampleUTCRange$fExampleIntRange$fExampleRegularExpression$fExampleFilter$fExampleSpecNewtype $fExampleSpec$fExampleAPINode$fSafeCopyDefaultValue$fSafeCopyBasicType$fSafeCopyTypeRef$fSafeCopyAPIType$fSafeCopyField$fSafeCopyConversion$fSafeCopyUTCRange$fSafeCopyIntRange$fSafeCopyRegularExpression$fSafeCopyFilter$fSafeCopySpecNewtype$fSafeCopySpec$fSafeCopyAPINode$fArbitraryDefaultValue$fArbitraryBasicType$fArbitraryTypeRef$fArbitraryAPIType$fArbitraryField$fArbitraryConversion$fArbitraryUTCRange$fArbitraryIntRange$fArbitraryRegularExpression$fArbitraryFilter$fArbitrarySpecNewtype$fArbitrarySpec$fArbitraryAPINode$fNFDataTypeRef$fNFDataConversion$fNFDataRegularExpression$fSerialiseDefaultValue$fSerialiseBasicType$fSerialiseTypeRef$fSerialiseAPIType$fSerialiseField$fSerialiseConversion$fSerialiseUTCRange$fSerialiseIntRange$fSerialiseRegularExpression$fSerialiseFilter$fSerialiseSpecNewtype$fSerialiseSpec$fSerialiseAPINode$fFromJSONWithErrsDefaultValue$fFromJSONWithErrsBasicType$fFromJSONWithErrsTypeRef$fFromJSONTypeRef$fToJSONTypeRef$fFromJSONWithErrsAPIType$fFromJSONWithErrsField$fFromJSONField $fToJSONField$fFromJSONWithErrsConversion$fFromJSONConversion$fToJSONConversion$fFromJSONWithErrsUTCRange$fFromJSONWithErrsIntRange#$fFromJSONWithErrsRegularExpression$fFromJSONRegularExpression$fToJSONRegularExpression$fFromJSONWithErrsFilter$fFromJSONWithErrsSpecNewtype$fFromJSONWithErrsSpec$fFromJSONWithErrsAPINodeDictsubstprepmkDictextDictdirHtmlcallHtml extractAPI convertAPI unconvertAPI$fFromJSONWithErrsThing Strictness TyVarBndr'mkDataD mkInstanceD mkNewtypeD annIsStrict annNotStrict time-1.9.3 Data.Time.Clock.Internal.UTCTimeData.Time.Calendar.DaysDaymkRegexmkRegexWithOpts matchRegex matchRegexAllghc-prim GHC.TypesTrue GHC.MaybeJustNothing(regex-tdfa-1.3.1.2-7Bn0fIBYox6eysx2eYURgText.Regex.TDFA.CommonRegexData.Aeson.Types.InternalData.Aeson.Types.ToJSONtoJSONData.Aeson.Types.FromJSONGHC.BaseMonoidTokenJson AlternativeIntegerVersionSemiDefaultChangesUTCToBarBInaryBraKetColColColonCommaEqualsLtEqGtEqBooleanQueryWithBasicAddedRemovedRenamedChanged MigrationNOTHINGTRUEFALSEReadonlyUTCTIMECommentTypeIdenVarIdenIntgStrgERRORPTokenAlexPosnAlexPnkeywordsscan GHC.ClassesOrd Data.Version(safecopy-0.10.4.2-KxPXoGebW51ArRKDoZT8IzData.SafeCopy.SafeCopySafeCopy(QuickCheck-2.14.2-6xAinBYgndE7qB1JvE1ApfTest.QuickCheck.Arbitrary Arbitrarydeepseq-1.4.4.0Control.DeepSeqNFData(serialise-0.2.5.0-1mOJytO2NL717SGzLWldUdCodec.Serialise.Class Serialise'attoparsec-0.14.4-QyBw7gkzdUFfPTP2Q6Nag#Data.Attoparsec.ByteString.InternalParserMonad Applicativecontainers-0.6.2.1Data.Map.InternalMapNullToJSONFromJSONHappyStkTest.QuickCheck.PropertyProperty