
    
gB                     (   d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 dZ
dZdZdZe
d	ed
edediZe
dededed	iZe
dededediZdZ ej        d ej        e          z   dz             Zd	dddZg g ddgddgddgddgddgg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<Zd=Zd>Zd?Zd@ZdAZdB ZdC  ed          D             ZdD ZdE Z dF Z!dG Z"dH Z#dI Z$dJ Z%dK Z&dL Z'dM Z(dN Z)dO Z*dP Z+d]dQZ,dR Z-dS Z.dT Z/ G dU dV          Z0 G dW dX          Z1dYe1dZee	         fd[Z2d\ Z3dS )^    N)List)LUTbase
exceptions)RSBlock            
   	                  s-   0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:s   ^[s   ]*\Z   )   r	   r                  "   )r   r   &   )r      *   )r   r   .   )r      2   )r   r   6   )r       :   )r   r   >   )r   r   r   B   )r   r   0   F   )r   r   r    J   )r   r   r!   N   )r   r   8   R   )r   r   r#   V   )r   r   r$   Z   )r   r   r    H   ^   )r   r   r    r(   b   )r   r   r!   r)   f   )r   r   r!   P   j   )r   r"   r#   T   n   )r   r   r#   r,   r   )r   r   r$   r-   v   )r   r   r    r(   r0   z   )r   r   r!   r)   r1   ~   )r   r   4   r)   h      )r   r   r*   r+   l      )r   r   <   r,   p      )r   r   r#   r,   r6      )r   r   r$   r-   r7      )r   r   r!   r)   r1   r9      )r   r   r    L   r1         )r   r   r!   r2   r3         )r   r"   r#   r4   r5         )r   r   r!   r+   r5   rA      )r   r   r#   r,   r6   rB      i7  i%  iT        c                     | j         S N
