Ë
    È:jå-  ã                   óV  — d dl Z d dlZd dl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Zd dlmc mZ d dlmZmZ ddlmZ ddlmZ dd	lmZ 	 d d
lmZ dZe G d„ d«      «       Z G d„ dej@                  «      Z  G d„ dejB                  «      Z! G d„ dejD                  «      Z"d!d„Z#ed„ «       Z$ G d„ dejJ                  «      Z& G d„ dejJ                  «      Z' G d„ dejJ                  «      Z( G d„ dejJ                  «      Z) G d„ d ejJ                  «      Z*y# eeef$ r dZdZY ŒÒw xY w)"é    N)Úcontextmanager)Ú	dataclass)ÚDictÚIterableÚOptionalÚTuple)ÚTensorÚnné   )Údecode)Údetect_language)Ú
transcribe)Úscaled_dot_product_attentionTFc                   ór   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   eed
<   y)ÚModelDimensionsÚn_melsÚn_audio_ctxÚn_audio_stateÚn_audio_headÚn_audio_layerÚn_vocabÚ
n_text_ctxÚn_text_stateÚn_text_headÚn_text_layerN)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__© ó    úb/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/whisper/model.pyr   r      s;   … àƒKØÓØÓØÓØÓØƒLØƒOØÓØÓØÔr"   r   c                   ó(   ‡ — e Zd Zdedefˆ fd„Zˆ xZS )Ú	LayerNormÚxÚreturnc                 óp   •— t         ‰| �  |j                  «       «      j                  |j                  «      S ©N)ÚsuperÚforwardÚfloatÚtypeÚdtype)Úselfr&   Ú	__class__s     €r#   r+   zLayerNorm.forward(   s'   ø€ Ü‰w‰˜qŸw™w›yÓ)×.Ñ.¨q¯w©wÓ7Ð7r"   )r   r   r   r	   r+   Ú__classcell__©r0   s   @r#   r%   r%   '   s   ø„ ð8˜ð 8 F÷ 8ñ 8r"   r%   c                   ó   — e Zd Zdedefd„Zy)ÚLinearr&   r'   c                 óà   — t        j                  || j                  j                  |j                  «      | j
                  €d «      S | j
                  j                  |j                  «      «      S r)   )ÚFÚlinearÚweightÚtor.   Úbias)r/   r&   s     r#   r+   zLinear.forward-   sV   € Ü�x‰xØØ�K‰K�N‰N˜1Ÿ7™7Ó#Ø—I‘IÐ%ˆDó
ð 	
ð ,0¯9©9¯<©<¸¿¹Ó+@ó
ð 	
r"   N)r   r   r   r	   r+   r!   r"   r#   r4   r4   ,   s   „ ð
˜ð 
 Fô 
r"   r4   c                   ó6   ‡ — e Zd Zdededee   defˆ fd„Zˆ xZS )ÚConv1dr&   r8   r:   r'   c                 óš   •— t         ‰| �  ||j                  |j                  «      |€d «      S |j                  |j                  «      «      S r)   )r*   Ú_conv_forwardr9   r.   )r/   r&   r8   r:   r0   s       €r#   r>   zConv1d._conv_forward6   sI   ø€ ô ‰wÑ$Øˆv�y‰y˜Ÿ™Ó!¨4¨< 4ó
ð 	
Ø=A¿W¹WÀQÇWÁWÓ=Mó
ð 	
r"   )r   r   r   r	   r   r>   r1   r2   s   @r#   r<   r<   5   s2   ø„ ð
Øð
Ø!'ð
Ø/7¸Ñ/?ð
à	÷
ñ 
r"   r<   c                 ó²  — |dz  dk(  sJ ‚t        j                  |«      |dz  dz
  z  }t        j                  | t        j                  |dz  «      z  «      }t        j                  | «      dd…t         j
                  f   |t         j
                  dd…f   z  }t        j                  t        j                  |«      t        j                  |«      gd¬«      S )z*Returns sinusoids for positional embeddingé   r   r   N©Údim)	ÚnpÚlogÚtorchÚexpÚarangeÚnewaxisÚcatÚsinÚcos)ÚlengthÚchannelsÚmax_timescaleÚlog_timescale_incrementÚinv_timescalesÚscaled_times         r#   Ú	sinusoidsrR   >   s¬   € à�a‰<˜1ÒÐÐÜ Ÿf™f ]Ó3°xÀ1±}ÀqÑ7HÑIÐÜ—Y‘YÐ 7Ð7¼%¿,¹,ÀxÐSTÁ}Ó:UÑUÓV€NÜ—,‘,˜vÓ&¢q¬"¯*©* }Ñ5¸ÄrÇzÁzÒSTÀ}Ñ8UÑU€KÜ�9‰9”e—i‘i Ó,¬e¯i©i¸Ó.DÐEÈ1ÔMÐMr"   c               #   ó‚   K  — t         j                  } 	 dt         _        d –— | t         _        y # | t         _        w xY w­w)NF)ÚMultiHeadAttentionÚuse_sdpa)Ú
