
    .i{O              	       ~   d dl Z 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mZ d dlmZ  ej        e          Zej        Zej        Zej        Zej        Zej        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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           Z9 ej/        d!          Z:d"d#d$d%d&d'd(d)d*Z;ee<e=eee>f         Z? G d+ d,          Z@ ed-          ZAee,e<e=ee>e	eeAf         ZBeeCeBeA         f         ZD G d. d/e@eeA                   ZEdS )0    N)AnyBinaryIODictGenericIteratorListOptionalTupleTypeTypeVarUnion)psexceptionssettings)choplistc                       e Zd ZdZdS )PSObjectz0Base class for all PS or PDF-related data types.N)__name__
__module____qualname____doc__     M/var/www/html/analyses/venv/lib/python3.11/site-packages/pdfminer/psparser.pyr   r   !   s        ::::r   r   c                   B    e Zd ZdZeeef         ZdeddfdZdefdZ	dS )	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                     || _         d S Nr   selfr   s     r   __init__zPSLiteral.__init__3       			r   c                     | j         }d|z  S Nz/%rr    r!   s     r   __repr__zPSLiteral.__repr__6       yt|r   )
r   r   r   r   r   strbytesNameTyper#   r'   r   r   r   r   r   %   sk        	 	 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dS )	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                     || _         d S r   r    r!   s     r   r#   zPSKeyword.__init__F   r$   r   c                     | j         }d|z  S r&   r    r!   s     r   r'   zPSKeyword.__repr__I   r(   r   )r   r   r   r   r*   r#   r)   r'   r   r   r   r-   r-   ;   s[         U t    #      r   r-   _SymbolTc                   H    e Zd ZdZdee         ddfdZdej        defdZ	dS )PSSymbolTablezA utility class for storing PSLiteral/PSKeyword objects.

    Interned objects can be checked its identity with "is" operator.
    klassr   Nc                 "    i | _         || _        d S r   dictr3   )r"   r3   s     r   r#   zPSSymbolTable.__init__W   s    8:	%*


r   r   c                 r    || j         v r| j         |         }n|                     |          }|| j         |<   |S r   r5   )r"   r   lits      r   internzPSSymbolTable.intern[   s?    49)D/CC **T""C!DIdO
r   )
r   r   r   r   r   r0   r#   r   r+   r9   r   r   r   r2   r2   Q   si         
+d8n + + + + +9- (      r   r2      {   }   [   ]s   <<s   >>xr   c                 <   t          | t                    r[t          | j        t                    r| j        S 	 t          | j        d          S # t          $ r t          | j                  cY S w xY wt
          j        rt          d|           t          |           S )Nutf-8zLiteral required: )
