§
    ¤”j,~  ã                   óÜ  — d dl mZmZmZ d dlmZ d dlmZmZ d dl	Z	d dl
Z
d dlmZmZ d dlZddlmZmZmZmZ ddlmZ dd	lmZ  ed
„ eD ¦   «         ¦  «        Z ed„ eD ¦   «         ¦  «        Z ed„ eD ¦   «         ¦  «        Ze eddg¦  «        z  ZdZej        rOed         dk    re                     d¦  «        dk    sJ ‚ e
j        edd…          e d¦  «        z   dz   ¦  «        Z!n e
j        e¦  «        Z!h d£Z" e
j        d¦  «        Z#i Z$ G d„ de%¦  «        Z&d„ Z' G d„ de%¦  «        Z( G d„ de(¦  «        Z) G d„ de*¦  «        Z+ G d„ de%¦  «        Z, G d „ d!e%¦  «        Z-d"„ Z.dS )#é    )Úabsolute_importÚdivisionÚunicode_literals)Ú	text_type)Úhttp_clientÚurllibN)ÚBytesIOÚStringIOé   )ÚEOFÚspaceCharactersÚasciiLettersÚasciiUppercase)Ú_ReparseException)Ú_utilsc                 ó8   — g | ]}|                      d ¦  «        ‘ŒS ©Úascii©Úencode©Ú.0Úitems     úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/html5lib/_inputstream.pyú
<listcomp>r      s$   € Ð!SÐ!SÐ!S¸4 $§+¢+¨gÑ"6Ô"6Ð!SÐ!SÐ!Só    c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS r   r   r   s     r   r   r      s$   € ÐMÐMÐM¸˜tŸ{š{¨7Ñ3Ô3ÐMÐMÐMr   c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS r   r   r   s     r   r   r      s$   € Ð QÐ QÐ Q¸$ §¢¨WÑ!5Ô!5Ð QÐ QÐ Qr   ó   >ó   <uš   [---ÂŸï·�-ï·¯ï¿¾ï¿¿ðŸ¿¾ðŸ¿¿ð¯¿¾ð¯¿¿ð¿¿¾ð¿¿¿ñ�¿¾ñ�¿¿ñŸ¿¾ñŸ¿¿ñ¯¿¾ñ¯¿¿ñ¿¿¾ñ¿¿¿ò�¿¾ò�¿¿òŸ¿¾òŸ¿¿ò¯¿¾ò¯¿¿ò¿¿¾ò¿¿¿ó�¿¾ó�¿¿óŸ¿¾óŸ¿¿ó¯¿¾ó¯¿¿ó¿¿¾ó¿¿¿ô�¿¾ô�¿¿]éÿÿÿÿú]z"\uD800-\uDFFF">    éþÿ éþÿ éþÿ éþÿ éþÿ éþÿ éþÿ éþÿ éþÿ	 éþÿ
 éþÿ éþÿ éþÿ éþÿ éþÿ éþÿ éÿÿ éÿÿ éÿÿ éÿÿ éÿÿ éÿÿ éÿÿ éÿÿ éÿÿ	 éÿÿ
 éÿÿ éÿÿ éÿÿ éÿÿ éÿÿ éÿÿ z[	- -/:-@\[-`{-~]c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚBufferedStreamzÆBuffering for streams that do not have buffering of their own

    The buffer is implemented as a list of chunks on the assumption that
    joining many strings will be slow since it is O(n**2)
    c                 ó4   — || _         g | _        ddg| _        d S )Nr!   r   )ÚstreamÚbufferÚposition)ÚselfrF   s     r   Ú__init__zBufferedStream.__init__:   s   € ØˆŒØˆŒØ˜Q˜ˆŒˆˆr   c                 óˆ   — d}| j         d | j        d         …         D ]}|t          |¦  «        z  }Œ|| j        d         z  }|S ©Nr   r   )rG   rH   Úlen)rI   ÚposÚchunks      r   ÚtellzBufferedStream.tell?   sR   € ØˆØ”[Ð!2 $¤-°Ô"2Ð!2Ô3ð 	ð 	ˆEØ•3�u‘:”:ÑˆCˆCØˆtŒ}˜QÔÑˆØˆ
r   c                 ó  — ||                       ¦   «         k    sJ ‚|}d}t          | j        |         ¦  «        |k     r@|t          | j        |         ¦  «        z  }|dz  }t          | j        |         ¦  «        |k     °@||g| _        d S rL   )Ú_bufferedBytesrM   rG   rH   )rI   rN   ÚoffsetÚis       r   ÚseekzBufferedStream.seekF   s�   € Ø�d×)Ò)Ñ+Ô+Ò+Ð+Ð+Ð+ØˆØˆÝ�$”+˜a”.Ñ!Ô! FÒ*Ð*Ø•c˜$œ+ aœ.Ñ)Ô)Ñ)ˆFØ�‰FˆAõ �$”+˜a”.Ñ!Ô! FÒ*Ð*ð ˜F˜ˆŒˆˆr   c                 ó&  — | j         s|                      |¦  «        S | j        d         t          | j         ¦  «        k    r>| j        d         t          | j         d         ¦  «        k    r|                      |¦  «        S |                      |¦  «        S )Nr   r   r!   )rG   Ú_readStreamrH   rM   Ú_readFromBuffer©rI   Úbytess     r   ÚreadzBufferedStream.readO   s„   € ØŒ{ð 	/Ø×#Ò# EÑ*Ô*Ð*ØŒm˜AÔ¥# d¤kÑ"2Ô"2Ò2Ð2ØŒm˜AÔ¥# d¤k°"¤oÑ"6Ô"6Ò6Ð6Ø×#Ò# EÑ*Ô*Ð*à×'Ò'¨Ñ.Ô.Ð.r   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS © )rM   r   s     r   r   z1BufferedStream._bufferedBytes.<locals>.<listcomp>Y   s   € Ð6Ð6Ð6 $•C˜‘I”IÐ6Ð6Ð6r   )ÚsumrG   ©rI   s    r   rR   zBufferedStream._bufferedBytesX   s!   € ÝÐ6Ð6¨$¬+Ð6Ñ6Ô6Ñ7Ô7Ð7r   c                 óÆ   — | j                              |¦  «        }| j                             |¦  «         | j        dxx         dz  cc<   t          |¦  «        | j        d<   |S rL   )rF   r[   rG   ÚappendrH   rM   )rI   rZ   Údatas      r   rW   zBufferedStream._readStream[   sb   € ØŒ{×Ò Ñ&Ô&ˆØŒ×Ò˜4Ñ Ô Ð ØŒ�aÐÐÔ˜AÑÐÐÑÝ˜t™9œ9ˆŒ�aÑØˆr   c                 óP  — |}g }| j         d         }| j         d         }|t          | j        ¦  «        k     r²|dk    r¬|dk    sJ ‚| j        |         }|t          |¦  «        |z
  k    r|}|||z   g| _         n-t          |¦  «        |z
  }|t          |¦  «        g| _         |dz  }|                     ||||z   …         ¦  «         ||z  }d}|t          | j        ¦  «        k     r|dk    °¬|r(|                     |                      |¦  «        ¦  «         d                     |¦  «        S )Nr   r   r   )rH   rM   rG   rb   rW   Újoin)rI   rZ   ÚremainingBytesÚrvÚbufferIndexÚbufferOffsetÚbufferedDataÚbytesToReads           r   rX   zBufferedStream._readFromBufferb   sK  € ØˆØˆØ”m AÔ&ˆØ”} QÔ'ˆØ�C ¤Ñ,Ô,Ò,Ð,°À1Ò1DÐ1DØ! AÒ%Ð%Ð%Ð%Øœ; {Ô3ˆLà¥ \Ñ!2Ô!2°\Ñ!AÒAÐAØ,�Ø!,¨l¸[Ñ.HÐ I�”�å! ,Ñ/Ô/°,Ñ>�Ø!,­c°,Ñ.?Ô.?Ð @�”Ø˜qÑ �Ø�IŠI�l <°¸{Ñ0JÐ#JÔKÑLÔLÐLØ˜kÑ)ˆNàˆLð �C ¤Ñ,Ô,Ò,Ð,°À1Ò1DÐ1Dð  ð 	8Ø�IŠI�d×&Ò& ~Ñ6Ô6Ñ7Ô7Ð7à�xŠx˜‰|Œ|Ðr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rJ   rP   rU   r[   rR   rW   rX   r^   r   r   rD   rD   3   s‡   € € € € € ðð ð ð  ð  ð
ð ð ð$ð $ð $ð/ð /ð /ð8ð 8ð 8ðð ð ðð ð ð ð r   rD   c                 óÌ  — t          | t          j        ¦  «        s>t          | t          j        j        ¦  «        r"t          | j        t          j        ¦  «        rd}nNt          | d¦  «        r)t          |                      d¦  «        t          ¦  «        }nt          | t          ¦  «        }|r-d„ |D ¦   «         }|rt          d|z  ¦  «        ‚t          | fi |¤ŽS t          | fi |¤ŽS )NFr[   r   c                 ó<   — g | ]}|                      d ¦  «        ¯|‘ŒS )Ú	_encoding)Úendswith)r   Úxs     r   r   z#HTMLInputStream.<locals>.<listcomp>‹   s)   € ÐBÐBÐB˜1¨!¯*ª*°[Ñ*AÔ*AÐB�QÐBÐBÐBr   z3Cannot set an encoding with a unicode input, set %r)Ú
isinstancer   ÚHTTPResponser   ÚresponseÚaddbaseÚfpÚhasattrr[   r   Ú	TypeErrorÚHTMLUnicodeInputStreamÚHTMLBinaryInputStream)ÚsourceÚkwargsÚ	isUnicodeÚ	encodingss       r   ÚHTMLInputStreamr‚   }   só   € õ 	�6�;Ô3Ñ4Ô4ð 2å	�F�FœOÔ3Ñ	4Ô	4ð2õ 
�F”I�{Ô7Ñ	8Ô	8ð2ð ˆ	ˆ	Ý	�˜Ñ	 Ô	 ð 2Ý˜vŸ{š{¨1™~œ~­yÑ9Ô9ˆ	ˆ	å˜v¥yÑ1Ô1ˆ	àð 7ØBÐB ÐBÑBÔBˆ	Øð 	_ÝÐQÐT]Ñ]Ñ^Ô^Ð^å% fÐ7Ð7°Ð7Ð7Ð7å$ VÐ6Ð6¨vÐ6Ð6Ð6r   c                   ó\   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dd
„Zd„ Zd„ Zdd„Zd„ Zd	S )r|   ú×Provides a unicode stream of characters to the HTMLTokenizer.

    This class takes care of character encoding and removing or replacing
    incorrect byte-sequences and also provides column and line tracking.

    i (  c                 ó  — t           j        sd| _        n,t          d¦  «        dk    r| j        | _        n| j        | _        dg| _        t          d¦  «        df| _        |  	                    |¦  «        | _
        |                      ¦   «          dS )á¿  Initialises the HTMLInputStream.

        HTMLInputStream(source, [encoding]) -> Normalized stream from source
        for use by html5lib.

        source can be either a file-object, local filename or a string.

        The optional encoding parameter must be a string that indicates
        the encoding.  If specified, that encoding will be used,
        regardless of any BOM or later declaration (such as in a meta
        element)

        Nu   ô�¿¿r   r   úutf-8Úcertain)r   Úsupports_lone_surrogatesÚreportCharacterErrorsrM   ÚcharacterErrorsUCS4ÚcharacterErrorsUCS2ÚnewLinesÚlookupEncodingÚcharEncodingÚ
openStreamÚ
dataStreamÚreset)rI   r~   s     r   rJ   zHTMLUnicodeInputStream.__init__ž   s�   € õ Ô.ð 	Bð *.ˆDÔ&Ð&Ý�ÑÔ !Ò#Ð#Ø)-Ô)AˆDÔ&Ð&à)-Ô)AˆDÔ&ð ˜ˆŒå+¨GÑ4Ô4°iÐ@ˆÔØŸ/š/¨&Ñ1Ô1ˆŒà�
Š
‰Œˆˆˆr   c                 óh   — d| _         d| _        d| _        g | _        d| _        d| _        d | _        d S )NÚ r   )rO   Ú	chunkSizeÚchunkOffsetÚerrorsÚprevNumLinesÚprevNumColsÚ_bufferedCharacterr`   s    r   r’   zHTMLUnicodeInputStream.reset¾   sA   € ØˆŒ
ØˆŒØˆÔØˆŒð ˆÔàˆÔð #'ˆÔÐÐr   c                 óJ   — t          |d¦  «        r|}nt          |¦  «        }|S ©zvProduces a file object from source.

        source can be either a file object, local filename or a string.

        r[   )rz   r
   ©rI   r~   rF   s      r   r�   z!HTMLUnicodeInputStream.openStreamÌ   s/   € õ �6˜6Ñ"Ô"ð 	&ØˆFˆFå˜fÑ%Ô%ˆFàˆr   c                 óº   — | j         }|                     dd|¦  «        }| j        |z   }|                     dd|¦  «        }|dk    r| j        |z   }n||dz   z
  }||fS )Nú
