+
    œ°³j<»  ã                   óž  € ^ RI Ht ^ RIt^ RIHt ^ RIHt ^RIHt	 ^RI
Ht ^RIHt ^RIHt ^RIHt ^R	IHtHtHt ^R
IHtHtHtHtHt ^RIHt ^RIHtH t  ^RI!H"t" ^RI#H$t$H%t% ^RI&H't'H(t(H)t) ^RI*H+t+H,t,H-t-H.t.H/t/H0t0H1t1 ^RI2H3t3 ^RI4H5t5 ^RI6H7t7H8t8 ^RI9H:t:H;t; ^RI<H=t= ^RI>H?t? ^RI@HAtAHBtBHCtCHDtDHEtE ^RIFHGtG ^RIHHItIHJtJHKtKHLtLHMtM ^RINHOtO ^RIPHQtQ ^RIRHStS ]/P¨                  ! ]U4      tV. RQOtW]-! R'R(7      ] ! R) R"]Q4      4       4       tX]-! R'R(7      ] ! R* R#]G4      4       4       tY]-! R'R(7      ] ! R+ R$]4      4       4       tZ ! R, R-]'R.R/7      t[]- ! R0 R%]4      4       t\ ! R1 R2]?4      t] ! R3 R4]M4      t^ ! R5 R6]L4      t_ ! R7 R8]4      t` ! R9 R:]S4      ta]- ! R; R]%4      4       tb]- ! R< R!]b4      4       tc ! R= R>]C4      td ! R? R@]I4      te ! RA RB];4      tf]0 ! RC RD]:4      4       tg ! RE RF]K4      th ! RG RH]J4      ti ! RI RJ]A4      tj ! RK RL]B4      tk ! RM R ]=4      tl ! RN R]84      tm ! RO R]74      tn]- ! RP R&](4      4       toR# )Ré    )ÚCallableN)Ústrict)Úinitialization)ÚCache)ÚPreTrainedConfig)ÚTorchvisionBackend)ÚBatchFeature)Údivide_to_patchesÚgroup_images_by_shapeÚreorder_images)ÚOPENAI_CLIP_MEANÚOPENAI_CLIP_STDÚ
ImageInputÚPILImageResamplingÚSizeDict)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚROPE_INIT_FUNCTIONS)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚImagesKwargsÚProcessorMixinÚUnpack)Ú
TensorTypeÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingÚno_inherit_decoratorÚ	torch_int)Úcapture_outputs)Úget_vision_position_ids)Ú$DeepseekOcr2ForConditionalGenerationÚDeepseekOcr2Model)ÚDeepseekV4ExpertsÚDeepseekV4MLP)ÚGemma3TextModel)ÚKimi_K25VisionRotaryEmbedding)ÚLagunaAttentionÚLagunaDecoderLayerÚLagunaRotaryEmbeddingÚapply_rotary_pos_embÚeager_attention_forward)ÚMiniMaxM3VLTextConfig)ÚMiniMaxM3VLRMSNormÚMiniMaxM3VLSparseMoeBlockÚMiniMaxM3VLTopKRouterÚMiniMaxM3VLVisionAttentionÚMiniMaxM3VLVisionMLP)Úapply_rotary_pos_emb_vision)ÚSiglipVisionConfig)ÚSiglipVisionEmbeddingsÚStep3p7ForConditionalGenerationÚStep3p7ModelÚStep3p7PreTrainedModelÚStep3p7TextModelÚStep3p7VisionModelÚStep3p7VisionConfigÚStep3p7TextConfigÚStep3p7ConfigÚStep3p7ImageProcessorÚStep3p7Processorzstepfun-ai/Step-3.7-Flash)Ú
checkpointc                   ój   a € ] tR t^Xt o RtRtRtRt^/t^t	Rt
^tRtRtRtRtR	tR
tR tV 3R ltRtV tR	# )r=   Ústep3p5_visionÚvision_configÚaxiali   éØ  Ú
quick_geluçñhãˆµøä>gš™™™™™¹?Ni�
  c                ó’  € VP                  R V P                  4      V n        VP                  RV P                  4      V n        VP                  RV P                  4      V n        VP                  RV P                  4      V n        \
        P                  ! V 3/ VB  \        V P                  V P                  ,          4      V n	        R# )ÚwidthÚlayersÚheadsÚls_init_valueN)
ÚpopÚhidden_sizeÚnum_hidden_layersÚnum_attention_headsÚlayer_scale_init_valuer   Ú__post_init__ÚintÚ	mlp_ratioÚintermediate_size)ÚselfÚkwargss   &,Úl/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/step3p7/modular_step3p7.pyrT   Ú!Step3p7VisionConfig.__post_init__m   s•   € Ø!Ÿ:™: g¨t×/?Ñ/?Ó@ˆÔØ!'§¡¨H°d×6LÑ6LÓ!MˆÔØ#)§:¡:¨g°t×7OÑ7OÓ#PˆÔ Ø&,§j¡j°À$×B]ÑB]Ó&^ˆÔ#Ü×&Ò& tÑ6¨vÒ6Ü!$ T×%5Ñ%5¸¿¹Õ%FÓ!GˆÖó    c                ó¬   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R	&   S[R
,          ;R&   S[ ;R&   # )é   rP   rQ   rR   Ú
image_sizeÚ
patch_sizeÚ
hidden_actÚlayer_norm_epsrV   rS   NÚrope_parametersÚmax_position_embeddings)rU   ÚstrÚfloatÚdict)ÚformatÚ__classdict__s   "€rZ   Ú__annotate__Ú Step3p7VisionConfig.__annotate__X   s˜   ø‡ ‚ ñ Ññ ñ Ññ ñ Ñ!ñ ñ Ññ ñ Ññ ñ Ñ"ñ ñ Ñ ñ ñ  Ñ"ñ! ñ" "Ñ'ñ# ñ$ ˜D•[Ñ'ñ% ñ& !Ñ'ò' r\   )rP   rW   rS   rR   rQ   gUUUUUU@)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú
model_typeÚbase_config_keyÚdefault_rope_typerP   rQ   rR   r_   r`   ra   rb   rV   rS   rc   rd   rT   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©ri   s   @rZ   r=   r=   X   sa   ø‡ € ð "€JØ%€OØÐð €KØÐØ!ÐØ€JØ€JØ"€JØ €Nà"€IØ$'ÐØ#'€OØ#'ÐòH÷+ ƒ r\   c                   ó¶  a a€ ] tR t^vt oRtRtRRRRRRRR	R
RRR/tRtRtRt	RRRRRRRRRRRRRRRR/t
]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       tRtRt^t^-tR tR!tR"t R#t!R$t"^t#R#t$R%t%R%t&^t'R%t(R%t)Rt*R%t+R&t,Rt-R%t.R%t/R%t0R%t1V 3R' lt2V3R( lt3R)t4Vt5V ;t6# )*r>   aª  
mlp_layer_types (`list[str]`, *optional*):
    Per-layer MLP type: `"sparse"` (MoE) or `"dense"`. If not provided, derived from the legacy
    `moe_layers_enum` hub-config kwarg (comma-separated string or list of MoE layer indices),
    defaulting to all layers from index 3 onward being MoE.
n_routed_experts (`int`, *optional*, defaults to 288):
    Total number of routed experts. Accessible as `num_local_experts` via `attribute_map`.
share_expert_dim (`int`, *optional*, defaults to 1280):
    Intermediate size of the always-active shared expert.
num_sliding_attention_heads (`int`, *optional*):
    Attention head count for `"sliding_attention"` layers, if different from `num_attention_heads`.
    Defaults to the legacy `attention_other_setting` hub-config kwarg's `num_attention_heads` entry.
    Applied via a `per_layer_config` override (see `PreTrainedConfig`), not a per-layer list field.
query_pre_attn_scalar (`int` or `float`, *optional*):
    `Step3p7Attention.__init__` hook point: defaults to `head_dim`, giving standard
    `head_dim ** -0.5` scaling; overridable per released checkpoint variant.
moe_router_scaling_factor (`float`, *optional*, defaults to 1.0):
    Scaling factor applied to the MoE block's routed-expert output (`routed_scaling_factor` in
    `Step3p7SparseMoeBlock`).
swiglu_limits (`list[float | None]`, *optional*):
    Per-layer gate/up clamping bound; `None` means no clamping.
swiglu_limits_shared (`list[float | int | None]`, *optional*):
    Per-layer gate/up clamping bound for the always-active shared expert; `None` means no clamping.
mtp_layer_types (`list[str]`, *optional*):
    Per-MTP-layer attention type; split off `layer_types`'s legacy trailing pad instead of being
    discarded, so `Step3p7Config.get_mtp_config()` can build the MTP layers for `generate(use_mtp=True)`.
mtp_mlp_layer_types (`list[str]`, *optional*):
    Per-MTP-layer MLP type, analogous to `mtp_layer_types` for `mlp_layer_types`.
Ústep3p5Únum_local_expertsÚn_routed_expertsÚnum_attention_groupsÚnum_key_value_headsÚmoe_num_expertsÚ	moe_top_kÚnum_experts_per_tokÚshare_expert_dimsÚshare_expert_dimÚnum_mtp_layersÚnum_nextn_predict_layersg     ˆÃ@TFzlayers.*.self_attn.q_projÚcolwise_gather_outputzlayers.*.self_attn.k_projzlayers.*.self_attn.v_projzlayers.*.self_attn.g_projzlayers.*.self_attn.o_projÚrowwise_split_inputz!layers.*.mlp.experts.gate_up_projÚpacked_colwisezlayers.*.mlp.experts.down_projÚrowwisezlayers.*.mlp.expertsÚmoe_tp_expertsi   i ,  i ô i/÷ rI   i   i   Ng      ð?c           
     óž	  <a€ VP                  R ^ 4      pW n        V P                  V P                  V,           rCV'       dö   R FW  w  rV\        W4      p\	        V\
        4      '       g   K(  \        V4      V8X  g   K:  \        WVRV 4       \        WWsV 4       KY  	  R FG  p\        W4      p\	        V\
        4      '       g   K&  \        V4      V8X  g   K8  \        WVRV 4       KI  	  R FE  pVP                  V4      p\	        V\
        4      '       g   K,  \        V4      V8X  g   K>  VRV W&   KG  	  V P                  f'   R.V,          V n	        V'       d   R.V,          V n
        V P                  fÎ   VP                  RR4      p	V	ef   \	        V	\        4      '       d   V	P                  R4      MT	p
V
 Uu0 uF/  p\        V4      P                  4       '       g   K$  \        V4      kK1  	  ppM\!        \#        ^V4      4      p\#        V4       Uu. uF  q»V9   d   RMRNK  	  ppVRV V n        V'       d
   WÓV V n        V P&                  fN   VP                  R	R4      pV'       d#   VP                  R
V P(                  4      V n        MV P(                  V n        TP+                  R\-        V P                  4       UUu/ uF  w  ppVR8X  g   K  VR
V P&                  /bK   	  upp4       V P.                  f   V P0                  V n        VP                  RV P2                  4      pVP                  RR4      pVP                  RR4      p\4        SV `l  ! R/ VB  \!        V P                  4      pV P8                  ;'       g    / o\:        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       d"   V Uu/ uF  pVSV,          bK  	  upV n        R# \	        V\
        4      '       g   V.\        V P                  4      ,          p/ V n        V FN  pV P                  P=                  V4      pRRRVV,          /pV'       d   VV,          VR&   VV P8                  V&   KP  	  V'       d8   RV P8                  9   d%   V P8                  R,          P?                  V4       R# R# R# u upi u upi u uppi u upi )rƒ   NÚ
