ó
    pyüi, ã                   ó¶  • S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJr  SSKJrJr  SSKJrJ r J!r!J"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*  SSK+J,r,J-r-J.r.J/r/J0r0J1r1J2r2  SSK3J4r4J5r5J6r6  \6Rn                  " \85      r9Sr:Sr;Sr<Sr=Sr>\,S-  r,\\ \!\"S.r?\:\=S.r@\5" \,5       " S S\/5      5       rA\ArBg)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            )       ó^  ^ • \ rS rSrSr\rSrSr\	SNS j5       r
U 4S jr\S\4S j5       r\S\4S	 j5       rSOS
\S\S-  S\\   4S jjrS r\S 5       r\S 5       r\R,                  S 5       r\R,                  S 5       rS r\S\4S j5       rS\\\4   4S jr\S\\\4   4S j5       r\S\\\4   4S j5       r\S\\\4   4S j5       r\r \r!S\\\4   4S jr"S\4S jr#S\4S jr$\S\%4S j5       r&\S\'4S j5       r(       SPS\)S\S-  S \S-  S!\S"\S#\S$\S%\S\\\\*4   \+\)   4   4S& jjr,S'\S\4S( jr-S)\S\S-  4S* jr.SNS+\+\\-     S\4S, jjr/SNS-\S\4S. jjr0SNS/\\+\   -  S0\S\\+\   -  4S1 jjr1SQS2\S-\S-  S3\S\+\   4S4 jjr2S5\3S6\4S7\S8\S9\S-  S:\S-  4S; jr5SS\3Rl                  \4Rn                  SS<SSSSSSSSSSSS4S2\8\9-  \+\8   -  \+\9   -  S=\8\9-  \+\8   -  \+\9   -  S-  S3\S5\3S6\4S7\S-  S8\S>\S9\S-  S:\S-  S?\S-  S\S-  S \S-  S!\S"\S#\S$\S%\S@\S-  S\:4(SA jjr;SB\+\   S\4SC jr<  SRSD\\+\   -  S0\SE\S-  S\4SF jjr=  SSS
\\>R~                  -  SG\\SH4   SI\S-  S\S-  S\\SH4   4
SJ jjr@   STSK jrA\	       SUSL j5       rBSMrCU =rD$ )VÚTokenizersBackendéS   a5  
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                 ó"  ^(• [        U5      nUR                  SS5      nUb_  [        R                  R	                  U5      (       a;  U [
        L d  SU R                  ;  d  U(       a  [        R                  " U5      US'   U$ UGb  [        R                  R	                  U5      (       GaÝ  [        USS9 n[        R                  " U5      nSSS5        WR                  S0 5      R                  S5      nUS	;  a]  [        U5      n[        US   5      n	0 U	S
'   US:X  a  / U	S'   X˜S'   / US'   [        R                  " [        R                  " U5      5      n
O[        R                  " U5      n
U
R                  US'   U
R                   US'   U
R"                  US'   U
R"                  b  U
R"                  US'   U
R                   b  U
R                   US'   UR                  S5      nU(       aw  UR                  SS5      S:X  a  US   nO[%        U[&        5      (       d  U/nU H=  nUR                  S5      S:X  d  M  SU;   d  M"  SSKnUR+                  US   5      US'     O   UR                  S0 5      R                  S
S5      nU R,                  c0  [%        U[&        5      (       a  ['        [/        [0        U5      5      nGO0U R,                  R2                  S:X  aV  [%        U[&        5      (       a@  U(       a9  [%        US   [&        [0        45      (       a  U Vs/ s H  n[1        U5      PM     nnOÀU R,                  R2                  S:X  a"  [5        U5       VVs0 s H	  u  nnUU_M     nnnO„U R,                  R2                  S:X  d  U R,                  R2                  S:X  aP  [%        U[&        5      (       a;  [5        U5       VVs0 s H#  u  nn[%        U[&        5      (       a  US   OUU_M%     nnnXãS
'   [7        U SS5      nSUR                  S0 5      ;   an  U(       ag  UR2                  S:X  aW  US   S   nU Vs/ s H=  n[%        U[8        5      (       a  [1        UR;                  S5      5      O
[1        U5      PM?     nnUUS'   U$ UR                  S5      nUR                  S5      nUR                  S
5      nUR                  S5      n[%        U[8        5      (       a`  UR=                  S 5      (       aJ  [        R                  R	                  U5      (       a&  S!S"KJ n  U" US#9RC                  U5      u  US
'   US'   U$ [%        U[8        5      (       Ga´  [        R                  R	                  U5      (       Ga�  UR=                  S$5      (       Gax   S!S%KJ"n  U" U5      nURF                  " U R,                  40 UD6n S!S&KJ$n  UR                  U R2                  5      nUb#  [K        US'5      (       a  URL                  " S?0 UD6n[K        U S+5      (       a  U RT                  " S?0 UD6nSU;  GaØ  U [
        L d  SU R                  ;  Ga¾  UR                  S
S5      nUR                  SS5      nUR                  S,5      =(       d    0 nUb   U(       a™  URW                  5        VVs0 s H	  u  nnUU_M     nnnURW                  5        H_  u  nn[Y        U5      n[9        U5      nUR                  U5      n U (       d  M6  U U:w  d  M>  UU;  d  MF  UR                  U 5      UU'   UUU'   Ma     [Z        R\                  " UR^                  UUS-9n!U!bº  U!US'   UR^                  R`                  n"U"Rb                  S:¼  a%  URe                  S.U"Rf                  =(       d    S/5        U"Rh                  S:¼  a%  URe                  S0U"Rj                  =(       d    S15        U"Rl                  S:¼  a%  URe                  S2U"Rn                  =(       d    S35        U$ UcC  [%        U[8        5      (       a.  [        R                  R	                  U5      (       a
  UUS
'   US
   nUcC  [%        U[8        5      (       a.  [        R                  R	                  U5      (       a
  UUS'   US   nUc§  U R,                  bš  U R,                  R2                  S:X  a€  [%        U[         5      (       ak  S:[t        [v           S;[&        [8           4U(4S< jjm(/ S=Qn%[y        5       n&U% H&  n'U'U;   d  M  U&R{                  T(" UU'   /5      5        M(     [}        UU&S>9nUUS'   U$ ! , (       d  f       GN~= fs  snf s  snnf s  snnf s  snf ! [N         a1  n[P        RS                  S(U R2                   S)U S*35         SnAGNšSnAff = fs  snnf ! [N         aV  n[P        RS                  S4U S5U S635        S!S7KJ8n#  U#" UUR                  S85      S99n$U$Rs                  5       US'    SnAU$ SnAff = f)@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)Úprotor2   r3   Ú	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&   rP   ÚvaluesÚreturnc                 óÄ   >• / nU  HV  nUc  M  [        U[        [        45      (       a  UR                  T" U5      5        M<  UR	                  [        U5      5        MX     U$ ©N)Ú
isinstanceÚlistÚtupleÚextendÚappendÚstr)rQ   Ú	collectedÚvalÚ_iter_special_tokenss      €Úg/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/tokenization_utils_tokenizers.pyr]   ÚHTokenizersBackend.convert_to_native_format.<locals>._iter_special_tokens)  sY   ø€ Ø')�	Û!�CØ‘{Ù Ü! #¬¬e }×5Ñ5Ø!×(Ñ(Ñ)=¸cÓ)BÖCà!×(Ñ(¬¨S«Ö2ñ "ð !Ð ó    )	Ú	pad_tokenrN   rJ   rL   Ú	sep_tokenÚ	cls_tokenÚ
mask_tokenÚadditional_special_tokensrP   )Úskip_tokens© )?ÚdictÚpopÚosÚpathÚisfiler(   Ú__dict__ÚTokenizerFastÚ	from_fileÚopenÚjsonÚloadÚgetÚfrom_strÚdumpsr5   ÚpaddingÚ
truncationrU   rV   Úbase64Ú	b64decoder0   ÚmaprW   Ú__name__Ú	enumerateÚgetattrrZ   ÚsplitÚendswithÚconvert_slow_tokenizerrB   Úextract_vocab_merges_from_modelrD   ÚextractrE   ÚhasattrrF   Ú	ExceptionÚloggerÚwarningrG   ÚitemsÚintr   Úbuild_tokenizer_from_spm_protorI   Útrainer_specÚbos_idÚ
setdefaultÚ	bos_pieceÚeos_idÚ	eos_pieceÚunk_idÚ	unk_piecerO   Ú	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_configr:   rx   r2   ÚitemÚiÚtokenr3   Úmerger&   rA   rB   rD   Ú	extractorrE   Úconverter_classÚerH   Útoken_idÚid_to_tokenÚ	new_tokenÚcurrent_tokenr,   Ú
proto_specrO   Ú	converterÚspecial_tokens_keysrf   Úkeyr]   s)                                           @r^   Úconvert_to_native_formatÚ*TokenizersBackend.convert_to_native_formate   sH	  ø€ ô ˜F“|ˆØ*×.Ñ.Ð/?ÀÓFÐð  Ñ+Ü—‘—‘Ð2×3Ñ3ØÔ)Ò)¨Z¸s¿|¹|Ó-KÖO`ä/<×/FÒ/FÐGZÓ/[ˆLÐ+Ñ,ØÐØ Ò,´·±·±Ð@S×1TÒ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ñ ñ #4ð #×&Ñ& 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\Ñ9\Ù5:Ó;²U¨TœU 4ž[±U�EÐ;øØ—‘×#Ñ# {Ó2Ü2;¸EÔ2BÔCÒ2B¡h a¨˜ šÑ2B�ÑC�Ø—‘×#Ñ# uÓ,°·	±	×0BÑ0BÀkÓ0QÜ˜e¤T×*Ñ*Ü_hÐinÔ_oÔpÒ_oÑS[ÐSTÐV[¬°E¼4×)@Ñ)@˜U 1šXÀeÈQÒNÑ_o�EÑpØ$)˜Ñ!ä   g¨tÓ4ˆJØ˜>×-Ñ-¨g°rÓ:Ó:Æ
Èz×ObÑObÐfkÓOkØ'¨Ñ0°Ñ:�ÙkqÓrÒkqÐbg´ZÀÄs×5KÑ5Kœ% §¡¨CÓ 0Ô1ÔQVÐW\ÓQ]Ò]Ñkq�ÐrØ)/�˜XÑ&àÐà!×%Ñ% lÓ3ˆ
Ø"×&Ñ& }Ó5ˆØ× Ñ  Ó)ˆØ×!Ñ! (Ó+ˆô �j¤#×&Ñ&¨:×+>Ñ+>¸}×+MÑ+MÔRT×RYÑRY×R`ÑR`Ðak×RlÑRlÝ@á<LØ%ñ=ç-Ñ-¨jÓ9ñ :ˆL˜Ñ! <°Ñ#9ð  Ðô �j¤#×&Ò&¬2¯7©7¯>©>¸*×+EÒ+EÈ*×J]ÑJ]Ð^f×JgÒJgðFIÝJñ 3°:Ó>�	Ø(×0Ò0°·±ÑK¸lÑK�ð	ÝOà&=×&AÑ&AÀ#Ç,Á,Ó&O�OØ&Ñ2´w¸ÐPb×7cÑ7cØ'6×'GÒ'GÑ'WÈ,Ñ'W˜ô
 ˜3Ð 8×9Ñ9Ø#&×#=Ò#=Ñ#MÀÑ#M�Lð
 &¨\Ô9ØÔ,Ò,°
À#Ç,Á,Ô0Nà(×,Ñ,¨W°dÓ;�EØ)×-Ñ-¨h¸Ó=�Fð ,8×+;Ñ+;Ð<RÓ+S×+YÐWYÐ(ØÑ(Ö-AØNSÏkÉkÌmÔ&\Êm¹?¸5À( x°¢Ém˜Ñ&\Ø3G×3MÑ3MÖ3OÑ/˜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ñ 4Pô (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Ñ8¼R¿W¹W¿^¹^ÈJ×=WÑ=WØ$.ˆL˜Ñ!Ø  Ñ)ˆEØ‰>œj¨´c×:Ñ:¼r¿w¹w¿~¹~Èk×?ZÑ?ZØ%0ˆL˜Ñ"Ø! (Ñ+ˆFð ‰>˜cŸi™iÑ3¸¿	¹	×8JÑ8JÈeÓ8SÔXbÐchÔjn×XoÑXoð	!¬X´c©]ð 	!¼tÄC¹y÷ 	!ò
#Ðô %(£EˆKÛ*�Ø˜,Õ&Ø×&Ñ&Ñ';¸\È#Ñ=NÐ<OÓ'PÖQñ +ô % 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Š   Â4eÌeÍeÏ*eÐ:Ae%Ö+f. Ö?Ae* ØBf. Ú%f(Ú5Af. Û>f. Üf. ÜC:f. å
eå*
f%å4&f æf. æ f%æ%	f. æ.
hæ8Ah	è	hc           	      ó<  >• UR                  SS 5      nUR                  SS 5      nUR                  SS 5        UR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  S0 5      nUR                  SS	5      n	UR                  S
5      n
UR                  S5      nUR                  S5      nS nUb  [        R                  " U5      nGOÅUb<  [        R
                  R                  U5      (       a  [        R                  " U5      nGO†Ub|  [        UR                  SS5      U40 UD6n[        U5      nUS   S   nUS   nUS   n[        UU5      u  nnUR                  U5        [        U5      S:”  a  UR                  U5        GOU R                  câ  Ubß  UbT  [        U[         5      (       a  UO&[#        U5       VVVs0 s H  u  nu  nnUU_M     snnnn[        [%        UUSS S95      nO [        U[         5      (       a  [        [%        U/ SS S95      nOu[        U[&        5      (       aG  U(       a@  [        US   [(        [&        45      (       a"  [        [+        X²R                  SS5      S95      nOU R                  c  [-        S5      eUc4  Uc1  U R                  c$  UR/                  SS5        UR/                  SS5        Ub  XÐl        U R                  c  [-        S5      eUR                  SS 5      =(       d    U R                  R0                  =(       d    UnUbq  U R                  R2                  " S80 UD6  UR/                  SUS   5        UR/                  S US!   5        UR/                  S"US"   5        UR/                  S#US$   5        OU R                  R5                  5         UR                  S%S 5      =(       d    U R                  R6                  =(       d    UnUb…  U R                  R8                  " S80 UD6  UR/                  S&US&   5        UR/                  S'US(   5        UR/                  S)US!   5        UR/                  SUS*   5        UR/                  S+US+   5        S,U;  a  S-US,'   S.U;   =(       d    S/U;   nUR                  S.S	5      U l        UR                  S/S	5      U l        UR                  S0S 5      =n(       a  UU R                  l        U=(       d    U R                  R>                  S L U l         [B        T&U ]ˆ  " S80 UD6  U
b  X l#        X�l$        U RJ                  U R                  l&        U RN                   Vs1 s H  n[Q        [S        U5      5      iM     nn[U        URW                  5       S1 S29 VVs/ s H"  u  nn[Q        [S        U5      5      U;  d  M   UPM$     nnn['        U RX                  R[                  5       5      U Vs/ s H  n[]        U5      PM     sn-   n U R^                  Ra                  5        H2  n!U!c  M  []        U!5      U ;  d  M  U!U;  d  M!  URc                  U!5        M4     U Rd                   H-  n[]        U5      U ;  d  M  UU;  d  M  URc                  U5        M/     [        U5      S:”  aÌ  / n"U R^                  Ra                  5        V#s/ s H  n#U#(       d  M  []        U#5      PM     n$n#U Hp  n[        U[\        5      (       a  [g        USS39nO<[        U[f        5      (       a'  URh                  (       d  []        U5      U$;   a  SUl4        U"Rc                  U5        Mr     U"(       a  U Rk                  U"5         U R                  Rm                  5       n%U%S4:”  a„  [q        U R                  S5S 5      bl  UR                  SS 5        U Rr                  " U R                  U Rt                  R                  SS 5      4U Rt                  UR                  S6S 5      S7.UD6U l        U R@                  =(       d    U R                  R>                  S L U l         U R@                  (       a  U Rw                  5         g g s  snnnf s  snf s  snnf s  snf s  sn#f ! [n         a    Sn% GNf = f)9Nr8   r9   r?   r,   Ú	gguf_filer%   rH   Úadd_prefix_spaceFr&   r2   r3   Úname_or_pathÚ Úconfigrœ   Ú	tokenizerÚtokenizer_configr   T)r2   r3   Úfuse_unkÚdropoutr�   )r2   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.rJ   rK   rL   rM   z3The backend tokenizer is not correctly initialized.r7   Ú
max_lengthÚtruncation_sideÚ	directionÚstrideÚtruncation_strategyÚstrategyr6   ra   Úpad_token_type_idÚpad_type_idÚpadding_sideÚlengthÚpad_to_multiple_ofÚbackendÚ
tokenizersÚadd_bos_tokenÚadd_eos_tokenr5   c                 ó   • U S   $ ©Nr   rg   )Úxs    r^   Ú<lambda>Ú,TokenizersBackend.__init__.<locals>.<lambda>³  s   € ÐSTÐUVÒSWr`   ©r¯   )Úspeciali † Úpre_tokenizerÚfix_mistral_regex)Úinit_kwargsrÓ   rg   )<ri   rs   ÚcopyÚdeepcopyrj   rk   rl   rn   ro   r   r   r   r”   ÚlenÚ
_tokenizerrU   rh   r|   r   rV   rW   r   Ú
ValueErrorrŒ   rw   Úenable_truncationÚno_truncationrv   Úenable_paddingÚ_add_bos_tokenÚ_add_eos_tokenr5   Ú_should_update_post_processorÚsuperr+   r&   r´   Úsplit_special_tokensÚencode_special_tokensrH   ÚhashÚreprÚsortedr‡   Úadded_tokens_encoderÚkeysrZ   Ú_special_tokens_maprQ   rY   Ú_extra_special_tokensr   rÑ   Ú
add_tokensÚget_vocab_sizeÚNotImplementedErrorr}   Ú_patch_mistral_regexrÔ   Úupdate_post_processor)'ÚselfÚargsr—   r8   r9   r,   r³   r™   rH   r´   r&   r2   r3   Úfast_tokenizerÚ	gguf_pathÚ
gguf_paramÚarchitectureÚtokenizer_dictr¹   Úadditional_kwargsr¢   ÚwÚ_Ú
vocab_dictÚ_truncationÚ_paddingÚexplicit_bos_eos_in_kwargsr5   r£   Úadded_tokens_decoder_hashÚindexÚtokens_to_addÚencoderÚspecial_token_valueÚtokensÚtÚall_named_tokensÚ
vocab_sizeÚ	__class__s'                                         €r^   r+   Ú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Ñ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ÒZjÉYÈQÑPVÐQRÐTUÀAÀqÂDÑZjÓCk�
Ü!.¬s¸ÈFÐ]aÐkoÑ/pÓ!q‘Ü˜E¤4×(Ñ(Ü!.¬s¸ÀrÐTXÐbfÑ/gÓ!h‘Ü˜E¤4×(Ñ(®U´zÀ%ÈÁ(ÌUÔTXÈM×7ZÑ7ZÜ!.¬w¸UÏ:É:ÐV^Ð`aÓKbÑ/cÓ!d�øØ�_‰_Ñ$Üðróð ð Ñ&Ð+;Ñ+CÈÏÉÑH_Ø×Ñ˜k¨5Ô1Ø×Ñ˜k¨6Ô2àÑ%Ø,ŒOà�?‰?Ñ"ÜÐRÓSÐSà—j‘jÐ!7¸Ó>×pÀ$Ç/Á/×B\ÑB\×pÐ`pˆØÑ"Ø�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ˆØÑØ�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Ò"àÑ!Ø(ŒOà 0ÔØ04×0IÑ0Iˆ�‰Ô-àDH×D]ÒD]Ó$^ÒD]¸5¤T¬$¨u«+Ö%6ÑD]Ð!Ð$^ô !'Ð';×'AÑ'AÓ'CÉÒ Xô
â X‘��uÜ”D˜“KÓ Ð(AÑA÷ Ù Xð 	ñ 
ô
 �t×0Ñ0×5Ñ5Ó7Ó8ÑTaÓ;bÒTaÈ5¼CÀ¾JÑTaÑ;bÑbˆð $(×#;Ñ#;×#BÑ#BÖ#DÐØ"Ñ*ÙÜÐ&Ó'¨wÕ6Ð;NÐVcÕ;cØ×$Ñ$Ð%8Ö9ñ	 $Eð ×/Ô/ˆEÜ�5‹z Õ(¨U¸-Õ-GØ×$Ñ$ UÖ+ñ 0ô ˆ}Ó Ó!ØˆFØ04×0HÑ0H×0OÑ0OÔ0QÓWÒ0Q¨1ÔUV£¤ A¦Ñ0QÐÐWÛ&�Ü˜e¤S×)Ñ)ä& u°dÑ;‘EÜ ¤z×2Ñ2à Ÿ=Ÿ=¬S°«ZÐ;KÓ-KØ(,˜œØ—‘˜eÖ$ñ 'ö à—‘ Ô'ð	ØŸ™×7Ñ7Ó9ˆJð
 ˜Ó¤7¨4¯?©?¸OÈTÓ#RÑ#^Ø�J‰J�{ DÔ)Ø"×7Ò7Ø—‘Ø× Ñ ×$Ñ$ ^°TÓ:ðð !×,Ñ,Ø"(§*¡*Ð-@À$Ó"Gñ	ð
 ñˆDŒOð ×.Ñ.×X°$·/±/×2PÑ2PÐTXÐ2Xð 	Ô*ð ×-×-Ø×&Ñ&Õ(ð .ùôo Dlùò~ %_ùó
ùò
 <cùò"  Xøô  #ó 	Ø‹Jð	ús<   Ça/Õ'a6Ö#a;×a;×5bÛ	bÛbÝ8b âbâbrR   c                 ó   • g)NTrg   ©rï   s    r^   Úis_fastÚTokenizersBackend.is_fastë  s   € àr`   c                 ó  • SU R                   ;   ao  U R                   S   R                  S5      (       aL  [        U S5      (       a:  U R                  (       a)  [        R
                  R                  U R                  5      $ gg)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&   rC   FT)Úvocab_files_namesr   rƒ   r&   rj   rk   rl   r	  s    r^   Úcan_save_slow_tokenizerÚ)TokenizersBackend.can_save_slow_tokenizerï  s^   € ð ˜4×1Ñ1Ó1°d×6LÑ6LÈ\Ñ6Z×6cÑ6cÐdl×6mÑ6mÜ�t˜\×*Ñ*¨t¯¯ä—w‘w—~‘~ d§o¡oÓ6Ð6Øàr`   Úsave_directoryÚfilename_prefixc                 ó®  • [         R                  R                  U5      (       d  [        R	                  SU S35        g [         R                  R                  X(       a  US-   OS[        S   -   5      n[         R                  R                  U R                  5      [         R                  R                  U5      :w  a  [        U R                  U5        U4$ )NzVocabulary path (z) should be a directoryÚ-r¶   r&   )
rj   rk   Úisdirr…   ÚerrorÚjoinÚVOCAB_FILES_NAMESÚabspathr&   r   )rï   r  r  Úout_vocab_files       r^   Úsave_vocabularyÚ!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                 óŠ  • U R                   nU R                  nUc  U R                  (       a  SU l        U R                  nU R                  nUc  U R
                  (       a  SU l        U R                  (       a  US-   OS SU R
                  (       a  SU-   S-   OS 3nU U R                  (       a  SU-   S-   OS S	U R
                  (       a  SU-   S-   OS 3n/ nU R                  (       a  UR                  X45        U R
                  (       a  UR                  X445        [        R                  " XVUS
9U R                  l
        g)zU
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)rJ   Úbos_token_idrÉ   rL   Úeos_token_idrÊ   rY   r	   ÚTemplateProcessingrØ   r5   )rï   Úbosr   Úeosr!  r  r  r  s           r^   rî   Ú'TokenizersBackend.update_post_processor
  s.  € ð �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                 ó   • [        U SS5      $ )NrÞ   F©r}   r	  s    r^   rÊ   ÚTokenizersBackend.add_eos_token$  ó   € ä�tÐ-¨uÓ5Ð5r`   c                 ó   • [        U SS5      $ )NrÝ   Fr'  r	  s    r^   rÉ   ÚTokenizersBackend.add_bos_token(  r)  r`   c                 óR   • [         R                  U SU5        U R                  5         g )NrÞ   ©ÚobjectÚ__setattr__rî   ©rï   Úvalues     r^   rÊ   r(  ,  ó!   € ä×Ñ˜4Ð!1°5Ô9Ø×"Ñ"Õ$r`   c                 óR   • [         R                  U SU5        U R                  5         g )NrÝ   r-  r0  s     r^   rÉ   r+  1  r2  r`   c           	      ó€  • / nU R                   R                  5        Ha  nUc  M  [        U[        5      (       a  UR	                  U5        M0  [        U[
        5      (       d  MG  UR	                  [        USSS95        Mc     U R                   H\  n[        U[        5      (       a  UR	                  U5        M+  [        U[
        5      (       d  MB  UR	                  [        USSS95        M^     U(       a  U R                  USS9  [        U SS5      (       d  U R                  R                  c  U R                  5         gg)a3  
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è   rQ   rU   r   rY   rZ   ré   rê   r}   rØ   r5   rî   )rï   rÿ   Útoken_valuer£   s       r^   Ú
_post_initÚTokenizersBackend._post_init6  s  € ð ˆà×3Ñ3×:Ñ:Ö<ˆKØÑ"ÙÜ˜+¤z×2Ñ2Ø×$Ñ$ [Ö1Ü˜K¬×-Ó-Ø×$Ñ$¤Z°ÀTÐV[Ñ%\Ö]ñ =ð ×/Ô/ˆEÜ˜%¤×,Ñ,Ø×$Ñ$ UÖ+Ü˜E¤3×'Ó'Ø×$Ñ$¤Z°¸tÐPUÑ%VÖWñ	 0ö à�O‰O˜M¸$ˆOÑ?ä�4Ð8¸$×?Ñ?À4Ç?Á?×CaÑCaÑCiØ×&Ñ&Õ(ð Djr`   c                 ó4   • U R                   R                  SS9$ )z@
`int`: Size of the base vocabulary (without the added tokens).
F©Úwith_added_tokens©rØ   rë   r	  s    r^   r  ÚTokenizersBackend.vocab_sizeV  s   € ð
 �‰×-Ñ-ÀÐ-ÐFÐFr`   c                 ó4   • U R                   R                  SS9$ )NTr:  )rØ   Ú	get_vocabr	  s    r^   r?  ÚTokenizersBackend.get_vocab]  s   € Ø�‰×(Ñ(¸4Ð(Ð@Ð@r`   c                 ó"   • U R                  5       $ rT   )r?  r	  s    r^   r2   ÚTokenizersBackend.vocab`  s   € à�~‰~ÓÐr`   c                 ó”   • [        U R                  R                  5       S S9 VVs0 s H  u  pUR                  U_M     snn$ s  snnf )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                 ó   • U S   $ rÌ   rg   ©r¡   s    r^   rÎ   Ú8TokenizersBackend.added_tokens_encoder.<locals>.<lambda>j  ó   € ÐdhÐijÒdkr`   rÐ   ©rå   rH   r‡   Úcontent©rï   ÚvÚks      r^   ræ   Ú&TokenizersBackend.added_tokens_encoderd  s?   € ô *0°×0IÑ0I×0OÑ0OÓ0QÑWkÒ)lÔmÒ)l¡ �—	‘	˜1’Ñ)lÒmÐmùÓmó   §Ac                 ó6   • U R                   R                  5       $ )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^   rH   Ú&TokenizersBackend.added_tokens_decoderl  s   € ð �‰×7Ñ7Ó9Ð9r`   c                 ó”   • [        U R                  R                  5       S S9 VVs0 s H  u  pUR                  U_M     snn$ s  snnf )z�
Returns the added tokens in the vocabulary as a dictionary of token to index.

Returns:
    `dict[str, int]`: The added tokens.
c                 ó   • U S   $ rÌ   rg   rE  s    r^   rÎ   Ú3TokenizersBackend.get_added_vocab.<locals>.<lambda>‚  rG  r`   rÐ   rH  rJ  s      r^   Úget_added_vocabÚ!TokenizersBackend.get_added_vocab{  s?   € ô *0°×0IÑ0I×0OÑ0OÓ0QÑWkÒ)lÔmÒ)l¡ �—	‘	˜1’Ñ)lÒmÐmùÓmrN  c                 ó   • g)z>
Returns True, to avoid expensive `assert tokenizer` gotchas.
Trg   r	  s    r^   Ú__bool__ÚTokenizersBackend.__bool__„  s   € ð r`   c                 ó4   • U R                   R                  SS9$ )z4
Size of the full vocabulary with the added tokens.
Tr:  r<  r	  s    r^   Ú__len__ÚTokenizersBackend.__len__Š  s   € ð �‰×-Ñ-ÀÐ-ÐEÐEr`   c                 ó   • U R                   $ )zS
`tokenizers.implementations.BaseTokenizer`: The Rust tokenizer used as a backend.
)rØ   r	  s    r^   Úbackend_tokenizerÚ#TokenizersBackend.backend_tokenizer�  s   € ð
 �‰Ðr`   c                 ó.   • U R                   R                  $ )zE
`tokenizers.decoders.Decoder`: The Rust decoder for this tokenizer.
)rØ   Údecoderr	  s    r^   ra  Ú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	                 ó”  • Uc  SU R                   ;   nUc  SU R                   ;   nU(       a  UR                  b  U/UR                  -   n	OU/n	[        [        5      n
U	 Hå  nU
S   R	                  UR
                  5        U(       a  U
S   R	                  UR                  5        U(       a  U
S   R	                  UR                  5        U(       a  U
S   R	                  UR                  5        U(       a  U
S   R	                  UR                  5        U(       d  M¾  U
S   R	                  [        UR
                  5      5        Mç     X©4$ )ar  
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   rV   rY   ÚidsÚtype_idsrl  rn  Úoffsetsr×   )rï   r/   rc  rd  re  rf  rg  rh  ri  Ú	encodingsÚencoding_dictr§   s               r^   Ú_convert_encodingÚ#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Ö:ñ ð Ð'Ð'r`   r£   c                 óZ   • U R                   R                  U5      nUc  U R                  $ U$ rT   )rØ   Útoken_to_idÚunk_token_id)rï   r£   rþ   s      r^   Ú#_convert_token_to_id_with_added_vocÚ5TokenizersBackend._convert_token_to_id_with_added_vocÍ  s,   € Ø—‘×+Ñ+¨EÓ2ˆØ‰=Ø×$Ñ$Ð$Øˆr`   rþ   c                 óJ   • U R                   R                  [        U5      5      $ rT   )rØ   r©   rˆ   )rï   rþ   s     r^   Ú_convert_id_to_tokenÚ&TokenizersBackend._convert_id_to_tokenÓ  s   € Ø�‰×*Ñ*¬3¨u«:Ó6Ð6r`   Ú
new_tokensc                 ó|   • U(       a  U R                   R                  U5      $ U R                   R                  U5      $ rT   )rØ   Úadd_special_tokensrê   )rï   r�  r  s      r^   Ú_add_tokensÚTokenizersBackend._add_tokensÖ  s/   € ÞØ—?‘?×5Ñ5°jÓAÐAà�‰×)Ñ)¨*Ó5Ð5r`   r  c                 ó8   • U R                   R                  U5      $ )aç  
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^   r‡  Ú+TokenizersBackend.num_special_tokens_to_addÜ  s   € ð& �‰×8Ñ8¸Ó>Ð>r`   rr  Úskip_special_tokensc                 ó@  • [        U[        5      (       a  U R                  R                  U5      $ / nU(       a  [	        U R
                  5      O	[	        5       nU H?  n[        U5      nXT;   a  M  UR                  U R                  R                  U5      5        MA     U$ )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).
)rU   rˆ   rØ   r©   r“   Úall_special_idsrY   )rï   rr  r‰  r  Úids_to_skiprþ   s         r^   Úconvert_ids_to_tokensÚ'TokenizersBackend.convert_ids_to_tokensñ  s   € ô �cœ3×ÑØ—?‘?×.Ñ.¨sÓ3Ð3Øˆæ3F”c˜$×.Ñ.Ô/ÌCËEˆÛˆEÜ˜“JˆEØÓ#ÙØ�M‰M˜$Ÿ/™/×5Ñ5°eÓ<Ö=ñ	 ð
 ˆr`   Útextrƒ  c                 óH   • U R                   " SXUS.UD6R                  5       $ )N)r�  Ú	text_pairrƒ  rg   )Ú_encode_plusr  )rï   r�  r  rƒ  r—   s        r^   ÚtokenizeÚTokenizersBackend.tokenize  s(   € Ø× Ò Ðl dÐOaÑlÐekÑl×sÑsÓuÐur`   Úpadding_strategyrÀ   r¼   r¿   rÆ   rÄ   c                 óØ  • U R                   R                  nU R                   R                  nU[        R                  :X  a  Ub  U R                   R                  5         OdUUUR                  U R                  S.n	Uc  Sn
O"U	 Vs0 s H  o»UR                  US5      _M     n
nX©:w  a  U R                   R                  " S0 U	D6  U[        R                  :X  a  Ub  U R                   R                  5         ggU[        R                  :X  a  UOSnUUb  UOU R                  U R                  U R                   U R"                  US.n	X‰:w  a  U R                   R$                  " S0 U	D6  ggs  snf )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_idra   rÃ   rÆ   rg   )rØ   rw   rv   r   ÚDO_NOT_TRUNCATErÛ   r1  r½   rs   rÚ   r    Ú
DO_NOT_PADÚ
no_paddingÚ
MAX_LENGTHrÄ   Úpad_token_idra   rÂ   rÜ   )rï   r•  rÀ   r¼   r¿   rÆ   rÄ   rú   rû   ÚtargetÚcurrentrL  rÅ   s                r^   Úset_truncation_and_paddingÚ,TokenizersBackend.set_truncation_and_padding  sR  € ðB —o‘o×0Ñ0ˆØ—?‘?×*Ñ*ˆàÔ"4×"DÑ"DÓDØÑ&Ø—‘×-Ñ-Ô/øð )Ø Ø/×5Ñ5Ø!×1Ñ1ñ	ˆFð Ñ"Ø‘á@FÓGÂ¸1˜kŸo™o¨a°Ó6Ò6Á�ÐGàÓ Ø—‘×1Ò1Ñ;°FÒ;àœ×9Ñ9Ó9ØÑ#Ø—‘×*Ñ*Õ,ð $ð $4´×7QÑ7QÓ#Q‘ZÐW[ˆFà Ø-9Ñ-E™\È4×K\ÑK\Ø×+Ñ+Ø!Ÿ^™^Ø#×5Ñ5Ø&8ñˆFð Ó!Ø—‘×.Ò.Ñ8°Ó8ð "ùò% Hs   ÂE'r   r‘  Úis_split_into_wordsÚreturn_tensorsrá   c                 óv  • S nU" U5      (       d  [        S5      eUb  U" U5      (       d  [        S5      eU(       a@  [        U[        [        45      =(       a"    U=(       a    [        US   [        [        45      nO[        U[        [        45      nU(       ay  [        U[        5      (       a  [        S5      eUb<  [        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S35      eUb  [        [        X5      5      OUnOU(       a  X4/OU/n[        U[        [        45      (       d  [        S[        U5       S	35      eU R                  UUUUU	U
S
9  Uc  U R                  nU R                  R                  U:w  a  UU R                  l        U R                  R                  UUUS9nU Vs/ s H  nU R                  UUUUUUUUS9PM     nn0 nUS   S    H.  nU VVVs/ s H  u  nnUU     H  nUPM     M     n nnnU UU'   M0     U VVVs/ s H  u  nnU  H  nUPM     M     n!nnnU(       a4  / n"[        U5       H  u  n#u  n$nU"U#/[        U$S   5      -  -  n"M      U"US'   US    H  n%U R!                  U%UU5        M     [#        UU!US9n&U(       dq  Ucn  U(       dg  [#        U&R%                  5        VV's0 s H5  u  nn'U[        U'5      S:”  a  [        U'S   [        5      (       a  U'S   OU'_M7     sn'nU&R&                  5      n&U&$ s  snf s  snnnf s  snnnf s  sn'nf )Nc                 óþ  • [        U [        5      (       a  g[        U [        [        45      (       aÌ  [	        U 5      S:X  a  g[        U S   [        5      (       a  g[        U S   [        [        45      (       a„  [	        U S   5      S:X  d  [        U S   S   [        5      (       a  g[        U S   S   [        [        45      (       a4  [	        U S   S   5      S:H  =(       d    [        U S   S   S   [        5      $ ggg)NTr   F)rU   rZ   rV   rW   r×   )r  s    r^   Ú_is_valid_text_inputÚ<TokenizersBackend._encode_plus.<locals>._is_valid_text_inputq  sÑ   € Ü˜!œS×!Ñ!ØÜ˜A¤¤e˜}×-Ñ-Ü�q“6˜Q“;ØÜ  !¡¤c×*Ñ*ØÜ  !¡¤t¬U m×4Ñ4Ü˜1˜Q™4“y A“~¬°A°a±D¸±G¼S×)AÑ)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 Ú))r•  rÀ   r¼   r¿   rÆ   rÄ   )rƒ  Úis_pretokenized)r/   rc  rd  re  rf  rg  rh  ri  rm  Úoverflow_to_sample_mapping)Útensor_type)rÙ   rU   rV   rW   rZ   Ú	TypeErrorr×   Úzipr1   rŸ  rá   rØ   râ   Úencode_batchrw  r|   Ú&_eventual_warn_about_too_long_sequencer   r‡   ru  )(rï   r�  r‘  rƒ  r•  rÀ   r¼   r¿   r¡  rÆ   rÄ   r¢  rc  rd  re  rf  rg  rh  ri  rá   r—   r¥  Ú
is_batchedÚbatch_text_or_text_pairsru  r/   Útokens_and_encodingsÚsanitized_tokensr¯   r¡   rø   r§   ÚstackÚsanitized_encodingsrª  r¢   Útoksrm  Úbatched_outputr1  s(                                           r^   r’  ÚTokenizersBackend._encode_plusY  s«  € ò0	ñ( $ D×)Ñ)ÜðWóð ð
 Ñ Ñ)=¸i×)HÑ)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°Ó,@Ô'AÐ`dÑ$ö ?H¨Ð(9Ñ':ÈdÈVÐ$ô Ð2´U¼D°M×BÑ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Ò&:™7˜4 ÀDÈÅI¸q“QÁI‘QÑ&:ˆEÒNØ$)Ð˜SÓ!ñ .ñ 1EÕSÒ0D¡W Q¨ÌdÈ›qÉd™qÑ0DÐÒSö %Ø)+Ð&Ü )Ð*>Ö ?‘�‘9�D˜!Ø*¨q¨c´C¸¸[Ñ8IÓ4JÑ.JÑJÒ*ñ !@à=WÐÐ9Ñ:à)¨+Ô6ˆIØ×7Ñ7¸	À:ÈwÖWñ 7ô 'Ð'7Ð9LÐZhÑiˆö ˜nÑ4Ö=VÜ*ð '5×&:Ñ&:Ô&<ôâ&<™
˜˜Uð ¤c¨%£j°1£n¼ÀEÈ!ÁHÌd×9SÑ9S˜% š(ÐY^Ò^Ù&<òð ×(Ñ(óˆNð ÐùòW 
ùô" OùäSùó"s   Ç L"Ç7L'
È&L.Ë<L5
r  c                 óœ   • U R                   R                  b%  U R                   R                  R                  U5      $ SR                  U5      $ )Nr@   )r^  ra  Údecoder  )rï   r  s     r^   Úconvert_tokens_to_stringÚ*TokenizersBackend.convert_tokens_to_stringó  sJ   € ð ×%Ñ%×-Ñ-Ñ9ð ×"Ñ"×*Ñ*×1Ñ1°&Ó9ð	
ð —‘˜&Ó!ð	
r`   Ú	token_idsÚclean_up_tokenization_spacesc                 óì  • UR                  SS 5        [        U[        5      (       a  U/n[        U[        5      (       a  US   nU R                  R                  XS9nUb  UOU R                  nU(       a~  [        U R                  R                  5      R                  S:X  a@  U R                  (       d/  [        R                  SU R                  R                   S35        U$ U R                  U5      nU$ )NÚuse_source_tokenizerrm  )r‰  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.)ri   rU   rˆ   rh   rØ   rº  r¾  r1   r^  r0   r{   ÚGclean_up_tokenization_spaces_for_bpe_even_though_it_will_corrupt_outputr…   Úwarning_oncer  Úclean_up_tokenization)rï   r½  r‰  r¾  r—   r�  s         r^   Ú_decodeÚTokenizersBackend._decodeú  sê   € ð 	�
‰
Ð)¨4Ô0ä�i¤×%Ñ%Ø"˜ˆIÜ�i¤×&Ñ&Ø! +Ñ.ˆIØ�‰×%Ñ% iÐ%ÐYˆð ,Ñ7ñ )à×2Ñ2ð 	%ö
 (ô
 �T×+Ñ+×1Ñ1Ó2×;Ñ;¸uÓDØ×d×dä×#Ñ#ðØŸ™×/Ñ/Ð0ð 1-ð-ôð ˆð ×1Ñ1°$Ó7�àˆr`   Ú
file_names.Úlegacy_formatc                 óÀ   • [        U5      n[        R                  R                  X(       a  US-   OS[        -   5      nU R
                  R                  U5        X%4-   nU$ )Nr  r¶   )rZ   rj   rk   r  ÚTOKENIZER_FILEr^  Úsave)rï   r  rÆ  rÇ  r  r%   s         r^   Ú_save_pretrainedÚ"TokenizersBackend._save_pretrained%  s[   € ô ˜^Ó,ˆäŸ™Ÿ™Øµo˜_¨sÒ2È2ÔQ_Ñ_ó
ˆð 	×Ñ×#Ñ# NÔ3ØÐ"3Ñ3ˆ
àÐr`   c           
      ó
  • [         R                  " U R                  R                  5       5      nUR	                  S5      nUR	                  S5      n	Sn
US   S   S:X  a  0 US   S'   / US   S'   OuUS   S   S	:X  a?  US   S
   b5  US   S
   nUS   S   U   S   n
Ub	  X¥;   a  XZ   n
SUS   S
'   U
S//US   S'   O*US   S   S;   a	  0 US   S'   O[        SUS   S    S35      eUb%  SUS   ;   a  US   S   U;   a  XWS   S      US   S'   [        R                  " [         R                  " U5      5      n/ nU Hl  nUR	                  SS5      nUR	                  SS5      nUS   S   S	:w  a	  U(       d  M<  Ub  US   U;   a
  X^S      US'   UR                  [        S(0 UD65        Mn     Ub  UR                  U5        US   S   S:X  a  SU;  a  US   S   b  US   S   US'   US   S   S:X  a  SU;  a  US   S   b  US   S   US'   US   S   S	:X  a  U
b  X¦S'   US   b_  US   S   S:X  d2  US   S   S:X  aG  SUS   ;   a>  [        S US   S    5       5      (       a!  [        R                  R                  5       US'   [         US   S      nU" S(X-S.UD6nUR#                  XUS9  U	Gb@  [         R                  " UR                  5       5      nSU	;   aš  U	S    H‘  nU	S   U   S   nUb"  U Vs/ s H  nUR%                  UU5      PM     nnUU	S   U   S'   U H"  nUR'                  U5      nUb  M  [        S 5      e   U Vs/ s H  nUR'                  U5      PM     snU	S   U   S!'   M“     S" HG  nUU	;   d  M  U	U   u  nnUb  UU;   a  UU   nUR'                  U5      nUc  [        S 5      eUU/U	U'   MI     U	US'   [        R                  " [         R                  " U5      5      nU R(                  R+                  5       n[,        R.                   H�  n[1        U U5      c  M  [1        U U5      nUb  UU;   a  UU   nU R2                  R%                  US5      n[5        U[        5      (       a;  [        UUR6                  UR8                  UR:                  UR<                  S#S$9UU'   M˜  UUU'   MŸ     U R>                  (       a  U R>                  R+                  5       O/ nUb  UR                  U5        [A        U5      S:”  a  UUS%'   XÆS&'    U RB                  " S(0 UD6$ s  snf s  snf ! [D         aG  nS'[G        U5      ;   a2  UR	                  S&S5        U RB                  " S(0 UD6nUUl        Us SnA$ e SnAff = f))u¾  
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`.

r4   r5   Nr0   r1   r   r2   r3   r   r�   r   g        )r#   r$   z;This method does not support this type of tokenizer (found z-) only BPE, Unigram, WordLevel and WordPiece.rN   rÑ   ÚidrI  Úcontinuing_subword_prefixÚend_of_word_suffixrÒ   Ú	ByteLevelr;   Úpretokenizersc              3   ó2   #   • U  H  nUS    S:H  v •  M     g7f)r1   rÑ  Nrg   )Ú.0Úpretokenizers     r^   Ú	<genexpr>Ú<TokenizersBackend.train_new_from_iterator.<locals>.<genexpr>ž  s!   é € ð â(X˜ð ! Ñ(¨KÖ7Ú(Xùs   ‚Úinitial_alphabet)r  r  )rÅ   Útrainerr  r  zQAttempted to set a token in the post processor that does not exist in the mappingrr  )r•   ÚsepT)Úsingle_wordÚlstripÚrstripr5  rÑ   rP   r,   z7multiple values for keyword argument 'tokenizer_object'rg   )$rq   ÚloadsrØ   Úto_strri   rÙ   rn   rt   ru   rY   r   rX   ÚanyÚpre_tokenizers_fastrÑ  ÚalphabetÚMODEL_TO_TRAINER_MAPPINGÚtrain_from_iteratorrs   rz  rÔ   rÕ   r   ÚSPECIAL_TOKENS_ATTRIBUTESr}   rè   rU   rÛ  rÜ  rÝ  r5  rP   r×   r  r¬  rZ   )rï   Útext_iteratorr  rÅ   Únew_special_tokensÚspecial_tokens_mapr—   r›   r4   r5   rN   r�   r¸   r  Úadded_tokenrÑ   rø   Útrainer_classrÙ  Útrained_tokenizer_jsonr¯   r  r£   r¨   Úspecial_tokenÚspecial_token_fullrP   r§   Únew_tokenizers                                r^   Útrain_new_from_iteratorÚ)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Ó6UØ 2Ñ =�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Ð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^Ø);È	Ñ<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Ø"+�;ÑØ˜/Ñ*Ñ6à˜Ñ/°Ñ7¸;ÓFØ! /Ñ2°6Ñ:¸jÓHØ# ~°oÑ'FÓFÜñ à(6°Ñ(GÈÒ(Xó÷ ñ ô
 .A×-JÑ-J×-SÑ-SÓ-U�Ð)Ñ*ä0°ÀÑ1HÈÑ1PÑQˆÙÐ_¨:Ñ_ÐX^Ñ_ˆØ×%Ñ% mÈGÐ%ÑTàÒ%Ü%)§Z¢Z°	×0@Ñ0@Ó0BÓ%CÐ"à >Ó1Ø)Ð*:Ô;�CØ+Ð,<Ñ=¸cÑBÀ8ÑL�FØ)Ñ5ÙTZÓ![ÒTZÈ5Ð"4×"8Ñ"8¸ÀÖ"FÑTZ˜Ð![ØFL�NÐ#3Ñ4°SÑ9¸(ÑCÛ!'˜Ø#,×#8Ñ#8¸Ó#?˜Ø#Ó+Ü",Ø só#ð ñ "(ñ ouÓCuÒntÐejÀI×DYÑDYÐZ_ÖD`ÑntÑCu�NÐ#3Ñ4°SÑ9¸%Ó@ñ <ó "0�Ø  NÕ2Ø-¨mÑ<‘H�E˜1Ø)Ñ5¸%ÐCUÓ:UØ 2°5Ñ 9˜Ø(×4Ñ4°UÓ;�HØÑ'Ü(Øoóð ð 6;¸HÐ4E�N =Ó1ñ "0ð 8FÐ"Ð#3Ñ4Ü%×.Ò.¬t¯zªzÐ:PÓ/QÓRˆIà×!Ñ!×&Ñ&Ó(ˆä,×FÔFˆ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ñ% Gð* DH×C\×C\˜t×8Ñ8×=Ñ=Ô?ÐbdÐØÑ)Ø ×'Ñ'Ð(:Ô;ÜÐ#Ó$ qÓ(Ø-AˆFÐ)Ñ*ð &/Ð!Ñ"ð	Ø—>’>Ñ+ FÑ+Ð+ùò{ "\ùò Dvøôj ó 	àHÌCÐPQËFÓRð —
‘
Ð-¨tÔ4Ø $§¢Ñ 8°Ñ 8�Ø+4�Ô(Ø$Õ$ð ûð	ús0   Ë4T'Í	T,ÔT1 Ô1
VÔ;;U=Õ6VÕ<U=Õ=Vc
                 ó~  ^^• SSK mSSKJn  SSKJm  SSKJn  SSKJn  U" SS9S	[        S
[        4UU4S jj5       nU(       d  [        5       (       a  SnUGbR  U(       d  U(       GdC  U" U5      (       Ga5  U" USUUUSSUS9nSnUb¸  [        USS9 n[        R                  " U5      nSSS5        WR                  S5      nUR                  S5      nU(       a7  UR!                  U5      UR!                  S5      :  a  U(       a  Ub  US;  a  U$ O-U(       a&  UR!                  U5      UR!                  S5      :¼  a  U$ SnU(       d  U(       Gd\  U" U5      (       GaN  U(       a  SU;   a  [#        USUS   5        U	c:  [%        USS5      (       d(  [#        USS5        [&        R)                  SU S35        U$ U	SL d  [%        USS5      (       aÝ  [#        USS5        SSKnUR,                  R/                  UR1                  S5      SS9nUR2                  n[5        UUR,                  R6                  5      (       a  UUR2                  S'   U$ [5        UUR,                  R8                  5      (       a  UR,                  R;                  SSS9nUR,                  R7                  UU/5      Ul        U$ ! , (       d  f       GN= f)a6  
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_idrR   c                 ó´   >•  T" U 5      nUR                  b1  TR                  SSR                  UR                  5      5      (       a  gg! [          a     gf = f)NFzbase_model:.*mistralair¶   T)r„   ÚtagsÚsearchr  )r÷  r0   ró  Úres     €€r^   Úis_base_mistralÚ?TokenizersBackend._patch_mistral_regex.<locals>.is_base_mistral  sW   ø€ ðÙ" 8Ó,�ð �z‰zÑ%Ø—9‘9Ð5°r·w±w¸u¿z¹zÓ7J×KÑ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   rZ   Úboolr   rp   rq   rr   rs   ÚparseÚsetattrr}   r…   r†   rÈ   Úpre_tokenizersÚSplitÚRegexrÒ   rU   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í   Ú&TokenizersBackend._patch_mistral_regexû  sÑ  ù€ ó* 	Ý'å.Ý%å6á	˜3Ñ	ð		¤cð 		¬d÷ 		ó 
 ð		ö œ×0Ñ0ØˆHà(Ò4ÞŸX©/Ð:W×*XÒ*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Ò<jæÐ#6¸+Ó#EÜ˜IÐ':¸KÐH[Ñ<\Ô]ð %Ñ,´W¸YÐH[Ð]b×5cÑ5cÜ˜IÐ':¸EÔBÜ—N‘NØ>Ð?\Ð>]ð ^eð eôðH Ðð? '¨$Ò.´'¸)ÐEXÐZ_×2`Ñ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 :Ö9ús   ÂJ-Ê-
J<)rÝ   rÞ   rß   rØ   rÉ   rÊ   r´   r&   )FrT   )NNFFFFT)NF)FN)NN)NNN)NNFNFNN)Er{   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r  r  r0   rØ   Úclassmethodr°   r+   Úpropertyr  r
  r  rZ   rW   r  rî   rÊ   rÉ   Úsetterr7  rˆ   r  rh   r?  r2   ræ   r   rH   Ú_added_tokens_encoderÚ_added_tokens_decoderrU  rX  r[  rn   r^  ÚDecoderFastra  ÚEncodingFastr   rV   rw  r|  r  r„  r‡  r�  r“  r    r   rŸ  r™  r˜  r   r   r   r’  r»  rÄ  rj   ÚPathLikerË  rï  rí   Ú__static_attributes__Ú__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Õ   rq   rj   Úcollectionsr   Úcollections.abcr   Úshutilr   Útypingr   Útokenizers.pre_tokenizersr  rá  r  r   rÈ   r   r	   r
   r,  r   rn   Ú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_loggerr{   r…   rÉ  ÚSPECIAL_TOKENS_MAP_FILEÚTOKENIZER_CONFIG_FILEÚTIKTOKEN_VOCAB_FILEÚADDED_TOKENS_FILErã  r  r(   ÚPreTrainedTokenizerFastrg   r`   r^   Ú<module>rB     sõ   ðñó
 Û Û 	Ý #Ý $Ý Ý å 7Ý +ß -Ý /Ý 1Ý 6ß *ß ^Ó ^å .å 0Ý 5Ý =÷÷ ñ ÷ @Ñ ?ð 
×	Ò	˜HÓ	%€ð "€Ø3Ð Ø/Ð Ø'Ð ð (Ð à ð ñ Ð ð ØØ!Ø!ñ	Ð ð (6ÐEXÑYÐ ñ Ð,Ó-ôkÐ/ó kó .ðkð^) ,Ñ r`   