
    +Si*P              
       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mZm	Z	m
Z
mZ d dlmZmZ d dlmZ  ej"                  e      Zej(                  Zej*                  Zej,                  Zej.                  Zej0                  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j@                  Z!ej@                  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jX                  d      Z- ejX                  d      Z. ejX                  d      Z/ ejX                  d      Z0 ejX                  d      Z1 ejX                  d      Z2 ejX                  d      Z3 ejX                  d       Z4 ejX                  d      Z5 ejX                  d!      Z6 ejX                  d"      Z7d#d$d%d&d'd(d)d*d+Z8ee9e:eee;f   Z< G d, d-      Z= e
d.      Z>ee)e9e:ee;e?e   e@eef   e>f   ZAeBeCeAe>   f   ZD G d/ d0e=e	e>         ZEy)1    N)Iterator)AnyBinaryIOGenericTypeVarUnion)psexceptionssettings)choplistc                       e Zd ZdZy)PSObjectz0Base class for all PS or PDF-related data types.N)__name__
__module____qualname____doc__     Z/var/www/html/leadgen/airagagent/rag_env/lib/python3.12/site-packages/pdfminer/psparser.pyr   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__/   	    	r   c                 $    | j                   }d|S N/r   r   s     r   __repr__zPSLiteral.__repr__2       yy4(|r   )
r   r   r   r   r   strbytesNameTyper   r#   r   r   r   r   r   !   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__B   r   r   c                 $    | j                   }d|S r!   r   r   s     r   r#   zPSKeyword.__repr__E   r$   r   )r   r   r   r   r&   r   r%   r#   r   r   r   r)   r)   7   s&    U t # r   r)   _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__S   s    8:	%*
r   r   c                     || j                   v r| j                   |   }|S | j                  |      }|| j                   |<   |S r   r1   )r   r   lits      r   internzPSSymbolTable.internW   sD    499))D/C 
 **T"C!DIIdO
r   )
r   r   r   r   typer,   r   r   r'   r5   r   r   r   r.   r.   M   s7    
+d8n + +9-- ( r   r.      {   }   [   ]s   <<s   >>xr   c                 6   t        | t              r=t        | j                  t              r| j                  S 	 t        | j                  d      S t
        j                  rt        d|       t        |       S # t        $ r t        | j                        cY S w xY w)Nutf-8zLiteral required: )
isinstancer   r   r%   UnicodeDecodeErrorr
   STRICTPSTypeError)r;   s    r   literal_namerB   n   s}    !Yaffc"66M	qvvw'' ?? 21%8991v " 	qvv;	s   A7 7BBc                     t        | t              s"t        j                  rt	        d|       | }|S t        | j                  dd      }|S )NzKeyword required: r=   ignore)r>   r)   r
   r@   rA   r%   r   )r;   r   s     r   keyword_namerE   |   sK    a#?? 21%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dz  deddfdZdeddfdZdef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                 B    || _         d| _        | j                  d       y )NFr   )rX   eofseekr   rX   s     r   r   zPSBaseParser.__init__   s    		!r   c                 j    d| j                   j                   d| j                  d| j                   dS )N<z: z	, bufpos=>)	__class__r   rX   bufposr   s    r   r#   zPSBaseParser.__repr__   s0    4>>**+2dgg[	$++aPPr   c                      y r   r   rb   s    r   flushzPSBaseParser.flush       r   c                 $    | j                          y r   )rd   rb   s    r   closezPSBaseParser.close   s    

r   c                 4    | j                   | j                  z   S r   )ra   charposrb   s    r   tellzPSBaseParser.tell   s    {{T\\))r   posnc                 B   | j                   j                         }|s| j                  | j                  z   }| j                   j	                  |       t
        j                  d| d| j                   j                  |             | j                   j	                  |       y )Nzpoll(z): )rX   rj   ra   ri   r[   logdebugread)r   rk   rl   pos0s       r   pollzPSBaseParser.poll   sl    ww||~++,CS		E#c$'',,q/!456Tr   c                     t         j                  d|       | j                  j                  |       || _        d| _        d| _        | j                  | _        d| _	        d| _
        g | _        d| _        y)z'Seeks the parser to the given position.zseek: r   r   FN)rn   ro   rX   r[   ra   bufri   _parse_main_parse1	_curtoken_curtokenpos_tokensrZ   r   rk   s     r   r[   zPSBaseParser.seek   sd    		F3'"#S''<>r   c                    | j                   t        | j                        k  ry| j                  j	                         | _        | j                  j                  | j                        | _        | j                  st        d      d| _         y)NFUnexpected EOFr   )	ri   lenrt   rX   rj   ra   rp   BUFSIZPSEOFrb   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
