Ë
    ^ãj0œ  ã            	      óÌ  — d dl mZ h d£Zd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZmZ ddlmZ dZerd dlmZmZ ej(                  eez  ef   Znej(                  Zdod	„Zi d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'“d(d)“d*d+“i d,d-“d.d/“d0d1“d2d3“d4d5“d6d7“d8d9“d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“¥dNdOdPdQdRdSdTdUœ¥ZdpdV„Z G dW„ dXe«      ZdqdY„Z G dZ„ d[e«      Z G d\„ d]e«      Z G d^„ d_e«      Z  G d`„ da«      Z! G db„ dc«      Z" G dd„ dee#e   «      Z$ G df„ dge«      Z% G dh„ di«      Z& G dj„ dk«      Z'drdl„Z( G dm„ dn«      Z)y)sé    )Úannotations>   ÚmmapÚzlibÚcalendarN)ÚAnyÚ
NamedTupleé   )Ú	ImageFileF)ÚIOÚSelfc                óF   — t         j                  | j                  d«      z   S )NÚ	utf_16_be)ÚcodecsÚBOM_UTF16_BEÚencode)Úss    úO/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/PIL/PdfParser.pyÚencode_textr      s   € Ü×Ñ §¡¨+Ó!6Ñ6Ð6ó    é   úé   u   Ë˜é   u   Ë‡é   u   Ë†é   u   Ë™é   u   Ë�é   u   Ë›é   u   Ëšé   u   Ëœé€   u   â€¢é�   u   â€ é‚   u   â€¡éƒ   u   â€¦é„   u   â€”é…   u   â€“é†   u   Æ’é‡   u   â�„éˆ   u   â€¹é‰   u   â€ºéŠ   u   âˆ’é‹   u   â€°éŒ   u   â€žé�   u   â€œéŽ   u   â€�é�   u   â€˜é�   u   â€™é‘   u   â€šé’   u   â„¢é“   u   ï¬�é”   u   ï¬‚é•   u   Å�é–   u   Å’é—   u   Å é˜   u   Å¸u   Å½u   Ä±u   Å‚u   Å“u   Å¡u   Å¾u   â‚¬)é™   éš   é›   éœ   é�   éž   é    c                óâ   — | d t        t        j                  «       t        j                  k(  r+| t        t        j                  «      d  j                  d«      S dj	                  d„ | D «       «      S )Nr   Ú c              3  óZ   K  — | ]#  }t         j                  |t        |«      «      –— Œ% y ­w©N)ÚPDFDocEncodingÚgetÚchr)Ú.0Úbytes     r   ú	<genexpr>zdecode_text.<locals>.<genexpr>R   s!   è ø€ ÒI¸t”~×)Ñ)¨$´°D³	×:ÑIùs   ‚)+)Úlenr   r   ÚdecodeÚjoin)Úbs    r   Údecode_textrN   N   s\   € ØÐ	#Œ3Œv×"Ñ"Ó#Ð$¬×(;Ñ(;Ò;Ø””V×(Ñ(Ó)Ð+Ð,×3Ñ3°KÓ@Ð@à�w‰wÑIÀqÔIÓIÐIr   c                  ó   — e Zd ZdZy)ÚPdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the
    PDF file structureN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   rP   rP   U   s   „ ñð 	r   rP   c                ó   — | st        |«      ‚y rC   )rP   )Ú	conditionÚerror_messages     r   Úcheck_format_conditionrY   \   s   € ÙÜ˜]Ó+Ð+ð r   c                  ó"   — e Zd ZU ded<   ded<   y)ÚIndirectReferenceTupleÚintÚ	object_idÚ
generationN)rQ   rR   rS   Ú__annotations__rU   r   r   r[   r[   a   s   … ØƒNØ„Or   r[   c                  ó4   — e Zd Zdd„Zdd„Zd	d„Zd	d„Zd
d„Zy)ÚIndirectReferencec                ó:   — | j                   › d| j                  › d�S )Nú z R©r]   r^   ©Úselfs    r   Ú__str__zIndirectReference.__str__g   s   € Ø—.‘.Ð!  4§?¡?Ð"3°2Ð6Ð6r   c                ó@   — | j                  «       j                  d«      S ©Núus-ascii)rg   r   re   s    r   Ú	__bytes__zIndirectReference.__bytes__j   s   € Ø�|‰|‹~×$Ñ$ ZÓ0Ð0r   c                óÀ   — | j                   |j                   uryt        |t        «      sJ ‚|j                  | j                  k(  xr |j                  | j                  k(  S )NF)Ú	__class__Ú
isinstancera   r]   r^   ©rf   Úothers     r   Ú__eq__zIndirectReference.__eq__m   sM   € Ø�>‰> §¡Ñ0ØÜ˜%Ô!2Ô3Ð3Ð3Ø�‰ $§.¡.Ñ0ÒX°U×5EÑ5EÈÏÉÑ5XÐXr   c                ó   — | |k(   S rC   rU   ro   s     r   Ú__ne__zIndirectReference.__ne__s   s   € Ø˜E‘MÐ"Ð"r   c                óD   — t        | j                  | j                  f«      S rC   )Úhashr]   r^   re   s    r   Ú__hash__zIndirectReference.__hash__v   s   € Ü�T—^‘^ T§_¡_Ð5Ó6Ð6r   N©ÚreturnÚstr©rx   Úbytes©rp   Úobjectrx   Úbool©rx   r\   )rQ   rR   rS   rg   rk   rq   rs   rv   rU   r   r   ra   ra   f   s   „ ó7ó1óYó#ô7r   ra   c                  ó   — e Zd Zdd„Zy)ÚIndirectObjectDefc                ó:   — | j                   › d| j                  › d�S )Nrc   z objrd   re   s    r   rg   zIndirectObjectDef.__str__{   s   € Ø—.‘.Ð!  4§?¡?Ð"3°4Ð8Ð8r   Nrw   )rQ   rR   rS   rg   rU   r   r   r�   r�   z   s   „ ô9r   r�   c                  óL   — e Zd Zd
d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
y	)Ú	XrefTablec                óN   — i | _         i | _        ddi| _        d| _        d| _        y )Nr   i   F)Úexisting_entriesÚnew_entriesÚdeleted_entriesÚreading_finishedÚ_max_object_idre   s    r   Ú__init__zXrefTable.__init__€   s8   € àð 	Ôð ð 	Ôð !" 5˜zˆÔØ %ˆÔØˆÕr   c                ó¾   — | j                   r|| j                  |<   n|| j                  |<   || j                  kD  r|| _        || j                  v r| j                  |= y y rC   )r‰   r‡   r†   rŠ   rˆ   ©rf   ÚkeyÚvalues      r   Ú__setitem__zXrefTable.__setitem__‹   sb   € Ø× Ò Ø$)ˆD×Ñ˜SÒ!à).ˆD×!Ñ! #Ñ&Ø�×$Ñ$Ò$Ø"%ˆDÔØ�$×&Ñ&Ñ&Ø×$Ñ$ SÑ)ð 'r   c                ó^   — 	 | j                   |   S # t        $ r | j                  |   cY S w xY wrC   )r‡   ÚKeyErrorr†   ©rf   rŽ   s     r   Ú__getitem__zXrefTable.__getitem__•   s8   € ð	.Ø×#Ñ# CÑ(Ð(øÜò 	.Ø×(Ñ(¨Ñ-Ò-ð	.ús   ‚ ‘,«,c                óF  — || j                   v r2| j                   |   d   dz   }| j                   |= || j                  |<   y || j                  v r%| j                  |   d   dz   }|| j                  |<   y || j                  v r| j                  |   }y d|› d�}t        |«      ‚)Nr	   z
object ID z+ cannot be deleted because it doesn't exist)r‡   rˆ   r†   Ú
IndexError)rf   rŽ   r^   Úmsgs       r   Ú__delitem__zXrefTable.__delitem__›   s·   € Ø�$×"Ñ"Ñ"Ø×)Ñ)¨#Ñ.¨qÑ1°AÑ5ˆJØ× Ñ  Ð%Ø(2ˆD× Ñ  Ò%Ø�D×)Ñ)Ñ)Ø×.Ñ.¨sÑ3°AÑ6¸Ñ:ˆJØ(2ˆD× Ñ  Ò%Ø�D×(Ñ(Ñ(Ø×-Ñ-¨cÑ2‰Jà˜s˜eÐ#NÐOˆCÜ˜S“/Ð!r   c                ó>   — || j                   v xs || j                  v S rC   )r†   r‡   r“   s     r   Ú__contains__zXrefTable.__contains__©   s#   € Ø�d×+Ñ+Ð+ÒF¨s°d×6FÑ6FÐ/FÐFr   c                óê   — t        t        | j                  j                  «       «      t        | j                  j                  «       «      z  t        | j
                  j                  «       «      z  «      S rC   )rJ   Úsetr†   Úkeysr‡   rˆ   re   s    r   Ú__len__zXrefTable.__len__¬   s^   € ÜÜ�×%Ñ%×*Ñ*Ó,Ó-Ü�$×"Ñ"×'Ñ'Ó)Ó*ñ+ä�$×&Ñ&×+Ñ+Ó-Ó.ñ/ó
