! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < =>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferredstart the IO thread. 9issue a request to the IO thread and get back the result , if the thread function throws an exception  will rethrow the exception. 'the IO function that does all the work ra ThreadId which can be used to kill the IOThread, and a handle that can be used to issue requests to the thread. handle to the IOThread )argument to the function in the IOThread /value returned by the function in the IOThread Noneportable experimentaljeremy@n-heptane.comNone-turns the quickcheck test into an hunit test )Use this if you want to provide a custom Config instead of   defaultConfig. @an instance of Test.HUnit.Testable for Test.QuickCheck.Property !Note: I did not add an instance: ,instance (QC.Testable a) => (HU.Testable a) BBecause it results in undeciable instances. For example, there is  an instance of * for QC.Testable and HU.Testable already. quickcheck config quickcheck property None,Create a relative URI with the given query. DSet the port number in the URI authority, creating it if necessary. Return the pairs in a URI's query  Modify a URI',s query by applying a function to the pairs 6Turn a list of attribute value pairs into a uriQuery. CEscape a value so it can safely appear on the RHS of an element of E the URI query. The isUnreserved predicate is the set of characters # that can appear in a URI which don't have any special meaning.  Everything else gets escaped.  8   None+Modify an individual URI query attributes. (Replace a query attribute with Nothing. *Replace a query attribute with something. ,Copy an attribute from one query to another None Safe-Inferred"Set up access to destination (user@host). 6Make sure there is a public key for the local account 6See if we already have access to the destination (user@host). ?Try to set up the keys so we have access to the account. I don't & think we use this any more, and I don't think you should either. -Copy the ssh configuration from $HOME to the /root directory of a  changeroot. None<Parse the text returned when a directory is listed by a web < server. This is currently only known to work with Apache. 2 NOTE: there is a second copy of this function in = debian:Debian.URI. Please update both locations if you make  changes.   Safe-InferredALike withLock, but instead of giving up immediately, try n times  with a wait between each. TawaitLock :: (MonadIO m) => Int -> Int -> FilePath -> m a -> m (Either Exception a)   Safe-Inferred  Safe-Inferred /The mighty consperse function - e.g. consperse , [a, b] -> a,b  consperse = MissingH.List.join 0surround each element of a list - e.g. surround ( ) [a, b] -> [(a)(b)] 3Replace the prefix of s, return Nothing if it doesn' t match. 0Remove a prefix of s, return nothing if it doesn' t match. !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]] "FIXME: implement for a string #.Like maybe, but with empty vs. non-empty list $CSort a list using the compare function on the list elements mapped  over f. This is like $sortBy ( a b -> compare (f a) (f b)) ; except that f is applied O(n) times instead of O(n log n) % Monadic version of sortByMapped  !"#$%&'(  !"#$%&'(  !"#$%&'(  !"#$%&'( None *BPad strings so the columns line up. The argument and return value E elements are the rows of a table. Do not pad the rightmost column. +,Group words into lines of length n or less. ,dirname -3Turn a list of (k, a) pairs into a map from k -> [a] . The order of the elements in  the a list is preserved. /,Weak attempt at canonicalizing a file path. 0@Run md5sum on a file and return the resulting checksum as text. 16Predicate to decide if two files have the same inode. 2=Predicate to decide if two files have the same md5 checksum. 35A version of read with a more helpful error message. 57Given a tarball, return the name of the top directory. )*+,-./0123456)*+,-./0123456*+),/-.4012563)*+,-./0123456 None789:;<6789:;<:798;<6798:;<None =BReturn the list of subdirectories, omitting . and .. and ignoring  symbolic links. >AAtomically install a list of files. Returns a list of what went E wrong on failure. Will throw an error if it fails and is unable to 6 restore the original files to their original states. ? Change a file'!s name only if the new name doesn' t exist. @ Change a file'6s name, removing any existing file with the new name.  Change a file's name if it exists. ADelete a file if it exists :Create or update gzipped and bzip2-ed versions of a file. B9like removeLink, but does not fail if link did not exist CCWrite out three versions of a file, regular, gzipped, and bzip2ed. DCWrite out three versions of a file, regular, gzipped, and bzip2ed. H This new version assumes the files are written to temporary locations, , so any existing file there can be removed. F2Like writeFile, but if the file already exists don' t touch it. " Example: writeFileIfMissing True "/var/lib/dpkg/status" "" G>Write a file if its content is different from the given text. HAdd-on for System.Posix.Files =>?@ABCDEFGHIJ=>?@ABCDEFGHIJ=@?A>CDEFGHIBJ=>?@ABCDEFGHIJ Safe-InferredK.render a Doc using the current terminal width KKKK Safe-InferredL6exitFailure with nicely formatted help text on stderr L>generate help text, the argument is the result of getProgName =no value is returned, this function always calls exitFailure LLL Safe-InferredO/Turn a list of eithers into an either of lists MNOPQMNOPQMNOPQMNOPQ Safe-Inferred-R?A record used to hold the output style information for a task. C This The prefixes that will appear at the beginning of each line, E and the desired verbosity level. Suggested verbosity level policy: C -1: No output of any kind, as if you were directing all output to devnull L 0: Error output only, suitable for a run whose log you might examine later I 1: casual progress reporting - if you were running on a console but didn't " expect anything to go wrong J 2: detailed progress reporting - show more progress, particularly things N that might fail during the normal operation of the autobuilder: patches J that fail to apply, dpkg-buildpackage runs that return errors, etc. C 3: Debugging output - use this level or higher if you suspect the J autobuilder itself is failing, or you are doing development work on  the autobuilder. T.Add this string at the beginning of each line U4Ignore v functions whose argument is more than this VPer-handle prefix W=Class representing ways of doing console (terminal?) output. XWrite output to a handle. YBIf we are not already at the beginning of a line, move the cursor # to the beginning of the next one. Z Return the "effective verbosity" for a task. If the argument : is 2 it means the caller is computing ev for a task that ? normally does output when the verbosity level is 2 or higher. < If the verbosity of the current style is 1, then the ev or : effective verbosity is 2-1 = -1, so the output should be  quieter. [!Modify the current output style. \%Implementation of try for this monad ^#Use a new style for the TIO action a/Set the output style for a handle to prefixed. b!Prepend some text to the prefix. c Append some text to the prefix. d/Get the current prefix for a particular handle eCSet the output style for the stdout and stderr handle to prefixed, > using whatever prefixes were most recently set (default is [1] and [2].) fHSwitch to prefixed mode and modify both the stdout and stderr prefixes. <Perform an action if the effective verbosity level is >= 0, ' otherwise return the default value d. hWrite a string to stdout. iWrite a string to stderr. j(Verbosity controlled version of ePutStr k;Write a string to stdout depending on the verbosity level. lWrite a character. mWrite a character to stdout. nWrite a character to stderr. (Verbosity controlled version of hPutStr o*Verbosity controlled version of hPutChar. p(Verbosity controlled version of putChar q)Verbosity controlled version of ePutChar rCMove to beginning of next line (if necessary) and output a string. shPutStrBl to stdout. thPutStrBl to stderr. u*Verbosity controlled version of hPutStrBl v)Verbosity controlled version of putStrBl w*Verbosity controlled version of ePutStrBl x(Write a newline character and a string. yhPutStrLn to stdout. zhPutStrLn to stderr. {+Verbosity controlled version of hPutStrLn. |)Verbosity controlled version of putStrLn }*Verbosity controlled version of ePutStrLn ~hBOL to stdout. hBOL to stderr. $Verbosity controlled version of BOL %Verbosity controlled version of eBOL ;RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6WXYZ[\RSTUV]^_`abcefgdhikjlmnopqrstuvwxyz{|}~2RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred=Use this module to call functions in the CIO module from the > regular IO monad. This instance ignores all style and state E information. The verbosity controlled output functions will ignore E any calls when v is greater than zero. This allows you to call the D functions in the haskell-debian package from the regular IO monad. 0This is in a separate module from CIO so you don't accidentally do = a liftIO of some other CIO operation and get this instance.  Safe-Inferred !"#$%&'()*+ , - . / 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 PQRSTUVWXYZ[\]^_`abcdeffghijklmnopqrstuvwxyz{|}~   Extra-1.46.1Extra.IOThreadTest.QuickCheck.Properties Test.QUnit Extra.URIExtra.URIQuery Extra.Time Extra.SSH Extra.Net Extra.LockExtra.Terminal Extra.List Extra.Misc Extra.GPGSign Extra.FilesExtra.HughesPJ Extra.Exit Extra.Either Extra.CIO Extra.BoolExtra.IOIOThread startIOThread ioRequestisIdempotentBy isIdempotenttestQuickCheckrelURI setURIPort parseURIQuerymodifyURIQuery setURIQuerysetURIQueryAttrdeleteURIQueryAttrmodifydelputcopyformatDebianDatemyTimeDiffToStringsshExportDeprecated sshVerifysshCopywebServerDirectoryContentswithLock awaitLockc_get_window_size getWinSizegetWidth conspersesurround changePrefix dropPrefixcartesianProductwordsByempty sortByMapped sortByMappedM partitionMlistIntersection isSublistOfmapSndcolumnsjustify parentPathlistMaplistDiffcanonmd5sum sameInode sameMd5sumread'checkSuperUsertarDircdPGPKeyDefaultKeysign pgpSignFiles pgpSignFilegetSubDirectories installFiles renameMissing renameAlways deleteMaybeforceRemoveLinkwriteAndZipFileWithBackupwriteAndZipFile backupFilewriteFileIfMissingmaybeWriteFilecreateSymbolicLinkIfMissingprepareSymbolicLink replaceFile renderWidth exitWithHelpisRightisLeft concatEithers rightOnlyeitherFromListTStyleprefix verbosityhPrefixCIOhPutStrhBOLevsetStyletryCIOdefStyle withStyle setVerbosity addVerbosity setPrefix addPrefix appPrefix hGetPrefix setPrefixes addPrefixes appPrefixesputStrePutStrvEPutStrvPutStrhPutCharputCharePutChar vHPutCharvPutChar vEPutChar hPutStrBlputStrBl ePutStrBl vHPutStrBl vPutStrBl vEPutStrBl hPutStrLnputStrLn ePutStrLn vHPutStrLn vPutStrLn vEPutStrLnboleBOLvHBOLvBOLvEBOLhColorbluegreenredmagentacond $fTestableGenghc-prim GHC.TypesBoolformatURIQueryescapeURIForQueryValue $fReadURInetwork-2.4.1.2 Network.URIfragmentquerypath authorityscheme unreservedreserved escapeStringparseabsoluteURInormalizePathSegmentsnormalizeEscape normalizeCase relativeFrom relativeTononStrictRelativeTounEscapeStringescapeURIString escapeURICharisUnescapedInURIComponentisUnescapedInURIisAllowedInURI uriToString isUnreserved isReserved uriIsRelative uriIsAbsolute isIPv4address isIPv6address isAbsoluteURIisRelativeReferenceisURIReferenceisURIparseAbsoluteURIparseRelativeReferenceparseURIReferenceparseURInullURI uriFragmenturiQueryuriPath uriAuthority uriSchemeURIuriPort uriRegName uriUserInfoURIAuth_testgeneratePublicKey openAccess testAccess processIDlockedByPGPKey'' renameMaybezipFilelefts restoreBackupvIOvHPutStr hSetPrefix hAddPrefix hAppPrefix$fCIOIO