
    Pǻi                     H   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZ ej$                  dd dk\  rd dlmZ nd dlmZ ej$                  d	k\  rd d
lmZ nd d
lmZ ddlmZ ddlmZmZ ddlmZmZmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z& dZ'dZ( G d de      Z) G d de)      Z* G d de)      Z+ G d de)      Z,dZ- G d de.e)      Z/ G d de0e)      Z1 G d de2e)      Z3 G d  d!e4e)      Z5 G d" d#e4e)      Z6d$e4d%e2fd&Z7d'ed%eede*e,f      fd(Z8y))    N)Sequence)log10)iter_unpack)AnyCallableClassVarOptionalUnioncast   )   
   )	TypeGuard)r      )Self)_pdfdoc_encoding_rev)PdfObjectProtocolPdfWriterProtocol)
StreamTypeclasspropertydeprecation_no_replacementdeprecation_with_replacementlogger_warningread_non_whitespaceread_until_regex)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamErrorzMathieu Fenniakzbiziqe@mathieu.fenniak.netc                       e Zd ZU ej                  Zed   ed<   ed   ed<   de	fdZ
defdZde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ded	ededefdZded    fdZ	 ddededeef   ddfdZy)	PdfObject).zhashlib._Hash	hash_funcIndirectObjectindirect_referencereturnc                 F    t        | j                  j                   d      )q
        Used to detect modified object.

        Returns:
            Hash considering type and value.

        z& does not implement .hash_bin() so farNotImplementedError	__class____name__selfs    Q/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/pypdf/generic/_base.pyhash_binzPdfObject.hash_binE   s'     "~~&&''MN
 	
    c                 $    |  j                         S Nencoder+   s    r-   hash_value_datazPdfObject.hash_value_dataQ   s    !!r/   c                     | j                   j                   d| j                  | j                               j	                          j                         S )N:)r)   r*   r!   r4   	hexdigestr3   r+   s    r-   
hash_valuezPdfObject.hash_valueT   sG    ~~&&'q~~d2245??ABD
&(	r/   pdf_destc                 $    | j                  |      S )a/  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter)
        without ensuring links. This is used in clone_document_from_root with incremental = True.

        Args:
          pdf_dest: Target to clone to.

        Returns:
          The cloned PdfObject

        )cloner,   r9   s     r-   	replicatezPdfObject.replicateZ   s     zz(##r/   force_duplicateignore_fieldsc                 F    t        | j                  j                   d      )a  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter).

        By default, this method will call ``_reference_clone`` (see ``_reference``).


        Args:
          pdf_dest: Target to clone to.
          force_duplicate: By default, if the object has already been cloned and referenced,
            the copy will be returned; when ``True``, a new copy will be created.
            (Default value = ``False``)
          ignore_fields: List/tuple of field names (for dictionaries) that will be ignored
            during cloning (applies to children duplication as well). If fields are to be
            considered for a limited number of levels, you have to add it as integer, for
            example ``[1,"/B","/TOTO"]`` means that ``"/B"`` will be ignored at the first
            level only but ``"/TOTO"`` on all levels.

        Returns:
          The cloned PdfObject

        z! does not implement .clone so farr'   r,   r9   r>   r?   s       r-   r;   zPdfObject.clonek   s'    6 "~~&&''HI
 	
r/   r;   c                 r   	 |s|j                   j                  |k(  r|S 	 | j                   }|j                  rJ|H|j                  |j
                  k(  r/|j                  t        |j                        k  r|j                  }nt        |j                        dz   }|t        |j                        |j                  vrQi |j                  t        |j                        <   |j                  |j                  t        |j                           d<   |sr|j                  |j                  t        |j                           v rD|j                  |j                  t        |j                           |j                           }|J |S ||j                  t        |j                           |j                  <   	 ||j                  |dz
  <   t        |d|      |_         |S # t        $ r Y w xY w# t        $ r |cY S w xY w# t        $ r3 |j                  j                  |       t        |j                        }Y pw xY w)aX  
        Reference the object within the _objects of pdf_dest only if
        indirect_reference attribute exists (which means the objects was
        already identified in xref/xobjstm) if object has been already
        referenced do nothing.

        Args:
          clone:
          pdf_dest:

        Returns:
          The clone

           	PreventGCr   )r#   pdf	ExceptionAttributeErrorincremental_readeridnumlen_objectsid_id_translated