r   r!   r   )rO   Úcountr˜   Úrfindr™   )rI   rS   rO   ÚnLinesÚpositionLineÚlastLinePosÚpositionColumns          r   Ú	_positionz HTMLUnicodeInputStream._positionÚ   ss   € Ø”
ˆØ—’˜T 1 fÑ-Ô-ˆØÔ(¨6Ñ1ˆØ—k’k $¨¨6Ñ2Ô2ˆØ˜"ÒÐØ!Ô-°Ñ6ˆNˆNà# {°Q¡Ñ7ˆNØ˜nÐ-Ð-r   c                 óJ   — |                       | j        ¦  «        \  }}|dz   |fS )z:Returns (line, col) of the current position in the stream.r   )r¦   r–   )rI   ÚlineÚcols      r   rH   zHTMLUnicodeInputStream.positionå   s(   € à—N’N 4Ô#3Ñ4Ô4‰	ˆˆcØ�q‘˜#ˆÐr   c                 ó˜   — | j         | j        k    r|                      ¦   «         st          S | j         }| j        |         }|dz   | _         |S )zo Read one character from the stream or queue if available. Return
            EOF when EOF is reached.
        r   )r–   r•   Ú	readChunkr   rO   )rI   r–   Úchars      r   r¬   zHTMLUnicodeInputStream.charê   sP   € ð
 Ô˜tœ~Ò-Ð-Ø—>’>Ñ#Ô#ð Ý�
