§
    K˜ºh,X ã            
       óÌ  — 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mZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZ dd	lmZ dd
lm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z/ ddl-m0Z1 ddl-m2Z2m3Z3 ddl-m4Z5 ddl-m6Z7 ddl-m8Z9 ddl-m:Z; ddl-m<Z= ddl-m>Z? ddl@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY ddlZm[Z[m\Z\ ddl]m^Z^ de_de`dee`eedf         f         fd„Zade_de`dee`eedf         f         fd„Zb G d„ deL¦  «        Zc G d „ d!¦  «        Zd G d"„ d#eeef         ¦  «        Ze G d$„ d%ed¦  «        ZfdS )&é    N)Údatetime)ÚBytesIOÚUnsupportedOperation)ÚPath)ÚAnyÚCallableÚDictÚIterableÚIteratorÚListÚMappingÚOptionalÚTupleÚUnionÚcasté   )Ú
EncryptionÚPasswordType)Ú
PageObjectÚ_VirtualList)Úindex2label)ÚStrByteTypeÚ
StreamTypeÚb_Údeprecate_no_replacementÚdeprecation_no_replacementÚdeprecation_with_replacementÚlogger_warningÚparse_iso8824_dateÚread_non_whitespaceÚread_previous_lineÚread_until_whitespaceÚskip_over_commentÚskip_over_whitespace)ÚCatalogAttributes)ÚCatalogDictionary)ÚCheckboxRadioButtonAttributesÚGoToActionArguments)ÚCore)ÚDocumentInformationAttributes)ÚFieldDictionaryAttributes)ÚPageAttributes)ÚPagesAttributes)ÚTrailerKeys)ÚEmptyFileErrorÚFileNotDecryptedErrorÚPdfReadErrorÚPdfStreamErrorÚWrongPasswordError)ÚArrayObjectÚBooleanObjectÚContentStreamÚDecodedStreamObjectÚDestinationÚDictionaryObjectÚEncodedStreamObjectÚFieldÚFitÚFloatObjectÚIndirectObjectÚ
NameObjectÚ
NullObjectÚNumberObjectÚ	PdfObjectÚTextStringObjectÚ
TreeObjectÚViewerPreferencesÚread_object)ÚOutlineTypeÚPagemodeType)ÚXmpInformationÚdÚsizeÚreturn.c                 ó€   — |dk    rt          d¦  «        ‚d| z   } | dd …         } t          j        d| ¦  «        d         S )Né   zinvalid size in convert_to_ints           iøÿÿÿz>qr   )r1   ÚstructÚunpack©rJ   rK   s     úU/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/pypdf/_reader.pyÚconvert_to_intrS   q   sH   € Øˆa‚x€xÝÐ;Ñ<Ô<Ð<Ø+¨aÑ/€AØ	ˆ"ˆ#ˆ#Œ€AÝŒ=˜˜qÑ!Ô! !Ô$Ð$ó    c                 óB   — t          dd¦  «         t          | |¦  «        S )NÚconvertToIntrS   )r   rS   rQ   s     rR   rV   rV   y   s#   € Ý  Ð1AÑBÔBÐBÝ˜!˜TÑ"Ô"Ð"rT   c                   ó‚  — e Zd ZdZdd„Zdedee         fd„Zdedee         fd„Ze	dee         fd„¦   «         Z
e	dee         fd	„¦   «         Ze	dee         fd
„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         Ze	dee         fd„¦   «         ZdS )ÚDocumentInformationa„  
    A class representing the basic document metadata provided in a PDF File.
    This class is accessible through
    :py:class:`PdfReader.metadata<pypdf.PdfReader.metadata>`.

    All text properties of the document metadata have
    *two* properties, eg. author and author_raw. The non-raw property will
    always return a ``TextStringObject``, making it ideal for a case where
    the metadata is being displayed. The raw property can sometimes return
    a ``ByteStringObject``, if pypdf was unable to decode the string's
    text encoding; this requires additional safety in the caller and
    therefore is not as commonly accessed.
    rL   Nc                 ó.   — t          j        | ¦  «         d S ©N)r9   Ú__init__©Úselfs    rR   r[   zDocumentInformation.__init__�   s   € ÝÔ! $Ñ'Ô'Ð'Ð'Ð'rT   Úkeyc                 ó`   — |                       |d ¦  «        }t          |t          ¦  «        r|S d S rZ   )ÚgetÚ
isinstancerC   )r]   r^   Úretvals      rR   Ú	_get_textzDocumentInformation._get_text�   s2   € Ø—’˜#˜tÑ$Ô$ˆÝ�fÕ.Ñ/Ô/ð 	ØˆMØˆtrT   c                 óL   — t          dd¦  «         |                      |¦  «        S )zq
        Use the attributes (e.g. :py:attr:`title` / :py:attr:`author`).

        .. deprecated:: 1.28.0
        ÚgetTextú3.0.0)r   rc   )r]   r^   s     rR   re   zDocumentInformation.getText–   s&   € õ 	# 9¨gÑ6Ô6Ð6Ø�~Š~˜cÑ"Ô"Ð"rT   c                 óä   — |                       t          j        ¦  «        rP|                      t          j        ¦  «        p0|                       t          j        ¦  «                             ¦   «         ndS )zŸ
        Read-only property accessing the document's title.

        Returns a ``TextStringObject`` or ``None`` if the title is not
        specified.
        N)r`   ÚDIÚTITLErc   Ú
get_objectr\   s    rR   ÚtitlezDocumentInformation.titleŸ   sR   € ð �xŠx�œÑ!Ô!ðˆD�NŠN�2œ8Ñ$Ô$ÐG¨¯ªµ´Ñ(:Ô(:×(EÒ(EÑ(GÔ(Gøàð	
rT   c                 ó@   — |                       t          j        ¦  «        S )z>The "raw" version of title; can return a ``ByteStringObject``.)r`   rh   ri   r\   s    rR   Ú	title_rawzDocumentInformation.title_raw­   s   € ð �xŠx�œÑ!Ô!Ð!rT   c                 ó@   — |                       t          j        ¦  «        S )z¡
        Read-only property accessing the document's author.

        Returns a ``TextStringObject`` or ``None`` if the author is not
        specified.
        )rc   rh   ÚAUTHORr\   s    rR   ÚauthorzDocumentInformation.author²   s   € ð �~Š~�bœiÑ(Ô(Ð(rT   c                 ó@   — |                       t          j        ¦  «        S )z?The "raw" version of author; can return a ``ByteStringObject``.)r`   rh   ro   r\   s    rR   Ú
author_rawzDocumentInformation.author_raw¼   s   € ð �xŠx�œ	Ñ"Ô"Ð"rT   c                 ó@   — |                       t          j        ¦  «        S )z£
        Read-only property accessing the document's subject.

        Returns a ``TextStringObject`` or ``None`` if the subject is not
        specified.
        )rc   rh   ÚSUBJECTr\   s    rR   ÚsubjectzDocumentInformation.subjectÁ   s   € ð �~Š~�bœjÑ)Ô)Ð)rT   c                 ó@   — |                       t          j        ¦  «        S )z@The "raw" version of subject; can return a ``ByteStringObject``.)r`   rh   rt   r\   s    rR   Úsubject_rawzDocumentInformation.subject_rawË   ó   € ð �xŠx�œ
Ñ#Ô#Ð#rT   c                 ó@   — |                       t          j        ¦  «        S )ac  
        Read-only property accessing the document's creator.

        If the document was converted to PDF from another format, this is the
        name of the application (e.g. OpenOffice) that created the original
        document from which it was converted. Returns a ``TextStringObject`` or
        ``None`` if the creator is not specified.
        )rc   rh   ÚCREATORr\   s    rR   ÚcreatorzDocumentInformation.creatorÐ   s   € ð �~Š~�bœjÑ)Ô)Ð)rT   c                 ó@   — |                       t          j        ¦  «        S )z@The "raw" version of creator; can return a ``ByteStringObject``.)r`   rh   rz   r\   s    rR   Úcreator_rawzDocumentInformation.creator_rawÜ   rx   rT   c                 ó@   — |                       t          j        ¦  «        S )aG  
        Read-only property accessing the document's producer.

        If the document was converted to PDF from another format, this is the
        name of the application (for example, OSX Quartz) that converted it to
        PDF. Returns a ``TextStringObject`` or ``None`` if the producer is not
        specified.
        )rc   rh   ÚPRODUCERr\   s    rR   ÚproducerzDocumentInformation.producerá   s   € ð �~Š~�bœkÑ*Ô*Ð*rT   c                 ó@   — |                       t          j        ¦  «        S )zAThe "raw" version of producer; can return a ``ByteStringObject``.)r`   rh   r   r\   s    rR   Úproducer_rawz DocumentInformation.producer_rawí   s   € ð �xŠx�œÑ$Ô$Ð$rT   c                 óZ   — t          |                      t          j        ¦  «        ¦  «        S )z:Read-only property accessing the document's creation date.)r   rc   rh   ÚCREATION_DATEr\   s    rR   Úcreation_datez!DocumentInformation.creation_dateò   s!   € õ " $§.¢.µÔ1AÑ"BÔ"BÑCÔCÐCrT   c                 ó@   — |                       t          j        ¦  «        S )zÉ
        The "raw" version of creation date; can return a ``ByteStringObject``.

        Typically in the format ``D:YYYYMMDDhhmmss[+Z-]hh'mm`` where the suffix
        is the offset from UTC.
        )r`   rh   r„   r\   s    rR   Úcreation_date_rawz%DocumentInformation.creation_date_raw÷   s   € ð �xŠx�Ô(Ñ)Ô)Ð)rT   c                 óZ   — t          |                      t          j        ¦  «        ¦  «        S )z”
        Read-only property accessing the document's modification date.

        The date and time the document was most recently modified.
        )r   rc   rh   ÚMOD_DATEr\   s    rR   Úmodification_datez%DocumentInformation.modification_date  s    € õ " $§.¢.µ´Ñ"=Ô"=Ñ>Ô>Ð>rT   c                 ó@   — |                       t          j        ¦  «        S )zÕ
        The "raw" version of modification date; can return a
        ``ByteStringObject``.

        Typically in the format ``D:YYYYMMDDhhmmss[+Z-]hh'mm`` where the suffix
        is the offset from UTC.
        )r`   rh   r‰   r\   s    rR   Úmodification_date_rawz)DocumentInformation.modification_date_raw
  s   € ð �xŠx�œÑ$Ô$Ð$rT   )rL   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r[   Ústrr   rc   re   Úpropertyrk   rm   rp   rr   ru   rw   r{   r}   r€   r‚   r   r…   r‡   rŠ   rŒ   © rT   rR   rX   rX   ~   sß  € € € € € ðð ð(ð (ð (ð (ð˜Sð  X¨c¤]ð ð ð ð ð#˜3ð # 8¨C¤=ð #ð #ð #ð #ð ð
�x ”}ð 
ð 
ð 
ñ „Xð
ð ð"˜8 Cœ=ð "ð "ð "ñ „Xð"ð ð)˜ œð )ð )ð )ñ „Xð)ð ð#˜H SœMð #ð #ð #ñ „Xð#ð ð*˜ #œð *ð *ð *ñ „Xð*ð ð$˜X cœ]ð $ð $ð $ñ „Xð$ð ð	*˜ #œð 	*ð 	*ð 	*ñ „Xð	*ð ð$˜X cœ]ð $ð $ð $ñ „Xð$ð ð	+˜( 3œ-ð 	+ð 	+ð 	+ñ „Xð	+ð ð%˜h sœmð %ð %ð %ñ „Xð%ð ðD˜x¨Ô1ð Dð Dð Dñ „XðDð ð* 8¨C¤=ð *ð *ð *ñ „Xð*ð ð? 8¨HÔ#5ð ?ð ?ð ?ñ „Xð?ð ð% x°¤}ð %ð %ð %ñ „Xð%ð %ð %rT   rX   c                   óR  — e Zd ZdZedee         fd„¦   «         Z	 	 ddee	e
f         dededeef         ddfd	„Zedefd
„¦   «         Zedee         fd„¦   «         Zdee         fd„Zedee         fd„¦   «         Zedee         fd„¦   «         Zdee         fd„Zedee         fd„¦   «         Zdefd„Zdefd„Zedefd„¦   «         Zdedefd„Zdedefd„Zedeee f         fd„¦   «         Z!edeee f         fd„¦   «         Z"	 	 	 d€dee#         deee e f                  dee          deeee f                  fd„Z$	 	 	 d€dee#         deee e f                  dee          deeee f                  fd„Z%de&defd „Z'd!ee#e&f         dee e f         de d"e ddf
d#„Z(dee#e&f         de de ddfd$„Z)de d!e d"e ddfd%„Z*d�d&edeee f         fd'„Z+deee f         fd(„Z,	 	 d‚dee#df         dee          deee f         fd)„Z-	 	 d‚dee#df         dee          deee f         fd*„Z.ede/fd+„¦   «         Z0ede/fd,„¦   «         Z1	 d‚d-ee&         d.ee          de/fd/„Z2	 d‚d-ee&         d.ee          de/fd0„Z3edee4         fd1„¦   «         Z5d2edee6e7f         defd3„Z8d4edefd5„Z9d4edefd6„Z:d7e;defd8„Z<d7e;defd9„Z=d:ed;ee>ee?e7de6e&f                           de;fd<„Z@d-e&dee;         fd=„ZAede>e         fd>„¦   «         ZBede>e         fd?„¦   «         ZCedee         fd@„¦   «         ZDdee         fdA„ZEedee         fdB„¦   «         ZFedeeG         fdC„¦   «         ZHdeeG         fdD„ZIedeeG         fdE„¦   «         ZJ	 	 	 d€dFede&ef         dGeeee f                  d2ee7         ddfdH„ZKd2e7deeeLef         fdI„ZMdJedKedeeL         fdL„ZNd2eee7f         deeL         fdM„ZOdNe7deeL         fdO„ZPdeQdeReef         fdP„ZSdeQdeReef         fdQ„ZTdRedSedeeL         fdT„ZUdRedSedeeL         fdU„ZVdRedSedVeeL         deeL         fdW„ZWdRedSedVeeL         deeL         fdX„ZXdeQddfdY„ZYdeQddfdZ„ZZdeQddfd[„Z[deQdefd\„Z\deQddfd]„Z]deQd^ee         d_eddfd`„Z^deQdee         fda„Z_deQd^edee         fdb„Z`deQdeeaebecf         fdc„ZdeedeQd^edefdd„¦   «         ZfdeQddfde„Zgdfe>e         dgehegeeeRedhf         f         f         dieheeeeRedhf         f         gef         ddfdj„Zid;e>e         dejeReef                  fdk„Zk	 dƒdeQdmedefdn„Zl	 dƒdeQdmedefdo„Zmdeeef         denfdp„Zodqedeeef         fdr„Zpedefds„¦   «         Zqdefdt„Zredefdu„¦   «         Zsedeeee f                  fdv„¦   «         Ztdwedee&         fdx„Zudwedee&         fdy„Zvedewee>e         f         fdz„¦   «         Zxde>e         fd{„Zydwede>e         fd|„Zz	 d„d}ee         deeeee>e         f         f         fd~„Z{dS )…Ú	PdfReadera³  
    Initialize a PdfReader object.

    This operation can take some time, as the PDF stream's cross-reference
    tables are read into memory.

    Args:
        stream: A File object or an object that supports the standard read
            and seek methods similar to a File object. Could also be a
            string representing a path to a PDF file.
        strict: Determines whether user should be warned of all
            problems and also causes some correctable problems to be fatal.
            Defaults to ``False``.
        password: Decrypt PDF file at initialization. If the
            password is None, the file will not be decrypted.
            Defaults to ``None``
    rL   c                 óú   — t          t          | j        d         ¦  «                             t          j        d¦  «        }|€dS |                     ¦   «         }t          |t          ¦  «        st          |¦  «        }|S )zCReturns the existing ViewerPreferences as an overloaded dictionary.ú/RootN)	r   r9   Útrailerr`   ÚCDÚVIEWER_PREFERENCESrj   ra   rE   )r]   Úos     rR   Úviewer_preferenceszPdfReader.viewer_preferences)  sq   € õ Õ! 4¤<°Ô#8Ñ9Ô9×=Ò=ÝÔ! 4ñ
ô 
ˆð ˆ9Ø�4Ø�LŠL‰NŒNˆÝ˜!Õ.Ñ/Ô/ð 	%Ý! !Ñ$Ô$ˆAØˆrT   FNÚstreamÚstrictÚpasswordc                 óÎ  — || _         d | _        i | _        d| _        d | _        t          |d¦  «        rd|j        vrt          dt          ¦  «         t          |t          t          f¦  «        rIt          |d¦  «        5 }t          |                     ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      |¦  «         || _        d| _        d | _        | j        rìd| _        | j                             t*          j        ¦  «        }|r|d                              ¦   «         j        nd}t3          t4          | j        t*          j                                      ¦   «         ¦  «        }t9          j        ||¦  «        | _        |�|nd}| j                             |¦  «        t<          j        k    r|�tA          d	¦  «        ‚d| _        d S |�tC          d
¦  «        ‚d S )Nr   ÚmodeÚbzQPdfReader stream/file object is not in binary mode. It may not be read correctly.ÚrbFTrT   zWrong passwordúNot encrypted file)"rž   Úflattened_pagesÚresolved_objectsÚ
xref_indexÚ_page_id2numÚhasattrr¡   r   r�   ra   r‘   r   Úopenr   Úreadr�   Ú_override_encryptionÚ_encryptionÚis_encryptedr˜   r`   ÚTKÚIDrj   Úoriginal_bytesr   r9   ÚENCRYPTr   Úverifyr   ÚNOT_DECRYPTEDr3   r1   )	r]   r�   rž   rŸ   ÚfhÚid_entryÚ	id1_entryÚencrypt_entryÚpwds	            rR   r[   zPdfReader.__init__6  s   € ð ˆŒØ;?ˆÔØLNˆÔØˆŒð ð 	Ôõ �6˜6Ñ"Ô"ð 	 s°&´+Ð'=Ð'=Ýð0åñô ð õ
 �f�s¥D˜kÑ*Ô*ð 	,Ý�f˜dÑ#Ô#ð , rÝ  §¢¡¤Ñ+Ô+�ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,à�	Š	�&ÑÔÐØˆŒà$)ˆÔ!Ø15ˆÔØÔð 	5Ø(,ˆDÔ%ð ”|×'Ò'­¬Ñ.Ô.ˆHØCKÐT˜ œ×.Ò.Ñ0Ô0Ô?Ð?ÐQTˆIÝ Ý  $¤,­r¬zÔ":×"EÒ"EÑ"GÔ"Gñô ˆMõ  *œ¨}¸iÑHÔHˆDÔð 'Ð2�(�(¸ˆCàÔ ×'Ò'¨Ñ,Ô,µÔ0JÒJÐJØÐ(õ )Ð)9Ñ:Ô:Ð:Ø(-ˆDÔ%Ð%Ð%ØÐ!ÝÐ3Ñ4Ô4Ð4ð "Ð!s   Á>"B,Â,B0Â3B0c                 ó   — | j                              ¦   «         }| j                              dd¦  «         | j                              d¦  «                             dd¦  «        }| j                              |d¦  «         |S )zÇ
        The first 8 bytes of the file.

        This is typically something like ``'%PDF-1.6'`` and can be used to
        detect if the file is actually a PDF file and which version it is.
        r   rN   zutf-8Úbackslashreplace)r�   ÚtellÚseekr«   Údecode)r]   ÚlocÚpdf_file_versions      rR   Ú
