Ë
    g^(hòY  ã                   óz   — d dl Z d dlmZ d dlZd dlZd dlmc mZ d dlmZm	Z	 dgZ
 G d„ dej                  «      Zy)é    N)ÚOptional)ÚnnÚTensorÚMultiheadAttentionc                   óŽ  ‡ — e Zd Zej                  Z	 dgZ	 	 	 	 	 	 	 	 	 ddededede	de	de	d	e
e   d
e
e   de	ddfˆ fd„Zd„ Zed„ «       Zej                   j"                  d„ «       Zed„ «       Z	 	 	 	 	 ddededede
e   de	de
e   de	de	deee
e   f   fd„Z	 	 	 	 	 ddededede
e   de	de
e   de	de	deee
e   f   fd„Zˆ xZS )r   Úbatch_firstNÚ	embed_dimÚ	num_headsÚdropoutÚbiasÚadd_bias_kvÚadd_zero_attnÚkdimÚvdimÚreturnc                 ó   •— |
|dœ}t        ‰| �  |||||||||	f	i |¤Ž t        j                  | j                  | j                  fd|i|¤Ž| _        t        j                  | j                  | j                  fd|i|¤Ž| _        t        j                  | j                  | j                  fd|i|¤Ž| _	        t        j                  | j                  | j                  fd|i|¤Ž| _
        t        j                  j                  j                  j                  «       | _        t        j                  j                   j#                  «       | _        t        j                  j                   j#                  «       | _        t        j                  j                   j)                  «       | _        t        j                  j                   j)                  «       | _        t        j                  j                   j)                  «       | _        y )N)ÚdeviceÚdtyper   )ÚsuperÚ__init__r   ÚLinearr	   Úlinear_Qr   Úlinear_Kr   Úlinear_VÚout_projÚtorchÚaoÚ	quantizedÚFloatFunctionalÚq_scaling_productÚquantizationÚ	QuantStubÚquant_attn_outputÚquant_attn_output_weightsÚDeQuantStubÚ	dequant_qÚ	dequant_kÚ	dequant_v)Úselfr	   r
   r   r   r   r   r   r   r   r   r   Úfactory_kwargsÚ	__class__s                €úh/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/ao/nn/quantizable/modules/activation.pyr   zMultiheadAttention.__init__>   s›  ø€ ð %+°UÑ;ˆÜ‰ÑØØØØØØØØØñ	
ð ò	
ô Ÿ	™	Ø�N‰N˜DŸN™Nñ
Ø15ð
Ø9Gñ
ˆŒô Ÿ	™	Ø�I‰I�t—~‘~ñ
Ø,0ð
Ø4Bñ
ˆŒô Ÿ	™	Ø�I‰I�t—~‘~ñ
Ø,0ð
Ø4Bñ
ˆŒô Ÿ	™	 $§.¡.°$·.±.Ñ^ÀtÐ^È~Ñ^ˆŒô "'§¡§¡×!6Ñ!6×!FÑ!FÓ!HˆÔô "'§¡×!6Ñ!6×!@Ñ!@Ó!BˆÔÜ).¯©×)>Ñ)>×)HÑ)HÓ)JˆÔ&ÜŸ™×.Ñ.×:Ñ:Ó<ˆŒÜŸ™×.Ñ.×:Ñ:Ó<ˆŒÜŸ™×.Ñ.×:Ñ:Ó<ˆ�ó    c                  ó   — y)NÚQuantizableMultiheadAttention© )r)   s    r,   Ú	_get_namezMultiheadAttention._get_namep   s   € Ø.r-   c                 óÄ	  — t        |«      | j                  k(  sJ ‚t        |d«      sJ d«       ‚ | |j                  |j                  |j
                  |j                  d u|j                  d u|j                  |j                  |j                  |j                  «	      }|j                  |_        |j                  |_        |j                  |_        |j                  j                  |j                  _        |j                  j                   |j                  _        |j"                  �rô|j                  }d}||j                  z   }|j$                  ||…d d …f   }|�-t&        j(                  j+                  ||| |j,                  «      }t&        j(                  j+                  ||j,                  «      |j.                  _        ||j.                  _        |j                  }|}||j                  z   }|j$                  ||…d d …f   }|�-t&        j(                  j+                  ||| |j,                  «      }t&        j(                  j+                  ||j,                  «      |j0                  _        ||j0                  _        |j                  }|}|j$                  |d …d d …f   }|�-t&        j(                  j+                  ||d  |j,                  «      }t&        j(                  j+                  ||j,                  «      |j2                  _        ||j2                  _        �n‹t)        j*                  |j4                  «      |j.                  _        t)        j*                  |j6                  «      |j0                  _        t)        j*                  |j8                  «      |j2                  _        |j                  €4d |j.                  _        d |j0                  _        d |j2                  _        nÁt)        j*                  |j                  d|j                   «      |j.                  _        t)        j*                  |j                  |j                  |j                  dz   «      |j0                  _        t)        j*                  |j                  |j                  dz  d  «      |j2                  _        |j;                  «        t&        j<                  j>                  jA                  |d¬«      }|S )NÚqconfigz$The float module must have 'qconfig'r   é   T)Úinplace)!ÚtypeÚ_FLOAT_MODULEÚhasattrr	   r
   r   Úin_proj_biasÚbias_kr   r   r   r   Úbias_vr3   r   Úweightr   Ú_qkv_same_embed_dimÚin_proj_weightr   r   Ú	ParameterÚrequires_gradr   r   r   Úq_proj_weightÚk_proj_weightÚv_proj_weightÚevalr   r!   Úprepare)ÚclsÚotherÚobservedr   Ú_startÚ_endr<   s          r,   Ú