data_count)blocks    =/var/www/api/venv/lib/python3.11/site-packages/qrcode/util.py_data_countrV   e   s        c                 P    g | ]"d gfdt          dd          D             z   #S )r   c                     g | ]:}d t          t          t          t          j        |                              z  ;S )r   )summaprV   r   	rs_blocks).0versionerror_corrections     rU   
<listcomp>z<listcomp>.<listcomp>k   sM        	
CK9I!J!JKKLLL  rW   r   )   )range)r]   r_   s    @rU   r`   r`   i   s`        	 C   Q||    rW   c                 *   | dz  }t          |          t          t                    z
  dk    rW|t          t          |          t          t                    z
  z  z  }t          |          t          t                    z
  dk    W| dz  |z  t          z  S )Nr   r   )	BCH_digitG15G15_MASKdatads     rU   BCH_type_inforj   s   s{    
A
A,,3
'1
,
,	SYq\\IcNN233 A,,3
'1
,
, RZ1((rW   c                    | dz  }t          |          t          t                    z
  dk    rW|t          t          |          t          t                    z
  z  z  }t          |          t          t                    z
  dk    W| dz  |z  S )Nr   r   )rd   G18rg   s     rU   BCH_type_numberrm   {   st    
A
A,,3
'1
,
,	SYq\\IcNN233 A,,3
'1
,
,BJ!rW   c                 6    d}| dk    r|dz  }| dz  } | dk    |S )Nr   r    )rh   digits     rU   rd   rd      s4    E
!))

 !)) LrW   c                 "    t           | dz
           S Nr   )PATTERN_POSITION_TABLEr^   s    rU   pattern_positionru      s    !'A+..rW   c                     | dk    rd S | dk    rd S | dk    rd S | dk    rd S | d	k    rd
 S | dk    rd S | dk    rd S | dk    rd S t          d| z             )z>
    Return the mask function for the given mask pattern.
    r   c                     | |z   dz  dk    S Nr	   r   ro   ijs     rU   <lambda>zmask_func.<locals>.<lambda>       QUaK1, rW   r   c                     | dz  dk    S rx   ro   ry   s     rU   r|   zmask_func.<locals>.<lambda>       AEQJ rW   r	   c                     |dz  dk    S Nr   r   ro   ry   s     rU   r|   zmask_func.<locals>.<lambda>   r   rW   r   c                     | |z   dz  dk    S r   ro   ry   s     rU   r|   zmask_func.<locals>.<lambda>   r}   rW   r
   c                 n    t          j        | dz            t          j        |dz            z   dz  dk    S Nr	   r   r   )mathfloorry   s     rU   r|   zmask_func.<locals>.<lambda>   s1    TZA..AE1B1BBaG1L rW      c                 ,    | |z  dz  | |z  dz  z   dk    S r   ro   ry   s     rU   r|   zmask_func.<locals>.<lambda>   s     QUaK1q5A+5: rW   r   c                 2    | |z  dz  | |z  dz  z   dz  dk    S r   ro   ry   s     rU   r|   zmask_func.<locals>.<lambda>   %    a!eq[AEQ;6!;q@ rW   r   c                 2    | |z  dz  | |z   dz  z   dz  dk    S )Nr   r	   r   ro   ry   s     rU   r|   zmask_func.<locals>.<lambda>   r   rW   zBad mask pattern: )	TypeError)patterns    rU   	mask_funcr      s     !||,,,!||&&&!||&&&!||,,,!||LLL!||:::!||@@@!||@@@
(72
3
33rW   c                 D    | dk     rt           S | dk     rt          S t          S )Nr      )MODE_SIZE_SMALLMODE_SIZE_MEDIUMMODE_SIZE_LARGErt   s    rU   mode_sizes_for_versionr      s&    ||	2rW   c                     | t           t          t          t          fvrt	          d|  d          t          |           t          |          |          S )NInvalid mode ())MODE_NUMBERMODE_ALPHA_NUMMODE_8BIT_BYTE
MODE_KANJIr   check_versionr   )moder^   s     rU   length_in_bitsr      sQ    KLLL0000111'!'**400rW   c                 D    | dk     s| dk    rt          d|  d          d S )Nr   (   zInvalid version (was z, expected 1 to 40))
ValueErrorrt   s    rU   r   r      s4    {{gllMMMMNNN #lrW   c                     t          |           }d}t          | |          }|t          | |          z  }|t          | |          z  }|t	          | |          z  }|S Nr   )len_lost_point_level1_lost_point_level2_lost_point_level3_lost_point_level4)modulesmodules_count
lost_points      rU   r   r      sf    LLMJ#G];;J$Wm<<<J$Wm<<<J$Wm<<<JrW   c           	      >  	 d}t          |          }dg|dz   z  	|D ]a}| |         }|d         }d}|D ]4}||         |k    r|dz  }|dk    r	|xx         dz  cc<   d}||         }5|dk    r	|xx         dz  cc<   b|D ]k}| d         |         }d}|D ]@}| |         |         |k    r|dz  }|dk    r	|xx         dz  cc<   d}| |         |         }A|dk    r	|xx         dz  cc<   l|t          	fdt          d|dz             D                       z  }|S )Nr   r   r   c              3   4   K   | ]}|         |d z
  z  V  dS )r	   Nro   )r]   each_length	containers     rU   	<genexpr>z%_lost_point_level1.<locals>.<genexpr>   sE         	++/2     rW   )rb   rZ   )
r   r   r   modules_rangerowthis_rowprevious_colorlengthcolr   s
            @rU   r   r      s   J-((M}q()I # #3<!!  	/ 	/C}..!Q;;f%%%*%%%!)#Q;;f" # # C  	3 	3Cs|C N22!Q;;f%%%*%%%!(c!2Q;;f"#     MA$566     J
 rW   c                    d}t          |dz
            }|D ]s}| |         }| |dz            }t          |          }|D ]L}||dz            }	|	||dz            k    rt          |d            -|	||         k    r:|	||         k    rG|dz  }Mt|S )Nr   r   r   rb   iternext)
r   r   r   r   r   r   next_rowmodules_range_iterr   	top_rights
             rU   r   r      s    J-!+,,M    3<37# "-00% 	  	 C q)IHS1W--- '....hsm++hsm++a

	  rW   c                    t          |          }t          |dz
            }d}|D ]}| |         }t          |          }d}|D ]}||dz            s||dz            r||dz            s||dz            r||dz            s||dz            r7||dz            r,||d	z            r!||d
z            s||dz            s||dz            rB||dz            s<||dz            s1||d	z            s&||d
z            r||dz            r||dz            r|dz  }||dz            rt          |d            ތ|D ]d}t          |          }d}|D ]L}| |dz            |         s| |dz            |         r| |dz            |         s| |dz            |         r| |dz            |         s| |dz            |         rU| |dz            |         rD| |d	z            |         r3| |d
z            |         s"| |dz            |         s| |dz            |         rf| |dz            |         sZ| |dz            |         sI| |d	z            |         s8| |d
z            |         r'| |dz            |         r| |dz            |         r|dz  }| |dz            |         rt          |d            Nf|S )Nr   r   r   r
   r   r   r   r	   r   r   r   r   r   )	r   r   r   modules_range_shortr   r   r   modules_range_short_iterr   s	            rU   r   r     s   
 -((M 233J !5 !53<#'(;#<#< + 	5 	5CS1W%!S1W%! !q)! S1W%	!
 !q)! S1W%! !q)! !q)! %S1W-! %S1W-! %S2X.! $C!G,! %S1W-! %S1W-!  !q)!!" !q)#!$ !r*%!* b 
 b! 5-t444;	5>  5 5#'(;#<#< + 	5 	5CC!G$S)!C!G$S)!  a(-! C!G$S)	!
  a(-! C!G$S)!  a(-!  a(-! $C!G,S1! $C!G,S1! $C"H-c2! #37+C0! $C!G,S1! $C!G,S1!   a(-!!"  a(-#!$  b)#.%!* b 
sRx % 5-t4441	54 rW   c                     t          t          t           |                     }t          |          |dz  z  }t          t	          |dz  dz
            dz            }|dz  S )Nr	   d   r    r   r   )rZ   r[   floatintabs)r   r   
dark_countpercentratings        rU   r   r   [  s]    Sg&&''JJ=!#34GWs]R'((1,--FB;rW   c              #     K   t          |           } d}dt          j        t                    z   dz   }t	          |           |k    r5t          j        d|z   dz             }t          j        d|z   dz             }nVdt          |                              d          z   dz   }t          j        ||z             }t          j        ||z             }t          | |          }|D ][\  }}|rt          |t          d	
          V  !t          ||          D ])\  }}	|rt          nt          }
t          |	|
d	
          V  *\dS )z
    An iterator returning QRData chunks optimized to the data content.

    :param minimum: The minimum number of bytes in a row to split as a chunk.
    s   \d   [   ]   ^s   +$   {asciis   ,}F)r   
check_dataN)to_bytestringreescape	ALPHA_NUMr   compilestrencode_optimal_splitQRDatar   r   r   )rh   minimumnum_patternalpha_pattern	re_repeatnum_bitsis_numchunkis_alpha	sub_chunkr   s              rU   optimal_data_chunksr   c  sl      DK29Y///$6M
4yyGj!3e!;<<
4-#7%#?@@3w<<..w777%?	jy!899
=9#<==dK00H! E E 	E[UCCCCCCC'5e]'K'K E E#))1E~~~YTeDDDDDDDE	E ErW   c              #      K   | rjt          j        ||           }|snR|                                |                                }}|rd| d |         fV  d| ||         fV  | |d          } | j| rd| fV  d S d S )NFT)r   searchstartend)rh   r   matchr   r   s        rU   r   r   }  s      
 	'4(( 	[[]]EIIKKs 	&fuf%%%%DsO####CDDz    Tk rW   c                 t    t          | t                    s"t          |                               d          } | S )z^
    Convert data to a (utf-8 encoded) byte-string if it isn't a byte-string
    already.
    zutf-8)
isinstancebytesr   r   rh   s    rU   r   r     s4    
 dE"" )4yy((KrW   c                     |                                  rt          S t                              |           rt          S t
          S )z<
    Calculate the optimal mode for this chunk of data.
    )isdigitr   RE_ALPHA_NUMr   r   r   r   s    rU   optimal_moder     s<     ||~~ $ rW   c                   ,    e Zd ZdZddZd Zd Zd ZdS )	r   zS
    Data held in a QR compatible format.

    Doesn't currently handle KANJI.
    NTc                    |rt          |          }|t          |          | _        nW|| _        |t          t          t
          fvrt          d| d          |r%|t          |          k     rt          d|           || _        dS )zg
        If ``mode`` isn't provided, the most compact QR data type possible is
        chosen.
        Nr   r   z-Provided data can not be represented in mode )	r   r   r   r   r   r   r   r   rh   )selfrh   r   r   s       rU   __init__zQRData.__init__  s    
  	' &&D<$T**DIIDIKHHH 8 8 8 8999 Yd\$%7%777 !WQU!W!WXXX			rW   c                 *    t          | j                  S rQ   )r   rh   r   s    rU   __len__zQRData.__len__  s    49~~rW   c                     | j         t          k    rwt          dt          | j                  d          D ]Q}| j        ||dz            }t
          t          |                   }|                    t          |          |           Rd S | j         t          k    rt          dt          | j                  d          D ]}| j        ||dz            }t          |          dk    rY|                    t          
                    |d                   dz  t          
                    |d                   z   d           |                    t          
                    |          d           d S | j        }|D ]}|                    |d           d S )	Nr   r   r	   r   -   r   r   r   )r   r   rb   r   rh   NUMBER_LENGTHputr   r   r   find)r   bufferrz   chars
bit_lengthrh   cs          rU   writezQRData.write  s   9##1c$)nna00 3 3	!a!e),*3u::6


3u::z22223 3 Y.((1c$)nna00 9 9	!a!e),u::>>JJ!uQx0025	uQx8P8PPRT    JJy~~e44a88889 9 9D ! !

1a    ! !rW   c                 *    t          | j                  S rQ   )reprrh   r   s    rU   __repr__zQRData.__repr__  s    DIrW   )NT)__name__
__module____qualname____doc__r   r   r   r  ro   rW   rU   r   r     s_            &  ! ! !,    rW   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )	BitBufferc                 "    g | _         d| _        d S r   )r   r   r   s    rU   r   zBitBuffer.__init__  s    !#rW   c                 J    d                     d | j        D                       S )N.c                 ,    g | ]}t          |          S ro   )r   )r]   ns     rU   r`   z&BitBuffer.__repr__.<locals>.<listcomp>  s    555AQ555rW   )joinr   r   s    rU   r  zBitBuffer.__repr__  s%    xx55555666rW   c                 j    t          j        |dz            }| j        |         d|dz  z
  z	  dz  dk    S )Nr   r   r   )r   r   r   )r   index	buf_indexs      rU   getzBitBuffer.get  s9    Juqy))	Y'A	M:a?AEErW   c                 t    t          |          D ]'}|                     |||z
  dz
  z	  dz  dk               (d S rr   )rb   put_bit)r   numr   rz   s       rU   r   zBitBuffer.put  sM    v 	? 	?ALL36A:>2a7A=>>>>	? 	?rW   c                     | j         S rQ   )r   r   s    rU   r   zBitBuffer.__len__  s
    {rW   c                     | j         dz  }t          | j                  |k    r| j                            d           |r | j        |xx         d| j         dz  z	  z  cc<   | xj         dz  c_         d S )Nr   r   rF   r   )r   r   r   append)r   bitr  s      rU   r  zBitBuffer.put_bit  s    K1$	t{y((Kq!!! 	@K	"""dt{Q&??"""qrW   N)	r  r  r  r   r  r  r   r   r  ro   rW   rU   r	  r	    sq          7 7 7F F F? ? ?      rW   r	  r   r\   c           	      <    dd}d}g }g }|D ]}|j         }|j        |z
  }t          ||          }t          ||          } fdt          |          D             }	|z  |t          j        v r&t          j        t          j        |         d          }
