Ë
    [²jöw  ã                   óZ  — d dl mZmZ d dlmZ d dlmZmZmZm	Z	 d dl
Z
d dlmZ d dlmZ d dl
mZmZmZ d dlmc mZ d dlmZmZmZ d d	lmZ d d
lmZ d dl Z d„ Z G d„ dej<                  «      Z G d„ dej<                  «      Z d„ Z!d„ Z"d5d„Z#d„ Z$d„ Z%d„ Z&d6d„Z' G d„ dej<                  «      Z( G d„ dej<                  «      Z) G d„ dej<                  «      Z* G d„ dej<                  «      Z+ G d„ d ej<                  «      Z,d7d!„Z- G d"„ d#ej<                  «      Z. G d$„ d%ej<                  «      Z/ G d&„ d'ej<                  «      Z0 G d(„ d)ej<                  «      Z1 G d*„ d+ej<                  «      Z2 G d,„ d-e
j                  j<                  «      Z3d8d.„Z4d/„ Z5d0„ Z6d1„ Z7d8d2„Z8 G d3„ d4«      Z9y)9é    )Úlog2Úceil)Úpartial)ÚAnyÚOptionalÚListÚIterableN)Ú
transforms)ÚImage)ÚnnÚeinsumÚTensor)Ú	rearrangeÚrepeatÚreduce)Ú	Rearrange)Ú
save_imagec                 ó0   — | dz
  |dz
  z  ||dz
  z  z   dz  S )Né   é   © )ÚsizeÚkernelÚdilationÚstrides       úF/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/aura_sr.pyÚget_same_paddingr      s(   € Ø�A‰X˜& 1™*Ñ%¨°F¸Q±JÑ(?Ñ?ÀAÑEÐEó    c                   óL   ‡ — e Zd Zddddddœˆ fd„
Z	 d	dee   dee   fd„Zˆ xZS )
ÚAdaptiveConv2DModTr   g:Œ0âŽyE>)Údemodr   r   ÚepsÚnum_conv_kernelsc          	      óH  •— t         ‰	| �  «        || _        || _        || _        || _        || _        |dkD  | _        t        j                  t        j                  |||||f«      «      | _        || _        t        j                  j                  | j                  ddd¬«       y )Nr   r   Úfan_inÚ
leaky_relu)ÚaÚmodeÚnonlinearity)ÚsuperÚ__init__r"   Údim_outr   r   r   Úadaptiver   Ú	ParameterÚtorchÚrandnÚweightsr!   ÚinitÚkaiming_normal_)
ÚselfÚdimr,   r   r!   r   r   r"   r#   Ú	__class__s
            €r   r+   zAdaptiveConv2DMod.__init__   s”   ø€ ô 	‰ÑÔØˆŒàˆŒàˆŒØˆŒØ ˆŒØ(¨1Ñ,ˆŒä—|‘|Ü�K‰KÐ)¨7°C¸ÀÐHÓIó
ˆŒð ˆŒ
ä
�‰×ÑØ�L‰L˜A H¸<ð 	 õ 	
r   ÚmodÚ
kernel_modc                 óÖ  — |j                   d   |j                   d   }}|j                   d   |k7  rt        |d||j                   d   z  ¬«      }t        |«      rU|j                  «       dkD  }| j                  s|rJ ‚|r0|j                   d   |k7  rt        |d||j                   d   z  ¬«      }| j
                  }| j                  r\t        |d|¬«      }t        |«      r|j                  «       dkD  sJ ‚|j                  d¬«      }t        |d	«      }t        ||z  d
d«      }t        |d«      }||dz   z  }| j                  r=t        |dz  dd«      j                  | j                  ¬«      j                  «       }	||	z  }t        |d«      }t        |d«      }t        || j                  | j                  | j                   «      }
t#        j$                  |||
|¬«      }t        |d|¬«      S )zw
        notation

        b - batch
        n - convs
        o - output
        i - input
        k - kernel
        r   éþÿÿÿzb ... -> (s b) ...)Úsz... -> b ...)Úbéÿÿÿÿ©r5   zb n -> b n 1 1 1 1zb n ... -> b ...Úsumzb i -> b 1 i 1 1r   r   zb o i k1 k2 -> b o 1 1 1)Úminzb c h w -> 1 (b c) h wzb o ... -> (b o) ...)ÚpaddingÚgroupsz1 (b o) ... -> b o ...)Úshaper   ÚexistsÚnumelr-   r1   Úsoftmaxr   r   r!   Úclampr"   Úrsqrtr   r   r   r   ÚFÚconv2d)r4   Úfmapr7   r8   r<   ÚhÚkernel_mod_has_elr1   Úkernel_attnÚinv_normrA   s              r   ÚforwardzAdaptiveConv2DMod.forward:   sÙ  € ð �z‰z˜!‰}˜dŸj™j¨™nˆ1ˆð
 �9‰9�Q‰<˜1ÒÜ˜Ð2°a¸3¿9¹9ÀQ¹<Ñ6GÔHˆCä�*ÔØ *× 0Ñ 0Ó 2°QÑ 6Ðà—=’=Ñ(9Ð9Ð9á  Z×%5Ñ%5°aÑ%8¸AÒ%=Ü#ØÐ 4¸¸Z×=MÑ=MÈaÑ=PÑ8Pô�
ð —,‘,ˆà�=Š=Ü˜W n¸Ô:ˆGô ˜*Ô%¨*×*:Ñ*:Ó*<¸qÒ*@Ð@Ð@à$×,Ñ,°Ð,Ó4ˆKÜ# KÐ1EÓFˆKä˜W {Ñ2Ð4FÈÓNˆGô ˜Ð/Ó0ˆà˜S 1™WÑ%ˆà�:Š:ä�w ‘zÐ#=¸uÓEß‘˜4Ÿ8™8�Ó$ß‘“ð ð
  Ñ(ˆGä˜Ð7Ó8ˆä˜GÐ%;Ó<ˆä" 1 d§k¡k°4·=±=À$Ç+Á+ÓNˆÜ�x‰x˜˜g¨w¸qÔAˆä˜Ð7¸1Ô=Ð=r   )NN)Ú__name__Ú
__module__Ú__qualname__r+   r   r   rP   Ú__classcell__©r6   s   @r   r    r       sC   ø„ ð ØØØØö
ðB RVñD>Ø! &Ñ)ðD>Ø>FÀvÑ>N÷D>r   r    c                   ó,   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zˆ xZS )ÚAttendc                 óÌ   •— t         ‰| �  «        || _        t        j                  |«      | _        t        j                  t        j                  d«      «      | _	        || _
        y ©Nr   )r*   r+   Údropoutr   ÚDropoutÚattn_dropoutr.   r/   r0   ÚscaleÚflash)r4   rZ   r^   r6   s      €r   r+   zAttend.__init__‚   sE   ø€ Ü‰ÑÔØˆŒÜŸJ™J wÓ/ˆÔÜ—\‘\¤%§+¡+¨a£.Ó1ˆŒ