ð 	
r   c                óØ   — t        | j                  j                  «       «      t        | j                  j                  «       «      z
  t        | j                  j                  «       «      z  S rC   )rœ   r†   r�   rˆ   r‡   re   s    r   r�   zXrefTable.keys³   sS   € ä�×%Ñ%×*Ñ*Ó,Ó-´°D×4HÑ4H×4MÑ4MÓ4OÓ0PÑPÜ�× Ñ ×%Ñ%Ó'Ó(ñ)ð 	)r   c                óð  — t        t        | j                  j                  «       «      t        | j                  j                  «       «      z  «      }t        | j                  «      }|j                  «       }|j                  d«       |rÜd }t        |«      D ]  \  }}|�|dz   |k(  r|}Œ|d | }||d  } n |}g }|j                  d|d   t        |«      fz  «       |D ]�  }	|	| j                  v r"|j                  d| j                  |	   z  «       Œ3|j                  d«      }
t        |	|
k(  d|	› d|
› �«       	 |d   }|j                  d|| j                  |	   fz  «       Œƒ |rŒÜ|S # t        $ r d}Y Œ7w xY w)	Ns   xref
r	   s   %d %d
r   s   %010d %05d n 
z*expected the next deleted object ID to be z, instead found s   %010d %05d f 
)Úsortedrœ   r‡   r�   rˆ   ÚtellÚwriteÚ	enumeraterJ   ÚpoprY   r–   )rf   Úfr�   Údeleted_keysÚ	startxrefÚprevÚindexrŽ   Úcontiguous_keysr]   Úthis_deleted_object_idÚnext_in_linked_lists               r   r£   zXrefTable.write¸   s«  € Ü”c˜$×*Ñ*×/Ñ/Ó1Ó2´S¸×9MÑ9M×9RÑ9RÓ9TÓ5UÑUÓVˆÜ˜d×2Ñ2Ó3ˆØ—F‘F“Hˆ	Ø	�‰�	ÔÙà#ˆDÜ'¨›oò 	‘
��sØ�< 4¨!¡8¨s¢?Ø‘Dà&*¨6¨E l�OØ  ˜<�DÙð	ð #'�Ø�Ø�G‰G�J /°!Ñ"4´c¸/Ó6JÐ!KÑKÔLØ,ò �	Ø × 0Ñ 0Ñ0Ø—G‘GÐ.°×1AÑ1AÀ)Ñ1LÑLÕMà-9×-=Ñ-=¸aÓ-@Ð*Ü*Ø!Ð%;Ñ;ØDÀYÀKð P)Ø)?Ð(@ðBôð
0Ø.:¸1©oÐ+ð —G‘GØ*Ø.°×0DÑ0DÀYÑ0OÐPñQõðò ð@ Ðøô &ò 0Ø./Ò+ð0ús   Ä8E'Å'E5Å4E5N©rx   ÚNone)rŽ   r\   r�   útuple[int, int]rx   r¯   )rŽ   r\   rx   r°   )rŽ   r\   rx   r¯   )rŽ   r\   rx   r~   r   )rx   zset[int])r¦   ú	IO[bytes]rx   r\   )rQ   rR   rS   r‹   r�   r”   r˜   rš   rž   r�   r£   rU   r   r   r„   r„      s+   „ ó	 ó*ó.ó"óGó
ó)ô
%r   r„   c            	      óÂ   — e Zd ZU ded<   dd„Zdd„Zdd„Zdd„Zdd„Ze	dd„«       Z
 e ed	d
«      «      dD � ��ch c]  }t        |«      ’Œ c}}} z
  Zdd„Zyc c}}} w )ÚPdfNamer{   Únamec                ó¤   — t        |t        «      r|j                  | _        y t        |t        «      r|| _        y |j	                  d«      | _        y ri   )rn   r³   r´   r{   r   )rf   r´   s     r   r‹   zPdfName.__init__ã   s8   € Ü�dœGÔ$ØŸ	™	ˆD�IÜ˜œeÔ$ØˆD�IàŸ™ JÓ/ˆD�Ir   c                ó8   — | j                   j                  d«      S ri   )r´   rK   re   s    r   Úname_as_strzPdfName.name_as_strë   s   € Ø�y‰y×Ñ 
Ó+Ð+r   c                óz   — t        |t        «      xr |j                  | j                  k(  xs || j                  k(  S rC   )rn   r³   r´   ro   s     r   rq   zPdfName.__eq__î   s4   € ä�uœgÓ&ÒB¨5¯:©:¸¿¹Ñ+Bò à�d—i‘iÑð	 r   c                ó,   — t        | j                  «      S rC   )ru   r´   re   s    r   rv   zPdfName.__hash__ó   s   € Ü�D—I‘I‹Ðr   c                ó`   — | j                   j                  › dt        | j                  «      › d�S )Nú(ú))rm   rQ   Úreprr´   re   s    r   Ú__repr__zPdfName.__repr__ö   s)   € Ø—.‘.×)Ñ)Ð*¨!¬D°·±«OÐ+<¸AÐ>Ð>r   c                ó8   —  | t         j                  |«      «      S rC   )Ú	PdfParserÚinterpret_name)ÚclsÚdatas     r   Úfrom_pdf_streamzPdfName.from_pdf_streamù   s   € á”9×+Ñ+¨DÓ1Ó2Ð2r   é!   é   z#%/()<>[]{}c                ó¸   — t        d«      }| j                  D ]6  }|| j                  v r|j                  |«       Œ#|j	                  d|z  «       Œ8 t        |«      S )Nó   /s   #%02X)Ú	bytearrayr´   Úallowed_charsÚappendÚextendr{   )rf   ÚresultrM   s      r   rk   zPdfName.__bytes__ÿ   sT   € Ü˜4“ˆØ—‘ò 	,ˆAØ�D×&Ñ&Ñ&Ø—‘˜aÕ à—‘˜h¨™lÕ+ð		,ô
 �V‹}Ðr   N)r´   zPdfName | bytes | strrx   r¯   rw   r|   r   )rÃ   r{   rx   r³   rz   )rQ   rR   rS   r_   r‹   r·   rq   rv   r¾   ÚclassmethodrÄ   rœ   ÚrangeÚordrÊ   rk   )rG   ÚcrÐ   s   000r   r³   r³   à   sh   … Ø
ƒKó0ó,ó ó
ó?ð ò3ó ð3ñ ™˜b #›Ó'¸=×*IÐ*I°a¬3¨q­6Ô*IÑI€Môùô +Js   ¼A
r³   c                  ó   — e Zd Zdd„Zy)ÚPdfArrayc                ó>   — ddj                  d„ | D «       «      z   dz   S )Ns   [ ó    c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrC   )Úpdf_repr)rG   Úxs     r   rI   z%PdfArray.__bytes__.<locals>.<genexpr>  s   è ø€ Ò ;°¤¨!§Ñ ;ùs   ‚s    ])rL   re   s    r   rk   zPdfArray.__bytes__
  s!   € Ø�t—y‘yÑ ;°dÔ ;Ó;Ñ;¸eÑCÐCr   Nrz   )rQ   rR   rS   rk   rU   r   r   rÓ   rÓ   	  s   „ ôDr   rÓ   c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚPdfDictc                óz   — |dk(  r"t         j                  j                  | ||«       y || |j                  d«      <   y )NrÃ   rj   )ÚcollectionsÚUserDictÚ__setattr__r   r�   s      r   rÞ   zPdfDict.__setattr__  s4   € Ø�&Š=Ü× Ñ ×,Ñ,¨T°3¸Õ>à+0ˆD�—‘˜JÓ'Ò(r   c                ó`  — 	 | |j                  d«         }t        |t        «      rt        |«      }|j                  d«      rÏ|j                  d«      r|dd  }d}t        |«      dkD  r5|d   }t        |dd «      d	z  }t        |«      d
kD  r|t        |dd
 «      z  }dd t        |«      dz
   }t        j                  |d t        |«      dz    |«      }|dv r:d	z  }|dk(  r|dz  }t        j                  t        j                  |«      |z   «      }|S # t        $ r}t        |«      |‚d }~ww xY w)Nrj   ÚDatezD:é   ÚZé   é   é   é<   é   é   z%Y%m%d%H%M%S)ú+ú-ré   éÿÿÿÿ)r   r’   ÚAttributeErrorrn   r{   rN   ÚendswithÚ
