
    i?1iL              	       V   d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZ  e j$                  e      Z G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d d      Z G d de      Z G d de      Z edee      Z G d dee         Z ee      Z  ee      Z!e jD                  Z#e!jD                  Z$ e$d      Z% e$d      Z& e$d      Z' e$d      Z( e$d      Z) e$d      Z*de+d efd!Z,de+d efd"Z- ej\                  d#      Z/ ej\                  d$      Z0 ej\                  d%      Z1 ej\                  d&      Z2 ej\                  d'      Z3 ej\                  d(      Z4 ej\                  d)      Z5 ej\                  d*      Z6 ej\                  d'      Z7 ej\                  d+      Z8 ej\                  d,      Z9d-d.d/d0d1d2d3d4d5Z:ee;e<eee=f   Z> G d6 d7      Z? ed8      Z@ee;e<ee=eee@f   ZAe
eBeAe@   f   ZC G d9 d:e?ee@         ZDy);    N)AnyBinaryIODictGenericIteratorListOptionalTupleTypeTypeVarUnion   )settings)choplistc                       e Zd Zy)PSExceptionN__name__
__module____qualname__     [/home/www/therecruiter.miabetepe.com/venv/lib/python3.12/site-packages/pdfminer/psparser.pyr   r          r   r   c                       e Zd Zy)PSEOFNr   r   r   r   r   r      r   r   r   c                       e Zd Zy)PSSyntaxErrorNr   r   r   r   r   r   #   r   r   r   c                       e Zd Zy)PSTypeErrorNr   r   r   r   r    r    '   r   r   r    c                       e Zd Zy)PSValueErrorNr   r   r   r   r"   r"   +   r   r   r"   c                       e Zd ZdZy)PSObjectz0Base class for all PS or PDF-related data types.N)r   r   r   __doc__r   r   r   r$   r$   /   s    :r   r$   c                   :    e Zd ZdZeeef   ZdeddfdZdefdZ	y)	PSLiteralaa  A class that represents a PostScript literal.

    Postscript literals are used as identifiers, such as
    variable names, property names and dictionary keys.
    Literals are case sensitive and denoted by a preceding
    slash sign (e.g. "/Name")

    Note: Do not create an instance of PSLiteral directly.
    Always use PSLiteralTable.intern().
    namereturnNc                     || _         y Nr(   selfr(   s     r   __init__zPSLiteral.__init__D   	    	r   c                 $    | j                   }d|z  S Nz/%rr,   r-   s     r   __repr__zPSLiteral.__repr__G       yyt|r   )
r   r   r   r%   r   strbytesNameTyper/   r3   r   r   r   r'   r'   5   s6    	 S%Z HX $ # r   r'   c                   ,    e Zd ZdZdeddfdZdefdZy)	PSKeywordaN  A class that represents a PostScript keyword.

    PostScript keywords are a dozen of predefined words.
    Commands and directives in PostScript are expressed by keywords.
    They are also used to denote the content boundaries.

    Note: Do not create an instance of PSKeyword directly.
    Always use PSKeywordTable.intern().
    r(   r)   Nc                     || _         y r+   r,   r-   s     r   r/   zPSKeyword.__init__X   r0   r   c                 $    | j                   }d|z  S r2   r,   r-   s     r   r3   zPSKeyword.__repr__[   r4   r   )r   r   r   r%   r6   r/   r5   r3   r   r   r   r9   r9   L   s&    U t # r   r9   _SymbolTc                   J    e Zd ZdZdee   ddfdZdej                  defdZ	y)PSSymbolTablezA utility class for storing PSLiteral/PSKeyword objects.

    Interned objects can be checked its identity with "is" operator.
    klassr)   Nc                      i | _         || _        y r+   dictr?   )r.   r?   s     r   r/   zPSSymbolTable.__init__i   s    8:	%*
r   r(   c                     || j                   v r| j                   |   }|S | j                  |      }|| j                   |<   |S r+   rA   )r.   r(   lits      r   internzPSSymbolTable.internm   sD    499))D/C 
 **T"C!DIIdO