Øˆ�
r   c                 ó�   — t        d„ |||f«      \  }}}t        j                  |||| j                  r| j                  nd¬«      }|S )Nc                 ó"   — | j                  «       S ©N)Ú
contiguous)Úts    r   ú<lambda>z#Attend.flash_attn.<locals>.<lambda>Š   s   €  §¡£€ r   ç        )Ú	dropout_p)ÚmaprI   Úscaled_dot_product_attentionÚtrainingrZ   )r4   ÚqÚkÚvÚouts        r   Ú
flash_attnzAttend.flash_attn‰   sG   € ÜÑ.°°A°q°	Ó:‰ˆˆ1ˆaÜ×,Ñ,Øˆq�!¨t¯}ª}˜tŸ|š|À#ô
ˆð ˆ
r   c                 óè   — | j                   r| j                  |||«      S |j                  d   dz  }t        d||«      |z  }|j	                  d¬«      }| j                  |«      }t        d||«      }|S )Nr=   ç      à¿zb h i d, b h j d -> b h i jr>   zb h i j, b h j d -> b h i d)r^   rn   rC   r   rF   r\   )r4   rj   rk   rl   r]   ÚsimÚattnrm   s           r   rP   zAttend.forward�   s|   € Ø�:Š:Ø—?‘? 1 a¨Ó+Ð+à—‘˜‘˜tÑ#ˆô Ð2°A°qÓ9¸EÑAˆð �{‰{˜rˆ{Ó"ˆØ× Ñ  Ó&ˆô Ð2°D¸!Ó<ˆàˆ
r   )re   F)rQ   rR   rS   r+   rn   rP   rT   rU   s   @r   rW   rW   �   s   ø„ õòör   rW   c                 ó
   — | d uS ra   r   )Úxs    r   rD   rD   £   s   € Ø�Dˆ=Ðr   c                 óD   — t        | «      r| S t        |«      r |«       S |S ra   )rD   Úcallable)ÚvalÚds     r   Údefaultry   §   s!   € Üˆc„{Øˆ
Ü˜1”+‰1‹3Ð$ 1Ð$r   c                 ó2   — t        | t        «      r| S | f|z  S ra   )Ú
isinstanceÚtuple)rc   Úlengths     r   Ú
cast_tupler~   ­   s   € Ü�!”UÔØˆØˆ4�&‰=Ðr   c                 ó   — | S ra   r   )rc   ÚargsÚkwargss      r   Úidentityr‚   ³   s   € Ø€Hr   c                 ó4   — t        | «      j                  «       S ra   )r   Ú
is_integer)Úns    r   Úis_power_of_twor†   ·   s   € Ü�‹7×ÑÓÐr   c               #   ó   K  — 	 d –— Œ­wra   r   r   r   r   Únull_iteratorrˆ   »   s   è ø€ Ø
ØŠ
ð ùs   ‚	c           
      óŠ   — t        j                  t        ddd¬«      t        j                  | dz  t	        || «      d«      «      S )Nz$b c (h p1) (w p2) -> b (c p1 p2) h wr   )Úp1Úp2é   r   )r   Ú
Sequentialr   ÚConv2dry   )r5   r,   s     r   Ú
Downsampler�   ¿   s;   € Ü�=‰=ÜÐ8¸QÀ1ÔEÜ
�	‰	�#˜‘'œ7 7¨CÓ0°!Ó4óð r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚRMSNormc                 ó�   •— t         ‰| �  «        t        j                  t	        j
                  d|dd«      «      | _        d| _        y )Nr   g-Cëâ6?)r*   r+   r   r.   r/   ÚonesÚgr"   )r4   r5   r6   s     €r   r+   zRMSNorm.__init__Ç   s4   ø€ Ü‰ÑÔÜ—‘œeŸj™j¨¨C°°AÓ6Ó7ˆŒØˆ�r   c                 óp   — t        j                  |d¬«      | j                  z  |j                  d   dz  z  S )Nr   r>   ç      à?)rI   Ú	normalizer”   rC   ©r4   rt   s     r   rP   zRMSNorm.forwardÌ   s.   € Ü�{‰{˜1 !Ô$ t§v¡vÑ-°·±¸±¸sÑ1BÑCÐCr   ©rQ   rR   rS   r+   rP   rT   rU   s   @r   r‘   r‘   Æ   s   ø„ ôö
Dr   r‘   c                   ó4   ‡ — e Zd Zdˆ fd„	Zddee   fd„Zˆ xZS )ÚBlockc                 ó¦   •— t         ‰| �  «        t        ||d|¬«      | _        d| _        d| _        d| _        t        j                  «       | _	        y )Né   )r   r#   r   )
r*   r+   r    Úprojr   r   r   r   ÚSiLUÚact)r4   r5   r,   rB   r#   r6   s        €r   r+   zBlock.__init__Ô   sH   ø€ Ü‰ÑÔÜ%Ø� Ð5Eô
ˆŒ	ð ˆŒØˆŒØˆŒä—7‘7“9ˆ�r   Úconv_mods_iterc                 óœ   — t        |t        «       «      }| j                  |t        |«      t        |«      ¬«      }| j	                  |«      }|S )N)r7   r8   )ry   rˆ   rž   Únextr    )r4   rt   r¡   s      r   rP   zBlock.forwardß   s@   € Ü  ´³ÓAˆà�I‰I�aœT .Ó1¼dÀ>Ó>RˆIÓSˆà�H‰H�Q‹KˆØˆr   )é   r   ra   )rQ   rR   rS   r+   r   r	   rP   rT   rU   s   @r   r›   r›   Ó   s   ø„ õ	ñ¨°(Ñ);÷ r   r›   c                   óB   ‡ — e Zd Zddg dœdefˆ fd„Zddee   fd„Zˆ xZS )	ÚResnetBlockr¤   r   ©rB   r#   Ú
style_dimsr¨   c                ó  •— t         ‰| �  «        |j                  ||||g«       t        ||||¬«      | _        t        ||||¬«      | _        ||k7  rt        j                  ||d«      | _	        y t        j                  «       | _	        y )N)rB   r#   r   )
r*   r+   Úextendr›   Úblock1Úblock2r   rŽ   ÚIdentityÚres_conv)r4   r5   r,   rB   r#   r¨   r6   s         €r   r+   zResnetBlock.__init__é   s   ø€ ô 	‰ÑÔØ×Ñ˜3Ð 0°'Ð;KÐLÔMäØ� Ð:Jô
ˆŒô Ø�W VÐ>Nô
ˆŒð 7:¸W²nœŸ	™	 # w°Ó2ˆ�Ì"Ï+É+Ë-ˆ�r   r¡   c                 óv   — | j                  ||¬«      }| j                  ||¬«      }|| j                  |«      z   S )N©r¡   )r«   r¬   r®   )r4   rt   r¡   rL   s       r   rP   zResnetBlock.forward÷   s:   € Ø�K‰K˜¨.ˆKÓ9ˆØ�K‰K˜¨.ˆKÓ9ˆà�4—=‘= Ó#Ñ#Ð#r   ra   )	rQ   rR   rS   r   r+   r   r	   rP   rT   rU   s   @r   r¦   r¦   è   s+   ø„ à&'¸!ÐPRòXØIMõXñ$¨°(Ñ);÷ $r   r¦   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLinearAttentionc                 ó"  •— t         ‰| �  «        |dz  | _        || _        ||z  }t	        |«      | _        t        j                  ||dz  dd¬«      | _        t        j                  t        j                  ||d«      t	        |«      «      | _
        y )Nrp   r�   r   F©Úbias)r*   r+   r]   Úheadsr‘   Únormr   rŽ   Úto_qkvr�   Úto_out)r4   r5   r¶   Údim_headÚ