pdf_headerzPdfReader.pdf_headeri  st   € ð Œk×ÒÑ Ô ˆØŒ×Ò˜˜AÑÔÐØœ;×+Ò+¨AÑ.Ô.×5Ò5°gÐ?QÑRÔRÐØŒ×Ò˜˜aÑ Ô Ð ØÐrT   c                 óü   — t           j        | j        vrdS | j        t           j                 }t          ¦   «         }t	          |t          d¦  «        ¦  «        rt          d¦  «        ‚|                     |¦  «         |S )a  
        Retrieve the PDF file's document information dictionary, if it exists.

        Note that some PDF files use metadata streams instead of docinfo
        dictionaries, and these metadata streams will not be accessed by this
        function.
        NzEtrailer not found or does not point to document information directory)r¯   ÚINFOr˜   rX   ra   Útyper1   Úupdate)r]   Úobjrb   s      rR   ÚmetadatazPdfReader.metadatay  sw   € õ Œ7˜$œ,Ð&Ð&Ø�4ØŒl�2œ7Ô#ˆÝ$Ñ&Ô&ˆÝ�c�4 ™:œ:Ñ&Ô&ð 	ÝØWñô ð ð 	�Š�cÑÔÐØˆrT   c                 ó2   — t          ddd¦  «         | j        S )ú`
        Use the attribute :py:attr:`metadata` instead.

        .. deprecated:: 1.28.0
        ÚgetDocumentInforÇ   rf   ©r   rÇ   r\   s    rR   rÊ   zPdfReader.getDocumentInfo�  s   € õ 	%Ð%6¸
ÀGÑLÔLÐLØŒ}ÐrT   c                 ó2   — t          ddd¦  «         | j        S )rÉ   ÚdocumentInforÇ   rf   rË   r\   s    rR   rÍ   zPdfReader.documentInfo–  s   € õ 	% ^°ZÀÑIÔIÐIØŒ}ÐrT   c                 óp   — 	 d| _         | j        t          j                 j        d| _         S # d| _         w xY w)z(XMP (Extensible Metadata Platform) data.TF)r¬   r˜   r¯   ÚROOTÚxmp_metadatar\   s    rR   rÐ   zPdfReader.xmp_metadata   s=   € ð	.Ø(,ˆDÔ%Ø”<¥¤Ô(Ô5à(-ˆDÔ%Ð%ø¨ˆDÔ%Ð-Ð-Ð-Ð-s   ‚", ¬	5c                 ó2   — t          ddd¦  «         | j        S )rÉ   ÚgetXmpMetadatarÐ   rf   ©r   rÐ   r\   s    rR   rÒ   zPdfReader.getXmpMetadata©  ó    € õ 	%Ð%5°~ÀwÑOÔOÐOØÔ Ð rT   c                 ó2   — t          ddd¦  «         | j        S )ze
        Use the attribute :py:attr:`xmp_metadata` instead.

        .. deprecated:: 1.28.0.
        ÚxmpMetadatarÐ   rf   rÓ   r\   s    rR   rÖ   zPdfReader.xmpMetadata²  ó   € õ 	% ]°NÀGÑLÔLÐLØÔ Ð rT   c                 ó´   — | j         r#| j        t          j                 d         d         S | j        €|                      ¦   «          t          | j        ¦  «        S )a   
        Calculate the number of pages in this PDF file.

        Returns:
            The number of pages of the parsed PDF file

        Raises:
            PdfReadError: if file is encrypted and restrictions prevent
                this action.
        ú/Pagesú/Count)r®   r˜   r¯   rÏ   r¥   Ú_flattenÚlenr\   s    rR   Ú_get_num_pageszPdfReader._get_num_pages¼  sO   € ð Ôð 	-Ø”<¥¤Ô(¨Ô2°8Ô<Ð<àÔ#Ð+Ø—’‘”�Ý�tÔ+Ñ,Ô,Ð,rT   c                 óL   — t          ddd¦  «         |                      ¦   «         S )úX
        Use :code:`len(reader.pages)` instead.

        .. deprecated:: 1.28.0
        zreader.getNumPagesúlen(reader.pages)rf   ©r   rÝ   r\   s    rR   ÚgetNumPageszPdfReader.getNumPagesÑ  s+   € õ 	%Ð%9Ð;NÐPWÑXÔXÐXØ×"Ò"Ñ$Ô$Ð$rT   c                 óL   — t          ddd¦  «         |                      ¦   «         S )rß   zreader.numPagesrà   rf   rá   r\   s    rR   ÚnumPageszPdfReader.numPagesÚ  s*   € õ 	%Ð%6Ð8KÈWÑUÔUÐUØ×"Ò"Ñ$Ô$Ð$rT   Ú
pageNumberc                 óN   — t          ddd¦  «         |                      |¦  «        S )z`
        Use :code:`reader.pages[page_number]` instead.

        .. deprecated:: 1.28.0
        zreader.getPage(pageNumber)zreader.pages[page_number]rf   )r   Ú	_get_page)r]   rå   s     rR   ÚgetPagezPdfReader.getPageä  s2   € õ 	%Ø(Ð*EÀwñ	
ô 	
ð 	
ð �~Š~˜jÑ)Ô)Ð)rT   Úpage_numberc                 ót   — | j         €|                      ¦   «          | j         €
J d¦   «         ‚| j         |         S )zÿ
        Retrieve a page by number from this PDF file.

        Args:
            page_number: The page number to retrieve
                (pages begin at zero)

        Returns:
            A :class:`PageObject<pypdf._page.PageObject>` instance.
        Núhint for mypy)r¥   rÛ   )r]   ré   s     rR   rç   zPdfReader._get_pageï  s?   € ð ÔÐ'Ø�MŠM‰OŒOˆOØÔ#Ð/Ð/°Ñ/Ô/Ð/ØÔ# KÔ0Ð0rT   c                 ó2   — t          ddd¦  «         | j        S )ú\
        Use :py:attr:`named_destinations` instead.

        .. deprecated:: 1.28.0
        ÚnamedDestinationsÚnamed_destinationsrf   )r   rï   r\   s    rR   rî   zPdfReader.namedDestinationsÿ  s"   € õ 	%Ð%8Ð:NÐPWÑXÔXÐXØÔ&Ð&rT   c                 ó*   — |                       ¦   «         S )zu
        A read-only dictionary which maps names to
        :class:`Destinations<pypdf.generic.Destination>`
        )Ú_get_named_destinationsr\   s    rR   rï   zPdfReader.named_destinations	  s   € ð ×+Ò+Ñ-Ô-Ð-rT   Útreerb   Úfileobjc                 ór  — t          j        ¦   «         }|                     t          j        ¦   «         ¦  «         |€mi }t	          t
          | j        t          j                 ¦  «        }t          j
        |v r1t	          t          t                   |t          j
                 ¦  «        }ndS |€|S |                      |||¦  «         |D ] }||v r|                      ||||¦  «          nŒ!d|v rLt	          t          |d         ¦  «        }|D ].}|                     ¦   «         }	|                      |	|||¦  «         Œ/|S )aX  
        Extract field data if this PDF contains interactive form fields.

        The *tree* and *retval* parameters are for recursive use.

        Args:
            tree:
            retval:
            fileobj: A file object (usually a text file) to write
                a report to on all interactive form fields found.

        Returns:
            A dictionary where each key is a field name, and each
            value is a :class:`Field<pypdf.generic.Field>` object. By
            default, the mapping name is used for keys.
            ``None`` if form data could not be located.
        Nú/Fields)ÚFAÚattributes_dictrÅ   r'   r   r9   r˜   r¯   rÏ   r™   Ú	ACRO_FORMr   rD   Ú_check_kidsÚ_build_fieldr4   rj   )
r]   rò   rb   ró   Úfield_attributesÚcatalogÚattrÚfieldsÚfÚfields
             rR   Ú
get_fieldszPdfReader.get_fields  sC  € õ. Ô-Ñ/Ô/ÐØ×ÒÕ =Ô MÑ OÔ OÑPÔPÐPØˆ>ØˆFÝÕ+¨T¬\½"¼'Ô-BÑCÔCˆGåŒ|˜wÐ&Ð&Ý�H¥ZÔ0°'½"¼,Ô2GÑHÔH��à�tØˆ<ØˆMØ×Ò˜˜v wÑ/Ô/Ð/Ø$ð 	ð 	ˆDØ�tˆ|ˆ|à×!Ò! $¨°Ð9IÑJÔJÐJØ�ð ð
 ˜ÐÐÝ�+ t¨I¤Ñ7Ô7ˆFØð Lð L�ØŸš™œ�Ø×!Ò! %¨°Ð:JÑKÔKÐKÐKàˆrT   c                 óR   — t          ddd¦  «         |                      |||¦  «        S )zQ
        Use :meth:`get_fields` instead.

        .. deprecated:: 1.28.0
        Ú	getFieldsr  rf   )r   r  )r]   rò   rb   ró   s       rR   r  zPdfReader.getFieldsF  s,   € õ 	% [°,ÀÑHÔHÐHØ�Š˜t V¨WÑ5Ô5Ð5rT   Úparentc                 ó  — d|v rt          t          |d         ¦  «        S d|v rM|                      t          t          |d         ¦  «        ¦  «        dz   t          t          |d         ¦  «        z   S t          t          |d         ¦  «        S )Nú/TMú/Parentú.ú/T)r   r‘   Ú_get_qualified_field_namer9   )r]   r  s     rR   r
  z#PdfReader._get_qualified_field_nameT  s�   € Ø�Fˆ?ˆ?Ý�˜V Eœ]Ñ+Ô+Ð+Ø˜&Ð Ð à×.Ò.ÝÕ)¨6°)Ô+<Ñ=Ô=ñô ð ñõ •s˜F 4œLÑ)Ô)ñ	*ðõ �˜V Dœ\Ñ*Ô*Ð*rT   r   rû   c                 ó¨  — |                       |||¦  «         	 t          t          |d         ¦  «        }nz# t          $ rm 	 d|v r2|                      t          t
          |d         ¦  «        ¦  «        dz   }nd}|t          t          |d         ¦  «        z  }n# t          $ r Y Y d S w xY wY nw xY w|r,|                      |||¦  «         |                     d¦  «         t          |¦  «        ||<   ||         j	         
                    ¦   «         }|                     t          j        d¦  «        dk    r5|t          t          j        ¦  «                 ||         t          d¦  «        <   |                     t          j        d¦  «        d	k    r£d
|v rŸt!          t#          |d
         d                              ¦   «         ¦  «        ¦  «        ||         t          d¦  «        <   d||         d         vr=||         t          d¦  «                                      t          d¦  «        ¦  «         d S d S |                     t          j        d¦  «        d	k    �ry|                     t          j        d¦  «        t          j        j        z  dk    �rDg }t!          |¦  «        ||         t          d¦  «        <   |                     t          j        i ¦  «        D ]„}| 
                    ¦   «         }t#          |d
         d                              ¦   «         ¦  «        D ]}	|	|vr|                     |	¦  «         Œt!          |¦  «        ||         t          d¦  «        <   Œ…|                     t          j        d¦  «        t          j        j        z  dk    rDd||         d         v r6||         d         ||         d                              d¦  «        = d S d S d S d S d S )Nr  r  r  Ú r	  ú
ú/Chz	/_States_ú/Btnz/APú/Nz/Offr   )rù   r   r‘   ÚKeyErrorr
  r9   Ú_write_fieldÚwriter;   Úindirect_referencerj   r`   rö   ÚFTr?   ÚOptr4   ÚlistÚkeysÚappendÚFfÚFfBitsÚRadioÚKidsÚNoToggleToOffÚindex)
r]   r   rb   ró   rû   r^   rÆ   ÚstatesÚkÚss
             rR   rú   zPdfReader._build_fieldb  s°  € ð 	×Ò˜ ¨Ñ0Ô0Ð0ð	Ý•s˜E %œLÑ)Ô)ˆCˆCøÝð 	ð 	ð 	ðØ Ð%Ð%à×6Ò6Ý Õ!1°5¸Ô3CÑDÔDñô ð ñð �Cð �CØ•t�C  t¤Ñ-Ô-Ñ-��øÝð ð ð à���ðøøøð �ð	øøøð ð 	 Ø×Ò˜g uÐ.>Ñ?Ô?Ð?Ø�MŠM˜$ÑÔÐÝ˜E‘l”lˆˆs‰Ø�SŒkÔ,×7Ò7Ñ9Ô9ˆØ�7Š7•2”5˜"ÑÔ Ò&Ð&Ø36µzÅ"Ä&Ñ7IÔ7IÔ3JˆF�3ŒK�
 ;Ñ/Ô/Ñ0Ø�7Š7•2”5˜"ÑÔ Ò'Ð'¨E°S¨L¨Lå3>Ý�S˜”Z Ô%×*Ò*Ñ,Ô,Ñ-Ô-ñ4ô 4ˆF�3ŒK�
 ;Ñ/Ô/Ñ0ð ˜V Cœ[¨Ô5Ð5Ð5Ø�s”�J {Ñ3Ô3Ô4×;Ò;½JÀvÑ<NÔ<NÑOÔOÐOÐOÐOð 6Ð5à�WŠW•R”U˜BÑÔ 6Ò)Ñ)¨c¯gªgµb´e¸QÑ.?Ô.?Å"Ä)Ä/Ñ.QÐUVÒ.VÑ.VØ "ˆFÝ3>¸vÑ3FÔ3FˆF�3ŒK�
 ;Ñ/Ô/Ñ0Ø—W’W�RœW bÑ)Ô)ð Kð K�Ø—L’L‘N”N�Ý˜a œh tœn×1Ò1Ñ3Ô3Ñ4Ô4ð )ð )�AØ ��ØŸš aÑ(Ô(Ð(øÝ7BÀ6Ñ7JÔ7J��s”�J {Ñ3Ô3Ñ4Ð4à—’�œ˜qÑ!Ô!¥B¤IÔ$;Ñ;¸qÒ@Ð@Ø˜f Sœk¨+Ô6Ð6Ð6à˜3”K Ô,¨V°C¬[¸Ô-E×-KÒ-KÈFÑ-SÔ-SÐTÐTÐTð *Ð)Ð.VÐ.Vð AÐ@Ø6Ð6s4   ™5 µ
B,Á ABÂB,Â
B&Â!B,Â%B&Â&B,Â+B,c                 ó¢   — t           j        |v r>|t           j                 D ]-}|                      |                     ¦   «         ||¦  «         Œ,d S d S rZ   )ÚPAÚKIDSr  rj   )r]   rò   rb   ró   Úkids        rR   rù   zPdfReader._check_kids˜  s\   € õ Œ7�dˆ?ˆ?à�BœG”}ð Cð C�Ø—’ §¢Ñ 0Ô 0°&¸'ÑBÔBÐBÐBð ˆ?ðCð CrT   c                 ó€  — t          j        ¦   «         }|t          j        ¦   «         z   }|D �]}|t           j        t           j        fv rŒ||         }	 |t           j        k    r9dddddœ}||         |v r'|                     |› d|||                  › d�¦  «         n�|t           j        k    r^	 ||         t           j                 }n(# t          $ r ||         t           j
                 }Y nw xY w|                     |› d|› d�¦  «         n!|                     |› d||         › d�¦  «         �Œ# t          $ r Y �Œw xY wd S )NÚButtonÚTextÚChoiceÚ	Signature)r  ú/Txr  z/Sigú: r  )rö   Ú
