Ë
    Gêñi, ã                   ó¶  — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddl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mZ ddlmZm Z 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dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6  e6jn                  e8«      Z9dZ:dZ;dZ<dZ=dZ>e,dz  Z,ee e!e"dœZ?e:e=dœZ@ e5e,«       G d„ de/«      «       ZAeAZBy)z‘
Tokenization classes for fast tokenizers (provided by HuggingFace's tokenizers library). For slow (python) tokenizers
see tokenization_utils.py
é    N)Údefaultdict)ÚIterable)Úcopyfile)ÚAny)Úis_offline_mode)Ú
AddedTokenÚ
processors)ÚEncoding)Ú	Tokenizer)ÚDecoder)ÚBPEÚUnigram)Ú
BpeTrainerÚUnigramTrainerÚWordLevelTrainerÚWordPieceTrainer©Úcached_fileé   )ÚSpmConverter)Úconvert_gguf_tokenizer)Úload_gguf_checkpoint)ÚINIT_TOKENIZER_DOCSTRINGÚBatchEncodingÚPreTokenizedInputÚPreTrainedTokenizerBaseÚ	TextInputÚTruncationStrategyÚgenerate_merges)ÚPaddingStrategyÚadd_end_docstringsÚloggingztokenizer.jsonzspecial_tokens_map.jsonztokenizer_config.jsonztokenizer.modelzadded_tokens.jsonu¡  
        tokenizer_object ([`tokenizers.Tokenizer`]):
            A [`tokenizers.Tokenizer`] object from ðŸ¤— tokenizers to instantiate from. See [Using tokenizers from ðŸ¤—
            tokenizers](../fast_tokenizers) for more information.
        tokenizer_file ([`str`]):
            A path to a local JSON file representing a previously serialized [`tokenizers.Tokenizer`] object from ðŸ¤—
            tokenizers.
)r   r   Ú	WordLevelÚ	WordPiece)Útokenizer_fileÚ
vocab_filec            )       ó
  ‡ — e Zd ZdZeZdZdZedLd„«       Z	ˆ fd„Z
edefd„«       Zedefd„«       ZdMd	ed
edz  dee   fd„Zd„ Zed„ «       Zed„ «       Zej*                  d„ «       Zej*                  d„ «       Zd„ Zedefd„«       Zdeeef   fd„Zedeeef   fd„«       Zedeeef   fd„«       Zedeeef   fd„«       ZeZeZ deeef   fd„Z!defd„Z"defd„Z#ede$fd„«       Z%ede&fd„«       Z'	 	 	 	 	 	 	 dNde(dedz  dedz  d ed!ed"ed#ed$edeeee)f   e*e(   f   fd%„Z+d&edefd'„Z,d(ededz  fd)„Z-dLd*e*eez     defd+„Z.dLd,edefd-„Z/dLd.ee*e   z  d/edee*e   z  fd0„Z0dOd1ed,edz  d2ede*e   fd3„Z1d4e2d5e3d6ed7ed8edz  d9edz  fd:„Z4dde2jj                  e3jl                  dd;ddddddddddddfd1e7e8z  e*e7   z  e*e8   z  d<e7e8z  e*e7   z  e*e8   z  dz  d2ed4e2d5e3d6edz  d7ed=ed8edz  d9edz  d>edz  dedz  dedz  d ed!ed"ed#ed$ed?edz  de9f(d@„Z:dAe*e   defdB„Z;	 	 dPdCee*e   z  d/edDedz  defdE„Z<	 	 dQd	ee=j|                  z  dFeedGf   dHedz  d
edz  deedGf   f
dI„Z?	 	 	 dRdJ„Z@e	 	 	 	 	 	 	 dSdK„«       ZAˆ xZBS )TÚTokenizersBackendaQ  
    Base class for all fast tokenizers (wrapping HuggingFace tokenizers library).

    Inherits from [`~tokenization_utils_base.PreTrainedTokenizerBase`].

    Handles all the shared methods for tokenization and special tokens, as well as methods for
    downloading/caching/loading pretrained tokenizers, as well as adding tokens to the vocabulary.

    This class also contains the added tokens in a unified way on top of all tokenizers so we don't have to handle the
    specific vocabulary augmentation methods of the various underlying dictionary structures (BPE, sentencepiece...).
    NFc                 ó^  ‡(— t        |«      }|j                  dd«      }|�Qt        j                  j	                  |«      r2| t
        u sd| j                  vs|rt        j                  |«      |d<   |S |��­t        j                  j	                  |«      �r�t        |d¬«      5 }t        j                  |«      }ddd«       j                  di «      j                  d«      }|d	vr[t        |«      }t        |d   «      }	i |	d
<   |dk(  rg |	d<   |	|d<   g |d<   t        j                  t        j                  |«      «      }
nt        j                  |«      }
|
j                  |d<   |
j                   |d<   |
j"                  |d<   |
j"                  �|
j"                  |d<   |
j                   �|
j                   |d<   |j                  d«      }|rk|j                  dd«      dk(  r|d   }nt%        |t&        «      s|g}|D ]8  }|j                  d«      dk(  sŒd|v sŒddl}|j+                  |d   «      |d<    n |j                  di «      j                  d
d«      }| j,                  €,t%        |t&        «      �r%t'        t/        t0        |«      «      }�n
| j,                  j2                  dk(  rDt%        |t&        «      rá|rßt%        |d   t&        t0        f«      rÆ|D �cg c]  }t1        |«      ‘Œ }}n­| j,                  j2                  dk(  rt5        |«      D ��ci c]  \  }}||“Œ
 }}}nu| j,                  j2                  dk(  s| j,                  j2                  dk(  rCt%        |t&        «      r3t5        |«      D ��ci c]  \  }}t%        |t&        «      r|d   n||“Œ }}}||d
<   t7        | dd«      }d|j                  di «      v r`|r^|j2                  dk(  rO|d   d   }|D �cg c]7  }t%        |t8        «      rt1        |j;                  d«      «      n
t1        |«      ‘Œ9 }}||d<   |S |j                  d«      }|j                  d«      }|j                  d
«      }|j                  d«      }t%        |t8        «      rY|j=                  d «      rHt        j                  j	                  |«      r)d!d"lm }  ||¬#«      jC                  |«      \  |d
<   |d<   |S t%        |t8        «      �rnt        j                  j	                  |«      �rN|j=                  d$«      �r<	 d!d%lm"}  ||«      } |jF                  | j,                  fi |¤Ž}	 d!d&lm$} |j                  | j2                  «      }|�tK        |d'«      r |jL                  d?i |¤Ž}tK        | d+«      r | jT                  d?i |¤Ž}d|v�r©| t
        u sd| j                  v�r’|j                  d
d«      }|j                  dd«      }|j                  d,«      xs i }|�‹|r‰|jW                  «       D ��ci c]  \  }}||“Œ
 }}}|jW                  «       D ]S  \  }}tY        |«      }t9        |«      }|j                  |«      } | sŒ0| |k7  sŒ6||vsŒ;|j                  | «      ||<   |||<   ŒU t[        j\                  |j^                  ||¬-«      }!|!�¨|!|d<   |j^                  j`                  }"|"jb                  dk\  r |je                  d.|"jf                  xs d/«       |"jh                  dk\  r |je                  d0|"jj                  xs d1«       |"jl                  dk\  r |je                  d2|"jn                  xs d3«       |S |€9t%        |t8        «      r)t        j                  j	                  |«      r
||d
<   |d
   }|€9t%        |t8        «      r)t        j                  j	                  |«      r
||d<   |d   }|€œ| j,                  ��| j,                  j2                  dk(  rwt%        |t         «      rgd:tt        tv           d;t&        t8           fˆ(fd<„Š(g d=¢}%ty        «       }&|%D ]"  }'|'|v sŒ|&j{                   ‰(||'   g«      «       Œ$ t}        ||&¬>«      }||d<   |S # 1 sw Y   �Œ®xY wc c}w c c}}w c c}}w c c}w # tN        $ r1}tP        jS                  d(| j2                  › d)|› d*�«       Y d}~�Œ<d}~ww xY wc c}}w # tN        $ rY}tP        jS                  d4|› d5|› d6�«       d!d7lm8}#  |#||j                  d8«      ¬9«      }$|$js                  «       |d<   Y d}~|S d}~ww xY w)@zª
        Build a `tokenizers.Tokenizer` backend from the available serialization files (tokenizer.json, sentencepiece
        models, tekken.json, vocab/merges).
        r%   NÚ__init__Útokenizer_objectúutf-8©ÚencodingÚmodelÚtype)Nr   Úvocabr   ÚmergesÚadded_tokensÚpost_processorÚtokenizer_paddingÚtokenizer_truncationÚ_json_truncationÚ_json_paddingÚ
