Ë
    èÍ:jgS  ã            )       ó  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZ d„ Z	 	 	 d6dedee	e      de
ee	e         ded	ed
ee   fd„Z	 	 d7dedee	e      dee	e      ded	ed
ee   fd„Z	 	 d8dedee	e      ded	ed
ee   f
d„Z	 	 d7dedee	e      ded	ed
ee   f
d„Z	 d9dddddddd ddddddœdede	e   de
e	e      dedededededededed ed!e
e	e	e         d"e
eee	e   e	e   f      d#ed$ed
ee   f"d%„Z	 	 d:d&d dddddd ddddd'dd(œded)ee	e   e	e	e      f   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	e	e         d"e
eee	e   e	e   f      d,e
e	e      d-ed.eegef   d
ee   f&d/„Z	 	 d:d&d dddddd ddddd'dd(œded)ee	e   e	e	e      f   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	e	e         d"e
eee	e   e	e   f      d,e
e	e      d-ed.eegef   d
ee   f&d0„Z G d1„ d2«      Zd3„ Z d4„ Z!d5„ Z"y);é    N)ÚAsyncIterableÚCallableÚIterableÚListÚOptionalÚUnion)ÚGenerationResultÚGenerationStepResultÚ	GeneratorÚScoringResultÚTranslationResultÚ
Translatorc                  ó*  — t        t        dt        «       t        t        dt        «       t        t        dt        «       t        t
        dt        «       t        t
        dt        «       t        t
        dt        «       t        t
        dt        «       y)z4Registers additional attributes to compiled modules.Útranslate_iterableÚscore_iterableÚgenerate_tokensÚgenerate_iterableÚasync_generate_tokensN)