prev_states    r#   Údisable_sdparW   G   s4   è ø€ ä#×,Ñ,€Jð1Ø&+ÔÔ#Ûà&0ÔÕ#ø jÔÕ#üs   ‚?”/ £?¯<¼?c                   ó¼   ‡ — e Zd ZdZdedefˆ fd„Z	 	 	 ddedee   dee   dee   fd	„Z		 dd
edededee   de
ej                  eej                     f   f
d„Zˆ xZS )rT   TÚn_stateÚn_headc                 ó¼   •— t         ‰| �  «        || _        t        ||«      | _        t        ||d¬«      | _        t        ||«      | _        t        ||«      | _        y )NF)r:   )r*   Ú__init__rZ   r4   ÚqueryÚkeyÚvalueÚout)r/   rY   rZ   r0   s      €r#   r\   zMultiHeadAttention.__init__T   sO   ø€ Ü‰ÑÔØˆŒÜ˜G WÓ-ˆŒ
Ü˜' 7°Ô7ˆŒÜ˜G WÓ-ˆŒ
Ü˜' 7Ó+ˆ�r"   r&   ÚxaÚmaskÚkv_cachec                 ó.  — | j                  |«      }|�|�| j                  |vr+| j                  |€|n|«      }| j                  |€|n|«      }n|| j                     }|| j                     }| j                  ||||«      \  }}	| j	                  |«      |	fS r)   )r]   r^   r_   Úqkv_attentionr`   )
r/   r&   ra   rb   rc   ÚqÚkÚvÚwvÚqks
             r#   r+   zMultiHeadAttention.forward\   s›   € ð �J‰J�q‹MˆàÐ˜r˜z¨T¯X©X¸XÑ-Eð —‘˜b˜j™¨bÓ1ˆAØ—
‘
  
™1°Ó3‰Að ˜Ÿ™Ñ"ˆAØ˜Ÿ™Ñ$ˆAà×#Ñ# A q¨!¨TÓ2‰ˆˆBØ�x‰x˜‹|˜RÐÐr"   rf   rg   rh   r'   c                 ó¼  — |j                   \  }}}|| j                  z  dz  } |j                  g |j                   d d ¢| j                  ‘d‘­Ž j                  dddd«      } |j                  g |j                   d d ¢| j                  ‘d‘­Ž j                  dddd«      } |j                  g |j                   d d ¢| j                  ‘d‘­Ž j                  dddd«      }t        rRt
        j                  rBt        ||||d uxr |dkD  ¬«      }	|	j                  dddd«      j                  d¬«      }
