§
    ‚Štj*®  ã                   ó  — d Z ddlZddlmZ ddlmZ ddlZddlmZ ddlm	Z
 ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlmZmZmZmZ ddlmZmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.  e&j/        e0¦  «        Z1 e%d¬¦  «        e G d„ de#¦  «        ¦   «         ¦   «         Z2 G d„ dej3        ¦  «        Z4 G d„ dej3        ¦  «        Z5 G d„ dej3        ¦  «        Z6d e5iZ7 G d!„ d"ej3        ¦  «        Z8 G d#„ d$ej3        ¦  «        Z9 G d%„ d&ej3        ¦  «        Z: G d'„ d(e¦  «        Z; G d)„ d*ej3        ¦  «        Z<e% G d+„ d,e¦  «        ¦   «         Z= G d-„ d.ej3        ¦  «        Z> G d/„ d0ej3        ¦  «        Z?	 dNd2ej3        d3ej@        d4ej@        d5ej@        d6ej@        dz  d7eAd8eAfd9„ZB G d:„ d;ej3        ¦  «        ZC G d<„ d=e¦  «        ZD G d>„ d?ej3        ¦  «        ZE G d@„ dAej3        ¦  «        ZF e%dB¬¦  «         G dC„ dDe=¦  «        ¦   «         ZG G dE„ dFej3        ¦  «        ZH e%dG¬¦  «         G dH„ dIe=¦  «        ¦   «         ZI e%dJ¬¦  «         G dK„ dLe=e¦  «        ¦   «         ZJg dM¢ZKdS )OzPyTorch GIT model.é    N)ÚCallable)Ú	dataclass)Únné   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPastÚBaseModelOutputWithPoolingÚCausalLMOutputWithPast)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚModelOutputÚTransformersKwargsÚauto_docstringÚloggingÚ	torch_int)Úmerge_with_config_defaults)Úcapture_outputsé   )Ú	GitConfigÚGitVisionConfigz}
    Base class for vision model's outputs that also contains image embeddings of the pooling of the last hidden states.
    )Úcustom_introc                   ó¬   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
ej        df         dz  ed<   dZe
ej        df         dz  ed<   dS )ÚGitVisionModelOutputzø
    image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim)` *optional* returned when model is initialized with `with_projection=True`):
        The image embeddings obtained by applying the projection layer to the pooler_output.
    NÚimage_embedsÚlast_hidden_state.Úhidden_statesÚ
attentions)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r#   ÚtorchÚFloatTensorÚ__annotations__r$   r%   Útupler&   © ó    úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/git/modeling_git.pyr"   r"   6   s“   € € € € € € ðð ð
 .2€L�%Ô# dÑ*Ð1Ð1Ñ1Ø26Ð�uÔ(¨4Ñ/Ð6Ð6Ñ6Ø:>€M�5˜Ô*¨CÐ/Ô0°4Ñ7Ð>Ð>Ñ>Ø7;€J��eÔ'¨Ð,Ô-°Ñ4Ð;Ð;Ñ;Ð;Ð;r0   r"   c                   ó‚   ‡ — e Zd ZdZˆ fd„Z	 	 	 	 ddej        dz  dej        dz  dej        dz  ded	ej	        f
d
„Z
ˆ xZS )ÚGitEmbeddingsz;Construct the embeddings from word and position embeddings.c                 óð  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¬¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          j
        |j        |j        ¬¦  «        | _
        t          j        |j        ¦  «        | _        |                      dt!          j        |j        ¦  «                             d¦  «        d¬¦  «         d S )N)Úpadding_idx©ÚepsÚposition_ids©r   éÿÿÿÿF©Ú
persistent)ÚsuperÚ__init__r   Ú	EmbeddingÚ
vocab_sizeÚhidden_sizeÚpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsÚ	LayerNormÚlayer_norm_epsÚDropoutÚhidden_dropout_probÚdropoutÚregister_bufferr+   ÚarangeÚexpand©ÚselfÚconfigÚ	__class__s     €r1   r>   zGitEmbeddings.__init__L   sÒ   ø€ Ý‰Œ×ÒÑÔÐÝ!œ|¨FÔ,=¸vÔ?QÐ_eÔ_rÐsÑsÔsˆÔÝ#%¤<°Ô0NÐPVÔPbÑ#cÔ#cˆÔ åœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒà×ÒØ�EœL¨Ô)GÑHÔH×OÒOÐPWÑXÔXÐejð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r0   Nr   Ú	input_idsr8   Úinputs_embedsÚpast_key_values_lengthÚreturnc                 óh  — |�|                      ¦   «         }n|                      ¦   «         d d…         }|d         }|€| j        d d …|||z   …f         }|€|                      |¦  «        }n|}|                      |¦  «        }||z  }|                      |¦  «        }|                      |¦  «        }|S )Nr:   r   )Úsizer8   rC   rE   rF   rJ   )	rO   rR   r8   rS   rT   Úinput_shapeÚ
seq_lengthÚ
embeddingsrE   s	            r1   ÚforwardzGitEmbeddings.forwardX   sÍ   € ð Ð Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKà  ”^ˆ
àÐØÔ,¨Q¨Q¨QÐ0FÈÐVlÑIlÐ0lÐ-lÔmˆLàÐ Ø×-Ò-¨iÑ8Ô8ˆJˆJà&ˆJà"×6Ò6°|ÑDÔDÐØÐ)Ñ)ˆ
à—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐr0   )NNNr   )r'   r(   r)   r*   r>   r+   Ú
LongTensorr,   ÚintÚTensorr[   Ú__classcell__©rQ   s   @r1   r3   r3   I   s¯   ø€ € € € € ØEÐEð

ð 

ð 

ð 

ð 

ð .2Ø04Ø26Ø&'ðð àÔ# dÑ*ðð Ô&¨Ñ-ðð Ô(¨4Ñ/ð	ð
 !$ðð 
Œðð ð ð ð ð ð ð r0   r3   c                   ó„   ‡ — e Zd Zd	ˆ fd„	Z	 	 d
dej        dej        dz  dedz  dee	         de
ej                 f
d„Zˆ xZS )ÚGitSelfAttentionNc                 ó`  •— t          ¦   «                              ¦   «          |j        |j        z  dk    r0t	          |d¦  «        s t          d|j        › d|j        › d�¦  «        ‚|| _        |€(t                               d| j	        j
        › d�¦  «         |j        | _        t          |j        |j        z  ¦  «        | _        | j        | j        z  | _        t          |j        j        |j        j        z  dz  d	z   ¦  «        | _        |j        �| xj        |j        z  c_        t'          j        |j        | j        ¦  «        | _        t'          j        |j        | j        ¦  «        | _        t'          j        |j        | j        ¦  «        | _        t'          j        |j        ¦  «        | _        d S )
Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (ú)zInstantiating z¹ without passing a `layer_idx` is not recommended and will lead to errors during the forward call if caching is used. Please make sure to provide a `layer_idx` when creating this class.é   r   )r=   r>   rA   Únum_attention_headsÚhasattrÚ
ValueErrorÚ	layer_idxÚloggerÚwarning_oncerQ   r'   r]   Úattention_head_sizeÚall_head_sizeÚvision_configÚ
image_sizeÚ
patch_sizeÚimage_patch_tokensÚnum_image_with_embeddingr   ÚLinearÚqueryÚkeyÚvaluerH   Úattention_probs_dropout_probrJ   ©rO   rP   rj   rQ   s      €r1   r>   zGitSelfAttention.__init__w   s¨  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð8 FÔ$6ð 8ð 8Ø Ô4ð8ð 8ð 8ñô ð ð #ˆŒØÐÝ×Òð, ¤Ô!8ð ,ð ,ð ,ñô ð ð $*Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔÝ"% vÔ';Ô'FÈÔI]ÔIhÑ'hÐmnÑ&nÐqrÑ&rÑ"sÔ"sˆÔØÔ*Ð6ØÐ#Ô# vÔ'FÑFÐ#Ô#å”Y˜vÔ1°4Ô3EÑFÔFˆŒ
Ý”9˜VÔ/°Ô1CÑDÔDˆŒÝ”Y˜vÔ1°4Ô3EÑFÔFˆŒ
å”z &Ô"EÑFÔFˆŒˆˆr0   r%   Úattention_maskÚpast_key_valuesÚkwargsrU   c                 óä  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }	|�|                     ||	| j        ¦  «        \  }}	t          j
        ||                     dd¦  «        ¦  «        }