startswithrJ   r\   ÚtimeÚstrptimeÚgmtimer   Útimegm)rf   rŽ   r�   ÚeÚrelationshipÚoffsetÚformats          r   Ú__getattr__zPdfDict.__getattr__  s:  € ð	-Ø˜Ÿ™ JÓ/Ñ0ˆEô �eœUÔ#Ü Ó&ˆEØ�<‰<˜ÔØ×Ñ Ô%Ø˜a˜b˜	�àˆLÜ�5‹z˜BŠØ$ R™y�Ü˜U 2 b˜\Ó*¨RÑ/�Ü�u“: ’?Øœc %¨¨2 ,Ó/Ñ/�Fà#Ð$4¤c¨%£j°1¡nÐ5ˆFÜ—M‘M %Ð(9¬#¨f«+¸©/Ð":¸FÓCˆEØ˜zÑ)Ø˜"‘�Ø 3Ò&Ø˜b‘L�FÜŸ™¤H§O¡O°EÓ$:¸VÑ$CÓD�Øˆøô- ò 	-Ü  Ó%¨1Ð,ûð	-ús   ‚D Ä	D-ÄD(Ä(D-c                óH  — t        d«      }| j                  «       D ]i  \  }}|€Œ	t        |«      }|j                  d«       |j                  t	        t        |«      «      «       |j                  d«       |j                  |«       Œk |j                  d«       t	        |«      S )Nó   <<ó   
rÕ   s   
>>)rÉ   Úitemsr×   rÌ   r{   r³   )rf   ÚoutrŽ   r�   s       r   rk   zPdfDict.__bytes__0  s‡   € Ü˜ÓˆØŸ*™*›,ò 	‰JˆC�Øˆ}ØÜ˜U“OˆEØ�J‰J�uÔØ�J‰J”uœW S›\Ó*Ô+Ø�J‰J�tÔØ�J‰J�uÕð	ð 	�
‰
�7ÔÜ�S‹zÐr   N)rŽ   ry   r�   r   rx   r¯   )rŽ   ry   rx   zstr | time.struct_timerz   )rQ   rR   rS   rÞ   r÷   rk   rU   r   r   rÚ   rÚ     s   „ ó1óô6r   rÚ   c                  ó   — e Zd Zdd„Zdd„Zy)Ú	PdfBinaryc                ó   — || _         y rC   )rÃ   )rf   rÃ   s     r   r‹   zPdfBinary.__init__?  s	   € Øˆ�	r   c                óL   — ddj                  d„ | j                  D «       «      z  S )Ns   <%s>r   c              3  ó&   K  — | ]	  }d |z  –— Œ y­w)s   %02XNrU   ©rG   rM   s     r   rI   z&PdfBinary.__bytes__.<locals>.<genexpr>C  s   è ø€ Ò!A°! '¨A¥+Ñ!Aùs   ‚)rL   rÃ   re   s    r   rk   zPdfBinary.__bytes__B  s    € Ø˜Ÿ™Ñ!A°t·y±yÔ!AÓAÑAÐAr   N)rÃ   zlist[int] | bytesrx   r¯   rz   )rQ   rR   rS   r‹   rk   rU   r   r   rþ   rþ   >  s   „ óôBr   rþ   c                  ó4   — e Zd Zdd„Zej
                  fdd„Zy)Ú	PdfStreamc                ó    — || _         || _        y rC   )Ú
dictionaryÚbuf)rf   r  r  s      r   r‹   zPdfStream.__init__G  s   € Ø$ˆŒØˆ�r   c                ó,  — 	 | j                   d   }|dk(  rKt        j                  «       }|j                  | j                  |«      }|j                  rd}t        |«      ‚|S dt        |«      › d�}t        |«      ‚# t        $ r | j                  cY S w xY w)Ns   Filters   FlateDecodezDecompressed data too largezstream filter z unknown/unsupported)
r  r’   r  r   ÚdecompressobjÚ
decompressÚunconsumed_tailÚ
ValueErrorr½   ÚNotImplementedError)rf   Ú
max_lengthÚfilterÚdobjÚ	plaintextr—   s         r   rK   zPdfStream.decodeK  s—   € ð	Ø—_‘_ YÑ/ˆFð �^Ò#Ü×%Ñ%Ó'ˆDØŸ™¨¯©°*Ó=ˆIØ×#Ò#Ø3�Ü  “oÐ%ØÐà"¤4¨£< .Ð0DÐEˆCÜ% cÓ*Ð*øô ò 	Ø—8‘8ŠOð	ús   ‚A; Á;BÂBN)r  rÚ   r  r{   rx   r¯   )r  r\   rx   r{   )rQ   rR   rS   r‹   r
   Ú	SAFEBLOCKrK   rU   r   r   r  r  F  s   „ óð (1×':Ñ':õ +r   r  c                óæ  — | du ry| du ry| €yt        | t        t        t        t        f«      rt        | «      S t        | t        t        f«      rt        | «      j                  d«      S t        | t        j                  «      r+dt        j                  d| «      j                  d«      z   d	z   S t        | t        «      rt        t        | «      «      S t        | t        «      rt        t        | «      «      S t        | t        «      rt        t!        | «      «      S t        | t
        «      r>| j#                  d
d«      } | j#                  dd«      } | j#                  d	d«      } d| z   d	z   S t        | «      S )NTs   trueFs   falses   nullrj   s   (D:z%Y%m%d%H%M%SZó   )ó   \s   \\ó   (ó   \(s   \))rn   r³   rÚ   rÓ   rþ   r{   r\   Úfloatry   r   rï   Ústruct_timeÚstrftimeÚdictÚlistr×   r   Úreplace)rØ   s    r   r×   r×   \  s-  € ØˆD�yØØ	
ˆe‰ØØ	
ˆØÜ	�Aœ¤¬(´IÐ>Ô	?Ü�Q‹xˆÜ	�AœœU�|Ô	$Ü�1‹v�}‰}˜ZÓ(Ð(Ü	�A”t×'Ñ'Ô	(ØœŸ™ o°qÓ9×@Ñ@ÀÓLÑLÈtÑSÐSÜ	�A”tÔ	Ü”W˜Q“ZÓ Ð Ü	�A”tÔ	Ü”X˜a“[Ó!Ð!Ü	�A”sÔ	Üœ A›Ó'Ð'Ü	�A”uÔ	à�I‰I�e˜WÓ%ˆØ�I‰I�d˜FÓ#ˆØ�I‰I�d˜FÓ#ˆØ�a‰x˜$‰Ðä�Q‹xˆr   c                  ó\  — e Zd ZdZ	 	 	 	 	 dS	 	 	 	 	 	 	 	 	 	 	 dTd„ZdUd„ZdVd„ZdWd„ZdWd„ZdWd„Z	dWd	„Z
dWd
„ZdXd„ZdYd„ZdWd„Z	 dZ	 	 	 d[d„Z	 	 	 	 	 	 	 	 d\d„Z	 	 	 	 	 	 	 	 d]d„ZdWd„Zed^d„«       ZdWd„ZdZd_d„ZdZdZdZdZedz   Zedz   ZdZdZeez   ez   Z e jB                  edz   ez   dz   ez   dz   ez   d z   ez   d!z   ez   d"z   e jD                  «      Z# e jB                  edz   ez   d#z   ez   dz   ez   d z   ez   d!z   ez   e jD                  «      Z$dWd$„Z%	 dZ	 	 	 	 	 d`d%„Z& e jB                  e«      Z' e jB                  ed&z   ez   d'z   «      Z( e jB                  ed(z   «      Z) e jB                  ed)z   ez   «      Z*e+dad*„«       Z, e jB                  d+«      Z-e+dbdcd,„«       Z. e jB                  ed-z   ez   d'z   «      Z/ e jB                  ed.z   ez   d'z   «      Z0 e jB                  ed/z   ez   d'z   «      Z1 e jB                  ed0z   ez   d'z   «      Z2 e jB                  ed1z   ez   d'z   «      Z3 e jB                  ed2z   «      Z4 e jB                  ed3z   «      Z5 e jB                  ed4z   ez   d5z   «      Z6 e jB                  ed6z   «      Z7 e jB                  ed7z   ez   d7z   ez   d8z   ez   d'z   «      Z8 e jB                  ed7z   ez   d7z   ez   d9z   ez   d'z   «      Z9 e jB                  ed:z   ez   d'z   «      Z: e jB                  d;ez   d<z   ez   d=z   «      Z; e jB                  ed>z   «      Z< e jB                  ed?z   ez   d'z   «      Z=e+	 	 dd	 	 	 	 	 	 	 	 	 ded@„«       Z> e jB                  dA«      Z?i dBdC“dDdE“dFdG“dHdI“dJdK“d;d;“d'd'“dLdL“ e@dB«      dC“ e@dD«      dE“ e@dF«      dG“ e@dH«      dI“ e@dJ«      dK“ e@d;«      d;“ e@d'«      d'“ e@dL«      dL“ZAe+	 	 	 	 	 	 dfdM„«       ZB e jB                  edNz   ez   «      ZC e jB                  ed z   ez   d z   ez   ez   «      ZD e jB                  dO«      ZEdgdP„ZFdhdidQ„ZG	 dZ	 	 	 djdR„ZHy)krÀ   z|Based on
    https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
    Supports PDF up to 1.4
    Nc                ó  — |r|rd}t        |«      ‚|| _        || _        || _        || _        d| _        d| _        |�|€t        ||«      x| _        }d| _        |�<| j                  |«      | _        d| _        |st        |d«      r|j                  | _        i | _        |  |  |  |  | j                  r	 | j                  «        n{dx| _        | _        t#        «       | _        d | _        t#        «       | _        d | _        t#        «       | _        g | _        g | _        d | _        d | _        i | _        t9        «       | _        d| j:                  _        |r| j?                  «        y y # t        $ r | j                  «        ‚ w xY w)Nz4specify buf or f or filename, but not both buf and fFTr´   r   ) ÚRuntimeErrorÚfilenamer  r¦   Ústart_offsetÚshould_close_bufÚshould_close_fileÚopenÚget_buf_from_fileÚhasattrr´   Úcached_objectsÚread_pdf_inforP   ÚcloseÚfile_size_totalÚfile_size_thisrÚ   ÚrootÚroot_refÚinfoÚinfo_refÚpage_tree_rootÚpagesÚ
orig_pagesÚ	pages_refÚlast_xref_section_offsetÚtrailer_dictr„   Ú
xref_tabler‰   Úseek_end)rf   r!  r¦   r  r"  Úmoder—   s          r   r‹   zPdfParser.__init__  sq  € ñ ‘1ØHˆCÜ˜sÓ#Ð#Ø ˆŒØFIˆŒØˆŒØ(ˆÔØ %ˆÔØ!&ˆÔØÐ A IÜ˜h¨Ó-Ð-ˆDŒF�QØ%)ˆDÔ"Øˆ=Ø×-Ñ-¨aÓ0ˆDŒHØ$(ˆDÔ!Ù¤¨¨6Ô 2Ø !§¡�”Ø<>ˆÔÙÙÙÙØ�8Š8ðØ×"Ñ"Õ$ð
 :;Ð:ˆDÔ  4Ô#6Ü›	ˆDŒIØ ˆDŒMÜ›	ˆDŒIØ ˆDŒMÜ")£)ˆDÔØ24ˆDŒJØ79ˆDŒOØ!ˆDŒNØ,0ˆDÔ)Ø24ˆDÔÜ'›kˆDŒOØ+/ˆ�‰Ô(ÙØ�M‰M�Oð øô# "ò Ø—
‘
”Øðús   Â4E% Å%F c                ó   — | S rC   rU   re   s    r   Ú	__enter__zPdfParser.__enter__´  s   € Øˆr   c                ó$   — | j                  «        y rC   )r*  )rf   Úargss     r   Ú__exit__zPdfParser.__exit__·  s   € Ø�
‰
�r   c                óD   — | j                  «        | j                  «        y rC   )Ú	close_bufr8  re   s    r   Ústart_writingzPdfParser.start_writingº  s   € Ø�‰ÔØ�‰�r   c                óh  — t        | j                  t        «      rS| j                  j                  «        t        j
                  j                  dk(  rZdd l}|j                  «        d | _        y t        | j                  t        j                  «      r| j                  j                  «        d | _        y )NÚpypyr   )rn   r  Ú
