
    Z jL^              	          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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  SSKJr  \R0                  " \5      r\" SS9\ " S S\5      5       5       rS:S\R8                  S\S\S\R8                  4S jjr " S S\R@                  5      r! " S S\R@                  5      r" " S S\R@                  5      r# " S S\R@                  5      r$ " S S\R@                  5      r% " S  S!\R@                  5      r& " S" S#\R@                  5      r' " S$ S%\R@                  5      r( " S& S'\R@                  5      r) " S( S)\R@                  5      r* " S* S+\R@                  5      r+ " S, S-\R@                  5      r, " S. S/\R@                  5      r- " S0 S1\R@                  5      r.\ " S2 S3\5      5       r/\ " S4 S5\/5      5       r0\" S6S9 " S7 S8\/5      5       r1/ S9Qr2g);zPyTorch CvT model.    N)	dataclass)nn)BCEWithLogitsLossCrossEntropyLossMSELoss   )initialization)$ImageClassifierOutputWithNoAttentionModelOutput)PreTrainedModel)auto_docstringlogging   )	CvtConfigzV
    Base class for model's outputs, with potential hidden states and attentions.
    )custom_introc                       \ rS rSr% SrSr\R                  S-  \S'   Sr	\R                  S-  \S'   Sr
\\R                  S4   S-  \S'   Srg)	BaseModelOutputWithCLSToken!   z
cls_token_value (`torch.FloatTensor` of shape `(batch_size, 1, hidden_size)`):
    Classification token at the output of the last layer of the model.
Nlast_hidden_statecls_token_value.hidden_states )__name__
__module____qualname____firstlineno____doc__r   torchFloatTensor__annotations__r   r   tuple__static_attributes__r       u/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/models/cvt/modeling_cvt.pyr   r   !   sS    
 37u((4/604OU&&-4:>M5**C/047>r#   r   input	drop_probtrainingreturnc                    US:X  d  U(       d  U $ SU-
  nU R                   S   4SU R                  S-
  -  -   nU[        R                  " X@R                  U R
                  S9-   nUR                  5         U R                  U5      U-  nU$ )z[
Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks).

        r   r   )r   )dtypedevice)shapendimr   randr+   r,   floor_div)r%   r&   r'   	keep_probr-   random_tensoroutputs          r$   	drop_pathr5   3   s    
 CxII[[^

Q 77E

5ELL YYMYYy!M1FMr#   c                      ^  \ rS rSrSrSS\S-  SS4U 4S jjjrS\R                  S\R                  4S jr	S\
4S	 jrS
rU =r$ )CvtDropPathC   zXDrop paths (Stochastic Depth) per sample (when applied in main path of residual blocks).Nr&   r(   c                 .   > [         TU ]  5         Xl        g N)super__init__r&   )selfr&   	__class__s     r$   r<   CvtDropPath.__init__F   s    "r#   r   c                 B    [        XR                  U R                  5      $ r:   )r5   r&   r'   )r=   r   s     r$   forwardCvtDropPath.forwardJ   s    FFr#   c                      SU R                    3$ )Nzp=r&   )r=   s    r$   
extra_reprCvtDropPath.extra_reprM   s    DNN#$$r#   rD   r:   )r   r   r   r   r   floatr<   r   TensorrA   strrE   r"   __classcell__r>   s   @r$   r7   r7   C   sQ    b#%$, #$ # #GU\\ Gell G%C % %r#   r7   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )CvtEmbeddingsQ   z
Construct the CvT embeddings.
c                 x   > [         TU ]  5         [        XX4US9U l        [        R
                  " U5      U l        g )N)
patch_sizenum_channels	embed_dimstridepadding)r;   r<   CvtConvEmbeddingsconvolution_embeddingsr   Dropoutdropout)r=   rP   rQ   rR   rS   rT   dropout_rater>   s          r$   r<   CvtEmbeddings.__init__V   s5    &7!	jq'
# zz,/r#   c                 J    U R                  U5      nU R                  U5      nU$ r:   rV   rX   )r=   pixel_valueshidden_states      r$   rA   CvtEmbeddings.forward]   s&    22<@||L1r#   r\   	r   r   r   r   r   r<   rA   r"   rJ   rK   s   @r$   rM   rM   Q   s    0 r#   rM   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )rU   c   z
Image to Conv Embedding.
c                    > [         TU ]  5         [        U[        R                  R
                  5      (       a  UOX4nXl        [        R                  " X#XUS9U l	        [        R                  " U5      U l        g )N)kernel_sizerS   rT   )r;   r<   
isinstancecollectionsabcIterablerP   r   Conv2d
projection	LayerNormnormalization)r=   rP   rQ   rR   rS   rT   r>   s         r$   r<   CvtConvEmbeddings.__init__h   sZ    #-j+//:R:R#S#SZZdYq
$))Llst\\)4r#   c                    U R                  U5      nUR                  u  p#pEXE-  nUR                  X#U5      R                  SSS5      nU R                  (       a  U R	                  U5      nUR                  SSS5      R                  X#XE5      nU$ Nr      r   )rj   r-   viewpermuterl   )r=   r]   
batch_sizerQ   heightwidthhidden_sizes          r$   rA   CvtConvEmbeddings.forwardo   s    |42>2D2D/
&n#((;OWWXY[\^_`--l;L#++Aq!499*TZbr#   )rl   rP   rj   r`   rK   s   @r$   rU   rU   c   s    5
 