Úsetattrr   Útranslator_translate_iterableÚtranslator_score_iterableÚtranslator_generate_tokensr   Úgenerator_generate_iterableÚgenerator_score_iterableÚgenerator_generate_tokensÚgenerator_async_generate_tokens© ó    úk/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/ctranslate2/extensions.pyÚregister_extensionsr       sd   € äŒJÐ,Ô.KÔLÜŒJÐ(Ô*CÔDÜŒJÐ)Ô+EÔFÜŒIÐ*Ô,GÔHÜŒIÐ'Ô)AÔBÜŒIÐ(Ô*CÔDÜŒIÐ.Ô0OÕPr   Ú
translatorÚsourceÚtarget_prefixÚmax_batch_sizeÚ
batch_typeÚreturnc              +   ó~   K  — |g}|�|j                  |«       t        | j                  |||fi |¤ŽE d{  –—†  y7 Œ­w)a6  Translates an iterable of tokenized examples.

    This method is built on top of :meth:`ctranslate2.Translator.translate_batch`
    to efficiently translate an arbitrarily large stream of data. It enables the
    following optimizations:

    * stream processing (the iterable is not fully materialized in memory)
    * parallel translations (if the translator has multiple workers)
    * asynchronous batch prefetching
    * local sorting by length

    Arguments:
      source: An iterable of tokenized source examples.
      target_prefix: An optional iterable of tokenized target prefixes.
      max_batch_size: The maximum batch size.
      batch_type: Whether :obj:`max_batch_size` is the number of "examples" or "tokens".
      **kwargs: Any translation options accepted by
        :meth:`ctranslate2.Translator.translate_batch`.

    Returns:
      A generator iterator over :class:`ctranslate2.TranslationResult` instances.

    Example:
      This method can be used to efficiently translate text files:

      .. code-block:: python

          # Replace by your own tokenization and detokenization functions.
          tokenize_fn = lambda line: line.strip().split()
          detokenize_fn = lambda tokens: " ".join(tokens)

          with open("input.txt") as input_file:
              source = map(tokenize_fn, input_file)
              results = translator.translate_iterable(source, max_batch_size=64)

              for result in results:
                  tokens = result.hypotheses[0]
                  target = detokenize_fn(tokens)
                  print(target)
    N)ÚappendÚ_process_iterableÚtranslate_batch)r!   r"   r#   r$   r%   ÚkwargsÚ	iterabless          r   r   r      sR   è ø€ ð` �€IØÐ Ø×Ñ˜Ô'ä Ø×"Ñ"ØØØñ	ð
 ñ÷ ò ús   ‚3=µ;¶=Útargetc              +   óV   K  — t        | j                  ||g||fi |¤ŽE d{  –—†  y7 Œ­w)a}  Scores an iterable of tokenized examples.

    This method is built on top of :meth:`ctranslate2.Translator.score_batch`
    to efficiently score an arbitrarily large stream of data. It enables the
    following optimizations:

    * stream processing (the iterable is not fully materialized in memory)
    * parallel scoring (if the translator has multiple workers)
    * asynchronous batch prefetching
    * local sorting by length

    Arguments:
      source: An iterable of tokenized source examples.
      target: An iterable of tokenized target examples.
      max_batch_size: The maximum batch size.
      batch_type: Whether :obj:`max_batch_size` is the number of "examples" or "tokens".
      **kwargs: Any scoring options accepted by
        :meth:`ctranslate2.Translator.score_batch`.

    Returns:
      A generator iterator over :class:`ctranslate2.ScoringResult` instances.
    N©r)   Úscore_batch)r!   r"   r-   r$   r%   r+   s         r   r   r   [   s;   è ø€ ô< !Ø×ÑØ	�ÐØØñ	ð
 ñ÷ ò ús   ‚)¡'¢)Ú	generatorÚstart_tokensc              +   óT   K  — t        | j                  |g||fi |¤ŽE d{  –—†  y7 Œ­w)ac  Generates from an iterable of tokenized prompts.

    This method is built on top of :meth:`ctranslate2.Generator.generate_batch`
    to efficiently run generation on an arbitrarily large stream of data. It enables
    the following optimizations:

    * stream processing (the iterable is not fully materialized in memory)
    * parallel generations (if the generator has multiple workers)
    * asynchronous batch prefetching
    * local sorting by length

    Arguments:
      start_tokens: An iterable of tokenized prompts.
      max_batch_size: The maximum batch size.
      batch_type: Whether :obj:`max_batch_size` is the number of "examples" or "tokens".
      **kwargs: Any generation options accepted by
        :meth:`ctranslate2.Generator.generate_batch`.

    Returns:
      A generator iterator over :class:`ctranslate2.GenerationResult` instances.
    N)r)   Úgenerate_batch)r1   r2   r$   r%   r+   s        r   r   r   ‚   s8   è ø€ ô8 !Ø× Ñ Ø	ˆØØñ	ð
 ñ÷ ò úó   ‚( &¡(Útokensc              +   óT   K  — t        | j                  |g||fi |¤ŽE d{  –—†  y7 Œ­w)a9  Scores an iterable of tokenized examples.

    This method is built on top of :meth:`ctranslate2.Generator.score_batch`
    to efficiently score an arbitrarily large stream of data. It enables
    the following optimizations:

    * stream processing (the iterable is not fully materialized in memory)
    * parallel scoring (if the generator has multiple workers)
    * asynchronous batch prefetching
    * local sorting by length

    Arguments:
      tokens: An iterable of tokenized examples.
      max_batch_size: The maximum batch size.
      batch_type: Whether :obj:`max_batch_size` is the number of "examples" or "tokens".
      **kwargs: Any score options accepted by
        :meth:`ctranslate2.Generator.score_batch`.

    Returns:
      A generator iterator over :class:`ctranslate2.ScoringResult` instances.
    Nr/   )r1   r6   r$   r%   r+   s        r   r   r   §   s8   è ø€ ô8 !Ø×ÑØ	ˆØØñ	ð
 ñ÷ ò úr5   é   é   Fi   )Úmax_decoding_lengthÚmin_decoding_lengthÚsampling_topkÚsampling_toppÚsampling_temperatureÚreturn_log_probÚrepetition_penaltyÚno_repeat_ngram_sizeÚdisable_unkÚsuppress_sequencesÚ	end_tokenÚmax_input_lengthÚuse_vmapr:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   c             #   óv   K  — t        | j                  |g|�|gnd|	|