àÔ&ˆØŒz˜+Ô&ˆØ&¨™?ˆÔàˆr   Nc                 ón  — |€| j         }|                      | j        ¦  «        \  | _        | _        d| _        d| _        d| _        | j                             |¦  «        }| j	        r| j	        |z   }d | _	        n|sdS t          |¦  «        dk    rBt          |d         ¦  «        }|dk    sd|cxk    rdk    rn n|d         | _	        |d d…         }| j        r|                      |¦  «         |                     d	d
¦  «        }|                     dd
¦  «        }|| _        t          |¦  «        | _        dS )Nr”   r   Fr   r!   é   é Ø  iÿÛ  z
rŸ   úT)Ú_defaultChunkSizer¦   r•   r˜   r™   rO   r–   r‘   r[   rš   rM   ÚordrŠ   Úreplace)rI   r•   rc   Úlastvs       r   r«   z HTMLUnicodeInputStream.readChunkù   sL  € ØÐØÔ.ˆIà.2¯nªn¸T¼^Ñ.LÔ.LÑ+ˆÔ˜4Ô+àˆŒ
ØˆŒØˆÔàŒ×#Ò# IÑ.Ô.ˆð Ô"ð 	ØÔ*¨TÑ1ˆDØ&*ˆDÔ#Ð#Øð 	à�5åˆt‰9Œ9�qŠ=ˆ=Ý˜˜Rœ‘M”MˆEØ˜Š}ˆ} ¨%Ð 9Ð 9Ò 9Ð 9°6Ò 9Ð 9Ð 9Ð 9Ð 9Ø*.¨r¬(�Ô'Ø˜C˜R˜C”y�àÔ%ð 	-Ø×&Ò& tÑ,Ô,Ð,ð �|Š|˜F DÑ)Ô)ˆØ�|Š|˜D $Ñ'Ô'ˆàˆŒ
Ý˜T™œˆŒàˆtr   c                 ó¨   — t          t          t                               |¦  «        ¦  «        ¦  «        D ]}| j                             d¦  «         Œd S )Núinvalid-codepoint)ÚrangerM   Úinvalid_unicode_reÚfindallr—   rb   )rI   rc   Ú_s      r   r‹   z*HTMLUnicodeInputStream.characterErrorsUCS4  sT   € Ý•sÕ-×5Ò5°dÑ;Ô;Ñ<Ô<Ñ=Ô=ð 	4ð 	4ˆAØŒK×ÒÐ2Ñ3Ô3Ð3Ð3ð	4ð 	4r   c                 ó.  — d}t                                |¦  «        D ]÷}|rŒt          |                     ¦   «         ¦  «        }|                     ¦   «         }t          j        |||dz   …         ¦  «        rEt          j        |||dz   …         ¦  «        }|t          v r| j	         
                    d¦  «         d}Œž|dk    r7|dk    r1|t          |¦  «        dz
  k    r| j	         
                    d¦  «         ŒÛd}| j	         
                    d¦  «         Œød S )NFé   r¶   Tr¯   iÿß  r   )r¸   Úfinditerr²   ÚgroupÚstartr   ÚisSurrogatePairÚsurrogatePairToCodepointÚnon_bmp_invalid_codepointsr—   rb   rM   )rI   rc   ÚskipÚmatchÚ	codepointrN   Úchar_vals          r   rŒ   z*HTMLUnicodeInputStream.characterErrorsUCS2#  s'  € ð ˆÝ'×0Ò0°Ñ6Ô6ð 	8ð 	8ˆEØð ØÝ˜EŸKšK™MœMÑ*Ô*ˆIØ—+’+‘-”-ˆCåÔ% d¨3¨s°Q©w¨;Ô&7Ñ8Ô8ð 8å!Ô:¸4ÀÀCÈ!ÁGÀÔ;LÑMÔM�ØÕ9Ð9Ð9Ø”K×&Ò&Ð':Ñ;Ô;Ð;Ø��Ø˜vÒ%Ð%¨)°vÒ*=Ð*=Ø�˜T™œ Q™Ò&Ð&Ø”×"Ò"Ð#6Ñ7Ô7Ð7Ð7à�Ø”×"Ò"Ð#6Ñ7Ô7Ð7Ð7ð#	8ð 	8r   Fc                 ó¾  — 	 t           ||f         }nt# t          $ rg 	 |D ]}t          |¦  «        dk     sJ ‚Œd                     d„ |D ¦   «         ¦  «        }|sd|z  }t	          j        d|z  ¦  «        x}t           ||f<   Y nw xY wg }	 |                     | j        | j        ¦  «        }|€| j        | j	        k    rnŒnN| 
                    ¦   «         }|| j	        k    r/|                     | j        | j        |…         ¦  «         || _        n=|                     | j        | j        d…         ¦  «         |                      ¦   «         snŒ¿d                     |¦  «        }	|	S )zð Returns a string of characters from the stream up to but not
        including any character in 'characters' or EOF. 'characters' must be
        a container that supports the 'in' method and iteration over its
        characters.
        Té€   r”   c                 ó2   — g | ]}d t          |¦  «        z  ‘ŒS )z\x%02x)r²   )r   Úcs     r   r   z5HTMLUnicodeInputStream.charsUntil.<locals>.<listcomp>H  s#   € ÐDÐDÐD°A˜Y­¨Q©¬Ñ/ÐDÐDÐDr   z^%sz[%s]+N)ÚcharsUntilRegExÚKeyErrorr²   re   ÚreÚcompilerÄ   rO   r–   r•   Úendrb   r«   )