r   )
r   r   r   r%   r   r<   r/   r'   r7   rE   r   r   r   r>   r>   c   s7    
+d8n + +9-- ( r   r>      {   }   [   ]s   <<s   >>xr)   c                     t        | t              s.t        j                  rt	        dj                  |             | }|S | j                  }t        |t              s	 t        |d      }|S |S # t        $ r Y |S w xY w)NzLiteral required: {!r}utf-8)	
isinstancer'   r   STRICTr    formatr(   r5   	ExceptionrJ   r(   s     r   literal_namerR      s    a#??6==a@AAD K vv$$4) K4K  Ks   A, ,	A98A9c                     t        | t              s"t        j                  rt	        d| z        | }|S t        | j                  dd      }|S )NzKeyword required: %rrL   ignore)rM   r9   r   rN   r    r5   r(   rQ   s     r   keyword_namerU      sI    a#??4q899D K 1667H-Kr   s   [\r\n]s   \ss   \Ss   [0-9a-fA-F]s   [#/%\[\]()<>{}\s]s   [^\s0-9a-fA-F]s   [0-9a-fA-F]{2}|.s   [^0-9]s   [()\134]s   [0-7]   	   
         (   )   \   )   b   t   n   f   r   (   )   \c                      e Zd ZdZdZdeddfdZdefdZd#dZ	d#d	Z
defd
Zd$dee   deddfdZdeddfdZd#dZdeeef   fdZdee   fdZdededefdZdeddfdZdededefdZdededefdZdededefdZdededefdZdededefdZdededefdZdededefdZdededefdZ dededefdZ!dededefd Z"dededefd!Z#deeef   fd"Z$y)%PSBaseParserz=Most basic PostScript parser that performs only tokenization.i   fpr)   Nc                 4    || _         | j                  d       y Nr   )rh   seekr.   rh   s     r   r/   zPSBaseParser.__init__   s    		!r   c                 b    d| j                   j                  | j                  | j                  fz  S )Nz<%s: %r, bufpos=%d>)	__class__r   rh   bufposr.   s    r   r3   zPSBaseParser.__repr__   s&    $(?(?$++'VVVr   c                      y r+   r   rp   s    r   flushzPSBaseParser.flush       r   c                 $    | j                          y r+   )rr   rp   s    r   closezPSBaseParser.close   s    

r   c                 4    | j                   | j                  z   S r+   )ro   charposrp   s    r   tellzPSBaseParser.tell   s    {{T\\))r   posnc                 :   | j                   j                         }|s| j                  | j                  z   }| j                   j	                  |       t
        j                  d|| j                   j                  |             | j                   j	                  |       y )Nzpoll(%d): %r)rh   rx   ro   rw   rk   logdebugread)r.   ry   rz   pos0s       r   pollzPSBaseParser.poll   se    ww||~++,CS		.#tww||A7Tr   c                     t         j                  d|       | j                  j                  |       || _        d| _        d| _        | j                  | _        d| _	        d| _
        g | _        y)z'Seeks the parser to the given position.zseek: %rr   r   N)r|   r}   rh   rk   ro   bufrw   _parse_main_parse1	_curtoken_curtokenpos_tokensr.   ry   s     r   rk   zPSBaseParser.seek   s[    		*c"S''<>r   c                    | j                   t        | j                        k  ry | j                  j	                         | _        | j                  j                  | j                        | _        | j                  st        d      d| _         y )NzUnexpected EOFr   )	rw   lenr   rh   rx   ro   r~   BUFSIZr   rp   s    r   fillbufzPSBaseParser.fillbuf   s_    <<#dhh-'gglln77<<,xx())r   c                    d}| j                   | j                  z   }d}	 | j                          |rF| j                  | j                  | j                  dz    }|dk(  r||z  }| xj                  dz  c_        nt        j                  | j                  | j                        }|rM|| j                  | j                  |j                  d       z  }|j                  d      | _        |dd dk(  rd	}n7n8|| j                  | j                  d z  }t        | j                        | _        	t        j                  d
||       ||fS )z3Fetches a next line that ends either with \r or \n.r   Fr      
r   N   Tznextline: %r, %r)
ro   rw   r   r   EOLsearchendr   r|   r}   )r.   linebuflineposeolcms         r   nextlinezPSBaseParser.nextline   s   ++,LLNHHT\\DLL1,<=:qLGLLA%L

488T\\2A488DLL1558<< uuQx23<5(C488DLLN33"488}' ( 			$gw7!!r   c              #     K   | j                   j                  dd       | j                   j                         }d}d|k  r|}t        d|| j                  z
        }| j                   j                  |       | j                   j                  ||z
        }|s	 y	 t        |j                  d      |j                  d            }|dk(  r||z   }n||d |z    |d| }d}Gd|k  ryw)ziFetches a next line backword.

        This is used to locate the trailers at the end of a file.
        r      r   r   r   r   N)rh   rk   rx   maxr   r~   rfind)r.   ry   r   prevpossrz   s         r   revreadlineszPSBaseParser.revreadlines  s     
 	Qgglln#gGat{{*+CGGLLWs]+A 	 77c'Ceck!bqE  #g 	s   C#C'&C'r   ic                 V   t         j                  ||      }|st        |      S |j                  d      }|||dz    }| j                  |z   | _        |dk(  rd| _        | j                  | _        |dz   S |dk(  rd| _        | j                  | _        |dz   S |dv s|j                         r|| _        | j                  | _        |dz   S |dk(  r|| _        | j                  | _        |dz   S |j                         r|| _        | j                  | _        |dz   S |dk(  r$d| _        d| _        | j                   | _        |dz   S |d	k(  rd| _        | j"                  | _        |dz   S |d