|
t          j        | j        ¦  «        z  }
|�|
|z   }
t          j                             |
d¬¦  «        }|                      |¦  «        }t          j
        ||	¦  «        }|                     dddd¦  «                             ¦   «         }|                     ¦   «         d d…         | j        fz   }|                     |¦  «        }||fS )Nr:   r   rf   éþÿÿÿ©Údimr   r   )Úshaperm   ru   ÚviewÚ	transposerv   rw   Úupdaterj   r+   ÚmatmulÚmathÚsqrtr   Ú
functionalÚsoftmaxrJ   ÚpermuteÚ
contiguousrW   rn   )rO   r%   rz   r{   r|   rX   Úhidden_shapeÚquery_layerÚ	key_layerÚvalue_layerÚattention_scoresÚattention_probsÚcontext_layerÚnew_context_layer_shapes                 r1   r[   zGitSelfAttention.forward“   sÜ  € ð $Ô)¨#¨2¨#Ô.ˆØC˜ÐC bÐC¨$Ô*BÐCÐCˆØ—j’j Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆà—H’H˜]Ñ+Ô+×0Ò0°Ñ>Ô>×HÒHÈÈAÑNÔNˆ	Ø—j’j Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆØÐ&Ø%4×%;Ò%;¸IÀ{ÐTXÔTbÑ%cÔ%cÑ"ˆI�{õ !œ<¨°Y×5HÒ5HÈÈRÑ5PÔ5PÑQÔQÐà+­d¬i¸Ô8PÑ.QÔ.QÑQÐØÐ%à/°.Ñ@Ðõ œ-×/Ò/Ð0@ÀbÐ/ÑIÔIˆð Ÿ,š, Ñ7Ô7ˆåœ _°kÑBÔBˆà%×-Ò-¨a°°A°qÑ9Ô9×DÒDÑFÔFˆØ"/×"4Ò"4Ñ"6Ô"6°s¸°sÔ";¸tÔ?QÐ>SÑ"SÐØ%×*Ò*Ð+BÑCÔCˆà˜oÐ-Ð-r0   ©N©NN©r'   r(   r)   r>   r+   r^   r,   r	   r   r   r.   r[   r_   r`   s   @r1   rb   rb   v   s¯   ø€ € € € € ðGð Gð Gð Gð Gð Gð> 48Ø(,ð	%.ð %.à”|ð%.ð Ô)¨DÑ0ð%.ð  ™ð	%.ð
 Ð+Ô,ð%.ð 
ˆuŒ|Ô	ð%.ð %.ð %.ð %.ð %.ð %.ð %.ð %.r0   rb   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚGitSelfOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j	        ¦  «        | _
        d S ©Nr6   )r=   r>   r   rt   rA   ÚdenserF   rG   rH   rI   rJ   rN   s     €r1   r>   zGitSelfOutput.__init__½   sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr0   r%   Úinput_tensorrU   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S r”   ©r›   rJ   rF   ©rO   r%   rœ   s      r1   r[   zGitSelfOutput.forwardÃ   ó@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐr0   ©r'   r(   r)   r>   r+   r^   r[   r_   r`   s   @r1   r˜   r˜   ¼   ói   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r0   r˜   Úeagerc                   ó„   ‡ — e Zd Zd	ˆ fd„	Z	 	 d
dej        dej        dz  dedz  dee	         de
ej                 f
d„Zˆ xZS )ÚGitAttentionNc                 ó²   •— t          ¦   «                              ¦   «          t          |j                 ||¬¦  «        | _        t          |¦  «        | _        d S )N©rj   )r=   r>   ÚGIT_SELF_ATTENTION_CLASSESÚ_attn_implementationrO   r˜   Úoutputry   s      €r1   r>   zGitAttention.__init__Ð   sI   ø€ Ý‰Œ×ÒÑÔÐÝ.¨vÔ/JÔKÈFÐ^gÐhÑhÔhˆŒ	Ý# FÑ+Ô+ˆŒˆˆr0   r%   rz   r{   r|   rU   c                 óX   —  | j         |||fi |¤Ž\  }}|                      ||¦  «        }|S r”   )rO   rª   )rO   r%   rz   r{   r|   Úattn_outputÚ_Úattention_outputs           r1   r[   zGitAttention.forwardÕ   sO   € ð #˜œØØØð
ð 
ð ð	
ð 
‰ˆ�Qð  Ÿ;š; {°MÑBÔBÐØÐr0   r”   r•   r–   r`   s   @r1   r¥   r¥   Ï   s©   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð ,ð 48Ø(,ð	 ð  à”|ð ð Ô)¨DÑ0ð ð  ™ð	 ð
 Ð+Ô,ð ð 
ˆuŒ|Ô	ð ð  ð  ð  ð  ð  ð  ð  r0   r¥   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚGitIntermediatec                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S r”   )r=   r>   r   rt   rA   Úintermediate_sizer›   Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnrN   s     €r1   r>   zGitIntermediate.__init__è   sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r0   r%   rU   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r”   )r›   r¶   ©rO   r%   s     r1   r[   zGitIntermediate.forwardð   s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr0   r¡   r`   s   @r1   r°   r°   ç   s^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r0   r°   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )Ú	GitOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S rš   )r=   r>   r   rt   r²   rA   r›   rF   rG   rH   rI   rJ   rN   s     €r1   r>   zGitOutput.__init__ø   sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr0   r%   rœ   rU   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S r”   rž   rŸ   s      r1   r[   zGitOutput.forwardþ   r    r0   r¡   r`   s   @r1   rº   rº   ÷   r¢   r0   rº   c                   óŠ   ‡ — e Zd Zd
ˆ fd„	Z	 	 ddej        dej        dz  dedz  dee	         de
ej                 f
d„Zd	„ Zˆ xZS )ÚGitLayerNc                 óê   •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          ||¬¦  «        | _        t          |¦  «        | _        t          |¦  «        | _	        d S )Nr   r§   )
r=   r>   Úchunk_size_feed_forwardÚseq_len_dimr¥   Ú	attentionr°   Úintermediaterº   rª   ry   s      €r1   r>   zGitLayer.__init__  sc   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ% f¸	ÐBÑBÔBˆŒÝ+¨FÑ3Ô3ˆÔÝ Ñ'Ô'ˆŒˆˆr0   r%   rz   r{   r|   rU   c                 ój   —  | j         ||fd|i|¤Ž}t          | j        | j        | j        |¦  «        }|S )Nr{   )rÂ   r   Úfeed_forward_chunkrÀ   rÁ   )rO   r%   rz   r{   r|   r®   Úlayer_outputs          r1   r[   zGitLayer.forward  sc   € ð *˜4œ>ØØð
ð 
ð ,ð
ð ð	
ð 
Ðõ 1ØÔ# TÔ%AÀ4ÔCSÐUeñ
ô 
ˆð Ðr0   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S r”   )rÃ   rª   )rO   r®   Úintermediate_outputrÆ   s       r1   rÅ   zGitLayer.feed_forward_chunk!  s2   € Ø"×/Ò/Ð0@ÑAÔAÐØ—{’{Ð#6Ð8HÑIÔIˆØÐr0   r”   r•   )r'   r(   r)   r>   r+   r^   r,   r	   r   r   r.   r[   rÅ   r_   r`   s   @r1   r¾   r¾     s¸   ø€ € € € € ð(ð (ð (ð (ð (ð (ð 48Ø(,ð	ð à”|ðð Ô)¨DÑ0ðð  ™ð	ð
 Ð+Ô,ðð 
ˆuŒ|Ô	ðð ð ð ð&ð ð ð ð ð ð r0   r¾   c                   óx   ‡ — e Zd Zˆ fd„Z	 	 	 d
dej        dej        dz  dedz  dedz  de	e
         defd	„Zˆ xZS )Ú
GitEncoderc                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r/   )r¾   )Ú.0ÚirP   s     €r1   ú
<listcomp>z'GitEncoder.__init__.<locals>.<listcomp>+  s#   ø€ Ð#aÐ#aÐ#a¸A¥H¨V°QÑ$7Ô$7Ð#aÐ#aÐ#ar0   F)	r=   r>   rP   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayerÚgradient_checkpointingrN   s    `€r1   r>   zGitEncoder.__init__(  s`   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#aÐ#aÐ#aÐ#aÅÀvÔG_ÑA`ÔA`Ð#aÑ#aÔ#aÑbÔbˆŒ
Ø&+ˆÔ#Ð#Ð#r0   Nr%   rz   r{   Ú	use_cacher|   rU   c                 óN   — | j         D ]} ||||fi |¤Ž}Œt          ||¬¦  «        S )N©r$   r{   )rÓ   r   )rO   r%   rz   r{   rÕ   r|   Úlayer_modules          r1   r[   zGitEncoder.forward.  s_   € ð !œJð 	ð 	ˆLØ(˜LØØØðð ð ð	ð ˆMˆMõ 'Ø+Ø+ð
ñ 
ô 
ð 	
r0   )NNN)r'   r(   r)   r>   r+   r^   r,   r	   Úboolr   r   r   r[   r_   r`   s   @r1   rÊ   rÊ   '  s®   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð 48Ø(,Ø!%ð
ð 
à”|ð
ð Ô)¨DÑ0ð
ð  ™ð	
ð
 ˜$‘;ð
ð Ð+Ô,ð
ð 
!ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r0   rÊ   c                   ó`   ‡ — e Zd ZU eed<   dZdZdZ ej	        ¦   «         ˆ fd„¦   «         Z
ˆ xZS )ÚGitPreTrainedModelrP   Úgit)ÚimageÚtextTc                 óÒ  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rÉt	          j        |j        d| j        j        ¬¦  «         t	          j        |j	        j
        | j        j        ¬¦  «         t	          j        |j        j
        | j        j        ¬¦  «         t	          j        |j        t          j        |j        j        d         ¦  «                             d¦  «        ¦  «         t          |t$          ¦  «        rQt	          j        |j        t          j        |j        j        d         ¦  «                             d¦  «        ¦  «         dS dS )zInitialize the weightsç        )ÚmeanÚstd)râ   r:   r9   N)r=   Ú_init_weightsr³   ÚGitVisionEmbeddingsÚinitÚnormal_Úclass_embeddingrP   Úinitializer_rangeÚpatch_embeddingÚweightÚposition_embeddingÚcopy_r8   r+   rL   r�   rM   r3   )rO   ÚmodulerQ   s     €r1   rã   z GitPreTrainedModel._init_weightsK  s)  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ1Ñ2Ô2ð 	iÝŒL˜Ô/°c¸t¼{Ô?\Ð]Ñ]Ô]Ð]ÝŒL˜Ô/Ô6¸D¼KÔ<YÐZÑZÔZÐZÝŒL˜Ô2Ô9¸t¼{Ô?\Ð]Ñ]Ô]Ð]ÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÝ�f�mÑ,Ô,ð 	iÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÐhÐhð	ið 	ir0   )r'   r(   r)   r   r-   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingr+   Úno_gradrã   r_   r`   s   @r1   rÛ   rÛ   D  ss   ø€ € € € € € àÐÐÑØÐØ(ÐØ&*Ð#à€U„]�_„_ð	ið 	ið 	ið 	iñ „_ð	ið 	ið 	ið 	ið 	ir0   rÛ   c                   óv   ‡ — e Zd Zdefˆ fd„Zdej        dededej        fd„Zdd	ej	        dej        fd
„Z
ˆ xZS )rä   rP   c                 óz  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        |j        | _        t          j        t          j
        | j        ¦  «        ¦  «        | _        t          j        |j        | j        | j        | j        d¬¦  «        | _        | j        | j        z  dz  | _        | j        dz   | _        t          j        | j        | j        ¦  «        | _        |                      dt          j        | j        ¦  «                             d¦  «        d¬¦  «         d S )NF)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚbiasrf   r   r8   r9   r;   )r=   r>   rP   rA   Ú	embed_dimrp   rq   r   Ú	Parameterr+   Úrandnrç   ÚConv2dÚnum_channelsré   Únum_patchesÚnum_positionsr?   rë   rK   rL   rM   rN   s     €r1   r>   zGitVisionEmbeddings.__init__Z  s  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØ Ô+ˆŒØ Ô+ˆŒå!œ|­E¬K¸¼Ñ,GÔ,GÑHÔHˆÔå!œyØÔ+ØœØœØ”?Øð 