hidden_dimr6   s        €r   r+   zLinearAttention.__init__ÿ   sr   ø€ Ü‰ÑÔØ˜t‘^ˆŒ
ØˆŒ
Ø Ñ%ˆ
ä˜C“LˆŒ	Ü—i‘i  Z°!¡^°Q¸UÔCˆŒä—m‘m¤B§I¡I¨j¸#¸qÓ$AÄ7È3Ã<ÓPˆ�r   c                 óÊ  ‡ — |j                   \  }}}}‰ j                  |«      }‰ j                  |«      j                  dd¬«      }t	        ˆ fd„|«      \  }}}	|j                  d¬«      }|j                  d¬«      }|‰ j                  z  }t        j                  d||	«      }
t        j                  d|
|«      }t        |d	‰ j                  ||¬
«      }‰ j                  |«      S )Nr�   r   r>   c                 ó4   •— t        | d‰j                  ¬«      S )Nzb (h c) x y -> b h c (x y)©rL   ©r   r¶   ©rc   r4   s    €r   rd   z)LinearAttention.forward.<locals>.<lambda>  ó   ø€ ”i Ð#?À4Ç:Á:ÔN€ r   r:   r=   zb h d n, b h e n -> b h d ezb h d e, b h d n -> b h e nzb h c (x y) -> b (h c) x y)rL   rt   Úy)rC   r·   r¸   Úchunkrg   rF   r]   r/   r   r   r¶   r¹   )r4   rt   r<   ÚcrL   ÚwÚqkvrj   rk   rl   Úcontextrm   s   `           r   rP   zLinearAttention.forward
  sÐ   ø€ Ø—W‘W‰
ˆˆ1ˆa�à�I‰I�a‹Lˆà�k‰k˜!‹n×"Ñ" 1¨!Ð"Ó,ˆÜÛNÐPSó
‰ˆˆ1ˆað �I‰I˜"ˆIÓˆØ�I‰I˜"ˆIÓˆà�—
‘
‰Nˆä—,‘,Ð<¸aÀÓCˆä�l‰lÐ8¸'À1ÓEˆÜ˜Ð9¸T¿Z¹ZÈ1ÐPQÔRˆØ�{‰{˜3ÓÐr   )rŒ   é    r™   rU   s   @r   r²   r²   þ   s   ø„ õ	Qö r   r²   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )Ú	Attentionc                 óö   •— t         ‰| �  «        || _        ||z  }t        |«      | _        t        |¬«      | _        t        j                  ||dz  dd¬«      | _	        t        j                  ||d«      | _
        y )N)r^   r�   r   Fr´   )r*   r+   r¶   r‘   r·   rW   Úattendr   rŽ   r¸   r¹   )r4   r5   r¶   rº   r^   r»   r6   s         €r   r+   zAttention.__init__!  sd   ø€ Ü‰ÑÔØˆŒ
Ø Ñ%ˆ
ä˜C“LˆŒ	ä 5Ô)ˆŒÜ—i‘i  Z°!¡^°Q¸UÔCˆŒÜ—i‘i 
¨C°Ó3ˆ�r   c                 ó  ‡ — |j                   \  }}}}‰ j                  |«      }‰ j                  |«      j                  dd¬«      }t	        ˆ fd„|«      \  }}}	‰ j                  |||	«      }
t        |
d||¬«      }
‰ j                  |
«      S )Nr�   r   r>   c                 ó4   •— t        | d‰j                  ¬«      S )Nzb (h c) x y -> b h (x y) cr¾   r¿   rÀ   s    €r   rd   z#Attention.forward.<locals>.<lambda>2  rÁ   r   zb h (x y) d -> b (h d) x y)rt   rÂ   )rC   r·   r¸   rÃ   rg   rÌ   r   r¹   )r4   rt   r<   rÄ   rL   rÅ   rÆ   rj   rk   rl   rm   s   `          r   rP   zAttention.forward,  sˆ   ø€ Ø—W‘W‰
ˆˆ1ˆa�Ø�I‰I�a‹LˆØ�k‰k˜!‹n×"Ñ" 1¨!Ð"Ó,ˆäÛNÐPSó
‰ˆˆ1ˆað �k‰k˜!˜Q Ó"ˆÜ˜Ð9¸QÀ!ÔDˆà�{‰{˜3ÓÐr   )rŒ   rÈ   Fr™   rU   s   @r   rÊ   rÊ      s   ø„ õ	4ö r   rÊ   c           
      óÈ   — t        j                  t        | «      t        j                  | | |z  d«      t        j                  «       t        j                  | |z  | d«      «      S rY   )r   r�   r‘   rŽ   ÚGELU©r5   Úmults     r   ÚFeedForwardrÓ   <  sK   € Ü�=‰=Ü�‹Ü
