ó
    ˆŽ¡j/â  ã                   óB  • S r SSKrSSKJr  SSKrSSKJr  SSKJr  SSK	J
r
  SSKJrJrJr  SS	KJr  SS
KJrJr  SSKJr  SSKJrJrJrJrJr  SSKJrJr  SSKJ r   SSK!J"r"J#r#J$r$J%r%J&r&  SSK'J(r(J)r)J*r*  \&RV                  " \,5      r- " S S\R\                  5      r/ " S S\R\                  5      r0 " S S\R\                  5      r1 " S S\R\                  5      r2 " S S\5      r3 " S S\R\                  5      r4\% " S S\5      5       r5\% " S  S!\55      5       r6 " S" S#\R\                  5      r7 " S$ S%\R\                  5      r8   S@S&\R\                  S'\Rr                  S(\Rr                  S)\Rr                  S*\Rr                  S-  S+\:S-  S,\:S-\Rr                  S-  S.\ \$   4S/ jjr; " S0 S1\R\                  5      r< " S2 S3\R\                  5      r= " S4 S5\R\                  5      r> " S6 S7\5      r?\%" S8S99 " S: S;\55      5       r@\%" S<S99 " S= S>\5\5      5       rA/ S?QrBg)AzPix2Struct modeling fileé    N)ÚCallable)Únné   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚ!CausalLMOutputWithCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚDUMMY_INPUTSÚ
DUMMY_MASKÚTransformersKwargsÚauto_docstringÚloggingé   )ÚPix2StructConfigÚPix2StructTextConfigÚPix2StructVisionConfigc                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )ÚPix2StructLayerNormé5   c                 óŒ   >• [         TU ]  5         [        R                  " [        R
                  " U5      5      U l        X l        g)zS
Construct a layernorm module in the T5 style. No bias and no subtraction of mean.
N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizeÚepsÚ	__class__s      €ÚÀC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/models/pix2struct/modeling_pix2struct.pyr%   ÚPix2StructLayerNorm.__init__6   s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Õó    c                 óœ  • UR                  [        R                  5      R                  S5      R	                  SSS9nU[        R
                  " X R                  -   5      -  nU R                  R                  [        R                  [        R                  4;   a%  UR                  U R                  R                  5      nU R                  U-  $ )Né   éÿÿÿÿT)Úkeepdim)Útor'   Úfloat32ÚpowÚmeanÚrsqrtr*   r)   ÚdtypeÚfloat16Úbfloat16)r+   Úhidden_statesÚvariances      r/   ÚforwardÚPix2StructLayerNorm.forward>   s™   € ð !×#Ñ#¤E§M¡MÓ2×6Ñ6°qÓ9×>Ñ>¸rÈ4Ð>ÐPˆØ%¬¯ª°H×?TÑ?TÑ4TÓ(UÑUˆð �;‰;×Ñ¤§¡´·±Ð ?Ó?Ø)×,Ñ,¨T¯[©[×->Ñ->Ó?ˆMà�{‰{˜]Ñ*Ð*r1   )r*   r)   )g�íµ ÷Æ°>)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r%   r@   Ú__static_attributes__Ú__classcell__©r.   s   @r/   r!   r!   5   s   ø† ÷$÷+ð +r1   r!   c                   ór   ^ • \ rS rSrSrS\SS4U 4S jjrS\R                  S\R                  4S jr	S	r
U =r$ )
ÚPix2StructVisionEmbeddingséN   a  
Construct the embeddings from patch. In `Pix2Struct` the input is different from classic Vision-transformer models.
Here the input is a sequence of `seq_len` flattened patches that also combines padding patches (tokens). Each patch
is represented by a vector of `hidden_size` values.
ÚconfigÚreturnNc                 óŒ  >• [         TU ]  5         [        R                  " UR                  UR
                  5      U l        [        R                  " UR                  UR
                  5      U l	        [        R                  " UR                  UR
                  5      U l
        [        R                  " UR                  5      U l        g ©N)r$   r%   r   ÚLinearÚpatch_embed_hidden_sizer,   Úpatch_projectionÚ	EmbeddingÚseq_lenÚrow_embedderÚcolumn_embedderÚDropoutÚdropout_rateÚdropout©r+   rL   r.   s     €r/   r%   Ú#Pix2StructVisionEmbeddings.__init__U   s}   ø€ Ü‰ÑÔÜ "§	¢	¨&×*HÑ*HÈ&×J\ÑJ\Ó ]ˆÔäŸLšL¨¯©¸×9KÑ9KÓLˆÔÜ!Ÿ|š|¨F¯N©N¸F×<NÑ<NÓOˆÔä—z’z &×"5Ñ"5Ó6ˆ�r1   Úflattened_patchesc                 ó   • US S 2S S 2S4   R                  5       nUS S 2S S 2S4   R                  5       nUS S 2S S 2SS 24   nU R                  U5      nU R                  U5      nU R                  U5      nXE-   U-   nU R	                  U5      nU$ )Nr   r   r3   )ÚlongrR   rU   rV   rY   )r+   r\   Úrow_indicesÚcol_indicesÚ
embeddingsÚrow_embeddingsÚcol_embeddingss          r/   r@   Ú"Pix2StructVisionEmbeddings.forward^   s�   € ð (ªª1¨a¨Ñ0×5Ñ5Ó7ˆØ'ªª1¨a¨Ñ0×5Ñ5Ó7ˆà-ªa²°A±B¨hÑ7Ðà×*Ñ*Ð+<Ó=ˆ
Ø×*Ñ*¨;Ó7ˆØ×-Ñ-¨kÓ:ˆð  Ñ0°>ÑAˆ
à—\‘\ *Ó-ˆ
àÐr1   )rV   rY   rR   rU   )rB   rC   rD   rE   Ú__doc__r   r%   r'   ÚTensorr@   rF   rG   rH   s   @r/   rJ   rJ   N   s<   ø† ñð7Ð/ð 7°D÷ 7ð¨¯©ð ¸%¿,¹,÷ ò r1   rJ   c                   óB   ^ • \ rS rSrU 4S jr SS\\   4S jjrSrU =r	$ )ÚPix2StructVisionAttentionér   c                 ó”  >• [         TU ]  5         Xl        UR                  U l        UR                  U l        UR                  U l        UR                  U l	        U R                  U R
                  -  U l
        SU l        SU l        [        R                  " U R                  U R                  SS9U l        [        R                  " U R                  U R                  SS9U l        [        R                  " U R                  U R                  SS9U l        [        R                  " U R                  U R                  SS9U l        SU l        g )Nç      ð?F©Úbias)r$   r%   rL   r,   Úd_kvÚkey_value_proj_dimÚnum_attention_headsÚn_headsÚattention_dropoutrY   Ú	inner_dimÚscalingÚ	is_causalr   rP   ÚqueryÚkeyÚvalueÚoutputÚgradient_checkpointingrZ   s     €r/   r%   Ú"Pix2StructVisionAttention.__init__s   së   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ"(§+¡+ˆÔØ×1Ñ1ˆŒØ×/Ñ/ˆŒØŸ™¨×(?Ñ(?Ñ?ˆŒàˆŒØˆŒä—Y’Y˜t×/Ñ/°·±ÀeÑLˆŒ
Ü—9’9˜T×-Ñ-¨t¯~©~ÀEÑJˆŒÜ—Y’Y˜t×/Ñ/°·±ÀeÑLˆŒ
Ü—i’i §¡°×0@Ñ0@ÀuÑMˆŒà&+ˆÕ#r1   Úkwargsc                 óš  • UR                   SS u  pEXESU R                  4nU R                  U5      R                  U5      R	                  SS5      nU R                  U5      R                  U5      R	                  SS5      nU R                  U5      R                  U5      R	                  SS5      n	[        R                  " U R                  R                  [        5      n
U
" U UUU	U4U R                  (       d  SOU R                  U R                  S.UD6u  p¼UR                  XES5      R!                  5       nU R#                  U5      nX¼4$ )z
Self-attention block
Nr3   r4   r   ç        )rY   rt   )Úshapero   rv   ÚviewÚ	transposerw   rx   r   Úget_interfacerL   Ú_attn_implementationÚeager_attention_forwardÚtrainingrY   rt   ÚreshapeÚ
contiguousry   )r+   r>   Úattention_maskr|   Ú
batch_sizeÚ
seq_lengthÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfaceÚattn_outputÚattn_weightss                r/   r@   Ú!Pix2StructVisionAttention.forward†   s;  € ð "/×!4Ñ!4°R°aÐ!8Ñˆ
Ø"°°D×4KÑ4KÐLˆð —z‘z -Ó0×5Ñ5°lÓC×MÑMÈaÐQRÓSˆØ—X‘X˜mÓ,×1Ñ1°,Ó?×IÑIÈ!ÈQÓOˆ
Ø—z‘z -Ó0×5Ñ5°lÓC×MÑMÈaÐQRÓSˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð	%
ð  $Ÿ}Ÿ}‘C°$·,±,Ø—L‘Lñ	%
ð ñ	%
Ñ!ˆð "×)Ñ)¨*À"ÓE×PÑPÓRˆØ—k‘k +Ó.ˆàÐ(Ð(r1   )rL   rY   rz   r,   rs   ru   rw   ro   rq   ry   rv   rt   rx   rO   )
rB   rC   rD   rE   r%   r   r   r@   rF   rG   rH   s   @r/   rh   rh   r   s'   ø† õ,ð, ñ%)ð Ð+Ñ,÷	%)ó %)r1   rh   c                   ó6   ^ • \ rS rSrS\4U 4S jjrS rSrU =r$ )ÚPix2StructVisionMlpé¯   rL   c                 ó¶  >• [         TU ]  5         [        R                  " UR                  UR
                  SS9U l        [        R                  " UR                  UR
                  SS9U l        [        R                  " UR
                  UR                  SS9U l        [        R                  " UR                  5      U l        [        UR                     U l        g ©NFrl   ©r$   r%   r   rP   r,   Úd_ffÚwi_0Úwi_1ÚworW   rX   rY   r   Údense_act_fnÚactrZ   s     €r/   r%   ÚPix2StructVisionMlp.__init__°   ó�   ø€ Ü‰ÑÔÜ—I’I˜f×0Ñ0°&·+±+ÀEÑJˆŒ	Ü—I’I˜f×0Ñ0°&·+±+ÀEÑJˆŒ	Ü—)’)˜FŸK™K¨×);Ñ);À%ÑHˆŒÜ—z’z &×"5Ñ"5Ó6ˆŒÜ˜&×-Ñ-Ñ.ˆ�r1   c                 ó8  • U R                  U R                  U5      5      nU R                  U5      nX#-  nU R                  U5      n[	        U R
                  R                  [        R                  5      (       a�  UR                  U R
                  R                  R                  :w  aa  U R
                  R                  R                  [        R                  :w  a/  UR                  U R
                  R                  R                  5      nU R                  U5      nU$ rO   ©rž   rš   r›   rY   Ú
isinstancerœ   r)   r'   rf   r;   Úint8r6   ©r+   r>   Úhidden_geluÚhidden_linears       r/   r@   ÚPix2StructVisionMlp.forward¸   óÀ   € Ø—h‘h˜tŸy™y¨Ó7Ó8ˆØŸ	™	 -Ó0ˆØ#Ñ3ˆØŸ™ ]Ó3ˆô �t—w‘w—~‘~¤u§|¡|×4Ñ4Ø×#Ñ# t§w¡w§~¡~×';Ñ';Ó;Ø—‘—‘×$Ñ$¬¯
©
Ó2à)×,Ñ,¨T¯W©W¯^©^×-AÑ-AÓBˆMàŸ™ Ó.ˆØÐr1   ©rž   rY   rš   r›   rœ   )	rB   rC   rD   rE   r   r%   r@   rF   rG   rH   s   @r/   r”   r”   ¯   s   ø† ð/Ð5÷ /÷ð r1   r”   c                   óº   ^ • \ rS rSrS\SS4U 4S jjr SS\R                  S\R                  S-  S\\	   S\
\R                  \R                  4   4S	 jjrS
rU =r$ )ÚPix2StructVisionLayeréÌ   rL   rM   Nc                 ó  >• [         TU ]  5         UR                  U l        SU l        [	        U5      U l        [        U5      U l        [        UR                  UR                  S9U l        [        UR                  UR                  S9U l        g )Nr   ©r-   )r$   r%   Úchunk_size_feed_forwardÚseq_len_dimrh   Ú	attentionr”   Úmlpr!   r,   Úlayer_norm_epsÚpre_mlp_layer_normÚpre_attention_layer_normrZ   s     €r/   r%   ÚPix2StructVisionLayer.__init__Í   ss   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ2°6Ó:ˆŒÜ& vÓ.ˆŒÜ"5°f×6HÑ6HÈf×NcÑNcÑ"dˆÔÜ(;¸F×<NÑ<NÐTZ×TiÑTiÑ(jˆÕ%r1   r>   rˆ   r|   c                 ó®   • UnU R                  U5      nU R                  " U4SU0UD6u  pVXT-   nU R                  U5      nU R                  U5      U-   nXv4$ )Nrˆ   )r¶   r²   rµ   r³   )r+   r>   rˆ   r|   ÚresidualÚattention_outputr‘   Úlayer_outputs           r/   r@   ÚPix2StructVisionLayer.forwardÖ   sz   € ð !ˆð ×5Ñ5°mÓDˆà)-¯ªØñ*
à)ð*
ð ñ*
Ñ&Ðð )Ñ3ˆð ×.Ñ.¨}Ó=ˆØ—x‘x Ó-°Ñ=ˆàÐ)Ð)r1   )r²   r°   r³   r¶   rµ   r±   rO   )rB   rC   rD   rE   r   r%   r'   rf   r   r   Útupler@   rF   rG   rH   s   @r/   r¬   r¬   Ì   st   ø† ðkÐ/ð k°D÷ kð /3ñ*à—|‘|ð*ð Ÿ™ tÑ+ð*ð Ð+Ñ,ð	*ð
 
