+
    UV-j'   ã                   ó4  € ^ RI Ht ^ RIHtHtHtHtHtHtH	t	 ^ RI
Ht ^ RIHt ^RIHt ^RIHtHtHtHtHtHtHtHt ] ! R R4      4       tR R	 ltR
 R ltR R ltRR/R R lltR R ltRBR R llt R R lt!RCR R llt"R R lt#R R lt$R R lt%RBR  R! llt&R" R# lt'R$ R% lt(R& R' lt)R( R) lt*R*RR+RR,]PV                  R-R./R/ R0 llt,R1 R2 lt-R3 R4 lt.R5 R6 lt/R7 R8 lt0RDR9 R: llt1RER; R< llt2R+RR,]PV                  R=RR>RR-R.R?R/R@ RA llt3R# )Fé    )Ú	dataclass)ÚAnyÚCallableÚDictÚ	GeneratorÚListÚOptionalÚTupleN)Úcache)Ú_batch_cache_left_paddingÚ_dflash_block_totalÚ_record_speculative_roundÚ_speculative_walkÚ_speculative_walk_batchÚ*_speculative_walk_batch_uniform_acceptanceÚ_SpeculativeSamplerRNGÚgeneration_streamc                   ó4   a € ] tR t^t o RtRtV 3R ltRtV tR# )Ú_MTPVerifyResultNc                ó’   <€ V ^8„  d   Qh/ S[ P                  ;R&   S[;R&   S[S[ P                  ,          ;R&   S[S[,          ;R&   # )é   ÚhiddenÚshared_kv_statesÚtarget_tokensÚ
gdn_states)ÚmxÚarrayÚdictr	   Úlist)ÚformatÚ__classdict__s   "€Úh/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/speculative/mtp.pyÚ__annotate__Ú_MTPVerifyResult.__annotate__   sH   ø‡ ‚ á�H‰HÑñ ñ Ññ ñ ™BŸH™HÕ%Ñ,ñ	 ñ
 ™•Ñ%ò ó    © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r!   s   @r"   r   r      s   ø‡ € ð )-€MØ!%€J÷ ƒ r%   r   c                óf   € V ^8„  d   QhR\         P                  R\        \        ,          R\        /# )r   ÚlmÚprompt_cacheÚreturn)ÚnnÚModuler   r   r   )r    s   "r"   r#   r#      s.   € ÷ ñ Ü
�	‰	ðä”s•)ðô 
ñr%   c                 ó<  € \        \        V R R4      R. 4      p\        V4      \        V4      8w  d   / # / p\        W!4       F×  w  rEVe   \        VR4      '       g   K  VP                  pVe   \        V4      ^8  d   K?  VR,          w  rxVe   Vf   KT  \        V\        P                  4      '       dU   \        V\        P                  4      '       g5   \        VR4      '       d#   VP                  V4      pVP                  V4      pWx3W4P                  &   KÙ  	  V# )ÚmodelNÚlayersÚstate:Nr   NÚ_temporal_order)ÚgetattrÚlenÚzipÚhasattrr7   Ú
isinstancer   ÚRotatingKVCacheÚBufferedRotatingKVCacher8   Ú
layer_type)	r/   r0   r6   r   ÚlayerÚlayer_cacher7   ÚkeysÚvaluess	   &&       r"   Ú _mtp_shared_kv_from_prompt_cacherE      sÿ   € ô ”W˜R ¨$Ó/°¸2Ó>€FÜ
ˆ<ÓœC ›KÔ'Øˆ	àÐÜ! &Ö7ÑˆØÒ¤g¨k¸7×&CÒ&CÙØ×!Ñ!ˆØŠ=œC ›J¨œNÙØ˜R•y‰ˆØŠ<˜6š>Ùä�{¤E×$9Ñ$9×:Ò:Ü˜{¬E×,IÑ,I×JÒJÜ˜Ð%6×7Ò7à×.Ñ.¨tÓ4ˆDØ ×0Ñ0°Ó8ˆFØ.2¨^Ð×)Ñ)Ó*ñ! 8ð" Ðr%   c          	      óœ   € V ^8„  d   QhR\         P                  R\        P                  R\        \
        ,          R\        \        ,          /# )r   r/   Úverify_inputr0   r1   )r2   r3   r   r   r   r   r	   r   )r    s   "r"   r#   r#   9   sH   € ÷ 2Lñ 2LÜ
�	‰	ð2Lä—(‘(ð2Lô ”s•)ð2Lô ÔÕñ	2Lr%   c                 óH  € \        V R R4      p\        V4      '       du   V! W4      p\        V\        4      '       d9   \	        V4      ^8X  d   Vw  rVpM(\	        V4      ^8X  d   Vw  rVRpM\        R4      hTp/ pRp\        TT;'       g    / VR7      # \        \        V RR4      R. 4      p\	        V4      \	        V4      8X  d4   V P                  VVRR7      p\        W4      pV'       d   \        WVR7      # / p	V P                  VVV	RR	7      pV	'       g   R# \        WYR7      # )
Úspeculative_verify_hiddenNzmspeculative_verify_hidden() must return (hidden, shared_kv_states) or (hidden, shared_kv_states, gdn_states).)r   r   r   r5   r6   T)r   Úskip_final_norm)r   r   )r   Úshared_kv_sinkrJ   )	r9   Úcallabler=   Útupler:   Ú
ValueErrorr   r5   rE   )
r/   rG   r0   Úverify_hiddenÚresultr   r   r   r6   rK   s
   &&&       r"   Ú_mtp_verify_without_logitsrQ   9   s>  € ô
 ˜BÐ ;¸TÓB€MÜ�×ÒÙ˜|Ó:ˆÜ�fœe×$Ò$Ü�6‹{˜aÔØ7=Ñ4�©*Ü�V“ Ô!Ø+1Ñ(�Ø!‘
ä ð>óð ð ˆFØ!ÐØˆJÜØØ-×3Ð3°Ø!ô
ð 	
ô ”W˜R ¨$Ó/°¸2Ó>€FÜ
ˆ<ÓœC ›KÔ'Ø—‘ØØØ ð ó 
ˆô
 <¸BÓMÐßÜ#¨6ÔUÐUà€NØ�X‰XØØØ%Øð	 ó €F÷ ÙÜ 6ÔKÐKr%   c                óô   € V ^8„  d   QhR\         P                  R\        P                  R\        \
        ,          R\        \        P                  .\        P                  3,          R\        \        ,          /# )r   r/   rG   r0   Úsamplerr1   )	r2   r3   r   r   r   r   r   r	   r   )r    s   "r"   r#   r#   n   s`   € ÷ ñ Ü
�	‰	ðä—(‘(ðô ”s•)ðô ”r—x‘x�j¤"§(¡(Ð*Õ+ð	ô
 ÔÕñr%   c                 óò   € \        V R R4      p\        V4      '       g   R# V! WV4      p\        V\        4      '       d   \	        V4      ^8w  d   \        R4      hVw  rgr‰\        TT;'       g    / V	VR7      # )Úspeculative_verify_logitsNz^speculative_verify_logits() must return (hidden, shared_kv_states, gdn_states, target_tokens).©r   r   r   r   )r9   rL   r=   rM   r:   rN   r   )
r/   rG   r0   rS   Úverify_logitsrP   r   r   r   r   s
   &&&&      r"   Ú_mtp_verify_with_model_methodrX   n   s†   € ô ˜BÐ ;¸TÓB€MÜ�M×"Ò"Ùá˜<°wÓ?€FÜ�fœe×$Ò$¬¨F«°qÔ(8ÜðEó
ð 	
ð
 ;AÑ7€F˜jÜØØ)×/Ð/¨RØ#Øô	ð r%   Úsample_target_tokensTc                óê   € V ^8„  d   QhR\         P                  R\        P                  R\        \
        ,          R\        \        P                  .\        P                  3,          R\        R\        /# )r   r/   rG   r0   rS   rY   r1   )	r2   r3   r   r   r   r   r   Úboolr   )r    s   "r"   r#   r#   ˆ   sd   € ÷ &ñ &Ü
�	‰	ð&ä—(‘(ð&ô ”s•)ð&ô ”r—x‘x�j¤"§(¡(Ð*Õ+ð	&ô ð&ô ñ&r%   c                ó¶  € V'       d_   \        V R R4      p\        V4      '       d/   \        WV4      pVe   V! VP                  4      pVe	   Wvn        V# \        WW#4      pVe   V# \        V R4      '       d   \        WV4      pVe   V# V ! VVRRR7      p\        VP                  R,          VP                  V! VP                  4      VP                  R7      # )Úspeculative_argmax_from_hiddenNÚspeculative_logits_from_hiddenT)r   Úreturn_hiddenÚreturn_shared_kvrV   éÿÿÿÿ)r9   rL   rQ   r   r   rX   r<   r   Úhidden_statesr   Úlogitsr   )	r/   rG   r0   rS   rY   Úargmax_from_hiddenrP   r   Ú
verify_outs	   &&&&$    r"   Ú_mtp_verify_targetrf   ˆ   sã   € ÷ Ü$ RÐ)IÈ4ÓPÐÜÐ&×'Ò'Ü/°À,ÓOˆFØÒ!Ù 2°6·=±=Ó A�Ø Ò,Ø+8Ô(Ø!�Mä.¨rÀÓWˆØÒØˆMäˆrÐ3×4Ò4Ü+¨B¸lÓKˆØÒØˆMáØØØØô	€Jô Ø×'Ñ'¨Õ+Ø#×4Ñ4Ù˜j×/Ñ/Ó0Ø×(Ñ(ô	ð r%   c                óx   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  /# )r   r/   r   r1   )r2   r3   r   r   )r    s   "r"   r#   r#   ±   s-   € ÷ <ñ <œ"Ÿ)™)ð <¬R¯X©Xð <¼"¿(¹(ñ <r%   c                 óR   € \        V R R4      p\        V4      '       d	   V! V4      # T# )Úspeculative_draft_hiddenN)r9   rL   )r/   r   Úprepares   && r"   Ú_mtp_draft_hiddenrk   ±   s*   € Ü�bÐ4°dÓ;€GÜ& w×/Ò/‰7�6‹?Ð;°VÐ;r%   c                óN  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        \        P                  .\        P                  3,          R\
        R\
        R\        \
        ,          R\        \
        \        \
        ,          3,          /# )	r   r/   Útarget_hiddenÚdraft_tokensrS   ÚbudgetÚrow_idÚbase_positionr1   )	r2   r3   r   r   r   Úintr	   r
   r   )r    s   "r"   r#   r#   ¶   s‰   € ÷ - ñ - Ü