rI   Ú
charactersÚoppositeÚcharsrÊ   Úregexrg   ÚmrÏ   Úrs
             r   Ú
charsUntilz!HTMLUnicodeInputStream.charsUntil:  sœ  € ð		ZÝ# Z°Ð$:Ô;ˆEˆEøÝð 	Zð 	Zð 	Zð)Ø#ð )ð )�AÝ˜q™6œ6 Cš<˜<˜<˜<˜<Ø—G’GÐDÐD¸ÐDÑDÔDÑEÔEˆEØð &Ø ™�Ý>@¼jÈÐSXÉÑ>YÔ>YÐYˆE•O Z°Ð$:Ñ;Ð;Ð;ð	Zøøøð ˆð	à—’˜DœJ¨Ô(8Ñ9Ô9ˆAØˆyð Ô# t¤~Ò5Ð5Øð 6ð —e’e‘g”g�ð ˜$œ.Ò(Ð(Ø—I’I˜dœj¨Ô)9¸#Ð)=Ô>Ñ?Ô?Ð?Ø'*�DÔ$Øð �IŠI�d”j Ô!1Ð!2Ð!2Ô3Ñ4Ô4Ð4Ø—>’>Ñ#Ô#ð àð+	ð. �GŠG�B‰KŒKˆØˆs   ‚ ’A.BÂBc                 óÄ   — |t           urT| j        dk    r!|| j        z   | _        | xj        dz  c_        d S | xj        dz  c_        | j        | j                 |k    sJ ‚d S d S rL   )r   r–   rO   r•   )rI   r¬   s     r   ÚungetzHTMLUnicodeInputStream.ungeti  s}   € ð •sˆ?ˆ?ØÔ 1Ò$Ð$ð " D¤JÑ.�”
Ø�” !Ñ#�”��àÐ Ô  AÑ%Ð Ô Ø”z $Ô"2Ô3°tÒ;Ð;Ð;Ð;ð ˆ?ð <Ð;r   ©N)F)rl   rm   rn   ro   r±   rJ   r’   r�   r¦   rH   r¬   r«   r‹   rŒ   rÖ   rØ   r^   r   r   r|   r|   ”   sØ   € € € € € ðð ð Ððð ð ð@'ð 'ð 'ðð ð ð	.ð 	.ð 	.ðð ð ð
ð ð ð$ð $ð $ð $ðL4ð 4ð 4ð8ð 8ð 8ð.-ð -ð -ð -ð^<ð <ð <ð <ð <r   r|   c                   óF   — e Zd ZdZ	 	 	 dd„Zd„ Zd„ Zdd„Zd	„ Zd
„ Z	d„ Z
dS )r}   r„   Núwindows-1252Tc                 óV  — |                       |¦  «        | _        t                               | | j        ¦  «         d| _        d| _        || _        || _        || _        || _	        || _
        |                      |¦  «        | _        | j        d         €J ‚|                      ¦   «          dS )r†   i   éd   r   N)r�   Ú	rawStreamr|   rJ   ÚnumBytesMetaÚnumBytesChardetÚoverride_encodingÚtransport_encodingÚsame_origin_parent_encodingÚlikely_encodingÚdefault_encodingÚdetermineEncodingr�   r’   )rI   r~   rá   râ   rã   rä   rå   Ú
useChardets           r   rJ   zHTMLBinaryInputStream.__init__‚  s¨   € ð$ Ÿš¨Ñ0Ô0ˆŒå×'Ò'¨¨d¬nÑ=Ô=Ð=ð
 !ˆÔà"ˆÔà!2ˆÔØ"4ˆÔØ+FˆÔ(Ø.ˆÔØ 0ˆÔð !×2Ò2°:Ñ>Ô>ˆÔØÔ  Ô#Ð/Ð/Ð/ð 	�
Š
‰Œˆˆˆr   c                 óš   — | j         d         j                             | j        d¦  «        | _        t
                               | ¦  «         d S )Nr   r³   )r�   Ú