ñ  
ô  
ˆÔð !œO¨t¬Ñ>À1ÑDˆÔØ!Ô-°Ñ1ˆÔÝ"$¤,¨tÔ/AÀ4Ä>Ñ"RÔ"RˆÔØ×Ò˜^­U¬\¸$Ô:LÑ-MÔ-M×-TÒ-TÐU\Ñ-]Ô-]ÐjoÐÑpÔpÐpÐpÐpr0   rZ   ÚheightÚwidthrU   c                 óÚ  — |j         d         dz
  }| j        j                             d¦  «        }|j         d         dz
  }t          j                             ¦   «         s&||k    r ||k    r|                      | j        ¦  «        S |dd…dd…f         }|dd…dd…f         }|j         d         }	|| j        z  }
|| j        z  }t          |dz  ¦  «        }| 
                    d|||	¦  «        }|                     dddd¦  «        }t          j                             ||
|fdd	¬
¦  «        }|                     dddd¦  «                             dd|	¦  «        }t	          j        ||fd¬¦  «        S )a   
        This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
        images. This method is also adapted to support torch.jit tracing.

        Adapted from:
        - https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
        - https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
        r   r   Nr:   g      à?r   rf   ÚbicubicF)rW   ÚmodeÚalign_cornersr   )r�   rë   rê   Ú	unsqueezer+   ÚjitÚ
is_tracingr8   rq   r   ÚreshaperŠ   r   rˆ   Úinterpolater‚   Úcat)rO   rZ   r   r  rþ   rë   rÿ   Úclass_pos_embedÚpatch_pos_embedr€   Ú
new_heightÚ	new_widthÚsqrt_num_positionss                r1   Úinterpolate_pos_encodingz,GitVisionEmbeddings.interpolate_pos_encodingp  s‘  € ð !Ô& qÔ)¨AÑ-ˆØ!Ô4Ô;×EÒEÀaÑHÔHÐØ*Ô0°Ô3°aÑ7ˆõ Œy×#Ò#Ñ%Ô%ð 	>¨+¸Ò*FÐ*FÈ6ÐUZÊ?È?Ø×*Ò*¨4Ô+<Ñ=Ô=Ð=à,¨Q¨Q¨Q°°°¨UÔ3ˆØ,¨Q¨Q¨Q°°°¨UÔ3ˆàÔ˜rÔ"ˆà˜tœÑ.ˆ
Ø˜Tœ_Ñ,ˆ	å& }°cÑ'9Ñ:Ô:ÐØ)×1Ò1°!Ð5GÐI[Ð]`ÑaÔaˆØ)×1Ò1°!°Q¸¸1Ñ=Ô=ˆåœ-×3Ò3ØØ˜iÐ(ØØð	 4ñ 
ô 
ˆð *×1Ò1°!°Q¸¸1Ñ=Ô=×BÒBÀ1ÀbÈ#ÑNÔNˆåŒy˜/¨?Ð;ÀÐCÑCÔCÐCr0   FÚpixel_valuesc                 ó<  — |j         \  }}}}|s<|| j        k    s|| j        k    r&t          d|› d|› d| j        › d| j        › d�	¦  «        ‚| j        j        j        }|                      |                     |¬¦  «        ¦  «        }|                     d¦  «                             dd¦  «        }| j	         
                    |dd¦  «        }	t          j        |	|gd¬	¦  «        }