rope_thetaÚpartial_rotary_factorsÚfull_attentionÚmoe_layers_enumÚ,ÚsparseÚdenseÚattention_other_settingrR   Úper_layer_configÚsliding_attentionÚrope_scalingc              3   ób   <"  € T F$  p\        SP                  V4      \        4      x € K&  	  R # 5i©N)Ú
isinstanceÚgetrg   )Ú.0Ú
layer_typeÚrps   & €rZ   Ú	<genexpr>Ú2Step3p7TextConfig.__post_init__.<locals>.<genexpr>,  s$   øé € ÐUÁn¸
Œz˜"Ÿ&™& Ó,¬d×3Ð3Ãnùs   ƒ,/FTÚ	rope_typeÚdefaultÚpartial_rotary_factor))Úlayer_typesÚmtp_layer_types)Úmlp_layer_typesÚmtp_mlp_layer_types)Úswiglu_limitsÚswiglu_limits_shared)rŠ   r‹   © ) rO   rƒ   rQ   Úgetattrr—   ÚlistÚlenÚsetattrr˜   r¡   r¢   r£   re   ÚsplitÚstriprU   ÚsetÚranger¤   Únum_sliding_attention_headsrR   Ú
setdefaultÚ	enumerateÚquery_pre_attn_scalarÚhead_dimÚdefault_thetaÚsuperrT   rc   ÚallÚindexÚupdate)rX   rY   rƒ   ÚnÚpaddedÚfieldÚ	mtp_fieldÚvalueÚkeyr�   ÚitemsÚiÚmoe_setr£   r‘   Ú	layer_idxrš   rŠ   r‹   r”   Úlayer_type_setÚparamsr›   Ú	__class__s   &,                    @€rZ   rT   ÚStep3p7TextConfig.__post_init__Ú   sB  ù€ ð
 $*§:¡:Ð.HÈ!Ó#LÐ Ø(@Ô%Ø×*Ñ*¨D×,BÑ,BÐE]Õ,]ˆ6ß#ó%Ñ �ô   Ó,�Ü˜e¤T×*Ô*¬s°5«z¸VÖ/CÜ˜D¨¨r°¨Ô3Ü˜D¨U°V¨_Ö=ñ%ó C�Ü Ó,�Ü˜e¤T×*Ô*¬s°5«z¸VÖ/CÜ˜D¨¨r°¨Ö3ñ Có @�ØŸ
™
 3›�Ü˜e¤T×*Ô*¬s°5«z¸VÖ/CØ"'¨¨ )�F“Kñ @ð
 ×ÑÒ#Ø 0Ð1°AÕ5ˆDÔß'Ø(8Ð'9Ð<TÕ'T�Ô$à×ÑÒ'ð %Ÿj™jÐ):¸DÓAˆOØÒ*Ü6@ÀÔRU×6VÒ6V˜×-Ñ-¨cÔ2Ð\k�Ù+0ÓC©5 a´C¸³F·L±L·Nœ6œ3˜qž6©5�ÐC�äœe A q›kÓ*�ÜNSÐTZÌmÓ\ÉmÈ°¬<™x¸WÒDÉmˆOÐ\Ø#2°2°AÐ#6ˆDÔ ß'Ø+:¸VÐ+D�Ô(à×+Ñ+Ò3ð '-§j¡jÐ1JÈDÓ&QÐ#ß&Ø3J×3NÑ3NØ)¨4×+CÑ+Có4�Õ0ð 48×3KÑ3K�Ô0ð 	×ÑØô .7°t×7GÑ7GÔ-Hôá-HÑ)�I˜zØÐ!4Ñ4ô U�	Ð1°4×3SÑ3SÐTÒTÙ-Hòô	
ð ×%Ñ%Ò-Ø)-¯©ˆDÔ&ð
 —Z‘Z ¨d×.@Ñ.@ÓAˆ
