§
    §‘Újvc  ã                   óf  — 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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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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.¦  «        Z0de0z   dz   Z1ddd!e&d"ee2         d#e3de'fd$„Z4d!e(de'fd%„Z5d!e&de3fd&„Z6d'e'de3fd(„Z7d)Z8ded+e)d,e)de3fd-„Z9d.Z:dfd+e)d/e)d0e)de3fd1„Z;d!e&ddfd2„Z<dd3œd!e&d4ee2         ddfd5„Z=ej>        d6œd!e&d7ee'         d8e2de'fd9„Z?d!e(d:e2de'fd;„Z@d!e&de'fd<„ZAd=e#d>e#de#fd?„ZBd!e&ddfd@„ZCdgdBe)dCe2ddfdD„ZDdBe)defdE„ZEdFe)dGe)dHe)ddfdI„ZFdFe)dGe)dHe)defdJ„ZGdKe)dHe)ddfdL„ZHdKe)dHe)defdM„ZIdNe)dOe)dPeddfdQ„ZJdNe)dOe)dPeddfdR„ZK	 dhdSe)dTeLe)ef         dUeLe)e)f         dVe3ddf
dW„ZMdXe2de)fdY„ZNd!e&de2fdZ„ZOd!e&de'fd[„ZP G d\„ d]¦  «        ZQe
 G d^„ d_¦  «        ¦   «         ZRejS         G d`„ da¦  «        ¦   «         ZTe
 G db„ dc¦  «        ¦   «         ZUdS )iz"Utility functions for PDF library.zMathieu Fenniakzbiziqe@mathieu.fenniak.neté    N)Ú	dataclass)ÚdatetimeÚtimezone)ÚDEFAULT_BUFFER_SIZE)ÚSEEK_CUR)ÚPattern)ÚIOÚAnyÚNoReturnÚOptionalÚUnionÚcasté   )é   é
   )Ú	TypeAlias)r   é   )ÚSelfé   )ÚSTREAM_TRUNCATED_PREMATURELYÚDeprecationErrorÚLimitReachedErrorÚ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        ú~/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.venv/lib/python3.11/site-packages/pypdf/_utils.pyÚparse_iso8824_dater8   R   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)r9   Údate_strÚoffsetr@   ÚhoursÚ	remainderÚminutesÚsigns           r7   Úformat_iso8824_daterI   r   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/   r2   r-   )rK   rL   ÚversionsÚpdf_header_indicess       r7   Ú_get_max_pdf_version_headerrR   ‹   s±   € ð€Hð ÐØ�(ÐÐØ×!Ò! (§.¢.°Ñ"9Ô"9Ñ:Ô:Ð:Ø�(ÐÐØ×!Ò! (§.¢.°Ñ"9Ô"9Ñ:Ô:Ð:Ý
ÐÑÔ !Ò#Ð#ÝÐR GÐRÐR°GÐRÐRÐRÑSÔSÐSØ•CÐ*Ñ+Ô+Ô,Ð,rJ   )ó    ó   	ó   
ó   ó   ó    rJ   ó   [ó   ]FÚstreamÚ	max_bytesÚstrictc                 ó8  — t          ¦   «         }	 |                      d¦  «        }|                     ¦   «         s|t          v s|snH|�@t	          |¦  «        |k    r-|rt          d|› d�¦  «        ‚t          dt          |¬¦  «         n||z  }Œ}t          |¦  «        S )a  
    Read non-whitespace characters and return them.

    Stops upon encountering whitespace or when max_bytes is reached.

    Args:
        stream: The data stream from which was read.
        max_bytes: The maximum number of bytes which are considered valid. One more byte
            will always be read from the stream.
        strict: Whether to raise an exception if the token exceeds max_bytes.
            If False, a warning is logged and only the first max_bytes are returned.

    Returns:
        The data which was read.

    Tr   Nz Token exceeds maximum length of z bytes.z4Token exceeds maximum length of %(max_bytes)d bytes.)Úsourcer\   )	Ú	bytearrayÚreadÚisspaceÚWHITESPACESr/   r   Úlogger_warningÚ__name__Úbytes)r[   r\   r]   ÚtxtÚtoks        r7   Úread_until_whitespaceri   £   s¼   € õ" ‰+Œ+€CðØ�kŠk˜!‰nŒnˆØ�;Š;‰=Œ=ð 	˜C¥;Ð.Ð.°cÐ.ØØÐ ¥S¨¡X¤X°Ò%:Ð%:Øð _Ý'Ð(]È9Ð(]Ð(]Ð(]Ñ^Ô^Ð^ÝØFÍxÐclðñ ô ð ð Øˆs‰
ˆðõ �‰:Œ:ÐrJ   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   ©ra   rc   ©r[   rh   s     r7   Úread_non_whitespacerm   Ä   s?   € ð �+Š+�a‰.Œ.€CØ
•Ð
Ð
Ø�kŠk˜!‰nŒnˆð •Ð
Ð
à€JrJ   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   rk   )r[   rh   Úcnts      r7   Úskip_over_whitespacerp   Õ   sS   € ð �+Š+�a‰.Œ.€CØ
€CØ
•Ð
Ð
Øˆq‰ˆØ�kŠk˜!‰nŒnˆð •Ð
Ð
ð �Š7€NrJ   Ú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     r7   ú	<genexpr>z+check_if_whitespace_only.<locals>.<genexpr>ô   s(   è è € Ð8Ð8¨QˆqÕ(Ð(Ð8Ð8Ð8Ð8Ð8Ð8rJ   )Úall)rq   s    r7   Úcheck_if_whitespace_onlyrz   é   s!   € õ Ð8Ð8°%Ð8Ñ8Ô8Ñ8Ô8Ð8rJ   ))ú ú/)ú:ú@)u   Ù u   Ù­)u   Û°u   Û¹)u   â€€u   â�¯)u   â‚ u   â‡¿r$   ÚcharÚcustom_special_charactersc                 ón   ‡ — t          ˆ fd„t          D ¦   «         ¦  «        rdS t          |o‰ |v ¦  «        S )z8Check if a character is part of neutral character rangesc              3   ó>   •K  — | ]\  }}|‰cxk    o|k    nc V — Œd S rt   © ©rv   ÚstartÚendr   s      €r7   rx   z"is_char_neutral.<locals>.<genexpr>  sC   øè è € Ð
KÐ
K¡J E¨3ˆ5�DÐÐÒÐ˜CÒÐÐÐÐ
KÐ
KÐ
KÐ
KÐ
KÐ
KrJ   T)ÚanyÚNEUTRAL_CHARACTER_RANGESÚbool)r   r€   s   ` r7   Úis_char_neutralrŠ     sH   ø€ å
Ð
KÐ
KÐ
KÐ
KÕ2JÐ
KÑ
KÔ
KÑKÔKð ØˆtåÐ)ÐO¨dÐ6OÐ.OÑPÔPÐPrJ   ))u   Ö�u   à£¿)u   ï¬�u   ï·¿)u   ï¹°u   ï»¿Úcustom_rtl_minÚcustom_rtl_maxc                 óŠ   ‡ — t          ˆ fd„t          D ¦   «         ¦  «        rdS t          |o|o|‰ cxk    o|k    nc ¦  «        S )z4Check if a character is part of RTL character rangesc              3   ó>   •K  — | ]\  }}|‰cxk    o|k    nc V — Œd S rt   rƒ   r„   s      €r7   rx   zis_char_rtl.<locals>.<genexpr>  sC   øè è € Ð
GÐ
G¡J E¨3ˆ5�DÐÐÒÐ˜CÒÐÐÐÐ
GÐ
GÐ
GÐ
GÐ
GÐ
GrJ   T)r‡   ÚRTL_CHARACTER_RANGESr‰   )r   r‹   rŒ   s   `  r7   Úis_char_rtlr�     sc   ø€ å
Ð
GÐ
GÐ
GÐ
GÕ2FÐ
GÑ
GÔ
GÑGÔGð Øˆtå�Ð` >Ð`°~ÈÐ7_Ð7_Ò7_Ð7_ÐQ_Ò7_Ð7_Ð7_Ð7_ÑaÔaÐarJ   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   éÿÿÿÿó   %)rU   rW   rJ   zFile ended unexpectedly.)ra   Úseekr   rl   s     r7   Úskip_over_commentr•     s€   € Ø
�+Š+�a‰.Œ.€CØ
‡K‚K��AÑÔÐØ
ˆd‚{€{Ø˜Ð'Ð'Ø—+’+˜a‘.”.ˆCØ�cŠzˆzÝ$Ð%?Ñ@Ô@Ð@ð ˜Ð'Ð'Ð'Ð'ð €{Ø'Ð'rJ   )Úlimitr–   c                ó@  — |                       d¦  «        }|                      t          |¦  «         d¦  «         d}|dk    r\|�||k    rt          d|› d�¦  «        ‚t	          | ¦  «         t          | ¦  «        }|                      dd¦  «         |dz  }|dk    °ZdS dS )aø  
    Skip consecutive leading comments and the whitespace following each one.

    The stream must be positioned at the first comment, if any. If the next
    character is not ``%``, the stream position is unchanged. If only whitespace
    follows the last comment before EOF, leave the stream at the last whitespace
    byte, preserving the existing read_object behaviour for a missing object.

    Args:
        stream: The stream to read from.
        limit: The maximum number of comments to skip, or ``None`` for no limit.

    Raises:
        LimitReachedError: If another comment follows after ``limit`` comments;
            the stream remains at its ``%`` without reading its body.
        PdfStreamError: If a comment ends before a line ending.

    r   r   r“   Nz,Maximum number of leading comments reached: ú.r’   )ra   r”   r/   r   r•   rm   )r[   r–   rh   Úcomment_counts       r7   Úskip_over_commentsrš   "  s´   € ð& �+Š+�a‰.Œ.€CØ
‡K‚K•�S‘”�	˜1ÑÔÐØ€MØ
�Š+ˆ+ØÐ °%Ò!7Ð!7Ý#Ð$[ÐSXÐ$[Ð$[Ð$[Ñ\Ô\Ð\Ý˜&Ñ!Ô!Ð!Ý! &Ñ)Ô)ˆØ�Š�B˜ÑÔÐØ˜Ñˆð �Š+ˆ+ˆ+ˆ+ˆ+ˆ+rJ   )ÚlengthÚregexr›   c                 ó*  — g }d}d}d}	 |                       |¦  «        }|sd                     |¦  «        S t          |¦  «        }||z   x}	|k    rt          d|	› d|› d�¦  «        ‚||z   }
|                     |
¦  «        }|                     |¦  «         |�bt          |¦  «        }||z
  |                     ¦   «         z   }|                      ||z
  |z
  d	¦  «         d                     |¦  «        d|…         S ||z  }|d
d…         }|dk     r|d	z  }�Œ)aƒ  
    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:
        stream: The stream to read from.
        regex: The pattern to search for.
        length: The (approximated) maximum number of bytes to read before raising an exception.

    Returns:
        The read bytes.

    r   rJ   é   TzRead stream length of z# exceeds maximum allowed length of r˜   Nr   iðÿÿÿi    )ra   Újoinr/   r   ÚsearchrN   r…   r”   )r[   rœ   r›   ÚpartsÚtotal_lengthÚtailÚ
chunk_sizeÚtokenÚtoken_lengthÚcurrent_lengthÚcurrent_bufferÚsearch_matchÚoverlapÚactual_starts                 r7   Úread_until_regexr¬   A  sS  € ð €EØ€LØ€DØ€JðØ—’˜JÑ'Ô'ˆØð 	#Ø—8’8˜E‘?”?Ð"Ý˜5‘z”zˆØ*¨\Ñ9Ð9ˆN¸fÒDÐDÝ#Øe¨ÐeÐeÐ\bÐeÐeÐeñô ð ð  ™ˆØ—|’| NÑ3Ô3ˆØ�Š�UÑÔÐØÐ#Ý˜$‘i”iˆGØ'¨'Ñ1°L×4FÒ4FÑ4HÔ4HÑHˆLØ�KŠK˜ |Ñ3°lÑBÀAÑFÔFÐFØ—8’8˜E‘?”? = L =Ô1Ð1Ø˜Ñ$ˆð �S�T�TŒ{ˆØ˜ÒÐØ˜1ÑˆJñ5rJ   Ú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   r”   r   ra   )r[   r­   ra   s      r7   Úread_block_backwardsr°   p  sh   € ð ‡{‚{�}„}�wÒÐÝÐ@ÑAÔAÐAà
‡K‚K���(Ñ#Ô#Ð#Ø�;Š;�wÑÔ€Dà
‡K‚K���(Ñ#Ô#Ð#Ø€KrJ   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   
NrJ   r’   )r¯   r   r   Úminr   r°   r/   rN   r”   r   rŸ   )r[   Úline_contentÚ
found_crlfr­   ÚblockÚidxs         r7   Úread_previous_liner·   ‰  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 Ô&Ñ'Ô'Ð'rJ   Úarw   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 rt   )Úfloat)rv   r4   Újs      r7   rx   z6matrix_multiply.<locals>.<genexpr>.<genexpr>.<genexpr>Ç  s7   è è € Ð@Ð@©$¨!¨Q•%˜‘(”(�U 1™XœXÑ%Ð@Ð@Ð@Ð@Ð@Ð@rJ   N)ÚsumÚzip)rv   ÚcolÚrows     €r7   rx   z,matrix_multiply.<locals>.<genexpr>.<genexpr>Ç  sB   øè è € ÐTÐTÀS�cÐ@Ð@µ#°c¸3±-´-Ð@Ñ@Ô@Ñ@Ô@ÐTÐTÐTÐTÐTÐTrJ   N)ÚtuplerÀ   )rv   rÂ   rw   s    @€r7   rx   z"matrix_multiply.<locals>.<genexpr>Æ  sZ   øøè è € ð ð àõ 	ÐTÐTÐTÐTÍCÐQRÈGÐTÑTÔTÑTÔTðð ð ð ð ð rJ   )rÃ   )r¸   rw   s    `r7   Úmatrix_multiplyrÄ   Ã  s=   ø€ õ ð ð ð ð àðñ ô ñ ô ð rJ   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)r”   ÚopenÚwritera   )r[   ÚradiusÚ	output_fhs      r7   Úmark_locationrË   Ì  sî   € ð €FØ
‡K‚K��˜ÑÔÐÝ	Ð% tÑ	,Ô	,ð -°	Ø�Š˜Ÿš FÑ+Ô+Ñ,Ô,Ð,Ø�Š˜Ñ Ô Ð Ø�Š˜Ÿš FÑ+Ô+Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð ‡K‚K��˜ÑÔÐÐÐs   ªA&BÂB Â#B r   ÚmsgÚ
stacklevelc                 ó>   — t          j        | t          |¬¦  «         d S )N)rÍ   )ÚwarningsÚwarnÚDeprecationWarning)rÌ   rÍ   s     r7   Ú	deprecaterÒ   Ø  s    € Ý„M�#Õ)°jÐAÑAÔAÐAÐAÐArJ   c                 ó    — t          | ¦  «        ‚rt   )r   )rÌ   s    r7   ÚdeprecationrÔ   Ü  s   € Ý
˜3Ñ
Ô
ÐrJ   Ú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      r7   Údeprecate_with_replacementrß   à  s>   € åØÐfÐfÀÐfÐfÐS[ÐfÐfÐfØ	ñô ð ð ð rJ   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      r7   Údeprecation_with_replacementrã   è  s:   € åØÐbÐb¸ZÐbÐbÈxÐbÐbÐbñô ð ð ð rJ   Únamec                 ó2   — t          | › d|› d�d¦  «         dS )zCIssue a warning that a feature will be removed without replacement.rÙ   r˜   rÜ   NrÝ   ©rä   r×   s     r7   Údeprecate_no_replacementrç   ï  s*   € å�ÐPÐPÀ:ÐPÐPÐPÐRSÑTÔTÐTÐTÐTrJ   c                 ó0   — t          | › d|› d�¦  «         dS )zJRaise an exception that a feature was already removed without replacement.rá   r˜   Nrâ   ræ   s     r7   Údeprecation_no_replacementré   ô  s'   € å�4ÐNÐNÀÐNÐNÐNÑOÔOÐOÐOÐOrJ   Úmessager_   Úvaluesc                ó¬   — |r*t          j        |¦  «                             | |¦  «         dS 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      r7   Úlogger_errorrñ   ù  sX   € ð ð 1ÝÔ˜&Ñ!Ô!×'Ò'¨°Ñ8Ô8Ð8Ð8Ð8åÔ˜&Ñ!Ô!×'Ò'¨Ñ0Ô0Ð0Ð0Ð0rJ   c                ó¬   — |r*t          j        |¦  «                             | |¦  «         dS 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î   Úwarningrð   s      r7   rd   rd     sZ   € ð  ð 3ÝÔ˜&Ñ!Ô!×)Ò)¨'°6Ñ:Ô:Ð:Ð:Ð:õ
 	Ô˜&Ñ!Ô!×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2rJ   Ú	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         r7   Ú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å+Øðñ ô ð øðð rJ   rf   c                 ó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ƒ   )rf   s    r7   Ú_human_readable_bytesr  D  sk   € Øˆu‚}€}ØˆˆˆÐØˆu‚}€}Ø˜%‘-Ð(Ð(Ð(Ð(Ð(Øˆu‚}€}Ø˜%‘-Ð(Ð(Ð(Ð(Ð(Ø�e‰mÐ$Ð$Ð$Ð$Ð$rJ   c                 ó8  — t          | d¦  «        r,t          t          |                      ¦   «         j        ¦  «        S |                      ¦   «         }|                      dt          j        ¦  «         |                      ¦   «         }|                      |¦  «         |S )NÚ	getbufferr   )	Úhasattrr   r?   r  Únbytesr¯   r”   ÚosÚSEEK_END)r[   ÚpositionÚsizes      r7   Úget_stream_sizer
  N  sz   € Ýˆv�{Ñ#Ô#ð 4Ý•C˜×)Ò)Ñ+Ô+Ô2Ñ3Ô3Ð3à�{Š{‰}Œ}€HØ
‡K‚K�•2”;ÑÔÐØ�;Š;‰=Œ=€DØ
‡K‚K�ÑÔÐØ€KrJ   c                 óJ  — t          | d¦  «        r!t          |                      ¦   «         ¦  «        S |                      ¦   «         }|                      dt
          j        ¦  «         |                      d¦  «        }|                      |¦  «         t          t          |¦  «        S )Nr  r   r’   )	r  rf   r  r¯   r”   r  ÚSEEK_SETra   r   )r[   r  Údatas      r7   Úget_stream_datar  Y  s‚   € Ýˆv�{Ñ#Ô#ð )Ý�V×%Ò%Ñ'Ô'Ñ(Ô(Ð(à�{Š{‰}Œ}€HØ
‡K‚K�•2”;ÑÔÐØ�;Š;�r‰?Œ?€DØ
‡K‚K�ÑÔÐÝ•�tÑÔÐrJ   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 rt   ©Úfget©ÚselfÚmethods     r7   Ú__init__zclassproperty.__init__�  s   € ØˆŒ	ˆ	ˆ	rJ   c                 ó,   — |                       |¦  «        S rt   r  )r  ÚinstanceÚclss      r7   Ú__get__zclassproperty.__get__�  s   € Ø�yŠy˜‰~Œ~ÐrJ   c                 ó   — || _         | S rt   r  r  s     r7   Úgetterzclassproperty.getter“  s   € ØˆŒ	ØˆrJ   rt   )r   N)	re   Ú
__module__Ú__qualname__Ú__doc__r  r
   r  r   r  rƒ   rJ   r7   r  r  ‡  sr   € € € € € ðð ð