|||||||||||¬«      E d{  –—†  y7 Œ­w)a{  Yields tokens as they are generated by the model.

    Arguments:
      source: Source tokens.
      target_prefix: Optional target prefix tokens.
      max_decoding_length: Maximum prediction length.
      min_decoding_length: Minimum prediction length.
      sampling_topk: Randomly sample predictions from the top K candidates.
      sampling_topp: Keep the most probable tokens whose cumulative probability exceeds this value.
      sampling_temperature: Sampling temperature to generate more random samples.
      return_log_prob: Include the token log probability in the result.
      repetition_penalty: Penalty applied to the score of previously generated tokens
        (set > 1 to penalize).
      no_repeat_ngram_size: Prevent repetitions of ngrams with this size
        (set 0 to disable).
      disable_unk: Disable the generation of the unknown token.
      suppress_sequences: Disable the generation of some sequences of tokens.
      end_token: Stop the decoding on one of these tokens (defaults to the model EOS token).
      max_input_length: Truncate inputs after this many tokens (set 0 to disable).
      use_vmap: Use the vocabulary mapping file saved in this model

    Returns:
      A generator iterator over :class:`ctranslate2.GenerationStepResult` instances.

    Note:
      This generation method is not compatible with beam search which requires a complete decoding.
    N)r@   rA   rB   rC   rD   r:   r;   r<   r=   r>   Úreturn_scoresrE   rF   )Ú_generate_tokensr*   )r!   r"   r#   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   s                   r   r   r   Ì   s\   è ø€ ô\  Ø×"Ñ"Ø	ˆØ(Ð4ˆ‰¸$Ø-Ø1ØØ-ØØ/Ø/Ø#Ø#Ø1Ø%Ø)Øô!÷ ò ús   ‚/9±7²9i   T)Ú
max_lengthÚ
min_lengthr<   r=   r>   r?   r@   rA   rB   rC   rD   Ústatic_promptÚcache_static_promptÚcallbackÚpromptrJ   rK   rL   rM   rN   c             #   óø   K  — t        |«      dkD  rt        |d   t        «      r|g}t        | j                  |fi d|“d|“d|
“d|“d|“d|“d|“d	|“d
|“d|“d|“d|“d|	“d|“d|“dd“d|“ŽE d{  –—†  y7 Œ­w)aÙ  Yields tokens as they are generated by the model.

    Arguments:
      prompt: Batch of start tokens. If the decoder starts from a
        special start token like <s>, this token should be added to this input.
      max_batch_size: The maximum batch size.
      batch_type: Whether :obj:`max_batch_size` is the number of "examples" or "tokens".
      max_length: Maximum generation length.
      min_length: Minimum generation length.
      sampling_topk: Randomly sample predictions from the top K candidates.
      sampling_topp: Keep the most probable tokens whose cumulative probability exceeds this value.
      sampling_temperature: Sampling temperature to generate more random samples.
      return_log_prob: Include the token log probability in the result.
      repetition_penalty: Penalty applied to the score of previously generated tokens
        (set > 1 to penalize).
      no_repeat_ngram_size: Prevent repetitions of ngrams with this size
        (set 0 to disable).
      disable_unk: Disable the generation of the unknown token.
      suppress_sequences: Disable the generation of some sequences of tokens.
      end_token: Stop the decoding on one these tokens (defaults to the model EOS token).
      static_prompt: If the model expects a static prompt (a.k.a. system prompt)
        it can be set here to simplify the inputs and optionally cache the model
        state for this prompt to accelerate future generations.
      cache_static_prompt: Cache the model state after the static prompt and
        reuse it for future generations using the same static prompt.
      callback: Optional function that is called for each generated token when
        obj:`beam_size` is 1. If the callback function returns ``True``, the
        decoding will stop for this batch index.

    Returns:
      A generator iterator over :class:`ctranslate2.GenerationStepResult` instances.

    Note:
      This generation method is not compatible with beam search which requires a complete decoding.
    r   r$   r%   r@   rA   rB   rC   rD   rJ   rK   r<   r=   r>   rH   rL   rM   Úinclude_prompt_in_resultFrN   N)ÚlenÚ