d }|
|fS ||z  ||z  j                  dd	«      z  }|�||d |…d |…f   z   }|j                  «       }t        j                  |d¬
«      j                  |j                  «      }||z  j                  dddd«      j                  d¬«      }
|j                  «       }|
|fS )Ng      Ð¿r@   éÿÿÿÿr   r   é   )Ú	is_causal)Ú	start_diméþÿÿÿrA   )ÚshaperZ   ÚviewÚpermuteÚSDPA_AVAILABLErT   rU   r   ÚflattenÚ	transposer,   r6   Úsoftmaxr9   r.   Údetach)r/   rf   rg   rh   rb   Ún_batchÚn_ctxrY   ÚscaleÚar`   rj   Úws                r#   re   z MultiHeadAttention.qkv_attentionr   sâ  € ð #$§'¡'Ñˆ�˜Ø˜DŸK™KÑ'¨EÑ1ˆØˆA�F‰FÐ1�A—G‘G˜B˜Q�KÐ1 §¡Ð1¨bÒ1×9Ñ9¸!¸QÀÀ1ÓEˆØˆA�F‰FÐ1�A—G‘G˜B˜Q�KÐ1 §¡Ð1¨bÒ1×9Ñ9¸!¸QÀÀ1ÓEˆØˆA�F‰FÐ1�A—G‘G˜B˜Q�KÐ1 §¡Ð1¨bÒ1×9Ñ9¸!¸QÀÀ1ÓEˆåÔ0×9Ò9Ü,Ø�1�a 4¨tÐ#3Ò#A¸À¹	ôˆAð —)‘)˜A˜q ! QÓ'×/Ñ/¸!Ð/Ó<ˆCØˆBð �Bˆwˆð �e‘)  E¡	×4Ñ4°R¸Ó<Ñ<ˆBØÐØ˜$˜v ˜v v¨ v˜~Ñ.Ñ.�Ø—‘“ˆBä—	‘	˜" "Ô%×(Ñ(¨¯©Ó1ˆAØ�q‘5—/‘/ ! Q¨¨1Ó-×5Ñ5ÀÐ5ÓBˆCØ—‘“ˆBà�Bˆwˆr"   ©NNNr)   )r   r   r   rU   r   r\   r	   r   Údictr+   r   rE   re   r1   r2   s   @r#   rT   rT   Q   s¯   ø„ Ø€Hð, ð ,¨Sõ ,ð  $Ø!%Ø#'ñ àð ð �VÑð ð �vÑð	 ð
 ˜4‘.ó ð. IMñØðØ"ðØ'-ðØ5=¸fÑ5Eðà	ˆu�|‰|˜X e§l¡lÑ3Ð3Ñ	4÷r"   rT   c            
       ó`   ‡ — e Zd Zd
dededefˆ fd„Z	 	 	 ddedee   dee   dee   fd	„Z	ˆ xZ
S )ÚResidualAttentionBlockrY   rZ   Úcross_attentionc                 ód  •— t         ‰| �  «        t        ||«      | _        t	        |«      | _        |rt        ||«      nd | _        |rt	        |«      nd | _        |dz  }t        j                  t        ||«      t        j                  «       t        ||«      «      | _        t	        |«      | _        y )Né   )r*   r\   rT   Úattnr%   Úattn_lnÚ
cross_attnÚcross_attn_lnr
   Ú
