śĪē¦Šė’>      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw x y z { | } ~  €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ” ¢ £ ¤ „ ¦ § Ø © Ŗ « ¬ ­ ®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’      !"#$%&'()*+,-./0123456789:;<=None+ Safe-InferredNone68B     NoneB    NoneB!a !t is just the number of the capture, starting with 0 for the whole of the text matched, then in leftmost, outermost$a $ is just the text of the name'Tthe dictionary for named captures stored in compiled regular expressions associates([CaptureID identifies captures, either by number (e.g., [cp|1|]) or name (e.g., [cp|foo|]).+ an empty ' dictionary, look up a ( in the ' dictionary !"#$%&'()*+,- !"#$%&'()*+, (*)'+$%&-!"#,!"#$%&'(*)+,-None+246".Hthe matching of a single sub-expression against part of the source text0 the whole text that was searched1the text that was matched2ythe number of characters preceding the match with -1 used if no text was captured by the RE (not even the empty string)31the number of chacter in the captured sub-string4’the result of matching a RE to a text once, listing the text that was matched and the named captures in the RE and all of the substrings matched, with the text captured by the whole RE; a complete failure to match will be represented with an empty array (with bounds (0,-1))6the whole source text7the RE's capture names8 @.n-1 captures, starting with the text matched by the whole RE9ithe result type to use when every match is needed, not just the first match of the RE against the source;the source text being matched<!all captures found, left to right=/Construct a Match that does not match anything.>an empty array of Capture?3tests whether the RE matched the source text at all@count the matchesB(extract the main capture from each matchC3tests whether the RE matched the source text at allD3tests whether the RE matched the source text at allEKthe top-level capture if the source text matched the RE, Nothing otherwiseFYthe top-level capture and the sub captures if the text matched the RE, Nothing otherwiseGan alternative for captureTextHŸlook up the text of the nth capture, 0 being the match of the whole RE against the source text, 1, the first bracketed sub-expression to be matched and so onI#an alternative for captureTextMaybeJlook up the text of the nth capture (0 being the match of the whole), returning Nothing if the Match doesn't contain the captureKan alternative for captureL“look up the nth capture, 0 being the match of the whole RE against the source text, 1, the first bracketed sub-expression to be matched and so onM'an alternative for capture captureMaybeN’look up the nth capture, 0 being the match of the whole RE against the source text, 1, the first bracketed sub-expression to be matched and so on, returning Nothing if there is no such capture, or if the capture failed to capture anything (being in a failed alternate)O(test if the capture has matched any textP$returns the text preceding the matchQ returns the text after the match>,for matching all REs against the source text?6for matching just the first RE against the source text+./0123456789:;<=>?@ABCDEFGHIJKLMN@OPQA>?BCD$./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ$9:;<45678./0123=>?@ABCDEFGHIJKLMNOPQ./0123456789:;<=>?@ABCDEFGHIJKLMN@OPQA>?BCDG K None234Rthe Locationg information passed into the substitution function specifies which sub-expression is being substitutedTxthe zero-based, i-th string to be matched, when matching all strings, zero when only the first string is being matchedU‰0, when matching the top-level string matched by the whole RE, 1 for the top-most, left-most redex captured by bracketed sub-REs, etc.VContext= specifies which contexts the substitutions should be appliedWkthe substitution function should be applied to all captures, the top level and the sub-expression capturesXOsubstitutions should only be applied to the text captured by bracketed sub-REsYZsubstitutions should be applied to the top-level only, the text that matched the whole REZua selction of the Replace methods can be encapsulated with ReplaceMethods for the higher-order replacement functions^oReplace provides the missing methods needed to replace the matched text; lengthE is the minimum implementation_length function for a`inject String into aaproject a onto a Stringbinject into Textcproject Text onto adappend a newlinee*apply a substitution function to a CapturefKconvert a template containing $0, $1, etc., in the first argument, into a phiJ replacement function for use with replaceAllCaptures and replaceCapturesgEreplaceMethods encapsulates ReplaceMethods a from a Replace a contexthRTrue iff the location references a complete match (i.e., not a bracketed capture)iKreplace all with a template, $0 for whole text, $1 for first capture, etc.jsubstitutes using a function that takes the full Match context and returns the same replacement text as the _phi_phi context.kvreplaceAllCaptures_ is like like replaceAllCaptures but takes the Replace methods through the ReplaceMethods argumentlUreplaceAllCapturesM is just a monadically generalised version of replaceAllCaptures_mQreplace with a template containing $0 for whole text, $1 for first capture, etc.nsubstitutes using a function that takes the full Match context and returns the same replacement text as the _phi_phi context.okreplaceCaptures_ is like replaceCaptures but takes the Replace methods through the ReplaceMethods argumentpOreplaceCapturesM is just a monadically generalised version of replaceCaptures_q°expand all of the @{..} macros in the RE in the argument String according to the Macros argument, preprocessing the RE String according to the Mode argument (used internally)rGexpand the @{..} macos in the argument string using the given function+RSTUVWXYZ[\]^_`abcdefghijklmnopqrEFGHIJKLMN!RSTUVWXYZ[\]^_`abcdefghijklmnopqr!^_`abcdefZ[\]gVYXWRSTUhmijklnopqrRSTUVYXWZ[\]^_`abcdefghijklmnopqrEFGHIJKLMNNone6stuvstuvstuvstuv Nonewxyz{|}~€‚ƒ„OPwxyz{|}~€‚ƒ„€{~}|wzyx‚ƒ„wzyx{~}|€‚ƒ„OP None3…†‡QR…†‡…†‡…†‡QR None$ˆ‰Š‹ŒŽ‘’“”•–STUVW—˜™š›œžXYŸ ”Z¢[ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢’“”•–—˜™š›œžŸ‘ ˆŽŒ‹Š‰”¢ˆŽŒ‹Š‰‘’“”•–STUVW—˜™š›œžXYŸ ”Z¢[ None3 £¤„¦§Ø©Ŗ\« £¤„¦§Ø©Ŗ« ¤„¦§Ø©£Ŗ«£¤„¦§Ø©Ŗ\« None¬­¬­¬­¬­NoneB]±we are only interested in the open parentheses used for grouping and/or capturing; if neither grouping or capturing then there is no initial '(' or '(?:', just the suffic text^ following text optional ( or (?:_ a '(' that is not safe to modify`is this a grouping groupais this a capturing group®Lname of the Haskell parser function for parsing the text matched by a macro±’a RE that should work for POSIX and PCRE with open brackets ('(') represented as follows: ( mere symbol (?: used for grouping only, not for captures (}: used for captures only, not for grouping (]: used for captures and grouping ( do not modify“$list of failures on a validation run·Idescribes a macro, giving the text of the RE and a si=ummary description¹the REŗsome sample matches»some sample non-matches¼validation test results½WA, the parser function¾summary commentæoeach macro can reference others, the whole environment being required for each macro, so we use a Lazy HashMapĄPdo we need the captures in the RE or whould they be stripped out where possibleĆGwhat kind of back end will be compiling the RE, and its match functionĘ test RegexType for TDFA/PCREnessĒ test RegexType for TDFA/PCREnessMbcdefghijk]l^_`a®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅmĘĒČÉŹĖĢĶĪĻŠŃŅÓnopqrstuvwxyz{|}~Ō€‚*®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌ*ĆÅÄĘĒČæĄĀĮ·ø¹ŗ»¼½¾“µ¶±²³®Æ°ÉŹĖĢĶĻĪŠŃŅÓŌ/bjihgfedck]l^_`a®ư±²³“µ¶·ø¹ŗ»¼½¾æĄĀĮĆÅÄmĘĒČÉŹĖĢĶĪĻŠŃŅÓnopqrstuvwxyz{|}~Ō€‚NoneBÕ+an enumeration of all of the prelude macrosņnaming the macrosƒ)all prelude macros are prefixed with this„a digit string macro… see https:/mathiasbynens.be*demo/url-regex (based on @stephenhay URL)9ÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļš†ńņƒ‡ˆ‰Š„‹ŒŽ‘’“”•–—˜™š…›œ/±²³·ø¹ŗ»¼½¾ĄĮĀĆÄÅÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņ/ĆÅÄĄĀĮ·ø¹ŗ»¼½¾±²³ÕźéčēęåäćāįąßŽŻÜŪŚŁŲ×Öņėģķīļšń$ÕźéčēęåäćāįąßŽŻÜŪŚŁŲ×Öėģķīļš†ńņƒ‡ˆ‰Š„‹ŒŽ‘’“”•–—˜™š…›œ(C) 2016-17 Chris DornanBSD3 (see the LICENSE file)+Chris Dornan <chris.dornan@irisconnect.com>RFCportableNone¢  !"#$%&'()*+,./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­¢9:;<45678./0123=?@ABCDEFGHIJKLMNOPQstuv  (*)'+$%&!"#,€{~}|wzyx‚ƒ„ ’“”•–—˜™š›œžŸ‘ ˆŽŒ‹Š‰”¢^_`abcdefZ[\]gVYXWRSTUhmijklnopqr¤„¦§Ø©£Ŗ«¬­…†‡None+:Móza convenience function used by the API modules to insert capture names extracted from the parsed RE into the (*=~) resultōza convenience function used by the API modules to insert capture names extracted from the parsed RE into the (?=~) resultõ’Ya hairy dynamically-typed function used with the legacy (=~) and (=~~) to see if it can/should add the capture names extracted from the RE into the polymorphic result of the operator (it does for any Match or Matches type, provided it is parameterised over a recognised type). The test suite is all over this one, testing all of these cases.óōõóōõóōõóōõNone0žŸ ”¢ö÷ųłśūüżž’£¤„ö÷ųłśūüżž’żžöüūśłų÷’ žŸ ”¢öüūśłų÷żž’£¤„None 23460¦§Ø©Ŗ     «¬­®Æ°±² !³“µ¶·øż      !     ż !+¦§Ø©Ŗ     «¬­®Æ°±² !³“µ¶·øNone2346"find all matches in text#find first match in text$)the regex-base polymorphic match operator%2the regex-base monadic, polymorphic match operator"#$%¹Å  !"#$%&'()*+,./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­ż      !"#$%"#$%"#$%¹None2346&find all matches in text'find first match in text()the regex-base polymorphic match operator)2the regex-base monadic, polymorphic match operator&'()ŗÅ  !"#$%&'()*+,./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­ż      !&'()&'()&'()ŗNone2346*find all matches in text+find first match in text,)the regex-base polymorphic match operator-2the regex-base monadic, polymorphic match operator*+,-»Å  !"#$%&'()*+,./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­ż      !*+,-*+,-*+,-»None2346.find all matches in text/find first match in text0)the regex-base polymorphic match operator12the regex-base monadic, polymorphic match operator./01¼Å  !"#$%&'()*+,./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­ż      !./01./01./01¼None23462find all matches in text3find first match in text4)the regex-base polymorphic match operator52the regex-base monadic, polymorphic match operator2345½Å  !"#$%&'()*+,./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­ż      !234523452345½None23466find all matches in text7find first match in text8)the regex-base polymorphic match operator92the regex-base monadic, polymorphic match operator6789¾Å  !"#$%&'()*+,./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­ż      !678967896789¾None3:find all matches in text;find first match in text<)the regex-base polymorphic match operator=2the regex-base monadic, polymorphic match operator:;<=Å  !"#$%&'()*+,./0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­ż      !:;<=:;<=:;<=æ !"#$%&'(()*+,-./0123456789::;<<=>?@ABCDEEFGHIJJKLMNNOPQRSTUVWXYZ[\]^_`abcdeffghijklmmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ ‰ Š ‹ Œ  ‰ Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ” ¢ £ ¤ „ ¦ § Ø © Ŗ « ¬ ­ ® Æ ° ± ² ³ “ µ µ ¶ · ø ¹ ŗ » ¼ ½¾¾æĄĄĮĀĀĆÄÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’     - !"#$%&'()*+,-./0-./0-./0-./0-./0-./0-./0123456789:;<=>?@A B C D E F G H I J K L M N OPQRSTUVWXYZ[\]^P_ˆ`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§ØØ©Ŗ««¬ regex-0.6.0.0Text.RE.Internal.QQText.RE.Internal.EscapeREStringText.RE.OptionsText.RE.LineNoText.RE.CaptureIDText.RE.CaptureText.RE.ReplaceText.RE.IsRegex Text.RE.EditText.RE.Tools.SedText.RE.ParsersText.RE.Tools.GrepText.RE.Tools.LexText.RE.TestBenchText.RE.Internal.PreludeMacros Text.RE.Internal.AddCaptureNamesText.RE.Internal.NamedCapturesText.RE.TDFA.REText.RE.TDFA.ByteStringText.RE.TDFA.ByteString.LazyText.RE.TDFA.SequenceText.RE.TDFA.StringText.RE.TDFA.TextText.RE.TDFA.Text.Lazy Text.RE.TDFAText.RE QQFailure _qqf_context_qqf_componentqq0$fExceptionQQFailureescapeREString isMetaCharSimpleRegexOptionsBlockInsensitiveBlockSensitiveMultilineInsensitiveMultilineSensitiveMacrosMacroID getMacroIDIsOption makeOptionsOptions_Options optionsMacs optionsComp optionsExec emptyMacros$fLiftSimpleRegexOptions$fHashableMacroIDLineNoZeroBasedLineNogetZeroBasedLineNo firstLine getLineNolineNoCaptureOrdinalgetCaptureOrdinal CaptureNamegetCaptureName CaptureNames CaptureID IsCaptureNameIsCaptureOrdinalnoCaptureNames findCaptureID$fHashableCaptureNameCapture captureSource capturedText captureOffset captureLengthMatch matchSource captureNames matchArrayMatches matchesSource allMatchesnoMatchemptyMatchArray anyMatches countMatchesmatches mainCapturesmatched matchedText matchCapture matchCaptures!$$ captureText!$$?captureTextMaybe!$capture!$? captureMaybe hasCaptured capturePrefix captureSuffixLocation locationMatchlocationCaptureContextALLSUBTOPReplaceMethods methodLength methodSubstReplacelengthEpackEunpackEtextifyE detextifyEappendNewlineEsubstEparseTemplateEreplaceMethods isTopLocation replaceAllreplaceAllCapturesreplaceAllCaptures_replaceAllCapturesMreplacereplaceCapturesreplaceCaptures_replaceCapturesM expandMacros expandMacros'IsRegex matchOnce matchMany regexSourceLineEditDelete ReplaceWithNoEditEditFunctionTemplateEditsPipeSelect applyEdits applyEdit applyLineEdit SedScriptsedsed'SeverityDebugInfoNoticeWarningErrCritAlertEmerg IPV4Address parseIntegerparseHex parseDouble parseStringparseSimpleString parseDateparseSlashesDateparseTimeOfDay parseTimeZone parseDateTimeparseDateTime8601parseDateTimeCLFparseShortMonthshortMonthArrayparseIPv4Address parseSeverityseverityKeywords GrepScriptLine getLineNumbergetLineMatchesgrep grepLines grepScript linesMatchedalexalex' FunctionID _FunctionID RegexSource _RegexSource TestResult _TestResultMacroDescriptor _md_source _md_samples_md_counter_samples_md_test_results _md_parser_md_descriptionMacroEnv WithCaptures ExclCaptures InclCaptures RegexTypePCRETDFAisTDFAisPCREpresentRegexTypemkMacros testMacroEnv badMacrosrunTests runTests'dumpMacroTableformatMacroTableformatMacroSummaryformatMacroSourcesformatMacroSourcetestMacroDescriptors mdRegexSource PreludeMacroPM_syslog_severityPM_urlPM_email_simplePM_address_ipv4 PM_shortmonthPM_datetime_clfPM_datetime_8601 PM_datetime PM_timezonePM_timePM_date_slashesPM_datePM_id_PM_id'PM_idPM_string_simple PM_stringPM_fracPM_intPM_hexPM_nat preludeMacrospreludeMacroTablepreludeMacroSummarypreludeMacroSourcespreludeMacroSourcepreludeMacroEnvpreludeMacroDescriptorpresentPreludeMacroaddCaptureNamesToMatchesaddCaptureNamesToMatchaddCaptureNamesTokenOtherBSBraPCapPGrpECapcpextractNamedCaptures validTokenscan formatTokensidFormatTokenOptions formatTokens' formatTokens0RErereMSreMIreBSreBIreMultilineSensitivereMultilineInsensitivereBlockSensitivereBlockInsensitivere_ regexType reOptionsreSourcereCaptureNamesreRegexnoPreludeOptionsdefaultOptionsunpackSimpleRegexOptions compileRegexprelude preludeEnvpreludeTestsFailing preludeTablepreludeSummarypreludeSources preludeSourceescape*=~?=~=~=~~ $fRegexContextregexsourceMatches$fRegexContextregexsourceMatchlookupCaptureIDcvt$fFunctorCapture$fFunctorMatch$fFunctorMatcheslift_phiparseTemplateE'fixpoint$=~ $fReplaceText$fReplaceText0 $fReplaceSeq$fReplaceByteString$fReplaceByteString0 $fReplace[]select_edit_scriptspipe_edit_scripts read_file write_filedate_templatestime_templatestimezone_templatesdate_time_8601_templatesdate_time_templates parse_timeshort_month_hm severity_hmwords_byreportREToken _ret_prefix _ret_fixed _ret_grouping_ret_capturingCol C_commentC_parserC_failsC_anti_examples C_examplesC_regexC_capsC_nameTableRowTestBenchMatcher present_colmacro_table_hdrmacro_table_rowmacro_attribute format_table field_widthwrap_rowwidths format_rowfieldselljust min_captures format_tokens delete_ketscan_retest' test_neg'test_diagnostic$fShowRegexTypeprelude_prefix decimal_macro url_macroprelude_macro_envprelude_macro_id natural_macronatural_hex_macro integer_macro string_macrostring_simple_macroid_macro id'_macro id__macro date_macrodate_slashes_macro time_macrotimezone_macrodatetime_macrodatetime_8601_macrodatetime_clf_macroshortmonth_macroaddress_ipv4_macrossyslog_severity_macroemail_simple_macro run_testsbracketedRegexSourcefixFormatTokenOptions_fto_regex_type _fto_min_caps_fto_incl_caps analyseTokens parse_capturedefFormatTokenOptions _re_options _re_source _re_cnames _re_regexdef_comp_optiondef_exec_option compileRegex_re'unsafeCompileRegexSimpleunsafeCompileRegexunsafeCompileRegex_ compileRegex'"$fIsOption()RECompOptionExecOption($fIsOptionOptions_RECompOptionExecOption*$fIsOptionExecOptionRECompOptionExecOption*$fIsOptionCompOptionRECompOptionExecOption'$fIsOptionHashMapRECompOptionExecOption2$fIsOptionSimpleRegexOptionsRECompOptionExecOption$fIsRegexREByteString$fIsRegexRESeq $fIsRegexRE[]$fIsRegexREText