HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //proc/self/root/usr/lib/python3.6/site-packages/qrcode/__pycache__/main.cpython-36.opt-1.pyc
3

eb�V�4�@s`ddlmZmZmZddlmZddlZddlmZd
dd�Z	dd�Z
d	d
�ZGdd�d�ZdS)�)�	constants�
exceptions�util)�	BaseImageN)�bisect_leftcKstf|�}|j|�|j�S)N)�QRCode�add_data�
make_image)�data�kwargsZqr�r�/usr/lib/python3.6/main.py�makes

rcCs |dks|dkrtd|��dS)N��(z*Invalid version (was %s, expected 1 to 40))�
ValueError)�versionrrr
�_check_versionsrcCst|�dkrtd|��dS)Nrz1Invalid box size (was %s, expected larger than 0))�intr)�sizerrr
�_check_box_sizesrc@s�eZdZdejdddfdd�Zdd�Zd)d	d
�Zd*dd
�Zdd�Z	dd�Z
d+dd�Zdd�Zd,dd�Z
d-dd�Zd.dd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�ZdS)/rN�
�cCsNt|�|ot|�|_t|�|_t|�|_t|�|_||_|dk	rB|j�dS)N)rrr�error_correction�box_size�border�
image_factory�clear)�selfrrrrrrrr
�__init__s


zQRCode.__init__cCsd|_d|_d|_g|_dS)z*
        Reset the internal data.
        Nr)�modules�
modules_count�
data_cache�	data_list)rrrr
r,szQRCode.clear�cCsNt|tj�r|jj|�n*|r2|jjtj|��n|jjtj|��d|_dS)a
        Add data to this QR Code.

        :param optimize: Data will be split into multiple chunks to optimize
            the QR size by finding to more compressed modes of at least this
            length. Set to ``0`` to avoid optimizing at all.
        N)�
isinstancerZQRDatar#�append�extendZoptimal_data_chunksr")rr
�optimizerrr
r5szQRCode.add_dataTcCs0|s|jdkr|j|jd�|jd|j��dS)z�
        Compile the data into a QR Code array.

        :param fit: If ``True`` (or if a size has not been provided), find the
            best fit for the data to avoid data overflow errors.
        N)�startF)r�best_fit�makeImpl�best_mask_pattern)rZfitrrr
rFszQRCode.makecCst|j�|jdd|_dg|j|_xFt|j�D]8}dg|j|j|<x t|j�D]}d|j||<qVWq4W|jdd�|j|jdd�|jd|jd�|j�|j�|j||�|jdkr�|j	|�|j
dkr�tj|j|j
|j�|_
|j|j
|�dS)Nr�r�)rrr!r �range�setup_position_probe_pattern�setup_position_adjust_pattern�setup_timing_pattern�setup_type_info�setup_type_numberr"rZcreate_datarr#�map_data)r�test�mask_pattern�row�colrrr
r+Qs&



zQRCode.makeImplcCs�x�td	d�D]�}||d
ks|j||kr,qx�tdd�D]�}||dks8|j||krXq8d|krx|dkrx|dks�|dks�d|kr�|dkr�|dks�|dks�d|kr�|dkr�d|kr�|dkr�d|j||||<q8d|j||||<q8WqWdS)
Nr�r��rTF���r=r=r=)r/r!r )rr8r9�r�crrr
r0ls   z#QRCode.setup_position_probe_patterncCs�|dkrd}t|�tj|�}tj�}x<|jD]2}|j|jd�|jt|�||j�|j|�q.Wt|�}t	tj
|j||�|_|jdkr�t
j��|tj|j�k	r�|j|jd�|jS)zD
        Find the minimum size required to fit in the data.
        Nrr�))r))rrZmode_sizes_for_versionZ	BitBufferr#Zput�mode�len�writerZBIT_LIMIT_TABLErrrZDataOverflowErrorr*)rr)Z
mode_sizes�bufferr
Zneeded_bitsrrr
r*~s"


zQRCode.best_fitcCsNd}d}x@td�D]4}|jd|�tj|j�}|dks>||kr|}|}qW|S)z7
        Find the most efficient mask pattern.
        rr:T)r/r+r�
lost_pointr )rZmin_lost_point�pattern�irErrr
r,�szQRCode.best_mask_patterncCs�|dkrddl}|j}|j�s&td��|jdkr8|j�|j}|jdd|ddd�xZt|�D]N}|jd	�x4t|�D](}|j	||r�|jd
�q~|jd	�q~W|jd�qfW|jdd|ddd�|j
�dS)zz
        Output the QR Code only using TTY colors.

        If the data has not been compiled yet, make it first.
        Nrz	Not a ttyz� r<rz
z  z  z  
)�sys�stdout�isatty�OSErrorr"rr!rCr/r �flush)r�outrI�modcountr>r?rrr
�	print_tty�s$

zQRCode.print_ttyFcs^|dkr>ddl}|jdkr8ddl}|j|jj�|j�}n|j}|rT|j�rTtd���jdkrf�j	��j
�dd�dD�}|r�d��r�|j����fd
d�}x�t�j
��j
d�D]�}|r�s�|��j
dkr�|jd�|jd�xHt�j
��j
�D]0}	|||	�||d|	�d>}
|j||
��qW|�rD|jd�|jd�q�W|j�dS)z�
        Output the QR Code using ASCII characters.

        :param tty: use fixed TTY color codes (forces invert=True)
        :param invert: invert the ASCII characters (solid <-> transparent)
        Nrr<r.z	Not a ttycSsg|]}tj|�jd��qS)�cp437)�sixZint2byte�decode)�.0�coderrr
�
<listcomp>�sz&QRCode.print_ascii.<locals>.<listcomp>�������TcsP�r"�jr"t||���jkr"dSt||�dks>t||��krBdS�j||S)Nrr)r�max�minr )�x�y)�invertrOrrr
�
get_module�s
z&QRCode.print_ascii.<locals>.get_modulerzzz�
)r<r.)rWrXrYrZ)rI�version_info�codecs�	getwriterrJ�encodingrKrLr"rr!�reverser/rrCrM)rrNZttyr_rIrcZcodesr`r>r?�posr)r_rOrr
�print_ascii�s<