isinstanceÚstrrI   r4   )r1   rO   r$   r%   rJ   rK   r<   r=   r>   r?   r@   rA   rB   rC   rD   rL   rM   rN   s                     r   r   r     sð   è ø€ ôp ˆ6ƒ{�Q‚œ: f¨Q¡i´Ô5Ø�ˆÜØ× Ñ Øòñ &ðñ ð	ñ
 .ðñ 2ðñ  ðñ .ðñ ðñ ðñ ðñ $ðñ $ðñ 2ðñ &ðñ  $ð!ñ" 0ð#ñ$ "'ð%ñ& ð'÷ ò ús   ‚A0A:Á2A8Á3A:c               ó  K  — t        |«      dkD  rt        |d   t        «      r|g}t        | j                  |fi d|“d|“d|
“d|“d|“d|“d|“d	|“d
|“d|“d|“d|“d|	“d|“d|“dd“d|“Ž2 3 d{  –—† }|­–— Œ7 Œ
6 y­w)aò  Yields tokens asynchronously as they are generated by the model.

    Arguments:
      prompt: Batch of start tokens. If the decoder starts from a
        special start token like <s>, this token should be added to this input.
      max_batch_size: The maximum batch size.
      batch_type: Whether :obj:`max_batch_size` is the number of "examples" or "tokens".
      max_length: Maximum generation length.
      min_length: Minimum generation length.
      sampling_topk: Randomly sample predictions from the top K candidates.
      sampling_topp: Keep the most probable tokens whose cumulative probability exceeds this value.
      sampling_temperature: Sampling temperature to generate more random samples.
      return_log_prob: Include the token log probability in the result.
      repetition_penalty: Penalty applied to the score of previously generated tokens
        (set > 1 to penalize).
      no_repeat_ngram_size: Prevent repetitions of ngrams with this size
        (set 0 to disable).
      disable_unk: Disable the generation of the unknown token.
      suppress_sequences: Disable the generation of some sequences of tokens.
      end_token: Stop the decoding on one of these tokens (defaults to the model EOS token).
      static_prompt: If the model expects a static prompt (a.k.a. system prompt)
        it can be set here to simplify the inputs and optionally cache the model
        state for this prompt to accelerate future generations.
      cache_static_prompt: Cache the model state after the static prompt and
        reuse it for future generations using the same static prompt.
      callback: Optional function that is called for each generated token when
        obj:`beam_size` is 1. If the callback function returns ``True``, the
        decoding will stop for this batch index.

    Returns:
      An async generator iterator over :class:`ctranslate2.GenerationStepResult` instances.

    Note:
      This generation method is not compatible with beam search which requires a complete decoding.
    r   r$   r%   r@   rA   rB   rC   rD   rJ   rK   r<   r=   r>   rH   rL   rM   rQ   FrN   N)rR   rS   rT   ÚAsyncGeneratorr4   )r1   rO   r$   r%   rJ   rK   r<   r=   r>   r?   r@   rA   rB   rC   rD   rL   rM   rN   Ústep_results                      r   r   r   _  s  è ø€ ôp ˆ6ƒ{�Q‚œ: f¨Q¡i´Ô5Ø�ˆÜ+Ø× Ñ Øòñ &ðñ ð	ñ
 .ðñ 2ðñ  ðñ .ðñ ðñ ðñ ðñ $ðñ $ðñ 2ðñ &ðñ  $ð!ñ" 0ð#ñ$ "'ð%ñ& ð'÷ ð ˆkð* Ôð+øñ ùs*   ‚A-BÁ/B Á3A>Á4B Á7BÁ>B Â Bc                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)rV   c                 ó    — t        j                  «       | _        t        j                  «       | _        d | _        || _        || _        || _	        y ©N)