r#   rU   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CvtSelfAttentionConvProjection|   c           
         > [         TU ]  5         [        R                  " UUUUUSUS9U l        [        R
                  " U5      U l        g )NF)rd   rT   rS   biasgroups)r;   r<   r   ri   convolutionBatchNorm2drl   )r=   rR   rd   rT   rS   r>   s        r$   r<   'CvtSelfAttentionConvProjection.__init__}   sG    99#
  ^^I6r#   c                 J    U R                  U5      nU R                  U5      nU$ r:   r~   rl   r=   r^   s     r$   rA   &CvtSelfAttentionConvProjection.forward   s(    ''5)),7r#   r   r   r   r   r   r<   rA   r"   rJ   rK   s   @r$   ry   ry   |   s    7 r#   ry   c                       \ rS rSrS rSrg) CvtSelfAttentionLinearProjection   c                 r    UR                   u  p#pEXE-  nUR                  X#U5      R                  SSS5      nU$ ro   )r-   rq   rr   )r=   r^   rs   rQ   rt   ru   rv   s          r$   rA   (CvtSelfAttentionLinearProjection.forward   sC    2>2D2D/
&n#((;OWWXY[\^_`r#   r   N)r   r   r   r   rA   r"   r   r#   r$   r   r      s    r#   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )CvtSelfAttentionProjection   c                 n   > [         TU ]  5         US:X  a  [        XX45      U l        [	        5       U l        g )Ndw_bn)r;   r<   ry   convolution_projectionr   linear_projection)r=   rR   rd   rT   rS   projection_methodr>   s         r$   r<   #CvtSelfAttentionProjection.__init__   s1    '*Hah*qD'!A!Cr#   c                 J    U R                  U5      nU R                  U5      nU$ r:   r   r   r   s     r$   rA   "CvtSelfAttentionProjection.forward   s(    22<@--l;r#   r   )r   r   rK   s   @r$   r   r      s    D r#   r   c                   :   ^  \ rS rSr SU 4S jjrS rS rSrU =r$ )CvtSelfAttention   c                   > [         TU ]  5         US-  U l        Xl        X l        Xl        [        UUUUUS:X  a  SOUS9U l        [        X#XWUS9U l        [        X#XWUS9U l	        [        R                  " X"U	S9U l        [        R                  " X"U	S9U l        [        R                  " X"U	S9U l        [        R                  " U
5      U l        g )Ng      avglinear)r   )r|   )r;   r<   scalewith_cls_tokenrR   	num_headsr   convolution_projection_queryconvolution_projection_keyconvolution_projection_valuer   Linearprojection_queryprojection_keyprojection_valuerW   rX   )r=   r   rR   rd   	padding_q
padding_kvstride_q	stride_kvqkv_projection_methodqkv_biasattention_drop_rater   kwargsr>   s                r$   r<   CvtSelfAttention.__init__   s     	_
,"",F*?5*HhNc-
) +EJMb+
' -GJMb-
) !#		)X N ii	8L "		)X Nzz"56r#   c                     UR                   u  p#nU R                  U R                  -  nUR                  X#U R                  U5      R	                  SSSS5      $ )Nr   rp   r   r   )r-   rR   r   rq   rr   )r=   r^   rs   rv   _head_dims         r$   "rearrange_for_multi_head_attention3CvtSelfAttention.rearrange_for_multi_head_attention   sR    %1%7%7"
>>T^^3  $..(S[[\]_`bcefggr#   c                 R   U R                   (       a  [        R                  " USX#-  /S5      u  pAUR                  u  pVnUR	                  SSS5      R                  XWX#5      nU R                  U5      nU R                  U5      n	U R                  U5      n
U R                   (       aC  [        R                  " WU	4SS9n	[        R                  " XH4SS9n[        R                  " XJ4SS9n
U R                  U R                  -  nU R                  U R                  U	5      5      n	U R                  U R                  U5      5      nU R                  U R                  U
5      5      n
[        R                   " SX/5      U R"                  -  n[        R$                  R&                  R)                  USS9nU R+                  U5      n[        R                   " SX/5      nUR                  u    pnUR	                  SSSS5      R-                  5       R                  XVU R                  U-  5      nU$ )	Nr   r   rp   dimzbhlk,bhtk->bhltzbhlt,bhtv->bhlvr   )r   r   splitr-   rr   rq   r   r   r   catrR   r   r   r   r   r   einsumr   r   
functionalsoftmaxrX   
contiguous)r=   r^   rt   ru   	cls_tokenrs   rv   rQ   keyqueryvaluer   attention_scoreattention_probscontextr   s                   r$   rA   CvtSelfAttention.forward   s   &+kk,FN@SUV&W#I0<0B0B-
#++Aq!499*TZb--l;11,?11,?IIy%0a8E))Y,!4CIIy0a8E>>T^^3778M8Me8TU55d6I6I#6NO778M8Me8TU,,'85,G$**T((--55o25N,,7,,0?2JK&}}11//!Q1-88:??
Y]YgYgjrYrsr#   )r   r   r   rX   rR   r   r   r   r   r   r   T)	r   r   r   r   r<   r   rA   r"   rJ   rK   s   @r$   r   r      s     '7Rh r#   r   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )CvtSelfOutput   z
The residual connection is defined in CvtLayer instead of here (as is the case with other models), due to the
layernorm applied before each block.
c                    > [         TU ]  5         [        R                  " X5      U l        [        R
                  " U5      U l        g r:   )r;   r<   r   r   denserW   rX   )r=   rR   	drop_rater>   s      r$   r<   CvtSelfOutput.__init__   s.    YYy4
zz),r#   c                 J    U R                  U5      nU R                  U5      nU$ r:   r   rX   r=   r^   input_tensors      r$   rA   CvtSelfOutput.forward  s$    zz,/||L1r#   r   r`   rK   s   @r$   r   r      s    
-
 r#   r   c                   4   ^  \ rS rSr SU 4S jjrS rSrU =r$ )CvtAttentioni  c                 v   > [         TU ]  5         [        UUUUUUUUU	U
U5      U l        [	        X+5      U l        g r:   )r;   r<   r   	attentionr   r4   )r=   r   rR   rd   r   r   r   r   r   r   r   r   r   r>   s                r$   r<   CvtAttention.__init__	  sK     	)!
 $I9r#   c                 L    U R                  XU5      nU R                  XA5      nU$ r:   r   r4   )r=   r^   rt   ru   self_outputattention_outputs         r$   rA   CvtAttention.forward(  s'    nn\5A;;{Ar#   r   r   r   rK   s   @r$   r   r     s     :>   r#   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CvtIntermediatei.  c                    > [         TU ]  5         [        R                  " U[	        X-  5      5      U l        [        R                  " 5       U l        g r:   )r;   r<   r   r   intr   GELU