codec_infoÚstreamreaderrÞ   r‘   r|   r’   r`   s    r   r’   zHTMLBinaryInputStream.reset¬  sA   € ØÔ+¨AÔ.Ô9×FÒFÀtÄ~ÐW`ÑaÔaˆŒÝ×$Ò$ TÑ*Ô*Ð*Ð*Ð*r   c                 óÚ   — t          |d¦  «        r|}nt          |¦  «        }	 |                     |                     ¦   «         ¦  «         n# t          $ r t          |¦  «        }Y nw xY w|S rœ   )rz   r	   rU   rP   Ú	ExceptionrD   r�   s      r   r�   z HTMLBinaryInputStream.openStream°  s}   € õ �6˜6Ñ"Ô"ð 	%ØˆFˆFå˜V‘_”_ˆFð	,Ø�KŠK˜Ÿš™œÑ&Ô&Ð&Ð&øÝð 	,ð 	,ð 	,Ý# FÑ+Ô+ˆFˆFˆFð	,øøøð ˆs   ¤'A ÁA(Á'A(c                 óî  — |                       ¦   «         df}|d         �|S t          | j        ¦  «        df}|d         �|S t          | j        ¦  «        df}|d         �|S |                      ¦   «         df}|d         �|S t          | j        ¦  «        df}|d         �"|d         j                             d¦  «        s|S t          | j        ¦  «        df}|d         �|S |rã	 ddl	m
} g } |¦   «         }|j        sj| j                             | j        ¦  «        }t          |t           ¦  «        sJ ‚|sn1|                     |¦  «         |                     |¦  «         |j        ¯j|                     ¦   «          t          |j        d         ¦  «        }| j                             d¦  «         |�|dfS n# t,          $ r Y nw xY wt          | j        ¦  «        df}|d         �|S t          d¦  «        dfS )Nrˆ   r   Ú	tentativezutf-16)ÚUniversalDetectorÚencodingrÛ   )Ú	detectBOMrŽ   rá   râ   ÚdetectEncodingMetarã   ÚnameÚ
startswithrä   Úchardet.universaldetectorrï   ÚdonerÞ   r[   rà   ru   rZ   rb   ÚfeedÚcloseÚresultrU   ÚImportErrorrå   )rI   Úchardetr�   rï   ÚbuffersÚdetectorrG   rð   s           r   ræ   z'HTMLBinaryInputStream.determineEncodingÃ  s_  € ð —~’~Ñ'Ô'¨Ð2ˆØ˜Œ?Ð&ØÐõ & dÔ&<Ñ=Ô=¸yÐHˆØ˜Œ?Ð&ØÐõ & dÔ&=Ñ>Ô>À	ÐIˆØ˜Œ?Ð&ØÐð ×.Ò.Ñ0Ô0°+Ð=ˆØ˜Œ?Ð&ØÐõ & dÔ&FÑGÔGÈÐTˆØ˜Œ?Ð&¨|¸A¬Ô/C×/NÒ/NÈxÑ/XÔ/XÐ&ØÐõ & dÔ&:Ñ;Ô;¸[ÐHˆØ˜Œ?Ð&ØÐð ð 	1ð1ØGÐGÐGÐGÐGÐGð �Ø,Ð,Ñ.Ô.�Ø"œ-ð *Ø!œ^×0Ò0°Ô1EÑFÔF�FÝ% f­eÑ4Ô4Ð4Ð4Ð4Ø!ð ØØ—N’N 6Ñ*Ô*Ð*Ø—M’M &Ñ)Ô)Ð)ð #œ-ð *ð —’Ñ Ô Ð Ý)¨(¬/¸*Ô*EÑFÔF�Ø”×#Ò# AÑ&Ô&Ð&ØÐ'Ø# [Ð0Ð0ð (øõ ð ð ð Ø�ðøøøõ& & dÔ&;Ñ<Ô<¸kÐIˆØ˜Œ?Ð&ØÐõ ˜nÑ-Ô-¨{Ð:Ð:s   Ã$F6 Æ6
GÇGc                 ó†  — | j         d         dk    sJ ‚t          |¦  «        }|€d S |j        dv rt          d¦  «        }|€J ‚d S || j         d         k    r| j         d         df| _         d S | j                             d¦  «         |df| _         |                      ¦   «          t          d| j         d         ›d|›�¦  «        ‚)Nr   rˆ   ©úutf-16beúutf-16ler‡   r   zEncoding changed from z to )r�   rŽ   ró   rÞ   rU   r’   r   )rI   ÚnewEncodings     r   ÚchangeEncodingz$HTMLBinaryInputStream.changeEncoding  sè   € ØÔ  Ô# yÒ0Ð0Ð0Ð0Ý$ [Ñ1Ô1ˆØÐØˆFØÔÐ7Ð7Ð7Ý(¨Ñ1Ô1ˆKØÐ*Ð*Ð*Ð*Ð*Ø˜DÔ-¨aÔ0Ò0Ð0Ø!%Ô!2°1Ô!5°yÐ AˆDÔÐÐàŒN×Ò Ñ"Ô"Ð"Ø!,¨iÐ 8ˆDÔØ�JŠJ‰LŒLˆLÝ#Ð#ÈÔHYÐZ[ÔH\ÐH\ÐH\Ð^iÐ^iÐ$jÑkÔkÐkr   c           
      ó   — t           j        dt           j        dt           j        dt           j        dt           j        di}| j                             d¦  «        }t          |t          ¦  «        sJ ‚| 
                    |dd…         ¦  «        }d}|s8| 
                    |¦  «        }d}|s| 
                    |dd	…         ¦  «        }d	}|r)| j                             |¦  «         t          |¦  «        S | j                             d
¦  «         dS )z©Attempts to detect at BOM at the start of the stream. If
        an encoding can be determined from the BOM return the name of the
        encoding otherwise return Noner‡   r  r   zutf-32lezutf-32beé   Né   r¼   r   )ÚcodecsÚBOM_UTF8ÚBOM_UTF16_LEÚBOM_UTF16_BEÚBOM_UTF32_LEÚBOM_UTF32_BErÞ   r[   ru   rZ   ÚgetrU   rŽ   )rI   ÚbomDictÚstringrð   rU   s        r   rñ   zHTMLBinaryInputStream.detectBOM  s
  € õ
 ŒO˜WÝÔ ­VÔ-@À*ÝÔ ­VÔ-@À*ð