isinstancer   r   r)   UnicodeDecodeErrorr   STRICTPSTypeError)r>   s    r   literal_namerE   r   s    !Y 
afc"" 	6M	qvw'''! 	 	 	qv;;	 ? 	:81889991vvs   A A.-A.c                     t          | t                    s!t          j        rt	          d| z            | }nt          | j        dd          }|S )NzKeyword required: %rr@   ignore)rA   r-   r   rC   rD   r)   r   )r>   r   s     r   keyword_namerH      sQ    a## .? 	4q8999DD167H--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$dS )&PSBaseParserz=Most basic PostScript parser that performs only tokenization.i   fpr   Nc                 L    || _         d| _        |                     d           d S )NFr   )r[   eofseekr"   r[   s     r   r#   zPSBaseParser.__init__   s#    		!r   c                 :    d| j         j        | j        | j        fz  S )Nz<%s: %r, bufpos=%d>)	__class__r   r[   bufposr"   s    r   r'   zPSBaseParser.__repr__   s    $(?$+'VVVr   c                     d S r   r   rc   s    r   flushzPSBaseParser.flush       r   c                 .    |                                   d S r   )re   rc   s    r   closezPSBaseParser.close   s    

r   c                      | j         | j        z   S r   )rb   charposrc   s    r   tellzPSBaseParser.tell   s    {T\))r   P   posnc                 *   | j                                         }|s| j        | j        z   }| j                             |           t
                              d|| j                             |                     | j                             |           d S )Nzpoll(%d): %r)r[   rk   rb   rj   r^   logdebugread)r"   rm   rn   pos0s       r   pollzPSBaseParser.poll   sw    w||~~ 	-+,CS		.#tw||A777Tr   c                     t                               d|           | j                            |           || _        d| _        d| _        | j        | _        d| _	        d| _
        g | _        d| _        dS )z'Seeks the parser to the given position.zseek: %rr   r   FN)rp   rq   r[   r^   rb   bufrj   _parse_main_parse1	_curtoken_curtokenpos_tokensr]   r"   rm   s     r   r^   zPSBaseParser.seek   sj    		*c"""S'<>r   c                    | j         t          | j                  k     rd S | j                                        | _        | j                            | j                  | _        | j        st          d          d| _         d S )NUnexpected EOFr   )	rj   lenrv   r[   rk   rb   rr   BUFSIZPSEOFrc   s    r   fillbufzPSBaseParser.fillbuf   sh    <#dh--''Fgllnn7<<,,x 	*()))r   c                 b   d}| j         | j        z   }d}	 |                                  |r8| j        | j        | j        dz            }|dk    r||z  }| xj        dz  c_        nt                              | j        | j                  }|rV|| j        | j        |                    d                   z  }|                    d          | _        |dd         dk    rd	}n1n1|| j        | j        d         z  }t          | j                  | _        t          	                    d
||           ||fS )z3Fetches a next line that ends either with \r or \n.r   F      
r   N   Tznextline: %r, %r)
rb   rj   r   rv   EOLsearchendr   rp   rq   )r"   linebuflineposeolcms         r   nextlinezPSBaseParser.nextline   s1   +,	-LLNNN HT\DL1,<<=::qLGLLA%LL

48T\22A 	-48DL15588$;<< uuQxx233<5((CC48DLNN33"48}}'	-( 			$gw777!!r   c              #     K   | j                             dt          j                   | j                                         }d}|dk    r|}t          d|| j        z
            }| j                             |           | j                             ||z
            }|sdS 	 t          |                    d          |                    d                    }|dk    r||z   }n||d         |z   V  |d|         }d}^|dk    dS dS )ziFetches a next line backword.

        This is used to locate the trailers at the end of a file.
        r   r   r   r   r   r   N)	r[   r^   ioSEEK_ENDrk   maxr   rr   rfind)r"   rm   rv   prevpossrn   s         r   revreadlineszPSBaseParser.revreadlines   s     
 	Q$$$gllnnAggGat{*++CGLLWs]++A 7777c'Ceck!!!bqbE Aggggggr   r   ic                 N   t                               ||          }|st          |          S |                    d          }|||dz            }| j        |z   | _        |dk    rd| _        | j        | _        |dz   S |dk    rd| _        | j	        | _        |dz   S |dv s|
                                r|| _        | j        | _        |dz   S |dk    r|| _        | j        | _        |dz   S |                                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 |                     t)          |                     |dz   S )Nr   r      %   /r   s   -+   .rV      <   >    )NONSPCr   r   startrb   rz   ry   _parse_commentrx   _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   rw   zPSBaseParser._parse_main  s   MM!Q 	q66MGGAJJa!a%iL K!O99!DN.DLq5L$YY DN.DLq5L%ZZ199;;ZDN-DLq5L$YYDN,DLq5LYY[[ 	DN.DLq5L$YY DNDJ-DLq5L$YY DN,DLq5L$YY DN-DLq5L'\\q5LOOCFF###q5Lr   objc                 H    | j                             | j        |f           d S r   )r{   appendrz   )r"   r   s     r   r   zPSBaseParser._add_token?  s&    T.455555r   c                     t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        | j        | _        |S Nr   )r   r   ry   r   r   rw   rx   r"   r   r   r   r   s        r   r   zPSBaseParser._parse_commentB  sx    JJq! 	NNae#NNq66MGGAJJ!AaC& ' r   c                    t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        |||dz            }|dk    rd| _        | j        | _        |dz   S 	 t          | j        d          }n# t          $ r
 | j        }Y nw xY w| 
                    t          |                     | j        | _        |S )Nr   r      #r   r@   )END_LITERALr   ry   r   r   hex_parse_literal_hexrx   r)   	Exceptionr   LITrw   )r"   r   r   r   r   r   r   s          r   r   zPSBaseParser._parse_literalN  s   q!$$ 	NNae#NNq66MGGAJJ!AaC& a!a%iL99DH2DLq5L	"&)$.'&B&BDD 	" 	" 	">DDD	"D		"""'s   B4 4CCc                 6   |||dz            }t                               |          r-t          | j                  dk     r| xj        |z  c_        |dz   S | j        r1| xj        t          t          | j        d          f          z  c_        | j        | _        |S )Nr         )	HEXmatchr   r   ry   r*   intr   rx   r"   r   r   r   s       r   r   zPSBaseParser._parse_literal_hexb  s    a!a%iL99Q<< 	CMMA--HHMHHq5L8 	:NNeS2%6%6$8999NN*r   c                    t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        |||dz            }|dk    r!| xj        |z  c_        | j        | _        |dz   S 	 |                     t          | j                             n# t          $ r Y nw xY w| j
        | _        |S )Nr   r   r   )
END_NUMBERr   ry   r   r   r   rx   r   r   
ValueErrorrw   r   s         r   r   zPSBaseParser._parse_numberl  s    a## 	NNae#NNq66MGGAJJ!AaC& a!a%iL99NNaNN,DLq5L	OOC//0000 	 	 	D	's   ''C 
CCc                 r   t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        	 |                     t          | j                             n# t          $ r Y nw xY w| j        | _	        |S r   )
r   r   ry   r   r   r   floatr   rw   rx   r   s        r   r   zPSBaseParser._parse_float  s    a## 	NNae#NNq66MGGAJJ!AaC& 	OOE$.112222 	 	 	D	's   3'B 
B('B(c                    t                               ||          }|r.|                    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        | _        |S )Nr   s   trueTs   falseF)	END_KEYWORDr   r   ry   r   r   r   rw   rx   r"   r   r   r   r   tokens         r   r   zPSBaseParser._parse_keyword  s    q!$$ 	

ANNa!f$NNNNNae#NNq66M>W$$,0EE^x''EE''E'r   c                 J   t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    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
        | _        |dz   S )Nr   r   rX   r   rV   rW   )
END_STRINGr   ry   r   r   oct_parse_string_1rx   r   r   rw   r   s         r   r   zPSBaseParser._parse_string  s0   a## 	NNae#NNq66MGGAJJ!AaC& a!a%iL::DH/DLq5L99JJ!OJJNNaNNq5L99JJ!OJJz !#1u''''1ur   c                 z   |||dz            }t                               |          r-t          | j                  dk     r| xj        |z  c_        |dz   S | j        rht	          | j        d          }|dk     s!J dt          | j                  |fz              | xj        t          |f          z  c_        | j        | _	        |S |t          v r*| xj        t          t          |         f          z  c_        n5|dk    r/t          |          |dz   k    r||dz   |dz            dk    r|dz  }| j        | _	        |dz   S )	z;Parse literal strings

        PDF Reference 3.2.3
        r      rI      zInvalid octal %s (%d)r   r   r   )
