Ë
    D<TfN@  ã                   ó&  — U d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZ eeee         Zi Zeeef   ed<   dd	„Zd
„ Zd„ Zd„ Zd„ Z  G d„ de«      Z! e
de¬«      Z" e
de¬«      Z# G d„ dee"   «      Z$y)é    N)Úbisect_left)	ÚDictÚGenericÚListÚ
NamedTupleÚOptionalÚTypeÚTypeVarÚcastÚoverload)ÚLiteral)Ú	constantsÚ
exceptionsÚutil)Ú	BaseImage)Ú
PyPNGImageÚprecomputed_qr_blanksc                 óZ   — t        di |¤Ž}|j                  | «       |j                  «       S )N© )ÚQRCodeÚadd_dataÚ
make_image)ÚdataÚkwargsÚqrs      úJC:\Users\user\Documents\project_loop\venv\Lib\site-packages\qrcode/main.pyÚmaker      s'   € Ü	Ñ	�&Ñ	€BØ‡K�K�ÔØ�=‰=‹?Ðó    c                 ó>   — t        | «      dk  rt        d| › d�«      ‚y )Nr   zInvalid box size (was z, expected larger than 0)©ÚintÚ
ValueError©Úsizes    r   Ú_check_box_sizer%       s(   € Ü
ˆ4ƒy�A‚~ÜÐ1°$°Ð7PÐQÓRÐRð r   c                 ó<   — t        | «      dk  rt        d| z  «      ‚y )Nr   z=Invalid border value (was %s, expected 0 or larger than that)r    r#   s    r   Ú_check_borderr'   %   s'   € Ü
ˆ4ƒy�1‚}ÜØKÈdÑRó
ð 	
ð r   c                 óŒ   — | €y t        | t        «      st        dt        | «      › d�«      ‚| dk  s| dkD  rt	        d| › d�«      ‚y )NzInvalid mask pattern (was z, expected int)r   é   z(Mask pattern should be in range(8) (got ú))Ú
isinstancer!   Ú	TypeErrorÚtyper"   )Úmask_patterns    r   Ú_check_mask_patternr/   ,   s`   € ØÐØÜ�l¤CÔ(ÜØ(¬¨lÓ);Ð(<¸OÐLó
ð 	
ð �aÒ˜<¨!Ò+ÜÐCÀLÀ>ÐQRÐSÓTÐTð ,r   c                 ó2   — | D �cg c]  }|d d  ‘Œ	 c}S c c}w ©Nr   )ÚxÚrows     r   Úcopy_2d_arrayr4   7   s   € ØÖ �sˆC‘ŠFÒ Ð ùÒ s   …c                   ót   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   d
efd„Zy)ÚActiveWithNeighborsÚNWÚNÚNEÚWÚmeÚEÚSWÚSÚSEÚreturnc                 ó   — | j                   S r1   )r;   ©Úselfs    r   Ú__bool__zActiveWithNeighbors.__bool__F   s   € Ø�w‰wˆr   N)Ú__name__Ú
__module__Ú__qualname__ÚboolÚ__annotations__rD   r   r   r   r6   r6   ;   s;   … ØƒHØƒGØƒHØƒGØƒHØƒGØƒHØƒGØƒHð˜$ô r   r6   ÚGenericImage)ÚboundÚGenericImageLocalc                   ó°  — e Zd ZU eed<   dZee   ed<   dej                  ddddfdee
e      fd„Zedefd	„«       Zej                  d#d
„«       Zed„ «       Zej                  d„ «       Zd„ Zd$d„Zd%d„Zd„ Zd„ Zd&d„Zd„ Zd&d„Zd'd„Zed&ded   defd„«       Ze	 d&de
e   defd„«       Zd&d„Zdededefd„Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%dedede&fd"„Z'y)(r   ÚmodulesNÚ_versioné
   é   Úimage_factoryc                 ó  — t        |«       t        |«       || _        t        |«      | _        t        |«      | _        t        |«      | _        || _        || _        |�t        |t        «      sJ ‚| j                  «        y r1   )r%   r'   Úversionr!   Úerror_correctionÚbox_sizeÚborderr.   rR   Ú