|d|       ||fS )z3Fetches a next line that ends either with \r or \n.r   F      
r   N   Tz
nextline: z, )
ra   ri   r   rt   EOLsearchendr}   rn   ro   )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}' ( 			JwkG;78!!r   c              #     K   | j                   j                  dt        j                         | j                   j	                         }d}|dkD  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}G|dkD  ryyw)ziFetches a next line backward.

        This is used to locate the trailers at the end of a file.
        r   r   r   r   r   N)	rX   r[   ioSEEK_ENDrj   maxr~   rp   rfind)r   rk   rt   prevpossrl   s         r   revreadlineszPSBaseParser.revreadlines   s     
 	Q$ggllnAgGat{{*+CGGLLWs]+A77c'Ceck!bqE  Ags   C0C53C5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   -+   .rS      <   >    )NONSPCr   r}   startra   rx   rw   _parse_commentrv   _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   ru   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   )ry   appendrx   )r   r   s     r   r   zPSBaseParser._add_token<  s    T..45r   c                     t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        | j
                  | _        |S Nr   )r   r   rw   r}   r   ru   rv   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   r=   )END_LITERALr   rw   r}   r   hex_parse_literal_hexrv   r%   	Exceptionr   LITru   )r   r   r   r   r   r   r   s          r   r   zPSBaseParser._parse_literalK  s    q!$NNae#Nq6MGGAJ!Aa& a!a%L9DH22DLq5L	" #DNNG <D 	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         )	HEXmatchr}   r   rw   r&   intr   rv   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 t        j                  t              5  | j                  t        | j                               d d d        | j                  | _        |S # 1 sw Y   xY w)Nr   r   r   )
END_NUMBERr   rw   r}   r   r   rv   
contextlibsuppress
ValueErrorr   r   ru   r   s         r   r   zPSBaseParser._parse_numberi  s    a#NNae#Nq6MGGAJ!Aa& a!a%L9NNaN,,DLq5L  , 	1OOC/0	1''	1 	1s   6%C66C?c                    t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        t        j                  t              5  | j                  t        | j                               d d d        | j                  | _        |S # 1 sw Y   xY wr   )r   r   rw   r}   r   r   r   r   r   floatru   rv   r   s        r   r   zPSBaseParser._parse_floatz  s    a#NNae#Nq6MGGAJ!Aa&   , 	3OOE$..12	3''	3 	3s   >%B>>Cc                    t         j                  ||      }|r*|j                  d      }| xj                  ||| z  c_        n#| xj                  ||d  z  c_        t	        |      S | j                  dk(  rd}n'| j                  dk(  rd}nt        | j                        }| j                  |       | j                  | _        |S )Nr   s   trueTs   falseF)	END_KEYWORDr   r   rw   r}   r   r   ru   rv   r   r   r   r   r   tokens         r   r   zPSBaseParser._parse_keyword  s    q!$
ANNa!f$NNNae#Nq6M>>W$&*E^^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   rU   r   rS   rT   )
END_STRINGr   rw   r}   r   oct_parse_string_1rv   r   r   ru   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                  ret	        | j                  d      }|dk  sJ d| j                  d| d       | xj
                  t        |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      rF      zInvalid octal z ()r   r   r   )

OCT_STRINGr   r}   r   r   rw   r&   r   rv   
ESC_STRING)r   r   r   r   chrcodes        r   r   zPSBaseParser._parse_string_1  s   
 a!a%LA3txx=1#4HHMHq5LXX$((A&GS=KN488,b	"KK=NNeWJ//N--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_BEGINru   rv   _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_ENDru   rv   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   )r&   r   group)r   s    r   <lambda>z/PSBaseParser._parse_hexstring.<locals>.<lambda>  s    eSR023 r   r   )END_HEX_STRINGr   rw   r}   r   HEX_PAIRsubSPCr   ru   rv   r   s         r   r   zPSBaseParser._parse_hexstring  s    !!!Q'NNae#Nq6MGGAJ!Aa& 3GGC(
 	''r   c                    | j                   rt        d      | j                  sj	 | j                         }|r| j                  r| j                  dd       n+| j                  | j                  | j                        | _        | j                  sj| j                  j                  d      }t        j                  d|       |S # t        $ r. | j                  dd      | _        d| _         | j                  s Y xw xY w)Nr|   r   r   Tznexttoken: )rZ   r   ry   r   rw   rv   rt   ri   poprn   ro   )r   changed_streamr   s      r   	nexttokenzPSBaseParser.nexttoken  s    88()),,!%!dnn LL*#'<<$,,#GDL ,,$   #		Ky)*    $||E15|| $s   AC 4C:9C:r   N)NP   )%r   r   r   r   r~   r   r   r%   r#   rd   rg   r   rj   rr   r[   boolr   tupler&   r   r   r   ru   PSBaseParserTokenr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   rW      s   GF8  
Q# Q*c *d
 c 4   	 	"%U
+ ":huo 0,U ,s ,s ,\6/ 6D 6
 
# 
# 
 # # (E c c u   "