Ø!'§¡Ð,DÀdÓ!KÐØ—z‘z .°$Ó7ˆä‰ÒÑ' Ò'ô ˜T×-Ñ-Ó.ˆØ×!Ñ!×'Ð' Rˆß‹3ÔUÁnÓU�3�3Š3ÔUÁnÓU×UÒUÙQ_Ó#`ÑQ_À: J°°:µÒ$>ÑQ_Ñ#`ˆDÖ ä˜j¬$×/Ò/Ø(˜\¬C°×0@Ñ0@Ó,AÕA�
Ø#%ˆDÔ Û,�
Ø×$Ñ$×*Ñ*¨:Ó6�Ø% y°,À
È1ÅÐN�ß)Ø6LÈQÕ6O�FÐ2Ñ3Ø39�×$Ñ$ ZÓ0ñ -÷ Ð 0°D×4HÑ4HÔ HØ×$Ñ$Ð%5Õ6×=Ñ=¸lÖKñ !I‰|ùòs Dùò ]ùó&ùò0 $as$   Æ;!R:Ç!R:ÈR?ËSËSÏS
c                ód  <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[;R&   S[ ;R&   S[ ;R	&   S[ ;R
&   S[ ;R&   S[ R,          ;R&   S[ R,          ;R&   S[ ;R&   S[ R,          ;R&   S[ S[S[ ,          ,          R,          ;R&   S[;R&   S[ S[,          R,          ;R&   S[;R&   S[;R&   S[S[S[ ,          R,          ,          R,          ;R&   S[S[S[ ,          R,          ,          R,          ;R&   S[S[,          R,          ;R&   S[S[,          R,          ;R&   # )r^   rP   rW   r|   rQ   rd   Ú
vocab_sizeÚrms_norm_epsÚmoe_intermediate_sizerz   r   r�   NÚsliding_windowr°   Úpad_token_idÚbos_token_idÚeos_token_idÚattention_biasr³   Úmoe_router_scaling_factorÚmlp_biasr¥   r¦   r¢   r¤   )rU   rf   r©   Úboolre   )rh   ri   s   "€rZ   rj   ÚStep3p7TextConfig.__annotate__v   sÇ  ø‡ ‚ ñV ÑñW ñX Ñ"ñY ñZ Ñ ñ[ ñ\ Ññ] ñ^ !Ñ)ñ_ ñ` Ñña ñb Ññc ñd Ñ%ñe ñf Ññg ñh Ñ ñi ñj Ñ ñk ñl ˜$•JÑ%ñm ñn "% t¥Ñ2ño ñp Ññq ñr ˜•*Ñ#ñs ñt ™™S�	•/ DÕ(Ñ/ñu ñv Ñ ñw ñx ¡�;¨Õ-Ñ4ñy ñz  %Ñ*ñ{ ñ| Ññ} ñ~ ™¡� dÕ*Õ+¨dÕ2Ñ9ñ ñ@ ™u¡s�{¨TÕ1Õ2°TÕ9Ñ@ñA ñB ™#•Y Õ%Ñ,ñC ñD ™c� TÕ)Ñ0òE r\   )r¡   r£   r¢   r¤   rƒ   r°   r³   rc   )7rl   rm   rn   ro   Ú__doc__rp   Úattribute_maprµ   ÚgatingÚuse_bidirectional_attentionÚbase_model_tp_planÚAttributeErrorÚdense_intermediate_sizeÚshared_intermediate_sizeÚ
rotary_dimÚswiglu_alphaÚswiglu_limitÚindex_n_headsÚindex_head_dimÚindex_block_sizeÚindex_topk_blocksÚindex_local_blocksÚoutput_router_logitsÚrouted_scaling_factorÚrouter_aux_loss_coefÚrouter_jitter_noiserP   rW   r|   rQ   rd   rÉ   rÊ   rË   rz   r   r�   rÌ   r°   rÍ   rÎ   rÏ   rÐ   r³   rÑ   rÒ   r¥   r¦   r¢   r¤   rT   rs   rt   ru   Ú__classcell__©rÆ   ri   s   @@rZ   r>   r>   v   s–  ù‡ € ñð< €JàÐ/ØÐ 5ØÐ-ØÐ*ØÐ/ØÐ4ð€Mð €MØ€FØ"'Ðð
 	$Ð%<Ø#Ð%<Ø#Ð%<Ø#Ð%<Ø#Ð%:Ø+Ð-=Ø(¨)ØÐ 0ð	Ðñ -Ó.ÐÙ-Ó/ÐÙÓ!€JÙ!Ó#€LÙ!Ó#€LÙ"Ó$€MÙ#Ó%€NÙ%Ó'ÐÙ&Ó(ÐÙ'Ó)ÐÙ)Ó+ÐÙ*Ó,ÐÙ)Ó+ÐÙ(Ó*Ðà€KØ"ÐØ ÐØÐØ#)ÐØ€JØ€LØ!%ÐØÐØ ÐØ ÐØ!%€NØ.2ÐØ€LØ#€LØ+/€LØ €NØ04ÐØ'*ÐØ€HØ59€MØ<@ÐØ(,€OØ,0Ðõ_L÷I … r\   c                   ó^   a a€ ] tR tRt oRtR]R]/tRtRt	Rt
RtV 3R ltV3R	 ltR
tVtV ;t# )r?   i<  Ústep3p7rE   Útext_configNFiP c           
     óL  <€ V P                   f   \        4       V n         Me\        V P                   \        4      '       dF   \        R/ V P                   P	                  4        UUu/ uF  w  r#VR8w  g   K  W#bK  	  uppB V n         V P
                  f   \        4       V n        Me\        V P
                  \        4      '       dF   \        R/ V P
                  P	                  4        UUu/ uF  w  r#VR8w  g   K  W#bK  	  uppB V n        \        SV `   ! R/ VB  R # u uppi u uppi )Nrp   r§   )	rE   r=   r—   rg   rÀ   rí   r>   r¶   rT   )rX   rY   ÚkÚvrÆ   s   &,  €rZ   rT   ÚStep3p7Config.__post_init__G  sö   ø€ Ø×ÑÒ%Ü!4Ó!6ˆDÕÜ˜×*Ñ*¬D×1Ò1Ü!4ñ "Ø$(×$6Ñ$6×$<Ñ$<Ô$>ÔTÑ$>™D˜AÀ!À|ÑBS”4�1’4Ñ$>ÒTñ"ˆDÔð ×ÑÒ#Ü0Ó2ˆDÕÜ˜×(Ñ(¬$×/Ò/Ü0ÑtÀT×EUÑEU×E[ÑE[ÔE]Ô3sÑE]¹T¸QÐabÐfrÑar´D°A²DÑE]Ò3sÑtˆDÔä‰ÒÑ' Ô'ùó Uùó 4ts   Á$DÁ4DÃ'D Ã7D c                ó†   <€ V ^8„  d   Qh/ S[ S[,          R,          ;R&   S[ S[,          R,          ;R&   S[;R&   S[;R&   # )r^   NrE   rí   Úprojector_biasÚimage_token_id)rg   r   rÓ   rU   )rh   ri   s   "€rZ   rj   ÚStep3p7Config.__annotate__<  sO   ø‡ ‚ ñ Ñ*Õ*¨TÕ1Ñ8ñ ñ Ñ(Õ(¨4Õ/Ñ6ñ ñ Ñ ñ ñ Ñ ò r\   )rí   rE   )rl   rm   rn   ro   rp   r=   r>   Úsub_configsrE   rí   ró   rô   rT   rs   rt   ru   ré   rê   s   @@rZ   r?   r?   <  s<   ù‡ € ð €JØ"Ð$7¸ÐHYÐZ€Kà48€MØ26€KØ €NØ €Nõ(÷ … r\   c                   ó0   a € ] tR tRt o RtV 3R ltRtV tR# )ÚStep3p7ImageProcessorKwargsiW  a  
patch_size (`int`, *optional*, defaults to 504):
    Target size (height = width) for each local patch crop.
max_image_size (`int`, *optional*, defaults to 3024):
    Images larger than this (on their longest side) are scaled down uniformly before patch
    planning.
c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   # )r^   r`   Úmax_image_size©rU   )rh   ri   s   "€rZ   rj   Ú(Step3p7ImageProcessorKwargs.__annotate__W  s   ø‡ ‚ ñ �Oñ ñ Ñò r\   r§   N)rl   rm   rn   ro   rÕ   rs   rt   ru   rv   s   @rZ   rø   rø   W  s   ø‡ € ñ÷ ƒ r\   rø   F)Útotalc                   ó  a a€ ] tR tRt oRt]P                  tRRRR/tRt	Rt
Rt]t]tRt]t. ROtRt^t^t]V3R	 lR
 l4       tV3R lR ltRV3R lR lltV3R lR ltV3R lR lt]V3R lV 3R ll4       tV3R ltRt Vt!V ;t"# )r@   id  zà
Image processor for Step-3.7-Flash.

Each input image is split into a global down-scaled view plus zero or more
local patch crops via a sliding-window strategy, then every sub-image is
resized and normalised independently.
ÚheightrG   rK   iø  TiÐ  c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )r^   rK   rÿ   Úreturn)rU   rÓ   )rh   ri   s   "€rZ   rj   Ú"Step3p7ImageProcessor.__annotate__�  s'   ø€ ÷ Sñ S¡#ð S©sð S±tñ Sr\   c                ód   € \        W4      ^ 8  ;'       d    \        W,          W,          4      ^8„  # )zH`True` for near-degenerate images (min side < 32px, aspect ratio > 4:1).©ÚminÚmax)rK   rÿ   s   &&rZ   Ú_is_extreme_aspectÚ(Step3p7ImageProcessor._is_extreme_aspect€  s-   € ô �5Ó! BÑ&×RÐR¬3¨u­~¸v½~Ó+NÐQRÑ+RÐRr\   c                óŠ   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[S[S[ S[ 3,          S[S[ S[ 3,          S[ S[ S[ S[3,          /# )r^   rK   rÿ   r_   r`   r  )rU   ÚtuplerÓ   )rh   ri   s   "€rZ   rj   r  …  s^   ø€ ÷ >wñ >wÙð>wÙ"%ð>wÙ36ð>wÙDGð>wá	‰u‘S™#�X�¡¡c©3 h¥±±c¹3ÁÐDÕ	Eñ>wr\   c                ó*  a€ V P                  W4      pV'       d   \        W4      ;r\        W!4      V P                  8”  d>   V P                  \        W!4      ,          p\        W,          4      \        W&,          4      r!\	        W!4      \        W!4      r‡Wƒ8:  d   W‡,          R8”  d   TM^ oMW‡,          ^8”  d   \	        Wt4      oMVoS^ 8X  d   W3W3^ ^ ^ V3# V3R lW3 4       w  rš\        ^V	S,          4      p\        ^V
S,          4      pW3Wš3SW¼V3# )u%  Compute the sliding-window patch layout for one image.

Unlike models with a fixed tile size (Idefics3, LLaVA-NeXT), Step3p7
adapts the window size to the image's aspect ratio, so this cannot be
reduced to a simple ``ceil(h / tile) Ã— ceil(w / tile)`` formula.

Step 1 = normalise extreme inputs:
  - extreme-aspect images (min_side < 32, ratio > 4) are squared
  - images larger than ``max_image_size`` are scaled down uniformly

Step 2 â€” choose window size from the normalised aspect ratio:
  - fits in global view (long_side â‰¤ image_size): tile only if elongated
    (long_side / short_side > 1.5), using short_side as the window
  - very elongated (ratio > 4): ``min(short_side, patch_size)``
  - standard case: ``patch_size``

Step 3 â€” snap each dimension to the nearest window multiple
  (snap up when the remainder exceeds 20 % of the window size).

Returns:
    global_width_height: ``(width, height)`` to resize the global view to before squaring
    crop_width_height: ``(crop_width, crop_height)`` snapped dimensions for patch extraction
    window_size: tile side length (``0`` â†’ no local patches)
    num_patches_x: number of patches along the width
    num_patches_y: number of patches along the height
    needs_square_pad: whether the raw image must be zero-padded to a square before resizing
g      ø?c              3   ó†   <"  € T F6  pVS8¼  d)   SVS,          VS,          R S,          8„  ,           ,          MTx € K8  	  R# 5i)gš™™™™™É?Nr§   )r™   ÚdimÚwindow_sizes   & €rZ   rœ   Ú6Step3p7ImageProcessor._plan_patches.<locals>.<genexpr>¹  sL   øé € ð #
ñ '�ð ˜+Ô%ð ˜s kÕ1°S¸;Õ5FÈÈ{ÕIZÑ5ZÕ[Ö\àôó 'ùs   ƒ>A)r  r  rú   rU   r  )rX   rK   rÿ   r_   r`   Úneeds_square_padÚscaleÚ
short_sideÚ	long_sideÚ
crop_widthÚcrop_heightÚnum_patches_xÚnum_patches_yr  s   &&&&&        @rZ   Ú_plan_patchesÚ#Step3p7ImageProcessor._plan_patches…  s  ø€ ð>  ×2Ñ2°5ÓAÐßÜ  Ó/Ð/ˆEÜˆvÓ × 3Ñ 3Ô3Ø×'Ñ'¬#¨fÓ*<Õ<ˆEÜ ¥Ó.´°FµNÓ0C�6ä # FÓ 2´C¸Ó4F�Ið Ô"Ø(1Õ(>ÀÔ(D™*È!‰KØÕ# aÔ'Ü˜jÓ5‰Kà$ˆKà˜!ÔØ�? U O°Q¸¸1Ð>NÐNÐNô#
ð ‘ó#
Ñˆ
ô ˜A˜z¨[Õ8Ó9ˆÜ˜A˜{¨kÕ9Ó:ˆØˆ Ð 9¸;ÈÐfvÐvÐvr\   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[ /# )r^   rÿ   rK   r  rû   )rh   ri   s   "€rZ   rj   r  Å  s#   ø€ ÷ -ñ -±#ð -¹cð -ÑZ]ñ -r\   c                óâ   € T;'       g    / pVP                  RV P                  4      pVR,          pVP                  RV P                  4      pV P                  W!WV4      R,          w  rxWx,          # )zBReturn the number of local patches for an image of the given size.Úsizerÿ   r`   :é   é   N)r˜   r  r`   r  )	rX   rÿ   rK   Úimages_kwargsr  r_   r`   r  r  s	   &&&&     rZ   Úget_number_of_image_patchesÚ1Step3p7ImageProcessor.get_number_of_image_patchesÅ  sh   € à%×+Ð+¨ˆØ× Ñ  ¨¯©Ó3ˆØ˜(•^ˆ
Ø"×&Ñ& |°T·_±_ÓEˆ
Ø'+×'9Ñ'9¸%ÈÓ'`ÐadÕ'eÑ$ˆØÕ,Ð,r\   c                ó    <€ V ^8„  d   QhRS[ P                  RS[RS[RRRS[S[ P                  S[S[ P                  ,          S[S[3,          /# )r^   Úimgr_   r`   Úresampler   r  )ÚtorchÚTensorrU   r
  r©   )rh   ri   s   "€rZ   rj   r  Î  sc   ø€ ÷ +Añ +Aá�\‰\ð+Añ ð+Añ ð	+Að
 'ð+Añ 
‰u�|‰|™T¡%§,¡,Õ/±±cÐ9Õ	:ñ+Ar\   c                ó  € VP                   w  rVpV P                  WvW#4      w  w  r‰w  r«ppppV'       d2   \        Wv4      pV P                  V.\	        VVR7      R7      ^ ,          pVP                  ^ 4      pV P                  V\	        W˜R7      VR7      pV P                  V\	        W"R7      VR7      P                  ^ 4      pV^ 8X  d   V. WÞ3# V P                  V\	        WºR7      VR7      P                  ^ 4      p\        VVR7      pVVWÞ3# )aJ  Step3p7-specific cropping: square-pad extreme aspect ratios, resize the global view,
and slice out raw (pre-final-resize) local-patch tiles per `_plan_patches`'s layout.

Returns the resized global view, the list of raw local-patch tensors (still at
`window_size`, not yet resized to `patch_size`), and the patch grid dimensions.
©rÿ   rK   )Úpad_size©r$  )r`   )	Úshaper  r  Úpadr   Ú	unsqueezeÚresizeÚsqueezer
   )rX   r#  r_   r`   r$  Ú_rÿ   rK   Úglobal_widthÚglobal_heightr  r  r  r  r  r  ÚsideÚ	img_batchÚ
global_imgÚimg_for_cropÚpatchess   &&&&&                rZ   Ú_get_image_patchesÚ(Step3p7ImageProcessor._get_image_patchesÎ  s  € ð Ÿ9™9Ñˆ�5ð ×Ñ˜u¨jÓEñ	
Ù)ˆ\Ù%ˆZØØØØ÷ Ü�uÓ%ˆDØ—(‘(˜C˜5¬8¸4ÀtÔ+L�(ÓMÈaÕPˆCà—M‘M !Ó$ˆ	ð —[‘[ ¬H¸MÔ,^Ðiq�[Órˆ
Ø—[‘[ ¬X¸ZÔ-ZÐem�[Ón×vÑvØó
ˆ
ð ˜!ÔØ˜r =Ð?Ð?à—{‘{Ø”x {ÔEÐPXð #ó 
ç
‰'�!‹*ð 	ô $ L¸[ÔIˆØ˜7 MÐ@Ð@r\   c                óÖ   <€ V ^8„  d   QhRS[ R,          RS[RS[RS[RS[S[ S[,          ,          R,          RS[S[ S[,          ,          R,          R	R
RS[RS[RS[R,          RRRS[/# )r^   Úimagesztorch.TensorÚ
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanNÚ	image_stdr$  r   r  r`   Údisable_groupingÚreturn_tensorszstr | TensorType | Noner  )r©   rÓ   rf   r   rU   r	   )rh   ri   s   "€rZ   rj   r  û  s¶   ø€ ÷ Iñ Iá�^Õ$ðIñ ðIñ ð	Iñ
 ðIñ ™D¡�KÕ'¨$Õ.ðIñ ™4¡�;Õ&¨Õ-ðIð 'ðIñ ðIñ ðIñ  �+ðIð 2ðIñ 
ñIr\   c                ó  € VP                   p. . . . 3w  rïppV F³  pV P                  VWÙV4      w  ppppVP                  V4       VP                  \        V4      4       VP                  V4       TP                  \	        V4       UUu. uF5  p\	        V4       F#  pVV^,
          8H  ;'       d    VV^,
          8  NK%  	  K7  	  upp4       Kµ  	  V P                  \        P                  ! V4      W#WEV4      pRVRV/p\        VVR7      p\        V^ R7      pV'       d×   \        VRV
R7      w  ppVP                  4        F;  w  pp V P                  V \        W™R7      VR7      p!V P                  V!W#WEV4      VV&   K=  	  \        VVRR	7      p"\        P                  ! V" U#U$u. uF  p#V# F  p$V$NK  	  K  	  up$p#4      VR
&   V U%u. uF$  p%V%R.V\        V%4      ,
          ,          ,           NK&  	  up%VR&   V# u uppi u up$p#i u up%i )é   Úpixel_valuesÚnum_local_patches)ÚdataÚtensor_type)rŸ   T)Ú	is_nestedrA  r(  r*  )rI  Úpixel_values_localFÚpatch_newline_masks)rÿ   r8  Úappendrª   r¯   Úrescale_and_normalizer%  Ústackr	   r  r   rÀ   r.  r   r   )&rX   r;  r<  r=  r>  r?  r@  r$  r  r`   rA  rB  rY   r_   Úglobal_imagesÚnested_patchesrF  rK  r#  r5  r7  r  r  ÚrowÚcolÚglobal_stackrG  ÚresultÚmax_patchesÚgrouped_patchesÚgrouped_indexr+  Ústacked_patchesÚresizedÚnested_pixel_values_localÚper_image_patchesÚpatchÚmasks&   &&&&&&&&&&&&,                         rZ   Ú_preprocessÚ!Step3p7ImageProcessor._preprocessû  sM  € ð —[‘[ˆ
ØPRÐTVÐXZÐ\^ÐP^ÑMˆÐ'8Ð:MãˆCØ@D×@WÑ@WØ�Z¨XóAÑ=ˆJ˜ °ð × Ñ  Ô,Ø×$Ñ$¤S¨£\Ô2Ø×!Ñ! 'Ô*à×&Ñ&ô  % ]Ô3ôá3˜Ü$ ]Ö3˜ð ˜=¨1Õ,Ñ,×HÐH°°}ÀqÕ7HÑ1HÒHá3ñ IÙ3òöñ ð" ×1Ñ1Ü�KŠK˜Ó&¨
ÀLÐ^gó
ˆð
 ˜LØÐ!2ð
ˆô  4°^ÔDˆäÐ+°QÔ7ˆßô .CØ¨$ÐAQô.Ñ*ˆO˜]ð +:×*?Ñ*?Ö*AÑ&��ØŸ+™+Ø#¤X°ZÔ%RÐ]eð &ó �ð *.×)CÑ)CØ˜Z¸ÐS\ó*� Ó&ñ	 +Bô )7°ÈÐaeÔ(fÐ%ô ,1¯;ª;Ù0IÔiÑ0IÐ,ÓWhÈe“ÑWh‘Ñ0IÒió,ˆFÐ'Ñ(ñ
 H[ó-ÙGZ¸t�˜�w +´°D³	Õ"9Õ:×:Ð:ÑGZñ-ˆFÐ(Ñ)ð ˆùó]ùóP jùò-s   Â	%G8Â/G8Æ#G>
Ç*Hc                ó<   <€ V ^8„  d   QhRS[ RS[S[,          RS[/# )r^   r;  rY   r  )r   r   rø   r	   )rh   ri   s   "€rZ   rj   r  G  s)   ø€ ÷ 4ñ 4¡ð 4±vÑ>YÕ7Zð 4Ñ_kñ 4r\   c                ó&   <€ \         SV `  ! V3/ VB # r–   )r¶   Ú
preprocess)rX   r;  rY   rÆ   s   &&,€rZ   rb  Ú Step3p7ImageProcessor.preprocessF  s   ø€ ä‰wÒ! &Ñ3¨FÑ3Ð3r\   c                ó‚   <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[,          ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r^   r`   r?  r@  rú   Úvision_patch_sizeÚdownsampler_stride)rU   r©   rf   )rh   ri   s   "€rZ   rj   r  d  s[   ø‡ ‚ ñ Ññ ñ ‘U•Ñ.ñ ñ  ‘E�{Ñ,ñ! ñ* Ññ+ ñ2 Ññ3 ñ4 Ñò5 r\   r§   )rE  rJ  rF  r–   )#rl   rm   rn   ro   rÕ   r   ÚBILINEARr$  r  r`   r<  r>  r   r?  r   r@  Údo_convert_rgbrø   Úvalid_kwargsÚmodel_input_namesrú   re  rf  Ústaticmethodr  r  r   r8  r^  r   rb  rs   rt   ru   ré   rê   s   @@rZ   r@   r@   d  sÇ   ù‡ € ñð "×*Ñ*€HØ�c˜7 CÐ(€DØ€JØ€JØ€LØ.€JØ,€IØ€NØ.€LÚSÐà€Nð  ÐØÐà÷Só ðS÷>wð >w÷@-ò -÷+Að +A÷ZIð IðV ÷4ò 4ó ð4÷G … r\   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚStep3p7VisionRotaryEmbeddingiN  c                óV   € VP                  ^4      p\        P                  ! W"3RR7      # )zM
Recompose the frequencies into the final spatial layout used per each grid.
©r  éÿÿÿÿ)Úflattenr%  Úcat)rX   ÚfreqÚfreq_hws   && rZ   Úrecomposition_frequenciesÚ6Step3p7VisionRotaryEmbedding.recomposition_frequenciesO  s%   € ð —,‘,˜q“/ˆÜ�yŠy˜'Ð+°Ô4Ð4r\   r§   N)rl   rm   rn   ro   ru  rt   ru   rv   s   @rZ   rm  rm  N  s   ø‡ € ÷5ð 5r\   rm  c                   ó   € ] tR tRtRtR# )ÚStep3p7VisionMLPiW  r§   N©rl   rm   rn   ro   rt   r§   r\   rZ   rx  rx  W  ó   † Ûr\   rx  c                   ó   € ] tR tRtRtR# )ÚStep3p7VisionAttentioni[  r§   Nry  r§   r\   rZ   r|  r|  [  rz  r\   r|  c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚStep3p7VisionEncoderLayeri_  c                ó    <€ V ^8„  d   QhRS[ /# ©r^   Úconfig©r=   )rh   ri   s   "€rZ   rj   Ú&Step3p7VisionEncoderLayer.__annotate__`  s   ø€ ÷ eñ eÑ2ñ er\   c                ó\  <€ \         SV `  4        Wn        \        V4      V n        \        V4      V n        \        P                  ! VP                  VP                  R 7      V n        \        P                  ! VP                  VP                  R 7      V n        \        P                  ! VP                  \        P                   ! VP                  4      ,          4      V n        \        P                  ! VP                  \        P                   ! VP                  4      ,          4      V n        R# )©ÚepsN)r¶   Ú__init__r�  r|  Ú	self_attnrx  ÚmlpÚnnÚ	LayerNormrP   rb   Úlayernorm_beforeÚlayernorm_afterÚ	ParameterrS   r%  ÚonesÚlambda_1Úlambda_2©rX   r�  rÆ   s   &&€rZ   r‡  Ú"Step3p7VisionEncoderLayer.__init__`  s¿   ø€ Ü‰ÑÔØŒÜ/°Ó7ˆŒÜ# FÓ+ˆŒÜ "§¢¨V×-?Ñ-?ÀV×EZÑEZÔ [ˆÔÜ!Ÿ|š|¨F×,>Ñ,>ÀF×DYÑDYÔZˆÔÜŸš V×%BÑ%BÄUÇZÂZÐPV×PbÑPbÓEcÕ%cÓdˆŒÜŸš V×%BÑ%BÄUÇZÂZÐPV×PbÑPbÓEcÕ%cÓdˆŽr\   c                óÈ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[ P                  S[ P                  3,          R,          RS[ P                  /# )r^   Úhidden_statesÚattention_maskNÚposition_embeddingsr  )r%  r&  r
  )rh   ri   s   "€rZ   rj   rƒ  j  s[   ø€ ÷ ñ á—|‘|ðñ Ÿ™ tÕ+ðñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð	ñ 
�‰ñr\   c                ó  € TpV P                  V4      pV P                  ! V3R VRV/VB w  rV P                  V,          pW,           pTpV P                  V4      pV P	                  V4      pV P
                  V,          pW,           pV# )r–  r—  )rŒ  rˆ  r�  r�  r‰  r‘  )rX   r•  r–  r—  rY   Úresidualr0  s   &&&&,  rZ   ÚforwardÚ!Step3p7VisionEncoderLayer.forwardj  s    € ð !ˆØ×-Ñ-¨mÓ<ˆØŸ>š>Øñ
à)ð
ð !4ð
ð ñ	
Ñˆð Ÿ™¨Õ5ˆØ%Õ0ˆà ˆØ×,Ñ,¨]Ó;ˆØŸ™ Ó/ˆØŸ™¨Õ5ˆØ%Õ0ˆØÐr\   )r�  r�  r‘  r�  rŒ  r‰  rˆ  ©NN©	rl   rm   rn   ro   r‡  rš  rt   ru   ré   rê   s   @@rZ   r~  r~  _  s    ù‡ € ÷eó e÷÷ ò r\   r~  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚStep3p7VisionEmbeddingsi„  c                ó    <€ V ^8„  d   QhRS[ /# r€  r‚  )rh   ri   s   "€rZ   rj   Ú$Step3p7VisionEmbeddings.__annotate__…  s   ø€ ÷ 
ñ 
Ñ2ñ 
r\   c                ó¶   <€ \         SV `  V4       \        P                  ! VP                  VP
                  VP                  VP                  R R7      V n        R# )F)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚbiasN)r¶   r‡  rŠ  ÚConv2dÚnum_channelsrP   r`   Úpatch_embeddingr’  s   &&€rZ   r‡  Ú Step3p7VisionEmbeddings.__init__…  sH   ø€ Ü‰Ñ˜Ô Ü!ŸyšyØ×+Ñ+Ø×+Ñ+Ø×)Ñ)Ø×$Ñ$Øô 
ˆÖr\   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r^   Ú
embeddingsrÿ   rK   r  )r%  r&  rU   )rh   ri   s   "€rZ   rj   r¡  �  s5   ø€ ÷ ñ ±5·<±<ð Éð ÑUXð Ñ]b×]iÑ]iñ r\   c                óº  € V P                   P                  P                  ^ ,          pW P                  ,          pW0P                  ,          p\	        VR,          4      p\
        P                  P                  4       '       g2   WW8X  d,   Wg8X  d&   V P                   P                  P                  ^ 4      # V P                   P                  P                  ^ 4      pVP                  R,          p	VP                  ^WwV	4      pVP                  ^ ^^^4      p\        P                  P                  VWV3RRR7      pVP                  ^ ^^^4      P                  ^RV	4      pV# )r   ç      à?ÚbilinearF)r  ÚmodeÚalign_cornersrp  )Úposition_embeddingÚweightr+  r`   r!   r%  ÚjitÚ
is_tracingr-  ÚreshapeÚpermuterŠ  Ú
functionalÚinterpolateÚview)
rX   r­  rÿ   rK   Únum_positionsÚ
new_heightÚ	new_widthÚsqrt_num_positionsÚpatch_pos_embedr  s
   &&&&      rZ   Úinterpolate_pos_encodingÚ0Step3p7VisionEmbeddings.interpolate_pos_encoding�  s-  € Ø×/Ñ/×6Ñ6×<Ñ<¸QÕ?ˆØŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	Ü& }°cÕ'9Ó:ÐÜ�y‰y×#Ñ#×%Ò%¨*Ô*JÈyÔOnØ×*Ñ*×1Ñ1×;Ñ;¸AÓ>Ð>Ø×1Ñ1×8Ñ8×BÑBÀ1ÓEˆØ×Ñ˜rÕ"ˆØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆÜŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆØÐr\   )rª  )	rl   rm   rn   ro   r‡  rÁ  rt   ru   ré   rê   s   @@rZ   rŸ  rŸ  „  s   ù‡ € ÷
ó 
÷÷ ð r\   rŸ  c                   ó�   a a€ ] tR tRt oRtRtRR.tR.tRtRt	Rt
RtRt]P                  ! 4       V 3R l4       tV3R	 ltR
tVtV ;t# )r:   i¤  ÚmodelTr~  ÚStep3p7DecoderLayerÚpast_key_valuesFc                óê  <€ \         SV `  V4       \        V\        4      '       dQ   \        P
                  ! VP                  \        P                  ! VP                  4      P                  R
4      4       R	# \        V\        4      '       d   \        P                  P                  VP                  VP                  P                   4       \        P                  P                  VP"                  VP                  P                   4       R	# \        V\$        4      '       d´   VP&                   F¡  pVP(                  pVP*                  V,          R8w  d   \,        VP*                  V,          ,          pV! VP                  VR7      w  rE\        P
                  ! \/        W R24      V4       \        P
                  ! \/        W R24      V4       K£  	  R	# \        V\0        4      '       d`   \/        V P                  RR4      p\        P2                  ! VP4                  RVR7       \        P2                  ! VP6                  RVR7       R	# \        V\8        4      '       d]   \/        V P                  RR4      p\        P2                  ! VP:                  RVR7       \        P<                  ! VP>                  4       R	# \        V\@        4      '       d#   \        P<                  ! VP:                  4       R	# R	# )rD  rŸ   )rš   Ú	_inv_freqÚ_original_inv_freqÚinitializer_rangeg{®Gáz”?ç        )ÚmeanÚstdN)rD  rp  )!r¶   Ú_init_weightsr—   rŸ  ÚinitÚcopy_Úposition_idsr%  Úaranger¼  Úexpandr~  rŠ  Ú	constant_r�  r�  rS   r‘  ÚStep3p7RotaryEmbeddingr¡   Úcompute_default_rope_parametersrž   r   r¨   ÚStep3p7ExpertsÚnormal_Úgate_up_projÚ	down_projÚStep3p7TopKRouterr´  Úzeros_Úe_score_correction_biasÚStep3p7RMSNorm)rX   Úmodulerš   Úrope_init_fnÚcurr_inv_freqr0  rÍ  rÆ   s   &&     €rZ   rÎ  Ú$Step3p7PreTrainedModel._init_weights±  sñ  ø€ ä‰Ñ˜fÔ%Ü�fÔ5×6Ò6Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9MÑ9MÓ,N×,UÑ,UÐV]Ó,^Ö_Ü˜Ô 9×:Ò:Ü�G‰G×Ñ˜fŸo™o¨v¯}©}×/SÑ/SÔTÜ�G‰G×Ñ˜fŸo™o¨v¯}©}×/SÑ/SÖTÜ˜Ô 6×7Ò7Ø$×0Ô0�
Ø%×EÑE�Ø×#Ñ# JÕ/°9Ô<Ü#6°v×7GÑ7GÈ
Õ7SÕ#T�LÙ#/°·±È*Ô#UÑ �Ü—
’
œ7 6¨\¸Ð+CÓDÀmÔTÜ—
’
œ7 6¨\Ð9KÐ+LÓMÈ}Ö]ó 1ô ˜¤×/Ò/ô ˜$Ÿ+™+Ð':¸DÓAˆCÜ�LŠL˜×,Ñ,°3¸CÕ@Ü�LŠL˜×)Ñ)°¸×=Ü˜Ô 1×2Ò2Ü˜$Ÿ+™+Ð':¸DÓAˆCÜ�LŠL˜Ÿ™¨S°cÕ:Ü�KŠK˜×6Ñ6Ö7Ü˜¤×/Ò/Ü�KŠK˜Ÿ™Ö&ñ 0r\   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€  ©r?   )rh   ri   s   "€rZ   rj   Ú#Step3p7PreTrainedModel.__annotate__¤  s   ø‡ ‚ áÑò r\   r§   )rl   rm   rn   ro   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_static_cacheÚ_supports_attention_backendr%  Úno_gradrÎ  rs   rt   ru   ré   rê   s   @@rZ   r:   r:   ¤  sd   ù‡ € ð  ÐØ&*Ð#Ø4Ð6KÐLÐØ#4Ð"5ÐØ ÐØ€NØÐØ!ÐØ"&Ðà
‡]‚]ƒ_ô'ó ð'÷ … r\   c                   óŽ   a a€ ] tR tRt oRtR]R]/tV3R lV 3R llt]	! RR7      ]
V3R	 lR
 l4       4       tV3R ltRtVtV ;t# )r<   iÐ  u!  Vision encoder: patch embeddings â†’ 2-D RoPE transformer layers â†’ conv downsampler.

The rotary embedding (``self.rotary_emb``) and layer stack (``self.layers``) are
held directly on this module, following the Gemma4 convention of not wrapping
them in a separate ``Encoder`` submodule.
r•  Ú
attentionsc                ó    <€ V ^8„  d   QhRS[ /# r€  r‚  )rh   ri   s   "€rZ   rj   ÚStep3p7VisionModel.__annotate__ß  s   ø€ ÷ 
ñ 
Ñ2ñ 
r\   c                óz  <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  VP                  R 7      V n        \        V4      V n
        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        \        P                   ! VP                  VP                  ^,          ^^^R7      V n        \        P                   ! VP                  ^,          VP                  ^,          ^^^R7      V n        V P'                  4        R# u upi )r…  )r¥  r¦  ÚpaddingN)r¶   r‡  rŸ  r­  rŠ  r‹  rP   rb   Úpre_layernormrm  Ú
rotary_embÚ
ModuleListr¯   rQ   r~  rL   r¨  Údownsampler1Údownsampler2Ú	post_init)rX   r�  r0  rÆ   s   && €rZ   r‡  ÚStep3p7VisionModel.__init__ß  sî   ø€ Ü‰Ñ˜Ô Ü1°&Ó9ˆŒÜŸ\š\¨&×*<Ñ*<À&×BWÑBWÔXˆÔÜ6°vÓ>ˆŒÜ—m’mÔPUÐV\×VnÑVnÔPoÓ$pÑPoÈ1Ô%>¸vÖ%FÑPoÑ$pÓqˆŒÜŸIšI f×&8Ñ&8¸&×:LÑ:LÈqÕ:PÐ^_ÐhiÐstÔuˆÔÜŸIšIØ×Ñ Õ" F×$6Ñ$6¸Õ$:ÈÐRSÐ]^ô
ˆÔð 	�‰Öùò %qs   Â	D8F)Útie_last_hidden_statesc                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# )r^   rE  rY   r  )r%  r&  r   r   r   )rh   ri   s   "€rZ   rj   ró  í  s2   ø€ ÷ [ñ [¡E§L¡Lð [¹FÑCUÕ<Vð [Ñ[jñ [r\   c                ó¢  € VP                   w  r4rVWPP                  P                  ,          pW`P                  P                  ,          pV P                  VR R7      p	V P                  V	4      p	\        P
                  ! ^Wx..V	P                  R7      p
\        V
^R7      pV P                  W›4      pV P                   F  pV! V	3RV/VB p	K  	  V	P                   R,          pV	P                  ^ ^^4      P                  W>Wx4      p	V P                  V	4      p	V P                  V	4      p	\        V	P                  ^4      P                  ^ ^^4      R7      # )T)rÁ  )Údevice)Úspatial_merge_sizer—  )Úlast_hidden_staterp  )r+  r­  r`   rö  r%  Útensorr   r#   r÷  rL   r¸  r»  rù  rú  r   rq  )rX   rE  rY   Ú
batch_sizer0  rÿ   rK   Úgrid_hÚgrid_wÚhidden_stateÚgrid_thwrÑ  r—  ÚlayerÚchannelss   &&,            rZ   rš  ÚStep3p7VisionModel.forwardë  s5  € ð (4×'9Ñ'9Ñ$ˆ
�vØŸ?™?×5Ñ5Õ5ˆØŸ/™/×4Ñ4Õ4ˆØ—‘ |Èd�ÓSˆØ×)Ñ)¨,Ó7ˆô —<’< ! VÐ!4Ð 5¸l×>QÑ>QÔRˆÜ.¨xÈAÔNˆØ"Ÿo™o¨lÓIÐØ—[”[ˆEÙ  ÑaÐCVÐaÐZ`ÑaŠLñ !ð  ×%Ñ% bÕ)ˆØ#×+Ñ+¨A¨q°!Ó4×9Ñ9¸*ÐPVÓ_ˆØ×(Ñ(¨Ó6ˆØ×(Ñ(¨Ó6ˆÜ°×1EÑ1EÀaÓ1H×1PÑ1PÐQRÐTUÐWXÓ1YÔZÐZr\   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€  r‚  )rh   ri   s   "€rZ   rj   ró  Ð  s   ø‡ ‚ ñ  Ñò r\   )rù  rú  r­  rL   rö  r÷  )rl   rm   rn   ro   rÕ   r~  r|  Ú_can_record_outputsr‡  r"   r   rš  rs   rt   ru   ré   rê   s   @@rZ   r<   r<   Ð  sT   ù‡ € ñð 	Ð2ØÐ,ðÐ÷