�	‰	ð- ä—8‘8ð- ô —(‘(ð- ô ”r—x‘x�j¤"§(¡(Ð*Õ+ð	- ô
 ð- ô ð- ô œC•=ð- ô Œ3””S•	ˆ>Õñ- r%   c           
     ó  € VP                   ^,          pVP                  R4      P                  4        Uu. uF  p\        V4      NK  	  p	p^ p
. p\	        V^,           4       EFŒ  p\
        P                  ! \        4      ;_uu_ 4        V P                  VRWÌ^,           1R3,          4      pVP                  ^8X  d"   VP                   ^,          ^8X  d
   VR,          pV\
        P                  ! VRRR7      ,
          p\        VRR4      p\        V4      '       d#   Ve   V! VV.\        V4      V,           .R7      pMV! V4      pRRR4       \
        P                  ! X4       \        VP                  R4      P                  4       4      pWÇ8  d;   VWœ,          8X  d.   V
^,          p
\        V4      V8  d   VP!                  V4       EKj  \        V4      V8  d   VP!                  V4        W«3# 	  W«3# u upi   + '       g   i     L½; i)	zAGreedy MTP walk that projects target logits only until rejection.ºNNNT©ÚaxisÚkeepdimsÚsample_targetN©Úrow_idsÚ	positionsra   ©rt   r   rt   )ÚshapeÚreshapeÚtolistrr   Úranger   Ústreamr   r^   ÚndimÚ	logsumexpr9   rL   ÚevalÚitemr:   Úappend)r/   rm   rn   rS   ro   rp   rq   Ún_draftÚxÚ
draft_listÚacceptedÚ
new_tokensÚposrc   Úlogprobsrx   Útarget_tokenÚtokens   &&&&&&&           r"   Ú!_speculative_walk_deferred_greedyr�   ¶   sÃ  € ð × Ñ  Õ#€GØ".×"6Ñ"6°rÓ":×"AÑ"AÔ"CÓDÑ"C˜Q”#�a–&Ñ"C€JÐDØ€HØ€Jä�W˜q•[×!ˆÜ�YŠYÔ(×)Õ)Ø×6Ñ6Ø˜a ¨Q¥w °Ð1Õ2óˆFð �{‰{˜aÔ F§L¡L°¥O°qÔ$8Ø ��Ø¤§¢¨V¸"ÀtÔ LÕLˆHÜ# G¨_¸dÓCˆMÜ˜×&Ò&¨=Ò+DÙ,ØØ#˜HÜ" =Ó1°CÕ7Ð8ô ‘ñ  ' xÓ0�÷ *ô  	�Š�ÔÜ�L×(Ñ(¨Ó,×1Ñ1Ó3Ó4ˆàŒ=˜U j¥oÔ5Ø˜�MˆHÜ�:‹ Ô'Ø×!Ñ! %Ô(Úäˆz‹?˜VÔ#Ø×Ñ˜eÔ$ØàÐÐñ= "ð< ÐÐùòE E÷
 *×)ús   µG5ÂB>G:Ç:H
c                óþ   € V ^8„  d   QhR\         P                  R\        P                  R\        \        P                  .\        P                  3,          R\
        R\
        R\        \        P                  ,          /# )r   r/   rm   rS   rp   rq   r1   )r2   r3   r   r   r   rr   r	   )r    s   "r"   r#   r#   æ   si   € ÷ "ñ "Ü
�	‰	ð"ä—8‘8ð"ô ”r—x‘x�j¤"§(¡(Ð*Õ+ð"ô
 ð"ô ð"ô Œb�h‰hÕñ"r%   c          	      óv  € \        VR R4      p\        V4      '       g   R# \        P                  ! \        4      ;_uu_ 4        V P                  V4      pVP                  ^8X  d-   VP                  ^ ,          ^8w  d    RRR4       R# V^ ,          pV\        P                  ! VRRR7      ,
          p\        VP                  ^ ,          4       Uu. uF  p\        V4      V,           NK  	  p	pV! V\        V4      .\        V	4      ,          V	R7      p
RRR4       X
R,          # u upi   + '       g   i     L; i)rx   NTru   ry   ra   ©Nrt   )r9   rL   r   r�   r   r^   r‚   r}   rƒ   r€   rr   r:   )r/   rm   rS   rp   rq   rx   rc   r�   rŒ   r{   r   s   &&&$$      r"   Ú_positioned_target_tokensr”   æ   sý   € ô ˜G _°dÓ;€MÜ�M×"Ò"Ùä	�ŠÔ$×	%Õ	%Ø×2Ñ2°=ÓAˆØ�;‰;˜!ÔØ�|‰|˜A� !Ô#Ø÷	 
&Ñ	%ð
 ˜A•YˆFØœBŸLšL¨°bÀ4ÔHÕHˆÜ9>¸x¿~¹~ÈaÕ?PÔ9QÓRÑ9Q°#”S˜Ó'¨#×-Ð-Ñ9Qˆ	ÐRÙ%ØÜ˜“[�M¤C¨	£NÕ2Øô
ˆ÷ 
&ð ˜Õ!Ð!ùò S÷ 
&×	%ús%   Á<D(Â	AD(ÃD#Ã+'D(Ä#D(Ä(D8	c                óÒ  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        \        P                  .\        P                  3,          R\
        \        ,          R\        \
        \        ,          ,          R\        \
        \        ,          ,          R\        \
        \        ,          \
        \
        \        ,          ,          3,          /# )	r   r/   rm   rn   rS   Úbudgetsrz   Úbase_positionsr1   )	r2   r3   r   r   r   r   rr   r	   r
   )r    s   "r"   r#   r#     s¤   € ÷ 9 ñ 9 Ü
�	‰	ð9 ä—8‘8ð9 ô —(‘(ð9 ô ”r—x‘x�j¤"§(¡(Ð*Õ+ð	9 ô
 ”#�Yð9 ô ”dœ3•iÕ ð9 ô œT¤#�YÕ'ð9 ô Œ4”�9”dœ4¤�9•oÐ%Õ&ñ9 r%   c                ó<  € VP                   ^ ,          pVP                   ^,          pVP                  4        U	U
u. uF  q™ U
u. uF  p
\        V
4      NK  	  up
NK  	  pp	p
V Uu. uF  p\        V4      NK  	  pp^ .V,          p\        V4       Uu. uF  p. NK  	  ppR.V,          p\        V^,           4       EF)  p\	        V4      '       d    Wß3# \
        P                  ! \        4      ;_uu_ 4        V P                  VRVV^,           1R3,          4      pVP                  ^8X  d"   VP                   ^,          ^8X  d
   VR,          pV\
        P                  ! VR	RR7      ,
          p\        V4      '       dI   Ve   Vf   \        R4      hTP                  TTV Uu. uF  p\        V4      V,           NK  	  upR7      pMV! V4      pRRR4       \
        P                  ! X4       VP                  R	4      P                  4        U
u. uF  p
\        V
4      NK  	  pp
\!        V4       F²  w  ršVV	,          '       d   K  VV8  d^   W«V	,          V,          8X  dJ   WÙ;;,          ^,          uu&   \#        Wù,          4      WI,          8  d   Wù,          P%                  V
4       Kz  \#        Wù,          4      WI,          8  d   Wù,          P%                  V
4       RVV	&   K´  	  EK,  	  Wß3# u up
i u up
p	i u upi u upi u upi   + '       g   i     ELA; iu up
i )
zIBatched greedy walk that projects target logits only until all rows stop.Frt   Tru   Nz?positioned target sampling requires row_ids and base_positions.ry   r|   ra   )r}   r   rr   r€   Úallr   r�   r   r^   r‚   rƒ   Ú#_sampler_supports_positioned_targetrN   rx   r„   r~   Ú	enumerater:   r†   )r/   rm   rn   rS   r–   rz   r—   ÚBr‡   Úrowr�   Údraft_listsro   rŠ   Ú_r‹   ÚdonerŒ   rc   r�   Úpositionr   Útarget_lists   &&&&&&&                r"   Ú'_speculative_walk_batch_deferred_greedyr£     s¬  € ð 	×Ñ˜1Õ€AØ× Ñ  Õ#€GØ<H×<OÑ<OÔ<QÔRÑ<Q°S¨CÓ0©C 5”C˜–J©CÔ0Ñ<Q€KÑRÙ)0Ó1©˜vŒs�6Ž{©€GÐ1Øˆs�Q�w€HÜ/4°Q¬xÓ"8©x¨!£2©x€JÐ"8Øˆ7�Q�;€Dä�W˜q•[×!ˆÜˆt�9Š9ØðJ ÐÐôI �YŠYÔ(×)Õ)Ø×6Ñ6Ø˜a  s¨Q¥w °Ð1Õ2óˆFð �{‰{˜aÔ F§L¡L°¥O°qÔ$8Ø ��Ø¤§¢¨V¸"ÀtÔ LÕLˆHÜ2°7×;Ò;Ø’? nÒ&<Ü$ð*óð ð !(× 5Ñ 5ØØ#ÙCQÓRÁ>°xœs 8›}¨s×2Ð2Á>ÑRð !6ó !‘ñ !(¨Ó 1�÷' *ô( 	�Š�ÔØ/<×/DÑ/DÀRÓ/H×/OÑ/OÔ/QÓRÑ/Q e”s˜5–zÑ/QˆÐRä# KÖ0‰JˆCØ�C�yŒyÙØ�WŒ} °cÕ*:¸3Õ*?Ô!?Ø— Õ"“Ü�z•Ó'¨'­,Ô6Ø•O×*Ñ*¨5Ô1Ùä�:•?Ó# g¥lÔ2Ø•×&Ñ& uÔ-ØˆD�‹Iô 1ñ5 "ðN ÐÐùò[ 1ùÓRùÚ1ùâ"8ùò, S÷! *×)Ð)üò* SsH   ºK0ÁK+ÁK0Á$K6ÂK;Ã5B,LÆ!L Æ<LÈLË+K0Ì LÌLc                ób  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        \        P                  .\        P                  3,          R\
        \        ,          R\        \
        \        ,          \
        \
        \        ,          ,          3,          /# )r   r/   rm   rn   rS   r–   r1   )r2   r3   r   r   r   r   rr   r
   )r    s   "r"   r#   r#   >  s†   € ÷ ,Rñ ,RÜ
�	‰	ð,Rä—8‘8ð,Rô —(‘(ð,Rô ”r—x‘x�j¤"§(¡(Ð*Õ+ð	,Rô
 ”#�Yð,Rô Œ4”�9”dœ4¤�9•oÐ%Õ&ñ,Rr%   c           
     óŽ  aaa€ VP                   ^ ,          pVP                   ^,          pVP                  4        UUu. uF  qw Uu. uF  p\        V4      NK  	  upNK  	  uppoV U	u. uF  p	\        V	4      NK  	  pp	^ p
\        V^,           4       EFÍ  o\        P
                  ! \        4      ;_uu_ 4        V P                  VRSS^,           1R3,          4      pVP                  ^8X  d"   VP                   ^,          ^8X  d
   VR,          pV\        P                  ! VRRR7      ,
          pV! V4      pRRR4       \        P                  ! X4       VP                  R4      P                  4        Uu. uF  p\        V4      NK  	  upoSV8  dc   \        ;QJ d*    VVV3R l\        V4       4       F  '       d   K   RM	  RM! VVV3R l\        V4       4       4      '       d   V
^,          p
EKd  . p\        V4       FM  w  rySV,          RV
 p\        V4      V	8  d   VP                  SV,          4       VP                  VRV	 4       KO  	  V
.V,          V3u # 	  V
.V,          \        V4       Uu. uF  pSV,          RWG,           NK  	  up3# u upi u uppi u up	i   + '       g   i     EL{; iu upi u upi )	zâDeferred walk for models whose batched drafter cache needs lockstep rows.

Stop at the first rejection in any row. This avoids consuming target sampler
RNG for verifier positions that will be thrown away by the uniform clamp.
rt   Tru   Nc              3   óX   <"  € T F  pSV,          SV,          S,          8H  x € K!  	  R # 5i©Nr&   )Ú.0r�   rž   rŒ   r¢   s   & €€€r"   Ú	<genexpr>Ú;_speculative_walk_batch_deferred_uniform.<locals>.<genexpr>\  s(   øé € ð !
ÙAI¸#ˆK˜Õ ¨CÕ 0°Õ 5Ö5Ãùs   ƒ'*Fr|   ra   )r}   r   rr   r€   r   r�   r   r^   r‚   rƒ   r„   r~   r™   r›   r:   r†   )r/   rm   rn   rS   r–   rœ   r‡   r�   r�   ro   rŠ   rc   r�   r   r‹   Ú
row_tokensrž   rŒ   r¢   s   &&&&&           @@@r"   Ú(_speculative_walk_batch_deferred_uniformr¬   >  sU  ú€ ð 	×Ñ˜1Õ€AØ× Ñ  Õ#€GØ<H×<OÑ<OÔ<QÔRÑ<Q°S¨CÓ0©C 5”C˜–J©CÔ0Ñ<QÒR€KÙ)0Ó1©˜vŒs�6Ž{©€GÐ1à€HÜ�W˜q•[×!ˆÜ�YŠYÔ(×)Õ)Ø×6Ñ6Ø˜a  s¨Q¥w °Ð1Õ2óˆFð �{‰{˜aÔ F§L¡L°¥O°qÔ$8Ø ��Ø¤§¢¨V¸"ÀtÔ LÕLˆHÙ# HÓ-ˆM÷ *ô 	�Š�ÔØ/<×/DÑ/DÀRÓ/H×/OÑ/OÔ/QÓRÑ/Q e”s˜5–zÑ/QÑRˆà�Œ=ŸS›Sö !
ÜAFÀqÄó!
ŸSŸSšSö !
ÜAFÀqÄó!
÷ 
ò 
ð ˜�MˆHÚà&(ˆ
Ü$ WÖ-‰KˆCØ$ SÕ)¨)¨8Ð4ˆJÜ�:‹ Ô'Ø×!Ñ! +¨cÕ"2Ô3Ø×Ñ˜j¨¨&Ð1Ö2ñ	 .ð
 ˆz˜A�~˜zÐ)Ò)ñ1 "ð4 ˆ:˜�>ÌÈaÌÓQÉÀ˜K¨Õ,¨^¨w­|Ó<ÉÑQÐQÐQùò= 1ùÓRùÚ1÷ *×)Ð)üò Sùò  Rs6   ½JÁJÁJÁ(J$Â8A?J)Å6J=É:KÊJÊ)J:c                ó|   € V ^8„  d   QhR\         \        P                  .\        P                  3,          R\        /# )r   rS   r1   )r   r   r   r[   )r    s   "r"   r#   r#   m  s0   € ÷ =ñ =Ü”r—x‘x�j¤"§(¡(Ð*Õ+ð=ä	ñ=r%   c                 ó.   € \        \        V R R4      4      # )rx   N)rL   r9   )rS   s   &r"   rš   rš   m  s   € ô ”G˜G _°dÓ;Ó<Ð<r%   c          
      ó´   € V ^8„  d   QhR\         P                  R\        R\        R\        \
        P                  .\
        P                  3,          R\        /# )r   Údraft_modelÚn_activeÚgreedy_samplingrS   r1   )r2   r3   rr   r[   r   r   r   )r    s   "r"   r#   r#   s  sT   € ÷ ñ Ü—‘ðô ðô ð	ô
 ”r—x‘x�j¤"§(¡(Ð*Õ+ðô 
ñr%   c                ór   € V^8:  d   R# \        V RR4      '       d   R# \        V4      '       d   R# V'       * # )é   FÚ!requires_uniform_batch_acceptanceT)r9   rš   )r°   r±   r²   rS   s   &$$$r"   Ú_mtp_use_uniform_deferred_walkr¶   s  s:   € ð �1„}Ùäˆ{Ð?À×GÒGÙä*¨7×3Ò3Ùð
 ÔÐr%   c                ó:  € V ^8„  d   QhR\         P                  R\        R\        P                  R\
        \        P                  .\        P                  3,          R\        R\        R\        \        ,          R\        \        \        \        ,          3,          /# )	r   r/   Úverifyrn   rS   ro   rp   rq   r1   )
r2   r3   r   r   r   r   rr   r	   r
   r   )r    s   "r"   r#   r#   ‰  s…   € ÷ "ñ "Ü
�	‰	ð"äð"ô —(‘(ð"ô ”r—x‘x�j¤"§(¡(Ð*Õ+ð	"ô
 ð"ô ð"ô œC•=ð"ô Œ3””S•	ˆ>Õñ"r%   c           
      ó´  € VP                   eB   \        P                  ! VP                   VP                  4       \	        W!P                   V4      # VeK   \        V VP                  VVVR7      pVe-   \        P                  ! WqP                  4       \	        W'V4      # \        P                  ! VP                  4       \        V VP                  VVVVVR7      # )N©rp   rq   )r   r   Ú
async_evalr   r   r”   r�   )r/   r¸   rn   rS   ro   rp   rq   r   s   &&&&&&& r"   Ú_mtp_acceptance_walkr¼   ‰  s¹   € ð ×ÑÒ'Ü
�Š�f×*Ñ*¨F¯M©MÔ:Ü  ×/CÑ/CÀVÓLÐLàÒ Ü1ØØ�M‰MØØØ'ô
ˆð Ò$Ü�MŠM˜-¯©Ô7Ü$ \À&ÓIÐIä‡M‚M�&—-‘-Ô Ü,Ø
Ø�‰ØØØØØ#ôð r%   c                ó<   € V ^8„  d   QhR\         R\        R\         /# )r   r   Úrejectedr1   )r   rr   )r    s   "r"   r#   r#   ®  s!   € ÷ ñ ´Dð ÄCð ÌDñ r%   c                 ób  € V^ 8:  d   V # / pV P                  4        F�  w  r4Vw  rVVP                  R,          V,
          pV^ 8:  g   WuP                  R,          8¼  d1   WuP                  R,          8¼  d   WV3MVR,          VR,          3W#&   Kq  VRRV1R3,          VRRV1R3,          3W#&   K‘  	  V# )r   .rt   Néþÿÿÿ©.:Nr´   Nrt   )Úitemsr}   )r   r¾   Únext_shared_kvÚkÚkvÚKÚVÚvalids   &&      r"   Ú_slice_shared_kv_after_rejectrÉ   ®  s´   € Ø�1„}ØÐà€NØ!×'Ñ'Ö)‰ˆØ‰ˆØ—‘˜•˜hÕ&ˆØ�AŒ:˜§'¡'¨"¥+Ô-à§7¡7¨2¥;Ô.�‘°Q°zµ]ÀAÀjÅMÐ4Rð Óð "# 3¨¨¨° >Õ!2°A°c¸6¸E¸6À1°nÕ4EÐ FˆNÓñ *ð Ðr%   c          
      ój   € V ^8„  d   QhR\         R\         R\        \         ,          R\         R\         /# )r   Úrequested_block_totalÚconfigured_block_totalÚaccept_lensÚremaining_budgetr1   )rr   r   )r    s   "r"   r#   r#   ¿  s>   € ÷ ñ Üðäðô ”c•ðô ð	ô
 	ñr%   c                óò   a€ \        W4      p\        W4      pWA8:  g   V^8:  d   V# \        V4      ^8  d   V# VRR pV^,
          o\        V3R lV 4       4      pV\        V4      ,          pVR8  d   V# V# )a>  Choose the MTP block size for the next round.

Treat user-provided block sizes above the assistant's configured depth as a
ceiling. Larger tails are useful only if the prefix reaches the configured
depth often enough; otherwise each round pays extra autoregressive drafter
forwards for tokens that cannot be accepted.
Nc              3   ó8   <"  € T F  qS8¼  g   K  ^x € K  	  R# 5i©r´   Nr&   )r¨   rŠ   Úconfigured_draft_counts   & €r"   r©   Ú,_effective_mtp_block_size.<locals>.<genexpr>Ö  s   øé € ð !Ù ˆhÐ0FÑ$F�Š›&ùs   ƒ�
gÍÌÌÌÌÌä?iàÿÿÿ)Úminr:   Úsum)	rË   rÌ   rÍ   rÎ   Úblock_totalÚrecentÚconfigured_prefix_hitsÚconfigured_prefix_hit_raterÒ   s	   &&&&    @r"   Ú_effective_mtp_block_sizerÚ   ¿  s—   ø€ ô Ð+Ó>€KÜ Ð!7ÓEÐØÔ,Ð0FÈ!Ô0KØÐä
ˆ;Ó˜!ÔØ%Ð%à˜˜Ð€FØ3°aÕ7ÐÜ ô !Ù ó!ó Ðð "8¼#¸f»+Õ!EÐØ! DÔ(Ø%Ð%àÐr%   c          
      óh   € V ^8„  d   QhR\         P                  R\        R\        R\        R\        /# )r   r°   rË   rÌ   rÎ   r1   )r2   r3   rr   )r    s   "r"   r#   r#   à  s>   € ÷ ñ Ü—‘ðäðô  ðô ð	ô
 	ñr%   c                 ón   € \        V R R4      '       d   \        W4      # \        VVV P                  V4      # )Úprefer_requested_block_sizeF)r9   rÔ   rÚ   rÍ   )r°   rË   rÌ   rÎ   s   &&&&r"   Ú_mtp_next_block_sizerÞ   à  s?   € ô ˆ{Ð9¸5×AÒAÜÐ(Ó;Ð;Ü$ØØØ×ÑØó	ð r%   c                ó€   € V ^8„  d   QhR\         \        ,          R\        P                  R\        \
        ,          RR/# )r   r0   r°   Údraft_block_sizer1   N)r   r   r2   r3   r	   rr   )r    s   "r"   r#   r#   ð  s<   € ÷ 0ñ 0Ü”s•)ð0ä—‘ð0ô œs•mð0ð 
ñ	0r%   c           
      ó  aa€ \        \        VP                  R T;'       g    ^4      4      p\        T;'       g    T4      p\        ^ \	        ^€\        W44      ^,          4      4      oVV3R lo\        V 4       F  w  rVS! V4      W&   K  	  R# )Ú
block_sizec                 ó  <€ \        V \        P                  4      '       dU   \        ;QJ d(    . V3R  lV P                   4       F  NK  	  5V n        V # ! V3R  lV P                   4       4      V n        V # \        V \        P
                  4      '       d   \        V P                  S4      V n        V # \        V \        P                  4      '       d4   \        V R^ 4      ^ 8X  d"   \        P
                  P                  V SR7      # V # )c              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5ir§   r&   )r¨   ÚchildÚbuffer_entrys   & €r"   r©   ÚA_buffer_mtp_target_cache.<locals>.buffer_entry.<locals>.<genexpr>û  s   øé € Ð OÁ,¸¡¨e×!4Ð!4Ã,ùs   ƒÚkeep)Úbuffer_size)r=   r   Ú	CacheListrM   Úcachesr?   Úmaxré   r>   r9   Ú
from_cache)Úentryræ   ré   s   &€€r"   ræ   Ú._buffer_mtp_target_cache.<locals>.buffer_entryù  sÍ   ø€ Ü�eœUŸ_™_×-Ò-ß œ5Ô OÀ%Ç,Â,Ó OŸ5ˆEŒLØˆLð !Ô OÀ%Ç,Â,Ó OÓOˆEŒLØˆLÜ�eœU×:Ñ:×;Ò;Ü # E×$5Ñ$5°{Ó CˆEÔð ˆô �uœe×3Ñ3×4Ò4¼ÀÈÐPQÓ9RÐVWÔ9Wä×0Ñ0×;Ñ;Ø ;ð <ó ð ð ˆr%   N)rr   r9   Úconfigrì   rÔ   r›   )	r0   r°   rà   Ú
configuredÚ	requestedÚidxrî   ræ   ré   s	   &&&    @@r"   Ú_buffer_mtp_target_cacherô   ð  s}   ù€ ô
 ”W˜[×/Ñ/°Ð?O×?TÐ?TÐSTÓUÓV€JÜÐ$×2Ð2¨
Ó3€IÜ�bœ#˜c¤3 zÓ#=ÀÕ#AÓBÓC€Köô   Ö-‰
ˆÙ(¨Ó/ˆÓó .r%   Úprompt_tokensrà   Útoken_dtyper²   Fc                óÜ  € V ^8„  d   QhR\         P                  R\         P                  R\        \        ,          R\        P
                  R\        R\        \        P
                  ,          R\        R\        R	\        \        P
                  .\        P
                  3,          R
\        \        ,          R\        P                  R\        R\        \        \        R3,          RR3,          /# )r   r5   r°   r0   r   r   rõ   Úfirst_bonusÚ
max_tokensrS   rà   rö   r²   r1   N)r2   r3   r   r   r   r   r   r	   rr   r   ÚDtyper[   r   r
   )r    s   "r"   r#   r#     sã   € ÷ añ aÜ�9‰9ðaä—‘ðaô ”s•)ðaô �H‰Hð	aô
 ðaô œBŸH™HÕ%ðaô ðaô ðaô ”r—x‘x�j¤"§(¡(Ð*Õ+ðaô œs•mðaô —‘ðaô ðaô Œu”S˜$�YÕ  tÐ+Õ,ñar%   c          
   #  ó`  "  € \        V R4      '       d   V P                  MT p\        VR4      '       g"   \        \        V4      P                   R24      h\        W4      p\        \        VP                  RV4      4      pVP                  V 4       \        TV'       * ;'       d    \        V4      '       * R7      p\        VRR4      p\        V4      '       d'   Ve#   VP                  ! VVVVVV
3/ \        WV4      B  VP                  ^,          ^8”  d   VRRR1R3,          p\!        WÃ4      p\#        V4      pVP%                  VV\'        V4      VR	7       Tp^pVV8  Ed    \)        VVVVV,
          ^,           4      pV^8:  d   R# VP*                  ! VP,                  VVRVVV
3/ \        WV4      B p\.        P0                  ! \2        4      ;_uu_ 4        \.        P4                  ! \.        P6                  ! V..V
R
7      V.^R7      p\9        VVVVVR7      pRRR4       \;        VXVVVV,
          ^ VR7      w  ppVP=                  \        V4      '       * R7       \?        VVV^,
          4       V F  pVR3x € V^,          pVV8¼  g   K   R# 	  \        VRR4      p\        V4      '       d.   VP                  ! VVP@                  VVVVV
3/ \        WV4      B  \!        VVP@                  RVV^,           1R3,          4      pV'       d
   VR,          MTp\        VRR4      pVV^,
          8  dR   \        V4      '       dA   \.        P0                  ! \2        4      ;_uu_ 4        V! VVPB                  VV4       RRR4       \E        VPF                  VV^,           ,
          4      pVV^,           ,          pVP%                  VV\'        V4      VR	7       VR,          ^ 8X  g   EK�  \.        PH                  ! 4        EK§  R#   + '       g   i     ELó; i  + '       g   i     L¡; i5i)aÈ  Gemma 4 MTP (Single-Position Multi-Token) speculative-decoding round loop.

Mirrors ``_dflash_rounds`` but with three differences:
(1) the drafter consumes the target's last-layer hidden + last-layer
shared K/V per layer-type rather than concatenated multi-layer hiddens;
(2) ``draft_block`` is autoregressive (K small forwards) rather than a
single masked forward; (3) ``rollback_speculative_cache`` ignores
``gdn_states`` (Gemma 4 has no SSM/GDN state).
Úlanguage_modelÚrollback_speculative_cachezh does not implement rollback_speculative_cache. MTP speculative decoding currently only supports gemma4.râ   ©ÚenabledÚprefill_from_target_hiddenNrt   )r¡   Úkv_valid_len©Údtype©rv   ©rY   rº   ©Ú
sync_draftÚaccept_verified_tokensé   ra   )%r<   rü   ÚRuntimeErrorÚtyper'   r   rr   r9   rð   Úresetr   rš   rL   Ú
draft_callÚ_mtp_draft_kwargsr}   rk   Ú_mtp_cache_offset_maxÚset_shared_kvÚ_mtp_draft_positionrÞ   rn   Údraft_blockr   r�   r   Úconcatenater   rf   r¼   Útarget_sampledr   r   r   rÉ   r   Úclear_cache)r5   r°   r0   r   r   rõ   rø   rù   rS   rà   rö   r²   r/   rÖ   rÌ   Úsampler_rngÚprefill_draftÚ	kv_offsetÚbÚemittedÚbsrn   rG   r¸   rŠ   r‹   ÚtokÚaccept_verifiedÚrollbackrÃ   s   &&&&&$$$$$$$                  r"   Ú_mtp_roundsr    s  é € ô0 ")¨Ð0@×!AÒ!Aˆ×	Ò	Àu€BÜ�2Ð3×4Ò4ÜÜ�B‹x× Ñ Ð!ð "Gð Gó
ð 	
ô
 & kÓD€KÜ ¤¨×);Ñ);¸\È;Ó!WÓXÐØ×Ñ�eÔÜ(ØØ#Ô#÷ =ð =Ü3°GÓ<Ô<ô€Kô ˜KÐ)EÀtÓL€MÜ�×Ò =Ò#<Ø×ÒØØØØØØñ	
ô   ¸gÓFò	
ð ‡|�|�A…˜ÔØ˜˜2™3 ˜	Õ"ˆÜ˜rÓ*€Fä% lÓ3€IØ×ÑØØÜ$ YÓ/Øð	 ô ð 	€AØ€Gà
�JÕ
Ü!ØØØ"Ø˜Õ  1Õ$ó	
ˆð �Œ7Ùà"×/Ò/Ø×#Ñ#ØØØØØØñ	
ô   ¸gÓFñ	
ˆô �YŠYÔ(×)Õ)ÜŸ>š>Ü—’˜A˜3˜% {Ô3°\ÐBÈôˆLô (ØØØØØ%4ôˆF÷	 *ô  4ØØØØØ˜Õ ØØ!ô 
Ñˆ�*ð 	×"Ñ"Ü>¸wÓGÔGð 	#ô 	
ô 	" +¨x¸¸a½Ô@ãˆCØ�t�)ŠOØ�q�LˆGØ˜*Ö$Úñ	 ô " +Ð/GÈÓNˆÜ�O×$Ò$Ø×"Ò"ØØ—‘ØØØØØñ	ô $ KÀ'ÓJò	ô # 2 v§}¡}°Q¸À8ÈaÅ<Ð8OÐQRÐ5RÕ'SÓTˆß(ˆJ�rŽN¨aˆä˜2Ð;¸TÓBˆØ�b˜1•fÔ¤¨(×!3Ò!3Ü—’Ô,×-Õ-Ù˜ v×'8Ñ'8¸(ÀBÔG÷ .ô 7Ø×#Ñ# R¨8°a­<Õ%8ó
ˆð 	�X •\Õ!ˆ	Ø×!Ñ!ØØÜ(¨Ó3Ø"ð	 	"ô 	
ð �S�=˜A×Ü�NŠN×ñm ÷* *×)Ð)ú÷d .×-üsF   ‚GP.ÇAPÈA0P.ÊCP.Í,PÎA%P.Ï-P.ÐP	Ð	P.ÐP+	Ð&P.c                óF   € V ^8„  d   QhR\         \        ,          R\        /# ©r   r0   r1   )r   r   )r    s   "r"   r#   r#   ¯  s   € ÷ 	ñ 	¤D¬¥Ið 	´#ñ 	r%   c                 ó~   € V  F  p\        VR R4      pVf   K  Vu # 	  V  F  p\        VRR4      pVf   K  Vu # 	  ^ # )ÚoffsetNÚ_idx)r9   )r0   Úcache_entryr#  ró   s   &   r"   Ú_mtp_cache_offsetr&  ¯  sN   € Û#ˆÜ˜ h°Ó5ˆØÔØŠMñ $ó $ˆÜ�k 6¨4Ó0ˆØŒ?ØŠJñ $ñ r%   c                óF   € V ^8„  d   QhR\         \        ,          R\        /# r!  )r   r   rr   )r    s   "r"   r#   r#   »  s"   € ÷ Uñ U¬¬S­	ð U´cñ Ur%   c                 ó¼   € \        V 4      p\        V\        P                  4      '       d(   \	        VP                  4       P                  4       4      # \	        V4      # r§   )r&  r=   r   r   rr   rì   r…   )r0   r#  s   & r"   r  r  »  s?   € Ü˜|Ó,€FÜ'1°&¼"¿(¹(×'CÒ'CŒ3ˆv�z‰z‹|× Ñ Ó"Ó#ÐTÌÈVËÐTr%   c          	      óŠ   € V ^8„  d   QhR\         \        ,          R\        R\        \        \         \        ,          3,          /# )r   r0   Ú
batch_sizer1   )r   r   rr   r
   )r    s   "r"   r#   r#   À  s5   € ÷ 1ñ 1Ü”s•)ð1Ü),ð1ä
Œ3””S•	ˆ>Õñ1r%   c                 ó.  € \        V 4      p\        V\        P                  4      '       dQ   \	        VP                  4       P                  4       4      VP                  4        Uu. uF  p\	        V4      NK  	  up3# \	        V4      pWD.V,          3# u upi r§   )r&  r=   r   r   rr   rì   r…   r   )r0   r*  r#  rˆ   Ú
max_offsets   &&   r"   Ú_mtp_cache_positionsr-  À  sv   € ô ˜|Ó,€FÜ�&œ"Ÿ(™(×#Ò#Ü�6—:‘:“<×$Ñ$Ó&Ó'¸&¿-¹-¼/Ó)J¹/°Q¬#¨a®&¹/Ñ)JÐJÐJÜ�V“€JØ�| jÕ0Ð0Ð0ùò *Ks   Á$Bc                ó0   € V ^8„  d   QhR\         R\         /# )r   r  r1   )r   )r    s   "r"   r#   r#   Ê  s   € ÷ Eñ E¤cð E¬cñ Er%   c                 óŽ  € \        V \        4      '       d   \        V ^,
          ^ 4      # \        V \        P                  4      '       d<   \        P
                  ! V P                  \        P                  4      ^,
          ^ 4      # \        P
                  ! \        P                  ! V \        P                  R7      ^,
          ^ 4      # )r´   r  )r=   rr   rì   r   r   ÚmaximumÚastypeÚint32)r  s   &r"   r  r  Ê  s|   € Ü�,¤×$Ò$Ü�< !Õ# QÓ'Ð'Ü�,¤§¡×)Ò)Ü�zŠz˜,×-Ñ-¬b¯h©hÓ7¸!Õ;¸QÓ?Ð?Ü�:Š:”b—h’h˜|´2·8±8Ô<¸qÕ@À!ÓDÐDr%   c          
      óà   € V ^8„  d   QhR\         P                  R\        R\        \        \
        P                  .\
        P                  3,          ,          R\        \        \        3,          /# )r   r°   r²   rS   r1   )	r2   r3   r[   r	   r   r   r   r   Ústr)r    s   "r"   r#   r#   Ò  sU   € ÷ ñ Ü—‘ðäðô ”h¤§¡˜z¬2¯8©8Ð3Õ4Õ5ðô 
Œ#Œtˆ)…_ñ	r%   c                 ón   € T;'       g    \        V4      pV'       d   \        V R R4      '       d   RR/# / # )Úsupports_greedy_draft_argmaxFÚgreedyT)rš   r9   )r°   r²   rS   Úgreedy_drafts   &&& r"   r  r  Ò  s9   € ð
 #×RÐRÔ&IÈ'Ó&R€Lßœ Ð-KÈU×SÒSØ˜$ÐÐØ€Ir%   c                ó,  € V ^8„  d   QhR\         \        ,          R\        P                  R\        R\        \        P                  .\        P                  3,          R\        P
                  R\         \        ,          R\        R\        P                  /# )	r   Úbonus_tokensr   râ   rS   rö   r{   r²   r1   )r   rr   r   r   r   rú   r[   )r    s   "r"   r#   r#   Ý  sŒ   € ÷ M2ñ M2ä”s•)ðM2ô �H‰HðM2ô ð	M2ô
 ”r—x‘x�j¤"§(¡(Ð*Õ+ðM2ô —‘ðM2ô ”C�yðM2ô ðM2ô ‡X�XñM2r%   c                óB  € VP                   ^ ,          ^8:  d8   V P                  ! \        P                  ! WR7      VRVVV3/ \	        WV4      B # V Uu. uF  p\        V4      NK  	  p	p\        V RR4      p
\        \        V	4      4      ^8X  g   V
f8   V P                  ! \        P                  ! WR7      VRVVV3/ \	        WV4      B # . p\        V RR4      p\        \        W4      4       F©  w  pw  rèVe   WÀn        V
P                  4        UUUu/ uF   w  pw  ppVVWÝ^,            VWÝ^,            3bK"  	  ppppV P                  VV\        V4      VRR7       VP                  V P                  ! VW-V^,            RVVV3/ \	        WV4      B 4       K«  	  Ve   V^,           V n        V P                  V
\!        V	4      \        \        P                  ! V	4      4      \        P                  ! V	4      RR7       \        P"                  ! V^ R7      # u upi u upppi )a   Draft an active MTP batch, falling back to rowwise for mixed positions.

``positions`` stores each active row's valid target-KV length. The drafter's
RoPE position is derived from that length and rows with mixed lengths are
drafted independently to preserve singleton position semantics.
r  NÚ
_shared_kvÚ_draft_round©r  r¡   r  Úleft_paddingr  )r}   r  r   r   r  rr   r9   r:   Úsetr›   r;   r=  rÂ   r  r  r†   rì   r  )r°   r:  r   râ   rS   rö   r{   r²   r¡   Úpositions_listÚ	shared_kvÚrowwise_tokensÚdraft_roundÚrow_idxÚbonus_tokenr@   rC   rD   Úper_row_shared_kvs   &&&&&&&&           r"   Ú_mtp_draft_block_activerH  Ý  sA  € ð  ‡|�|�A…˜!ÔØ×&Ò&Ü�HŠH�\Ô5ØØØØØñ
ô   ¸gÓFñ
ð 	
ñ 5>Ó>±I¨”c˜(–m±I€NÐ>Ü˜ \°4Ó8€IÜ
Œ3ˆ~ÓÓ 1Ô$¨	Ò(9Ø×&Ò&Ü�HŠH�\Ô5ØØØØØñ
ô   ¸gÓFñ
ð 	
ð €NÜ˜+ ~°tÓ<€KÜ,5´c¸,Ó6RÖ,SÑ(ˆÑ(�+ØÒ"Ø'2Ô$ð /8¯o©oÔ.?õ
á.?Ñ*�
™N˜T 6ð ˜˜g°!­Ð4°f¸WÐQRÅ{Ð6SÐTÒTÙ.?ð 	ò 
ð 	×!Ñ!ØØÜ(¨Ó2Ø!Øð 	"ô 	
ð 	×ÑØ×#Ò#ØØ ¨1¥Ð-ØØØØñô $ KÀ'ÓJñö
	
ñ -Tð4 ÒØ#.°¥?ˆÔ Ø×ÑØÜ�nÓ%Ü$¤R§X¢X¨nÓ%=Ó>Ü—X’X˜nÓ-Øð ô ô �>Š>˜.¨qÔ1Ð1ùòe ?ùô$
s   ÁHÄ&H
Ú
stop_checkÚeos_token_idsrz   c          "      ó�  € V ^8„  d   QhR\         P                  R\         P                  R\        \        ,          R\        P
                  R\        R\        P
                  R\        R\        \        P
                  .\        P
                  3,          R	\        \        ,          R
\        P                  R\        \        \        \        .\        3,          ,          R\        \        ,          R\        R\        \        \        ,          ,          R\        \        \        \        \        ,          ,          R3,          RR3,          /# )r   r5   r°   r0   r   r   rø   rù   rS   rà   rö   rI  rJ  r²   rz   r1   N)r2   r3   r   r   r   r   r   rr   r   r	   rú   r[   r@  r   r
   )r    s   "r"   r#   r#   -  s  € ÷ xñ xÜ�9‰9ðxä—‘ðxô ”s•)ðxô �H‰Hð	xô
 ðxô —‘ðxô ðxô ”r—x‘x�j¤"§(¡(Ð*Õ+ðxô œs•mðxô —‘ðxô œ¤3¬ *¬dÐ"2Õ3Õ4ðxô œC•=ðxô ðxô ”dœ3•iÕ ðxô  Œu”Tœ(¤3�-Õ(¨$Ð.Õ/°°tÐ;Õ<ñ!xr%   c       	      #  ó  aBaCaDaE"  € \        V R4      '       d   V P                  MT p\        VR4      '       g"   \        \        V4      P                   R24      hVP
                  ^ ,          pVf   \        \        V4      4      M
\        V4      p\        W4      p\        \        VP                  RV4      4      p\        VRR4      '       d   VP                  V ^ .V,          R7       MVP                  V 4       \        TV'       * ;'       d    \        V4      '       * R	7      pVP
                  ^,          ^8”  d   VR
R!R1R
3,          p\        Wã4      p\!        W/4      w  ppVP#                  VV\%        \&        P(                  ! V4      4      \&        P(                  ! V4      \+        V4      R7       VP-                  4       p^.V,          pR.V,          oD\        \        V4      4      oB\/        SB4      ^ 8”  E
d2   \        \/        SB4      4       Uu. uF+  p\1        ^VVSBV,          ,          ,
          ^,           4      NK-  	  pp\3        VVV\5        V4      4      oCSC^8:  d   R# \/        SB4      p\        V4       Uu. uF  pVSBV,          ,          NK  	  pp\        V4       Uu. uF  pVSBV,          ,          NK  	  pp\&        P(                  ! VV	R7      pVP7                  \8        VVVSCVV	VVR7	      p\&        P:                  ! \<        4      ;_uu_ 4        \&        P>                  ! VR",          V.^R7      p\A        VVVVVR7      pVPB                  p RRR4       \        V4       Uu. uF  pVVSBV,          ,          ,
          NK  	  p!pXPD                  e–   VPG                  VPD                  X 4       \I        VVPD                  V!4      w  p"p#VPK                  4        V^8”  dH   \        VRR4      '       d5   \/        \M        V"4      4      ^8”  d   \O        VVPD                  V"V!4      w  p"p#M¼VPG                  X 4       \Q        VVVVR7      '       d   \S        VV VVV!4      w  p"p#Mc\U        TT TTT!\        V4       Uu. uF  pVSBV,          ,          NK  	  up\        V4       Uu. uF  pVSBV,          ,          NK  	  upR7      w  p"p#VPW                  \        V4      '       * R7       \Y        V\[        V"4      \/        V"4      ,          SC^,
          4       \1        V"4      oE\        VRR4      p$\]        V$4      '       d$   VP^                  ! V$V VV"V#VV	3/ \a        WV4      B  SESC^,
          8  gA   \b        ;QJ d    VE3R lV" 4       F  '       g   K   RM	  RM! VE3R lV" 4       4      '       dA   \&        Pd                  ! V4      p%\&        P(                  ! V"4      p&V V%V&R
3,          R#,          pMV R
R!R1R
3,          p\        Wã4      pV#'       d   \1        R V# 4       4      M^ p'\        V'4       FÅ  p(R.V,          p)\        V4       FŸ  pSBV,          p*V(\/        V#V,          4      8  g   K%  SDV*,          '       d   K6  V#V,          V(,          p+V+V)V*&   VV*;;,          ^,          uu&   VV*,          V8¼  d   RSDV*&   Ve   V+V9   d   RSDV*&   V
f   K‰  V
! V*V+4      '       g   Kš  RSDV*&   K¡  	  V)RV(RV'/3x € KÇ  	  \        V4       FO  pSBV,          p*V#V,          '       d   V#V,          R!,          VV*&   VV*,          V"V,          ,           ^,           VV*&   KQ  	  \b        ;QJ d    VC3R lV" 4       F  '       g   K   RM	  RM! VC3R lV" 4       4      '       dJ   \&        P:                  ! \<        4      ;_uu_ 4        VPg                  VVPh                  V"SC4       RRR4       SCSE^,           ,
          p,/ p-VPj                  Pm                  4        EFË  w  p.p/V/w  p0p1V0P
                  R$,          V,,
          p2V2V0P
                  R$,          8¼  d   T0T1p4p3M6V2^ 8:  d   V0R%,          p3V1R%,          p4MV0RRV21R
3,          p3V1RRV21R
3,          p4\b        ;QJ d    VE3R lV" 4       F  '       g   K   RM	  RM! VE3R lV" 4       4      '       Ed   \&        P(                  ! V34      p5\&        P(                  ! V44      p6\&        P(                  ! V54      p5\&        P(                  ! V64      p6\&        Pd                  ! V3P
                  R$,          4      p7\&        P(                  ! V" U8u. uF  p8V2SE,
          V8,           NK  	  up8\&        Pn                  R7      p9V7R&,          V9R",          8  p:V:Pq                  V3Pr                  4      R',          p;V3V;,          p3V4V;,          p4V3V43V-V.&   EKÎ  	  \t        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      p<\t        ;QJ d)    VBVD3R l\        V4       4       F  '       d   K   RM	  RM! VBVD3R l\        V4       4       4      '       d   R# V<'       dõ   \        V4       Uu. uF  pSDSBV,          ,          '       d   K  VNK  	  p=p\/        V=4      V8  d³   \&        P(                  ! V=\&        Pn                  R7      p>V F  p?V?Pw                  V>4       K  	  \        VRR4      p@\]        V@4      '       d	   X@! V>4       VV>,          pV- F$  p.V-V.,          w  p3p4V3V>,          V4V>,          3V-V.&   K&  	  V= Uu. uF  pSBV,          NK  	  upoB\        \/        SB4      4       Uu. uF  pVSBV,          ,          NK  	  ppV'       d   \1        V4      M^ pAVP#                  V-VA\%        \&        P(                  ! V4      4      \&        P(                  ! V4      \+        V4      R7       \[        V4      R ,          ^ 8X  g   E
K*  \&        Px                  ! 4        E
KB  R# u upi u upi u upi   + '       g   i     ELñ; iu upi u upi u upi   + '       g   i     EL�; iu up8i u upi u upi u upi 5i)(aÉ  Batched Gemma 4 MTP round loop (B >= 1).

Mirrors ``_dflash_rounds_batch``: per-row state tracked by original
index, continuous-batching filter on row finish. Differences vs DFlash
batched: drafter consumes ``shared_kv_states`` (per-layer-type K/V
snapshot) instead of multi-layer hidden capture, ``draft_block`` is
autoregressive, and the per-round ``shared_kv`` snapshot is normalized
back to the unbatched prefix-valid layout before each drafter rebind.
rü   rý   z/ does not implement rollback_speculative_cache.Nrâ   Ú supports_ragged_batch_acceptanceF)r?  rþ   rt   r>  r  )r²   r  r  rµ   )r±   r²   rS   )rz   r—   r  Úaccept_verified_tokens_batchc              3   ó,   <"  € T F	  qS8  x € K  	  R # 5ir§   r&   ©r¨   ÚaÚmax_as   & €r"   r©   Ú$_mtp_rounds_batch.<locals>.<genexpr>ò  s   øé € Ð B±M¨q U¦³Mùó   ƒTc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir§   )r:   )r¨   Únts   & r"   r©   rS  ü  s   é € Ð8© "”c˜"—g�g«ùs   ‚Ú	round_posÚ	round_lenc              3   ó:   <"  € T F  qS^,
          8  x € K  	  R# 5irÑ   r&   )r¨   rQ  r  s   & €r"   r©   rS    s   øé € Ð1¡=˜a�2˜•6Žz£=ùs   ƒ.c              3   ó,   <"  € T F	  qS8  x € K  	  R # 5ir§   r&   rP  s   & €r"   r©   rS  -  s   øé € Ð4¡m �u–9£mùrT  c              3   ó:   "  € T F  p\        VR 4      x € K  	  R# 5i)ÚfilterN)r<   )r¨   Úcs   & r"   r©   rS  G  s   é € ÐJ¹\¸œw q¨(×3Ð3»\ùs   ‚c              3   óD   <"  € T F  pSSV,          ,          x € K  	  R # 5ir§   r&   )r¨   ÚjÚ
active_idxÚfinisheds   & €€r"   r©   rS  H  s   øé € Ð@±¨1ˆx˜
 1�×&Ò&³ùs   ƒ Úfilter_batchr	  ra   )rt   N)rt   Nrt   rÀ   rÁ   r“   )rt   Nrt   N)=r<   rü   r
  r  r'   r}   r   r€   r   rr   r9   rð   r  r   rš   rk   r-  r  r  r   r   r   r   r:   rì   rÞ   rÔ   rn   rH  r�   r   r  rf   r   r   Útarget_evalr   Úsync_draft_to_targetr@  r   r¶   r¬   r£   r  r   rÕ   rL   r  r  ÚanyÚarangerý   r   r   rÂ   r2  r1  r  r™   r\  r  )Fr5   r°   r0   r   r   rø   rù   rS   rà   rö   rI  rJ  r²   rz   r/   rœ   rÖ   rÌ   r  Ú	L_prefillr{   r  r  r_  Ú	remainingr±   Úb_activeÚpositions_activeÚb_arrrn   rG   r¸   Úhidden_fullr–   Úaccepted_listÚnew_tokens_listr  rE  Úcol_idxÚmax_newrŒ   Ú