ˆð ”×$Ò$ QÑ'Ô'ˆÝ˜&¥%Ñ(Ô(Ð(Ð(Ð(ð —;’;˜v b q bœzÑ*Ô*ˆØˆØð 	à—{’{ 6Ñ*Ô*ˆHØˆDØð Ø"Ÿ;š; v¨b¨q¨b¤zÑ2Ô2�Ø�ð ð 	ØŒN×Ò Ñ%Ô%Ð%Ý! (Ñ+Ô+Ð+àŒN×Ò Ñ"Ô"Ð"Ø�4r   c                 ó   — | j                              | j        ¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        }| j                              d¦  «         |                     ¦   «         }|�|j        dv rt          d¦  «        }|S )z9Report the encoding declared by the meta element
        r   Nrÿ   r‡   )
rÞ   r[   rß   ru   rZ   ÚEncodingParserrU   ÚgetEncodingró   rŽ   )rI   rG   Úparserrð   s       r   rò   z(HTMLBinaryInputStream.detectEncodingMeta3  s‹   € ð ”×$Ò$ TÔ%6Ñ7Ô7ˆÝ˜&¥%Ñ(Ô(Ð(Ð(Ð(Ý Ñ'Ô'ˆØŒ×Ò˜AÑÔÐØ×%Ò%Ñ'Ô'ˆàÐ H¤MÐ5MÐ$MÐ$MÝ% gÑ.Ô.ˆHàˆr   )NNNNrÛ   T)T)rl   rm   rn   ro   rJ   r’   r�   ræ   r  rñ   rò   r^   r   r   r}   r}   z  s¤   € € € € € ðð ð KOØCGØ=Að(ð (ð (ð (ðT+ð +ð +ðð ð ð&<;ð <;ð <;ð <;ð|lð lð lð  ð  ð  ðDð ð ð ð r   r}   c                   ó’   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Z eee
¦  «        Zd
„ Z ee¦  «        Zefd„Zd„ Zd„ Zd„ ZdS )ÚEncodingBytesz£String-like object with an associated position and various extra methods
    If the position is ever greater than the string length then an exception is
    raisedc                 óŠ   — t          |t          ¦  «        sJ ‚t                               | |                     ¦   «         ¦  «        S rÙ   )ru   rZ   Ú__new__Úlower©rI   Úvalues     r   r  zEncodingBytes.__new__F  s4   € Ý˜%¥Ñ'Ô'Ð'Ð'Ð'Ý�}Š}˜T 5§;¢;¡=¤=Ñ1Ô1Ð1r   c                 ó   — d| _         d S )Nr!   )r¦   r  s     r   rJ   zEncodingBytes.__init__J  s   € àˆŒˆˆr   c                 ó   — | S rÙ   r^   r`   s    r   Ú__iter__zEncodingBytes.__iter__N  s   € Øˆr   c                 óŒ   — | j         dz   x}| _         |t          | ¦  «        k    rt          ‚|dk     rt          ‚| ||dz   …         S )Nr   r   ©r¦   rM   ÚStopIterationr{   ©rI   Úps     r   Ú__next__zEncodingBytes.__next__Q  sJ   € Ø!œ^¨aÑ/Ð/ˆˆDŒNØ•�D‘	”	Š>ˆ>ÝÐØ�ŠUˆUÝˆOØ�A�a˜!‘e�GŒ}Ðr   c                 ó*   — |                       ¦   «         S rÙ   )r#  r`   s    r   ÚnextzEncodingBytes.nextY  s   € à�}Š}‰ŒÐr   c                 ó�   — | j         }|t          | ¦  «        k    rt          ‚|dk     rt          ‚|dz
  x| _         }| ||dz   …         S rL   r  r!  s     r   ÚpreviouszEncodingBytes.previous]  sN   € ØŒNˆØ•�D‘	”	Š>ˆ>ÝÐØ�ŠUˆUÝˆOØ ™UÐ"ˆŒ˜Ø�A�a˜!‘e�GŒ}Ðr   c                 óR   — | j         t          | ¦  «        k    rt          ‚|| _         d S rÙ   ©r¦   rM   r   )rI   rH   s     r   ÚsetPositionzEncodingBytes.setPositionf  s&   € ØŒ>�S ™YœYÒ&Ð&ÝÐØ!ˆŒˆˆr   c                 óh   — | j         t          | ¦  «        k    rt          ‚| j         dk    r| j         S d S )Nr   r)  r`   s    r   ÚgetPositionzEncodingBytes.getPositionk  s5   € ØŒ>�S ™YœYÒ&Ð&ÝÐØŒ>˜QÒÐØ”>Ð!à�4r   c                 ó0   — | | j         | j         dz   …         S ©Nr   )rH   r`   s    r   ÚgetCurrentBytezEncodingBytes.getCurrentByteu  s   € Ø�D”M $¤-°!Ñ"3Ð3Ô4Ð4r   c                 ó¬   — | j         }|t          | ¦  «        k     r2| ||dz   …         }||vr	|| _        |S |dz  }|t          | ¦  «        k     °2|| _        dS )zSkip past a list of charactersr   N©rH   rM   r¦   ©rI   rÒ   r"  rÊ   s       r   rÃ   zEncodingBytes.skipz  sf   € àŒMˆØ•#�d‘)”)ŠmˆmØ�Q�q˜1‘u�W”ˆAØ˜ˆ~ˆ~Ø!"�”Ø�Ø�‰FˆAð •#�d‘)”)Šmˆmð ˆŒØˆtr   c                 ó¬   — | j         }|t          | ¦  «        k     r2| ||dz   …         }||v r	|| _        |S |dz  }|t          | ¦  «        k     °2|| _        d S r.  r1  r2  s       r   Ú	skipUntilzEncodingBytes.skipUntil†  sf   € ØŒMˆØ•#�d‘)”)ŠmˆmØ�Q�q˜1‘u�W”ˆAØ�EˆzˆzØ!"�”Ø�Ø�‰FˆAð •#�d‘)”)Šmˆmð ˆŒØˆtr   c                 óz   — |                       || j        ¦  «        }|r| xj        t          |¦  «        z  c_        |S )zÓLook for a sequence of bytes at the start of a string. If the bytes
        are found return True and advance the position to the byte after the
        match. Otherwise return False and leave the position alone)rô   rH   rM   )rI   rZ   rg   s      r   Ú
matchByteszEncodingBytes.matchBytes‘  s<   € ð �_Š_˜U D¤MÑ2Ô2ˆØð 	(ØˆMŒM�S ™ZœZÑ'ˆMŒMØˆ	r   c                 óš   — 	 |                       || j        ¦  «        t          |¦  «        z   dz
  | _        n# t          $ r t
          ‚w xY wdS )z�Look for the next sequence of bytes matching a given sequence. If
        a match is found advance the position to the last byte of the matchr   T)ÚindexrH   rM   r¦   Ú