get_object
IndexErrorappendr"   )r,   r;   r9   r>   indiobjs          r-   _reference_clonezPdfObject._reference_clone   s   "	"u'?'?'C'Cx'O	))C   8+++		S!2!233		AH%%&*A?#''{("9"9979''3774DGGG''3774[A#II!8!8CGG!EE))++BswwK8C &
>?H##BswwK0;	'',Ha!e$ $2!Q#A I  		
  	L	6  	'$$U+H%%&A	's4   G G) 3G: 	G&%G&)G76G7:9H65H6c                     | S )zResolve indirect references. r+   s    r-   rO   zPdfObject.get_object       r/   Nstreamencryption_keyc                     t         r1   )r(   r,   rY   rZ   s      r-   write_to_streamzPdfObject.write_to_stream   s
     "!r/   FrW   )Fr1   )r*   
__module____qualname__hashlibsha1r!   r   __annotations__r	   intr.   bytesr4   r8   r   r=   boolr   r
   strr;   r   r   rU   rO   r   r]   rW   r/   r-   r    r    @   s   07Ix,-< !122

# 

" "E $#$ 
$( !&=?	
#
 
  sCx 9:	

 

@ PU88$58HL8	8tH[1 
 MQ" "27c58H2I"	"r/   r    c                       e Z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ded	edeef   ddfd
Zededd fd       ZdefdZdedefdZde	fdZy)
NullObjectr9   r>   r?   r$   c                 L    t        d| j                  t               ||            S )Clone object into pdf_dest.ri   )r   rU   ri   rA   s       r-   r;   zNullObject.clone   s'     $//
hX
 	
r/   c                 .    t        | j                  f      S r&   hashr)   r+   s    r-   r.   zNullObject.hash_bin   s     T^^%&&r/   NrY   rZ   c                 B    |t        dd       |j                  d       y )N/the encryption_key parameter of write_to_stream5.0.0   null)r   writer\   s      r-   r]   zNullObject.write_to_stream   s%     %&A7 	Wr/   c                 X    | j                  d      }|dk7  rt        d      t               S )N   rs   zCould not read Null object)readr   ri   )rY   nulltxts     r-   read_from_streamzNullObject.read_from_stream   s+    ++a.g;<<|r/   c                      y)Nri   rW   r+   s    r-   __repr__zNullObject.__repr__   s    r/   otherc                 "    t        |t              S r1   )
isinstanceri   r,   r|   s     r-   __eq__zNullObject.__eq__   s    %,,r/   c                 "    | j                         S r1   r.   r+   s    r-   __hash__zNullObject.__hash__       }}r/   r^   r1   )r*   r_   r`   r   rf   r	   r   r
   rg   rd   r;   r.   r   re   r]   staticmethodry   r{   objectr   r   rW   r/   r-   ri   ri      s     !&=?		
#	
 	
  sCx 9:		

 
	
'# ' MQ 27c58H2I	    # -F -t -# r/   ri   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defdZdefdZde
fdZ	 ddede	de
ef   ddfdZededd fd       Zy)BooleanObjectvaluer$   Nc                     || _         y r1   r   )r,   r   s     r-   __init__zBooleanObject.__init__   s	    
r/   r9   r>   r?   c                 b    t        d| j                  t        | j                        ||            S )rk   r   )r   rU   r   r   rA   s       r-   r;   zBooleanObject.clone  s/     !!-

";XW
 	