attributesr'   r  ÚAAr  r  ÚParentÚTMr  ÚT)	r]   ró   r   rû   Úfield_attributes_tuplerý   Ú	attr_nameÚtypesÚnames	            rR   r  zPdfReader._write_field   s”  € Ý!#¤¡¤Ðà"Õ%BÔ%MÑ%OÔ%OÑOð 	ð +ð 	ñ 	ˆDØÝ”Ý”ðð ð ð Ø(¨Ô.ˆIðØ�2œ5’=�=ð !)Ø%Ø'Ø +ð	ð �Eð ˜T”{ eÐ+Ð+ØŸš¨Ð&LÐ&L°e¸EÀ$¼KÔ6HÐ&LÐ&LÐ&LÑMÔMÐMøØ�RœYÒ&Ð&ð1Ø$ Tœ{­2¬5Ô1˜˜øÝ#ð 1ð 1ð 1Ø$ Tœ{­2¬4Ô0˜˜˜ð1øøøà—M’M YÐ":Ð":°$Ð":Ð":Ð":Ñ;Ô;Ð;Ð;à—M’M YÐ"AÐ"A°%¸´+Ð"AÐ"AÐ"AÑBÔBÐBùøÝð ð ð à‘ðøøøð7	ð 	s8   ÁAD-Â-CÃD-Ã"C+Ã(D-Ã*C+Ã+A D-Ä-
D;Ä:D;Úfull_qualified_namec           
      ó¢  — dt           dt          t          t          f         dt           fd„}|                      ¦   «         }|€i S i }|                     ¦   «         D ]t\  }}|                     d¦  «        dk    rV|r|                     d¦  «        ||<   Œ9|                     d¦  «        | |t          t           |d	         ¦  «        |¦  «        <   Œu|S )
a¦  
        Retrieve form fields from the document with textual data.

        Args:
            full_qualified_name: to get full name

        Returns:
            A dictionary. The key is the name of the form field,
            the value is the content of the field.

            If the document contains multiple form fields with the same name, the
            second and following will get the suffix .2, .3, ...
        r!  rþ   rL   c                 ór   ‡ — ‰ |vr‰ S ‰ dz   t          t          ˆ fd„|D ¦   «         ¦  «        dz   ¦  «        z   S )Nr  c                 óD   •— g | ]}|                      ‰d z   ¦  «        ¯d‘ŒS )r  r   )Ú
startswith)Ú.0Úkkr!  s     €rR   ú
<listcomp>zGPdfReader.get_form_text_fields.<locals>.indexed_key.<locals>.<listcomp>Û  s.   ø€ ÐLÐLÐL R°R·]²]À1ÀsÁ7Ñ5KÔ5KÐL˜qÐLÐLÐLrT   é   )r‘   Úsum)r!  rþ   s   ` rR   Úindexed_keyz3PdfReader.get_form_text_fields.<locals>.indexed_keyÔ  sW   ø€ Ø˜ˆˆØ�ð Øñå�#ÐLÐLÐLÐL¨6ÐLÑLÔLÑMÔMÐPQÑQÑRÔRñSðrT   Nz/FTr,  z/Vr	  )r‘   r	   r   r  Úitemsr`   r   )r]   r7  rA  Ú
formfieldsÚffr   Úvalues          rR   Úget_form_text_fieldszPdfReader.get_form_text_fieldsÅ  sÞ   € ð	�3ð 	­­Sµ#¨X¬ð 	½3ð 	ð 	ð 	ð 	ð —_’_Ñ&Ô&ˆ
ØÐØˆIØˆØ&×,Ò,Ñ.Ô.ð 	Rð 	R‰LˆE�5Ø�yŠy˜ÑÔ 5Ò(Ð(Ø&ð RØ %§	¢	¨$¡¤�B�u‘I�IàBGÇ)Â)ÈDÁ/Ä/�B�{�{¥4­¨U°4¬[Ñ#9Ô#9¸2Ñ>Ô>Ñ?øØˆ	rT   c                 óL   — t          ddd¦  «         |                      ¦   «         S )z[
        Use :meth:`get_form_text_fields` instead.

        .. deprecated:: 1.28.0
        ÚgetFormTextFieldsrF  rf   )r   rF  r\   s    rR   rH  zPdfReader.getFormTextFieldsë  s2   € õ 	%ØÐ!7¸ñ	
ô 	
ð 	
ð ×(Ò(Ñ*Ô*Ð*rT   c                 óŠ  — |€Æi }t          t          | j        t          j                 ¦  «        }t
          j        |v r&t          t          |t
          j                 ¦  «        }nft
          j        |v rXt          t          |t
          j                 ¦  «        }t
          j        |v r%t          t          |t
          j                 ¦  «        }|€|S t          j
        |v rRt          t          |t          j
                 ¦  «        D ]*}|                      |                     ¦   «         |¦  «         Œ+�n–t
          j        |v �rt          t          |t
          j                 ¦  «        }d}|t          |¦  «        k     rÌt          t          ||                              ¦   «         ¦  «        }|dz  }t!          |t          ¦  «        sŒ[	 ||                              ¦   «         }n# t"          $ r Y n\w xY w|dz  }t!          |t          ¦  «        rd|v r	|d         }nŒ¯|                      ||¦  «        }	|	�|	||<   |t          |¦  «        k     °Ìn€|                     ¦   «         D ]k\  }
}|                     ¦   «         }t!          |t          ¦  «        r d|v r|d                              ¦   «         }nŒN|                      |
|¦  «        }	|	�|	||
<   Œl|S )zü
        Retrieve the named destinations present in the document.

        Args:
            tree:
            retval:

        Returns:
            A dictionary which maps names to
            :class:`Destinations<pypdf.generic.Destination>`.
        Nr   r   ú/D)r   r9   r˜   r¯   rÏ   ÚCAÚDESTSrD   ÚNAMESr$  r%  r4   rñ   rj   rÜ   r‘   ra   Ú
IndexErrorÚ_build_destinationrB  )r]   rò   rb   rü   Únamesr&  Úir^   rE  ÚdestÚk__Úv__Úvals                rR   rñ   z!PdfReader._get_named_destinationsö  sš  € ð  ˆ>ØˆFÝÕ+¨T¬\½"¼'Ô-BÑCÔCˆGõ Œx˜7Ð"Ð"Ý�J¨µ´Ô(9Ñ:Ô:��Ý”˜WÐ$Ð$ÝÕ-¨wµr´xÔ/@ÑAÔA�Ý”8˜uÐ$Ð$Ý¥
¨Eµ"´(¬OÑ<Ô<�Dàˆ<ØˆMåŒ7�dˆ?ˆ?å�K¨­b¬g¬Ñ7Ô7ð Gð G�Ø×,Ò,¨S¯^ª^Ñ-=Ô-=¸vÑFÔFÐFÐFñGõ ŒX˜ÐÑÝÕ)¨4µ´¬>Ñ:Ô:ˆEØˆAØ•c˜%‘j”j’.�.Ý�3  a¤× 3Ò 3Ñ 5Ô 5Ñ6Ô6�Ø�Q‘�Ý! #¥sÑ+Ô+ð ØðØ! !œH×/Ò/Ñ1Ô1�E�EøÝ!ð ð ð Ø�Eðøøøà�Q‘�Ý˜eÕ%5Ñ6Ô6ð !Ø˜u�}�}Ø % d¤˜˜à Ø×.Ò.¨s°EÑ:Ô:�ØÐ#Ø"&�F˜3‘Kð# •c˜%‘j”j’.�.øð& !ŸJšJ™LœLð 	'ð 	'‘��SØ—n’nÑ&Ô&�Ý˜cÕ#3Ñ4Ô4ð !Ø˜s�{�{Ø! $œi×2Ò2Ñ4Ô4˜˜à Ø×.Ò.¨s°CÑ8Ô8�ØÐ#Ø"&�F˜3‘KøØˆs   Æ?G Ç
G'Ç&G'c                 óP   — t          ddd¦  «         |                      ||¦  «        S )rí   ÚgetNamedDestinationsrï   rf   )r   rñ   )r]   rò   rb   s      rR   rW  zPdfReader.getNamedDestinations<  s6   € õ 	%Ø"Ð$8¸'ñ	
ô 	
ð 	
ð ×+Ò+¨D°&Ñ9Ô9Ð9rT   c                 ó*   — |                       ¦   «         S )zª
        Read-only property for the outline present in the document.

        (i.e., a collection of 'outline items' which are also known as
        'bookmarks')
        )Ú_get_outliner\   s    rR   ÚoutlinezPdfReader.outlineK  s   € ð × Ò Ñ"Ô"Ð"rT   c                 ó2   — t          ddd¦  «         | j        S )zP
        Use :py:attr:`outline` instead.

        .. deprecated:: 2.9.0
        ÚoutlinesrZ  rf   )r   rZ  r\   s    rR   r\  zPdfReader.outlinesU  s   € õ 	% Z°¸GÑDÔDÐDØŒ|ÐrT   ÚnoderZ  c                 ó¦  — |€°g }t          t          | j        t          j                 ¦  «        }t
          j        |v r]t          t          |t
          j                 ¦  «        }t          |t          ¦  «        r|S |�d|v rt          t          |d         ¦  «        }|  	                    ¦   «         | _
        |€|S 	 |                      |¦  «        }|r|                     |¦  «         d|v rHg }|                      t          t          |d         ¦  «        |¦  «         |r|                     |¦  «         d|vrnt          t          |d         ¦  «        }Œ™|S )Nú/FirstTz/Next)r   r9   r˜   r¯   rÏ   ÚCOÚOUTLINESra   r@   rñ   Ú_namedDestsÚ_build_outline_itemr  rY  )r]   r]  rZ  rü   ÚlinesÚoutline_objÚsub_outlines          rR   rY  zPdfReader._get_outline_  sY  € ð ˆ?ØˆGÝÕ+¨T¬\½"¼'Ô-BÑCÔCˆGõ Œ{˜gÐ%Ð%ÝÕ-¨wµr´{Ô/CÑDÔD�å˜e¥ZÑ0Ô0ð #Ø"�Nð Ð$¨°UÐ):Ð):ÝÕ 0°%¸´/ÑBÔB�DØ#×;Ò;Ñ=Ô=ˆDÔàˆ<ØˆNð	9Ø×2Ò2°4Ñ8Ô8ˆKØð ,Ø—’˜{Ñ+Ô+Ð+ð ˜4ÐÐØ)+�Ø×!Ò!¥$Õ'7¸¸h¼Ñ"HÔ"HÈ+ÑVÔVÐVØð 0Ø—N’N ;Ñ/Ô/Ð/à˜dÐ"Ð"ØÝÕ(¨$¨w¬-Ñ8Ô8ˆDð	9ð  ˆrT   c                 óP   — t          ddd¦  «         |                      ||¦  «        S )zQ
        Use :py:attr:`outline` instead.

        .. deprecated:: 1.28.0
        ÚgetOutlinesrZ  rf   )r   rY  )r]   r]  rZ  s      rR   rh  zPdfReader.getOutlinesˆ  s,   € õ 	% ]°I¸wÑGÔGÐGØ× Ò   wÑ/Ô/Ð/rT   c                 ó¶   — t          t          | j        t          j                 ¦  «        }t
          j        |v r t          d|t
          j                 ¦  «        S dS )uÔ   
        Read-only property for the list of threads.

        See Â§8.3.2 from PDF 1.7 spec.

        It's an array of dictionaries with "/F" and "/I" properties or
        None if there are no articles.
        r4   N)r   r9   r˜   r¯   rÏ   r`  ÚTHREADS)r]   rü   s     rR   ÚthreadszPdfReader.threads“  sF   € õ Õ'¨¬µb´gÔ)>Ñ?Ô?ˆÝŒ:˜Ð Ð Ý˜ w­r¬zÔ':Ñ;Ô;Ð;à�4rT   r  c                 ó"  — | j         €#d„ t          | j        ¦  «        D ¦   «         | _         |�t          |t          ¦  «        rdS t          |t
          ¦  «        r|}n|j        }| j         €
J d¦   «         ‚| j                              |d¦  «        }|S )z†
        Generate _page_id2num.

        Args:
            indirect_reference:

        Returns:
            The page number.
        Nc                 ó.   — i | ]\  }}|j         j        |“ŒS r“   )r  Úidnum)r<  rQ  Úxs      rR   ú
<dictcomp>z:PdfReader._get_page_number_by_indirect.<locals>.<dictcomp>°  s1   € ð !ð !ð !Ù26°!°Q�Ô$Ô*¨Að!ð !ð !rT   éÿÿÿÿrë   )r¨   Ú	enumerateÚpagesra   r@   Úintrn  r`   )r]   r  rn  Úrets       rR   Ú_get_page_number_by_indirectz&PdfReader._get_page_number_by_indirect£  s«   € ð ÔÐ$ð!ð !Ý:CÀDÄJÑ:OÔ:Oð!ñ !ô !ˆDÔð Ð%­Ð4FÍ
Ñ)SÔ)SÐ%Ø�2ÝÐ(­#Ñ.Ô.ð 	-Ø&ˆEˆEà&Ô,ˆEØÔ Ð,Ð,¨oÑ,Ô,Ð,ØÔ×#Ò# E¨2Ñ.Ô.ˆØˆ
rT   Úpagec                 ó6   — |                       |j        ¦  «        S )a  
        Retrieve page number of a given PageObject.

        Args:
            page: The page to get page number. Should be
                an instance of :class:`PageObject<pypdf._page.PageObject>`

        Returns:
            The page number or -1 if page is not found
        )rv  r  ©r]   rw  s     rR   Úget_page_numberzPdfReader.get_page_number¾  s   € ð ×0Ò0°Ô1HÑIÔIÐIrT   c                 óN   — t          ddd¦  «         |                      |¦  «        S )zV
        Use :meth:`get_page_number` instead.

        .. deprecated:: 1.28.0
        ÚgetPageNumberrz  rf   )r   rz  ry  s     rR   r|  zPdfReader.getPageNumberË  s+   € õ 	% _Ð6GÈÑQÔQÐQØ×#Ò# DÑ)Ô)Ð)rT   Údestinationc                 ó6   — |                       |j        ¦  «        S )zÚ
        Retrieve page number of a given Destination object.

        Args:
            destination: The destination to get page number.

        Returns:
            The page number or -1 if page is not found
        )rv  rw  ©r]   r}  s     rR   Úget_destination_page_numberz%PdfReader.get_destination_page_numberÔ  s   € ð ×0Ò0°Ô1AÑBÔBÐBrT   c                 óN   — t          ddd¦  «         |                      |¦  «        S )zb
        Use :meth:`get_destination_page_number` instead.

        .. deprecated:: 1.28.0
        ÚgetDestinationPageNumberr€  rf   )r   r€  r  s     rR   r‚  z"PdfReader.getDestinationPageNumberà  s4   € õ 	%Ø&Ð(EÀwñ	
