
    h                        d Z d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dl
mZ ddlmZmZmZmZmZ dd	lmZmZmZ dd
lmZmZmZmZmZmZmZmZ ddlm Z m!Z!m"Z" ddlm#Z$ ddlm%Z& ddlm'Z( ddlm)Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZA ddlmBZBmCZC ej                  dk\  rddlmEZE nddlFmEZE  ej                  eH      ZI ej                  d      ZK G d deLe   e7      ZM G d deNeef   e7      ZO G d deO      ZPded dfd!ZQ G d" d#eO      ZR G d$ d%eR      ZS G d& d'eR      ZT G d( d)eS      ZU	 d2d*ed+ee   d,edeVeLeV   eNeWeVf   f   d ee7eWeVeUf   fd-ZX G d. d/eP      ZY G d0 d1eP      ZZy)3zMathieu Fenniakzbiziqe@mathieu.fenniak.net    N)IterableSequence)BytesIO)ceil)AnyCallableOptionalUnioncast   )PdfReaderProtocolPdfWriterProtocolXmpInformationProtocol)WHITESPACES
StreamTypedeprecation_no_replacementlogger_warningread_non_whitespaceread_until_regexread_until_whitespaceskip_over_comment)CheckboxRadioButtonAttributesFieldDictionaryAttributesOutlineFontFlag)FilterTypes)StreamAttributes)TypArguments)TypFitArguments)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamError   )
BooleanObjectByteStringObjectFloatObjectIndirectObject
NameObject
NullObjectNumberObject	PdfObjectTextStringObjectis_null_or_none)Fit)extract_inline_A85extract_inline_AHxextract_inline_DCTextract_inline_defaultextract_inline_RL)read_hex_string_from_streamread_string_from_stream)      )Selfs   [+-]?(\d+)\s+(\d+)\s+R[^a-zA-Z]c                   "   e Zd Zdedd fdZ	 	 ddededeeee	e
f         dd fdZde
fdZdee   fdZd	edee   fd
Zd	edd fdZd	edefdZd	edefdZ	 ddedede	ef   ddfdZe	 ddedee   dede	ee	   ee
e	f   f   dd fd       Zy)ArrayObjectpdf_destreturnc                     t        d| j                  t               |d            }| D ]@  }t        |d      r!|j	                  |j                  |             0|j	                  |       B |S )Nr9   F	replicate)r   _reference_cloner9   hasattrappendr=   )selfr:   arrdatas       ]/var/www/html/aiagenthome/venv/lib/python3.12/site-packages/pypdf/generic/_data_structures.pyr=   zArrayObject.replicated   sc     !!+-5A
 Dt[)

4>>(34

4 	 
 
    force_duplicateignore_fieldsc                    	 | j                   j                  |k(  r|s| S t        d| j	                  t               ||            }| D ]  }t        |t              r@|j	                  |j                  |||      ||      }|j                  |j                          St        |d      r#|j                  |j                  |||             |j                  |        |S # t        $ r Y w xY w)Clone object into pdf_dest.r9   clone)indirect_referencepdf	Exceptionr   r>   r9   
isinstanceStreamObjectrJ   r@   r?   )rA   r:   rF   rG   rB   rC   dups          rD   rJ   zArrayObject.clones   s    	&&**h6 !!+-?K
 D$-++JJx-H#
 

3112w'

4::hOP

4   
%  		s   C 	C)(C)c                 P    t        | j                  t        d | D              f      S )q
        Used to detect modified object.

        Returns:
            Hash considering type and value.

        c              3   <   K   | ]  }|j                           y wNhash_bin).0xs     rD   	<genexpr>z'ArrayObject.hash_bin.<locals>.<genexpr>   s     *FA1::<s   )hash	__class__tuplerA   s    rD   rV   zArrayObject.hash_bin   s#     T^^U*F*F%FGHHrE   c                     t        |       S )z:Emulate DictionaryObject.items for a list (index, object).)	enumerater]   s    rD   itemszArrayObject.items   s    rE   lstc                    t        |t        t        t        f      r	 |S t        |t              r|g}|S t        |t
              r$|d   dk(  rt        |      g}|S t        |      g}|S t        |t              rt        |      g}|S |g}|S )Nr   /)
rN   listr\   setr*   strr'   r+   bytesr$   rA   ra   s     rD   _to_lstzArrayObject._to_lst   s    cD%-. 
 Y'%C 
 S!1v}!#' 
 (,-
 
	 U##C()C 
 %C
rE   c                 \    t        |       }|j                  | j                  |             |S )a  
        Allow extension by adding list or add one element only

        Args:
            lst: any list, tuples are extended the list.
            other types(numbers,...) will be appended.
            if str is passed it will be converted into TextStringObject
            or NameObject (if starting with "/")
            if bytes is passed it will be converted into ByteStringObject

        Returns:
            ArrayObject with all elements

        )r9   extendri   )rA   ra   temps      rD   __add__zArrayObject.__add__   s(     4 DLL%&rE   c                 F    | j                  | j                  |             | S )a  
         Allow extension by adding list or add one element only

        Args:
            lst: any list, tuples are extended the list.
            other types(numbers,...) will be appended.
            if str is passed it will be converted into TextStringObject
            or NameObject (if starting with "/")
            if bytes is passed it will be converted into ByteStringObject

        )rk   ri   rh   s     rD   __iadd__zArrayObject.__iadd__   s     	DLL%&rE   c                 z    | j                  |      D ]  }	 | j                  |      }| |=  | S # t        $ r Y 'w xY w)zAllow to remove items)ri   index
ValueError)rA   ra   rX   rq   s       rD   __isub__zArrayObject.__isub__   sI    c"A

1K #   s   .	::Nstreamencryption_keyc                     |t        dd       |j                  d       | D ]$  }|j                  d       |j                  |       & |j                  d       y )N/the encryption_key parameter of write_to_stream5.0.0   [    s    ])r   writewrite_to_stream)rA   rt   ru   rC   s       rD   r|   zArrayObject.write_to_stream   sW     %&A7 	TDLL  (  	UrE   rL   forced_encodingc                    t               }| j                  d      }|dk7  rt        d      	 | j                  d      }|j                         r"| j                  d      }|j                         r"|dk(  r	 |S |dk(  r| j	                  dd       t        |        o| j	                  dd       | j                  d      }|dk(  r	 |S | j	                  dd       |j                  t        | ||             )Nr"   ry   zCould not read arrayrE      %   ])r9   readr    isspaceseekr   r@   read_object)rt   rL   r}   rB   tmptok
peek_aheads          rD   read_from_streamzArrayObject.read_from_stream   s     mkk!n$;566++a.C++-kk!n ++-cz 
 d{B"!&)KKAQJT! 
 KKAJJ{63@A% rE   F rT   )__name__
__module____qualname__r   r=   boolr	   r   r
   rf   intrJ   rV   r   r   r`   rd   ri   rm   r7   ro   rs   r   rg   r|   staticmethodr   dictr   r   rE   rD   r9   r9   c   s[   # 
$ !&=?	#   sCx 9:	
 
<I# Ix} 3 49 "3 = &C D C D  MQ 27c58H2I	  HL'( tS$s)T#s(^CD 
	 rE   r9   c                      e Zd Zdedd fdZ	 	 ddededeeee	e
f         dd fdZdd dededeeee	e
f         deee
e
f      dd	fd
Zde
fdZdedefdZdde	dedefdZdededefdZddedee   defdZdedefdZedee   fd       Z	 ddeded	e	ef   dd	fdZe	 ddedee   ded	e	ee	   e e
e	f   f   dd fd       Z!y	)DictionaryObjectr:   r;   c                     t        d| j                  | j                         |d            }| j                         D ]6  \  }}t	        |d      r|j                  |      n|||j                  |      <   8 |S )Nr   Fr=   )r   r>   r[   r`   r?   r=   )rA   r:   d__kvs        rD   r=   zDictionaryObject.replicate
  sq     !!$.."2HeD
 JJLDAq)0K)@H%a H%& ! 