r/   c                 D    t        | j                  | j                  f      S rm   )ro   r)   r   r+   s    r-   r.   zBooleanObject.hash_bin  s     T^^TZZ011r/   oc                    t        |t              r| j                  |j                  k(  S t        |t              r| j                  |k(  S y)NF)r~   r   r   rf   r,   r   s     r-   r   zBooleanObject.__eq__  s:    a'::((a::?"r/   c                 "    | j                         S r1   r   r+   s    r-   r   zBooleanObject.__hash__  r   r/   c                 "    | j                   rdS dS )NTrueFalser   r+   s    r-   r{   zBooleanObject.__repr__"  s    v00r/   rY   rZ   c                 ~    |t        dd       | j                  r|j                  d       y |j                  d       y )Nrq   rr      trues   false)r   r   rt   r\   s      r-   r]   zBooleanObject.write_to_stream%  s8     %&A7 ::LL!LL"r/   c                     | j                  d      }|dk(  rt        d      S |dk(  r| j                  d       t        d      S t        d      )Nrv   r   Ts   falsrC   FzCould not read Boolean object)rw   r   r   )rY   words     r-   ry   zBooleanObject.read_from_stream1  sJ    {{1~7? &&7?KKN '':;;r/   r^   r1   )r*   r_   r`   r   r   r   rf   r	   r   r
   rg   rd   r;   r.   r   r   r   r{   r   re   r]   r   ry   rW   r/   r-   r   r      s    c d  !&=?	

#

 

  sCx 9:	


 


2# 2 d # 1# 1 MQ
# 
#27c58H2I
#	
# < < < <r/   r   c                      e Zd ZdedededdfdZdefdZde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ed&d       Zded
   fdZdedd fdZded
   fdZdedefdZdedefdZdede
fdZdefdZdefdZdefdZdefdZde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!e dedd fd$       Z$y)(r"   rJ   
generationrE   r$   Nc                 .    || _         || _        || _        y r1   )rJ   r   rE   )r,   rJ   r   rE   s       r-   r   zIndirectObject.__init__=  s    
$r/   c                 l    t        | j                  | j                  t        | j                        f      S r1   )ro   rJ   r   rM   rE   r+   s    r-   r   zIndirectObject.__hash__B  s$    TZZ"TXX,?@@r/   c                     t        | j                  | j                  | j                  t	        | j
                        f      S rm   )ro   r)   rJ   r   rM   rE   r+   s    r-   r.   zIndirectObject.hash_binE  s,     T^^TZZ"TXX,OPPr/   r9   r    c                 D    t        | j                  | j                  |      S r1   )r"   rJ   r   r<   s     r-   r=   zIndirectObject.replicateO  s     djj$//8DDr/   r>   r?   c                 z   | j                   |k(  r|s| S t        | j                         |j                  vrQi |j                  t        | j                         <   | j                   |j                  t        | j                            d<   | j                  |j                  t        | j                            v r|j	                  |j                  t        | j                            | j                           }|r|J |j
                  J |j
                  }t        |j                  |j                  |j                         S | j	                         }|$t               }t        | t        f      sJ | |_        |j                  |j                  |||            }|J d       |j
                  J d       |j
                  S )rk   rD   mypy)rE   rM   rN   rJ   rO   r#   r"   r   ri   r~   _add_objectr;   )r,   r9   r>   r?   dupidrefrT   s          r-   r;   zIndirectObject.cloneU  s    88xKdhh<x66646H##BtxxL1AEH##BtxxL1+>::00DHH>>%%h&=&=bl&KDJJ&WXC&--999..%ekk53C3CUYYOO//#C{ l!$(9:::)-&&&		(O]CC &&%%19691%%%r/   c                     | S r1   rW   r+   s    r-   r#   z!IndirectObject.indirect_referencey  rX   r/   c                 8    | j                   j                  |       S r1   )rE   rO   r+   s    r-   rO   zIndirectObject.get_object}  s    xx""4((r/   memoc                 X    t        | j                  | j                  | j                        S r1   )r"   rJ   r   rE   )r,   r   s     r-   __deepcopy__zIndirectObject.__deepcopy__  s    djj$//488DDr/   c                     | j                         }t        |t              r,t        | j	                          d|j	                                |S )Nz references an IndirectObject )rO   r~   r"   r   r{   r   s     r-   _get_object_with_checkz%IndirectObject._get_object_with_check  sH    OOa( ==?##A!**,P  r/   namec                 p    	 t        | j                         |      S # t        $ r t        d| d      w xY w)NzNo attribute z* found in IndirectObject or pointed object)getattrr   rG   r,   r   s     r-   __getattr__zIndirectObject.__getattr__  sF    	4668$?? 	 v%OP 	s    5keyc                 (    | j                         |   S r1   r   r,   r   s     r-   __getitem__zIndirectObject.__getitem__  s    **,S11r/   c                 &    || j                         v S r1   r   r   s     r-   __contains__zIndirectObject.__contains__  s    d11333r/   c                 >    | j                         j                         S r1   )r   __iter__r+   s    r-   r   zIndirectObject.__iter__  s    **,5577r/   c                 >    | j                         j                         S r1   )rO   	__float__r+   s    r-   r   zIndirectObject.__float__  s     **,,r/   c                 >    | j                         j                         S r1   )rO   __int__r+   s    r-   r   zIndirectObject.__int__       ((**r/   c                 >    | j                         j                         S r1   )rO   __str__r+   s    r-   r   zIndirectObject.__str__  r   r/   c                 h    d| j                   d| j                  dt        | j                         dS )NzIndirectObject(z, ))rJ   r   rM   rE   r+   s    r-   r{   zIndirectObject.__repr__  s/     b0C2bl^STUUr/   r|   c                     |d uxr` t        |t              xrN | j                  |j                  k(  xr3 | j                  |j                  k(  xr | j                  |j                  u S r1   )r~   r"   rJ   r   rE   r   s     r-   r   zIndirectObject.__eq__  sc     &5.1&