OCT_STRINGr   r   r   r   reprry   r*   r   rx   
ESC_STRING)r"   r   r   r   chrcodes        r   r   zPSBaseParser._parse_string_1  s?   
 a!a%iLA 	3tx==1#4#4HHMHHq5LX 	$(A&&GS==="9T$(^^W<U"U===NNeWJ///NN-DLH*__NNeZ]$4555NNN%ZZCFFQUNNqQQ/?5/H/H FA )1ur   c                     |||dz            }|dk    r,|                      t                     | j        | _        |dz  }n| j        | _        |S )Nr   r   )r   KEYWORD_DICT_BEGINrw   rx   _parse_hexstringr   s       r   r   zPSBaseParser._parse_wopen  sS    a!a%iL99OO.///+DLFAA0DLr   c                     |||dz            }|dk    r|                      t                     |dz  }| j        | _        |S )Nr   r   )r   KEYWORD_DICT_ENDrw   rx   r   s       r   r   zPSBaseParser._parse_wclose  sG    a!a%iL99OO,---FA'r   c                    t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        t
                              d t                              d| j                            }|                     |           | j	        | _
        |S )Nr   c                 d    t          t          |                     d          d          f          S )Nr   r   )r*   r   group)r   s    r   <lambda>z/PSBaseParser._parse_hexstring.<locals>.<lambda>  s%    eSR00233 r   r   )END_HEX_STRINGr   ry   r   r   HEX_PAIRsubSPCr   rw   rx   r   s         r   r   zPSBaseParser._parse_hexstring  s    !!!Q'' 	NNae#NNq66MGGAJJ!AaC& 33GGC((
 
 	'r   c                    | j         rt          d          | j        s|	 |                                  |                     | j        | j                  | _        n:# t          $ r- |                     dd          | _        d| _         | j        s Y nw xY w| j        || j                            d          }t          	                    d|           |S )Nr~   r   r   Tznexttoken: %r)