from_floatzMultiheadAttention.from_floats   sÝ  € ä�E‹{˜c×/Ñ/Ò/Ð/Ð/Ü�u˜iÔ(ÐPÐ*PÓPÐ(áØ�O‰OØ�O‰OØ�M‰MØ×Ñ tÐ+Ø�\‰\ Ð%Ø×ÑØ�J‰JØ�J‰JØ×Ñó

ˆð  Ÿ,™,ˆŒØŸ,™,ˆŒØ Ÿ=™=ˆÔð $)§>¡>×#8Ñ#8ˆ×ÑÔ Ø!&§¡×!4Ñ!4ˆ×ÑÔØ×$Ó$à×%Ñ%ˆDØˆFØ˜EŸO™OÑ+ˆDØ×)Ñ)¨&°¨+²q¨.Ñ9ˆFØÐÜ—x‘x×)Ñ)¨$¨v°dÐ*;¸T×=OÑ=OÓP�Ü',§x¡x×'9Ñ'9¸&À&×BVÑBVÓ'WˆH×ÑÔ$Ø%)ˆH×ÑÔ"à×%Ñ%ˆDØˆFØ˜EŸO™OÑ+ˆDØ×)Ñ)¨&°¨+²q¨.Ñ9ˆFØÐÜ—x‘x×)Ñ)¨$¨v°dÐ*;¸T×=OÑ=OÓP�Ü',§x¡x×'9Ñ'9¸&À&×BVÑBVÓ'WˆH×ÑÔ$Ø%)ˆH×ÑÔ"à×%Ñ%ˆDØˆFØ×)Ñ)¨&©'²1¨*Ñ5ˆFØÐÜ—x‘x×)Ñ)¨$¨v¨w¨-¸×9KÑ9KÓL�Ü',§x¡x×'9Ñ'9¸&À&×BVÑBVÓ'WˆH×ÑÔ$Ø%)ˆH×ÑÖ"ä')§|¡|°E×4GÑ4GÓ'HˆH×ÑÔ$Ü')§|¡|°E×4GÑ4GÓ'HˆH×ÑÔ$Ü')§|¡|°E×4GÑ4GÓ'HˆH×ÑÔ$Ø×!Ñ!Ð)Ø)-�×!Ñ!Ô&Ø)-�×!Ñ!Ô&Ø)-�×!Ñ!Õ&ä)+¯©Ø×&Ñ& q¨5¯?©?Ð;ó*�×!Ñ!Ô&ô *,¯©Ø×&Ñ& u§¡¸%¿/¹/ÈAÑ:MÐOó*�×!Ñ!Ô&ô *,¯©Ø×&Ñ&¨¯©¸!Ñ(;Ð'>Ð?ó*�×!Ñ!Ô&ð 	�‰Œä—8‘8×(Ñ(×0Ñ0°À4Ð0ÓHˆØˆr-   c                 óô  — | j                  | j                  | j                  | j                  | j                  j                  «       d   du| j                  du| j                  | j                  | j                  | j                  «	      }|j                  | j                  k(  sJ ‚| j                  �2t        j                  | j                  j                  «       «      |_        | j                  �2t        j                  | j                  j                  «       «      |_        | j                   j                  «       \  }}t        j                  |j                  «       «      |j                   _        |�$t        j                  |«      |j                   _        | j                  j                  «       \  }}|j                  «       }| j&                  j                  «       \  }}|j                  «       }| j(                  j                  «       \  }}	|j                  «       }|j                  ræd}
|
|j                  z   }||j*                  |
|…dd…f<   |j,                  �t/        |dk(  «      sJ ‚||j,                  |
| |}
|
|j                  z   }||j*                  |
|…dd…f<   |j,                  �t/        |dk(  «      sJ ‚||j,                  |
| |}
||j*                  |
d…dd…f<   |j,                  �t/        |	dk(  «      sJ ‚|	|j,                  |
d |S t        j                  |«      |_        t        j                  |«      |_        t        j                  |«      |_        |j,                  €5d| j                  _        d| j&                  _        d| j(                  _        |S ||j,                  d|j                   ||j,                  |j                  |j                  dz   |	|j,                  |j                  dz  d |S )zçUtility to convert the quantized MHA back to float.

        The motivation for this is that it is not trivial to convert the weights
        from the format that is used in the quantized version back to the
        float.
        é   Nr   r4   )r7   r	   r
   r   r   Ú_weight_biasr:   r   r   r   r   r=   r   r?   Ú
