ó
    Eñig0  ã                  óD  • S SK Jr  S SKrS SKJr  SSKJrJr  SSKJ	r
  SSKJr  SSKJr  S	rS
SSS
SSSSSSSS.rSS jr " S S\R                  5      r " S S\R$                  5      r " S S\R$                  5      rSS jr\R,                  " \R.                  \\5        \R0                  " \R.                  \5        \R2                  " S\5        \R2                  " S\5        \R4                  " \R.                  / SQ5        \R6                  " \R.                  S5        g) é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFile)Úi16be)Úo8)Úo32les    	
Ú1ÚLÚRGBÚCMYKÚFÚPÚRGBA)ó   P1ó   P2ó   P3ó   P4ó   P5ó   P6s   P0CMYKó   Pfs   PyPs   PyRGBAs   PyCMYKc                ól   • [        U 5      S:¬  =(       a     U R                  S5      =(       a    U S   S;   $ )Né   ó   Pr   s	   0123456fy)ÚlenÚ
startswith)Úprefixs    ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/PIL/PpmImagePlugin.pyÚ_acceptr    1   s/   € Üˆv‹;˜!Ñ×U × 1Ñ 1°$Ó 7×U¸FÀ1¹IÈÑ<UÐUó    c                  ó:   • \ rS rSrSrSrS	S jrS	S jrS
S jrSr	g)ÚPpmImageFileé9   ÚPPMzPbmplus imagec                ó²   • U R                   c   eSn[        S5       H6  nU R                   R                  S5      nU(       a
  U[        ;   a    U$ X-  nM8     U$ )Nr!   é   r   )ÚfpÚrangeÚreadÚb_whitespace)ÚselfÚmagicÚ_Úcs       r   Ú_read_magicÚPpmImageFile._read_magic=   sX   € Ø�w‰wÑ"Ð"Ð"àˆä�q–ˆAØ—‘—‘˜Q“ˆAÞ˜œ\Ó)Øàˆð ‰JŠEñ	 ð
 ˆr!   c                óÖ  • U R                   c   eSn[        U5      S::  a•  U R                   R                  S5      nU(       d  OrU[        ;   a
  U(       d  ME  O^US:X  aC  U R                   R                  S5      S;  a"   U R                   R                  S5      S;  a  M"  M�  X-  n[        U5      S::  a  M•  U(       d  Sn[	        U5      e[        U5      S:”  a  SU-  n[	        U5      eU$ )Nr!   é
   r   ó   #s   
z Reached EOF while reading headers!   Token too long in file header: %s)r(   r   r*   r+   Ú
ValueError)r,   Útokenr/   ÚmsgÚmsg_too_longs        r   Ú_read_tokenÚPpmImageFile._read_tokenI   sÐ   € Ø�w‰wÑ"Ð"Ð"àˆÜ�%‹j˜BÓØ—‘—‘˜Q“ˆAÞØØ”lÓ"ÞáØØ�d“à—g‘g—l‘l 1“o¨WÓ4Øð —g‘g—l‘l 1“o¨WÕ4áØ‰JˆEô �%‹j˜BÕö à4ˆCÜ˜S“/Ð!Ü�‹Z˜"‹_Ø?À%ÑGˆLÜ˜\Ó*Ð*Øˆr!   c                óÔ  • U R                   c   eU R                  5       n [        U   nX l        US;   a  SU l        OUS;   a  SU l        OUS;   a  SU l        [        U R                  5       5      [        U R                  5       5      4U l	        SnUS	;   a  S
nUS:X  a  SnOçUS:X  ao  [        U R                  5       5      nUS:X  d  [        R                  " U5      (       d  Sn[        U5      e[        U5      U R                  S'   US:  a  SOSnUSS4nOr[        U R                  5       5      nSUs=:  a  S:  d  O  Sn[        U5      eUS:”  a  US:X  a  SU l        UnUS
:w  a  US:X  a	  US:X  a  SnOUS:w  a  SnUS:X  a  UOXx4n[         R"                  " USU R$                  -   U R                   R'                  5       U5      /U l        g ! [         a    Sn[	        U5      ef = f)Nznot a PPM file)r   r   zimage/x-portable-bitmap)r   r   zimage/x-portable-graymap)r   r   zimage/x-portable-pixmapÚraw)r   r   r   Ú	ppm_plainr   ú1;Ir   g        z!scale must be finite and non-zeroÚscaler   úF;32FzF;32BFéÿÿÿÿi   z1maxval must be greater than 0 and less than 65536éÿ   r   ÚIéÿÿ  úI;16BÚppm©r   r   )r(   r0   ÚMODESÚKeyErrorÚSyntaxErrorÚ_modeÚcustom_mimetypeÚintr9   Ú_sizeÚfloatÚmathÚisfiniter5   ÚabsÚinfor   Ú_TileÚsizeÚtellÚtile)	r,   Úmagic_numberÚmoder7   Údecoder_nameÚargsr?   ÚrawmodeÚmaxvals	            r   Ú_openÚPpmImageFile._opene   sç  € Ø�w‰wÑ"Ð"Ð"à×'Ñ'Ó)ˆð	#Ü˜Ñ&ˆDð Œ
à˜>Ó)Ø#<ˆDÕ Ø˜^Ó+Ø#=ˆDÕ Ø˜^Ó+Ø#<ˆDÔ ä˜×)Ñ)Ó+Ó,¬c°$×2BÑ2BÓ2DÓ.EÐEˆŒ
àˆØÐ0Ó0Ø&ˆLð �3‹;Ø‰DØ�S‹[Ü˜$×*Ñ*Ó,Ó-ˆEØ˜‹|¤4§=¢=°×#7Ñ#7Ø9�Ü  “oÐ%Ü!$ U£ˆD�I‰I�gÑà!&¨£‘g°ˆGØ˜Q Ð#‰Dä˜×)Ñ)Ó+Ó,ˆFØ�vÕ% Õ%ØI�Ü  “oÐ%Ø˜‹| ¨£Ø �”
àˆGØ˜{Ó*à˜U“? t¨s£{Ø%‘GØ˜s“]Ø#(�Là*¨eÓ3‘7¸'Ð9JˆDä�OŠO˜L¨&°4·9±9Ñ*<¸d¿g¹g¿l¹l»nÈdÓSð
ˆ�	øô_ ó 	#Ø"ˆCÜ˜cÓ"Ð"ð	#ús   ¡	G ÇG')rK   rN   rL   rW   N©ÚreturnÚbytes)ra   ÚNone)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚformatÚformat_descriptionr0   r9   r^   Ú__static_attributes__© r!   r   r#   r#   9   s   † Ø€FØ(Ðô
ô÷87
r!   r#   c                  ód   • \ rS rSr% SrS\S'   SS jrSSS jjrSS jrSS jr	SS	 jr
SS
 jrSrg)ÚPpmPlainDecoderé£   TÚboolÚ_comment_spansc                ór   • U R                   c   eU R                   R                  [        R                  5      $ )N)Úfdr*   r   Ú	SAFEBLOCK)r,   s    r   Ú_read_blockÚPpmPlainDecoder._read_block§   s+   € Ø�w‰wÑ"Ð"Ð"à�w‰w�|‰|œI×/Ñ/Ó0Ð0r!   c                ó†   • UR                  SU5      nUR                  SU5      nX4-  S:”  a  [        X45      $ [        X45      $ )Nó   
ó   r   )ÚfindÚminÚmax)r,   ÚblockÚstartÚaÚbs        r   Ú_find_comment_endÚ!PpmPlainDecoder._find_comment_end¬   s=   € Ø�J‰J�u˜eÓ$ˆØ�J‰J�u˜eÓ$ˆØ™E A›IŒs�1‹yÐ4¬3¨q«9Ð4r!   c                óR  • U R                   (       a?  U(       a8  U R                  U5      nUS:w  a  XS-   S  nOU R                  5       nU(       a  M8  SU l          UR                  S5      nUS:X  a   U$ U R                  X5      nUS:w  a  US U XS-   S  -   nOUS U nSU l          U$ MP  )NrA   r   FTr4   )rp   r€   rt   ry   )r,   r|   Úcomment_endÚcomment_starts       r   Ú_ignore_commentsÚ PpmPlainDecoder._ignore_comments±   sØ   € Ø××æØ"×4Ñ4°UÓ;�Ø "Ó$ð "°¡/Ð"3Ð4�EØð !×,Ñ,Ó.�E÷ �%ð $ˆÔØØ!ŸJ™J tÓ,ˆMØ Ó"àð ˆð ×0Ñ0°ÓFˆKØ˜bÓ ð ˜n˜}Ð-°ÀA±oÐ6GÐ0HÑH‘ð ˜n˜}Ð-�Ø&*�Ô#ØØˆñ r!   c                óî  • [        5       nU R                  R                  U R                  R                  -  n[	        U5      U:w  a‰  U R                  5       nU(       d  OqU R                  U5      nSR                  UR                  5       5      nU H#  nUS;  d  M  S[        U/5      -  n[        U5      e   X-   SU n[	        U5      U:w  a  M‰  [        R                  SS5      nUR                  U5      $ )z�
This is a separate method because in the plain PBM format, all data tokens are
exactly one byte, so the inter-token whitespace is optional.
r!   )é0   é1   s   Invalid token for this mode: %sNs   01s   ÿ )Ú	bytearrayÚstateÚxsizeÚysizer   rt   r…   ÚjoinÚsplitrb   r5   Ú	maketransÚ	translate)r,   ÚdataÚtotal_bytesr|   Útokensr6   r7   Úinverts           r   Ú_decode_bitonalÚPpmPlainDecoder._decode_bitonalÓ   sØ   € ô
 ‹{ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9ˆä�$‹i˜;Ó&Ø×$Ñ$Ó&ˆEÞàà×)Ñ)¨%Ó0ˆEà—X‘X˜eŸk™k›mÓ,ˆFÛ�Ø Õ(Ø<¼uÀeÀW»~ÑM�CÜ$ S›/Ð)ñ  ð ‘M < KÐ0ˆDô �$‹i˜;Õ&ô —‘ ¨Ó4ˆØ�~‰~˜fÓ%Ð%r!   c                ó  • [        5       nSnU R                  S:X  a  SOSnU R                  S:X  a  SOSn[        R                  " U R                  5      nU R                  R
                  U R                  R                  -  U-  U-  nSn[        U5      U:w  Gan  U R                  5       n	U	(       d  U(       a  [        S5      n	O U$ U R                  U	5      n	U(       a  X‰-   n	SnU	R                  5       n
U	(       aM  U	S	S  R                  5       (       d5  U
R                  5       n[        U5      U:”  a  S
US US-    -  n[        U5      eU
 H§  n[        U5      U:”  a  S
US US-    -  n[        U5      e[        U5      nUS:  a  SU 3n[        U5      eXÑ:”  a  SU 3n[        U5      e[        XÑ-  U-  5      nX R                  S:X  a  [!        U5      O
[#        U5      -  n[        U5      U:X  d  M§    O   [        U5      U:w  a  GMn  U$ )Nr3   rC   é   r   rD   rB   r!   ó    rA   s    Token too long found in data: %sr   zChannel value is negative: z'Channel value too large for this mode: )rŠ   rY   r   Úgetmodebandsr‹   rŒ   r�   r   rt   r…   r�   ÚisspaceÚpopr5   rM   ÚroundÚo32r	   )r,   r]   r’   Úmax_lenÚout_byte_countÚout_maxÚbandsr“   Ú
half_tokenr|   r”   r7   r6   ÚvalueÚmsg_strs                  r   Ú_decode_blocksÚPpmPlainDecoder._decode_blocksì   sõ  € Ü‹{ˆØˆØ"Ÿi™i¨3Ó.™°AˆØŸ9™9¨Ó+‘%°ˆÜ×"Ò" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¸EÑAÀNÑRˆàˆ
Ü�$‹i˜;Ô&Ø×$Ñ$Ó&ˆEÞÞÜ% d›O‘Eð ðB ˆð? ×)Ñ)¨%Ó0ˆEæØ"Ñ*�Ø �
à—[‘[“]ˆFæ˜U 2 3˜Z×/Ñ/×1Ñ1Ø#ŸZ™Z›\�
Ü�z“? WÓ,à;¸jÈÈ7ÐUVÉ;Ð>WÑWð ô % S›/Ð)ã�Ü�u“: Ó'Ø=ÀÀmÈÐRSÉÐ@TÑT�CÜ$ S›/Ð)Ü˜E›
�Ø˜1“9Ø ;¸E¸7ÐC�GÜ$ WÓ-Ð-Ø“>Ø GÈÀwÐO�GÜ$ WÓ-Ð-Ü˜e™n¨wÑ6Ó7�Ø§i¡i°3Ó&6œ˜Eœ
¼B¸u»IÑE�Ü�t“9 Õ+Ùñ  ô3 �$‹i˜;Ö&ðP ˆr!   c                ó
  • SU l         U R                  S:X  a  U R                  5       nSnO>U R                  S   nU R	                  U5      nU R                  S:X  a  SOU R                  nU R                  [        U5      U5        g)NFr   z1;8rA   rC   úI;32©rA   r   )rp   rY   r–   r[   r§   Ú
set_as_rawrb   )r,   Úbufferr’   r\   r]   s        r   ÚdecodeÚPpmPlainDecoder.decode  sq   € Ø#ˆÔØ�9‰9˜ÓØ×'Ñ'Ó)ˆDØ‰Gà—Y‘Y˜r‘]ˆFØ×&Ñ& vÓ.ˆDØ $§	¡	¨SÓ 0‘f°d·i±iˆGØ�‰œ˜d› WÔ-Ør!   )rp   Nr`   )r   )r|   rb   r}   rM   ra   rM   )r|   rb   ra   rb   )ra   rŠ   )r]   rM   ra   rŠ   ©r­   z$bytes | Image.SupportsArrayInterfacera   ztuple[int, int])rd   re   rf   rg   Ú	_pulls_fdÚ__annotations__rt   r€   r…   r–   r§   r®   rj   rk   r!   r   rm   rm   £   s-   ‡ Ø€IØÓô1ö
5ô
 ôD&ô21÷f
r!   rm   c                  ó"   • \ rS rSrSrSS jrSrg)Ú
PpmDecoderi,  Tc                óF  • U R                   c   e[        5       nU R                  S   nUS:  a  SOSnU R                  S:X  a  SOSnU R                  S:X  a  SOSn[        R
                  " U R                  5      nU R                  R                  U R                  R                  -  U-  U-  n[        U5      U:  a¬  U R                   R                  XG-  5      n	[        U	5      XG-  :  a  O}[        U5       H]  n
US:X  a  Xš   O[        XšU-  5      n[        U[        X³-  U-  5      5      nX R                  S:X  a  [        U5      O
[!        U5      -  nM_     [        U5      U:  a  M¬  U R                  S:X  a  S	OU R                  nU R#                  [%        U5      U5        g
)NrA   é   r   r   rC   r™   rD   rB   rª   r«   )rr   rŠ   r[   rY   r   r›   r‹   rŒ   r�   r   r*   r)   Úi16rz   rž   rŸ   r	   r¬   rb   )r,   r­   r’   r]   Úin_byte_countr¡   r¢   r£   Údest_lengthÚpixelsr   r¥   r\   s                r   r®   ÚPpmDecoder.decode/  sc  € Ø�w‰wÑ"Ð"Ð"ä‹{ˆØ—‘˜2‘ˆØ# c›\™¨qˆØ"Ÿi™i¨3Ó.™°AˆØŸ9™9¨Ó+‘%°ˆÜ×"Ò" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¸EÑAÀNÑRˆÜ�$‹i˜+Ó%Ø—W‘W—\‘\ -Ñ"7Ó8ˆFÜ�6‹{˜]Ñ2Ó2àÜ˜5–\�à!.°!Ó!3�F’I¼¸VÈÑEVÓ9Wð ô ˜G¤U¨5©>¸GÑ+CÓ%DÓE�Ø§i¡i°3Ó&6œ˜Eœ
¼B¸u»IÑE’ñ "ô �$‹i˜+Õ%ð !ŸI™I¨Ó,‘&°$·)±)ˆØ�‰œ˜d› WÔ-Ør!   rk   Nr°   )rd   re   rf   rg   r±   r®   rj   rk   r!   r   r´   r´   ,  s   † Ø€I÷r!   r´   c                ó²  • U R                   S:X  a  Su  p4OoU R                   S:X  a  Su  p4OZU R                   S;   a  Su  p4OEU R                   S;   a  Su  p4O0U R                   S	:X  a  S
u  p4OSU R                    S3n[        U5      eUR                  USU R                  -  -   5        US:X  a  UR                  S5        OGUS:X  a*  US:X  a  UR                  S5        O)UR                  S5        OUS:X  a  UR                  S5        U R                   S	:X  a  SOSn[        R
                  " X[        R                  " SSU R                  -   SUSU45      /5        g )Nr   )r>   r   r   )r   r   )rC   zI;16)rE   r   )r   r   )r   r   r   )r@   r   zcannot write mode z as PPMs   
%d %d
r   s   255
r   s   65535
r   s   -1.0
rA   r   r<   rG   r   )rY   ÚOSErrorÚwriterU   r   Ú_saverT   )Úimr(   Úfilenamer\   Úheadr7   Ú	row_orders          r   r¿   r¿   M  s.  € Ø	‡w�w�#ƒ~Ø$‰ˆ�Ø	�‰�C‹Ø"‰ˆ�Ø	�‰�MÓ	!Ø&‰ˆ�Ø	�‰�OÓ	#Ø$‰ˆ�Ø	�‰�C‹Ø&‰ˆ�à" 2§7¡7 )¨7Ð3ˆÜ�c‹lÐØ‡H�HˆT�L 2§7¡7Ñ*Ñ*Ô+Øˆuƒ}Ø
�‰�ÕØ	�‹Ø�c‹>Ø�H‰H�XÕà�H‰H�ZÕ Ø	�‹Ø
�‰�ÔØ—g‘g “n‘¨!€IÜ‡O‚OØ
”—’ ¨°·±Ñ(8¸!¸gÀqÈ)Ð=TÓUÐVõr!   rF   r=   )z.pbmz.pgmz.ppmz.pnmz.pfmzimage/x-portable-anymap)r   rb   ra   ro   )rÀ   zImage.Imager(   z	IO[bytes]rÁ   zstr | bytesra   rc   )Ú
__future__r   rP   Útypingr   Ú r   r   Ú_binaryr   r·   r	   r
   rŸ   r+   rH   r    r#   Ú	PyDecoderrm   r´   r¿   Úregister_openrh   Úregister_saveÚregister_decoderÚregister_extensionsÚregister_mimerk   r!   r   Ú<module>rÎ      s  ðõ  #ã Ý ç Ý !Ý Ý !ð
 +€ð ØØØØØàØàØØñ	€ô$Vôc
�9×&Ñ&ô c
ôTF�i×)Ñ)ô FôR�×$Ñ$ô ôBðD × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �L×'Ñ'¨Ô /à × Ò �u˜jÔ )Ø × Ò �{ OÔ 4à × Ò ˜,×-Ñ-Ò/WÔ Xà × Ò �L×'Ñ'Ð)BÕ Cr!   