ó
    Eñi¸@  ã                  óæ  • S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKJrJr   " S	 S
\5      r " S S\5      r " S S\5      rS%S jr S&     S'S jjrS(S jrS(S jr " S S\5      rS)S jr " S S\R                  5      r " S S\R4                  \R6                  5      r " S S\5      r " S S\5      r " S S\R>                  5      r S*S  jr!\RD                  " \RF                  \\5        \RH                  " \RF                  S!5        \RJ                  " S"\5        \RJ                  " S#\5        \RL                  " \RF                  \!5        \RN                  " S$\ 5        g)+aÑ  
Blizzard Mipmap Format (.blp)
Jerome Leclanche <jerome@leclan.ch>

The contents of this file are hereby released in the public domain (CC0)
Full text of the CC0 license:
  https://creativecommons.org/publicdomain/zero/1.0/

BLP1 files, used mostly in Warcraft III, are not fully supported.
All types of BLP2 files used in World of Warcraft are supported.

The BLP file structure consists of a header, up to 16 mipmaps of the
texture

Texture sizes must be powers of two, though the two dimensions do
not have to be equal; 512x256 is valid, but 512x200 is not.
The first mipmap (mipmap #0) is the full size image; each subsequent
mipmap halves both dimensions. The final mipmap should be 1x1.

BLP files come in many different flavours:
* JPEG-compressed (type == 0) - only supported for BLP1.
* RAW images (type == 1, encoding == 1). Each mipmap is stored as an
  array of 8-bit values, one per pixel, left to right, top to bottom.
  Each value is an index to the palette.
* DXT-compressed (type == 1, encoding == 2):
- DXT1 compression is used if alpha_encoding == 0.
  - An additional alpha bit is used if alpha_depth == 1.
  - DXT3 compression is used if alpha_encoding == 1.
  - DXT5 compression is used if alpha_encoding == 7.
é    )ÚannotationsN)ÚIntEnum)ÚBytesIO)ÚIOé   )ÚImageÚ	ImageFilec                  ó   • \ rS rSrSrSrg)ÚFormaté,   r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚJPEGÚ__static_attributes__r   ó    ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/PIL/BlpImagePlugin.pyr   r   ,   s   † ØƒDr   r   c                  ó    • \ rS rSrSrSrSrSrg)ÚEncodingé0   r   é   é   r   N)r   r   r   r   ÚUNCOMPRESSEDÚDXTÚUNCOMPRESSED_RAW_BGRAr   r   r   r   r   r   0   s   † Ø€LØ
€CØÓr   r   c                  ó    • \ rS rSrSrSrSrSrg)ÚAlphaEncodingé6   r   r   é   r   N)r   r   r   r   ÚDXT1ÚDXT3ÚDXT5r   r   r   r   r   r   6   s   † Ø€DØ€DØƒDr   r   c                ó<   • U S-	  S-  S-  U S-	  S-  S-  U S-  S-  4$ )Né   é   r   é   é?   r   r   )Úis    r   Ú
unpack_565r+   <   s2   € Ø�"‰W˜Ñ Ñ" a¨1¡f°¡_¸Ñ$:¸QÀ¹XÈ!¹OÐKÐKr   c           	     óö  • [        U 5      S-  n[        5       [        5       [        5       [        5       4n[        U5       GH4  nUS-  n[        R                  " SX5      u  pgn[        U5      u  pšn[        U5      u  pÍn[        S5       Hæ  n[        S5       HÔ  nUS-  nUS-	  nSnUS:X  a  XšUnnnOƒUS:X  a  XÍUnnnOwUS:X  a=  Xg:”  a"  SU	-  U-   S-  nSU
-  U-   S-  nSU-  U-   S-  nOJXœ-   S-  nX­-   S-  nX¾-   S-  nO4US:X  a.  Xg:”  a"  SU-  U	-   S-  nSU-  U
-   S-  nSU-  U-   S-  nOS	u  nnnnU(       a  X?   R                  WWWU/5        M¾  X?   R                  WWW/5        MÖ     Mè     GM7     U$ )
ú=
input: one "row" of data (i.e. will produce 4*width pixels)
é   z<HHIé   r   r   éÿ   r   r   )r   r   r   r   ©ÚlenÚ	bytearrayÚrangeÚstructÚunpack_fromr+   Úextend)ÚdataÚalphaÚblocksÚretÚblock_indexÚidxÚcolor0Úcolor1ÚbitsÚr0Úg0Úb0Úr1Úg1Úb1Újr*   ÚcontrolÚaÚrÚgÚbs                         r   Údecode_dxt1rM   @   s·  € ô �‹Y˜!‰^€FÜ‹;œ	›¤Y£[´)³+Ð
>€Cä˜V—}ˆà˜A‰oˆÜ%×1Ò1°&¸$ÓDÑˆ˜ä Ó'‰
ˆ�Ü Ó'‰
ˆ�ô �q–ˆAÜ˜1–X�ð  ™(�Ø˜q‘y�à�Ø˜a“<Ø  b˜!�q�A˜!Ø “\Ø  b˜!�q�A˜!Ø “\Ø“Ø ™V b™[¨QÑ.˜Ø ™V b™[¨QÑ.˜Ø ™V b™[¨QÑ.™à™W¨™N˜Ø™W¨™N˜Ø™W¨™N™Ø “\Ø“Ø ™V b™[¨QÑ.˜Ø ™V b™[¨QÑ.˜Ø ™V b™[¨QÑ.™à%/™
˜˜1˜a æØ‘F—M‘M 1 a¨¨A ,Ö/à‘F—M‘M 1 a¨ )Ö,ó? ô ñ %ðX €Jr   c           	     ó>  • [        U 5      S-  n[        5       [        5       [        5       [        5       4n[        U5       GHX  nUS-  nXUS-    n[        R                  " SU5      n[        R                  " SUS5      u  px[        R                  " SUS5      u  n	[        U5      u  p«n[        U5      u  pÞn[        S5       HÒ  nSn[        S5       H¾  nSU-  U-   S	-  nUU   nU(       a  SnUS-  nOS
nUS-  nUS-  nU	S	SU-  U-   -  -	  S-  nUS:X  a  X«UnnnO[US:X  a  XÞUnnnOOUS	:X  a"  S	U
-  U-   S-  nS	U-  U-   S-  nS	U-  U-   S-  nO'US:X  a!  S	U-  U
-   S-  nS	U-  U-   S-  nS	U-  U-   S-  nUU   R                  WWWU/5        MÀ     MÔ     GM[     U$ )r-   é   z<8Bú<HHr.   ú<Ié   r/   Fr   Té   é   r   r   r   r1   )r8   r:   r;   r<   r=   Úblockr@   r>   r?   ÚcoderA   rB   rC   rD   rE   rF   rG   Úhighr*   Úalphacode_indexrI   Ú
color_coderJ   rK   rL   s                            r   Údecode_dxt3rZ   y   sé  € ô
 �‹Y˜"‰_€FÜ‹;œ	›¤Y£[´)³+Ð
>€Cä˜V—}ˆØ˜BÑˆØ˜3 ™8Ð$ˆä×!Ò! %¨Ó/ˆÜ×+Ò+¨E°5¸!Ó<‰ˆä×$Ò$ T¨5°"Ó5‰ˆä Ó'‰
ˆ�Ü Ó'‰
ˆ�ä�q–ˆAØˆDÜ˜1–X�Ø#$ q¡5¨1¡9°Ñ"2�Ø˜Ñ)�ÞØ �DØ˜!‘G‘Aà�DØ˜‘H�AØ�R‘�à" a¨1¨q©5°1©9¡oÑ5¸Ñ=�
à “?Ø  b˜!�q�A˜!Ø 1“_Ø  b˜!�q�A˜!Ø 1“_Ø˜R™ "™¨Ñ*�AØ˜R™ "™¨Ñ*�AØ˜R™ "™¨Ñ*‘AØ 1“_Ø˜R™ "™¨Ñ*�AØ˜R™ "™¨Ñ*�AØ˜R™ "™¨Ñ*�Aà�A‘—‘˜q ! Q¨˜lÖ+ó5 ô ñ %ðT €Jr   c           	     ó˜  • [        U 5      S-  n[        5       [        5       [        5       [        5       4n[        U5       GH  nUS-  nXUS-    n[        R                  " SU5      u  pg[        R                  " SUS5      nUS   US   S-  -  US   S-  -  US   S	-  -  n	US
   US   S-  -  n
[        R                  " SUS5      u  p¼[        R                  " SUS5      u  n[        U5      u  pïn[        U5      u  nnn[        S5       GH5  n[        S5       GH!  nSSU-  U-   -  nUS::  a	  U
U-	  S-  nO US:X  a  U
S-	  U	S-  S-  -  nOU	US-
  -	  S-  nUS
:X  a  UnOIUS:X  a  UnO@Xg:”  a  SU-
  U-  US-
  U-  -   S-  nO&US:X  a  S
nOUS:X  a  SnOSU-
  U-  US-
  U-  -   S-  nUSSU-  U-   -  -	  S-  nUS
:X  a  XïUnnnO\US:X  a  UUUnnnOOUS:X  a"  SU-  U-   S-  nSU-  U-   S-  nSU-  U-   S-  nO'US:X  a!  SU-  U-   S-  nSU-  U-   S-  nSU-  U-   S-  nUU   R                  WWWU/5        GM$     GM8     GM     U$ )z?
input: one "row" of data (i.e. will produce 4 * width pixels)
rO   z<BBz<6Br   r   r.   r/   r(   é   r   r   rP   rQ   rR   r!   rS   é   r0   r1   )r8   r:   r;   r<   r=   rU   Úa0Úa1r@   Ú
alphacode1Ú
alphacode2r>   r?   rV   rA   rB   rC   rD   rE   rF   rG   r*   rX   Ú	alphacoderI   rY   rJ   rK   rL   s                                r   Údecode_dxt5rc   ®   sÔ  € ô
 �‹Y˜"‰_€FÜ‹;œ	›¤Y£[´)³+Ð
>€Cä˜V—}ˆØ˜BÑˆØ˜3 ™8Ð$ˆä×#Ò# E¨5Ó1‰ˆä×!Ò! %¨°Ó2ˆØ˜!‘W  Q¡¨1¡Ñ-°°a±¸B±Ñ?À4ÈÁ7ÈbÁ=ÑQˆ
Ø˜!‘W  Q¡¨1¡Ñ-ˆ
ä×+Ò+¨E°5¸!Ó<‰ˆä×$Ò$ T¨5°"Ó5‰ˆä Ó'‰
ˆ�Ü Ó'‰
ˆˆB�ä�q—ˆAÜ˜1—X�à"# q¨1¡u¨q¡y¡/�à" bÓ(Ø!+¨Ñ!>À$Ñ F‘IØ$¨Ó*Ø!+¨rÑ!1°zÀQ±È$Ñ6NÑ O‘Ià!+°À"Ñ0DÑ!EÈÑ M�Ià “>Ø‘AØ !“^Ø‘AØ“WØ˜i™-¨2Ñ-°¸Q±À"Ñ0DÑDÈÑJ‘AØ !“^Ø‘AØ !“^Ø‘Aà˜i™-¨2Ñ-°¸Q±À"Ñ0DÑDÈÑJ�Aà" a¨1¨q©5°1©9¡oÑ5¸Ñ=�
à “?Ø  b˜!�q�A˜!Ø 1“_Ø  " b˜!�q�A˜!Ø 1“_Ø˜R™ "™¨Ñ*�AØ˜R™ "™¨Ñ*�AØ˜R™ "™¨Ñ*‘AØ 1“_Ø˜R™ "™¨Ñ*�AØ˜R™ "™¨Ñ*�AØ˜R™ "™¨Ñ*�Aà�A‘—‘˜q ! Q¨˜l×+ôO ô ñ# %ðv €Jr   c                  ó   • \ rS rSrSrg)ÚBLPFormatErroréô   r   N)r   r   r   r   r   r   r   r   re   re   ô   s   † Úr   re   c                ó$   • U R                  S5      $ )N)ó   BLP1ó   BLP2)Ú
startswith)Úprefixs    r   Ú_acceptrl   ø   s   € Ø×ÑÐ/Ó0Ð0r   c                  ó*   • \ rS rSrSrSrSrSS jrSrg)	ÚBlpImageFileéü   z
Blizzard Mipmap Format
ÚBLPzBlizzard Mipmap Formatc                óh  • U R                   c   eU R                   R                  S5      U l        [        U R                  5      (       d#  S[	        U R                  5       3n[        U5      e[        R                  " SU R                   R                  S5      5      S   nU R                  S:X  a7  [        R                  " SU R                   R                  S5      5      S   S:g  nOÆ[        R                  " SU R                   R                  S5      5      S   n[        R                  " SU R                   R                  S5      5      S   S:g  n[        R                  " SU R                   R                  S5      5      S   nU R                   R                  S[        R                  5        [        R                  " S	U R                   R                  S
5      5      U l        U R                  S:X  ad  [        R                  " SU R                   R                  S5      5      S   nU R                   R                  S[        R                  5        X$U4nSnOUWUW4nSnU R                  R                  5       nU(       a  SOSU l        [        R                  " USU R                   -   Xv5      /U l        g )Nr/   zBad BLP magic ú<ir   rh   rQ   ú<br   ú<IIr.   é   é   ÚRGBAÚRGB©r   r   )ÚfpÚreadÚmagicrl   Úreprre   r5   ÚunpackÚseekÚosÚSEEK_CURÚ_sizeÚdecodeÚ_moder	   Ú_TileÚsizeÚtile)	ÚselfÚmsgÚcompressionr9   ÚencodingÚalpha_encodingÚargsÚoffsetÚdecoders	            r   Ú_openÚBlpImageFile._open  sè  € Ø�w‰wÑ"Ð"Ð"Ø—W‘W—\‘\ !“_ˆŒ
Ü�t—z‘z×"Ñ"Ø"¤4¨¯
©
Ó#3Ð"4Ð5ˆCÜ  Ó%Ð%ä—m’m D¨$¯'©'¯,©,°q«/Ó:¸1Ñ=ˆØ�:‰:˜Ó Ü—M’M $¨¯©¯©°Q«Ó8¸Ñ;¸qÑ@‰Eä—}’} T¨4¯7©7¯<©<¸«?Ó;¸AÑ>ˆHÜ—M’M $¨¯©¯©°Q«Ó8¸Ñ;¸qÑ@ˆEÜ#Ÿ]š]¨4°·±·±¸a³ÓAÀ!ÑDˆNØ�G‰G�L‰L˜œBŸK™KÔ(ä—]’] 5¨$¯'©'¯,©,°q«/Ó:ˆŒ
ð �:‰:˜Ó Ü—}’} T¨4¯7©7¯<©<¸«?Ó;¸AÑ>ˆHØ�G‰G�L‰L˜œBŸK™KÔ(à¨5Ð1ˆDØ‰Fà ¨5°.ÐAˆDØˆFà—*‘*×#Ñ#Ó%ˆæ$‘V¨%ˆŒ
Ü—_’_ W¨f°t·y±yÑ.@À&ÓOÐPˆ�	r   )r„   r‚   r|   r‡   N©ÚreturnÚNone)	r   r   r   r   Ú__doc__ÚformatÚformat_descriptionr�   r   r   r   r   rn   rn   ü   s   † ñð €FØ1Ð÷ Qr   rn   c                  ó~   • \ rS rSrSrSS jr\R                  SS j5       rSS jr	SS jr
SS jr      SS jrS	rg
)Ú_BLPBaseDecoderi'  Tc                óš   •  U R                  5         U R                  5         g! [        R                   a  nSn[	        U5      UeS nAff = f)NzTruncated BLP file)éÿÿÿÿr   )Ú_read_headerÚ_loadr5   ÚerrorÚOSError)rˆ   ÚbufferÚer‰   s       r   rƒ   Ú_BLPBaseDecoder.decode*  sH   € ð	&Ø×ÑÔØ�J‰JŒLð øô �|‰|ó 	&Ø&ˆCÜ˜#“, AÐ%ûð	&ús   ‚ # £A
·AÁA
c                ó   • g ©Nr   ©rˆ   s    r   r�   Ú_BLPBaseDecoder._load3  s   € àr   c                ó°   • [         R                  " SU R                  S5      5      U l        [         R                  " SU R                  S5      5      U l        g )Nú<16Ié@   )r5   r~   Ú
_safe_readÚ_offsetsÚ_lengthsr¥   s    r   rœ   Ú_BLPBaseDecoder._read_header7  s8   € ÜŸš f¨d¯o©o¸fÓ.EÓFˆŒÜŸš f¨d¯o©o¸fÓ.EÓFˆ�r   c                ób   • U R                   c   e[        R                  " U R                   U5      $ r¤   )Úfdr	   rª   )rˆ   Úlengths     r   rª   Ú_BLPBaseDecoder._safe_read;  s)   € Ø�w‰wÑ"Ð"Ð"Ü×#Ò# D§G¡G¨VÓ4Ð4r   c                óà   • / n[        S5       H@  n [        R                  " SU R                  S5      5      u  p4pVUR                  X4XV45        MB     U$ ! [        R                   a       U$ f = f)Né   ú<4Br/   )r4   r5   r~   rª   rž   Úappend)rˆ   r;   r*   rL   rK   rJ   rI   s          r   Ú_read_paletteÚ_BLPBaseDecoder._read_palette?  sm   € ØˆÜ�s–ˆAðÜ#Ÿ]š]¨5°$·/±/À!Ó2DÓE‘
��að �J‰J˜˜a�|Ö$ñ ð ˆ
øô —<‘<ó Ùàˆ
ðús   ’)AÁA-Á,A-c                óB  • [        5       n[        U R                  U R                  S   5      5      n  [        R
                  " SUR                  S5      5      u  nX   u  pgp‰X‡U4n
U(       a  X©4-  n
UR                  U
5        MS  ! [        R                   a     U$ f = f)Nr   ú<Br   )	r3   r   rª   r¬   r5   r~   r{   rž   r7   )rˆ   Úpaletter9   r8   Ú_datarŽ   rL   rK   rJ   rI   Úds              r   Ú
_read_bgraÚ_BLPBaseDecoder._read_bgraI  sš   € ô ‹{ˆÜ˜Ÿ™¨¯©°aÑ(8Ó9Ó:ˆØðÜ"ŸMšM¨$°·
±
¸1³Ó>‘	�ð !™‰JˆA�!Ø"#¨ ˆAÞØ�T‘	�Ø�K‰K˜ŒNñ øô —<‘<ó Øð ˆðús   ´(B ÂBÂB)r¬   r«   N)r    z$bytes | Image.SupportsArrayInterfacer“   ztuple[int, int]r’   )r°   Úintr“   Úbytes)r“   úlist[tuple[int, int, int, int]])rº   rÁ   r9   Úboolr“   r3   )r   r   r   r   Ú	_pulls_fdrƒ   ÚabcÚabstractmethodr�   rœ   rª   r¶   r½   r   r   r   r   r™   r™   '  sS   † Ø€Iôð 	×Ñóó ðôGô5ôðØ6ðØ?Cðà	÷r   r™   c                  ó(   • \ rS rSrSS jrSS jrSrg)ÚBLP1Decoderi[  c                óÆ  • U R                   u  U l        U l        nU R                  [        R                  :X  a  U R                  5         g U R                  S:X  af  U R                  S;   a3  U R                  5       nU R                  X!5      nU R                  U5        g S[        U R                  5       3n[        U5      eS[        U R                  5       3n[        U5      e)Nr   )r/   r(   zUnsupported BLP encoding zUnsupported BLP compression )r�   Ú_compressionÚ	_encodingr   r   Ú_decode_jpeg_streamr¶   r½   Ú
set_as_rawr}   re   )rˆ   r9   rº   r8   r‰   s        r   r�   ÚBLP1Decoder._load\  s¹   € Ø37·9±9Ñ0ˆÔ˜4œ>¨5à×Ñ¤§¡Ó+Ø×$Ñ$Õ&à×Ñ !Ó#Ø�~‰~ Ó'Ø×,Ñ,Ó.�Ø—‘ wÓ6�Ø—‘ Õ%à1´$°t·~±~Ó2FÐ1GÐH�Ü$ SÓ)Ð)à0´°d·n±nÓ1EÐ0FÐGˆCÜ  Ó%Ð%r   c                óä  • SSK Jn  [        R                  " SU R	                  S5      5      u  nU R	                  U5      nU R
                  c   eU R	                  U R                  S   U R
                  R                  5       -
  5        U R	                  U R                  S   5      nX4-   nU" [        U5      5      n[        R                  " UR                  5        UR                  S:X  aW  UR                  S   R                  n[!        U["        5      (       d   eUR                  S   R%                  US   S4S9/Ul        U R'                  UR)                  S5      R+                  5       S	5        g )
Nr   )ÚJpegImageFilerQ   r/   r   ÚCMYK)r�   rx   ÚBGR)ÚJpegImagePluginrÏ   r5   r~   rª   r¯   r«   Útellr¬   r   r   Ú_decompression_bomb_checkr†   Úmoder‡   r�   Ú
isinstanceÚtupleÚ_replacerÌ   ÚconvertÚtobytes)rˆ   rÏ   Újpeg_header_sizeÚjpeg_headerr8   Úimager�   s          r   rË   ÚBLP1Decoder._decode_jpeg_streamn  s  € Ý2ä$Ÿmšm¨D°$·/±/À!Ó2DÓEÑÐ	Ø—o‘oÐ&6Ó7ˆØ�w‰wÑ"Ð"Ð"Ø�‰˜Ÿ™ aÑ(¨4¯7©7¯<©<«>Ñ9Ô:Ø�‰˜tŸ}™}¨QÑ/Ó0ˆØÑ!ˆÙœg d›mÓ,ˆÜ×'Ò'¨¯
©
Ô3Ø�:‰:˜ÓØ—:‘:˜a‘=×%Ñ%ˆDÜ˜d¤E×*Ñ*Ð*Ð*ØŸ*™* Q™-×0Ñ0°t¸A±wÀÐ6GÐ0ÐHÐIˆEŒJØ�‰˜Ÿ™ eÓ,×4Ñ4Ó6¸Õ>r   )rÉ   rÊ   Nr’   )r   r   r   r   r�   rË   r   r   r   r   rÇ   rÇ   [  s   † ô&÷$?r   rÇ   c                  ó   • \ rS rSrSS jrSrg)ÚBLP2Decoderi€  c                óø  • U R                   u  U l        U l        ol        U R	                  5       nU R
                  c   eU R
                  R                  U R                  S   5        U R                  S:X  GaO  U R                  [        R                  :X  a  U R                  X!5      nGOAU R                  [        R                  :X  GaÜ  [        5       nU R                  [        R                  :X  as  U R                  R                   S-   S-  S-  n[#        U R                  R$                  S-   S-  5       H)  n['        U R)                  U5      U5       H  nX6-  nM	     M+     GO‡U R                  [        R*                  :X  aq  U R                  R                   S-   S-  S-  n[#        U R                  R$                  S-   S-  5       H(  n[-        U R)                  U5      5       H  nX6-  nM	     M*     OøU R                  [        R.                  :X  aq  U R                  R                   S-   S-  S-  n[#        U R                  R$                  S-   S-  5       H(  n[1        U R)                  U5      5       H  nX6-  nM	     M*     OiS[3        U R                  5       3n[5        U5      eS[3        U R                  5       3n[5        U5      eS	[3        U R                  5       3n[5        U5      eU R7                  U5        g )
Nr   r   r   r/   r.   rO   zUnsupported alpha encoding zUnknown BLP encoding zUnknown BLP compression )r�   rÉ   rÊ   Ú_alpha_encodingr¶   r¯   r   r«   r   r   r½   r   r3   r   r"   ÚstateÚxsizer4   ÚysizerM   rª   r#   rZ   r$   rc   r}   re   rÌ   )rˆ   r9   rº   r8   ÚlinesizeÚybr¼   r‰   s           r   r�   ÚBLP2Decoder._load�  sw  € ØIMÏÉÑFˆÔ˜4œ>¨5Ô2Fà×$Ñ$Ó&ˆà�w‰wÑ"Ð"Ð"Ø�‰�‰�T—]‘] 1Ñ%Ô&à×Ñ Ô!ð �~‰~¤×!6Ñ!6Ó6Ø—‘ wÓ6’à—‘¤8§<¡<Ô/Ü “{�Ø×'Ñ'¬=×+=Ñ+=Ó=Ø $§
¡
× 0Ñ 0°1Ñ 4¸Ñ:¸QÑ>�HÜ# T§Z¡Z×%5Ñ%5¸Ñ%9¸aÑ$?Ö@˜Ü!,¨T¯_©_¸XÓ-FÈÖ!N˜AØ ™IšDó "Oó Að ×)Ñ)¬]×-?Ñ-?Ó?Ø $§
¡
× 0Ñ 0°1Ñ 4¸Ñ:¸RÑ?�HÜ# T§Z¡Z×%5Ñ%5¸Ñ%9¸aÑ$?Ö@˜Ü!,¨T¯_©_¸XÓ-FÖ!G˜AØ ™IšDó "Hò Að ×)Ñ)¬]×-?Ñ-?Ó?Ø $§
¡
× 0Ñ 0°1Ñ 4¸Ñ:¸RÑ?�HÜ# T§Z¡Z×%5Ñ%5¸Ñ%9¸aÑ$?Ö@˜Ü!,¨T¯_©_¸XÓ-FÖ!G˜AØ ™IšDó "Hò Að 8¼¸T×=QÑ=QÓ8RÐ7SÐT�CÜ(¨Ó-Ð-à-¬d°4·>±>Ó.BÐ-CÐD�Ü$ SÓ)Ð)ð -¬T°$×2CÑ2CÓ-DÐ,EÐFˆCÜ  Ó%Ð%à�‰˜Õr   )râ   rÉ   rÊ   Nr’   )r   r   r   r   r�   r   r   r   r   rà   rà   €  s   † ÷,r   rà   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	Ú
BLPEncoderi°  Tc           	     ó<  • SnU R                   c   eU R                   R                  SS5      n[        [        U5      S-  5       H.  nX#S-  US-   S-   u  pEpgU[        R
                  " SXeXG5      -  nM0     [        U5      S:  a  US-  n[        U5      S:  a  M  U$ )Nr   rw   r/   r   r´   i   s       )ÚimÚ
getpaletter4   r2   r5   Úpack)rˆ   r8   rº   r*   rJ   rK   rL   rI   s           r   Ú_write_paletteÚBLPEncoder._write_palette³  s¡   € ØˆØ�w‰wÑ"Ð"Ð"Ø—'‘'×$Ñ$ V¨VÓ4ˆÜ”s˜7“| qÑ(Ö)ˆAØ  Q¡¨!¨a©%°1©Ð5‰JˆA�!Ø”F—K’K  q¨QÓ2Ñ2ŠDñ *ô �$‹i˜'Ó!Ø�KÑˆDô �$‹i˜'Õ!àˆr   c           
     óÊ  • U R                  5       nS[        U5      -   n[        R                  " SU/SQ76 nU R                  c   eU R                  R
                  u  pVU[        R                  " SXV-  /SQ76 -  nXB-  n[        U5       HI  n[        U5       H7  nU[        R                  " SU R                  R                  X‡45      5      -  nM9     MK     [        U5      SU4$ )Né”   r¨   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r¹   r   )rï   r2   r5   rî   rì   r†   r4   Úgetpixel)	rˆ   ÚbufsizeÚpalette_datarŽ   r8   ÚwÚhÚyÚxs	            r   ÚencodeÚBLPEncoder.encode¾  sÌ   € Ø×*Ñ*Ó,ˆà ¤3 |Ó#4Ñ4ˆÜ�{Š{˜6 6Ð8¨YÒ8ˆà�w‰wÑ"Ð"Ð"Ø�w‰w�|‰|‰ˆØ”—’˜F A¡EÐ8¨YÒ8Ñ8ˆàÑˆä�q–ˆAÜ˜1–X�ØœŸš D¨$¯'©'×*:Ñ*:¸A¸6Ó*BÓCÑC’ó ñ ô �4‹y˜!˜TÐ!Ð!r   r   N)r“   rÀ   )rô   r¿   r“   ztuple[int, int, bytes])r   r   r   r   Ú
_pushes_fdrï   rú   r   r   r   r   rê   rê   °  s   † Ø€Jô	÷"r   rê   c           
     ó‚  • U R                   S:w  a  Sn[        U5      eU R                  R                  S5      S:X  a  SOSnUR	                  U5        U R
                  c   eUR	                  [        R                  " SS5      5        U R
                  R                   S	:X  a  SOS
nUS:X  a'  UR	                  [        R                  " SU5      5        O¦UR	                  [        R                  " S[        R                  5      5        UR	                  [        R                  " SU5      5        UR	                  [        R                  " SS
5      5        UR	                  [        R                  " SS
5      5        UR	                  [        R                  " S/U R                  Q76 5        US:X  aL  UR	                  [        R                  " SS5      5        UR	                  [        R                  " SS
5      5        [        R                  " X[        R                  " SSU R                  -   S
U R                   5      /5        g )NÚPzUnsupported BLP image modeÚblp_versionÚBLP1rh   ri   rr   r   rw   r   z<Lrs   rt   r(   rp   ry   )rÕ   Ú
ValueErrorÚencoderinfoÚgetÚwriterº   r5   rî   r   r   r†   r	   Ú_saver…   )rì   rz   Úfilenamer‰   r|   Úalpha_depths         r   r  r  Ñ  sƒ  € Ø	‡w�w�#ƒ~Ø*ˆÜ˜‹oÐà—~‘~×)Ñ)¨-Ó8¸FÓB‰GÈ€EØ‡H�HˆU„Oà�:‰:Ñ!Ð!Ð!Ø‡H�HŒV�[Š[˜˜qÓ!Ô"à—z‘z—‘¨&Ó0‘!°a€KØ�ÓØ
�‰”—’˜T ;Ó/Õ0à
�‰”—’˜T¤8×#8Ñ#8Ó9Ô:Ø
�‰”—’˜T ;Ó/Ô0Ø
�‰”—’˜T 1Ó%Ô&Ø
�‰”—’˜T 1Ó%Ô&Ø‡H�HŒV�[Š[˜Ð) §¡Ò)Ô*Ø�ÓØ
�‰”—’˜T 1Ó%Ô&Ø
�‰”—’˜T 1Ó%Ô&ä‡O‚O�BœYŸ_š_¨U°F¸R¿W¹WÑ4DÀaÈÏÉÓQÐRÕSr   z.blpr   ÚBLP2rp   )r*   r¿   r“   ztuple[int, int, int])F)r8   rÀ   r9   rÂ   r“   ú1tuple[bytearray, bytearray, bytearray, bytearray])r8   rÀ   r“   r	  )rk   rÀ   r“   rÂ   )rì   zImage.Imagerz   z	IO[bytes]r  zstr | bytesr“   r”   )(r•   Ú
__future__r   rÄ   r€   r5   Úenumr   Úior   Útypingr   Ú r   r	   r   r   r   r+   rM   rZ   rc   ÚNotImplementedErrorre   rl   rn   ÚABCÚ	PyDecoderr™   rÇ   rà   Ú	PyEncoderrê   r  Úregister_openr–   Úregister_extensionÚregister_decoderÚregister_saveÚregister_encoderr   r   r   Ú<module>r     sg  ðñõ> #ã 
Û 	Û Ý Ý Ý ç ôˆWô ôˆwô ô�Gô ôLð
  %ð6Ø
ð6Øð6à6õ6ôr2ôjCôL	Ð(ô 	ô1ô(Q�9×&Ñ&ô (QôV1�c—g‘g˜y×2Ñ2ô 1ôh"?�/ô "?ôJ-�/ô -ô`"�×$Ñ$ô "ôBTð6 × Ò �L×'Ñ'¨°wÔ ?Ø × Ò ˜×,Ñ,¨fÔ 5Ø × Ò �v˜{Ô +Ø × Ò �v˜{Ô +à × Ò �L×'Ñ'¨Ô /Ø × Ò �u˜jÕ )r   