§
    ¡”jwQ  ã                   ó$  — U d Z dZdZddlZddlZddlZddlZddlZddlm	Z	 ddl
m
Z
mZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZ ej        dd…         dk    rddlmZ nddlmZ ej        dk    rddlmZ nddlmZ ddlmZmZmZ eee e e f         ee e e f         ee e e f         f         Z!ee"d<   ee e e e e e f         Z#ee"d<   ee         Z$ee%         Z&ee'e$f         Z(dee'         dee
         fd„Z)de
de'fd„Z*de'de'de'fd„Z+dZ,d -                    e,¦  «        Z.de.z   dz   Z/dVd e$d!ee0         de%fd"„Z1d e&de%fd#„Z2d e$de3fd$„Z4d%e%de3fd&„Z5d e$ddfd'„Z6d e$d(ee%         de%fd)„Z7d e&d*e0de%fd+„Z8d e$de%fd,„Z9d-e!d.e!de!fd/„Z:d e$ddfd0„Z;ed.e'de0fd1„¦   «         Z<ed.e%de%fd2„¦   «         Z<ed.e0de0fd3„¦   «         Z<d.ee0e'e%f         dee0e%f         fd4„Z<dWd6e'd7e0ddfd8„Z=d6e'ddfd9„Z>d:e'd;e'd<e'ddfd=„Z?d:e'd;e'd<e'ddfd>„Z@d?e'd<e'ddfd@„ZAd?e'd<e'ddfdA„ZBdBe'dCe'dDeddfdE„ZCd6e'dFe'ddfdG„ZD	 dXdIe'dJeEe'ef         dKeEe'e'f         dLe3ddf
dM„ZFdNe0de'fdO„ZG G dP„ dQ¦  «        ZHe	 G dR„ dS¦  «        ¦   «         ZIejJ         G dT„ dU¦  «        ¦   «         ZKdS )Yz"Utility functions for PDF library.zMathieu Fenniakzbiziqe@mathieu.fenniak.neté    N)Ú	dataclass)ÚdatetimeÚtimezone)ÚDEFAULT_BUFFER_SIZE)ÚSEEK_CUR)ÚPattern)ÚIOÚAnyÚOptionalÚUnionÚoverloadé   )é   é
   )Ú	TypeAlias)r   é   )ÚSelfé   )ÚSTREAM_TRUNCATED_PREMATURELYÚDeprecationErrorÚPdfStreamErrorÚTransformationMatrixTypeÚCompressedTransformationMatrixÚtextÚreturnc                 ó”  — | }| sd S | d                               ¦   «         rd| z   } |                      d¦  «        r| dz  } |                      dd¦  «                             dd¦  «                             dd	¦  «        } t          |                      d¦  «        |                      d