ekk)& 5#3#33& EII%	
r/   c                 &    | j                  |       S r1   )r   r   s     r-   __ne__zIndirectObject.__ne__  s    ;;u%%%r/   rY   rZ   c                     |t        dd       |j                  | j                   d| j                   dj	                                y )Nrq   rr    z R)r   rt   rJ   r   r3   r\   s      r-   r]   zIndirectObject.write_to_stream  sD     %&A7 	

|1T__$5R8??ABr/   c                    d}	 | j                  d      }|st        t              |j                         rn||z  }9d}	 | j                  d      }|st        t              |j                         r|s6n||z  }<t	        |       }|dk7  r%t        dt        | j                                      t        t        |      t        |      |      S )Nr/   rC      Rz0Error reading indirect object reference at byte )
rw   r   r   isspacer   r   hextellr"   rd   )rY   rE   rJ   tokr   rs         r-   ry   zIndirectObject.read_from_stream  s    ++a.C$%ABB{{}SLE  
++a.C$%ABB{{}!#J   '9B3v{{}CUBVW  c%j#j/3??r/   r^   )r$   r"   r1   )%r*   r_   r`   rd   r   r   r   r.   r   r=   rf   r	   r   r
   rg   r;   propertyr#   rO   r   r   r   r   r   r   r   r   r   r{   r   r   r   r   re   r]   r   ry   rW   r/   r-   r"   r"   <  s   c s   
A# AQ# QE#E 
E !&=?	"&#"& "&  sCx 9:	"&
 
"&H  )H[1 )E E)9 E(=   2s 2s 24 4 48# 8-3 -+ ++ +V# V
F 
t 
&F &t & MQC C27c58H2IC	C @ @# @:J @ @r/   r"      c                       e Zd Z	 ddedee   de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
fdZde
fdZdefdZ	 ddede	de
ef   ddfdZy)FloatObjectNr   contextr$   c                     	 t        |      }t         j                  | |      S # t        $ r6}t        | d| dt               t         j                  | d      cY d }~S d }~ww xY w)Nz : FloatObject (z) invalid; use 0.0 insteadg        )float__new__rF   r   r*   )clsr   r   es       r-   r   zFloatObject.__new__  sb    		+%LE==e,, 	+ #%eW,FG ==c**	+s    # 	A"+AA"A"r9   r>   r?   c                 N    t        d| j                  t        |       ||            S )rk   r   )r   rU   r   rA   s       r-   r;   zFloatObject.clone  s+     !!+d"3XO
 	