ó 
ñ ¨EÔ2Ø÷[ó ó 3ð[÷; … r\   c                   ó   € ] tR tRtRtR# )rÕ  i  r§   Nry  r§   r\   rZ   rÕ  rÕ    s   † ó 	r\   rÕ  c                   ó   € ] tR tRtRtR# )rÞ  i	  r§   Nry  r§   r\   rZ   rÞ  rÞ  	  rz  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# )Ú
Step3p7MLPi  c                óî   <€ \         SV `  V4       V'       d   VP                  MVP                  V n        VP                  '       d   VP                  V,          M^ ;'       g    \        R4      V n        R# )r   ÚinfN)r¶   r‡  r�   rW   r¦   rf   Úlimit)rX   r�  rÃ   Úis_shared_expertrÆ   s   &&&&€rZ   r‡  ÚStep3p7MLP.__init__  s\   ø€ Ü‰Ñ˜Ô ß<L ×!8Ò!8ÐRX×RjÑRjˆÔð AG×@[×@[Ð@[�f×1Ñ1°)Ö<Ðab×sÐsÔglÐmrÓgsˆŽ
r\   c                ó  € V P                  V P                  V4      4      P                  V P                  R 7      pV P	                  V4      P                  V P                  ) V P                  R7      pV P                  W#,          4      # )©r  r  )Úact_fnÚ	gate_projÚclampr  Úup_projrÚ  )rX   ÚxÚgateÚups   &&  rZ   rš  ÚStep3p7MLP.forward  sc   € Ø�{‰{˜4Ÿ>™>¨!Ó,Ó-×3Ñ3¸¿
¹
Ð3ÓCˆØ�\‰\˜!‹_×"Ñ"¨¯
©
 {¸¿
¹
Ð"ÓCˆØ�~‰~˜d�iÓ(Ð(r\   )rW   r  )Fr�  rê   s   @@rZ   r  r    s   ù‡ € ÷t÷)ò )r\   r  c                   óL   a a€ ] tR tRt oRtRV 3R lltV3R lR ltRtVtV ;t	# )r×  i  Tc                ó‚   <€ \         SV `  V4       VP                  V n        Vf   \	        R4      V n        R # TV n        R # )Nr  )r¶   r‡  rË   Úintermediate_dimrf   r  )rX   r�  rß   rÆ   s   &&&€rZ   r‡  ÚStep3p7Experts.__init__  s4   ø€ Ü‰Ñ˜Ô Ø &× <Ñ <ˆÔØ%1Ò%9”U˜5“\ˆŽ
¸|ˆŽ
r\   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r^   Úgate_upr  )r%  r&  )rh   ri   s   "€rZ   rj   ÚStep3p7Experts.__annotate__$  s#   ø€ ÷ ñ ¡5§<¡<ð ±E·L±Lñ r\   c                óâ   € VP                  ^RR7      w  r#V P                  V4      P                  V P                  R7      pVP                  V P                  ) V P                  R7      pW#,          # )r^   ro  r  r  rp  )Úchunkr  r  r  )rX   r&  r  r  s   &&  rZ   Ú_apply_gateÚStep3p7Experts._apply_gate$  sZ   € Ø—=‘= ¨�=Ó+‰ˆØ�{‰{˜4Ó ×&Ñ&¨4¯:©:Ð&Ó6ˆØ�X‰X˜4Ÿ:™:˜+¨4¯:©:ˆXÓ6ˆØ�yÐr\   )r#  r  r–   )
rl   rm   rn   ro   Ú#_fp8_experts_clamp_after_activationr‡  r*  rt   ru   ré   rê   s   @@rZ   r×  r×    s    ù‡ € à*.Ð'÷L÷
÷ ð r\   r×  c                   ó   € ] tR tRtRtR# )rÛ  i+  r§   Nry  r§   r\   rZ   rÛ  rÛ  +  rz  r\   rÛ  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚStep3p7SparseMoeBlocki/  c                ó.  € \         P                  P                  V 4       VP                  '       d   VP                  V,          ;'       g    R MR p\	        V4      V n        \        WR7      V n        \        WRR7      V n	        VP                  V n        R # )N)rß   T)r  )rŠ  ÚModuler‡  r¥   rÛ  r  r×  Úexpertsr  Úshared_expertsrÑ   ræ   )rX   r�  rÃ   rß   s   &&& rZ   r‡  ÚStep3p7SparseMoeBlock.__init__0  st   € Ü
�	‰	×Ñ˜4Ô ð EK×DX×DXÐDX˜×,Ñ,¨YÕ7×?Ð?¸4øÐ^bˆÜ% fÓ-ˆŒ	Ü% fÔHˆŒÜ(¨ÈTÔRˆÔØ%+×%EÑ%EˆÖ"r\   )r2  r  ræ   r3  N©rl   rm   rn   ro   r‡  rt   ru   rv   s   @rZ   r/  r/  /  s   ø‡ € ÷Fð Fr\   r/  c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚStep3p7Attentioni;  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r^   r�  rÃ   )r>   rU   )rh   ri   s   "€rZ   rj   ÚStep3p7Attention.__annotate__<  s   ø€ ÷ :ñ :Ñ0ð :¹Sñ :r\   c                óp   <€ VP                   p\        SV `	  WV4       VP                  R,          V n        R# )r¯  Ng      à¿)rR   r¶   r‡  r³   Úscaling)rX   r�  rÃ   Ú	num_headsrÆ   s   &&& €rZ   r‡  ÚStep3p7Attention.__init__<  s/   ø€ Ø×.Ñ.ˆ	Ü‰Ñ˜¨IÔ6Ø×3Ñ3°TÕ9ˆŽr\   c                ó  <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# )r^   r•  r—  r–  NrÆ  rY   r  )r%  r&  r
  r   r   r   )rh   ri   s   "€rZ   rj   r9  A  s‡   ø€ ÷ *)ñ *)á—|‘|ð*)ñ #¡5§<¡<±·±Ð#=Õ>ð*)ñ Ÿ™ tÕ+ð	*)ñ
  �ð*)ñ Ñ+Õ,ð*)ñ 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ*)r\   c           	     óL  € VP                   R R p. VORNV P                  N5pV P                  V P                  V4      P	                  V4      4      P                  ^^4      pV P                  V P                  V4      P	                  V4      4      P                  ^^4      p	V P                  V4      P	                  V4      P                  ^^4      p
V P                  V4      pVw  rÍ\        W‰WÍ4      w  r‰Ve   VP                  WšV P                  4      w  rš\        P                  ! V P                  P                   \"        4      pT! V VV	V
V3RV P$                  '       g   RMV P&                  RV P(                  RV P*                  /VB w  ppVP,                  ! . VORN5!  pVP                   pVP                  ! . VR R OV P.                  NV P                  N5!  pWûP1                  R4      P3                  4       ,          pVP                  ! V!  pV P5                  V4      pVV3# )NÚdropoutrË  r;  rÌ   rp  )r+  r´   Úq_normÚq_projr»  Ú	transposeÚk_normÚk_projÚv_projÚg_projr-   r¹   rÃ   r   Úget_interfacer�  Ú_attn_implementationr.   ÚtrainingÚattention_dropoutr;  rÌ   r·  r<  r-  ÚsigmoidÚo_proj)rX   r•  r—  r–  rÆ  rY   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚgate_statesÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightsÚoutput_shapes   &&&&&,            rZ   rš  ÚStep3p7Attention.forwardA  s  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ 4§;¡;¨}Ó#=×#BÑ#BÀ<Ó#PÓQ×[Ñ[Ð\]Ð_`ÓaˆØ—[‘[ §¡¨]Ó!;×!@Ñ!@ÀÓ!NÓO×YÑYÐZ[Ð]^Ó_ˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆà—k‘k -Ó0ˆØ&‰ˆÜ#7¸ÐRUÓ#[Ñ ˆàÒ&Ø'6×'=Ñ'=¸jÐX\×XfÑXfÓ'gÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ
%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð
%
ð —L‘Lð
%
ð  ×.Ñ.ð
%
ð ñ
%
Ñ!ˆ�\ð "×)Ò)Ð;¨;Ð;¸Ó;ˆØ"×(Ñ(ˆØ!×&Ò&ÐY¨°S°bÐ(9ÐY¸4¿>¹>ÐYÈ4Ï=É=ÓYˆØ!×$9Ñ$9¸"Ó$=×$EÑ$EÓ$GÕGˆØ!×&Ò&¨Ñ5ˆØ—k‘k +Ó.ˆØ˜LÐ(Ð(r\   )r;  r–   r�  rê   s   @@rZ   r7  r7  ;  s   ù‡ € ÷:ó :÷
*)÷ *)ò *)r\   r7  c                   ó&   a € ] tR tRt o R tRtV tR# )rÅ  in  c                óö  € \         P                  P                  V 4       VP                  V n        VP                  V,          p\        W24      V n        WP                  n        VP                  V,          V n	        VP                  V,          R 8X  d   \        M\        pV! W4      V n        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        R# )r�   r…  N)rŠ  r1  r‡  rP   r’   r7  rˆ  r�  r¡   Úattention_typer£   r/  r  r‰  rÞ  rÊ   Úinput_layernormÚpost_attention_layernorm)rX   r�  rÃ   Úlayer_configÚ	mlp_classs   &&&  rZ   r‡  ÚStep3p7DecoderLayer.__init__o  s½   € Ü
�	‰	×Ñ˜4Ô Ø!×-Ñ-ˆÔð ×.Ñ.¨yÕ9ˆÜ)¨,ÓBˆŒØ &�‰ÔØ$×0Ñ0°Õ;ˆÔð .4×-CÑ-CÀIÕ-NÐRZÔ-ZÕ)Ô`jˆ	Ù˜VÓ/ˆŒä-¨f×.@Ñ.@Àf×FYÑFYÔZˆÔÜ(6°v×7IÑ7IÈv×ObÑObÔ(cˆÖ%r\   )r]  rP   r^  r‰  r_  rˆ  Nr5  rv   s   @rZ   rÅ  rÅ  n  s   ø‡ € ÷dð dr\   rÅ  c                   óV   a a€ ] tR tRt oR]R]/tV3R lV 3R lltV3R ltRt	Vt
V ;t# )r;   iƒ  r•  rñ  c                ó    <€ V ^8„  d   QhRS[ /# r€  ©r>   )rh   ri   s   "€rZ   rj   ÚStep3p7TextModel.__annotate__Š  s   ø€ ÷ ñ Ñ0ñ r\   c           	     óÒ  <€ \         SV `  V4       \        P                  ! VP                  VP
                  V P                  4      V n        \        P                  ! \        VP                  4       Uu. uF  p\        W4      NK  	  up4      V n        \        VP
                  VP                  R 7      V n        \!        VR7      V n        VP$                  '       dr   \        VP                  VP                  VP$                  ,           4      pV Uu0 uF	  pRV R2kK  	  pp\'        V P(                  ;'       g    . 4      V,          V n        V P+                  4        R# u upi u upi )r…  )r�  z(^|\.)layers\.z\.N)r¶   r‡  rŠ  Ú	EmbeddingrÉ   rP   Úpadding_idxÚembed_tokensrø  r¯   rQ   rÅ  rL   rÞ  rÊ   ÚnormrÕ  r÷  rƒ   r®   Ú"_keys_to_ignore_on_load_unexpectedrû  )rX   r�  rÁ   Ú