Sequentialr4   ÚGELUÚmlpÚmlp_ln)r/   rY   rZ   r‚   Ún_mlpr0   s        €r#   r\   zResidualAttentionBlock.__init__�   s—   ø€ Ü‰ÑÔä& w°Ó7ˆŒ	Ü  Ó)ˆŒñ 4CÔ˜w¨Ô/Èð 	Œñ 4CœY wÔ/ÈˆÔà˜!‘ˆÜ—=‘=Ü�7˜EÓ"¤B§G¡G£I¬v°e¸WÓ/Eó
ˆŒô   Ó(ˆ�r"   r&   ra   rb   rc   c                 ó  — || j                  | j                  |«      ||¬«      d   z   }| j                  r)|| j                  | j                  |«      ||¬«      d   z   }|| j	                  | j                  |«      «      z   }|S )N©rb   rc   r   )rc   )r…   r†   r‡   rˆ   r‹   rŒ   )r/   r&   ra   rb   rc   s        r#   r+   zResidualAttentionBlock.forward    s{   € ð �—	‘	˜$Ÿ,™, q›/°¸x�	ÓHÈÑKÑKˆØ�?Š?Ø�D—O‘O D×$6Ñ$6°qÓ$9¸2È�OÓQÐRSÑTÑTˆAØ�—‘˜Ÿ™ Q›Ó(Ñ(ˆØˆr"   )Fr~   )r   r   r   r   Úboolr\   r	   r   r   r+   r1   r2   s   @r#   r�   r�   Ž   sa   ø„ ñ) ð )¨Sð )À4õ )ð(  $Ø!%Ø#'ñàðð �VÑðð �vÑð	ð
 ˜4‘.÷r"   r�   c            
       ó@   ‡ — e Zd Zdededededef
ˆ fd„Zdefd„Zˆ xZS )	ÚAudioEncoderr   rz   rY   rZ   Ún_layerc           	      óL  •— t         ‰| �  «        t        ||dd¬«      | _        t        ||ddd¬«      | _        | j                  dt        ||«      «       t        j                  t        |«      D �cg c]  }t        ||«      ‘Œ c}«      | _        t        |«      | _        y c c}w )Nrm   r   )Úkernel_sizeÚpaddingr@   )r•   Ústrider–   Úpositional_embedding)r*   r\   r<   Úconv1Úconv2Úregister_bufferrR   r
   Ú
ModuleListÚranger�   Úblocksr%   Úln_post)r/   r   rz   rY   rZ   r“   Ú_r0   s          €r#   r\   zAudioEncoder.__init__¯   sŒ   ø€ ô 	‰ÑÔÜ˜F G¸ÀAÔFˆŒ
Ü˜G W¸!ÀAÈqÔQˆŒ
Ø×ÑÐ3´Y¸uÀgÓ5NÔOä8:¿¹Ü>CÀG»nÖM¸Ô# G¨VÕ4ÒMó9
ˆŒô ! Ó)ˆ�ùò Ns   Á1B!r&   c                 óº  — t        j                  | j                  |«      «      }t        j                  | j                  |«      «      }|j	                  ddd«      }|j
                  dd | j                  j
                  k(  sJ d«       ‚|| j                  z   j                  |j                  «      }| j                  D ]
  } ||«      }Œ | j                  |«      }|S )zt
        x : torch.Tensor, shape = (batch_size, n_mels, n_ctx)
            the mel spectrogram of the audio
        r   r@   r   Nzincorrect audio shape)r6   Úgelur™   rš   rs   rq   r˜   r9   r.   rž   rŸ   )r/   r&   Úblocks      r#   r+   zAudioEncoder.forward¼   s»   € ô
 �F‰F�4—:‘:˜a“=Ó!ˆÜ�F‰F�4—:‘:˜a“=Ó!ˆØ�I‰I�a˜˜AÓˆà�w‰w�q�rˆ{˜d×7Ñ7×=Ñ=Ò=ÐVÐ?VÓVÐ=Ø�×*Ñ*Ñ*×.Ñ.¨q¯w©wÓ7ˆà—[‘[ò 	ˆEÙ�a“‰Að	ð �L‰L˜‹OˆØˆr"   )r   r   r   r   r\   r	   r+   r1   r2   s   @r#   r’   r’   ®   s<   ø„ ð*Øð*Ø"%ð*Ø03ð*Ø=@ð*ØKNõ*ð˜÷ r"   r’   c            
       óP   ‡ — e Zd Zdededededef
ˆ fd„Zddeded	ee   fd
„Zˆ xZ	S )ÚTextDecoderr   rz   rY   rZ   r“   c           
      ó  •— t         ‰| �  «        t        j                  ||«      | _        t        j
                  t        j                  ||«      «      | _        t        j                  t        |«      D �cg c]  }t        ||d¬«      ‘Œ c}«      | _        t        |«      | _        t        j                  ||«      j                  t         j"                   «      j%                  d«      }| j'                  d|d¬«       y c c}w )NT)r‚   r   rb   F©Ú