|r|
|                      |
||¦  «        z   }
n|
|                      | j        ¦  «        z   }
|
S )
NzInput image size (Ú*z) doesn't match model (ú).©Údtyperf   r   r:   r   )r�   rp   ri   ré   rê   r  ÚtoÚflattenrƒ   rç   rM   r+   r  r  rë   r8   )rO   r  r  Ú
batch_sizer­   r   r  Útarget_dtypeÚpatch_embedsÚclass_embedsrZ   s              r1   r[   zGitVisionEmbeddings.forward™  sD  € Ø'3Ô'9Ñ$ˆ
�A�v˜uØ'ð 	¨V°t´Ò-FÐ-FÈ%ÐSWÔSbÒJbÐJbÝØq VÐqÐq¨eÐqÐqÈDÌOÐqÐqÐ^bÔ^mÐqÐqÐqñô ð ð Ô+Ô2Ô8ˆØ×+Ò+¨L¯OªOÀ,¨OÑ,OÔ,OÑPÔPˆØ#×+Ò+¨AÑ.Ô.×8Ò8¸¸AÑ>Ô>ˆàÔ+×2Ò2°:¸qÀ"ÑEÔEˆÝ”Y ¨lÐ;ÀÐCÑCÔCˆ
Ø#ð 	QØ# d×&CÒ&CÀJÐPVÐX]Ñ&^Ô&^Ñ^ˆJˆJà# d×&=Ò&=¸dÔ>OÑ&PÔ&PÑPˆJØÐr0   )F)r'   r(   r)   r   r>   r+   r^   r]   r  r,   r[   r_   r`   s   @r1   rä   rä   Y  s¹   ø€ € € € € ðq˜ð qð qð qð qð qð qð,'D°5´<ð 'DÈð 'DÐUXð 'DÐ]bÔ]ið 'Dð 'Dð 'Dð 'DðRð  EÔ$5ð ÐZ_ÔZfð ð ð ð ð ð ð ð r0   rä   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚGitVisionMLPc                 ó  •— t          ¦   «                              ¦   «          || _        t          |j                 | _        t          j        |j        |j	        ¦  «        | _
        t          j        |j	        |j        ¦  «        | _        d S r”   )r=   r>   rP   r   r´   Úactivation_fnr   rt   rA   r²   Úfc1Úfc2rN   s     €r1   r>   zGitVisionMLP.__init__­  sf   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ# FÔ$5Ô6ˆÔÝ”9˜VÔ/°Ô1IÑJÔJˆŒÝ”9˜VÔ5°vÔ7IÑJÔJˆŒˆˆr0   r%   rU   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r”   )r"  r!  r#  r¸   s     r1   r[   zGitVisionMLP.forward´  s=   € ØŸš Ñ/Ô/ˆØ×*Ò*¨=Ñ9Ô9ˆØŸš Ñ/Ô/ˆØÐr0   r¡   r`   s   @r1   r  r  ¬  sc   ø€ € € € € ðKð Kð Kð Kð Kð U¤\ð °e´lð ð ð ð ð ð ð ð r0   r  rà   rí   ru   rv   rw   rz   ÚscalingrJ   c                 óÀ  — t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |dt           j        ¬¦  «                             |j        ¦  «        }t          j         	                    ||| j
        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «                             ¦   «         }	|	|fS )Nr:   r~   )r€   r  )ÚpÚtrainingr   rf   )r+   r…   rƒ   r   rˆ   r‰   Úfloat32r  r  rJ   r(  r‹   )
rí   ru   rv   rw   rz   r%  rJ   r|   Úattn_weightsr¬   s
             r1   Úeager_attention_forwardr+  ¼  sÃ   € õ ”<  s§}¢}°R¸Ñ'<Ô'<Ñ=Ô=ÀÑG€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r0   c                   óŽ   ‡ — e Zd ZdZˆ fd„Z	 d	dej        dej        dz  dee         de	ej        ej        dz  f         fd„Z
ˆ xZS )
ÚGitVisionAttentionz=Multi-headed attention from 'Attention Is All You Need' paperc                 ó‚  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        | j        | j        z  | _        | j        | j        z  | j        k    r t          d| j        › d| j        › d�¦  «        ‚| j        dz  | _	        |j
        | _        d| _        t          j        | j        | j        ¦  «        | _        t          j        | j        | j        ¦  «        | _        t          j        | j        | j        ¦  «        | _        t          j        | j        | j        ¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: r  g      à¿F)r=   r>   rP   rA   rù   rg   Ú	num_headsÚhead_dimri   ÚscaleÚattention_dropoutrJ   Ú	is_causalr   rt   Úk_projÚv_projÚq_projÚout_projrN   s     €r1   r>   zGitVisionAttention.__init__Ö  s  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØÔ3ˆŒØœ¨$¬.Ñ8ˆŒØŒ=˜4œ>Ñ)¨T¬^Ò;Ð;Ýð'ÈdÌnð 'ð 'Ø”Nð'ð 'ð 'ñô ð ð ”] DÑ(ˆŒ
ØÔ/ˆŒØˆŒå”i ¤°´Ñ?Ô?ˆŒÝ”i ¤°´Ñ?Ô?ˆŒÝ”i ¤°´Ñ?Ô?ˆŒÝœ	 $¤.°$´.ÑAÔAˆŒˆˆr0   Nr%   rz   r|   rU   c                 ó¸  — |j         dd…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        }	 |	| ||||f| j        | j        | j        sdn| j        dœ|¤Ž\  }
} |
j        g |¢d‘R Ž                      ¦   «         }
|                      |
¦  «        }
|
|fS )z#Input shape: Batch x Time x ChannelNr:   r   rf   rà   )r3  r%  rJ   )r�   r0  r6  r‚   rƒ   r4  r5  r   Úget_interfacerP   r©   r+  r3  r1  r(  rJ   r	  r‹   r7  )rO   r%   rz   r|   rX   rŒ   ÚqueriesÚkeysÚvaluesÚattention_interfacer¬   r*  s               r1   r[   zGitVisionAttention.forwardê  sx  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆØ—+’+˜mÑ,Ô,×1Ò1°,Ñ?Ô?×IÒIÈ!ÈQÑOÔOˆØ�{Š{˜=Ñ)Ô)×.Ò.¨|Ñ<Ô<×FÒFÀqÈ!ÑLÔLˆØ—’˜]Ñ+Ô+×0Ò0°Ñ>Ô>×HÒHÈÈAÑNÔNˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð
%
ð ”nØ”JØ#œ}Ð>�C�C°$´,ð
%
ð 
%
ð ð
%
ð 
%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—m’m KÑ0Ô0ˆØ˜LÐ(Ð(r0   r”   )r'   r(   r)   r*   r>   r+   r^   r   r   r.   r[   r_   r`   s   @r1   r-  r-  Ó  s©   ø€ € € € € ØGÐGðBð Bð Bð Bð Bð. /3ð)ð )à”|ð)ð œ tÑ+ð)ð Ð+Ô,ð	)ð
 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð)ð )ð )ð )ð )ð )ð )ð )r0   r-  c                   óf   ‡ — e Zd Zdefˆ fd„Zdej        dej        dee         dej	        fd„Z
