cW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred 1Operations we can perform while pretty printing. Introduce a level of parens. Introduce a level of braces. Separate words with space. Move to newline. Add bytes to the script. Remove an indentation level. Indent by N spaces. GState of pretty printing -- string being built, indent levels, present  column, brace nesting. ;Produce a builder from a pretty printer state computation. JPretty printer state starting on a new line indented to the given column. Apply an operation to a state. !FThis procedure is used in printing statements within evals, to set up $ indentation correctly for lines  following the first line. It ensures K that the second and following lines are printed aligned with the first M character of the first line of the statement, not the first character of  the $(, >( or <( enclosing the eval. %  !"#$  !"#$  !"#  !"#None$Unused at present. N Redirection " directions". OAppending output, >>. POutput redirection, >. QInput redirection, <. R@A file descriptor in Bash is simply a number between 0 and 255. YHThe names of special variables, with otherwise illegal identifiers, are  represented by this type. iFThe type of legal Bash identifiers, strings beginning with letters or _  and containing letters, _ and digits. nKThe type of Bash expressions, handling many kinds of variable reference as 1 well as eval and process substitution. It is  and a . The 9 type captures the different kind of statements that may B exist in a Bash statement tree. It is mutually recursive with .  It is a  and a . The 3 type captures the annotatedness of a tree of Bash  statements. It is  and a .  Escape a " to produce a literal expression.  Produce an i from a  of legal format. Try to render a Y from a . $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~n~}|{zyxwvutsrqpokmlijYhgfedcba`_^]\[ZTXWVURSNQPO$MLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$)MLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%NQPORSTXWVUYhgfedcba`_^]\[Zijkmln~}|{zyxwvutsrqpoNone$"None*Create a simple command from expressions.  Declare or assign an array to a sed% command line that will use extended 1 regular expressions, checking for GNU or BSD sed. The  argument 9 determines whether to insert the declaration or not. GPerform a statement for integer values ranging from the first integral # parameter to the second, using seq.  Evaluate seq for the given arguments. BA set statement that covers a few error handling options, setting  errexit, nounset and pipefail. JA statement that allows one to redirect output to a file as root. This is  what you might expect sudo echo x > privileged_file would do (though " that does not actually work). 3Annotate a statement with the 0 value of a monoid. NoneFAnnotate a statement with statements of different types, with special  rules for empty  statements -- as long as the   "comment" in the  is empty, the  is simply elided. =Append some raw lines, in flow, above and below a statement. None Produce a script beginning with #!/bin/bash and a safe set statement.  Produce a script beginning with #!/bin/bash and some (optional) N documentation. Cause the script to be scanned for SHA-1 hash of the setup K (first statement argument) and main (second statement argument) before D running the safe set statement and running the second argument. Scan $0? for the token before running, producing a statement annotated M with the initial statement. This is a bit clumsy but is used internally. Scan $0< for the token before running, correctly producing monoidal F annotations. The function argument provides an annotation for the fgrep . check generated to search for the token. ( const mempty would be  appropriate in most cases.) Scan $0+ the SHA1 of the statement before running. The noop dance -- annotate a $ with a statement, essentially as a  type coercion. NoneXNOPQRSYiklmnopqrstuvwxyz{|}~Mn~}|{zyxwvutsrqpoiYkmlNQPORS      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYYZ[\]^_`abcdefghijklmnoopqrstuvwxyZz{|}~ bash-0.1.7!Language.Bash.PrettyPrinter.StateLanguage.Bash.SyntaxLanguage.Bash.PrettyPrinterLanguage.Bash.LibLanguage.Bash.AnnotationsLanguage.Bash.Script Language.BashPPOpRoundCurly WordSeparatorNewlineBytesOutdentIndentPPStateindentscurlyroundcolumns separatedstringrender renderBytesnlColopopMnlhanghangWordwordwordcatoutdentinwordoutword curlyOpen curlyClose roundOpen roundCloseindentPadToNextWordcast renderIndentsConditionalExpressionOrAndNotNumGEqNumGTNumLEqNumLTNumNotEqNumEqStringREStringGTStringLT StringNotEqStringEqStringNonempty StringEmptyOptSetFile_efFile_otFile_ntFile_NFile_SFile_LFile_GFile_OFile_xFile_wFile_uFile_tFile_sFile_rFile_pFile_kFile_hFile_gFile_fFile_eFile_dFile_cFile_bFile_a RedirectionAppendOutInFileDescriptorTrimLongestTrailingShortestTrailingLongestLeadingShortestLeading SpecialVarDollar9Dollar8Dollar7Dollar6Dollar5Dollar4Dollar3Dollar2Dollar1Dollar0DollarUnderscore DollarBang DollarDollar DollarHyphenDollarQuestion IdentifierVarName VarSpecialVarIdent Expression ProcessOut ProcessIn EvalUnquotedEvalConcat ArrayLengthLengthKeysElements ARGVLength ARGVElements ReadArraySafe ReadArray ReadVarSafeReadVarTilde QuestionMarkAsteriskLiteral StatementRedirect DictAssign DictUpdateDictDecl ArrayAssign ArrayUpdate ArrayDeclExport VarAssignUntilWhileCaseFor IfThenElseIfThenFunctionSubshellGroup BackgroundSequencePipeOrOrAndAndBangNoOp SimpleCommandEmpty Annotated annotation statementliteralvarName identifier specialVarspecialVarBytesPPpp Annotationannotatebytesbuilder bytes_statehangcatarray_ppkeyset case_clauserender_redirectquotebracesbraces0brackets identpart trimPrinterisSimpleisAndAndisOrOrisPipebinGrp redirectGrp breakline hangMultiline maxLineLengthfinalLineLengthinlineEvalPrintercmdesedforseqAZsetSafe sudo_writeann_ StatementsLinesscript script_sha1 tokenCheck mtokenCheck tokenFGREPq sha1Checksha1dancenoop $fShowPPStatebase Data.FoldableFoldableGHC.BaseFunctorbytestring-0.10.0.2Data.ByteString.Internal ByteString$fIsStringSpecialVar$fIsStringIdentifier$fIsStringVarName$fFoldableExpression$fFunctorExpression$fIsStringExpression$fFoldableStatement$fFunctorStatement$fFoldableAnnotated$fFunctorAnnotated $fPPStatement $fPPAnnotated$fPPExpression$fPPFileDescriptor$fPPSpecialVar$fPPIdentifier$fAnnotation()ghc-prim GHC.TypesBool$fAnnotation(,)$fAnnotationStatements$fAnnotationLines