normalizerÚSequenceÚnormalizersÚPrecompiledÚprecompiled_charsmapr   Ú_spm_precompiled_charsmapr   r#   r$   ú r&   Úmerges_fileztekken.jsonr   )ÚMistralConverter)r&   ú.model)ÚSentencePieceExtractor)ÚSLOW_TO_FAST_CONVERTERSÚconvert_from_spmz,Could not reorder vocab using converter for z due to z/. Falling back to raw SentencePiece extraction.Úconvert_from_spm_modelÚadded_tokens_decoder)Úprotor1   r2   Ú	bos_tokenú<s>Ú	eos_tokenú</s>Ú	unk_tokenz<unk>z+Could not extract SentencePiece model from z$ using sentencepiece library due to z%. Falling back to TikToken extractor.)ÚTikTokenConverterÚextra_special_tokens)r&   rO   ÚvaluesÚreturnc                 ó°   •— g }| D ]M  }|€Œt        |t        t        f«      r|j                   ‰|«      «       Œ4|j	                  t        |«      «       ŒO |S ©N)Ú
isinstanceÚlistÚtupleÚextendÚappendÚstr)rP   Ú	collectedÚvalÚ_iter_special_tokenss      €úl/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/transformers/tokenization_utils_tokenizers.pyr\   zHTokenizersBackend.convert_to_native_format.<locals>._iter_special_tokens)  s[   ø€ Ø')�	Ø!ò 3�CØ�{Ø Ü! #¬¬e }Ô5Ø!×(Ñ(Ñ)=¸cÓ)BÕCà!×(Ñ(¬¨S«Õ2ð3ð !Ð ó    )	Ú	pad_tokenrM   rI   rK   Ú	sep_tokenÚ	cls_tokenÚ
mask_tokenÚadditional_special_tokensrO   )Úskip_tokens© )?ÚdictÚpopÚosÚpathÚisfiler(   Ú__dict__ÚTokenizerFastÚ	from_fileÚopenÚjsonÚloadÚgetÚfrom_strÚdumpsr4   ÚpaddingÚ
truncationrT   rU   Úbase64Ú	b64decoder/   ÚmaprV   Ú__name__Ú	enumerateÚgetattrrY   ÚsplitÚendswithÚconvert_slow_tokenizerrA   Úextract_vocab_merges_from_modelrC   ÚextractrD   ÚhasattrrE   Ú	ExceptionÚloggerÚwarningrF   ÚitemsÚintr   Úbuild_tokenizer_from_spm_protorH   Útrainer_specÚbos_idÚ
setdefaultÚ	bos_pieceÚeos_idÚ	eos_pieceÚunk_idÚ	unk_piecerN   Ú	convertedr   r   ÚsetÚupdater   ))ÚclsÚtrust_remote_codeÚkwargsÚlocal_kwargsÚfast_tokenizer_fileÚtokenizer_handleÚtokenizer_jsonÚ
model_typeÚminimal_tokenizer_jsonÚminimal_modelÚtok_from_fileÚnormalizer_configr9   rv   r1   ÚitemÚiÚtokenr2   Úmerger&   r@   rA   rC   Ú	extractorrD   Úconverter_classÚerG   Útoken_idÚid_to_tokenÚ	new_tokenÚcurrent_tokenr+   Ú
proto_specrN   Ú	converterÚspecial_tokens_keysrd   Úkeyr\   s)                                           @r]   Úconvert_to_native_formatz*TokenizersBackend.convert_to_native_formate   s	  ø€ ô ˜F“|ˆØ*×.Ñ.Ð/?ÀÓFÐð  Ð+Ü—‘—‘Ð2Ô3ØÔ)Ñ)¨Z¸s¿|¹|Ñ-KÑO`ä/<×/FÑ/FÐGZÓ/[ˆLÐ+Ñ,ØÐØ Ñ,´·±·±Ð@SÕ1Tô Ð)°GÔ<ð =Ð@PÜ!%§¡Ð+;Ó!<�÷=ð (×+Ñ+¨G°RÓ8×<Ñ<¸VÓDˆJØÐ!2Ñ2Ü)-¨nÓ)=Ð&Ü $ ^°GÑ%<Ó =�Ø)+�˜gÑ&Ø Ò&Ø.0�M (Ñ+Ø2?Ð& wÑ/Ø9;Ð& ~Ñ6Ü -× 6Ñ 6´t·z±zÐBXÓ7YÓ Z‘ä -× 7Ñ 7Ð8KÓ L�à-:×-IÑ-IˆLÐ)Ñ*Ø0=×0EÑ0EˆLÐ,Ñ-Ø3@×3KÑ3KˆLÐ/Ñ0ð ×'Ñ'Ð3Ø3@×3KÑ3K�Ð/Ñ0Ø×$Ñ$Ð0Ø0=×0EÑ0E�˜_Ñ-ð !/× 2Ñ 2°<Ó @ÐÙ Ø$×(Ñ(¨°Ó6¸*ÒDØ(9¸-Ñ(HÑ%Ü#Ð$5´tÔ<Ø):Ð(;Ð%Ø"3ò �JØ!—~‘~ fÓ-°Ó>ÐCYÐ]gÒCgÛ%àDJ×DTÑDTØ&Ð'=Ñ>óE˜Ð%@ÑAñ ðð #×&Ñ& w°Ó3×7Ñ7¸ÀÓFˆEØ�y‰yÐ Ü˜e¤TÕ*Ü ¤¤U¨EÓ!2Ó3’EØ—‘×#Ñ# yÒ0Ü˜e¤TÔ*©u¼ÀEÈ!ÁHÌtÔUZÈmÔ9\Ø5:Ö;¨TœU 4�[Ð;�EÑ;Ø—‘×#Ñ# {Ò2Ü2;¸EÓ2B×C¡h a¨˜ ™ÐC�ÒCØ—‘×#Ñ# uÒ,°·	±	×0BÑ0BÀkÒ0QÜ˜e¤TÔ*Ü_hÐinÓ_o×pÑS[ÐSTÐV[¬°E¼4Ô)@˜U 1šXÀeÈQÑNÐp�EÑpØ$)ˆL˜Ñ!ä   g¨tÓ4ˆJØ˜>×-Ñ-¨g°rÓ:Ñ:Á
Èz×ObÑObÐfkÒOkØ'¨Ñ0°Ñ:�ØkqÖrÐbg´ZÀÄsÔ5Kœ% §¡¨CÓ 0Ô1ÔQVÐW\ÓQ]Ñ]Ðr�ÐrØ)/�˜XÑ&àÐà!×%Ñ% lÓ3ˆ
Ø"×&Ñ& }Ó5ˆØ× Ñ  Ó)ˆØ×!Ñ! (Ó+ˆô �j¤#Ô&¨:×+>Ñ+>¸}Ô+MÔRT×RYÑRY×R`ÑR`ÐakÔRlÝ@á<LØ%ô=ç-Ñ-¨jÓ9ñ :ˆL˜Ñ! <°Ñ#9ð  Ðô �j¤#Õ&¬2¯7©7¯>©>¸*Õ+EÈ*×J]ÑJ]Ð^fÕJgðFIÝJñ 3°:Ó>�	Ø0˜y×0Ñ0°·±ÑK¸lÑK�ð	ÝOà&=×&AÑ&AÀ#Ç,Á,Ó&O�OØ&Ð2´w¸ÐPbÔ7cØ'G ×'GÑ'GÑ'WÈ,Ñ'W˜ô
 ˜3Ð 8Ô9Ø#= 3×#=Ñ#=Ñ#MÀÑ#M�Lð
 &¨\Ò9ØÔ,Ñ,°
À#Ç,Á,Ò0Nà(×,Ñ,¨W°dÓ;�EØ)×-Ñ-¨h¸Ó=�Fð ,8×+;Ñ+;Ð<RÓ+SÒ+YÐWYÐ(ØÐ(Ñ-AØNSÏkÉkËm×&\¹?¸5À( x°¡Ð&\˜Ñ&\Ø3G×3MÑ3MÓ3Oò BÑ/˜H iÜ'*¨8£}˜HÜ(+¨I«˜IØ,7¯O©O¸HÓ,E˜MÚ,°À)Ó1KÐPYÐafÒPfØ38·9±9¸]Ó3K  iÑ 0Ø8A ¨HÒ 5ðBô (4×'RÑ'RØ'Ÿo™oØ#Ø%ô(Ð$ð
 (Ð3Ø;K˜Ð%7Ñ8ð &/§_¡_×%AÑ%A˜
Ø%×,Ñ,°Ò1Ø(×3Ñ3°KÀ×AUÑAUÒA^ÐY^Ô_Ø%×,Ñ,°Ò1Ø(×3Ñ3°KÀ×AUÑAUÒA_ÐY_Ô`Ø%×,Ñ,°Ò1Ø(×3Ñ3°KÀ×AUÑAUÒA`ÐY`Ôað  Ðð ˆ=œZ¨
´CÔ8¼R¿W¹W¿^¹^ÈJÔ=WØ$.ˆL˜Ñ!Ø  Ñ)ˆEØˆ>œj¨´cÔ:¼r¿w¹w¿~¹~ÈkÔ?ZØ%0ˆL˜Ñ"Ø! (Ñ+ˆFð ˆ>˜cŸi™iÐ3¸¿	¹	×8JÑ8JÈeÒ8SÔXbÐchÔjnÔXoð	!¬X´c©]ð 	!¼tÄC¹yõ 	!ò
#Ðô %(£EˆKØ*ò R�Ø˜,Ò&Ø×&Ñ&Ñ';¸\È#Ñ=NÐ<OÓ'PÕQðRô % U¸ÔDˆFØ%+ˆL˜Ñ"ØÐ÷[=ñ =üòx <ùãCùó qùò søôF !ò Ü—N‘NØFÀsÇ|Á|ÀnÐT\Ð]^Ð\_ð  `Oð  P÷ò ûðüó& ']øô6 ò 
IÜ—‘ØAÀ*ÀÐMqÐrsÐqtð u:ð :ôõ Fá-Ø)À×@PÑ@PÐQgÓ@hô�	ð 4=×3FÑ3FÓ3H�Ð/Õ0ØÐûð
Iús‰   Â"a$Ëa1Ìa6Í5"a<Ï<bÔ+c
 Ô?Ab Ö B
c
 Ø
cØAc
 Ùc
 Ù c
 Ù%C'c
 á$a.â	câ&b<â6c
 â<cã	c
 ã
	d,ãAd'ä'd,c           	      ó  •— |j                  dd «      }|j                  dd «      }|j                  dd «       |j                  dd «      }|j                  dd «      }|j                  dd «      }|j                  di «      }|j                  dd	«      }	|j                  d
«      }
|j                  d«      }|j                  d«      }d }|�t        j                  |«      }�n¦|�6t        j
                  j                  |«      rt        j                  |«      }�nn|�{t        |j                  dd«      |fi |¤Ž}t        |«      }|d   d   }|d   }|d   }t        ||«      \  }}|j                  |«       t        |«      dkD  �r|j                  |«       nñ| j                  €Î|�Ì|�Ot        |t         «      r|n#t#        |«      D ���ci c]  \  }\  }}||“Œ c}}}}t        t%        ||dd ¬«      «      }n’t        |t         «      rt        t%        |g dd ¬«      «      }nit        |t&        «      rY|rWt        |d   t(        t&        f«      r>t        t+        ||j                  dd«      ¬«      «      }n| j                  €t-        d«      ‚|€2|€0| j                  €$|j/                  dd«       |j/                  dd«       |�|| _        | j                  €t-        d«      ‚|j                  dd «      xs | j                  j0                  xs |}|�q | j                  j2                  d8i |¤Ž |j/                  d|d   «       |j/                  d |d!   «       |j/                  d"|d"   «       |j/                  d#|d$   «       n| j                  j5                  «        |j                  d%d «      xs | j                  j6                  xs |}|�… | j                  j8                  d8i |¤Ž |j/                  d&|d&   «       |j/                  d'|d(   «       |j/                  d)|d!   «       |j/                  d|d*   «       |j/                  d+|d+   «       d,|vrd-|d,<   d.|v xs d/|v }|j                  d.d	«      | _        |j                  d/d	«      | _        |j                  d0d «      x}r|| j                  _        |xs | j                  j>                  d u | _         tC        ‰&| �ˆ  d8i |¤Ž |