rE   rF   rG   c                 4   	 | j                   j                  |k(  r|s| S t               }t	        d| j                  | j                         ||            }|g }t        |j                               dk(  r|j                  | ||||       |S # t        $ r Y ww xY w)rI   r   r   )
rK   rL   rM   re   r   r>   r[   lenkeys_clonerA   r:   rF   rG   visitedr   s         rD   rJ   zDictionaryObject.clone  s    	&&**h6 ),!!$.."2HoN
  Msxxz?aJJtXwO
  		s   B 	BBsrcr   Nc           
      &   J t              d}|t              k  rQt        |   t              r*t	        t        |         dk  r|= |= >|xx   dz  cc<   |dz  }|t              k  rQt        fddD              rt              dD ]  }|D ]  }g }	|v s|| vst        j                  |      t              s0t        |   t              sDj                  dd      Zt	        t        |         j                  dd      7j                  dd      t	        t        |         j                  dd      k(  st	        d|         }
| }|
t	        d|
j                  |
j                         ||            }|j                  H|j                  j                  }|j                  j                  }||f|v rd}
n_|j                  ||f       |	j!                  |
|f       |J |j                  |t#        |      <   |}	 |
k(  rd}
nt	        d|
|         }
|
|	D ]  \  }}|j'                  ||||          j)                         D ]  \  }}|vst        |t*              rSt-        |d	      sd|_        |j/                  ||      }|j                  J |j                  | |j/                  |      <   n|| vsst-        |d
      r|j/                  ||      n|| t#        |      <    y# t$        $ r d}