¦  «        ¦  «        }|dk    r|t          | ¦  «        dz
  k    r| dz  } dD ]`}	 t          j        | |¦  «        }|                      d¦  «        r |                     t          j	        ¬¦  «        }|c S # t          $ r Y Œ]w xY wt          d|› �¦  «        ‚)Nr   zD:)ÚZÚzÚ0000r   ú+r   ú'Ú ú-é   Ú00)zD:%YzD:%Y%mzD:%Y%m%dz
D:%Y%m%d%HzD:%Y%m%d%H%MúD:%Y%m%d%H%M%SzD:%Y%m%d%H%M%S%zz+0000)ÚtzinfozCan not convert date: )ÚisdigitÚendswithÚreplaceÚmaxÚfindÚlenr   Ústrptimer   ÚutcÚ
ValueError)r   ÚorgtextÚiÚfÚds        ú[/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pypdf/_utils.pyÚparse_iso8824_dater6   O   sc  € Ø€GØð ØˆtØˆA„w‡‚ÑÔð Ø�d‰{ˆØ‡}‚}�ZÑ Ô ð Ø�‰ˆØ�<Š<˜˜SÑ!Ô!×)Ò)¨#¨sÑ3Ô3×;Ò;¸CÀÑDÔD€DÝˆD�IŠI�c‰NŒN˜DŸIšI c™NœNÑ+Ô+€AØˆ1‚u€u�•c˜$‘i”i !‘mÒ#Ð#Ø�‰ˆðð ð ˆð	ÝÔ! $¨Ñ*Ô*ˆAð �}Š}˜WÑ%Ô%ð 3Ø—I’I¥X¤\�IÑ2Ô2�ØˆHˆHˆHøõ ð 	ð 	ð 	ØˆHð	øøøõ Ð7¨gÐ7Ð7Ñ
8Ô
8Ð8s   ÃD(Ä(
D5Ä4D5Údtc                 ó,  — |                       d¦  «        }| j        �w|                      ¦   «         }|€J ‚t          |                     ¦   «         ¦  «        }t          t          |¦  «        d¦  «        \  }}|dz  }|dk    rdnd}||› |d›d	|d›d	�z  }|S )
a  
    Convert a datetime object to PDF date string format.

    Converts datetime to the PDF date format D:YYYYMMDDHHmmSSOHH'mm
    as specified in the PDF Reference.

    Args:
        dt: A datetime object to convert.

    Returns:
        A date string in PDF format.
    r&   Ni  é<   r   r    r#   Ú02dr!   )Ústrftimer'   Ú	utcoffsetÚintÚtotal_secondsÚdivmodÚabs)r7   Údate_strÚoffsetr>   ÚhoursÚ	remainderÚminutesÚsigns           r5   Úformat_iso8824_daterG   o   s³   € ð �{Š{Ð+Ñ,Ô,€HØ	„yÐØ—’‘”ˆØÐ!Ð!Ð!Ý˜F×0Ò0Ñ2Ô2Ñ3Ô3ˆÝ!¥# mÑ"4Ô"4°dÑ;Ô;ÑˆˆyØ˜r‘/ˆØ# qÒ(Ð(ˆsˆs¨cˆØ�tÐ7˜UÐ7Ð7Ð7¨Ð7Ð7Ð7Ð7Ñ7ˆØ€Oó    Úheader1Úheader2c                 ó6  — d}g }| |v r(|                      |                     | ¦  «        ¦  «         ||v r(|                      |                     |¦  «        ¦  «         t          |¦  «        dk    rt          d| ›d|›d�¦  «        ‚|t	          |¦  «                 S )N)z%PDF-1.3z%PDF-1.4z%PDF-1.5z%PDF-1.6z%PDF-1.7z%PDF-2.0r   zNeither z nor z are proper headers)ÚappendÚindexr-   r0   r+   )rI   rJ   ÚversionsÚpdf_header_indicess       r5   Ú_get_max_pdf_version_headerrP   ˆ   s±   € ð€Hð ÐØ�(ÐÐØ×!Ò! (§.¢.°Ñ"9Ô"9Ñ:Ô:Ð:Ø�(ÐÐØ×!Ò! (§.¢.°Ñ"9Ô"9Ñ:Ô:Ð:Ý
ÐÑÔ !Ò#Ð#ÝÐR GÐRÐR°GÐRÐRÐRÑSÔSÐSØ•CÐ*Ñ+Ô+Ô,Ð,rH   )ó    ó   	ó   
ó   ó   ó    rH   ó   [ó   ]ÚstreamÚmaxcharsc                 ó˜   — d}	 |                       d¦  «        }|                     ¦   «         s|sn||z  }t          |¦  «        |k    rnŒF|S )a<  
    Read non-whitespace characters and return them.

    Stops upon encountering whitespace or when maxchars is reached.

    Args:
        stream: The data stream from which was read.
        maxchars: The maximum number of bytes returned; by default unlimited.

    Returns:
        The data which was read.

    rH   Tr   )ÚreadÚisspacer-   )rY   rZ   ÚtxtÚtoks       r5   Úread_until_whitespacer`       s`   € ð €CðØ�kŠk˜!‰nŒnˆØ�;Š;‰=Œ=ð 	 ð 	ØØˆs‰
ˆÝˆs‰8Œ8�xÒÐØðð €JrH   c                 ó~   — |                       d¦  «        }|t          v r|                       d¦  «        }|t          v °|S )z¿
    Find and read the next non-whitespace character (ignores whitespace).

    Args:
        stream: The data stream from which was read.

    Returns:
        The data which was read.

    r   ©r\   ÚWHITESPACES©rY   r_   s     r5   Úread_non_whitespacere   ¹   s?   € ð �+Š+�a‰.Œ.€CØ
•Ð
Ð
Ø�kŠk˜!‰nŒnˆð •Ð
Ð
à€JrH   c                 ó”   — |                       d¦  «        }d}|t          v r#|dz  }|                       d¦  «        }|t          v °#|dk    S )a  
    Similar to read_non_whitespace, but return a boolean if at least one
    whitespace character was read.

    Args:
        stream: The data stream from which was read.

    Returns:
        True if one or more whitespace was skipped, otherwise return False.

    r   r   rb   )rY   r_   Úcnts      r5   Úskip_over_whitespacerh   Ê   sS   € ð �+Š+�a‰.Œ.€CØ
€CØ
•Ð
Ð
Øˆq‰ˆØ�kŠk˜!‰nŒnˆð •Ð
Ð
ð �Š7€NrH   Úvaluec                 ó4   — t          d„ | D ¦   «         ¦  «        S )zÙ
    Check if the given value consists of whitespace characters only.

    Args:
        value: The bytes to check.

    Returns:
        True if the value only has whitespace characters, otherwise return False.

    c              3   ó(   K  — | ]}|t           v V — Œd S ©N)ÚWHITESPACES_AS_BYTES)Ú.0Úbs     r5   ú	<genexpr>z+check_if_whitespace_only.<locals>.<genexpr>é   s(   è è € Ð8Ð8¨QˆqÕ(Ð(Ð8Ð8Ð8Ð8Ð8Ð8rH   )Úall)ri   s    r5   Úcheck_if_whitespace_onlyrr   Þ   s!   € õ Ð8Ð8°%Ð8Ñ8Ô8Ñ8Ô8Ð8rH   c                 óÔ   — |                       d¦  «        }|                      dd¦  «         |dk    r4|dvr2|                       d¦  «        }|dk    rt          d¦  «        ‚|dv°.d S d S d S )Nr   éÿÿÿÿó   %)rS   rU   rH   zFile ended unexpectedly.)r\   Úseekr   rd   s     r5   Úskip_over_commentrw   ì   s€   € Ø
�+Š+�a‰.Œ.€CØ
‡K‚K��AÑÔÐØ
ˆd‚{€{Ø˜Ð'Ð'Ø—+’+˜a‘.”.ˆCØ�cŠzˆzÝ$Ð%?Ñ@Ô@Ð@ð ˜Ð'Ð'Ð'Ð'ð €{Ø'Ð'rH   Úregexc                 ó(  — g }d}d}d}	 |                       |¦  «        }|sd                     |¦  «        S ||z   }|                     |¦  «        }|�„t          |¦  «        }	||	z
  |                     ¦   «         z   }
|                      |
|z
  t          |¦  «        z
  d¦  «         |                     |¦  «         d                     |¦  «        d|
…         S |                     |¦  «         |t          |¦  «        z  }|dd…         }|dk     r|dz  }�Œ
)	zê
    Read until the regular expression pattern matched (ignore the match).
    Treats EOF on the underlying stream as the end of the token to be matched.

    Args:
        regex: re.Pattern

    Returns:
        The read bytes.

    r   rH   é   TNr   iðÿÿÿi    )r\   ÚjoinÚsearchr-   Ústartrv   rL   )rY   rx   ÚpartsÚ	total_lenÚtailÚ
chunk_sizer_   ÚbufÚmÚoverlapÚactual_starts              r5   Úread_until_regexr†   ö   s#  € ð €EØ€IØ€DØ€JðØ�kŠk˜*Ñ%Ô%ˆØð 	#Ø—8’8˜E‘?”?Ð"ð �S‰jˆØ�LŠL˜ÑÔˆØˆ=Ý˜$‘i”iˆGØ$ wÑ.°·²±´Ñ:ˆLØ�KŠK˜ yÑ0µ3°s±8´8Ñ;¸QÑ?Ô?Ð?Ø�LŠL˜ÑÔÐØ—8’8˜E‘?”? = L =Ô1Ð1Ø�Š�SÑÔÐØ•S˜‘X”XÑˆ	ð �3�4�4ŒyˆØ˜ÒÐØ˜1ÑˆJñ)rH   Úto_readc                 óî   — |                       ¦   «         |k     rt          d¦  «        ‚|                      | t          ¦  «         |                      |¦  «        }|                      | t          ¦  «         |S )a  
    Given a stream at position X, read a block of size to_read ending at position X.

    This changes the stream's position to the beginning of where the block was
    read.

    Args:
        stream:
        to_read:

    Returns:
        The data which was read.

    z!Could not read malformed PDF file)Útellr   rv   r   r\   )rY   r‡   r\   s      r5   Úread_block_backwardsrŠ     sh   € ð ‡{‚{�}„}�wÒÐÝÐ@ÑAÔAÐAà
‡K‚K���(Ñ#Ô#Ð#Ø�;Š;�wÑÔ€Dà
‡K‚K���(Ñ#Ô#Ð#Ø€KrH   c                 ó¦  — g }d}|                       ¦   «         dk    rt          t          ¦  «        ‚	 t          t          |                       ¦   «         ¦  «        }|dk    rnÕt          | |¦  «        }t          |¦  «        dz
  }|s-|dk    r||         dvr|dz  }|dk    r
||         dv°|dk    rd}|rF|                     ||dz   d…         ¦  «         |dk    r||         dv r|dz  }|dk    r
||         dv °n|                     |¦  «         |dk    r|                      |dz   t          ¦  «         n�Œd 
                    |ddd…         ¦  «        S )	a  
    Given a byte stream with current position X, return the previous line.

    All characters between the first CR/LF byte found before X
    (or, the start of the file, if no such byte is found) and position X
    After this call, the stream will be positioned one byte after the
    first non-CRLF character found beyond the first CR/LF byte before X,
    or, if no such byte is found, at the beginning of the stream.

    Args:
        stream: StreamType:

    Returns:
        The data which was read.

    Fr   Tr   s   
NrH   rt   )r‰   r   r   Úminr   rŠ   r-   rL   rv   r   r{   )rY   Úline_contentÚ
found_crlfr‡   ÚblockÚidxs         r5   Úread_previous_liner‘   7  s‘  € ð" €LØ€JØ‡{‚{�}„}˜ÒÐÝÕ9Ñ:Ô:Ð:ð ÝÕ)¨6¯;ª;©=¬=Ñ9Ô9ˆØ�aŠ<ˆ<Øõ % V¨WÑ5Ô5ˆÝ�%‰jŒj˜1‰nˆØð 	"ð ˜’(�(˜u Sœz°Ð8Ð8Ø�q‘�ð ˜’(�(˜u Sœz°Ð8Ð8à�aŠxˆxØ!�
Øð 	'ð
 ×Ò  c¨A¡g i iÔ 0Ñ1Ô1Ð1à˜’(�(˜u Sœz¨WÐ4Ð4Ø�q‘�ð ˜’(�(˜u Sœz¨WÐ4Ð4øð
 ×Ò Ñ&Ô&Ð&Ø�!Š8ˆ8ð �KŠK˜˜a™¥Ñ*Ô*Ð*ØñA ðD �8Š8�L   2 Ô&Ñ'Ô'Ð'rH   Úaro   c                 ó:   ‡— t          ˆfd„| D ¦   «         ¦  «        S )Nc              3   ó^   •‡K  — | ]&Št          ˆfd „t          ‰Ž D ¦   «         ¦  «        V — Œ'dS )c              3   óf   •K  — | ]+}t          d „ t          ‰|¦  «        D ¦   «         ¦  «        V — Œ,dS )c              3   óZ   K  — | ]&\  }}t          |¦  «        t          |¦  «        z  V — Œ'd S rl   )Úfloat)rn   r2   Újs      r5   rp   z6matrix_multiply.<locals>.<genexpr>.<genexpr>.<genexpr>u  s7   è è € Ð@Ð@©$¨!¨Q•%˜‘(”(�U 1™XœXÑ%Ð@Ð@Ð@Ð@Ð@Ð@rH   N)ÚsumÚzip)rn   ÚcolÚrows     €r5   rp   z,matrix_multiply.<locals>.<genexpr>.<genexpr>u  sB   øè è € ÐTÐTÀS�cÐ@Ð@µ#°c¸3±-´-Ð@Ñ@Ô@Ñ@Ô@ÐTÐTÐTÐTÐTÐTrH   N)Útuplerš   )rn   rœ   ro   s    @€r5   rp   z"matrix_multiply.<locals>.<genexpr>t  sZ   øøè è € ð ð àõ 	ÐTÐTÐTÐTÍCÐQRÈGÐTÑTÔTÑTÔTðð ð ð ð ð rH   )r�   )r’   ro   s    `r5   Úmatrix_multiplyrž   q  s=   ø€ õ ð ð ð ð àðñ ô ñ ô ð rH   c                 ó€  — d}|                       | d¦  «         t          dd¦  «        5 }|                     |                      |¦  «        ¦  «         |                     d¦  «         |                     |                      |¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   |                       | d¦  «         dS )z5Create text file showing current location in context.iˆ  r   zpypdf_pdfLocation.txtÚwbs   HEREN)rv   ÚopenÚwriter\   )rY   ÚradiusÚ	output_fhs      r5   Úmark_locationr¥   z  sî   € ð €FØ