memoryviewÚreleaseÚsysÚimplementationr´   ÚgcÚcollectr   r*  )rf   rH  s     r   r@  zPdfParser.close_buf¾  st   € Ü�d—h‘h¤
Ô+Ø�H‰H×ÑÔÜ×!Ñ!×&Ñ&¨&Ò0Ûð —
‘
”ð ˆ�ô ˜Ÿ™¤$§)¡)Ô,Ø�H‰H�N‰NÔØˆ�r   c                ó²   — | j                   r| j                  «        | j                  �/| j                  r"| j                  j	                  «        d | _        y y y rC   )r#  r@  r¦   r$  r*  re   s    r   r*  zPdfParser.closeÊ  sC   € Ø× Ò Ø�N‰NÔØ�6‰6Ð $×"8Ò"8Ø�F‰F�L‰LŒNØˆD�Fð #9Ðr   c                ót   — | j                   €J ‚| j                   j                  dt        j                  «       y )Nr   )r¦   ÚseekÚosÚSEEK_ENDre   s    r   r8  zPdfParser.seek_endÑ  s(   € Ø�v‰vÐ!Ð!Ð!Ø�‰�‰�A”r—{‘{Õ#r   c                óV   — | j                   €J ‚| j                   j                  d«       y )Ns	   %PDF-1.4
)r¦   r£   re   s    r   Úwrite_headerzPdfParser.write_headerÕ  s"   € Ø�v‰vÐ!Ð!Ð!Ø�‰�‰�]Õ#r   c                óz   — | j                   €J ‚| j                   j                  d|› d�j                  «       «       y )Nz% ú
)r¦   r£   r   )rf   r   s     r   Úwrite_commentzPdfParser.write_commentÙ  s3   € Ø�v‰vÐ!Ð!Ð!Ø�‰�‰�r˜!˜˜B�Z×&Ñ&Ó(Õ)r   c                óê  — | j                   €J ‚| j                  «        | j                  | j                   j                  «       «      | _        | j                  d«      | _        | j                  «        | j                  | j                  t        d«      | j
                  ¬«       | j                  | j
                  t        d«      t        | j                  «      | j                  ¬«       | j                  S )Nr   ó   Catalog)ÚTypeÚPagesó   Pages)rV  ÚCountÚKids)r¦   Údel_rootÚnext_object_idr¢   r.  r4  Úrewrite_pagesÚ	write_objr³   rJ   r2  re   s    r   Úwrite_catalogzPdfParser.write_catalogÝ  s²   € Ø�v‰vÐ!Ð!Ð!Ø�‰ŒØ×+Ñ+¨D¯F©F¯K©K«MÓ:ˆŒØ×,Ñ,¨QÓ/ˆŒØ×ÑÔØ�‰�t—}‘}¬7°:Ó+>ÀdÇnÁnˆÔUØ�‰Ø�N‰NÜ˜Ó"Ü�d—j‘j“/Ø—‘ð	 	ô 	
ð �}‰}Ðr   c                óè  — g }t        | j                  «      D ]×  \  }}| j                  |   }| j                  |j                  = |j                  |t        d«         «       || j                  vrŒXi }|j                  «       D ]  \  }}|||j                  «       <   Œ | j                  |d<    | j                  di |¤Ž}t        | j                  «      D ]  \  }	}
|
|k(  sŒ|| j                  |	<   Œ ŒÙ |D ]u  }g }|sŒ||vsŒ|j                  |«       | j                  |   }|j                  | j                  v r| j                  |j                  = |j                  dd «      }|sŒq||vrŒiŒw g | _        y )Ns   ParentÚParentrC   )r¤   r3  r(  r7  r]   rË   r³   r2  rû   r·   r4  Ú
write_pagerE   )rf   Úpages_tree_nodes_to_deleteÚiÚpage_refÚ	page_infoÚstringified_page_inforŽ   r�   Únew_page_refÚjÚcur_page_refÚpages_tree_node_refÚprocessed_refsÚpages_tree_nodes                 r   r]  zPdfParser.rewrite_pagesì  s‰  € Ø%'Ð"Ü$ T§_¡_Ó5ò 	1‰KˆAˆxØ×+Ñ+¨HÑ5ˆIØ—‘ × 2Ñ 2Ð3Ø&×-Ñ-¨i¼À	Ó8JÑ.KÔLØ˜tŸz™zÑ)àà$&Ð!Ø'Ÿo™oÓ/ò A‘
��Uà;@Ð% c§o¡oÓ&7Ò8ðAð /3¯n©nÐ! (Ñ+Ø*˜4Ÿ?™?ÑIÐ3HÑIˆLÜ#,¨T¯Z©ZÓ#8ò 1‘��<Ø 8Ó+à$0�D—J‘J˜q’Mñ1ð	1ð& $>ò 	KÐØˆNÚ%Ð*=À^Ò*SØ×%Ñ%Ð&9Ô:Ø"&×"5Ñ"5Ð6IÑ"J�Ø&×0Ñ0°D·O±OÑCØŸ™Ð(;×(EÑ(EÐFØ&5×&9Ñ&9¸)ÀTÓ&JÐ#ò &Ð*=À^Ó*Sð	Kð ˆ�r   c                ó$  — | j                   €J ‚|r| j                  «        || _        | j                  r!| j	                  d | j                  «      | _        | j                  j                  | j                   «      }t        | j                  «      }| j                  |dœ}| j                  �| j                  |d<   | j                  r| j
                  |d<   || _	        | j                   j                  dt        t        |«      «      z   d|z  z   «       y )N)ó   Rootó   Sizeó   Prevó   Infos   trailer