�|
| _#        |	| _$        | jJ                  | j                  _&        | jN                  D �ch c]  }tQ        tS        |«      «      ’Œ }}tU        |jW                  «       d1„ ¬2«      D ��cg c]  \  }}tQ        tS        |«      «      |vr|‘Œ }}}t'        | jX                  j[                  «       «      |D �cg c]  }t]        |«      ‘Œ c}z   } | j^                  ja                  «       D ])  }!|!€Œt]        |!«      | vsŒ|!|vsŒ|jc                  |!«       Œ+ | jd                  D ]&  }t]        |«      | vsŒ||vsŒ|jc                  |«       Œ( t        |«      dkD  r®g }"| j^                  ja                  «       D �#cg c]  }#|#sŒt]        |#«      ‘Œ }$}#|D ]a  }t        |t\        «      rtg        |d¬3«      }n0t        |tf        «      r |jh                  st]        |«      |$v rd|_4        |"jc                  |«       Œc |"r| jk                  |"«       	 | j                  jm                  «       }%|%d4kD  rƒtq        | j                  d5d «      �l|j                  dd «        | jr                  | j                  | jt                  j                  dd «      f| jt                  |j                  d6d «      d7œ|¤Ž| _        | j@                  xs | j                  j>                  d u | _         | j@                  r| jw                  «        y y c c}}}w c c}w c c}}w c c}w c c}#w # tn        $ r d}%Y Œúw xY w)9Nr7   r8   r>   r+   Ú	gguf_filer%   rG   Úadd_prefix_spaceFr&   r1   r2   Úname_or_pathÚ Úconfigrš   Ú	tokenizerÚtokenizer_configr   T)r1   r2   Úfuse_unkÚdropoutrŽ   )r1   rŽ   a9  Couldn't instantiate the backend tokenizer from one of: 
(1) a `tokenizers` library serialization file, 
(2) a slow tokenizer instance to convert or 
(3) an equivalent slow tokenizer class to instantiate and convert. 
You need to have sentencepiece or tiktoken installed to convert a slow tokenizer to a fast one.rI   rJ   rK   rL   z3The backend tokenizer is not correctly initialized.r6   Ú
max_lengthÚtruncation_sideÚ	directionÚstrideÚtruncation_strategyÚstrategyr5   r_   Úpad_token_type_idÚpad_type_idÚpadding_sideÚlengthÚpad_to_multiple_ofÚbackendÚ
tokenizersÚadd_bos_tokenÚadd_eos_tokenr4   c                 ó   — | d   S ©Nr   re   )Úxs    r]   ú<lambda>z,TokenizersBackend.__init__.<locals>.<lambda>³  s   € ÐSTÐUVÑSW€ r^   ©r­   )Úspeciali † Úpre_tokenizerÚfix_mistral_regex)Úinit_kwargsrÏ   re   )<rg   rq   ÚcopyÚdeepcopyrh   ri   rj   rl   rm   r   r   r   r’   ÚlenÚ
_tokenizerrT   rf   rz   r   rU   rV   r   Ú
ValueErrorrŠ   ru   Úenable_truncationÚno_truncationrt   Úenable_paddingÚ_add_bos_tokenÚ_add_eos_tokenr4   Ú_should_update_post_processorÚsuperr*   r&   r±   Úsplit_special_tokensÚencode_special_tokensrG   ÚhashÚreprÚsortedr…   Úadded_tokens_encoderÚkeysrY   Ú_special_tokens_maprP   rX   Ú_extra_special_tokensr   rÍ   Ú
add_tokensÚget_vocab_sizeÚNotImplementedErrorr{   Ú_patch_mistral_regexrÐ   Úupdate_post_processor)'ÚselfÚargsr•   r7   r8   r+   r°   r—   rG   r±   r&   r1   r2   Úfast_tokenizerÚ	gguf_pathÚ
gguf_paramÚarchitectureÚtokenizer_dictr¶   Úadditional_kwargsr    ÚwÚ_Ú
vocab_dictÚ_truncationÚ_paddingÚexplicit_bos_eos_in_kwargsr4   r¡   Úadded_tokens_decoder_hashÚindexÚtokens_to_addÚencoderÚspecial_token_valueÚtokensÚtÚall_named_tokensÚ
vocab_sizeÚ	__class__s'                                         €r]   r*   zTokenizersBackend.__init__H  sµ  ø€ ð "Ÿ:™:Ð&8¸$Ó?ÐØŸ
™
 ?°DÓ9ˆð 	�
