� K�g,~����ddlmZmZmZddlmZddlmZmZddl Z ddl Z ddl m Z m Z ddlZddlmZmZmZmZddlmZdd lmZed �eD����Zed �eD����Zed �eD����Zeed dg��zZdZejrOeddkre�d��dksJ�e jedd�e d��zdz��Z!ne je��Z!hd�Z"e jd��Z#iZ$Gd�de%��Z&d�Z'Gd�de%��Z(Gd�de(��Z)Gd�de*��Z+Gd�de%��Z,Gd �d!e%��Z-d"�Z.dS)#�)�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 �e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/html5lib/_inputstream.py� <listcomp>rs$��!S�!S�!S�4�$�+�+�g�"6�"6�!S�!S�!S�c�8�g|]}|�d����Srrrs rrrs$��M�M�M��t�{�{�7�3�3�M�M�Mrc�8�g|]}|�d����Srrrs rrrs$�� Q� Q� Q�$����W�!5�!5� Q� Q� Qr�>�<u�[- --Ÿ﷐-﷯￾￿🿾🿿𯿾𯿿𿿾𿿿񏿾񏿿񟿾񟿿񯿾񯿿񿿾񿿿򏿾򏿿򟿾򟿿򯿾򯿿򿿾򿿿󏿾󏿿󟿾󟿿󯿾󯿿󿿾󿿿􏿾􏿿]������]z"\uD800-\uDFFF"> ��������������������������� ��� ��� ��� ��� ������������������������������������ ��� ��� ��� ��� ���������z[ - -/:-@\[-`{-~]c�<�eZdZdZd�Zd�Zd�Zd�Zd�Zd�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|_ddg|_dS)Nr!r)�stream�buffer�position)�selfrFs r�__init__zBufferedStream.__init__:s���� ��� ��Q��� � � rc��d}|jd|jd�D]}|t|��z }�||jdz }|S�Nrr )rGrH�len)rI�pos�chunks r�tellzBufferedStream.tell?sR�����[�!2�$�-��"2�!2�3� � �E� �3�u�:�:� �C�C� �t�}�Q����� rc��||���ksJ�|}d}t|j|��|kr@|t|j|��z}|dz }t|j|��|k�@||g|_dSrL)�_bufferedBytesrMrGrH)rIrN�offset�is r�seekzBufferedStream.seekFs����d�)�)�+�+�+�+�+�+��� ���$�+�a�.�!�!�F�*�*� �c�$�+�a�.�)�)� )�F� ��F�A��$�+�a�.�!�!�F�*�*��F� �� � � rc�&�|js|�|��S|jdt|j��kr>|jdt|jd��kr|�|��S|�|��S)Nrr r!)rG� _readStreamrHrM�_readFromBuffer�rI�bytess r�readzBufferedStream.readOs����{� /��#�#�E�*�*� *��m�A��#�d�k�"2�"2�2�2��m�A��#�d�k�"�o�"6�"6�6�6��#�#�E�*�*� *��'�'��.�.� .rc�>�td�|jD����S)Nc�,�g|]}t|����S�)rMrs rrz1BufferedStream._bufferedBytes.<locals>.<listcomp>Ys��6�6�6�$�C��I�I�6�6�6r)�sumrG�rIs rrRzBufferedStream._bufferedBytesXs!���6�6�$�+�6�6�6�7�7�7rc���|j�|��}|j�|��|jdxxdz cc<t |��|jd<|SrL)rFr[rG�appendrHrM)rIrZ�datas rrWzBufferedStream._readStream[sb���{����&�&�� � ���4� � � � � �a����A������t�9�9�� �a��� rc�P�|}g}|jd}|jd}|t|j��kr�|dkr�|dksJ�|j|}|t|��|z kr|}|||zg|_n-t|��|z }|t|��g|_|dz }|�||||z���||z}d}|t|j��kr|dk��|r(|�|�|����d�|��S)Nrr r)rHrMrGrbrW�join)rIrZ�remainingBytes�rv� bufferIndex� bufferOffset� bufferedData� bytesToReads rrXzBufferedStream._readFromBufferbsK���� ���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��|�|�rN) �__name__� __module__� __qualname__�__doc__rJrPrUr[rRrWrXr^rrrDrD3s���������  � � � ���$�$�$�/�/�/�8�8�8��������rrDc ���t|tj��s>t|tjj��r"t|jtj��rd}nNt|d��r)t|�d��t��}nt|t��}|r-d�|D��}|rtd|z���t|fi|��St|fi|��S)NFr[rc�<�g|]}|�d���|��S)� _encoding)�endswith)r�xs rrz#HTMLInputStream.<locals>.<listcomp>�s)��B�B�B�1�!�*�*�[�*A�*A�B�Q�B�B�Brz3Cannot 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�6rc�\�eZdZdZdZd�Zd�Zd�Zd�Zd�Z d�Z dd �Z d �Z d �Z dd�Zd�Zd 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��tjsd|_n,td��dkr |j|_n |j|_dg|_td��df|_|� |��|_ |� ��dS)�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)rIr~s rrJzHTMLUnicodeInputStream.__init__�s����.� B�*.�D� &� &� �� � �!� #� #�)-�)A�D� &� &�)-�)A�D� &���� �+�G�4�4�i�@����/�/�&�1�1��� � � � � � � � rc�h�d|_d|_d|_g|_d|_d|_d|_dS)N�r)rO� chunkSize� chunkOffset�errors� prevNumLines� prevNumCols�_bufferedCharacterr`s rr�zHTMLUnicodeInputStream.reset�sA���� ��������� �������#'����rc�J�t|d��r|}nt|��}|S�zvProduces a file object from source. source can be either a file object, local filename or a string. r[)rzr �rIr~rFs rr�z!HTMLUnicodeInputStream.openStream�s/�� �6�6� "� "� &��F�F��f�%�%�F�� rc��|j}|�dd|��}|j|z}|�dd|��}|dkr |j|z}n||dzz }||fS)N� rr!r )rO�countr��rfindr�)rIrSrO�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�-�-rc�J�|�|j��\}}|dz|fS)z:Returns (line, col) of the current position in the stream.r )r�r�)rI�line�cols rrHzHTMLUnicodeInputStream.position�s(���N�N�4�#3�4�4� ��c��q��#��rc��|j|jkr|���stS|j}|j|}|dz|_|S)zo Read one character from the stream or queue if available. Return EOF when EOF is reached. r )r�r�� readChunkr rO)rIr��chars rr�zHTMLUnicodeInputStream.char�sP�� � �t�~� -� -��>�>�#�#� �� ��&� ��z�+�&��&��?���� rNc�n�|�|j}|�|j��\|_|_d|_d|_d|_|j�|��}|j r|j |z}d|_ n|sdSt|��dkrBt|d��}|dksd|cxkrdkrnn|d|_ |dd�}|j r|� |��|� d d ��}|� d d ��}||_t|��|_d S) Nr�rFr r!� ��i��z r�� T)�_defaultChunkSizer�r�r�r�rOr�r�r[r�rM�ordr��replace)rIr�rc�lastvs rr�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������trc��ttt�|������D]}|j�d���dS)N�invalid-codepoint)�rangerM�invalid_unicode_re�findallr�rb)rIrc�_s rr�z*HTMLUnicodeInputStream.characterErrorsUCS4sT���s�-�5�5�d�;�;�<�<�=�=� 4� 4�A� �K� � �2� 3� 3� 3� 3� 4� 4rc�.�d}t�|��D]�}|r�t|�����}|���}t j|||dz���rEt j|||dz���}|tvr|j � d��d}��|dkr7|dkr1|t|��dz kr|j � d����d}|j � d����dS)NF�r�Tr�i��r ) r��finditerr��group�startr�isSurrogatePair�surrogatePairToCodepoint�non_bmp_invalid_codepointsr�rbrM)rIrc�skip�match� codepointrN�char_vals rr�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� 8rFc�� t||f}nt#t$rg |D]}t|��dksJ��d�d�|D����}|sd|z}t jd|z��x}t||f<YnwxYwg} |�|j|j��}|�|j|j krn�nN|� ��}||j kr/|� |j|j|���||_n=|� |j|jd���|� ��sn��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|]}dt|��z��S)z\x%02x)r�)r�cs rrz5HTMLUnicodeInputStream.charsUntil.<locals>.<listcomp>Hs#��D�D�D�A�Y��Q���/�D�D�Drz^%sz[%s]+N) �charsUntilRegEx�KeyErrorr�re�re�compiler�rOr�r��endrbr�) 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�Bc���|turT|jdkr!||jz|_|xjdz c_dS|xjdzc_|j|j|ksJ�dSdSrL)r r�rOr�)rIr�s r�ungetzHTMLUnicodeInputStream.ungetis}�� �s�?�?���1�$�$� "�D�J�.�� ����!�#������ � �A�%� � ��z�$�"2�3�t�;�;�;�;� �?�<�;r�N)F)rlrmrnror�rJr�r�r�rHr�r�r�r�r�r�r^rrr|r|�s��������������@ '� '� '� � � � .� .� .���� � � �$�$�$�$�L4�4�4�8�8�8�.-�-�-�-�^<�<�<�<�<rr|c�F�eZdZdZ d d�Zd�Zd�Zd d�Zd �Zd �Z d �Z dS)r}r�N� windows-1252Tc�V�|�|��|_t�||j��d|_d|_||_||_||_||_ ||_ |� |��|_ |j d�J�|� ��dS)r�i�drN)r�� rawStreamr|rJ� numBytesMeta�numBytesChardet�override_encoding�transport_encoding�same_origin_parent_encoding�likely_encoding�default_encoding�determineEncodingr�r�)rIr~r�r�r�r�r�� useChardets rrJzHTMLBinaryInputStream.__init__�s���$����0�0����'�'��d�n�=�=�=� !���"���!2���"4���+F��(�.��� 0���!�2�2�:�>�>���� ��#�/�/�/� � � � � � � � rc��|jdj�|jd��|_t �|��dS)Nrr�)r�� codec_info� streamreaderr�r�r|r�r`s rr�zHTMLBinaryInputStream.reset�sA���+�A�.�9�F�F�t�~�W`�a�a����$�$�T�*�*�*�*�*rc���t|d��r|}nt|��} |�|�����n#t$rt |��}YnwxYw|Sr�)rzr rUrP� ExceptionrDr�s rr�z HTMLBinaryInputStream.openStream�s}�� �6�6� "� "� %��F�F��V�_�_�F� ,� �K�K�� � � � � &� &� &� &��� ,� ,� ,�#�F�+�+�F�F�F� ,����� s�'A � A(�'A(c���|���df}|d�|St|j��df}|d�|St|j��df}|d�|S|���df}|d�|St|j��df}|d�"|dj�d��s|St|j��df}|d�|S|r� ddl m }g}|��}|j sj|j � |j��}t|t ��sJ�|sn1|�|��|�|��|j �j|���t|jd��}|j �d��|�|dfSn#t,$rYnwxYwt|j��df}|d�|Std��dfS)Nr�r� tentativezutf-16)�UniversalDetector�encodingr�)� detectBOMr�r�r��detectEncodingMetar��name� startswithr��chardet.universaldetectorr��doner�r[r�rurZrb�feed�close�resultrU� ImportErrorr�)rI�chardetr�r��buffers�detectorrGr�s rr�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�Gc��|jddksJ�t|��}|�dS|jdvrtd��}|�J�dS||jdkr|jddf|_dS|j�d��|df|_|���t d|jd�d|�����)Nr r���utf-16be�utf-16ler�rzEncoding changed from z to )r�r�r�r�rUr�r)rI� newEncodings r�changeEncodingz$HTMLBinaryInputStream.changeEncodings���� ��#�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� krc � �tjdtjdtjdtjdtjdi}|j�d��}t|t��sJ�|� |dd���}d}|s8|� |��}d}|s|� |dd ���}d }|r)|j� |��t|��S|j� d ��dS) 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�rrzutf-32lezutf-32be�N�r�r) �codecs�BOM_UTF8� BOM_UTF16_LE� BOM_UTF16_BE� BOM_UTF32_LE� BOM_UTF32_BEr�r[rurZ�getrUr�)rI�bomDict�stringr�rUs rr�zHTMLBinaryInputStream.detectBOMs �� �O�W� � ��V�-@�*� � ��V�-@�*� ����$�$�Q�'�'���&�%�(�(�(�(�(��;�;�v�b�q�b�z�*�*����� ��{�{�6�*�*�H��D�� �"�;�;�v�b�q�b�z�2�2���� � � �N� � �� %� %� %�!�(�+�+� +� �N� � �� "� "� "��4rc� �|j�|j��}t|t��sJ�t |��}|j�d��|���}|�|jdvrtd��}|S)z9Report the encoding declared by the meta element rNr�r�) r�r[r�rurZ�EncodingParserrU� getEncodingr�r�)rIrG�parserr�s rr�z(HTMLBinaryInputStream.detectEncodingMeta3s�����$�$�T�%6�7�7���&�%�(�(�(�(�(���'�'�� ����A�����%�%�'�'�� � �H�M�5M�$M�$M�%�g�.�.�H��r)NNNNr�T)T) rlrmrnrorJr�r�r�rr�r�r^rrr}r}zs���������KO�CG�=A�(�(�(�(�T+�+�+����&<;�<;�<;�<;�|l�l�l� � � �D � � � � rr}c��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z e e e ��Z d �Ze e��Zefd �Zd �Zd �Zd�ZdS)� 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��sJ�t�||�����Sr�)rurZ�__new__�lower�rI�values rrzEncodingBytes.__new__Fs4���%��'�'�'�'�'��}�}�T�5�;�;�=�=�1�1�1rc��d|_dS)Nr!)r�rs rrJzEncodingBytes.__init__Js ������rc��|Sr�r^r`s r�__iter__zEncodingBytes.__iter__Ns��� rc��|jdzx}|_|t|��krt�|dkrt�|||dz�S)Nr r�r�rM� StopIterationr{�rI�ps r�__next__zEncodingBytes.__next__QsJ��!�^�a�/�/��D�N� ��D� � �>�>�� � ��U�U��O��A�a�!�e�G�}�rc�*�|���Sr�)r#r`s r�nextzEncodingBytes.nextYs���}�}���rc��|j}|t|��krt�|dkrt�|dz x|_}|||dz�SrLrr!s r�previouszEncodingBytes.previous]sN�� �N�� ��D� � �>�>�� � ��U�U��O���U�"�����A�a�!�e�G�}�rc�R�|jt|��krt�||_dSr��r�rMr )rIrHs r� setPositionzEncodingBytes.setPositionfs&�� �>�S��Y�Y� &� &�� �!����rc�h�|jt|��krt�|jdkr|jSdS)Nrr)r`s r� getPositionzEncodingBytes.getPositionks5�� �>�S��Y�Y� &� &�� � �>�Q� � ��>� !��4rc�0�||j|jdz�S�Nr )rHr`s r�getCurrentBytezEncodingBytes.getCurrentByteus���D�M�$�-�!�"3�3�4�4rc��|j}|t|��kr2|||dz�}||vr ||_|S|dz }|t|��k�2||_dS)zSkip past a list of charactersr N�rHrMr��rIr�r"r�s rr�zEncodingBytes.skipzsf�� �M���#�d�)�)�m�m��Q�q�1�u�W� �A���~�~�!"����� ��F�A� �#�d�)�)�m�m� ����trc��|j}|t|��kr2|||dz�}||vr ||_|S|dz }|t|��k�2||_dSr.r1r2s r� skipUntilzEncodingBytes.skipUntil�sf�� �M���#�d�)�)�m�m��Q�q�1�u�W� �A��E�z�z�!"����� ��F�A� �#�d�)�)�m�m� ����trc�z�|�||j��}|r|xjt|��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�rHrM)rIrZrgs r� matchByteszEncodingBytes.matchBytes�s<���_�_�U�D�M� 2� 2�� � (� �M�M�S��Z�Z� '�M�M�� rc�� |�||j��t|��zdz |_n#t$rt �wxYwdS)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)�indexrHrMr�� ValueErrorr rYs r�jumpTozEncodingBytes.jumpTo�sV�� �!�Z�Z��t�}�=�=��E� � �J�Q�N�D�N�N��� � � �� � �����ts �36�AN)rlrmrnrorrJrr#r%r'r*r,�propertyrHr/� currentByte�spaceCharactersBytesr�r4r6r:r^rrrrBs ��������2�2�2����������������"�"�"� ����x� �[�1�1�H�5�5�5��(�>�*�*�K�-� � � � � � � ��������rrc�H�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z d �Z d S) rz?Mini parser for detecting character encoding from meta elementsc�<�t|��|_d|_dS)z3string - the data to work on for encoding detectionN)rrcr��rIrcs rrJzEncodingParser.__init__�s��!�$�'�'�� ��� � � rc��d|jvrdSd|jfd|jfd|jfd|jfd|jfd|jff}|jD]w}d} |j�d��n#t$rYnKwxYw|D]?\}}|j�|��r |��}n#t$rd}YnwxYw�@|sn�x|j S) Ns<metas<!--s</s<!s<?r TF) rc� handleComment� handleMeta�handlePossibleEndTag� handleOther�handlePossibleStartTagr:r r6r�)rI�methodDispatchr�� keepParsing�key�methods rrzEncodingParser.getEncoding�s@�� �4�9� $� $��4��d�(� )� �t�� '� �D�-� .� �D�$� %� �D�$� %� �4�.� /� 1���� � �A��K� �� � � ��&�&�&�&�� � � � ���� ����-� � � ��V��9�'�'��,�,���&,�f�h�h� ����(����&+� �������� �� ��� ��}�s$� A%�% A3�2A3� B$�$ B4�3B4c�6�|j�d��S)zSkip over commentss-->�rcr:r`s rrBzEncodingParser.handleComment�s���y����'�'�'rc���|jjtvrdSd}d} |���}|�dS|ddkr|ddk}|r |� ||_dSn�|ddkr#|d}t |��}|� ||_dSnb|ddkrVt t|d����}|���}|�t |��}|� |r ||_dS|}��) NTFrs http-equivr s content-type�charsetscontent) rcr<r=� getAttributer�r��ContentAttrParserr�parse)rI� hasPragma�pendingEncoding�attr�tentativeEncoding�codec� contentParsers rrCzEncodingParser.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 8rc�,�|�d��S)NF)�handlePossibleTagr`s rrFz%EncodingParser.handlePossibleStartTag�s���%�%�e�,�,�,rc�T�t|j��|�d��S)NT)r%rcrYr`s rrDz#EncodingParser.handlePossibleEndTag�s#�� �T�Y�����%�%�d�+�+�+rc�J�|j}|jtvr,|r(|���|���dS|�t ��}|dkr|���n,|���}|�|���}|�dS)NTr )rcr<�asciiLettersBytesr'rEr4�spacesAngleBracketsrO)rI�endTagrcr�rTs rrYz EncodingParser.handlePossibleTag�s����y�� � �#4� 4� 4�� #�� � ����� � �"�"�"��4� �N�N�.� /� /�� ��9�9� �M�M�O�O�O�O��$�$�&�&�D��"��(�(�*�*���"��trc�6�|j�d��S)NrrLr`s rrEzEncodingParser.handleOthers���y����%�%�%rc��|j}|�ttdg��z��}|�t |��dksJ�|dvrdSg}g} |dkr|rn�|tvr|���}nu|dvrd�|��dfS|t vr(|�|�����n|�dS|�|��t|��}��|dkr+|� ��d�|��dfSt|��|���}|d vr�|} t|��}||kr9t|��d�|��d�|��fS|t vr(|�|�����n|�|����|d krd�|��dfS|t vr(|�|�����n|�dS|�|�� t|��}|tvr*d�|��d�|��fS|t vr(|�|�����n|�dS|�|����) z_Return a name,value pair for the next attribute in the stream, if one is found, or None�/Nr )rNT�=)rarr)�'�"r) rcr�r=� frozensetrMre�asciiUppercaseBytesrbrr%r'r])rIrcr��attrName� attrValue� quoteChars rrOzEncodingParser.getAttributes����y�� �I�I�*�Y��v�->�->�>� ?� ?���y�C��F�F�a�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�� � ��#�#�#� $rN) rlrmrnrorJrrBrCrFrDrYrErOr^rrrr�s�������I�I���� ���<(�(�(�"8�"8�"8�H-�-�-�,�,�,����.&�&�&�J$�J$�J$�J$�J$rrc��eZdZd�Zd�ZdS)rPc�B�t|t��sJ�||_dSr�)rurZrcr@s rrJzContentAttrParser.__init__as#���$��&�&�&�&�&��� � � rc��� |j�d��|jxjdz c_|j���|jjdksdS|jxjdz c_|j���|jjdvrb|jj}|jxjdz c_|jj}|j�|��r|j||jj�SdS|jj} |j�t ��|j||jj�S#t$r|j|d�cYSwxYw#t$rYdSwxYw)NrNr rb)rdrc)rcr:rHr�r<r4r=r )rI� quoteMark� oldPositions rrQzContentAttrParser.parsees��� � �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=�AE�BE�: E�7D?�?E�E�E�E� E,�+E,N)rlrmrnrJrQr^rrrPrP`s2�������������rrPc���t|t��r( |�d��}n#t$rYdSwxYw|�& t j|��S#t $rYdSwxYwdS)z{Return the python codec name corresponding to an encoding or None if the string doesn't correspond to a valid encoding.rN)rurZ�decode�UnicodeDecodeError� webencodings�lookup�AttributeError)r�s rr�r��s����(�E�"�"�� ����w�/�/�H�H��!� � � ��4�4� ������ ��&�x�0�0� 0��� � � ��4�4� �����ts�-� ;�;�A� A#�"A#)/� __future__rrr�sixr� six.movesrrrr��ior r rr� constantsr r rrrr�rrer=r\rfr]�invalid_unicode_no_surrogater�r�r��evalr�r��ascii_punctuation_rer��objectrDr�r|r}rZrrrPr�r^rr�<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� c�#���$@��"��$E�$(�D�)<�$=�$=�%>�$'�%(�)�)���$���$@�A�A��2�2�2��"�r�z�"m�n�n����G�G�G�G�G�V�G�G�G�T7�7�7�.c<�c<�c<�c<�c<�V�c<�c<�c<�LE�E�E�E�E�2�E�E�E�P_�_�_�_�_�E�_�_�_�Dy$�y$�y$�y$�y$�V�y$�y$�y$�x$�$�$�$�$��$�$�$�N����r
Memory