s   
startxref
%d
%%%%EOF)r¦   r[  r.  r/  r^  r0  r7  r£   rJ   r5  r{   rÚ   )rf   Únew_root_refÚ
start_xrefÚnum_entriesr6  s        r   Úwrite_xref_and_trailerz PdfParser.write_xref_and_trailer  sè   € ð �v‰vÐ!Ð!Ð!ÙØ�M‰MŒOØ(ˆDŒMØ�9Š9Ø ŸN™N¨4°·±Ó;ˆDŒMØ—_‘_×*Ñ*¨4¯6©6Ó2ˆ
Ü˜$Ÿ/™/Ó*ˆà—]‘]Ø ñ0
ˆð ×(Ñ(Ð4Ø$(×$AÑ$AˆL˜Ñ!Ø�9Š9Ø$(§M¡MˆL˜Ñ!Ø(2ˆÔ%Ø�‰�‰ØÜ”G˜LÓ)Ó*ñ+à)¨JÑ6ñ7õ	
r   c                óº   — t        |t        «      r| j                  |   n|}d|vrt        d«      |d<   d|vr| j                  |d<    | j
                  |g|¢­i |¤ŽS )NrV  ó   Pagera  )rn   r\   r2  r³   r4  r^  )rf   ÚrefÚobjsÚdict_objÚobj_refs        r   rb  zPdfParser.write_page%  sd   € ô &0°´SÔ%9�$—*‘*˜S’/¸sˆØ˜Ñ!Ü& wÓ/ˆH�VÑØ˜8Ñ#Ø!%§¡ˆH�XÑØˆt�~‰~˜gÐ9¨Ò9°Ñ9Ð9r   c                ón  — | j                   €J ‚| j                   }|€ | j                  |j                  «       «      }n3|j                  «       |j                  f| j                  |j
                  <   |j                  t        t        |Ž «      «       |j                  dd «      }|�t        |«      |d<   |r|j                  t        |«      «       |D ]  }|j                  t        |«      «       Œ |�3|j                  d«       |j                  |«       |j                  d«       |j                  d«       |S )NÚstreamÚLengths   stream
s   
endstream
s   endobj
)r¦   r\  r¢   r^   r7  r]   r£   r{   r�   r¥   rJ   r×   )rf   ry  rz  r{  r¦   r~  Úobjs          r   r^  zPdfParser.write_obj/  s  € ð �v‰vÐ!Ð!Ð!Ø�F‰FˆØˆ;Ø×%Ñ% a§f¡f£hÓ/‰Cà./¯f©f«h¸¿¹Ð-GˆD�O‰O˜CŸM™MÑ*Ø	�‰”Ô'¨Ð-Ó.Ô/Ø—‘˜h¨Ó-ˆØÐÜ!$ V£ˆH�XÑÙØ�G‰G”H˜XÓ&Ô'Øò 	#ˆCØ�G‰G”H˜S“MÕ"ð	#àÐØ�G‰G�KÔ Ø�G‰G�FŒOØ�G‰GÐ$Ô%Ø	�‰�ÔØˆ
r   c                ó¨   — | j                   €y | j                  | j                   j                  = | j                  | j                  d   j                  = y )NrX  )r.  r7  r]   r-  re   s    r   r[  zPdfParser.del_rootG  s@   € Ø�=‰=Ð ØØ�O‰O˜DŸM™M×3Ñ3Ð4Ø�O‰O˜DŸI™I hÑ/×9Ñ9Ñ:r   c                óú   — t        | d«      r| j                  «       S t        | d«      r| j                  «       S 	 t        j                  | j	                  «       dt        j
                  ¬«      S # t        $ r Y yw xY w)NÚ	getbufferÚgetvaluer   )Úaccessr   )r'  rƒ  r„  r   ÚfilenoÚACCESS_READr  )r¦   s    r   r&  zPdfParser.get_buf_from_fileM  sd   € ä�1�kÔ"Ø—;‘;“=Ð Ü�Q˜
Ô#Ø—:‘:“<ÐðÜ—y‘y §¡£¨Q´t×7GÑ7GÔHÐHøÜò Ùðús   º3A. Á.	A:Á9A:c                ó:  — | j                   €J ‚t        | j                   «      | _        | j                  | j                  z
  | _        | j                  «        t        | j                  j                  d«      d ud«       | j                  d   | _	        | j                  €J ‚| j                  j                  dd «      | _
        t        | j                  | j                  «      «      | _        | j                  €t        «       | _        n)t        | j                  | j                  «      «      | _        t        d| j                  v d«       t        | j                  d   dk(  d«       t        | j                  j                  d«      d ud	«       t        t        | j                  d   t         «      d
«       | j                  d   | _        | j"                  €J ‚| j                  | j"                  «      | _        | j'                  «       | _        | j(                  d d  | _        y )Nro  zRoot is missingrr  ó   Typez/Type missing in RootrU  z/Type in Root is not /CatalogrX  z/Pages missing in Rootz+/Pages in Root is not an indirect reference)r  rJ   r+  r"  r,  Úread_trailerrY   r6  rE   r.  r0  rÚ   Úread_indirectr-  r/  rn   ra   r4  r1  Úlinearize_page_treer2  r3  re   s    r   r)  zPdfParser.read_pdf_infoY  s¿  € Ø�x‰xÐ#Ð#Ð#Ü" 4§8¡8›}ˆÔØ"×2Ñ2°T×5FÑ5FÑFˆÔØ×ÑÔÜØ×Ñ×!Ñ! 'Ó*°$Ð6Ð8Iô	
ð ×)Ñ)¨'Ñ2ˆŒØ�}‰}Ð(Ð(Ð(Ø×)Ñ)×-Ñ-¨g°tÓ<ˆŒÜ˜D×.Ñ.¨t¯}©}Ó=Ó>ˆŒ	Ø�=‰=Ð Ü›	ˆD�Iä × 2Ñ 2°4·=±=Ó AÓBˆDŒIÜ˜w¨$¯)©)Ð3Ð5LÔMÜØ�I‰I�gÑ *Ñ,Ð.Mô	
ô 	Ø�I‰I�M‰M˜(Ó#¨4Ð/Ð1Iô	
ô 	Ü�t—y‘y Ñ*Ô,=Ó>Ø9ô	
ð Ÿ™ 8Ñ,ˆŒØ�~‰~Ð)Ð)Ð)Ø"×0Ñ0°·±Ó@ˆÔØ×-Ñ-Ó/ˆŒ
ð Ÿ*™*¡Q˜-ˆ�r   c                ó†   — t        | j                  j                  dz   d«      }|�|df| j                  |j                  <   |S )Nr	   r   )ra   r7  rŠ   r]   )rf   rõ   Ú	references      r   r\  zPdfParser.next_object_id}  sA   € ä% d§o¡o×&DÑ&DÀqÑ&HÈ!ÓLˆ	ØÐØ4:¸A°;ˆD�O‰O˜I×/Ñ/Ñ0ØÐr   s   [][()<>{}/%]s$   [][()<>{}/%\000\011\012\014\015\040]s   [\000\011\012\014\015\040]s#   [\000\011\012\014\015\0400-9a-fA-F]ó   *ó   +s   [\000\011\014\040]*s   [\r\n]+s   trailers   <<(.*>>)s	   startxrefs   ([0-9]+)s   %%EOFó   $s	   <<(.*?>>)c                óº  — | j                   €J ‚t        | j                   «      dz
  }|| j                  k  r| j                  }| j                  j	                  | j                   |«      }t        |d ud«       |}|r<|}| j                  j	                  | j                   |j                  «       dz   «      }|rŒ<|s|}|€J ‚|j                  d«      }t        |j                  d«      «      | _	        | j                  |«      | _        t        «       | _        | j                  | j                  ¬«       d| j                  v r| j                  | j                  d   «       y y )Né @  ztrailer end not foundé   r	   rá   ©Úxref_section_offsetrq  )r  rJ   r"  Úre_trailer_endÚsearchrY   ÚstartÚgroupr\   r5  Úinterpret_trailerr6  r„   r7  Úread_xref_tableÚread_prev_trailer)rf   Úsearch_start_offsetÚmÚ