Y w xY w)z
        Update the object from src.

        Args:
            src: "DictionaryObject":
            pdf_dest:
            force_duplicate:
            ignore_fields:

        Nr   r"   c              3     K   | ]  }|vxr |v xr t        j                  |      t              xr t        |   t              xrs j	                  d d      du xs] t        t        |         j	                  d d      du xs6 j	                  d d      t        t        |         j	                  d d      k(    yw)/TypeN)rN   raw_getr&   r   getr   )rW   fieldrG   r   s     rD   rY   z*DictionaryObject._clone.<locals>.<genexpr>P  s      
 8 & 		3;;u-~>	 3u:'78	
 &$. I(#e*599'4HDPI777D)(#e*599'4HI	 8s   B?C)/Next/Prev/N/V))r   r   )r   r   r   r   rK   rJ   )rd   r   rN   r   r   anyr   r&   r   r   r>   r[   rK   idnum
generationaddr@   r'   rM   r   r`   rO   r?   rJ   )rA   r   r:   rF   rG   r   rX   ra   r   objscur_objprev_objclonr   r   scr   vvs    `  `              rD   r   zDictionaryObject._clone0  sL   ( (((]+#m$$-*C0]1-.!3%a(%a(a A% FA #m$$  
 8
 
 !/M9ADSTM&s{{1~~F&s1v/?@  GGGT2:#$4c!f=AA'4PX"www5#$4c!f=AA'4P Q ?C.A? @D%1#' 2 ' 8 8$+$5$5$7?!"$D  $66B(,(?(?(E(E-1-D-D-O-O
$):#6'#A.2G$) 'UJ,? @ KK$8#+#77#76:6M6MHZ]3'+H/#*c>.2G.23Ewqz.RG/ &14 %)DAqHH !8_mW %)]  :h IIKDAq%a."1&:;/3,?MJB00<<<.0.C.CD*+d] #1g. /=I A'   $- /*./s   LLLc                 l    t        | j                  t        d | j                         D              f      S )rR   c              3   F   K   | ]  \  }}||j                         f  y wrT   rU   )rW   r   r   s      rD   rY   z,DictionaryObject.hash_bin.<locals>.<genexpr>  s      #O,$!QQ

$5,s   !)rZ   r[   r\   r`   r]   s    rD   rV   zDictionaryObject.hash_bin  s.     ^^U#O$**,#OPQ
 	
rE   keyc                 .    t         j                  | |      S rT   )r   __getitem__rA   r   s     rD   r   zDictionaryObject.raw_get  s    c**rE   defaultc                     || v r| |   S 	 d| vr|S t        d      # t         $ r0 t        d| d   j                               j                  ||      cY S w xY w)a>  
        Returns the value of a key or from the parent if not found.
        If not found returns default.

        Args:
            key: string identifying the field to return

            default: default value to return

        Returns:
            Current key or inherited one, otherwise default value.

        /ParentzNot presentr   )KeyErrorr   
get_objectget_inherited)rA   r   r   s      rD   r   zDictionaryObject.get_inherited  sn     $;9	$=)) 	*DO,F,F,HIWWW 	s     6AAvaluec                     t        |t              st        d      t        |t              st        d      t        j	                  | ||      S NzKey must be a PdfObjectzValue must be a PdfObject)rN   r*   rr   r   __setitem__rA   r   r   s      rD   r   zDictionaryObject.__setitem__  sC    #y)677%+899c511rE   c                     t        |t              st        d      t        |t              st        d      t        j	                  | ||      S r   )rN   r*   rr   r   
setdefaultr   s      rD   r   zDictionaryObject.setdefault  sA    #y)677%+899tS%00rE   c                 J    t         j                  | |      j                         S rT   )r   r   r   r   s     rD   r   zDictionaryObject.__getitem__  s    c*5577rE   c                     ddl m} | j                  dd      }t        |      ry|J d       |j	                         } ||      S )u  
        Retrieve XMP (Extensible Metadata Platform) data relevant to this
        object, if available.

        See Table 347 — Additional entries in a metadata stream dictionary.

        Returns:
          Returns a :class:`~pypdf.xmp.XmpInformation` instance
          that can be used to access XMP metadata from the document. Can also
          return None if no metadata was found on the document root.

        r   )XmpInformationz	/MetadataNmypy)xmpr   r   r,   r   )rA   r   metadatas      rD   xmp_metadatazDictionaryObject.xmp_metadata  sL     	)88K.8$#+V+#&&(h''rE   rt   ru   c                 \   |t        dd       |j                  d       | j                         D ]i  \  }}t        |      dkD  r|d   dk(  r	|d   dk(  r%|j	                  ||       |j                  d       |j	                  |       |j                  d	       k |j                  d
       y )Nrw   rx      <<
r   r"   %r   rz      
   >>)r   r{   r`   r   r|   )rA   rt   ru   r   r   s        rD   r|   z DictionaryObject.write_to_stream  s     %&A7 	W**,JC3x!|A##b'S.7LL!!&)LL ' 	UrE   rL   r}   c           
      
   dt         dt         dt        t            dt        dt         f
ddt        dt        dt        ffd}| j                  d	      }|d
k7  r&t        dt        | j                                d      i }	 t        |       }|dk(  r|dk(  r| j                  dd       t        |        5|st        t              |dk(  r| j                  d       n| j                  dd       	 	 t        | |      }t        |t               rnt        |t"              st        d|      	 t        |       }| j                  dd       t        | ||      }	|j3                  |      s|	||<   nHdt        | j                                d| }||j$                  rt        |      t'        |t*               7| j                         }t        |       }|dk(  r| j                  d      dk(  rj| j                  d      }|dk(  r| j                  d      }|dk(  r|dvrt        d      |dk(  r&| j                  d      dk7  r| j                  dd       t4        j6                  |vr_||j$                  rt        d      t'        d| j                          t*               t9        d      |t#        t4        j6                        <   |t4        j6                     }t        |t:              r<| j                         }|J d       |j=                  |      }| j                  |d        |d}| j                         }|d kD  r| j                  |      |d!<   n"t?        | tA        jB                  d"            |d!<   t        |       }| j                  d#      }||z   d"k7  r| j                         }| j                  d$d       | j                  d%      }|d"k(  r|d!   d d |d!<   n|;|j$                  s/| j                  |d         || |      |d!<   | j                         }nP| j                  |d        t        d&t        | j                                d'|d(|d)      | j                  |d        d!|v rtD        jG                  |      S t/               }
|
j1                  |       |
S # t        $ r8}||j$                  r t'        |j)                         t*               Y d }~\d }~ww xY w# t,        $ rl}|%|j$                  rt        |j)                               t'        |j)                         t*               t/               }
|
j1                  |       |
cY d }~S d }~ww xY w)*Npp1rem_gensrL   r;   c                     |}|D ]L  }|j                   |   }	 |j                         D cg c]  }| |cxk  r|k  sn n| }}|rt        |g| }N |S c c}w # t        $ r Y aw xY wrT   )xrefvaluesminrr   )	r   r   r   rL   outgenlocrX   r   s	            rD   get_next_obj_posz;DictionaryObject.read_from_stream.<locals>.get_next_obj_pos  s}     Chhsm),EAQ"aFE!#//   J F " s'   AAAAA	A'&A'rt   c                 N    | j                         dt        |j                        |      dz
  }| j                         }| j                  || j                         z
        }|j	                  d      }|dk  rt        d| d      | j                  ||z   dz          |d |dz
   S )Nl        r"   	   endstreamr   z6Unable to find 'endstream' marker for obj starting at .	   )tellrd   r   r   findr    r   )rt   rL   eoncurrrwr   r   s         rD   read_unsized_from_streamzCDictionaryObject.read_from_stream.<locals>.read_unsized_from_stream  s     #6;;=%chhMPQQC;;=DS6;;=01B%A1u"LTFRST  KKq1%gA;rE   r      <<zDictionary read error at byte z: stream must begin with '<<'    r   r   r"      >z)Expecting a NameObject for key but found z+Multiple definitions in dictionary at byte z	 for key    s   s   treamrz   )r      z)Stream data must be followed by a newliner   r   zStream length not definedzStream length not defined @pos=r   r   __streamdata__r      ir   z7Unable to find 'endstream' marker after stream at byte z (nd='z', end='z').)$r   rd   r   r   rg   r   r    hexr   r   r   r   r!   r   r   rN   r(   r'   strictr   __repr__r   rM   r   updater   SALENGTHr)   r&   r   r   recompilerO   initialize_from_dictionary)rt   rL   r}   r   r   rC   r   r   excr   retvalmsgposr   eollengthtpstartendstreamendr   s                        @rD   r   z!DictionaryObject.read_from_stream  s   			'+Cy	7H				%6		 kk!n%<0V[[]1C0D E. .   "%f-Cg~d{B"!&)$%ABBd{AKKA%fc2C!#z2%c:6*GwO  7 *&1B"#FCA 88C=!S	 B6;;=)*)C5:  ?szz&s++sH-e h kkm'9Q83++a.C +kk!n +.($%PQQe|A% 7B"yy$?szz()DEE5fkkm_Ex /;2.>Z		*+"))_F&.1KKM../Aq!~[[]Fz)/V)<%&)9BJJ|4*%& $F+A{{1~HH- kkmC#kk!n,&-12B-CCR-HD)*_SZZKK*-Efc-RD)* ++-CKKQ'&Qv{{}-.fXLsT 
 KKQt#::4@@!#d} $ 3::"3<<>8<	  ?szz&s||~66s||~x8)+d#sI   2R! R! -+S% !	S"*-SS% S""S% %	U.A!UUUr   rT   )"r   r   r   r   r=   r   r	   r   r
   rf   r   rJ   re   r\   r   rV   r   r   r   r   r   r*   r   propertyr   r   r   rg   r|   r   r   rd   r   r   r   rE   rD   r   r   	  s   # 
" !&=?	#   sCx 9:	
 
0oo $o 	o
  sCx 9:o U38_%o 
ob

# 

+3 +3 + s c 22s 23 23 21c 1(3- 13 18s 8y 8 (h'=> ( (. MQ 27c58H2I	"  HL__'(_ tS$s)T#s(^CD_ 
	_ _rE   r   c                      e Zd Zddee   ddfdZdefdZdefdZ	de
e   fdZded	eddfd
Zdeded f   deddfdZdeded f   deddfdZ	 ddeded	edeedef      def
dZdededededdf
dZdeddfdZddZddZy)
TreeObjectNdctr;   c                 V    t         j                  |        |r| j                  |       y y rT   )r   __init__r   )rA   r	  s     rD   r  zTreeObject.__init__  s$    !!$'KK rE   c                 
    d| v S )N/Firstr   r]   s    rD   has_childrenzTreeObject.has_children  s    4rE   c                 "    | j                         S rT   )childrenr]   s    rD   __iter__zTreeObject.__iter__  s    }}rE   c              #     K   | j                         sy | t        d         }|j                         }	 | || t        d         k(  ry |j                  t        d            }t	        |      ry |j                         }Mw)Nr  /Lastr   )r  r'   r   r   r,   )rA   	child_refchilds      rD   r  zTreeObject.children  s       "H-.	$$&KZ011		*W"56Iy)((*E s   A>B r  rL   c                 *    | j                  |d |       y rT   )insert_child)rA   r  rL   s      rD   	add_childzTreeObject.add_child  s    %s+rE   parentnc                 ,   t        |      ry |J d       t        d|j                               }d|v rat        t	        dt        t
        |t        d               |z               |t        d      <   | j                  |j                  dd       |       y y )Nr   r  /Countr   r   )	r,   r   r   r)   maxr   r'   inc_parent_counter_defaultr   )rA   r  r  s      rD   r  z%TreeObject.inc_parent_counter_default  s     6"!)6)!lF$5$5$78v+7AtC