ô 	
ð 	
ð ×/Ò/°Ñ<Ô<Ð<rT   rk   Úarrayc                 óZ  — d\  }}t          |t          t          f¦  «        s*t          |t          ¦  «        rt	          |¦  «        dk    s|€0t          ¦   «         }t          ||t          j        ¦   «         ¦  «        S |dd…         \  }}|dd …         }	 t          ||t          ||¬¦  «        ¦  «        S # t          $ rl t          d|› d|› �t          ¦  «         | j        r‚ | j        d         j        }|€t          ¦   «         n|}t          ||t          j        ¦   «         ¦  «        cY S w xY w)N©NNr   r?  )Úfit_typeÚfit_argszUnknown destination: ú )ra   r@   r‘   r4   rÜ   r8   r<   Úfitr1   r   r�   rž   rs  r  )r]   rk   rƒ  rw  ÚtypÚtmpr  s          rR   rO  zPdfReader._build_destinationë  s>  € ð ‰	ˆˆcõ �u�z­3Ð/Ñ0Ô0ð	Iå˜5¥+Ñ.Ô.ð	Iå36°u±:´:À²?°?Øˆ}å‘<”<ˆDÝ˜u d­C¬G©I¬IÑ6Ô6Ð6à˜a ˜cœ
‰IˆD�#Ø˜!˜"˜"”IˆEð	IÝ" 5¨$µ¸SÈ5Ð0QÑ0QÔ0QÑRÔRÐRøÝð Ið Ið IÝÐF°uÐFÐF¸uÐFÐFÍÑQÔQÐQØ”;ð Øà”j ”mÔ6�Ø58°[¥Z¡\¤\ \ÀcÐ"Ý" 5Ð*<½c¼g¹i¼iÑHÔHÐHÐHÐHðIøøøs   ÂB4 Â4A3D*Ä)D*c                 ó  — d\  }}}	 t          d|d         ¦  «        }n+# t          $ r | j        rt          d|›�¦  «        ‚d}Y nw xY wd|v rYt          t          |d         ¦  «        }t          t
          |t          j                 ¦  «        }|dk    r|t          j                 }n-d|v r)|d         }t          |t          ¦  «        rd	|v r|d	         }t          |t          ¦  «        r|                      ||¦  «        }nÄt          |t          ¦  «        rN	 |                      || j        |         j        ¦  «        }n‡# t          $ r |                      |d ¦  «        }Y new xY w|€|                      ||¦  «        }nH| j        rt          d
|›�¦  «        ‚t          d|›d�t           ¦  «         |                      |d ¦  «        }|r¢d|v r/t          d„ |d         D ¦   «         ¦  «        |t          d¦  «        <   d|v r|d         |t          d¦  «        <   d|v r|d         |t          d¦  «        <   t#          |                     dd¦  «        dk    ¦  «        |t          d¦  «        <   ||_        	 |j        |_        n# t*          $ r Y nw xY w|S )N©NNNr‘   z/Titlez(Outline Entry Missing /Title attribute: r  z/Az/GoToz/DestrJ  zUnexpected destination zRemoved unexpected destination z from destinationz/Cc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rZ   )r=   )r<  Úcs     rR   ú	<genexpr>z0PdfReader._build_outline_item.<locals>.<genexpr>B  s)   è è € Ð<`Ð<`ÐPQ½[È¹^¼^Ð<`Ð<`Ð<`Ð<`Ð<`Ð<`rT   ú/FrÚ   r   z
/%is_open%)r   r  rž   r1   r9   r?   r(   ÚSÚDra   r4   rO  r‘   rb  Ú
dest_arrayr   r�   r5   r`   r]  r  ÚAttributeError)r]   r]  rR  rk   Úoutline_itemÚactionÚaction_types          rR   rc  zPdfReader._build_outline_item  s  € Ø$4Ñ!ˆˆe�\ð	Ý˜  X¤Ñ/Ô/ˆEˆEøÝð 	ð 	ð 	ØŒ{ð XÝ"Ð#VÈdÐ#VÐ#VÑWÔWÐWØˆEˆEˆEð	øøøð
 �4ˆ<ˆ<åÕ*¨D°¬JÑ7Ô7ˆFÝ�z¨6Õ2EÔ2GÔ+HÑIÔIˆKØ˜gÒ%Ð%ØÕ1Ô3Ô4�øØ˜ˆ_ˆ_à˜”=ˆDå˜$Õ 0Ñ1Ô1ð "°d¸d°l°lØ˜D”z�å�d�KÑ(Ô(ð 	@Ø×2Ò2°5¸$Ñ?Ô?ˆLˆLÝ˜�cÑ"Ô"ð 	@ðDØ#×6Ò6Ø˜4Ô+¨DÔ1Ô<ñ ô  ��øõ ð Dð Dð Dà#×6Ò6°u¸dÑCÔC���ðDøøøð ˆ\ð  ×2Ò2°5¸$Ñ?Ô?ˆLˆLàŒ{ð Ý"Ð#E¸TÐ#EÐ#EÑFÔFÐFåØO°dÐOÐOÐOÝñô ð ð  ×2Ò2°5¸$Ñ?Ô?ˆLð ð 	Ø�tˆ|ˆ|å1<Ð<`Ð<`ÐUYÐZ^ÔU_Ð<`Ñ<`Ô<`Ñ1`Ô1`��Z¨Ñ-Ô-Ñ.Ø�tˆ|ˆ|ð 26°d´��Z¨Ñ-Ô-Ñ.Ø˜4ÐÐð 6:¸(´^��Z¨Ñ1Ô1Ñ2å5BØ—’˜ 1Ñ%Ô%¨Ò*ñ6ô 6ˆL� LÑ1Ô1Ñ2ð !ˆÔð	Ø.2Ô.EˆLÔ+Ð+øÝð 	ð 	ð 	ØˆDð	øøøàÐs3   ˆ Ÿ%AÁAÄ&D= Ä= E ÅE É0I= É=
J
Ê	J
c                 ó6   — t          | j        | j        ¦  «        S )zVRead-only property that emulates a list of :py:class:`Page<pypdf._page.Page>` objects.)r   rÝ   rç   r\   s    rR   rs  zPdfReader.pagesV  s   € õ ˜DÔ/°´Ñ@Ô@Ð@rT   c                 ó^   ‡ — ˆ fd„t          t          ‰ j        ¦  «        ¦  «        D ¦   «         S )z²
        A list of labels for the pages in this document.

        This property is read-only. The labels are in the order that the pages
        appear in the document.
        c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r“   )Úpage_index2page_label)r<  rQ  r]   s     €rR   r>  z)PdfReader.page_labels.<locals>.<listcomp>c  s$   ø€ ÐOÐOÐO°1Õ% d¨AÑ.Ô.ÐOÐOÐOrT   )ÚrangerÜ   rs  r\   s   `rR   Úpage_labelszPdfReader.page_labels[  s0   ø€ ð PÐOÐOÐO½½cÀ$Ä*¹o¼oÑ8NÔ8NÐOÑOÔOÐOrT   c                 óÀ   — t          t          | j        t          j                 ¦  «        }t
          j        |v r%t          t          |t
          j                 ¦  «        S dS )aï  
        Get the page layout currently being used.

        .. list-table:: Valid ``layout`` values
           :widths: 50 200

           * - /NoLayout
             - Layout explicitly not specified
           * - /SinglePage
             - Show one page at a time
           * - /OneColumn
             - Show one column at a time
           * - /TwoColumnLeft
             - Show pages in two columns, odd-numbered pages on the left
           * - /TwoColumnRight
             - Show pages in two columns, odd-numbered pages on the right
           * - /TwoPageLeft
             - Show two pages at a time, odd-numbered pages on the left
           * - /TwoPageRight
             - Show two pages at a time, odd-numbered pages on the right
        N)r   r9   r˜   r¯   rÏ   r™   ÚPAGE_LAYOUTr?   )r]   r˜   s     rR   Úpage_layoutzPdfReader.page_layoute  sF   € õ. Õ'¨¬µb´gÔ)>Ñ?Ô?ˆÝŒ>˜WÐ$Ð$Ý�
 G­B¬NÔ$;Ñ<Ô<Ð<ØˆtrT   c                 ó2   — t          ddd¦  «         | j        S )úU
        Use :py:attr:`page_layout` instead.

        .. deprecated:: 1.28.0
        ÚgetPageLayoutr¡  rf   ©r   r¡  r\   s    rR   r¤  zPdfReader.getPageLayout�  s   € õ 	% _°mÀWÑMÔMÐMØÔÐrT   c                 ó2   — t          ddd¦  «         | j        S )r£  Ú
pageLayoutr¡  rf   r¥  r\   s    rR   r§  zPdfReader.pageLayoutŠ  s   € õ 	% \°=À'ÑJÔJÐJØÔÐrT   c                 ó`   — 	 | j         t          j                 d         S # t          $ r Y dS w xY w)a2  
        Get the page mode currently being used.

        .. list-table:: Valid ``mode`` values
           :widths: 50 200

           * - /UseNone
             - Do not show outline or thumbnails panels
           * - /UseOutlines
             - Show outline (aka bookmarks) panel
           * - /UseThumbs
             - Show page thumbnails panel
           * - /FullScreen
             - Fullscreen view
           * - /UseOC
             - Show Optional Content Group (OCG) panel
           * - /UseAttachments
             - Show attachments panel
        z	/PageModeN)r˜   r¯   rÏ   r  r\   s    rR   Ú	page_modezPdfReader.page_mode”  s=   € ð*	Ø”<¥¤Ô(¨Ô5Ð5øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ Ÿ
-¬-c                 ó2   — t          ddd¦  «         | j        S )úS
        Use :py:attr:`page_mode` instead.

        .. deprecated:: 1.28.0
        ÚgetPageModer©  rf   ©r   r©  r\   s    rR   r¬  zPdfReader.getPageMode®  s   € õ 	% ]°KÀÑIÔIÐIØŒ~ÐrT   c                 ó2   — t          ddd¦  «         | j        S )r«  ÚpageModer©  rf   r­  r\   s    rR   r¯  zPdfReader.pageMode·  s   € õ 	% Z°¸gÑFÔFÐFØŒ~ÐrT   rs  Úinheritc                 ó¤  — t          t          j        ¦  «        t          t          j        ¦  «        t          t          j        ¦  «        t          t          j        ¦  «        f}|€i }|€J| j        t          j                  	                    ¦   «         }|d          	                    ¦   «         }g | _
        t          j        |v r|t          j                 }nt          j        |vrd}nd}|dk    rl|D ]}||v r||         ||<   Œ|t          j                 D ]C}i }	t          |t          ¦  «        r||	d<   | 	                    ¦   «         }
|
r | j        |
|fi |	¤Ž ŒDd S |dk    rqt#          |                     ¦   «         ¦  «        D ]\  }}||vr|||<   Œt'          | |¦  «        }|                     |¦  «         | j
                             |¦  «         d S d S )NrÙ   z/Pager  )r?   ÚPGÚ	RESOURCESÚMEDIABOXÚCROPBOXÚROTATEr˜   r¯   rÏ   rj   r¥   r$  ÚTYPEr%  ra   r>   rÛ   r  rB  r   rÅ   r  )r]   rs  r°  r  Úinheritable_page_attributesrü   Útrý   rw  ÚaddtrÆ   Úattr_inrE  Úpage_objs                 rR   rÛ   zPdfReader._flattenÁ  sï  € õ •r”|Ñ$Ô$Ý•r”{Ñ#Ô#Ý•r”zÑ"Ô"Ý•r”yÑ!Ô!ð	'
Ð#ð ˆ?ØˆGØˆ=ð ”l¥2¤7Ô+×6Ò6Ñ8Ô8ˆGØ˜HÔ%×0Ò0Ñ2Ô2ˆEØ#%ˆDÔ åŒ7�eÐÐØ•b”g”ˆAˆAåŒW˜EÐ!Ð!ØˆAˆAàˆAà�Š=ˆ=Ø3ð 0ð 0�Ø˜5�=�=Ø$)¨$¤K�G˜D‘MøØ�bœgœð 8ð 8�Ø�Ý˜d¥NÑ3Ô3ð 6Ø15�DÐ-Ñ.Ø—o’oÑ'Ô'�Øð 8à!�D”M # wÐ7Ð7°$Ð7Ð7Ð7øð8ð 8ð �'Š\ˆ\Ý"& w§}¢}¡¤Ñ"7Ô"7ð +ð +‘�˜ð  %Ð'Ð'Ø%*�E˜'‘NøÝ! $Ð(:Ñ;Ô;ˆHØ�OŠO˜EÑ"Ô"Ð"ð Ô ×'Ò'¨Ñ1Ô1Ð1Ð1Ð1ð ˆ\rT   c                 óÂ  — | j         |j                 \  }}t          |d| ¦  «                             ¦   «         }t	          t
          |d         ¦  «        dk    sJ ‚||d         k     sJ ‚t          t          |                     ¦   «         ¦  «        ¦  «        }t          |d         ¦  «        D �]�}t          |¦  «         |                     dd¦  «         t          j        |¦  «        }t          |¦  «         |                     dd¦  «         t          j        |¦  «        }t          |¦  «         |                     dd¦  «         ||j        k    rŒ¦| j        r||k    rt          d¦  «        ‚|                     t!          |d         |z   ¦  «        d¦  «         t          |¦  «         |                     dd¦  «         	 t#          || ¦  «        }	ni# t$          $ r\}
t'          d	|› d
|j        › d|j        › d|
› �t*          ¦  «         | j        rt          d|
› �¦  «        ‚t-          ¦   «         }	Y d }
~
nd }
~
ww xY w|	c S | j        rt          d¦  «        ‚t-          ¦   «         S )Nr   ú/Typez/ObjStmr  rq  r   zObject is in wrong index.r_  zInvalid stream (index z) within object rˆ  r-  zCan't read object stream: z%This is a fatal error in strict mode.)Úxref_objStmrn  r>   rj   r   r‘   r   r   Úget_datar�  r    r½   rA   Úread_from_streamrž   r1   rt  rF   r2   r   Ú
generationr�   r@   )r]   r  ÚstmnumÚidxÚobj_stmÚstream_datarQ  ÚobjnumÚoffsetrÆ   Úexcs              rR   Ú_get_object_from_streamz!PdfReader._get_object_from_streamö  s§  € ð
 Ô&Ð'9Ô'?Ô@‰ˆ�Ý'5°f¸aÀÑ'FÔ'F×'QÒ'QÑ'SÔ'Sˆå•C˜ Ô)Ñ*Ô*¨iÒ7Ð7Ð7Ð7à�W˜T”]Ò"Ð"Ð"Ð"Ý�b ×!1Ò!1Ñ!3Ô!3Ñ4Ô4Ñ5Ô5ˆÝ�w˜t”}Ñ%Ô%ð $	ñ $	ˆAÝ Ñ,Ô,Ð,Ø×Ò˜R Ñ#Ô#Ð#Ý!Ô2°;Ñ?Ô?ˆFÝ Ñ,Ô,Ð,Ø×Ò˜R Ñ#Ô#Ð#Ý!Ô2°;Ñ?Ô?ˆFÝ Ñ,Ô,Ð,Ø×Ò˜R Ñ#Ô#Ð#ØÐ+Ô1Ò1Ð1àØŒ{ð @˜s ašx˜xÝ"Ð#>Ñ?Ô?Ð?Ø×Ò�S ¨Ô!2°VÑ!;Ñ<Ô<¸aÑ@Ô@Ð@õ   Ñ,Ô,Ð,Ø×Ò˜R Ñ#Ô#Ð#ð#Ý! +¨tÑ4Ô4��øÝ!ð #ð #ð #õ ð¨Qð ð Ø)Ô/ðð Ø2DÔ2Oðð àðð õ ñ	ô ð ð ”;ð KÝ&Ð'IÀCÐ'IÐ'IÑJÔJÐJå ‘l”l������øøøøð#øøøð ˆJˆJˆJàŒ;ð 	HÝÐFÑGÔGÐGÝ‰|Œ|Ðs   Æ?GÇ
H6ÇAH1È1H6ÚnumÚgenc                 óH   — t          ||| ¦  «                             ¦   «         S )a/  
        Used to ease development.

        This is equivalent to generic.IndirectObject(num,gen,self).get_object()

        Args:
            num: The object number of the indirect object.
            gen: The generation number of the indirect object.

        Returns:
            A PdfObject
        )r>   rj   )r]   rË  rÌ  s      rR   Ú_get_indirect_objectzPdfReader._get_indirect_object,  s"   € õ ˜c 3¨Ñ-Ô-×8Ò8Ñ:Ô:Ð:rT   c                 ó
  — t          |t          ¦  «        rt          |d| ¦  «        }|                      |j        |j        ¦  «        }|�|S |j        dk    r%|j        | j        v r|                      |¦  «        }�nç|j        | j        v �rc|j        | j        |j                 v �rI| j	         
                    |j        i ¦  «         
                    |j        d¦  «        rt          ¦   «         S | j        |j                 |j                 }| j                             |d¦  «         	 |                      | j        ¦  «        \  }}�n–# t          $ �rˆ t!          | j        d¦  «        r't#          | j                             ¦   «         ¦  «        }ni| j                             ¦   «         }| j                             dd¦  «         | j                             d¦  «        }| j                             |d¦  «         t+          j        d|j        › d|j        › d�                     ¦   «         |¦  «        }|�¤t1          d|j        › d	|j        › d