�	‰	�#�s˜T‘z 1Ó%Ü
�‰‹	Ü
�	‰	�#˜‘*˜c 1Ó%ó	ð r   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚTransformerc                 ó  •— t         ‰| �  «        t        j                  g «      | _        t        |«      D ]J  }| j                  j                  t        j                  t        ||||¬«      t        ||¬«      g«      «       ŒL y )N)r5   rº   r¶   r^   rÑ   )	r*   r+   r   Ú
ModuleListÚlayersÚrangeÚappendrÊ   rÓ   )	r4   r5   rº   r¶   Údepthrn   Úff_multÚ_r6   s	           €r   r+   zTransformer.__init__G  sq   ø€ Ü‰ÑÔÜ—m‘m BÓ'ˆŒä�u“ò 
	ˆAØ�K‰K×ÑÜ—‘ä!Ø #¨h¸eÈ:ôô $¨°'Ô:ð	óõ	ñ
	r   c                 óZ   — | j                   D ]  \  }} ||«      |z   } ||«      |z   }Œ |S ra   ©rØ   ©r4   rt   rr   Úffs       r   rP   zTransformer.forwardW  ó:   € ØŸ™ò 	‰HˆD�"Ù�Q“˜!‘ˆAÙ�1“˜‘	‰Að	ð ˆr   )é@   r¤   r   TrŒ   r™   rU   s   @r   rÕ   rÕ   F  s   ø„ õö r   rÕ   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLinearTransformerc           
      ó  •— t         ‰| �  «        t        j                  g «      | _        t        |«      D ]I  }| j                  j                  t        j                  t        |||¬«      t        ||¬«      g«      «       ŒK y )N)r5   rº   r¶   rÑ   )	r*   r+   r   r×   rØ   rÙ   rÚ   r²   rÓ   )r4   r5   rº   r¶   rÛ   rÜ   rÝ   r6   s          €r   r+   zLinearTransformer.__init__`  sj   ø€ Ü‰ÑÔÜ—m‘m BÓ'ˆŒä�u“ò 	ˆAØ�K‰K×ÑÜ—‘ä'¨C¸(È%ÔPÜ#¨°'Ô:ðóõñ	r   c                 óZ   — | j                   D ]  \  }} ||«      |z   } ||«      |z   }Œ |S ra   rß   rà   s       r   rP   zLinearTransformer.forwardn  râ   r   )rã   r¤   r   rŒ   r™   rU   s   @r   rå   rå   _  s   ø„ õör   rå   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚNearestNeighborhoodUpsamplec                 óx   •— t         ‰| �  «        t        ||«      }t        j                  ||ddd¬«      | _        y )Nr�   r   ©Úkernel_sizer   rA   )r*   r+   ry   r   rŽ   Úconv)r4   r5   r,   r6   s      €r   r+   z$NearestNeighborhoodUpsample.__init__w  s2   ø€ Ü‰ÑÔÜ˜' 3Ó'ˆÜ—I‘I˜c 7¸À!ÈQÔOˆ�	r   c                 óœ   — |j                   d   dk\  r|j                  «       }t        j                  |dd¬«      }| j	                  |«      }|S )Nr   rã   ç       @Únearest)Úscale_factorr(   )rC   rb   rI   Úinterpolaterí   r˜   s     r   rP   z#NearestNeighborhoodUpsample.forward|  sA   € à�7‰7�1‰:˜ÒØ—‘“ˆAä�M‰M˜!¨#°IÔ>ˆØ�I‰I�a‹Lˆàˆr   ra   r™   rU   s   @r   ré   ré   v  s   ø„ õPö
r   ré   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚEqualLinearc                 óê   •— t         ‰| �  «        t        j                  t	        j
                  ||«      «      | _        |r-t        j                  t	        j                  |«      «      | _        || _	        y ra   )
r*   r+   r   r.   r/   r0   ÚweightÚzerosrµ   Úlr_mul)r4   r5   r,   rø   rµ   r6   s        €r   r+   zEqualLinear.__init__‡  sL   ø€ Ü‰ÑÔÜ—l‘l¤5§;¡;¨w¸Ó#<Ó=ˆŒÙÜŸ™¤U§[¡[°Ó%9Ó:ˆDŒIàˆ�r   c                 óŽ   — t        j                  || j                  | j                  z  | j                  | j                  z  ¬«      S )Nr´   )rI   Úlinearrö   rø   rµ   )r4   Úinputs     r   rP   zEqualLinear.forward�  s/   € Ü�x‰x˜˜tŸ{™{¨T¯[©[Ñ8¸t¿y¹yÈ4Ï;É;Ñ?VÔWÐWr   )r   Tr™   rU   s   @r   rô   rô   †  s   ø„ õöXr   rô   c                   ó(   ‡ — e Zd Zdˆ fd„	Zdd„Zˆ xZS )ÚStyleGanNetworkc                 ó"  •— t         ‰| �  «        || _        || _        || _        g }t        |«      D ]D  }|dk(  }|r||z   }	n|}	|}
|j                  t        |	|
|«      t        j                  d«      g«       ŒF t        j                  |Ž | _        y )Nr   gš™™™™™É?)r*   r+   Údim_inr,   Údim_text_latentrÙ   rª   rô   r   Ú	LeakyReLUr�   Únet)r4   rÿ   r,   rÛ   rø   r   rØ   ÚiÚis_firstÚdim_in_layerÚdim_out_layerr6   s              €r   r+   zStyleGanNetwork.__init__”  s•   ø€ Ü‰ÑÔØˆŒØˆŒØ.ˆÔàˆÜ�u“ò 	ˆAØ˜A‘vˆHáØ%¨Ñ7‘à&�à#ˆMà�M‰MÜ˜\¨=¸&ÓAÄ2Ç<Á<ÐPSÓCTÐUõð	ô —=‘= &Ð)ˆ�r   c                 ó¼   — t        j                  |d¬«      }| j                  dkD  r&t        |«      sJ ‚t	        j
                  ||fd¬«      }| j                  |«      S )Nr   r>   r   r=   )rI   r—   r   rD   r/   Úcatr  )r4   rt   Útext_latents      r   rP   zStyleGanNetwork.forward«  sQ   € Ü�K‰K˜˜qÔ!ˆØ×Ñ !Ò#Ü˜+Ô&Ð&Ð&Ü—	‘	˜1˜kÐ*°Ô3ˆAØ�x‰x˜‹{Ðr   )é€   i   r¤   gš™™™™™¹?r   ra   r™   rU   s   @r   rý   rý   “  s   ø„ õ*÷.r   rý   c            *       ól  ‡ — e Zd Zdddddddddddd	d
d
ddddœdedededee   dee   dee   dededededededededededededed ee	   f(ˆ fd!„Z
ed"„ «       Zed#„ «       Zed$„ «       Zd%„ Z	 	 	 	 d,d&ej"                  d'eej"                     d(eej"                     d)eej"                     d*ef
d+„Zˆ xZS )-ÚUnetUpsamplerN)r   r   rŒ   r¤   é   )rŒ   r¤   r  r�   r¤   )FFFTTTrã   )r   r   r   r   rŒ   rŒ   Úbilinear)Úinit_dimÚout_dimÚstyle_networkÚup_dim_multsÚdown_dim_multsÚchannelsÚresnet_block_groupsÚ	full_attnrn   Úself_attn_dim_headÚself_attn_headsÚattn_depthsÚmid_attn_depthr#   Úresize_modeÚunconditionalÚskip_connect_scaler5   Ú
image_sizeÚinput_image_sizer  r  r  r  r  r  r  r  rn   r  r  r  r  r#   r  r  r  c                ó2  •‡— t         ‰+| �  «        t        di |¤Žx| _        }|| _        |rt        |«      r|j                  dkD  rJ ‚t        |«      rt        |«      sJ d«       ‚||k  sJ d«       ‚|| _        || _	        g }|	| _
        |	}t        |‰«      }|gt        ˆfd„|«      ¢}|t        |«      t        |«      z
     }|gt        ˆfd„|«      ¢}t        j                  ||dd¬«      | _        t#        t%        |d d	 |d
d  «      «      }t#        t%        |d d	 |d
d  «      «      }t'        t(        |
||¬«      }t'        t*        |¬«      }|�^ }}t        |d«      | _        t        j.                  g «      | _        t        j.                  g «      | _        d} t5        t%        |||«      «      D ]¾  \  }!\  \  }"}#}$}%|$r|nt6        }&g }'t9        | «      D ]  }(|'j;                   ||"|"«      «       Œ | j0                  j;                  t        j.                  t        j.                  |'«      t        j.                  |$r |&|"|||%¬«      nd t        j                  |"|#ddd
¬«      g«      g«      «       ŒÀ  |||«      | _         |||||¬«      | _         |||«      | _         |�^ }})t5        t%        tC        |«      tC        |«      tC        |«      «      «      D ]Ì  \  }!\  \  }"}#}$}%|$r|nt6        }&g }'|!t        |«      k  r|"dz  n|"}*t9        | «      D ]  }(|'j;                   ||*|"«      «       Œ | j2                  j;                  t        j.                  t        j.                  |'«      t        j.                  tE        |!dk(  r|)n|#|"«      |$r |&|"|||%¬«      nd g«      g«      «       ŒÎ t        ||	«      | _#         |‰‰«      | _$        t        j                  ‰|	d
«      | _%        || _&        t        jN                  |jP                  tS        |«      «      | _*        || _+        y )Nr   z>both output image size and input image size must be power of 2zLinput image size must be smaller than the output image size, thus upsamplingc                 ó   •— ‰| z  S ra   r   ©Úmr5   s    €r   rd   z(UnetUpsampler.__init__.<locals>.<lambda>ç  s   ø€ ¨C°!©G€ r   c                 ó   •— ‰| z  S ra   r   r"  s    €r   rd   z(UnetUpsampler.__init__.<locals>.<lambda>é  s   ø€ °3¸±7€ r   é   r�   )rA   r=   r   r§   )rn   gÍ;fž æ?é   )rº   r¶   rÛ   r   rë   r   ),r*   r+   rý   r  r  rD   r   r†   r  r  r  ry   rg   Úlenr   rŽ   Ú	init_convÚlistÚzipr   r¦   rÕ   r  r×   ÚdownsÚupsÚ	enumeraterå   rÙ   rÚ   Ú
mid_block1Úmid_attnÚ
mid_block2Úreversedré   r  Úfinal_res_blockÚfinal_to_rgbr  ÚLinearr,   r?   Ústyle_to_conv_modulationsÚstyle_embed_split_dims),r4   r5   r  r  r  r  r  r  r  r  r  r  rn   r  r  r  r  r#   r  r  r  r6  Úinput_channelsÚup_dimsÚinit_down_dimÚ	down_dimsÚ	up_in_outÚdown_in_outÚblock_klassÚFullAttentionrÝ   Úmid_dimÚblock_countÚindrÿ   r,   Úlayer_full_attnÚlayer_attn_depthÚ
attn_klassÚblocksr  Úlast_dimÚ	input_dimr6   s,    `                                         €r   r+   zUnetUpsampler.__init__µ  s[  ù€ ô0 	‰ÑÔÜ-<Ñ-M¸}Ñ-MÐMˆÔ˜]Ø*ˆÔáÜ�}Ô%Ø×-Ñ-°Ò1ð	
ð 
ô ˜zÔ*¬Øô0
ð 	LàKó	Lð 
ð ˜zÒ)ð	ZàYó	ZØ)ð %ˆŒØ 0ˆÔà!#Ðà ˆŒØ!ˆä˜8 SÓ)ˆàÐCœcÓ"3°\ÓBÐCˆØ¤ LÓ 1´C¸Ó4GÑ GÑHˆØ"ÐL¤SÓ):¸NÓ%KÐLˆ	ÜŸ™ >°=À!ÈQÔOˆŒäœ˜W S b˜\¨7°1°2¨;Ó7Ó8ˆ	Üœ3˜y¨¨"˜~¨y¸¸¨}Ó=Ó>ˆäÜØ&Ø-Ø-ô	
ˆô  ¤¸
ÔCˆØ‰ˆˆGä")Ð*<¸gÓ"FˆÔä—]‘] 2Ó&ˆŒ
Ü—=‘= Ó$ˆŒàˆô ”s˜;¨	°;Ó?Ó@ò	"	ñ 
ˆCñ 
ÙˆV�WØØá*9™Ô?PˆJàˆFÜ˜;Ó'ò ;�Ø—‘™k¨&°&Ó9Õ:ð;ð �J‰J×ÑÜ—‘äŸ™ fÓ-ÜŸ™ñ (7ñ %/Ø(.Ø1CØ.=Ø.>õ	%&ð *.ä "§	¡	Ø$*¨GÀÈ1ÐVWô!"ðóðóõð"	ñH & g¨wÓ7ˆŒÙ%ØØ'Ø!Ø ô	
ˆŒñ & g¨wÓ7ˆŒà‰ˆˆHô ÜÜ˜Ó#Ü˜Ó#Ü˜Ó%óó
ò	*	ñ 
ˆCñ 
ÙˆV�WØØñ +:™Ô?PˆJàˆFØ&)¬C°Ó,<Ò&<˜ š
À&ˆIÜ˜;Ó'ò >�Ø—‘™k¨)°VÓ<Õ=ð>ð �H‰H�O‰OÜ—‘äŸ™ fÓ-ÜŸ™ä ;Ø03°q²¡H¸gØ$*ó!"ñ (7ñ %/Ø(.Ø1CØ.=Ø.>õ	%&ð *.ðóðóõð%*	ôX ˜w¨Ó1ˆŒÙ*¨3°Ó4ˆÔÜŸI™I c¨8°QÓ7ˆÔØ&ˆÔÜ)+¯©Ø×!Ñ!¤3Ð'=Ó#>ó*
ˆÔ&ð '=ˆÕ#r   c                 óÂ   — t        t        | j                  «      «      }t        t        | j                  «      «      }t	        t        ||«      «      }g t        d„ |«      ¢S )Nc                 ó   — d| z  S )Nr   r   )Úps    r   rd   z9UnetUpsampler.allowable_rgb_resolutions.<locals>.<lambda>i  s
   € ˜q !™t€ r   )Úintr   r  r  r)  rÙ   rg   )r4   Úinput_res_baseÚoutput_res_baseÚallowed_rgb_res_bases       r   Úallowable_rgb_resolutionsz'UnetUpsampler.allowable_rgb_resolutionsd  sO   € äœT $×"7Ñ"7Ó8Ó9ˆÜœd 4§?¡?Ó3Ó4ˆÜ#¤E¨.¸/Ó$JÓKÐØ;”‘^Ð%9Ó:Ð;Ð;r   c                 óH   — t        | j                  «       «      j                  S ra   )r£   Ú