r]   r   r{   r   rx   rv   rj   poprp   rq   )r"   r   s     r   	nexttokenzPSBaseParser.nexttoken  s    8 	*())), 	#||DHdlCC     $||E155|  	 , 	   ##		/5)))s   9A 4BBr   N)Nrl   )%r   r   r   r   r   r   r#   r)   r'   re   rh   r   rk   r	   rt   r^   r   r
   r*   r   r   r   rw   PSBaseParserTokenr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   rZ      s       GGF8     
W# W W W W      *c * * * *   d            "%U
+ " " " ":huo    0,U ,s ,s , , , ,\6/ 6D 6 6 6 6
 
# 
# 
 
 
 
 # #    (E c c    u      &e       # #    $u      4 3 3    :e      u      % C C    5&7!78      r   rZ   ExtraTc                   2   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dS )PSStackParserr[   r   Nc                 d    t                               | |           |                                  d S r   )rZ   r#   resetr_   s     r   r#   zPSStackParser.__init__  s)    dB'''

r   c                 >    g | _         d | _        g | _        g | _        d S r   )contextcurtypecurstackresultsrc   s    r   r   zPSStackParser.reset  s"    TV&*4635r   rm   c                 d    t                               | |           |                                  d S r   )rZ   r^   r   r|   s     r   r^   zPSStackParser.seek#  s)    $$$$

