-z      !"#$%&'()*+, - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s tuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                   !!!!!!!!!!!!!!!!!"""" " " " " """################ #!#"##$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I%J%K%L&M&N&O&P&Q&R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'2(portablealphaDavid Fox <dsf@seereason.com>z{|}~z~}|{{|}~)portablealphaDavid Fox <dsf@seereason.com>9List the packages bundled with this version of the given ? compiler. If the answer is not known, return the empty list. =Determine whether a specific version of a Haskell package is B bundled with into this particular version of the given compiler. 7Some dependencies are libraries, some are executables. *  EWe have to do this wackiness because ~ is less than the empty string :Convert a string to a debian version number. May throw an D 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? ASplit 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. +,-CWe implement two types of version number tags. One has the format  r 5releasenumber>vendor<buildnumber>~release<buildnumber  the other simply  vendor buildnumber>~release<buildnumber E There are notes from a meeting that explains why ReleaseTagBuild is 1 more future friendly, but it is also more ugly. BParse a Debian revision string (the portion of the version number ; following the final dash) into a prefix and a VersionTag. The tag returned by splitTag  The prefix returned by splitTag CModify a version number by adding or changing the vendor tag. The ? result will be newer than the distVersion (the newest already @ uploaded version.) It will also be different from (though not < necessarily newer than) any of the elements of allVersions Format a tag as a string. @Append a vendor tag to a string containing the revision portion  of a debian version number. @Change the revision part of a Debian version number. (This may  belong in Debian.Version.)      4If the URI type could be read and showed this wouldn't be necessary. 2!!. parse a debian relation (i.e. the value of a : Depends field). Return a parsec error or a value of type  & (;Check if a version number satisfies a version requirement.  !"#$%&'('&%$"# !( !!"##$%&'( !"#$%&'()*'%$&"#() !*)*. !"#$%&'()'%$&"#() !/ !"#$%&'()'%$&"#() !+++ ,+Print a message without forcing the command' s output -+Print a message without forcing the command' s output .Print stdout to stdout /Print stderr to stderr 07Print all the output to the appropriate output channel 1>Print one dot to stderr for every COUNT characters of output. ,-./01,-./01,-./01 ;'Not sure if this is a useful approach. C4Echo the process arguments and then run the process EGPerform a task, print the elapsed time it took, and return the result. FKRun a command and return its result along with the amount of time it took. L>Run a task and return the elapsed time along with its result. &123456789:;<=>?@ABCDEFGHIJKLMNOPQR"BC1DNPOQR;<=>?@A9:2345678GHIJKLMFE!23456783456789::;<=>?@A<=>?@ABCDEFGHIJKLMNOPQR TT  filepath is a simple wrapper function  that parses filepath using pControl UU   sourceName handle -  sourceName" is only used for error reporting VparseControlFromString  sourceName text -  sourceName" is only used for error reporting WW  fieldName paragraph looks up a \  in a ^ .  N.B.$ trailing and leading whitespace is not stripped. X?Strip 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. Z@NOTE: we do not strip the leading or trailing whitespace in the  name or value i6Move selected fields to the beginning of a paragraph. j6Run a command and parse its output as a control file. k'look up the md5sum file in a paragraph % Tries several different variations:  MD5Sum:  Md5Sum:  MD5sum: STUVWXYZ[\]^_`abcdefghijk_`a]^Z\[STUVWXYbcdefghijkSTUVWXYTUVWXYZ\[[\]^^_`a`abcdefghijk lmnopnoplmlmmnop 01, applied to a predicate p and a ByteString xs, 0 returns the longest prefix (possibly empty) of xs of elements that  satisfy p. findIndexOrEnd4 is a variant of findIndex, that returns the length < of the string if no element is found, rather than Nothing. The 01" function takes a predicate and a  ByteString and : returns the index of the first element in the ByteString  satisfying the predicate. STUVWXYZ[\]^_`abcdefghiqrs_`a]^Z\[srqSTUVWXYbcdefghiqrs~The sources.list #The directory you might chroot to. .The sources.list without the local repository The build architecture 1Return the all source packages in this AptCache. FReturn the all binary packages for the architecture of this AptCache. Name of release The  type adds to the  type the control . information obtained from the package index. The 3 type fully identifies a package by name, version,  and a  which identifies the package' s release,  component and architecture. ;The PackageIndex type represents a file containing control = information about debian packages, either source or binary. > Though the control information for a binary package does not ; specify an architecture, the architecture here is that of : the environment where the package information is cached. >This is a name given to a combination of parts of one or more 8 releases that can be specified by a sources.list file. $Parse the value that appears in the Section field of a .changes file. # (Does this need to be unesacped?)  A package'9s subsection is only evident in its control information, C packages from different subsections all reside in the same index. ;A section of a repository such as main, contrib, non-free, > restricted. The indexes for a section are located below the  distribution directory. AThe types of architecture that a package can have, either Source & or some type of binary architecture. CA distribution (aka release) name. This type is expected to refer D to a subdirectory of the dists directory which is at the top level  of a repository. >This is an old type which is still used to interface with the  Debian.Relation module. 5This method returns a list of all the release in the < repository. This can be used to identify all of the files ) in the repository that are not garbage. ;The possible file arrangements for a repository. An empty : repository does not yet have either of these attributes. @The Repository type reprents any instance of the Repo class, so  it might be local or remote. 5data Repository = forall a. (Repo a) => Repository a #A directory inside of an OS image. #The root directory of an OS image. /The name of the file which holds the repository's compatibility  level. =The compatibility level of this library and any applications C which use it. It is an error if we try to use a repository whose A compatibility level is higher than this, a newer version of the A library must be used. This value was increased from 1 to 2 due ) to a new version number tagging policy. tuvwxyz{|}~}~tuvwxyz{|tuvwxyz{|uvwxyz{|}~~ 1This represents the state of the IO system. The 23 flag keeps B track of whether we are at the beginning of line on the console. D This is computed in terms of what we have sent to the console, but C it should be remembered that the order that stdout and stderr are D sent to the console may not be the same as the order in which they B show up there. However, this appears to server our purposes for  now. (Map to look up known Repository objects %Map to look up known Release objects )Map to look up prepared AptImage objects ?A new monad to support the IO requirements of the autobuilder. D This uses the RWS monad. The reader monad is used to store a flag A indicating whether this is a dry run, and the style information G associated with each output handle, including indentation, prefixing, @ and replacing the output with one dot per n output characters. B The state monad stores information used to implement the current G output style and includes state information about whether the console D is at the beginning of a line, per-handle state information, and a 4 cache of the repositories that have been verified. :mark an action that should be run in the regular IO monad ;mark an action that should be run in the terminal IO monad -Perform an AptIO monad task in the IO monad. ?Implementation of try for the AptIO monad. If the task throws 2 an exception the initial state will be restored. KThe initial output state - at the beginning of the line, no special handle ; state information, no repositories in the repository map. +Perform a list of tasks with log messages.                    <quoteWords - 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: ABreak 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. !(parseSourceLine -- parses a source line L the argument must be a non-empty, valid source line with comments stripped  see:   !"#!"#  !"#(DA parser for debian control file. This parser handles control files D that end without a newline as well as ones that have several blank D lines at the end. It is very liberal and does not attempt validate E the fields in any way. All trailing, leading, and folded whitespace ' is preserved in the field values. See X. AWe are liberal in that we allow *any* field to have folded white A space, even though the specific restricts that to a few fields. We go with the assumption that ' blank lines' mean lines that < consist of entirely of zero or more whitespace characters. STUVWXYZ[\]^_`abcdefghi$%&'(_`a]^Z\[&%'$STUVWXY(bcdefghi$%&'()@Create or update the compatibility level file for a repository. *>Return the subdirectory where a source package with the given = section and name would be installed given the layout of the  repository. +?Remove all the packages from the repository and then re-create  the empty releases. ,BCreate or verify the existance of the directories which will hold H a repository on the local machine. Verify the index files for each of  its existing releases. 1Try to determine a repository' s layout. )*+,-./01 )*+,-./01 )*+,-./012,A changelog is a series of ChangeLogEntries ;6An entry in the list of files generated by the build. BAA file generated by dpkg-buildpackage describing the result of a  package build D>The full pathname of the directory holding the .changes file. E4The package name parsed from the .changes file name F6The version number parsed from the .changes file name G,The Distribution field of the .changes file H4The architecture parsed from the .changes file name I"The contents of the .changes file J4The value of the Changes field of the .changes file K(The parsed value of the Files attribute MDShow just the top line of a changelog entry (for debugging output.) N;Parse a Debian Changelog and return a lazy list of entries OLParse a single changelog entry, returning the entry and the remaining text. P>Parse the changelog information that shows up in the .changes 1 file, i.e. a changelog entry with no signature. ZDReturn the subdirectory in the pool where a source package would be  installed. [+Move a build result into a local repository's incoming directory. *23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[*NOPMQXYRSTUWVZ[BCDEFGHIJKL;<=>?@A23456789:*23456789:3456789:;<=>?@A<=>?@AB CDEFGHIJKCDEFGHIJKLMNOPQRSTUVWXYZ[^"Find or create a (local) release.  Make sure an index file exists. Write out the Release files that describe a . b'Find all the releases in a repository. \]^_`ab\]^b`_a\]^_`abcDThe file produced by dupload when a package upload attempt is made. eBThis is a remote repository which we have queried to find out the ? names, sections, and supported architectures of its releases. 1data VerifiedRepo = VerifiedRepo URI [ReleaseInfo] -This is a repository whose structure we haven' t examined ( to determine what release it contains. )data UnverifiedRepo = UnverifiedRepo URI @Prepare a repository, which may be remote or local depending on  the URI. 1Get the list of releases of a remote repository. fBMake sure we can access the upload uri without typing a password. g@Upload all the packages in a local repository to a the incoming 3 directory of a remote repository (using dupload.)  Parse the  Revision:$ value describing the origin of the  package'7s source and the dependency versions used to build it:  Revision:  revisionstring dep1=ver1 dep2=ver2 ... ;Run dupload on a changes file with an optional host (--to)  argument. cdefghijcdejihfgcddefghijkkk!STUVWXYZ[\]^_`abcdefghi$%&'(l_`a]^Z\[&%'$STUVWXY(bcdefghill sESpecifies build dependencies that should be ignored during the build I decision. If the pair is (BINARY, Nothing) it means the binary package I BINARY should always be ignored when deciding whether to build. If the J pair is (BINARY, Just SOURCE) it means that binary package BINARY should < be ignored when deiciding whether to build package SOURCE. u@This type describes the build dependencies of a source package. zVReturn 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   Rhttp://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles {,Remove any dependencies that are designated "relaxed" by relaxInfo. |>Given an ordering function representing the dependencies on a D list of packages, return a triple: One ready package, the packages B that depend on the ready package directly or indirectly, and all  the other packages. Remove any packages which can',t be built given that a package has failed. @Given a list of packages, sort them according to their apparant 3 build dependencies so that the first element doesn't depend on any  of the other packages. =Build a graph with the list of packages as its nodes and the " build dependencies as its edges. }BThis is a nice start. It ignores circular build depends and takes ! a pretty simplistic approach to 01 build depends. However, I 3 think this should work pretty nicely in practice. 8Return the dependency info for a list of control files. @One example of how to tie the below functions together. In this  case fp5 is the path to a directory that contains a bunch of C checked out source packages. The code will automatically look for  fp/*/debian/4control. It returns a list with the packages in the  order they should be built. mnopqrstuvwxyz{|}uxyvwzst{mpnqro|}mpnqronopqrsttuvwwxyyz{|}9Each element is an or-list of specific package versions. CA SimpleRelation just specifies a particular version of a package. , The Nothing relation is always satisified. BTurn the expressive inequality style relations to a set of simple @ equality relations on only the packages in the available list. AReplace all relations by sets of equality relations on the exact > package versions which are actually available in the current 0 environment and satisfy the original relation. >Given a root and a dependency list, return a list of possible > solutions to the dependency set. Each solution is a list of D package versions which satisfy all the dependencies. Note that if C a package is mentioned in two different clauses of the dependency ' list, both clauses must be satisfied:  a (>= 3.0), a ( < 4.0) | b (>= 2.0), c (= 1.0) becomes  a (>= 3.0), a ( 1< 4.0), c (>= 1.0) OR a (>= 3.0), b (>= 2.0), c (= 1.0)  [[a (>= 3.0)], [a ( < 4.0), b (>= 2.0)], [c (= 1.0)]] becomes  [[a (>= 3.0), a ( 1< 4.0), c (>= 1.0)], [a (>= 3.0), b (>= 2.0), c (= 1.0)]] =So we can use each clause to eliminate packages which cannot  satisfy the dependency set. BThe alternative argument is a possible solution to the dependency E problem. Each element of alternative represents the relations on a @ particular package. So each one needs to be satisfied for the  alternative to be satisfied. AReturn the list of versions of a package that satisfy all of the  relations. ~~~CExamine the repository whose root is at the given URI and return a D set of sources that includes all of its releases. This is used to . ensure that a package we want to upload doesn't already exist in  the repository. :Return the list of releases in a repository, which is the ; list of directories in the dists subdirectory. Currently < this is only known to work with Apache. Note that some of + the returned directories may be symlinks. ACreate ReleaseCache info from an entry in the config file, which > includes a dist name and the lines of the sources.list file.  This also creates the basic    :A directory which will hold all the cached files for this  NamedSliceList. 2The path where a text of the SliceList is stored. AA directory holding all files downloaded by apt-get source for a  certain package 7Return all the named source packages sorted by version @Return a list of the index files that contain the packages of a  slice. HReturn the paths in the local cache of the index files of a slice list. JReturn the paths in the local cache of the index files of a single slice. >Return the list of files that apt-get update would write into  /var/lib/apt/5lists when it processed the given list of DebSource. >Change the sources.list of an AptCache object, subject to the  value of sourcesChangedAction. IReturn a sorted list of available source packages, newest version first. G creates a map from a package name to all the versions of that package , NOTE: Provides are not included in the map 9 NOTE: the sort order is random -- this is perhaps a bug  see also:  5 finds packages that Provide other packages and adds A them to the PackageNameMap. They will be adde to the end of the " list, so that real packages have 'higher priority' than virtual  packages. 6 NOTE: Does not check for duplication or multiple use  > returns all the packages that satisfy the specified relation  TODO: Add architecture check -withMethod - run |methodPath| bracketed with  openMethod/'closeMethod. |f| gets the open handle. EwhichMethodBinary - find the method executable associated with a URI  throws an exception on failure )fetch a single item, show console output  see also: getLastModified =@;  3function-type for a function that downloads a file A The timestamp is optional. If the local file is as new or newer 4 than the remote copy, the download may be skipped. 9A good choice might be a partially parameterized call to   BPackage indexes on the server are uncompressed or compressed with F gzip or bzip2. We do not know what will exist on the server until we D actually look. This type is used to mark the compression status of  what was actually found. #update - similar to apt-get update  #download possibly compressed files < NOTE: index uri must not include the .bz2 or .gz extension  :examine a DebSource line, and calculate for each section: + - the URI to the uncompressed index file > - the basename that apt-get would name the downloaded index : FIXME: ExactPath dist will fail with error at runtime :(   return a tuple for the section + - the URI to the uncompressed index file < - the basename that apt-get uses for the downloaded index , FIXME: support for Release and Release.gpg (Parse a possibly compressed index file. )parse an index possibly compressed file  3A release file contains a list of indexes (Packages/Sources). Each E Package or Source index may appear multiple times because it may be A compressed several different ways. This function will return an B assoc list where the key is the name of the uncompressed package C index name and the value is the list of (file, compression) which  decompress to the key.  =The release file contains the checksums for the uncompressed C package indexes, even if the uncompressed package indexes are not D stored on the server. This function returns the list of files that  actually exist. 4make a FileTuple for a file found on the local disk  returns 04 if the file does not exist. Dfind the Contents-* files. These are not listed in the Release file ! >Return the name and version number of the source package that " generated this binary package. >Return the name and version number of the source package that  generated this binary package.  see also: !  Parse the Source field of a binary package' s control ? information, this may specify a version number for the source = package if it differs from the version number of the binary  package. $Get the contents of a package index $Get the contents of a package index $Get the contents of a package index &Return a list of all source packages. JReturn a list of all the binary packages for all supported architectures. .Write a set of packages into a package index. " >Find the .changes files in the incoming directory and try to  process each. 8Install several packages into a repository. This means 6 1. getting the list of files from the .changes file, " 2. verifying the file checksums, C 3. deleting any existing version and perhaps other versions which $ were listed in the delete list, 1 4. updating the Packages and Sources files, and ? 5. moving the files from the incoming directory to the proper  place in the package pool. @Add control information to several package indexes, making sure 2 that that no duplicate package ids are inserted.  ;Delete any packages from a dist which are trumped by newer E packages. These packages are not garbage because they can still be = installed by explicitly giving their version number to apt. AReturn a list of packages in a release which are trumped by some  newer version. BCollect files that no longer appear in any package index and move @ them to the removed directory. The .changes files are treated  specially: they don'-t appear in any index files, but the package 4 they belong to can be constructed from their name. 6Return a list of all the files in a release which are  live5, in the sense that they appear in some index files. <Although the PackageID type could refer to source or binary B packages, we only export the function to remove source packages. @ This is in order to avoid leaving around references to removed & binary packages in the source index.                 # @This type represents an OS image located at osRoot built from a ; particular osBaseDistro using a particular osArch. If an D osLocalRepo argument is given, that repository will be copied into > the environment and kept in sync, and lines will be added to  sources.list to point to it. 3The associated local repository, where packages we 0 build inside this image are first uploaded to. 5A copy of osLocalRepo which is inside the changeroot %, osLocalRepoCopy :: Maybe LocalRepo 4 | Update and return a copy of the local repository ! which is inside the changeroot. CThe sources.list is the list associated with the distro name, plus : the local sources where we deposit newly built packages. ?Change the root directory of a repository. FIXME: This should 1 also sync the repository to ensure consistency. =Create or update an OS image in which packages can be built. Prepare a minimal /dev directory @Try to update an existing build environment: run apt-get update  and dist-upgrade. To neuter4 an executable is to replace it with a hard link to  /bin/=true in such a way that the operation can be reversed. This C is done in order to make it safe to install files into it when it  isn't live2. If this operation fails it is assumed that the % image is damaged, so it is removed. !Reverse the neuterEnv operation.  ABuild the dependency relations for the build essential packages. C For this to work the build-essential package must be installed in  the OSImage. !@Remove an image. The removeRecursiveSafely function is used to E ensure that any file systems mounted inside the image are unmounted  instead of destroyed. "BUse rsync to synchronize the pool of locally built packages from F outside the build environment to the location inside the environment - where apt can see and install the packages.  !""!   !"$#BThere are three possible results of a build: an upload consisting B of only the architecture independent debs (Indep), one including B both indep and binary debs (All), or with a failed build (None). 'AA Debian source tree plus a parent directory, which is where the 6 binary and source deb packages appear after a build. ,AA Debian source tree, which has a debian subdirectory containing * at least a control file and a changelog. 1&Any directory containing source code. 4AA debian source tree plus a parent directory, which is where the 6 binary and source deb packages appear after a build. 6AA Debian source tree, which has a debian subdirectory containing * at least a control file and a changelog. :&Any directory containing source code. <AFind the .changes file which is generated by a successful run of  dpkg-buildpackage. =+Rewrite the changelog with an added entry. ?(Run dpkg-buildpackage in a source tree. @-Make a copy of a source tree in a directory. E=Find a DebianBuildTree inside a directory. It finds all the B DebianSourceTrees, and if they all have the same package name it D returns the newest one according to the version numbers. If there D are none, or there are trees with different package names, Nothing  is returned. F7Find the DebianBuildTree in a particular subdirectory. G1Find all the debian source trees in a directory. H1Find all the debian source trees in a directory. HConstruct the directory name that dpkg-buildpackage expects to find the " source code in for this package:  packagename>-<upstreamversion. AFind the .changes file which is generated by a successful run of  dpkg-buildpackage. &#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH&:;678945123,-./0'()*+<#&%$?C@DAGFHBE>=&#&%$$%&'()*+()*+,-./0-./0123234556789789:;;<=>?@ABCDEFGH%8Create a skeletal enviroment sufficient to run apt-get. JARun apt-get update and then retrieve all the packages referenced > by the sources.list. The source packages are sorted so that A packages with the same name are together with the newest first. K'Retrieve a source package via apt-get. IJKIJKIJK5qtuvwxyz{|}~      !"#)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK6portablealphaDavid Fox <dsf@seereason.com>.Each cabal package corresponds to a directory  name>-<version,  either in usr lib or in usrlibhaskell-packagesghc6/lib. A In that directory is a compiler subdirectory such as ghc-6.8.2. A In the ghc subdirectory is one or two library files of the form  libHS *name>-<version>.a and libHS<name>-<version_p.a. We can @ determine the debian package names by running dpkg -S on these  names, or examining the varlibdpkginfo/*.list files. From ? these we can determine the source package name, and from that ! the documentation package name. 5Write a file which we might still be reading from in % order to compute the text argument. ;Given a path, return the name of the package that owns it. Debian packages don'.t have per binary package build dependencies, % so we just gather them all up here. cartesianProduct [[1,2,3], [4,5],[6]] -> [[1,4,6],[1,5,6],[2,4,6],[2,5,6],[3,4,6],[3,5,6]] CConvert from license to RPM-friendly description. The strings are 6 taken from TagsCheck.py in the rpmlint distribution. 7portablealphaDavid Fox <dsf@seereason.com>  &LKcreate a map of (package name, extracted field) from a list of index files BNOTE: we could merge all the files into a single control and then D run packageMap over that. We currently do it one control file at a @ time to avoid having all the control files loaded in memory at A once. However, I am not sure that property is actually occuring ' anyway. So, this should be revisited. MGcreate a map of (package name, max version) from a single control file N4extract the version number from a control paragraph Obcompare two sources.list and find all the packages in the second that trump packages in the first  see also: |trumpedMap| P#calculate all the trumped packages Qcreate  trumped /- XML element and children from a trumped Map LMNOPQLMNOPQLMNOPQ'SFconflicting packages and relations that require non-existant packages a!TODO addProvides -- see DQL.Exec fJAS: deal with Provides0 (can a package provide more than one package?) r/earliestInconsistency does what it sounds like  the ' reverse as'3 is because the vars are order high to low, but we B want to find the lowest numbered (aka, eariest) inconsistency ?? wbj - backjumping labeler =If the node already has a conflict set, then leave it alone. BOtherwise, the conflictset for the node is the combination of the &conflict sets of its direct children. +RSTUVWXYZ[\]^_`abc!"#defghijklmnopqrstuvwxy(\_^][`TUVWXYZabcdefghijklmnopqrSstRuvwxy(RSTUVWXYZUVWXYZ[\_^]]^_`abcdefghijklmnopqrstuvwxy$*89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc d e f g h i j j k l m n o p p q r s t u v w x y z { | } ~                   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghijklmno0pqrstuvwxyz{|}~                   !!! ! ! ! ! !!!!!!!!!!""""""""" "!""###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5$6$7$8$9$:$:$;$<$=$>$>$?$@$A$B$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X%Y%Z%[&\&]&^&_&`&a'b'c'd'd'e'f'g'h''i''j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''((((((((((((((((((((((((((())))*********8q     0  01230          04""""###$$%66 6!6"6#6$6%7&'''(')* debian-3.21Debian.Version.Common Text.FormatDebian.VersionPolicy Debian.URI Debian.TimeDebian.Relation.CommonDebian.Relation.StringDebian.Extra.FilesDebian.Extra.CIO Debian.ShellDebian.Control.CommonDebian.Control.PrettyPrintDebian.Control.ByteStringDebian.Repo.TypesDebian.Repo.IODebian.Repo.PackageIndexDebian.Repo.SourcesListDebian.Control.StringDebian.Repo.LocalRepositoryDebian.Repo.ChangesDebian.Repo.ReleaseDebian.Repo.Repository Debian.DebDebian.ControlDebian.GenBuildDepsDebian.Repo.DependenciesDebian.Repo.SliceDebian.Repo.CacheDebian.Util.FakeChangesDebian.Apt.PackageDebian.Apt.MethodsDebian.Apt.IndexDebian.Repo.PackageDebian.Repo.InsertDebian.Repo.OSImageDebian.Repo.SourceTreeDebian.Repo.AptImage Debian.ReportDebian.Apt.Dependencies!Distribution.Package.Debian.Setup#Distribution.Package.Debian.BundledDebian.Version.InternalDebian.Version.StringDebian.Version.ByteStringDebian.VersionDebian.Relation.ByteStringDebian.Relationbase Data.List Extra-1.30 Extra.CIO Data.Maybe Debian.RepoDistribution.Package.Debian Distribution.Package.Debian.Main DebianVersionFormatformatParseDebianVersionparseDebianVersionparseDVevrbuildDebianVersion VersionTagparseTaggetTagdropTagsetTagtagMax appendTag URIString fileFromURI dirFromURIrfc822DateFormatepochTimeToUTCTimeformatTimeRFC822parseTimeRFC822getCurrentLocalRFC822Time VersionReqSGRGREEEQLTESLTArchitectureReq ArchExceptArchOnlyParseRelationsparseRelationsRelationRel OrRelation AndRelation RelationsPkgNamecheckVersionReq RelParser pRelationswithTemporaryFiletMessagevMessage printStdout printStderr printOutput dotOutputFullTask taskQuietness taskCommand taskIntroMsg taskFailMsg taskFinishMsg SimpleTask ShellTaskcommandinput quietnessintroMsgfailMsg finishMsg echoCommand echoProcessvOutput showElapsed timeCommandsetStart setFinishsetErrorrunTaskrunTaskAndTesttimeTasktimeTaskAndTest runCommandrunCommandTimedrunCommandQuietlyrunCommandQuietlyTimed runCommandMsgControlFunctionsparseControlFromFileparseControlFromHandle parseControllookupPstripWSasStringField'CommentField Paragraph' ParagraphControl'Control unControl mergeControls fieldValue removeField prependFields appendFields renameField modifyField raiseFieldsparseControlFromCmd md5sumFieldToTexttotext ppControl ppParagraphppFieldAptImageaptGlobalCacheDir aptImageRoot aptImageArchaptImageSliceListaptImageReleaseNameaptImageSourcePackagesaptImageBinaryPackages AptBuildCache aptSliceListAptCacheglobalCacheDirrootDiraptBaseSliceListaptArchaptSourcePackagesaptBinaryPackagesaptReleaseNameSourcePackageLocalBinaryPackageLocalPackageIDLocalSourceFileSpecsourceFileMD5sumsourceFileSizesourceFileName SourcePackagesourcePackageIDsourceParagraphsourceDirectorysourcePackageFiles BinaryPackage packageID packageInfopDepends pPreDepends pConflicts pReplaces pProvides PackageID packageIndex packageNamepackageVersionPackageIndexLocal PackageIndexpackageIndexReleasepackageIndexComponentpackageIndexArchNamedSliceList sliceList sliceListName SliceListslicesSlice sliceRepo sliceSource SliceName sliceName DebSource sourceType sourceUri sourceDist SourceTypeDebSrcDebRelease releaseRepo releaseInfo SubSectionsectionsubSectionNameSectionArchBinarySource ReleaseInforeleaseInfoNamereleaseInfoAliasesreleaseInfoArchitecturesreleaseInfoComponents ReleaseNamerelName PkgVersiongetName getVersionPackageVersionpkgName pkgVersionReporepoURIrepositoryCompatibilityLevelrepoReleaseInfocheckCompatibilityLayoutPoolFlatLocalRepositoryrepoRoot repoLayoutrepoReleaseInfoLocal RepositoryUnverifiedRepo VerifiedRepo LocalRepoEnvPathenvRootenvPathEnvRootrootPath outsidePath appendPath rootEnvPathcompatibilityFilelibraryCompatibilityLevelparseReleaseName releaseName'archName sectionName sectionName'sectionNameOfSubSection releaseNamereleaseComponentsreleaseArchitecturesIOStateAptIOTiotiorunAptIOtryAB setRepoMap getRepoMaplookupRepositoryinsertRepositorylookupAptImageinsertAptImagelookupSourcePackagesinsertSourcePackageslookupBinaryPackagesinsertBinaryPackagesreadParagraphs findRelease putRelease countTaskspackageIndexNamepackageIndexPathpackageIndexDirpackageIndexPathListpackageIndexDirListpackageIndexListsourceIndexListbinaryIndexListshowIndexBriefdebSourceFromIndex quoteWordsparseSourceLineparseSourceLine'parseSourcesList ControlParserpControlsetRepositoryCompatibilitypoolDirflushLocalRepositoryprepareLocalRepository readLocalRepoparseReleaseFile parseReleasemakeReleaseInfo computeLayoutChangeLogEntryEntry logPackage logVersionlogDists logUrgency logCommentslogWhologDateChangedFileSpecchangedFileMD5sumchangedFileSizechangedFileSectionchangedFilePrioritychangedFileName ChangesFileChanges changeDir changePackage changeVersion changeRelease changeArch changeInfo changeEntry changeFileschangesFileName showHeaderparseLog parseEntry parseChangesfindChangesFilessavekeymatchKeynamepathparseChangesFilenameparseChangesFilepoolDir' uploadLocal lookupRelease insertReleaseprepareRelease signReleases signRelease mergeReleases findReleases UploadFileUploadprepareRepositoryverifyUploadURI uploadRemoteshowPkgVersionreadPkgVersion repoArchListfields packParagraph BuildableInfo CycleInfodepPairs readyTriples allBlocked RelaxInfoDepInfo BinPkgName SrcPkgNamebuildDependencies relaxDeps buildable compareSourcetestArchsimplifyRelations solutions sourceSlices binarySlicesinexactPathSlices releaseSlicesappendSliceLists repoSourcesparseNamedSliceListparseNamedSliceList'verifySourcesListverifySourceLineSourcesChangedAction RemoveRelease UpdateSourcesSourcesChangedError cacheDistDir cacheRootDirdistDiraptDircacheSourcesPath sourcesPath sourceDiraptSourcePackagesSorted sliceIndexes aptCacheFilesaptCacheFilesOfSlice archFilesbuildArchOfEnvbuildArchOfRootupdateCacheSourcessourcePackagesbinaryPackages fakeChangesPackageNameMappackageNameMap addProvides findProvideslookupPackageByRelFetchCallbackslogCBstatusCB uriStartCB uriDoneCB uriFailureCBgeneralFailureCBauthorizationRequiredCBmediaFailureCBdebugCB ConfigItemHeaderCommand MediaChangedAuthorizationCredentials Configuration URIAcquireStatus MediaFailureAuthorizationRequiredGeneralFailure URIFailuremessageURIDonefilenamehashesimsHitURIStarturisize lastModified resumePointLogMsg CapabilitiesversionsingleInstancepreScanpipeline sendConfig needsCleanup localOnlyDriveMediaPasswordUserSiteMessage withMethodURIwithMethodPathwhichMethodPath recvStatus sendCommand openMethod closeMethod simpleFetchfetchgetLastModified FileTupleSizeFetcher CheckSumsmd5sumsha1sha256 Compression UncompressedGZBZ2updatecontrolFromIndexcontrolFromIndex' findIndexesindexesInReleasetupleFromFilePathfindContentsFilessourceFilePathsbinaryPackageSourceVersionbinarySourceVersionsourcePackageBinaryNamessourceBinaryNamestoSourcePackagetoBinaryPackagebinaryPackageSourceIDsourcePackageBinaryIDs getPackagesbinaryPackagesOfIndexsourcePackagesOfIndexsourcePackagesOfIndex'binaryPackagesOfIndex'releaseSourcePackagesreleaseBinaryPackages putPackages InstallResultRejectedFailedOk showErrorsresultToProblems explainError scanIncoming deleteTrumped deleteGarbagedeleteSourcePackagesOSImageOSosGlobalCacheDirosRoot osBaseDistro osReleaseNameosArchosLocalRepoMasterosSourcePackagesosBinaryPackages prepareEnv updateEnv chrootEnvsyncEnv neuterEnv restoreEnvbuildEssential removeEnvsyncPoolSourcePackageStatusNoneIndepAllDebianBuildTreetopdir'subdir'debTree'DebianSourceTreetree'control'entry' SourceTreedir'DebianBuildTreeCsubdirDebianSourceTreeCdebdircontrolentry SourceTreeCtopdir findChanges addLogEntryexplainSourcePackageStatus buildDebscopySourceTreecopyDebianSourceTreecopyDebianBuildTreefindSourceTreefindDebianSourceTreefindOneDebianBuildTreefindDebianBuildTreefindDebianSourceTreesfindDebianBuildTrees prepareAptEnv updateAptEnv aptGetSourcemakePackageMap packageMapextractVersiontrumped trumpedMap trumpedXMLLabeler ConflictSetCSPpnm relations depFunction conflictsStateComplete MissingDep Remainingcomplete controlCSPtestCSPdepFpackageVersionParagraphconflict conflict'mkTreelabelinitTreemapTreefoldTree zipTreesWithpruneleavesinhTree distrTree mkSearchTreeearliestInconsistency isConflictsearchbtbjunionCScombine DebActionUpdateDebianizationSubstVar DebianizeUsageDebTypeDocProfDevFlags rpmPrefix rpmCompilerrpmConfigurationsFlags rpmHaddockrpmHelp debLibProfrpmNamerpmOptimisation rpmRelease rpmSplitObjs debOutputDir rpmVerbosity rpmVersion debMaintainer debAction parseArgs bundledWith isBundled isLibrary docPrefixFound SimulatedunFoundNumeric NonNumericcompareNonNumericshowNNepochrevisionshowTag setRevisiontagCmpbumpTagnewTagcompareSourceAndDist network-2.2.1 Network.URIURIAuth uriUserInfo uriRegNameuriPortURI uriScheme uriAuthorityuriPathuriQuery uriFragmentnullURIparseURIparseURIReferenceparseRelativeReferenceparseAbsoluteURIisURIisURIReferenceisRelativeReference isAbsoluteURI isIPv6address isIPv4address isReserved isUnreserved uriToStringisAllowedInURIisUnescapedInURI escapeURICharescapeURIStringunEscapeStringnonStrictRelativeTo relativeTo relativeFrom normalizeCasenormalizeEscapenormalizePathSegmentsparseabsoluteURI escapeStringreserved unreservedscheme authorityqueryfragment uriToString'myTimeDiffToString commandTask processTask showCommand _takeWhile2GHC.List takeWhilefindIndex2OrEnd _findIndex2 findIndex parseSection parseSection'bolrepoMap releaseMap aptImageMap initState releaseDir sourceLinespFieldpBlanks isSymLink ensureIndex writeReleasegetReleaseInfoRemote parseRevisionduploadinvalidRevision packField formatControlformatParagraph formatField failPackage orderSource buildGraphorgenDepsgetSourceOrderSimpleRelationsSimpleRelation expandVirtualtestAlternative testPackage uriSubdirsemptyFetchCallbackscliFetchCallbacks fetchIndex indexURIscalcPath groupIndexes filterExistsNothinginstallPackagesaddPackagesToIndexes findTrumpedfindLive osFullDistrorepoCD prepareDevsdebDirfindBuildChangesprepareAptEnv' substvars replaceFile debOfFiledebianDependenciescartesianProduct showLicensedebianmain sidPackages gutsyPackagestest