ˆu�|‰|˜UŸ\™\Ð)Ñ	*÷*ó *r1   r¬   c                   ó”   ^ • \ rS rSrS\SS4U 4S jjr   SS\R                  S\R                  S-  S\S	\S
\	\
   S\4S jjrSrU =r$ )ÚPix2StructVisionEncoderéñ   rL   rM   Nc                 óÖ   >• [         TU ]  5         Xl        [        R                  " [        UR                  5       Vs/ s H  n[        U5      PM     sn5      U l        SU l	        g s  snf )NF)
r$   r%   rL   r   Ú
ModuleListÚrangeÚnum_hidden_layersr¬   Úlayerrz   )r+   rL   Ú_r.   s      €r/   r%   Ú Pix2StructVisionEncoder.__init__ò   sT   ø€ Ü‰ÑÔØŒÜ—]’]Ì5ÐQW×QiÑQiÔKjÓ#kÒKjÀaÔ$9¸&Ö$AÑKjÑ#kÓlˆŒ
Ø&+ˆÕ#ùò $ls   ½A&r>   rˆ   Úoutput_attentionsÚoutput_hidden_statesr|   c                 óÌ   • U(       a  SOS nU(       a  SOS nU R                    H(  nU(       a  Xa4-   nU" X40 UD6u  pU(       d  M#  Xy4-   nM*     U(       a  Xa4-   n[        UUUS9$ )N© ©Úlast_hidden_stater>   Ú
attentions)rÅ   r   )
r+   r>   rˆ   rÈ   rÉ   r|   Úall_hidden_statesÚall_self_attentionsÚlayer_moduler‘   s
             r/   r@   ÚPix2StructVisionEncoder.forwardø   s€   € ö #7™B¸DÐÞ$5™b¸4Ðà ŸJœJˆLÞ#Ø$5Ð8HÑ$HÐ!á*6°}Ñ*_ÐX^Ñ*_Ñ'ˆMç Ð Ø&9¸OÑ&KÒ#ñ 'ö  Ø 1Ð4DÑ DÐäØ+Ø+Ø*ñ
ð 	
r1   )rL   rz   rÅ   )NFF)rB   rC   rD   rE   r   r%   r'   rf   Úboolr   r   r   r@   rF   rG   rH   s   @r/   r¿   r¿   ñ   sy   ø† ð,Ð5ð ,¸$÷ ,ð /3Ø"'Ø%*ñ
à—|‘|ð
ð Ÿ™ tÑ+ð
ð  ð	
ð
 #ð
