
    .i                         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  e j        e          Z G d de          Z G d d          Zd	ed
efdZdS )    N)BytesIO)BinaryIOIteratorListOptionalcast)PDFEOFErrorPDFExceptionc                       e Zd ZdS )CorruptDataErrorN)__name__
__module____qualname__     H/var/www/html/analyses/venv/lib/python3.11/site-packages/pdfminer/lzw.pyr   r   
   s        Dr   r   c                   V    e Zd ZdeddfdZdedefdZdedefdZde	e         fd	Z
dS )

LZWDecoderfpreturnNc                 Z    || _         d| _        d| _        d| _        g | _        d | _        d S )Nr      	   )r   buffbposnbitstableprevbuf)selfr   s     r   __init__zLZWDecoder.__init__   s0    		
,.
(,r   bitsc                 :   d}	 d| j         z
  }||k    r-||z  | j        ||z
  z	  d|z  dz
  z  z  }| xj         |z  c_         nZ||z  | j        d|z  dz
  z  z  }||z  }| j                            d          }|st          t          |          | _        d| _         |S )Nr      r   )r   r   r   readr	   ord)r   r!   vrxs        r   readbitszLZWDecoder.readbits   s    	DIAqyy $YDI!d($;da#PQ		T!		
 !V	a1f\ :;	GLLOO &%%FF		)	* r   codec                 v   d}|dk    rbd t          d          D             | _        | j                            d            | j                            d            d| _        d| _        nN|dk    rnF| j        s)t          t          | j        |                   x}| _        n|t          | j                  k     rKt          t          | j        |                   }| j                            | j        |d d         z              no|t          | j                  k    rP| j                            | j        | j        d d         z              t          t          | j        |                   }nt          t          | j                  }|dk    rd| _        n|d	k    rd
| _        n|dk    rd| _        || _        |S )Nr      c                 .    g | ]}t          |f          S r   )bytes).0cs     r   
<listcomp>z#LZWDecoder.feed.<locals>.<listcomp>4   s     :::!%++:::r   r   i  r#   i  
   i     i     )	ranger   appendr   r   r   r.   lenr   )r   r*   r(   table_lengths       r   feedzLZWDecoder.feed1   s   3;;::uSzz:::DJJd###Jd###DLDJJS[[ 	#E4:d+;<<<Ac$*oo%%
4 011
!!$,2A2"67777TZ((
!!$,bqb1A"ABBB
4 011&&tz??Ls""

%%

%%
DLr   c           	   #     K   	 	 |                      | j                  }n# t          $ r Y d S w xY w	 |                     |          }n# t          $ r Y d S w xY w|V  t
                              d| j        ||| j        dd                     )Nr#   z&nbits=%d, code=%d, output=%r, table=%ri  )r)   r   EOFErrorr9   r   loggerdebugr   )r   r*   r(   s      r   runzLZWDecoder.runP   s      	}}TZ00   IIdOO#    GGGLL8

344   	s     
..A 
AA)r   r   r   r   r    intr)   r.   r9   r   r>   r   r   r   r   r      s        -8 - - - - -S S    2     >Xe_      r   r   datar   c                     t          |           }t          |                                          }d                    |          S )Nr   )r   r   r>   join)r@   r   ss      r   	lzwdecoderD   f   s4    	B2A88A;;r   )loggingior   typingr   r   r   r   r   pdfminer.pdfexceptionsr	   r
   	getLoggerr   r<   r   r   r.   rD   r   r   r   <module>rJ      s           ; ; ; ; ; ; ; ; ; ; ; ; ; ; < < < < < < < <		8	$	$	 	 	 	 	| 	 	 	U U U U U U U UpE e      r   