8(<!=>BC,F:h'( ++FJJy$,GK	 rE   c                 x   t        |      ry |J d       t        d|j                               }|j                  dd      dk(  }t        t        |j                  dd            }|dk  rt        |      }t        ||z   |rdndz        |t        d      <   |sy | j                  |j                  d	d       |       y )
Nr   r  z
/%is_open%Tr  r   r"   r   r   )	r,   r   r   r   r   absr)   r'   inc_parent_counter_outline)rA   r  r  opnr   s        rD   r!  z%TreeObject.inc_parent_counter_outline  s     6"!)6)!lF$5$5$78jjt,4fjj1-.q5AA'3QUCqR4P'Qz(#$''

9d(CQGrE   beforeinc_parent_counter.c                    || j                   }|j                         }|j                  }d| vrt|| t        d      <   t	        d      | t        d      <   || t        d      <   | j                  |t        d      <    || |j                  dd             d|v r|d= d|v r|d= |S t        d	| d         }|j                  |k7  rd|v rt        d
|d         }nxt        d
|      |t        d      <   |j                  |t        d      <   | j                  |t        d      <   d|v r|d= || t        d      <    || |j                  dd             |S |j                  |k7  r	 t        |d   t              sJ ||d   t        d      <   |d   |t        d      <   ||t        d      <   ||t        d      <   | j                  |t        d      <    || |j                  dd             |S # t        $ r |d= Y ]w xY w)Nr  r   r  r  r   r"   r   r   r   r  )
r  r   rK   r'   r)   r   r   rN   r   rM   )rA   r  r#  rL   r$  	child_objprevs          rD   r  zTreeObject.insert_child  s     %!%!@!@$$&	(( 4).DH%&)5aDH%&(-DG$%/3/F/FIj+,tY]]8Q%?@)#g&)#g&L&W6%%/$L$w-8,0u,EZ()151H1H	*W-.373J3J	*Y/0i'!'*,1Z()"4x)CD %%/	#d7m-=>>>16DM*W-.-1']Ij)* *.	*W%&$)Z !+/+B+B	*Y'(4x!;<  	#'"	#s   7G$ $G32G3r'  prev_refcurlastc                 L   |j                  t        d      d      }||rQ|j                         }|t        d      = || t        d      <   t        | t        d         dz
        | t        d      <   yt        d      | t        d      <   | t        d      = t        d      | v r| t        d      = yy|r-|j                         }||t        d      <   ||t        d      <   n!||k(  sJ |t        d      = || t        d      <   t        | t        d         dz
        | t        d      <   y)	z
        Adjust the pointers of the linked list and tree node count.

        Args:
            prev:
            prev_ref:
            cur:
            last:

        r   Nr   r  r  r"   r   r  )r   r'   r   r)   )rA   r'  r(  r)  r*  next_refnext_objs          rD   _remove_node_from_treez!TreeObject._remove_node_from_tree  s1    77:g.5<#..0Z01-5Z)*-9H-.2.Z)* .:!_Z)*H-.g&$.Z01 / #..008G,-,4Z() d{"{G,-,4Z())5d:h;O6PST6T)UDH%&rE   c                    |j                         }|j                  }t        d      |vrt        d      |t        d         | k7  rt        d      d}d }d }| t        d         }|j                         }| t        d         }|j                         }	|S||k(  r| j	                  ||||	       d}n7|}|}t        d      |v r|t        d         }|j                         }nd }d }|S|st        d	      t        |       y )
Nr   /Removed child does not appear to be a tree itemz*Removed child is not a member of this treeFr  r  Tr   z"Removal couldn't find item in tree)r   rK   r'   rr   r.  _reset_node_tree_relationship)
rA   r  r&  foundr(  r'  cur_refr)  last_refr*  s
             rD   remove_childzTreeObject.remove_child>  s$   $$&	,,i 	1NOOZ	*+t3IJJ!%j&:!;(/(:(:(<
7+,""$oi++D(CF HD'"c)j12((* o  ABB%i0rE   c                 p    t        d      | vrt        d      t        d| d         j                  |        y)z)Remove the object from the tree it is in.r   r0  r  N)r'   rr   r   r5  r]   s    rD   remove_from_treezTreeObject.remove_from_treec  s4    i ,NOO\4	?+88>rE   c                     | D ]  }|j                         }t        |        t        d      | v r| t        d      = t        d      | v r| t        d      = t        d      | v r| t        d      = y y )Nr  r  r  )r   r1  r'   )rA   r  r&  s      rD   
empty_treezTreeObject.empty_treei  sw    E((*I))4  h4'Z)*h4'Z)*g$&Z() 'rE   rT   r;   N)r   r   r   r	   r   r  r   r  r   r  r   r  r   r  r
   r&   r   r  r!  r   r  r.  r5  r7  r9  r   rE   rD   r  r    sT   H%56 $ 
 d  # +(3- +,s ,): ,t ,LD.,>?LDGL	LHD.,>?HDGH	H, <@00 0 	0
 %Xc3h%780 
0d)V)V#&)V-0)V8;)V	)VV#1# #1$ #1J?
*rE   r  r&  r;   c                     | t        d      = t        d      | v r| t        d      = t        d      | v r| t        d      = yy)z
    Call this after a node has been removed from a tree.

    This resets the nodes attributes in respect to that tree.

    Args:
        child_obj:

    r   r   r   N)r'   )r&  s    rD   r1  r1  v  sJ     	*Y'('i'j)*'i'j)* (rE   c                       e Zd ZddZdedd fdZdedededee	e
eef         d	eeeef      ddf fd
Zdef fdZdefdZdeddfdZdef fdZ	 ddede
deef   ddfdZedeeef   de
d   fd       ZddeddfdZdefdZ xZS )rO   r;   Nc                      d| _         d | _        y NrE   )_datadecoded_selfr]   s    rD   r  zStreamObject.__init__  s    
;?rE   r:   c                    t        d| j                  | j                         |d            }| j                  |_        	 | j                  }|d | _        n t        d|j                  |            | _        | j                         D ]6  \  }}t        |d      r|j                  |      n|||j                  |      <   8 |S # t        $ r Y Vw xY w)NrO   FDecodedStreamObjectr=   )	r   r>   r[   r?  r@  r=   rM   r`   r?   rA   r:   r   r@  r   r   s         rD   r=   zStreamObject.replicate  s     !!$.."2HeD
 JJ			,,L#$(!$()<+A+A(+K%!
 JJLDAq)0K)@H%a H%& ! 
  		s   6B? ?	C