mtp_layersÚpatternsrÆ   s   &&   €rZ   r‡  ÚStep3p7TextModel.__init__Š  s  ø€ Ü‰Ñ˜Ô ÜŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔÜ—m’mÌUÐSY×SkÑSkÔMlÓ$mÑMlÈÔ%8¸Ö%CÑMlÑ$mÓnˆŒÜ" 6×#5Ñ#5¸6×;NÑ;NÔOˆŒ	Ü0¸Ô?ˆŒð ×*×*Ð*ô ˜v×7Ñ7¸×9QÑ9QÐTZ×TsÑTsÕ9sÓtˆJÙ9CÓD¹°A˜>¨!¨¨BÓ/¹ˆHÐDÜ69¸$×:aÑ:a×:gÐ:gÐegÓ6hÐksÕ6sˆDÔ3Ø�‰Öùò %nùò Es   Á3EÄE$c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€  re  )rh   ri   s   "€rZ   rj   rf  ƒ  s   ø‡ ‚ ÙÑò r\   )rl  rj  rL   rk  r÷  )rl   rm   rn   ro   rÅ  r7  r  r‡  rs   rt   ru   ré   rê   s   @@rZ   r;   r;   ƒ  s,   ù‡ € ð 	Ð,ØÐ&ðÐ÷
ó ÷ … r\   c                   óh   a € ] tR tRt o V 3R lR lt]]R	V 3R lR ll4       4       tV 3R ltRt	V t
R# )
r9   i�  c                ó    <€ V ^8„  d   QhRS[ /# r€  rä  )rh   ri   s   "€rZ   rj   ÚStep3p7Model.__annotate__   s   ø€ ÷ ñ ™}ñ r\   c                ó¾  € \         P                  W4       \        VP                  4      V n        \        VP                  4      V n        VP                  P                  V n        \        P                  ! VP                  P                  ^,          VP                  P                  VP                  R7      V n        VP                  V n        V P!                  4        R# )é   )r§  N)r:   r‡  r<   rE   Úvision_modelr;   rí   Úlanguage_modelrÉ   rŠ  ÚLinearrP   ró   Úmulti_modal_projectorrô   Úimage_placeholder_token_idrû  )rX   r�  s   &&rZ   r‡  ÚStep3p7Model.__init__   s¡   € Ü×'Ñ'¨Ô5Ü.¨v×/CÑ/CÓDˆÔÜ.¨v×/AÑ/AÓBˆÔØ ×,Ñ,×7Ñ7ˆŒô &(§Y¢YØ× Ñ ×,Ñ,¨qÕ0°&×2DÑ2D×2PÑ2PÐW]×WlÑWlô&
ˆÔ"ð +1×*?Ñ*?ˆÔ'Ø�‰Ör\   Nc          	      ó–   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          R,          RS[S[,          /# )r^   rE  rJ  NrF  r  )r%  r&  r©   rU   r
  r   )rh   ri   s   "€rZ   rj   rs  ¯  sO   ø€ ÷ #