ValueErrorr   rY   s     r   ÚjumpTozEncodingBytes.jumpToš  sV   € ð	 Ø!ŸZšZ¨¨t¬}Ñ=Ô=ÅÀEÁ
Ä
ÑJÈQÑNˆDŒNˆNøÝð 	 ð 	 ð 	 ÝÐð	 øøøàˆts	   ‚36 ¶AN)rl   rm   rn   ro   r  rJ   r  r#  r%  r'  r*  r,  ÚpropertyrH   r/  ÚcurrentByteÚspaceCharactersBytesrÃ   r4  r6  r:  r^   r   r   r  r  B  s  € € € € € ðð ð2ð 2ð 2ðð ð ðð ð ðð ð ðð ð ðð ð ð"ð "ð "ð
ð ð ð ˆx˜ [Ñ1Ô1€Hð5ð 5ð 5ð �(˜>Ñ*Ô*€Kà-ð 
ð 
ð 
ð 
ð	ð 	ð 	ðð ð ðð ð ð ð r   r  c                   óH   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )r  z?Mini parser for detecting character encoding from meta elementsc                 ó<   — t          |¦  «        | _        d| _        dS )z3string - the data to work on for encoding detectionN)r  rc   rð   ©rI   rc   s     r   rJ   zEncodingParser.__init__§  s   € å! $Ñ'Ô'ˆŒ	ØˆŒˆˆr   c                 óˆ  — d| j         vrd S d| j        fd| j        fd| j        fd| j        fd| j        fd| j        ff}| j         D ]w}d}	 | j                              d¦  «         n# t          $ r Y  nKw xY w|D ]?\  }}| j                              |¦  «        r 	  |¦   «         } n# t          $ r d}Y  nw xY wŒ@|s nŒx| j	        S )	Ns   <metas   <!--s   </s   <!s   <?r    TF)
rc   ÚhandleCommentÚ
handleMetaÚhandlePossibleEndTagÚhandleOtherÚhandlePossibleStartTagr:  r   r6  rð   )rI   ÚmethodDispatchrº   ÚkeepParsingÚkeyÚmethods         r   r  zEncodingParser.getEncoding¬  s@  € Ø˜4œ9Ð$Ð$Ø�4ð �dÔ(Ð)Ø�t”Ð'Ø�DÔ-Ð.Ø�DÔ$Ð%Ø�DÔ$Ð%Ø�4Ô.Ð/ð1ˆð ”ð 	ð 	ˆAØˆKðØ”	× Ò  Ñ&Ô&Ð&Ð&øÝ ð ð ð Ø��ðøøøà-ð ð ‘��VØ”9×'Ò'¨Ñ,Ô,ð ðØ&, f¡h¤h˜Ø˜øÝ(ð ð ð Ø&+˜Ø˜˜ðøøøð	ð ð Ø�ðð Œ}Ðs$   Á
A%Á%
A3Á2A3Â
B$Â$B4Â3B4c                 ó6   — | j                              d¦  «        S )zSkip over commentss   -->©rc   r:  r`   s    r   rB  zEncodingParser.handleCommentÊ  s   € àŒy×Ò Ñ'Ô'Ð'r   c                 óÖ  — | j         j        t          vrdS d}d }	 |                      ¦   «         }|€dS |d         dk    r|d         dk    }|r|�	|| _        dS n‘|d         dk    r#|d         }t          |¦  «        }|�	|| _        dS nb|d         dk    rVt          t          |d         ¦  «        ¦  «        }|                     ¦   «         }|�t          |¦  «        }|�|r	|| _        dS |}ŒÐ)	NTFr   s
   http-equivr   s   content-typeó   charsets   content)	rc   r<  r=  ÚgetAttributerð   rŽ   ÚContentAttrParserr  Úparse)rI   Ú	hasPragmaÚpendingEncodingÚattrÚtentativeEncodingÚcodecÚcontentParsers          r   rC  zEncodingParser.handleMetaÎ  s+  € ØŒ9Ô Õ(<Ð<Ð<à�4àˆ	Øˆð	8à×$Ò$Ñ&Ô&ˆDØˆ|Ø�tà˜”7˜mÒ+Ð+Ø $ Q¤¨?Ò :�IØ ð % _Ð%@Ø(7˜œØ$˜uøØ˜!”W 
Ò*Ð*Ø(,¨Q¬Ð%Ý*Ð+<Ñ=Ô=�EØÐ(Ø(-˜œØ$˜uð )ð ˜!”W 
Ò*Ð*Ý$5µmÀDÈÄGÑ6LÔ6LÑ$MÔ$M�MØ(5×(;Ò(;Ñ(=Ô(=Ð%Ø(Ð4Ý .Ð/@Ñ AÔ A˜Ø Ð,Ø(ð 8Ø05 ¤Ø', uà27 ð7	8r   c                 ó,   — |                       d¦  «        S )NF)ÚhandlePossibleTagr`   s    r   rF  z%EncodingParser.handlePossibleStartTagò  s   € Ø×%Ò% eÑ,Ô,Ð,r   c                 óT   — t          | j        ¦  «         |                      d¦  «        S )NT)r%  rc   rY  r`   s    r   rD  z#EncodingParser.handlePossibleEndTagõ  s#   € ÝˆTŒY‰ŒˆØ×%Ò% dÑ+Ô+Ð+r   c                 óJ  — | j         }|j        t          vr,|r(|                     ¦   «          |                      ¦   «          dS |                     t          ¦  «        }|dk    r|                     ¦   «          n,|                      ¦   «         }|�|                      ¦   «         }|­dS )NTr    )rc   r<  ÚasciiLettersBytesr'  rE  r4  ÚspacesAngleBracketsrO  )rI   ÚendTagrc   rÊ   rT  s        r   rY  z EncodingParser.handlePossibleTagù  s©   € ØŒyˆØÔÕ#4Ð4Ð4ð ð #Ø—’‘”�Ø× Ò Ñ"Ô"Ð"Ø�4à�NŠNÕ.Ñ/Ô/ˆØ�Š9ˆ9ð �MŠM‰OŒOˆOˆOð ×$Ò$Ñ&Ô&ˆDØÐ"Ø×(Ò(Ñ*Ô*�ð Ð"àˆtr   c                 ó6   — | j                              d¦  «        S )Nr   rL  r`   s    r   rE  zEncodingParser.handleOther  s   € ØŒy×Ò Ñ%Ô%Ð%r   c                 ó¬  — | j         }|                     t          t          dg¦  «        z  ¦  «        }|�t	          |¦  «        dk    sJ ‚|dv rdS g }g }	 |dk    r|rn“|t          v r|                     ¦   «         }nu|dv rd                     |¦  «        dfS |t          v r(|                     |                     ¦   «         ¦  «         n|€dS |                     |¦  «         t          |¦  «        }Œœ|dk    r+| 
                    ¦   «          d                     |¦  «        dfS t          |¦  «         |                     ¦   «         }|d	v r˜|}	 t          |¦  «        }||k    r9t          |¦  «         d                     |¦  «        d                     |¦  «        fS |t          v r(|                     |                     ¦   «         ¦  «         n|                     |¦  «         Œ•|d
k    rd                     |¦  «        dfS |t          v r(|                     |                     ¦   «         ¦  «         n|€dS |                     |¦  «         	 t          |¦  «        }|t          v r*d                     |¦  «        d                     |¦  «        fS |t          v r(|                     |                     ¦   «         ¦  «         n|€dS |                     |¦  «         Œ�)z_Return a name,value pair for the next attribute in the stream,
        if one is found, or Noneó   /Nr   )r   NTó   =)ra  r   r   )ó   'ó   "r   )rc   rÃ   r=  Ú	frozensetrM   re   ÚasciiUppercaseBytesrb   r  r%  r'  r]  )rI   rc   rÊ   ÚattrNameÚ	attrValueÚ	quoteChars         r   rO  zEncodingParser.getAttribute  sá  € ð Œyˆà�IŠIÕ*­Y¸°vÑ->Ô->Ñ>Ñ?Ô?ˆØˆy�C ™FœF ašK˜K˜K˜Kà�ÐÐØ�4àˆØˆ	ð	Ø�DŠyˆy˜XˆyØØÕ*Ð*Ð*à—I’I‘K”K�ØØ�lÐ"Ð"Ø—x’x Ñ)Ô)¨3Ð.Ð.ØÕ)Ð)Ð)Ø—’ §¢¡	¤	Ñ*Ô*Ð*Ð*Ø�Ø�tà—’ Ñ"Ô"Ð"å�T‘