parametersÚdevice)r4   s    r   rR  zUnetUpsampler.devicek  s   € ä�D—O‘OÓ%Ó&×-Ñ-Ð-r   c                 óv   — t        | j                  «       D �cg c]  }|j                  «       ‘Œ c}«      S c c}w ra   )r?   rQ  rE   )r4   rJ  s     r   Útotal_paramszUnetUpsampler.total_paramso  s(   € ä t§¡Ó'8Ö9 !�A—G‘G•IÒ9Ó:Ð:ùÒ9s   ˜6c                 óJ   — t        j                  |||f| j                  ¬«      S )N©r(   )rI   rò   r  )r4   rt   r   s      r   Úresize_image_tozUnetUpsampler.resize_image_tos  s   € Ü�}‰}˜Q  t °4×3CÑ3CÔDÐDr   Úlowres_imageÚstylesÚnoiseÚglobal_text_tokensÚreturn_all_rgbsc                 óˆ  — |}d}t        j                  |«      |z  }||z   }|j                  dd«      }|j                  }	|	d   }
|	dd  | j                  fdz  k(  sJ ‚t        |«      sjt        | j                  «      sJ ‚t        |t        j                  |
| j                  j                  f| j                  ¬«      «      }| j                  ||«      }| j                  |«      }|j                  | j                  d¬«      }t        |«      }| j                  |«      }g }| j                   D ]<  \  }\  }}|D ]  } |||¬	«      }|j#                  |«       Œ |� ||«      } ||«      }Œ> | j%                  ||¬	«      }| j'                  |«      }| j)                  ||¬	«      }| j*                  D ]i  \  }\  }} ||«      }|D ]I  }|g k7  r8|j-                  «       }|| j.                  z  }t        j0                  ||fd¬«      } |||¬	«      }ŒK |€Œb ||«      }Œk | j3                  ||¬	«      }| j5                  |«      }|s|S |g fS )
Ngü©ñÒMbP?r   r   r:   r   ©rR  r=   r>   r°   )r/   Ú
randn_likerG   rC   r  rD   r  ry   r0   rÿ   rR  r5  Úsplitr6  Úiterr(  r+  rÚ   r.  r/  r0  r,  Úpopr  r  r2  r3  )r4   rX  rY  rZ  r[  r\  rt   Únoise_scaleÚ	noise_augrC   Ú
batch_sizeÚ	conv_modsrL   rE  rr   Ú
downsampleÚblockÚupsampleÚresÚrgbs                       r   rP   zUnetUpsampler.forwardv  sv  € ð ˆàˆÜ×$Ñ$ QÓ'¨+Ñ5ˆ	Ø�	‰MˆØ�G‰G�A�q‹Mˆà—‘ˆØ˜1‘Xˆ
à�R�Sˆz˜t×4Ñ4Ð6¸Ñ:Ò;Ð;Ð;ô �fŒ~Ü˜$×,Ñ,Ô-Ð-Ð-äØÜ—‘Ø ×!3Ñ!3×!:Ñ!:Ð;ÀDÇKÁKôóˆEð ×'Ñ'¨Ð/AÓBˆFð ×2Ñ2°6Ó:ˆ	Ø—O‘O D×$?Ñ$?ÀR�OÓHˆ	Ü˜“Oˆ	à�N‰N˜1ÓˆàˆØ*.¯*©*ò 	Ñ&ˆFÑ&�T˜:Øò �Ù˜!¨IÔ6�Ø—‘˜•ðð ÐÙ˜“G�á˜1“‰Að	ð �O‰O˜A¨iˆOÓ8ˆØ�M‰M˜!ÓˆØ�O‰O˜A¨iˆOÓ8ˆð �X‰Xò	ñ 
ØñØØñ ˜“ˆAØò 7�Ø˜’7ØŸ%™%›'�CØ × 7Ñ 7Ñ7�CÜŸ	™	 1 c (°Ô2�Aá˜!¨IÔ6‘ð7ð ÑÙ˜“G‘ð#	ð& × Ñ  °9Ð Ó=ˆØ×Ñ Ó"ˆáØˆJà�Bˆwˆr   )NNNF)rQ   rR   rS   rK  r   Údictr|   ÚboolÚstrÚfloatr+   ÚpropertyrO  rR  rT  rW  r/   r   rP   rT   rU   s   @r   r  r  ³  sÓ  ø„ ð #'Ø!%Ø(,Ø.Ø *ØØ#$Ø<ØØ"$Ø Ø,ØØ !Ø%Ø"Ø.2ò-m=àðm=ð ð	m=ð
 ðm=ð ˜3‘-ðm=ð ˜#‘ðm=ð   ‘~ðm=ð ðm=ð ðm=ð ðm=ð !ðm=ð ðm=ð ðm=ð  ðm=ð  ð!m=ð" ð#m=ð$ ð%m=ð& ð'm=ð( ð)m=ð* ð+m=ð, % U™Oõ-m=ð^ ñ<ó ð<ð ñ.ó ð.ð ñ;ó ð;òEð *.Ø(,Ø59Ø %ñOà—l‘lðOð ˜Ÿ™Ñ&ðOð ˜Ÿ™Ñ%ð	Oð
 % U§\¡\Ñ2ðOð ÷Or   r  c                 ó
  — | j                   \  }}}t        ||z  «      }t        ||z  «      }g }t        |«      D ]C  }t        |«      D ]3  }	| d d …||z  |dz   |z  …|	|z  |	dz   |z  …f   }