activation)r=   rR   	mlp_ratior>   s      r$   r<   CvtIntermediate.__init__/  s5    YYy#i.C*DE
'')r#   c                 J    U R                  U5      nU R                  U5      nU$ r:   )r   r   r   s     r$   rA   CvtIntermediate.forward4  s$    zz,/|4r#   )r   r   r   rK   s   @r$   r   r   .  s    $
 r#   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	CvtOutputi:  c                    > [         TU ]  5         [        R                  " [	        X-  5      U5      U l        [        R                  " U5      U l        g r:   )r;   r<   r   r   r   r   rW   rX   )r=   rR   r   r   r>   s       r$   r<   CvtOutput.__init__;  s8    YYs9#899E
zz),r#   c                 R    U R                  U5      nU R                  U5      nX-   nU$ r:   r   r   s      r$   rA   CvtOutput.forward@  s,    zz,/||L1#2r#   r   r   rK   s   @r$   r   r   :  s    -
 r#   r   c                   8   ^  \ rS rSrSr SU 4S jjrS rSrU =r$ )CvtLayeriG  zZ
CvtLayer composed by attention layers, normalization and multi-layer perceptrons (mlps).
c                 X  > [         TU ]  5         [        UUUUUUUUU	U
UU5      U l        [	        X,5      U l        [        X,U5      U l        US:  a	  [        US9O[        R                  " 5       U l        [        R                  " U5      U l        [        R                  " U5      U l        g )Nr*   rD   )r;   r<   r   r   r   intermediater   r4   r7   r   Identityr5   rk   layernorm_beforelayernorm_after)r=   r   rR   rd   r   r   r   r   r   r   r   r   r   drop_path_rater   r>   s                  r$   r<   CvtLayer.__init__L  s    " 	%!
 ,IA	i@BPSVBV~>\^\g\g\i "Y 7!||I6r#   c                     U R                  U R                  U5      UU5      nUnU R                  U5      nXQ-   nU R                  U5      nU R	                  U5      nU R                  Xa5      nU R                  U5      nU$ r:   )r   r   r5   r   r   r4   )r=   r^   rt   ru   self_attention_outputr   layer_outputs          r$   rA   CvtLayer.forwards  s     $!!,/!

 1>>*:; (6 ++L9((6 {{<>~~l3r#   )r   r5   r   r   r   r4   r   r`   rK   s   @r$   r   r   G  s    & %7N r#   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CvtStagei  c                   > [         TU ]  5         Xl        X l        U R                  R                  U R                     (       aH  [
        R                  " [        R                  " SSU R                  R                  S   5      5      U l        [        UR                  U R                     UR                  U R                     U R                  S:X  a  UR                  OUR                  U R                  S-
     UR                  U R                     UR                  U R                     UR                  U R                     S9U l        [        R"                  " SUR$                  U R                     UR&                  U   SS9 Vs/ s H  o3R)                  5       PM     nn[
        R*                  " [-        UR&                  U R                     5       Vs/ s GHQ  n[/        UR0                  U R                     UR                  U R                     UR2                  U R                     UR4                  U R                     UR6                  U R                     UR8                  U R                     UR:                  U R                     UR<                  U R                     UR>                  U R                     UR@                  U R                     UR                  U R                     X@R                     URB                  U R                     UR                  U R                     S9PGMT     sn6 U l"        g s  snf s  snf )Nr   r   r   )rP   rS   rQ   rR   rT   rY   cpu)r,   )r   rR   rd   r   r   r   r   r   r   r   r   r   r   r   )#r;   r<   configstager   r   	Parameterr   randnrR   rM   patch_sizespatch_striderQ   patch_paddingr   	embeddinglinspacer   depthitem
Sequentialranger   r   
kernel_qkvr   r   r   r   r   r   r   r   layers)r=   r   r   xdrop_path_ratesr   r>   s         r$   r<   CvtStage.__init__  s   
;;  ,\\%++aDKK<Q<QRT<U*VWDN&))$**5&&tzz204

a,,VEUEUVZV`V`cdVdEe&&tzz2((4))$**5
 $nnQ0E0Edjj0QSYS_S_`eSfotu
uFFHu 	 
 mm$ v||DJJ78#" 9A! $..tzz:$..tzz: & 1 1$** =$..tzz:%00<$..tzz:#__TZZ8*0*F*Ftzz*R#__TZZ8(.(B(B4::(N$..tzz:#2::#>$..tzz:#)#3#3DJJ#?  9#
	

s   L7EL<c                 Z   S nU R                  U5      nUR                  u  p4pVUR                  X4XV-  5      R                  SSS5      nU R                  R
                  U R                     (       a3  U R
                  R                  USS5      n[        R                  " X!4SS9nU R                   H  nU" XU5      nUnM     U R                  R
                  U R                     (       a  [        R                  " USXV-  /S5      u  p!UR                  SSS5      R                  X4XV5      nX4$ )Nr   rp   r   r   r   )r  r-   rq   rr   r   r   r   expandr   r   r  r   )	r=   r^   r   rs   rQ   rt   ru   layerlayer_outputss	            r$   rA   CvtStage.forward  s   	~~l32>2D2D/
&#((6>RZZ[\^_abc;;  ,--j"bAI 99i%>AFL[[E!,>M(L ! ;;  ,&+kk,FN@SUV&W#I#++Aq!499*TZb&&r#   )r   r   r  r  r   r   rK   s   @r$   r   r     s    (
T' 'r#   r   c                   2   ^  \ rS rSrU 4S jrSS jrSrU =r$ )
CvtEncoderi  c                    > [         TU ]  5         Xl        [        R                  " / 5      U l        [        [        UR                  5      5       H'  nU R
                  R                  [        X5      5        M)     g r:   )r;   r<   r   r   
ModuleListstagesr  lenr  appendr   )r=   r   	stage_idxr>   s      r$   r<   CvtEncoder.__init__  sR    mmB's6<<01IKKx:; 2r#   c                     U(       a  SOS nUnS n[        U R                  5       H  u  pxU" U5      u  pVU(       d  M  XE4-   nM     U(       d  [        S XVU4 5       5      $ [        UUUS9$ )Nr   c              3   .   #    U  H  oc  M  Uv   M     g 7fr:   r   ).0vs     r$   	<genexpr>%CvtEncoder.forward.<locals>.<genexpr>  s     b$Pq$Ps   	r   r   r   )	enumerater  r!   r   )	r=   r]   output_hidden_statesreturn_dictall_hidden_statesr^   r   r   stage_modules	            r$   rA   CvtEncoder.forward  s|    "6BD#	!*4;;!7A&2<&@#L##$5$G! "8
 b\>O$Pbbb**%+
 	
r#   )r   r  )FTr   rK   s   @r$   r  r    s    <
 
r#   r  c                   \    \ rS rSr% \\S'   SrSrS/r\	R                  " 5       S 5       rSrg)	CvtPreTrainedModeli  r   cvtr]   r   c                    [        U[        R                  [        R                  45      (       ac  [        R
                  " UR                  SU R                  R                  S9  UR                  b!  [        R                  " UR                  5        gg[        U[        R                  [        R                  45      (       a  [        R                  " UR                  5        [        R                  " UR                  5        [        USS5      ba  [        R                  " UR                  5        [        R                  " UR                   5        [        R                  " UR"                  5        gg[        U[$        5      (       a^  U R                  R&                  UR(                     (       a5  [        R
                  " UR&                  SU R                  R                  S9  ggg)zInitialize the weightsr*   )meanstdNrunning_mean)re   r   r   ri   inittrunc_normal_weightr   initializer_ranger|   zeros_rk   r   ones_getattrr2  running_varnum_batches_trackedr   r   r   )r=   modules     r$   _init_weights CvtPreTrainedModel._init_weights  s3    fryy"))455v}}3DKK<Y<YZ{{&FKK( 'r~~ >??KK$JJv}}%v~t4@F//0

6--.F667 A )){{$$V\\2""6#3#3#4;;C`C`a 3 *r#   r   N)r   r   r   r   r   r    base_model_prefixmain_input_name_no_split_modulesr   no_gradr=  r"   r   r#   r$   r-  r-    s5    $O#
]]_b br#   r-  c                      ^  \ rS rSrS
U 4S jjr\   SS\R                  S-  S\S-  S\S-  S\	\
-  4S jj5       rS	rU =r$ )CvtModeli  c                 p   > [         TU ]  U5        Xl        [        U5      U l        U R                  5         g)z^
add_pooling_layer (bool, *optional*, defaults to `True`):
    Whether to add a pooling layer
N)r;   r<   r   r  encoder	post_init)r=   r   add_pooling_layerr>   s      r$   r<   CvtModel.__init__   s-    
 	 !&)r#   Nr]   r'  r(  r(   c                    Ub  UOU R                   R                  nUb  UOU R                   R                  nUc  [        S5      eU R	                  UUUS9nUS   nU(       d	  U4USS  -   $ [        UUR                  UR                  S9$ )Nz You have to specify pixel_valuesr'  r(  r   r   r%  )r   r'  r(  
ValueErrorrF  r   r   r   )r=   r]   r'  r(  r   encoder_outputssequence_outputs          r$   rA   CvtModel.forward
  s     %9$D $++JjJj 	 &1%<k$++BYBY?@@,,!5# ' 

 *!,#%(;;;*-+;;)77
 	
r#   )r   rF  r   )NNN)r   r   r   r   r<   r   r   rH   boolr!   r   rA   r"   rJ   rK   s   @r$   rD  rD    sd      -1,0#'	
llT)
 #Tk
 D[	
 
,	,
 
r#   rD  z
    Cvt Model transformer with an image classification head on top (a linear layer on top of the final hidden state of
    the [CLS] token) e.g. for ImageNet.
    c                      ^  \ rS rSrU 4S jr\    SS\R                  S-  S\R                  S-  S\S-  S\S-  S\	\
-  4
S	 jj5       rS
rU =r$ )CvtForImageClassificationi+  c                   > [         TU ]  U5        UR                  U l        [        USS9U l        [
        R                  " UR                  S   5      U l        UR                  S:  a.  [
        R                  " UR                  S   UR                  5      O[
        R                  " 5       U l        U R                  5         g )NF)rH  r   r   )r;   r<   
num_labelsrD  r.  r   rk   rR   	layernormr   r   
classifierrG  )r=   r   r>   s     r$   r<   "CvtForImageClassification.__init__2  s      ++Fe<f&6&6r&:; CIBSBSVWBWBIIf&&r*F,=,=>]_]h]h]j 	
 	r#   Nr]   labelsr'  r(  r(   c                 n   Ub  UOU R                   R                  nU R                  UUUS9nUS   nUS   nU R                   R                  S   (       a  U R	                  U5      nOEUR
                  u  ppUR                  XX-  5      R                  SSS5      nU R	                  U5      nUR                  SS9nU R                  U5      nSnUGb  U R                   R                  c  U R                   R                  S:X  a  SU R                   l
        OyU R                   R                  S:  aN  UR                  [        R                  :X  d  UR                  [        R                  :X  a  S	U R                   l
        OS
U R                   l
        U R                   R                  S:X  aS  [!        5       nU R                   R                  S:X  a&  U" UR#                  5       UR#                  5       5      nOU" X5      nOU R                   R                  S	:X  aG  [%        5       nU" UR                  SU R                   R                  5      UR                  S5      5      nO,U R                   R                  S
:X  a  ['        5       nU" X5      nU(       d  U4USS -   nUb  U4U-   $ U$ [)        XUR*                  S9$ )ab  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
NrK  r   r   r   rp   r   
regressionsingle_label_classificationmulti_label_classification)losslogitsr   )r   r(  r.  r   rU  r-   rq   rr   r0  rV  problem_typerT  r+   r   longr   r   squeezer   r   r
   r   )r=   r]   rX  r'  r(  r   outputsrN  r   rs   rQ   rt   ru   sequence_output_meanr^  r]  loss_fctr4   s                     r$   rA   !CvtForImageClassification.forward@  sQ    &1%<k$++BYBY((!5#  
 "!*AJ	;;  $"nnY7O6E6K6K3Jf-22:V^\ddefhiklmO"nn_=O.333:!56{{''/;;))Q./;DKK,[[++a/V\\UZZ5OSYS_S_chclclSl/LDKK,/KDKK,{{''<7"9;;))Q.#FNN$4fnn6FGD#F3D))-JJ+-B0F0F GUWY))-II,./Y,F)-)9TGf$EvE3\c\q\qrrr#   )rV  r.  rU  rT  )NNNN)r   r   r   r   r<   r   r   rH   rP  r!   r
   rA   r"   rJ   rK   s   @r$   rR  rR  +  s      -1&*,0#'=sllT)=s t#=s #Tk	=s
 D[=s 
5	5=s =sr#   rR  )rR  rD  r-  )r*   F)3r   collections.abcrf   dataclassesr   r   r   torch.nnr   r   r    r	   r3  modeling_outputsr
   r   modeling_utilsr   utilsr   r   configuration_cvtr   
get_loggerr   loggerr   rH   rG   rP  r5   Moduler7   rM   rU   ry   r   r   r   r   r   r   r   r   r   r  r-  rD  rR  __all__r   r#   r$   <module>rr     s     !   A A & Q - , ( 
		H	% 
 ?+ ? ?U\\ e T V[VbVb  %")) %BII $		 2RYY (ryy 
 
Nryy NbBII "# 299 # L	bii 	
		 
?ryy ?D<'ryy <'~
 
8 b b b2 )
! )
 )
X Ms 2 MsMs` Jr#   