1 &P      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOSafePPPSafeQA unique ID generatorR A unique IDSCreate a new unique generatorT1get the next unique id and return a new generatorQURVSTQRSTQURVSTSafe W/the state of parsing the command line argumentsXEWhether a flag has an argument, an optional one or always an argumentYshort flag parser oZlong flag "flag"[[Description of this "flag" , flagDefault :: Maybe String -- ^ Has a default\FlagDefault String]How to parse a specific flag^flag number. internal value_"parser for the argument to an flag`Xif the argument doesn't validate, return the error message associated, otherwise Nothing$abcWdefghXijklmYZ[ \]no^_`pqrstuvabcXijklmYZ[ ]no^_`pqrstu abcWdefghXijklmYZ[  \]no^_`pqrstuvSafe !";>ILNRepresent a program to runwRecursive command treexA unnamed argument,yzw{|}~x%yw{|}~xyzw{|}~xNoneCIN"Return the next unique argument IDSafe3 !"#$%&'()*+,-./012345678'  !"#$%&'()*+,-./012345678'$,-./#01"23 %&'()*+ 4 !5678 !"#$%&'()*+,-./012345678None !"4;>CILN DSet the program nameESet the program versionFSet the program descriptionG!Set the description for a commandHCreate a new sub commandI%Set the action to run in this commandJ/Flag option either of the form -short or --long*for flag that doesn't have parameter, use LL/Flag option either of the form -short or --long;for flag that expect a value (optional or mandatory), uses flagArgMAn unnamed argumentFor now, argument in a point of tree that contains sub trees will be ignored. TODO: record a warning or add a strict mode (for developping the CLI) and error.Ogive the ability to set options that are conflicting with each other if option a is given with option b then an conflicting error happens"9:;<=>?@ABCDEFGHIJKLMNO) 9:;<=>?@ABCDEFGHIJKLMNO)ABC9:;<=DEFH LJKOMNIG>?@9:;<=>?@ABCDEFGHIJKLMNO               !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^[\_`abc"defghh%_ijiklmnoodpqrstuvwxyz{|}~~!"#$%y&'(,-.cli_Ion5A3oBEW205xIST2gs4FConsole.DisplayConsole.OptionsConsole.Options.UtilsConsole.Options.NidConsole.Options.FlagsConsole.Options.TypesConsole.Options.Monadtermi_6iVf4EBnOgfIaaOCLRs8jlSystem.Console.Terminfo.Color ColorNumberWhiteCyanMagentaBlueYellowGreenRedBlackColorSystem.Console.Terminfo.BasetermTextFlagFrag FlagShortFlagLongFlagDescription getParamsActionParams paramsFlagsparamsPinnedArgsparamsRemainingArgs ArgRemainingArgFlagMany FlagParam FlagLevelFlag OptionDescTableColumnJustify JustifyLeft JustifyRightSummary ProgressBarTerminalDisplay OutputElemBgFgTLeftTRightTNA displayInitdisplaydisplayTextColor displayLnprogress progressTicksummary summarySetjustify columnNew tableCreate tableHeaders tableAppend OptionRes OptionSuccess OptionHelp OptionError OptionInvalid FlagParser FlagRequired FlagOptional defaultMaindefaultMainWith parseOptions programNameprogramVersionprogramDescription descriptioncommandaction flagParamflagManyflagargumentremainingArgumentsconflict hPutErrLn NidGeneratorNid nidGeneratornidNext ParseState FlagArgDesc flagShortflagLongflagDescriptionFlagDescflagNidflagArgflagArgValidate FlagErrorMatching NoMatchingMatchingWithArg FlagArgNone FlagArgMaybe FlagArgHave FlagFragments flagFragments flagArityFlagArgValidation FlagArgValidFlagArgInvalidflattenFragments parseFlags$fMonoidFlagFrag CommandHierArgumentParamRet CommandTree CommandLeafCommandgetCommandHiergetCommandDescriptiongetCommandOptionsgetCommandAction UnnamedIndex ArgsRemaining FlagParamOpt argumentNameargumentDescriptionargumentValidateArgumentCatchAll$fParamArgRemaining $fParamArg$fParamFlagMany$fParamFlagParam$fParamFlagLevel $fParamFlag getNextID runOptionDesc ProgramMetaprogramMetaNameprogramMetaDescriptionprogramMetaVersionprogramMetaHelp ProgramDescstMetastCTstNextID stNextIndexprogramMetaDefault gatherDescinitialProgramDesc getNextIndextColumns rowSeparator columnSize columnName columnJustify columnWrap ProgressStatepgLhspgRhspgMax pgCurrentSummaryBackendProgressBackend renderOutputinitProgressStateshowBar progressStart ValueParsersetDescription setAction addOption tweakOptionaddArghelp runOptionsindent modifyHiermodifyCT