|j                  |
«       Œ5 ŒE |||fS rY   )rC   r   rÙ   rÚ   )ÚimageÚ
chunk_sizerÄ   rL   rÅ   Úh_chunksÚw_chunksÚtilesr  ÚjÚtiles              r   Ú
tile_imagery  È  s¬   € Ø�k‰k�G€A€qˆ!Ü�A˜
‘NÓ#€HÜ�A˜
‘NÓ#€HØ€EÜ�8‹_ò ˆÜ�x“ò 	ˆAØš˜A 
™N¨A°©E°ZÑ+?Ð?ÀÀZÁÐQRÐUVÑQVÐZdÑPdÐAdÐdÑeˆDØ�L‰L˜Õñ	ðð �(˜HÐ$Ð$r   c                 óT  — t        j                  dd| «      }t        j                  dd| «      }t        j                  ||d¬«      \  }}t        j                  ||z  ||z  z   «      }d\  }}t        j                  ||z
  dz  d|dz  z  z   «      }|dz  }||j                  «       z  S )	Nr=   r   Úij)Úindexing)r–   re   r   rï   r¤   )r/   ÚlinspaceÚmeshgridÚsqrtÚexpÚmax)Ú	tile_sizert   rÂ   rx   ÚsigmaÚmur1   s          r   Úcreate_checkerboard_weightsr…  Ô  s¡   € Ü�‰�r˜1˜iÓ(€AÜ�‰�r˜1˜iÓ(€Aä�>‰>˜!˜Q¨Ô.�D€A€qÜ�
‰
�1�Q‘3˜˜1™‘9Ó€AØ�I€Eˆ2Ü�i‰i˜1˜R™4 !™) s¨U°A©X¡~Ñ6Ð7Ó8€Gð �q‰j€Gà�W—[‘[“]Ñ"Ð"r   c                 óÌ   — | j                   d   }t        j                  |d   |z  «      t        j                  |d   |z  «      f}| j                  |«      d |d   …d |d   …f   S )Nr   r   )rC   Úmathr   r   )r1   r  r‚  Úrepeatss       r   Úrepeat_weightsr‰  â  sg   € Ø—‘˜aÑ €IÜ�y‰y˜ A™¨Ñ2Ó3´T·Y±Y¸zÈ!¹}ÈyÑ?XÓ5YÐZ€GØ�>‰>˜'Ó" > J¨q¡M >°>°J¸q±M°>Ð#AÑBÐBr   c                 ót   — | j                   d   }|dz  }t        | |d   |z   |d   |z   f«      }||d …|d …f   S )Nr   r   r   )rC   r‰  )r1   r  r‚  ÚoffsetÚfull_weightss        r   Úcreate_offset_weightsr�  ç  sQ   € Ø—‘˜aÑ €IØ˜!‰^€FÜ! '¨J°q©M¸FÑ,BÀJÈqÁMÐTZÑDZÐ+[Ó\€LØ˜™ ¡Ð(Ñ)Ð)r   c                 ó&  — | d   j                   d   }||z  }||z  }t        j                  |||f| d   j                  ¬«      }t	        | «      D ]?  \  }}	||z  }
||z  }|
|z  }||z  }|	j                   dd  \  }}|	|d d …|||z   …|||z   …f<   ŒA |S )Nr   )Údtyper   )rC   r/   r÷   r�  r-  )rv  rt  ru  rs  rÄ   rL   rÅ   ÚmergedÚidxrx  r  rw  Úh_startÚw_startÚtile_hÚtile_ws                   r   Úmerge_tilesr–  í  sÅ   € àˆa‰�‰�qÑ€AØ�:Ñ€AØ�:Ñ€Aô �[‰[˜!˜Q ˜¨%°©(¯.©.Ô9€Fô ˜uÓ%ò I‰	ˆˆTØ�8‰OˆØ�(‰Nˆà�j‘.ˆØ�j‘.ˆàŸ™ A B˜‰ˆ�ØDHˆŠq�'˜' &™.Ð(¨'°'¸&±.Ð*@Ð@ÒAðIð €Mr   c                   óÖ   — e Zd Zddeeef   defd„Zeddedefd„«       Z	 e
j                  «       ddej                  dej                  fd	„«       Z e
j                  «       dd
„«       Zy)ÚAuraSRÚconfigrR  c                 óV   — t        di |¤Žj                  |«      | _        |d   | _        y )Nr  r   )r  ÚtoÚ	upsamplerr  )r4   r™  rR  s      r   r+   zAuraSR.__init__  s*   € Ü&Ñ0¨Ñ0×3Ñ3°FÓ;ˆŒØ &Ð'9Ñ :ˆÕr   Úmodel_idÚuse_safetensorsc                 óD  — dd l }dd l}ddlm} ddlm}  ||«      j                  «       r® ||«      }|j                  dk(  rd}n+|j                  dk(  rd}nt        d|j                  › d	�«      ‚|j                  d
«      }|j                  «       st        d|› d|j                  › d�«      ‚|j                  |j                  «       «      }	|j                  }
n0 | ||«      «      }
|j                  |
d
z  j                  «       «      }	 | |	«      }|r+	 ddlm}  | ||«      j                  «       s|
dz  n|«      }n- |j&                   ||«      j                  «       s|
dz  n|«      }|j(                  j+                  |d¬«       |S # t$        $ r t%        d«      ‚w xY w)Nr   )ÚPath)Úsnapshot_downloadz.safetensorsTz.ckptFzUnsupported file format: z). Please use .safetensors or .ckpt files.zconfig.jsonzConfig file not found: za. When loading from a local file, ensure that 'config.json' is present in the same directory as 'zj'. If you're trying to load a model from Hugging Face, please provide the model ID instead of a file path.)Ú	load_filezmodel.safetensorsz™The safetensors library is not installed. Please install it with `pip install safetensors` or use `use_safetensors=False` to load the model with PyTorch.z
model.ckpt)Ústrict)Újsonr/   Úpathlibr   Úhuggingface_hubr¡  Úis_fileÚsuffixÚ
ValueErrorÚ	with_namerD   ÚFileNotFoundErrorÚnameÚloadsÚ	read_textÚparentÚsafetensors.torchr¢  ÚImportErrorÚloadrœ  Úload_state_dict)Úclsr�  rž  r¤  r/   r   r¡  Ú
local_fileÚconfig_pathr™  Úhf_model_pathÚmodelr¢  Ú
checkpoints                 r   Úfrom_pretrainedzAuraSR.from_pretrained  s¬  € ãÛÝ Ý5ñ �‹>×!Ñ!Ô#Ù˜h›ˆJØ× Ñ  NÒ2Ø"&‘Ø×"Ñ" gÒ-Ø"'‘ä Ð#<¸Z×=NÑ=NÐ<OÐOxÐ!yÓzÐzð %×.Ñ.¨}Ó=ˆKØ×%Ñ%Ô'Ü'Ø-¨k¨]ð ;<à<F¿O¹OÐ;Lð MJðKóð ð —Z‘Z × 5Ñ 5Ó 7Ó8ˆFØ&×-Ñ-‰Má Ñ!2°8Ó!<Ó=ˆMØ—Z‘Z °Ñ!>× IÑ IÓ KÓLˆFá�F“ˆáðÝ7Ù&ÑRVÐW_ÓR`×RhÑRhÔRj }Ð7JÒ'JÐpxÓy‘
ð $˜Ÿ™ÉÈXË×H^ÑH^ÔH` M°LÒ$@ÐfnÓoˆJà�‰×'Ñ'¨
¸4Ð'Ô@Øˆøô ò Ü!ðUóð ðús   Ä)F
 Æ
Frr  Úreturnc           	      óD  — t        j                  «       }| j                  j                  } ||«      j	                  d«      }|j
                  \  }}}}| j                  || j                  z  z
  | j                  z  }	| j                  || j                  z  z
  | j                  z  }
t        j                  j                  j                  |d|
d|	fd¬«      j                  d«      }t        || j                  «      \  }}}t        |«      }t        d||«      D �cg c]
  }||||z    ‘Œ }}g }|D ]¢  }t        j                  |«      j!                  |«      }| j                  |t        j"                  |j
                  d   d|¬«      ¬«      }|j%                  t'        |j)                  dd«      j+                  «       j-                  «       «      «       Œ¤ t/        |||| j                  dz  «      }|d d …d |dz  …d |dz  …f   }t        j0                  «       } ||«      S c c}w )	Nr   ÚreflectrV  r
  r^  ©rX  rZ  r   rŒ   )r
   ÚToTensorrœ  rR  Ú	unsqueezerC   r  r/   r   Ú
functionalÚpadÚsqueezery  r'  rÙ   Ústackr›  r0   rª   r)  Úclamp_ÚdetachÚcpur–  Ú
ToPILImage)r4   rr  Úmax_batch_sizeÚtensor_transformrR  Úimage_tensorrÝ   rL   rÅ   Úpad_hÚpad_wrv  rt  ru  Ú	num_tilesr  ÚbatchesÚreconstructed_tilesÚbatchÚmodel_inputÚgenerator_outputÚmerged_tensorÚunpaddedÚto_pils                           r   Ú
upscale_4xzAuraSR.upscale_4x<  s  € ä%×.Ñ.Ó0ÐØ—‘×&Ñ&ˆá'¨Ó.×8Ñ8¸Ó;ˆØ!×'Ñ'‰
ˆˆ1ˆa�Ø×&Ñ&¨¨T×-BÑ-BÑ)BÑBÀd×F[ÑF[Ñ[ˆØ×&Ñ&¨¨T×-BÑ-BÑ)BÑBÀd×F[ÑF[Ñ[ˆô —x‘x×*Ñ*×.Ñ.¨|¸aÀÈÈ5Ð=QÐXaÐ.Ób×jÑjÐklÓmˆÜ$.¨|¸T×=RÑ=RÓ$SÑ!ˆˆx˜ô ˜“Jˆ	Ü8=¸aÀÈNÓ8[Ö\°1�5˜˜1˜~Ñ-Ò.Ð\ˆÐ\Ø Ðàò 	[ˆEÜŸ+™+ eÓ,×/Ñ/°Ó7ˆKØ#Ÿ~™~Ø(Ü—k‘k +×"3Ñ"3°AÑ"6¸ÀFÔKð  .ó  Ðð  ×&Ñ&¤tÐ,<×,CÑ,CÀAÀqÓ,I×,PÑ,PÓ,R×,VÑ,VÓ,XÓ'YÕZð	[ô $Ð$7¸À8ÈT×MbÑMbÐefÑMfÓgˆØ ¢ F Q¨¡U F¨F¨Q°©U¨FÐ!2Ñ3ˆä×&Ñ&Ó(ˆÙ�hÓÐùò ]s   ÄHc                 ó8  ‡ ‡‡— t        j                  «       }‰ j                  j                  Š ||«      j	                  d«      }|j
                  \  }}}}‰ j                  |‰ j                  z  z
  ‰ j                  z  }	‰ j                  |‰ j                  z  z
  ‰ j                  z  }
t        j                  j                  j                  |d|
d|	fd¬«      j                  d«      }ˆˆˆ fd„}t        |‰ j                  «      \  }}} ||||«      }‰ j                  dz  }t        j                  j                  j                  |||||fd¬«      j                  d«      }t        |‰ j                  «      \  }}} ||||«      }|dz  }|d d …|| …|| …f   }|dk(  r“t        ‰ j                  dz  «      }|j
                  dd  }t        ||«      }t        ||«      }||z   }||z  }||z  }|j	                  d«      j!                  d	dd«      }|j	                  d«      j!                  d	dd«      }n,|d
k(  rt        j"                  |«      dz  }|}nt%        d|«      ‚||z  }||z  }||z   }|d d …d |dz  …d |dz  …f   }t        j&                  «       } ||«      S )Nr   r½  rV  c           	      óì  •— t        | «      }t        d|‰«      D �cg c]
  }| ||‰z    ‘Œ }}g }|D ]¢  }t        j                  |«      j	                  ‰
«      }‰j                  |t        j                  |j                  d   d‰
¬«      ¬«      }	|j                  t        |	j                  dd«      j                  «       j                  «       «      «       Œ¤ t        |||‰j                  dz  «      S c c}w )Nr   r
  r^  r¾  r   rŒ   )r'  rÙ   r/   rÄ  r›  rœ  r0   rC   rª   r)  rÅ  rÆ  rÇ  r–  r  )rv  rt  ru  rÎ  r  rÏ  rÐ  rÑ  rÒ  rÓ  rR  rÉ  r4   s             €€€r   Úprocess_tilesz3AuraSR.upscale_4x_overlapped.<locals>.process_tilesu  s  ø€ Ü˜E›
ˆIô ˜q )¨^Ó<öàð �a˜!˜nÑ,Ò-ðˆGð ð #%Ðà ò �Ü#Ÿk™k¨%Ó0×3Ñ3°FÓ;�Ø#'§>¡>Ø!,ÜŸ+™+ k×&7Ñ&7¸Ñ&:¸CÈÔOð $2ó $Ð ð $×*Ñ*ÜÐ)×0Ñ0°°AÓ6×=Ñ=Ó?×CÑCÓEÓFõðô Ø# X¨x¸×9NÑ9NÐQRÑ9Róð ùò!s   œC1r   rŒ   Ú
checkboardr   r�   Úconstantr–   z=weight_type should be either 'gaussian' or 'constant' but got)r
   r¿  rœ  rR  rÀ  rC   r  r/   r   rÁ  rÂ  rÃ  ry  r…  r�  r‰  r   Ú	ones_liker©  rÈ  ) r4   rr  rÉ  Úweight_typerÊ  rË  rÝ   rL   rÅ   rÌ  rÍ  rÚ  Útiles1Ú	h_chunks1Ú	w_chunks1Úresult1r‹  Úimage_tensor_offsetÚtiles2Ú	h_chunks2Ú	w_chunks2Úresult2Ú	offset_4xÚresult2_interiorÚweight_tileÚweight_shapeÚ	weights_1Ú	weights_2Ú
normalizerrÕ  rÖ  rR  s    ` `                            @r   Úupscale_4x_overlappedzAuraSR.upscale_4x_overlapped_  sâ  ú€ ä%×.Ñ.Ó0ÐØ—‘×&Ñ&ˆá'¨Ó.×8Ñ8¸Ó;ˆØ!×'Ñ'‰
ˆˆ1ˆa�ð ×!Ñ! A¨×(=Ñ(=Ñ$=Ñ=Ø×!Ñ!ñ"ˆð ×!Ñ! A¨×(=Ñ(=Ñ$=Ñ=Ø×!Ñ!ñ"ˆô
 —x‘x×*Ñ*×.Ñ.Ø˜1˜e Q¨Ð.°Yð /ó 
ç
‰'�!‹*ð 	ö
	ô. (2°,À×@UÑ@UÓ'VÑ$ˆ�	˜9Ù ¨	°9Ó=ˆð ×&Ñ&¨!Ñ+ˆÜ#Ÿh™h×1Ñ1×5Ñ5°lÀVÈVÐU[Ð]cÐDdÐktÐ5Óu×}Ñ}Ð~ó  AÐä'1Ø ×!6Ñ!6ó(
Ñ$ˆ�	˜9ñ   ¨	°9Ó=ˆð ˜Q‘Jˆ	Ø"¢1 i°°
Ð&:¸IÀyÀjÐ<PÐ#PÑQÐà˜,Ò&Ü5°d×6KÑ6KÈaÑ6OÓPˆKà+×1Ñ1°!°"Ð5ˆLÜ-¨k¸<ÓHˆIÜ& {°LÓAˆIà" YÑ.ˆJØ! JÑ.ˆIØ! JÑ.ˆIà!×+Ñ+¨AÓ.×5Ñ5°a¸¸AÓ>ˆIØ!×+Ñ+¨AÓ.×5Ñ5°a¸¸AÓ>‰IØ˜JÒ&ÜŸ™Ð(8Ó9¸CÑ?ˆIØ!‰IäÐ\Ð^iÓjÐjà˜IÑ%ˆØ" YÑ.ˆð �gÑð 	ð
 š1˜g  A¡˜g w¨¨Q© wÐ.Ñ/ˆä×&Ñ&Ó(ˆÙ�hÓÐr   N)Úcuda)zfal-ai/AuraSRT)r¤   )r¤   rÛ  )rQ   rR   rS   rl  rn  r   r+   Úclassmethodrm  rº  r/   Úno_gradr   r×  rï  r   r   r   r˜  r˜    s‘   „ ñ;˜t C¨ H™~ð ;°só ;ð ñ1 sð 1Ètò 1ó ð1ðf €U‡]�]ƒ_ñ  §¡ð  À%Ç+Á+ò  ó ð ðD €U‡]�]ƒ_ò[ ó ñ[ r   r˜  )r   ra   )rŒ   )rã   ):r‡  r   r   Ú	functoolsr   Útypingr   r   r   r	   r/   Útorchvisionr
   ÚPILr   r   r   r   Útorch.nn.functionalrÁ  rI   Úeinopsr   r   r   Úeinops.layers.torchr   Útorchvision.utilsr   r   ÚModuler    rW   rD   ry   r~   r‚   r†   rˆ   r�   r‘   r›   r¦   r²   rÊ   rÓ   rÕ   rå   ré   rô   rý   r  ry  r…  r‰  r�  r–  r˜  r   r   r   ú<module>rü     sl  ð÷
 Ý ß 0Ó 0ã Ý "Ý ß $Ñ $ß Ð ç ,Ñ ,Ý )Ý (Û òFôe>˜Ÿ	™	ô e>ôPˆR�Y‰Yô òDò%óòò òóôDˆb�i‰iô DôˆB�I‰Iô ô*$�"—)‘)ô $ô, �b—i‘iô  ôD �—	‘	ô  ó8ô�"—)‘)ô ô2˜Ÿ	™	ô ô. "§)¡)ô ô 
X�"—)‘)ô 
Xô�b—i‘iô ô@R�E—H‘H—O‘Oô Rój	%ò#òCò
*ó÷,x ò x r   