r/   c                 D    t        | j                  | j                  f      S rm   ro   r)   
as_numericr+   s    r-   r.   zFloatObject.hash_bin  s     T^^T__566r/   c                     | dk(  ryt         t        t        t        |                   z
  }| dt	        d|       dj                  d      j                  d      S )Nr   0.0.rC   f0)FLOAT_WRITE_PRECISIONrd   r   absmaxrstrip)r,   nbs     r-   myreprzFloatObject.myrepr  sS    19"Ss4y)9%::qQAo&..s3::3??r/   c                 "    | j                         S r1   )r   r+   s    r-   r{   zFloatObject.__repr__  s    {{}r/   c                     t        |       S r1   )r   r+   s    r-   r   zFloatObject.as_numeric  s    T{r/   rY   rZ   c                 |    |t        dd       |j                  | j                         j                  d             y Nrq   rr   utf8)r   rt   r   r3   r\   s      r-   r]   zFloatObject.write_to_stream  s6     %&A7 	T[[]))&12r/   )r   Nr^   r1   )r*   r_   r`   r   r	   r   r   rf   r   r
   rg   rd   r;   r.   r   r{   r   r   r   re   r]   rW   r/   r-   r   r     s    :>++*23-+	+" !&=?	



 

  sCx 9:	


 


7# 7@ @# E  MQ3 327c58H2I3	3r/   r   c                       e Zd Z ej                  d      Zdede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fd
Z	 ddededeef   ddfdZededed   fd       Zy)NumberObjects	   [^+-.0-9]r   r$   c                     	 t         j                  | t        |            S # t        $ r- t        d| dt               t         j                  | d      cY S w xY w)NzNumberObject(z) invalid; use 0 insteadr   )rd   r   
ValueErrorr   r*   )r   r   s     r-   r   zNumberObject.__new__   sP    	';;sCJ// 	']5'1IJHU;;sA&&	's   ! 3AAr9   r>   r?   c                 N    t        d| j                  t        |       ||            S )rk   r   )r   rU   r   rA   s       r-   r;   zNumberObject.clone'  s+     !!,t"4hP
 	
r/   c                 L    t        | j                  | j                         f      S rm   r   r+   s    r-   r.   zNumberObject.hash_bin3  s     T^^T__%6788r/   c                 H    t        t        |       j                  d            S )Nr   )rd   reprr3   r+   s    r-   r   zNumberObject.as_numeric=  s    4:$$V,--r/   NrY   rZ   c                 r    |t        dd       |j                  t        |       j                  d             y r   )r   rt   r   r3   r\   s      r-   r]   zNumberObject.write_to_stream@  s4     %&A7 	T$Z&&v./r/   )r   r   c                 j    t        | t        j                        }d|v rt        |      S t        |      S )N   .)r   r   NumberPatternr   )rY   nums     r-   ry   zNumberObject.read_from_streamI  s1    v|'A'AB3;s##C  r/   r^   r1   )r*   r_   r`   recompiler   r   r   r   rf   r	   r   r
   rg   rd   r;   r.   r   r   re   r]   r   ry   rW   r/   r-   r   r     s    BJJ|,M'C 'D ' !&=?	



 

  sCx 9:	


 


9# 9.C . MQ0 027c58H2I0	0 ! !6S0T ! !r/   r   c                       e Zd ZdZ	 	 ddededeeee	e
f         dd fdZde
fdZedefd       Z	 dd
eded	e	ef   dd	fdZde	fdZy	)ByteStringObjecta>  
    Represents a string object where the text encoding could not be determined.

    This occurs quite often, as the PDF spec doesn't provide an alternate way to
    represent strings -- for example, the encryption data stored in files (like
    /O) is clearly not text, but is still stored in a "String" object.
    r9   r>   r?   r$   c           
      `    t        d| j                  t        t        |             ||            S )rk   r   )r   rU   r   re   rA   s       r-   r;   zByteStringObject.cloneZ  s2     !! t-x
 	
r/   c                 B    t        | j                  t        |       f      S rm   )ro   r)   re   r+   s    r-   r.   zByteStringObject.hash_binh  s     T^^U4[122r/   c                     | S )z7For compatibility with TextStringObject.original_bytes.rW   r+   s    r-   original_byteszByteStringObject.original_bytesr  s	     r/   NrY   rZ   c                     |t        dd       |j                  d       |j                  t        j                  |              |j                  d       y )Nrq   rr      <   >)r   rt   binasciihexlifyr\   s      r-   r]   z ByteStringObject.write_to_streamw  sH     %&A7 	TX%%d+,Tr/   c                     dgt        t        j                        }|D ]  }	 | j                  |      c S  t        d      # t        $ r Y .w xY w)Nutf-16zCannot decode ByteStringObject.)list
NameObjectCHARSETSdecodeUnicodeDecodeErrorr   )r,   charset_to_tryencs      r-   r   zByteStringObject.__str__  s_    "?T**=*=%>?! 	C{{3''	
 <== & s   A	AAr^   r1   )r*   r_   r`   __doc__r   rf   r	   r   r
   rg   rd   r;   r.   r   re   r  r   r]   r   rW   r/   r-   r   r   Q  s     !&=?	

 
  sCx 9:	

 