”
ˆAð!	ð$ �Š9ˆ9Ø�MŠM‰OŒOˆOØ—8’8˜HÑ%Ô% sÐ*Ð*åˆT‰
Œ
ˆ
à�IŠI‰KŒKˆà�ÐÐàˆIð(å˜‘J”J�à˜	’>�>Ý˜‘J”J�JØŸ8š8 HÑ-Ô-¨s¯xªx¸	Ñ/BÔ/BÐBÐBàÕ-Ð-Ð-Ø×$Ò$ Q§W¢W¡Y¤YÑ/Ô/Ð/Ð/ð ×$Ò$ QÑ'Ô'Ð'ð(ð �$ŠYˆYØ—8’8˜HÑ%Ô% sÐ*Ð*ØÕ%Ð%Ð%Ø×Ò˜QŸWšW™YœYÑ'Ô'Ð'Ð'ØˆYØ�4à×Ò˜QÑÔÐð		$Ý�T‘
”
ˆAØÕ'Ð'Ð'Ø—x’x Ñ)Ô)¨3¯8ª8°IÑ+>Ô+>Ð>Ð>ØÕ)Ð)Ð)Ø× Ò  §¢¡¤Ñ+Ô+Ð+Ð+Ø�Ø�tà× Ò  Ñ#Ô#Ð#ð		$r   N)rl   rm   rn   ro   rJ   r  rB  rC  rF  rD  rY  rE  rO  r^   r   r   r  r  ¤  s§   € € € € € ØIÐIðð ð ð
ð ð ð<(ð (ð (ð"8ð "8ð "8ðH-ð -ð -ð,ð ,ð ,ðð ð ð.&ð &ð &ðJ$ð J$ð J$ð J$ð J$r   r  c                   ó   — e Zd Zd„ Zd„ ZdS )rP  c                 óB   — t          |t          ¦  «        sJ ‚|| _        d S rÙ   )ru   rZ   rc   r@  s     r   rJ   zContentAttrParser.__init__a  s#   € Ý˜$¥Ñ&Ô&Ð&Ð&Ð&ØˆŒ	ˆ	ˆ	r   c                 óÞ  — 	 | j                              d¦  «         | j         xj        dz  c_        | j                              ¦   «          | j         j        dk    sd S | j         xj        dz  c_        | j                              ¦   «          | j         j        dv rb| j         j        }| j         xj        dz  c_        | j         j        }| j                              |¦  «        r| j         || j         j        …         S d S | j         j        }	 | j                              t          ¦  «         | j         || j         j        …         S # t          $ r | j         |d …         cY S w xY w# t          $ r Y d S w xY w)NrN  r   rb  )rd  rc  )rc   r:  rH   rÃ   r<  r4  r=  r   )rI   Ú	quoteMarkÚoldPositions      r   rQ  zContentAttrParser.parsee  s‡  € ð	ð ŒI×Ò˜ZÑ(Ô(Ð(ØŒIÐÔ !Ñ#ÐÔØŒI�NŠNÑÔÐØ”9Ô(¨DÒ0Ð0à�tØŒIÐÔ !Ñ#ÐÔØŒI�NŠNÑÔÐàŒyÔ$¨Ð4Ð4Ø œIÔ1�	Ø”	Ð"Ô" aÑ'Ð"Ô"Ø"œiÔ0�Ø”9×#Ò# IÑ.Ô.ð  Øœ9 [°´Ô1CÐ%CÔDÐDà˜4ð #œiÔ0�ð3Ø”I×'Ò'Õ(<Ñ=Ô=Ð=Øœ9 [°´Ô1CÐ%CÔDÐDøÝ$ð 3ð 3ð 3àœ9 [ \ \Ô2Ð2Ð2Ð2ð3øøøøõ ð 	ð 	ð 	Ø�4�4ð	øøøs=   ‚AE ÁBE Ã:E Ä7D? Ä?EÅE ÅEÅE Å
E,Å+E,N)rl   rm   rn   rJ   rQ  r^   r   r   rP  rP  `  s2   € € € € € ðð ð ðð ð ð ð r   rP  c                 óÐ   — t          | t          ¦  «        r(	 |                      d¦  «        } n# t          $ r Y dS w xY w| �&	 t	          j        | ¦  «        S # t          $ r Y dS w xY wdS )z{Return the python codec name corresponding to an encoding or None if the
    string doesn't correspond to a valid encoding.r   N)ru   rZ   ÚdecodeÚUnicodeDecodeErrorÚwebencodingsÚlookupÚAttributeError)rð   s    r   rŽ   rŽ   ‡  s—   € õ �(�EÑ"Ô"ð ð	Ø—’ wÑ/Ô/ˆHˆHøÝ!ð 	ð 	ð 	Ø�4�4ð	øøøð Ðð	ÝÔ& xÑ0Ô0Ð0øÝð 	ð 	ð 	Ø�4�4ð	øøøð ˆts   —- ­
;º;ÁA Á
A#Á"A#)/Ú
__future__r   r   r   Úsixr   Ú	six.movesr   r   r  rÍ   Úior	   r
   rr  Ú	constantsr   r   r   r   r   r”   r   re  r=  r\  rf  r]  Úinvalid_unicode_no_surrogater‰   r    rÎ   Úevalr¸   rÂ   Úascii_punctuation_rerË   ÚobjectrD   r‚   r|   r}   rZ   r  r  rP  rŽ   r^   r   r   ú<module>r~     s_  ðØ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à €€€Ø 	€	€	€	Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð à IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ð !�yÐ!SÐ!SÀ?Ð!SÑ!SÔ!SÑTÔTÐ Ø�IÐMÐMÀÐMÑMÔMÑNÔNÐ Ø�iÐ QÐ QÀ.Ð QÑ QÔ QÑRÔRÐ Ø*¨Y¨Y¸¸d°|Ñ-DÔ-DÑDÐ ð  jÐ à	Ô"ð 
Bð
 (¨Ô+¨sÒ2Ð2Ð7S×7YÒ7YÐZ]Ñ7^Ô7^ÐbcÒ7cÐ7cÐ7cÐ7cØ#˜œÐ$@ÀÀ"ÀÔ$EØ$( DÐ)<Ñ$=Ô$=ñ%>à$'ñ%(ñ )ô )ÐÐð $˜œÐ$@ÑAÔAÐð2ð 2ð 2Ð ð "�r”zÐ"mÑnÔnÐ ð €ðGð Gð Gð Gð G�Vñ Gô Gð GðT7ð 7ð 7ð.c<ð c<ð c<ð c<ð c<˜Vñ c<ô c<ð c<ðLEð Eð Eð Eð EÐ2ñ Eô Eð EðP_ð _ð _ð _ð _�Eñ _ô _ð _ðDy$ð y$ð y$ð y$ð y$�Vñ y$ô y$ð y$ðx$ð $ð $ð $ð $˜ñ $ô $ð $ðNð ð ð ð r   