‡K‚K��˜ÑÔÐÝ	Ð% tÑ	,Ô	,ð -°	Ø�Š˜Ÿš FÑ+Ô+Ñ,Ô,Ð,Ø�Š˜Ñ Ô Ð Ø�Š˜Ÿš FÑ+Ô+Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð ‡K‚K��˜ÑÔÐÐÐs   ªA&BÂB Â#B c                 ó   — d S rl   © ©ro   s    r5   Úord_r©   †  ó   € à€CrH   c                 ó   — d S rl   r§   r¨   s    r5   r©   r©   ‹  rª   rH   c                 ó   — d S rl   r§   r¨   s    r5   r©   r©   �  rª   rH   c                 óN   — t          | t          ¦  «        rt          | ¦  «        S | S rl   )Ú
isinstanceÚstrÚordr¨   s    r5   r©   r©   •  s$   € Ý�!•SÑÔð Ý�1‰vŒvˆØ€HrH   r   ÚmsgÚ
stacklevelc                 ó>   — t          j        | t          |¬¦  «         d S )N)r²   )ÚwarningsÚwarnÚDeprecationWarning)r±   r²   s     r5   Ú	deprecater·   ›  s    € Ý„M�#Õ)°jÐAÑAÔAÐAÐAÐArH   c                 ó    — t          | ¦  «        ‚rl   )r   )r±   s    r5   Údeprecationr¹   Ÿ  s   € Ý
˜3Ñ
Ô
ÐrH   Úold_nameÚnew_nameÚ
removed_inc                 ó8   — t          | › d|› d|› d�d¦  «         dS )zFIssue a warning that a feature will be removed, but has a replacement.ú, is deprecated and will be removed in pypdf ú. Use ú	 instead.é   N©r·   ©rº   r»   r¼   s      r5   Údeprecate_with_replacementrÄ   £  s>   € åØÐfÐfÀÐfÐfÐS[ÐfÐfÐfØ	ñô ð ð ð rH   c                 ó6   — t          | › d|› d|› d�¦  «         dS )zMRaise an exception that a feature was already removed, but has a replacement.ú( is deprecated and was removed in pypdf r¿   rÀ   N©r¹   rÃ   s      r5   Údeprecation_with_replacementrÈ   «  s:   € åØÐbÐb¸ZÐbÐbÈxÐbÐbÐbñô ð ð ð rH   Únamec                 ó2   — t          | › d|› d�d¦  «         dS )zCIssue a warning that a feature will be removed without replacement.r¾   ú.rÁ   NrÂ   ©rÉ   r¼   s     r5   Údeprecate_no_replacementrÍ   ²  s*   € å�ÐPÐPÀ:ÐPÐPÐPÐRSÑTÔTÐTÐTÐTrH   c                 ó0   — t          | › d|› d�¦  «         dS )zJRaise an exception that a feature was already removed without replacement.rÆ   rË   NrÇ   rÌ   s     r5   Údeprecation_no_replacementrÏ   ·  s'   € å�4ÐNÐNÀÐNÐNÐNÑOÔOÐOÐOÐOrH   ÚmessageÚsourceÚvaluesc                óV   — t          j        |¦  «                             | |¦  «         dS )zØ
    Use this instead of logger.error directly.

    That allows people to overwrite it more easily.

    See the docs on when to use which:
    https://pypdf.readthedocs.io/en/latest/user/suppress-warnings.html
    N)ÚloggingÚ	getLoggerÚerror)rÐ   rÑ   rÒ   s      r5   Úlogger_errorr×   ¼  s+   € õ Ô�fÑÔ×#Ò# G¨VÑ4Ô4Ð4Ð4Ð4rH   Úsrcc                 óT   — t          j        |¦  «                             | ¦  «         dS )a‘  
    Use this instead of logger.warning directly.

    That allows people to overwrite it more easily.

    ## Exception, warnings.warn, logger_warning
    - Exceptions should be used if the user should write code that deals with
      an error case, e.g. the PDF being completely broken.
    - warnings.warn should be used if the user needs to fix their code, e.g.
      DeprecationWarnings
    - logger_warning should be used if the user needs to know that an issue was
      handled by pypdf, e.g. a non-compliant PDF being read in a way that
      pypdf could apply a robustness fix to still read it. This applies mainly
      to strict=False mode.
    N)rÔ   rÕ   Úwarning)r±   rØ   s     r5   Úlogger_warningrÛ   È  s)   € õ  Ô�cÑÔ×"Ò" 3Ñ'Ô'Ð'Ð'Ð'rH   FÚ	func_nameÚkwargsÚaliasesÚfailc                 ó(  — |                      ¦   «         D ]|\  }}||v rs|rt          |› d|› d�¦  «        ‚||v rt          | › d|› d|› d|› d|› d�
¦  «        ‚|                     |¦  «        ||<   t	          j        |› d|› d�t          d¬	¦  «         Œ}d
S )z¥
    Helper function to deprecate arguments.

    Args:
        func_name: Name of the function to be deprecated
        kwargs:
        aliases:
        fail:

    z# is deprecated as an argument. Use z insteadz received both z and z as an argument. z is deprecated. Use rÀ   r   )rÐ   Úcategoryr²   N)Úitemsr   Ú	TypeErrorÚpopr´   rµ   r¶   )rÜ   rÝ   rÞ   rß   Úold_termÚnew_terms         r5   Úrename_kwargsrç   Û  s  € ð &Ÿmšm™oœoð ð Ñˆ�(Ø�vÐÐØð Ý&ØÐVÐVÀHÐVÐVÐVñô ð ð ˜6Ð!Ð!ÝØ ð /ð /°ð /ð /Àð /ð /Ø$,ð/ð /à#ð/ð /ð /ñô ð ð
  &Ÿzšz¨(Ñ3Ô3ˆF�8ÑÝŒMàÐVÐVÀHÐVÐVÐVå+Øðñ ô ð øðð rH   Úbytesc                 óf   — | dk     r| › d�S | dk     r	| dz  d›d�S | dk     r	| dz  d›d�S | dz  d›d�S )	Niè  z Bytei@B z.1fz kBi Êš;z MBz GBr§   )rè   s    r5   Ú_human_readable_bytesrê   þ  sk   € Øˆu‚}€}ØˆˆˆÐØˆu‚}€}Ø˜%‘-Ð(Ð(Ð(Ð(Ð(Øˆu‚}€}Ø˜%‘-Ð(Ð(Ð(Ð(Ð(Ø�e‰mÐ$Ð$Ð$Ð$Ð$rH   c                   ó6   — e Zd ZdZddd„Zddefd„Zdefd„ZdS )	Úclasspropertyz‡
    Decorator that converts a method with a single cls argument into a property
    that can be accessed directly from the class.
    Nr   c                 ó   — || _         d S rl   ©Úfget©ÚselfÚmethods     r5   Ú__init__zclassproperty.__init__1  s   € ØˆŒ	ˆ	ˆ	rH   c                 ó,   — |                       |¦  «        S rl   rî   )rñ   ÚinstanceÚclss      r5   Ú__get__zclassproperty.__get__4  s   € Ø�yŠy˜‰~Œ~ÐrH   c                 ó   — || _         | S rl   rî   rð   s     r5   Úgetterzclassproperty.getter7  s   € ØˆŒ	ØˆrH   rl   )r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ró   r
   r÷   r   rù   r§   rH   r5   rì   rì   +  sr   € € € € € ðð ð
ð ð ð ð ðð ¨Sð ð ð ð ð ð ð ð ð ð ð rH   rì   c                   óp   — e Zd ZU ddlmZ dZeed<   	 dZe	ed<   	 dZ
ee         ed<   	 d	efd
„Zd	efd„ZdS )ÚFiler   )ÚIndirectObjectr"   rÉ   rH   ÚdataNÚindirect_referencer   c           	      ót   — | j         j        › d| j        › dt          t	          | j        ¦  «        ¦  «        › d�S )Nz(name=z, data: ú))Ú	__class__rú   rÉ   rê   r-   r  ©rñ   s    r5   Ú__str__zFile.__str__M  s>   € Ø”.Ô)ÐlÐl°´ÐlÐlÕDYÕZ]Ð^bÔ^gÑZhÔZhÑDiÔDiÐlÐlÐlÐlrH   c                 ól   — |                       ¦   «         d d…         dt          | j        ¦  «        › d�z   S )Nrt   z, hash: r  )r  Úhashr  r  s    r5   Ú__repr__zFile.__repr__P  s2   € Ø�|Š|‰~Œ~˜c˜r˜cÔ"Ð%Bµ°T´Y±´Ð%BÐ%BÐ%BÑBÐBrH   )rú   rû   rü   Úgenericr   rÉ   r¯   Ú__annotations__r  rè   r  r   r  r
  r§   rH   r5   rÿ   rÿ   <  s°   € € € € € € à'Ð'Ð'Ð'Ð'Ð'à€Dˆ#€N€N�Nðð €Dˆ%ÐÐÑðð 48Ð˜ Ô0Ð7Ð7Ñ7ððm˜ð mð mð mð mðC˜#ð Cð Cð Cð Cð Cð CrH   rÿ   c                   ó–   — e Zd Z ej        d¦  «        Zdeddfd„Zdedee	e
ef                  fd„Zdedefd„Zde
fd	„Zdedefd
„ZdS )ÚVersionz^(\d+)(.*)$Úversion_strr   Nc                 óH   — || _         |                      |¦  «        | _        d S rl   )r  Ú_parse_versionÚ
components)rñ   r  s     r5   ró   zVersion.__init__X  s#   € Ø&ˆÔØ×-Ò-¨kÑ:Ô:ˆŒˆˆrH   c                 óT  — |                      d¦  «        }g }|D ]�}t          j                             |¦  «        }|s|                     d|f¦  «         Œ;|                     d¦  «        }|                     d¦  «        }|€d}|                     t          |¦  «        |f¦  «         ŒŽ|S )NrË   r   r   r   )Úsplitr  ÚCOMPONENT_PATTERNÚmatchrL   Úgroupr=   )rñ   r  r  Úparsed_componentsÚ	componentr  Úinteger_prefixÚsuffixs           r5   r  zVersion._parse_version\  s¸   € Ø ×&Ò& sÑ+Ô+ˆ
ØÐØ#ð 		Dð 		DˆIÝÔ-×3Ò3°IÑ>Ô>ˆEØð Ø!×(Ò(¨!¨Y¨Ñ8Ô8Ð8ØØ"Ÿ[š[¨™^œ^ˆNØ—[’[ ‘^”^ˆFØÐ%Ø!"�Ø×$Ò$¥c¨.Ñ&9Ô&9¸6Ð%BÑCÔCÐCÐCØ Ð rH   Úotherc                 óP   — t          |t          ¦  «        sdS | j        |j        k    S )NF)r®   r  r  )rñ   r  s     r5   Ú__eq__zVersion.__eq__k  s)   € Ý˜%¥Ñ)Ô)ð 	Ø�5ØŒ %Ô"2Ò2Ð2rH   c                 óR   — t          | j        t          | j        ¦  «        f¦  «        S rl   )r	  r  r�   r  r  s    r5   Ú__hash__zVersion.__hash__p  s!   € å�T”^¥U¨4¬?Ñ%;Ô%;Ð<Ñ=Ô=Ð=rH   c                 óZ  — t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t	          | j        |j        ¦  «        D ]3\  }}|\  }}|\  }}||k     r dS ||k    r dS ||k     r dS ||k    r dS Œ4t          | j        ¦  «        t          |j        ¦  «        k     S )Nz#Version cannot be compared against TF)r®   r  r0   Útyperš   r  r-   )rñ   r  Úself_componentÚother_componentÚ
self_valueÚself_suffixÚother_valueÚother_suffixs           r5   Ú__lt__zVersion.__lt__t  sØ   € Ý˜%¥Ñ)Ô)ð 	RÝÐPÅ4ÈÁ;Ä;ÐPÐPÑQÔQÐQå/2°4´?ÀEÔDTÑ/UÔ/Uð 	ð 	Ñ+ˆN˜OØ&4Ñ#ˆJ˜Ø(7Ñ%ˆK˜à˜KÒ'Ð'Ø�t�tØ˜KÒ'Ð'Ø�u�uà˜\Ò)Ð)Ø�t�tØ˜\Ò)Ð)Ø�u�uð *õ �4”?Ñ#Ô#¥c¨%Ô*:Ñ&;Ô&;Ò;Ð;rH   )rú   rû   rü   ÚreÚcompiler  r¯   ró   Úlistr�   r=   r  ÚobjectÚboolr  r   r
   r)  r§   rH   r5   r  r  T  sÖ   € € € € € à"˜œ
 >Ñ2Ô2Ðð; Cð ;¨Dð ;ð ;ð ;ð ;ð!¨#ð !°$°u¸SÀ#¸X´Ô2Gð !ð !ð !ð !ð3˜Fð 3 tð 3ð 3ð 3ð 3ð