e 
 
 
 # # $u   4 3 3 :e   u   % C C 5&7!78 r   rW   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)PSStackParserrX   r   Nc                 P    t         j                  | |       | j                          y r   )rW   r   resetr\   s     r   r   zPSStackParser.__init__  s    dB'

r   c                 <    g | _         d | _        g | _        g | _        y r   )contextcurtypecurstackresultsrb   s    r   r   zPSStackParser.reset  s    QS#'4635r   rk   c                 P    t         j                  | |       | j                          y r   )rW   r[   r   rz   s     r   r[   zPSStackParser.seek#  s    $$

r   objsc                 :    | j                   j                  |       y r   )r   extendr   r   s     r   pushzPSStackParser.push'  s    T"r   rl   c                 F    | j                   | d  }g | j                   | d  |S r   r   )r   rl   r   s      r   r   zPSStackParser.pop*  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: z!add_results: (unprintable object))rn   ro   r   r   r   r   s     r   add_resultszPSStackParser.add_results4  sL    	;IIdX./ 	D!  	;II9:	;s   6 AAr6   c                     | j                   j                  || j                  | j                  f       |g c| _        | _        t        j                  d|d|       y )Nzstart_type: pos=, type=)r   r   r   r   rn   ro   )r   rk   r6   s      r   
start_typezPSStackParser.start_type;  sM    S$,,>?)-r%t}		$SG74(;<r   c                 2   | j                   |k7  rt        d| j                   d|      | j                  D cg c]  \  }}|	 }}}| j                  j	                         \  }| _         | _        t
        j                  d|d|d|       ||fS c c}}w )NzType mismatch: z != zend_type: pos=r  z, objs=)r   rA   r   r   r   rn   ro   )r   r6   _r   r   rk   s         r   end_typezPSStackParser.end_type@  s    <<4/?tD8LMM$(MM2C22-1\\-=-=-?*dlDM		N3'xHIT{ 3s   Br   c                      y r   r   )r   rk   r   s      r   
do_keywordzPSStackParser.do_keywordH  re   r   c           	         | j                   s3| 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             nl|t"        k(  r| j                  |d       nO|t$        k(  rt	 | j                  d      \  }}t'        |      dz  dk7  rd|}t)        |      t+        d|      D ci c]  \  }}|t-        |      | }}}| j                  ||f       n|t.        k(  r| j                  |d       n|t0        k(  r"	 | j                  | j                  d             nt        |t2              r;t4        j7                  d|d|d	| j8                         | j;                  ||       n@t4        j=                  d
|d|d	| j8                         | j;                  ||       t>        | j@                  r"| jC                          | j                   s3| j                   jE                  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# tF        $ 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: pzdo_keyword: pos=z, token=z, stack=zunknown token: pos=znextobject: z nextobject: (unprintable object))$r   r   r>   r   r   r   r%   r&   r   r   KEYWORD_ARRAY_BEGINr  KEYWORD_ARRAY_ENDr  rA   r
   r@   r   r   r}   PSSyntaxErrorr   rB   KEYWORD_PROC_BEGINKEYWORD_PROC_ENDr)   rn   ro   r   r  errorPSExceptionr   rd   r   r   )	r   rk   r   r   	error_msgkvr  r   s	            r   
nextobjectzPSStackParser.nextobjectK  s    ,,>>+LS%%#udC	!JK		3,'--S)++IIdmmC01 ,,S)**"&--"4KS$4y1})&DTH$M	+I66 '/q$&7"Q= %Q*A 
 IIsAh' ,,S)**IIdmmC01 E9-		&sgXeYht}}FWX U+		)# 1"IXdmm->@ U+!!||

w ,,x llq!	:IISG,- 
k #  ' #  ' #  ',  	:II89
	:s[    I7 AJ J,J ) J= K 7JJJ J:9J:=KKK?>K?r   )r   r   r   r   r   r   r   r[   PSStackEntryr   r   listr   r  r  r%   r  r   PSStackTyper  r)   r  r  r   r   r   r   r     s    8  6  #,v. #4 #S T,v"67 
\&12 
"f!5 "$ "=c = = =
S U3[5H0I+I%J c )  IL0 Ir   r   )Fr   r   loggingrecollections.abcr   typingr   r   r   r   r   pdfminerr	   r
   pdfminer.utilsr   	getLoggerr   rn   r  r   r  rA   PSValueErrorr   r   r)   r,   r.   PSLiteralTablePSKeywordTabler5   r   r   r  r  r  r  r   r   r%   rB   rE   compiler   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r   rW   r   r  r2   r  r   r   r  r   r   r   r   <module>r+     s    	  	 $  , #g! &&**&&((; ; , & :y)4GH% * y)y)Y t9 $i I Z u: C C C C  bjjbjj	F	bjj!bjj././2::*+RZZ
#
bjj./RZZ%
RZZ	"







	
 %y)UBC g g` 
	iS	4S>6I S+f--.|L'&/ |r   