Cr   rF   rG   r   c                    t        d|      j                  | _        	 t        d|      j                  }|d| _        n"t        d|j                  |||            | _        t
        |   |||||       y# t        $ r Y w xY w)
        Update the object from src.

        Args:
            src:
            pdf_dest:
            force_duplicate:
            ignore_fields:

        rO   NrB  )r   r?  r@  rJ   rM   superr   )rA   r   r:   rF   rG   r   r@  r[   s          rD   r   zStreamObject._clone  s    $ .#.44

	4AAL#$(!$() &&x-P%! 	sHo}gN  		s   AA4 4	B ?B c                 J    t        t        | 	         | j                  f      S )rR   )rZ   rF  rV   r?  )rA   r[   s    rD   rV   zStreamObject.hash_bin  s!     UW%'455rE   c                     | j                   S rT   r?  r]   s    rD   get_datazStreamObject.get_data  s    zzrE   rC   c                     || _         y rT   rI  )rA   rC   s     rD   set_datazStreamObject.set_data  s	    
rE   c                 J    t         |          }|| j                         z  }|S rT   )rF  hash_value_datarJ  rA   rC   r[   s     rD   rN  zStreamObject.hash_value_data  s%    w&(rE   rt   ru   c                 X   |t        dd       t        t        | j                              | t	        t
        j                        <   t        j                  | |       | t
        j                  = |j                  d       |j                  | j                         |j                  d       y )Nrw   rx   s   
stream
s
   
endstream)
r   r)   r   r?  r'   r   r   r   r|   r{   )rA   rt   ru   s      rD   r|   zStreamObject.write_to_stream  s|     %&A7 '33tzz?&CZ		"#((v6O]#TZZ ^$rE   )EncodedStreamObjectrB  c                     t         j                  | v rt               }n
t               }| d   |_        | d= t         j
                  | v r| t         j
                  = |j                  |        |S )Nr   )r   FILTERrQ  rB  r?  r   r   )rC   r   s     rD   r   z'StreamObject.initialize_from_dictionary  s^    
 99(*F(*F,-!"99RYYdrE   levelrQ  c           	         ddl m} t        j                  | v r| t        j                     }t	        |t
              rct        t        t        j                        g|      }	 t        t               g| j                  t        j                  t                           }n{t        t        t        j                        |g      }t        t               | j                  t        j                  t                     g      }nt        t        j                        }d }t               }|j                  |        ||t        t        j                        <   |||t        t        j                        <   |j                  | j                   |      |_        |S # t        $ r> t        t               | j                  t        j                  t                     g      }Y w xY w)Nr   FlateDecode)filtersrW  r   rS  rN   r9   r'   FTFLATE_DECODEr(   r   DECODE_PARMS	TypeErrorrQ  r   encoder?  )rA   rT  rW  fparamsr   s         rD   flate_encodezStreamObject.flate_encode  sW   )99RYYA![)BOO!< Aq AB(#Q+-(PQF  BOO!<a @A$\488BOOZ\#JK 2??+AF$&d()z"))$%28F:boo./"))$**e<' ! (#txx'OPFs   "<F AGGc                     ddl m} | j                  dd      dk7  r 	 | j                   d}t        |t                ||       \  }}}|y|S # t        $ r | j                          d}Y ?w xY w)	aB  
        Try to decode the stream object as an image

        Returns:
            a PIL image if proper decoding has been found
        Raises:
            Exception: Errors during decoding will be reported.
                It is recommended to catch exceptions to prevent
                stops in your program.

        r   )_xobj_to_imagez/Subtype z/Imagez does not seem to be an Imagez$ object does not seem to be an ImageN)rX  rb  r   rK   AttributeErrorr   r   r   )rA   rb  r   	extension_imgs         rD   decode_as_imagezStreamObject.decode_as_image  s     	-88J#x/O0011NO 3)*40	1c
 " O))MNOs   A A,+A,r:  rT   )r   )r   r   r   r  r   r=   r   r   r	   r   r
   rf   r   re   r\   r   rV   rg   rJ  rL  rN  r   r|   r   r   r   r   r`  rh  __classcell__r[   s   @rD   rO   rO     s@   @# 
2OO $O 	O
  sCx 9:O U38_%O 
O@	6# 	6% U t   MQ% %27c58H2I%	% 38n	;	< # /D @ rE   rO   c                       e Zd Zy)rB  N)r   r   r   r   rE   rD   rB  rB  3  s    rE   rB  c                   <     e Zd ZddZdefdZdeddf fdZ xZS )rQ  r;   Nc                     d | _         y rT   )r@  r]   s    rD   r  zEncodedStreamObject.__init__8  s
    ;?rE   c                 h   ddl m} | j                  | j                  j                         S t	               }|j                   ||              | j                         D ]<  \  }}|t        j                  t        j                  t        j                  fvs8|||<   > || _        |j                         S )Nr   )decode_stream_data)rX  ro  r@  rJ  rB  rL  r`   r   r   rS  r[  )rA   ro  decodedr   r   s        rD   rJ  zEncodedStreamObject.get_data<  s    0($$--// &'+D12**,JC299biiAA$ ' $!!rE   rC   c                    ddl m} | j                  t        j                  d      t
        j                  t
        j                  gfv rt        |t              st        d      | j                  | j                          | j                  J d       | j                  j                  |       t        | 1  |j                  |             y t        d      )Nr   rV  rc  zData must be bytesr   zJStreams encoded with a filter different from FlateDecode are not supported)rX  rW  r   r   rS  rY  rZ  rN   rg   r\  r@  rJ  rL  rF  r]  r    )rA   rC   rW  r[   s      rD   rL  zEncodedStreamObject.set_dataM  s    )88BIIr"r8I&JJdE* 455  ($$08&80&&t,G[//56\ rE   r:  )r   r   r   r  rg   rJ  rL  ri  rj  s   @rD   rQ  rQ  7  s-    @"% ""U t  rE   rQ  c                       e Zd ZdZ	 ddedededeee   ee	ef   f   ddf fdZ