nTt          j        dgd          }
t          |          D ].}|
t          j        dt          j        |          gd          z  }
/t          j        |	t          |
          dz
            }||
z  }g }t          |          |z
  }t          |          D ]*}||z   }|
                    |dk    r||         nd           +|
                    |	           |
                    |           g }t          |          D ]5}|D ]0}|t          |          k     r|
                    ||                    16t          |          D ]5}|D ]0}|t          |          k     r|
                    ||                    16|S )Nr   c                 6    g | ]}d j         |z            z  S )   )r   )r]   rz   r   offsets     rU   r`   z create_bytes.<locals>.<listcomp>  s)    OOO1dV]1v:66OOOrW   r   )rS   total_countmaxrb   r   
rsPoly_LUTr   
Polynomialgexpr   r  )r   r\   
maxDcCount
maxEcCountdcdataecdatars_blockdcCountecCount
current_dcrsPolyrz   rawPolymodPoly
current_ec
mod_offsetmodIndexrh   dcecr  s   `                   @rU   create_bytesr4    s]   FJJ F F " "%&0W--
W--
OOOOOgOOO
' cn$$_S^G%<a@@FF_aS!,,F7^^ H H$/1dill2CQ"G"GG/*c&kkAo>>F"
\\G+
w 	K 	KA:~HHMMgh//JJJJj!!!j!!!!D: # # 	# 	#B3r77{{BqE"""	# : # # 	# 	#B3r77{{BqE"""	# KrW   c                    t                      }|D ]h}|                    |j        d           |                    t          |          t	          |j        |                      |                    |           it          j        | |          }t          d |D                       }t          |          |k    r(t          j
        dt          |          d|d          t          t          |t          |          z
  d                    D ]}|                    d           t          |          dz  }|r*t          d|z
            D ]}|                    d           |t          |          z
  dz  }	t          |	          D ]B}