persistent)r*   r\   r
   Ú	EmbeddingÚtoken_embeddingÚ	ParameterrE   Úemptyr˜   rœ   r�   r�   rž   r%   ÚlnÚfill_rC   ÚinfÚtriu_r›   )	r/   r   rz   rY   rZ   r“   r    rb   r0   s	           €r#   r\   zTextDecoder.__init__Ð   sÈ   ø€ ô 	‰ÑÔä!Ÿ|™|¨G°WÓ=ˆÔÜ$&§L¡L´·±¸UÀGÓ1LÓ$MˆÔ!ä8:¿¹ô ˜w›öàô ' w°ÈÖMòó9
ˆŒô ˜GÓ$ˆŒä�{‰{˜5 %Ó(×.Ñ.´·±¨wÓ7×=Ñ=¸aÓ@ˆØ×Ñ˜V T°eÐÕ<ùòs   Á5C>r&   ra   rc   c                 ó  — |r/t        t        |j                  «       «      «      j                  d   nd}| j	                  |«      | j
                  |||j                  d   z    z   }|j                  |j                  «      }| j                  D ]  } |||| j                  |¬«      }Œ | j                  |«      }|t        j                  | j                  j                  j                  |j                  «      dd«      z  j                  «       }|S )zç
        x : torch.LongTensor, shape = (batch_size, <= n_ctx)
            the text tokens
        xa : torch.Tensor, shape = (batch_size, n_audio_ctx, n_audio_state)
            the encoded audio features to be attended on
        r   r   rl   r�   )ÚnextÚiterÚvaluesrq   rª   r˜   r9   r.   rž   rb   r­   rE   rv   r8   r,   )r/   r&   ra   rc   Úoffsetr£   Úlogitss          r#   r+   zTextDecoder.forwardã   sî   € ñ <D””d˜8Ÿ?™?Ó,Ó-Ó.×4Ñ4°QÒ7Èˆà× Ñ  Ó#Ø×'Ñ'¨°¸!¿'¹'À"¹+Ñ1EÐFñGð 	
ð �D‰D�—‘‹Nˆà—[‘[ò 	@ˆEÙ�a˜ $§)¡)°hÔ?‰Að	@ð �G‰G�A‹Jˆà”—‘ × 4Ñ 4× ;Ñ ;× >Ñ >¸q¿w¹wÓ GÈÈAÓNÑNß
‰%‹'ð 	ð ˆr"   r)   )
r   r   r   r   r\   r	   r   r   r+   r1   r2   s   @r#   r¥   r¥   Ï   sN   ø„ ð=Øð=Ø#&ð=Ø14ð=Ø>Að=ØLOõ=ñ&˜ð  Vð °xÀ±~÷ r"   r¥   c                   ó2  ‡ — e Zd Zdefˆ fd„Zdefd„Zdej                  fd„Z	dej                  dej                  fd	„Z
dej                  dej                  d
eeej                  f   fd„Zed„ «       Zed„ «       Zed„ «       Zddee   fd„ZeZeZeZˆ xZS )ÚWhisperÚdimsc                 ó(  •— t         ‰| �  «        || _        t        | j                  j                  | j                  j
                  | j                  j                  | j                  j                  | j                  j                  «      | _	        t        | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  «      | _        t#        j$                  | j                  j                  | j                  j                  t"        j&                  ¬«      }d|| j                  j                  dz  d  | j)                  d|j+                  «       d¬«       y )N©r.   Tr@   Úalignment_headsFr§   )r*   r\   r¹   r’   r   r   r   r   r   Úencoderr¥   r   r   r   r   r   ÚdecoderrE   Úzerosr�   r›   Ú	to_sparse)r/   r¹   Ú	all_headsr0   s      €r#   r\   zWhisper.__init__ý   s  ø€ Ü‰ÑÔØˆŒ	Ü#Ø�I‰I×ÑØ�I‰I×!Ñ!Ø�I‰I×#Ñ#Ø�I‰I×"Ñ"Ø�I‰I×#Ñ#ó
ˆŒô #Ø�I‰I×ÑØ�I‰I× Ñ Ø�I‰I×"Ñ"Ø�I‰I×!Ñ!Ø�I‰I×"Ñ"ó
ˆŒô —K‘KØ�I‰I×"Ñ" D§I¡I×$9Ñ$9ÄÇÁô
ˆ	ð 48ˆ	�$—)‘)×(Ñ(¨AÑ-Ð/Ð0Ø×ÑÐ.°	×0CÑ0CÓ0EÐRWÐÕXr"   Údumpc                 ó€  — t        j                  t        j                  t	        j
                  |«      «      t        ¬«      j                  «       }t        j                  |«      j                  | j                  j                  | j                  j                  «      }| j                  d|j                  «       d¬«       y )Nr»   r¼   Fr§   )rC   Ú