3# 3   
 MQ	 	27c58H2I			> >r/   r   c                       e Zd ZU dZeed<   eed<   eed<   dZee   ed<   de	de
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edefd       ZdefdZdefdZ	 ddededeef   ddfdZy)TextStringObjectz
    A string object that has been decoded into a real unicode string.

    If read from a PDF document, this string appeared to match the
    PDFDocEncoding, or contained a UTF-16BE BOM mark to cause UTF-16 decoding
    to occur.
    autodetect_pdfdocencodingautodetect_utf16	utf16_bomN_original_bytesr   r$   c                    d }t        |t              r|}|j                  d      }t        j	                  | |      }||_        d|_        d|_        d|_        |e|d d t        j                  t        j                  hv r@	 t        j	                  | |j                  d            }||_        d|_        |d d |_        |S 	 t#        |       d|_        |S # t        $ re}t        |d|j                  t               t        j	                  | |j                  d |j                    j                  d            }Y d }~d }~ww xY w# t$        $ r  d|_        t        j                  |_        Y |S w xY w)NcharmapFr/   r   r  z
initial string:T)r~   re   r  rg   r   r  r  r  r  codecsBOM_UTF16_LEBOM_UTF16_BEr  r   r   r*   startencode_pdfdocencodingUnicodeEncodeError)r   r   r  text_string_object	exceptions        r-   r   zTextStringObject.__new__  s   eU#"NLL+E [[e4-;*.3+7<4'*$%.!*<ATATV\ViVi@j*j
l%([[n6K6KH6U%V" 2@.26/+9"1+=( "!C%&89?C"< "!! & l m#4Y5E5E4HI &)[[i6F6FGX6Y6`6`ai6j%k"l & C6:"3/5/B/B",!!Cs+    %C  E 	EAD==E%E.-E.r9   r>   r?   c                     t        |       }| j                  |_        | j                  |_        | j                  |_        | j                  |_        t        d| j                  |||            S )rk   r  )r  r  r  r  r  r   rU   )r,   r9   r>   r?   rT   s        r-   r;   zTextStringObject.clone  sd     t$"22(,(F(F%#44 5 5c8_ U
 	