ð Ð+Ñ,ð
ð 
÷
ó 
r1   r¿   c                   ó†   ^ • \ rS rSr% \\S'   SrSrSrSr	Sr
\S 5       r\R                  " 5       U 4S j5       rS rS	rU =r$ )
ÚPix2StructPreTrainedModeli  rL   )ÚimageÚtextFTc                 óz   • [         R                  " [        5      n[         R                  " [        5      nUUUS.nU$ )N)Údecoder_input_idsÚ	input_idsÚdecoder_attention_mask)r'   Útensorr   r   )r+   rÚ   Ú
input_maskÚdummy_inputss       r/   rÞ   Ú&Pix2StructPreTrainedModel.dummy_inputs!  s6   € ä—L’L¤Ó.ˆ	Ü—\’\¤*Ó-ˆ
à!*Ø"Ø&0ñ
ˆð
 Ðr1   c                 óú  >• [         TU ]  U5        U R                  R                  n[	        U[
        5      (       a%  [        R                  " UR                  US-  5        g[	        U[        5      (       GaN  [	        U R                  [        5      (       a   U R                  R                  R                  OU R                  R                  n[	        U R                  [        5      (       a   U R                  R                  R                  OU R                  R                  n[        R                  " UR                  R                  SX#S-  -  S9  [!        UR                  S5      (       aA  UR                  R"                  b*  [        R$                  " UR                  R"                  5        [        R                  " UR&                  R                  SX#S-  -  S9  [!        UR&                  S5      (       aA  UR&                  R"                  b*  [        R$                  " UR&                  R"                  5        [        R                  " UR(                  R                  SX$S-  -  S9  [!        UR(                  S5      (       aC  UR(                  R"                  b+  [        R$                  " UR(                  R"                  5        ggg[	        U[*        5      (       Ga  [	        U R                  [        5      (       a   U R                  R                  R                  OU R                  R                  n[	        U R                  [        5      (       a   U R                  R                  R,                  OU R                  R,                  n[	        U R                  [        5      (       a   U R                  R                  R.                  OU R                  R.                  n[        R                  " UR0                  R                  SX#U-  S-  -  S9  [        R                  " UR2                  R                  SX#S-  -  S9  [        R                  " UR4                  R                  SX#S-  -  S9  [        R                  " UR6                  R                  SX&U-  S-  -  S9  UR8                  (       a0  [        R                  " UR:                  R                  SX#S-  -  S9  gg[	        U[<        R>                  5      (       aÓ  [	        U R                  [        5      (       a   U R                  R                  R                  OU R                  R                  n[        R                  " UR                  SX#S-  -  S9  UR@                  bK  [C        UR                  SS5      (       d.  [        R$                  " UR                  UR@                     5        ggg[	        U[D        5      (       a…  [	        U R                  [        5      (       a   U R                  R                  R                  OU R                  R                  n[        R                  " URF                  R                  SX#S-  -  S9  g[	        U[<        RH                  [<        RJ                  45      (       ac  [        RL                  " UR                  SU R                  RN                  S9  UR"                  b!  [        R$                  " UR"                  5        ggg)	zInitialize the weightsrk   r~   ç      à¿)r9   Ústdrm   NÚ_is_hf_initializedF)(r$   Ú_init_weightsrL   Úinitializer_factorr£   r!   ÚinitÚ	constant_r)   Ú Pix2StructTextDenseGatedActDenser   Útext_configr,   r™   Únormal_rš   Úhasattrrm   Úzeros_r›   rœ   ÚPix2StructTextAttentionrn   Ú	num_headsrv   rw   rx   ry   Úhas_relative_attention_biasÚrelative_attention_biasr   rS   Úpadding_idxÚgetattrÚPix2StructTextModelÚlm_headrP   ÚConv2dÚtrunc_normal_Úinitializer_range)r+   ÚmoduleÚfactorr,   r™   ro   rq   r.   s          €r/   rä   Ú'Pix2StructPreTrainedModel._init_weights,  sÚ  ø€ ô 	‰Ñ˜fÔ%Ø—‘×/Ñ/ˆÜ�fÔ1×2Ñ2Ü�NŠN˜6Ÿ=™=¨&°3©,Õ7Ü˜Ô @×AÒAô ˜dŸk™kÔ+;×<Ñ<ð —‘×'Ñ'×3Ò3à—[‘[×,Ñ,ð ô
 4>¸d¿k¹kÔK[×3\Ñ3\�4—;‘;×*Ñ*×/Ò/Ðbf×bmÑbm×brÑbrˆDä�LŠL˜Ÿ™×+Ñ+°#¸6ÐVZÑEZÑ;[Ò\Ü�v—{‘{ F×+Ñ+°·±×0@Ñ0@Ñ0LÜ—’˜FŸK™K×,Ñ,Ô-Ü�LŠL˜Ÿ™×+Ñ+°#¸6ÐVZÑEZÑ;[Ò\Ü�v—{‘{ F×+Ñ+°·±×0@Ñ0@Ñ0LÜ—’˜FŸK™K×,Ñ,Ô-Ü�LŠL˜Ÿ™×)Ñ)°¸ÈTÁ>Ñ9RÒSÜ�v—y‘y &×)Ñ)¨f¯i©i¯n©nÑ.HÜ—’˜FŸI™IŸN™NÕ+ð /IÐ)ä˜Ô 7×8Ò8ô ˜dŸk™kÔ+;×<Ñ<ð —‘×'Ñ'×3Ò3à—[‘[×,Ñ,ð ô 1;¸4¿;¹;ÔHX×0YÑ0Y�—‘×'Ñ'×,Ò,Ð_c×_jÑ_j×_oÑ_oð ô
 ˜dŸk™kÔ+;×<Ñ<ð —‘×'Ñ'×1Ò1à—[‘[×*Ñ*ð ô �LŠL˜Ÿ™×,Ñ,°3¸FÐUgÑGgÐlpÑFpÑ<qÒrÜ�LŠL˜Ÿ™×*Ñ*°¸&ÐQUÑDUÑ:VÒWÜ�LŠL˜Ÿ™×,Ñ,°3¸FÐSWÑFWÑ<XÒYÜ�LŠL˜Ÿ™×-Ñ-°C¸VÐRdÑHdÐimÑGmÑ=nÒoØ×1×1Ü—’˜V×;Ñ;×BÑBÈÐRXÐmqÑ\qÑRrÓsð 2ä˜¤§¡×-Ñ-ô ˜dŸk™kÔ+;×<Ñ<ð —‘×'Ñ'×3Ò3à—[‘[×,Ñ,ð ô �LŠL˜Ÿ™¨S°fÐQUÑ@UÑ6VÒWà×!Ñ!Ñ-´g¸f¿m¹mÐMaÐch×6iÑ6iÜ—’˜FŸM™M¨&×*<Ñ*<Ñ=Õ>ð 7jÐ-ä˜Ô 3×4Ñ4ô ˜dŸk™kÔ+;×<Ñ<ð —‘×'Ñ'×3Ò3à—[‘[×,Ñ,ð ô �LŠL˜Ÿ™×.Ñ.°S¸fÐY]ÑH]Ñ>^Ó_Ü˜¤§¡¬B¯I©IÐ 6×7Ñ7Ü×Ò˜vŸ}™}°3¸D¿K¹K×<YÑ<YÒZØ�{‰{Ñ&Ü—’˜FŸK™KÕ(ð 'ð 8r1   c                 ó:  • U R                   R                  nU R                   R                  nUc  [        S5      eUR	                  UR
                  5      nUSS S24   R                  5       USSS 24'   X$S'   Uc  [        S5      eUR                  US:H  U5        U$ )Nzšself.model.config.decoder_start_token_id has to be defined. In Pix2Struct it is usually set to the pad_token_id. See Pix2Struct docs for more information..r4   r   ).r   z1self.model.config.pad_token_id has to be defined.éœÿÿÿ)rL   Údecoder_start_token_idÚpad_token_idÚ
ValueErrorÚ	new_zerosr   ÚcloneÚmasked_fill_)r+   rÚ   rý   rþ   Úshifted_input_idss        r/   Ú_shift_rightÚ&Pix2StructPreTrainedModel._shift_rightr  s­   € Ø!%§¡×!CÑ!CÐØ—{‘{×/Ñ/ˆà!Ñ)Üð<óð ð
 &×/Ñ/°	·±Ó@ÐØ%.¨s°C°R°C¨xÑ%8×%>Ñ%>Ó%@Ð˜#˜q™r˜'Ñ"Ø$:˜&Ñ!àÑÜÐPÓQÐQà×&Ñ&Ð'8¸DÑ'@À,ÔOà Ð r1   rË   )rB   rC   rD   rE   r   Ú__annotations__Úinput_modalitiesÚ_can_compile_fullgraphÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_sdpaÚpropertyrÞ   r'   Úno_gradrä   r  rF   rG   rH   s   @r/   rÕ   rÕ     s_   ø‡ àÓØ(Ðà"Ðà ÐØÐØ€Nàñó ðð ‡]‚]ƒ_ôB)ó ðB)÷J!ð !r1   rÕ   c                   óÚ   ^ • \ rS rSr% \\S'   SrSrSrS/r	S\4U 4S jjr
S r\     SS\R                  S	-  S
\R                  S	-  S\S	-  S\S	-  S\S	-  S\\-  4S jj5       rSrU =r$ )ÚPix2StructVisionModeliˆ  rL   r\   )rÖ   Tr¬   c                 óÖ   >• [         TU ]  U5        Xl        [        U5      U l        [        U5      U l        [        UR                  UR                  S9U l
        U R                  5         g ©Nr¯   )r$   r%   rL   rJ   ra   r¿   Úencoderr!   r,   r´   Ú	layernormÚ	post_initrZ   s     €r/   r%   ÚPix2StructVisionModel.__init__�  sS   ø€ Ü‰Ñ˜Ô ØŒä4°VÓ<ˆŒÜ.¨vÓ6ˆŒä,¨V×-?Ñ-?ÀV×EZÑEZÑ[ˆŒð 	�‰Õr1   c                 ó.   • U R                   R                  $ rO   )ra   rR   ©r+   s    r/   Úget_input_embeddingsÚ*Pix2StructVisionModel.get_input_embeddingsœ  s   € Ø�‰×/Ñ/Ð/r1   Nrˆ   rÈ   rÉ   Úreturn_dictrM   c                 ó  • Ub  UOU R                   R                  nUb  UOU R                   R                  nUb  UOU R                   R                  nUc  [	        S5      eUc   UR                  SS9S:g  R                  5       nU R                  U5      n[        U R                   UUS9nU R                  UUUUS9nUS   n	U R                  U	5      n	U(       d
  U	4n
X¨SS -   $ [        U	UR                  UR                  S	9$ )
a\  
flattened_patches (`torch.FloatTensor` of shape `(batch_size, sequence_length, num_channels x patch_height x patch_width)`):
    Flattened and padded pixel values. These values can be obtained using [`AutoImageProcessor`]. See
    [`Pix2StructVisionImageProcessor.__call__`] for details. Check the [original
    paper](https://huggingface.co/papers/2210.03347) (figure 5) for more details.

Example:

```python
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> from transformers import AutoProcessor, Pix2StructVisionModel

>>> image_processor = AutoProcessor.from_pretrained("google/pix2struct-textcaps-base")
>>> model = Pix2StructVisionModel.from_pretrained("google/pix2struct-textcaps-base")

>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 2048, 768]
```
Nz%You have to specify flattened_patchesr4   ©Údimr   )rL   Úinputs_embedsrˆ   )rˆ   rÈ   rÉ   r   rÌ   )rL   rÈ   rÉ   r  rÿ   ÚsumÚfloatra   r   r  r  r   r>   rÎ   )r+   r\   rˆ   rÈ   rÉ   r  r|   Úembedding_outputÚencoder_outputsÚsequence_outputÚhead_outputss              r/   r@   ÚPix2StructVisionModel.forwardŸ  s+  € ðP 2CÑ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ñ$DÑ È$Ï+É+×JjÑJjð 	ð &1Ñ%<‘kÀ$Ç+Á+×BYÑBYˆàÑ$ÜÐDÓEÐEàÑ!à/×3Ñ3¸Ð3Ð;¸qÑ@×GÑGÓIˆNàŸ?™?Ð+<Ó=Ðä2Ø—;‘;Ø*Ø)ñ
ˆð Ÿ,™,ØØ)Ø/Ø!5ð	 'ð 
ˆð *¨!Ñ,ˆØŸ.™.¨Ó9ˆæØ+Ð-ˆLØ°!°"Ð"5Ñ5Ð5äØ-Ø)×7Ñ7Ø&×1Ñ1ñ
ð 	
r1   )rL   ra   r  r  )NNNNN)rB   rC   rD   rE   r   r  Úmain_input_namer  Úsupports_gradient_checkpointingÚ_no_split_modulesr%   r  r   r'   rf   rÓ   r½   r   r@   rF   rG   rH   s   @r/   r  r  ˆ  sÀ   ø‡ à"Ó"Ø)€OØ!ÐØ&*Ð#Ø0Ð1Ðð
Ð5÷ 
ò0ð ð 26Ø.2Ø)-Ø,0Ø#'ñM
à Ÿ<™<¨$Ñ.ðM
ð Ÿ™ tÑ+ðM
ð   $™;ð	M
ð
 # T™kðM
ð ˜D‘[ðM
ð 
Ð+Ñ	+ôM
ó öM
r1   r  c                   ó6   ^ • \ rS rSrS\4U 4S jjrS rSrU =r$ )rè   iñ  rL   c                 ó¶  >• [         TU ]  5         [        R                  " UR                  UR
                  SS9U l        [        R                  " UR                  UR
                  SS9U l        [        R                  " UR
                  UR                  SS9U l        [        R                  " UR                  5      U l        [        UR                     U l        g r—   r˜   rZ   s     €r/   r%   Ú)Pix2StructTextDenseGatedActDense.__init__ò  r    r1   c                 ó8  • U R                  U R                  U5      5      nU R                  U5      nX#-  nU R                  U5      n[	        U R
                  R                  [        R                  5      (       a�  UR                  U R
                  R                  R                  :w  aa  U R
                  R                  R                  [        R                  :w  a/  UR                  U R
                  R                  R                  5      nU R                  U5      nU$ rO   r¢   r¥   s       r/   r@   Ú(Pix2StructTextDenseGatedActDense.forwardú  r©   r1   rª   ©	rB   rC   rD   rE   r   r%   r@   rF   rG   rH   s   @r/   rè   rè   ñ  s   ø† ð/Ð3÷ /÷ð r1   rè   c                   ó6   ^ • \ rS rSrS\4U 4S jjrS rSrU =r$ )ÚPix2StructTextLayerFFi  rL   c                 óÒ   >• [         TU ]  5         [        U5      U l        [	        UR
                  UR                  S9U l        [        R                  " UR                  5      U l        g r  )r$   r%   rè   ÚDenseReluDenser!   r,   Úlayer_norm_epsilonÚ
layer_normr   rW   rX   rY   rZ   s     €r/   r%   ÚPix2StructTextLayerFF.__init__  sK   ø€ Ü‰ÑÔÜ>¸vÓFˆÔä-¨f×.@Ñ.@Àf×F_ÑF_Ñ`ˆŒÜ—z’z &×"5Ñ"5Ó6ˆ�r1   c                 óp   • U R                  U5      nU R                  U5      nXR                  U5      -   nU$ rO   )r4  r2  rY   )r+   r>   Úforwarded_statess      r/   r@   ÚPix2StructTextLayerFF.forward  s;   € ØŸ?™?¨=Ó9ÐØ×.Ñ.Ð/?Ó@ÐØ%¯©Ð5EÓ(FÑFˆØÐr1   )r2  rY   r4  r.  rH   s   @r/   r0  r0    s   ø† ð7Ð3÷ 7÷ð r1   r0  rø   rv   rw   rx   rˆ   rt   rY   Úposition_biasr|   c                 óœ  • Uc  UR                  S5      S-  n[        R                  " XR                  SS5      5      U-  n	Ub  X—-   n	Ub  X”-   n	[        R
                  R                  U	SS9n	[        R
                  R                  X–U R                  S9n	[        R                  " X“5      n
U
R                  SS5      R                  5       n
X©4$ )Nr4   rá   r3   r   r  )Úpr…   r   )
Úsizer'   Úmatmulr�   r   Ú
functionalÚsoftmaxrY   r…   r‡   )rø   rv   rw   rx   rˆ   rt   rY   r9  r|   r‘   r�   s              r/   r„   r„     s¿   € ð �Ø—*‘*˜R“. DÑ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÑE€LàÑ Ø#Ñ3ˆàÑ!Ø#Ñ4ˆä—=‘=×(Ñ(¨¸2Ð(Ð>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ð[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r1   c                   ó†   ^ • \ rS rSr   SS\S\S-  S\4U 4S jjjr\SS j5       r	SS jr
    SS	\\   4S
 jjrSrU =r$ )rí   i?  NrL   Ú	layer_idxru   c                 óÐ  >• [         TU ]  5         Xl        X@l        X l        UR
                  U l        UR                  U l        UR                  U l        UR                  U l	        UR                  U l        UR                  U l        U R                  U R                  -  U l        SU l        X0l        Uc-  ["        R%                  SU R&                  R(                   S35        [*        R,                  " U R                  U R                  SS9U l        [*        R,                  " U R                  U R                  SS9U l        [*        R,                  " U R                  U R                  SS9U l        [*        R,                  " U R                  U R                  SS9U l        U R                  (       a0  [*        R6                  " U R
                  U R                  5      U l        SU l        g )Nrk   zInstantiating a decoder z³ without passing `layer_idx` is not recommended and will to errors during the forward call, if caching is used. Please make sure to provide a `layer_idx` when creating this class.Frl   )r$   r%   rL   ru   rï   Úrelative_attention_num_bucketsÚrelative_attention_max_distancer,   rn   ro   rî   rq   rX   rY   rs   rt   rA  ÚloggerÚwarning_oncer.   rB   r   rP   rv   rw   rx   ry   rS   rð   rz   )r+   rL   rï   rA  ru   r.   s        €r/   r%   Ú Pix2StructTextAttention.__init__@  sv  ø€ ô 	‰ÑÔØŒØ"ŒØ+FÔ(Ø.4×.SÑ.SˆÔ+Ø/5×/UÑ/UˆÔ,Ø!×-Ñ-ˆÔØ"(§+¡+ˆÔØ×'Ñ'ˆŒØ×*Ñ*ˆŒØŸ™¨×(?Ñ(?Ñ?ˆŒàˆŒØ"ŒØÑÜ×ÑØ*¨4¯>©>×+BÑ+BÐ*Cð D,ð ,ôô —Y’Y˜t×/Ñ/°×1AÑ1AÈÑNˆŒ
Ü—9’9˜T×-Ñ-¨t×/?Ñ/?ÀeÑLˆŒÜ—Y’Y˜t×/Ñ/°×1AÑ1AÈÑNˆŒ
Ü—i’i × 0Ñ 0°$×2BÑ2BÈÑOˆŒà×+×+Ü+-¯<ª<¸×8[Ñ8[Ð]a×]iÑ]iÓ+jˆDÔ(à&+ˆÕ#r1   c                 ób  • SnU(       aC  US-  nX@S:„  R                  [        R                  5      U-  -  n[        R                  " U 5      n O,[        R                  " U [        R
                  " U 5      5      * n US-  nX:  nU[        R                  " U R                  5       U-  5      [        R                  " X5-  5      -  X%-
  -  R                  [        R                  5      -   n[        R                  " U[        R                  " XrS-
  5      5      nU[        R                  " X`U5      -  nU$ )aR  
Adapted from Mesh Tensorflow:
https://github.com/tensorflow/mesh/blob/0cb87fe07da627bf0b7e60475d59f95ed6b5be3d/mesh_tensorflow/transformer/transformer_layers.py#L593

Translate relative position to a bucket number for relative attention. The relative position is defined as
memory_position - query_position, i.e. the distance in tokens from the attending position to the attended-to
position. If bidirectional=False, then positive relative positions are invalid. We use smaller buckets for
small absolute relative_position and larger buckets for larger absolute relative_positions. All relative
positions >=max_distance map to the same bucket. All relative positions <=-max_distance map to the same bucket.
This should allow for more graceful generalization to longer sequences than the model has been trained on

Args:
    relative_position: an int32 Tensor
    bidirectional: a boolean - whether the attention is bidirectional
    num_buckets: an integer
    max_distance: an integer

Returns:
    a Tensor with the same shape as relative_position, containing int32 values in the range [0, num_buckets)
r   r3   r   )r6   r'   r^   ÚabsÚminÚ
zeros_likeÚlogr   ÚmathÚ	full_likeÚwhere)Úrelative_positionÚbidirectionalÚnum_bucketsÚmax_distanceÚrelative_bucketsÚ	max_exactÚis_smallÚrelative_position_if_larges           r/   Ú_relative_position_bucketÚ1Pix2StructTextAttention._relative_position_bucketf  s  € ð. ÐÞØ˜AÑˆKØ°QÑ!6× :Ñ :¼5¿:¹:Ó FÈÑ TÑTÐÜ %§	¢	Ð*;Ó <Ñä!&§¢Ð+<¼e×>NÒ>NÐO`Ó>aÓ!bÐ bÐð   1Ñ$ˆ	Ø$Ñ0ˆð &/Ü�IŠIÐ'×-Ñ-Ó/°)Ñ;Ó<Ü�hŠh�|Ñ/Ó0ñ1àÑ&ñ(÷ ‰"ŒU�Z‰Z‹.ñ	&Ð"ô
 &+§Y¢YØ&¬¯ªÐ8RÐbcÑTcÓ(dó&
Ð"ð 	œEŸKšK¨ÐE_Ó`Ñ`ÐØÐr1   c                 ó¸  • Uc   U R                   R                  R                  n[        R                  " U[        R
                  US9SS2S4   U-   n[        R                  " U[        R
                  US9SSS24   nXe-
  nU R                  USU R                  U R                  S9nU R                  U5      n	U	R                  / SQ5      R                  S5      n	U	$ )z%Compute binned relative position biasN)r;   ÚdeviceF)rQ  rR  rS  )r3   r   r   r   )rð   r)   r[  r'   Úaranger^   rX  rC  rD  ÚpermuteÚ	unsqueeze)
r+   Úquery_lengthÚ
key_lengthr[  Úpast_seen_tokensÚcontext_positionÚmemory_positionrP  Úrelative_position_bucketÚvaluess
             r/   Úcompute_biasÚ$Pix2StructTextAttention.compute_bias˜  sÒ   € à‰>Ø×1Ñ1×8Ñ8×?Ñ?ˆFÜ Ÿ<š<¨¼E¿J¹JÈvÑVÒWXÐZ^ÐW^Ñ_ÐbrÑrÐÜŸ,š, z¼¿¹ÈFÑSÐTXÒZ[ÐT[Ñ\ˆØ+Ñ>ÐØ#'×#AÑ#AØØØ×;Ñ;Ø×=Ñ=ð	 $Bð $
Ð ð ×-Ñ-Ð.FÓGˆØ—‘¢	Ó*×4Ñ4°QÓ7ˆØˆr1   r|   c                 ó–  • UR                   SS n/ UQSPU R                  P7nUb  UR                  U R                  5      OSn	[	        U	[
        R                  5      (       a  U	R                  5       OU	n	USLn
U R                  U5      R                  U5      R                  SS5      nSn[	        U[        5      (       aF  UR                  R                  U R                  5      nU
(       a  UR                  nOUR                  nOUnU
(       a  UOUnU
(       aQ  UbN  U(       aG  UR                   U R                     R"                  nUR                   U R                     R$                  nOØ/ UR                   SS QSPU R                  P7nU R'                  U5      R                  U5      R                  SS5      nU R)                  U5      R                  U5      R                  SS5      nUbU  UR+                  UUU R                  5      u  nnU
(       a.  [	        U[        5      (       a  SUR                  U R                  '   Uc¤  UR                   S   nU R,                  (       de  [
        R.                  " SU R0                  US   U4UR2                  UR4                  S	9nU R6                  (       a  U R8                  (       a  SUl        OU R=                  US   UUR2                  U	S
9nUb=  [	        U[
        R                  5      (       a  USS2SS2SS2SUR                   S   24   n[>        R@                  " U RB                  RD                  [F        5      nU" U UUUU4U R8                  (       d  SOU RH                  U RJ                  US.UD6u  nnURL                  " / UQSP76 RO                  5       nU RQ                  U5      nUUU4$ )zp
Self-attention (if key_value_states is None) or attention over source sentence (provided by key_value_states).
Nr4   r   r   r3   FTéþÿÿÿ)r[  r;   )r[  ra  r~   )rY   rt   r9  ))r   ro   Úget_seq_lengthrA  r£   r'   rf   r  rv   r€   r�   r
   Ú
is_updatedÚgetÚcross_attention_cacheÚself_attention_cacheÚlayersÚkeysre  rw   rx   Úupdaterï   Úzerosrq   r[  r;   rz   r…   Úrequires_gradrf  r   r‚   rL   rƒ   r„   rY   rt   r†   r‡   ry   )r+   r>   ÚmaskÚkey_value_statesr9  Úpast_key_valuesr|   Úinput_shaper‹   ra  Úis_cross_attentionrŒ   rk  Úcurr_past_key_valuesÚcurrent_statesr�   rŽ   Úkv_shaper`  r�   r�   r‘   s                         r/   r@   ÚPix2StructTextAttention.forwardª  sz  € ð $×)Ñ)¨#¨2Ð.ˆØB˜ÐB bÐB¨$×*AÑ*AÑBˆØM\ÑMh˜?×9Ñ9¸$¿.¹.ÔIÐnoÐä7AÐBRÔTY×T`ÑT`×7aÑ7aÐ+×1Ñ1Ô3ÐgwÐð .°TÐ9Ðà—z‘z -Ó0×5Ñ5°lÓC×MÑMÈaÐQRÓSˆð ˆ
Ü�oÔ':×;Ñ;Ø(×3Ñ3×7Ñ7¸¿¹ÓGˆJÞ!à'6×'LÑ'LÑ$à'6×'KÑ'KÑ$à#2Ð æ-?Ñ)À]ˆÞ /Ñ"=Æ*à-×4Ñ4°T·^±^ÑD×IÑIˆJØ/×6Ñ6°t·~±~ÑF×MÑM‰LàP˜×-Ñ-¨c¨rÐ2ÐP°BÐP¸×8OÑ8OÑPˆHØŸ™ .Ó1×6Ñ6°xÓ@×JÑJÈ1ÈaÓPˆJØŸ:™: nÓ5×:Ñ:¸8ÓD×NÑNÈqÐRSÓTˆLàÑ*Ø+?×+FÑ+FÀzÐS_Ðae×aoÑaoÓ+pÑ(�
˜Læ%¬*°_ÔFY×*ZÑ*ZØAE�O×.Ñ.¨t¯~©~Ñ>àÑ Ø#×)Ñ)¨"Ñ-ˆJØ×3×3Ü %§¢Ø˜Ÿ™ k°!¡n°jÐAØ'×.Ñ.Ø&×,Ñ,ñ!�ð
 ×.×.°4·=·=Ø26�MÔ/øà $× 1Ñ 1Ø ‘N J°|×7JÑ7JÐ]mð !2ð !�ð Ñ¤
¨4´·±× >Ñ >àšš1šaÐ!7 :×#3Ñ#3°BÑ#7Ð!7Ð7Ñ8ˆDä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð
%
ð  $Ÿ}Ÿ}‘C°$·,±,Ø—L‘LØ'ñ
%
ð ñ
%
Ñ!ˆ�\ð "×)Ò)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—k‘k +Ó.ˆà˜M¨<Ð7Ð7r1   )rL   rY   rz   rï   r,   rs   ru   rw   ro   rA  rq   ry   rv   rð   rD  rC  rt   rx   )FNF)Té    é€   )Nr   )NNNN)rB   rC   rD   rE   r   ÚintrÓ   r%   ÚstaticmethodrX  rf  r   r   r@   rF   rG   rH   s   @r/   rí   rí   ?  s~   ø† ð %*Ø $Øñ$,à$ð$,ð ˜‘:ð	$,ð
 ÷$,ð $,ðL ó- ó ð- ô`ð* ØØØñ[8ð Ð+Ñ,÷[8ó [8r1   rí   c                   óX   ^ • \ rS rSrSS\S-  4U 4S jjjr   S	S\\   4S jjrSr	U =r
$ )
Ú Pix2StructTextLayerSelfAttentioni	  NrA  c                 óè   >• [         TU ]  5         [        UUUUR                  S9U l        [        UR                  UR                  S9U l        [        R                  " UR                  5      U l        g )N©rï   rA  ru   r¯   )r$   r%   rí   Ú
is_decoderr²   r!   r,   r3  r4  r   rW   rX   rY   ©r+   rL   rï   rA  r.   s       €r/   r%   Ú)Pix2StructTextLayerSelfAttention.__init__
  s^   ø€ Ü‰ÑÔÜ0ØØ(CØØ×'Ñ'ñ	
ˆŒô .¨f×.@Ñ.@Àf×F_ÑF_Ñ`ˆŒÜ—z’z &×"5Ñ"5Ó6ˆ�r1   r|   c                 ó†   • U R                  U5      nU R                  " U4UUUS.UD6u  psnXR                  U5      -   nXsU4$ )N)rt  r9  rv  ©r4  r²   rY   )	r+   r>   rˆ   r9  rv  r|   Únormed_hidden_statesrº   r‘   s	            r/   r@   Ú(Pix2StructTextLayerSelfAttention.forward  sb   € ð  $Ÿ™¨}Ó=ÐØ8<¿ºØ ð9
àØ'Ø+ñ	9
ð
 ñ9
Ñ5Ð¨ð )¯<©<Ð8HÓ+IÑIÐØ°Ð<Ð<r1   ©r²   rY   r4  ©FN©NNN©rB   rC   rD   rE   r  r%   r   r   r@   rF   rG   rH   s   @r/   r‚  r‚  	  s>   ø† ñ	7ÈSÐSWÉZ÷ 	7ð 	7ð ØØñ=ð Ð+Ñ,÷=ó =r1   r‚  c                   óX   ^ • \ rS rSrSS\S-  4U 4S jjjr   S	S\\   4S jjrSr	U =r
$ )
Ú!Pix2StructTextLayerCrossAttentioni*  NrA  c                 óÔ   >• [         TU ]  5         [        USUSS9U l        [	        UR
                  UR                  S9U l        [        R                  " UR                  5      U l        g )NFr„  r¯   )r$   r%   rí   r²   r!   r,   r3  r4  r   rW   rX   rY   )r+   rL   rA  r.   s      €r/   r%   Ú*Pix2StructTextLayerCrossAttention.__init__+  sV   ø€ Ü‰ÑÔÜ0Ø°ÀÐV[ñ
ˆŒô .¨f×.@Ñ.@Àf×F_ÑF_Ñ`ˆŒÜ—z’z &×"5Ñ"5Ó6ˆ�r1   r|   c                 óˆ   • U R                  U5      nU R                  " U4UUUUS.UD6u  p„n	XR                  U5      -   n
X¤U	4$ )N)rt  ru  r9  rv  r‰  )r+   r>   ru  rˆ   r9  rv  r|   rŠ  rº   r‘   r»   s              r/   r@   Ú)Pix2StructTextLayerCrossAttention.forward3  sd   € ð  $Ÿ™¨}Ó=ÐØ8<¿ºØ ð9
àØ-Ø'Ø+ñ9
ð ñ9
Ñ5Ð¨ð %§|¡|Ð4DÓ'EÑEˆØ¨LÐ8Ð8r1   rŒ  rO   rŽ  r�  rH   s   @r/   r‘  r‘  *  s=   ø† ñ7¨#°©*÷ 7ð 7ð ØØñ9ð Ð+Ñ,÷9ó 9r1   r‘  c                   óV   ^ • \ rS rSrSS\S-  4U 4S jjjr         SS jrSrU =r$ )	ÚPix2StructTextBlockiI  NrA  c                 ó€   >• [         TU ]  5         [        UUUS9U l        [	        UUS9U l        [        U5      U l        g )N©rï   rA  )rA  )r$   r%   r‚  Úself_attentionr‘  Úencoder_decoder_attentionr0  r³   r†  s       €r/   r%   ÚPix2StructTextBlock.__init__J  sH   ø€ Ü‰ÑÔä>ØØ(CØñ
ˆÔô *KØØñ*
ˆÔ&ô
 )¨Ó0ˆ�r1   c           	      ó  • U R                  UUUUUU	S9nUS   nUSS  nUR                  [        R                  :X  al  [        R                  " U5      R                  5       (       aC  [        R                  " UR                  5      R                  S-
  n[        R                  " X* US9nUS LnU(       a«  U R                  UUUUUU	S9nUS   nUR                  [        R                  :X  al  [        R                  " U5      R                  5       (       aC  [        R                  " UR                  5      R                  S-
  n[        R                  " X* US9nUUSS  -   nU R                  U5      nUR                  [        R                  :X  al  [        R                  " U5      R                  5       (       aC  [        R                  " UR                  5      R                  S-
  n[        R                  " X* US9nU4nUU-   $ )N)rˆ   r9  rv  Ú	use_cacherÈ   r   r   iè  )rJ  Úmax)ru  rˆ   r9  rv  rÈ   )rš  r;   r'   r<   ÚisinfÚanyÚfinforŸ  Úclampr›  r³   )r+   r>   rˆ   r9  Úencoder_hidden_statesÚencoder_attention_maskÚencoder_decoder_position_biasrv  rž  rÈ   r  r|   Úself_attention_outputsÚattention_outputsÚclamp_valueÚdo_cross_attentionÚcross_attention_outputsÚoutputss                     r/   r@   ÚPix2StructTextBlock.forwardZ  sÖ  € ð "&×!4Ñ!4ØØ)Ø'Ø+ØØ/ð "5ð "
Ðð /¨qÑ1ˆØ2°1°2Ð6Ðð ×Ñ¤%§-¡-Ó/´E·K²KÀÓ4N×4RÑ4R×4TÑ4TÜŸ+š+ m×&9Ñ&9Ó:×>Ñ>ÀÑEˆKÜ!ŸKšK¨¸<È[ÑYˆMà2¸$Ð>ÐÞØ&*×&DÑ&DØØ!6Ø5Ø;Ø /Ø"3ð 'Eð 'Ð#ð 4°AÑ6ˆMð ×"Ñ"¤e§m¡mÓ3¼¿ºÀMÓ8R×8VÑ8V×8XÑ8XÜ#Ÿkšk¨-×*=Ñ*=Ó>×BÑBÀTÑI�Ü %§¢¨M¸|ÐQ\Ñ ]�ð !2Ð4KÈAÈBÐ4OÑ OÐð Ÿ™ Ó/ˆð ×Ñ¤%§-¡-Ó/´E·K²KÀÓ4N×4RÑ4R×4TÑ4TÜŸ+š+ m×&9Ñ&9Ó:×>Ñ>ÀÑEˆKÜ!ŸKšK¨¸<È[ÑYˆMà Ð"ˆàÐ*Ñ*Ð*r1   )r›  r³   rš  r�  )	NNNNNNFFT)	rB   rC   rD   rE   r  r%   r@   rF   rG   rH   s   @r/   r—  r—  I  s@   ø† ñ1ÈSÐSWÉZ÷ 1ð 1ð& ØØ"Ø#Ø&*ØØØØ÷<+ò <+r1   r—  z3
    The standalone text decoder of Pix2Struct
    )Úcustom_introc                   óŒ  ^ • \ rS rSr% \\S'   SrS/rSS0rSr	U 4S jr
S	 r\           SS\R                  S
-  S\R                  S
-  S\R                  S
-  S\R                  S
-  S\R                  S
-  S\S
-  S\S
-  S\S
-  S\S
-  S\R                  S
-  S\S
-  S\\R                  S4   \-  4S jj5       rSrU =r$ )ró   i™  rL   )r×   r—  zlm_head.weightzembed_tokens.weightTc                 óR  >• [         TU ]  U5        [        R                  " UR                  UR
                  5      U l        [        R                  " [        UR                  5       Vs/ s H  n[        U[        US:H  5      US9PM     sn5      U l        [        UR
                  UR                  S9U l        [        R                   " UR"                  5      U l        [        R&                  " UR
                  UR                  SS9U l        U R+                  5         SU l        g s  snf )Nr   r™  r¯   Frl   )r$   r%   r   rS   Ú
vocab_sizer,   Úembed_tokensrÂ   rÃ   Ú
num_layersr—  rÓ   rÅ   r!   r3  Úfinal_layer_normrW   rX   rY   rP   rô   r  rz   )r+   rL   Úir.   s      €r/   r%   ÚPix2StructTextModel.__init__¥  sæ   ø€ Ü‰Ñ˜Ô ÜŸLšL¨×):Ñ):¸F×<NÑ<NÓOˆÔä—]’]ô ˜v×0Ñ0Ô1óâ1�Aô $ FÌÈQÐRSÉVËÐ`aÔbÙ1ñó
ˆŒ
ô !4°F×4FÑ4FÈF×LeÑLeÑ fˆÔÜ—z’z &×"5Ñ"5Ó6ˆŒä—y’y ×!3Ñ!3°V×5FÑ5FÈUÑSˆŒð 	�‰ÔØ&+ˆÕ#ùòs   Á(!D$c                 ó   • Xl         g rO   )r²  ©r+   Únew_embeddingss     r/   Úset_input_embeddingsÚ(Pix2StructTextModel.set_input_embeddings¸  s   € Ø*Õr1   NrÚ   rˆ   r¤  r¥  r  rv  rž  rÈ   rÉ   Úlabelsr  rM   .c                 ó`  • Ub  UOU R                   R                  nUb  UOU R                   R                  nU	b  U	OU R                   R                  n	Ub  UOU R                   R                  nU R
                  (       a/  U R                  (       a  U(       a  [        R                  S5        SnUb  Ub  [        S5      eUb&  UR                  5       nUR                  SUS   5      nO"Ub  UR                  5       SS nO[        S5      eUc%  U R                  c   S5       eU R                  U5      nUu  pïU(       a`  Uc]  U R                   R                  (       a/  [        [        U R                   S9[        U R                   S95      nO[        U R                   S9nUc8  Ub  UR!                  5       U-   OUn["        R$                  " UUUR&                  S	9nU R                   R(                  (       a8  [+        U R                   UU[-        U[        5      (       a  UR.                  OUS
9nOVUSS2SSSS24   nUR1                  UR2                  S9nSU-
  ["        R4                  " UR2                  5      R6                  -  nUb  [9        U R                   UUUS9nU	(       a  SOSnU(       a  SOSnU(       a  SOSnSnSnU R;                  U5      n[=        U R>                  5       HS  u  nnU	(       a  UU4-   nU" UUUUUUUUUS9	nUS   nUS   nUb  US   nU(       d  M<  UUS   4-   nUc  MJ  UUS   4-   nMU     U RA                  U5      nU R;                  U5      nU RC                  U5      nU	(       a  UU4-   nSnU
bƒ  U
R1                  UR&                  5      n
[D        RF                  " SSS9nU" URI                  5       R                  SUR                  S5      5      U
RI                  5       R                  S5      5      nU(       d  [K        S UUUUUU4 5       5      $ [M        UUUUUUS9$ )aÅ  
input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
    Indices of input sequence tokens in the vocabulary. Pix2StructText is a model with relative position
    embeddings so you should be able to pad the inputs on both the right and the left.

    Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
    [`PreTrainedTokenizer.__call__`] for detail.

    [What are input IDs?](../glossary#input-ids)

    To know more on how to prepare `input_ids` for pretraining take a look a [Pix2StructText
    Training](./t5#training).

Example:

```python
>>> from transformers import AutoProcessor, Pix2StructTextModel

>>> processor = AutoProcessor.from_pretrained("google/pix2struct-textcaps-base")
>>> model = Pix2StructTextModel.from_pretrained("google/pix2struct-textcaps-base")

>>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> loss = outputs.loss
```
NzZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...FzTYou cannot specify both decoder_input_ids and decoder_inputs_embeds at the same timer4   zEYou have to specify either decoder_input_ids or decoder_inputs_embedsz<You have to initialize the model with valid token embeddings)rL   )r[  )rL   r  rˆ   rv  )r;   rk   )rL   r  rˆ   r¤  rË   )rv  rž  rÈ   r   r   r   r3   é   rü   r9   )Úignore_indexÚ	reductionc              3   ó0   #   • U  H  nUc  M  Uv •  M     g 7frO   rË   )Ú.0Úvs     r/   Ú	<genexpr>Ú.Pix2StructTextModel.forward.<locals>.<genexpr>`  s"   é € ð ò�Að ÷ ‘òùs   ‚�	)ÚlossÚlogitsrv  r>   rÎ   Úcross_attentions)'rL   rž  rÈ   rÉ   r  rz   r…   rE  Úwarningrÿ   r<  r€   r²  Úis_encoder_decoderr
   r	   rj  r'   r(   r[  r…  r   r£   rn  r6   r;   r¢  rJ  r   rY   Ú	enumeraterÅ   r´  rô   r   ÚCrossEntropyLossr‡   r½   r   )r+   rÚ   rˆ   r¤  r¥  r  rv  rž  rÈ   rÉ   r¼  r  r|   rw  r‰   rŠ   Úmask_seq_lengthÚcausal_maskrÏ   Úall_attentionsÚall_cross_attentionsr9  r¦  r>   rµ  rÑ   Úlayer_outputsrÇ  rÆ  Úloss_fcts                                 r/   r@   ÚPix2StructTextModel.forward»  sD  € ðT "+Ñ!6‘I¸D¿K¹K×<QÑ<Qˆ	Ø1BÑ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ñ$DÑ È$Ï+É+×JjÑJjð 	ð &1Ñ%<‘kÀ$Ç+Á+×BYÑBYˆà×&×&¨4¯=¯=¾YÜ�N‰NØlôð ˆIàÑ  ]Ñ%>ÜÐsÓtÐtØÑ"Ø#Ÿ.™.Ó*ˆKØ!Ÿ™ r¨;°r©?Ó;‰IØÑ&Ø'×,Ñ,Ó.¨s°Ð3‰KäÐdÓeÐeàÑ Ø×$Ñ$Ñ0ÐpÐ2pÓpÐ0Ø ×-Ñ-¨iÓ8ˆMà!,Ñˆ
æ˜Ñ0Ø�{‰{×-×-Ü"5Ü ¨¯©Ñ4´lÈ$Ï+É+Ñ6Vó#‘ô #/°d·k±kÑ"B�àÑ!ð BQÑA\�×.Ñ.Ó0°:Ò=Ðblð ô #ŸZšZ¨
°OÈM×L`ÑL`ÑaˆNà�;‰;×!×!Ü,Ø—{‘{Ø+Ø-ä˜oÔ/B×CÑCð !0× DÒ Dà$ñ‰Kð )ª¨D°$ºÐ)9Ñ:ˆKØ%Ÿ.™.¨}×/BÑ/B˜.ÐCˆKØ Ñ,´·²¸M×<OÑ<OÓ0P×0TÑ0TÑTˆKà!Ñ-Ü%>Ø—{‘{Ø+Ø5Ø&;ñ	&Ð"ö #7™B¸DÐÞ0™°dˆÞ&7™r¸dÐØˆØ(,Ð%àŸ™ ]Ó3ˆä(¨¯©Ö4‰OˆAˆ|Þ#Ø$5¸Ð8HÑ$HÐ!á(ØØØØ%Ø&Ø-Ø /Ø#Ø"3ñ
ˆMð *¨!Ñ,ˆMð *¨!Ñ,ˆMØ$Ñ0Ø0=¸aÑ0@Ð-ç Ð Ø!/°=ÀÑ3CÐ2EÑ!E�Ø(Ó4Ø+?À=ÐQRÑCSÐBUÑ+UÒ(ñ;  5ð> ×-Ñ-¨mÓ<ˆØŸ™ ]Ó3ˆà—‘˜mÓ,ˆö  Ø 1°]Ð4DÑ DÐàˆØÑà—Y‘Y˜vŸ}™}Ó-ˆFÜ×*Ò*¸ÈÑOˆHá˜F×-Ñ-Ó/×4Ñ4°R¸¿¹ÀR»ÓIÈ6×K\ÑK\ÓK^×KcÑKcÐdfÓKgÓhˆDæÜñ ð ØØ#Ø%Ø"Ø(ñóó ð ô 1ØØØ+Ø+Ø%Ø1ñ
ð 	
r1   )rY   r²  r´  rz   rÅ   rô   )NNNNNNNNNNN)rB   rC   rD   rE   r   r  r  r(  Ú_tied_weights_keysr'  r%   rº  r   r'   Ú
LongTensorÚFloatTensorr   rÓ   r½   r   r@   rF   rG   rH   s   @r/   ró   ró   ™  s]  ø‡ ð !Ó Ø ÐØ.Ð/ÐØ*Ð,AÐBÐØ&*Ð#õ,ò&+ð ð .2Ø37Ø:>Ø;?Ø15Ø(,Ø!%Ø)-Ø,0Ø*.Ø#'ñw
à×#Ñ# dÑ*ðw
ð ×)Ñ)¨DÑ0ðw
ð  %×0Ñ0°4Ñ7ð	w
ð
 !&× 1Ñ 1°DÑ 8ðw
ð ×'Ñ'¨$Ñ.ðw
ð  ™ðw
ð ˜$‘;ðw
ð   $™;ðw
ð # T™kðw
ð × Ñ  4Ñ'ðw
ð ˜D‘[ðw
ð 
ˆu× Ñ  #Ð%Ñ	&Ð)JÑ	Jôw
ó öw
r1   ró   zr
    A conditional generation model with a language modeling head. Can be used for sequence generation tasks.
    c                   óØ  ^ • \ rS rSr% \\S'   SrS\4U 4S jjrS rS r	S\
R                  4S jrS	 r\            SS\R                   S
-  S\R                   S
-  S\R"                  S
-  S\R$                  S
-  S\\\R                         S
-  S\S
-  S\R"                  S
-  S\R*                  S
-  S\S
-  S\S
-  S\S
-  S\S
-  S\\R                      \-  4S jj5       rSrU =r$ )Ú"Pix2StructForConditionalGenerationiv  rL   r\   c                 óÎ   >• [         TU ]  U5        [        UR                  5      U l        [        UR                  5      U l        UR                  U l        U R                  5         g rO   )
r$   r%   r  Úvision_configr  ró   ré   ÚdecoderÚis_vqar  rZ   s     €r/   r%   Ú+Pix2StructForConditionalGeneration.__init__  sK   ø€ Ü‰Ñ˜Ô ä,¨V×-AÑ-AÓBˆŒÜ*¨6×+=Ñ+=Ó>ˆŒà—m‘mˆŒð 	�‰Õr1   c                 ó6   • U R                   R                  5       $ rO   )rÛ  r  r  s    r/   r  Ú7Pix2StructForConditionalGeneration.get_input_embeddingsŠ  s   € Ø�|‰|×0Ñ0Ó2Ð2r1   c                 ó:   • U R                   R                  U5        g rO   )rÛ  rº  r¸  s     r/   rº  Ú7Pix2StructForConditionalGeneration.set_input_embeddings�  s   € Ø�‰×)Ñ)¨.Õ9r1   rM   c                 ó6   • U R                   R                  5       $ rO   )rÛ  Úget_output_embeddingsr  s    r/   rã  Ú8Pix2StructForConditionalGeneration.get_output_embeddings�  s   € Ø�|‰|×1Ñ1Ó3Ð3r1   c                 ó:   • U R                   R                  U5        g rO   )rÛ  Úset_output_embeddingsr¸  s     r/   ræ  Ú8Pix2StructForConditionalGeneration.set_output_embeddings“  s   € Ø�‰×*Ñ*¨>Õ:r1   Nrˆ   rÙ   rÛ   r"  rv  r¼  Údecoder_inputs_embedsrž  rÈ   rÉ   r  c                 ó2  • U	b  U	OU R                   R                  R                  n	Ub  UOU R                   R                  nUc  U R	                  UUU
UUS9nORU(       aK  [        U[        5      (       d6  [        US   [        U5      S:”  a  US   OS[        U5      S:”  a  US   OSS9nUS   nUbX  UcU  UcR  U R                  U5      nUb  UO2UR                  U R                   R                  5      R                  5       nSUSS2S4'   U R                  UUUUUUU	U
UUUS9nU(       d  Xõ-   $ [        UR                  UR                  UR                   UR"                  UR$                  UR&                  UR(                  UR"                  UR$                  S9	$ )	aŒ  
flattened_patches (`torch.FloatTensor` of shape `(batch_size, seq_length, hidden_size)`):
    Flattened pixel patches. the `hidden_size` is obtained by the following formula: `hidden_size` =
    `num_channels` * `patch_size` * `patch_size`

    The process of flattening the pixel patches is done by `Pix2StructProcessor`.
decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
    Indices of decoder input sequence tokens in the vocabulary.

    Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
    [`PreTrainedTokenizer.__call__`] for details.

    [What are decoder input IDs?](../glossary#decoder-input-ids)

    Pix2StructText uses the `pad_token_id` as the starting token for `decoder_input_ids` generation. If
    `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see
    `past_key_values`).

    To know more on how to prepare `decoder_input_ids` for pretraining take a look at [Pix2StructText
    Training](./t5#training).
decoder_attention_mask (`torch.BoolTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
    Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
    be used by default.
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss for the decoder.

Example:

Inference:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Pix2StructForConditionalGeneration

>>> processor = AutoProcessor.from_pretrained("google/pix2struct-textcaps-base")
>>> model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-textcaps-base")

>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=image, return_tensors="pt")

>>> # autoregressive generation
>>> generated_ids = model.generate(**inputs, max_new_tokens=50)
>>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> print(generated_text)
A stop sign is on a street corner.

>>> # conditional generation
>>> text = "A picture of"
>>> inputs = processor(text=text, images=image, return_tensors="pt", add_special_tokens=False)

>>> generated_ids = model.generate(**inputs, max_new_tokens=50)
>>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> print(generated_text)
A picture of a stop sign with a red stop sign
```

Training:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Pix2StructForConditionalGeneration

>>> processor = AutoProcessor.from_pretrained("google/pix2struct-base")
>>> model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-base")

>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> text = "A stop sign is on the street corner."

>>> inputs = processor(images=image, return_tensors="pt")
>>> labels = processor(text=text, return_tensors="pt").input_ids

>>> # forward pass
>>> outputs = model(**inputs, labels=labels)
>>> loss = outputs.loss
>>> print(f"{loss.item():.5f}")
5.94282
```N)r\   rˆ   rÈ   rÉ   r  r   r   r3   rÌ   )rÚ   rˆ   r  rv  r¤  r¥  rž  rÈ   rÉ   r¼  r  )	rÆ  rÇ  rv  Údecoder_hidden_statesÚdecoder_attentionsrÈ  Úencoder_last_hidden_stater¤  Úencoder_attentions)rL   ré   rž  r  r  r£   r   Úlenr  Únerþ   r   rÛ  r   rÆ  rÇ  rv  r>   rÎ   rÈ  rÍ   )r+   r\   rˆ   rÙ   rÛ   r"  rv  r¼  rè  rž  rÈ   rÉ   r  r|   r>   Údecoder_outputss                   r/   r@   Ú*Pix2StructForConditionalGeneration.forward–  sÆ  € ðN "+Ñ!6‘I¸D¿K¹K×<SÑ<S×<]Ñ<]ˆ	Ø%0Ñ%<‘kÀ$Ç+Á+×BYÑBYˆð Ñ"Ø"Ÿl™lØ"3Ø-Ø"3Ø%9Ø'ð +ð ‰Oö ¤¨O¼_×!MÑ!MÜ-Ø"1°!Ñ"4Ü47¸Ó4HÈ1Ó4L˜o¨aÒ0ÐRVÜ14°_Ó1EÈÓ1I˜?¨1Ò-ÈtñˆOð (¨Ñ*ˆàÑÐ"3Ñ";Ð@UÑ@]à $× 1Ñ 1°&Ó 9Ðð *Ñ5ñ 'à&×)Ñ)¨$¯+©+×*BÑ*BÓC×IÑIÓKð #ð ,-Ð"¢1 a 4Ñ(ð Ÿ,™,Ø'Ø1Ø/Ø+Ø"/Ø#1ØØ/Ø!5ØØ#ð 'ð 
ˆö Ø"Ñ4Ð4äØ ×%Ñ%Ø"×)Ñ)Ø+×;Ñ;Ø"1×"?Ñ"?Ø.×9Ñ9Ø,×=Ñ=Ø&5×&GÑ&GØ"1×"?Ñ"?Ø.×9Ñ9ñ

ð 
	
r1   )rÛ  r  rÜ  )NNNNNNNNNNNN)rB   rC   rD   rE   r   r  r&  r%   r  rº  r   ÚModulerã  ræ  r   r'   rÖ  rÕ  Ú
BoolTensorr½   r   rf   rÓ   r   r@   rF   rG   rH   s   @r/   rØ  rØ  v  s  ø‡ ð ÓØ)€Oð	Ð/÷ 	ò3ò:ð4 r§y¡yô 4ò;ð ð 7;Ø37Ø59Ø:>ØBFØ(,Ø*.Ø59Ø!%Ø)-Ø,0Ø#'ñb
à ×,Ñ,¨tÑ3ðb
ð ×)Ñ)¨DÑ0ðb
ð !×+Ñ+¨dÑ2ð	b
ð
 !&× 0Ñ 0°4Ñ 7ðb