‰
Ð.°Ô5à!Ÿ:™:Ð&8¸$Ó?ÐØ—J‘J˜{¨DÓ1ˆ	Ø$Ÿj™jÐ)9¸4Ó@Ðà%Ÿz™zÐ*@À"ÓEÐà!Ÿ:™:Ð&8¸%Ó@ÐØ—Z‘Z Ó-ˆ
à—
‘
˜7Ó#ˆØ—‘˜HÓ%ˆàˆØÐ'Ü!Ÿ]™]Ð+;Ó<ŠNØ Ð,´·±·±Ð@SÔ1Tä*×4Ñ4Ð5HÓIŠNØÐ"ä# F§J¡J¨~¸rÓ$BÀIÑXÐQWÑXˆIÜ-¨iÓ8ˆJØ% hÑ/°Ñ=ˆLØ'¨Ñ4ˆNØ)Ð*<Ñ=ÐÜ0FÀ|ÐUcÓ0dÑ-ˆNÐ-Ø�M‰MÐ*Ô+ÜÐ$Ó%¨Ó)Ø—‘Ð/Õ0Ø�_‰_Ð$¨Ð):àÐ!Ü&0°¼Ô&=™UÔZcÐdiÓZj×CkÐCkÉYÈQÑPVÐQRÐTUÀAÀqÁDÔCk�
Ü!.¬s¸ÈFÐ]aÐkoÔ/pÓ!q‘Ü˜E¤4Ô(Ü!.¬s¸ÀrÐTXÐbfÔ/gÓ!h‘Ü˜E¤4Ô(©U´zÀ%ÈÁ(ÌUÔTXÈMÔ7ZÜ!.¬w¸UÈ6Ï:É:ÐV^Ð`aÓKbÔ/cÓ!d‘Ø�_‰_Ð$Üðróð ð Ð&Ð+;Ð+CÈÏÉÐH_Ø×Ñ˜k¨5Ô1Ø×Ñ˜k¨6Ô2àÐ%Ø,ˆDŒOà�?‰?Ð"ÜÐRÓSÐSà—j‘jÐ!7¸Ó>ÒpÀ$Ç/Á/×B\ÑB\ÒpÐ`pˆØÐ"Ø-ˆD�O‰O×-Ñ-Ñ<°Ò<Ø×Ñ˜l¨K¸Ñ,EÔFØ×ÑÐ/°¸[Ñ1IÔJØ×Ñ˜h¨°HÑ(=Ô>Ø×ÑÐ3°[ÀÑ5LÕMà�O‰O×)Ñ)Ô+à—:‘:Ð1°4Ó8Òd¸D¿O¹O×<SÑ<SÒdÐWdˆØÐØ*ˆD�O‰O×*Ñ*Ñ6¨XÒ6Ø×Ñ˜k¨8°KÑ+@ÔAØ×ÑÐ1°8¸MÑ3JÔKØ×Ñ˜n¨h°{Ñ.CÔDØ×Ñ˜l¨H°XÑ,>Ô?Ø×ÑÐ2°HÐ=QÑ4RÔSð ˜FÑ"Ø ,ˆF�9Ñà%4¸Ð%>Ò%[À/ÐU[ÐB[Ð"Ø$Ÿj™j¨¸%Ó@ˆÔØ$Ÿj™j¨¸%Ó@ˆÔØ#ŸZ™ZÐ(8¸$Ó?Ð?ˆ>Ð?Ø-;ˆD�O‰OÔ*Ø-GÒ-qÈ4Ï?É?×KiÑKiÐmqÐKqˆÔ*ä‰ÑÑ"˜6Ò"àÐ!Ø(ˆDŒOà 0ˆÔØ04×0IÑ0Iˆ�‰Ô-àDH×D]ÑD]Ö$^¸5¤T¬$¨u«+Õ%6Ð$^Ð!Ð$^ô !'Ð';×'AÑ'AÓ'CÉÔ X÷
á��uÜ”D˜“KÓ Ð(AÑAò ð
ˆñ 
ô
 �t×0Ñ0×5Ñ5Ó7Ó8ÐTaÖ;bÈ5¼CÀ½JÒ;bÑbˆð $(×#;Ñ#;×#BÑ#BÓ#Dò 	:ÐØ"Ð*ØÜÐ&Ó'¨wÒ6Ð;NÐVcÒ;cØ×$Ñ$Ð%8Õ9ð		:ð ×/Ñ/ò 	,ˆEÜ�5‹z Ò(¨U¸-Ò-GØ×$Ñ$ UÕ+ð	,ô ˆ}Ó Ò!ØˆFØ04×0HÑ0H×0OÑ0OÓ0QÖW¨1ÒUV¤ A¥ÐWÐÐWØ&ò %�Ü˜e¤SÔ)ä& u°dÔ;‘EÜ ¤zÔ2à Ÿ=š=¬S°«ZÐ;KÑ-KØ(,˜œØ—‘˜eÕ$ð%ñ à—‘ Ô'ð	ØŸ™×7Ñ7Ó9ˆJð
 ˜Ò¤7¨4¯?©?¸OÈTÓ#RÐ#^Ø�J‰J�{ DÔ)Ø7˜d×7Ñ7Ø—‘Ø× Ñ ×$Ñ$ ^°TÓ:ðð !×,Ñ,Ø"(§*¡*Ð-@À$Ó"Gñ	ð
 ñˆDŒOð ×.Ñ.ÒX°$·/±/×2PÑ2PÐTXÐ2Xð 	Ô*ð ×-Ò-Ø×&Ñ&Õ(ð .ùôo Dlùò~ %_ùó
ùò
 <cùò"  Xøô  #ò 	ØŠJð	ús6   Ç_Ô_!Õ"_&Ö _,Ù_1Ù&_1Û/_6 ß6`à`rQ   c                  ó   — y)NTre   ©rë   s    r]   Úis_fastzTokenizersBackend.is_fastë  s   € àr^   c                 óà   — d| j                   v r`| j                   d   j                  d«      rBt        | d«      r5| j                  r)t        j
                  j                  | j                  «      S yy)zÌ
        `bool`: Whether or not the slow tokenizer can be saved. For a sentencepiece based slow tokenizer, this
        can only be `True` if the original `"sentencepiece.model"` was not deleted.
        r&   rB   FT)Úvocab_files_namesr}   r�   r&   rh   ri   rj   r  s    r]   Úcan_save_slow_tokenizerz)TokenizersBackend.can_save_slow_tokenizerï  sX   € ð ˜4×1Ñ1Ñ1°d×6LÑ6LÈ\Ñ6Z×6cÑ6cÐdlÔ6mÜ�t˜\Ô*¨t¯ªä—w‘w—~‘~ d§o¡oÓ6Ð6Øàr^   Úsave_directoryÚfilename_prefixc                 óš  — t         j                  j                  |«      st        j	                  d|› d�«       y t         j                  j                  ||r|dz   ndt        d   z   «      }t         j                  j                  | j                  «      t         j                  j                  |«      k7  rt        | j                  |«       |fS )NzVocabulary path (z) should be a directoryú-r³   r&   )
rh   ri   Úisdirrƒ   ÚerrorÚjoinÚVOCAB_FILES_NAMESÚabspathr&   r   )rë   r	  r
  Úout_vocab_files       r]   Úsave_vocabularyz!TokenizersBackend.save_vocabularyý  s˜   € Ü�w‰w�}‰}˜^Ô,Ü�L‰LÐ,¨^Ð,<Ð<SÐTÔUØÜŸ™Ÿ™Ø±o˜_¨sÒ2È2ÔQbÐcoÑQpÑpó
ˆô �7‰7�?‰?˜4Ÿ?™?Ó+¬r¯w©w¯©¸~Ó/NÒNÜ�T—_‘_ nÔ5àÐ Ð r^   c                 ó@  — | j                   }| j                  }|€| j                  rd| _        | j                  }| j                  }|€| j
                  rd| _        | j                  r|dz   nd› d| j
                  rd|z   dz   nd› �}|› | j                  rd|z   dz   nd› d	| j
                  rd|z   dz   nd› �}g }| j                  r|j                  ||f«       | j
                  r|j                  ||f«       t        j                  |||¬
«      | j                  _
        y)ze
        Updates the underlying post processor with the current `bos_token` and `eos_token`.
        NFz:0 r³   z$A:0r?   z:0z:1z $B:1)ÚsingleÚpairÚspecial_tokens)rI   Úbos_token_idrÆ   rK   Úeos_token_idrÇ   rX   r	   ÚTemplateProcessingrÔ   r4   )rë   Úbosr  Úeosr  r  r  r  s           r]   rê   z'TokenizersBackend.update_post_processor
  s4  € ð �n‰nˆØ×(Ñ(ˆØˆ;˜4×-Ò-Ø!&ˆDÔà�n‰nˆØ×(Ñ(ˆØˆ;˜4×-Ò-Ø!&ˆDÔà%)×%7Ò%7�S˜5’[¸RÐ@ÀÐ[_×[mÒ[mÀcÈCÁiÐRVÒFVÐsuÐDvÐwˆØ�°×0BÒ0B˜3 ™9 tÒ+ÈÐKÈ5Ðgk×gyÒgyÐRUÐX[ÑR[Ð^bÒRbð  @Bð  QCð  DˆàˆØ×ÒØ×!Ñ! 3¨Ð"5Ô6Ø×ÒØ×!Ñ! 3¨Ð"5Ô6Ü)3×)FÑ)FØ °^ô*
ˆ�‰Õ&r^   c                 ó   — t        | dd«      S )NrÚ   F©r{   r  s    r]   rÇ   zTokenizersBackend.add_eos_token$  ó   € ä�tÐ-¨uÓ5Ð5r^   c                 ó   — t        | dd«      S )NrÙ   Fr  r  s    r]   rÆ   zTokenizersBackend.add_bos_token(  r  r^   c                 óR   — t         j                  | d|«       | j                  «        y )NrÚ   ©ÚobjectÚ__setattr__rê   ©rë   Úvalues     r]   rÇ   zTokenizersBackend.add_eos_token,  ó!   € ä×Ñ˜4Ð!1°5Ô9Ø×"Ñ"Õ$r^   c                 óR   — t         j                  | d|«       | j                  «        y )NrÙ   r"  r%  s     r]   rÆ   zTokenizersBackend.add_bos_token1  r'  r^   c                 ó@  — g }| j                   j                  «       D ]U  }|€Œt        |t        «      r|j	                  |«       Œ(t        |t
        «      sŒ9|j	                  t        |dd¬«      «       ŒW | j                  D ]R  }t        |t        «      r|j	                  |«       Œ%t        |t
        «      sŒ6|j	                  t        |dd¬«      «       ŒT |r| j                  |d¬«       t        | dd«      s| j                  j                  €| j                  «        yy)a[  
        Post-initialization hook that runs after the tokenizer is fully set up.
        This is called by from_pretrained() after loading the tokenizer, which allows
        us to add any special tokens that may have been passed as AddedToken objects.

        Child classes should call super()._post_init() if they override this method.
        NTF)rÍ   Ú
normalized)r  rÛ   )rä   rP   rT   r   rX   rY   rå   ræ   r{   rÔ   r4   rê   )rë   rû   Útoken_valuer¡   s       r]   Ú
_post_initzTokenizersBackend._post_init6  s  € ð ˆà×3Ñ3×:Ñ:Ó<ò 	^ˆKØÐ"ØÜ˜+¤zÔ2Ø×$Ñ$ [Õ1Ü˜K¬Õ-Ø×$Ñ$¤Z°ÀTÐV[Ô%\Õ]ð	^ð ×/Ñ/ò 	XˆEÜ˜%¤Ô,Ø×$Ñ$ UÕ+Ü˜E¤3Õ'Ø×$Ñ$¤Z°¸tÐPUÔ%VÕWð		Xñ à�O‰O˜M¸$ˆOÔ?ä�4Ð8¸$Ô?À4Ç?Á?×CaÑCaÐCiØ×&Ñ&Õ(ð Djr^   c                 ó:   — | j                   j                  d¬«      S )zP
        `int`: Size of the base vocabulary (without the added tokens).
        F©Úwith_added_tokens©rÔ   rç   r  s    r]   r  zTokenizersBackend.vocab_sizeV  s   € ð
 �‰×-Ñ-ÀÐ-ÓFÐFr^   c                 ó:   — | j                   j                  d¬«      S )NTr.  )rÔ   Ú	get_vocabr  s    r]   r2  zTokenizersBackend.get_vocab]  s   € Ø�‰×(Ñ(¸4Ð(Ó@Ð@r^   c                 ó"   — | j                  «       S rS   )r2  r  s    r]   r1   zTokenizersBackend.vocab`  s   € à�~‰~ÓÐr^   c                 ó–   — t        | j                  j                  «       d„ ¬«      D ��ci c]  \  }}|j                  |“Œ c}}S c c}}w )zÃ
        Returns the sorted mapping from string to index. The added tokens encoder is cached for performance
        optimisation in `self._added_tokens_encoder` for the slow tokenizers.
        c                 ó   — | d   S rÉ   re   ©rŸ   s    r]   rË   z8TokenizersBackend.added_tokens_encoder.<locals>.<lambda>j  ó   € ÐdhÐijÑdk€ r^   rÌ   ©rá   rG   r…   Úcontent©rë   ÚvÚks      r]   râ   z&TokenizersBackend.added_tokens_encoderd  s;   € ô *0°×0IÑ0I×0OÑ0OÓ0QÑWkÔ)l×m¡  A�—	‘	˜1‘ÓmÐmùÓmó   ªAc                 ó6   — | j                   j                  «       S )z¦
        Returns the added tokens in the vocabulary as a dictionary of index to AddedToken.

        Returns:
            `dict[str, int]`: The added tokens.
        )rÔ   Úget_added_tokens_decoderr  s    r]   rG   z&TokenizersBackend.added_tokens_decoderl  s   € ð �‰×7Ñ7Ó9Ð9r^   c                 ó–   — t        | j                  j                  «       d„ ¬«      D ��ci c]  \  }}|j                  |“Œ c}}S c c}}w )z¡
        Returns the added tokens in the vocabulary as a dictionary of token to index.

        Returns:
            `dict[str, int]`: The added tokens.
        c                 ó   — | d   S rÉ   re   r6  s    r]   rË   z3TokenizersBackend.get_added_vocab.<locals>.<lambda>‚  r7  r^   rÌ   r8  r:  s      r]   Úget_added_vocabz!TokenizersBackend.get_added_vocab{  s;   € ô *0°×0IÑ0I×0OÑ0OÓ0QÑWkÔ)l×m¡  A�—	‘	˜1‘ÓmÐmùÓmr=  c                  ó   — y)zN
        Returns True, to avoid expensive `assert tokenizer` gotchas.
        Tre   r  s    r]   Ú__bool__zTokenizersBackend.__bool__„  s   € ð r^   c                 ó:   — | j                   j                  d¬«      S )zD
        Size of the full vocabulary with the added tokens.
        Tr.  r0  r  s    r]   Ú__len__zTokenizersBackend.__len__Š  s   € ð �‰×-Ñ-ÀÐ-ÓEÐEr^   c                 ó   — | j                   S )zc
        `tokenizers.implementations.BaseTokenizer`: The Rust tokenizer used as a backend.
        )rÔ   r  s    r]   Úbackend_tokenizerz#TokenizersBackend.backend_tokenizer�  s   € ð
 �‰Ðr^   c                 ó.   — | j                   j                  S )zU
        `tokenizers.decoders.Decoder`: The Rust decoder for this tokenizer.
        )rÔ   Údecoderr  s    r]   rJ  zTokenizersBackend.decoder—  s   € ð
 �‰×&Ñ&Ð&r^   Tr.   Úreturn_token_type_idsÚreturn_attention_maskÚreturn_overflowing_tokensÚreturn_special_tokens_maskÚreturn_offsets_mappingÚreturn_lengthÚverbosec	                 óJ  — |€d| j                   v }|€d| j                   v }|r|j                  �|g|j                  z   }	n|g}	t        t        «      }
