
    )iL              	       Z   S SK r S SKrS SKJrJrJrJrJrJrJ	r	J
r
JrJrJr  SSKJr  SSKJr  \ R$                  " \5      r " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S5      r " S S\5      r " S S\5      r\" S\\5      r " S S\\   5      r\" \5      r \" \5      r!\ RD                  r#\!RD                  r$\$" S5      r%\$" S5      r&\$" S5      r'\$" S5      r(\$" S5      r)\$" S5      r*S\+S \4S! jr,S\+S \4S" jr-\R\                  " S#5      r/\R\                  " S$5      r0\R\                  " S%5      r1\R\                  " S&5      r2\R\                  " S'5      r3\R\                  " S(5      r4\R\                  " S)5      r5\R\                  " S*5      r6\R\                  " S'5      r7\R\                  " S+5      r8\R\                  " S,5      r9S-S.S/S0S1S2S3S4S5.r:\\;\<\\\=4   r> " S6 S75      r?\" S85      r@\\;\<\\=\\\@4   rA\
\B\A\@   4   rC " S9 S:\?\\@   5      rDg);    N)AnyBinaryIODictGenericIteratorListOptionalTupleTypeTypeVarUnion   )settings)choplistc                       \ rS rSrSrg)PSException    N__name__
__module____qualname____firstlineno____static_attributes__r       Q/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/pdfminer/psparser.pyr   r          r   r   c                       \ rS rSrSrg)PSEOF   r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)PSSyntaxError#   r   Nr   r   r   r   r"   r"   #   r   r   r"   c                       \ rS rSrSrg)PSTypeError'   r   Nr   r   r   r   r%   r%   '   r   r   r%   c                       \ rS rSrSrg)PSValueError+   r   Nr   r   r   r   r(   r(   +   r   r   r(   c                       \ rS rSrSrSrg)PSObject/   z0Base class for all PS or PDF-related data types.r   N)r   r   r   r   __doc__r   r   r   r   r+   r+   /   s    :r   r+   c                   F    \ rS rSrSr\\\4   rS\SS4S jr	S\4S jr
Srg)		PSLiteral5   aE  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                     Xl         g Nr1   selfr1   s     r   __init__PSLiteral.__init__D       	r   c                 $    U R                   nSU-  $ Nz/%rr5   r6   s     r   __repr__PSLiteral.__repr__G       yyt|r   r5   )r   r   r   r   r-   r   strbytesNameTyper8   r=   r   r   r   r   r/   r/   5   s6    	 S%Z HX $ # r   r/   c                   8    \ rS rSrSrS\SS4S jrS\4S jrSr	g)		PSKeywordL   a6  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().
r1   r2   Nc                     Xl         g r4   r5   r6   s     r   r8   PSKeyword.__init__X   r:   r   c                 $    U R                   nSU-  $ r<   r5   r6   s     r   r=   PSKeyword.__repr__[   r?   r   r5   )
r   r   r   r   r-   rA   r8   r@   r=   r   r   r   r   rD   rD   L   s&    U t # r   rD   _SymbolTc                   V    \ rS rSrSrS\\   SS4S jrS\R                  S\4S jr
S	rg)
PSSymbolTablec   z{A utility class for storing PSLiteral/PSKeyword objects.

Interned objects can be checked its identity with "is" operator.
klassr2   Nc                     0 U l         Xl        g r4   dictrN   )r7   rN   s     r   r8   PSSymbolTable.__init__i   s    8:	%*
r   r1   c                     XR                   ;   a  U R                   U   nU$ U R                  U5      nX R                   U'   U$ r4   rP   )r7   r1   lits      r   internPSSymbolTable.internm   s@    99))D/C 
 **T"C!IIdO