last_matchÚtrailer_datas        r   rŠ  zPdfParser.read_trailer¬  s7  € Ø�x‰xÐ#Ð#Ð#Ü! $§(¡(›m¨eÑ3ÐØ ×!2Ñ!2Ò2Ø"&×"3Ñ"3ÐØ×Ñ×&Ñ& t§x¡xÐ1DÓEˆÜ˜q¨˜}Ð.EÔFàˆ
ÙØˆJØ×#Ñ#×*Ñ*¨4¯8©8°Q·W±W³YÀ±^ÓDˆAò ñ ØˆAØˆ}Ðˆ}Ø—w‘w˜q“zˆÜ(+¨A¯G©G°A«J«ˆÔ%Ø ×2Ñ2°<Ó@ˆÔÜ#›+ˆŒØ×Ñ°×1NÑ1NÐÔOØ�d×'Ñ'Ñ'Ø×"Ñ" 4×#4Ñ#4°WÑ#=Õ>ð (r   c                ó¬  — | j                   €J ‚|€g }	 t        ||vd«       | j                  |¬«      }| j                  j	                  | j                   ||dz    «      }t        |d ud«       |€J ‚|j                  d«      }t        t        |j                  d«      «      |k(  d«       | j                  |«      }d|vry |j                  |«       |d   }ŒÂ)	Nztrailer loop foundr•  r“  zprevious trailer not foundr	   rá   zGxref section offset in previous trailer doesn't match what was expectedrq  )	r  rY   rœ  Úre_trailer_prevr˜  rš  r\   r›  rË   )rf   r–  Úprocessed_offsetsÚtrailer_offsetrŸ  r¡  r6  s          r   r�  zPdfParser.read_prev_trailerÃ  s  € ð �x‰xÐ#Ð#Ð#ØÐ$Ø "ÐØÜ"Ø#Ð+<Ð<Ð>Rôð "×1Ñ1Ø$7ð 2ó ˆNð ×$Ñ$×+Ñ+Ø—‘˜¨.¸5Ñ*@ÐAóˆAô # 1¨D =Ð2NÔOØ�=Ð �=ØŸ7™7 1›:ˆLÜ"Ü�A—G‘G˜A“J“Ð#6Ñ6ð2ôð
  ×1Ñ1°,Ó?ˆLØ˜lÑ*ØØ×$Ñ$Ð%8Ô9Ø".¨wÑ"7Ðð- r   s   /([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=r  rù   s   >>c           	     óH  — i }d}	 | j                   j                  ||«      }|sX| j                  j                  ||«      }t        |d uxr |j	                  «       t        |«      k(  dt        ||d  «      z   «       n`| j                  |j                  d«      «      }t        |t        «      sJ ‚| j                  ||j	                  «       «      \  }}|||<   |€n|}ŒÖt        d|v xr t        |d   t        «      d«       t        d|v xr t        |d   t        «      d«       |S )Nr   z+name not found in trailer, remaining data: r	   rp  z&/Size not in trailer or not an integerro  z1/Root not in trailer or not an indirect reference)Úre_nameÚmatchÚre_dict_endrY   ÚendrJ   r½   rÁ   rš  rn   r{   Ú	get_valuer\   ra   )rÂ   r¡  Útrailerrõ   rŸ  rŽ   r�   Úvalue_offsets           r   r›  zPdfParser.interpret_trailerë  s1  € àˆØˆØØ—‘×!Ñ! ,°Ó7ˆAÙØ—O‘O×)Ñ)¨,¸Ó?�Ü&Ø˜T�MÒB a§e¡e£g´°\Ó1BÑ&BØAÜ˜<¨¨Ð0Ó1ñ2ôð
 Ø×$Ñ$ Q§W¡W¨Q£ZÓ0ˆCÜ˜c¤5Ô)Ð)Ð)Ø"%§-¡-°¸a¿e¹e»gÓ"FÑˆE�<Ø ˆG�C‰LØÐ#ØØ!ˆFð! ô" 	Ø�wÐÒD¤:¨g°gÑ.>ÄÓ#DØ4ô	
ô 	Ø�wÐÒR¤:¨g°gÑ.>Ô@QÓ#RØ?ô	
ð ˆr   s   ([^#]*)(#([0-9a-fA-F]{2}))?c                ó^  — d}| j                   j                  |«      D ]p  }|j                  d«      rI||j                  d«      t        j	                  |j                  d«      j                  d«      «      z   z  }Œ]||j                  d«      z  }Œr |r|j                  d«      S t        |«      S )Nr   é   r	   rj   zutf-8)Úre_hashes_in_nameÚfinditerrš  rÉ   ÚfromhexrK   r{   )rÂ   ÚrawÚas_textr´   rŸ  s        r   rÁ   zPdfParser.interpret_name  s—   € àˆØ×&Ñ&×/Ñ/°Ó4ò 	#ˆAØ�w‰w�qŒzØ˜Ÿ™ ›
¤Y×%6Ñ%6°q·w±w¸q³z×7HÑ7HÈÓ7TÓ%UÑUÑU‘à˜Ÿ™ ›
Ñ"‘ð		#ñ
 Ø—;‘;˜wÓ'Ð'ä˜“;Ðr   s   null(?=s   true(?=s   false(?=s   ([-+]?[0-9]+)(?=s)   ([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s   \[ó   ]s   <(s   *)>r  s   ([-+]?[0-9]+)s   R(?=s   obj(?=s	   endobj(?=r  s	   %[^\r\n]*s   )*s   stream\r?\ns   endstream(?=c                ó’  — |dk(  ry| j                   j                  ||«      }|r|j                  «       }| j                  j                  ||«      }|�rt	        t        |j                  d«      «      dkD  d«       t	        t        |j                  d«      «      dk\  d«       t	        |d u xs? |t        t        |j                  d«      «      t        |j                  d«      «      «      k(  d«       | j                  ||j                  «       |dz
  ¬«      \  }}|€|d fS | j                  j                  ||«      }t	        |d ud	«       |€J ‚||j                  «       fS t	        | d
«       | j                  j                  ||«      }|ršt	        t        |j                  d«      «      dkD  d«       t	        t        |j                  d«      «      dk\  d«       t        t        |j                  d«      «      t        |j                  d«      «      «      |j                  «       fS | j                  j                  ||«      }|�rÞ|j                  «       }i }| j                  j                  ||«      }|}	|sª|	€J ‚| j                  j                  ||	«      }|sd}
t        |
«      ‚t        | j!                  |j                  d«      «      «      }| j                  ||j                  «       |dz
  ¬«      \  }}	|||<   |	€|d fS | j                  j                  ||	«      }|sŒª|j                  «       }	| j"                  j                  ||	«      }|rÇ|j%                  d«      }|�t'        |t
        «      sd|› d�}
t        |
«      ‚t)        ||j                  «       |j                  «       |z    «      }| j*                  j                  ||j                  «       |z   «      }t	        |d ud«       |€J ‚|j                  «       }	t-        t/        |«      |«      |	fS t/        |«      |	fS | j0                  j                  ||«      }|r˜|j                  «       }g }| j2                  j                  ||«      }|}	|sT|	€J ‚| j                  ||	|dz
  ¬«      \  }}	|j5                  |«       |	€|d fS | j2                  j                  ||	«      }|sŒT||j                  «       fS | j6                  j                  ||«      }|rd |j                  «       fS | j8                  j                  ||«      }|rd|j                  «       fS | j:                  j                  ||«      }|rd|j                  «       fS | j                  j                  ||«      }|r9t        | j!                  |j                  d«      «      «      |j                  «       fS | j<                  j                  ||«      }|r*t        |j                  d«      «      |j                  «       fS | j>                  j                  ||«      }|r*tA        |j                  d«      «      |j                  «       fS | jB                  j                  ||«      }|r€tE        d„ |j                  d«      D «       «      }tG        |«      dz  dk(  r|j5                  tI        d«      «       tD        jK                  |jM                  d«      «      |j                  «       fS | jN                  j                  ||«      }|r | jQ                  ||j                  «       «      S dtS        |||dz    «      › �}
t        |
«      ‚)Nr   )NNr	   z<indirect object definition: object ID must be greater than 0rá   z;indirect object definition: generation must be non-negativez2indirect object definition different than expected)Úmax_nestingz(indirect object definition end not foundz$indirect object definition not foundz;indirect object reference: object ID must be greater than 0z:indirect object reference: generation must be non-negativezkey must be a names   Lengthz&bad or missing Length in stream dict (r¼   zstream end not foundTFc              3  ó*   K  — | ]  }|d v sŒ|–— Œ y­w)s   0123456789abcdefABCDEFNrU   r  s     r   rI   z&PdfParser.get_value.<locals>.<genexpr>È  s   è ø€ ò #Ø¨Ð.GÒ)G”ñ#ùs   ‚	Œó   0rj   zunrecognized object: é    )*Ú
re_commentr¨  rª  Úre_indirect_def_startrY   r\   rš  ra   r«  Úre_indirect_def_endÚre_indirect_referenceÚre_dict_startr©  r§  rP   r³   rÁ   Úre_stream_startrE   rn   r{   Úre_stream_endr  rÚ   Úre_array_startÚre_array_endrË   Úre_nullÚre_trueÚre_falseÚre_intÚre_realr  Úre_string_hexrÉ   rJ   rÐ   r²  rK   Úre_string_litÚget_literal_stringr½   )rÂ   rÃ   rõ   Úexpect_indirectr·  rŸ  r}   Úobject_offsetrÍ   Úcurrent_offsetr—   rŽ   r�   Ú
stream_lenÚstream_dataÚresultsÚ
hex_strings                    r   r«  zPdfParser.get_valueJ  s±  € ð ˜!ÒØØ�N‰N× Ñ   vÓ.ˆÙØ—U‘U“WˆFØ×%Ñ%×+Ñ+¨D°&Ó9ˆÚÜ"Ü�A—G‘G˜A“J“ !Ñ#ØNôô #Ü�A—G‘G˜A“J“ 1Ñ$ØMôô #Ø 4Ð'ò GØ"Ü$¤S¨¯©°«£_´c¸!¿'¹'À!»*³oÓFñGàDô	ð %(§M¡MØ�a—e‘e“g¨;¸©?ð %2ó %Ñ!ˆF�Mð Ð$Ø˜t�|Ð#Ø×'Ñ'×-Ñ-¨d°MÓBˆAÜ"Ø˜�ÐIôð �=Ð �=Ø˜1Ÿ5™5›7�?Ð"ÜØÐÐ!Gô	
ð ×%Ñ%×+Ñ+¨D°&Ó9ˆÙÜ"Ü�A—G‘G˜A“J“ !Ñ#ØMôô #Ü�A—G‘G˜A“J“ 1Ñ$ØLôô %¤S¨¯©°«£_´c¸!¿'¹'À!»*³oÓFÈÏÉËÐOÐOØ×Ñ×#Ñ# D¨&Ó1ˆÚØ—U‘U“WˆFØ%'ˆFØ—‘×%Ñ% d¨FÓ3ˆAØ)/ˆNÙØ%Ð1Ð1Ð1Ø—K‘K×%Ñ% d¨NÓ;�ÙØ.�CÜ(¨Ó-Ð-Ü˜c×0Ñ0°·±¸³Ó<Ó=�Ø(+¯©Ø˜!Ÿ%™%›'¨{¸Q©ð )6ó )Ñ%��~ð $��s‘Ø!Ð)Ø! 4˜<Ð'Ø—O‘O×)Ñ)¨$°Ó?�ò ð ŸU™U›WˆNØ×#Ñ#×)Ñ)¨$°Ó?ˆAÙØ#ŸZ™Z¨	Ó2�
ØÐ%¬Z¸
ÄCÔ-HØBÀ:À,ÈaÐP�CÜ(¨Ó-Ð-Ü# D¨¯©«°1·5±5³7¸ZÑ3GÐ$HÓI�Ø×%Ñ%×+Ñ+¨D°!·%±%³'¸JÑ2FÓG�Ü& q° }Ð6LÔMØ�}Ð$�}Ø!"§¡£�Ü ¤¨£°+Ó>ÀÐNÐNÜ˜6“? NÐ2Ð2Ø×Ñ×$Ñ$ T¨6Ó2ˆÙØ—U‘U“WˆFØˆGØ× Ñ ×&Ñ& t¨VÓ4ˆAØ#ˆNÙØ%Ð1Ð1Ð1Ø(+¯©Ø˜.°kÀA±oð )6ó )Ñ%��~ð —‘˜uÔ%Ø!Ð)Ø" D˜=Ð(Ø×$Ñ$×*Ñ*¨4°Ó@�ò ð ˜AŸE™E›GÐ#Ð#Ø�K‰K×Ñ˜d FÓ+ˆÙØ˜Ÿ™›�=Ð Ø�K‰K×Ñ˜d FÓ+ˆÙØ˜Ÿ™›�=Ð Ø�L‰L×Ñ˜t VÓ,ˆÙØ˜!Ÿ%™%›'�>Ð!Ø�K‰K×Ñ˜d FÓ+ˆÙÜ˜3×-Ñ-¨a¯g©g°a«jÓ9Ó:¸A¿E¹E»GÐCÐCØ�J‰J×Ñ˜T 6Ó*ˆÙÜ�q—w‘w˜q“z“? A§E¡E£GÐ+Ð+Ø�K‰K×Ñ˜d FÓ+ˆÙä˜Ÿ™ ›Ó$ a§e¡e£gÐ-Ð-Ø×Ñ×#Ñ# D¨&Ó1ˆÙä"ñ #ØŸ7™7 1›:ô#ó ˆJô �:‹ Ñ" aÒ'à×!Ñ!¤# d£)Ô,Ü×$Ñ$ Z×%6Ñ%6°zÓ%BÓCÀQÇUÁUÃWÐLÐLØ×Ñ×#Ñ# D¨&Ó1ˆÙØ×)Ñ)¨$°·±³Ó8Ð8à%¤d¨4°¸À"¹Ð+EÓ&FÐ%GÐHˆÜ˜SÓ!Ð!r   sF   (\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))ó   nrú   ó   ró   ó   tó   	ó   bó   ó   fó   r  c                ó,  — d}t        «       }| j                  j                  ||«      D �]\  }|j                  |||j	                  «        «       |j                  d«      r1|j                  | j                  |j                  d«      d      «       nå|j                  d«      r.|j                  t        |j                  d«      dd  d«      «       n¦|j                  d«      rn”|j                  d«      r|j                  d«       nq|j                  d«      r|j                  d	«       |dz  }nI|j                  d
«      r8|dk(  rt        |«      |j                  «       fc S |j                  d«       |dz  }|j                  «       }�Œ_ d}t        |«      ‚)Nr   r	   rá   é   r¯  é   rú   é   r  é   r  zunfinished literal string)rÉ   Úre_lit_str_tokenr±  rÌ   r™  rš  Úescaped_charsrË   r\   r{   rª  rP   )rÂ   rÃ   rõ   Únesting_depthrÍ   rŸ  r—   s          r   rË  zPdfParser.get_literal_stringì  sF  € ð ˆÜ“ˆØ×%Ñ%×.Ñ.¨t°VÓ<ó 	ˆAØ�M‰M˜$˜v¨¯©«	Ð2Ô3Ø�w‰w�qŒzØ—‘˜c×/Ñ/°·±¸³
¸1±Ñ>Õ?Ø—‘˜”Ø—‘œc !§'¡'¨!£*¨Q¨R .°!Ó4Õ5Ø—‘˜”ØØ—‘˜”Ø—‘˜eÕ$Ø—‘˜”Ø—‘˜dÔ#Ø Ñ"‘Ø—‘˜”Ø  AÒ%Ü  ›=¨!¯%©%«'Ð1Ò1Ø—‘˜dÔ#Ø Ñ"�Ø—U‘U“WŠFð%	ð& *ˆÜ˜SÓ!Ð!r   s   xrefs+   ([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c                óZ  — | j                   €J ‚d}| j                  j                  | j                   || j                  z   «      }t	        |d ud«       |€J ‚|j                  «       }	 | j                  j                  | j                   |«      }|st	        |d«       	 |S d}|j                  «       }t        |j                  d«      «      }t        |j                  d«      «      }t        |||z   «      D ]µ  }| j                  j                  | j                   |«      }t	        |d ud«       |€J ‚|j                  «       }|j                  d«      d	k(  }|rŒbt        |j                  d«      «      }	t        |j                  d«      «      |	f}
|| j                  vsŒ§|
| j                  |<   Œ· �ŒF)
NFzxref section start not foundTzxref subsection start not foundr	   rá   zxref entry not foundr¯  rÚ  )r  Úre_xref_section_startr¨  r"  rY   rª  Úre_xref_subsection_startr\   rš  rÏ   Úre_xref_entryr7  )rf   r–  Úsubsection_foundrŸ  rõ   Úfirst_objectÚnum_objectsrd  Úis_freer^   Ú	new_entrys              r   rœ  zPdfParser.read_xref_table  s�  € Ø�x‰xÐ#Ð#Ð#Ø ÐØ×&Ñ&×,Ñ,Ø�H‰HÐ)¨D×,=Ñ,=Ñ=ó
ˆô 	˜q¨˜}Ð.LÔMØˆ}Ðˆ}Ø—‘“ˆØØ×-Ñ-×3Ñ3°D·H±H¸fÓEˆAÙÜ&Ø$Ð&Gôð ð  ˆð  $ÐØ—U‘U“WˆFÜ˜qŸw™w q›z›?ˆLÜ˜aŸg™g a›j›/ˆKÜ˜<¨¸Ñ)CÓDò 
7�Ø×&Ñ&×,Ñ,¨T¯X©X°vÓ>�Ü& q° }Ð6LÔMØ�}Ð$�}ØŸ™›�ØŸ'™' !›*¨Ñ,�ÚÜ!$ Q§W¡W¨Q£Z£�JÜ!$ Q§W¡W¨Q£Z£°*Ð =�IØ §¡Ò/Ø-6˜Ÿ™¨Ò*ð
7ñ r   c                ó  — | j                   |d      \  }}t        ||d   k(  d|d   › d|d   › d|› d|› �«       | j                  €J ‚| j                  | j                  || j                  z   t        |Ž |¬«      d   }|| j                  |<   |S )Nr   r	   zexpected to find generation z for object ID z) in xref table, instead found generation z at offset )rÌ  r·  )r7  rY   r  r«  r"  ra   r(  )rf   ry  r·  rõ   r^   r�   s         r   r‹  zPdfParser.read_indirect4  s¿   € Ø!Ÿ_™_¨S°©VÑ4Ñˆ�
ÜØ˜#˜a™&Ñ Ø*¨3¨q©6¨(°/À#ÀaÁ&Àð J/Ø/9¨l¸+ÀfÀXðOô	
ð
 �x‰xÐ#Ð#Ð#Ø—‘Ø�H‰HØ�T×&Ñ&Ñ&Ü-¨sÐ3Ø#ð	 ó 
ð
 ñˆð $)ˆ×Ñ˜CÑ Øˆr   c                óR  — t        «       }|�|}n=| j                  }| j                  �%|j                  | j                  j                  «       t        |d   dk(  d«       g }t        |d   «      g}|rµt        |d   d «      }|€|j                  «        Œ$t        |j                  |vd|› �«       |j                  |j                  «       | j                  |«      }|d   dk(  r|j                  |«       n/t        |d   dk(  d«       |j                  t        |d   «      «       |rŒµ|S )Nr‰  rX  z%/Type of page tree node is not /Pagess   Kidsrë   z6page tree contains a cyclic or duplicate reference to rx  )rœ   r1  r4  Úaddr]   rY   ÚiterÚnextr¥   r‹  rË   )rf   ÚnodeÚprocessed_idsÚ	page_noder2  ÚstackÚkidÚ
kid_objects           r   rŒ  zPdfParser.linearize_page_treeE  s1  € ô ›ˆØÐØ‰Ià×+Ñ+ˆIØ�~‰~Ð)Ø×!Ñ! $§.¡.×":Ñ":Ô;ÜØ�gÑ (Ñ*Ð,Sô	
ð ˆô �i Ñ(Ó)Ð*ˆÙÜ�u˜R‘y $Ó'ˆCØˆ{Ø—	‘	”ØÜ"Ø—‘ ]Ð2ØHÈÈÐNôð ×Ñ˜cŸm™mÔ,Ø×+Ñ+¨CÓ0ˆJØ˜'Ñ" gÒ-Ø—‘˜SÕ!ä&Ø˜wÑ'¨8Ñ3Ø;ôð —‘œT *¨WÑ"5Ó6Ô7ò% ð& ˆr   )NNNr   Úrb)r!  z
str | Noner¦   zIO[bytes] | Noner  zbytes | bytearray | Noner"  r\   r9  ry   rx   r¯   )rx   r   )r=  r}   rx   r¯   r®   )r   ry   rx   r¯   )rx   ra   rC   )rs  úIndirectReference | Nonerx   r¯   )ry  zint | IndirectReference | Nonerz  r   r{  r   rx   ra   )ry  rù  rz  r   r{  r   rx   ra   )r¦   r±   rx   zbytes | mmap.mmap)rõ   z
int | Nonerx   ra   )r–  r\   r¤  zlist[int] | Nonerx   r¯   )r¡  r{   rx   zdict[bytes, Any])F)r³  r{   r´  r~   rx   zstr | bytes)Né„  )
rÃ   ú*bytes | bytearray | memoryview | mmap.mmaprõ   r\   rÌ  rù  r·  r\   rx   ztuple[Any, int | None])rÃ   rû  rõ   r\   rx   ztuple[bytes, int])r–  r\   rx   r\   )rú  )ry  ra   r·  r\   rx   r   )rò  zPdfDict | Nonerx   zlist[IndirectReference])IrQ   rR   rS   rT   r‹   r;  r>  rA  r@  r*  r8  rP  rS  r_  r]  rv  rb  r^  r[  Ústaticmethodr&  r)  r\  Ú	delimiterÚdelimiter_or_wsÚ
whitespaceÚwhitespace_or_hexÚwhitespace_optionalÚwhitespace_mandatoryÚwhitespace_optional_no_nlÚnewline_onlyÚnewlineÚreÚcompileÚDOTALLr—  r£  rŠ  r�  Úre_whitespace_optionalr§  r¿  r©  rÎ   r›  r°  rÁ   rÄ  rÅ  rÆ  rÇ  rÈ  rÂ  rÃ  rÉ  rÊ  r¾  r¼  r½  r»  rÀ  rÁ  r«  rá  rÐ   râ  rË  rå  ræ  rç  rœ  r‹  rŒ  rU   r   r   rÀ   rÀ   y  sœ  „ ñð  $Ø"Ø(,ØØð3àð3ð ð3ð &ð	3ð
 ð3ð ð3ð 
ó3ójóóó
óó$ó$ó*óóð@ 8<ð
Ø4ð
à	ó
ð4:Ø1ð:Ø:=ð:ØKNð:à	ó:ðØ+ðØ47ðØEHðà	óó0;ð ò	ó ð	ó"(ôHð !€IØ>€OØ/€JØ?ÐØ$ tÑ+ÐØ%¨Ñ,Ðà 7ÐØ€LØ'¨,Ñ6Ð9RÑR€GØ�R—Z‘ZØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ð ñ	ð ñ		ð ñ
	ð ñ	ð 	�	‰	ó€Nð !�b—j‘jØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ð ñ	ð ñ		ð ñ
	ð 	�	‰	ó€Oó?ð0 OSð8Ø#&ð8Ø;Kð8à	ó8ð< (˜RŸZ™ZÐ(;Ó<ÐØˆb�j‰jØØ
-ñ	.à
ñ	ð ñ	ó€Gð �B—J‘JÐ2°VÑ;Ó<€MØ�"—*‘*Ð0°6Ñ9Ð<OÑOÓP€Kàòó ðð< #˜Ÿ
™
Ð#BÓCÐàó
ó ð
ð ˆb�j‰jÐ,¨{Ñ:¸_ÑLÈuÑTÓU€GØˆb�j‰jÐ,¨{Ñ:¸_ÑLÈuÑTÓU€GØˆr�z‰zÐ-°Ñ<¸ÑNÐQVÑVÓW€HØˆR�Z‰ZØÐ2Ñ2°_ÑDÀuÑLó€Fð ˆb�j‰jØØ
7ñ	8à
ñ	ð ñ	ó€Gð  �R—Z‘ZÐ 3°fÑ <Ó=€NØ�2—:‘:Ð1°EÑ9Ó:€LØ�B—J‘JØ˜fÑ$Ð'8Ñ8¸7ÑBó€Mð �B—J‘JÐ2°VÑ;Ó<€MØ&˜BŸJ™JØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ó	Ðð '˜BŸJ™JØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ó	Ðð %˜"Ÿ*™*Ø˜mÑ+¨oÑ=ÀÑEóÐð �—‘ØÐ#Ñ# mÑ3°gÑ=ÀÑFó€Jð !�b—j‘jÐ!4°Ñ!FÓG€OØ�B—J‘JØÐ.Ñ.°Ñ@À5ÑHó€Mð ð
 59ØðI"à8ðI"ð ðI"ð 2ð	I"ð
 ðI"ð 
 òI"ó ðI"ðV "�r—z‘zØRóÐðØˆeðàˆeðð 	ˆeðð 	ˆeð	ð
 	ˆeðð 	ˆdðð 	ˆdðð 	ˆuðñ 	ˆD‹	�5ðñ 	ˆD‹	�5ðñ 	ˆD‹	�5ðñ 	ˆD‹	�5ðñ 	ˆD‹	�5ðñ 	ˆD‹	�4ðñ 	ˆD‹	�4ðñ  	ˆE‹
�Eð!€Mð& ð"Ø=ð"ØGJð"à	ò"ó ð"ð6 '˜BŸJ™JÐ':¸XÑ'EÈÑ'OÓPÐØ)˜rŸz™zØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ó Ðð �B—J‘JÐNÓO€MóôBð$ &*ð$Ø"ð$à	 ô$r   rÀ   )r   ry   rx   r{   )rM   r{   rx   ry   )rW   r~   rX   ry   rx   r¯   )rØ   r   rx   r{   )*Ú
__future__r   Ú__lazy_modules__r   r   rÜ   r   rM  r  rF  rï   r   Útypingr   r   rA   r
   ÚTYPE_CHECKINGr   r   rÝ   ry   r{   Ú	_DictBaser   rD   rN   r   rP   rY   r[   ra   r�   r„   r³   r  rÓ   rÚ   rþ   r  r×   rÀ   rU   r   r   ú<module>r     s¾  ðÝ "â/Ð ã Û Û Û Û 	Û 	Û 
Û Û ß "å à€Ùßà×$Ñ$ S¨5¡[°#Ð%5Ñ6�Ià×$Ñ$€Ió
7ð*Øˆ(ð*àˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð	*ð
 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð  	ˆ(ð!*ð" 	ˆ(ñ#*ð$ 	ˆ(ð%*ð& 	ˆ(ð'*ð( 	ˆ(ð)*ð* 	ˆ(ð+*ð, 	ˆ(ð-*ð. 	ˆ(ð/*ð0 	ˆ(ð1*ð2 	ˆ(ð3*ð4 	ˆ(ð5*ð6 	ˆ(ð7*ð8 	ˆ(ð9*ð: 	ˆ(ð;*ð< 	ˆ(ð=*ð> 	ˆ(ð?*ð@ 	ˆ(ðA*ðB 	ˆ(ðC*ðD 	ˆ(ñE*ðF Ø
Ø
Ø
Ø
Ø
Ø
òS*€óZJô	�\ô 	ó,ô
˜Zô ô
7Ð.ô 7ô(9Ð)ô 9÷
^ñ ^÷B&ñ &ôRDˆt�C‰yô Dô
-ˆiô -÷`Bñ B÷+ñ +ó,÷:pò pr   