Ë
    ¦üàgW  ã                  ó,  — d dl mZ d dlZddlmZmZ ddlmZ d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)é    )ÚannotationsNé   )ÚImageÚ	ImageFile)Úi32bec                ó   — | d d dk(  S )Né   s   qoif© )Úprefixs    úP/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/PIL/QoiImagePlugin.pyÚ_acceptr      s   € Ø�"�1ˆ:˜Ñ Ð ó    c                  ó   — e Zd ZdZdZdd„Zy)ÚQoiImageFileÚQOIzQuite OK Imagec                ó0  — t        | j                  j                  d«      «      sd}t        |«      ‚t	        | j                  j                  d«      «      t	        | j                  j                  d«      «      f| _        | j                  j                  d«      d   }|dk(  rdnd| _        | j                  j                  dt        j                  «       t        j                  dd	| j
                  z   | j                  j                  «       «      g| _        y )
Nr	   znot a QOI filer   r   é   ÚRGBÚRGBAÚqoi)r   r   )r   ÚfpÚreadÚSyntaxErrorÚi32Ú_sizeÚ_modeÚseekÚosÚSEEK_CURr   Ú_TileÚtellÚtile)ÚselfÚmsgÚchannelss      r   Ú_openzQoiImageFile._open   s¹   € Ü�t—w‘w—|‘| A“Ô'Ø"ˆCÜ˜cÓ"Ð"ä˜Ÿ™Ÿ™ a›Ó)¬3¨t¯w©w¯|©|¸A«Ó+?Ð?ˆŒ
à—7‘7—<‘< “? 1Ñ%ˆØ&¨!šm‘U°ˆŒ
à�‰�‰�QœŸ™Ô$Ü—_‘_ U¨F°T·Z±ZÑ,?ÀÇÁÇÁÃÓPÐQˆ�	r   N)ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr&   r
   r   r   r   r      s   „ Ø€FØ)ÐôRr   r   c                  ó>   — e Zd ZU dZdZded<   i Zded<   d	d„Zd
d„Zy)Ú
QoiDecoderTNzbytes | bytearray | NoneÚ_previous_pixelzdict[int, bytes | bytearray]Ú_previously_seen_pixelsc                ór   — || _         |\  }}}}|dz  |dz  z   |dz  z   |dz  z   dz  }|| j                  |<   y )Nr   é   é   é   é@   )r0   r1   )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           
     ó°  ‡ ‡— ‰ j                   €J ‚i ‰ _        ‰ j                  t        d«      «       t        «       }t	        j
                  ‰ j                  «      }‰ j                  j                  ‰ j                  j                  z  |z  }t        |«      |k  �r,‰ j                   j                  d«      d   }|dk(  rB‰ j                  r6t        ‰ j                   j                  d«      «      ‰ j                  dd  z   }�n—|dk(  r‰ j                   j                  d«      }�nu|dz	  }|dk(  r,|d	z  }‰ j                  j                  |t        d
«      «      }�n?|dk(  rz‰ j                  rnt        ‰ 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  ‰ j                  d   f«      }nÀ|dk(  r‚‰ j                  rv‰ j                   j                  d«      d   }	|d	z  dz
  Š|	dz  dz	  dz
  }
|	dz  dz
  }t        t        ˆˆ fd„t        |
d|f«      D «       «      «      }|‰ j                  dd  z  }n9|dk(  r4‰ j                  r(|d	z  dz   }‰ j                  }|dk(  r|d d }|||z  z  }�Œ‰ j                  «       |dk(  r|d d }||z  }t        |«      |k  r�Œ,‰ j!                  |«       y)N)r   r   r   éÿ   r   r   éþ   r   r?   r	   é   é?   )r   r   r   r   é0   é   é   é   é    éð   é   é   c              3  óT   •K  — | ]  \  }}‰j                   |   ‰z   |z   d z  –— Œ! y­w)rE   N)r0   )Ú.0ÚiÚdiffÚ
diff_greenr#   s      €€r   ú	<genexpr>z$QoiDecoder.decode.<locals>.<genexpr>[   s7   øè ø€ ò á '  4ð "×1Ñ1°!Ñ4°zÑAÀDÑHÈCÕOñùs   ƒ%()éÿÿÿÿr   )Úfdr1   r=   Ú	bytearrayr   ÚgetmodebandsÚmodeÚstateÚxsizeÚysizeÚlenr   r0   ÚgetÚtupleÚ	enumerateÚ
set_as_raw)r#   ÚbufferÚdataÚbandsÚdest_lengthÚbyter7   ÚopÚop_indexÚsecond_byteÚdiff_redÚ	diff_blueÚ
run_lengthrO   s   `            @r   ÚdecodezQoiDecoder.decode2   sô  ù€ Ø�w‰wÐ"Ð"Ð"à')ˆÔ$Ø×$Ñ$¤Y¨~Ó%>Ô?ä‹{ˆÜ×"Ñ" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¸EÑAˆÜ�$‹i˜+Ó%Ø—7‘7—<‘< “? 1Ñ%ˆDà�zÒ! d×&:Ò&:Ü! $§'¡'§,¡,¨q£/Ó2°T×5IÑ5IÈ!È"Ð5MÑM’Ø˜Ò#ØŸ™Ÿ™ Q›’à˜Q‘Y�Ø˜’7Ø# jÑ0�HØ ×8Ñ8×<Ñ<Ø ¤)¨LÓ"9ó’Eð ˜1’W ×!5Ò!5Ü%à!×1Ñ1°!Ñ4¸À
Ñ9JÈqÑ8PÑQÐTUÑUØ!ñ"à!×1Ñ1°!Ñ4¸À
Ñ9JÈqÑ8PÑQÐTUÑUØ!ñ"à!×1Ñ1°!Ñ4¸¸zÑ8IÑJÈQÑNÐRUÑUØ ×0Ñ0°Ñ3ðó	‘Eð ˜1’W ×!5Ò!5Ø"&§'¡'§,¡,¨q£/°!Ñ"4�KØ"&¨Ñ"3°rÑ!9�JØ!,¨zÑ!9¸aÑ ?À1ÑD�HØ!,¨zÑ!9¸QÑ >�Iä%Üô ä+4°hÀÀ9Ð5MÓ+Nôó ó�Eð ˜T×1Ñ1°!°"Ð5Ñ5‘EØ˜1’W ×!5Ò!5Ø"&¨Ñ"3°qÑ!8�JØ ×0Ñ0�EØ ’zØ % b q 	˜Ø˜E JÑ.Ñ.�DÙØ×(Ñ(¨Ô/à˜ŠzØ˜b˜q˜	�Ø�E‰MˆDôc �$‹i˜+Ô%ðd 	�‰˜ÔØr   )r7   zbytes | bytearrayr'   r(   )r^   z$bytes | Image.SupportsArrayInterfacer'   ztuple[int, int])	r)   r*   r+   Ú	_pulls_fdr0   Ú__annotations__r1   r=   ri   r
   r   r   r/   r/   &   s(   … Ø€IØ04€OÐ-Ó4Ø<>ÐÐ9Ó>ó9ô<r   r/   r   z.qoi)r   Úbytesr'   Úbool)Ú
__future__r   r   Ú r   r   Ú_binaryr   r   r   r   Ú	PyDecoderr/   Úregister_openr,   Úregister_decoderÚregister_extensionr
   r   r   ú<module>ru      s‡   ðõ #ã 	ç Ý !ó!ôR�9×&Ñ&ô Rô$H�×$Ñ$ô HðV €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �u˜jÔ )Ø €× Ñ ˜×,Ñ,¨fÕ 5r   