ÚasyncioÚQueueÚqueueÚ	threadingÚEventÚshutdown_eventÚiterator_taskÚprocess_funcÚargsr+   )Úselfrb   rc   r+   s       r   Ú__init__zAsyncGenerator.__init__²  s<   € Ü—]‘]“_ˆŒ
Ü'Ÿo™oÓ/ˆÔØ!ˆÔØ(ˆÔØˆŒ	Øˆ�r   c              ƒ   óz  K  — t        | j                  g| j                  ¢­i | j                  ¤ŽD ]^  }| j                  j                  |«      ƒ d {  –—†  t        j                  d«      ƒ d {  –—†  | j                  j                  «       sŒ^ n | j                  j                  d «      ƒ d {  –—†  y 7 Œc7 ŒH7 Œ	­w)Ng-Cëâ6?)
rI   rb   rc   r+   r]   Úputr[   Úsleepr`   Úis_set)rd   rW   s     r   ÚproducerzAsyncGenerator.producerº  s¡   è ø€ ä+Ø×Ñð
Ø $§	¡	ò
Ø-1¯[©[ñ
ò 	ˆKð —*‘*—.‘. Ó-×-Ð-Ü—-‘- Ó'×'Ð'à×"Ñ"×)Ñ)Õ+Ùð	ð �j‰j�n‰n˜TÓ"×"Ñ"ð .øØ'øð 	#ús<   ‚AB;ÁB5ÁB;Á.B7Á/B;Â!B;Â/B9Â0B;Â7B;Â9B;c                 óV   — t        j                  | j                  «       «      | _        | S rZ   )r[   Úcreate_taskrj   ra   )rd   s    r   Ú	__aiter__zAsyncGenerator.__aiter__Æ  s    € Ü$×0Ñ0°·±³ÓAˆÔØˆr   c              ƒ   óJ  K  — | j                   j                  «       rt        ‚	 | j                  j	                  «       ƒ d {  –—† }|€ | j                   j                  «        t        ‚|S 7 Œ(# t        j                  $ r! | j                   j                  «        t        ‚w xY w­wrZ   )r`   ri   ÚStopAsyncIterationr]   ÚgetÚsetr[   ÚCancelledError)rd   Úitems     r   Ú	__anext__zAsyncGenerator.__anext__Ê  s‹   è ø€ Ø×Ñ×%Ñ%Ô'Ü$Ð$ð	%ØŸ™Ÿ™Ó)×)ˆDØˆ|Ø×#Ñ#×'Ñ'Ô)Ü(Ð(ØˆKð	 *ùô
 ×%Ñ%ò 	%Ø×Ñ×#Ñ#Ô%Ü$Ð$ð	%üs.   ‚!B#¤A, ÁA*Á'A, Á)B#Á*A, Á,4B Â B#N)Ú__name__Ú