dequantizer;   r   r<   r   r   r   r>   r9   ÚallrA   rB   rC   )r)   ÚfpÚwÚbÚwQÚbQÚwKÚbKÚwVÚbVrI   rJ   s               r,   rO   zMultiheadAttention.dequantize½   sC  € ð ×ÑØ�N‰NØ�N‰NØ�L‰LØ�]‰]×'Ñ'Ó)¨!Ñ,°DÐ8Ø�[‰[ Ð$Ø×ÑØ�I‰IØ�I‰IØ×Ñó

ˆð ×%Ñ%¨×)AÑ)AÒAÐAÐAØ�;‰;Ð"ÜŸ™ T§[¡[×%;Ñ%;Ó%=Ó>ˆBŒIØ�;‰;Ð"ÜŸ™ T§[¡[×%;Ñ%;Ó%=Ó>ˆBŒIð �}‰}×)Ñ)Ó+‰ˆˆ1ÜŸ\™\¨!¯,©,«.Ó9ˆ�‰ÔØˆ=Ü!Ÿ|™|¨A›ˆB�K‰KÔà—‘×+Ñ+Ó-‰ˆˆBØ�]‰]‹_ˆØ—‘×+Ñ+Ó-‰ˆˆBØ�]‰]‹_ˆØ—‘×+Ñ+Ó-‰ˆˆBØ�]‰]‹_ˆØ×!Ò!àˆFØ˜BŸL™LÑ(ˆDØ02ˆB×Ñ˜f T˜kª1˜nÑ-Ø�‰Ð*Ü˜2 ™7”|Ð#�|Ø/1�—‘  tÐ,àˆFØ˜BŸL™LÑ(ˆDØ02ˆB×Ñ˜f T˜kª1˜nÑ-Ø�‰Ð*Ü˜2 ™7”|Ð#�|Ø/1�—‘  tÐ,àˆFØ,.ˆB×Ñ˜f™g¢q˜jÑ)Ø�‰Ð*Ü˜2 ™7”|Ð#�|Ø+-�—‘  Ð(ð ˆ	ô  "Ÿ|™|¨BÓ/ˆBÔÜ!Ÿ|™|¨BÓ/ˆBÔÜ!Ÿ|™|¨BÓ/ˆBÔØ�‰Ð&Ø%)�—‘Ô"Ø%)�—‘Ô"Ø%)�—‘Ô"ð ˆ	ð	 57�—‘  B§L¡LÐ1ØEG�—‘ §¡°·±¸qÑ0@ÐBØ8:�—‘ §¡°Ñ!1Ð 4Ð5àˆ	r-   c                 ó   — t        d«      ‚)NzdIt looks like you are trying to prepare an MHA module. Please, see the examples on quantizable MHAs.)ÚNotImplementedError)rF   rG   s     r,   Úfrom_observedz MultiheadAttention.from_observed	  s   € ô
 "ð0ó
ð 	
r-   ÚqueryÚkeyÚvalueÚkey_padding_maskÚneed_weightsÚ	attn_maskÚaverage_attn_weightsÚ	is_causalc	           
      ó2   — | j                  ||||||||«      S )aj  
        Note::
            Please, refer to :func:`~torch.nn.MultiheadAttention.forward` for more
            information

        Args:
            query, key, value: map a query and a set of key-value pairs to an output.
                See "Attention Is All You Need" for more details.
            key_padding_mask: if provided, specified padding elements in the key will
                be ignored by the attention. When given a binary mask and a value is True,
                the corresponding value on the attention layer will be ignored.
            need_weights: output attn_output_weights.
            attn_mask: 2D or 3D mask that prevents attention to certain positions. A 2D mask will be broadcasted for all
                the batches while a 3D mask allows to specify a different mask for the entries of each batch.

        Shape:
            - Inputs:
            - query: :math:`(L, N, E)` where L is the target sequence length, N is the batch size, E is
              the embedding dimension. :math:`(N, L, E)` if ``batch_first`` is ``True``.
            - key: :math:`(S, N, E)`, where S is the source sequence length, N is the batch size, E is
              the embedding dimension. :math:`(N, S, E)` if ``batch_first`` is ``True``.
            - value: :math:`(S, N, E)` where S is the source sequence length, N is the batch size, E is
              the embedding dimension. :math:`(N, S, E)` if ``batch_first`` is ``True``.
            - key_padding_mask: :math:`(N, S)` where N is the batch size, S is the source sequence length.
              If a BoolTensor is provided, the positions with the
              value of ``True`` will be ignored while the position with the value of ``False`` will be unchanged.
            - attn_mask: 2D mask :math:`(L, S)` where L is the target sequence length, S is the source sequence length.
              3D mask :math:`(N*num_heads, L, S)` where N is the batch size, L is the target sequence length,
              S is the source sequence length. attn_mask ensure that position i is allowed to attend the unmasked
              positions. If a BoolTensor is provided, positions with ``True``
              is not allowed to attend while ``False`` values will be unchanged. If a FloatTensor
              is provided, it will be added to the attention weight.
            - is_causal: If specified, applies a causal mask as attention mask. Mutually exclusive with providing attn_mask.
              Default: ``False``.
            - average_attn_weights: If true, indicates that the returned ``attn_weights`` should be averaged across
              heads. Otherwise, ``attn_weights`` are provided separately per head. Note that this flag only has an
              effect when ``need_weights=True.``. Default: True (i.e. average weights across heads)

            - Outputs:
            - attn_output: :math:`(L, N, E)` where L is the target sequence length, N is the batch size,
              E is the embedding dimension. :math:`(N, L, E)` if ``batch_first`` is ``True``.
            - attn_output_weights: If ``average_attn_weights=True``, returns attention weights averaged
              across heads of shape :math:`(N, L, S)`, where N is the batch size, L is the target sequence length,
              S is the source sequence length. If ``average_attn_weights=False``, returns attention weights per
              head of shape :math:`(N, num_heads, L, S)`.
        )Ú_forward_impl)	r)   r]   r^   r_   r`   ra   rb   rc   rd   s	            r,   ÚforwardzMultiheadAttention.forward  s0   € ðr ×!Ñ!ØØØØØØØ Øó	
ð 		
r-   c	                 ó2  — d }	d }
|�|rt        d«      ‚|rt        d«      ‚| j                  rd„ |||fD «       \  }}}|j                  «       \  }}}| j                  |k(  sJ ‚|j                  d«      |j                  d«      k(  r#|j                  d«      |j                  d«      k(  sJ ‚| j                  | j                  z  }|| j                  z  | j                  k(  sJ d«       ‚t        |«      dz  }| j                  |«      }| j                  |«      }| j                  |«      }| j                  j                  ||«      }|��…|j                  t        j                  k(  r6t        j                  dd	¬
«       |j!                  t        j"                  «      }|j%                  «       s1|j                  t        j"                  k(  sJ d|j                  › �«       ‚|j'                  «       dk(  rY|j)                  d«      }t+        |j                  «       «      d|j                  d«      |j                  d«      gk7  r�t-        d«      ‚|j'                  «       d	k(  rUt+        |j                  «       «      || j                  z  |j                  d«      |j                  d«      gk7  r(t-        d«      ‚t-        d|j'                  «       › d�«      ‚|�S|j                  t        j                  k(  r6t        j                  dd	¬
«       |j!                  t        j"                  «      }| j.                  �Ã| j0                  �·|	€£|
€¡| j.                  }|€J ‚| j0                  }|€J ‚t        j2                  ||j5                  d|d«      g«      }t        j2                  ||j5                  d|d«      g«      }|�t7        j8                  |d«      }|�Et7        j8                  |d«      }n.|	�J d«       ‚|
�#J d«       ‚| j.                  �J ‚| j0                  �J ‚|j;                  «       j=                  ||| j                  z  |«      j?                  dd«      }|�>|j;                  «       j=                  d|| j                  z  |«      j?                  dd«      }|�>|j;                  «       j=                  d|| j                  z  |«      j?                  dd«      }|	�;|	j                  d«      || j                  z  k(  sJ ‚|	j                  d«      |k(  sJ ‚|	}|
�;|
j                  d«      || j                  z  k(  sJ ‚|
j                  d«      |k(  sJ ‚|
}|j                  d«      }|�,|j                  d«      |k(  sJ ‚|j                  d«      |k(  sJ ‚| j@                  �ro|dz  }t        jB                  |j                  d«      df|j                  «       dd  z   «      }|jD                  r>t        jF                  ||jI                  «       |jK                  «       |j                  «      }t        j2                  ||gd¬«      }t        jB                  |j                  d«      df|j                  «       dd  z   «      }|jD                  r>t        jF                  ||jI                  «       |jK                  «       |j                  «      }t        j2                  ||gd¬«      }|�t7        j8                  |d«      }|�t7        j8                  |d«      }| jM                  |«      }| jO                  |«      }| jQ                  |«      }t        jR                  ||j?                  dd«      «      }t+        |j                  «       «      || j                  z  ||gk(  sJ ‚|�>|j                  t        j"                  k(  r|jU                  |t        d«      «       n||z  }|�w|j=                  || j                  ||«      }|jW                  |j)                  d«      j)                  d«      t        d«      «      }|j=                  || j                  z  ||«      }t7        jX                  |d¬«      }t7        jZ                  || jZ                  | j\                  ¬«      }t        jR                  ||«      }t+        |j                  «       «      || j                  z  ||gk(  sJ ‚| j                  r|j=                  ||| j                  «      }n;|j?                  dd«      j;                  «       j=                  ||| j                  «      }| j_                  |«      }| ja                  |«      }| jc                  |«      }|r6|j=                  || j                  ||«      }|r|je                  d¬«      }||fS |d fS )Nz#Only allow causal mask or attn_maskz*causal mask not supported by AO MHA modulec              3   ó@   K  — | ]  }|j                  d d«      –— Œ y­w)r   rM   N)Ú	transpose)Ú.0Úxs     r,   ú	<genexpr>z3MultiheadAttention._forward_impl.<locals>.<genexpr>r  s   è ø€ Ò P°q §¡¨Q°×!2Ñ Pùs   ‚r   rM   z(embed_dim must be divisible by num_headsg      à¿z^Byte tensor for `attn_mask` in `nn.MultiheadAttention` is deprecated. Use bool tensor instead.é   )Ú
stacklevelz;Only float and bool types are supported for attn_mask, not r4   z,The size of the 2D attn_mask is not correct.z,The size of the 3D attn_mask is not correct.zattn_mask's dimension z is not supportedzeByte tensor for `key_padding_mask` in `nn.MultiheadAttention` is deprecated. Use bool tensor instead.)r   rM   z#bias cannot be added to static key.z%bias cannot be added to static value.éÿÿÿÿ)Údimz-inf)ÚpÚtraining)3ÚAssertionErrorr   Úsizer	   r
   Úfloatr   r   r   r    Ú
mul_scalarr   r   Úuint8ÚwarningsÚwarnÚtoÚboolÚis_floating_pointrq   Ú	unsqueezeÚlistÚRuntimeErrorr:   r;   ÚcatÚrepeatÚFÚpadÚ
contiguousÚviewrj   r   ÚzerosÚis_quantizedÚquantize_per_tensorÚq_scaleÚq_zero_pointr&   r'   r(   ÚbmmÚmasked_fill_Úmasked_fillÚsoftmaxr   rs   r#   r   r$   Úmean)r)   r]   r^   r_   r`   ra   rb   rc   rd   Ústatic_kÚstatic_vÚtgt_lenÚbszÚembed_dim_to_checkÚhead_dimÚscalingÚqÚkÚvr:   r;   Úsrc_lenÚk_zerosÚv_zerosÚattn_output_weightsÚattn_outputs                             r,   rf   z MultiheadAttention._forward_implX  s¾  € ð  ˆØˆàÐ ¡YÜ Ð!FÓGÐGáÜ Ð!MÓNÐNà×ÒÙ P¸UÀCÈÐ<OÔ PÑˆE�3˜à+0¯:©:«<Ñ(ˆ�Ð(Ø�~‰~Ð!3Ò3Ð3Ð3à�x‰x˜‹{˜eŸj™j¨›mÒ+°·±¸³¸u¿z¹zÈ!»}Ò0LÐLÐLà—>‘> T§^¡^Ñ3ˆà�t—~‘~Ñ%¨¯©Ò7ð	6à5ó	6Ø7ä˜“/ TÑ)ˆà�M‰M˜%Ó ˆØ�M‰M˜#ÓˆØ�M‰M˜%Ó ˆà×"Ñ"×-Ñ-¨a°Ó9ˆàÑ Ø�‰¤%§+¡+Ò-Ü—‘ð/à õð
 &ŸL™L¬¯©Ó4�	à×+Ñ+Ô-°·±ÄEÇJÁJÒ1Nð_àLÈYÏ_É_ÐL]Ð^ó_ØNð �}‰}‹ !Ò#Ø%×/Ñ/°Ó2�	Ü˜	Ÿ™Ó(Ó)¨a°·±¸A³ÀÇÁÈÃÐ-LÒLÜ&Ð'UÓVÐVØ—‘“ AÒ%Ü˜	Ÿ™Ó(Ó)Ø˜$Ÿ.™.Ñ(Ø—J‘J˜q“MØ—H‘H˜Q“Kð.ò ô
 'Ð'UÓVÐVä"Ø,¨Y¯]©]«_Ð,=Ð=NÐOóð ð Ð'Ð,<×,BÑ,BÄeÇkÁkÒ,QÜ�M‰Mð+àõð
  0×2Ñ2´5·:±:Ó>ÐØ�;‰;Ð" t§{¡{Ð'>ØÐ HÐ$4ð Ÿ™�ØÐ)Ð)Ð)ØŸ™�ØÐ)Ð)Ð)ä—I‘I˜q &§-¡-°°3¸Ó":Ð;Ó<�Ü—I‘I˜q &§-¡-°°3¸Ó":Ð;Ó<�ØÐ(Ü !§¡ i°Ó 8�IØ#Ð/Ü'(§u¡uÐ-=¸vÓ'FÑ$àÐ'ÐNÐ)NÓNÐ'ØÐ'ÐPÐ)PÓPÐ'à—;‘;Ð&Ð&Ð&Ø—;‘;Ð&Ð&Ð&à�L‰L‹N×Ñ ¨¨t¯~©~Ñ)=¸xÓH×RÑRÐSTÐVWÓXˆØˆ=Ø—‘“×#Ñ# B¨¨d¯n©nÑ(<¸hÓG×QÑQÐRSÐUVÓWˆAØˆ=Ø—‘“×#Ñ# B¨¨d¯n©nÑ(<¸hÓG×QÑQÐRSÐUVÓWˆAàÐØ—=‘= Ó# s¨T¯^©^Ñ';Ò;Ð;Ð;Ø—=‘= Ó# xÒ/Ð/Ð/ØˆAàÐØ—=‘= Ó# s¨T¯^©^Ñ';Ò;Ð;Ð;Ø—=‘= Ó# xÒ/Ð/Ð/ØˆAà—&‘&˜“)ˆàÐ'Ø#×(Ñ(¨Ó+¨sÒ2Ð2Ð2Ø#×(Ñ(¨Ó+¨wÒ6Ð6Ð6à×ÓØ�q‰LˆGÜ—k‘k 1§6¡6¨!£9¨a .°1·6±6³8¸A¸B°<Ñ"?Ó@ˆGØ�~Š~Ü×3Ñ3Ø˜QŸY™Y›[¨!¯.©.Ó*:¸A¿G¹Gó�ô —	‘	˜1˜g˜,¨AÔ.ˆAÜ—k‘k 1§6¡6¨!£9¨a .°1·6±6³8¸A¸B°<Ñ"?Ó@ˆGØ�~Š~Ü×3Ñ3Ø˜QŸY™Y›[¨!¯.©.Ó*:¸A¿G¹Gó�ô —	‘	˜1˜g˜,¨AÔ.ˆAàÐ$ÜŸE™E )¨VÓ4�	ØÐ+Ü#$§5¡5Ð)9¸6Ó#BÐ ð �N‰N˜1ÓˆØ�N‰N˜1ÓˆØ�N‰N˜1ÓˆÜ#Ÿi™i¨¨1¯;©;°q¸!Ó+<Ó=ÐÜÐ'×,Ñ,Ó.Ó/Ø�$—.‘.Ñ ØØð4
ò 
ð 	
ð 
ð Ð Ø�‰¤%§*¡*Ò,Ø#×0Ñ0°¼EÀ&»MÕJà# yÑ0Ð#àÐ'Ø"5×":Ñ":Ø�T—^‘^ W¨gó#Ðð #6×"AÑ"AØ ×*Ñ*¨1Ó-×7Ñ7¸Ó:Ü�f“ó#Ðð #6×":Ñ":Ø�d—n‘nÑ$ g¨wó#Ðô  Ÿi™iÐ(;ÀÔDÐÜŸi™iØ 4§<¡<¸$¿-¹-ô
Ðô —i‘iÐ 3°QÓ7ˆÜ�K×$Ñ$Ó&Ó'¨C°$·.±.Ñ,@À'È8Ð+TÒTÐTÐTØ×ÒØ%×*Ñ*¨3°¸¿¹ÓH‰Kð ×%Ñ% a¨Ó+ß‘“ß‘�g˜s D§N¡NÓ3ð ð ×,Ñ,¨[Ó9ˆà—m‘m KÓ0ˆØ"×<Ñ<Ð=PÓQÐáà"5×":Ñ":Ø�T—^‘^ W¨gó#Ðñ $Ø&9×&>Ñ&>À1Ð&>Ó&EÐ#ØÐ 3Ð3Ð3à Ð$Ð$r-   )	g        TFFNNFNN)NTNTF)Ú__name__Ú
__module__Ú__qualname__r   r   r7   Ú__constants__Úintrv   r|   r   r   r1   ÚclassmethodrK   r   ÚjitÚunusedrO   r\   r   Útuplerg   rf   Ú__classcell__)r+   s   @r,   r   r      s  ø„ Ø×)Ñ)€Mð*ðV #�O€Mð ØØ!Ø#Ø"Ø"Ø!ØØñ0=àð0=ð ð0=ð ð	0=ð
 ð0=ð ð0=ð ð0=ð �s‰mð0=ð �s‰mð0=ð ð0=ð 
õ0=òd/ð ñGó ðGðR ‡Y�Y×ÑñIó ðIðV ñ
ó ð
ð .2Ø!Ø&*Ø%)ØñB
àðB
ð ðB
ð ð	B
ð
 # 6Ñ*ðB
ð ðB
ð ˜FÑ#ðB
ð #ðB
ð ðB
ð 
ˆv�x Ñ'Ð'Ñ	(óB
ðR .2Ø!Ø&*Ø%)ØñN%àðN%ð ðN%ð ð	N%ð
 # 6Ñ*ðN%ð ðN%ð ˜FÑ#ðN%ð #ðN%ð ðN%ð 
ˆv�x Ñ'Ð'Ñ	(÷N%r-   )ry   Útypingr   r   Ú	torch.jitÚtorch.nn.functionalr   Ú
functionalrƒ   r   Ú__all__r   r0   r-   r,   ú<module>r¯      s8   ðã Ý ã Û ß Ð ß ð  Ð
 €ôX%˜×.Ñ.õ X%r-   