|	D ]Ê  }|
d   j	                  |j
                  «       |r|
d   j	                  |j                  «       |r|
d   j	                  |j                  «       |r|
d   j	                  |j                  «       |r|
d   j	                  |j                  «       |sŒ¤|
d   j	                  t        |j
                  «      «       ŒÌ |
|	fS )a¢  
        Convert the encoding representation (from low-level HuggingFace tokenizer output) to a python Dict and a list
        of encodings, take care of building a batch from overflowing tokens.

        Overflowing tokens are converted to additional examples (like batches) so the output values of the dict are
        lists (overflows) of lists (tokens).

        Output shape: (overflows, sequence length)
        Útoken_type_idsÚattention_maskÚ	input_idsÚspecial_tokens_maskÚoffset_mappingrÂ   )Úmodel_input_namesÚoverflowingr   rU   rX   ÚidsÚtype_idsrT  rV  ÚoffsetsrÓ   )rë   r.   rK  rL  rM  rN  rO  rP  rQ  Ú	encodingsÚencoding_dictr¥   s               r]   Ú_convert_encodingz#TokenizersBackend._convert_encodingž  s$  € ð( !Ð(Ø$4¸×8NÑ8NÐ$NÐ!Ø Ð(Ø$4¸×8NÑ8NÐ$NÐ!á$¨×)=Ñ)=Ð)IØ!˜
 X×%9Ñ%9Ñ9‰Ià!˜
ˆIä#¤DÓ)ˆØò 	;ˆAØ˜+Ñ&×-Ñ-¨a¯e©eÔ4á$ØÐ.Ñ/×6Ñ6°q·z±zÔBÙ$ØÐ.Ñ/×6Ñ6°q×7GÑ7GÔHÙ)ØÐ3Ñ4×;Ñ;¸A×<QÑ<QÔRÙ%ØÐ.Ñ/×6Ñ6°q·y±yÔAÚØ˜hÑ'×.Ñ.¬s°1·5±5«zÕ:ð	;ð ˜iÐ'Ð'r^   r¡   c                 óX   — | j                   j                  |«      }|€| j                  S |S rS   )rÔ   Útoken_to_idÚunk_token_id)rë   r¡   rú   s      r]   Ú#_convert_token_to_id_with_added_vocz5TokenizersBackend._convert_token_to_id_with_added_vocÍ  s,   € Ø—‘×+Ñ+¨EÓ2ˆØˆ=Ø×$Ñ$Ð$Øˆr^   rú   c                 óJ   — | j                   j                  t        |«      «      S rS   )rÔ   r§   r†   )rë   rú   s     r]   Ú_convert_id_to_tokenz&TokenizersBackend._convert_id_to_tokenÓ  s   € Ø�‰×*Ñ*¬3¨u«:Ó6Ð6r^   Ú
new_tokensc                 ór   — |r| j                   j                  |«      S | j                   j                  |«      S rS   )rÔ   Úadd_special_tokensræ   )rë   rf  r  s      r]   Ú_add_tokenszTokenizersBackend._add_tokensÖ  s/   € ÙØ—?‘?×5Ñ5°jÓAÐAà�‰×)Ñ)¨*Ó5Ð5r^   r  c                 ó8   — | j                   j                  |«      S )aG  
        Returns the number of added tokens when encoding a sequence with special tokens.

        <Tip>

        This encodes a dummy input and checks the number of added tokens, and is therefore not efficient. Do not put
        this inside your training loop.

        </Tip>

        Args:
            pair (`bool`, *optional*, defaults to `False`):
                Whether the number of added tokens should be computed in the case of a sequence pair or a single
                sequence.

        Returns:
            `int`: Number of special tokens added to sequences.
        )rÔ   Únum_special_tokens_to_add)rë   r  s     r]   rk  z+TokenizersBackend.num_special_tokens_to_addÜ  s   € ð& �‰×8Ñ8¸Ó>Ð>r^   rZ  Úskip_special_tokensc                 ó$  — t        |t        «      r| j                  j                  |«      S g }|rt	        | j
                  «      n	t	        «       }|D ]<  }t        |«      }||v rŒ|j                  | j                  j                  |«      «       Œ> |S )aì  
        Converts a single index or a sequence of indices in a token or a sequence of tokens, using the vocabulary and
        added tokens.

        Args:
            ids (`int` or `list[int]`):
                The token id (or token ids) to convert to tokens.
            skip_special_tokens (`bool`, *optional*, defaults to `False`):
                Whether or not to remove special tokens in the decoding.

        Returns:
            `str` or `list[str]`: The decoded token(s).
        )rT   r†   rÔ   r§   r‘   Úall_special_idsrX   )rë   rZ  rl  rþ   Úids_to_skiprú   s         r]   Úconvert_ids_to_tokensz'TokenizersBackend.convert_ids_to_tokensñ  sƒ   € ô �cœ3ÔØ—?‘?×.Ñ.¨sÓ3Ð3Øˆá3F”c˜$×.Ñ.Ô/ÌCËEˆØò 	>ˆEÜ˜“JˆEØ˜Ñ#ØØ�M‰M˜$Ÿ/™/×5Ñ5°eÓ<Õ=ð		>ð
 ˆr^   Útextrh  c                 óJ   —  | j                   d|||dœ|¤Žj                  «       S )N)rq  Ú	text_pairrh  re   )Ú_encode_plusrþ   )rë   rq  r  rh  r•   s        r]   ÚtokenizezTokenizersBackend.tokenize  s,   € Ø ˆt× Ñ Ðl d°dÐOaÑlÐekÑl×sÑsÓuÐur^   Úpadding_strategyr½   r¹   r¼   rÃ   rÁ   c                 óÆ  — | j                   j                  }| j                   j                  }|t        j                  k(  r|�|| j                   j                  «        na|||j                  | j                  dœ}	|€d}
n |	D �ci c]  }||j                  |d«      “Œ }
}|
|	k7  r | j                   j                  di |	¤Ž |t        j                  k(  r|�| j                   j                  «        yy|t        j                  k(  r|nd}||�|n| j                  | j                  | j                   | j"                  |dœ}	||	k7  r | j                   j$                  di |	¤Ž yyc c}w )a•  
        Define the truncation and the padding strategies for fast tokenizers (provided by HuggingFace tokenizers
        library) and restore the tokenizer settings afterwards.

        The provided tokenizer has no padding / truncation strategy before the managed section. If your tokenizer set a
        padding / truncation strategy before, then it will be reset to no padding / truncation when exiting the managed
        section.

        Args:
            padding_strategy ([`~utils.PaddingStrategy`]):
                The kind of padding that will be applied to the input
            truncation_strategy ([`~tokenization_utils_base.TruncationStrategy`]):
                The kind of truncation that will be applied to the input
            max_length (`int`):
                The maximum size of a sequence.
            stride (`int`):
                The stride to use when handling overflow.
            pad_to_multiple_of (`int`, *optional*):
                If set will pad the sequence to a multiple of the provided value. This is especially useful to enable
                the use of Tensor Cores on NVIDIA hardware with compute capability `>= 7.5` (Volta).
            padding_side (`str`, *optional*):
                The side on which the model should have padding applied. Should be selected between ['right', 'left'].
                Default value is picked from the class attribute of the same name.
        N)r¹   r¼   r¾   r»   )rÂ   r»   Úpad_idr_   rÀ   rÃ   re   )rÔ   ru   rt   r   ÚDO_NOT_TRUNCATEr×   r&  rº   rq   rÖ   r    Ú