__module__Ú__qualname__re   rj   rm   rt   r   r   r   rV   rV   ±  s   „ òò
#òó%r   rV   c              /   óê  ‡‡‡	‡
K  — t        j                  «       Š	t        j                  «       Š|j	                  dd «      Š
‰
€d„ Š
ˆˆ	ˆ
fd„}|j                  dd|dœ«        | |i |¤ŽŠˆˆ	fd„}t        j                  |d¬«      }|j                  «        	 ‰	j	                  «       }|€nt        |t        «      r|‚	 |–— Œ+|j                  «        y # t        $ r ‰j                  «        Y Œ,w xY w­w)	NrN   c                  ó   — y)NFr   )rW   s    r   ú<lambda>z"_generate_tokens.<locals>.<lambda>ß  s   � r   c                 ó^   •—  ‰| «      }‰j                  | «       ‰j                  «       xs |S rZ   )rg   ri   )rW   Úuser_callback_resultÚgenerator_closedÚstep_resultsÚuser_callbacks     €€€r   Ú	_callbackz#_generate_tokens.<locals>._callbacká  s1   ø€ Ù,¨[Ó9ÐØ×Ñ˜Ô%à×&Ñ&Ó(Ò@Ð,@Ð@r   Tr9   )ÚasynchronousÚ	beam_sizerN   c                  ó¨   •— 	 ‰D ]  } | j                  «        Œ 	 ‰j                  d «       y # t        $ r}‰j                  |«       Y d }~Œ1d }~ww xY wrZ   )ÚresultÚ	Exceptionrg   )r„   ÚeÚasync_resultsr~   s     €€r   Ú_catch_exceptionz*_generate_tokens.<locals>._catch_exceptionñ  sS   ø€ ð	 Ø'ò  �Ø—‘•ñ ð 	×Ñ˜Õøô ò 	 Ø×Ñ˜Q×Ñûð	 ús   ƒ- ­	A¶AÁA)r-   Údaemon)r]   r\   r^   r_   rp   ÚupdateÚThreadÚstartrS   r…   ÚGeneratorExitrq   Újoin)rb   rc   r+   r€   rˆ   ÚthreadrW   r‡   r}   r~   r   s          @@@@r   rI   rI   Ù  sô   ûè ø€ Ü—;‘;“=€LÜ —‘Ó(Ðà—J‘J˜z¨4Ó0€MØÐÙ1ˆöAð ‡M�Mà ØØ!ñ	
ôñ ! $Ð1¨&Ñ1€Mõô ×ÑÐ%5¸dÔC€FØ
‡L�L„Nà
Ø"×&Ñ&Ó(ˆàÐØä�k¤9Ô-ØÐð	ØÒð ð  ‡K�K…Møô ò 	Ø× Ñ Ô"Ùð	üs*   †B7C3Â>C ÃC3ÃC0Ã-C3Ã/C0Ã0C3c              +   ó"  K  — |dk  rt        d«      ‚t        |«      dk(  r|d   }nt        j                  |Ž }|j	                  ||ddœ«       |dkD  r|dz  n|}t        j                  «       }t        |||«      D ]i  } |j                   | |i |¤Ž«       |sŒ|d   j                  «       sŒ2 |j                  «       j                  «       –— |sŒV|d   j                  «       rŒ8Œk |r% |j                  «       j                  «       –— |rŒ$y y ­w)Nr9   zmax_batch_size must be >= 1r   T)r$   r%   r�   é   )Ú
ValueErrorrR   Ú	itertoolsÚzip_longestrŠ   ÚcollectionsÚdequeÚ_batch_iteratorÚextendÚdoneÚpopleftr„   )	rb   r,   r$   r%   r+   ÚiterableÚread_batch_sizer]   Ústreamss	            r   r)   r)     s  è ø€ Ø˜ÒÜÐ6Ó7Ð7ä
ˆ9ƒ~˜ÒØ˜Q‘<‰ä×(Ñ(¨)Ð4ˆà
‡M�Mà,Ø$Ø ñ	
ôð .<¸aÒ-?�n rÒ)À^€OÜ×ÑÓ€Eä" 8¨_¸jÓIò +ˆØˆ�‰‘\ 7Ð5¨fÑ5Ô6â˜˜a™Ÿ™�Ø�%—-‘-“/×(Ñ(Ó*Ò*ò ˜˜a™Ÿ™žð+ñ Øˆe�m‰m‹o×$Ñ$Ó&Ò&ô ùs$   ‚BDÂDÂ-#DÃDÃ%'DÄDc              #   óî  K  — d }d}| D ]á  }t        |t        «      s|f}|dk(  r|rqt        |d   «      |k(  r`|–— d }nY|dk(  rFt        |t        |d   «      «      }|r:t        |d   «      dz   |z  |kD  r#|–— d }t        |d   «      }nt	        d|z  «      ‚|€t        d„ |D «       «      }t        ||«      D ]1  \  }}|€t        |«      dkD  rt	        d«      ‚|j                  |«       Œ3 Œã |�|–— y y ­w)Nr   Úexamplesr6   r9   zInvalid batch type %sc              3   ó    K  — | ]  }g –— Œ y ­wrZ   r   )Ú.0Ú_s     r   ú	<genexpr>z"_batch_iterator.<locals>.<genexpr>F  s   è ø€ Ò0 1œBÑ0ùs   ‚z+Input iterables do not have the same length)rS   ÚtuplerR   Úmaxr’   Úzipr(   )r›   Ú
batch_sizer%   r�   rJ   ÚexampleÚbatchÚelements           r   r—   r—   -  s  è ø€ Ø€GØ€Jàò "ˆÜ˜'¤5Ô)Ø�jˆGà˜Ò#Ùœ3˜w q™z›?¨jÒ8Ø’Ø‘à˜8Ò#Ü˜Z¬¨W°Q©Z«Ó9ˆJáœC ¨¡
›O¨aÑ/°:Ñ=À
ÒJØ’Ø�Ü  ¨¡›_‘
ô Ð4°zÑAÓBÐBàˆ?ÜÑ0¨Ô0Ó0ˆGÜ! '¨7Ó3ò 	"‰NˆE�7Øˆ¤3 w£<°!Ò#3Ü Ð!NÓOÐOØ�L‰L˜Õ!ñ	"ð-"ð6 ÐØ‹ð ùs   ‚C3C5)Né    rŸ   )é@   rŸ   )r«   rŸ   rZ   )r   rŸ   )#r[   r•   r“   r]   r^   Útypingr   r   r   r   r   r   Úctranslate2._extr	   r
   r   r   r   r   r    rT   Úintr   r   r   r   ÚfloatÚboolr   r   r   rV   rI   r)   r—   r   r   r   ú<module>r²      sƒ  ðÛ Û Û Û Û ç K× K÷÷ òQð 48ØØ ñ:Øð:à�T˜#‘YÑð:ð ˜H T¨#¡YÑ/Ñ0ð:ð ð	:ð
 ð:ð ÐÑ ó:ðB Ø ñ$Øð$à�T˜#‘YÑð$ð �T˜#‘YÑð$ð ð	$ð
 ð$ð ˆmÑó$ðT Ø ñ	"Øð"à˜4 ™9Ñ%ð"ð ð"ð ð	"ð ÐÑó"ðP Ø ñ	"Øð"à�T˜#‘YÑð"ð ð"ð ð	"ð ˆmÑó"ðP *.ð?ð
  #Ø ØØØ"#Ø!Ø !Ø !ØØ48Ø<@Ø Øò#?Øð?à�‰Ið?ð ˜D ™IÑ&ð?ð
 ð?ð ð?ð ð?ð ð?ð  ð?ð ð?ð ð?ð ð?ð ð?ð !  d¨3¡i¡Ñ1ð?ð ˜˜c 4¨¡9¨d°3©iÐ7Ñ8Ñ9ð?ð  ð!?ð" ð#?ð$ Ð"Ñ#ó%?ðJ Ø ð	Nð ØØØØ"#Ø!Ø !Ø !ØØ48Ø<@Ø)-Ø $Ø7;ò'NØðNà�$�s‘)˜T $ s¡)™_Ð,Ñ-ðNð ðNð ð	Nð ðNð ðNð ðNð ðNð  ðNð ðNð ðNð ðNð ðNð !  d¨3¡i¡Ñ1ðNð  ˜˜c 4¨¡9¨d°3©iÐ7Ñ8Ñ9ð!Nð" ˜D ™IÑ&ð#Nð$ ð%Nð& Ð,Ð-¨tÐ3Ñ4ð'Nð( Ð"Ñ#ó)Nðh Ø ð	Oð ØØØØ"#Ø!Ø !Ø !ØØ48Ø<@Ø)-Ø $Ø7;ò'OØðOà�$�s‘)˜T $ s¡)™_Ð,Ñ-ðOð ðOð ð	Oð ðOð ðOð ðOð ðOð  ðOð ðOð ðOð ðOð ðOð !  d¨3¡i¡Ñ1ðOð  ˜˜c 4¨¡9¨d°3©iÐ7Ñ8Ñ9ð!Oð" ˜D ™IÑ&ð#Oð$ ð%Oð& Ð,Ð-¨tÐ3Ñ4ð'Oð( Ð'Ñ(ó)O÷d%%ñ %%òP3òl'ó< r   