dedd fd	Z	 	 dded
edeeeee	f         dd fdZdeded
edeeeee	f         deee	e	f      ddf fdZdeddfdZdedeeef   fdZdefdZdeddf fdZedeeeef      fd       Zej:                  deeeef      ddfd       ZddZ	 ddededeef   ddf fdZ xZ S )ContentStreama  
    In order to be fast, this data structure can contain either:

    * raw data in ._data
    * parsed stream operations in ._operations.

    At any time, ContentStream object can either have both of those fields defined,
    or one field defined and the other set to None.

    These fields are "rebuilt" lazily, when accessed:

    * when .get_data() is called, if ._data is None, it is rebuilt from ._operations.
    * when .operations is called, if ._operations is None, it is rebuilt from ._data.

    Conversely, these fields can be invalidated:

    * when .set_data() is called, ._operations is set to None.
    * when .operations is set, ._data is set to None.
    Nrt   rL   r}   r;   c                 J   || _         g | _        |t        |   d       || _        y |j	                         }t        |t              rd}|D ]  }|j	                         }t        |t              r$t        |t              s(t        dt        |      j                   dt               n||j                         z  }t        |      dk(  s	|d   dk7  s|dz  } t        |   t        |             || _        y |j                         }|J t        |   |       || _        y )NrE   zExpected StreamObject, got z instead. Data might be wrong.r   r   r   )rL   _operationsrF  rL  r   rN   r9   r(   rO   r   typer   rJ  r   rg   r}   )	rA   rt   rL   r}   rC   r   
s_resolvedstream_datar[   s	           rD   r  zContentStream.__init__s  s#    46 >GS!2  // &&(F&+.A!"J!*j9 %j,? '9$z:J:S:S9TTrs$
 
 3 3 554yA~bU):    t-
  / %oo/"... -.rE   r:   c           	         t        d| j                  | j                  d d       |d            }| j                  |_        	 | j                  }|d | _        n t        d|j                  |            | _        | j                         D ]6  \  }}t        |d      r|j                  |      n|||j                  |      <   8 |S # t        $ r Y Vw xY w)Nrs  FrB  r=   )r   r>   r[   r?  r@  r=   rM   r`   r?   rL  rL   rd   ru  r}   rC  s         rD   r=   zContentStream.replicate  s     !!$..t"<hN
 JJ			,,L#$(!$()<+A+A(+K%!
 JJLDAq)0K)@H%a H%& ! 
  		s    6C 	CCrF   rG   c           	          	 | j                   j                  |k(  r|s| S t               }t	        d| j                  | j                  dd      ||            }|g }|j                  | ||||       |S # t        $ r Y ]w xY w)z
        Clone object into pdf_dest.

        Args:
            pdf_dest:
            force_duplicate:
            ignore_fields:

        Returns:
            The cloned ContentStream

        rs  N)rK   rL   rM   re   r   r>   r[   r   r   s         rD   rJ   zContentStream.clone  s    $	&&**h6 ),!!tT*Ho
  M

4?M7K
  		s   A1 1	A=<A=r   r   c                     t        d|      }t        | 	  |j                         || _        t        |j                        | _        |j                  | _        y)rE  rs  N)r   rF  rL  r?  rL   rd   ru  r}   )rA   r   r:   rF   rG   r   src_csr[   s          rD   r   zContentStream._clone  sJ    $ os+& 2 23%55rE   c                    |j                  dd       g }	 t        |      }|dv ry |j                  dd       |j                         s|dv rut        |t        j
                        }|dk(  r6|g k(  sJ | j                  |      }| j                  j                  |df       nf| j                  j                  ||f       g }nF|dk(  r|d	vr=|j                  d      }|d	vrn&|j                  t        |d | j                               )
Nr   )rE   r   r   r"   )   '   "   BI   INLINE IMAGEr   )r   r   rE   )r   r   isalphar   r'   delimiter_pattern_read_inline_imageru  r@   r   r   r}   )rA   rt   operandspeekoperatoriis         rD   _parse_content_streamz#ContentStream._parse_content_stream  s   Aq57&v.DxKKA||~!5+FJ4P4PQu$ $r>)>008B$$++R,AB$$++Xx,@A!H "55!;;q>D "55 FD$:N:N OP3 rE   c           	      P   t               }	 t        |      }|j                  dd       |dk(  rnOt        || j                        }t        |      }|j                  dd       t        || j                        }|||<   r|j                  d      }|d d dk(  sJ |j                  d|j                  dd	            }|j                         }t        |t              r|d
   }d|v sd|v rt        |      }	nd|v sd|v rt        |      }	nd|v sd|v rt        |      }	nd|v sd|v rt        |      }	n|d	k(  r|j                  dd      }
t        |
t              r|
d
   }
d|
v rd}n7d|
v rd}n0|j                  d|
dv rdnd      }|d
kD  r|dz  }nt        |      }	d}|d
kD  rB|j                  t        t!        t"        |d         |z        t!        t"        |d         z        }	t        |      }|j                  dd       nt        |      }	|j                  d      }|j                  dd       |d d dk7  s|dd t$        vra|j                  |d
       t        |      }	|j                  d      }|j                  dd       |d d dk7  s|dd t$        vrt'        d|      |	d S )!Nr   r"      Ir5   r   s   ID/Fz/Filterznot setr   AHxASCIIHexDecodeA85ASCII85DecodeRLRunLengthDecodeDCT	DCTDecodez/CSrc  RGBCMYK   z/BPC>   /G/I/Indexed/DeviceGrayr   g       @z/Wz/H   EIzHCould not extract inline image, even using fallback. Expected 'EI', got )settingsrC   )r   r   r   r   rL   r   r   r   rN   rd   r/   r.   r2   r0   r1   r   r   r   r   r!   )rA   rt   r  r   r   r   r   filtrsavposrC   cslcsbitseis                 rD   r  z ContentStream._read_inline_image  s    $%%f-CKKAd{fdhh/C%f-CKKA1E!HSM  kk!n2Aw%T8<<	9#EFeT"!HEE>-6%f-De^%7%f-DU]/58$V,De^{e3%f-DieR(B"d#U{2||FFAB !8*C1&9DCQw{{c8D>2S89Dhtn<UU %V,BKKA)&1D[[^Bbq6U?b1g[8KK")&1DQBKKA"1v"Qq'"< %^_a^de  %d33rE   c                 J   | j                   st               }| j                  D ]  \  }}|dk(  r|j                  d       t               }|d   j	                  |       |j                  |j                         dd        |j                  d       |j                  |d          |j                  d       n:|D ]$  }|j	                  |       |j                  d	       & |j                  |       |j                  d
        |j                         | _         | j                   S )Nr  r  r  r   s   ID rC   r  rz   r   )r?  r   ru  r{   r|   getvalue)rA   new_datar  r  	dict_textops         rD   rJ  zContentStream.get_dataa  s    zzyH&*&6&6"(.NN5) '	IZ(88CNN9#5#5#7"#=>NN6*NN8F#34NN5)&**84 t, ' NN8,u% '7 "**,DJzzrE   rC   c                 2    t         |   |       g | _        y rT   )rF  rL  ru  rO  s     rD   rL  zContentStream.set_dataw  s    rE   c                     | j                   s7| j                  r+| j                  t        | j                               d| _        | j                   S r>  )ru  r?  r  r   r]   s    rD   