�t2          ¦  «         |                     d¦  «        dz   | j        |j                 |j        <   | j                             |                     d¦  «        dz   ¦  «         |                      | j        ¦  «        \  }}nd}Y nw xY w||j        k    r5| j        r.| j        r&t;          d|j        › d|j        › d|› d|› d�	¦  «        ‚n8||j        k    r-| j        r&t;          d|j        › d|j        › d|› d|› d�	¦  «        ‚| j        r||j        k    sJ ‚t=          | j        | ¦  «        }| j        sj| j         �c| j          !                    ¦   «         stE          d¦  «        ‚tG          tH          |¦  «        }| j          %                    ||j        |j        ¦  «        }�nut!          | j        d¦  «        r't#          | j                             ¦   «         ¦  «        }ni| j                             ¦   «         }| j                             dd¦  «         | j                             d¦  «        }| j                             |d¦  «         t+          j        d|j        › d|j        › d�                     ¦   «         |¦  «        }|��Yt1          d|j        › d|j        › d�t2          ¦  «         |j        | j        vri | j        |j        <   |                     d¦  «        dz   | j        |j                 |j        <   | j                             | &                    d¦  «        dz   ¦  «         tO          | j        ¦  «         | j                             dd¦  «         t=          | j        | ¦  «        }| j        sj| j         �c| j          !                    ¦   «         stE          d¦  «        ‚tG          tH          |¦  «        }| j          %                    ||j        |j        ¦  «        }n<t1          d|j        › d|j        › d�t2          ¦  «         | j        rt;          d¦  «        ‚|  (                    |j        |j        |¦  «         |S )Nr   FÚ	getbufferrq  z\sz\s+z\s+objz
Object ID ú,z ref repairedr   zExpected object ID (rˆ  z) does not match actual (z); xref table not zero-indexed.z).zFile has not been decryptedzObject z foundz not defined.zCould not find object.))ra   rt  r>   Úcache_get_indirect_objectrÂ  rn  r¿  rÊ  ÚxrefÚxref_free_entryr`   r@   r�   r½   Úread_object_headerÚ	Exceptionr©   ÚbytesrÐ  r¼   r«   ÚreÚsearchÚencoder   r�   Ústartr§   rž   r1   rF   r¬   r­   Úis_decryptedr0   r   rB   Údecrypt_objectÚendr$   Úcache_indirect_object)	r]   r  rb   rÛ  rn  rÂ  ÚbufÚpÚms	            rR   rj   zPdfReader.get_object;  s  € õ Ð(­#Ñ.Ô.ð 	MÝ!/Ð0BÀAÀtÑ!LÔ!LÐØ×/Ò/ØÔ)Ð+=Ô+Cñ
ô 
ˆð ÐØˆMàÔ)¨QÒ.Ð.Ø"Ô(¨DÔ,<Ð<Ð<à×1Ò1Ð2DÑEÔEˆF‰FàÔ)¨T¬YÐ6Ñ6Ø"Ô(¨D¬IÐ6HÔ6SÔ,TÐTÑTàÔ#×'Ò'Ð(:Ô(EÀrÑJÔJ×NÒNØ"Ô(¨%ñô ð $õ "‘|”|Ð#Ø”IÐ0Ô;Ô<Ð=OÔ=UÔVˆEØŒK×Ò˜U AÑ&Ô&Ð&ðØ$(×$;Ò$;¸D¼KÑ$HÔ$HÑ!��z‘zøÝð ñ ð Ý˜4œ;¨Ñ4Ô4ð +Ý ¤× 5Ò 5Ñ 7Ô 7Ñ8Ô8�C�Càœ×(Ò(Ñ*Ô*�AØ”K×$Ò$ Q¨Ñ*Ô*Ð*Øœ+×*Ò*¨2Ñ.Ô.�CØ”K×$Ò$ Q¨Ñ*Ô*Ð*Ý”IØ\Ð,Ô2Ð\Ð\Ð7IÔ7TÐ\Ð\Ð\×cÒcÑeÔeØñô �ð �=Ý"ØlÐ%7Ô%=ÐlÐlÐ@RÔ@]ÐlÐlÐlÝ ñô ð ð Ÿš ™œ a™ð ”IÐ0Ô;Ô<Ø*Ô0ñð ”K×$Ò$ Q§W¢W¨Q¡Z¤Z°!¡^Ñ4Ô4Ð4Ø(,×(?Ò(?ÀÄÑ(LÔ(LÑ%�E˜:˜:à�Eøøð/øøøð0 Ð*Ô0Ò0Ð0°T´_Ð0à”;ð Ý&ð7Ð/AÔ/Gð 7ð 7ÐJ\ÔJgð 7ð 7Ø27ð7ð 7Ø:Dð7ð 7ð 7ñô ð ðð Ð,Ô2Ò2Ð2°t´{Ð2å"ð/Ð+=Ô+Cð /ð /Ø)Ô4ð/ð /àð/ð /à *ð/ð /ð /ñô ð ð
 Œ{ð CØ!Ð%7Ô%BÒBÐBÐBÐBÝ  ¤¨dÑ3Ô3ˆFð Ô,ð °Ô1AÐ1MàÔ'×4Ò4Ñ6Ô6ð OÝ/Ð0MÑNÔNÐNå�i¨Ñ0Ô0�ØÔ)×8Ò8ØÐ.Ô4Ð6HÔ6Sñô �ùõ �t”{ KÑ0Ô0ð 'Ý˜DœK×1Ò1Ñ3Ô3Ñ4Ô4��à”K×$Ò$Ñ&Ô&�Ø”× Ò   AÑ&Ô&Ð&Ø”k×&Ò& rÑ*Ô*�Ø”× Ò   AÑ&Ô&Ð&Ý”	ØXÐ(Ô.ÐXÐXÐ3EÔ3PÐXÐXÐX×_Ò_ÑaÔaØñô ˆAð ‰}ÝØ^Ð0Ô6Ð^Ð^Ð9KÔ9VÐ^Ð^Ð^Ýñô ð ð &Ô0¸¼	ÐAÐAØ?A�D”IÐ0Ô;Ñ<à—G’G˜A‘J”J ‘Nð ”	Ð,Ô7Ô8Ð9KÔ9QÑRð ”× Ò  §¢ q¡¤¨A¡Ñ.Ô.Ð.Ý$ T¤[Ñ1Ô1Ð1Ø”× Ò   QÑ'Ô'Ð'Ý$ T¤[°$Ñ7Ô7�ð Ô0ð °TÔ5EÐ5QàÔ+×8Ò8Ñ:Ô:ð SÝ3Ð4QÑRÔRÐRå!¥)¨VÑ4Ô4�FØ!Ô-×<Ò<ØÐ 2Ô 8Ð:LÔ:Wñô �Føõ ØeÐ0Ô6ÐeÐeÐ9KÔ9VÐeÐeÐeÝñô ð ð ”;ð AÝ&Ð'?Ñ@Ô@Ð@Ø×"Ò"ØÔ)Ð+=Ô+CÀVñ	
ô 	
ð 	
ð ˆs   Ä$E ÅFKËKÚindirectReferencec                 óN   — t          ddd¦  «         |                      |¦  «        S )zQ
        Use :meth:`get_object` instead.

        .. deprecated:: 1.28.0
        Ú	getObjectrj   rf   )r   rj   )r]   rã  s     rR   rå  zPdfReader.getObject½  s)   € õ 	% [°,ÀÑHÔHÐHØ�ŠÐ0Ñ1Ô1Ð1rT   c                 óH  — d}t          |¦  «         |t          |¦  «        z  }|                     dd¦  «         t          |¦  «        }|t          |¦  «        z  }|                     dd¦  «         t          |¦  «        }|t          |¦  «        z  }|                     dd¦  «         |                     d¦  «        }t          |¦  «         |                     dd¦  «         |r"| j        rt          d|› d|› �t          ¦  «         t          |¦  «        t          |¦  «        fS )NFrq  r   é   z.Superfluous whitespace found in object header rˆ  )
r#   r$   r½   r"   r«   r    rž   r   r�   rt  )r]   r�   Úextrarn  rÂ  Ú_objs         rR   rÕ  zPdfReader.read_object_headerÈ  s+  € ð
 ˆÝ˜&Ñ!Ô!Ð!ØÕ% fÑ-Ô-Ñ-ˆØ�Š�B˜ÑÔÐÝ% fÑ-Ô-ˆØÕ% fÑ-Ô-Ñ-ˆØ�Š�B˜ÑÔÐÝ*¨6Ñ2Ô2ˆ
ØÕ% fÑ-Ô-Ñ-ˆØ�Š�B˜ÑÔÐð �{Š{˜1‰~Œ~ˆå˜FÑ#Ô#Ð#Ø�Š�B˜ÑÔÐØð 	�T”[ð 	ÝØUÀÐUÐUÈÐUÐUÝñô ð õ �5‰zŒz�3˜z™?œ?Ð*Ð*rT   c                 óN   — t          ddd¦  «         |                      |¦  «        S )zY
        Use :meth:`read_object_header` instead.

        .. deprecated:: 1.28.0
        ÚreadObjectHeaderrÕ  rf   )r   rÕ  )r]   r�   s     rR   rë  zPdfReader.readObjectHeaderä  s,   € õ 	%Ð%7Ð9MÈwÑWÔWÐWØ×&Ò& vÑ.Ô.Ð.rT   rÂ  rn  c                 ó:   — | j                              ||f¦  «        S rZ   )r¦   r`   ©r]   rÂ  rn  s      rR   rÒ  z#PdfReader.cache_get_indirect_objectí  s    € ð Ô$×(Ò(¨*°eÐ)<Ñ=Ô=Ð=rT   c                 óP   — t          ddd¦  «         |                      ||¦  «        S )z`
        Use :meth:`cache_get_indirect_object` instead.

        .. deprecated:: 1.28.0
        ÚcacheGetIndirectObjectrÒ  rf   )r   rÒ  rí  s      rR   rï  z PdfReader.cacheGetIndirectObjectò  s6   € õ 	%Ø$Ð&AÀ7ñ	
ô 	
ð 	
ð ×-Ò-¨j¸%Ñ@Ô@Ð@rT   rÆ   c                 óÊ   — ||f| j         v r3d|› d|› �}| j        rt          |¦  «        ‚t          |t          ¦  «         || j         ||f<   |�t          ||| ¦  «        |_        |S )NzOverwriting cache for rˆ  )r¦   rž   r1   r   r�   r>   r  )r]   rÂ  rn  rÆ   Úmsgs        rR   rß  zPdfReader.cache_indirect_objectÿ  s„   € ð ˜Ð $Ô"7Ð7Ð7Ø?¨:Ð?Ð?¸Ð?Ð?ˆCØŒ{ð (Ý" 3Ñ'Ô'Ð'Ý˜3¥Ñ)Ô)Ð)Ø58ˆÔ˜z¨5Ð1Ñ2Øˆ?Ý%3°E¸:ÀtÑ%LÔ%LˆCÔ"Øˆ
rT   c                 óP   — t          dd¦  «         |                      |||¦  «        S )z\
        Use :meth:`cache_indirect_object` instead.

        .. deprecated:: 1.28.0
        ÚcacheIndirectObjectrß  )r   rß  )r]   rÂ  rn  rÆ   s       rR   ró  zPdfReader.cacheIndirectObject  s.   € õ 	%Ð%:Ð<SÑTÔTÐTØ×)Ò)¨*°e¸SÑAÔAÐArT   c                 óf  — |                       |¦  «         |                      |¦  «         |                      |¦  «        }|                      ||¦  «        }|dk    r1| j        r|rt          d¦  «        ‚t          d|› d�t          ¦  «         |                      |||¦  «         | j	        �r| j        sþ| 
                    ¦   «         }| j                             ¦   «         D ]¶\  }}|dk    rŒt          |                     ¦   «         ¦  «        }|D ]†}|                     ||         d¦  «         	 |                      |¦  «        \  }	}
n# t"          $ r Y  nBw xY w|	|| j	        z
  k    r/| j        |         |         | j        |         |	<   | j        |         |= Œ‡Œ·|                     |d¦  «         d S d S d S )Nr   zBroken xref tablezincorrect startxref pointer(ú)éÿÿ  )Ú_basic_validationÚ_find_eof_markerÚ_find_startxref_posÚ_get_xref_issuesrž   r1   r   r�   Ú_read_xref_tables_and_trailersr§   r¼   rÓ  rB  Úsortedr  r½   rÕ  Ú
ValueError)r]   r�   Ú	startxrefÚxref_issue_nrr¿   rÌ  Ú
xref_entryÚxref_kÚidÚpidÚ_pgens              rR   r«   zPdfReader.read  sô  € Ø×Ò˜vÑ&Ô&Ð&Ø×Ò˜fÑ%Ô%Ð%Ø×,Ò,¨VÑ4Ô4ˆ	ð ×-Ò-¨f°iÑ@Ô@ˆØ˜AÒÐØŒ{ð 8˜}ð 8Ý"Ð#6Ñ7Ô7Ð7ÝÐJ¸-ÐJÐJÐJÍHÑUÔUÐUð 	×+Ò+¨F°I¸}ÑMÔMÐMð Œ?ñ 	  4¤;ð 	 Ø—+’+‘-”-ˆCØ#'¤9§?¢?Ñ#4Ô#4ð /ð /‘��ZØ˜%’<�<ØÝØ—O’OÑ%Ô%ñô �ð !ð 	/ð 	/�BØ—K’K 
¨2¤°Ñ2Ô2Ð2ðØ%)×%<Ò%<¸VÑ%DÔ%D™
˜˜U˜UøÝ%ð ð ð Ø˜˜ðøøøà˜b 4¤?Ñ2Ò2Ð2à.2¬i¸¬n¸RÔ.@˜œ	 #œ sÑ+Ø œI cœN¨2Ð.øøð �KŠK˜˜QÑÔÐÐÐð)	 ð 	 ð 	 ð 	 s   Ä.EÅ
EÅEc                 ó®  — |                      dt          j        ¦  «         	 |                     d¦  «        }n# t          $ r t          d¦  «        ‚w xY w|dk    rt          d¦  «        ‚|dk    rE| j        r&t          d| 	                    d¦  «        › d	�¦  «        ‚t          d
|› �t          ¦  «         |                      dt          j        ¦  «         dS )z/Ensure file is not empty. Read at most 5 bytes.r   é   zcannot read headerrT   zCannot read an empty files   %PDF-zPDF starts with 'Úutf8z', but '%PDF-' expectedzinvalid pdf header: N)r½   ÚosÚSEEK_SETr«   ÚUnicodeDecodeErrorr   r/   rž   r1   r¾   r   r�   ÚSEEK_END)r]   r�   Úheader_bytes      rR   r÷  zPdfReader._basic_validation=  sõ   € à�Š�A•r”{Ñ#Ô#Ð#ð	=Ø Ÿ+š+ a™.œ.ˆKˆKøÝ!ð 	=ð 	=ð 	=Ý&Ð';Ñ<Ô<Ð<ð	=øøøà˜#ÒÐÝ Ð!<Ñ=Ô=Ð=Ø˜HÒ$Ð$ØŒ{ð OÝ"ð+¨×(:Ò(:¸6Ñ(BÔ(Bð +ð +ð +ñô ð õ
 ÐC°kÐCÐCÅXÑNÔNÐNØ�Š�A•r”{Ñ#Ô#Ð#Ð#Ð#s	   ¢8 ¸Ac                 óî   — d}d}|dd…         dk    rb|                      ¦   «         |k     r+| j        rt          d¦  «        ‚t          dt          ¦  «         t          |¦  «        }|dd…         dk    °`dS dS )a  
        Jump to the %%EOF marker.

        According to the specs, the %%EOF marker should be at the very end of
        the file. Hence for standard-compliant PDF documents this function will
        read only the last part (DEFAULT_BUFFER_SIZE).
        rN   rT   Nr  s   %%EOFzEOF marker not found)r¼   rž   r1   r   r�   r!   )r]   r�   ÚHEADER_SIZEÚlines       rR   rø  zPdfReader._find_eof_markerP  s�   € ð ˆØˆØ�2�A�2Œh˜(Ò"Ð"Ø�{Š{‰}Œ}˜{Ò*Ð*Ø”;ð EÝ&Ð'=Ñ>Ô>Ð>å"Ð#9½8ÑDÔDÐDÝ% fÑ-Ô-ˆDð �2�A�2Œh˜(Ò"Ð"Ð"Ð"Ð"Ð"rT   c                 ó‚  — t          |¦  «        }	 t          |¦  «        }t          |¦  «        }|dd…         dk    rt          d¦  «        ‚nr# t          $ re |                     d¦  «        st          d¦  «        ‚t          |dd…                              ¦   «         ¦  «        }t          dt          ¦  «         Y nw xY w|S )zš
        Find startxref entry - the location of the xref table.

        Args:
            stream:

        Returns:
            The bytes offset
        Né	   s	   startxrefzstartxref not foundz startxref on same line as offset)r!   rt  r1   rý  r;  Ústripr   r�   )r]   r�   r  rþ  s       rR   rù  zPdfReader._find_startxref_posb  sÙ   € õ " &Ñ)Ô)ˆð	:Ý˜D™	œ	ˆIõ & fÑ-Ô-ˆDØ�B�Q�BŒx˜<Ò'Ð'Ý"Ð#8Ñ9Ô9Ð9ð (øõ ð 	Ið 	Ið 	Ià—?’? <Ñ0Ô0ð :Ý"Ð#8Ñ9Ô9Ð9Ý˜D   œHŸNšNÑ,Ô,Ñ-Ô-ˆIÝÐ=½xÑHÔHÐHÐHÐHð	Iøøøð Ðs   ‘A ÁA,B<Â;B<c                 óú  — |                      d¦  «        }|dk    rt          d¦  «        ‚t          |¦  «         |                     dd¦  «         d}	 t	          t
          t          || ¦  «        ¦  «        }|r)|dk    r#|| _        | j        rt          dt          ¦  «         d	}t          |¦  «         |                     dd¦  «         t	          t
          t          || ¦  «        ¦  «        }t          |¦  «         |                     dd¦  «         d}||k     �r‰|                      d