DO_NOT_PADÚ
no_paddingÚ
MAX_LENGTHrÁ   Úpad_token_idr_   r¿   rØ   )rë   rv  r½   r¹   r¼   rÃ   rÁ   rö   r÷   ÚtargetÚcurrentr<  rÂ   s                r]   Úset_truncation_and_paddingz,TokenizersBackend.set_truncation_and_padding  sZ  € ðB —o‘o×0Ñ0ˆØ—?‘?×*Ñ*ˆàÔ"4×"DÑ"DÒDØÐ&Ø—‘×-Ñ-Õ/ð )Ø Ø/×5Ñ5Ø!×1Ñ1ñ	ˆFð Ð"Ø‘à@FÖG¸1˜1˜kŸo™o¨a°Ó6Ñ6ÐG�ÐGà˜&Ò Ø1�—‘×1Ñ1Ñ;°FÒ;àœ×9Ñ9Ò9ØÐ#Ø—‘×*Ñ*Õ,ð $ð $4´×7QÑ7QÒ#Q‘ZÐW[ˆFà Ø-9Ð-E™\È4×K\ÑK\Ø×+Ñ+Ø!Ÿ^™^Ø#×5Ñ5Ø&8ñˆFð ˜6Ò!Ø.�—‘×.Ñ.Ñ8°Ó8ð "ùò% Hs   ÂEr   rs  Úis_split_into_wordsÚreturn_tensorsrÝ   c                 óÐ  — d„ } ||«      st        d«      ‚|� ||«      st        d«      ‚|r6t        |t        t        f«      xr |xr t        |d   t        t        f«      }nt        |t        t        f«      }|rrt        |t        «      rt        d«      ‚|�;t        |«      t        |«      k7  r$t        dt        |«      › dt        |«      › d�«      ‚|�t        t        ||«      «      n|}n
|r||fgn|g}t        |t        t        f«      st        dt        |«      › d	�«      ‚| j                  |||||	|
¬
«       |€| j                  }| j                  j                  |k7  r|| j                  _        | j                  j                  |||¬«      }|D �cg c]  }| j                  ||||||||¬«      ‘Œ }}i }|d   d   D ]'  }|D ���cg c]  \  }}||   D ]  }|‘Œ Œ } }}}| ||<   Œ) |D ���cg c]  \  }}|D ]  }|‘Œ Œ }!}}}|r2g }"t        |«      D ]  \  }#\  }$}|"|#gt        |$d   «      z  z  }"Œ |"|d<   |d   D ]  }%| j!                  |%||«       Œ t#        ||!|¬«      }&|sb|€`|s^t#        |&j%                  «       D ��'ci c].  \  }}'|t        |'«      dkD  rt        |'d   t        «      r|'d   n|'“Œ0 c}'}|&j&                  «      }&|&S c c}w c c}}}w c c}}}w c c}'}w )Nc                 ó´  — t        | t        «      ryt        | t        t        f«      r±t	        | «      dk(  ryt        | d   t        «      ryt        | d   t        t        f«      rtt	        | d   «      dk(  st        | d   d   t        «      ryt        | d   d   t        t        f«      r/t	        | d   d   «      dk(  xs t        | d   d   d   t        «      S yyy)NTr   F)rT   rY   rU   rV   rÓ   )rÿ   s    r]   Ú_is_valid_text_inputz<TokenizersBackend._encode_plus.<locals>._is_valid_text_inputq  s¿   € Ü˜!œSÔ!ØÜ˜A¤¤e˜}Ô-Ü�q“6˜Q’;ØÜ  !¡¤cÔ*ØÜ  !¡¤t¬U mÔ4Ü˜1˜Q™4“y A’~¬°A°a±D¸±G¼SÔ)AØ#Ü# A a¡D¨¡G¬d´E¨]Ô;Ü" 1 Q¡4¨¡7›|¨qÑ0ÒO´J¸qÀ¹tÀA¹wÀq¹zÌ3Ó4OÐOà$à àr^   zêtext input must be of type `str` (single example), `list[str]` (batch or single pretokenized example) or `list[list[str]]` (batch of pretokenized examples) or `list[tuple[list[str], list[str]]]` (batch of pretokenized sequence pairs).r   zdwhen tokenizing batches of text, `text_pair` must be a list or tuple with the same length as `text`.zbatch length of `text`: z- does not match batch length of `text_pair`: ú.z:batch_text_or_text_pairs has to be a list or a tuple (got ú))rv  r½   r¹   r¼   rÃ   rÁ   )rh  Úis_pretokenized)r.   rK  rL  rM  rN  rO  rP  rQ  rU  Úoverflow_to_sample_mapping)Útensor_type)rÕ   rT   rU   rV   rY   Ú	TypeErrorrÓ   Úzipr0   r€  rÝ   rÔ   rÞ   Úencode_batchr_  rz   Ú&_eventual_warn_about_too_long_sequencer   r…   r]  )(rë   rq  rs  rh  rv  r½   r¹   r¼   r�  rÃ   rÁ   r‚  rK  rL  rM  rN  rO  rP  rQ  rÝ   r•   r…  Ú
is_batchedÚbatch_text_or_text_pairsr]  r.   Útokens_and_encodingsÚsanitized_tokensr­   rŸ   rô   r¥   ÚstackÚsanitized_encodingsr‰  r    ÚtoksrU  Úbatched_outputr&  s(                                           r]   rt  zTokenizersBackend._encode_plusY  s±  € ò0	ñ( $ DÔ)ÜðWóð ð
 Ð Ñ)=¸iÔ)HÜðWóð ñ Ü# D¬4´¨-Ó8Òh¸TÒhÄjÐQUÐVWÑQXÔ[_ÔafÐZgÓFh‰Jä# D¬4´¨-Ó8ˆJáä˜)¤SÔ)Üðóð ð Ð$¬¨T«´c¸)³nÒ)DÜ Ø.¬s°4«y¨kð :Ü˜I›Ð' qð*óð ð FOÐEZ¤t¬C°°iÓ,@Ô'AÐ`dÑ$ñ ?H¨¨yÐ(9Ñ':ÈdÈVÐ$ô Ð2´U¼D°MÔBÜØLÌTÐRjÓMkÐLlÐlmÐnóð ð 	×'Ñ'Ø-Ø 3Ø!ØØ1Ø%ð 	(ô 	
ð  Ð'Ø#'×#<Ñ#<Ð à�?‰?×0Ñ0Ð4HÒHØ4HˆD�O‰OÔ1ð —O‘O×0Ñ0Ø$Ø1Ø/ð 1ó 
ˆ	ð$ &ö 
ð ð ×"Ñ"Ø!Ø&;Ø&;Ø*CØ+EØ'=Ø+Øð #õ 	ð 
Ðð  
ð ÐØ'¨Ñ*¨1Ñ-ò 	*ˆCØ&:×NÐN™7˜4 ÀDÈÁIÒN¸q’QÐN�QÐNˆEÒNØ$)Ð˜SÒ!ð	*ð 1E×SÐS¡W Q¨ÈdÒSÈšqÐS˜qÐSÐÒSñ %Ø)+Ð&Ü )Ð*>Ó ?ò K‘�‘9�D˜!Ø*¨q¨c´C¸¸[Ñ8IÓ4JÑ.JÑJÑ*ðKà=WÐÐ9Ñ:à)¨+Ñ6ò 	XˆIØ×7Ñ7¸	À:ÈwÕWð	Xô 'Ð'7Ð9LÐZhÔiˆñ ˜nÐ4Ñ=VÜ*ð '5×&:Ñ&:Ó&<÷á"˜˜Uð ¤c¨%£j°1¢n¼ÀEÈ!ÁHÌdÔ9S˜% š(ÐY^Ñ^óð ×(Ñ(óˆNð ÐùòW 
ùô" OùäSùó"s   Æ KÇK
Ç3KÊ3K"
rþ   c                 óš   — | j                   j                  �%| j                   j                  j                  |«      S dj                  |«      S )Nr?   )rH  rJ  Údecoder  )rë   rþ   s     r]   Úconvert_tokens_to_stringz*TokenizersBackend.convert_tokens_to_stringó  sJ   € ð ×%Ñ%×-Ñ-Ð9ð ×"Ñ"×*Ñ*×1Ñ1°&Ó9ð	
ð —‘˜&Ó!ð	
r^   Ú	token_idsÚclean_up_tokenization_spacesc                 óÈ  — |j                  dd «       t        |t        «      r|g}t        |t        «      r|d   }| j                  j                  ||¬«      }|�|n| j                  }|rxt        | j                  j                  «      j                  dk(  r;| j                  s/t        j                  d| j                  j                  › d�«       |S | j                  |«      }|S )NÚuse_source_tokenizerrU  )rl  r   z=Ignoring clean_up_tokenization_spaces=True for BPE tokenizer aE  . The clean_up_tokenization post-processing step is designed for WordPiece tokenizers and is destructive for BPE (it strips spaces before punctuation). Set clean_up_tokenization_spaces=False to suppress this warning, or set clean_up_tokenization_spaces_for_bpe_even_though_it_will_corrupt_output=True to force cleanup anyway.)rg   rT   r†   rf   rÔ   r˜  r›  r0   rH  r/   ry   ÚGclean_up_tokenization_spaces_for_bpe_even_though_it_will_corrupt_outputrƒ   Úwarning_oncer  Úclean_up_tokenization)rë   rš  rl  r›  r•   rq  s         r]   Ú_decodezTokenizersBackend._decodeú  sç   € ð 	�
‰
Ð)¨4Ô0ä�i¤Ô%Ø"˜ˆIÜ�i¤Ô&Ø! +Ñ.ˆIØ�‰×%Ñ% iÐEXÐ%ÓYˆð ,Ð7ñ )à×2Ñ2ð 	%ñ
 (ô
 �T×+Ñ+×1Ñ1Ó2×;Ñ;¸uÒDØ×dÒdä×#Ñ#ðØŸ™×/Ñ/Ð0ð 1-ð-ôð ˆð ×1Ñ1°$Ó7�àˆr^   Ú
file_names.Úlegacy_formatc                 óº   — t        |«      }t        j                  j                  ||r|dz   ndt        z   «      }| j
                  j                  |«       ||fz   }|S )Nr  r³   )rY   rh   ri   r  ÚTOKENIZER_FILErH  Úsave)rë   r	  r¢  r£  r
  r%   s         r]   Ú_save_pretrainedz"TokenizersBackend._save_pretrained%  s]   € ô ˜^Ó,ˆäŸ™Ÿ™Ø±o˜_¨sÒ2È2ÔQ_Ñ_ó