r   objsc                 :    | j                             |           d S r   )r   extendr"   r   s     r   pushzPSStackParser.push'  s    T"""""r   rn   c                 @    | j         | d          }g | j         | d <   |S r   r   )r"   rn   r   s      r   r   zPSStackParser.pop*  s+    }aRSS!qbccr   c                 "    | j         }g | _         |S r   r   r   s     r   popallzPSStackParser.popall/  s    }r   c                     	 t                               d|           n*# t          $ r t                               d           Y nw xY w| j                            |           d S )Nzadd_results: %rz!add_results: (unprintable object))rp   rq   r   r   r   r   s     r   add_resultszPSStackParser.add_results4  so    	;II'.... 	; 	; 	;II9:::::	;D!!!!!s    $AAtypec                     | j                             || j        | j        f           |g c| _        | _        t                              d||           d S )Nzstart_type: pos=%r, type=%r)r   r   r   r   rp   rq   )r"   rm   r  s      r   
start_typezPSStackParser.start_type;  sP    S$,>???)-r%t}		/d;;;;;r   c                     | j         |k    rt          d| j         d|          d | j        D             }| j                                        \  }| _         | _        t
                              d|||           ||fS )NzType mismatch: z != c                     g | ]\  }}|S r   r   ).0_r   s      r   
<listcomp>z*PSStackParser.end_type.<locals>.<listcomp>C  s    222C222r   z"end_type: pos=%r, type=%r, objs=%r)r   rD   r   r   r   rp   rq   )r"   r  r   rm   s       r   end_typezPSStackParser.end_type@  s    <4LLLDLLMMM22DM222-1\-=-=-?-?*dlDM		6T4HHHT{r   r   c                     d S r   r   )r"   rm   r   s      r   
do_keywordzPSStackParser.do_keywordH  rf   r   c           	      ^   | j         s|                                 \  }}t          |t          t          t
          t          t          t          f          r| 	                    ||f           n:|t          k    r|                     |d           n|t          k    rI	 | 	                    |                     d                     n# t          $ r t          j        r Y nw xY w|t"          k    r|                     |d           n|t$          k    r	 |                     d          \  }}t'          |          dz  dk    rd|z  }t)          |          d t+          d|          D             }| 	                    ||f           n# t          $ r t          j        r Y nw xY w|t,          k    r|                     |d           n|t.          k    rG	 | 	                    |                     d                     n# t          $ r t          j        r Y nw xY wt          |t0                    r9t2                              d||| j                   |                     ||           n?t2                              d	||| j                   |                     ||           t<          | j        r|                                   | j         | j         !                    d          }	 t2                              d
|           n*# tD          $ r t2                              d           Y nw xY w|S )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: %rc                 8    i | ]\  }}|t          |          |S r   )rE   )r  kvs      r   
<dictcomp>z,PSStackParser.nextobject.<locals>.<dictcomp>l  s1       "Q= %Q(==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   rA   r   r   boolr)   r*   r   r   KEYWORD_ARRAY_BEGINr  KEYWORD_ARRAY_ENDr
  rD   r   rC   r   r   r   PSSyntaxErrorr   KEYWORD_PROC_BEGINKEYWORD_PROC_ENDr-   rp   rq   r   r  errorPSExceptionr   re   r   r   )r"   rm   r   r   	error_msgr  r   s          r   
nextobjectzPSStackParser.nextobjectK  s~    , @	>>++LS%%#udC	!JKK :"		3,''''---S))))+++IIdmmC001111"      ,,,S))))***"&--"4"4KS$4yy1}))$F$M	+I666 &.q$&7&7  A
 IIsAh''''"      ,,,S))))***IIdmmC001111"      E9-- "		<M	   U++++		?M	   U+++!!| 

A , @	B lq!!	:II&,,,, 	: 	: 	:II899999	:
sI   (C C! C!A3F F#"F#(G= =HH'L $L*)L*r   )r   r   r   r   r#   r   r   r^   PSStackEntryr   r   r   r   r   r  r)   r  r
   PSStackTyper
  r-   r  r  r   r   r   r   r     s       8     6 6 6 6     #,v. #4 # # # #S T,v"67    
\&12    
"f!5 "$ " " " "<c < < < < < <
S U3[5H0I+I%J    c )     NL0 N N N N N Nr   r   )Fr   loggingretypingr   r   r   r   r   r   r	   r
   r   r   r   pdfminerr   r   pdfminer.utilsr   	getLoggerr   rp   r  r   r  rD   PSValueErrorr   r   r-   r0   r2   PSLiteralTablePSKeywordTabler9   r   r   r  r  r  r  r   r   r)   rE   rH   compiler   r   r   r   r   r   r   r   r   r   r   r   r   r  r*   r   rZ   r   r   r   r  r   r   r   r   <module>r+     sD   				  				                          , + + + + + + + # # # # # #g!! &*&(; ; ; ; ; ; ; ;       ,       & 7:y)44    GH%   * y))y))SYY 3t99 c$ii CII SZZ 3u:: C C    C C     bjbj	F		bj!!bj.//.//2:*++RZ
##
bj.//RZ%%
RZ	""







	 	
 %y)UBC e e e e e e e e\ 
		CidFJKS+f--.A A A A AL'&/ A A A A Ar   