+
    –°³j?  ã                   óŽ   € ^ RI Ht ^ RIt^ RIHt ^ t^t^t ! R R]P                  P                  4      t
RRR]R3R ltR	R ltR# )
é    )ÚOptionalN)Ú_NnapiSerializerc                   ó¤   a a€ ] tR t^t oRtV3R lV 3R llt]P                  P                  V3R lR l4       t	V3R lR lt
V3R ltR	tVtV ;t# )
ÚNnapiModulez¿Torch Module that wraps an NNAPI Compilation.

This module handles preparing the weights, initializing the
NNAPI TorchBind object, and adjusting the memory formats
of all inputs and outputs.
c                óÄ   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  RS[S[ P                  ,          RS[S[,          RS[S[,          RS[RS[/# )é   Úshape_compute_moduleÚ	ser_modelÚweightsÚinp_mem_fmtsÚout_mem_fmtsÚcompilation_preferenceÚrelax_f32_to_f16)ÚtorchÚnnÚModuleÚTensorÚlistÚintÚbool)ÚformatÚ__classdict__s   "€Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/backends/_nnapi/prepare.pyÚ__annotate__ÚNnapiModule.__annotate__   sn   ø€ ÷ 1ñ 1á#Ÿh™hŸo™oð1ñ —<‘<ð1ñ ‘e—l‘lÕ#ð	1ñ
 ™3•ið1ñ ™3•ið1ñ !$ð1ñ ñ1ó    c                ó”   <€ \         SV `  4        Wn        W n        W0n        W@n        WPn        . V n        R V n        W`n	        Wpn
        R # ©N)ÚsuperÚ__init__r	   r
   r   r   r   Úout_templatesÚcompr   r   )	Úselfr	   r
   r   r   r   r   r   Ú	__class__s	   &&&&&&&&€r   r    ÚNnapiModule.__init__   sG   ø€ ô 	‰ÑÔØ$8Ô!Ø"ŒØŒØ(ÔØ(ÔØˆÔØˆŒ	Ø&<Ô#Ø 0Ör   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# )r   Úargs©r   r   r   )r   r   s   "€r   r   r   2   s   ø€ ÷ ñ ™™eŸl™lÕ+ñ r   c                óÈ  € V P                   e   \        R4      hV P                  P                  V P                  V4      V n        V P                   Uu. uF  q"P                  4       NK  	  upV n        \        P                  P                  P                  4       pVP                  V P                  V P                  V P                  V P                  4       W0n         R # u upi )Nz'comp must be None before initialization)r"   ÚAssertionErrorr	   Úpreparer
   r!   r   Ú
contiguousr   ÚclassesÚ_nnapiÚCompilationÚinit2r   r   )r#   r'   Úwr"   s   &&  r   ÚinitÚNnapiModule.init1   s¥   € à�9‰9Ò Ü Ð!JÓKÐKØ!×6Ñ6×>Ñ>¸t¿~¹~ÈtÓTˆÔØ04·²Ó=±¨1Ÿ™ž±Ñ=ˆŒÜ�}‰}×#Ñ#×/Ñ/Ó1ˆØ�
‰
Ø�N‰NØ�L‰LØ×'Ñ'Ø×!Ñ!ô		
ð Ž	ùò >s   ÁCc                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# )r   r'   Úreturnr(   )r   r   s   "€r   r   r   A   s-   ø€ ÷ &ñ &™D¡§¡Õ.ð &±4¹¿¹Õ3Eñ &r   c           	     óp  € V P                   f   V P                  V4       V P                   pVf   \        R4      hV P                   Uu. uF  p\        P
                  ! V4      NK  	  pp\        V4      \        V P                  4      8w  d.   \        R\        V4       R\        V P                  4       24      h. p\        \        V4      4       F�  pV P                  V,          pV^ 8X  d(   VP                  W,          P                  4       4       KD  V^8X  d:   VP                  W,          P                  ^ ^^^4      P                  4       4       K„  \        R4      h	  VP                  WT4       \        V4      \        V P                  4      8w  d.   \        R\        V4       R\        V P                  4       24      h\        \        V P                  4      4       FM  pV P                  V,          pVR9   d   K  V^8X  d   WF,          P                  ^ ^^^4      WF&   KD  \        R4      h	  V# u upi )Nzcomp must not be Nonezargs length z != inp_mem_fmts length zInvalid mem_fmtzouts length z != out_mem_fmts length )r   r   )r"   r2   r*   r!   r   Ú
empty_likeÚlenr   ÚrangeÚappendr,   ÚpermuteÚ
ValueErrorÚrunr   )r#   r'   r"   ÚoutÚoutsÚ
fixed_argsÚidxÚfmts   &&      r   ÚforwardÚNnapiModule.forwardA   sì  € Ø�9‰9ÒØ�I‰I�dŒOØ�y‰yˆØŠ<Ü Ð!8Ó9Ð9Ø15×1CÒ1CÓDÑ1C¨#”× Ò  Ö%Ñ1CˆÐDäˆt‹9œ˜D×-Ñ-Ó.Ô.Ü Øœs 4›y˜kÐ)AÄ#Àd×FWÑFWÓBXÐAYÐZóð ð ˆ
Üœ˜T›Ö#ˆCØ×#Ñ# CÕ(ˆCð �aŒxØ×!Ñ! $¥)×"6Ñ"6Ó"8Ö9Ø˜”Ø×!Ñ! $¥)×"3Ñ"3°A°q¸!¸QÓ"?×"JÑ"JÓ"LÖMä Ð!2Ó3Ð3ñ $ð 	�‰�Ô"Üˆt‹9œ˜D×-Ñ-Ó.Ô.Ü Øœs 4›y˜kÐ)AÄ#Àd×FWÑFWÓBXÐAYÐZóð ô œ˜T×/Ñ/Ó0Ö1ˆCØ×#Ñ# CÕ(ˆCð �fŒ}ÙØ˜”Ø �I×-Ñ-¨a°°A°qÓ9�“	ä Ð!2Ó3Ð3ñ 2ð ˆùòA Es   Á	H3c                óÒ   <€ V ^8„  d   Qh/ S[ S[P                  P                  P                  ,          ;R&   S[S[P                  ,          ;R&   S[S[P                  ,          ;R&   # )r   r"   r   r!   )r   r   r-   r.   r/   r   r   )r   r   s   "€r   r   r      sS   ø‡ ‚ ñ ‘5—=‘=×'Ñ'×3Ñ3Õ
4Ñ4ñ ñ ‘%—,‘,ÕÑñ ñ ™Ÿ™Õ%Ñ%ò r   )	r"   r   r   r   r!   r   r
   r	   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    r   ÚjitÚexportr2   rC   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r$   r   s   @@r   r   r      sD   ù‡ € ñ÷1ó 1ð* ‡Y�Y×Ñ÷ó ð÷&ð &÷e … r   r   Fc           	      óÄ  € \        WW#V4      w  ppp	p
pp\        VVV	V
VVV4      p ! R  R\        P                  P                  4      pV! V4      p\        P
                  P                  V4      pRP                  R \        \        V4      4       4       4      pV^ 8  d   RpM!RP                  R \        V4       4       4      pVP                  RV RV R	V R
24       V# )c                   ó6   a a€ ] tR t^ˆt oRtV 3R ltRtVtV ;t# )Ú5convert_model_to_nnapi.<locals>.NnapiInterfaceWrappera  NNAPI list-ifying and de-list-ifying wrapper.

NNAPI always expects a list of inputs and provides a list of outputs.
This module allows us to accept inputs as separate arguments.
It returns results as either a single tensor or tuple,
matching the original module.
c                ó0   <€ \         SV `  4        Wn        R # r   )r   r    Úmod)r#   rV   r$   s   &&€r   r    Ú>convert_model_to_nnapi.<locals>.NnapiInterfaceWrapper.__init__‘   s   ø€ Ü‰GÑÔØŽHr   )rV   )	rF   rG   rH   rI   rJ   r    rN   rO   rP   rQ   s   @@r   ÚNnapiInterfaceWrapperrT   ˆ   s   ù‡ € ñ	÷	õ 	r   rX   z, c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5i)Úarg_N© ©Ú.0rA   s   & r   Ú	<genexpr>Ú)convert_model_to_nnapi.<locals>.<genexpr>˜   s   é € ÐDÑ1C¨#˜4 ˜u�Ó1Cùs   ‚z
retvals[0]Ú c              3   ó.   "  € T F  pR V R2x € K  	  R# 5i)zretvals[z], Nr[   r\   s   & r   r^   r_   œ   s   é € ÐNÑ:M°3˜X c U¨#Õ.Ó:Mùs   ‚zdef forward(self, z):
    retvals = self.mod([z])
    return Ú
)Úprocess_for_nnapir   r   r   r   rK   ÚscriptÚjoinr9   r8   Údefine)ÚmodelÚinputsÚ
serializerÚreturn_shapesÚuse_int16_for_qint16r   r   r	   Úser_model_tensorÚused_weightsr   r   Úretval_countÚnnapi_modelrX   Úwrapper_model_pyÚwrapper_modelÚarg_listÚret_exprs   &&&&&&&            r   Úconvert_model_to_nnapirt   j   sý   € ô  	Ø�zÐ2Fó	ñØØØØØØô
 ØØØØØØØó€Kô¤§¡§¡ô ñ -¨[Ó9ÐÜ—I‘I×$Ñ$Ð%5Ó6€Mà�y‰yÑD´´s¸6³{Ô1CÓDÓD€HØ�aÔØ‰à—7‘7ÑN¼%ÀÔ:MÓNÓNˆØ×ÑØ
˜X˜Jð '#Ø#+ *ð -Ø�Z˜rð	#ôð
 Ðr   c                 óV  € \         P                  P                  V 4      p \        V\         P                  4      '       d   V.pT;'       g    \        R VR7      pVP                  WV4      w  ppppp	p
\         P                  ! V\         P                  R7      p ! R R\         P                  P                  4      p\         P                  P                  V! 4       4      pR.V	 Uu. uF	  pRV R2NK  	  up,           pVP                  RP                  V4      4       VVVVVV
3# u upi )	N)Úconfigrk   )Údtypec                   ó   € ] tR t^¼tRtRtR# )Ú-process_for_nnapi.<locals>.ShapeComputeModulezÃCode-gen-ed module for tensor shape computation.

module.prepare will mutate ser_model according to the computed operand
shapes, based on the shapes of args.  Returns a list of output templates.
r[   N)rF   rG   rH   rI   rJ   rN   r[   r   r   ÚShapeComputeModulery   ¼   s   † õ	r   rz   z\def prepare(self, ser_model: torch.Tensor, args: List[torch.Tensor]) -> List[torch.Tensor]:
z    rb   r`   )r   rK   ÚfreezeÚ
isinstancer   r   Úserialize_modelÚtensorÚint32r   r   rd   rf   re   )rg   rh   ri   rj   rk   r
   rm   r   r   Úshape_compute_linesrn   rl   rz   r	   ÚlineÚreal_shape_compute_liness   &&&&&           r   rc   rc   ¥   s#  € ô �I‰I×Ñ˜UÓ#€Eä�&œ%Ÿ,™,×'Ò'Ø�ˆà÷ ð Ô/ØÐ*>ô €Jð 	×"Ñ" 5°-Ó@ñØØØØØØä—|’| I´U·[±[ÔAÐôœUŸX™XŸ_™_ô ô !Ÿ9™9×+Ñ+Ñ,>Ó,@ÓAÐàgð á%8Ó9Ñ%8˜Tˆ4�ˆv�R‹Ñ%8Ñ9õ :Ðð ×Ñ §¡Ð(@Ó AÔBð 	ØØØØØðð ùò 	:s   Ã&D&)NNF)Útypingr   r   Ú torch.backends._nnapi.serializerr   Ú ANEURALNETWORKS_PREFER_LOW_POWERÚ)ANEURALNETWORKS_PREFER_FAST_SINGLE_ANSWERÚ&ANEURALNETWORKS_PREFER_SUSTAINED_SPEEDr   r   r   rt   rc   r[   r   r   Ú<module>rˆ      sW   ðõ ã Ý =ð $%Ð  Ø,-Ð )Ø)*Ð &ôX�%—(‘(—/‘/ô Xð| ØØØAØô8öv+r   