h$_dPB      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh i j k l m n o p q r s t u v w x y z { | } ~                                           !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""############################################$' Safe-Inferred 3 \   Safe-Inferred //debian*The function we want to pass a FilePath todebian%The text that the file should containdebianThe function's return value//None2 T0101None 5>?`2debianThis type is wrapped around values before we pretty print them so we can write our own Pretty instances for common types without polluting the name space of clients of this package with instances they don't want.23456782345678None >?# >debian> filepath+ is a simple wrapper function that parses filepath using pControl?debian?  sourceName handle -  sourceName! is only used for error reporting@debianparseControlFromString  sourceName text -  sourceName! is only used for error reportingAdebianA fieldName paragraph looks up a F in a I. N.B.$ trailing and leading whitespace is not stripped.BdebianStrip the trailing and leading space and tab characters from a string. Folded whitespace is not unfolded. This should probably be moved to someplace more general purpose.CdebianProtect field value text so the parser doesn't split it into multiple fields or paragraphs. This must modify all field text to enforce two conditions: (1) All lines other than the initial one must begin with a space or a tab, and (2) the trailing white space must not contain newlines. This is called before pretty printing to prevent the parser from misinterpreting field text as multiple fields or paragraphs.EdebianNOTE: we do not strip the leading or trailing whitespace in the name or valueGdebianLines beginning with #MdebianThis can usually be used as the implementation of protectFieldTextUdebian5Move selected fields to the beginning of a paragraph.Vdebian5Run a command and parse its output as a control file.Wdebianlook up the md5sum file in a paragraph Tries several different variations: MD5Sum: Md5Sum: MD5sum:ZdebianThis may have bad performance issues (dsf: Whoever wrote this comment should have explained why.)=BA>?@DCEFGHIJKLMNOPQRSTUVWJKLHIEFG=BA>?@DCNOPQRSTUVWMNonevgg None>ldebianA parser for debian control file. This parser handles control files that end without a newline as well as ones that have several blank lines at the end. It is very liberal and does not attempt validate the fields in any way. All trailing, leading, and folded whitespace is preserved in the field values. See B.=BA>?@DCEFGHIJKNOPQRSTUhijklJKHIEFGjikh=BA>?@DClNOPQRSTU None?I=BA>?@DCEFGHIJKLNOPQRSTUnopJKLHIEFGpon=BA>?@DCNOPQRSTU None >;zdebianparseFromFile p filePath runs a string parser p on the input read from filePath using . Returns either a  ParseError () or a value of type a ().  main = do{ result <- parseFromFile numbers "digits.txt" ; case result of Left err -> print err Right xs -> print (sum xs) }=BA>?@DCEFGHIJKLNOPQRSTUxyz{|}JKLHIEFGyxz=BA>?@DCNOPQRSTU{|} None >4debianparseFromFile p filePath runs a string parser p on the input read from filePath using . Returns either a  ParseError () or a value of type a ().  main = do{ result <- parseFromFile numbers "digits.txt" ; case result of Left err -> print err Right xs -> print (sum xs) }=BA>?@DCEFGHIJKLNOPQRSTUJKLHIEFG=BA>?@DCNOPQRSTU None >7debianparseFromFile p filePath runs a string parser p on the input read from filePath using . Returns either a  ParseError () or a value of type a ().  main = do{ result <- parseFromFile numbers "digits.txt" ; case result of Left err -> print err Right xs -> print (sum xs) }=BA>?@DCEFGHIJKLNOPQRSTUJKLHIEFG=BA>?@DCNOPQRSTU Safe-Inferred3WdebianA package's subsection is only evident in its control information, packages from different subsections all reside in the same index.debianA section of a repository such as main, contrib, non-free, restricted. The indexes for a section are located below the distribution directory.debian$Parse the value that appears in the Section= field of a .changes file. (Does this need to be unesacped?)  None>None3 Safe-Inferred None #$23?"debianA wrapper around a String containing a known parsable URI. Not absolutely safe, because you could say read "URI' "bogus string"" :: URI'. But enough to save me from myself.debianparseURI with MonadErrordebianConservative appending of absolute and relative URIs. There may be other cases that can be implemented, lets see if they turn up.debian3Append a list of URI @@ > appendURIs (parseURI " http://host.com") (parseURIRelative "/bar")debianUsing the bogus Show instance of URI here. If it ever gets fixed this will stop working. Worth noting that show will obscure any password info embedded in the URI, so that's nice./  /  None%debianwithMethod - run |methodPath| bracketed with openMethod/closeMethod. |f| gets the open handle.debianwhichMethodBinary - find the method executable associated with a URI throws an exception on failuredebianfetch a single item, show console output see also: getLastModifieddebianset of callbacks which do nothing. suitable for non-interactive usage. In the case authorization is required, no credentials will be supplied and the download should abort.== Safe-Inferred&None&None >)debianquoteWords - similar to words, but with special handling of double-quotes and brackets.The handling double quotes and [] is supposed to match: apt-0.6.44.2/apt-pkg/contrib/strutl.cc:ParseQuoteWord() The behaviour can be defined as:Break the string into space seperated words ignoring spaces that appear between "" or []. Strip trailing and leading white space around words. Strip out double quotes, but leave the square brackets intact.debianparseSourceLine -- parses a source line the argument must be a non-empty, valid source line with comments stripped see: &&% Safe-Inferred3?*@ None>,;debianConvert a string to a debian version number. May throw an exception if the string is unparsable -- but I am not sure if that can currently happen. Are there any invalid version strings? Perhaps ones with underscore, or something?debianSplit a DebianVersion into its three components: epoch, version, revision. It is not safe to use the parsed version number for this because you will lose information, such as leading zeros.  None,None>,&None,  None 3>?/4debian parse a debian relation (i.e. the value of a Depends field). Return a parsec error or a value of type debianThis needs to be indented for use in a control file: intercalate "n " . lines . showdebian:Check if a version number satisfies a version requirement.debianThe sort order is based on version number first, then on the kind of relation, sorting in the order , <= , ==, >= ,debianWrap 2 around type synonyms that might overlap with the `Pretty [a]` instance.None>/None07None0'None1$$None#$3>?4debianErrors that control files might throw, with source file name and line number generated by template haskell.debian=Class of things that contain a validated Debian control file.debianOpaque (constructor not exported) type to hold a validated Debian Control FiledebianValidate and return a control file in an opaque wrapper. May throw a ControlFileError. Currently we only verify that it has a Source field in the first paragraph and one or more subsequent paragraphs each with a Package field, and no syntax errors in the build dependencies (though they may be absent.)debianThis could access fields we haven't validated, so it can return an error. Additionally, the field might be absent, in which case it returns Nothing.None 5L<=BA>?@DCEFGHIJKLNOPQRSTUhijkl?@DClNOPQRSTUNone36#None ??debian6Some target whose build dependencies are all satisfieddebian1The targets that are waiting for the ready targetdebian-The rest of the targets that need to be builtdebianGiven a source package name and a binary package name, return False if the binary package should be ignored hwen deciding whether to build the source package. This is used to prevent build dependency cycles from triggering unnecessary rebuilds. (This is a replacement for the RelaxInfo type, which we temporarily rename OldRelaxInfo.)debian?This type describes the build dependencies of a source package.debiansource package namedebiandependency relationsdebian:binary dependency names (is this a function of relations?)debian>Set containing all binary package names mentioned in relationsdebianSet containing binaryNamesdebianReturn the dependency info for a source package with the given dependency relaxation. |According to debian policy, only the first paragraph in debian/control can be a source package http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfilesdebiansource package namedebiandependency relationsdebian:binary dependency names (is this a function of relations?)debianRemove any dependencies that are designated "relaxed" by relaxInfo.debianGiven an ordering function representing the dependencies on a list of packages, return a ReadyTarget triple: One ready package, the packages that depend on the ready package directly or indirectly, and all the other packages.debianRemove any packages which can't be built given that a package has failed.debianGiven a list of packages, sort them according to their apparant build dependencies so that the first element doesn't depend on any of the other packages.debianThis is a nice start. It ignores circular build depends and takes a pretty simplistic approach to  build depends. However, I think this should work pretty nicely in practice.debian7Return the dependency info for a list of control files.debianOne example of how to tie the below functions together. In this case fp is the path to a directory that contains a bunch of checked out source packages. The code will automatically look for debian/control. It returns a list with the packages in the order they should be built. None 3?Ddebianfunction-type for a function that downloads a file The timestamp is optional. If the local file is as new or newer than the remote copy, the download may be skipped.:A good choice might be a partially parameterized call to debianPackage indexes on the server are uncompressed or compressed with gzip or bzip2. We do not know what will exist on the server until we actually look. This type is used to mark the compression status of what was actually found.debian"update - similar to apt-get updatedebian'Parse a possibly compressed index file.debian'parse an index possibly compressed filedebian=make a FileTuple for a file found on the local disk returns  if the file does not exist.debianfind the Contents-* files. These are not listed in the Release filedebian*function that will do actually downloadingdebian6download indexes to the directory (must already exist)debianbinary architecturedebian sources.listdebian,(basename of index file, compression status)debianA release filedebian!None>Idebian+A changelog is a series of ChangeLogEntriesdebian"The parser here never returns thisdebian5An entry in the list of files generated by the build.debianA file generated by dpkg-buildpackage describing the result of a package builddebian=The full pathname of the directory holding the .changes file.debian3The package name parsed from the .changes file namedebian5The version number parsed from the .changes file namedebian+The Distribution field of the .changes filedebian3The architecture parsed from the .changes file namedebian!The contents of the .changes filedebian3The value of the Changes field of the .changes filedebian'The parsed value of the Files attributedebianParse the entries of a debian changelog and verify they are all valid.debian:Parse a Debian Changelog and return a lazy list of entriesdebianParse a single changelog entry, returning the entry and the remaining text.debianParse the changelog information that shows up in the .changes file, i.e. a changelog entry with no signature.$$"NoneLdebian creates a map from a package name to all the versions of that package NOTE: Provides are not included in the map NOTE: the sort order is random -- this is perhaps a bug see also: debian finds packages that Provide other packages and adds them to the PackageNameMap. They will be adde to the end of the list, so that real packages have 'higher priority' than virtual packages. NOTE: Does not check for duplication or multiple usedebiandebian returns all the packages that satisfy the specified relation TODO: Add architecture check#NoneOmdebianconflicting packages and relations that require non-existant packagesdebian TODO addProvides -- see DQL.ExecdebianJAS: deal with Provides/ (can a package provide more than one package?)debianearliestInconsistency does what it sounds like the 'reverse as' is because the vars are order high to low, but we want to find the lowest numbered (aka, eariest) inconsistency ??debianbj - backjumping labeler?@ABCDDEFFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~  r t o   o r t        r t o     r t o     r t o    b%bbcd                            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!b!c!d!!!!!!!!!!!!!!"""""############################################$%%%%%%%%%#debian-4.0.3-4liqPTGBPZT8IUCe6jy1EU Debian.Pretty Debian.URI Debian.TH Debian.ArchDebian.Extra.Files Debian.LocDebian.Control.Common Debian.DebDebian.Control.StringDebian.Control.ByteStringDebian.Control.TextLazyDebian.Control.TextDebian.Control.BuilderDebian.ReleaseDebian.Codename Debian.TimeDebian.Apt.Methods Debian.UTF8Debian.VendorURIDebian.SourcesDebian.Version.CommonDebian.Version.ByteStringDebian.Version.StringDebian.Relation.CommonDebian.Relation.StringDebian.Relation.TextDebian.Relation.ByteStringDebian.Control.PolicyDebian.ControlDebian.Util.FakeChangesDebian.GenBuildDepsDebian.Apt.IndexDebian.ChangesDebian.Apt.PackageDebian.Apt.DependenciesDebian.Version.TextDebian.Version.InternalDebian.VersionDebian.Relation Cabal-3.2.0.0Distribution.Pretty prettyShow)network-uri-2.6.4.1-CPMd97RJlY6KjyFAGAX80 Network.URI uriToStringparseAbsoluteURIparseRelativeReferenceparseURIReferenceparseURInullURI uriFragmenturiQueryuriPath uriAuthority uriSchemeURIuriPort uriRegName uriUserInfoURIAuthtemplate-haskellLanguage.Haskell.TH.SyntaxLocArchSourceAllBinaryArchCPU ArchCPUAnyArchOS ArchOSAny prettyArch parseArch$fEqArch $fOrdArch $fReadArch $fShowArch $fDataArch $fEqArchCPU $fOrdArchCPU $fReadArchCPU $fShowArchCPU $fDataArchCPU $fEqArchOS $fOrdArchOS $fReadArchOS $fShowArchOS $fDataArchOSwithTemporaryFile__LOC__mapExnPPunPP prettyTextppPrintppShowppText $fPrettyPP $fPrettyPP0 $fPrettyPP1 $fFunctorPPControlFunctionsparseControlFromFileparseControlFromHandle parseControllookupPstripWSprotectFieldTextasStringField'FieldComment Paragraph' ParagraphControl'Control unControlprotectFieldText' mergeControls fieldValue removeField prependFields appendFields renameField modifyField raiseFieldsparseControlFromCmd md5sumField$fPrettyField'$fPrettyParagraph'$fPrettyControl' $fEqControl' $fOrdControl'$fReadControl'$fShowControl'$fEqParagraph'$fOrdParagraph'$fReadParagraph'$fShowParagraph' $fEqField' $fOrdField' $fReadField' $fShowField'fields ControlParserpControl$fControlFunctions[]$fControlFunctionsByteString$fMonadPlusParser $fMonadParser$fAlternativeParser$fApplicativeParser$fFunctorParser $fShowResult decodeControldecodeParagraph decodeField$fControlFunctionsText$fControlFunctionsBuilder SubSectionsectionsubSectionNameSection sectionName sectionName'sectionNameOfSubSection parseSection parseSection'$fReadSubSection$fShowSubSection$fEqSubSection$fOrdSubSection $fReadSection $fShowSection $fEqSection $fOrdSectionhere $fPretty[] $fPrettyLocCodename parseCodenamecodename$fPrettyCodename $fEqCodename $fOrdCodename$fReadCodename$fShowCodename$fDataCodenamerfc822DateFormat'epochTimeToUTCTimeformatTimeRFC822parseTimeRFC822getCurrentLocalRFC822Time HasURIError fromURIError HasParseErrorfromParseErrorURI'URIError URIParseErrorURIAppendErroruriAuthorityLensuriFragmentLens uriPathLens uriQueryLens uriSchemeLensshowURI parseURI'parseURIReference'parseAbsoluteURI'parseRelativeReference'parseURIUnsafe appendURI appendURIs parentURIprop_append_singletonprop_print_parsereadURI'fromURI'toURI' uriToString'$fOrdParseError$fArbitraryURI$fHasParseErrorParseError$fHasURIErrorURIError $fReadURI' $fShowURI'$fEqURI' $fOrdURI' $fEqURIError $fOrdURIError$fShowURIErrorFetchCallbackslogCBstatusCB uriStartCB uriDoneCB uriFailureCBgeneralFailureCBauthorizationRequiredCBmediaFailureCBdebugCB ConfigItemHeaderCommand URIAcquire ConfigurationAuthorizationCredentials MediaChangedStatus CapabilitiesLogMsgURIStartURIDone URIFailureGeneralFailureAuthorizationRequired MediaFailureversionsingleInstancepreScanpipeline sendConfig needsCleanup localOnlyurisize lastModified resumePointfilenamehashesimsHitmessageDriveMediaPasswordUserSiteMessage withMethodURIwithMethodPathwhichMethodPath recvStatus sendCommand openMethod closeMethod simpleFetchfetchemptyFetchCallbackscliFetchCallbacksgetLastModified $fShowCommand $fEqCommand $fShowStatus $fEqStatus $fShowHashes $fEqHashesdecodereadFile VendorURI _vendorURI$fShowVendorURI $fEqVendorURI$fOrdVendorURI vendorURIparseVendorURI DebSource _sourceType_sourceOptions _sourceUri _sourceDistSourceOpOpSetOpAddOpDel SourceOption SourceTypeDebDebSrc quoteWords stripLine sourceLinesparseSourceLine parseOptionspOptionspOptionpOpparseSourceLine'parseSourcesListtestQuoteWordstestSourcesListtestSourcesList2validSourcesListStrvalidSourcesListvalidSourcesListExpected_invalidSourcesListStr1testSourcesListParsesourcesListTests$fPrettySourceType$fPrettySourceOp$fPrettySourceOption$fPrettyDebSource $fEqDebSource$fOrdDebSource$fShowDebSource$fEqSourceOption$fOrdSourceOption$fShowSourceOption $fEqSourceOp $fOrdSourceOp$fShowSourceOp$fEqSourceType$fOrdSourceType$fShowSourceType sourceDist sourceOptions sourceType sourceUri DebianVersionParseDebianVersionparseDebianVersionprettyDebianVersionparseDebianVersion'parseDVevrepochrevisionbuildDebianVersion $fOrdNumeric $fEqNumeric$fOrdNonNumeric$fEqNonNumeric$fShowDebianVersion$fOrdDebianVersion$fEqDebianVersion$fParseDebianVersionByteString$fReadDebianVersion$fParseDebianVersion[] VersionReqSLTLTEEEQGRESGRArchitectureReqArchOnly ArchExceptParseRelationsparseRelationsPkgNamepkgNameFromString BinPkgName unBinPkgName SrcPkgName unSrcPkgNameRelationRel OrRelation AndRelation RelationsprettyRelationsprettyOrRelationprettyRelationprettyArchitectureReqprettyVersionReqcheckVersionReq$fPkgNameSrcPkgName$fPkgNameBinPkgName $fPrettyPP2$fOrdVersionReq $fPrettyPP3 $fOrdRelation $fPrettyPP4 $fPrettyPP5 $fEqRelation$fReadRelation$fShowRelation$fEqVersionReq$fReadVersionReq$fShowVersionReq$fEqArchitectureReq$fOrdArchitectureReq$fReadArchitectureReq$fShowArchitectureReq$fReadBinPkgName$fShowBinPkgName$fEqBinPkgName$fOrdBinPkgName$fDataBinPkgName$fReadSrcPkgName$fShowSrcPkgName$fEqSrcPkgName$fOrdSrcPkgName$fDataSrcPkgName RelParser pRelations$fParseRelations[]$fParseRelationsText$fParseRelationsByteStringControlFileError NoParagraphsNoBinaryParagraphs MissingFieldParseRelationsErrorParseControlErrorIOErrorlocsctlfield parseErrorioErrorHasDebianControl debianControl DebianControlunDebianControlvalidateDebianControlunsafeDebianControlparseDebianControlparseDebianControlFromFiledebianPackageParagraphsdebianSourceParagraphdebianBinaryParagraphsdebianPackageNamesdebianSourcePackageNamedebianBinaryPackageNamesdebianBuildDepsIndepdebianBuildDepsdebianRelations$fShowDebianControl$fHasDebianControlDebianControl$fHasControlDebianControl$fHasControlControl'$fEqControlFileError$fExceptionControlFileError$fShowControlFileError packParagraph packField formatControlformatParagraph formatField fakeChanges $fReadError $fShowError $fEqError $fDataError BuildableInfo CycleInfo readyTargets allBlockeddepPairs ReadyTargetreadywaitingother RelaxInfoDepInfo sourceName relations binaryNamesdepSetbinSetbuildDependencies sourceName' relations' binaryNames' relaxDeps buildable failPackage orderSource compareSourcegenDepsgetSourceOrder $fEqDepInfo$fShowOldRelaxInfo $fShowDepInfo FileTupleSizeFetcher CheckSumsmd5sumsha1sha256 CompressionBZ2GZ UncompressedupdatecontrolFromIndexcontrolFromIndex' findIndexesindexesInReleasetupleFromFilePathfindContentsFiles$fReadCheckSums$fShowCheckSums $fEqCheckSums$fReadCompression$fShowCompression$fEqCompression$fOrdCompression$fEnumCompression$fBoundedCompression ChangeLogChangeLogEntryEntry WhiteSpace logPackage logVersionlogDists logUrgency logCommentslogWhologDateChangedFileSpecchangedFileMD5sumchangedFileSHA1sumchangedFileSHA256sumchangedFileSizechangedFileSectionchangedFilePrioritychangedFileName ChangesFileChanges changeDir changePackage changeVersion changeRelease changeArch changeInfo changeEntry changeFileschangesFileNameparseChangeLog parseEntries parseEntry parseChanges $fEqChangeLog$fReadChangeLog$fShowChangeLog$fEqChangesFile$fReadChangesFile$fShowChangesFile$fEqChangeLogEntry$fReadChangeLogEntry$fShowChangeLogEntry$fEqChangedFileSpec$fReadChangedFileSpec$fShowChangedFileSpecPackageNameMappackageNameMap addProvides findProvideslookupPackageByRelLabeler ConflictSetCSPpnm depFunction conflictspackageVersionState Remaining MissingDepCompletecomplete controlCSPtestCSPdepF sidPackages gutsyPackagestestpackageVersionParagraphconflict conflict'mkTreelabelinitTreemapTreefoldTree zipTreesWithpruneleavesinhTree distrTree mkSearchTreeearliestInconsistency isConflict solutionssearchbtbjunionCScombine$fParseDebianVersionTextbase System.IO Data.EitherLeftRightFound SimulatedunFoundNumeric NonNumeric Data.Foldableor GHC.MaybeNothing