frombufferÚgzipÚ
decompressÚbase64Ú	b85decoder�   ÚcopyrE   Ú
from_numpyÚreshaper¹   r   r   r›   rÀ   )r/   rÂ   Úarrayrb   s       r#   Úset_alignment_headszWhisper.set_alignment_heads  sˆ   € Ü—‘Ü�O‰OœF×,Ñ,¨TÓ2Ó3¼4ô
ç
‰$‹&ð 	ô ×Ñ Ó&×.Ñ.Ø�I‰I×"Ñ" D§I¡I×$9Ñ$9ó
ˆð 	×ÑÐ.°·±Ó0@ÈUÐÕSr"   Úmelc                 ó$   — | j                  |«      S r)   )r½   )r/   rÎ   s     r#   Úembed_audiozWhisper.embed_audio  s   € Ø�|‰|˜CÓ Ð r"   ÚtokensÚaudio_featuresc                 ó&   — | j                  ||«      S r)   )r¾   )r/   rÑ   rÒ   s      r#   r¶   zWhisper.logits"  s   € Ø�|‰|˜F NÓ3Ð3r"   r'   c                 óD   — | j                  || j                  |«      «      S r)   )r¾   r½   )r/   rÎ   rÑ   s      r#   r+   zWhisper.forward%  s   € ð �|‰|˜F D§L¡L°Ó$5Ó6Ð6r"   c                 óH   — t        | j                  «       «      j                  S r)   )r²   Ú
parametersÚdevice©r/   s    r#   r×   zWhisper.device*  s   € ä�D—O‘OÓ%Ó&×-Ñ-Ð-r"   c                 ó4   — | j                   j                  dk\  S )Ni™Ê  )r¹   r   rØ   s    r#   Úis_multilingualzWhisper.is_multilingual.  s   € à�y‰y× Ñ  EÑ)Ð)r"   c                 ó`   — | j                   j                  dz
  t        | j                  «      z
  S )Ni5Ê  )r¹   r   r   rÚ   rØ   s    r#   Únum_languageszWhisper.num_languages2  s'   € à�y‰y× Ñ  5Ñ(¬3¨t×/CÑ/CÓ+DÑDÐDr"   Úcachec                 ó–   ‡ ‡‡‡— ‰�i ‰¥ni Šg Šˆˆ fd„Šdt         j                  fˆˆfd„}‰ j                  j                  |«       ‰‰fS )a˜  
        The `MultiHeadAttention` module optionally accepts `kv_cache` which stores the key and value
        tensors calculated for the previous positions. This method returns a dictionary that stores
        all caches, and the necessary hooks for the key and value projection modules that save the
        intermediate tensors to be reused during later calculations.

        Returns
        -------
        cache : Dict[nn.Module, torch.Tensor]
            A dictionary object mapping the key/value projection modules to its cache
        hooks : List[RemovableHandle]
            List of PyTorch RemovableHandle objects to stop the hooks to be called
        c                 óÐ   •— | ‰vs&|j                   d   ‰j                  j                  kD  r