|
dz  d	k    r|                    t          d           '|                    t          d           Ct!          ||          S )
Nr
   c              3   *   K   | ]}|j         d z  V  dS )r   NrR   )r]   rT   s     rU   r   zcreate_data.<locals>.<genexpr>0  s*      @@UE$q(@@@@@@rW   z!Code length overflow. Data size (z) > size available (r   Fr   r	   r   )r	  r   r   r   r   r   r   r\   rZ   r   DataOverflowErrorrb   minr  PAD0PAD1r4  )r^   r_   	data_listr   rh   r\   	bit_limit_delimitbytes_to_fillrz   s              rU   create_datar@  '  s   [[F  

49a   

3t99nTY@@AAA

6 w(899I@@i@@@@@I
6{{Y**6{{{{III'
 
 	
 3y3v;;.2233  u &kkAoG "q7{## 	" 	"ANN5!!!! V,2M=!!    q5A::JJtQJJtQ	***rW   )r
   )4r   r   typingr   qrcoder   r   r   qrcode.baser   r   r   r   r   r   r   r   r   r   r   r   r   rs   re   rl   rf   r9  r:  rV   rb   BIT_LIMIT_TABLErj   rm   rd   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r4  r@  ro   rW   rU   <module>rE     sm    				       ( ( ( ( ( ( ( ( ( (       
 AA	 BB	  BB	 =	rz%)")I"6"66ABB 1##))G) G) G	)
 G) G) KK) KK) KK) KK) KK) KK) KK) OO) OO)  OO!)" OO#)$ OO%)& OO')( OO))* +), -). /)0 1)2 3)4 5)6 7)8 9): ;)< =)> ?)@ A)B C)D E)F #""G)H #""I)J #""K)L #""M)N #""O)P #""Q) V R  C    "E!HH  ) ) )    / / /4 4 4.  1 1 1O O O

 
 
( ( (V  6I I IX  E E E E4      4 4 4 4 4 4 4 4n       81 1tG} 1 1 1 1h"+ "+ "+ "+ "+rW   