ð ð ð ð ðð ¨Sð ð ð ð ð ð ð ð ð ð ð rJ   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ä   rJ   r  NÚindirect_referencer   c           	      ót   — | j         j        › d| j        › dt          t	          | j        ¦  «        ¦  «        › d�S )Nz(name=z, data: ú))Ú	__class__re   rä   r  r/   r  ©r  s    r7   Ú__str__zFile.__str__©  s>   € Ø”.Ô)ÐlÐl°´ÐlÐlÕDYÕZ]Ð^bÔ^gÑZhÔZhÑDiÔDiÐlÐlÐlÐlrJ   c                 ól   — |                       ¦   «         d d…         dt          | j        ¦  «        › d�z   S )Nr’   z, hash: r&  )r)  Úhashr  r(  s    r7   Ú__repr__zFile.__repr__¬  s2   € Ø�|Š|‰~Œ~˜c˜r˜cÔ"Ð%Bµ°T´Y±´Ð%BÐ%BÐ%BÑBÐBrJ   )re   r  r  Úgenericr#  rä   ÚstrÚ__annotations__r  rf   r$  r   r)  r,  rƒ   rJ   r7   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rJ   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 rt   )r2  Ú_parse_versionÚ
components)r  r2  s     r7   r  zVersion.__init__´  s#   € Ø&ˆÔØ×-Ò-¨kÑ:Ô:ˆŒˆˆrJ   c                 óT  — |                      d¦  «        }g }|D ]�}t          j                             |¦  «        }|s|                     d|f¦  «         Œ;|                     d¦  «        }|                     d¦  «        }|€d}|                     t          |¦  «        |f¦  «         ŒŽ|S )Nr˜   r   r   r   )Úsplitr1  ÚCOMPONENT_PATTERNÚmatchrN   Úgroupr?   )r  r2  r5  Úparsed_componentsÚ	componentr9  Úinteger_prefixÚsuffixs           r7   r4  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Ø Ð rJ   Úotherc                 óP   — t          |t          ¦  «        sdS | j        |j        k    S ©NF)Ú
isinstancer1  r5  )r  r?  s     r7   Ú__eq__zVersion.__eq__Ç  s)   € Ý˜%¥Ñ)Ô)ð 	Ø�5ØŒ %Ô"2Ò2Ð2rJ   c                 óR   — t          | j        t          | j        ¦  «        f¦  «        S rt   )r+  r'  rÃ   r5  r(  s    r7   Ú__hash__zVersion.__hash__Ì  s!   € å�T”^¥U¨4¬?Ñ%;Ô%;Ð<Ñ=Ô=Ð=rJ   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)rB  r1  r2   ÚtyperÀ   r5  r/   )r  r?  Úself_componentÚother_componentÚ
self_valueÚself_suffixÚother_valueÚother_suffixs           r7   Ú__lt__zVersion.__lt__Ð  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¨%Ô*:Ñ&;Ô&;Ò;Ð;rJ   )re   r  r  ÚreÚcompiler8  r.  r  ÚlistrÃ   r?   r4  Úobjectr‰   rC  rE  r
   rN  rƒ   rJ   r7   r1  r1  °  sÖ   € € € € € à"˜œ
 >Ñ2Ô2Ðð; Cð ;¨Dð ;ð ;ð ;ð ;ð!¨#ð !°$°u¸SÀ#¸X´Ô2Gð !ð !ð !ð !ð3˜Fð 3 tð 3ð 3ð 3ð 3ð