ñ #
á—l‘lð#
ñ "ŸL™L¨4Õ/ð#
ñ  ¡�9 tÕ+ð	#
ñ 
Ñ+Õ	+ñ#
r\   c           	     ó  € V P                   ! V3/ VB pV P                  VP                  4      pVe3   V P                  V P                   ! V3/ / VCRR/CB P                  4      MR pVf   ^ .VP                  ^ ,          ,          p. p^ p	\	        V4       FÈ  w  r«. pV^ 8”  d=   WyW›,            pVP                  VP                  RVP                  R,          4      4       VP                  Wj,          P                  RVP                  R,          4      4       W›,          p	TP                  \        V4      ^8”  d   \        P                  ! V4      MV^ ,          4       KÊ  	  \        VP                  VVP                  VP                  R7      # )NÚoutput_hidden_statesF)r  Úpooler_outputr•  rñ  rp  )rv  ry  r  r+  r²   rL  r»  rª   r%  rr  r   r•  rñ  )rX   rE  rJ  rF  rY   Úvision_outputÚimage_featuresÚpatch_image_featuresÚmergedÚcur_patch_idxrÁ   Ú	num_patchÚcur_featureÚpatch_slices   &&&&,         rZ   Úget_image_featuresÚStep3p7Model.get_image_features­  s{  € ð ×)Ò)¨,ÑA¸&ÑAˆØ×3Ñ3°M×4SÑ4SÓTˆð
 "Ò-ð ×&Ñ&Ø×!Ò!Ð"4ÑbÐ8a¸6Ð8aÐCYÐ[`Ñ8aÑb×tÑtôð ð 	ð Ò$Ø!"  n×&:Ñ&:¸1Õ&=Õ =ÐàˆØˆÜ%Ð&7Ö8‰LˆAØˆKØ˜1Œ}Ø2À=ÕC\Ð]�Ø×"Ñ" ;×#3Ñ#3°B¸×8IÑ8IÈ"Õ8MÓ#NÔOØ×Ñ˜~Õ0×5Ñ5°b¸.×:NÑ:NÈrÕ:RÓSÔTØÕ&ˆMØ�M‰M´C¸Ó4DÀqÔ4Hœ%Ÿ)š) KÔ0ÈkÐZ[ÍnÖ]ñ 9ô *Ø+×=Ñ=Ø Ø'×5Ñ5Ø$×/Ñ/ô	
ð 	
r\   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€  rä  )rh   ri   s   "€rZ   rj   rs  �  ó   ø‡ ‚ ÙÑò r\   )rz  rw  ry  rv  rÉ   rœ  )rl   rm   rn   ro   r‡  r   r   rˆ  rs   rt   ru   rv   s   @rZ   r9   r9   �  s7   ø‡ € ÷ð ð Ø÷#
ñ #
ó ó ð#
÷% ƒ r\   c                   ó,   a € ] tR tRt o V 3R ltRtV tR# )r8   iÕ  c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€  rä  )rh   ri   s   "€rZ   rj   Ú,Step3p7ForConditionalGeneration.__annotate__Õ  r‹  r\   r§   N)rl   rm   rn   ro   rs   rt   ru   rv   s   @rZ   r8   r8   Õ  s   ø‡ ‡ „ r\   c                   ót   a a€ ] tR tRt oRtR
V3R lV 3R lllt]V3R lR l4       tV3R lR ltR	t	Vt
V ;t# )rA   iÙ  aA  Processor for Step-3.7-Flash.

Uses :class:`ProcessorMixin.__call__` for the standard image-token expansion
flow: the image processor splits each image into global + local patch crops,
then :meth:`replace_image_token` builds the per-image replacement string
that ``get_text_with_replacements`` substitutes into the text.
c                ó   <€ V ^8„  d   QhRR/# )r^   r  Nr§   )rh   ri   s   "€rZ   rj   ÚStep3p7Processor.__annotate__ã  s   ø€ ÷ vñ vÐY]ñ vr\   c           	     óÚ  <€ R V n         Ve   VP                  V P                   4      MRV n        VP                  VP                  ,          pVP
                  R,          V,          ^,          V n        VP                  V,          ^,          V n        V P                   V P                  ,          V n	        V P                   V P                  ,          V n
        \        SV `0  ! RRVRVRV/VB  R# )z
<im_patch>Nrÿ   Úimage_processorÚ	tokenizerÚchat_templater§   )Úimage_tokenÚconvert_tokens_to_idsrô   re  rf  r  Únum_image_feature_sizer`   Únum_patch_feature_sizeÚimage_feature_placeholderÚpatch_feature_placeholderr¶   r‡  )rX   r“  r”  r•  rY   r¦  rÆ   s   &&&&, €rZ   r‡  ÚStep3p7Processor.__init__ã  sÌ   ø€ Ø'ˆÔØS\ÒSh˜i×=Ñ=¸d×>NÑ>NÔOÐnrˆÔØ ×2Ñ2°_×5WÑ5WÕWˆØ'6×';Ñ';¸HÕ'EÈÕ'OÐTUÕ&UˆÔ#Ø'6×'AÑ'AÀVÕ'KÐPQÕ&QˆÔ#Ø)-×)9Ñ)9¸D×<WÑ<WÕ)WˆÔ&Ø)-×)9Ñ)9¸D×<WÑ<WÕ)WˆÔ&Ü‰ÒÑu¨ÐuÀIÐuÐ]jÐuÐntÔur\   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r^   r  )r©   re   )rh   ri   s   "€rZ   rj   r‘  î  s   ø€ ÷ 'ñ '¡D©¥Iñ 'r\   c                ó   € R .# )rK  r§   )rX   s   &rZ   Úunused_input_namesÚ#Step3p7Processor.unused_input_namesí  s   € à%Ð&Ð&r\   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r^   Úimage_inputsÚ	image_idxr  )rg   rU   re   )rh   ri   s   "€rZ   rj   r‘  ñ  s#   ø€ ÷ ñ ±ð Áð ÑSVñ r\   c                ó.  € VR,          V,          pVP                  R4      pVe	   WR,          MRpRp\        V4       F=  pVRV P                   R2,          pV'       g   K$  Wh,          '       g   K4  VR,          pK?  	  VRV P                   R	2,          pV# )
zOReturn the expanded token string for image *image_idx* (patches + global view).rF  rK  NÚ z<patch_start>z<patch_end>z<patch_newline>z
<im_start>z<im_end>)r˜   r¯   r›  rš  )	rX   r¢  r£  rY   Únum_patchesrK  Úpatch_newline_maskÚreplrÁ   s	   &&&,     rZ   Úreplace_image_tokenÚ$Step3p7Processor.replace_image_tokenñ  sŸ   € à"Ð#6Õ7¸	ÕBˆØ*×.Ñ.Ð/DÓEÐØ?RÒ?^Ð0Ö;ÐdhÐØˆÜ�{Ö#ˆAØ�m D×$BÑ$BÐ#CÀ;ÐOÕOˆDß!Ñ!Ð&8×&;Ö&;ØÐ)Õ)’ñ $ð 	�*˜T×;Ñ;Ð<¸HÐEÕEˆØˆr\   )rš  r–  rô   r˜  r™  r›  rœ  )rl   rm   rn   ro   rÕ   r‡  ÚpropertyrŸ  r©  rt   ru   ré   rê   s   @@rZ   rA   rA   Ù  s9   ù‡ € ñ÷võ vð ÷'ó ð'÷÷ ð r\   )
r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   )pÚcollections.abcr   r%  Útorch.nnrŠ  Úhuggingface_hub.dataclassesr   r¥  r   rÏ  Úcache_utilsr   Úconfiguration_utilsr   Úimage_processing_backendsr   Úimage_processing_utilsr	   Úimage_transformsr
   r   r   Úimage_utilsr   r   r   r   r   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_rope_utilsr   Úmodeling_utilsr   r   Úprocessing_utilsr   r   r   Úutilsr   r   r   r   r   r    r!   Úutils.output_capturingr"   Úvision_utilsr#   Ú$deepseek_ocr2.modeling_deepseek_ocr2r$   r%   Ú deepseek_v4.modeling_deepseek_v4r&   r'   Úgemma3.modeling_gemma3r(   Úkimi_k25.modeling_kimi_k25r)   Úlaguna.modeling_lagunar*   r+   r,   r-   r.   Ú)minimax_m3_vl.configuration_minimax_m3_vlr/   Ú$minimax_m3_vl.modeling_minimax_m3_vlr0   r1   r2   r3   r4   Úqwen2_vl.modeling_qwen2_vlr5   Úsiglip.configuration_siglipr6   Úsiglip.modeling_siglipr7   Ú
get_loggerrl   ÚloggerÚ__all__r=   r>   r?   rø   r@   rm  rx  r|  r~  rŸ  r:   r<   rÕ  rÞ  r  r×  rÛ  r/  r7  rÅ  r;   r9   r8   rA   r§   r\   rZ   Ú<module>rÊ     s“  ðõ %ã Ý Ý .å &Ý  Ý 3Ý ;Ý 2ß XÑ Xß fÕ fÝ 9ß KÝ 6ß Fß DÑ D÷÷ ñ õ 6Ý 3ß jß OÝ 4Ý F÷õ õ N÷õ õ EÝ <Ý ;ð 
×	Ò	˜HÓ	%€ò€ñ Ð6Ô7ØôHÐ,ó Hó ó 8ðHñ8 Ð6Ô7ØôALÐ-ó ALó ó 8ðALñH Ð6Ô7Øô(Ð$ó (ó ó 8ð(ô2
 ,°eõ 
ð ôc4Ð.ó c4ó ðc4ôR5Ð#@ô 5ô	Ð+ô 	ô	Ð7ô 	ô"Ð :ô "ôJÐ4ô ð@ ô('˜_ó ('ó ð('ðV ô/[Ð/ó /[ó ð/[ôd	Ð2ô 	ô	Ð'ô 	ô)�ô )ð ôÐ&ó ó ðô	Ð-ô 	ô	FÐ5ô 	Fô0)�ô 0)ôfdÐ,ô dô*�ô ô45
Ð$ô 5
ôpÐ&Jô ð ô"�~ó "ó ò"r\   