r   rP   )r   r   r   r   r-   r   rJ   r8   r/   rB   rU   r   r   r   r   rL   rL   c   s7    
+d8n + +9-- ( r   rL      {   }   [   ]s   <<s   >>xr2   c                    [        U [        5      (       d4  [        R                  (       a  [	        SR                  U 5      5      eU n U$ U R                  n[        U[        5      (       d   [        US5      nU$ U$ ! [         a     U$ f = f)NzLiteral required: {!r}utf-8)	
isinstancer/   r   STRICTr%   formatr1   r@   	Exceptionr[   r1   s     r   literal_namerc      s    a##??6==a@AAD K vv$$$4) K4K  Ks   ,A< <
B
	B
c                     [        U [        5      (       d(  [        R                  (       a  [	        SU -  5      eU n U$ [        U R                  SS5      nU$ )NzKeyword required: %rr]   ignore)r^   rD   r   r_   r%   r@   r1   rb   s     r   keyword_namerf      sL    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                      \ rS rSrSrSrS\SS4S jrS\4S jr	S%S	 jr
S%S
 jrS\4S jrS&S\\   S\SS4S jjrS\SS4S jrS%S jrS\\\4   4S jrS\\   4S jrS\S\S\4S jrS\SS4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jr S\S\S\4S jr!S\S\S\4S  jr"S\S\S\4S! jr#S\S\S\4S" jr$S\\\4   4S# jr%S$r&g)'PSBaseParser   z=Most basic PostScript parser that performs only tokenization.i   fpr2   Nc                 2    Xl         U R                  S5        g Nr   )rz   seekr7   rz   s     r   r8   PSBaseParser.__init__   s    		!r   c                 b    SU R                   R                  U R                  U R                  4-  $ )Nz<%s: %r, bufpos=%d>)	__class__r   rz   bufposr7   s    r   r=   PSBaseParser.__repr__   s&    $(?(?$++'VVVr   c                     g r4   r   r   s    r   flushPSBaseParser.flush       r   c                 $    U R                  5         g r4   )r   r   s    r   closePSBaseParser.close   s    

r   c                 4    U R                   U R                  -   $ r4   )r   charposr   s    r   tellPSBaseParser.tell   s    {{T\\))r   posnc                 B   U R                   R                  5       nU(       d  U R                  U R                  -   nU R                   R	                  U5        [
        R                  SXR                   R                  U5      5        U R                   R	                  U5        g )Nzpoll(%d): %r)rz   r   r   r   r}   logdebugread)r7   r   r   pos0s       r   pollPSBaseParser.poll   sc    ww||~++,CS		.#ww||A7Tr   c                     [         R                  SU5        U R                  R                  U5        Xl        SU l        SU l        U R                  U l        SU l	        SU l
        / U l        g)z'Seeks the parser to the given position.zseek: %rr   r   N)r   r   rz   r}   r   bufr   _parse_main_parse1	_curtoken_curtokenpos_tokensr7   r   s     r   r}   PSBaseParser.seek   sY    		*c"S''<>r   c                 $   U R                   [        U R                  5      :  a  g U R                  R	                  5       U l        U R                  R                  U R                  5      U l        U R                  (       d  [        S5      eSU l         g )NzUnexpected EOFr   )	r   lenr   rz   r   r   r   BUFSIZr   r   s    r   fillbufPSBaseParser.fillbuf   s_    <<#dhh-'gglln77<<,xx())r   c                    SnU R                   U R                  -   nSn U R                  5         U(       aF  U R                  U R                  U R                  S-    nUS:X  a  X-  nU =R                  S-  sl        O[        R                  U R                  U R                  5      nU(       aM  XR                  U R                  UR                  S5       -  nUR                  S5      U l        USS S:X  a  S	nO6O8XR                  U R                  S -  n[        U R                  5      U l        GM  [        R                  S
X!5        X!4$ )z3Fetches a next line that ends either with \r or \n.r   Fr      
r   N   Tznextline: %r, %r)
r   r   r   r   EOLsearchendr   r   r   )r7   linebuflineposeolcms         r   nextlinePSBaseParser.nextline   s   ++,LLNHHT\\DLL1,<=:LGLLA%L

488T\\2A88DLL1558<< uuQx23<5(C88DLLN33"488}' ( 			$g7!!r   c              #     #    U R                   R                  SS5        U R                   R                  5       nSnSU:  a  Un[        SXR                  -
  5      nU R                   R                  U5        U R                   R                  X1-
  5      nU(       d   g [        UR                  S5      UR                  S5      5      nUS:X  a  XB-   nOXES U-   v   USU nSnMG  SU:  a  M  g7f)zYFetches a next line backword.

This is used to locate the trailers at the end of a file.
r      r   r   r   r   N)rz   r}   r   maxr   r   rfind)r7   r   r   prevpossr   s         r   revreadlinesPSBaseParser.revreadlines  s     
 	Qgglln#gGa{{*+CGGLLW]+A 	 77'Ceck!bqE  #g 	s   C(C-,C-r   ic                 |   [         R                  X5      nU(       d  [        U5      $ UR                  S5      nXUS-    nU R                  U-   U l        US:X  a  SU l        U R                  U l        US-   $ US:X  a  SU l        U R                  U l        US-   $ US;   d  UR                  5       (       a  XPl        U R                  U l        US-   $ US:X  a  XPl        U R                  U l        US-   $ UR                  5       (       a  XPl        U R                  U l        US-   $ US:X  a$  SU l        SU l        U R                   U l        US-   $ US	:X  a  SU l        U R"                  U l        US-   $ US
:X  a  SU l        U R$                  U l        US-   $ US:X  a  US-   $ U R'                  [)        U5      5        US-   $ )Nr   r      %   /r   s   -+   .rt      <   >    )NONSPCr   r   startr   r   r   _parse_commentr   _parse_literalisdigit_parse_number_parse_floatisalpha_parse_keywordparen_parse_string_parse_wopen_parse_wclose
_add_tokenKWDr7   r   r   r   jr   s         r   r   PSBaseParser._parse_main)  s   MM!q6MGGAJ!a%L KK!O9!DN..DLq5L$Y DN..DLq5L%Z199;;N--DLq5L$YN,,DLq5LYY[[N..DLq5L$Y DNDJ--DLq5L$Y DN,,DLq5L$Y DN--DLq5L'\q5LOOCF#q5Lr   objc                 R    U R                   R                  U R                  U45        g r4   )r   appendr   )r7   r   s     r   r   PSBaseParser._add_tokenW  s"    T..45r   c                     [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        U R
                  U l        U$ r|   )r   r   r   r   r   r   r   r7   r   r   r   r   s        r   r   PSBaseParser._parse_comment[  sa    JJqNNae#Nq6MGGAJ!a& '' r   c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a  SU l        U R                  U l        US-   $  [        U R                  S5      nU R                  [        U5      5        U R                  U l        U$ ! [         a    U R                  n NEf = f)Nr   r      #r   r]   )END_LITERALr   r   r   r   hex_parse_literal_hexr   r@   ra   r   LITr   )r7   r   r   r   r   r   r1   s          r   r   PSBaseParser._parse_literalg  s    q$NNae#Nq6MGGAJ!a& !a%L9DH22DLq5L	"&)$..'&BD 	D	"''	  	">>D	"s   C C.-C.c                 X   XUS-    n[         R                  U5      (       a3  [        U R                  5      S:  a  U =R                  U-  sl        US-   $ U R                  (       a3  U =R                  [        [        U R                  S5      45      -  sl        U R                  U l        U$ )Nr   r      )	HEXmatchr   r   r   rA   intr   r   r7   r   r   r   s       r   r   PSBaseParser._parse_literal_hex{  s{    !a%L99Q<<CMA-HHMHq5L88NNeS2%6$899N**r   c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a+  U =R                  U-  sl        U R
                  U l        US-   $  U R                  [        U R                  5      5        U R                  U l        U$ ! [         a     Nf = f)Nr   r   r   )
END_NUMBERr   r   r   r   r   r   r   r   
ValueErrorr   r   s         r   r   PSBaseParser._parse_number  s    a#NNae#Nq6MGGAJ!a& !a%L9NNaN,,DLq5L	OOC/0 ''  		s    $C 
C$#C$c                 ^   [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl         U R                  [        U R                  5      5        U R                  U l	        U$ ! [         a     Nf = fr|   )
r   r   r   r   r   r   floatr   r   r   r   s        r   r   PSBaseParser._parse_float  s    a#NNae#Nq6MGGAJ!a& 	OOE$..12 ''  		s   ($B 
B,+B,c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        U R                  S:X  a  SnO(U R                  S:X  a  SnO[        U R                  5      nU R                  U5        U R                  U l        U$ )Nr   s   trueTs   falseF)	END_KEYWORDr   r   r   r   r   r   r   r   r7   r   r   r   r   tokens         r   r   PSBaseParser._parse_keyword  s    q$NNae#Nq6MGGAJ!a& >>W$,0E^^x'E'E''r   c                 z   [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a  SU l        U R                  U l        US-   $ US:X  a/  U =R                  S-  sl        U =R                  U-  sl        US-   $ US:X  a@  U =R                  S-  sl        U R                  (       a  U =R                  U-  sl        US-   $ U R                  U R                  5        U R                  U l        US-   $ )Nr   r   rv   r   rt   ru   )
END_STRINGr   r   r   r   oct_parse_string_1r   r   r   r   r   s         r   r   PSBaseParser._parse_string  s   a#NNae#Nq6MGGAJ!a& !a%L:DH//DLq5L9JJ!OJNNaNq5L9JJ!OJzz!#1u'''1ur   c                 <   XUS-    n[         R                  U5      (       a3  [        U R                  5      S:  a  U =R                  U-  sl        US-   $ U R                  (       aF  U =R                  [        [        U R                  S5      45      -  sl        U R                  U l        U$ U[        ;   a'  U =R                  [        [        U   45      -  sl        O+US:X  a%  [        U5      US-   :  a  XS-   US-    S:X  a  US-  nU R                  U l        US-   $ )z+Parse literal strings

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

OCT_STRINGr   r   r   r   rA   r   r   r   
ESC_STRINGr   s       r   r   PSBaseParser._parse_string_1  s    
 !a%LA3txx=1#4HHMHq5LXXNNeS1%5$788N--DLH*_NNeZ]$455N%ZCFQUNqQQ/?5/H FA ))1ur   c                     XUS-    nUS:X  a-  U R                  [        5        U R                  U l        US-  nU$ U R                  U l        U$ )Nr   r   )r   KEYWORD_DICT_BEGINr   r   _parse_hexstringr   s       r   r   PSBaseParser._parse_wopen  sT    !a%L9OO./++DLFA   00DLr   c                 v    XUS-    nUS:X  a  U R                  [        5        US-  nU R                  U l        U$ )Nr   r   )r   KEYWORD_DICT_ENDr   r   r   s       r   r   PSBaseParser._parse_wclose  s>    !a%L9OO,-FA''r   c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        [
        R                  S [        R                  SU R                  5      5      nU R                  U5        U R                  U l
        U$ )Nr   c                 L    [        [        U R                  S5      S5      45      $ )Nr   r   )rA   r   group)r   s    r   <lambda>/PSBaseParser._parse_hexstring.<locals>.<lambda>  s    eSR023r   r   )END_HEX_STRINGr   r   r   r   HEX_PAIRsubSPCr   r   r   r   s         r   r  PSBaseParser._parse_hexstring  s    !!!'NNae#Nq6MGGAJ!a& 3SWWS$..5Q
 	''r   c                 &   U R                   (       dN  U R                  5         U R                  U R                  U R                  5      U l        U R                   (       d  MN  U R                   R                  S5      n[        R                  SU5        U$ )Nr   znexttoken: %r)r   r   r   r   r   popr   r   )r7   r   s     r   	nexttokenPSBaseParser.nexttoken  s`    ,,LLN<<$,,?DL ,,,   #		/5)r   )r   r   r   r   r   r   r   rz   r   r   r   r2   N)NP   )'r   r   r   r   r-   r   r   r8   r@   r=   r   r   r   r   r	   r   r}   r   r
   rA   r   r   r   r   PSBaseParserTokenr   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   rx   rx      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   rx   ExtraTc                      \ rS rSrS\SS4S jrSS jrS\SS4S jrS	\	\
   SS4S
 jrS\S\\	\
      4S jrS\\	\
      4S jrS	\	\
   SS4S jrS\S\SS4S jrS\S\\\\\
      4   4S jrS\S\SS4S jrS\	\
   4S jrSrg)PSStackParseri  rz   r2   Nc                 N    [         R                  X5        U R                  5         g r4   )rx   r8   resetr~   s     r   r8   PSStackParser.__init__   s    d'

r   c                 <    / U l         S U l        / U l        / U l        g r4   )contextcurtypecurstackresultsr   s    r   r  PSStackParser.reset%  s!    TV&*4635r   r   c                 N    [         R                  X5        U R                  5         g r4   )rx   r}   r  r   s     r   r}   PSStackParser.seek,  s    $$

r   objsc                 :    U R                   R                  U5        g r4   )r#  extendr7   r(  s     r   pushPSStackParser.push1  s    T"r   r   c                 F    U R                   U* S  n/ U R                   U* S & U$ r4   r#  )r7   r   r(  s      r   r  PSStackParser.pop5  s+    }}aRS!qbcr   c                 ,    U R                   n/ U l         U$ r4   r/  r+  s     r   popallPSStackParser.popall:  s    }}r   c                      [         R                  SU5        U R                  R	                  U5        g ! [         a    [         R                  S5         N=f = f)Nzadd_results: %rz!add_results: (unprintable object))r   r   ra   r$  r*  r+  s     r   add_resultsPSStackParser.add_results?  sK    	;II'. 	D!  	;II9:	;s   4 AAtypec                     U R                   R                  XR                  U R                  45        U/ sU l        U l        [        R                  SX5        g )Nzstart_type: pos=%r, type=%r)r!  r   r"  r#  r   r   )r7   r   r7  s      r   
start_typePSStackParser.start_typeG  sC    S,,>?)-r%t}		/;r   c                 :   U R                   U:w  a%  [        SR                  U R                   U5      5      eU R                   VVs/ s H  u  p#UPM	     nnnU R                  R                  5       u  oPl         U l        [        R                  SXQU5        XT4$ s  snnf )NzType mismatch: {!r} != {!r}z"end_type: pos=%r, type=%r, objs=%r)r"  r%   r`   r#  r!  r  r   r   )r7   r7  _r   r(  r   s         r   end_typePSStackParser.end_typeM  s    <<4;BB4<<QUVWW$(MM2MM2-1\\-=-=-?*lDM		64H{ 3s   Br   c                     g r4   r   )r7   r   r   s      r   
do_keywordPSStackParser.do_keywordU  r   r   c           	      D   U R                   (       Gd=  U R                  5       u  p[        U[        [        [
        [        [        [        45      (       a  U R                  X45        GOU[        :X  a  U R                  US5        GOU[        :X  a#   U R                  U R                  S5      5        GOeU["        :X  a  U R                  US5        GOGU[$        :X  ax   U R                  S5      u  p['        U5      S-  S:w  a  SU-  n[)        U5      e[+        SU5       VVs0 s H  u  pVUc  M
  [-        U5      U_M     nnnU R                  X45        OU[.        :X  a  U R                  US5        OU[0        :X  a"   U R                  U R                  S5      5        O|[        U[2        5      (       a3  [4        R7                  SXU R8                  5        U R;                  X5        O4[4        R=                  SUUU R8                  5        U R;                  X5        e U R>                  (       a  GM+  U RA                  5         U R                   (       d  GM=  U R                   RC                  S5      n [4        R7                  S	U5        U$ ! [         a    [        R                   (       a  e  Nf = fs  snnf ! [         a    [        R                   (       a  e  Nf = f! [         a    [        R                   (       a  e  Nf = f! [D         a    [4        R7                  S
5         U$ f = f)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  r^   r   r   boolr@   rA   r/   r,  KEYWORD_ARRAY_BEGINr9  KEYWORD_ARRAY_ENDr=  r%   r   r_   r  r  r   r"   r   rc   KEYWORD_PROC_BEGINKEYWORD_PROC_ENDrD   r   r   r#  r@  errorr!  r   r  ra   )	r7   r   r   r(  	error_msgkvrD  r   s	            r   
nextobjectPSStackParser.nextobjectX  s    ,,,>>+LS%#udC	!JKK		3,'--S)++IIdmmC01 ,,S)**"&--"4KS4y1})$F$M	+I66 '/q$&7&7FQ +Q*&7  
 IIsh' ,,S)**IIdmmC01 E9--		<c$-- +		?MM	 +||

{ ,,,| llq!	:II&, 
o #  ' #  ' #  '0  	:II89
	:sa    J AJ0  	J*-J*=J0 ; K ,K<  J'&J'*J0 0 KK K98K9<LL)r!  r#  r"  r$  r  )r   r   r   r   r   r8   r  r   r}   PSStackEntryr  r,  r   r  r2  r5  r@   r9  r
   PSStackTyper=  rD   r@  rO  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   ra   r   r   r"   r%   r(   r+   r/   rD   rJ   rL   PSLiteralTablePSKeywordTablerU   r   r   rI  rJ  rG  rH  r  r  objectrc   rf   compiler   r  r   r   r   r  r  r   r   r   r   r   r   rF  rA   r  rx   r  rR  r   rQ  r  r   r   r   <module>r]     sw  
  	     !	) 		K 		K 		+ 		; 		 	 . ( :y)4GH% * y)y)Y t9 $i I Z u: F s  F s  	jjjj	F	jj!jj././::*+ZZ
#
jj./ZZ%
ZZ	"

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