¦  «        }|d         dv r5|                     dd¦  «         |                      d
¦  «        }|d         dv °5|d         dv r|                     dd¦  «         	 |d d…                              d¦  «        \  }}	|dd…         }
t          |¦  «        t          |	¦  «        }}�n0# t          $ �r" t          |d¦  «        r"t          |                     ¦   «         ¦  «        }nT|                     ¦   «         }|                     dd¦  «         |                      d¦  «        }|                     |¦  «         t#          j        |› d�                     ¦   «         |¦  «        }|€t          d|› d�t          ¦  «         d}d}nOt          d|› d�t          ¦  «         t          |                     d¦  «        ¦  «        }|                     ¦   «         }Y nw xY w|| j        vri | j        |<   i | j        |<   || j        |         v rn\|| j        |         |<   	 |
dk    | j        |         |<   n# t          $ r Y nw xY w	 |
dk    | j        d         |<   n# t          $ r Y nw xY w|dz  }|dz  }||k     �°‰t          |¦  «         |                     dd¦  «         |                      d¦  «        }|dk    r|                     dd¦  «         nd S �Œª)Nrç  s   refzxref table read errorrq  r   Tr   zFXref table not zero-indexed. ID numbers for objects will be corrected.Fé   ó   
iíÿÿÿs   0123456789té   ó    é   é   rÐ  z\s+(\d+)\s+objzentry z( in Xref table invalid; object not foundrö  z' in Xref table invalid but object foundó   fé   s   traileriùÿÿÿ)r«   r1   r    r½   r   rt  rF   r§   rž   r   r�   ÚsplitrÖ  r©   r×  rÐ  r¼   rØ  rÙ  rÚ  ÚgrouprÛ  rÓ  rÔ  )r]   r�   ÚrefÚ
first_timerË  rK   Úcntr  Úoffset_bÚgeneration_bÚentry_type_brÈ  rÂ  rà  rá  rÿ   Útrailer_tags                    rR   Ú_read_standard_xref_tablez#PdfReader._read_standard_xref_table{  sW  € à�kŠk˜!‰nŒnˆØ�&Š=ˆ=ÝÐ6Ñ7Ô7Ð7Ý˜FÑ#Ô#Ð#Ø�Š�B˜ÑÔÐØˆ
ðc	Ý•s�K¨°Ñ5Ô5Ñ6Ô6ˆCØð ˜c Qšh˜hØ"%�”Ø”;ð Ý"Ø`Ý ñô ð ð ˆJÝ Ñ'Ô'Ð'Ø�KŠK˜˜AÑÔÐÝ��[¨°Ñ6Ô6Ñ7Ô7ˆDÝ Ñ'Ô'Ð'Ø�KŠK˜˜AÑÔÐØˆCØ˜’*‘*Ø—{’{ 2‘”�ð ˜1”g Ð,Ð,Ø—K’K ¨Ñ+Ô+Ð+Ø!Ÿ;š; r™?œ?�Dð ˜1”g Ð,Ð,ð ˜”8˜~Ð-Ð-Ø—K’K  AÑ&Ô&Ð&ð+Ø-1°#°2°#¬Y¯_ª_¸TÑ-BÔ-BÑ*�H˜lØ#'¨¨2¨¤;�Lå),¨X©¬½¸LÑ8IÔ8I˜J�F‘FøÝ ð +ñ +ð +å˜v {Ñ3Ô3ð 'Ý# F×$4Ò$4Ñ$6Ô$6Ñ7Ô7˜˜à"ŸKšK™MœM˜ØŸš A qÑ)Ô)Ð)Ø$Ÿkšk¨"™oœo˜ØŸš A™œ˜åœ	 SÐ";Ð";Ð";×"BÒ"BÑ"DÔ"DÀcÑJÔJ�AØ�yÝ&ØR SÐRÐRÐRÝ$ñô ð ð &+˜
Ø!#˜˜å&ØQ SÐQÐQÐQÝ$ñô ð õ &)¨¯ª°©¬¡_¤_˜
Ø!"§¢¡¤˜øøð1+øøøð4  T¤YÐ.Ð.Ø,.�D”I˜jÑ)Ø79�DÔ(¨Ñ4Ø˜$œ) JÔ/Ð/Ð/ð
 à17�D”I˜jÔ)¨#Ñ.ðØ@LÐPTÒ@T˜Ô,¨ZÔ8¸Ñ=Ð=øÝ$ð ð ð Ø˜ðøøøðØ;GÈ4Ò;O˜Ô,¨UÔ3°CÑ8Ð8øÝ$ð ð ð Ø˜ðøøøà�q‘�Ø�q‘�ðS ˜’*‘*õT   Ñ'Ô'Ð'Ø�KŠK˜˜AÑÔÐØ Ÿ+š+ a™.œ.ˆKØ˜jÒ(Ð(à—’˜B Ñ"Ô"Ð"Ð"à�ñGc	s8   ÆAG ÇD*LÌLÍM Í
M(Í'M(Í,N Î
NÎNrþ  rÿ  c                 óÜ  — i | _         i | _        i | _        t          ¦   «         | _        |��@|                     |d¦  «         |                     d¦  «        }|dv r|                     d¦  «        }|dk    r|                      |¦  «        }�nÚ|r+	 |                      |¦  «         d S # t          $ r d}Y �n±w xY w| 
                    ¦   «         �r‚	 |                      |¦  «        }n_# t          $ rR}t          j        | j        v r#t          d|j        › �t           ¦  «         Y d }~d S t#          d|j        › �¦  «        ‚d }~ww xY wt          j        t          j        t          j        t          j        t          j        f}|D ]9}||v r3|| j        vr*|                     |¦  «        | j        t/          |¦  «        <   Œ:d|v rq|                     ¦   «         }	|                     t3          t4          |d         ¦  «        dz   d¦  «         |                      |¦  «         |                     |	d¦  «         d|v rt3          t4          |d         ¦  «        }nd S |                      ||¦  «        }|�­>d S d S )	Nr   r   r  ó   xz!Previous trailer can not be read ztrailer can not be read ú/XRefStmú/Prev)rÓ  rÔ  r¿  r9   r˜   r½   r«   Ú
_read_xrefÚ_rebuild_xref_tablerÖ  ÚisdigitÚ_read_pdf15_xref_streamr¯   rÏ   r   Úargsr�   r1   r²   rÃ   r°   ÚSIZEÚraw_getr?   r¼   r   rt  Ú_read_xref_other_error)
r]   r�   rþ  rÿ  ro  Ú
xrefstreamÚeÚtrailer_keysr^   rá  s
             rR   rû  z(PdfReader._read_xref_tables_and_trailersè  s•  € ð 02ˆŒ	Ø:<ˆÔØ79ˆÔÝ'Ñ)Ô)ˆŒØÑ#à�KŠK˜	 1Ñ%Ô%Ð%Ø—’˜A‘”ˆAØ�Gˆ|ˆ|Ø—K’K ‘N”N�Ø�DŠyˆyØ ŸOšO¨FÑ3Ô3�	‘	Øð  Kð&Ø×,Ò,¨VÑ4Ô4Ð4Ø�EøÝ ð &ð &ð &Ø$%�M�M‘Mð&øøøà—’‘”ñ Kð
PØ!%×!=Ò!=¸fÑ!EÔ!E�J�JøÝ ð Pð Pð PÝ”w $¤,Ð.Ð.Ý&ØHÀÄÐHÐHÝ$ñô ð ð ˜˜˜˜˜å*Ð+NÀaÄfÐ+NÐ+NÑOÔOÐOøøøøðPøøøõ  "œw­¬
µB´G½R¼UÅBÄGÐK�Ø'ð Pð P�CØ˜jÐ(Ð(¨S¸¼Ð-DÐ-DØ8B×8JÒ8JÈ3Ñ8OÔ8O˜œ¥Z°¡_¤_Ñ5øØ Ð+Ð+ØŸš™œ�AØ—K’K¥¥S¨*°ZÔ*@Ñ AÔ AÀAÑ EÀqÑIÔIÐIØ×0Ò0°Ñ8Ô8Ð8Ø—K’K  1Ñ%Ô%Ð%Ø˜jÐ(Ð(Ý $¥S¨*°WÔ*=Ñ >Ô >�I�Ià�Eà ×7Ò7¸À	ÑJÔJ�	ðQ Ñ#Ð#Ð#Ð#Ð#s0   ÂB' Â'B7Â6B7ÃC& Ã&
EÃ00D=Ä&D=Ä=Ec                 ó¦  — |                       |¦  «         t          |¦  «         |                     dd¦  «         t          t          t
          t          f         t          || ¦  «        ¦  «        }|                     ¦   «         D ]\  }}|| j	        vr
|| j	        |<   Œd|v r¢| 
                    ¦   «         }|                     t          t          |d         ¦  «        dz   d¦  «         	 |                      |¦  «         n/# t          $ r" t          d|d         › d�t          ¦  «         Y nw xY w|                     |d¦  «         d|v r
|d         }|S d S )Nrq  r   r(  r   zXRef object at z, can not be read, some object may be missingr)  )r%  r    r½   r   r	   r‘   r   rF   rB  r˜   r¼   rt  r-  rÖ  r   r�   )r]   r�   Únew_trailerr^   rE  rá  rþ  s          rR   r*  zPdfReader._read_xref  sq  € Ø×&Ò& vÑ.Ô.Ð.Ý˜FÑ#Ô#Ð#Ø�Š�B˜ÑÔÐÝ�4¥¥S œ>­;°v¸tÑ+DÔ+DÑEÔEˆØ%×+Ò+Ñ-Ô-ð 	*ð 	*‰JˆC�Ø˜$œ,Ð&Ð&Ø$)�”˜SÑ!øØ˜Ð$Ð$Ø—’‘”ˆAØ�KŠK��S +¨jÔ"9Ñ:Ô:¸QÑ>ÀÑBÔBÐBðØ×,Ò,¨VÑ4Ô4Ð4Ð4øÝð ð ð ÝØk k°*Ô&=ÐkÐkÐkÝñô ð ð ð ðøøøð
 �KŠK˜˜1ÑÔÐØ�kÐ!Ð!Ø# GÔ,ˆIØÐà�4s   Ã(C> Ã>)D*Ä)D*c                 óŠ  — |dk    r-| j         rt          d¦  «        ‚t          dt          ¦  «         d S |                     dd¦  «         |                     d¦  «        }|                     d¦  «        }|dk    r
|d	|z
  z  }|S |                     |d¦  «         t          d
¦  «        D ]2}|                     d¦  «                             ¦   «         r	||z  }|c S Œ3d| j	        v rQ| j         sJt          dt          ¦  «         	 |  
                    |¦  «         d S # t          $ r t          d¦  «        ‚w xY wt          d¦  «        ‚)Nr   z6/Prev=0 in the trailer (try opening with strict=False)zA/Prev=0 in the trailer - assuming there is no previous xref tableiõÿÿÿr   r  ó   xrefrq  é
   é   r—   z"Invalid parent xref., rebuild xrefzcan not rebuild xrefz/Could not find xref table at specified location)rž   r1   r   r�   r½   r«   Úfindr�  r,  r˜   r+  rÖ  )r]   r�   rþ  r‹  Úxref_locÚlooks         rR   r1  z PdfReader._read_xref_other_error2  s€  € ð ˜Š>ˆ>ØŒ{ð Ý"ØLñô ð õ ØSÝñô ð ð �4ð 	�Š�C˜ÑÔÐØ�kŠk˜"‰oŒoˆØ—8’8˜GÑ$Ô$ˆØ�rŠ>ˆ>Ø˜˜h™Ñ&ˆIØÐà�Š�I˜qÑ!Ô!Ð!Ý˜"‘I”Ið 	!ð 	!ˆDØ�{Š{˜1‰~Œ~×%Ò%Ñ'Ô'ð !à˜TÑ!�	Ø Ð Ð Ð ð!ð
 �d”lÐ"Ð"¨4¬;Ð"åÐ?ÅÑJÔJÐJð;Ø×(Ò(¨Ñ0Ô0Ð0Ø�tøÝð ;ð ;ð ;Ý"Ð#9Ñ:Ô:Ð:ð;øøøåÐLÑMÔMÐMs   ÄD ÄD3c                 óÐ  ‡ ‡‡	— |                      dd¦  «         ‰                      |¦  «        \  }}t          t          t	          |‰ ¦  «        ¦  «        }t          t
          |d         ¦  «        dk    sJ ‚‰                      |||¦  «         t          t          | 	                    ¦   «         ¦  «        ¦  «        Š	| 
                    dd| 
                    d¦  «        g¦  «        }t          t          t          t          f         | 
                    d¦  «        ¦  «        Št          ‰¦  «        d	k    sJ ‚‰ j        r%t          ‰¦  «        d	k    rt          d
‰› �¦  «        ‚dt           dt"          t           t$          t           df         f         fˆˆ	fd„}dt           dt"          t           t$          t           df         f         dt&          fˆ fd„}‰                      |||¦  «         |S )Nrq  r   r¾  z/XRefz/Indexr   z/Sizez/Wrç  zToo many entry sizes: rQ  rL   .c                 ó’   •— ‰|          dk    r1‰                      ‰|          ¦  «        }t          |‰|          ¦  «        S | dk    rdS dS )Nr   r   )r«   rS   )rQ  rJ   Úentry_sizesrÆ  s     €€rR   Ú	get_entryz4PdfReader._read_pdf15_xref_stream.<locals>.get_entrym  sT   ø€ ð ˜1Œ~ Ò!Ð!Ø×$Ò$ [°¤^Ñ4Ô4�Ý% a¨°Q¬Ñ8Ô8Ð8ð �AŠvˆvØ�qà�qrT   rË  rÂ  c                 óP   •— | ‰j                              |g ¦  «        v p| ‰j        v S rZ   )rÓ  r`   r¿  )rË  rÂ  r]   s     €rR   Úused_beforez6PdfReader._read_pdf15_xref_stream.<locals>.used_before{  s+   ø€ à˜$œ)Ÿ-š-¨
°BÑ7Ô7Ð7ÐR¸3À$ÔBRÐ;RÐRrT   )r½   rÕ  r   r6   rF   r‘   rß  r   r   rÀ  r`   r	   r   rÜ   rž   r1   rt  r   r   ÚboolÚ_read_xref_subsections)
r]   r�   rn  rÂ  r2  Ú	idx_pairsrA  rC  r@  rÆ  s
   `       @@rR   r-  z!PdfReader._read_pdf15_xref_stream[  sì  øøø€ ð 	�Š�B˜ÑÔÐØ ×3Ò3°FÑ;Ô;ÑˆˆzÝ�-­°V¸TÑ)BÔ)BÑCÔCˆ
Ý•C˜ GÔ,Ñ-Ô-°Ò8Ð8Ð8Ð8Ø×"Ò" :¨u°jÑAÔAÐAÝ�b ×!4Ò!4Ñ!6Ô!6Ñ7Ô7Ñ8Ô8ˆð —N’N 8¨a°·²ÀÑ1HÔ1HÐ-IÑJÔJˆ	Ý�4¥¥S œ>¨:¯>ª>¸$Ñ+?Ô+?Ñ@Ô@ˆÝ�;ÑÔ 1Ò$Ð$Ð$Ð$ØŒ;ð 	G�3˜{Ñ+Ô+¨aÒ/Ð/ÝÐE¸ÐEÐEÑFÔFÐFð	�ð 	¥¥s­Eµ#°s°(¬OÐ';Ô!<ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð	S�Sð 	S­eµC½½sÀC¸x¼Ð4HÔ.Ið 	SÍdð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð
 	×#Ò# I¨y¸+ÑFÔFÐFØÐrT   c                 óŒ  — |                       |dz
  d¦  «         |                      d¦  «        }|dk    r|                      d¦  «        }|dvrdS |                      d¦  «        }|dk    rYd}|dv r!|                      d¦  «        }|dk    rd	S |dv °!||                      d	¦  «        z  }|                     ¦   «         d