ˆ xZS )ÚGitVisionEncoderLayerrP   c                 óD  •— t          ¦   «                              ¦   «          |j        | _        t	          |¦  «        | _        t          j        | j        |j        ¬¦  «        | _	        t          |¦  «        | _        t          j        | j        |j        ¬¦  «        | _        d S rš   )r=   r>   rA   rù   r-  Ú	self_attnr   rF   rG   Úlayer_norm1r  ÚmlpÚlayer_norm2rN   s     €r1   r>   zGitVisionEncoderLayer.__init__  s   ø€ Ý‰Œ×ÒÑÔÐØÔ+ˆŒÝ+¨FÑ3Ô3ˆŒÝœ<¨¬¸FÔ<QÐRÑRÔRˆÔÝ Ñ'Ô'ˆŒÝœ<¨¬¸FÔ<QÐRÑRÔRˆÔÐÐr0   r%   rz   r|   rU   c                 óÆ   — |}|                       |¦  «        } | j        d||dœ|¤Ž\  }}||z   }|}|                      |¦  «        }|                      |¦  «        }||z   }|S )N)r%   rz   r/   )rB  rA  rD  rC  )rO   r%   rz   r|   Úresidualr­   s         r1   r[   zGitVisionEncoderLayer.forward  s“   € ð !ˆà×(Ò(¨Ñ7Ô7ˆØ)˜4œ>ð 
Ø'Ø)ð
ð 
ð ð
ð 
Ñˆ�qð
 ! =Ñ0ˆà ˆØ×(Ò(¨Ñ7Ô7ˆØŸš Ñ/Ô/ˆØ  =Ñ0ˆàÐr0   )r'   r(   r)   r   r>   r+   r^   r   r   r,   r[   r_   r`   s   @r1   r?  r?    s’   ø€ € € € € ðS˜ð Sð Sð Sð Sð Sð Sðà”|ðð œðð Ð+Ô,ð	ð
 
Ô	ðð ð ð ð ð ð ð r0   r?  c                   ó\   ‡ — e Zd ZdZdefˆ fd„Z	 d	dej        dz  dee	         de
fd„Zˆ xZS )
ÚGitVisionEncoderz·
    Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
    [`GitVisionEncoderLayer`].

    Args:
        config: GitVisionConfig
    rP   c                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r/   )r?  ©rÍ   r­   rP   s     €r1   rÏ   z-GitVisionEncoder.__init__.<locals>.<listcomp>;  s"   ø€ Ð$lÐ$lÐ$lÀqÕ%:¸6Ñ%BÔ%BÐ$lÐ$lÐ$lr0   F)	r=   r>   rP   r   rÐ   rÑ   rÒ   ÚlayersrÔ   rN   s    `€r1   r>   zGitVisionEncoder.__init__8  sa   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”mÐ$lÐ$lÐ$lÐ$lÍEÐRXÔRjÑLkÔLkÐ$lÑ$lÔ$lÑmÔmˆŒØ&+ˆÔ#Ð#Ð#r0   Nrz   r|   rU   c                 óN   — |}| j         D ]} |||fi |¤Ž}Œt          |¬¦  «        S )N©r$   )rL  r   )rO   rS   rz   r|   r%   Úencoder_layers         r1   r[   zGitVisionEncoder.forward>  s^   € ð &ˆØ!œ[ð 	ð 	ˆMØ)˜MØØðð ð ðð ˆMˆMõ Ø+ð
ñ 
ô 
ð 	
r0   r”   )r'   r(   r)   r*   r   r>   r+   r^   r   r   r   r[   r_   r`   s   @r1   rH  rH  /  s—   ø€ € € € € ðð ð,˜ð ,ð ,ð ,ð ,ð ,ð ,ð /3ð
ð 
ð œ tÑ+ð
ð Ð+Ô,ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r0   rH  c            
       ót   ‡ — e Zd Zdefˆ fd„Ze	 	 d
dej        dz  dedz  de	e
         defd	„¦   «         Zˆ xZS )ÚGitVisionTransformerrP   c                 ó4  •— t          ¦   «                              ¦   «          || _        |j        }t	          |¦  «        | _        t          j        ||j        ¬¦  «        | _	        t          |¦  «        | _        t          j        ||j        ¬¦  «        | _        d S rš   )r=   r>   rP   rA   rä   rZ   r   rF   rG   Úpre_layrnormrH  ÚencoderÚpost_layernorm)rO   rP   rù   rQ   s      €r1   r>   zGitVisionTransformer.__init__R  s€   ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ&ˆ	å-¨fÑ5Ô5ˆŒÝœL¨¸Ô8MÐNÑNÔNˆÔÝ'¨Ñ/Ô/ˆŒÝ œl¨9¸&Ô:OÐPÑPÔPˆÔÐÐr0   NFr  r  r|   rU   c                 óò   — |€t          d¦  «        ‚|                      ||¬¦  «        }|                      |¦  «        } | j        dd|i|¤Ž}|j        }|                      |¦  «        }t          |¬¦  «        S )Nz You have to specify pixel_values©r  rS   rN  r/   )ri   rZ   rS  rT  r$   rU  r   )rO   r  r  r|   r%   Úencoder_outputsr$   s          r1   r[   zGitVisionTransformer.forward\  s¤   € ð ÐÝÐ?Ñ@Ô@Ð@àŸš¨ÐOg˜ÑhÔhˆØ×)Ò)¨-Ñ8Ô8ˆà&˜$œ,ð 
ð 
Ø'ð
àð
ð 
ˆð
 ,Ô=Ðà ×/Ò/Ð0AÑBÔBÐåØ/ð
ñ 
ô 
ð 	
r0   ©NF)r'   r(   r)   r   r>   r   r+   r,   rÙ   r   r   r   r[   r_   r`   s   @r1   rQ  rQ  Q  s°   ø€ € € € € ðQ˜ð Qð Qð Qð Qð Qð Qð ð 26Ø05ð
ð 
àÔ'¨$Ñ.ð
ð #'¨¡+ð
ð Ð+Ô,ð	
ð
 
ð
ð 
ð 
ñ „^ð
ð 
ð 
ð 
ð 
r0   rQ  zY
    The vision model from CLIP, used in GIT, without any head or projection on top.
    c                   óÜ   ‡ — e Zd ZU eed<   dZdZeedœZ	defˆ fd„Z
