Ë
    ™2Úi3  ã                   ó*  — d dl Z ddlmZmZ ddlmZ ddlmZ d„ Z G d„ dej                  «      Z	 G d	„ d
ej                  «      Z ej                  e	j                  e	e«        ej                  de«        ej                  e	j                  d«       y)é    Né   )ÚImageÚ	ImageFile)Úi32be©Úo8c                 ó   — | d d dk(  S )Né   s   qoif© )Úprefixs    úI/var/www/html/acx/venv/lib/python3.12/site-packages/PIL/QoiImagePlugin.pyÚ_acceptr      s   € Ø�"�1ˆ:˜Ñ Ð ó    c                   ó   — e Zd ZdZdZd„ Zy)ÚQoiImageFileÚQOIzQuite OK Imagec                 óº  ‡ — t        ‰ j                  j                  d«      «      sd}t        |«      ‚t	        ˆ fd„t        d«      D «       «      ‰ _        ‰ j                  j                  d«      d   }|dk(  rdnd	‰ _        ‰ j                  j                  dt        j                  «       d
d‰ j                  z   ‰ j                  j                  «       d fg‰ _        y )Nr
   znot a QOI filec              3   óf   •K  — | ](  }t        ‰j                  j                  d «      «      –— Œ* y­w)r
   N)Úi32ÚfpÚread)Ú.0ÚiÚselfs     €r   ú	<genexpr>z%QoiImageFile._open.<locals>.<genexpr>   s"   øè ø€ ÒB°Aœ3˜tŸw™wŸ|™|¨A›×/ÑBùs   ƒ.1é   r   r   é   ÚRGBÚRGBAÚqoi)r   r   )r   r   r   ÚSyntaxErrorÚtupleÚrangeÚ_sizeÚ_modeÚseekÚosÚSEEK_CURÚtellÚtile)r   ÚmsgÚchannelss   `  r   Ú_openzQoiImageFile._open   sž   ø€ Ü�t—w‘w—|‘| A“Ô'Ø"ˆCÜ˜cÓ"Ð"äÓB¼¸q»ÔBÓBˆŒ
à—7‘7—<‘< “? 1Ñ%ˆØ&¨!šm‘U°ˆŒ
à�‰�‰�QœŸ™Ô$Ø˜V d§j¡jÑ0°$·'±'·,±,³.À$ÐGÐHˆ�	r   N)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr-   r   r   r   r   r      s   „ Ø€FØ)ÐóIr   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú
QoiDecoderTc                 ór   — || _         |\  }}}}|dz  |dz  z   |dz  z   |dz  z   dz  }|| j                  |<   y )Nr   é   é   é   é@   )Ú_previous_pixelÚ_previously_seen_pixels)r   ÚvalueÚrÚgÚbÚaÚ
hash_values          r   Ú_add_to_previous_pixelsz"QoiDecoder._add_to_previous_pixels)   sO   € Ø$ˆÔà‰
ˆˆ1ˆa�Ø˜!‘e˜a !™e‘m a¨!¡eÑ+¨a°"©fÑ4¸Ñ:ˆ
Ø38ˆ×$Ñ$ ZÒ0r   c                 óº  ‡ ‡— i ‰ _         d ‰ _        ‰ j                  dj                  d„ dD «       «      «       t	        «       }t        j                  ‰ j                  «      }t        |«      ‰ j                  j                  ‰ j                  j                  z  |z  k  �r$‰ j                  j                  d«      d   }|dk(  r-‰ j                  j                  d«      ‰ j                  dd  z   }�nv|dk(  r‰ j                  j                  d	«      }�nT|d
z	  }|dk(  r#|dz  }‰ j                   j                  |d«      }�n|dk(  rj‰ j                  d   |dz  d	z	  z   dz
  dz  ‰ j                  d   |dz  dz	  z   dz
  dz  ‰ j                  d   |dz  z   dz
  dz  f}|‰ j                  d   fz  }n |dk(  rn‰ j                  j                  d«      d   }|dz  dz
  Š|dz  d	z	  dz
  }	|dz  dz
  }