k    rdS dS )zæ
        Return an int which indicates an issue. 0 means there is no issue.

        Args:
            stream:
            startxref:

        Returns:
            0 means no issue, other values represent specific issues.
        r   r   ó   js   
 	é   r8  rT   s   0123456789 	r?  s   objrç  )r½   r«   Úlower)r�   rþ  r  s      rR   rú  zPdfReader._get_xref_issuesƒ  sÚ   € ð 	�Š�I ‘M 1Ñ%Ô%Ð%Ø�{Š{˜1‰~Œ~ˆØ�4Š<ˆ<Ø—;’;˜q‘>”>ˆDØ�zÐ!Ð!Ø�1Ø�{Š{˜1‰~Œ~ˆØ�7Š?ˆ?àˆDØÐ*Ð*Ð*Ø—{’{ 1‘~”~�Ø˜3’;�;Ø˜1ð Ð*Ð*Ð*ð �F—K’K ‘N”NÑ"ˆDØ�zŠz‰|Œ|˜vÒ%Ð%Ø�qØˆqrT   c                 ó  — i | _         |                     dd¦  «         |                     d¦  «        }t          j        d|¦  «        D ]|}t          |                     d¦  «        ¦  «        }t          |                     d¦  «        ¦  «        }|| j         vr
i | j         |<   |                     d¦  «        | j         |         |<   Œ}|                     dd¦  «         t          j        d|¦  «        D ]‘}|                     |                     d¦  «        d¦  «         t          t          t          t          f         t          || ¦  «        ¦  «        }t          |                     ¦   «         ¦  «        D ]\  }}|| j        |<   ŒŒ’d S )Nr   rq  s(   [\r\n \t][ \t]*(\d+)[ \t]+(\d+)[ \t]+objr   r?  s$   [\r\n \t][ \t]*trailer[\r\n \t]*(<<))rÓ  r½   r«   rØ  Úfinditerrt  r  rÛ  r   r	   r   rF   r  rB  r˜   )	r]   r�   Úf_râ  rn  rÂ  r6  r^   rE  s	            rR   r+  zPdfReader._rebuild_xref_table¢  s]  € ØˆŒ	Ø�Š�A�qÑÔÐØ�[Š[˜‰_Œ_ˆå”ÐIÈ2ÑNÔNð 	6ð 	6ˆAÝ˜Ÿš ™
œ
‘O”OˆEÝ˜QŸWšW Q™ZœZ™œˆJØ ¤Ð*Ð*Ø(*�”	˜*Ñ%Ø+,¯7ª7°1©:¬:ˆDŒI�jÔ! %Ñ(Ð(Ø�Š�A�qÑÔÐÝ”ÐEÀrÑJÔJð 	*ð 	*ˆAØ�KŠK˜Ÿš ™
œ
 AÑ&Ô&Ð&Ý�t¥C­ Hœ~­{¸6À4Ñ/HÔ/HÑIÔIˆKå" ;×#4Ò#4Ñ#6Ô#6Ñ7Ô7ð *ð *‘
��UØ$)�”˜SÑ!Ð!ð*ð		*ð 	*rT   rF  rA  .rC  c                 óð  — |                       |¦  «        D ]ß\  }}t          |||z   ¦  «        D ]Æ} |d¦  «        }|dk    r |d¦  «        } |d¦  «        }	Œ*|dk    rF |d¦  «        }
 |d¦  «        }|| j        vr
i | j        |<    |||¦  «        s|
| j        |         |<   Œv|dk    r1 |d¦  «        } |d¦  «        }d} |||¦  «        s||f| j        |<   Œ­| j        rt          d|› �¦  «        ‚ŒÇŒàd S )Nr   r   r?  zUnknown xref type: )Ú_pairsr�  rÓ  r¿  rž   r1   )r]   rF  rA  rC  rÛ  rK   rË  Ú	xref_typeÚnext_free_objectÚnext_generationÚbyte_offsetrÂ  Ú
objstr_numÚ	obstr_idxs                 rR   rE  z PdfReader._read_xref_subsectionsµ  sd  € ð  Ÿ;š; yÑ1Ô1ð 	Jð 	J‰KˆE�4å˜U E¨D¡LÑ1Ô1ð Jð J�à%˜I a™LœL�	à ’>�>à'0 y°¡|¤|Ð$Ø&/ i°¡l¤l�O�OØ !’^�^à"+ )¨A¡,¤,�KØ!* ¨1¡¤�JØ!¨¬Ð2Ð2Ø02˜œ	 *Ñ-Ø&˜; s¨JÑ7Ô7ð AØ5@˜œ	 *Ô-¨cÑ2øØ !’^�^à!* ¨1¡¤�JØ ) 	¨!¡¤�IØ!"�JØ&˜; s¨JÑ7Ô7ð HØ1;¸YÐ0G˜Ô(¨Ñ-øØ”[ð JÝ&Ð'H¸YÐ'HÐ'HÑIÔIÐIðJð/Jð	Jð 	JrT   c              #   ór   K  — d}	 ||         ||dz            fV — |dz  }|dz   t          |¦  «        k    rd S Œ3)Nr   Tr   r?  )rÜ   )r]   rƒ  rQ  s      rR   rO  zPdfReader._pairs×  sU   è è € Øˆð	Ø˜”(˜E ! a¡%œLÐ(Ð(Ð(Ð(Ø�‰FˆAØ�A‘�#˜e™*œ*Ò$Ð$Ø�ð		rT   r   Úlimit_offsetc                 óú  — t          dd¬¦  «         g }	 |                     ¦   «         dk    s|                     ¦   «         |k    rt          d¦  «        ‚|                     d¦  «        }|                     ¦   «         dk     rt          d	¦  «        ‚|                     d
d¦  «         |dv r“d}|dv rr|                     d¦  «        }|dv r|                     dd¦  «         d}|                     ¦   «         dk     rt          d	¦  «        ‚|                     d
d¦  «         |dv °r|                     |rdndd¦  «         n|                     |¦  «         �Œ?|                     ¦   «          d                     |¦  «        S )z.. deprecated:: 2.1.0Úread_next_end_linez4.0.0)Ú
removed_inTr   z!Could not read malformed PDF filer   r?  zEOL marker not foundéþÿÿÿ)ó   
ó   Frq  rT   )r   r¼   r1   r«   r½   r  ÚreverseÚjoin)r]   r�   rW  Ú
line_partsro  Úcrlfs         rR   rY  zPdfReader.read_next_end_lineß  s–  € õ 	!Ð!5À'ÐJÑJÔJÐJØˆ
ð	%à�{Š{‰}Œ} Ò!Ð! V§[¢[¡]¤]°lÒ%BÐ%BÝ"Ð#FÑGÔGÐGØ—’˜A‘”ˆAØ�{Š{‰}Œ}˜qÒ Ð Ý"Ð#9Ñ:Ô:Ð:Ø�KŠK˜˜AÑÔÐØ�NÐ"Ð"Ø�Ø˜>Ð)Ð)ØŸš A™œ�AØ˜NÐ*Ð*ØŸš B¨Ñ*Ô*Ð*Ø#˜Ø—{’{‘}”} qÒ(Ð(Ý*Ð+AÑBÔBÐBØ—K’K  AÑ&Ô&Ð&ð ˜>Ð)Ð)ð —’ØÐ$�A�A 1 añô ð ð à×!Ò! !Ñ$Ô$Ð$ñ/	%ð0 	×ÒÑÔÐØ�xŠx˜
Ñ#Ô#Ð#rT   c                 óN   — t          dd¦  «         |                      ||¦  «        S )z.. deprecated:: 1.28.0ÚreadNextEndLinerf   )r   rY  )r]   r�   rW  s      rR   rc  zPdfReader.readNextEndLine   s+   € õ 	#Ð#4°gÑ>Ô>Ð>Ø×&Ò& v¨|Ñ<Ô<Ð<rT   c                 ób   — | j         st          d¦  «        ‚| j                              |¦  «        S )aÞ  
        When using an encrypted / secured PDF file with the PDF Standard
        encryption handler, this function will allow the file to be decrypted.
        It checks the given password against the document's user password and
        owner password, and then stores the resulting decryption key if either
        password is correct.

        It does not matter which password was matched.  Both passwords provide
        the correct decryption key that will allow the document to be used with
        this library.

        Args:
            password: The password to match.

        Returns:
            An indicator if the document was decrypted and weather it was the
            owner password or the user password.
        r¤   )r­   r1   r³   )r]   rŸ   s     rR   ÚdecryptzPdfReader.decrypt  s5   € ð& Ôð 	5ÝÐ3Ñ4Ô4Ð4àÔ×&Ò& xÑ0Ô0Ð0rT   Úpermissions_codec                 óÊ   — i }|dz  dk    |d<   |dz  dk    |d<   |dz  dk    |d<   |dz  dk    |d	<   |d
z  dk    |d<   |dz  dk    |d<   |dz  dk    |d<   |dz  dk    |d<   |S )NrI  r   ÚprintrN   Úmodifyr  Úcopyé    Úannotationsé   Úformsi   Úaccessabilityi   Úassemblei   Úprint_high_qualityr“   )r]   rf  Úpermissionss      rR   Údecode_permissionszPdfReader.decode_permissions  s³   € àˆØ/°:Ñ>À!ÒCˆ�GÑØ 0°JÑ ?À1Ò Dˆ�HÑØ.°*Ñ=ÀÒBˆ�FÑØ%5¸Ñ%DÈÒ%Iˆ�MÑ"Ø/°:Ñ>À!ÒCˆ�GÑØ'7¸;Ñ'GÈ1Ò'Lˆ�OÑ$Ø"2°kÑ"BÀaÒ"Gˆ�JÑà Ñ,°Ò1ð 	Ð(Ñ)ð ÐrT   c                 ó(   — t           j        | j        v S )zè
        Read-only boolean property showing whether this PDF file is encrypted.

        Note that this property, if true, will remain true even after the
        :meth:`decrypt()<pypdf.PdfReader.decrypt>` method is called.
        )r¯   r²   r˜   r\   s    rR   r®   zPdfReader.is_encrypted.  s   € õ Œz˜Tœ\Ð)Ð)rT   c                 ó2   — t          ddd¦  «         | j        S )úV
        Use :py:attr:`is_encrypted` instead.

        .. deprecated:: 1.28.0
        ÚgetIsEncryptedr®   rf   ©r   r®   r\   s    rR   rw  zPdfReader.getIsEncrypted8  rÔ   rT   c                 ó2   — t          ddd¦  «         | j        S )rv  ÚisEncryptedr®   rf   rx  r\   s    rR   rz  zPdfReader.isEncryptedA  r×   rT   c                 ó$  — d }i }t          t          | j        t          j                 ¦  «        }d|vs|d         sd S t          t
          |d         ¦  «        }d|v r´t          t          |d         ¦  «        }t          |¦  «        }|D ]‡}|}t          |¦  «        }t          |t          ¦  «        r_t          t          t                   |                     ¦   «         ¦  «        }|r+t          j        t!          |j        ¦  «        ¦  «        }	|	||<   Œˆ|S )Nú	/AcroFormz/XFA)r   r9   r˜   r¯   rÏ   rD   r4   ÚiterÚnextra   r>   r   r:   rj   ÚzlibÚ
decompressr   Ú_data)
r]   rò   rb   rü   rþ   rQ  rÿ   Útagr   Úess
             rR   ÚxfazPdfReader.xfaK  sö   € à%)ˆØ!#ˆÝÕ'¨¬µb´gÔ)>Ñ?Ô?ˆà˜gÐ%Ð%¨W°[Ô-AÐ%Ø�4å•J ¨Ô 4Ñ5Ô5ˆà�Tˆ>ˆ>Ý�+ t¨F¤|Ñ4Ô4ˆFÝ�V‘”ˆAØð )ð )�Ø�Ý˜‘G”G�Ý˜a¥Ñ0Ô0ð )Ý ¥Õ*=Ô!>ÀÇÂÁÄÑOÔO�EØð )Ý!œ_­R°´©_¬_Ñ=Ô=˜Ø&(˜˜s™øØˆrT   r6  c                 óR  — t          t          | j        t          j                 ¦  «        }d|vst          |d         t          ¦  «        sdS t          t          |t          d¦  «                 ¦  «        }d|vrdS t          ¦   «         }t          |¦  «        |t          d¦  «        <   |t          d¦  «                 |t          d¦  «        <   |                      dt          d„ | j
        D ¦   «         ¦  «        dz   |¦  «         t          ¦   «         }|                     |j        ¦  «         ||t          d¦  «        <   t          t          |d         ¦  «        D ]O}|                     ¦   «         }d	|v rt          d
|j        › d�t           ¦  «         |j        |t          d	¦  «        <   ŒP|S )zý
        Add a top level form that groups all form fields below it.

        Args:
            name: text string of the "/T" Attribute of the created object

        Returns:
            The created object. ``None`` means no object was created.
        r|  Nrõ   r	  z/Kidsr   c                 ó$   — g | ]\  }}|d k    ¯|‘ŒS ©r   r“   )r<  ÚgrQ  s      rR   r>  z.PdfReader.add_form_topname.<locals>.<listcomp>}  s!   € ÐAÐAÐA‘v˜˜1¸!¸qº&¸&�¸&¸&¸&rT   r   r  zTop Level Form Field z have a non-expected parent)r   r9   r˜   r¯   rÏ   ra   r?   rC   rß  Úmaxr¦   r4   r  r  rj   r   r�   )r]   r6  rü   ÚacroformÚinterimÚarrr›   rÆ   s           rR   Úadd_form_topnamezPdfReader.add_form_topnamec  s©  € õ Õ'¨¬µb´gÔ)>Ñ?Ô?ˆà˜gÐ%Ð%­ZØ�KÔ Õ"2ñ.
ô .
Ð%ð �4ÝÕ(¨'µ*¸[Ñ2IÔ2IÔ*JÑKÔKˆØ˜HÐ$Ð$à�4å"Ñ$Ô$ˆÝ$4°TÑ$:Ô$:ˆ•
˜4Ñ Ô Ñ!Ø'/µ
¸9Ñ0EÔ0EÔ'Fˆ•
˜7Ñ#Ô#Ñ$Ø×"Ò"ØÝÐAÐA Ô!6ÐAÑAÔAÑBÔBÀQÑFØñ	
ô 	
ð 	
õ
 ‰mŒmˆØ�
Š
�7Ô-Ñ.Ô.Ð.Ø*-ˆ•˜IÑ&Ô&Ñ'Ý•k 7¨7Ô#3Ñ4Ô4ð 	Dð 	DˆAØ—,’,‘.”.ˆCØ˜CÐÐÝØ_¨CÔ,BÐ_Ð_Ð_Ýñô ð ð *1Ô)CˆC•
˜9Ñ%Ô%Ñ&Ð&ØˆrT   c           
      óÜ  — t          t          | j        t          j                 ¦  «        }d|vst          |d         t          ¦  «        sdS t          t          |t          d¦  «                 ¦  «        }d|vrdS t          t          t          t          |t          d¦  «                 ¦  «        d                              ¦   «         ¦  «        }t          |¦  «        |t          d¦  «        <   |S )zû
        Rename top level form field that all form fields below it.

        Args:
            name: text string of the "/T" field of the created object

        Returns:
            The modified object. ``None`` means no object was modified.
        r|  Nrõ   r   r	  )