operationszContentStream.operations{  s;    DJJ&&wtzz':;DJrE   r  c                      || _         d| _        y r>  )ru  r?  )rA   r  s     rD   r  zContentStream.operations  s    %
rE   c                     | j                   r<| j                   j                  dg df       | j                   j                  g df       y | j                  rd| j                  z   dz   | _        y y )Nr      q   Qs   q
s   
Q
)ru  insertr@   r?  r]   s    rD   isolate_graphics_statez$ContentStream.isolate_graphics_state  s^    ##ADz2##RJ/ZZ$**,x7DJ rE   ru   c                 v    | j                   s| j                  r| j                          t        |   ||       y rT   )r?  ru  rJ  rF  r|   )rA   rt   ru   r[   s      rD   r|   zContentStream.write_to_stream  s,     zzd..MMO7rE   rT   r   r:  )!r   r   r   __doc__r   r
   rf   rd   r   r   r  r   r=   r   r	   r   rJ   r   re   r\   r   r   r  r  rg   rJ  rL  r  r  setterr  r|   ri  rj  s   @rD   rs  rs  ^  s   0 HL	%/%/ %/ tS$s)T#s(^CD	%/
 
%/N# 
B !&=?	"" "  sCx 9:	"
 
"H66 $6 	6
  sCx 9:6 U38_%6 
64QJ Q4 Q>I4 I4S#X I4X% ,U t   DsEz!23     T%U
*;%<   8 MQ8 827c58H2I8	8 8rE   rs  rt   rL   r}   c                 R   | j                  d      }| j                  dd       |dk(  rt        j                  | |      S |dk(  rK| j                  d      }| j                  dd       |dk(  rt        j                  | ||      S t        | |      S |dk(  rt        j                  | ||      S |d	v rt        j                  |       S |d
k(  rt        | |      S |dk(  r| j                  d      dk(  r
t               S |dk(  rt        j                  |       S |dk(  r5t        |        t        |       }| j                  dd       t        | ||      S |dv rv| j                  d      }| j                  t        |       d       t        j                  |      |J d       t!        j                  | |      S t#        j                  |       S | j%                         }| j                  dd       | j                  d      }| j                  |       t'        |        t)        d|d| d|      )Nr"   r      /   <r   r  r   ry   )   t   f   (   e   s   endobj   nr   s   0123456789+-.   r   iP   z(Invalid Elementary Object starting with z @z: )r   r   r'   r   r   r3   r9   r#   r4   r(   r   r   r   r   IndirectPatternmatchr&   r)   r   r   r    )rt   rL   r}   r   r  r   stream_extracts          rD   r   r     s   
 ++a.C
KKA
d{**6377
d{{{1~B5=#44VS/RR*6?CC
d{++FCII
l--f55
d{&v??
d{v{{1~2|
d{**622
d{&!!&)B6388
{{2SYJ"  &2?*F*?!2263??,,V44
++-C
KKQ[[_N
KK&!

23'C5>BTU rE   c                   8   e Zd ZdZdeddfdZedee   fd       Z	edee   fd       Z
eded   fd	       Zedee   fd
       Zedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zy)Fieldz
    A class representing a field dictionary.

    This class is accessed through
    :meth:`get_fields()<pypdf.PdfReader.get_fields>`
    rC   r;   Nc                    t         j                  |        t        j                         t	        j                         z   }|j
                  | _        |D ]  }	 ||   | t        |      <    t        | j                  d      t              rst        t        | t        d               j                         }t        |t              r|j                         }n|d}nt        d      t!        |      | t        d      <   y y # t        $ r Y w xY w)Nr   rc  zShould never happen)r   r  r   
attributesr   rK   r'   r   rN   r   rQ  r   rJ  rg   decoderM   r+   )rA   rC   field_attributesattrdd_strs         rD   r  zField.__init__  s    !!$'%002+6689 	 #'"9"9$D)-dZ%& %
 dhhtn&9:($z$/?*@AJJLA!U#
 566%5e%<DD!" ;  s   C<<	DDc                 @    | j                  t        j                        S )z4Read-only property accessing the type of this field.)r   r   rY  r]   s    rD   
field_typezField.field_type       xx14455rE   c                 @    | j                  t        j                        S )z6Read-only property accessing the parent of this field.)r   r   Parentr]   s    rD   r  zField.parent  s     xx18899rE   r9   c                 @    | j                  t        j                        S )z4Read-only property accessing the kids of this field.)r   r   Kidsr]   s    rD   kidsz
Field.kids  s     xx16677rE   c                 @    | j                  t        j                        S )z4Read-only property accessing the name of this field.)r   r   Tr]   s    rD   namez
Field.name  s     xx13344rE   c                 @    | j                  t        j                        S )z>Read-only property accessing the alternate name of this field.)r   r   TUr]   s    rD   alternate_namezField.alternate_name  r  rE   c                 @    | j                  t        j                        S )z
        Read-only property accessing the mapping name of this field.

        This name is used by pypdf as a key in the dictionary returned by
        :meth:`get_fields()<pypdf.PdfReader.get_fields>`
        )r   r   TMr]   s    rD   mapping_namezField.mapping_name       xx14455rE   c                 @    | j                  t        j                        S )z
        Read-only property accessing the field flags, specifying various
        characteristics of the field (see Table 8.70 of the PDF 1.7 reference).
        )r   r   Ffr]   s    rD   flagszField.flags  s     xx14455rE   c                 @    | j                  t        j                        S )zs
        Read-only property accessing the value of this field.

        Format varies based on field type.
        )r   r   Vr]   s    rD   r   zField.value  s     xx13344rE   c                 @    | j                  t        j                        S )z=Read-only property accessing the default value of this field.)r   r   DVr]   s    rD   default_valuezField.default_value  r  rE   c                 @    | j                  t        j                        S )z
        Read-only property accessing the additional actions dictionary.

        This dictionary defines the field's behavior in response to trigger
        events. See Section 8.5.2 of the PDF 1.7 reference.
        )r   r   AAr]   s    rD   additional_actionszField.additional_actions!  r  rE   )r   r   r   r  r   r  r  r	   r'   r  r  r  rf   r  r  r  r   r  r   r   r  r  r   rE   rD   r  r    sW   =- =$ =. 6HZ0 6 6 :!12 : : 8h}- 8 8 5hsm 5 5 6 6 6 6hsm 6 6 6x} 6 6 5x} 5 5 6x} 6 6 6H-=$> 6 6rE   r  c                      e Zd ZU dZdZee   ed<   dee	e