>˜#ð >ð >ð >ð >ð<˜Cð < Dð <ð <ð <ð <ð <ð <rH   r  rl   )r   )F)Lrý   Ú
__author__Ú__author_email__Ú	functoolsrÔ   r*  Úsysr´   Údataclassesr   r   r   Úior   Úosr   r   Útypingr	   r
   r   r   r   Úversion_infor   Útyping_extensionsr   Úerrorsr   r   r   r�   r—   r   r  r   Ú
StreamTyperè   ÚBinaryStreamTyper¯   ÚStrByteTyper6   rG   rP   rc   r{   rm   ÚWHITESPACES_AS_REGEXPr=   r`   re   r.  rh   rr   rw   r†   rŠ   r‘   rž   r¥   r©   r·   r¹   rÄ   rÈ   rÍ   rÏ   r×   rÛ   Údictrç   rê   rì   rÿ   Útotal_orderingr  r§   rH   r5   ú<module>r@     s·  ðð8 )Ð (Ð (Ø€
Ø/Ð à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ô�B�Q�BÔ˜7Ò"Ð"à Ð Ð Ð Ð Ð Ð à+Ð+Ð+Ð+Ð+Ð+àÔ�wÒÐØÐÐÐÐÐÐà&Ð&Ð&Ð&Ð&Ð&ðð ð ð ð ð ð ð ð ð ð ',Ø	ˆ%�˜Ð
Ô  e¨U°EÐ&9Ô :¸EÀ%ÈÐPUÐBUÔ<VÐVô'Ð ˜)ð ð ñ ð -2Ø	ˆ5�%˜  uÐ,ô-Ð  	ð ð ñ ð �ŒW€
Ø�e”9Ð Ø�C˜�OÔ$€ð9˜X cœ]ð 9¨x¸Ô/Að 9ð 9ð 9ð 9ð@˜Hð ¨ð ð ð ð ð2-¨ð -°sð -¸sð -ð -ð -ð -ð& :€Ø—x’x Ñ,Ô,Ð ØÐ3Ñ3°dÑ:Ð ðð  *ð ¸À¼ð ÐQVð ð ð ð ð2Ð 0ð °Uð ð ð ð ð" ð °ð ð ð ð ð(9 Eð 9¨dð 9ð 9ð 9ð 9ðA˜jð A¨Tð Að Að Að Að%˜Zð %°¸´ð %À5ð %ð %ð %ð %ðPÐ!1ð ¸Cð ÀEð ð ð ð ð27(˜zð 7(¨eð 7(ð 7(ð 7(ð 7(ðtØðØ$<ðàðð ð ð ð	˜*ð 	¨ð 	ð 	ð 	ð 	ð 
ðˆCð �Cð ð ð ñ 
„ðð 
ðˆEð �eð ð ð ñ 
„ðð 
ðˆCð �Cð ð ð ñ 
„ððˆE�#�s˜E�/Ô"ð  u¨S°%¨ZÔ'8ð ð ð ð ðBð B�3ð B Cð B°ð Bð Bð Bð Bð �Sð  ˜Tð  ð  ð  ð  ð¨ð ¸ð Èð ÐQUð ð ð ð ð¨3ð ¸#ð È3ð ÐSWð ð ð ð ðU 3ð U°Cð U¸Dð Uð Uð Uð Uð
P Sð P°cð P¸dð Pð Pð Pð Pð
	5˜#ð 	5¨#ð 	5¸ð 	5Àð 	5ð 	5ð 	5ð 	5ð(˜ð ( #ð (¨$ð (ð (ð (ð (ð( SXð ð  Øð Ø   c œNð Ø59¸#¸s¸(´^ð ØKOð à	ð ð  ð  ð  ðF% ð %¨ð %ð %ð %ð %ðZð ð ð ð ñ ô ð ð" ðCð Cð Cð Cð Cñ Cô Cñ „ðCð. Ôð1<ð 1<ð 1<ð 1<ð 1<ñ 1<ô 1<ñ Ôð1<ð 1<ð 1<rH   