ó
    /j-jF½  ã            	       ó  • S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJr  SSKJrJr  SSKJrJr  SSKJrJrJ r J!r!J"r"  SSK#J$r$J%r&  SS	K'J(r(J)r)  SS
K*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5  SSK6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@  SSKAJBrB  SSKCJ%r%  SSKDJErEJFrFJGrG  SSKHJIrIJJrJJKrKJLrLJMrMJNrN  SSKOJPrPJQrQJRrRJSrSJTrTJUrU  \R¬                  " \W5      rX\," S5      rY\," S5      rZ\," S5      r[\," S5      r\\," S5      r]\," S5      r^\," S5      r_\," S5      r`\," S5      ra\," S5      rb\," S5      rc\," S5      rd\," S5      re1 SkrfS\\g\R                  4   S \\g\h4   4S! jriS"\\
\g4   S \\j\h\\g\R                  4   4   4S# jrk " S$ S%\\h\24   5      rl " S& S'\\j\4   5      rmS(\\)/\	4   S)\IS \	4S* jrn " S+ S,\\)   5      roS-\S \\j   4S. jrpS/\hS0\	S \j4S1 jrq " S2 S3\\\j\g\34   \$4   5      rr " S4 S5\\j\$4   5      rsg)6z)
Basic classes for PDF document parsing.
é    N)ÚExecutor)ÚAnyÚBinaryIOÚCallableÚDictÚ	ItemsViewÚIterableÚIteratorÚListÚMappingÚSequenceÚSetÚTupleÚUnionÚoverload)ÚNameTreeÚ
NumberTree)ÚPDFEncryptionErrorÚPDFSyntaxError)ÚCIDFontÚFontÚTrueTypeFontÚ	Type1FontÚ	Type3Font)ÚDestinationÚTree)ÚDeviceSpaceÚPage)Ú
NOTKEYWORDÚLITÚIndirectObjectÚIndirectObjectParserÚLexerÚObjectParserÚObjectStreamParserÚ	PDFObjectÚ	PSLiteralÚTokenÚliteral_name)
ÚContentStreamÚDecipherCallableÚInlineImageÚObjRefÚ
dict_valueÚ	int_valueÚ
list_valueÚresolve1Ú	str_valueÚstream_value)ÚSECURITY_HANDLERS)r   )Údecode_textÚformat_int_alphaÚformat_int_roman)ÚPageRefÚ_deref_documentÚ_deref_pageÚ_ref_documentÚ_set_documentÚ	in_worker)ÚXRefÚXRefFallbackÚ
XRefStreamÚ	XRefTableÚINDOBJRÚXREFRÚPDFÚTextr   ÚType1ÚMMType1ÚType0ÚType3ÚTrueTypeÚObjStmr>   ÚCatalogr   ÚPages>   ÚRotateÚCropBoxÚMediaBoxÚ	ResourcesÚbufferÚreturnc                 ón   • U R                  S5      nUS:X  a  [        R                  S5        gXUS-    U4$ )Ns   %PDF-éÿÿÿÿz.Could not find b'%PDF-' header, is this a PDF?)ó    r   é   )ÚfindÚlogÚwarning)rR   Ústarts     ÚK/home/mande/repo/quber/.venv/lib/python3.13/site-packages/playa/document.pyÚ_find_headerr]   m   s;   € Ø�K‰K˜Ó!€EØ�ƒ{Ü�‰ÐDÔEØØ˜% !™)Ð$ eÐ+Ð+rV   Úfpc                 ó\  • [        U [        5      (       a  U nO3 [        R                  " U R                  5       S[        R                  S9n[        U5      u  p#[        R                  SX25         USS  R                  S5      n[        R                   " S	U5      (       d  [        R                  S
U5        SnXCU4$ ! [
        R                   a)    [        R                  SU 5        U R                  5       n N¬[         a    e f = f! [         a    [        R                  SU5        Sn N¦f = f)Nr   )Úaccessz6mmap not supported on %r, reading document into memoryzFound header at %d: %ré   Úasciiz9Version number in header %r contains non-ASCII charactersz1.0z\d\.\dz&Version number in header %r is invalid)Ú
isinstanceÚbytesÚmmapÚfilenoÚACCESS_READÚioÚUnsupportedOperationrY   rZ   ÚreadÚ
ValueErrorr]   ÚdebugÚdecodeÚUnicodeDecodeErrorÚreÚmatch)r^   rR   ÚhdrÚoffsetÚversions        r\   Ú_open_inputrt   u   s  € Ü�"”e×ÑØ*,‰ð	Ü—Y’Y˜rŸy™y›{¨A´d×6FÑ6FÑGˆFô ˜vÓ&�K€CÜ‡I�IÐ&¨Ô4ðØ�a�b�'—.‘. Ó)ˆô �8Š8�I˜w×'Ñ'Ü�‰Ð<¸cÔBØˆØ˜FÐ"Ð"øô ×&Ñ&ó 	Ü�K‰KÐPÐRTÔUØ—W‘W“YŠFÜó 	Øð	ûô ó Ü�‰ÐOÐQTÔUØŠðús#   š2B< Á0D Â<:DÃ8DÄ"D+Ä*D+c                   óÖ  • \ rS rSr% Sr\\\4   \S'   \\\4   \S'   \	\
\R                  4   \S'   \\S'   Sr\	\\\
\
4   \4   S4   \S'   Sr\	\S4   \S	'   Sr\	\S4   \S
'   Sr\	S   \S'   Sr\	\S4   \S'   Sr\\S'   Sr\\S'   Sr\	\\\4   S4   \S'   Sr\	S   \S'   Sr\	S   \S'   Sr\	S   \S'   Sr\	\\\4   S4   \S'   Sr \	\!S4   \S'   Sr"\	\#\$   S4   \S'   Sr%Sr&SFS jr'SGS jr(SGS  jr)   SHS!\	\\
4   S"\S\S#\SS4
S$ jjr*S\\\+4   4S% jr,SIS"\SS4S& jjr-\.S\!4S' j5       r/\.S\#\$   4S( j5       r0S\#\$   4S) jr1S*\S+\#\$   SS4S, jr2\.S\\\+4   4S- j5       r3\.S\44S. j5       r5\.S\4S/ j5       r6S\4S0 jr7S\8\   4S1 jr9\.S\8\:   4S2 j5       r;\.S\8\<   4S3 j5       r=\.S\	\>S4   4S4 j5       r?S5\@S6\S7\S\4S8 jrAS5\@S\\#\   \4   4S9 jrBS:\S7\S\4S; jrCS7\S\4S< jrD SJS7\S=\	\\\4   S4   S\4S> jjrE\.S\\\4   4S? j5       rF\.S\	\GS4   4S@ j5       rH\.S\	\8\   S4   4SA j5       rI\.SKSB j5       rJ\.S\\\+4   4SC j5       rK\.SLSD j5       rLSErMg)MÚDocumenté�   a  Representation of a PDF document.

PDF documents, at a basic level, are collections of indirect
objects with numeric IDs.  Since these IDs are sparse, and do not
need to be ordered, this is best represented as a mapping of `int`
to `PDFObject`.  The specification also provides for "generation
numbers" which can be used to track successive revisions of the
same object.  In practice very few PDFs actually do this, so the
most recent generation of an object is accessible simply by its
object ID.  To find other objects, use the `objects` property.

Since PDF documents can be very large and complex, merely creating
a `Document` does very little aside from verifying that the
password is correct and getting a minimal amount of metadata.  In
general, PLAYA will try to open just about anything as a PDF, so
you should not expect the constructor to fail here if you give it
nonsense (something else may fail later on).

Some metadata, such as the structure tree and page tree, will be
loaded lazily and cached.  We do not handle modification of PDFs.

Args:
  fp: File-like object in binary mode, or a buffer with binary data.
      Files will be read using `mmap` if possible.  They do not need
      to be seekable, as if `mmap` fails the entire file will simply
      be read into memory (so a pipe or socket ought to work).
  password: Password for decryption, if needed.
  space: the device space to use for interpreting content ("screen"
      or "page")

Raises:
  TypeError: if `fp` is a file opened in text mode (don't do that!)
  PDFEncryptionError: if the PDF has an unsupported encryption scheme
  PDFPasswordIncorrect: if the password is incorrect

ÚtrailerÚinforR   ÚspaceNÚ
encryptionÚdecipherÚ_fp)ÚPageListNÚ_pagesÚ_poolé   Ú_ncpusé   Ú
_batchsizeÚ_catalog)ÚOutlinesNÚ_outline)ÚDestinationsNÚ_destinations)r   NÚ
_structureÚ_fontmapÚ_parserÚ_xrefsrU   rS   c                 ó   • U $ ©N© ©Úselfs    r\   Ú	__enter__ÚDocument.__enter__É   s   € ØˆrV   c                 ó$   • U R                  5         g r�   )Úclose)r’   Úexc_typeÚ	exc_valueÚ	tracebacks       r\   Ú__exit__ÚDocument.__exit__Ì   s   € Ø�
‰
�rV   c                 óÎ   • U R                   (       a!  U R                   R                  5         S U l         U R                  (       a"  U R                  R                  5         S U l        g g r�   )r}   r–   r€   Úshutdownr‘   s    r\   r–   ÚDocument.closeÏ   sA   € à�8�8Ø�H‰H�N‰NÔØˆDŒHà�:�:Ø�J‰J×ÑÔ!ØˆD�Jð rV   r^   ÚpasswordÚ_boss_idc                 óÈ  • [        U[        R                  5      (       a  [        S5      eU(       a  [	        X5        [        5       (       d   eX0l        0 U l        0 U l        0 U l	        0 U l
        0 U l        [        U5      u  U l        U l        U l        S=U l        =U l        U l        U R'                  5       U l        SU R(                  ;   a|  U R+                  5       U l         [/        U R(                  S   5      n[1        US   5      [1        US   5      4n[5        U R(                  S   5      nXg4U l        U R9                  U5        g g ! [2        [        4 a    Sn NGf = f)Nzfp is not a binary fileTÚEncryptÚIDr   r�   )rV   rV   )rc   rh   Ú
TextIOBaseÚ	TypeErrorr<   r=   rz   ry   Ú_cached_objsÚ_parsed_objsÚ_cached_fontsÚ_cached_inline_imagesrt   Ú_pdf_versionÚ_offsetrR   Úis_printableÚis_modifiableÚis_extractableÚ_read_trailerrx   Ú_read_xrefsr�   r0   rd   ÚKeyErrorr.   r{   Ú_initialize_password)r’   r^   rŸ   rz   r    ÚidsÚid_valueÚencrypts           r\   Ú__init__ÚDocument.__init__Ù   sN  € ô �bœ"Ÿ-™-×(Ñ(ÜÐ5Ó6Ð6æô ˜$Ô)Ü—;‘;Ð�;ð Œ
ØˆŒ	Ø24ˆÔØDFˆÔØ.0ˆÔð ð 	Ô"ô 8CÀ2³Ñ4ˆÔ˜4œ<¨¬àGKÐKˆÔÐK˜DÔ.°Ô1Dà×)Ñ)Ó+ˆŒð ˜Ÿ™Ó$Ø×*Ñ*Ó,ˆDŒKð&Ü  §¡¨dÑ!3Ó4�Ü! # a¡&›M¬5°°Q±«=Ð9�ô ! §¡¨iÑ!8Ó9ˆGØ'Ð1ˆDŒOØ×%Ñ% hÕ/ð %øô
 œiÐ(ó &ð &’ð	&ús   Ã%4E ÅE!Å E!c                 óP  • [        U R                  5      nSn[        [        U R                  5      S-
  SS5       GHÚ  nUS:X  d  U R                  U   [        ;   d  M#  U R                  US-   U nUS:X  Ga   [	        [        U R                  US95      u  pV[        U5      U l        U =R                  U R                  -  sl        [        R                  " U R                  U R                  5      =n(       a  UR                  S5      U l          GO	[        R                  " U R                  U R                  5      =n(       aR  U R                  R                  SU R                  5      U l        U R                  S:w  a  U =R                  S-  sl          O…US:X  a  Xl        US	:X  a  U R                  S:X  a  Xl        SnUS
:X  a  US-   U l          OIUS:w  a<  [!        S5      US   s=::  a  [!        S5      ::  a  O  OUS-  nUS:X  a  US-   U l          OUnGMÝ     [	        [        U R                  U R                  U S95      u  U l        n[#        U[$        5      (       d  ['        SU< 35      eUS:X  a   UR)                  S5      [*        :w  a  SU l        U$ ! [         a     GMi  f = f)NrU   r�   éþÿÿÿs	   startxref)Úposr   s   traileré   s   objs   xrefÚ0Ú9é   )rº   ÚdoczTrailer is not a dict: ÚType)ÚlenrR   Úranger   Únextr$   ÚStopIterationr/   Ú_startxref_posr«   rB   rp   ÚendÚ_trailer_posrC   rX   Úordrc   Údictr   ÚgetÚLITERAL_XREF)	r’   rÆ   Úindobjrº   ÚtokenÚ_ÚvalÚmrx   s	            r\   r¯   ÚDocument._read_trailer  sZ  € ô" �$—+‘+ÓˆØˆÜœ˜TŸ[™[Ó)¨AÑ-¨r°2×6ˆCØ�b‹y˜DŸK™K¨Ñ,´
Õ:ØŸ™ C¨!¡G¨cÐ2�Ø˜LÔ(ð!Ü!%¤l°4·;±;ÀCÑ&HÓ!I™˜ô +4°C«.�DÔ'Ø×'Ò'¨4¯<©<Ñ7Õ'ô $ŸMšM¨$¯+©+°t×7JÑ7JÓKÐK�qÕKØ,-¯E©E°!«H˜Ô)Úô "ŸKšK¨¯©°T×5HÑ5HÓIÐI�qÕIØ,0¯K©K×,<Ñ,<Ø&¨×(;Ñ(;ó-˜Ô)ð  ×,Ñ,°Ó2Ø ×-Ò-°Ñ2Õ-Ù!Ø˜JÓ&à(+Ô%Ø˜F“?ð ×(Ñ(¨BÓ.Ø,/Ô)Ø�FØ˜GÓ#à*-°©'�DÔ'ÙØ˜R“<¤C¨£H°°a±Õ$D¼CÀ»HÖ$Dà˜a‘K�FØ “{Ø.1°A©g˜Ô+ÙØ“ñ[ 7ô\ &*Ü˜Ÿ™¨$×*;Ñ*;ÀÑFó&
Ñ"ˆÔ˜7ô ˜'¤4×(Ñ(Ü Ð#:¸7¹+Ð!FÓGÐGØ�Q‹;˜7Ÿ;™; vÓ.´,Ó>ð #%ˆDÔØˆøôc )ó !Û ð!ús   Á8JÊ
J%Ê$J%c                 ó.  • U R                   c   eU R                   u  p#[        UR                  S5      5      S:w  a  [        SU-  5      e[	        UR                  SS5      5      nUS:X  a  [        S5      e[
        R                  " U5      nUc  [        S	U-  5      eU" X#U5      nUR                  U l        UR                  U l        UR                  U l	        UR                  U l
        S
U R                  l        U R                  U R                  l        g)z®Initialize the decryption handler with a given password, if any.

Internal function, requires the Encrypt dictionary to have
been read from the trailer into self.encryption.
NÚFilterÚStandardzUnknown filter: param=%rÚVr   é   z%Unpublished algorithm 3 not supportedzUnknown algorithm: param=%rT)r{   r)   rÊ   r   r/   r4   Údecryptr|   r¬   r­   r®   ÚparserÚstrict)r’   rŸ   ÚdocidÚparamÚvÚfactoryÚhandlers          r\   r²   ÚDocument._initialize_passwordT  só   € ð �‰Ñ*Ð*Ð*ØŸ™‰ˆÜ˜Ÿ	™	 (Ó+Ó,°
Ó:Ü$Ð%?À%Ñ%GÓHÐHÜ�e—i‘i  QÓ'Ó(ˆð �‹6Ü$Ð%LÓMÐMÜ#×'Ò'¨Ó*ˆà‰?Ü$Ð%BÀUÑ%JÓKÐKÙ˜%¨Ó1ˆØŸ™ˆŒØ#×0Ñ0ˆÔØ$×2Ñ2ˆÔØ%×4Ñ4ˆÔà!ˆ�‰ÔØ#Ÿ}™}ˆ�‰ÕrV   c                 óÈ   • U R                   b  U R                   $ [        U R                  U S9U l         U R                   R                  U R                  5        U R                   $ )N)r¿   )rŒ   r"   rR   Úseekr«   r‘   s    r\   rØ   ÚDocument.parserq  sH   € à�<‰<Ñ#Ø—<‘<ÐÜ+¨D¯K©K¸TÑBˆŒØ�‰×Ñ˜$Ÿ,™,Ô'Ø�|‰|ÐrV   c                 óö   • U R                   b  U R                   $ U R                  5       U l         [        S U R                    5       5      nXR                  S'   [        R                  SU5        U R                   $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr�   ©rÁ   ©Ú.0Úxs     r\   Ú	<genexpr>Ú!Document.xrefs.<locals>.<genexpr>~  s   é € Ð/¢;˜a”3�q—6�6¢;ùó   ‚ÚSizeúUpdated /Size in trailer to %d)r�   r°   Úsumrx   rY   rl   ©r’   Úsizes     r\   ÚxrefsÚDocument.xrefsy  s_   € à�;‰;Ñ"Ø—;‘;ÐØ×&Ñ&Ó(ˆŒÜÑ/ 4§;¢;Ó/Ó/ˆØ#�‰�VÑÜ�	‰	Ð2°DÔ9Ø�{‰{ÐrV   c                 óV  • U R                   S:X  a!  [        R                  S5        [        U 5      /$ [	        5       U l        / n U R                  U R                   U5        U$ ! [        [        [        [        4 a,  n[        R                  SU5        [        U 5      /s S nA$ S nAff = f)NrU   z6startxref was not found, falling back to object parserz6xref parsing failed, falling back to object parser: %s)rÅ   rY   rZ   r?   ÚsetÚ_xrefposÚ_read_xrefs_intork   Ú
IndexErrorrÄ   r   )r’   rñ   Úes      r\   r°   ÚDocument._read_xrefsƒ  s�   € Ø×Ñ "Ó$Ü�K‰KÐPÔQÜ  Ó&Ð'Ð'Ü"%£%ˆŒØˆð	(Ø×!Ñ! $×"5Ñ"5°uÔ=ØˆLøÜœJ¬´~ÐFó 	(Ü�K‰KÐPÐRSÔTÜ  Ó&Ð'Õ'ûð	(ús   ÁA" Á"B(Á<!B#ÂB(Â#B(r[   rñ   c                 ó6  • XR                   ;   a  [        R                  SU5        g[        R                  " U R
                  U5      (       a+  [        R                  SU5        [        XU R                  S9nO…[        R                  " U R
                  U5      =n(       aI  [        R                  SUR                  S5      5        [        XR                  S5      U R                  S9nO[        XU R                  S9nU R                   R                  U5        UR                  U5        UR                  nSU;   a,  [        US   5      nU R!                  X`R                  -   U5        SU;   a-  [        US   5      nU R!                  X`R                  -   U5        gg)	z$Reads XRefs from the given location.z"Detected circular xref chain at %dNzReading xref stream at %d)rº   rr   zReading xref table at %dr�   ÚXRefStmÚPrev)rõ   rY   rZ   rB   rp   rR   rl   r@   r«   rC   r[   rA   ÚaddÚappendrx   r/   rö   )r’   r[   rñ   ÚxrefrÐ   rx   rº   s          r\   rö   ÚDocument._read_xrefs_into�  s8  € ð —M‘MÓ!Ü�K‰KÐ<¸eÔDØä�=Š=˜Ÿ™ e×,Ñ,Ü�I‰IÐ1°5Ô9ä# D¸D¿L¹LÑI‰DÜ—+’+˜dŸk™k¨5Ó1Ð1ˆQÕ1Ü�I‰IÐ0°!·'±'¸!³*Ô=Ü˜T§w¡w¨q£z¸$¿,¹,ÑG‰Dô ˜T°T·\±\ÑBˆDØ�‰×Ñ˜%Ô Ø�‰�TÔØ—,‘,ˆð ˜ÓÜ˜G IÑ.Ó/ˆCØ×!Ñ! #¯©Ñ"4°eÔ<à�WÓä˜G F™OÓ,ˆCØ×!Ñ! #¯©Ñ"4°eÕ<ð rV   c                 ó¾  • U R                   b  U R                   $ 0 U l         SU R                  ;   a   [        U R                  S   5      U l         O[        R                  S5        SU R                   ;   a9  U R                   S   [        La#  [        R                  SU R                   < 35        U R                   $ ! [         a    [        R                  S5         Nvf = f)NÚRootz2Root is a broken reference (incorrect xref table?)z(No /Root object! - Is this really a PDF?rÀ   z&Catalog doesn't seem to be a catalog: )r…   rx   r.   r¥   rY   rZ   ÚLITERAL_CATALOGr‘   s    r\   ÚcatalogÚDocument.catalog³  s²   € à�=‰=Ñ$Ø—=‘=Ð ØˆŒØ�T—\‘\Ó!ðRÜ *¨4¯<©<¸Ñ+?Ó @�•ô �K‰KÐBÔCØ�T—]‘]Ó" t§}¡}°VÑ'<ÄOÒ'SÜ�K‰KÐ@ÀÇÁÑ@QÐRÔSØ�}‰}Ðøô ó RÜ—‘ÐPÖQðRús   ²B: Â:CÃCc                 ó    • [        U R                  R                  S5      5      n[        U[        5      (       a  UR                  S5      (       $ g)NÚMarkInfoÚMarkedF)r1   r  rÊ   rc   rÉ   )r’   Úmarkinfos     r\   Ú	is_taggedÚDocument.is_taggedÄ  s=   € ä˜DŸL™L×,Ñ,¨ZÓ8Ó9ˆÜ�h¤×%Ñ%Ø#Ÿ<™<¨Ó1Ó1Ð1ØrV   c                 óÆ   • SU R                   ;   aF  [        R                  SU R                   S   U R                  5        [	        U R                   S   5      $ U R                  $ )NÚVersionz;Using PDF version %r from catalog instead of %r from header)r  rY   rl   rª   r)   r‘   s    r\   Úpdf_versionÚDocument.pdf_versionË  sT   € à˜Ÿ™Ó$Ü�I‰IØMØ—‘˜YÑ'Ø×!Ñ!ôô
   §¡¨YÑ 7Ó8Ð8Ø× Ñ Ð rV   c                 óì   • U R                   R                  SS5      n[        U[        5      (       a  U$ [	        S U R
                   5       5      nXR                   S'   [        R                  SU5        U$ )a†  Return the number of indirect objects in this PDF.

Danger: This number is unreliable and ephemeral.
    In a conforming PDF, the number of objects is declared by
    the `/Size` key in the document trailer, but conforming
    PDFs do not exist in the real world.  Upon opening a PDF,
    the trailer value will be returned here, but once the
    cross-reference tables have been loaded, a *different*
    number will be returned, and in the case where the
    cross-reference tables are invalid and must be
    regenerated, this value will be updated yet again.  This
    is the price of laziness (not to be confused with the
    wages of sin).
rì   Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr�   rå   ræ   s     r\   ré   Ú#Document.__len__.<locals>.<genexpr>è  s   é € Ð.¢:˜a”3�q—6�6¢:ùrë   rí   )rx   rÊ   rc   Úintrî   rñ   rY   rl   rï   s     r\   Ú__len__ÚDocument.__len__Ö  s`   € ð �|‰|×Ñ ¨Ó-ˆÜ�dœC× Ñ ØˆKÜÑ. 4§:¢:Ó.Ó.ˆØ#�‰�VÑÜ�	‰	Ð2°DÔ9ØˆrV   c                 óT   • [         R                  R                  U R                  5      $ )zIterate over object IDs)Ú	itertoolsÚchainÚfrom_iterablerñ   r‘   s    r\   Ú__iter__ÚDocument.__iter__í  s   € ä�‰×,Ñ,¨T¯Z©ZÓ8Ð8rV   c              #   ó`  #   • [        U R                  X R                  U R                  R                  S9 Hs  u  pUv •  [        UR                  [        5      (       d  M*  UR                  R                  S5      [        L d  MN  [        UR                  U 5      nU H	  u  pUv •  M     Mu     g7f)zLIterate over all indirect objects (including, then expanding object
streams))rº   rÙ   rÀ   N)r"   rR   r«   rØ   rÙ   rc   Úobjr*   rÊ   ÚLITERAL_OBJSTMr%   )r’   rÎ   r  rØ   Úsobjs        r\   ÚobjectsÚDocument.objectsñ  s   é € ô +Ø�K‰K˜§<¡<¸¿¹×8JÑ8Jô
‰FˆAð ŠIä˜3Ÿ7™7¤M×2Ó2Ø—G‘G—K‘K Ó'¬>Ô9ä+¨C¯G©G°TÓ:�Û%‘G�AØ”Jó  &ò
ùs   ‚AB.Á  B.Â*B.c                 ó:   • S [        U R                  5       5       $ )zIterate over tokens.c              3   ó*   #   • U  H	  u  pUv •  M     g 7fr�   r�   )rç   rº   Útoks      r\   ré   Ú"Document.tokens.<locals>.<genexpr>  s   é € Ð7Ò$6™˜•Ò$6ùs   ‚)r#   rR   r‘   s    r\   ÚtokensÚDocument.tokens  s   € ñ 8¤E¨$¯+©+Ô$6Ó7Ð7rV   c                 ó¾   • U R                   b  U R                   $  [        U 5      U l         U R                   $ ! [        [        4 a    SU l          U R                   $ f = f)aà  Logical structure of this document, if any.

In the case where no logical structure tree exists, this will
be `None`.  Otherwise you may iterate over it, search it, etc.

We do this instead of simply returning an empty structure tree
because the vast majority of PDFs have no logical structure.
Also, because the structure is a lazy object (the type
signature here may change to `Iterable[Element]` at some
point) there is no way to know if it's empty without iterating
over it.

N)rŠ   r   r¥   r±   r‘   s    r\   Ú	structureÚDocument.structure  s[   € ð �?‰?Ñ&Ø—?‘?Ð"ð	#Ü" 4›jˆDŒOð �‰Ðøô œ8Ð$ó 	#Ø"ˆD�OØ�‰Ðð	#ús   ›7 ·AÁAÚstreamÚindexÚobjidc           	      ód  • UR                   U R                  ;   a  U R                  UR                      u  pEO<U R                  U5      u  pEUR                   c   eXE4U R                  UR                   '   US-  U-   n XF   nU$ ! [         a#  n[	        SUS-  U[        U5      4-  5      UeS nAff = f)Nr¾   z.index %d + %d too big for stream of %d objects)r-  r§   Ú_get_objectsr÷   r   rÁ   )	r’   r+  r,  r-  ÚobjsÚnÚir  rø   s	            r\   Ú_getobj_objstmÚDocument._getobj_objstm  sÄ   € ð �<‰<˜4×,Ñ,Ó,Ø×)Ñ)¨&¯,©,Ñ7‰IˆT�1à×)Ñ)¨&Ó1‰IˆTØ—<‘<Ñ+Ð+Ð+Ø/3¨iˆD×Ñ˜fŸl™lÑ+Ø�‰E�E‰Mˆð	Ø‘'ˆCð ˆ
øô ó 	Ü Ø@Ø�q‘5˜%¤ T£Ð+ñ,óð ðûð	ús   Á<B Â
B/ÂB*Â*B/c                 óˆ  • UR                  S5      [        La  [        R                  SU-  5         [	        US   5      n[        UR                  U 5      nU VVs/ s H  u  pEUPM	     nnnXb4$ ! [
         a    [        R                  SU-  5        Sn NU[         a    [        R                  SU-  5        Sn Nzf = fs  snnf )NrÀ   z&Content stream Type is not /ObjStm: %rÚNz&N is not defined in content stream: %rr   z"N is invalid in content stream: %r)	rÊ   r  rY   rZ   r/   r±   r¥   r$   rR   )r’   r+  r1  rØ   rÎ   r  r0  s          r\   r/  ÚDocument._get_objects0  s³   € Ø�:‰:�fÓ¤^Ò3Ü�K‰KÐ@À6ÑIÔJð	Ü˜& ™+Ó&ˆAô ˜fŸm™m¨TÓ2ˆÙ39Ô :²6©¨£±6ˆÑ :ØˆyÐøô ó 	Ü�K‰KÐ@À6ÑIÔJØŠAÜó 	Ü�K‰KÐ<¸vÑEÔFØŠAð	üó !;s   ²A/ ÁB>Á/$B;Â#B;Â:B;rº   c           	      ó  • U R                   R                  U5         [        R                  " U R                  U5      nUc!  [        SU SU R                  XS-    < 35      e[        U R                   5      u  pEUR                  U:w  a  [        SUR                  < SU< 35      e UR                  U:w  a  [        SUR                  < SU< 35      eUR                  $ ! [        [        [
        4 a  n[        SUU4-  5      UeS nAff = f)Nz#Not an indirect object at position z: rW   zobjid mismatch: Ú=z+Indirect object %d not found at position %d)rØ   rá   rB   rp   rR   r   rÃ   r-  rk   r÷   r  )r’   rº   r-  rÐ   rÎ   r  rø   s          r\   Ú_getobj_parseÚDocument._getobj_parse?  s  € Ø�‰×Ñ˜Ôð	Ü—’˜dŸk™k¨3Ó/ˆAØ‰yÜ$Ø9¸#¸¸bØ—{‘{ 3¨q©Ð1Ñ4ð6óð ô ˜$Ÿ+™+Ó&‰FˆAØ�y‰y˜EÓ!Ü$Ð'7¸¿	¹	±}ÀAÀeÁYÐ%OÓPÐPð "ð �9‰9˜ÓÜ Ð#3°C·I±I±=ÀÀ%ÁÐ!KÓLÐLØ�w‰wˆøô œJ¬Ð7ó 	Ü Ø=àØðñóð ðûð	ús   �B	C  Ã DÃ5DÄDc           	      óN  • US:X  a  [        S5      eXR                  ;   a.  U R                  U   c  [        SU S35      eU R                  U   $ SnU R                   HA  n X1   u  pEn Ub   [        X   5      nU R	                  XuU5      nO U R                  XQ5      n  O   X R                  U'   Uc  [        SU S35      eU R                  U   $ ! [          a     M�  f = f! [         aæ  n[        R                  SUUU5        [        R                  S5        [        U 5      n	[        U	5      U R                  S'   [        R                  S	U R                  S   5        U	/U l         U R                  S   U   u  pEnU R                  XQ5      n SnANõ! [         [        4 a'  n[        R                  S
UUU5         SnA SnAGN'SnAff = fSnAff = f! [         a    [        R                  SU5         GMœ  [         a"  n[        R                  SX5         SnAGMÂ  SnAff = f)aº  Get an indirect object from the PDF.

Note that the behaviour in the case of a non-existent object
(raising `KeyError`), while Pythonic, is not PDFic, as PDF
1.7 sec 7.3.10 states:

> An indirect reference to an undefined object shall not be
considered an error by a conforming reader; it shall be
treated as a reference to the null object.

Raises:
  ValueError: if Document cannot be initialized
  KeyError: if objid does not exist in PDF

r   zPDF object id cannot be 0.NzObject with ID z
 not foundz/Indirect object %d not found at position %d: %rz(Rebuilding xref table from object parserrì   rí   z5Indirect object %d STILL not found at position %d: %rz EOF when searching for object %dz-Syntax error when searching for object %d: %s)r±   r¦   rñ   r3   r3  r:  r   rY   rZ   r?   rÁ   rx   rl   r�   rÄ   )
r’   r-  r  rÿ   Ústrmidr,  Úgennor+  rø   Úfallbacks
             r\   Ú__getitem__ÚDocument.__getitem__W  s$  € ð  �A‹:ÜÐ7Ó8Ð8à×%Ñ%Ó%Ø× Ñ  Ñ'Ñ/Ü °°°zÐBÓCÐCØ×$Ñ$ UÑ+Ð+Øˆà—J”JˆDðØ)-©Ñ&� ð(ØÑ%Ü)¨$©,Ó7�FØ×-Ñ-¨f¸UÓC‘CðØ"×0Ñ0°Ó>˜ñ6 ñM ð` $'×Ñ˜%Ñ Ø‰;Ü˜_¨U¨G°:Ð>Ó?Ð?Ø× Ñ  Ñ'Ð'øôa ó Úðûô *ó ÜŸ™ØMØ!Ø!Øô	ô Ÿ™Ð$NÔOÜ#/°Ó#5˜Ü/2°8«}˜Ÿ™ VÑ,ÜŸ	™	Ø<¸d¿l¹lÈ6Ñ>Rôð (0 j˜œð	Ø59·[±[À±^ÀEÑ5JÑ2˜V¨EØ"&×"4Ñ"4°UÓ"B�CøÜ (¬.Ð9ó ÜŸK™KØ WØ %Ø %Ø !÷	ö ûðþð'ûô8 !ó Ü—	‘	Ð<¸eÔDÛÜ!ó Ü—	‘	ÐIÈ5ÔTÞûðús   Á!CÁ)#GÂC"Ã
CÃCÃ"
GÃ,A;GÅ(&FÆGÆG
Æ#GÆ;GÆ?GÇG
Ç
GÇGÇGÇ H$Ç9	H$ÈHÈH$Úspecc                 ó–  • U(       a  XR                   ;   a  U R                   U   $ Uc  [        0 0 5      $ S nUR                  S5      [        La  [        R                  SU5        UR                  S5      nU[        [        4;   a  [        U5      nGOU[        L a  [        U5      nOýU[        :X  a  [        U5      nOçU[        :X  aÅ  SU;  a  [        R                  SU5        OÀ[        US   5      n[        U5      S:w  a  [        R!                  SU5        [#        US   5      n[%        U[&        5      (       d  [        R                  S	U5        OSUR)                  5       nS
 H  nXr;   d  M
  [#        X'   5      Xg'   M     [+        U5      nO[        R                  SU-  5        Uc  [        0 0 5      nU(       a  X0R                   U'   U$ )NrÀ   zFont Type is not /Font: %rÚSubtypeÚDescendantFontsz%Type0 font has no DescendantFonts: %rr�   z2Type 0 font should have 1 descendant, has more: %rr   zInvalid descendant font: %r)ÚEncodingÚ	ToUnicodezUnknown Subtype in font: %r)r¨   r   rÊ   ÚLITERAL_FONTrY   rZ   ÚLITERAL_TYPE1ÚLITERAL_MMTYPE1r   ÚLITERAL_TRUETYPEr   ÚLITERAL_TYPE3r   ÚLITERAL_TYPE0r0   rÁ   rl   r1   rc   rÉ   Úcopyr   )r’   r-  rB  ÚfontÚsubtypeÚdfontsÚsubspecÚks           r\   Úget_fontÚDocument.get_font¥  s‡  € ö �U×0Ñ0Ó0Ø×%Ñ% eÑ,Ð,Ø‰<Ü˜˜B“<Ðà"&ˆØ�8‰8�FÓ¤<Ò/Ü�K‰KÐ4°dÔ;Ø—(‘(˜9Ó%ˆØ”}¤oÐ6Ó6Ü˜T“?ŠDØÔ(Ò(Ü Ó%‰DØœÓ%Ü˜T“?‰DØœÓ%Ø ¨Ó,Ü—‘ÐCÀTÕJä# DÐ):Ñ$;Ó<�Ü�v“; !Ó#Ü—I‘IØLÈfôô # 6¨!¡9Ó-�Ü! '¬4×0Ñ0Ü—K‘KÐ =¸wÕGà%Ÿl™l›n�Gã6˜Ø�9Ü)1°$±'Ó):˜G›Jñ 7ô # 7Ó+‘Dä�K‰KÐ5¸Ñ<Ô=Ø‰<ô ˜˜B“<ˆDÞØ(,×Ñ˜uÑ%ØˆrV   c                 ól   • U R                   b  U R                   $ [        U 5      U l         U R                   $ )aí  Get the mapping of font names to fonts for this document.

Note that this can be quite slow the first time it's accessed
as it must scan every single page in the document.

Note: Font names may collide.
    Font names are generally understood to be globally unique
    <del>in the neighbourhood</del> in the document, but there's no
    guarantee that this is the case.  In keeping with the
    "incremental update" philosophy dear to PDF, you get the
    last font defined with a given name.
)r‹   ÚFontMappingr‘   s    r\   ÚfontsÚDocument.fontsÔ  s.   € ð �=‰=Ñ$Ø—=‘=Ð Ü,7¸Ó,=ˆŒØ�}‰}ÐrV   c                 óö   • SU R                   ;  a  gU R                  b  U R                  $  [        U 5      U l        U R                  $ ! [         a&    [        R                  SU R                   S   5         gf = f)zDocument outline, if any.r†   Nz%Invalid Outlines entry in catalog: %r)r  r‡   r†   r¥   rY   rZ   r‘   s    r\   ÚoutlineÚDocument.outlineç  ss   € ð ˜TŸ\™\Ó)ØØ�=‰=Ñ$Ø—=‘=Ð ð	Ü$ T›NˆDŒMð �}‰}Ðøô ó 	Ü�K‰KØ7¸¿¹ÀjÑ9Qôñ ð		ús   ¬A Á-A8Á7A8c                 óˆ   • U R                   c  gU R                   R                  S5      nUc  g[        U5      n[        U5      $ )aP  Iterate over page label strings for the PDF document.

If the document includes page labels, this generates strings,
one per page, otherwise it is None.

Warning: Unbounded iterator
    This iterator is unbounded, because the page label tree
    has no relation to the actual page tree, so it is
    recommended to use `pages` instead.
NÚ
PageLabels)r  rÊ   r   Ú_iter_labels)r’   Úlabel_tree_objÚ
label_trees      r\   Úpage_labelsÚDocument.page_labels÷  sC   € ð �<‰<ÑØØŸ™×)Ñ)¨,Ó7ˆØÑ!ØÜ Ó/ˆ
Ü˜JÓ'Ð'rV   c                 óT   • U R                   c  [        U 5      U l         U R                   $ )zCPages of the document as an iterable/addressable `PageList` object.)r   r~   r‘   s    r\   ÚpagesÚDocument.pages  s#   € ð �;‰;ÑÜ" 4›.ˆDŒKØ�{‰{ÐrV   c                 ó2   • [        U R                  S   5      $ )zNPDF name dictionary (PDF 1.7 sec 7.7.4).

Raises:
  KeyError: if nonexistent.
ÚNames)r.   r  r‘   s    r\   ÚnamesÚDocument.names  s   € ô ˜$Ÿ,™, wÑ/Ó0Ð0rV   c                 óT   • U R                   c  [        U 5      U l         U R                   $ )zDNamed destinations as an iterable/addressable `Destinations` object.)r‰   rˆ   r‘   s    r\   ÚdestinationsÚDocument.destinations  s)   € ð ×ÑÑ%Ü!-¨dÓ!3ˆDÔØ×!Ñ!Ð!rV   )r¨   r©   r¦   r…   r‰   r‹   r}   r«   r‡   r   r§   rŒ   rª   r€   rÅ   rŠ   rÇ   rõ   r�   rR   r|   r{   ry   r®   r­   r¬   rz   rx   ©rS   rv   ©rS   N)Ú Úscreenr   )rp  )r   N)rS   r~   )rS   rˆ   )NÚ__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ústrr&   Ú__annotations__r   rd   re   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   r¯   r²   ÚpropertyrØ   rñ   r°   rö   r  Úboolr
  r  r  r
   r  r!   r   r(   r&  r   r)  r*   r3  r/  r:  r@  rT  rX  r†   r[  rb  re  ri  rl  Ú__static_attributes__r�   rV   r\   rv   rv   �   sž  ‡ ñ#ðJ �#�y�.Ñ!Ó!Ø
ˆs�Iˆ~Ñ
ÓØ�%˜Ÿ™Ð"Ñ#Ó#ØÓØ@D€J��e˜E %¨ ,Ñ/°Ð5Ñ6¸Ð<Ñ=ÓDØ.2€HˆeÐ$ dÐ*Ñ+Ó2à!%€Cˆˆx˜ˆ~Ñ	Ó%Ø&*€FˆEÐ"Ñ#Ó*Ø#'€Eˆ5�˜4�Ñ Ó'Ø€FˆCƒOØ€J�ÓØ26€Hˆe�D˜˜i˜Ñ(¨$Ð.Ñ/Ó6Ø(,€HˆeÐ$Ñ%Ó,Ø15€M�5Ð-Ñ.Ó5Ø&*€J��lÑ#Ó*Ø04€Hˆe�G˜C ˜IÑ&¨Ð,Ñ-Ó4Ø15€GˆUÐ'¨Ð-Ñ.Ó5Ø&*€FˆE�$�t‘*˜dÐ"Ñ#Ó*Ø€LØ€Nôôôð Ø%Øñ-0à�(˜E�/Ñ"ð-0ð ð-0ð ð	-0ð
 ð-0ð 
õ-0ð^J˜t C¨ H™~ô JñX-¨Sð -¸$õ -ð: ðÐ,ó ó ðð ð�t˜D‘zó ó ðð(˜T $™Zô (ð!=àð!=ð �D‰zð!=ð 
ô	!=ðF ð˜˜c 3˜h™ó ó ðð  ð˜4ó ó ðð ð!˜Só !ó ð!ð˜ô ð.9˜( 3™-ô 9ð ð˜ .Ñ1ó ó ðð ð8˜ ™ó 8ó ð8ð ð˜5  t Ñ,ó ó ðð,Ø#ðØ,/ðØ8;ðà	ôð& =ð °U¸4À	¹?ÈCÐ;OÑ5Pô ð ð ¨Sð °Yô ð0L( ð L(¨ô L(ð^ IMñ-Øð-Ø$)¨$¨s°I¨~Ñ*>ÀÐ*DÑ$Eð-à	õ-ð^ ð�w˜s D˜yÑ)ó ó ðð$ ð˜˜x¨˜~Ñ.ó ó ðð ð(˜U 8¨C¡=°$Ð#6Ñ7ó (ó ð(ð& óó ðð ð1�t˜C ˜H‘~ó 1ó ð1ð ó"ó ó"rV   rv   c                   ó|   • \ rS rSrSrS\SS4S jrS\4S jrS\	\
   4S jrS\	\\
\4      4S	 jrS
\
S\4S jrSrg)rW  i#  z2Lazy mapping of font names to fonts in a Document.r¿   rS   Nc                 ó   • Xl         0 U l        g r�   ©Ú_docr‹   ©r’   r¿   s     r\   r¶   ÚFontMapping.__init__&  s   € ØŒ	Ø68ˆ�rV   c                 ó&   • [        S U  5       5      $ )Nc              3   ó&   #   • U  H  nS v •  M	     g7f©r�   Nr�   ©rç   rÎ   s     r\   ré   Ú&FontMapping.__len__.<locals>.<genexpr>+  s   é € Ð#šd˜•1šdùó   ‚)rî   r‘   s    r\   r  ÚFontMapping.__len__*  s   € ÜÑ#™dÓ#Ó#Ð#rV   c              #   óF   #   • U R                  5        H	  u  pUv •  M     g 7fr�   )Ú
_iteritems)r’   ÚnamerÎ   s      r\   r  ÚFontMapping.__iter__-  s   é € Ø—‘Ö(‰GˆDØŒJò )ùs   ‚!c              #   ó  #   • [        5       n[        U R                  R                  5       HÖ  n[	        UR
                  R                  5       5      n/ n[        U5       H}  nUR                  U R                  ;  a  XPR                  UR                  '   UR                  U;  d  MG  UR                  UR                  5        UR                  UR                  5        M     U H  nU R                  U   nUc   eXg4v •  M     MØ     g 7fr�   )rô   Úreversedr  re  ÚlistrX  ÚvaluesÚfontnamer‹   rþ   rý   )r’   Úunique_fontnamesÚpageÚ
page_fontsÚ	fontnamesrO  r‹  Úfont_and_not_nones           r\   rŠ  ÚFontMapping._iteritems1  sÐ   é € Ü%(£UÐÜ˜TŸY™YŸ_™_Ö-ˆDä%)¨$¯*©*×*;Ñ*;Ó*=Ó%>ˆJØ#%ˆIÜ  Ö,�Ø—=‘=¨¯©Ó5Ø37—M‘M $§-¡-Ñ0Ø—=‘=Ð(8Õ8Ø×$Ñ$ T§]¡]Ô3Ø$×(Ñ(¨¯©Ö7ñ -ó "�à$(§M¡M°$Ñ$7Ð!Ø(Ñ4Ð4Ð4ØÐ-Ô-ó	 "ò .ùs   ‚B DÂ&A!Dr‘  c                 óÈ   • XR                   ;  a1  U R                  5        H  u  p#X!:X  d  M  Us  $    S U R                   U'   U R                   U   nUc  [        SU S35      eU$ )NzFont z not found in document!)r‹   rŠ  r±   )r’   r‘  r‹  rO  Úfont_or_nones        r\   r@  ÚFontMapping.__getitem__D  si   € ØŸ=™=Ó(à"Ÿo™oÖ/‘
�ØÕ#Ø’Kñ 0ð '+ˆD�M‰M˜(Ñ#Ø—}‘} XÑ.ˆØÑÜ˜U 8 *Ð,CÐDÓEÐEØÐrV   r~  )rr  rs  rt  ru  rv  rv   r¶   r  r  r
   rw  r  r   r   rŠ  r@  r{  r�   rV   r\   rW  rW  #  sa   † Ù<ð9˜Hð 9¨ô 9ð$˜ô $ð˜( 3™-ô ð.˜H U¨3°¨9Ñ%5Ñ6ô .ð& Cð ¨D÷ rV   rW  ÚfuncÚpagerefc                 ó$   • U " [        U5      5      $ )z.Call a function on a page in a worker process.)r:   )r›  rœ  s     r\   Ú	call_pagerž  R  s   € á”˜GÓ$Ó%Ð%rV   c            
       ó–  • \ rS rSr% Sr\\S'   Sr\\	\
   S4   \S'   Sr\\\\
4   S4   \S'   Sr\\\\
4   S4   \S'     SS\\S4   S	\\\
   S4   S
S4S jjrS S jrS
\\	\
   \\\
4   \\\
4   4   4S jr\S
\\   4S j5       r\S
\\\\\\4   4      4S j5       r\S!S j5       rS
\4S jrS
\\
   4S jr\S\S
\
4S j5       r\S\S
\
4S j5       r\S\ S
S 4S j5       r\S\\   S
S 4S j5       r\S\\\\4      S
S 4S j5       rS\\\\ \\   \\\\4      4   S
\\
S 4   4S jrS\S
\
4S jr!S\"\
/\#4   S
\4S jr$Sr%g)"r~   iW  zÆList of pages indexable by 0-based index or string label.

Note that iteration over this object is lazy, but indexing is not.

Attributes:
    have_labels: If pages have explicit labels in the PDF.
Úhave_labelsNr   Ú	_by_labelÚ	_by_objidr¿   re  rS   c                 ó2  • Ub#  [        U5      U l        UR                  S LU l        Ubd  [	        U5      U l        U Vs0 s H  o3R                  c  M  UR                  U_M      snU l        U Vs0 s H  o3R                  U_M     snU l	        g g s  snf s  snf r�   )
r;   Údocrefrb  r   r�  r   Úlabelr¡  Úpageidr¢  )r’   r¿   re  r“  s       r\   r¶   ÚPageList.__init__e  s’   € ð
 ‰?Ü'¨Ó,ˆDŒKØ"Ÿ™°dÐ:ˆDÔØÑÜ˜u›+ˆDŒKá-2óÚ-2 T·j±jÓ �—
‘
˜DÒ ©UñˆDŒNñ =BÓBºE°DŸk™k¨4Ò/¹EÑBˆD�Nð ùòùò Cs   ¾BÁBÁ/Bc                 óf   • U R                   c$  U R                  5       u  U l         U l        U l        g g r�   )r   Ú_init_pagesr¡  r¢  r‘   s    r\   Ú_eager_loadÚPageList._eager_loadt  s,   € à�;‰;ÑØ:>×:JÑ:JÓ:LÑ7ˆDŒK˜œ¨­ð rV   c           	      óB  • / n0 n0 nU R                   n[        [        U R                  U R                  5      5       H]  u  nu  u  pgn[        XFXxXTR                  5      n	UR                  U	5        X“U'   Uc  M<  X‚;   a  [        R                  SX…5        MY  X’U'   M_     XU4$ )Nz#Duplicate page label %s at index %d)
r¿   Ú	enumerateÚzipÚpage_objectsrb  r   rz   rþ   rY   ry   )
r’   re  Úby_labelÚby_objidr¿   Úpage_idxr-  Ú
propertiesr¥  r“  s
             r\   r©  ÚPageList._init_pagesy  s¢   € ØˆØ$&ˆØ$&ˆØ�h‰hˆÜ6?Ü�×!Ñ! 4×#3Ñ#3Ó4ö7
Ñ2ˆHÑ2Ñ*˜¨Eô ˜ J°xÇÁÓKˆDØ�L‰L˜ÔØ"�U‰OØÓ ØÓ$Ü—H‘HÐBÀEÖTà&*˜U“Oñ7
ð  Ð(Ð(rV   c              #   óº   #   • U R                   nUR                  b  UR                   Sh  v•N   gS [        R                  " S5       5        Sh  v•N   g N+ N7f)z;Generate page labels from document catalog or make them up.Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr�   )rw  )rç   Úidxs     r\   ré   Ú'PageList.page_labels.<locals>.<genexpr>’  s   é € Ð?Ò,> Sœ˜CŸ˜Ò,>ùrë   r�   )r¿   rb  r  Úcountr€  s     r\   rb  ÚPageList.page_labels‹  sF   é € ð �h‰hˆØ�?‰?Ñ&Ø—‘×&Ñ&á?¬I¯OªO¸AÔ,>Ó?×?Ñ?ñ 'á?ùs!   ‚)A«A¬%AÁAÁAÁAc              #   óR  #   • U R                   nSUR                  ;  aZ  U R                   R                  5        H;  u  p#[        U[        5      (       d  M  UR                  S5      [        L d  M6  X#4v •  M=     gUR                  S   UR                  4/n[        5       nU(       Ga´  UR                  5       u  p6[        U[        5      (       a  [        UR                  5      nOa[        U[        5      (       a  [        R                  SX65        UnO3Uc  [        R                  S5        SnO[        R                  SU5        Sn [        X   5      nX%;   a  [        R                  SU5        MÑ  US:w  a  UR%                  U5        UR'                  5       n	UR                  5        H  u  p«U
[(        ;   d  M  X©;  d  M  X¹U
'   M     U	R                  S5      nUc'  [        R                  SU	5        U	R                  S5      nU[*        L a7  SU	;   a1  [-        [/        U	S   5      5       H  nUR1                  XÙ45        M     OU[        L a  X)4v •  U(       a  GM³  gg! [        [         4 a8  nUS:w  a  [        R                  SX(5        [#        S	5      0 / S
QS.n SnAGNLSnAff = f7f)z?Iterate over the page tree yielding (objid, dictionary) tuples.rM   rÀ   Nz)Page tree contains bare integer: %r in %rzPage tree contains nullrU   z%Page tree contains unknown object: %rz%Missing or invalid page object %r: %sr   )r   r   id  i  )rÀ   rQ   rP   z"Circular reference %r in page treez!Page has no Type, trying type: %rÚtypeÚKids)r¿   r  Úitemsrc   rÉ   rÊ   ÚLITERAL_PAGErô   Úpopr-   r  r-  rY   rZ   r.   r±   r¥   r    rý   rN  ÚINHERITABLE_PAGE_ATTRSÚLITERAL_PAGESrŽ  r0   rþ   )r’   r¿   Ú	object_idr  ÚstackÚvisitedÚparentÚpage_objectrø   Úobject_propertiesrS  rÜ   Úobject_typeÚchilds                 r\   r¯  ÚPageList.page_objects”  s9  é € ð �h‰hˆà˜#Ÿ+™+Ó%Ø"&§(¡(§.¡.Ö"2‘�	Ü˜c¤4×(Ó(¨S¯W©W°V«_ÄÔ-LØ#˜.Ô(ñ #3ð Ø—+‘+˜gÑ&¨¯©Ð4Ð5ˆÜ“%ˆßØ!ŸI™I›K‰MˆSÜ˜#œv×&Ñ&ô   §	¡	›N‘	Ü˜C¤×%Ñ%ä—‘ÐGÈÔUØ‘	Ø‘Ü—‘Ð5Ô6Ø‘	ä—‘ÐCÀSÔIØ�	ð
Ü(¨©Ó8�ð Ó#Ü—‘Ð@À)ÔLÙØ˜B‹Ø—‘˜IÔ&ð !,× 0Ñ 0Ó 2ÐØŸ™ž‘�ØÔ.Õ.°1Õ3MØ+, aÓ(ñ 'ð
 ,×/Ñ/°Ó7ˆKØÑ"Ü—‘Ð?ÐARÔSØ/×3Ñ3°FÓ;�ØœmÒ+°Ð:KÓ0KÜ%¤jÐ1BÀ6Ñ1JÓ&KÖL�EØ—L‘L %Ð!;Ö<ò Mà¤Ò,ØÐ2Ò2÷i ‹eøô& œiÐ(ó Ø “?Ü—K‘KÐ GÈÔVô   ›KØ!#Ú 0ñ–ûð	üsQ   ‚AJ'ÁJ'Á/CJ'ÅI ÅA!J'Æ8J'Æ?BJ'ÉJ'ÉJ$É,-JÊJ'ÊJ$Ê$J'c                 ó,   • [        U R                  5      $ ©z%Get associated document if it exists.)r9   r¤  r‘   s    r\   r¿   ÚPageList.docÖ  s   € ô ˜tŸ{™{Ó+Ð+rV   c                 ó~   • U R                   b  [        U R                   5      $ [        S U R                   5       5      $ )Nc              3   ó&   #   • U  H  nS v •  M	     g7fr„  r�   r…  s     r\   ré   Ú#PageList.__len__.<locals>.<genexpr>Þ  s   é € Ð0Ò/˜•1Ò/ùr‡  )r   rÁ   rî   r¯  r‘   s    r\   r  ÚPageList.__len__Û  s2   € Ø�;‰;Ñ"Ü�t—{‘{Ó#Ð#ÜÑ0˜d×/Ò/Ó0Ó0Ð0rV   c           	   #   ó  #   • U R                   b  U R                    S h  v•N   g U R                  n[        [        U R                  U R
                  5      5       H$  u  nu  u  p4n[        XXEX!R                  5      v •  M&     g  Nc7fr�   )r   r¿   r­  r®  r¯  rb  r   rz   )r’   r¿   r²  r-  r³  r¥  s         r\   r  ÚPageList.__iter__à  st   é € Ø�;‰;Ñ"Ø—{‘{×"Ð"ØØ�h‰hˆÜ6?Ü�×!Ñ! 4×#3Ñ#3Ó4ö7
Ñ2ˆHÑ2Ñ*˜¨Eô �s :°hÇ	Á	ÓJÔJò7
ñ #ùs   ‚BŸB A$BÚkeyc                 ó   • g r�   r�   ©r’   rÕ  s     r\   r@  ÚPageList.__getitem__ê  ó   € Ø-0rV   c                 ó   • g r�   r�   r×  s     r\   r@  rØ  í  rÙ  rV   c                 ó   • g r�   r�   r×  s     r\   r@  rØ  ð  s   € Ø58rV   c                 ó   • g r�   r�   r×  s     r\   r@  rØ  ó  s   € Ø=@rV   c                 ó   • g r�   r�   r×  s     r\   r@  rØ  ö  s   € ØILrV   c                 óˆ  ^ • [        U[        5      (       a?  T R                  c#  T R                  5       u  T l        T l        T l        T R                  U   $ [        U[        5      (       a?  T R                  c#  T R                  5       u  T l        T l        T l        T R                  U   $ [        U[        5      (       a\  T R                  c#  T R                  5       u  T l        T l        T l        [        [        T R                  5      T R                  U   5      $ [        [        T R                  5      U 4S jU 5       5      $ )Nc              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr�   r�   )rç   rS  r’   s     €r\   ré   Ú'PageList.__getitem__.<locals>.<genexpr>	  s   øé € Ð:PÊCÀq¸4À¾7ÊCùs   ƒ)rc   r  r   r©  r¡  r¢  rw  Úslicer~   r9   r¤  r×  s   ` r\   r@  rØ  ù  sô   ø€ ô �cœ3×ÑØ�{‰{Ñ"Ø>B×>NÑ>NÓ>PÑ;�”˜Tœ^¨T¬^Ø—;‘;˜sÑ#Ð#Ü˜œS×!Ñ!Ø�~‰~Ñ%Ø>B×>NÑ>NÓ>PÑ;�”˜Tœ^¨T¬^Ø—>‘> #Ñ&Ð&Ü˜œU×#Ñ#Ø�{‰{Ñ"Ø>B×>NÑ>NÓ>PÑ;�”˜Tœ^¨T¬^ÜœO¨D¯K©KÓ8¸$¿+¹+ÀcÑ:JÓKÐKäœO¨D¯K©KÓ8Ô:PÉCÓ:PÓQÐQrV   r-  c                 ó€   • U R                   c#  U R                  5       u  U l        U l        U l         U R                   U   $ )z„Get a page by its indirect object ID.

Args:
    objid: Indirect object ID for the page object.

Returns:
    the page in question.
)r¢  r©  r   r¡  )r’   r-  s     r\   Úby_idÚPageList.by_id  s8   € ð �>‰>Ñ!Ø:>×:JÑ:JÓ:LÑ7ˆDŒK˜œ¨¬Ø�~‰~˜eÑ$Ð$rV   r›  c                 óZ  ^^• [        U R                  5      mTR                  b|  U R                  b0  [	        U R                  5      TR
                  TR                  -  :”  a?  TR                  R                  [        [        R                  " T5      U4S jU  5       5      $ U4S jU  5       $ )a  Apply a function over each page, iterating over its results.

Args:
    func: The function to apply to each page.

Note:
    This possibly runs `func` in a separate process.  If its
    return value is not serializable (by `pickle`) then you
    will encounter errors.
c              3   óR   >#   • U  H  n[        T5      UR                  4v •  M     g 7fr�   )Úidr²  )rç   r“  r¿   s     €r\   ré   ÚPageList.map.<locals>.<genexpr>*  s   øé € Ð;²d¨d”"�S“'˜4Ÿ=™=Õ)²dùs   ƒ$'c              3   ó4   >#   • U  H  nT" U5      v •  M     g 7fr�   r�   )rç   r“  r›  s     €r\   ré   rè  -  s   øé € Ð0ª4 4‘D˜—J�Jª4ùs   ƒ)r9   r¤  r€   r   rÁ   r‚   r„   Úmaprž  r  Úrepeat)r’   r›  r¿   s    `@r\   rê  ÚPageList.map  s   ù€ ô ˜dŸk™kÓ*ˆØ�9‰9Ñ Ø�K‰KÑ¤3 t§{¡{Ó#3°c·j±jÀ3Ç>Á>Ñ6QÓ#Qà—9‘9—=‘=ÜÜ× Ò  Ó&Ü;±dÓ;óð ô 1©4Ó0Ð0rV   )r¡  r¢  r   r¤  r   )NNro  rn  )&rr  rs  rt  ru  rv  rz  rx  r   r   r   r   r¡  r   rw  r¢  r  rv   r	   r¶   rª  r   r©  ry  r
   rb  r&   r¯  r¿   r  r  r   r@  rá  rã  r   r   rê  r{  r�   rV   r\   r~   r~   W  s\  ‡ ñð ÓØ&*€FˆE�$�t‘*˜dÐ"Ñ#Ó*Ø.2€Iˆu�T˜#˜t˜)‘_ dÐ*Ñ+Ó2Ø.2€Iˆu�T˜#˜t˜)‘_ dÐ*Ñ+Ó2ð &*Ø-1ñCà�8˜T�>Ñ"ðCð �X˜d‘^ TÐ)Ñ*ðCð 
õ	CôMð
)˜U 4¨¡:¨t°C¸°I©ÀÀSÈ$ÀYÁÐ#OÑPô )ð$ ð@˜X c™]ó @ó ð@ð ð?3˜h u¨S°$°s¸I°~Ñ2FÐ-FÑ'GÑHó ?3ó ð?3ðB ó,ó ð,ð1˜ô 1ð
K˜( 4™.ô Kð Ø0˜sÐ0 tÓ0ó Ø0àØ0˜sÐ0 tÓ0ó Ø0àØ8˜uÐ8¨Ó8ó Ø8àØ@˜x¨™}Ð@°Ó@ó Ø@àØL˜x¨¨c°3¨h©Ñ8ÐL¸ZÓLó ØLðRØ˜˜c 5¨(°3©-¸À%ÈÈSÈÁ/Ñ9RÐRÑSðRà	ˆt�ZÐÑ	 ôRð$%˜3ð % 4ô %ð1˜ $ ¨ Ñ-ð 1°(÷ 1rV   r~   Útreec              #   ód  #   • [        U R                  5       5      n [        U5      u  p#US:w  a  [        R	                  S5        Sn [        U5      nUR                  S5      n[        [        UR                  SS5      5      5      n[        UR                  SS5      5      n [        U5      u  pƒX‚-
  n	[        XwU	-   5      n
UnU
 H  n[        Xµ5      nXl-   v •  M     M™  ! [
         a    [        R	                  S5        Sn0 n N¿f = f! [
         a    [        R                  " U5      n
 Ngf = f7f)	zLIterate over page label tree.

See Section 12.4.2 in the PDF 1.7 Reference.
r   z"Page label tree is missing index 0zPage label tree is emptyÚSÚPrV   ÚStr�   )Úiterr¾  rÃ   rY   rZ   rÄ   r.   rÊ   r5   r2   r/   rÂ   r  r¹  Ú_format_page_label)rí  Úitorr[   Úlabel_dict_uncheckedÚ
label_dictÚstyleÚprefixÚfirst_valueÚ
next_startÚrange_lengthr�  Úvaluer¥  s                r\   r_  r_  0  s(  é € ô
 �—
‘
“Ó€Dð
"Ü&*¨4£jÑ#ˆà�A‹:Ü�K‰KÐ<Ô=àˆEð ÜÐ 4Ó5ˆ
Ø—‘˜sÓ#ˆÜœY z§~¡~°c¸3Ó'?Ó@ÓAˆÜ 
§¡¨t°QÓ 7Ó8ˆð		Ü/3°D«zÑ,ˆJð &Ñ-ˆLÜ˜;°lÑ(BÓCˆFØˆEãˆEÜ& uÓ4ˆEØ‘.Ô ñ ñ# øô ó "Ü�‰Ð.Ô/ØˆØ!Òð"ûô ó 	Aô %.§O¢O°KÓ$@ŠFð	AüsM   ‚D0�*C! ÁAD0Â$D
 Â10D0Ã!#DÄD0ÄDÄD0Ä
 D-Ä*D0Ä,D-Ä-D0rü  r÷  c                 óŠ  • Uc  SnU$ U[        S5      L a  [        U 5      nU$ U[        S5      L a  [        U 5      R                  5       nU$ U[        S5      L a  [        U 5      nU$ U[        S5      L a  [	        U 5      R                  5       nU$ U[        S5      L a  [	        U 5      nU$ [
        R                  SU5        SnU$ )z+Format page label value in a specific stylerp  ÚDÚRÚrÚAÚazUnknown page label style: %r)r    rw  r7   Úupperr6   rY   rZ   )rü  r÷  r¥  s      r\   ró  ró  X  sÚ   € à�}Øˆð €Lð 
”#�c“(Ò	Ü�E“
ˆð €Lð 
”#�c“(Ò	Ü  Ó'×-Ñ-Ó/ˆð €Lð 
”#�c“(Ò	Ü  Ó'ˆð €Lð 
”#�c“(Ò	Ü  Ó'×-Ñ-Ó/ˆð €Lð 
”#�c“(Ò	Ü  Ó'ˆð €Lô 	�‰Ð2°EÔ:ØˆØ€LrV   c                   óÚ   • \ rS rSr% SrSr\\\\	4   S4   \
S'   Sr\\S4   \
S'   S\SS4S jrS\4S	 jrS\\   4S
 jrSS jrS\\\\4   S\4S jrS\	S\S\4S jr\SS j5       rSrg)rˆ   il  z–Mapping of named destinations.

These either come as a NameTree or a dict, depending on the
version of the PDF standard, so this abstracts that away.
NÚ
dests_dictÚ
dests_treer¿   rS   c                 óV  • [        U5      U l        0 U l        SUR                  ;   a\  [	        UR                  S   5      n[        U[        5      (       a  X l        g [        R                  SU R                  5        S U l        g SUR                  ;   a–  [	        UR                  S   5      n[        U[        5      (       d  [        R                  SU5        g SU;   aK  [	        US   5      n[        U[        5      (       d  [        R                  SU5        g [        U5      U l        g g g )NÚDestsz,Dests entry in catalog is not dictionary: %rrh  z,Names entry in catalog is not dictionary: %rz*Dests entry in names is not dictionary: %r)r;   Ú_docrefÚdestsr  r1   rc   rÉ   r  rY   rZ   r   r  )r’   r¿   r  ri  r
  s        r\   r¶   ÚDestinations.__init__v  sì   € Ü$ SÓ)ˆŒØ-/ˆŒ
Ø�c—k‘kÓ!ä! #§+¡+¨gÑ"6Ó7ˆJÜ˜*¤d×+Ñ+Ø",•ä—‘ØBÀDÇOÁOôð #'�•Ø˜Ÿ™Ó#Ü˜SŸ[™[¨Ñ1Ó2ˆEÜ˜e¤T×*Ñ*Ü—‘ÐJÈEÔRØØ˜%ÓÜ   w¡Ó0�Ü! %¬×.Ñ.Ü—K‘KÐ LÈeÔTØÜ"*¨5£/�•ð  ð $rV   c                 óŒ   • U R                   b  [        U R                   5      $ U R                  b  [        U R                  5      $ g)Nr   )r  rÁ   r  r‘   s    r\   r  ÚDestinations.__len__�  s7   € Ø�?‰?Ñ&Ü�t—‘Ó'Ð'Ø�?‰?Ñ&Ü�t—‘Ó'Ð'ØrV   c              #   ó´   #   • U R                   b  U R                    Sh  v•N   gU R                  b#  U R                   H  n[        U5      nUv •  M     gg N67f)aH  Iterate over names of destinations.

Danger: Beware of corrupted PDFs
    This simply iterates over the names listed in the PDF, and
    does not attempt to actually parse the destinations
    (because that's pretty slow).  If the PDF is broken, you
    may encounter exceptions when actually trying to access
    them by name.
N)r  r  r5   )r’   ÚkbÚkss      r\   r  ÚDestinations.__iter__–  sN   é € ð �?‰?Ñ&Ø—‘×&Ñ&Ø�_‰_Ñ(Ø—o”o�Ü  “_�Ø”ò &ð )ñ 'ùs   ‚AŸA 7Ac                 ó   • [        U 5      $ )z Iterate over named destinations.)ÚDestinationsItemsViewr‘   s    r\   r¾  ÚDestinations.items§  s   € ä$ TÓ*Ð*rV   r‹  c                 ó:  • [        U[        5      (       a  [        U5      nO [        U[        5      (       a  [	        U5      nXR
                  ;   a  U R
                  U   $ U R                  b7  [        U R                  U   5      nU R                  X!5      U R
                  U'   OjU R                  b]  U R                  R                  5        H?  u  p4[        U5      U:X  d  M  [        U5      nU R                  X!5      U R
                  U'     O   U R
                  U   $ )zîGet a named destination.

Args:
    name: The name of the destination.

Raises:
    KeyError: If no such destination exists.
    TypeError: If the PDF is damaged and the destinations tree
        contains something unexpected or missing.
)rc   rd   r5   r'   r)   r
  r  r1   Ú_create_destr  r¾  )r’   r‹  ÚdestrS  rÜ   s        r\   r@  ÚDestinations.__getitem__«  sê   € ô �dœE×"Ñ"Ü˜tÓ$‰DÜ˜œi×(Ñ(Ü Ó%ˆDØ—:‘:ÓØ—:‘:˜dÑ#Ð#Ø�_‰_Ñ(ô ˜DŸO™O¨DÑ1Ó2ˆDØ#×0Ñ0°Ó<ˆD�J‰J�tÒØ�_‰_Ñ(ð Ÿ™×-Ñ-Ö/‘�Ü˜q“> TÕ)Ü# A›;�DØ'+×'8Ñ'8¸Ó'D�D—J‘J˜tÑ$Ùñ	 0ð �z‰z˜$ÑÐrV   r  c                 ó\  • [        U[        5      (       a!  [        R                  " U R                  U5      $ [        U[
        5      (       aV  SU;   aP  [        US   5      n[        U[        5      (       d  [        SX!5      e[        R                  " U R                  U5      $ [        SX!5      e)Nrþ  zInvalid destination for %s: %r)rc   r�  r   Ú	from_listr¿   rÉ   r1   r¥   )r’   r  r‹  Údestlists       r\   r  ÚDestinations._create_destÌ  s‡   € Ü�dœD×!Ñ!Ü×(Ò(¨¯©°4Ó8Ð8Ü˜œd×#Ñ#¨¨t«Ü  S¡	Ó*ˆHÜ˜h¬×-Ñ-ÜÐ @À$ÓMÐMÜ×(Ò(¨¯©°8Ó<Ð<äÐ<¸dÓIÐIrV   c                 ó,   • [        U R                  5      $ rÍ  )r9   r	  r‘   s    r\   r¿   ÚDestinations.doc×  s   € ô ˜tŸ|™|Ó,Ð,rV   )r	  r
  r  r  )rS   r  rn  )rr  rs  rt  ru  rv  r  r   r   rw  r&   rx  r  r   rv   r¶   r  r  r
   r  r¾  rd   r'   r   r@  r  ry  r¿   r{  r�   rV   r\   rˆ   rˆ   l  s¿   ‡ ñð 59€J��d˜3 	˜>Ñ*¨DÐ0Ñ1Ó8Ø(,€J��h �nÑ%Ó,ð2˜Hð 2¨ô 2ð2˜ô ð˜( 3™-ô ô"+ð   e¨S°)Ð&;Ñ <ð  Àô  ðB	J ð 	J°#ð 	J¸+ô 	Jð ó-ó ó-rV   rˆ   c                   ó>   • \ rS rSr% \\S'   S\\\\	4      4S jr
Srg)r  iÝ  Ú_mappingrS   c              #   ó@  #   • U R                   nUR                  b{  UR                  R                  5        H\  u  p#X!R                  ;  a6  [	        UR                  U   5      nUR                  X25      UR                  U'   X!R                  U   4v •  M^     g UR                  by  UR                  R                  5        HZ  u  pE[        U5      nX!R                  ;  a)  [	        U5      nUR                  X25      UR                  U'   X!R                  U   4v •  M\     g g 7fr�   )r   r  r¾  r
  r1   r  r  r5   )r’   r
  r‹  r  rS  rÜ   s         r\   r  ÚDestinationsItemsView.__iter__à  sô   é € Ø—‘ˆØ×ÑÑ'Ø#×.Ñ.×4Ñ4Ö6‘
�ØŸ{™{Ó*Ü# E×$4Ñ$4°TÑ$:Ó;�DØ(-×(:Ñ(:¸4Ó(F�E—K‘K Ñ%ØŸK™K¨Ñ-Ð-Ô-ò	 7ð
 ×ÑÑ)Ø×(Ñ(×.Ñ.Ö0‘�Ü" 1“~�ØŸ{™{Ó*Ü# A›;�DØ(-×(:Ñ(:¸4Ó(F�E—K‘K Ñ%ØŸK™K¨Ñ-Ð-Ô-ò 1ð *ùs   ‚DDr�   N)rr  rs  rt  ru  rˆ   rx  r
   r   rw  r   r  r{  r�   rV   r\   r  r  Ý  s#   ‡ ØÓð.˜( 5¨¨kÐ)9Ñ#:Ñ;÷ .rV   r  )trv  rh   r  Úloggingre   ro   Úconcurrent.futuresr   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Úplaya.data_structuresr   r   Úplaya.exceptionsr   r   Ú
playa.fontr   r   r   r   r   Úplaya.outliner   r   r†   Ú
playa.pager   r   Úplaya.parserr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Úplaya.pdftypesr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   Úplaya.securityr4   Úplaya.structureÚplaya.utilsr5   r6   r7   Úplaya.workerr8   r9   r:   r;   r<   r=   Ú
playa.xrefr>   r?   r@   rA   rB   rC   Ú	getLoggerrr  rY   ÚLITERAL_PDFÚLITERAL_TEXTrH  rI  rJ  rM  rL  rK  r  rË   r  r¿  rÂ  rÁ  rd   r  r]   rw  rt   rv   rW  rž  r~   r_  ró  rˆ   r  r�   rV   r\   Ú<module>r5     sY  ðñó 
Û Û Û Û 	Ý '÷÷ ÷ ÷ ÷" 7÷÷ IÕ Hß 7÷÷÷ ÷ ñ ÷÷ ÷ õ -Ý  ÷ñ ÷
÷ ÷÷ ð ×Ò˜Ó!€ñ
 �%‹j€Ù�6‹{€Ù�6‹{€Ù�G“€Ù�i“.€Ù�G“€Ù�G“€Ù�z“?Ð Ù�X“€Ù�6‹{€Ù�i“.€Ù�6‹{€Ù�G“€ÚGÐ ð,˜˜u d§i¡iÐ/Ñ0ð ,°U¸5À#¸:Ñ5Fô ,ð#�E˜( E˜/Ñ*ð #¨u°S¸#¸uÀUÈDÏIÉIÐEUÑ?VÐ5VÑ/Wô #ô0S
"ˆw�s˜I�~Ñ&ô S
"ôl,�'˜#˜t˜)Ñ$ô ,ð^&�H˜d˜V S˜[Ñ)ð &°Gð &Àô &ô
V1ˆx˜‰~ô V1ðr%!�zð %! h¨s¡mô %!ðP˜cð ¨#ð °#ô ô(n-�7˜5  e¨YÐ!6Ñ7¸ÐDÑEô n-ôb.˜I c¨;Ð&6Ñ7õ .rV   