f   deeeeef   deddfdZedd
       Z	 ddedede	e
f   ddfdZedee	   fd       Zedee   fd       Zedee	   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zeded	   fd       Zedee   fd       Z edee   fd       Z!y)Destinationa  
    A class representing a destination within a PDF file.

    See section 12.3.2 of the PDF 2.0 reference.

    Args:
        title: Title of this destination.
        page: Reference to the page of this destination. Should
            be an instance of :class:`IndirectObject<pypdf.generic.IndirectObject>`.
        fit: How the destination is displayed.

    Raises:
        PdfReadError: If destination type is invalid.

    Nnodetitlepagefitr;   c                    g | _         |j                  }|j                  }t        j	                  |        t        |      | t        d      <   || t        d      <   || t        d      <   |dk(  rt        |      dk  r|j                  t        d             t        |      dk  r|j                  t        d             t        |      dk  r|j                  t        d             |\  | t        t        j                        <   | t        t        j                        <   | t        d	      <   y t        |      d
k(  ry |t        j                  k(  rp|\  | t        t        j                        <   | t        t        j                        <   | t        t        j                         <   | t        t        j                        <   y |t        j"                  t        j$                  fv r 	 |\  | t        t        j                        <   y |t        j*                  t        j,                  fv r 	 |\  | t        t        j                        <   y |t        j.                  t        j0                  fv ry t3        d|      # t&        $ r' t)               | t        t        j                        <   Y y w xY w# t&        $ r' t)               | t        t        j                        <   Y y w xY w)N/Title/Pager   z/XYZr"   g        r   r5   /Zoomr   zUnknown Destination Type: )_filtered_childrenfit_typefit_argsr   r  r+   r'   r   r@   r)   TALEFTTOPTFFIT_RBOTTOMRIGHTFIT_HFIT_BHrM   r(   FIT_VFIT_BVFITFIT_Br    )rA   r  r  r  typargss         rD   r  zDestination.__init__A  s5    .0ll||!!$'%5e%<Z!"$(Z !$'Z ! &=4y1}L-.4y1}L-.4y1}L-.
 	Z()Z'(Z()Y!^BHH_ Z()Z		*+Z)*Z'(RXXryy))>.2+j() RXXryy))?/3,j)* RVVRXX&&!;C7CDD  >/9|j()>
  ?0:j)*?s$   !I3 #J& 3-J#"J#&-KKr9   c                 z    t        | j                  d      | d   gdD cg c]  }|| v r| |    c}z         S c c}w )Nr  r   )/Left/Bottom/Right/Topr  )r9   r   )rA   rX   s     rD   
dest_arrayzDestination.dest_arrayv  sW    \\'"DM2 IHA9 QH
 	
s   8
rt   ru   c                    |t        dd       |j                  d       t        d      }|j                  |       |j                  d       | j                  }|j                  |       t        d      }|j                  |       |j                  d       t        d      }|j                  |       |j                  d       |j                  d	       y )
Nrw   rx   r   z/Drz   z/Sz/GoTor   r   )r   r{   r'   r|   r  )rA   rt   ru   r   r   value_ss         rD   r|   zDestination.write_to_stream  s     %&A7 	WF#Tf%F#TW%'UUrE   c                 $    | j                  d      S )z3Read-only property accessing the destination title.r  r   r]   s    rD   r  zDestination.title  s     xx!!rE   c                 $    | j                  d      S )zHRead-only property accessing the IndirectObject of the destination page.r  r  r]   s    rD   r  zDestination.page       xx  rE   c                 $    | j                  d      S )z2Read-only property accessing the destination type.r   r  r]   s    rD   r  zDestination.typ  r  rE   c                 &    | j                  dd      S )z-Read-only property accessing the zoom factor.r  Nr  r]   s    rD   zoomzDestination.zoom       xx&&rE   c                 &    | j                  dd      S )z<Read-only property accessing the left horizontal coordinate.r  Nr  r]   s    rD   leftzDestination.left  r  rE   c                 &    | j                  dd      S )z=Read-only property accessing the right horizontal coordinate.r	  Nr  r]   s    rD   rightzDestination.right  s     xx$''rE   c                 &    | j                  dd      S )z9Read-only property accessing the top vertical coordinate.r
  Nr  r]   s    rD   topzDestination.top  s     xx%%rE   c                 &    | j                  dd      S )z<Read-only property accessing the bottom vertical coordinate.r  Nr  r]   s    rD   bottomzDestination.bottom  s     xx	4((rE   c           
      t    | j                  dt        t        d      t        d      t        d      g            S )zHRead-only property accessing the color in (R, G, B) with values 0.0-1.0.z/Cr   )r   r9   r%   r]   s    rD   colorzDestination.color  s2     xx+{1~{1~{1~NO
 	
rE   c                 &    | j                  dd      S )z_
        Read-only property accessing the font type.

        1=italic, 2=bold, 3=both
        r  r   r  r]   s    rD   font_formatzDestination.font_format  s     xxa  rE   c                 &    | j                  dd      S )z
        Read-only property accessing the outline count.

        positive = expanded
        negative = collapsed
        absolute value = number of visible descendants at all levels
        r  Nr  r]   s    rD   outline_countzDestination.outline_count  s     xx$''rE   )r;   r9   rT   )"r   r   r   r  r  r	   r   __annotations__r
   rf   rg   r)   r&   r(   r-   r  r  r  r   r|   r  r  r  r   r  r%   r  r  r  r  r  r   r!  r#  r   rE   rD   r  r  ,  s	   $ 	 	( 3ES%Z 3E L.*>NNO3E 	3E
 
3Ej 
 
 MQ 27c58H2I	. "x} " " !h~. ! ! !Xc] ! ! 'hsm ' ' 'h{+ ' ' (x, ( ( &Xk* & & )- ) ) 
x. 
 
 !Xo6 ! ! (x} ( (rE   r  rT   )[
__author____author_email__loggingr   syscollections.abcr   r   ior   mathr   typingr   r   r	   r
   r   
_protocolsr   r   r   _utilsr   r   r   r   r   r   r   r   	constantsr   r   r   r   rY  r   r   r   r  r   r  errorsr   r    r!   _baser#   r$   r%   r&   r'   r(   r)   r*   r+   r,   _fitr-   _image_inliner.   r/   r0   r1   r2   r3   r4   version_infor7   typing_extensions	getLoggerr   loggerr   r  rd   r9   r   r   r  r1  rO   rB  rQ  rs  rf   r   r   r  r  r   rE   rD   <module>r8     s  : 
/   	 
 .    V U	 	 	 
 * . * - O O     Iw&			8	$"**@Ac$s)Y cLYtCH~y YxN*! N*b+S +T +"i# iX	, 	$, $Nv8' v8x	 DH//	#	$/ 4d3ic3h?@/ 9c3-.	/d`6J `6Fm(* m(rE   