dej        fd„Ze ed¬	¦  «        e	 	 ddej        d
z  dedee         deez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚGitVisionModelrP   r  )rÝ   ©r%   r&   c                 óš   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      ¦   «          d S r”   )r=   r>   rQ  Úvision_modelÚ	post_initrN   s     €r1   r>   zGitVisionModel.__init__…  sA   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý0°Ñ8Ô8ˆÔà�ŠÑÔÐÐÐr0   rU   c                 ó$   — | j         j        j        S r”   )r^  rZ   ré   ©rO   s    r1   Úget_input_embeddingsz#GitVisionModel.get_input_embeddings‹  s   € ØÔ Ô+Ô;Ð;r0   F)Útie_last_hidden_statesNr  r|   c                 ó"   —  | j         d||dœ|¤ŽS )aÌ  
        Examples:

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

        >>> processor = AutoProcessor.from_pretrained("microsoft/git-base")
        >>> model = GitVisionModel.from_pretrained("microsoft/git-base")

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

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

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        ```)r  r  r/   )r^  )rO   r  r  r|   s       r1   r[   zGitVisionModel.forwardŽ  s5   € ð< !ˆtÔ ð 
Ø%Ø%=ð
ð 
ð ð
ð 
ð 	
r0   rY  )r'   r(   r)   r   r-   Úmain_input_namerï   r?  r-  Ú_can_record_outputsr>   r   ÚModulerb  r   r   r   r+   r,   rÙ   r   r   r.   r   r[   r_   r`   s   @r1   r[  r[  w  s  ø€ € € € € € ð ÐÐÑØ$€OØ!Ðà.Ø(ðð Ðð
˜ð ð ð ð ð ð ð< b¤ið <ð <ð <ð <ð  Ø€_¨EÐ2Ñ2Ô2Øð 26Ø).ð
ð 
àÔ'¨$Ñ.ð
ð #'ð
ð Ð+Ô,ð	
ð
 
�Ñ	 ð
ð 
ð 
ñ „^ñ 3Ô2ñ  Ôð
ð 
ð 
ð 
ð 
r0   r[  c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚGitProjectionrP   c                 ó  •— t          ¦   «                              ¦   «          || _        t          j        t          j        |j        j        |j        ¦  «        t          j        |j        |j        j	        ¬¦  «        ¦  «        | _
        d S rš   )r=   r>   rP   r   Ú
Sequentialrt   ro   rA   rF   rG   Úvisual_projectionrN   s     €r1   r>   zGitProjection.__init__´  sm   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ!#¤ÝŒI�fÔ*Ô6¸Ô8JÑKÔKÝŒL˜Ô+°Ô1EÔ1TÐUÑUÔUñ"
ô "
ˆÔÐÐr0   rZ   rU   c                 ó,   — |                       |¦  «        S r”   )rl  )rO   rZ   s     r1   r[   zGitProjection.forward¼  s   € Ø×%Ò% jÑ1Ô1Ð1r0   )	r'   r(   r)   r   r>   r+   r^   r[   r_   r`   s   @r1   ri  ri  ³  sj   ø€ € € € € ð
˜yð 
ð 
ð 
ð 
ð 
ð 
ð2 %¤,ð 2°5´<ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2r0   ri  zy
    The bare GIT Model transformer consisting of a CLIP image encoder and text decoder outputting raw hidden-states
    c                   ó*  ‡ — e Zd ZeedœZˆ fd„Zd„ Zd„ Ze	e
e	 	 	 	 	 	 	 	 ddej        dz  dej        dz  d	ej        dz  d
ej        dz  dej        dz  dedz  dedz  dedee         deej                 ez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚGitModelr\  c                 ó¨  •‡— t          ¦   «                              ‰¦  «         ‰| _        t          ‰¦  «        | _        t          ‰j        ¦  «        | _        t          ‰¦  «        | _	        t          ‰¦  «        | _        ‰j        �7t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        |                      ¦   «          d S )Nc              3   ó|   •K  — | ]6}t          j        t          j        d d ‰j        j        ¦  «        ¦  «        V — Œ7dS )r   N)r   rú   r+   Úzerosro   rA   rK  s     €r1   ú	<genexpr>z$GitModel.__init__.<locals>.<genexpr>Ö  sU   øè è € ð ;ð ;àõ ”�Uœ[¨¨A¨vÔ/CÔ/OÑPÔPÑQÔQð;ð ;ð ;ð ;ð ;ð ;r0   )r=   r>   rP   r3   rZ   r[  ro   Úimage_encoderrÊ   rT  ri  rl  rs   r   ÚParameterListrÑ   Úimg_temporal_embeddingr_  rN   s    `€r1   r>   zGitModel.__init__Ë  sË   øø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒå'¨Ñ/Ô/ˆŒÝ+¨FÔ,@ÑAÔAˆÔÝ! &Ñ)Ô)ˆŒå!.¨vÑ!6Ô!6ˆÔàÔ*Ð6Ý*,Ô*:ð ;ð ;ð ;ð ;å˜vÔ>Ñ?Ô?ð;ñ ;ô ;ñ +ô +ˆDÔ'ð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         j        S r”   ©rZ   rC   ra  s    r1   rb  zGitModel.get_input_embeddingsÞ  s   € ØŒÔ.Ð.r0   c                 ó   — || j         _        d S r”   rx  )rO   rw   s     r1   Úset_input_embeddingszGitModel.set_input_embeddingsá  s   € Ø*/ˆŒÔ'Ð'Ð'r0   NFrR   rz   r8   r  rS   r{   rÕ   r  r|   rU   c	           	      ó  — |du |duz  rt          d¦  «        ‚|r|€t          | j        ¬¦  «        }d}
|�=t          |t          ¦  «        s|                     ¦   «         n|                     ¦   «         }
|€|�|j        d         dk    r||
z   }|                      ||||
¬¦  «        }t          j	        |t          j
        ¬¦  «        d         }|��£|j        d	k    r|                      ||¬
¦  «        j        }n¡|j        dk    r‡g }t          |j        d         ¦  «        D ]S}|                      |dd…|dd…dd…f         |¬
¦  «        j        }|| j        |         z  }|                     |¦  «         ŒTt          j        |d¬¦  «        }nt          d¦  «        ‚|                      |¦  «        }|                     |                     d¦  «        |                     d¦  «        z  dd¦  «        }t          j        ||fd¬¦  «        }t          j        ||j        ¬¦  «        d         }t          j        ||gd¬¦  «        }|�1t          j        t          j        ||j        ¬¦  «        |gd¬¦  «        }nj|�h|j        d         dk    rWt          j        |j        d         |
|j        d         z
  dz   f|j        |j        ¬¦  «        }t          j        ||gd¬¦  «        }t          j        g |                     ¦   «         dd…         ¢d|j        ¬¦  «        }|�t          j        |dk    dd¦  «        }| j                             ¦   «         |||||dœ}t9          di |¤Ž}|} | j        |f|||dœ|	¤Ž}t=          |j        |j        ¬¦  «        S )a   
        Examples:

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

        >>> processor = AutoProcessor.from_pretrained("microsoft/git-base")
        >>> model = AutoModel.from_pretrained("microsoft/git-base")

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> text = "this is an image of two cats"

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

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        ```Nz:You must specify exactly one of input_ids or inputs_embeds)rP   r   r   )rR   r8   rS   rT   r  ).r   é   rW  é   r   z#pixel_values must be of rank 4 or 5r:   )r  Údevice)r~  )rP   rS   rz   r{   r8   Úblock_sequence_ids)rz   r{   rÕ   r×   r/   ) ri   r
   rP   r³   r	   Úget_seq_lengthr�   rZ   r+   Ú
zeros_liker]   Úndimrt  r$   rÑ   rv  Úappendr  rl  ÚrepeatrW   Ú	ones_liker  Úonesr~  ÚfullÚwhereÚget_text_configr   rT  r   r{   )rO   rR   rz   r8   r  rS   r{   rÕ   r  r|   rT   Úembedding_outputÚtoken_type_idsÚvisual_featuresÚ	frame_idxÚvisual_features_frameÚprojected_visual_featuresÚimage_token_type_idsÚextended_attention_maskÚ	group_idsÚmask_kwargsÚcausal_maskr%   rX  s                           r1   r[   zGitModel.forwardä  sl  € ðL ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàð 	?˜Ð0Ý*°$´+Ð>Ñ>Ô>ˆOð "#ÐØÐ&õ " /µ5Ñ9Ô9ð6�×.Ò.Ñ0Ô0Ð0à$×3Ò3Ñ5Ô5ð #ð Ð OÐ$?ÀIÄOÐTUÔDVÐZ[ÒD[ÐD[Ø'Ð*@Ñ@ˆLàŸ?š?ØØ%Ø'Ø#9ð	 +ñ 
ô 
Ðõ Ô)Ð*:Å%Ä)ÐLÑLÔLÈVÔTˆàÑ#ØÔ  AÒ%Ð%à"&×"4Ò"4Ø Ð;Sð #5ñ #ô #ä#ð  �ð Ô" aÒ'Ð'à"$�Ý!& |Ô'9¸!Ô'<Ñ!=Ô!=ð Bð B�IØ,0×,>Ò,>Ø$ Q Q Q¨	°1°1°1°a°a°aÐ%7Ô8ÐSkð -?ñ -ô -ä'ð *ð *¨TÔ-HÈÔ-SÑSÐ)Ø#×*Ò*Ð+@ÑAÔAÐAÐAõ #(¤)¨OÀÐ"CÑ"CÔ"C��õ !Ð!FÑGÔGÐGà(,×(>Ò(>¸Ñ(OÔ(OÐ%ð )B×(HÒ(HØ ×%Ò% aÑ(Ô(Ð,E×,JÒ,JÈ1Ñ,MÔ,MÑMÈqÐRSñ)ô )Ð%õ
  %œyÐ*CÐEUÐ)VÐ\]Ð^Ñ^Ô^ÐÝ#(¤?Ð3LÐTbÔThÐ#iÑ#iÔ#iÐjpÔ#qÐ Ý"œYÐ(<¸nÐ'MÐSUÐVÑVÔVˆNØÐ)Ý!&¤Ý”_Ð%9ÀÔAUÐVÑVÔVÐXfÐgÐmoð"ñ "ô "�øð Ð(¨Y¬_¸QÔ-?À1Ò-DÐ-Dõ ',¤jØÔ% aÔ(Ð*@À>ÔCWÐXYÔCZÑ*ZÐ]^Ñ*^Ð_Ø$Ô*Ø%Ô,ð'ñ 'ô 'Ð#õ
 #œYÐ(?ÀÐ'PÐVXÐYÑYÔYˆNõ ”JÐ>Ð!1×!6Ò!6Ñ!8Ô!8¸¸"¸Ô!=Ð>ÀÐK[ÔKbÐcÑcÔcˆ	ØÐ%åœ N°aÒ$7¸¸BÑ?Ô?ˆIð ”k×1Ò1Ñ3Ô3Ø-Ø,Ø.Ø(Ø"+ð