issubclassr   Úclear)rC   rT   rU   rV   rW   rR   r.   s          r   Ú__init__zQRCode.__init__R   sm   € ô 	˜Ô!Ü�fÔØˆŒÜ #Ð$4Ó 5ˆÔÜ˜H›ˆŒô ˜&“kˆŒØ(ˆÔØ*ˆÔØÐ$Ü˜m¬YÔ7Ñ7Ø�
‰
�r   r@   c                 ón   — | j                   €| j                  «        t        t        | j                   «      S r1   )rO   Úbest_fitr   r!   rB   s    r   rT   zQRCode.versioni   s&   € à�=‰=Ð Ø�M‰MŒOÜ”C˜Ÿ™Ó'Ð'r   c                 óV   — |� t        |«      }t        j                  |«       || _        y r1   )r!   r   Úcheck_versionrO   )rC   Úvalues     r   rT   zQRCode.versiono   s&   € àÐÜ˜“JˆEÜ×Ñ˜uÔ%Øˆ�r   c                 ó   — | j                   S r1   )Ú_mask_patternrB   s    r   r.   zQRCode.mask_patternv   s   € à×!Ñ!Ð!r   c                 ó(   — t        |«       || _        y r1   )r/   ra   )rC   Úpatterns     r   r.   zQRCode.mask_patternz   s   € ä˜GÔ$Ø$ˆÕr   c                 ó>   — g g| _         d| _        d| _        g | _        y)z*
        Reset the internal data.
        r   N)rN   Úmodules_countÚ
data_cacheÚ	data_listrB   s    r   rY   zQRCode.clear   s#   € ð �tˆŒØˆÔØˆŒØˆ�r   c                 ó\  — t        |t        j                  «      r#| j                  j	                  |«       d| _        y|r8| j                  j                  t        j                  ||¬«      «       d| _        y| j                  j	                  t        j                  |«      «       d| _        y)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.
        )ÚminimumN)r+   r   ÚQRDatarg   ÚappendÚextendÚoptimal_data_chunksrf   )rC   r   Úoptimizes      r   r   zQRCode.add_dataˆ   s~   € ô �dœDŸK™KÔ(Ø�N‰N×!Ñ! $Ô'ð
 ˆ�ñ	 Ø�N‰N×!Ñ!¤$×":Ñ":¸4ÈÔ"RÔSð ˆ�ð �N‰N×!Ñ!¤$§+¡+¨dÓ"3Ô4Øˆ�r   c                 óê   — |s| j                   €| j                  | j                   ¬«       | j                  €!| j                  d| j	                  «       «       y| j                  d| j                  «       y)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)rT   r\   r.   ÚmakeImplÚbest_mask_pattern)rC   Úfits     r   r   zQRCode.make˜   sY   € ñ �4—<‘<Ð'Ø�M‰M §¡ˆMÔ-Ø×ÑÐ$Ø�M‰M˜% ×!7Ñ!7Ó!9Õ:à�M‰M˜% ×!2Ñ!2Õ3r   c                 ód  — | j                   dz  dz   | _        | j                   t        v r"t        t        | j                      «      | _        nÌt        | j                  «      D �cg c]  }d g| j                  z  ‘Œ c}| _        | j                  dd«       | j                  | j                  dz
  d«       | j                  d| j                  dz
  «       | j                  «        | j                  «        t        | j                  «      t        | j                   <   | j                  ||«       | j                   dk\  r| j                  |«       | j                  €:t        j                  | j                   | j                  | j                  «      | _        | j!                  | j                  |«       y c c}w )NrQ   é   r   r)   )rT   re   r   r4   rN   ÚrangeÚsetup_position_probe_patternÚsetup_position_adjust_patternÚsetup_timing_patternÚsetup_type_infoÚsetup_type_numberrf   r   Úcreate_datarU   rg   Úmap_data)rC   Útestr.   Úis       r   rr   zQRCode.makeImpl¦   sX  € Ø!Ÿ\™\¨AÑ-°Ñ2ˆÔà�<‰<Ô0Ñ0Ü(Ô)>¸t¿|¹|Ñ)LÓMˆD�Lô 6;¸4×;MÑ;MÓ5NöØ01��˜×+Ñ+Ó+òˆDŒLð ×-Ñ-¨a°Ô3Ø×-Ñ-¨d×.@Ñ.@À1Ñ.DÀaÔHØ×-Ñ-¨a°×1CÑ1CÀaÑ1GÔHØ×.Ñ.Ô0Ø×%Ñ%Ô'ä2?ÀÇÁÓ2MÔ! $§,¡,Ñ/à×Ñ˜T <Ô0à�<‰<˜1ÒØ×"Ñ" 4Ô(à�?‰?Ð"Ü"×.Ñ.Ø—‘˜d×3Ñ3°T·^±^óˆDŒOð 	�‰�d—o‘o |Õ4ùò)s   Á#F-c                 ó–  — t        dd«      D ]º  }||z   dk  s| j                  ||z   k  rŒt        dd«      D ]Ž  }||z   dk  s| j                  ||z   k  rŒd|cxk  rdk  rn n|dv s.d|cxk  rdk  rn n|dv sd|cxk  rdk  r*n n'd|cxk  rdk  rn nd| j                  ||z      ||z   <   Œwd	| j                  ||z      ||z   <   Œ� Œ¼ y )