ˆð 	×Ñ×#Ñ# NÔ3Ø >Ð"3Ñ3ˆ
àÐr^   c           	      ó`
  — t        j                  | j                  j                  «       «      }|j	                  d«      }|j	                  d«      }	d}
|d   d   dk(  ri |d   d<   g |d   d<   np|d   d   d	k(  r=|d   d
   �]|d   d
   }|d   d   |   d   }
|�	|
|v r||
   }
d|d   d
<   |
dgg|d   d<   n(|d   d   dv r	i |d   d<   nt        d|d   d   › d�«      ‚|�"d|d   v r|d   d   |v r||d   d      |d   d<   t        j                  t        j                  |«      «      }g }|D ]b  }|j	                  dd«      }|j	                  dd«      }|d   d   d	k7  r|sŒ5|�|d   |v r||d      |d<   |j                  t        d(i |¤Ž«       Œd |�|j                  |«       |d   d   dk(  rd|vr|d   d   �|d   d   |d<   |d   d   dk(  rd|vr|d   d   �|d   d   |d<   |d   d   d	k(  r|
�|
|d<   |d   �V|d   d   dk(  s*|d   d   dk(  r@d|d   v r9t        d„ |d   d   D «       «      r!t        j                  j                  «       |d<   t         |d   d      } |d(||dœ|¤Ž}|j#                  |||¬«       |	��&t        j                  |j                  «       «      }d|	v rŽ|	d   D ]†  }|	d   |   d   }|�|D �cg c]  }|j%                  ||«      ‘Œ }}||	d   |   d<   |D ]   }|j'                  |«      }|�Œt        d «      ‚ |D �cg c]  }|j'                  |«      ‘Œ c}|	d   |   d!<   Œˆ d"D ]?  }||	v sŒ|	|   \  }}|�	||v r||   }|j'                  |«      }|€t        d «      ‚||g|	|<   ŒA |	|d<   t        j                  t        j                  |«      «      }| j(                  j+                  «       }t,        j.                  D ]”  }t1        | |«      €Œt1        | |«      }|�	||v r||   }| j2                  j%                  |d«      }t5        |t        «      r=t        ||j6                  |j8                  |j:                  |j<                  d#¬$«      ||<   Œ�|||<   Œ– | j>                  r| j>                  j+                  «       ng }|�|j                  |«       tA        |«      dkD  r||d%<   ||d&<   	  | jB                  d(i |¤ŽS c c}w c c}w # tD        $ rE}d'tG        |«      v r2|j	                  d&d«        | jB                  d(i |¤Ž}||_        |cY d}~S ‚ d}~ww xY w))uf  
        Trains a tokenizer on a new corpus with the same defaults (in terms of special tokens or tokenization pipeline)
        as the current one.

        Args:
            text_iterator (generator of `list[str]`):
                The training corpus. Should be a generator of batches of texts, for instance a list of lists of texts
                if you have everything in memory.
            vocab_size (`int`):
                The size of the vocabulary you want for your tokenizer.
            length (`int`, *optional*):
                The total number of sequences in the iterator. This is used to provide meaningful progress tracking
            new_special_tokens (list of `str` or `AddedToken`, *optional*):
                A list of new special tokens to add to the tokenizer you are training.
            special_tokens_map (`dict[str, str]`, *optional*):
                If you want to rename some of the special tokens this tokenizer uses, pass along a mapping old special
                token name to new special token name in this argument.
            kwargs (`dict[str, Any]`, *optional*):
                Additional keyword arguments passed along to the trainer from the ðŸ¤— Tokenizers library.

        Returns:
            [`PreTrainedTokenizerFast`]: A new tokenizer of the same type as the original one, trained on
            `text_iterator`.

        r3   r4   Nr/   r0   r   r1   r2   r   rŽ   r   g        )r#   r$   z;This method does not support this type of tokenizer (found z-) only BPE, Unigram, WordLevel and WordPiece.rM   rÍ   Úidr9  Úcontinuing_subword_prefixÚend_of_word_suffixrÎ   Ú	ByteLevelr:   Úpretokenizersc              3   ó,   K  — | ]  }|d    dk(  –— Œ y­w)r0   r¬  Nre   )Ú.0Úpretokenizers     r]   ú	<genexpr>z<TokenizersBackend.train_new_from_iterator.<locals>.<genexpr>ž  s"   è ø€ ò à$ð ! Ñ(¨KÕ7ñùs   ‚Úinitial_alphabet)r  r  )rÂ   Útrainerr  rþ   zQAttempted to set a token in the post processor that does not exist in the mappingrZ  )r“   ÚsepT)Úsingle_wordÚlstripÚrstripr*  rÍ   rO   r+   z7multiple values for keyword argument 'tokenizer_object're   )$ro   ÚloadsrÔ   Úto_strrg   rÕ   rl   rr   rs   rX   r   rW   ÚanyÚpre_tokenizers_fastr¬  ÚalphabetÚMODEL_TO_TRAINER_MAPPINGÚtrain_from_iteratorrq   ra  rÐ   rÑ   r   ÚSPECIAL_TOKENS_ATTRIBUTESr{   rä   rT   rµ  r¶  r·  r*  rO   rÓ   r  r‹  rY   )rë   Útext_iteratorr  rÂ   Únew_special_tokensÚspecial_tokens_mapr•   r™   r3   r4   rM   rŽ   rµ   r  Úadded_tokenrÍ   rô   Útrainer_classr³  Útrained_tokenizer_jsonr­   rþ   r¡   r¦   Úspecial_tokenÚspecial_token_fullrO   r¥   Únew_tokenizers                                r]   Útrain_new_from_iteratorz)TokenizersBackend.train_new_from_iterator6  sÜ  € ôD Ÿ™ D§O¡O×$:Ñ$:Ó$<Ó=ˆà%×)Ñ)¨.Ó9ˆà'×+Ñ+Ð,<Ó=ˆàˆ	à˜'Ñ" 6Ñ*¨eÒ3Ø/1ˆN˜7Ñ# GÑ,Ø02ˆN˜7Ñ# HÒ-Ø˜GÑ$ VÑ,°	Ò9Ø˜gÑ& xÑ0Ð<Ø'¨Ñ0°Ñ:�Ø*¨7Ñ3°GÑ<¸VÑDÀQÑG�	Ø%Ð1°iÐCUÑ6UØ 2°9Ñ =�IØ45�˜wÑ'¨Ñ1Ø5>ÀÐ4DÐ3E�˜wÑ'¨Ò0Ø˜GÑ$ VÑ,Ð0JÑJØ/1ˆN˜7Ñ# GÒ,äØMÈnÐ]dÑNeÐflÑNmÐMnð o>ð >óð ð Ð*Ø˜~¨gÑ6Ñ6Ø˜wÑ'¨Ñ4Ð8JÑJà3EÀnÐU\ÑF]Ð^iÑFjÑ3kˆN˜7Ñ# KÑ0ä!×*Ñ*¬4¯:©:°nÓ+EÓFˆ	ð ˆØ'ò 	=ˆKØ!—o‘o i°Ó6ˆGØ—‘  dÓ+ˆAØ˜gÑ& vÑ.°)Ò;ÁGØØ!Ð-°+¸iÑ2HÐL^Ñ2^Ø);¸KÈ	Ñ<RÑ)S�˜IÑ&Ø×!Ñ!¤*Ñ";¨{Ñ";Õ<ð	=ð Ð)Ø×!Ñ!Ð"4Ô5ð ˜7Ñ# FÑ+¨uÒ4Ø+°6Ñ9Ø˜wÑ'Ð(CÑDÐPà2@ÀÑ2IÐJeÑ2fˆFÐ.Ñ/à˜7Ñ# FÑ+¨uÒ4Ø$¨FÑ2Ø˜wÑ'Ð(<Ñ=ÐIà+9¸'Ñ+BÐCWÑ+XˆFÐ'Ñ(Ø˜'Ñ" 6Ñ*¨iÒ7¸IÐ<QØ"+ˆF�;ÑØ˜/Ñ*Ð6à˜Ñ/°Ñ7¸;ÒFØ! /Ñ2°6Ñ:¸jÒHØ# ~°oÑ'FÑFÜñ à(6°Ñ(GÈÑ(Xôô ô
 .A×-JÑ-J×-SÑ-SÓ-U�Ð)Ñ*ä0°ÀÑ1HÈÑ1PÑQˆÙÐ_¨:ÀnÑ_ÐX^Ñ_ˆØ×%Ñ% m¸FÈGÐ%ÔTàÑ%Ü%)§Z¡Z°	×0@Ñ0@Ó0BÓ%CÐ"à >Ñ1Ø)Ð*:Ñ;ò v�CØ+Ð,<Ñ=¸cÑBÀ8ÑL�FØ)Ð5ØTZÖ![È5Ð"4×"8Ñ"8¸ÀÕ"FÐ![˜Ð![ØFL�NÐ#3Ñ4°SÑ9¸(ÑCØ!'ò ˜Ø#,×#8Ñ#8¸Ó#?˜Ø#Ñ+Ü",Ø só#ð ðð ouÖCuÐejÀI×DYÑDYÐZ_ÕD`ÒCu�NÐ#3Ñ4°SÑ9¸%Ò@ðvð "0ò 
F�Ø  NÒ2Ø-¨mÑ<‘H�E˜1Ø)Ð5¸%ÐCUÑ:UØ 2°5Ñ 9˜Ø(×4Ñ4°UÓ;�HØÐ'Ü(Øoóð ð 6;¸HÐ4E�N =Ò1ð
Fð 8FÐ"Ð#3Ñ4Ü%×.Ñ.¬t¯z©zÐ:PÓ/QÓRˆIà×!Ñ!×&Ñ&Ó(ˆä,×FÑFò 	2ˆEÜ�t˜UÓ#Ñ/Ü '¨¨eÓ 4�Ø%Ð1°mÐGYÑ6YØ$6°}Ñ$E�Mà%)×%=Ñ%=×%AÑ%AÀ%ÈÓ%NÐ"ÜÐ0´*Ô=ä$.Ø%Ø$6×$BÑ$BØ1×8Ñ8Ø1×8Ñ8Ø#5×#@Ñ#@Ø $ô%�F˜5’Mð %2�F˜5’Mð%	2ð* DH×C\ÒC\˜t×8Ñ8×=Ñ=Ô?ÐbdÐØÐ)Ø ×'Ñ'Ð(:Ô;ÜÐ#Ó$ qÒ(Ø-AˆFÐ)Ñ*ð &/ˆÐ!Ñ"ð	Ø!�4—>‘>Ñ+ FÑ+Ð+ùò{ "\ùò Dvøôj ò 	àHÌCÐPQËFÑRð —
‘
Ð-¨tÔ4Ø . §¡Ñ 8°Ñ 8�Ø+4�Ô(Ø$Õ$ð ûð	ús0   ËSÌSÓS Ó	T-Ó(9T(Ô!T-Ô'T(Ô(T-c
           
      óÔ  ‡‡— ddl Šddlm} ddlmŠ ddlm} ddlm}  |d¬«      d	t        d
t        fˆˆfd„«       }|s
t        «       rd}|��|s|�s ||«      �rþ ||d|||dd|¬«      }d}|�¥t        |d¬«      5 }t        j                  |«      }ddd«       j                  d«      }|j                  d«      }|r-|j!                  |«      |j!                  d«      k  r
|r/|�-|dvr)|S |r%|j!                  |«      |j!                  d«      k\  r|S d}|s|�s@ ||«      �r7|rd|v rt#        |d|d   «       |	€5t%        |dd«      s(t#        |dd«       t&        j)                  d|› d�«       |S |	du st%        |dd«      rÙt#        |dd«       ddl}|j,                  j/                  |j1                  d«      d¬«      }|j2                  }t5        ||j,                  j6                  «      r||j2                  d<   |S t5        ||j,                  j8                  «      r|j,                  j;                  dd¬«      }|j,                  j7                  ||g«      |_        |S # 1 sw Y   �ŒËxY w)af  
        Patches mistral related tokenizers with incorrect regex if detected
            1) Local file with an associated config saved next to it
                >> Model type one of the mistral models (on older versions)
            2) Remote models on the hub from official mistral models
                >> Tags including `base_model:.*mistralai`
        r   N)Ú	lru_cache)Ú