ð 
ˆõ )Ð7Ð7¨;Ð7Ð7ˆà(ˆà3?°4´<Øð4
à&Ø+Øð	4
ð 4
ð
 ð4
ð 4
ˆõ 'Ø-Ô?Ø+Ô;ð
ñ 
ô 
ð 	
r0   )NNNNNNNF)r'   r(   r)   r¾   rb   rf  r>   rb  rz  r   r   r   r+   r^   r	   rÙ   r   r   r.   r   r[   r_   r`   s   @r1   ro  ro  À  sr  ø€ € € € € ð "Ø&ðð Ðð
ð ð ð ð ð&/ð /ð /ð0ð 0ð 0ð  ØØð *.Ø.2Ø,0Ø,0Ø-1Ø(,Ø!%Ø).ðN
ð N
à”< $Ñ&ðN
ð œ tÑ+ðN
ð ”l TÑ)ð	N
ð
 ”l TÑ)ðN
ð ”| dÑ*ðN
ð  ™ðN
ð ˜$‘;ðN
ð #'ðN
ð Ð+Ô,ðN
ð 
ˆuŒ|Ô	Ð9Ñ	9ðN
ð N
ð N
ñ „^ñ „_ñ  ÔðN
ð N
ð N
ð N
ð N
r0   ro  z`
    GIT Model with a `language modeling` head on top for autoregressive language modeling.
    c                   ój  ‡ — e Zd ZddiZˆ fd„Zd„ Zd„ Zeee		 	 	 	 	 	 	 	 	 	 dd	e
j        dz  d
e
j        dz  de
j        dz  de
j        dz  de
j        dz  de
j        dz  dedz  dedz  dedee
j        z  dee         dee
j                 ez  fd„¦   «         ¦   «         ¦   «         Z	 	 	 	 	 dˆ fd„	Zˆ xZS )ÚGitForCausalLMzoutput.weightz%git.embeddings.word_embeddings.weightc                 óâ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        |j        ¦  «        | _        |  	                    ¦   «          d S r”   )
r=   r>   ro  rÜ   r   rt   rA   r@   rª   r_  rN   s     €r1   r>   zGitForCausalLM.__init__€  s[   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å˜FÑ#Ô#ˆŒÝ”i Ô 2°FÔ4EÑFÔFˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S r”   ©rª   ra  s    r1   Úget_output_embeddingsz$GitForCausalLM.get_output_embeddings‰  s
   € ØŒ{Ðr0   c                 ó   — || _         d S r”   r™  )rO   Únew_embeddingss     r1   Úset_output_embeddingsz$GitForCausalLM.set_output_embeddingsŒ  s   € Ø$ˆŒˆˆr0   NFr   rR   rz   r8   r  rS   Úlabelsr{   rÕ   r  Úlogits_to_keepr|   rU   c                 ó�  — |�d} | j         |f|||||||	dœ|¤Ž}|j        }t          |
t          ¦  «        rt	          |
 d¦  «        n|
}|                      |dd…|dd…f         ¦  «        }d}|�µ| j         j        j        d         j        j	        j
        }|dd…|d…dd…f                              ¦   «         }|dd…dd…f                              ¦   «         } | j        |                     d| j        j        ¦  «        |                     d¦  «        fd| j        j        i|¤Ž}t!          |||j        |j        |j        ¬¦  «        S )	a0  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the left-to-right language modeling loss (next word prediction). Indices should be in
            `[-100, 0, ..., config.vocab_size]` (see `input_ids` docstring) Tokens with indices set to `-100` are
            ignored (masked), the loss is only computed for the tokens with labels n `[0, ..., config.vocab_size]`

        Examples:

        Image captioning example:

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

        >>> processor = AutoProcessor.from_pretrained("microsoft/git-base-coco")
        >>> model = AutoModelForCausalLM.from_pretrained("microsoft/git-base-coco")

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> pixel_values = processor(images=image, return_tensors="pt").pixel_values

        >>> generated_ids = model.generate(pixel_values=pixel_values, max_length=50)
        >>> generated_caption = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
        >>> print(generated_caption)
        two cats sleeping on a pink blanket next to remotes.
        ```

        Visual question answering (VQA) example:

        ```python
        >>> from transformers import AutoProcessor, AutoModelForCausalLM
        >>> from huggingface_hub import hf_hub_download
        >>> from PIL import Image

        >>> processor = AutoProcessor.from_pretrained("microsoft/git-base-textvqa")
        >>> model = AutoModelForCausalLM.from_pretrained("microsoft/git-base-textvqa")

        >>> file_path = hf_hub_download(repo_id="nielsr/textvqa-sample", filename="bus.png", repo_type="dataset")
        >>> image = Image.open(file_path).convert("RGB")

        >>> pixel_values = processor(images=image, return_tensors="pt").pixel_values

        >>> question = "what does the front of the bus say at the top?"

        >>> input_ids = processor(text=question, add_special_tokens=False).input_ids
        >>> input_ids = [processor.tokenizer.cls_token_id] + input_ids
        >>> input_ids = torch.tensor(input_ids).unsqueeze(0)

        >>> generated_ids = model.generate(pixel_values=pixel_values, input_ids=input_ids, max_length=50)
        >>> print(processor.batch_decode(generated_ids, skip_special_tokens=True))
        ['what does the front of the bus say at the top? special']
        ```

        Video captioning example:

        ```python
        >>> import av
        >>> import numpy as np
        >>> from PIL import Image
        >>> from huggingface_hub import hf_hub_download
        >>> from transformers import AutoProcessor, AutoModelForCausalLM

        >>> processor = AutoProcessor.from_pretrained("microsoft/git-base-vatex")
        >>> model = AutoModelForCausalLM.from_pretrained("microsoft/git-base-vatex")

        >>> # set seed for reproducibility
        >>> np.random.seed(45)


        >>> def read_video_pyav(container, indices):
        ...     '''
        ...     Decode the video with PyAV decoder.
        ...     Args:
        ...         container (`av.container.input.InputContainer`): PyAV container.
        ...         indices (`list[int]`): List of frame indices to decode.
        ...     Returns:
        ...         result (np.ndarray): np array of decoded frames of shape (num_frames, height, width, 3).
        ...     '''
        ...     frames = []
        ...     container.seek(0)
        ...     start_index = indices[0]
        ...     end_index = indices[-1]
        ...     for i, frame in enumerate(container.decode(video=0)):
        ...         if i > end_index:
        ...             break
        ...         if i >= start_index and i in indices:
        ...             frames.append(frame)
        ...     return np.stack([x.to_ndarray(format="rgb24") for x in frames])


        >>> def sample_frame_indices(clip_len, frame_sample_rate, seg_len):
        ...     '''
        ...     Sample a given number of frame indices from the video.
        ...     Args:
        ...         clip_len (`int`): Total number of frames to sample.
        ...         frame_sample_rate (`int`): Sample every n-th frame.
        ...         seg_len (`int`): Maximum allowed index of sample's last frame.
        ...     Returns:
        ...         indices (`list[int]`): List of sampled frame indices
        ...     '''
        ...     converted_len = int(clip_len * frame_sample_rate)
        ...     end_idx = np.random.randint(converted_len, seg_len)
        ...     start_idx = end_idx - converted_len
        ...     indices = np.linspace(start_idx, end_idx, num=clip_len)
        ...     indices = np.clip(indices, start_idx, end_idx - 1).astype(np.int64)
        ...     return indices


        >>> # load video
        >>> file_path = hf_hub_download(
        ...     repo_id="nielsr/video-demo", filename="eating_spaghetti.mp4", repo_type="dataset"
        ... )
        >>> container = av.open(file_path)

        >>> # sample frames
        >>> num_frames = model.config.num_image_with_embedding
        >>> indices = sample_frame_indices(
        ...     clip_len=num_frames, frame_sample_rate=4, seg_len=container.streams.video[0].frames
        ... )
        >>> frames = read_video_pyav(container, indices)

        >>> pixel_values = processor(images=list(frames), return_tensors="pt").pixel_values

        >>> generated_ids = model.generate(pixel_values=pixel_values, max_length=50)

        >>> print("Generated caption:", processor.batch_decode(generated_ids, skip_special_tokens=True))
        Generated caption: ['a woman is sitting at a table and she is talking about the food she is holding.']
        ```
        NF)rz   r8   r  rS   r{   rÕ   r  r   r:   r   r@   )ÚlossÚlogitsr{   r%   r&   )rÜ   r$   r³   r]   Úslicerª   rT  rÓ   rÂ   rO   rr   r‹   Úloss_functionr‚   rP   r@   r   r{   r%   r&   )rO   rR   rz   r8   r  rS   rž  r{   rÕ   r  rŸ  r|   Úoutputsr%   Úslice_indicesr¢  r¡  Únum_image_tokensÚshifted_logitss                      r1   r[   zGitForCausalLM.forward�  s   € ðl ÐØˆIà+3¨4¬8Øð
,
à)Ø%Ø%Ø'Ø+ØØ%=ð
,
ð 
,
ð ð
,
ð 
,
ˆð  Ô1ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜]¨1¨1¨1¨m¸Q¸Q¸QÐ+>Ô?Ñ@Ô@ˆàˆØÐà#œxÔ/Ô5°aÔ8ÔBÔGÔZÐØ# A A AÐ'7¸Ð':¸A¸A¸AÐ$=Ô>×IÒIÑKÔKˆNØ˜A˜A˜A˜q˜r˜r˜E”]×-Ò-Ñ/Ô/ˆFØ%�4Ô%Ø×#Ò# B¨¬Ô(>Ñ?Ô?Ø—’˜B‘”ðð ð  œ;Ô1ðð ð	ð ˆDõ &ØØØ#Ô3Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r0   c                 óX   •—  t          ¦   «         j        |f||||dœ|¤Ž}|s|s||d<   |S )N)r{   rz   rÕ   Úis_first_iterationr  )r=   Úprepare_inputs_for_generation)
rO   rR   r{   r  rz   rÕ   rª  r|   Úmodel_inputsrQ   s
            €r1   r«  z,GitForCausalLM.prepare_inputs_for_generationN  sa   ø€ ð =•u‘w”wÔ<Øð
à+Ø)ØØ1ð
ð 
ð ð
ð 
ˆð ð 	8 Yð 	8Ø+7ˆL˜Ñ(àÐr0   )
NNNNNNNNFr   )NNNNF)r'   r(   r)   Ú_tied_weights_keysr>   rš  r�  r   r   r   r+   r^   r	   rÙ   r]   r   r   r.   r   r[   r«  r_   r`   s   @r1   r–  r–  x  sÁ  ø€ € € € € ð *Ð+RÐSÐðð ð ð ð ðð ð ð%ð %ð %ð  ØØð *.Ø.2Ø,0Ø,0Ø-1Ø&*Ø(,Ø!%Ø).Ø-.ðz
ð z
à”< $Ñ&ðz
ð œ tÑ+ðz
ð ”l TÑ)ð	z
ð
 ”l TÑ)ðz
