ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ J\[c@s[dgZddlZddlZddlmZmZmZmZddlm Z m Z ddl Z ddl m Z mZddlmZmZmZmZyddlmZeZWn)ek rZddlmZeZnXdefd YZd ejfd YZd efd YZ dej!fdYZ"de"fdYZ#dS(tHTML5TreeBuilderiN(t PERMISSIVEtHTMLtHTML_5tHTMLTreeBuilder(tNamespacedAttributet whitespace_re(t namespacestprefixes(tCommenttDoctypetNavigableStringtTag(t_base(tbasecBsPeZdZdZeeeegZdddZ dZ dZ dZ RS(sUse html5lib to build a tree.thtml5libccs4||_|rtjdn|ddtfVdS(NsjYou provided a value for exclude_encoding, but the html5lib tree builder doesn't support exclude_encoding.(tuser_specified_encodingtwarningstwarntNonetFalse(tselftmarkupRtdocument_declared_encodingtexclude_encodings((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pytprepare_markup0s cCs|jjdk r"tjdntjd|j}t}t |t sut re|j |d%s((Rtfragment((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyttest_fragment_to_document]sN( t__name__t __module__t__doc__tNAMERRRtfeaturesRRR/R R4(((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR)s  R0cBseeZd dZdZdZdZdZdZdZ dZ dZ d Z RS( cCsN|r||_n"ddlm}|dd|_tt|j|dS(Ni(t BeautifulSoupts html.parser(Rtbs4R:tsuperR0t__init__(RR2RR:((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR>ds  cCs#|jjt|j|jdS(N(RtresettElementR(R((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt documentClassls cCsG|d}|d}|d}tj|||}|jj|dS(NR+tpublicIdtsystemId(R tfor_name_and_idsRtobject_was_parsed(RttokenR+RBRCtdoctype((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt insertDoctypeps    cCs(|jj||}t||j|S(N(Rtnew_tagR@(RR+t namespacettag((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt elementClassxscCstt||jS(N(tTextNodeR R(Rtdata((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt commentClass|scCsDddlm}|dd|_d|j_t|j|jdS(Ni(R:R;s html.parsers[document_fragment](R<R:RR+R@R(RR:((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt fragmentClasss cCs|jj|jdS(N(Rtappendtelement(Rtnode((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt appendChildscCs|jS(N(R(R((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt getDocumentscCstjj|jS(N(ttreebuilder_baset TreeBuildert getFragmentRR(R((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRXscsZddlmgtjddfd|ddjS(Ni(R:s8^(.*?)(?: PUBLIC "(.*?)"(?: "(.*?)")?| SYSTEM "(.*?)")?$ic st|rnt|trj|}|r|jd}|jdkr|jdpfd}|jdp|jdpd}jdd||||fqjdd||fqjd d|fnt|trjd d||fnst|trDjd d||fnF|jrjd t |j|j f}n |j }jd d||f|j r_g}x}|j j D]l\}}t|t rd t |j|j f}nt|trdj|}n|j||fqWx?t|D].\}}jdd|d||fq*Wn|d7}x|jD]}||qsWdS(NiiR;iis|%st s|%ss|%ss|%ss|%s"%s"s%s %ss|%s<%s>s |%s%s="%s"(R"R tmatchtgroupt lastindexRQR R RJRR+tattrstitemsRtlisttjointsortedtchildren( RRtindenttmR+RBRCt attributestvaluetchild(R:t doctype_retrvtserializeElement(s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRjsF$     ) s (R<R:tretcompileR`(RRR((R:RhRiRjs9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyttestSerializers ) N( R5R6RR>RARHRLRORPRTRURXRm(((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR0bs         tAttrListcBsPeZdZdZdZdZdZdZdZdZ RS(cCs"||_t|jj|_dS(N(RRR!R](RRR((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR>s cCst|jjjS(N(R_R]R^t__iter__(R((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRoscCsvtj}||dksA|jj|kre|||jjkret|tsetj|}qen||j|RoRtR^RuRwRxRy(((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRns      R@cBseZdZdZdZdZeeeZd dZ dZ dZ dZ dZ d Zd ZeeZRS( cCs5tjj||j||_||_||_dS(N(RVtNodeR>R+RRRRJ(RRRRRJ((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR>s  cCsd}}t|tr&|}}nUt|tr>|}n=|jjtkri|j}}||_n|j}||_t|t r|jdk r|jjn|r|jj r|jj djtkr|jj d}|j j ||}|j |||j _ nt|tr;|j j |}n|jj r\|jjt}n-|jjdk r|j j}n |j}|j j|d|jd|dS(Nitparenttmost_recent_element(RR"R*R RRt __class__R R{textracttcontentsRt new_stringt replace_witht_most_recent_elementt_last_descendantRt next_elementRE(RRSt string_childRgt old_elementt new_elementR|((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRTs8           cCs#t|jtriSt|jS(N(R"RRR Rn(R((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt getAttributesscCs|dk rt|dkrg}xOt|jD];\}}t|tr7t|}||=|||                    cCsa|jj|jj|j}t||j|j}x$|jD]\}}||j|RTRRtpropertyReRRRRRRRRt nameTuple(((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR@s  6     B   RMcBseZdZdZRS(cCs)tjj|d||_||_dS(N(RVRzR>RRRR(RRRR((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR>s cCs tdS(N(tNotImplementedError(R((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRs(R5R6R>R(((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRMs ($t__all__RRkt bs4.builderRRRRt bs4.elementRRRthtml5lib.constantsRRR R R R thtml5lib.treebuildersR RVRR$t ImportErrorteRRRRWR0tobjectRnRzR@RM(((s9/usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyts$   " "  9_