zQRCode.print_asciicKs�t|j�|jdkr|j�|dk	r&n|j}|dkrDddlm}|}||j|j|jf|�}x@t	|j�D]2}x,t	|j�D]}|j
||rv|j||�qvWqfW|S)zu
        Make an image from the QR Code data.

        If the data has not been compiled yet, make it first.
        Nr)�PilImage)rrr"rrZqrcode.image.pilrirr!r/r Zdrawrect)rrrriZimr>r?rrr
r	�s 

zQRCode.make_imagecCs�xBtd|jd�D].}|j|ddk	r*q|ddk|j|d<qWxBtd|jd�D].}|jd|dk	rnqV|ddk|jd|<qVWdS)Nr:r;r<r)r/r!r )rr>r?rrr
r2szQRCode.setup_timing_patterncCs�tj|j�}x�tt|��D]�}x�tt|��D]�}||}||}|j||dk	rTq,x�tdd�D]v}xptdd�D]b}|dks�|dks�|d	ks�|dks�|dkr�|dkr�d|j||||<qpd|j||||<qpWq`Wq,WqWdS)
Nr<�rTF���rkrkrk)rZpattern_positionrr/rBr )rrgrG�jr8r9r>r?rrr
r1%s z$QRCode.setup_position_adjust_patterncCs�tj|j�}xJtd�D]>}|o.||?d@dk}||j|d|d|jdd<qWxJtd�D]>}|oz||?d@dk}||j|d|jdd|d<qbWdS)N�rrjr:)rZBCH_type_numberrr/r r!)rr6�bitsrG�modrrr
r4<s(zQRCode.setup_type_numbercCs*|jd>|B}tj|�}xrtd�D]f}|o:||?d@dk}|dkrT||j|d<q"|dkrp||j|dd<q"||j|jd|d<q"Wx�td�D]v}|o�||?d@dk}|dkr�||jd|j|d<q�|dkr�||jdd|dd<q�||jdd|d<q�W||j|jdd<dS)Nrj�rr;r:�	)rrZ
BCH_type_infor/r r!)rr6r7r
rnrGrorrr
r3Gs"
zQRCode.setup_type_infoc
Csd}|jd}d}d}tj|�}t|�}x�tjj|jddd�D]�}	|	dkrT|	d8}	|	|	df}
x�xx|
D]p}|j||dkrhd}||kr�|||?d@dk}|||�r�|}||j||<|d8}|d	krh|d7}d}qhW||7}|dks�|j|krb||8}|}PqbWq@WdS)
Nrr.rr<r;Fr=rkr=)r!r�	mask_funcrBrRZmovesZxranger )
rr
r7Zincr8ZbitIndexZ	byteIndexrrZdata_lenr9Z	col_ranger?Zdarkrrr
r5fs8



zQRCode.map_datacCs�|jdkr|j�|js|jSt|j�|jd}dg|g|j}dg|j}x |jD]}|j|||�qXW|dg|g|j7}|S)z�
        Return the QR Code as a multidimensonal array, including the border.

        To return the array without a border, set ``self.border`` to 0 first.
        Nr<F)r"rrr rBr&)r�widthrUZx_border�modulerrr
�
get_matrix�s
zQRCode.get_matrix)r$)T)N)N)NFF)N)�__name__�
__module__�__qualname__rZERROR_CORRECT_Mrrrrr+r0r*r,rPrhr	r2r1r4r3r5rurrrr
rs(
	




5
-r)N)
ZqrcoderrrZqrcode.image.baserrRZbisectrrrrrrrrr
�<module>s