úÎJ E#      !"#$%&'()*+,-./012345#$%&'()*+,-./012#$%&$%&'())*10/.-,++,-./012 6Render a stream of 7s into a stream of 8s. This function  wraps around  and 9, so it produces  optimally sized 8s with minimal buffer copying. Render a stream of 7s into a stream of :s. Builders are from D the blaze-builder package, and allow the create of optimally sized  8s with minimal buffer copying. ;<=>?@FIA monad for parsing attributes. By default, it requires you to deal with L all attributes present on an element, and will throw an exception if there # are unhandled attributes. Use the ,   et al * functions for handling an attribute, and ! if you would like to 0 skip the rest of the attributes on an element. AB GA greatly simplified XML event datatype. The best way to produce these  values is the  enumeratee. ?A simplified attribute, having all entities converted to text. CDEFGHIJKLMNOPQRSTUVWXYZGAutomatically determine which UTF variant is being used. This function K first checks for BOMs, removing them as necessary, and then check for the  equivalent of < ?xml for each of UTF-8, UTF-16LEBE, and UTF-32LEBE. It N defaults to assuming UTF-8. The output byte stream is guaranteed to be valid  UTF-8 bytes. 'Parses a UTF8-encoded byte stream into 7s. This function is I implemented fully in Haskell using attoparsec for parsing. The produced  error messages do not give line/)column information, so you may prefer to L stick with the parser provided by libxml-enumerator. However, this has the . advantage of not relying on any C libraries. 8If you are uncertain of the character encoding, use the   enumeratee. [\]^_`abcde.Grabs the next piece of content if available. ?Grabs the next piece of content. If none if available, returns f. JThe most generic way to parse a tag. It takes a predicate for checking if " this is the correct tag name, an  for handling attributes, and ) then a parser for dealing with content. HThis function automatically absorbs its balancing closing tag, and will G throw an exception if not all of the attributes or child elements are 6 consumed. If you want to allow extra attributes, see !. A simplified version of . which matches for specific tag names instead M of taking a predicate function. This is often sufficient, and when combined 5 with OverloadedStrings and the IsString instance of gh, can prove to be  very concise. JA further simplified tag parser, which requires that no attributes exist. 0Get the value of the first parser which returns i. If none return  i , returns j. <Force an optional parser into a required parser. All of the   functions,  and " deal with k parsers. Use this when you , want to finally force something to happen. Error message Convert a stream of 7s into a stream  s. The first argument J is a function to decode character entity references. Some things to note  about this function: # It drops events for document begin/!end, comments, and instructions. D It concatenates all pieces of content together. The output of this 4 function is guaranteed to not have two consecutive  s. L It automatically checks that tag beginnings and endings are well balanced, $ and throws an exception otherwise. L It also throws an exception if your supplied entity function does not know & how to deal with a character entity. Please also note that you do not" need to handle the 5 XML-defined I character entity references (lt, gt, amp, quot and apos), nor deal with % numeric entities (decimal and hex).  The same as , but throws any exceptions. 5A helper function which reads a file from disk using l , detects  character encoding using , parses the XML using ,  converts to an   stream using  and then handing off control  to your supplied parser. BRequire that a certain attribute be present and return its value. .Return the value for an attribute if present. !GSkip the remaining attributes on an element. Since this will clear the ( list of attributes, you must call this after any calls to ,   , etc. "4Keep parsing elements as long as the parser returns i. !  !""   !"  !     !"m      !"#$%&&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop89q89qrstrsursvwxyzxml-enumerator-0.0.1Text.XML.Enumerator.RenderText.XML.Enumerator.ParseText.XML.Enumerator.Token renderBytes renderBuilder AttrParser XmlExceptionUnparsedAttributes SXmlException sxmlBadInput InvalidEntityInvalidEndElementxmlErrorMessage xmlBadInputSEventSContent SEndElement SBeginElementSAttr detectUtf parseBytescontentcontent'tagtag'tag''chooseforcesimplify parseFile_ parseFileoptionalAttrRawrequireAttrRaw requireAttr optionalAttr ignoreAttrsmanyNSLevel defaultNSprefixes TAttributeTNameToken TokenDoctype TokenComment TokenContentTokenEndElementTokenBeginElementTokenInstructionTokenBeginDocumenttokenToBuilder tnameToText contentToText foldAttrsStackxml-types-0.1.2Data.XML.TypesEventbytestring-0.9.1.8Data.ByteString.Internal ByteString blaze-builder-enumerator-0.2.0.0#Blaze.ByteString.Builder.EnumeratorbuilderToByteStringblaze-builder-0.2.1.1'Blaze.ByteString.Builder.Internal.TypesBuilder eventToToken nameToTName mkBeginToken newElemStack newAttrStack getPrefix runAttrParseramphashcharx semicolonchar0char9charAcharZcharacharzcolonequalsquotedquoteltgtqmarkfslashexmarkdashlsquarersquare tokenToEvent tnameToName iterToken parseTokenparseAttribute parseName parseIdentisSpaceW parseContenttoText skipSpacenewlineword8' text-0.11.0.1Data.Text.Lazy.InternalemptyNamebase Data.MaybeJustNothingMaybeenumerator-0.4.4Data.Enumerator.IOenumFile