+
    œ°³j Œ  ã                   ó¢  € ^ RI t ^ RIHt ^ RIt^ RIHt ^RIHtH	t	H
t
Ht ^RIHt ^RIHt ^RIHt ]! 4       '       d   ^ RIt]! ]4      tRR	R
R
RRRR/RRRRR//R]	RR]
R,          /RR]
R,          //t]! ]R,          P/                  4       4      t ! R R]4      t ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R ]4      t ! R! R"]4      t  ! R# R$]4      t! ! R% R&]4      t" ! R' R(]4      t# ! R) R*]4      t$ ! R+ R,]4      t%R-]R.]R/]R0]R1]R2]R3]R4] R5]!R6]"R7]#R8]#R9]$R:]%/t&R; t'R?R< R= llt(R@R> lt)R# )Aé    N)Ú
NamedTuple)Útqdm)ÚGGUF_CONFIG_DEFAULTS_MAPPINGÚGGUF_CONFIG_MAPPINGÚGGUF_TOKENIZER_MAPPINGÚ_gguf_parse_value)Úis_torch_available)Úis_gguf_available)Ú
get_loggerÚignoreÚGGUFÚversionÚtensor_countÚkv_countÚgeneralÚ	file_typeÚquantization_versionÚconfigÚ	tokenizerÚtokenizer_configc                   ó,   a € ] tR t^8t o V 3R ltRtV tR# )Ú
GGUFTensorc                óR   <€ V ^8„  d   Qh/ S[ P                  ;R&   S[;R&   S[;R&   # )é   ÚweightsÚnameÚmetadata)ÚnpÚndarrayÚstrÚdict)ÚformatÚ__classdict__s   "€Úi/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/modeling_gguf_pytorch_utils.pyÚ__annotate__ÚGGUFTensor.__annotate__8   s*   ø‡ ‚ Ù�Z‰ZÑñ á
�Iñ ñ �Nò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r#   s   @r$   r   r   8   s   ø‡ ‡ „ r'   r   c                   óT   a € ] tR t^>t o R	R ltV 3R lR ltV 3R lR ltR tRtV t	R# )
ÚTensorProcessorNc                ó(   € T;'       g    / V n         R # ©N©r   )Úselfr   s   &&r$   Ú__init__ÚTensorProcessor.__init__?   s   € Ø—l�l ˆŽr'   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r   Úhf_nameÚreturn©r    )r"   r#   s   "€r$   r%   ÚTensorProcessor.__annotate__B   s   ø€ ÷ ñ ¡sð ©sñ r'   c                ó   € V# )z@
Preprocesses the tensor name to ease loading the GGUF tensors.
r(   ©r6   r;   s   &&r$   Úpreprocess_nameÚTensorProcessor.preprocess_nameB   s	   € ð ˆr'   c                óH   <€ V ^8„  d   QhRS[ S[S[3,          RS[RS[RS[/# ©r   Úgguf_to_hf_name_mapÚsuffixÚ	qual_namer;   ©r!   r    )r"   r#   s   "€r$   r%   r>   H   s5   ø€ ÷ 
ñ 
Ù#'©©S¨¥>ð
Ù;>ð
ÙKNð
ÙY\ñ
r'   c                ó   € R# )zÐ
Called when get_gguf_hf_weights_map fails to map a HF parameter
(tensor) and corresponding GGUF one.

This is particularly useful to resolve one-to-many
HF-GGUF mappings sometimes appear in some MoE models.
Nr(   )r6   rE   rF   rG   r;   s   &&&&&r$   Úperform_fallback_tensor_mappingÚ/TensorProcessor.perform_fallback_tensor_mappingH   s   € ñ 	r'   c                ó   € \        W/ 4      # r4   ©r   ©r6   r   r   Úkwargss   &&&,r$   ÚprocessÚTensorProcessor.processT   s   € Ü˜'¨Ó,Ð,r'   r5   r4   )
r)   r*   r+   r,   r7   rA   rJ   rP   r.   r/   r0   s   @r$   r2   r2   >   s(   ø‡ € ô#÷ð ÷
ð 
÷-ð -r'   r2   c                   óR   a a€ ] tR t^Xt oRV 3R lltR tRV3R lR lltRtVtV ;t	# )ÚLlamaTensorProcessorc                ó(   <€ \         SV `  VR 7       R# ©r5   N©Úsuperr7   ©r6   r   Ú	__class__s   &&€r$   r7   ÚLlamaTensorProcessor.__init__Y   ó   ø€ Ü‰Ñ ÐÖ'r'   c                ó0  € R V9   g   RV9   d~   V P                   P                  R4      pV P                   P                  R4      pRWE39   d   \        W/ 4      # RV9   d   V P                  WV4      pMR V9   d   V P                  WV4      p\        W/ 4      # )z.attn_k.z.attn_q.Únum_attention_headsÚnum_key_value_headsN)r   Úgetr   Ú_reverse_permute_weights)r6   r   r   rO   Ú	num_headsÚnum_kv_headss   &&&,  r$   rP   ÚLlamaTensorProcessor.process\   s�   € Ø˜Ô ¨tÔ!3ØŸ™Ÿ™Ð(=Ó>ˆIØŸ;™;Ÿ?™?Ð+@ÓAˆLà˜	Ð0Ô0Ü! '°Ó4Ð4Ø˜TÔ!Ø×7Ñ7¸ÈIÓV‘Ø˜tÔ#Ø×7Ñ7¸ÈLÓY�Ü˜'¨Ó,Ð,r'   c                óh   <€ V ^8„  d   QhRS[ P                  RS[RS[R,          RS[ P                  /# )r   r   Ún_headrb   Nr<   ©r   r   Úint)r"   r#   s   "€r$   r%   Ú!LlamaTensorProcessor.__annotate__i   s9   ø€ ÷ 
7ñ 
7Ù—z‘zð
7Ù+.ð
7Ù>AÀD½jð
7á	�‰ñ
7r'   c                óþ   € Ve	   W#8w  d   TpVP                   ^ ,          V,          ^,          pVP                  ! W$^.VP                   R,          O5!  pVP                  ^^4      P                  VP                   4      # )Nºé   NN)ÚshapeÚreshapeÚswapaxes)r6   r   re   rb   ÚdimÚws   &&&&  r$   r`   Ú-LlamaTensorProcessor._reverse_permute_weightsi   sj   € ð
 Ò#¨Ô(>Ø!ˆFà�m‰m˜AÕ &Õ(¨AÕ-ˆØ�OŠO˜F¨Ð?¨W¯]©]¸2Õ->Ó?ˆØ�z‰z˜!˜QÓ×'Ñ'¨¯©Ó6Ð6r'   r(   r4   )
r)   r*   r+   r,   r7   rP   r`   r.   r/   Ú__classcell__©rY   r#   s   @@r$   rS   rS   X   s   ù‡ € ÷(ò-÷
7÷ 
7ò 
7r'   rS   c                   óê   a a€ ] tR t^vt o]P
                  ! R4      t]P
                  ! R4      t]P
                  ! R4      tRV 3R llt	V3R lR lt
V3R lR ltV3R	 lR
 ltV3R lR ltRtVtV ;t# )ÚQwen2MoeTensorProcessorzmlp.experts.\d+.z7model\.layers\.(?P<bid>\d+)\.mlp\.experts\.gate_up_projú3(?P<name>.*\.ffn_(?P<w>gate|down|up)_exps)\.weight$c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   Ú Qwen2MoeTensorProcessor.__init__{   r[   r'   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r:   r=   )r"   r#   s   "€r$   r%   Ú$Qwen2MoeTensorProcessor.__annotate__~   ó   ø€ ÷ Nñ N¡sð N©sñ Nr'   c                óF   € \         P                  ! V P                  R V4      # ©zmlp.experts.©ÚreÚsubÚHF_EXPERT_RENAME_PATTERNr@   s   &&r$   rA   Ú'Qwen2MoeTensorProcessor.preprocess_name~   ó   € Ü�vŠv�d×3Ñ3°^ÀWÓMÐMr'   c                óH   <€ V ^8„  d   QhRS[ S[S[3,          RS[RS[RS[/# rD   rH   )r"   r#   s   "€r$   r%   rz   �   s;   ø€ ÷ Vñ VÙ#'©©S¨¥>ðVÙ;>ðVÙKNðVÙY\ñVr'   c                ó°   € \         P                  ! V P                  V4      ;p'       d-   W4,           pWaR VR,           RV 2&   WaR VR,           RV 2&   R# R# )úblk.Úbidú.ffn_gate_expsú.ffn_up_expsN)r   Ú	fullmatchÚHF_MOE_W13_PATTERN©r6   rE   rF   rG   r;   ÚmÚfull_hf_names   &&&&&  r$   rJ   Ú7Qwen2MoeTensorProcessor.perform_fallback_tensor_mapping�   s_   € ô —’˜T×4Ñ4°gÓ>Ð>ˆ1Ö>Ø$Õ.ˆLØKW $ q¨¥x j°¸v¸hÐ GÑHØIU $ q¨¥x j°¸V¸HÐ EÓFñ ?r'   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   r=   )r"   r#   s   "€r$   r%   rz   Š   s   ø€ ÷ -ñ -¡Sñ -r'   c                óf  € \         P                  ! V P                  V4      ;p'       d_   VP                  R 4      pVP                  R4      pV'       d5   V P	                  WWTR,          ,          VR,          4       \        VR/ 4      # RV9   d   \        P                  ! V^ R7      p\        W/ 4      # )Útensor_key_mappingÚparsed_parametersr   rp   NÚffn_gate_inp_shexp©Úaxis)r   rŠ   ÚGGUF_MOE_WEIGHTS_PATTERNr_   Ú_set_moe_expert_tensorr   r   Úexpand_dims©r6   r   r   rO   r�   r“   r”   s   &&&,   r$   rP   ÚQwen2MoeTensorProcessor.processŠ   sš   € Ü—’˜T×:Ñ:¸DÓAÐAˆ1ÖAØ!'§¡Ð,@Ó!AÐØ &§
¡
Ð+>Ó ?Ðß!Ø×+Ñ+¨GÐHZÐ]cÕ[dÕHeÐghÐilÕgmÔnÜ! '¨4°Ó4Ð4Ø 4Ô'ô —n’n W°1Ô5ˆGÜ˜'¨Ó,Ð,r'   c                ó\   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[RS[/# ©r   r   r”   r;   rp   ©r   r   r!   r    )r"   r#   s   "€r$   r%   rz   —   s:   ø€ ÷ %ñ %©b¯j©jð %ÉTÑRUÑW[ÐR[Í_ð %Ñgjð %Ñorñ %r'   c                óâ  € \         P                  ! \        P                  ! V4      4      pVR 8X  d   WRR,          V&   R# \	        VP
                  4      p^pWg,          pV^,          Wg&   W2R,          9  d,   \         P                  ! WeP                  R7      VR,          V&   VR,          V,          p	VR8X  d   V	P                  V^ V4      p	MV	P                  WxV4      p	V	P                  V4       R# ©ÚdownÚtensors)ÚdtypeÚgateN©
ÚtorchÚ
from_numpyr   ÚcopyÚlistrl   Úzerosr¤   ÚnarrowÚcopy_©
r6   r   r”   r;   rp   Útorch_weightsrl   Ú	shard_dimÚ
shard_sizeÚouts
   &&&&&     r$   r™   Ú.Qwen2MoeTensorProcessor._set_moe_expert_tensor—   sÆ   € Ü×(Ò(¬¯ª°Ó)9Ó:ˆØ�Œ;Ø4A˜iÕ(¨Ó1ô ˜Ÿ™Ó'ˆEØˆIØÕ)ˆJØ)¨A�~ˆEÑØ°	Õ:Ô:Ü8=¿ºÀE×QdÑQdÔ8eÐ! )Õ,¨WÑ5Ø 1°)Õ <¸WÕ EˆCØ�FŒ{Ø—j‘j ¨A¨zÓ:‘à—j‘j ¸
ÓC�Ø�I‰I�mÖ$r'   r(   r4   )r)   r*   r+   r,   r   Úcompiler�   r‹   r˜   r7   rA   rJ   rP   r™   r.   r/   rr   rs   s   @@r$   ru   ru   v   sk   ù‡ € Ø!ŸzšzÐ*=Ó>ÐØŸšÐ$^Ó_ÐØ!ŸzšzÐ*`ÓaÐ÷(÷Nð N÷Vð V÷-ð -÷%÷ %ð %r'   ru   c                   ó¸   a a€ ] tR t^®t oRt]P                  ! R4      t]P                  ! R4      tRV 3R llt	V3R lR lt
V3R lR ltV3R	 lR
 ltRtVtV ;t# )ÚGptOssTensorProcessora3  
Tensor processor for GPT-OSS models (MoE with 128 experts).
Handles:
- Splitting stacked expert tensors (down_proj, gate_proj, up_proj) into individual experts.
- Interleaving gate and up projections if stored in a combined tensor (gate_up_projs).
- Bias tensors (1D) are passed through without transpose.
z<blk\.(?P<bid>\d+)\.ffn_(?P<proj>down|gate|up)_projs\.weight$z-blk\.(?P<bid>\d+)\.ffn_gate_up_projs\.weight$c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   ÚGptOssTensorProcessor.__init__¼   r[   r'   c                ó    <€ V ^8„  d   QhRS[ /# r‘   r=   )r"   r#   s   "€r$   r%   Ú"GptOssTensorProcessor.__annotate__¿   s   ø€ ÷ -ñ -¡Sñ -r'   c                ót  € V P                   P                  V4      ;p'       db   VP                  R 4      pVP                  R4      pV'       d8   V'       d0   V P                  WVR,          VR,          V4       \	        VR/ 4      # V P
                  P                  V4      ;p'       dZ   VP                  R 4      pVP                  R4      pV'       d0   V'       d(   V P                  WVR,          V4       \	        VR/ 4      # RV9   d'   \        VP                  4      ^8X  d   \	        W/ 4      # \	        W/ 4      # )r“   r”   r‡   ÚprojNú.bias)	r˜   Úmatchr_   Ú_split_moe_expert_tensorr   ÚGGUF_MOE_COMBINED_PATTERNÚ_interleave_gate_up_tensorÚlenrl   r›   s   &&&,   r$   rP   ÚGptOssTensorProcessor.process¿   s  € à×-Ñ-×3Ñ3°DÓ9Ð9ˆ1Ö9Ø!'§¡Ð,@Ó!AÐØ &§
¡
Ð+>Ó ?Ðß!×&7Ø×-Ñ-¨gÈ!ÈEÍ(ÐTUÐV\ÕT]Ð_qÔrÜ! '¨4°Ó4Ð4ð ×.Ñ.×4Ñ4°TÓ:Ð:ˆ1Ö:Ø!'§¡Ð,@Ó!AÐØ &§
¡
Ð+>Ó ?Ðß!×&7Ø×/Ñ/°ÈAÈeÍHÐVhÔiÜ! '¨4°Ó4Ð4ð �dŒ?œs 7§=¡=Ó1°QÔ6Ü˜g¨RÓ0Ð0ô ˜'¨Ó,Ð,r'   c          
      óL   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[RS[/# )r   r   r”   r‡   r¼   r“   rŸ   )r"   r#   s   "€r$   r%   rº   ×   sH   ø€ ÷ [ñ [á—‘ð[ñ  ð[ñ ð	[ñ
 ð[ñ !ñ[r'   c                óf  € V P                   P                  R^€4      p\        \        WaP                  ^ ,          4      4       Fk  pW,          pRV RV RV R2p	VP                  4        F  w  r«W©9   g   K  V	P                  W«4      p	K   	  \        P                  ! VRR7      VR,          V	&   Km  	  R	# )
z:Split a stacked MoE tensor into individual expert tensors.Únum_local_expertsúmodel.layers.ú.block_sparse_moe.experts.Ú.z_proj.weightT©r©   r£   N)	r   r_   ÚrangeÚminrl   ÚitemsÚreplacer§   Útensor)r6   r   r”   r‡   r¼   r“   Únum_expertsÚiÚexpert_weightr;   ÚkeyÚ
mapped_keys   &&&&&&      r$   r¿   Ú.GptOssTensorProcessor._split_moe_expert_tensor×   s    € ð —k‘k—o‘oÐ&9¸3Ó?ˆô ”s˜;¯©°aÕ(8Ó9Ö:ˆAØ#�JˆMà% c UÐ*DÀQÀCÀqÈÈÈlÐ[ˆGà#5×#;Ñ#;Ö#=‘�Ø–>Ø%Ÿo™o¨cÓ>’Gñ $>ô 5:·L²LÀÐUYÔ4ZÐ˜iÕ(¨Ó1ó ;r'   c                óF   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[/# )r   r   r”   r‡   r“   rŸ   )r"   r#   s   "€r$   r%   rº   î   s=   ø€ ÷ "Wñ "Wá—‘ð"Wñ  ð"Wñ ð	"Wñ
 !ñ"Wr'   c                ó’  € V P                   P                  R^€4      pVP                  ^,          pV^,          pVRRV1R3,          pVRVR1R3,          p	\        \	        WQP                  ^ ,          4      4       FÉ  p
WŠ,          P
                  pWš,          P
                  pRV RV
 R2pRV RV
 R2pVP                  4        F8  w  ppWý9   d   VP                  VV4      pWþ9   g   K&  VP                  VV4      pK:  	  \        P                  ! VRR	7      VR
,          V&   \        P                  ! VRR	7      VR
,          V&   KË  	  R# )zì
Process a combined gate+up tensor.
Expected shape: [num_experts, intermediate_size, hidden_size].
Interleaving: gate occupies first half of intermediate dimension,
up occupies second half. Transpose to [hidden, half_inter] per expert.
rÆ   :NNNNrÇ   rÈ   z.gate_proj.weightz.up_proj.weightTrÊ   r£   )
r   r_   rl   rË   rÌ   ÚTrÍ   rÎ   r§   rÏ   )r6   r   r”   r‡   r“   rÐ   Ú
inter_sizeÚ
half_interÚ	gate_partÚup_partrÑ   Úgate_weightÚ	up_weightÚ	gate_nameÚup_namerÓ   rÔ   s   &&&&&            r$   rÁ   Ú0GptOssTensorProcessor._interleave_gate_up_tensorî   s6  € ð —k‘k—o‘oÐ&9¸3Ó?ˆØ—]‘] 1Õ%ˆ
Ø 1•_ˆ
Ø˜A˜{ 
˜{¨AÐ-Õ.ˆ	Ø˜!˜Z™[¨!Ð+Õ,ˆä”s˜;¯©°aÕ(8Ó9Ö:ˆAØ#�,Ÿ.™.ˆKØ�
Ÿ™ˆIà'¨ uÐ,FÀqÀcÐIZÐ[ˆIØ% c UÐ*DÀQÀCÀÐWˆGð $6×#;Ñ#;Ö#=‘��ZØÔ#Ø )× 1Ñ 1°#°zÓ B�IØ–>Ø%Ÿo™o¨c°:Ó>’Gñ	 $>ô 7<·l²lÀ;ÐUYÔ6ZÐ˜iÕ(¨Ñ3Ü49·L²LÀÐQUÔ4VÐ˜iÕ(¨Ó1ó ;r'   r(   r4   )r)   r*   r+   r,   Ú__doc__r   r´   r˜   rÀ   r7   rP   r¿   rÁ   r.   r/   rr   rs   s   @@r$   r¶   r¶   ®   sY   ù‡ € ñð  "ŸzšzÐ*iÓjÐà "§
¢
Ð+[Ó \Ð÷(÷-ð -÷0[ð [÷."W÷ "Wð "Wr'   r¶   c                   ó`   a a€ ] tR tRt oR	V 3R lltR tV3R lR ltV3R lR ltRtVt	V ;t
# )
ÚBloomTensorProcessori  c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   ÚBloomTensorProcessor.__init__  r[   r'   c                óÌ   € R V9   dS   V P                   R,          pV P                   R,          pRV9   d   V P                  WV4      pMV P                  WV4      p\        W/ 4      # )Úattn_qkvre   Úhidden_sizeÚweight)r   Ú_reverse_reshape_weightsÚ_reverse_reshape_biasr   )r6   r   r   rO   ra   Ún_embeds   &&&,  r$   rP   ÚBloomTensorProcessor.process  s_   € Ø˜ÔØŸ™ HÕ-ˆIØ—k‘k -Õ0ˆGØ˜4ÔØ×7Ñ7¸ÈGÓT‘à×4Ñ4°WÈÓQ�Ü˜'¨Ó,Ð,r'   c                ó@   <€ V ^8„  d   QhRS[ P                  RS[RS[/# ©r   r   re   rí   rf   )r"   r#   s   "€r$   r%   Ú!BloomTensorProcessor.__annotate__!  s,   ø€ ÷ 
Nñ 
N±·
±
ð 
NÁCð 
NÑRUñ 
Nr'   c                óP  € \         P                  ! V^^ R7      w  rEpVP                  W#V,          V4      pVP                  W#V,          V4      pVP                  W#V,          V4      p\         P                  ! WEV.^R7      pVP                  V^,          W2,          ,          V4      # ©é   r–   )r   Úarray_splitrm   Ústack)r6   r   re   rí   ÚqÚkÚvÚqkv_weightss   &&&&    r$   rë   Ú-BloomTensorProcessor._reverse_reshape_weights!  sŒ   € ô —.’. ¨!°!Ô4‰ˆˆaà�I‰I�f¨Õ/°Ó9ˆØ�I‰I�f¨Õ/°Ó9ˆØ�I‰I�f¨Õ/°Ó9ˆÜ—h’h  a˜y¨qÔ1ˆà×"Ñ" 6¨A¥:°Õ1BÕ#CÀWÓMÐMr'   c                ó@   <€ V ^8„  d   QhRS[ P                  RS[RS[/# rð   rf   )r"   r#   s   "€r$   r%   rñ   -  s&   ø€ ÷ 
ñ 
©R¯Z©Zð 
Áð 
Ésñ 
r'   c                ó  € \         P                  ! V^4      w  rEpVP                  W#V,          4      pVP                  W#V,          4      pVP                  W#V,          4      p\         P                  ! WEV.^R7      P	                  4       pV# ró   )r   rõ   rm   rö   Úflatten)r6   r   re   rí   Úq_biasÚk_biasÚv_biasÚqkv_biass   &&&&    r$   rì   Ú*BloomTensorProcessor._reverse_reshape_bias-  su   € ô "$§¢°¸Ó!;Ñˆ˜à—‘ °6Õ(9Ó:ˆØ—‘ °6Õ(9Ó:ˆØ—‘ °6Õ(9Ó:ˆä—8’8˜V¨VÐ4¸1Ô=×EÑEÓGˆØˆr'   r(   r4   )r)   r*   r+   r,   r7   rP   rë   rì   r.   r/   rr   rs   s   @@r$   rä   rä     s*   ù‡ € ÷(ò-÷
Nð 
N÷
÷ 
ð 
r'   rä   c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚT5TensorProcessori:  c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   ÚT5TensorProcessor.__init__;  r[   r'   c                ó˜   € R pVP                  R4       F&  pVP                  4       '       g   K  \        V4      p M	  \        WRV/4      # )NrÉ   r‡   )ÚsplitÚisdigitrg   r   )r6   r   r   rO   r‡   Úchunks   &&&,  r$   rP   ÚT5TensorProcessor.process>  sC   € ØˆØ—Z‘Z –_ˆEØ�}‰}�ŒÜ˜%“j�Ùñ %ô ˜'¨%°¨Ó6Ð6r'   r(   r4   ©	r)   r*   r+   r,   r7   rP   r.   r/   rr   rs   s   @@r$   r  r  :  s   ù‡ € ÷(÷7ò 7r'   r  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚGPT2TensorProcessoriG  c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   ÚGPT2TensorProcessor.__init__H  r[   r'   c                ó  € R V9   g   RV9   g   RV9   g   RV9   d   VP                   pVR8X  dK   RpVP                  R/ 4      p\        P                  ! \        P
                  ! V4      4      VR,          V&   Rp\        W/ 4      # )	zattn_qkv.weightzffn_down.weightzffn_up.weightzattn_output.weightúoutput.weightzlm_head.weightr”   r£   N)rØ   r_   r§   r¨   r   r©   r   )r6   r   r   rO   r”   s   &&&, r$   rP   ÚGPT2TensorProcessor.processK  s†   € ð  Ô%Ø  DÔ(Ø $Ô&Ø# tÔ+à—i‘iˆGð �?Ô"ð $ˆDØ &§
¡
Ð+>ÀÓ CÐÜ16×1AÒ1AÄ"Ç'Â'È'ÓBRÓ1SÐ˜iÕ(¨Ñ.ØˆDÜ˜'¨Ó,Ð,r'   r(   r4   r  rs   s   @@r$   r  r  G  s   ù‡ € ÷(÷-ò -r'   r  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚMambaTensorProcessoria  c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   ÚMambaTensorProcessor.__init__b  r[   r'   c                ó”   € R V9   d   \         P                  ! V^R7      pRV9   d   \         P                  ! V) 4      p\        W/ 4      # )zssm_conv1d.weightr–   Ússm_a)r   rš   Úlogr   rN   s   &&&,r$   rP   ÚMambaTensorProcessor.processe  sB   € Ø $Ô&ô —n’n W°1Ô5ˆGØ�dŒ?ô —f’f˜g˜XÓ&ˆGÜ˜'¨Ó,Ð,r'   r(   r4   r  rs   s   @@r$   r  r  a  s   ù‡ € ÷(÷	-ò 	-r'   r  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚNemotronTensorProcessoriq  c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   Ú NemotronTensorProcessor.__init__r  r[   r'   c                ó:   € R V9   d
   V^,
          p\        W/ 4      # ©znorm.weightrM   rN   s   &&&,r$   rP   ÚNemotronTensorProcessor.processv  ó    € Ø˜DÔ Ø •kˆGÜ˜'¨Ó,Ð,r'   r(   r4   r  rs   s   @@r$   r  r  q  s   ù‡ € ÷(÷-ò -r'   r  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚGemma2TensorProcessori|  c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   ÚGemma2TensorProcessor.__init__}  r[   r'   c                ó:   € R V9   d
   V^,
          p\        W/ 4      # r"  rM   rN   s   &&&,r$   rP   ÚGemma2TensorProcessor.process‚  r$  r'   r(   r4   r  rs   s   @@r$   r&  r&  |  s   ù‡ € ÷(÷
-ò -r'   r&  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚLfm2TensorProcessoriˆ  c                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   ÚLfm2TensorProcessor.__init__‰  r[   r'   c                óX   € R V9   d   \         P                  ! V^R7      p\        W/ 4      # )zshortconv.conv.weightr–   )r   rš   r   rN   s   &&&,r$   rP   ÚLfm2TensorProcessor.processŒ  s'   € Ø" dÔ*ä—n’n W°1Ô5ˆGÜ˜'¨Ó,Ð,r'   r(   r4   r  rs   s   @@r$   r,  r,  ˆ  s   ù‡ € ÷(÷-ò -r'   r,  c                   ó  a a€ ] tR tRt o]P
                  ! R4      t]P
                  ! R4      t]P
                  ! R4      t]P
                  ! R4      t	RV 3R llt
V3R lR ltV3R	 lR
 ltV3R lR ltV3R lR ltRtVtV ;t# )ÚMiniMaxM2TensorProcessori“  zmlp\.experts\.\d+\.z<(?:model\.)?layers\.(?P<bid>\d+)\.mlp\.experts\.gate_up_projrv   z>(?:model\.)?layers\.(?P<bid>\d+)\.mlp\.e_score_correction_biasc                ó(   <€ \         SV `  VR 7       R# rU   rV   rX   s   &&€r$   r7   Ú!MiniMaxM2TensorProcessor.__init__™  r[   r'   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r:   r=   )r"   r#   s   "€r$   r%   Ú%MiniMaxM2TensorProcessor.__annotate__œ  r{   r'   c                óF   € \         P                  ! V P                  R V4      # r}   r~   r@   s   &&r$   rA   Ú(MiniMaxM2TensorProcessor.preprocess_nameœ  rƒ   r'   c                óH   <€ V ^8„  d   QhRS[ S[S[3,          RS[RS[RS[/# rD   rH   )r"   r#   s   "€r$   r%   r6  Ÿ  s;   ø€ ÷ 
Zñ 
ZÙ#'©©S¨¥>ð
ZÙ;>ð
ZÙKNð
ZÙY\ñ
Zr'   c                ó2  € \         P                  ! V P                  V4      ;p'       d-   W4,           pWaR VR,           RV 2&   WaR VR,           RV 2&   R# \         P                  ! V P                  V4      ;p'       d   W4,           VR VR,           R2&   R# R# )r†   r‡   rˆ   r‰   z.exp_probs_b.biasN)r   rŠ   r‹   ÚHF_BIAS_PATTERNrŒ   s   &&&&&  r$   rJ   Ú8MiniMaxM2TensorProcessor.perform_fallback_tensor_mappingŸ  s—   € ô —’˜T×4Ñ4°gÓ>Ð>ˆ1Ö>Ø$Õ.ˆLØKW $ q¨¥x j°¸v¸hÐ GÑHØIU $ q¨¥x j°¸V¸HÐ EÓFä—,’,˜t×3Ñ3°WÓ=Ð=ˆQÖ=ØFOÕFYÐ $ q¨¥x jÐ0AÐ BÓCñ >r'   c                ó    <€ V ^8„  d   QhRS[ /# r‘   r=   )r"   r#   s   "€r$   r%   r6  «  s   ø€ ÷ -ñ -¡Sñ -r'   c                ó(  € \         P                  ! V P                  V4      ;p'       d_   VP                  R 4      pVP                  R4      pV'       d(   V P	                  WWTR,          ,          VR,          4       \        VR/ 4      # \        W/ 4      # )r“   r”   r   rp   N)r   rŠ   r˜   r_   r™   r   r›   s   &&&,   r$   rP   Ú MiniMaxM2TensorProcessor.process«  s€   € Ü—’˜T×:Ñ:¸DÓAÐAˆ1ÖAØ!'§¡Ð,@Ó!AÐØ &§
¡
Ð+>Ó ?Ðß!Ø×+Ñ+¨GÐHZÐ]cÕ[dÕHeÐghÐilÕgmÔnÜ˜g t¨RÓ0Ð0Ü˜'¨Ó,Ð,r'   c                ó\   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[RS[/# rž   rŸ   )r"   r#   s   "€r$   r%   r6  ´  s:   ø€ ÷ %ñ %©b¯j©jð %ÉTÑRUÑW[ÐR[Í_ð %Ñgjð %Ñorñ %r'   c                óâ  € \         P                  ! \        P                  ! V4      4      pVR 8X  d   WRR,          V&   R# \	        VP
                  4      p^pWg,          pV^,          Wg&   W2R,          9  d,   \         P                  ! WeP                  R7      VR,          V&   VR,          V,          p	VR8X  d   V	P                  V^ V4      p	MV	P                  WxV4      p	V	P                  V4       R# r¡   r¦   r®   s
   &&&&&     r$   r™   Ú/MiniMaxM2TensorProcessor._set_moe_expert_tensor´  sÆ   € Ü×(Ò(¬¯ª°Ó)9Ó:ˆØ�Œ;Ø4A˜iÕ(¨Ó1ô ˜Ÿ™Ó'ˆEØˆIØÕ)ˆJØ)¨A�~ˆEÑØ°	Õ:Ô:Ü8=¿ºÀE×QdÑQdÔ8eÐ! )Õ,¨WÑ5Ø 1°)Õ <¸WÕ EˆCØ�FŒ{Ø—j‘j ¨A¨zÓ:‘à—j‘j ¸
ÓC�Ø�I‰I�mÖ$r'   r(   r4   )r)   r*   r+   r,   r   r´   r�   r‹   r˜   r;  r7   rA   rJ   rP   r™   r.   r/   rr   rs   s   @@r$   r2  r2  “  sz   ù‡ € Ø!ŸzšzÐ*@ÓAÐØŸšÐ$cÓdÐØ!ŸzšzÐ*`ÓaÐØ—j’jÐ!bÓc€O÷(÷Nð N÷
Zð 
Z÷-ð -÷%÷ %ð %r'   r2  ÚllamaÚqwen2moeÚgpt_ossÚqwen3moeÚbloomÚt5Ú	t5encoderÚgpt2ÚmambaÚnemotronÚgemma2Úgemma3Úlfm2ú
minimax-m2c                 óØ   € WP                   9  d   . # V P                   V,          pVP                   Uu. uF*  p\        VP                  V,          VP                  4      NK,  	  up# u upi r4   )ÚfieldsÚdatar   ÚpartsÚtypes)ÚreaderÚfieldÚvalueÚ_data_indexs   &&  r$   Ú
read_fieldrZ  Ú  sT   € Ø—M‘MÔ!Øˆ	Ø�M‰M˜%Õ €EØX]×XbÒXbÓcÑXbÈÔ˜eŸk™k¨+Õ6¸¿¹ÖDÑXbÑcÐcùÒcs   ´0A'c                ód   € V ^8„  d   QhR\         R\        R,          R\        R,          R\        /# )r   Ú	processorÚ
model_typeNÚ
num_layersrG   )r2   r    rg   )r"   s   "r$   r%   r%   â  s@   € ÷ Wñ WäðWô �d•
ðWô �d•
ð	Wô
 ñWr'   c           
     óˆ  € \        4       '       d   \        4       '       d
   ^ RIHpHp M \
        P                  R4       \        R4      hVf   V P                  P                  MTpVf   V P                  P                  MTpVR8X  d   RpMEVR8X  d   RpM;VR	8X  d   R
pM1VR8X  d   RpM'VR8X  d   RpMVR8X  d   RpMVR8X  d   RpM	VR8X  d   RpRpVP                  4        F  w  r‰W’8X  g   K  Tp M	  Vf   \        RV R24      hV! Ws4      p
/ pV P                  4       pV F�  pVP                  V4      pTRrþVP                  R4      '       g   VP                  R4      '       d   VP!                  R^4      w  rïRV,           pV
P#                  V4      pVf   VP%                  W¿WM4       K‹  WM,           VVV,           &   KŸ  	  V P'                  4       ;p'       d_   V FX  w  pp\)        VWW4 V R2R7      pVP                  4        UUu/ uF  w  ppVV9  g   K  VVbK  	  pppVP+                  V4       KZ  	  V# u uppi )a=  
GGUF uses this naming convention for their tensors from HF checkpoint:
`blk.N.BB.weight` and `blk.N.BB.bias`
where N signifies the block number of a layer, and BB signifies the
attention/mlp layer components.
See "Standardized tensor names" in
https://github.com/ggerganov/ggml/blob/master/docs/gguf.md for details.
)ÚMODEL_ARCH_NAMESÚget_tensor_name_mapúÛLoading a GGUF checkpoint in PyTorch, requires both PyTorch and GGUF>=0.10.0 to be installed. Please see https://pytorch.org/ and https://github.com/ggerganov/llama.cpp/tree/master/gguf-py for installation instructions.úKPlease install torch and gguf>=0.10.0 to load a GGUF checkpoint in PyTorch.NÚcoherez	command-rÚ	qwen2_moerD  Ú	qwen3_moerF  Úgemma3_textrN  Úgemma4_textÚgemma4Úumt5rH  Ú
minimax_m2rP  rE  úgpt-osszUnknown gguf model_type: zÏ in gguf-py. This might because you're using an outdated version of gguf-py package, you can install `gguf` package from source refer to https://github.com/ggerganov/llama.cpp/tree/master/gguf-py#developmentÚ z.weightr½   rÉ   )rG   )r
   r	   Úggufr`  ra  ÚloggerÚerrorÚImportErrorr   r]  Únum_hidden_layersrÍ   ÚNotImplementedErrorÚ
state_dictrA   ÚendswithÚrsplitÚget_namerJ   Únamed_childrenÚget_gguf_hf_weights_mapÚupdate)Úhf_modelr\  r]  r^  rG   r`  ra  ÚarchrÓ   rX  Úname_maprE   rt  r;   r   rF   Ú	gguf_namerx  ÚchildÚsub_maprø   rù   s   &&&&&                 r$   ry  ry  â  si  € ô ×ÒÔ1×3Ò3ß>Ð>ä�‰ðAô	
ô ÐgÓhÐhà/9Ò/A�—‘×+Ò+Àz€JØ6@Ò6H�—‘×2Ò2Èj€Jà�XÔØ ‰
Ø	�{Ô	"Ø‰
Ø	�{Ô	"Ø‰
Ø	�}Ô	$Ø‰
Ø	�}Ô	$Ø‰
Ø	�vÔ	Ø‰
Ø	�|Ô	#Ø!‰
Ø	�yÔ	 Øˆ
Ø€DØ&×,Ñ,Ö.‰
ˆØÖØˆDÙñ /ð ‚|Ü!Ø'¨
 |ð 4Uð Uó
ð 	
ñ # 4Ó4€Hð ÐØ×$Ñ$Ó&€JÛˆØ×+Ñ+¨GÓ4ˆà ˆfØ×Ñ˜I×&Ò&¨'×*:Ñ*:¸7×*CÒ*CØ"Ÿ>™>¨#¨qÓ1‰LˆDØ˜6•\ˆFà×%Ñ% dÓ+ˆ	ØÒØ×5Ñ5Ð6IÐS\ÔfÙà2;Õ2EÐ˜I¨Õ.Ó/ñ ð" "×0Ñ0Ó2Ð2€~Ö2Û)‰KˆD�%Ü-Ø�y¨jÀkÐRVÐQWÐWXÐDYôˆGð )0¯©¬ÔX©¡  1¸1ÐDWÑ;W”t�q˜!’t©ˆGÑXØ×&Ñ& wÖ/ñ *ð Ðùó Ys   ÈH>ÈH>c                óÎ  a/a0€ \        4       '       d   \        4       '       d
   ^ RIHpHp M \
        P                  R4       \        R4      hV! V 4      pVP                  p\        VP                  4       4      p\         U	u/ uF  q™/ bK  	  p
p	\        VR4      ^ ,          p\        VR4      pRpRV9   d   RV9   d   RpMnR	V9   g   R
V9   d_   RV
R,          R&   V'       d4   RV^ ,          P                  4       9   d   RpR
V9   d   R.V
R,          R&   MR
V9   d   R.V
R,          R&   R	pMTpRV9   d   RpM$RV9   g   RV9   d   RpMRV9   d   RpM	RV9   d   RpRV9   d¿   0 RKmo/Ro0\        ;QJ d)    V/3R lVP                   4       F  '       g   K   RM	  RM! V/3R lVP                   4       4      p\        ;QJ d)    V03R lVP                   4       F  '       g   K   RM	  RM! V03R lVP                   4       4      pWêR,          R&   V'       * V
R,          R &   V\         9  d   V\         9  d   \#        R!V R"24      hR#R$.p\$        ;QJ d&    R% VP                   4       F  '       d   K   RM	  RM! R% VP                   4       4      ;'       g    VV9   V
R,          R&&   \&        P(                  ! T\&        P(                  ! V4      ;'       g    / 4      pVP+                  4        F  w  ppV
R,          P-                  VV4       K!  	  VP                  P+                  4        EFp  w  ppVP/                  W½4      pVP1                  R'4      pV^ ,          pR'P3                  VR(,          4      pVP4                   Uu. uF*  p\7        VP8                  V,          VP:                  4      NK,  	  pp\=        V4      ^8X  d
   V^ ,          p\?        V\@        4      '       d   VV9   d   VP/                  W½4      p\        P+                  4        Fb  w  ppVV9   g   K  VVV,          9   g   K  VV,          V,          pVRL8X  d   K8  Ve   VV
V,          V&   VV9   g   KQ  VPC                  V4       Kd  	  VV9   g   EKU  \
        PE                  R)V R*V 24       EKs  	  V
R,          R+,          R,8X  d   R-V
R,          R+&   V
R,          R+,          R.8X  d   R/V
R,          R+&   . RMOV
R,          R0&   V
R,          P)                  R+4      R8X  dS   ^ R1^R2^R3/pV
R,          P)                  R44      p\?        V\F        4      '       d   VP)                  VR24      V
R,          R4&   V
R,          R+,          R58X  de   V
R,          R6,          p\I        V4      V
R,          R6&   RV
R,          R7&   \K        V4       U U!u. uF  w  p p!V!^ 8”  g   K  V NK  	  up!p V
R,          R8&   VR8X  dß   RNR9 lp"V"! VR:4      p#V#eÍ   R;V#/p$VP                   F¬  pVPM                  R<4      '       g   K  V\=        R<4      R p%V%R=8X  d   K3  VP                  V,          P8                  ^ ,          p\?        V\N        4      '       d   VPQ                  R>4      pV%RO9   d   \S        V4      pMV%RP9   d   R?p%\G        V4      pM VV$V%&   K®  	  V$V
R,          R@&   RAV
R,          9  dC   V
RB,          p&RCV&9   d   \=        V&RC,          4      V
R,          RA&   M\
        PU                  RD4       V'       Ed   / V
RE&   V
P)                  R/ 4      p'\V        P)                  V\X        4      p(V(! V'RF7      p)\[        VV)4      p*\]        VP                  RGRH7       F¶  p+V+P^                  p,V! V+P4                  V+P`                  4      p-V)Pc                  V-V,V*V
RI7      p.V.Pd                  p-V.P^                  p,V,V*9  d   Kb  V*V,,          p,\f        Ph                  ! \j        Pl                  ! V-4      4      p+Ve   V+Po                  V4      p+V+V
RE,          V,&   K¸  	  \=        V4      ^ 8”  d   \
        PE                  RJV 24       V
# u up	i u upi u up!p i )Qa
  
Load a GGUF file and return a dictionary of parsed parameters containing tensors, the parsed
tokenizer and config attributes.

Args:
    gguf_checkpoint_path (`str`):
        The path the to GGUF file to load
    return_tensors (`bool`, defaults to `False`):
        Whether to read the tensors from the file and return them. Not doing so is faster
        and only loads the metadata in memory.
    model_to_load (`nn.Module`, *optional*):
        The model to load the weights into. This is used to map GGUF tensor names to
        Transformers parameter names.
    torch_dtype (`torch.dtype`, *optional*):
        The desired `torch.dtype` for the loaded tensors. If provided, tensors will be
        converted to this dtype immediately after dequantization to save memory.
)Ú
GGUFReaderÚ
dequantizerb  rc  zgeneral.architecturezgeneral.nameNrC  ÚmistralrH  rI  Tr   Úis_gated_actrj  ÚUMT5EncoderModelÚarchitecturesÚT5EncoderModelrD  re  rE  rl  rF  rf  rP  rk  ÚstablelmÚffn_normc              3   óR   <"  € T F  pS F  q"VP                   9   x € K  	  K  	  R # 5ir4   ©r   )Ú.0rÏ   Ú	bias_nameÚattn_bias_names   &  €r$   Ú	<genexpr>Ú'load_gguf_checkpoint.<locals>.<genexpr>„  s$   øé € Ðm¹n°FÓ^lÐQZ F§K¡KÖ/Ñ^lÑ/»nùs   ƒ$'Fc              3   óB   <"  € T F  pSVP                   9   x € K  	  R # 5ir4   rŒ  )r�  rÏ   Úffn_norm_names   & €r$   r�  r‘  …  s   øé € Ð#^É~ÀV M°V·[±[Ö$@Ë~ùs   ƒÚuse_qkv_biasÚuse_parallel_residualzGGUF model with architecture z is not supported yet.ÚfalconrG  c              3   ó>   "  € T F  qP                   R 8g  x € K  	  R# 5i)r  NrŒ  )r�  rÏ   s   & r$   r�  r‘  �  s   é € ÐH¹¨v�K‰K˜?Ö*»ùs   ‚Útie_word_embeddingsrÉ   rj   z1Some keys were not parsed and added into account z | r]  rN  rg  ri  rh  Úeos_token_idÚnoneÚsoftmaxÚsigmoidÚscoring_funcrO  r^   Úblock_auto_adjust_ff_dimÚfull_attn_idxsc                 óÊ   € R V 2pW0P                   9   dN   V P                   V,          P                  ^ ,          p\        V\        4      '       d   VP	                  R4      pV# V# )zgpt-oss.úutf-8)rR  rT  Ú
isinstanceÚbytesÚdecode)rV  rF   ÚdefaultrÓ   Úvals   &&&  r$   Úread_gpt_keyÚ*load_gguf_checkpoint.<locals>.read_gpt_keyÚ  sV   € Ø˜V˜HÐ%ˆCØ—m‘mÔ#Ø—m‘m CÕ(×.Ñ.¨qÕ1�Ü˜c¤5×)Ò)ØŸ*™* WÓ-�CØ�
ØˆNr'   zrope.scaling.typeÚ	rope_typezgpt-oss.rope.scaling.Útyper¡  Ú original_max_position_embeddingsÚrope_scalingÚ
vocab_sizer   Útokensz¤Can't find a way to retrieve missing config vocab_size from tokenizer parameters. This will use default value from model config class and cause unexpected behavior.r£   r5   z,Converting and de-quantizing GGUF tensors...)Údesc)r   r   r“   r”   z0Some keys of the GGUF file were not considered: >   úattn_k.biasúattn_q.biasúattn_v.biaséÿÿÿÿ)rk   éj   é2   r4   )ÚfactorÚattention_factorÚ	beta_fastÚ	beta_slow)Úoriginal_context_lengthr«  )8r
   r	   rn  r‚  rƒ  ro  rp  rq  rR  rª   ÚkeysÚGGUF_TO_TRANSFORMERS_MAPPINGrZ  ÚlowerÚanyr£   ÚGGUF_SUPPORTED_ARCHITECTURESÚ
ValueErrorÚallr   r_   rÍ   Ú
setdefaultrÎ   r	  ÚjoinrS  r   rT  rU  rÂ   r¢  r    ÚremoveÚinforg   ÚmaxÚ	enumerateÚ
startswithr£  r¤  ÚfloatÚwarningÚTENSOR_PROCESSORSr2   ry  r   r   Útensor_typerP   r   r§   r¨   r   r©   Úto)1Úgguf_checkpoint_pathÚreturn_tensorsÚmodel_to_loadÚtorch_dtyper‚  rƒ  rV  rR  Úreader_keysrø   r”   ÚarchitectureÚ
model_nameÚupdated_architecturer  r•  Ú
exceptionsÚconfig_defaultsrÓ   rX  Úgguf_keyrW  r	  ÚprefixÚ
config_keyrY  Ú	parameterÚparameter_renamesÚrenamed_config_keyÚ_gating_func_mapÚ_scoringÚgguf_num_key_value_headsrÑ   rb   r§  r©  r¬  rF   Útokenizer_parametersr   ÚProcessorClassr\  r“   rÏ   r   r   Úresultr�  r“  s1   &&&&                                           @@r$   Úload_gguf_checkpointrä  <  sþ  ù€ ô$ ×ÒÔ1×3Ò3ß/Ð/ä�‰ðAô	
ô ÐgÓhÐháÐ,Ó-€FØ�]‰]€FÜ�v—{‘{“}Ó%€Kå(DÓEÑ(D 1˜BšÑ(DÐÐEä˜fÐ&<Ó=¸aÕ@€Lä˜F NÓ3€JàÐð �,Ô 9°
Ô#:Ø(Ñð 
�Ô	 °Ô!<Ø6:Ð˜(Õ# NÑ3ß˜& J¨q¥M×$7Ñ$7Ó$9Ô9Ø#)Ð Ø˜lÔ*Ø@RÐ?SÐ! (Õ+¨OÑ<øà˜lÔ*Ø@PÐ?QÐ! (Õ+¨OÑ<Ø#'Ñ à+Ðà�\Ô!Ø*ÑØ	�lÔ	" i°<Ô&?Ø(ÑØ	�|Ô	#Ø*ÑØ	˜Ô	%Ø+Ðð
 �\Ô!ÚFˆØ"ˆß“3Ôm¸f¿nºnÓm—3—3’3Ôm¸f¿nºnÓmÓmˆß #£Ô#^ÈvÏ~Ê~Ó#^§§¢Ô#^ÈvÏ~Ê~Ó#^Ó ^ÐØ6>˜(Õ# NÑ3ØCXÔ?XÐ˜(Õ#Ð$;Ñ<àÔ7Ô7Ð<PÔXtÔ<tÜÐ8¸¸ÐF\Ð]Ó^Ð^ð ˜GÐ$€Jç‹ÑH¸¿ºÓH��ŠÑH¸¿ºÓHÓH×fÐfÈLÐ\fÑLfð �hÕÐ 5Ñ6ô
 3×6Ò6ØÔ:×>Ò>¸|ÓL×RÐRÐPRó€Oð &×+Ñ+Ö-‰
ˆˆUØ˜(Õ#×.Ñ.¨s°EÖ:ñ .ð "Ÿ=™=×.Ñ.×0‰ˆ�%Ø×#Ñ# LÓGˆØ—‘˜sÓ#ˆØ�q•ˆØ—X‘X˜e B�iÓ(ˆ
à]b×]gÒ]gÓhÑ]gÈkÔ" 5§;¡;¨{Õ#;¸U¿[¹[ÖIÑ]gˆÐhäˆu‹:˜Œ?Ø˜!•HˆEä�eœS×!Ò! l°eÔ&;Ø—M‘M ,ÓEˆEä,H×,NÑ,NÖ,PÑ(ˆIÐ(ØÐ*Ö*¨zÐ=NÈvÕ=VÖ/VØ%6°vÕ%>¸zÕ%JÐ"Ø%¨Ô+Ùà%Ò1ØGLÐ% iÕ0Ð1CÑDà˜{Ö*Ø×&Ñ& xÖ0ñ -Qð �{×"Ü�K‰KÐKÈHÈ:ÐUXÐY^ÐX_Ð`×añ7 1ð< ˜Õ" <Õ0°HÔ<Ø4AÐ˜(Õ# LÑ1ð ˜Õ" <Õ0°HÔ<Ø4AÐ˜(Õ# LÑ1ò 7CÐ˜(Õ# NÑ3ð ˜Õ"×&Ñ& |Ó4¸ÔDØ˜v q¨)°Q¸	ÐBÐØ$ XÕ.×2Ñ2°>ÓBˆÜ�h¤×$Ò$Ø:J×:NÑ:NÈxÐYbÓ:cÐ˜hÕ'¨Ñ7à˜Õ" <Õ0°FÔ:Ø#4°XÕ#>Ð?TÕ#UÐ ä=@ÐAYÓ=ZÐ˜(Õ#Ð$9Ñ:àBGÐ˜(Õ#Ð$>Ñ?ô
 &/Ð/GÔ%Hô9
Ù%H‘/�!�\ÈLÐ[\ÑL\�AˆAÑ%Hò9
Ð˜(Õ#Ð$4Ñ5ð ˜yÔ(ô	ñ ! Ð)<Ó=ˆ	ØÒ Ø'¨Ð3ˆLð —}”}�Ø—~‘~Ð&=×>Ò>ÙØœSÐ!8Ó9Ð;Ð<�Ø˜VÔ#ÙØŸ™ cÕ*×0Ñ0°Õ3�Ü˜e¤U×+Ò+Ø!ŸL™L¨Ó1�EàÐUÔUÜ! %›L‘EØÐ^Ô^à?�FÜ ›J‘EàØ',�˜VÓ$ñ% %ð( ;GÐ˜hÕ'¨Ñ7ð Ð,¨XÕ6Ô6Ø0°Õ=ÐØÐ+Ô+Ü8;Ð<PÐQYÕ<ZÓ8[Ð˜hÕ'¨Ò5ä�N‰Nðeô÷
 €~Ø')Ð˜)Ñ$à"×&Ñ& x°Ó4ˆä*×.Ñ.¨|¼_ÓMˆÙ"¨&Ô1ˆ	ä4°]ÀIÓNÐä˜6Ÿ>™>Ð0^×_ˆFØ—;‘;ˆDÙ  §¡¨f×.@Ñ.@ÓAˆGà×&Ñ&ØØØ#5Ø"3ð	 'ó ˆFð —n‘nˆGØ—;‘;ˆDàÐ-Ô-Ùà% dÕ+ˆDä×%Ò%¤b§g¢g¨gÓ&6Ó7ˆFØÒ&ØŸ™ ;Ó/�Ø17Ð˜iÕ(¨Ó.ñ- `ô0 ˆ;Ó˜!ÔÜ�‰ÐFÀ{ÀmÐTÔUàÐùòk FùòL iùóf9
s   ÂaÎ0aÖ3a!×a!)NNrm  )FNN)*r   Útypingr   Únumpyr   Ú	tqdm.autor   Úintegrationsr   r   r   r   Úutilsr	   Úutils.import_utilsr
   Úutils.loggingr   r§   r)   ro  r¼  rª   r»  r¿  r   r2   rS   ru   r¶   rä   r  r  r  r  r&  r,  r2  rË  rZ  ry  rä  r(   r'   r$   Ú<module>rì     sÓ  ðó  
Ý ã Ý ÷ó õ &Ý 1Ý %ñ ×ÒÛá	�HÓ	€ð ØØ�yØ˜NØ˜
ð
ð
 	�K Ð.DÐF\Ð]ðð Ð!Ø�+Ð5°kÕBÐCØ˜Ð&<Ð=OÕ&PÐQð Ð ñ  $Ð$@ÀÕ$J×$OÑ$OÓ$QÓRÐ ô�ô ÷-ñ -ô47˜?ô 7ô<5%˜oô 5%ôpbW˜Oô bWôJ$˜?ô $ôN
7˜ô 
7ô-˜/ô -ô4-˜?ô -ô -˜oô -ô	-˜Oô 	-ô-˜/ô -ô2%˜ô 2%ðl Ð!ØÐ'ØÐ$ØÐ'ØÐ!ØÐ
ØÐ"Ø
ÐØÐ!ØÐ'ØÐ#ØÐ#Ø
ÐØÐ*ðÐ ò$d÷Wöttr'   