>˜#ð >ð >ð >ð >ð<˜Cð < Dð <ð <ð <ð <ð <ð <rJ   r1  c                   ó0   — e Zd ZU dZdZeed<   dZeed<   dS )Ú_TraversalStatez=Sometimes we need mutable objects which just count something.r   Úentry_countFÚ
has_loggedN)	re   r  r  r   rU  r?   r/  rV  r‰   rƒ   rJ   r7   rT  rT  å  s8   € € € € € € àGÐGØ€K�ÐÐÑØ€J�ÐÐÑÐÐrJ   rT  rA  )r$   )r$   r$   )r   )F)Vr   Ú
__author__Ú__author_email__Ú	functoolsrí   r  rO  ÚsysrÏ   Údataclassesr   r   r   Úior   r   r   Útypingr	   r
   r   r   r   r   Úversion_infor   Útyping_extensionsr   Úerrorsr   r   r   r   rÃ   r½   r   r/  r   Ú
StreamTyperf   ÚBinaryStreamTyper.  ÚStrByteTyper8   rI   rR   rc   rŸ   ru   ÚWHITESPACES_AS_REGEXPr?   r‰   ri   rm   rp   rz   rˆ   rŠ   r�   r�   r•   rš   Úmaxsizer¬   r°   r·   rÄ   rË   rÒ   rÔ   rß   rã   rç   ré   rñ   rd   Údictrÿ   r  r
  r  r  r"  Útotal_orderingr1  rT  rƒ   rJ   r7   ú<module>rh     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Ñ:Ð ðð  *ð ¸À#¼ð ÐW[ð Ðhmð ð ð ð ðBÐ 0ð °Uð ð ð ð ð" ð °ð ð ð ð ð(9 Eð 9¨dð 9ð 9ð 9ð 9ðÐ ðQð Q˜#ð Q¸#ð QÀtð Qð Qð Qð QðÐ ðbð b�cð b¨3ð bÀSð bÐRVð bð bð bð bðA˜jð A¨Tð Að Að Að Að FJð ð ð ˜zð °X¸c´]ð Èdð ð ð ð ð> RUÔQ\ð ,ð ,ð , 
ð ,°7¸5´>ð ,È3ð ,Ðafð ,ð ,ð ,ð ,ð^Ð!1ð ¸Cð ÀEð ð ð ð ð27(˜zð 7(¨eð 7(ð 7(ð 7(ð 7(ðtØðØ$<ðàðð ð ð ð	˜*ð 	¨ð 	ð 	ð 	ð 	ðBð B�3ð B Cð B°ð Bð Bð Bð Bð �Sð  ˜Xð  ð  ð  ð  ð¨ð ¸ð Èð ÐQUð ð ð ð ð¨3ð ¸#ð È3ð ÐS[ð ð ð ð ðU 3ð U°Cð U¸Dð Uð Uð Uð Uð
P Sð P°cð P¸hð Pð Pð Pð Pð
1˜#ð 1¨#ð 1¸ð 1Àð 1ð 1ð 1ð 1ð3˜Cð 3¨Cð 3¸3ð 3À4ð 3ð 3ð 3ð 3ð4 SXð ð  Øð Ø   c œNð Ø59¸#¸s¸(´^ð ØKOð à	ð ð  ð  ð  ðF% ð %¨ð %ð %ð %ð %ð˜Jð ¨3ð ð ð ð ð˜Jð ¨5ð ð ð ð ð\ð ð ð ð ñ ô ð ð" ðCð Cð Cð Cð Cñ Cô Cñ „ðCð. Ôð1<ð 1<ð 1<ð 1<ð 1<ñ 1<ô 1<ñ Ôð1<ðh ðð ð ð ð ñ ô ñ „ðð ð rJ   