model_info)Úversionr   é€   )ÚmaxsizeÚmodel_idrQ   c                 ó¦   •— 	  ‰| «      }|j                  �,‰j                  ddj                  |j                  «      «      ryy# t         $ r Y yw xY w)NFzbase_model:.*mistralair³   T)r‚   ÚtagsÚsearchr  )rÐ  r/   rÌ  Úres     €€r]   Úis_base_mistralz?TokenizersBackend._patch_mistral_regex.<locals>.is_base_mistral  sT   ø€ ðÙ" 8Ó,�ð �z‰zÐ%Ø—9‘9Ð5°r·w±w¸u¿z¹zÓ7JÔKØØøô ò áðús   ƒA Á	AÁATzconfig.jsonF)Ú	cache_dirr¡   Úlocal_files_onlyÚ%_raise_exceptions_for_missing_entriesÚ'_raise_exceptions_for_connection_errorsÚ_commit_hashr,   r-   Útransformers_versionrš   z5.0.0)ÚmistralÚmistral3ÚvoxtralÚ	ministralÚpixtralrÏ   z$The tokenizer you are loading from 'a  ' with an incorrect regex pattern: https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503/discussions/84#69121093e8b480e709447d5e. This will lead to incorrect tokenization. You should set the `fix_mistral_regex=True` flag when loading this tokenizer to fix this issue.zÓ[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]*[\p{Ll}\p{Lm}\p{Lo}\p{M}]+|[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]+[\p{Ll}\p{Lm}\p{Lo}\p{M}]*|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n/]*|\s*[\r\n]+|\s+(?!\S)|\s+Úisolated)ÚpatternÚbehavior)r±   Ú	use_regex)rÔ  Ú	functoolsrË  Úhuggingface_hubrÌ  Ú	packagingrÍ  Útransformers.utils.hubr   rY   Úboolr   rn   ro   rp   rq   ÚparseÚsetattrr{   rƒ   r„   rÅ   Úpre_tokenizersÚSplitÚRegexrÎ   rT   r:   Ú	Metaspacer¬  )r“   rµ   Úpretrained_model_name_or_pathr¡   rÖ  r×  rÚ  Úis_localrÐ   rÏ   r•   rË  rÍ  r   rÕ  Ú_config_fileÚmistral_config_detectedÚfÚ_configrÛ  Útransformers_model_typerÅ   Úsplit_pretokenizerÚcurrent_pretokenizerrÌ  rÔ  s                           @@r]   ré   z&TokenizersBackend._patch_mistral_regexû  sÂ  ù€ ó* 	Ý'å.Ý%å6á	˜3Ô	ð		¤cð 		¬dõ 		ó 
 ð		ñ œÔ0ØˆHà(Ñ4ÙšX©/Ð:WÕ*Xá&Ø-ØØ#ØØ!1Ø6;Ø8=Ø)ô	ˆLð ',Ð#ØÐ'Ü˜,°Ô9ð +¸QÜ"Ÿi™i¨›l�G÷+à'.§{¡{Ð3IÓ'JÐ$Ø*1¯+©+°lÓ*CÐ'ñ
 (¨G¯M©MÐ:NÓ,OÐRY×R_ÑR_Ð`gÓRhÒ,há Ø3Ð?Ø3ð ñð  )Ð(Ù)¨g¯m©mÐ<PÓ.QÐU\×UbÑUbÐcjÓUkÒ.kØ$Ð$à*.Ð'á&ªx¹OÐLiÕ<jáÐ#6¸+Ñ#EÜ˜IÐ':¸KÐH[Ñ<\Ô]ð %Ð,´W¸YÐH[Ð]bÔ5cÜ˜IÐ':¸EÔBÜ—N‘NØ>Ð?\Ð>]ð ^eð eôðH Ðð? '¨$Ñ.´'¸)ÐEXÐZ_Ô2`Ü˜IÐ':¸DÔAÛ%à)3×)BÑ)B×)HÑ)HØ *× 0Ñ 0ð só!ð ",ð	 *Ió *Ð&ð ,5×+BÑ+BÐ(ä!Ð"6¸
×8QÑ8Q×8ZÑ8ZÔ[à5G˜	×/Ñ/°Ñ2ð" Ðô &Ð&:¸J×<UÑ<U×<_Ñ<_Ô`Ø3=×3LÑ3L×3VÑ3VØ16À%ð 4Wó 4Ð0ð
 3=×2KÑ2K×2TÑ2Tà 2Ø 4ðó3˜	Ô/ð Ð÷O+ñ +ús   Á>IÉI')FrS   )NNFFFFT)NF)FN)NN)NNN)NNFNFNN)Cry   Ú
__module__Ú__qualname__Ú__doc__r  r  r/   rÔ   Úclassmethodr®   r*   Úpropertyré  r  r  rY   rV   r  rê   rÇ   rÆ   Úsetterr,  r†   r  rf   r2  r1   râ   r   rG   Ú_added_tokens_encoderÚ_added_tokens_decoderrB  rD  rF  rl   rH  ÚDecoderFastrJ  ÚEncodingFastr   rU   r_  rc  re  ri  rk  rp  ru  r    r   r€  rz  ry  r   r   r   rt  r™  r¡  rh   ÚPathLiker§  rÉ  ré   Ú__classcell__)r  s   @r]   r(   r(   S   s  ø„ ñ
ð *ÐØ€EØ€Jàò`ó ð`ôDa)ðF ð˜ò ó ðð ð¨ò ó ðñ!¨cð !ÀCÈ$ÁJð !ÐZ_Ð`cÑZdó !ò
ð4 ñ6ó ð6ð ñ6ó ð6ð ×Ññ%ó ð%ð ×Ññ%ó ð%ò)ð@ ðG˜Cò Gó ðGðA˜4  S ™>ó Að ð �t˜C ˜H‘~ò  ó ð ð ðn d¨3°¨8¡nò nó ðnð ð: d¨3°
¨?Ñ&;ò :ó ð:ð 1ÐØ0Ððn  c¨3 h¡ó nð˜$ó ðF˜ó Fð ð =ò ó ðð ð'˜ò 'ó ð'ð .2Ø-1Ø*/Ø+0Ø',Ø#Øñ-(àð-(ð  $ d™{ð-(ð  $ d™{ð	-(ð
 $(ð-(ð %)ð-(ð !%ð-(ð ð-(ð ð-(ð 
ˆt�C˜�H‰~˜t LÑ1Ð1Ñ	2ó-(ð^¸ð Àó ð7¨#ð 7°#¸±*ó 7ñ6 d¨3°Ñ+;Ñ&<ð 6ÐWZó 6ñ?¨dð ?¸só ?ñ*¨¨t°C©y©ð Ètð Ð`cÐfjÐknÑfoÑ`oó ñ4v˜Sð v¨¨d©
ð vÈtð vÐjnÐorÑjsó vðI9à)ðI9ð 0ðI9ð ð	I9ð
 ðI9ð   $™JðI9ð ˜D‘jóI9ð\ gkØ#'Ø,;×,FÑ,FØ2D×2TÑ2TØ!%ØØ$)Ø)-Ø#'Ø&*Ø-1Ø-1Ø*/Ø+0Ø',Ø#ØØ,0ñ)XàÐ+Ñ+¨d°9©oÑ=ÀÐEVÑ@WÑWðXð Ð0Ñ0°4¸	±?ÑBÀTÐJ[ÑE\Ñ\Ð_cÑcðXð !ð	Xð
 *ðXð 0ðXð ˜$‘JðXð ðXð "ðXð   $™JðXð ˜D‘jðXð ˜t™ðXð  $ d™{ðXð  $ d™{ðXð $(ðXð  %)ð!Xð" !%ð#Xð$ ð%Xð& ð'Xð( # T™kð)Xð, 
ó-Xðt
¨t°C©yð 
¸Só 
ð %*Ø48ñ	)à˜˜c™‘?ð)ð "ð)ð '+¨T¡kð	)ð 
ó)ð^ &*Ø&*ñà˜bŸk™kÑ)ðð ˜#˜s˜(‘Oðð ˜d‘{ð	ð
 ˜t™ðð 
ˆs�Cˆx‰óð* ØØóCðJ ð
 ØØØØØØòCó ôCr^   r(   )Crû  rÑ   ro   rh   Úcollectionsr   Úcollections.abcr   Úshutilr   Útypingr   Útokenizers.pre_tokenizersrì  r»  ræ  r   rÅ   r   r	   r
   r  r   rl   Útokenizers.decodersr   r  Útokenizers.modelsr   r   Útokenizers.trainersr   r   r   r   rè  r   r~   r   Úintegrations.ggmlr   Úmodeling_gguf_pytorch_utilsr   Útokenization_utils_baser   r   r   r   r   r   r   Úutilsr    r!   r"   Ú
get_loggerry   rƒ   r¥  ÚSPECIAL_TOKENS_MAP_FILEÚTOKENIZER_CONFIG_FILEÚTIKTOKEN_VOCAB_FILEÚADDED_TOKENS_FILEr½  r  r(   ÚPreTrainedTokenizerFastre   r^   r]   ú<module>r     s÷   ðñó
 Û Û 	Ý #Ý $Ý Ý å 7Ý +ß -Ý /Ý 1Ý 6ß *ß ^Ó ^å .å 0Ý 5Ý =÷÷ ñ ÷ @Ñ ?ð 
ˆ×	Ñ	˜HÓ	%€ð "€Ø3Ð Ø/Ð Ø'Ð ð (Ð à ð ñ Ð ð ØØ!Ø!ñ	Ð ð (6ÐEXÑYÐ ñ Ð,Ó-ôkÐ/ó kó .ðkð^) ,Ñ r^   