r/   c                 D    t        | j                  | j                  f      S rm   )ro   r)   r  r+   s    r-   r.   zTextStringObject.hash_bin  s     T^^T%8%89::r/   c                 R    | j                   | j                   S | j                         S )a-  
        It is occasionally possible that a text string object gets created where
        a byte string object was expected due to the autodetection mechanism --
        if that occurs, this "original_bytes" property can be used to
        back-calculate what the original encoded bytes were.
        )r  get_original_bytesr+   s    r-   r  zTextStringObject.original_bytes  s+     +'''&&((r/   c                 |   | j                   r| j                  t        j                  k(  r"t        j                  | j	                  d      z   S | j                  t        j
                  k(  r"t        j
                  | j	                  d      z   S | j	                  d      S | j                  rt        |       S t        d      )Nutf-16leutf-16bez#no information about original bytes)	r  r  r  r  r3   r  r  r  rF   r+   s    r-   r$  z#TextStringObject.get_original_bytes  s       ~~!4!44**T[[-DDD~~!4!44**T[[-DDD;;z**))(..=>>r/   c                    	 | j                   | j                   S | j                  rt        ddddd      t        |       }|S # t        $ r | j                  t
        j                  k(  r%t
        j                  | j                  d      z   }Y |S | j                  t
        j                  k(  r%t
        j                  | j                  d      z   }Y |S | j                  d      }Y |S w xY w)N forcedr&  r'  )	r  r  r  r  r  r  r  r3   r  )r,   bytearrs     r-   get_encoded_bytesz"TextStringObject.get_encoded_bytes  s    	2##/+++$$(Xr2rBB+D1G  " 	2~~!4!44 --J0GG
 	 6#6#66 --J0GG  ++j1	2s#   A &A AC$?C$C$#C$rY   rZ   c                 T   |t        dd       | j                         }|j                  d       t        d|      D ]Y  }t	        t
        |d         }|j                         s#|dk7  r|j                  dt        |      z         I|j                  |       [ |j                  d       y )	Nrq   rr      (cr       s   \%03o   ))r   r-  rt   r   r   re   isalnumord)r,   rY   rZ   r,  c_r0  s         r-   r]   z TextStringObject.write_to_stream  s     %&A7 ((*Tc7+ 		 BUBqE"A99;19
 YQ/0Q		  	Tr/   r^   r1   )r*   r_   r`   r  rf   rc   re   r  r	   r   r   r   r   r
   rg   rd   r;   r.   r   r  r$  r-  r   r]   rW   r/   r-   r  r    s      $#'+OXe_+!"C !"D !"L !&=?	

 
  sCx 9:	

 

 ;# ; 	) 	) 	)?E ? 5 ( MQ 27c58H2I	r/   r  c                      e Zd ZU  ej                  d      ZdZi dD  ci c]   }t        |      d|dj                         " c}}}  e	d      D  ci c]   }t        |      d|dj                         " c}}} Z
eeeef      ed<   	 	 dded	ed
eeeeef         dd fdZdefdZ	 ddededeef   ddfdZdefdZddZedefd       Zededefd       ZdZ edededd fd       Z!yc c}}} w c c}}} w )r
  s   \s+|[\(\)<>\[\]{}/%]   /s   #()<>[]{}/%#02X!   renumber_tabler9   r>   r?   r$   c                 N    t        d| j                  t        |       ||            S )rk   r
  )r   rU   r
  rA   s       r-   r;   zNameObject.clone$  s+     !!*T"2HoN
 	
r/   c                 0    t        | j                  | f      S rm   rn   r+   s    r-   r.   zNameObject.hash_bin0  s     T^^T*++r/   NrY   rZ   c                 ^    |t        dd       |j                  | j                                y )Nrq   rr   )r   rt   renumberr\   s      r-   r]   zNameObject.write_to_stream:  s+     %&A7 	T]]_%r/   c                    | d   j                  d      }|dk7  rt        d|  dd       |g}| dd  D ]N  }|dkD  r(|j                  d	 |j                  d      D               0	 |j                  | j                  |          P d
j                  |      S # t
        $ r# |j                  |j                  d             Y w xY w)Nr   utf-8r7  z<Incorrect first char in NameObject, should start with '/': (r   rr   rC   ~c              3   D   K   | ]  }d |dj                           yw)r8  r9  Nr2   ).0xs     r-   	<genexpr>z&NameObject.renumber.<locals>.<genexpr>M  s!     Maq3[//1Ms    r/   )r3   r   extendrQ   r;  KeyErrorjoin)r,   outpartsr0  s       r-   r?  zNameObject.renumberC  s    1gnnW%$;&NtfTUV ab 	4A3wM188G;LMM4LL!4!4Q!78	4 xx   4LL'!234s   #B)C ?C c                     t        |       j                  d      }t        j                  dd|      }t        j                  dd|      }t	        d|z         S )a0  
        Sanitize the NameObject's name to be a valid PDF name part
        (alphanumeric, underscore, hyphen). The _sanitize method replaces
        spaces and any non-alphanumeric/non-underscore/non-hyphen with
        underscores.

        Returns:
            NameObject with sanitized name.
        /z\ _z[^a-zA-Z0-9_-])rg   removeprefixr   subr
  r   s     r-   	_sanitizezNameObject._sanitizeU  sL     4y%%c*vveS$'vv'd3#*%%r/   c                     t        ddd       y)Nsurfixprefixrr   r7  )r   )r   s    r-   rS  zNameObject.surfixd  s    $XxAr/   sinc                 2   t               }d}|t        |       k  r^| ||dz    dk(  r+	 |j                  t        | |dz   |dz    d             |dz  }D|j                  | |          |dz  }|t        |       k  r^t        |      S # t        t
        f$ r Y Dw xY w)Nr   rC      #r      )	bytearrayrK   rQ   rd   r   rP   re   )rU  resultrS   s      r-   unnumberzNameObject.unnumberi  s    #c(l1QU|t#MM#c!a%!a%&8""=>FA
 MM#a&!FA #c(l V} #J/  s   )B BB)rA  gbklatin1rE   c                 4   | j                  d      }|t        j                  k7  rt        d      |t	        | t        j
                        z  }	 t        j                  |      }t        j                  D ]   }	 |j                  |      }t        |      c S  t        d|ddd      # t        $ r Y =w xY w# t        t        f$ rT}|j                  s3t        d|dt               t        |j                  d            cY d }~S t        d|d	      |d }~ww xY w)
NrC   zName read errorr)  r   zCode Not Foundz!Illegal character in NameObject (z-), you may need to adjust NameObject.CHARSETSr  z.). You may need to adjust NameObject.CHARSETS.)rw   r
  rT  r   r   delimiter_patternr[  r  r  rF   r  r  strictr   r*   )rY   rE   r   r  retr   s         r-   ry   zNameObject.read_from_stream}  s*   {{1~:$$$011 )E)EFF	 &&t,D!** ++c*C%c?* %Rq!5EFF !  #$67 	::7x @A A
 "$++i"8993D8 <> > 	sN   (B4 7B%B4 B4 %	B1.B4 0B11B4 4D9D<DDDr^   r1   )r$   r
  )"r*   r_   r`   r   r   r_  rT  chrr3   ranger;  r   dictrg   re   rc   r   rf   r	   r   r
   rd   r;   r.   r   r]   r?  rQ  r   rS  r   r[  r  ry   )rD  rS   rb  s   000r-   r
  r
    s   "

#;<F21?
@
@A3q6Qqg;%%''
@216r
;
;A3q6Qqg;%%''
;2NHT#u*-.  !&=?	



 

  sCx 9:	


 


,# , MQ& &27c58H2I&	&% $& u   e   " *H # ,  } A
;s   %C5
%C<
r
  unicode_stringr$   c                     	 t        | D cg c]  }t        |    c}      S c c}w # t        $ r t        d| ddd      w xY w)Npdfdocencodingr+  z#does not exist in translation table)re   r   rH  r  )re  ks     r-   r  r    sQ    	
~F!*1-FGGF 
 1
 	

s   	' "' ' A rE  c                     | du xsD t        | t              xr2 | j                         du xs t        | j                         t              S )z<
    Returns:
        True if x is None or NullObject.

    N)r~   r    rO   ri   )rE  s    r-   is_null_or_nonerj    sE     9 1i  	O\\^t#Mz!,,.*'Mr/   )9r  r  ra   r   syscollections.abcr   mathr   structr   typingr   r   r   r	   r
   r   version_infor   typing_extensionsr   _codecsr   
_protocolsr   r   _utilsr   r   r   r   r   r   r   errorsr   r   r   
__author____author_email__r    ri   r   r"   r   r   r   rd   r   re   r   rg   r  r
  r  rj  rW   r/   r-   <module>rx     sF  6    	 
 $   A ABQ7" +w& * =   P O
/ K"! K"\- -`;<I ;<|`@Y `@F  83% 83v1!3	 1!h8>ui 8>vMsI M`}i }@

# 

% 

	s 	ytZ/O)PQ 	r/   