tokens_outÚorigr  Úrejected_globalrÃ   rÄ   rÅ   rÆ   rÇ   rÈ   ÚK_nextÚV_nextÚK_arrÚV_arrÚ	mask_rowsrQ  Ú	keep_lensÚ	keep_maskÚkeep_fÚcache_filterableÚ
keep_slotsÚkeep_mxr]  Úfilter_drafterÚnew_kv_offsetr`  r  ra  rR  sF   &&&&&$$$$$$$$$                                                    @@@@r"   Ú_mtp_rounds_batchr�  -  së
  ûé € ô4 ")¨Ð0@×!AÒ!Aˆ×	Ò	Àu€BÜ�2Ð3×4Ò4ÜÜ�B‹x× Ñ Ð!Ð!PÐQó
ð 	
ð 	×Ñ˜!Õ€AØ '¢Œd”5˜“8Œn´T¸'³]€GÜ% kÓD€KÜ ¤¨×);Ñ);¸\È;Ó!WÓXÐÜˆ{Ð>À×FÒFØ×Ñ˜%¨q¨c°A­gÐÕ6à×Ñ˜%Ô Ü(ØØ#Ô#÷ =ð =Ü3°GÓ<Ô<ô€Kð ‡|�|�A…˜ÔØ˜˜2™3 ˜	Õ"ˆÜ˜rÓ*€Fô
 0°Ó@Ñ€IˆyØ×ÑØØÜ$¤R§X¢X¨iÓ%8Ó9Ü—X’X˜iÓ(Ü.¨|Ó<ð ô ð 	×ÑÓ€AØˆc�A�g€GØˆw˜�{€HÜ”e˜A“h“€Jä
ˆj‹/˜AÕ
ô œ3˜z›?Ô+ó
á+�ô ��: ¨
°1­Õ 6Õ6¸Õ:Ö;Ù+ð 	ð 
ô "ØØØ"Ü�	‹Nó	
ˆð �Œ7Ùä�z“?ˆÜ.3°H¬oÓ>©o¨�A�j •m×$Ð$©oˆÐ>Ü>CÀH¼oÓN¹o¸˜I j°¥m×4Ð4¹oÐÐNÜ—’˜¨Ô5ˆð #×/Ñ/Ü#ØØØØØØØØ+ð 0ó 

ˆô �YŠYÔ(×)Õ)ÜŸ>š>¨5°­>¸<Ð*HÈqÔQˆLÜ'ØØØØØ%4ôˆFð !Ÿ-™-ˆK÷ *ô AFÀhÄÓPÁ¸1�: ¨
°1­Õ 6×6Ð6ÁˆÐPØ×ÑÒ+Ø×#Ñ# F×$8Ñ$8¸+ÔFÜ-DØ˜f×2Ñ2°Gó.Ñ*ˆM˜?ð ×,Ñ,Ô.à˜1”Ü˜KÐ)LÈe×TÒTÜœ˜MÓ*Ó+¨aÔ/ô ?Ø$Ø×,Ñ,Ø%Øó	ñ /�˜øð ×#Ñ# KÔ0Ü-ØØ!Ø /Ø÷	ó ô =ØØ#Ø$ØØóñ /�™ô <ØØ#Ø$ØØÜAFÀxÄÓ QÁ¸A ¨°A­×!7Ð!7ÁÑ Qä<AÀ(¼Oó(Ù<K°q˜G J¨q¥M×2Ð2¹Oñ(ô
ñ /�˜ð ×&Ñ&ÜBÀ7ÓKÔKð 'ô ô 	"ØÜ�Ó¤ ]Ó!3Õ3Ø��Fô	
ô �MÓ"ˆä! +Ð/MÈtÓTˆÜ�O×$Ò$Ø×"Ò"ØØØØØØØñ	ô $ KÀ'ÓJò	ð �2˜•6Œ>ŸS›SÔ B±MÓ BŸSŸSšSÔ B±MÓ B×BÒBÜ—i’i Ó)ˆGÜ—h’h˜}Ó-ˆGà  ¨'°1Ð!4Õ5°jÕA‰Fà   B¡C¨ Õ+ˆFÜ" 2Ó.ˆ÷ =L”#Ñ8©Ó8Ô8ÐQRˆÜ˜–>ˆCØ/3¨f°q­jˆJÜ˜8–_�Ø! !•}�Øœ˜_¨QÕ/Ó0Ö0¸À$¿¾Ø)¨!Õ,¨SÕ1�CØ'*�J˜tÑ$Ø˜D—M QÕ&“MØ˜t•}¨
Ô2Ø)-˜ ™Ø$Ò0°S¸MÔ5IØ)-˜ ™Ø!Ô-±*¸TÀ3×2GÔ2GØ)-˜ ›ñ %ð ˜{¨C°¸gÐFÐFÔFñ "ô" �x–ˆAØ˜a•=ˆDØ˜q×!Ô!Ø)¨!Õ,¨RÕ0��$‘Ø'¨�o°¸aÕ0@Õ@À1ÕDˆI�d‹Oñ	 !÷ ‹3Ô1¡=Ó1�3�3Š3Ô1¡=Ó1×1Ò1Ü—’Ô,×-Õ-Ø×-Ñ-Ø  &×"3Ñ"3°]ÀBô÷ .ð  ¨¥	Õ*ˆØˆØ×,Ñ,×2Ñ2×4‰EˆAˆrØ‰DˆAˆqØ—G‘G˜B•K /Õ1ˆEØ˜Ÿ™ �Ô#Ø!" A˜�˜Ø˜!”Ø˜:��Ø˜:�‘à˜3   ¨˜>Õ*�Ø˜3   ¨˜>Õ*�ç‹sÔ4¡mÓ4�s�sŠsÔ4¡mÓ4×4Ó4ô
 Ÿš Ó(�ÜŸš Ó(�ÜŸš ›�ÜŸš ›�ÜŸIšI f§l¡l°2Õ&6Ó7�	ô ŸHšHÙ0=Ó>±¨1�U˜U•] Q×&Ð&±Ñ>ÄbÇhÁhô�	ð & gÕ.°¸7Õ1CÑC�	Ø"×)Ñ)¨&¯,©,Ó7Ð8HÕI�Ø &��Ø &��Ø!'¨Ð 0ˆN˜1Ôñ? 5÷L ›3ÑJ¹\ÓJŸ3Ÿ3š3ÑJ¹\ÓJÓJÐß‹3Õ@´°h´Ó@�3�3Š3Õ@´°h´Ó@×@Ò@ÙßÜ%*¨8¤_ÓT¡_ ¸HÀZÐPQÅ]×<SÑ<SŸ!˜!¡_ˆJÐTÜ�:‹ Ô)ÜŸ(š( :´R·X±XÔ>�Û%�AØ—H‘H˜WÖ%ñ &ä!(¨°nÀdÓ!K�Ü˜N×+Ò+Ù" 7Ô+Ø ��Û'�AØ%3°AÕ%6‘N�F˜FØ)/°­¸&À½/Ð(J�N 1Ó%ñ (ñ 6@Ó@±Z°˜j¨Ÿm˜m±ZÑ@�
ô ?DÄCÈ
ÃOÔ>TÓUÑ>T¸˜I j°¥m×4Ð4Ñ>TÐÐUß1AœÐ,Ô-ÀqˆØ×!Ñ!ØØ#Ü(¬¯ªÐ2BÓ)CÓDÜŸšÐ"2Ó3Ü2°<Ó@ð 	"ô 	
ô ˆw‹<˜#Õ ×"Ü�NŠN×ñe ùò
ùò ?ùÚN÷$ *×)Ð)üò QùòZ !Rùò(÷P .×-Ð-üòF ?ùò" Uùò Aùò Vùs>  †Dr
ÄDr
È1p0É:r
É>p5Êr
Ê&p:Ê?Ar
Ì>p?Ír
Í, qÎC5r
ÒqÒr
Ò)qÓB<r
Õ?r
Ör
Ö4B8r
Ù1r
ÚAr
Ûr
Û&A?r
Ý&r
Ý=r
Þ"r
Þ=q"ßB7r
âr
â+r
ã
Br
åq6
å6A4r
ç+r
ç?r
èr
é 'r
é(	r
é2r
é?q;êq;ê"B/r
ír í#r
í<rîA;r
ð)r
ð?q	ñ
r
ñ"q3	ñ-r
)r   N)NNr§   )F)4Údataclassesr   Útypingr   r   r   r   r   r	   r
   Úmlx.coreÚcorer   Úmlx.nnr2   Úmodelsr   Úcommonr   r   r   r   r   r   r   r   r   rE   rQ   rX   rf   rk   r�   r”   r£   r¬   rš   r¶   r¼   rÉ   rÚ   rÞ   rô   r2  r  r&  r  r-  r  r  rH  r�  r&   r%   r"   Ú<module>r‰     sP  ðÝ !ß H× HÑ Hå Ý å ÷	÷ 	ó 	ð ÷&ð &ó ð&õõ:2Lõjð4&ð "&÷&õR<÷
- õ`"÷89 õx,Rõ^=õ÷,"õJõ"õBõ 0ð6að )-ðað '+ðað ŸH™Hðað "÷aõH	õUõ
1õE÷÷M2ð`xð '+ðxð ŸH™Hðxð 8<ðxð $(ðxð "ðxð $(÷xñ xr%   