k(  rd| _        | j$                  | _        |dz   S |dk(  r|dz   S | j'                  t)        |             |dz   S )Nr   r      %   /r   s   -+   .rc      <   >    )NONSPCr   r   startro   r   r   _parse_commentr   _parse_literalisdigit_parse_number_parse_floatisalpha_parse_keywordparen_parse_string_parse_wopen_parse_wclose
_add_tokenKWDr.   r   r   r   jr   s         r   r   zPSBaseParser._parse_main)  s   MM!Qq6MGGAJa!a%L KK!O9!DN..DLq5L$Y DN..DLq5L%Z199;DN--DLq5L$YDN,,DLq5LYY[DN..DLq5L$Y DNDJ--DLq5L$Y DN,,DLq5L$Y DN--DLq5L'\q5LOOCF#q5Lr   objc                 R    | j                   j                  | j                  |f       y r+   )r   appendr   )r.   r   s     r   r   zPSBaseParser._add_tokenW  s"    T..45r   c                     t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        | j
                  | _        |S rj   )r   r   r   r   r   r   r   r.   r   r   r   r   s        r   r   zPSBaseParser._parse_comment[  sg    JJq!NNae#Nq6MGGAJ!Aa& '' r   c                    t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        |||dz    }|dk(  rd| _        | j                  | _        |dz   S 	 t        | j                  d      }| j                  t        |             | j                  | _        |S # t        $ r | j                  }Y Dw xY w)Nr   r      #r   rL   )END_LITERALr   r   r   r   hex_parse_literal_hexr   r5   rP   r   LITr   )r.   r   r   r   r   r   r(   s          r   r   zPSBaseParser._parse_literalg  s    q!$NNae#Nq6MGGAJ!Aa& a!a%L9DH22DLq5L	"&)$..'&BD 	D	"''	  	">>D	"s   C C+*C+c                 D   |||dz    }t         j                  |      r2t        | j                        dk  r| xj                  |z  c_        |dz   S | j                  r3| xj                  t        t        | j                  d      f      z  c_        | j                  | _        |S )Nr   r      )	HEXmatchr   r   r   r6   intr   r   r.   r   r   r   s       r   r   zPSBaseParser._parse_literal_hex{  s{    a!a%L99Q<CMA-HHMHq5L88NNeS2%6$899N**r   c                    t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        |||dz    }|dk(  r+| xj                  |z  c_        | j
                  | _        |dz   S 	 | j                  t        | j                               | j                  | _        |S # t        $ r Y w xY w)Nr   r   r   )
END_NUMBERr   r   r   r   r   r   r   r   
ValueErrorr   r   s         r   r   zPSBaseParser._parse_number  s    a#NNae#Nq6MGGAJ!Aa& a!a%L9NNaN,,DLq5L	OOC/0 ''  		s   $C 	C! C!c                 X   t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        	 | j                  t        | j                               | j                  | _	        |S # t        $ r Y w xY wrj   )
r   r   r   r   r   r   floatr   r   r   r   s        r   r   zPSBaseParser._parse_float  s    a#NNae#Nq6MGGAJ!Aa& 	OOE$..12 ''  		s   &$B 	B)(B)c                    t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        | j                  dk(  rd}n'| j                  dk(  rd}nt        | j                        }| j                  |       | j                  | _        |S )Nr   s   trueTs   falseF)	END_KEYWORDr   r   r   r   r   r   r   r   r.   r   r   r   r   tokens         r   r   zPSBaseParser._parse_keyword  s    q!$NNae#Nq6MGGAJ!Aa& >>W$,0E^^x'E'E''r   c                 h   t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        |||dz    }|dk(  rd| _        | j                  | _        |dz   S |dk(  r/| xj                  dz  c_        | xj                  |z  c_        |dz   S |dk(  r;| xj                  dz  c_        | j                  r| xj                  |z  c_        |dz   S | j                  | j                         | j                  | _        |dz   S )Nr   r   re   r   rc   rd   )
END_STRINGr   r   r   r   oct_parse_string_1r   r   r   r   r   s         r   r   zPSBaseParser._parse_string  s   a#NNae#Nq6MGGAJ!Aa& a!a%L:DH//DLq5L9JJ!OJNNaNq5L9JJ!OJzz!#1u'''1ur   c                     |||dz    }t         j                  |      r2t        | j                        dk  r| xj                  |z  c_        |dz   S | j                  rF| xj                  t        t        | j                  d      f      z  c_        | j                  | _        |S |t        v r'| xj                  t        t        |   f      z  c_        n)|dk(  r$t        |      |dz   kD  r||dz   |dz    dk(  r|dz  }| j                  | _        |dz   S )z;Parse literal strings

        PDF Reference 3.2.3
        r      rV   r   r   r   )

OCT_STRINGr   r   r   r   r6   r   r   r   
ESC_STRINGr   s       r   r   zPSBaseParser._parse_string_1  s    
 a!a%LA3txx=1#4HHMHq5LXXNNeS1%5$788N--DLH*_NNeZ]$455N%ZCFQUNqQQ/?5/H FA ))1ur   c                     |||dz    }|dk(  r-| j                  t               | j                  | _        |dz  }|S | j                  | _        |S )Nr   r   )r   KEYWORD_DICT_BEGINr   r   _parse_hexstringr   s       r   r   zPSBaseParser._parse_wopen  sV    a!a%L9OO./++DLFA   00DLr   c                 v    |||dz    }|dk(  r| j                  t               |dz  }| j                  | _        |S )Nr   r   )r   KEYWORD_DICT_ENDr   r   r   s       r   r   zPSBaseParser._parse_wclose  s@    a!a%L9OO,-FA''r   c                 |   t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        t
        j                  d t        j                  d| j                              }| j                  |       | j                  | _
        |S )Nr   c                 L    t        t        | j                  d      d      f      S )Nr   r   )r6   r   group)r   s    r   <lambda>z/PSBaseParser._parse_hexstring.<locals>.<lambda>  s    eSR023 r   r   )END_HEX_STRINGr   r   r   r   HEX_PAIRsubSPCr   r   r   r   s         r   r   zPSBaseParser._parse_hexstring  s    !!!Q'NNae#Nq6MGGAJ!Aa& 3SWWS$..5Q
 	''r   c                    | j                   sH| j                          | j                  | j                  | j                        | _        | j                   sH| j                   j                  d      }t        j                  d|       |S )Nr   znexttoken: %r)r   r   r   r   rw   popr|   r}   )r.   r   s     r   	nexttokenzPSBaseParser.nexttoken  s^    ,,LLN<<$,,?DL ,,   #		/5)r   r)   N)NP   )%r   r   r   r%   r   r   r/   r5   r3   rr   ru   r   rx   r	   r   rk   r   r
   r6   r   r   r   r   PSBaseParserTokenr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   rg      s    GF8  W# W*c *  d   	"%U