r   r9   r˜   r¯   rÏ   ra   r?   r4   rj   rC   )r]   r6  rü   rŠ  r‹  s        rR   Úrename_form_topnamezPdfReader.rename_form_topname�  sÔ   € õ Õ'¨¬µb´gÔ)>Ñ?Ô?ˆà˜gÐ%Ð%­ZØ�KÔ Õ"2ñ.
ô .
Ð%ð �4ÝÕ(¨'µ*¸[Ñ2IÔ2IÔ*JÑKÔKˆØ˜HÐ$Ð$Ø�4åÝÝ•˜h¥z°)Ñ'<Ô'<Ô=Ñ>Ô>¸qÔA×LÒLÑNÔNñ
ô 
ˆõ %5°TÑ$:Ô$:ˆ•
˜4Ñ Ô Ñ!ØˆrT   c                 ó^   ‡ — t          ˆ fd„‰                      ¦   «         D ¦   «         ¦  «        S )Nc                 ó$   •— i | ]}|‰j         |f“ŒS r“   )Ú_get_attachment_list)r<  r6  r]   s     €rR   rp  z)PdfReader.attachments.<locals>.<dictcomp>«  s3   ø€ ð ð ð àð �tÔ0°$Ð7ðð ð rT   )ÚLazyDictÚ_list_attachmentsr\   s   `rR   ÚattachmentszPdfReader.attachments¨  sG   ø€ åðð ð ð à ×2Ò2Ñ4Ô4ðñ ô ñ
ô 
ð 	
rT   c                 ó   — t          t          | j        d         ¦  «        }	 t          t          t          t          t          t          |d         ¦  «        d         ¦  «        d         ¦  «        }n# t          $ r g cY S w xY wd„ |D ¦   «         }|S )zv
        Retrieves the list of filenames of file attachments.

        Returns:
            list of filenames
        r—   ú/Namesú/EmbeddedFilesc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r“   )ra   r‘   )r<  rÿ   s     rR   r>  z/PdfReader._list_attachments.<locals>.<listcomp>Ä  s'   € ÐHÐHÐH 1µZÀÅ3Ñ5GÔ5GÐH˜QÐHÐHÐHrT   )r   r9   r˜   r4   r  )r]   rü   Ú	filenamesÚattachments_namess       rR   r”  zPdfReader._list_attachments±  s§   € õ Õ'¨¬°gÔ)>Ñ?Ô?ˆð		ÝÝÝÝ$ÝÕ)¨7°8Ô+<Ñ=Ô=Ð>NÔOñô ð ôñô ˆIˆIøõ ð 	ð 	ð 	ØˆIˆIˆIð	øøøàHÐH¨	ÐHÑHÔHÐØ Ð ó   ¢AA0 Á0A?Á>A?c                 ól   — |                       |¦  «        |         }t          |t          ¦  «        r|S |gS rZ   )Ú_get_attachmentsra   r  )r]   r6  Úouts      rR   r’  zPdfReader._get_attachment_listÇ  s8   € Ø×#Ò# DÑ)Ô)¨$Ô/ˆÝ�c�4Ñ Ô ð 	ØˆJØˆuˆrT   Úfilenamec                 ó¬  — t          t          | j        d         ¦  «        }	 t          t          t          t          t          t          |d         ¦  «        d         ¦  «        d         ¦  «        }n# t          $ r i cY S w xY wi }t          t          |¦  «        ¦  «        D ]³}||         }t          |t          ¦  «        r”|�||k    rŒ(|}||dz             	                    ¦   «         }|d         d          
                    ¦   «         }	||v rCt          ||         t          ¦  «        s||         g||<   ||                              |	¦  «         Œ®|	||<   Œ´|S )a�  
        Retrieves all or selected file attachments of the PDF as a dictionary of file names
        and the file data as a bytestring.

        Args:
            filename: If filename is None, then a dictionary of all attachments
                will be returned, where the key is the filename and the value
                is the content. Otherwise, a dictionary with just a single key
                - the filename - and its content will be returned.

        Returns:
            dictionary of filename -> Union[bytestring or List[ByteString]]
            if the filename exists multiple times a List of the different version will be provided
        r—   r—  r˜  Nr   z/EFr‘  )r   r9   r˜   r4   r  r�  rÜ   ra   r‘   rj   rÀ  r  r  )
r]   r   rü   rš  r•  rQ  rÿ   r6  Úf_dictÚf_datas
             rR   rž  zPdfReader._get_attachmentsÍ  sv  € õ" Õ'¨¬°gÔ)>Ñ?Ô?ˆð		ÝÝÝÝ$ÝÕ)¨7°8Ô+<Ñ=Ô=Ð>NÔOñô ð ôñô ˆIˆIøõ ð 	ð 	ð 	ØˆIˆIˆIð	øøøà<>ˆå•s˜9‘~”~Ñ&Ô&ð 	/ð 	/ˆAØ˜!”ˆAÝ˜!�SÑ!Ô!ð /ØÐ'¨A°ªM¨MØØ�Ø" 1 q¡5Ô)×4Ò4Ñ6Ô6�Ø œ tÔ,×5Ò5Ñ7Ô7�Ø˜;Ð&Ð&Ý% k°$Ô&7½Ñ>Ô>ð @Ø-8¸Ô->Ð,?˜ DÑ)Ø Ô%×,Ò,¨VÑ4Ô4Ð4Ð4à(.�K Ñ%øØÐrœ  )FNr�  )Fr…  r‡  rZ   )|r�   rŽ   r�   r�   r’   r   rE   rœ   r   r   r   rD  r‘   r×  r[   rÁ   rX   rÇ   rÊ   rÍ   rI   rÐ   rÒ   rÖ   rt  rÝ   râ   rä   r   rè   rç   r	   r   rî   rï   rD   r  r  r9   r
  rú   rù   r  rF  rH  rñ   rW  rG   rZ  r\  rY  rh  r4   rk  r@   r>   rv  rz  r|  r8   r€  r‚  r   rA   rO  rc  rs  rž  r¡  r¤  r§  rH   r©  r¬  r¯  rÛ   rB   rÊ  rÎ  rj   rå  r   r   rÕ  rë  rÒ  rï  rß  ró  r«   r÷  rø  rù  r%  rû  r*  r1  r6   r:   r7   r-  Ústaticmethodrú  r+  r   rE  r
   rO  rY  rc  r   re  rs  r®   rw  rz  r„  r�  r�  r   r•  r”  r’  rž  r“   rT   rR   r•   r•     s­  € € € € € ðð ð$ ð
 HÐ->Ô$?ð 
ð 
ð 
ñ „Xð
ð Ø,0ð	15ð 15à�k 4Ð'Ô(ð15ð ð15ð ˜˜c 5Ð(Ô)ð	15ð
 
ð15ð 15ð 15ð 15ðf ð ˜Cð  ð  ð  ñ „Xð ð ð˜(Ð#6Ô7ð ð ð ñ „Xðð& Ð*=Ô!>ð ð ð ð ð ð˜hÐ':Ô;ð ð ð ñ „Xðð ð.˜h ~Ô6ð .ð .ð .ñ „Xð.ð! ¨Ô 8ð !ð !ð !ð !ð ð!˜X nÔ5ð !ð !ð !ñ „Xð!ð- ð -ð -ð -ð -ð*%˜Sð %ð %ð %ð %ð ð%˜#ð %ð %ð %ñ „Xð%ð	* #ð 	*¨*ð 	*ð 	*ð 	*ð 	*ð1 Sð 1¨Zð 1ð 1ð 1ð 1ð  ð' 4¨¨S¨¤>ð 'ð 'ð 'ñ „Xð'ð ð. D¨¨c¨¤Nð .ð .ð .ñ „Xð.ð &*Ø+/Ø!%ð	0ð 0à�zÔ"ð0ð ˜˜c 3˜hœÔ(ð0ð ˜#”ð	0ð
 
�$�s˜C�x”.Ô	!ð0ð 0ð 0ð 0ðh &*Ø+/Ø!%ð	6ð 6à�zÔ"ð6ð ˜˜c 3˜hœÔ(ð6ð ˜#”ð	6ð
 
�$�s˜C�x”.Ô	!ð6ð 6ð 6ð 6ð+Ð0@ð +ÀSð +ð +ð +ð +ð4Uà�ZÐ!1Ð1Ô2ð4Uð �S˜#�X”ð4Uð ð	4Uð
 ð4Uð 
ð4Uð 4Uð 4Uð 4UðlCØ˜*Ð&6Ð6Ô7ðCØADðCØORðCà	ðCð Cð Cð Cð# Cð #°ð #Àsð #Ètð #ð #ð #ð #ðJ$ð $¸ð $ÈÈcÐSVÈhÌð $ð $ð $ð $ðL	+ 4¨¨S¨¤>ð 	+ð 	+ð 	+ð 	+ð )-Ø $ðDð Dà�J Ð$Ô%ðDð ˜”ðDð 
ˆc�3ˆhŒð	Dð Dð Dð DðP )-Ø $ð:ð :à�J Ð$Ô%ð:ð ˜”ð:ð 
ˆc�3ˆhŒð	:ð :ð :ð :ð ð#˜ð #ð #ð #ñ „Xð#ð ð˜+ð ð ð ñ „Xðð QUð'ð 'ØÐ-Ô.ð'Ø@HÈÄð'à	ð'ð 'ð 'ð 'ðT QUð	0ð 	0ØÐ-Ô.ð	0Ø@HÈÄð	0à	ð	0ð 	0ð 	0ð 	0ð ð˜ +Ô.ð ð ð ñ „XððØ"'¨¨c°:¸~Ð(MÔ"Nðà	ðð ð ð ð6J Jð J°3ð Jð Jð Jð Jð* *ð *°ð *ð *ð *ð *ð
C°{ð 
CÀsð 
Cð 
Cð 
Cð 
Cð	=°Kð 	=ÀCð 	=ð 	=ð 	=ð 	=ðIàðIð ØØ�l N°D¸*ÐFVÐVÔWôô
ðIð 
ðIð Ið Ið Ið@IÐ(8ð I¸XÀkÔ=Rð Ið Ið Ið IðV ðA�t˜JÔ'ð Að Að Añ „XðAð ðP˜T #œYð Pð Pð Pñ „XðPð ð˜X cœ]ð ð ð ñ „Xðð6 ˜x¨œ}ð  ð  ð  ð  ð ð ˜H SœMð  ð  ð  ñ „Xð ð ð˜8 LÔ1ð ð ð ñ „Xðð2˜X lÔ3ð ð ð ð ð ð˜( <Ô0ð ð ð ñ „Xðð <@Ø,0Ø7;ð	32ð 32à�TÐ+¨ZÐ7Ô8ð32ð ˜$˜s C˜xœ.Ô)ð32ð % ^Ô4ð	32ð
 
ð32ð 32ð 32ð 32ðj4Ø"0ð4à	ˆs�I˜sÐ"Ô	#ð4ð 4ð 4ð 4ðl;¨ð ;°#ð ;¸(À9Ô:Mð ;ð ;ð ;ð ;ð@Ø"'¨¨^Ð(;Ô"<ð@à	�)Ô	ð@ð @ð @ð @ðD	2Ø!/ð	2à	�)Ô	ð	2ð 	2ð 	2ð 	2ð+¨ð +¸¸cÀ3¸h¼ð +ð +ð +ð +ð8/ zð /°e¸CÀ¸H´oð /ð /ð /ð /ð>Øð>Ø&)ð>à	�)Ô	ð>ð >ð >ð >ð
AØðAØ&)ðAà	�)Ô	ðAð Að Að AðØðØ&)ðØ08¸Ô0Cðà	�)Ô	ðð ð ð ð	BØð	BØ&)ð	BØ08¸Ô0Cð	Bà	�)Ô	ð	Bð 	Bð 	Bð 	Bð$ ˜:ð $ ¨$ð $ ð $ ð $ ð $ ðL$¨
ð $°tð $ð $ð $ð $ð&. zð .°dð .ð .ð .ð .ð$¨*ð ¸ð ð ð ð ð2k°
ð k¸tð kð kð kð kðZ/KØ ð/KØ-5°c¬]ð/KØKNð/Kà	ð/Kð /Kð /Kð /Kðb ð °¸´ð ð ð ð ð2'NØ ð'NØ-0ð'Nà	�#Œð'Nð 'Nð 'Nð 'NðR&Ø ð&à	ˆ}Ð1Ð3FÐFÔ	Gð&ð &ð &ð &ðP ð ð ¸ð Àð ð ð ñ „\ðð<*¨*ð *¸ð *ð *ð *ð *ð& Jà˜”9ð Jð ˜S˜E 5¨¨e°C¸°H¬oÐ)=Ô#>Ð>Ô?ð Jð ˜s E¨#¨u°S¸#°X¬Ð*>Ô$?Ð@À$ÐFÔGð	 Jð
 
ð Jð  Jð  Jð  JðD˜D œIð ¨(°5¸¸c¸´?Ô*Cð ð ð ð ð 78ð$ð $Ø ð$Ø03ð$à	ð$ð $ð $ð $ðD 78ð=ð =Ø ð=Ø03ð=à	ð=ð =ð =ð =ð1  c¨5 jÔ 1ð 1°lð 1ð 1ð 1ð 1ð0°3ð ¸4ÀÀTÀ	¼?ð ð ð ð ð ð*˜dð *ð *ð *ñ „Xð*ð! ð !ð !ð !ð !ð ð!˜Tð !ð !ð !ñ „Xð!ð ð�X˜d 3¨ 8œnÔ-ð ð ð ñ „Xðð.( Sð (¨XÐ6FÔ-Gð (ð (ð (ð (ðT¨ð °Ð9IÔ0Jð ð ð ð ð6 ð
˜W S¨$¨u¬+Ð%5Ô6ð 
ð 
ð 
ñ „Xð
ð! 4¨¤9ð !ð !ð !ð !ð,¨ð °°e´ð ð ð ð ð )-ð-ð -Ø  œð-à	ˆc�5˜  U¤Ð+Ô,Ð,Ô	-ð-ð -ð -ð -ð -ð -rT   r•   c                   ób   — e Zd Zdededdfd„Zdedefd„Zdee         fd„Zde	fd	„Z
defd
„ZdS )r“  r.  ÚkwrL   Nc                 ó(   — t          |i |¤Ž| _        d S rZ   )ÚdictÚ	_raw_dict)r]   r.  r¦  s      rR   r[   zLazyDict.__init__þ  s   € Ý˜tÐ* rÐ*Ð*ˆŒˆˆrT   r^   c                 óR   — | j                              |¦  «        \  }} ||¦  «        S rZ   )r©  Ú__getitem__)r]   r^   ÚfuncÚargs       rR   r«  zLazyDict.__getitem__	  s)   € Ø”N×.Ò.¨sÑ3Ô3‰	ˆˆcØˆt�C‰yŒyÐrT   c                 ó*   — t          | j        ¦  «        S rZ   )r}  r©  r\   s    rR   Ú__iter__zLazyDict.__iter__	  s   € Ý�D”NÑ#Ô#Ð#rT   c                 ó*   — t          | j        ¦  «        S rZ   )rÜ   r©  r\   s    rR   Ú__len__zLazyDict.__len__	  s   € Ý�4”>Ñ"Ô"Ð"rT   c                 óL   — dt          |                      ¦   «         ¦  «        › d�S )NzLazyDict(keys=rõ  )r  r  r\   s    rR   Ú__str__zLazyDict.__str__	  s#   € Ø4¥ T§Y¢Y¡[¤[Ñ 1Ô 1Ð4Ð4Ð4Ð4rT   )r�   rŽ   r�   r   r[   r‘   r«  r   r¯  rt  r±  r³  r“   rT   rR   r“  r“  ý  s´   € € € € € ð+˜cð +¨ð +°ð +ð +ð +ð +ð˜sð  sð ð ð ð ð$˜( 3œ-ð $ð $ð $ð $ð#˜ð #ð #ð #ð #ð5˜ð 5ð 5ð 5ð 5ð 5ð 5rT   r“  c                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )ÚPdfFileReaderr.  ÚkwargsrL   Nc                 ó”   •— t          ddd¦  «         d|vrt          |¦  «        dk     rd|d<    t          ¦   «         j        |i |¤Ž d S )Nrµ  r•   rf   rž   r?  T)r   rÜ   Úsuperr[   )r]   r.  r¶  Ú	__class__s      €rR   r[   zPdfFileReader.__init__	  sZ   ø€ Ý$ _°kÀ7ÑKÔKÐKØ˜6Ð!Ð!¥c¨$¡i¤i°!¢m mØ#ˆF�8ÑØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)rT   )r�   rŽ   r�   r   r[   Ú__classcell__)r¹  s   @rR   rµ  rµ  	  sR   ø€ € € € € ð*˜cð *¨Sð *°Tð *ð *ð *ð *ð *ð *ð *ð *ð *ð *rT   rµ  )gr  rØ  rO   r  r   Úior   r   Úpathlibr   Útypingr   r   r	   r
   r   r   r   r   r   r   r   r­   r   r   Ú_pager   r   Ú_page_labelsr   rœ  Ú_utilsr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   Ú	constantsr%   rK  r&   r™   r'   r(   r)   r`  r*   rh   r+   rö   r,   r²  r-   r$  r.   r¯   Úerrorsr/   r0   r1   r2   r3   Úgenericr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r5  rG   rH   ÚxmprI   r×  rt  rS   rV   rX   r•   r“  rµ  r“   rT   rR   ú<module>rÅ     s  ðð< 
€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø >Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ø :Ð :Ð :Ð :Ð :Ð :Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø +Ð +Ð +Ð +Ð +Ð +Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð* -Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð ð%�eð % 3ð %¨5°°e¸CÀ¸H´oÐ1EÔ+Fð %ð %ð %ð %ð#�Eð # ð #¨¨s°E¸#¸s¸(´OÐ/CÔ)Dð #ð #ð #ð #ð
U%ð U%ð U%ð U%ð U%Ð*ñ U%ô U%ð U%ðpdð dð dð dð dñ dô dð dðN?5ð 5ð 5ð 5ð 5ˆw�s˜C�xÔ ñ 5ô 5ð 5ð$*ð *ð *ð *ð *�Iñ *ô *ð *ð *ð *rT   