Néÿÿÿÿé   r   é   >   r   r„   é   rQ   TF©rw   re   rN   )rC   r3   ÚcolÚrÚcs        r   rx   z#QRCode.setup_position_probe_patternÂ   sÙ   € Ü�r˜1“ò 	;ˆAà�Q‰w˜"Š} × 2Ñ 2°c¸A±gÒ =Øä˜2˜q“\ò ;�à˜‘7˜b’= D×$6Ñ$6¸#À¹'Ò$AØð ˜!”[˜q•[ Q¨&¡[Ø˜Qœ !�¨¨V©Ø˜Qœ !�¨¨Q¬°!­à59�D—L‘L  q¡Ñ)¨#°©'Ò2à5:�D—L‘L  q¡Ñ)¨#°©'Ò2ñ;ñ	;r   c                 óš  — |€d}t        j                  |«       t        j                  |«      }t        j                  «       }| j                  D ]W  }|j                  |j                  d«       |j                  t        |«      ||j                     «       |j                  |«       ŒY t        |«      }t        t         j                  | j                     ||«      | _        | j                  dk(  rt        j                  «       ‚|t        j                  | j                  «      ur| j                  | j                  ¬«       | j                  S )zD
        Find the minimum size required to fit in the data.
        é   rQ   é)   rp   )r   r^   Úmode_sizes_for_versionÚ	BitBufferrg   ÚputÚmodeÚlenÚwriter   ÚBIT_LIMIT_TABLErU   rT   r   ÚDataOverflowErrorr\   )rC   rq   Ú
mode_sizesÚbufferr   Úneeded_bitss         r   r\   zQRCode.best_fitÖ   s  € ð ˆ=ØˆEÜ×Ñ˜5Ô!ô ×0Ñ0°Ó7ˆ
Ü—‘Ó!ˆØ—N‘Nò 	ˆDØ�J‰J�t—y‘y !Ô$Ø�J‰J”s˜4“y *¨T¯Y©YÑ"7Ô8Ø�J‰J�vÕð	ô
 ˜&“kˆÜ"Ü× Ñ  ×!6Ñ!6Ñ7¸Àeó
ˆŒð �<‰<˜2ÒÜ×.Ñ.Ó0Ð0ð œT×8Ñ8¸¿¹ÓFÑFØ�M‰M §¡ˆMÔ-Ø�|‰|Ðr   c                 ó®   — d}d}t        d«      D ]B  }| j                  d|«       t        j                  | j                  «      }|dk(  s||kD  sŒ?|}|}ŒD |S )z7
        Find the most efficient mask pattern.
        r   rƒ   T)rw   rr   r   Ú