ð ˜u U×%6Ñ%6Ñ7Ñ8¸4Ñ?ðb
ð  ™ðb
ð × Ñ  4Ñ'ðb
ð  %Ÿ|™|¨dÑ2ðb
ð ˜$‘;ðb
ð   $™;ðb
ð # T™kðb
ð ˜D‘[ðb
ð 
ˆu× Ñ Ñ	!Ð$6Ñ	6ôb
ó öb
r1   rØ  )rÕ   rØ  r  ró   )Nr~   N)Cre   rM  Úcollections.abcr   r'   r   Ú r   ræ   Úactivationsr   Úcache_utilsr   r	   r
   Ú
generationr   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úconfiguration_pix2structr   r   r   Ú
get_loggerrB   rE  rò  r!   rJ   rh   r”   r¬   r¿   rÕ   r  rè   r0  rf   r   r„   rí   r‚  r‘  r—  ró   rØ  Ú__all__rË   r1   r/   Ú<module>r     sW  ðñ ã Ý $ã Ý å &Ý !ß CÑ CÝ )ß JÝ 9÷õ ÷ GÝ &÷õ ÷ eÑ dð 
×	Ò	˜HÓ	%€ô+˜"Ÿ)™)ô +ô2! §¡ô !ôH9) §	¡	ô 9)ôz˜"Ÿ)™)ô ô:"*Ð6ô "*ôJ"
˜bŸi™iô "
ðJ ôn! ó n!ó ðn!ðb ôd
Ð5ó d
ó ðd
ôP r§y¡yô ô:˜BŸI™Iô ð. !ØØ)-ñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð �T‰\ð%ð ð%ð —<‘< $Ñ&ð%ð Ð'Ñ(õ%ô@F8˜bŸi™iô F8ôT= r§y¡yô =ôB9¨¯	©	ô 9ô>M+Ð4ô M+ñ` ðñô
U
Ð3ó U
óð
U
ñp ðñô
~
Ð)BÀOó ~
óð
~
òB�r1   