|‰| <   ‰|    S t        j                  ‰|    |gd¬«      j                  «       ‰| <   ‰|    S )Nr   rA   )rq   r¹   r   rE   rI   rx   )Úmoduler    ÚoutputrÝ   r/   s      €€r#   Úsave_to_cachez5Whisper.install_kv_cache_hooks.<locals>.save_to_cacheG  sk   ø€ Ø˜UÑ" f§l¡l°1¡o¸¿	¹	×8LÑ8LÒ&Là &��f‘ð ˜‘=Ð ô !&§	¡	¨5°©=¸&Ð*AÀqÔ I× PÑ PÓ R��f‘Ø˜‘=Ð r"   Úlayerc                 óÐ   •— t        | t        «      rU‰j                  | j                  j	                  ‰«      «       ‰j                  | j
                  j	                  ‰«      «       y y r)   )Ú
isinstancerT   Úappendr^   Úregister_forward_hookr_   )rã   Úhooksrâ   s    €€r#   Úinstall_hooksz5Whisper.install_kv_cache_hooks.<locals>.install_hooksO  sI   ø€ Ü˜%Ô!3Ô4Ø—‘˜UŸY™Y×<Ñ<¸]ÓKÔLØ—‘˜UŸ[™[×>Ñ>¸}ÓMÕNð 5r"   )r
   ÚModuler¾   Úapply)r/   rÝ   ré   rè   râ   s   `` @@r#   Úinstall_kv_cache_hookszWhisper.install_kv_cache_hooks6  sO   û€ ð #Ð.�	�5‘	°BˆØˆõ	!ð	O¤§¡ö 	Oð
 	�‰×Ñ˜=Ô)Ø�eˆ|Ðr"   r)   )r   r   r   r   r\   ÚbytesrÍ   rE   r	   rÐ   r¶   r   Ústrr+   Úpropertyr×   rÚ   rÜ   r   r   rì   Údetect_language_functionr   Útranscribe_functionr   Údecode_functionr   r1   r2   s   @r#   r¸   r¸   ü   sÝ   ø„ ðY˜_õ Yð2T¨ó Tð!˜uŸ|™|ó !ð4˜UŸ\™\ð 4¸5¿<¹<ó 4ð7Ø—<‘<ð7Ø).¯©ð7à	ˆc�5—<‘<ÐÑ	 ó7ð
 ñ.ó ð.ð ñ*ó ð*ð ñEó ðEñ¨H°T©Nó ðB /€OØ$€JØ„Fr"   r¸   )i'  )+rÇ   rÅ   Ú
contextlibr   Údataclassesr   Útypingr   r   r   r   ÚnumpyrC   rE   Útorch.nn.functionalr
   Ú
functionalr6   r	   Údecodingr   rò   r   rð   r   rñ   r   rt   ÚImportErrorÚRuntimeErrorÚOSErrorr   r%   r4   r<   rR   rW   rê   rT   r�   r’   r¥   r¸   r!   r"   r#   ú<module>rý      s  ðÛ Û Ý %Ý !ß 2Ó 2ã Û ß Ð ß å /Ý AÝ 9ðÝ@à€Nð ÷
ð 
ó ð
ô8�—‘ô 8ô

ˆR�Y‰Yô 
ô
ˆR�Y‰Yô 
óNð ñ1ó ð1ô:˜Ÿ™ô :ôz˜RŸY™Yô ô@�2—9‘9ô ôB*�"—)‘)ô *ôZ]ˆb�i‰iõ ]øðQ 	�\ 7Ð+ò Ø#'Ð Ø‚Nðús   ÁD ÄD(Ä'D(