lost_pointrN   )rC   Úmin_lost_pointrc   r€   r™   s        r   rs   zQRCode.best_mask_patternô   s`   € ð ˆØˆä�q“ò 	ˆAØ�M‰M˜$ Ô"äŸ™¨¯©Ó6ˆJà�AŠv˜¨*Ó4Ø!+�Ø‘ð	ð ˆr   c                 ó<  — |€ddl }|j                  }|j                  «       st        d«      ‚| j                  €| j                  «        | j                  }|j                  dd|dz  dz   z  z   dz   «       t        |«      D ]i  }|j                  d	«       t        |«      D ]7  }| j                  |   |   r|j                  d
«       Œ'|j                  d	«       Œ9 |j                  d«       Œk |j                  dd|dz  dz   z  z   dz   «       |j                  «        y)zz
        Output the QR Code only using TTY colors.

        If the data has not been compiled yet, make it first.
        Nr   ú	Not a ttyz[1;47mú r…   rQ   z[0m
z[1;47m  [40mz  z[1;47m  [0m
)ÚsysÚstdoutÚisattyÚOSErrorrf   r   re   r’   rw   rN   Úflush)rC   Úoutrž   Úmodcountrˆ   r‰   s         r   Ú	print_ttyzQRCode.print_tty  s  € ð ˆ;Ûà—*‘*ˆCà�z‰zŒ|Ü˜+Ó&Ð&à�?‰?Ð"Ø�I‰IŒKà×%Ñ%ˆØ�	‰	�, #¨°A©¸Ñ)9Ñ":Ñ;¸kÑIÔJÜ�x“ò 	/ˆAØ�I‰IÐ,Ô-Ü˜8“_ò 6�Ø—<‘< ‘? 1Ò%Ø—I‘I˜d•Oà—I‘IÐ4Õ5ð	6ð
 �I‰IÐ-Õ.ð	/ð 	�	‰	�, #¨°A©¸Ñ)9Ñ":Ñ;¸kÑIÔJØ�	‰	�r   c                 ó8  ‡ ‡‡
— |€t         j                  }|r|j                  «       st        d«      ‚‰ j                  €‰ j                  «        ‰ j                  Š
dD �cg c]  }t        |f«      j                  d«      ‘Œ }}|rdŠ‰r|j                  «        dt        fˆˆ
ˆ fd„}t        ‰ j                   ‰
‰ j                  z   d«      D ]·  }|r9‰r|‰
‰ j                  z   d	z
  k  r|j                  d
«       |j                  d«       t        ‰ j                   ‰
‰ j                  z   «      D ]/  } |||«       ||d	z   |«      d	z  z   }	|j                  ||	   «       Œ1 |r|j                  d«       |j                  d«       Œ¹ |j                  «        yc c}w )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)
        Nrœ   )éÿ   éß   éÜ   éÛ   Úcp437Tr@   c                 óØ   •— ‰r)‰j                   rt        | |«      ‰‰j                   z   k\  ryt        | |«      dk  st        | |«      ‰k\  ryt        t        ‰j
                  |    |   «      S )Nr‹   r   )rW   ÚmaxÚminr   r!   rN   )r2   ÚyÚinvertr¤   rC   s     €€€r   Ú
get_modulez&QRCode.print_ascii.<locals>.get_module;  s\   ø€ Ù˜$Ÿ+š+¬#¨a°«)°xÀ$Ç+Á+Ñ7MÒ*MØÜ�1�a‹y˜1Š}¤ A q£	¨XÒ 5ØÜœ˜TŸ\™\¨!™_¨QÑ/Ó0Ð0r   r…   r‹   z[48;5;232mz[38;5;255mz[0mú
)rž   rŸ   r    r¡   rf   r   re   ÚbytesÚdecodeÚreverser!   rw   rW   r’   r¢   )rC   r£   Úttyr°   ÚcodeÚcodesr±   rˆ   r‰   Úposr¤   s   `  `      @r   Úprint_asciizQRCode.print_ascii$  sl  ú€ ð ˆ;Ü—*‘*ˆCá�s—z‘z”|Ü˜+Ó&Ð&à�?‰?Ð"Ø�I‰IŒKà×%Ñ%ˆØ<PÖQ°D”˜�w“×&Ñ& wÕ/ÐQˆÐQÙØˆFÙØ�M‰MŒOð	1¤÷ 	1ô ˜Ÿ™�| X°·±Ñ%;¸QÓ?ò 
	ˆAÙÙ  X°·±Ñ%;¸aÑ%?Ò!?Ø—I‘IÐ.Ô/Ø—	‘	Ð*Ô+Ü˜DŸK™K˜<¨°D·K±KÑ)?Ó@ò &�Ù   AÓ&©*°Q¸±U¸AÓ*>À!Ñ*CÑD�Ø—	‘	˜% ™*Õ%ð&ñ Ø—	‘	˜)Ô$Ø�I‰I�d�Oð
	ð 	�	‰	�ùò1 Rs   Á"Fc                  ó   — y r1   r   ©rC   rR   r   s      r   r   zQRCode.make_imageO  s   € àr   c                  ó   — y r1   r   r¼   s      r   r   zQRCode.make_imageS  s   € ð 	r   c                 ó~  — t        | j                  «       | j                  €| j                  «        |�t	        |t
        «      s"J ‚| j                  }|€ddlm}m	} |r|nt        } || j                  | j                  | j                  fd| j                  i|¤Ž}|j                  rzt        | j                  «      D ]b  }t        | j                  «      D ]H  }|j                   r|j#                  ||| ¬«       Œ$| j                  |   |   sŒ7|j%                  ||«       ŒJ Œd |j&                  r|j)                  «        |S )zu
        Make an image from the QR Code data.

        If the data has not been compiled yet, make it first.
        r   )ÚImageÚPilImageÚqrcode_modules)r   )r%   rV   rf   r   rX   r   rR   Úqrcode.image.pilr¿   rÀ   r   rW   re   rN   Úneeds_drawrectrw   Úneeds_contextÚdrawrect_contextÚdrawrectÚneeds_processingÚprocess)rC   rR   r   r¿   rÀ   Úimrˆ   r‰   s           r   r   zQRCode.make_imageY  s"  € ô 	˜Ÿ™Ô&Ø�?‰?Ð"Ø�I‰IŒKàÐ$Ü˜m¬YÔ7Ñ7à ×.Ñ.ˆMØÐ$ß<ñ -2¡´z�áØ�K‰KØ×ÑØ�M‰Mñ
ð  Ÿ<™<ð	
ð
 ñ
ˆð ×ÒÜ˜4×-Ñ-Ó.ò *�Ü˜t×1Ñ1Ó2ò *�AØ×'Ò'Ø×+Ñ+¨A¨q°TÐ+Õ:ØŸ™ a™¨Ó+ØŸ™ A qÕ)ñ	*ð*ð ×ÒØ�J‰JŒLàˆ	r   r3   r‡   c                 óˆ   — |dk\  xr< |t        | j                  «      k  xr" |dk\  xr |t        | j                  |   «      k  S )Nr   )r‘   rN   )rC   r3   r‡   s      r   Úis_constrainedzQRCode.is_constrained‚  sM   € à�1‰Hò -Ø”c˜$Ÿ,™,Ó'Ñ'ò-à�q‘ò-ð ”c˜$Ÿ,™, sÑ+Ó,Ñ,ð		
r   c                 ó(  — t        d| j                  dz
  «      D ]-  }| j                  |   d   �Œ|dz  dk(  | j                  |   d<   Œ/ t        d| j                  dz
  «      D ]-  }| j                  d   |   �Œ|dz  dk(  | j                  d   |<   Œ/ y )Nrƒ   r„   r…   r   r†   )rC   rˆ   r‰   s      r   rz   zQRCode.setup_timing_patternŠ  s¦   € Ü�q˜$×,Ñ,¨qÑ0Ó1ò 	,ˆAØ�|‰|˜A‰˜qÑ!Ð-ØØ!" Q¡¨!¡ˆD�L‰L˜‰O˜AÒð	,ô
 �q˜$×,Ñ,¨qÑ0Ó1ò 	,ˆAØ�|‰|˜A‰˜qÑ!Ð-ØØ!" Q¡¨!¡ˆD�L‰L˜‰O˜AÒñ	,r   c                 óÂ  — t        j                  | j                  «      }t        t	        |«      «      D ]©  }||   }t        t	        |«      «      D ]‹  }||   }| j
                  |   |   �Œt        dd«      D ]b  }t        dd«      D ]Q  }|dk(  s|dk(  s|dk(  s|dk(  s
|dk(  r|dk(  rd| j
                  ||z      ||z   <   Œ:d| j
                  ||z      ||z   <   ŒS Œd Œ� Œ« y )Néþÿÿÿé   r…   r   TF)r   Úpattern_positionrT   rw   r‘   rN   )rC   r¹   r€   r3   Újr‡   rˆ   r‰   s           r   ry   z$QRCode.setup_position_adjust_pattern•  s   € Ü×#Ñ# D§L¡LÓ1ˆä”s˜3“x“ò 	CˆAà�a‘&ˆCäœ3˜s›8“_ò C�à˜!‘f�à—<‘< Ñ$ SÑ)Ð5Øä˜r 1›ò C�Aä" 2 q›\ò C˜ð  šGØ  AšvØ  BšwØ  AšvØ ! Q¢¨1°ª6à=A˜DŸL™L¨¨q©Ñ1°#¸±'Ò:à=B˜DŸL™L¨¨q©Ñ1°#¸±'Ò:ñCñCñCñ		Cr   c                 ón  — t        j                  | j                  «      }t        d«      D ]=  }| xr ||z	  dz  dk(  }|| j                  |dz     |dz  | j
                  z   dz
  dz
  <   Œ? t        d«      D ]=  }| xr ||z	  dz  dk(  }|| j                  |dz  | j
                  z   dz
  dz
     |dz  <   Œ? y )Né   r‹   rÏ   rƒ   )r   ÚBCH_type_numberrT   rw   rN   re   )rC   r   Úbitsr€   Úmods        r   r|   zQRCode.setup_type_number²  sÔ   € Ü×#Ñ# D§L¡LÓ1ˆä�r“ò 	KˆAØ�(Ò5 ¨¡¨a¡°AÑ5ˆCØGJˆD�L‰L˜˜a™Ñ   Q¡¨×);Ñ);Ñ!;¸aÑ!?À!Ñ!CÒDð	Kô �r“ò 	KˆAØ�(Ò5 ¨¡¨a¡°AÑ5ˆCØGJˆD�L‰L˜˜Q™ ×!3Ñ!3Ñ3°aÑ7¸!Ñ;Ñ<¸QÀ!¹VÒDñ	Kr   c                 ó~  — | j                   dz  |z  }t        j                  |«      }t        d«      D ]g  }| xr ||z	  dz  dk(  }|dk  r|| j                  |   d<   Œ+|dk  r|| j                  |dz      d<   ŒF|| j                  | j
                  dz
  |z      d<   Œi t        d«      D ]s  }| xr ||z	  dz  dk(  }|dk  r#|| j                  d   | j
                  |z
  dz
  <   Œ;|dk  r|| j                  d   d|z
  dz
  dz   <   Œ\|| j                  d   d|z
  dz
  <   Œu | | j                  | j
                  dz
     d<   y )NrÏ   é   r‹   r„   rƒ   é	   )rU   r   ÚBCH_type_inforw   rN   re   )rC   r   r.   r   rÕ   r€   rÖ   s          r   r{   zQRCode.setup_type_info½  si  € Ø×%Ñ%¨Ñ*¨lÑ:ˆÜ×!Ñ! $Ó'ˆô �r“ò 		CˆAà�(Ò5 ¨¡¨a¡°AÑ5ˆCà�1ŠuØ%(�—‘˜Q‘ Ò"Ø�Q’Ø),�—‘˜Q ™UÑ# AÒ&à?B�—‘˜T×/Ñ/°"Ñ4°qÑ8Ñ9¸!Ò<ð		Cô �r“ò 		2ˆAà�(Ò5 ¨¡¨a¡°AÑ5ˆCà�1ŠuØ>A�—‘˜Q‘ × 2Ñ 2°QÑ 6¸Ñ :Ò;Ø�Q’Ø25�—‘˜Q‘  Q¡¨¡
¨Q¡Ò/à.1�—‘˜Q‘  Q¡¨¡
Ò+ð		2ð 7;°(ˆ�‰�T×'Ñ'¨!Ñ+Ñ,¨QÒ/r   c                 óÒ  — d}| j                   dz
  }d}d}t        j                  |«      }t        |«      }t	        | j                   dz
  dd«      D ]•  }	|	dk  r|	dz  }	|	|	dz
  f}
	 |
D ]Z  }| j
                  |   |   �Œd}||k  r||   |z	  dz  dk(  } |||«      r| }|| j
                  |   |<   |dz  }|dk(  sŒT|dz  }d}Œ\ ||z  }|dk  s| j                   |k  r	||z  }| }Œ–Œ‚ y )Nr‚   r‹   r)   r   rÎ   r„   F)re   r   Ú	mask_funcr‘   rw   rN   )rC   r   r.   Úincr3   ÚbitIndexÚ	byteIndexrÜ   Údata_lenr‡   Ú	col_ranger‰   Údarks                r   r~   zQRCode.map_dataÜ  s<  € ØˆØ× Ñ  1Ñ$ˆØˆØˆ	ä—N‘N <Ó0ˆ	ä�t“9ˆä˜×+Ñ+¨aÑ/°°BÓ7ò !	ˆCà�aŠxØ�q‘�à˜c A™g˜ˆIàà"ò )�Aà—|‘| CÑ(¨Ñ+Ñ3à$˜à$ xÒ/Ø%)¨)¡_¸Ñ%@ÀAÑ$EÈ!Ñ#K˜Dá$ S¨!Ô,Ø'+ 8˜Dà/3˜Ÿ™ SÑ)¨!Ñ,Ø  A™˜à# r›>Ø%¨™N˜IØ'(™Hð#)ð& �s‘
�à˜’7˜d×0Ñ0°CÒ7Ø˜3‘J�CØ˜$�CØð5 ñ!	r   c                 ó¨  — | j                   €| j                  «        | j                  s| j                  S t	        | j                  «      | j                  dz  z   }dg|z  g| j                  z  }dg| j                  z  }| j                  D ].  }|j                  |t        t        t           |«      z   |z   «       Œ0 |dg|z  g| j                  z  z  }|S )z¦
        Return the QR Code as a multidimensional array, including the border.

        To return the array without a border, set ``self.border`` to 0 first.
        r…   F)	rf   r   rW   rN   r‘   rk   r   r   rH   )rC   Úwidthr·   Úx_borderÚmodules        r   Ú
get_matrixzQRCode.get_matrix	  sÁ   € ð �?‰?Ð"Ø�I‰IŒKà�{Š{Ø—<‘<Ðä�D—L‘LÓ! D§K¡K°!¡OÑ3ˆØ�˜%‘Ð  4§;¡;Ñ.ˆØ�7˜TŸ[™[Ñ(ˆØ—l‘lò 	HˆFØ�K‰K˜¤4¬¬T©
°FÓ#;Ñ;¸hÑFÕGð	Hà�%�˜5‘Ð! D§K¡KÑ/Ñ/ˆàˆr   c                 óî   — g }t        |dz
  |dz   «      D ]W  }t        |dz
  |dz   «      D ]@  }|j                  | j                  ||«      xr t        | j                  |   |   «      «       ŒB ŒY t        |Ž S )Nr‹   r…   )rw   rk   rË   rH   rN   r6   )rC   r3   r‡   Úcontextrˆ   r‰   s         r   Úactive_with_neighborszQRCode.active_with_neighbors  s…   € Ø ˆÜ�s˜Q‘w  a¡Ó(ò 	WˆAÜ˜3 ™7 C¨!¡GÓ,ò W�Ø—‘˜t×2Ñ2°1°aÓ8ÒU¼TÀ$Ç,Á,ÈqÁ/ÐRSÑBTÓ=UÕVñWð	Wô # GÐ,Ð,r   )r@   N)é   )Tr1   )NFF)(rE   rF   rG   ÚModulesTyperI   rO   r   r!   r   ÚERROR_CORRECT_Mr	   rJ   rZ   ÚpropertyrT   Úsetterr.   rY   r   r   rr   rx   r\   rs   r¥   rº   r   r   r   rL   rH   rË   rz   ry   r|   r{   r~   rç   r6   rê   r   r   r   r   r   N   s‡  … ØÓØ"€Hˆh�s‰mÓ"ð Ø"×2Ñ2ØØØ6:Øñð    \Ñ 2Ñ3óð. ð(˜ò (ó ð(ð
 ‡^�^òó ðð ñ"ó ð"ð ×Ññ%ó ð%òóó 4ò5ò8;ó(ò<ó$ó<)ðV ñ¨°©ð È<ò ó ðð à7;ñØ!Ð"3Ñ4ðà	òó ðó
&ðR
 #ð 
¨Cð 
°Dó 
ò	,òCò:	Kò;ò>+òZð*-¨ð -°3ð -Ð;Nô -r   r   r1   )%rž   Úbisectr   Útypingr   r   r   r   r   r	   r
   r   r   Útyping_extensionsr   Úqrcoder   r   r   Úqrcode.image.baser   Úqrcode.image.purer   rH   rì   r   r!   rI   r   r%   r'   r/   r4   r6   rJ   rL   r   r   r   r   ú<module>rö      s©   ðÜ 
Ý ÷
÷ 
õ 
õ &ç .Ñ .Ý 'Ý (à�4˜ ™Ñ'Ñ(€à02Ð �t˜C Ð,Ñ-Ó 2óòSò

òUò!ô˜*ô ñ �~¨YÔ7€ÙÐ/°yÔAÐ ôU-ˆW�\Ñ"õ U-r   