t        ˆˆ fd„t!        |	d|
f«      D «       «      }|‰ j                  d   fz  }n-|dk(  r(|dz  dz   }‰ j                  }|dk(  r|d d }|||z  z  }�Œëdj                  d„ D «       «      }‰ j                  |«       |dk(  r|d d }||z  }t        |«      ‰ j                  j                  ‰ j                  j                  z  |z  k  r�Œ$‰ j#                  t%        |«      «       y)Nr   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©Nr   ©r   r   s     r   r   z$QoiDecoder.decode.<locals>.<genexpr>3   s   è ø€ Ò-L¸¬b°¯eÑ-Lùó   ‚)r   r   r   éÿ   r   r   éþ   r   rH   r
   é   é?   )r   r   r   r   é0   r   é   é   é    éð   é   é   c              3   óT   •K  — | ]  \  }}‰j                   |   ‰z   |z   d z  –— Œ! y­w)rM   N)r:   )r   r   ÚdiffÚ
diff_greenr   s      €€r   r   z$QoiDecoder.decode.<locals>.<genexpr>Q   s7   øè ø€ ò "á#˜A˜tð ×-Ñ-¨aÑ0°:Ñ=ÀÑDÈÕKñ"ùs   ƒ%(c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrE   r   rF   s     r   r   z$QoiDecoder.decode.<locals>.<genexpr>]   s   è ø€ Ò 6¨1¤ A§Ñ 6ùrG   )éÿÿÿÿr   )r;   r:   rB   ÚjoinÚ	bytearrayr   ÚgetmodebandsÚmodeÚlenÚstateÚxsizeÚysizeÚfdr   Úgetr"   Ú	enumerateÚ
set_as_rawÚbytes)r   ÚbufferÚdataÚbandsÚbyter<   ÚopÚop_indexÚsecond_byteÚdiff_redÚ	diff_blueÚ
run_lengthrU   s   `           @r   ÚdecodezQoiDecoder.decode0   sò  ù€ Ø')ˆÔ$Ø#ˆÔØ×$Ñ$ S§X¡XÑ-L¸^Ô-LÓ%LÔMä‹{ˆÜ×"Ñ" 4§9¡9Ó-ˆÜ�$‹i˜$Ÿ*™*×*Ñ*¨T¯Z©Z×-=Ñ-=Ñ=ÀÑEÓEØ—7‘7—<‘< “? 1Ñ%ˆDØ�zÒ!ØŸ™Ÿ™ Q›¨$×*>Ñ*>¸q¸rÐ*BÑB’Ø˜Ò#ØŸ™Ÿ™ Q›’à˜Q‘Y�Ø˜’7Ø# jÑ0�HØ ×8Ñ8×<Ñ<¸XÀ|ÓT’EØ˜1’Wà×-Ñ-¨aÑ0°T¸JÑ5FÈ1Ñ4LÑMÐPQÑQØñà×-Ñ-¨aÑ0°T¸JÑ5FÈ1Ñ4LÑMÐPQÑQØñà×-Ñ-¨aÑ0°D¸:Ñ4EÑFÈÑJÈcÑQð�Eð ˜d×2Ñ2°1Ñ5Ð7Ñ7‘EØ˜1’WØ"&§'¡'§,¡,¨q£/°!Ñ"4�KØ"&¨Ñ"3°rÑ!9�JØ!,¨zÑ!9¸aÑ ?À1ÑD�HØ!,¨zÑ!9¸QÑ >�Iä!ô "ä'0°(¸A¸yÐ1IÓ'Jô"ó �Eð ˜d×2Ñ2°1Ñ5Ð7Ñ7‘EØ˜1’WØ"&¨Ñ"3°qÑ!8�JØ ×0Ñ0�EØ ’zØ % b q 	˜Ø˜E JÑ.Ñ.�DÙØŸ™Ñ 6°Ô 6Ó6�Ø×(Ñ(¨Ô/à˜ŠzØ˜b˜q˜	�Ø�E‰MˆDôW �$‹i˜$Ÿ*™*×*Ñ*¨T¯Z©Z×-=Ñ-=Ñ=ÀÑEÔEðX 	�‰œ˜d›Ô$Ør   N)r.   r/   r0   Ú	_pulls_fdrB   ro   r   r   r   r4   r4   &   s   „ Ø€Iò9ó4r   r4   r    z.qoi)r'   Ú r   r   Ú_binaryr   r   r   r   r   Ú	PyDecoderr4   Úregister_openr1   Úregister_decoderÚregister_extensionr   r   r   ú<module>rw      s…   ðó 
ç Ý !Ý ò!ôI�9×&Ñ&ô Iô$>�×$Ñ$ô >ðB €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �u˜jÔ )Ø €× Ñ ˜×,Ñ,¨fÕ 5r   