+ ":huo 2,U ,s ,s ,\/ D 
 
# 
# 
 # # (E c c u   &e    # # "u   4 3 3 6e   u   % C C 5&7!78 r   rg   ExtraTc                       e Zd ZdeddfdZddZdeddfdZdee	   ddfd	Z
d
edeee	      fdZdeee	      fdZdee	   ddfdZdededdfdZdedeeeee	      f   fdZdededdfdZdee	   fdZy)PSStackParserrh   r)   Nc                 P    t         j                  | |       | j                          y r+   )rg   r/   resetrl   s     r   r/   zPSStackParser.__init__   s    dB'

r   c                 <    g | _         d | _        g | _        g | _        y r+   )contextcurtypecurstackresultsrp   s    r   r   zPSStackParser.reset%  s!    TV&*4635r   ry   c                 P    t         j                  | |       | j                          y r+   )rg   rk   r   r   s     r   rk   zPSStackParser.seek,  s    $$

r   objsc                 :    | j                   j                  |       y r+   )r   extendr.   r   s     r   pushzPSStackParser.push1  s    T"r   rz   c                 F    | j                   | d  }g | j                   | d  |S r+   r   )r.   rz   r   s      r   r   zPSStackParser.pop5  s+    }}aRS!qbcr   c                 ,    | j                   }g | _         |S r+   r   r   s     r   popallzPSStackParser.popall:  s    }}r   c                     	 t         j                  d|       | j                  j	                  |       y # t        $ r t         j                  d       Y <w xY w)Nzadd_results: %rz!add_results: (unprintable object))r|   r}   rP   r   r   r   s     r   add_resultszPSStackParser.add_results?  sK    	;II'. 	D!  	;II9:	;s   4 AAtypec                     | j                   j                  || j                  | j                  f       |g c| _        | _        t        j                  d||       y )Nzstart_type: pos=%r, type=%r)r   r   r   r   r|   r}   )r.   ry   r  s      r   
start_typezPSStackParser.start_typeG  sG    S$,,>?)-r%t}		/d;r   c                 :   | j                   |k7  r%t        dj                  | j                   |            | j                  D cg c]  \  }}|	 }}}| j                  j                         \  }| _         | _        t        j                  d|||       ||fS c c}}w )NzType mismatch: {!r} != {!r}z"end_type: pos=%r, type=%r, objs=%r)r   r    rO   r   r   r   r|   r}   )r.   r  _r   r   ry   s         r   end_typezPSStackParser.end_typeM  s    <<4;BB4<<QUVWW$(MM2C22-1\\-=-=-?*dlDM		6T4HT{ 3s   Br   c                      y r+   r   )r.   ry   r   s      r   
do_keywordzPSStackParser.do_keywordU  rs   r   c           	         | j                   s"| j                         \  }}t        |t        t        t
        t        t        t        f      r| j                  ||f       n|t        k(  r| j                  |d       n|t        k(  r#	 | j                  | j                  d             n[|t"        k(  r| j                  |d       n>|t$        k(  rt	 | j                  d      \  }}t'        |      dz  dk7  rd|z  }t)        |      t+        d|      D ci c]  \  }}|t-        |      | }}}| j                  ||f       n|t.        k(  r| j                  |d       n|t0        k(  r"	 | j                  | j                  d             nzt        |t2              r5t4        j7                  d||| j8                         | j;                  ||       n5t4        j=                  d||| j8                         | j;                  ||        | j>                  r| jA                          | j                   s"| j                   jC                  d      }	 t4        j7                  d	|       |S # t        $ r t        j                   r Y |w xY wc c}}w # t        $ r t        j                   r Y w xY w# t        $ r t        j                   r Y w xY w# tD        $ r t4        j7                  d
       Y |S w xY w)zYields a list of objects.

        Arrays and dictionaries are represented as Python lists and
        dictionaries.

        :return: keywords, literals, strings, numbers, arrays and dictionaries.
        adr   r   z Invalid dictionary construct: %rpz&do_keyword: pos=%r, token=%r, stack=%rz)unknown token: pos=%r, token=%r, stack=%rznextobject: %rz nextobject: (unprintable object))#r   r   rM   r   r   boolr5   r6   r'   r   KEYWORD_ARRAY_BEGINr  KEYWORD_ARRAY_ENDr
  r    r   rN   r   r   r   r   r   rR   KEYWORD_PROC_BEGINKEYWORD_PROC_ENDr9   r|   r}   r   r  errorr   rr   r   rP   )	r.   ry   r   r   	error_msgkvr  r   s	            r   