ð ”| dÑ*ðz
ð ”˜tÑ#ðz
ð  ™ðz
ð ˜$‘;ðz
ð #'ðz
ð ˜eœlÑ*ðz
ð Ð+Ô,ðz
ð 
ˆuŒ|Ô	Ð5Ñ	5ðz
ð z
ð z
ñ „^ñ „_ñ  Ôðz
ð~ ØØØØ ðð ð ð ð ð ð ð ð ð r0   r–  )r–  ro  rÛ   r[  )rà   )Lr*   r†   Úcollections.abcr   Údataclassesr   r+   r   Ú r   rå   Úactivationsr   Úcache_utilsr	   r
   Ú
generationr   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_gitr   r   Ú
get_loggerr'   rk   r"   rg  r3   rb   r˜   r¨   r¥   r°   rº   r¾   rÊ   rÛ   rä   r  r^   Úfloatr+  r-  r?  rH  rQ  r[  ri  ro  r–  Ú__all__r/   r0   r1   ú<module>rÁ     s³  ðð Ð à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø )Ð )Ð )Ð )Ð )Ð )Ø /Ð /Ð /Ð /Ð /Ð /Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð 
ˆÔ	˜HÑ	%Ô	%€ð €ððñ ô ð
 ð	<ð 	<ð 	<ð 	<ð 	<˜;ñ 	<ô 	<ñ „ñô ð	<ð*ð *ð *ð *ð *�B”Iñ *ô *ð *ðZB.ð B.ð B.ð B.ð B.�r”yñ B.ô B.ð B.ðLð ð ð ð �B”Iñ ô ð ð ÐðÐ ð
 ð  ð  ð  ð  �2”9ñ  ô  ð  ð0ð ð ð ð �b”iñ ô ð ð ð ð ð ð �”	ñ ô ð ðð ð ð ð Ð)ñ ô ð ðD
ð 
ð 
ð 
ð 
�”ñ 
ô 
ð 
ð: ðið ið ið ið i˜ñ iô iñ „ðið(Pð Pð Pð Pð P˜"œ)ñ Pô Pð Pðfð ð ð ð �2”9ñ ô ð ð. ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð %ð %ð %ð.6)ð 6)ð 6)ð 6)ð 6)˜œñ 6)ô 6)ð 6)ðtð ð ð ð Ð6ñ ô ð ðD
ð 
ð 
ð 
ð 
�r”yñ 
ô 
ð 
ðD#
ð #
ð #
ð #
ð #
˜2œ9ñ #
ô #
ð #
ðL €ððñ ô ð
4
ð 4
ð 4
ð 4
ð 4
Ð'ñ 4
ô 4
ñô ð
4
ðn
2ð 
2ð 
2ð 
2ð 
2�B”Iñ 
2ô 
2ð 
2ð €ððñ ô ð
p
ð p
ð p
ð p
ð p
Ð!ñ p
ô p
ñô ð
p
ðf €ððñ ô ð
ið ið ið ið iÐ'¨ñ iô iñô ð
iðX QÐ
PÐ
P€€€r0   