nextobjectzPSStackParser.nextobjectX  s    ,,>>+LS%%#udC	!JK		3,'--S)++IIdmmC01 ,,S)**"&--"4KS$4y1})$F$M	+I66 '/q$&7"Q= %Q*A 
 IIsAh' ,,S)**IIdmmC01 E9-		<c5$-- U+		?MM	 U+||

{ ,,| llq!	:II&, 
o #  ' #  ' #  '0  	:II89
	:s[    I$ AJ
 J,J
 ) J* K
 $J JJ
 
J'&J'*KK
K,+K,r   )r   r   r   r   r/   r   r   rk   PSStackEntryr   r   r   r   r  r  r5   r  r
   PSStackTyper
  r9   r  r  r   r   r   r   r     s    8  
  
,v. 4 S T,v"67 
\&12 
f!5 $ c   S U3[5H0I+I%J c )  KL0 Kr   r   )Eloggingretypingr   r   r   r   r   r   r	   r
   r   r   r    r   utilsr   	getLoggerr   r|   rP   r   r   r   r    r"   r$   r'   r9   r<   r>   PSLiteralTablePSKeywordTablerE   r   r   r  r  r  r  r   r   objectrR   rU   compiler   r   r   r   r   r   r   r   r   r   r   r   r   r  r6   r   rg   r   r  r   r  r   r   r   r   <module>r'     s  
  	     g!	) 		K 		K 		+ 		; 		 	 . ( :y)4GH% * y)y)Y t9 $i I Z u: F s  F s  bjjbjj	F	bjj!bjj././2::*+RZZ
#
bjj./RZZ%
RZZ	"







	
 %y)UBC Y YB 
	E4E4vEFS+f--.DL'&/ Dr   