§
    ‚Štj¾  ã                   ó   — d dl Z d dlmZ d dlZd dlmZ d dlmZmZmZ ddl	m
Z ddlmZ ddlmZmZ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mZ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(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4  e,j5        e6¦  «        Z7 G d„ dej8        ¦  «        Z9e) G d„ de$¦  «        ¦   «         Z: G d„ dej8        ¦  «        Z;	 	 dCdej<        dej=        dej=        dej=        d ej=        dz  d!e>dz  d"e>d#e&e(         fd$„Z? G d%„ d&ej<        ¦  «        Z@ G d'„ d(e¦  «        ZA G d)„ d*e:¦  «        ZB G d+„ d,e¦  «        ZC G d-„ d.e:¦  «        ZDd/ej=        d0eEfd1„ZFe) G d2„ d3e:¦  «        ¦   «         ZG e)d4¬5¦  «         G d6„ d7e:e¦  «        ¦   «         ZH G d8„ d9ej<        ¦  «        ZI e)d:¬5¦  «         G d;„ d<e:¦  «        ¦   «         ZJ G d=„ d>e:¦  «        ZK e)d?¬5¦  «         G d@„ dAe:e¦  «        ¦   «         ZLg dB¢ZMdS )Dé    N)ÚCallable)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutputÚSeq2SeqSequenceClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚis_torchdynamo_compilingÚloggingÚtorch_compilable_check)Úmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputsé   )ÚPLBartConfigc            
       óV   ‡ — e Zd ZdZddededededz  fˆ fd„Zd	ej        fˆ fd
„Z	ˆ xZ
S )ÚPLBartScaledWordEmbeddingz\
    This module overrides nn.Embeddings' forward by multiplying with embeddings scale.
    ç      ð?Únum_embeddingsÚembedding_dimÚpadding_idxÚembed_scaleNc                 ó\   •— t          ¦   «                              |||¦  «         || _        d S ©N)ÚsuperÚ__init__r-   )Úselfr*   r+   r,   r-   Ú	__class__s        €úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/plbart/modeling_plbart.pyr1   z"PLBartScaledWordEmbedding.__init__B   s-   ø€ Ý‰Œ×Ò˜¨¸ÑDÔDÐDØ&ˆÔÐÐó    Ú	input_idsc                 óV   •— t          ¦   «                              |¦  «        | j        z  S r/   )r0   Úforwardr-   )r2   r6   r3   s     €r4   r8   z!PLBartScaledWordEmbedding.forwardF   s!   ø€ Ý‰wŒw�Š˜yÑ)Ô)¨DÔ,<Ñ<Ð<r5   )r)   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚfloatr1   ÚtorchÚTensorr8   Ú__classcell__©r3   s   @r4   r(   r(   =   s–   ø€ € € € € ðð ð'ð ' sð '¸3ð 'ÈSð 'Ð_dÐgkÑ_kð 'ð 'ð 'ð 'ð 'ð 'ð= ¤ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =r5   r(   c                   óF   ‡ — e Zd ZU eed<   dZdZddgZdZdZ	dZ
ˆ fd„Zˆ xZS )ÚPLBartPreTrainedModelÚconfigÚmodelTÚPLBartDecoderLayerÚPLBartEncoderLayerc                 óª   •— t          ¦   «                              |¦  «         t          |t          ¦  «        rt	          j        |j        ¦  «         d S d S r/   )r0   Ú_init_weightsÚ
isinstanceÚPLBartForConditionalGenerationÚinitÚzeros_Úfinal_logits_bias)r2   Úmoduler3   s     €r4   rK   z#PLBartPreTrainedModel._init_weightsT   sQ   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ<Ñ=Ô=ð 	2ÝŒK˜Ô0Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2r5   )r:   r;   r<   r&   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnrK   rB   rC   s   @r4   rE   rE   J   so   ø€ € € € € € àÐÐÑØÐØ&*Ð#Ø-Ð/CÐDÐØÐØ€NØÐð2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2r5   rE   c                   ób   ‡ — e Zd ZdZdedefˆ fd„Z	 ddej        ded	ej        dz  fˆ fd
„Zˆ xZ	S )Ú PLBartLearnedPositionalEmbeddingzN
    This module learns positional embeddings up to a fixed maximum size.
    r*   r+   c                 ój   •— d| _         t          ¦   «                              || j         z   |¦  «         d S )Né   )Úoffsetr0   r1   )r2   r*   r+   r3   s      €r4   r1   z)PLBartLearnedPositionalEmbedding.__init___   s3   ø€ ð ˆŒÝ‰Œ×Ò˜¨$¬+Ñ5°}ÑEÔEÐEÐEÐEr5   r   Nr6   Úpast_key_values_lengthÚposition_idsc                 ó0  •— |€V|j         dd…         \  }}t          j        |||z   t          j        | j        j        ¬¦  «                             |d¦  «        }n|                     d¦  «        }t          ¦   «          	                    || j
        z   ¦  «        S )z3`input_ids' shape is expected to be [bsz x seqlen].Nr\   )ÚdtypeÚdeviceéÿÿÿÿr   )Úshaper@   ÚarangeÚlongÚweightrb   ÚexpandÚ	unsqueezer0   r8   r]   )r2   r6   r^   r_   ÚbszÚseq_lenr3   s         €r4   r8   z(PLBartLearnedPositionalEmbedding.forwarde   s“   ø€ ð
 ÐØ$œ?¨2¨A¨2Ô.‰LˆC�Ý œ<Ø&Ð(>ÀÑ(HÕPUÔPZÐcgÔcnÔcuðñ ô çŠf�S˜"‰oŒoð ˆLð (×1Ò1°!Ñ4Ô4ˆLå‰wŒw�Š˜|¨d¬kÑ9Ñ:Ô:Ð:r5   )r   N)
r:   r;   r<   r=   r>   r1   r@   rA   r8   rB   rC   s   @r4   rZ   rZ   Z   sª   ø€ € € € € ðð ðF sð F¸3ð Fð Fð Fð Fð Fð Fð mqð;ð ;Øœð;Ø?Bð;ØV[ÔVbÐeiÑVið;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r5   rZ   ç        rQ   ÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutÚkwargsc                 ó®  — |€|                      d¦  «        dz  }t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |d¬¦  «        }t          j                             ||| j        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «         	                    ¦   «         }	|	|fS )Nrc   ç      à¿r\   r   ©Údim©ÚpÚtrainingr%   )
Úsizer@   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxrr   rz   Ú
contiguous)
rQ   rm   rn   ro   rp   rq   rr   rs   Úattn_weightsÚattn_outputs
             r4   Úeager_attention_forwardrƒ   u   sÈ   € ð €Ø—*’*˜R‘.”. DÑ(ˆõ ”<  s§}¢}°Q¸Ñ':Ô':Ñ;Ô;¸gÑE€LàÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2Ð(Ñ>Ô>€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r5   c                   óì   ‡ — e Zd ZdZ	 	 	 	 	 	 ddededed	ed
edededz  dedz  fˆ fd„Z	 	 	 dde	j
        de	j
        dz  dedz  de	j
        dz  dee         dee	j
        e	j
        dz  f         fd„Zˆ xZS )ÚPLBartAttentionz=Multi-headed attention from 'Attention Is All You Need' paperrl   FTNÚ	embed_dimÚ	num_headsrr   Ú
is_decoderÚbiasÚ	is_causalrF   Ú	layer_idxc	                 óz  •— t          ¦   «                              ¦   «          || _        || _        || _        ||z  | _        || _        | j        |z  | j        k    rt          d| j        › d|› d�¦  «        ‚| j        dz  | _        || _	        || _
        || _        |€/| j	        r(t                               d| j        j        › d�¦  «         t!          j        |||¬¦  «        | _        t!          j        |||¬¦  «        | _        t!          j        |||¬¦  «        | _        t!          j        |||¬¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).ru   zInstantiating a decoder z¸ without passing `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‰   )r0   r1   r†   r‡   rr   Úhead_dimrF   Ú
ValueErrorrq   rˆ   rŠ   r‹   ÚloggerÚwarning_oncer3   r:   r   ÚLinearÚk_projÚv_projÚq_projÚout_proj)
r2   r†   r‡   rr   rˆ   r‰   rŠ   rF   r‹   r3   s
            €r4   r1   zPLBartAttention.__init__”   sY  ø€ õ 	‰Œ×ÒÑÔÐØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒØˆŒàŒM˜IÑ%¨$¬.Ò8Ð8Ýð3ÈdÌnð 3ð 3Ø%.ð3ð 3ð 3ñô ð ð ”} dÑ*ˆŒØ$ˆŒØ"ˆŒØ"ˆŒØÐ ¤ÐÝ×Òð,¨4¬>Ô+Bð ,ð ,ð ,ñô ð õ ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝœ	 )¨Y¸TÐBÑBÔBˆŒˆˆr5   Úhidden_statesÚkey_value_statesÚpast_key_valuesrp   rs   Úreturnc                 óŽ  — |du}|j         dd…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }	d}
|�Ht          |t          ¦  «        r1|j                             | j	        ¦  «        }
|r|j
        }n
|j        }n|}|r|n|}|r3|�1|
r/|j        | j	                 j        }|j        | j	                 j        }nÞ|                      |¦  «        }|                      |¦  «        }g |j         dd…         ¢d‘| j        ‘R }|                     |¦  «                             dd¦  «        }|                     |¦  «                             dd¦  «        }|�E|                     ||| j	        ¦  «        \  }}|r$t          |t          ¦  «        rd|j        | j	        <   t%          j        | j        j        t,          ¦  «        } || |	|||f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )	z#Input shape: Batch x Time x ChannelNrc   r%   r\   FTrl   )rr   rq   )rd   rŽ   r•   Úviewr}   rL   r   Ú
is_updatedÚgetr‹   Úcross_attention_cacheÚself_attention_cacheÚlayersÚkeysÚvaluesr“   r”   Úupdater   Úget_interfacerF   Ú_attn_implementationrƒ   rz   rr   rq   Úreshaper€   r–   )r2   r—   r˜   r™   rp   rs   Úis_cross_attentionÚinput_shapeÚhidden_shapeÚquery_statesr�   Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚkv_shapeÚattention_interfacer‚   r�   s                      r4   r8   zPLBartAttention.forward»   s¨  € ð .°TÐ9Ðð $Ô)¨#¨2¨#Ô.ˆà8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆð —{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆàˆ
ØÐ&Ý˜/Õ+>Ñ?Ô?ð 7Ø,Ô7×;Ò;¸D¼NÑKÔK�
Ø%ð Pà+:Ô+PÐ(Ð(à+:Ô+OÐ(Ð(à'6Ð$à-?ÐRÐ)Ð)À]ˆØð 	F /Ð"=À*Ð"=à-Ô4°T´^ÔDÔIˆJØ/Ô6°t´~ÔFÔMˆLˆLàŸš ^Ñ4Ô4ˆJØŸ;š; ~Ñ6Ô6ˆLØF˜Ô-¨c¨r¨cÔ2ÐF°BÐF¸¼ÐFÐFˆHØ#Ÿš¨Ñ2Ô2×<Ò<¸QÀÑBÔBˆJØ'×,Ò,¨XÑ6Ô6×@Ò@ÀÀAÑFÔFˆLàÐ*Ø+?×+FÒ+FÀzÐS_ÐaeÔaoÑ+pÔ+pÑ(�
˜Là%ð F­*°_ÕFYÑ*ZÔ*Zð FØAE�OÔ.¨t¬~Ñ>å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}Ð>�C�C°$´,Ø”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—m’m KÑ0Ô0ˆà˜LÐ(Ð(r5   )rl   FTFNN©NNN)r:   r;   r<   r=   r>   r?   Úboolr&   r1   r@   rA   r   r   r   Útupler8   rB   rC   s   @r4   r…   r…   ‘   s]  ø€ € € € € ØGÐGð Ø ØØØ&*Ø $ð%Cð %Càð%Cð ð%Cð ð	%Cð
 ð%Cð ð%Cð ð%Cð ˜tÑ#ð%Cð ˜‘:ð%Cð %Cð %Cð %Cð %Cð %CðT 15Ø(,Ø.2ðH)ð H)à”|ðH)ð  œ,¨Ñ-ðH)ð  ™ð	H)ð
 œ tÑ+ðH)ð Ð-Ô.ðH)ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ðH)ð H)ð H)ð H)ð H)ð H)ð H)ð H)r5   r…   c                   ór   ‡ — e Zd Zd
dededz  fˆ fd„Zdej        dej        dee	         dej
        fd	„Zˆ xZS )rI   NrF   r‹   c                 ó  •— t          ¦   «                              ¦   «          |j        | _        t	          | j        |j        |j        ||¬¦  «        | _        t          j	        | j        ¦  «        | _
        |j        | _        t          |j                 | _        |j        | _        t          j        | j        |j        ¦  «        | _        t          j        |j        | j        ¦  «        | _        t          j	        | j        ¦  «        | _        d S )N)r†   r‡   rr   rF   r‹   )r0   r1   Úd_modelr†   r…   Úencoder_attention_headsÚattention_dropoutÚ	self_attnr   Ú	LayerNormÚself_attn_layer_normrr   r
   Úactivation_functionÚactivation_fnÚactivation_dropoutr’   Úencoder_ffn_dimÚfc1Úfc2Úfinal_layer_norm©r2   rF   r‹   r3   s      €r4   r1   zPLBartEncoderLayer.__init__  sÓ   ø€ Ý‰Œ×ÒÑÔÐØœˆŒå(Ø”nØÔ4ØÔ,ØØð
ñ 
ô 
ˆŒõ %'¤L°´Ñ$@Ô$@ˆÔ!Ø”~ˆŒÝ# FÔ$>Ô?ˆÔØ"(Ô";ˆÔÝ”9˜Tœ^¨VÔ-CÑDÔDˆŒÝ”9˜VÔ3°T´^ÑDÔDˆŒÝ "¤¨T¬^Ñ <Ô <ˆÔÐÐr5   r—   rp   rs   rš   c                 ó  — |} | j         |fd|i|¤Ž\  }}t          j                             || j        | j        ¬¦  «        }||z   }|                      |¦  «        }|}|                      |                      |¦  «        ¦  «        }t          j                             || j        | j        ¬¦  «        }|  	                    |¦  «        }t          j                             || j        | j        ¬¦  «        }||z   }|  
                    |¦  «        }|j        t          j        k    r_t          j        |¦  «                             ¦   «         s9t          j        |j        ¦  «        j        dz
  }t          j        || |¬¦  «        }|S )Nrp   rx   iè  )ÚminÚmax)rº   r   r~   rr   rz   r¼   r¾   rÁ   r¿   rÂ   rÃ   ra   r@   Úfloat16ÚisfiniteÚallÚfinforÇ   Úclamp)r2   r—   rp   rs   ÚresidualÚ_Úclamp_values          r4   r8   zPLBartEncoderLayer.forward  sv  € ð !ˆØ)˜4œ>Øð
ð 
à)ð
ð ð
ð 
Ñˆ�qõ
 œ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆØ×1Ò1°-Ñ@Ô@ˆà ˆØ×*Ò*¨4¯8ª8°MÑ+BÔ+BÑCÔCˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš Ñ/Ô/ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆØ×-Ò-¨mÑ<Ô<ˆàÔ¥%¤-Ò/Ð/½¼À}Ñ8UÔ8U×8YÒ8YÑ8[Ô8[Ð/Ýœ+ mÔ&9Ñ:Ô:Ô>ÀÑEˆKÝ!œK¨¸K¸<È[ÐYÑYÔYˆMàÐr5   r/   )r:   r;   r<   r&   r>   r1   r@   ÚFloatTensorr   r   rA   r8   rB   rC   s   @r4   rI   rI     sœ   ø€ € € € € ð=ð =˜|ð =¸¸d¹
ð =ð =ð =ð =ð =ð =ð&àÔ(ðð Ô)ðð Ð+Ô,ð	ð
 
Œðð ð ð ð ð ð ð r5   rI   c                   óÂ   ‡ — e Zd ZdZeedœZdefˆ fd„Ze	e
e	 	 	 ddej        dz  dej        dz  dej        dz  d	ee         d
ef
d„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚPLBartEncoderzä
    Transformer encoder consisting of *config.encoder_layers* self attention layers. Each layer is a
    [`PLBartEncoderLayer`].

    Args:
        config: PLBartConfig
        embed_tokens (nn.Embedding): output embedding
    )r—   Ú
attentionsrF   c                 óB  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        ‰j        }‰j        | _        ‰j        | _	        ‰j
        rt          j        |¦  «        nd}t          ‰j        || j        |¬¦  «        | _        t!          ‰j        |¦  «        | _        t%          j        ˆfd„t)          ‰j        ¦  «        D ¦   «         ¦  «        | _        t%          j        |¦  «        | _        d| _        |                      ¦   «          d S )Nr)   ©r-   c                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS ©)r‹   )rI   ©Ú.0ÚirF   s     €r4   ú
<listcomp>z*PLBartEncoder.__init__.<locals>.<listcomp>[  ó(   ø€ Ð$sÐ$sÐ$sÐQRÕ%7¸È!Ð%LÑ%LÔ%LÐ$sÐ$sÐ$sr5   F)r0   r1   rr   Úencoder_layerdropÚ	layerdropr·   Úpad_token_idr,   Úmax_position_embeddingsÚmax_source_positionsÚscale_embeddingÚmathÚsqrtr(   Ú
vocab_sizeÚembed_tokensrZ   Úembed_positionsr   Ú
ModuleListÚrangeÚencoder_layersr¡   r»   Úlayernorm_embeddingÚgradient_checkpointingÚ	post_init)r2   rF   r†   r-   r3   s    `  €r4   r1   zPLBartEncoder.__init__H  s  øø€ Ý‰Œ×Ò˜Ñ Ô Ð à”~ˆŒØÔ1ˆŒà”Nˆ	Ø!Ô.ˆÔØ$*Ô$BˆÔ!Ø.4Ô.DÐM•d”i 	Ñ*Ô*Ð*È#ˆå5ØÔ˜y¨$Ô*:Èð
ñ 
ô 
ˆÔõ  @ØÔ*Øñ 
ô  
ˆÔõ ”mÐ$sÐ$sÐ$sÐ$sÕV[Ð\bÔ\qÑVrÔVrÐ$sÑ$sÔ$sÑtÔtˆŒÝ#%¤<°	Ñ#:Ô#:ˆÔ à&+ˆÔ#à�ŠÑÔÐÐÐr5   Nr6   rp   Úinputs_embedsrs   rš   c                 óR  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        }|                      |d d …d d …df         ¦  «        }|                     |j        ¦  «        }||z   }|                      |¦  «        }t          j                             || j        | j	        ¬¦  «        }t          | j        ||¬¦  «        }t          | j        ¦  «        D ];\  }}d}	| j	        r!t          j        g ¦  «        }
|
| j        k     rd}	|	s
 |||fi |¤Ž}Œ<t#          |¬¦  «        S )Nz:You must specify exactly one of input_ids or inputs_embedsrc   rx   )rF   rî   rp   FT)Úlast_hidden_state)r�   ræ   rç   Útorb   rë   r   r~   rr   rz   r   rF   Ú	enumerater¡   r@   ÚrandrÞ   r   )r2   r6   rp   rî   rs   Ú	embed_posr—   ÚidxÚencoder_layerÚto_dropÚdropout_probabilitys              r4   r8   zPLBartEncoder.forwardb  sv  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø ×-Ò-¨iÑ8Ô8ˆMà×(Ò(¨°q°q°q¸!¸!¸!¸R°xÔ)@ÑAÔAˆ	Ø—L’L Ô!5Ñ6Ô6ˆ	à%¨	Ñ1ˆØ×0Ò0°Ñ?Ô?ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆå2Ø”;Ø'Ø)ð
ñ 
ô 
ˆõ
 #,¨D¬KÑ"8Ô"8ð 	ð 	ÑˆC�àˆGØŒ}ð #Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Ø"�Gàð Ø - Ø!Ø"ð!ð !ð ð!ð !�øõ Ø+ð
ñ 
ô 
ð 	
r5   r²   )r:   r;   r<   r=   rI   r…   Ú_can_record_outputsr&   r1   r"   r$   r   r@   Ú
LongTensorrA   rÐ   r   r   r   r8   rB   rC   s   @r4   rÒ   rÒ   9  sõ   ø€ € € € € ðð ð ,Ø%ðð Ðð
˜|ð ð ð ð ð ð ð4  ØØð .2Ø.2Ø26ð	*
ð *
àÔ# dÑ*ð*
ð œ tÑ+ð*
ð Ô(¨4Ñ/ð	*
ð
 Ð+Ô,ð*
ð 
ð*
ð *
ð *
ñ „^ñ „_ñ  Ôð*
ð *
ð *
ð *
ð *
r5   rÒ   c                   óÀ   ‡ — e Zd Zddededz  fˆ fd„Z	 	 	 	 	 ddej        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
e         dej        fd„Zˆ xZS )rH   NrF   r‹   c           	      ó¨  •— t          ¦   «                              ¦   «          |j        | _        t	          | j        |j        |j        dd||¬¦  «        | _        |j        | _        t          |j
                 | _        |j        | _        t          j        | j        ¦  «        | _        t	          | j        |j        |j        d||¬¦  «        | _        t          j        | j        ¦  «        | _        t          j        | j        |j        ¦  «        | _        t          j        |j        | j        ¦  «        | _        t          j        | j        ¦  «        | _        d S )NT)r†   r‡   rr   rˆ   rŠ   rF   r‹   )rr   rˆ   rF   r‹   )r0   r1   r·   r†   r…   Údecoder_attention_headsr¹   rº   rr   r
   r½   r¾   r¿   r   r»   r¼   Úencoder_attnÚencoder_attn_layer_normr’   Údecoder_ffn_dimrÁ   rÂ   rÃ   rÄ   s      €r4   r1   zPLBartDecoderLayer.__init__“  s   ø€ Ý‰Œ×ÒÑÔÐØœˆŒå(Ø”nØÔ4ØÔ,ØØØØð
ñ 
ô 
ˆŒð ”~ˆŒÝ# FÔ$>Ô?ˆÔØ"(Ô";ˆÔå$&¤L°´Ñ$@Ô$@ˆÔ!Ý+ØŒNØÔ*ØÔ,ØØØð
ñ 
ô 
ˆÔõ (*¤|°D´NÑ'CÔ'CˆÔ$Ý”9˜Tœ^¨VÔ-CÑDÔDˆŒÝ”9˜VÔ3°T´^ÑDÔDˆŒÝ "¤¨T¬^Ñ <Ô <ˆÔÐÐr5   Tr—   rp   Úencoder_hidden_statesÚencoder_attention_maskr™   Ú	use_cachers   rš   c                 óÞ  — |} | j         |f||dœ|¤Ž\  }}	t          j                             || j        | j        ¬¦  «        }||z   }|                      |¦  «        }|�]|} | j        |f|||dœ|¤Ž\  }}	t          j                             || j        | j        ¬¦  «        }||z   }|                      |¦  «        }|}|                      |  	                    |¦  «        ¦  «        }t          j                             || j
        | j        ¬¦  «        }|                      |¦  «        }t          j                             || j        | j        ¬¦  «        }||z   }|                      |¦  «        }|S )N)r™   rp   rx   )r˜   rp   r™   )rº   r   r~   rr   rz   r¼   rþ   rÿ   r¾   rÁ   r¿   rÂ   rÃ   )
r2   r—   rp   r  r  r™   r  rs   rÍ   rÎ   s
             r4   r8   zPLBartDecoderLayer.forward²  s§  € ð !ˆð *˜4œ>Øð
à+Ø)ð
ð 
ð ð	
ð 
Ñˆ�qõ œ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆØ×1Ò1°-Ñ@Ô@ˆð !Ð,Ø$ˆHà0˜tÔ0Øð à!6Ø5Ø /ð	 ð  ð
 ð ð  ÑˆM˜1õ œM×1Ò1°-À4Ä<ÐZ^ÔZgÐ1ÑhÔhˆMØ$ }Ñ4ˆMØ ×8Ò8¸ÑGÔGˆMð !ˆØ×*Ò*¨4¯8ª8°MÑ+BÔ+BÑCÔCˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš Ñ/Ô/ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆØ×-Ò-¨mÑ<Ô<ˆàÐr5   r/   )NNNNT)r:   r;   r<   r&   r>   r1   r@   rA   r   r³   r   r   r8   rB   rC   s   @r4   rH   rH   ’  sô   ø€ € € € € ð=ð =˜|ð =¸¸d¹
ð =ð =ð =ð =ð =ð =ðD /3Ø59Ø6:Ø(,Ø!%ð/ð /à”|ð/ð œ tÑ+ð/ð  %œ|¨dÑ2ð	/ð
 !&¤¨tÑ 3ð/ð  ™ð/ð ˜$‘;ð/ð Ð+Ô,ð/ð 
Œð/ð /ð /ð /ð /ð /ð /ð /r5   rH   c                   ó8  ‡ — e Zd ZdZe eedd¬¦  «         eedd¬¦  «        dœZdefˆ f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d	z  dej        d	z  ded	z  dee         defd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚPLBartDecoderzÐ
    Transformer decoder consisting of *config.decoder_layers* layers. Each layer is a [`PLBartDecoderLayer`]

    Args:
        config: PLBartConfig
        embed_tokens (nn.Embedding): output embedding
    r%   rº   )ÚindexÚ
layer_namerþ   )r—   rÓ   Úcross_attentionsrF   c                 ó\  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j	        rt          j        ‰j        ¦  «        nd}t          ‰j        ‰j        | j        |¬¦  «        | _        t!          ‰j        ‰j        ¦  «        | _        t%          j        ˆfd„t)          ‰j        ¦  «        D ¦   «         ¦  «        | _        t%          j        ‰j        ¦  «        | _        d| _        |                      ¦   «          d S )Nr)   rÕ   c                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS r×   )rH   rØ   s     €r4   rÛ   z*PLBartDecoder.__init__.<locals>.<listcomp>  rÜ   r5   F)r0   r1   rr   Údecoder_layerdroprÞ   rß   r,   rà   Úmax_target_positionsrâ   rã   rä   r·   r(   rå   ræ   rZ   rç   r   rè   ré   Údecoder_layersr¡   r»   rë   rì   rí   )r2   rF   r-   r3   s    ` €r4   r1   zPLBartDecoder.__init__ó  s  øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø”~ˆŒØÔ1ˆŒØ!Ô.ˆÔØ$*Ô$BˆÔ!Ø39Ô3IÐR•d”i ¤Ñ/Ô/Ð/Èsˆå5ØÔ˜vœ~¨tÔ/?È[ð
ñ 
ô 
ˆÔõ  @ØÔ*ØŒNñ 
ô  
ˆÔõ ”mÐ$sÐ$sÐ$sÐ$sÕV[Ð\bÔ\qÑVrÔVrÐ$sÑ$sÔ$sÑtÔtˆŒå#%¤<°´Ñ#?Ô#?ˆÔ à&+ˆÔ#à�ŠÑÔÐÐÐr5   Nr6   rp   r  r  r™   rî   r  rs   rš   c                 ót  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        }|r[|€Y|€| j        j        r6t	          t          | j        ¬¦  «        t          | j        ¬¦  «        ¦  «        nt          | j        ¬¦  «        }|                     ¦   «         d d…         \  }	}
|�|                     ¦   «         nd}t          j	        |
|j
        ¬¦  «        |z   }|€/t          ¦   «         s!||
z   }t          j        |	||j
        ¬¦  «        }t          |t          ¦  «        r|j        n|}t          | j        |||¬¦  «        }t!          | j        |||¬¦  «        }|                      |||¬¦  «        }|                     |j
        ¦  «        }||z   }|                      |¦  «        }t(          j                             || j        | j        ¬	¦  «        }t1          | j        ¦  «        D ];\  }}| j        r t          j        g ¦  «        }|| j        k     rŒ, ||||f|||d
œ|¤Ž}Œ<t9          ||¬¦  «        S )NzJYou must specify exactly one of decoder_input_ids or decoder_inputs_embeds)rF   rc   r   ©rb   )rF   rî   rp   r™   )rF   rî   rp   r  )r_   rx   )r  r™   r  )rð   r™   )r�   ræ   rF   Úis_encoder_decoderr   r   r{   Úget_seq_lengthr@   re   rb   r   ÚonesrL   r    r   r   rç   rñ   rë   r   r~   rr   rz   rò   r¡   ró   rÞ   r   )r2   r6   rp   r  r  r™   rî   r  rs   Ú
batch_sizeÚ
seq_lengthr^   r_   Úmask_seq_lengthÚself_attn_cacheÚ	positionsr—   rõ   Údecoder_layerrø   s                       r4   r8   zPLBartDecoder.forward  s·  € ð ˜Ð -°tÐ";Ñ<ð 	kÝÐiÑjÔjÐjàÐ Ø ×-Ò-¨iÑ8Ô8ˆMð ð 	˜Ð0ð )Ð4¸¼Ô8VÐ4õ $¥L¸¼Ð$DÑ$DÔ$DÅlÐZ^ÔZeÐFfÑFfÔFfÑgÔgÐgå!¨¬Ð5Ñ5Ô5ð ð "/×!3Ò!3Ñ!5Ô!5°c°r°cÔ!:Ñˆ
�JØETÐE` ×!?Ò!?Ñ!AÔ!AÐ!AÐfgÐÝ”| J°}Ô7KÐLÑLÔLÐOeÑeˆàÐ!Õ*BÑ*DÔ*DÐ!à4°zÑAˆOÝ"œZ¨
°OÈMÔL`ÐaÑaÔaˆNõ ˜/Õ+>Ñ?Ô?ð!ˆOÔ0Ð0à ð 	õ ,Ø”;Ø'Ø)Ø+ð	
ñ 
ô 
ˆõ ";Ø”;Ø'Ø1Ø"7ð	"
ñ "
ô "
Ðð ×(Ò(¨Ð4JÐYeÐ(ÑfÔfˆ	Ø—L’L Ô!5Ñ6Ô6ˆ	à%¨	Ñ1ˆØ×0Ò0°Ñ?Ô?ˆåœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆå"+¨D¬KÑ"8Ô"8ð 	ð 	ÑˆC�àŒ}ð Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Øà)˜MØØØ%ðð (>Ø /Ø#ðð ð ðð ˆMˆMõ 9Ø+Ø+ð
ñ 
ô 
ð 	
r5   )NNNNNNN)r:   r;   r<   r=   rH   r#   r…   rù   r&   r1   r"   r$   r   r@   rú   rA   rÐ   r   r³   r   r   r   r8   rB   rC   s   @r4   r  r  ä  sy  ø€ € € € € ðð ð ,Ø$�n _¸AÈ+ÐVÑVÔVØ*˜N¨?À!ÐP^Ð_Ñ_Ô_ðð Ðð˜|ð ð ð ð ð ð ð0  ØØð .2Ø.2Ø:>Ø:>Ø(,Ø26Ø!%ðR
ð R
àÔ# dÑ*ðR
ð œ tÑ+ðR
ð  %Ô0°4Ñ7ð	R
ð
 !&Ô 0°4Ñ 7ðR
ð  ™ðR
ð Ô(¨4Ñ/ðR
ð ˜$‘;ðR
ð Ð+Ô,ðR
ð 
3ðR
ð R
ð R
ñ „^ñ „_ñ  ÔðR
ð R
ð R
ð R
ð R
r5   r  r6   rß   c                 ó¶  — |                       ¦   «         }|€t          d¦  «        ‚|                     |dk    |¦  «         |                     |¦  «                             d¬¦  «        dz
                       d¦  «        }|                     d|¦  «                             ¦   «         }|dd…dd…f                               ¦   «         |dd…dd…f<   ||dd…df<   |S )zÏ
    Shift input ids one token to the right, and wrap the last non pad token (the <LID> token) Note that PLBart does not
    have a single `decoder_start_token_id` in contrast to other Bart-like models.
    Nz1self.model.config.pad_token_id has to be defined.iœÿÿÿr%   rv   rc   r   )Úcloner�   Úmasked_fill_ÚneÚsumri   ÚgatherÚsqueeze)r6   rß   Úprev_output_tokensÚindex_of_eosÚdecoder_start_tokenss        r4   Úshift_tokens_rightr$  c  sì   € ð
 #ŸšÑ*Ô*ÐàÐÝÐLÑMÔMÐMà×#Ò#Ð$6¸$Ò$>ÀÑMÔMÐMà&×)Ò)¨,Ñ7Ô7×;Ò;ÀÐ;ÑBÔBÀQÑF×QÒQÐRTÑUÔU€LØ-×4Ò4°Q¸ÑEÔE×MÒMÑOÔOÐØ 2°1°1°1°c°r°c°6Ô :× @Ò @Ñ BÔ BÐ�q�q�q˜!˜"˜"�uÑØ3Ð�q�q�q˜!�tÑàÐr5   c                   ób  ‡ — e Zd ZdddœZdefˆ 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ej                 dz  dedz  dej        dz  dej        dz  dedz  dee         deej                 ez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚPLBartModelzshared.weight)zencoder.embed_tokens.weightzdecoder.embed_tokens.weightrF   c                 ó\  •— t          ¦   «                              |¦  «         |j        |j        }}|j        rt          j        |j        ¦  «        nd}t          ||j        ||¬¦  «        | _	        t          |¦  «        | _        t          |¦  «        | _        |                      ¦   «          d S )Nr)   rÕ   )r0   r1   rß   rå   râ   rã   rä   r·   r(   ÚsharedrÒ   Úencoderr  Údecoderrí   )r2   rF   r,   rå   r-   r3   s        €r4   r1   zPLBartModel.__init__~  s—   ø€ Ý‰Œ×Ò˜Ñ Ô Ð à"(Ô"5°vÔ7H�ZˆØ39Ô3IÐR•d”i ¤Ñ/Ô/Ð/ÈsˆÝ/°
¸F¼NÈKÐepÐqÑqÔqˆŒå$ VÑ,Ô,ˆŒÝ$ VÑ,Ô,ˆŒà�ŠÑÔÐÐÐr5   c                 ó   — | j         S r/   )r(  ©r2   s    r4   Úget_input_embeddingsz PLBartModel.get_input_embeddingsŠ  s
   € ØŒ{Ðr5   c                 óX   — || _         | j         | j        _        | j         | j        _        d S r/   )r(  r)  ræ   r*  ©r2   ro   s     r4   Úset_input_embeddingsz PLBartModel.set_input_embeddings�  s'   € ØˆŒØ$(¤KˆŒÔ!Ø$(¤KˆŒÔ!Ð!Ð!r5   Nr6   rp   Údecoder_input_idsÚdecoder_attention_maskÚencoder_outputsr™   rî   Údecoder_inputs_embedsr  rs   rš   c
                 óà  — |€|€t          || j        j        ¦  «        }|€ | j        d	|||dœ|
¤Ž}nct	          |t
          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        dk    r|d         nd¬¦  «        } | j        d	|||d         ||||	dœ|
¤Ž}t          |j	        |j
        |j        |j        |j        |j	        |j        |j        ¬¦  «        S )
a  
        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`] or [`PLBartMultiTokenizer`] depending on the checkpoint.
            See [`PreTrainedTokenizer.encode`] and [`PreTrainedTokenizer.__call__`] for details.

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

            PLBart uses a specific language id token as the starting token for `decoder_input_ids` generation that
            varies according to source and target language, *e.g.* 50003 for *en_XX*, and 50001 for *java*. If
            `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see
            `past_key_values`).

            For translation and summarization training, `decoder_input_ids` should be provided. If no
            `decoder_input_ids` is provided, the model will create this tensor by shifting the `input_ids` to the right
            for denoising pre-training following the paper.
        decoder_attention_mask (:
            obj:*torch.LongTensor* 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.
        N)r6   rp   rî   r   r%   r\   )rð   r—   rÓ   ©r6   rp   r  r  r™   rî   r  )rð   r™   Údecoder_hidden_statesÚdecoder_attentionsr	  Úencoder_last_hidden_stater  Úencoder_attentions© )r$  rF   rß   r)  rL   r   Úlenr*  r   rð   r™   r—   rÓ   r	  )r2   r6   rp   r1  r2  r3  r™   rî   r4  r  rs   Údecoder_outputss               r4   r8   zPLBartModel.forward’  sY  € ðP Ð$Ð)>Ð)FÝ 2°9¸d¼kÔ>VÑ WÔ WÐàÐ"Ø/;¨t¬|ð 0Ø#Ø-Ø+ð0ð 0ð ð	0ð 0ˆOˆOõ ˜O­_Ñ=Ô=ð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð '˜$œ,ð 	
Ø'Ø1Ø"1°!Ô"4Ø#1Ø+Ø/Øð	
ð 	
ð ð	
ð 	
ˆõ "Ø-Ô?Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð	
ñ 	
ô 	
ð 		
r5   ©	NNNNNNNNN)r:   r;   r<   Ú_tied_weights_keysr&   r1   r-  r0  r"   r$   r   r@   rú   rA   ÚlistrÐ   r   r³   r   r   r´   r   r8   rB   rC   s   @r4   r&  r&  w  s¥  ø€ € € € € ð (7Ø'6ðð Ðð

˜|ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð0ð 0ð 0ð
  ØØð .2Ø26Ø59Ø6:Ø:>Ø(,Ø26Ø:>Ø!%ðJ
ð J
àÔ# dÑ*ðJ
ð Ô(¨4Ñ/ðJ
ð !Ô+¨dÑ2ð	J
ð
 !&¤¨tÑ 3ðJ
ð ˜eÔ/Ô0°4Ñ7ðJ
ð  ™ðJ
ð Ô(¨4Ñ/ðJ
ð  %Ô0°4Ñ7ðJ
ð ˜$‘;ðJ
ð Ð+Ô,ðJ
ð 
ˆuŒ|Ô	Ð1Ñ	1ðJ
ð J
ð J
ñ „^ñ „_ñ  ÔðJ
ð J
ð J
ð J
ð J
r5   r&  zv
    The PLBART Model with a language modeling head. Can be used for code-to-text, text-to-code and code-to-code.
    )Úcustom_introc                   óÊ  ‡ — e Zd ZdZdgZddiZdefˆ fd„Z	 dd	ed
edz  de	de
j        fˆ fd„Zd	eddf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ej                 dz  dedz  dej        dz  dej        dz  dej        dz  de	dz  dee         deej                 ez  fd„¦   «         ¦   «         ¦   «         Zdej        fd„Zˆ xZS )rM   rG   rP   úlm_head.weightzmodel.shared.weightrF   c                 ól  •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      dt          j        d| j        j        j        f¦  «        ¦  «         t          j
        |j        | j        j        j        d¬¦  «        | _        |                      ¦   «          d S )NrP   r%   Fr�   )r0   r1   r&  rG   Úregister_bufferr@   Úzerosr(  r*   r   r’   r·   Úlm_headrí   ©r2   rF   r3   s     €r4   r1   z'PLBartForConditionalGeneration.__init__î  s‘   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý  Ñ(Ô(ˆŒ
Ø×ÒÐ0µ%´+¸qÀ$Ä*ÔBSÔBbÐ>cÑ2dÔ2dÑeÔeÐeÝ”y ¤°´Ô1BÔ1QÐX]Ð^Ñ^Ô^ˆŒà�ŠÑÔÐÐÐr5   NTÚnew_num_tokensÚpad_to_multiple_ofÚmean_resizingrš   c                 ó˜   •— t          ¦   «                              |||¦  «        }|                      |j        j        d         ¦  «         |S )Nr   )r0   Úresize_token_embeddingsÚ_resize_final_logits_biasrg   rd   )r2   rI  rJ  rK  Únew_embeddingsr3   s        €r4   rM  z6PLBartForConditionalGeneration.resize_token_embeddingsö  sG   ø€ õ ™œ×8Ò8¸ÐI[Ð]jÑkÔkˆØ×&Ò& ~Ô'<Ô'BÀ1Ô'EÑFÔFÐFØÐr5   c                 ó  — | j         j        d         }||k    r| j         d d …d |…f         }nBt          j        d||z
  f| j         j        ¬¦  «        }t          j        | j         |gd¬¦  «        }|                      d|¦  «         d S )Nrc   r%   r  rv   rP   )rP   rd   r@   rF  rb   ÚcatrE  )r2   rI  Úold_num_tokensÚnew_biasÚ
extra_biass        r4   rN  z8PLBartForConditionalGeneration._resize_final_logits_biasý  s—   € ØÔ/Ô5°bÔ9ˆØ˜^Ò+Ð+ØÔ-¨a¨a¨a°°.°Ð.@ÔAˆHˆHåœ a¨¸.Ñ)HÐ%IÐRVÔRhÔRoÐpÑpÔpˆJÝ”y $Ô"8¸*Ð!EÈ1ÐMÑMÔMˆHØ×ÒÐ0°(Ñ;Ô;Ð;Ð;Ð;r5   r6   rp   r1  r2  r3  r™   rî   r4  Úlabelsr  rs   c                 óü  — |	�|€|€t          |	| j        j        ¦  «        } | j        |f||||||||
dœ|¤Ž}|                      |j        ¦  «        }|| j                             |j        ¦  «        z   }d}|	�Kt          ¦   «         } || 
                    d| j        j        ¦  «        |	 
                    d¦  «        ¦  «        }t          |||j        |j        |j        |j        |j        |j        |j        ¬¦	  «	        S )a 
  
        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`] or [`PLBartMultiTokenizer`] depending on the checkpoint.
            See [`PreTrainedTokenizer.encode`] and [`PreTrainedTokenizer.__call__`] for details.

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

            PLBart uses a specific language id token as the starting token for `decoder_input_ids` generation that
            varies according to source and target language, *e.g.* 50003 for *en_XX*, and 50001 for *java*. If
            `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see
            `past_key_values`).

            For translation and summarization training, `decoder_input_ids` should be provided. If no
            `decoder_input_ids` is provided, the model will create this tensor by shifting the `input_ids` to the right
            for denoising pre-training following the paper.
        decoder_attention_mask (:
            obj:*torch.LongTensor* 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. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example Mask-filling:

        ```python
        >>> from transformers import AutoTokenizer, PLBartForConditionalGeneration

        >>> model = PLBartForConditionalGeneration.from_pretrained("uclanlp/plbart-base")
        >>> tokenizer = AutoTokenizer.from_pretrained("uclanlp/plbart-base")

        >>> # en_XX is the language symbol id <LID> for English
        >>> TXT = "<s> Is 0 the <mask> Fibonacci number ? </s> en_XX"
        >>> input_ids = tokenizer([TXT], add_special_tokens=False, return_tensors="pt").input_ids

        >>> logits = model(input_ids).logits
        >>> masked_index = (input_ids[0] == tokenizer.mask_token_id).nonzero().item()
        >>> probs = logits[0, masked_index].softmax(dim=0)
        >>> values, predictions = probs.topk(5)

        >>> tokenizer.decode(predictions).split()
        ['first', 'same', 'highest', 'result', 'number']
        ```
        N)rp   r1  r3  r2  r™   rî   r4  r  rc   ©	ÚlossÚlogitsr™   r7  r8  r	  r9  r  r:  )r$  rF   rß   rG   rG  rð   rP   rñ   rb   r   rœ   rå   r   r™   r7  r8  r	  r9  r  r:  )r2   r6   rp   r1  r2  r3  r™   rî   r4  rU  r  rs   ÚoutputsÚ	lm_logitsÚmasked_lm_lossÚloss_fcts                   r4   r8   z&PLBartForConditionalGeneration.forward  s3  € ð@ ÐØ Ð(Ð-BÐ-JÝ$6°v¸t¼{Ô?WÑ$XÔ$XÐ!à&0 d¤jØð'
à)Ø/Ø+Ø#9Ø+Ø'Ø"7Øð'
ð '
ð ð'
ð '
ˆð —L’L Ô!:Ñ;Ô;ˆ	Ø Ô 6× 9Ò 9¸)Ô:JÑ KÔ KÑKˆ	àˆØÐÝ'Ñ)Ô)ˆHØ%˜X i§n¢n°R¸¼Ô9OÑ&PÔ&PÐRX×R]ÒR]Ð^`ÑRaÔRaÑbÔbˆNåØØØ#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r5   c                 ó6   — t          || j        j        ¦  «        S r/   )r$  rF   rß   )r2   rU  s     r4   Ú%prepare_decoder_input_ids_from_labelszDPLBartForConditionalGeneration.prepare_decoder_input_ids_from_labelsj  s   € Ý! &¨$¬+Ô*BÑCÔCÐCr5   )NT)
NNNNNNNNNN)r:   r;   r<   rS   Ú_keys_to_ignore_on_load_missingr?  r&   r1   r>   r³   r   Ú	EmbeddingrM  rN  r"   r$   r   r@   rú   rA   r@  rÐ   r   r   r   r´   r   r8   r_  rB   rC   s   @r4   rM   rM   â  s:  ø€ € € € € ð  ÐØ':Ð&;Ð#àÐ/ðÐð˜|ð ð ð ð ð ð ð aeðð Ø!ðØ7:¸T±zðØY]ðà	Œðð ð ð ð ð ð<¸ð <Àð <ð <ð <ð <ð  ØØð .2Ø26Ø59Ø6:Ø:>Ø(,Ø26Ø:>Ø&*Ø!%ð_
ð _
àÔ# dÑ*ð_
ð Ô(¨4Ñ/ð_
ð !Ô+¨dÑ2ð	_
ð
 !&¤¨tÑ 3ð_
ð ˜eÔ/Ô0°4Ñ7ð_
ð  ™ð_
ð Ô(¨4Ñ/ð_
ð  %Ô0°4Ñ7ð_
ð ”˜tÑ#ð_
ð ˜$‘;ð_
ð Ð+Ô,ð_
ð 
ˆuŒ|Ô	˜Ñ	.ð_
ð _
ð _
ñ „^ñ „_ñ  Ôð_
ðBD¸E¼Lð Dð Dð Dð Dð Dð Dð Dð Dr5   rM   c                   óX   ‡ — e Zd ZdZdedededefˆ fd„Zdej        dej        fd	„Z	ˆ xZ
S )
ÚPLBartClassificationHeadz-Head for sentence-level classification tasks.Ú	input_dimÚ	inner_dimÚnum_classesÚpooler_dropoutc                 óä   •— t          ¦   «                              ¦   «          t          j        ||¦  «        | _        t          j        |¬¦  «        | _        t          j        ||¦  «        | _        d S )N)ry   )r0   r1   r   r’   ÚdenseÚDropoutrr   r–   )r2   rd  re  rf  rg  r3   s        €r4   r1   z!PLBartClassificationHead.__init__q  sY   ø€ õ 	‰Œ×ÒÑÔÐÝ”Y˜y¨)Ñ4Ô4ˆŒ
Ý”z NÐ3Ñ3Ô3ˆŒÝœ	 )¨[Ñ9Ô9ˆŒˆˆr5   r—   rš   c                 óÖ   — |                       |¦  «        }|                      |¦  «        }t          j        |¦  «        }|                       |¦  «        }|                      |¦  «        }|S r/   )rr   ri  r@   Útanhr–   )r2   r—   s     r4   r8   z PLBartClassificationHead.forward}  s[   € ØŸš ]Ñ3Ô3ˆØŸ
š
 =Ñ1Ô1ˆÝœ
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš mÑ4Ô4ˆØÐr5   r9   rC   s   @r4   rc  rc  n  s�   ø€ € € € € Ø7Ð7ð
:àð
:ð ð
:ð ð	
:ð
 ð
:ð 
:ð 
:ð 
:ð 
:ð 
:ð U¤\ð °e´lð ð ð ð ð ð ð ð r5   rc  z‡
    PLBart model with a sequence classification/head on top (a linear layer on top of the pooled output) e.g.
    for GLUE tasks.
    c                   ó0  ‡ — e Zd Zdefˆ fd„Z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
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e         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚPLBartForSequenceClassificationrF   c                 óâ   •—  t          ¦   «         j        |fi |¤Ž t          |¦  «        | _        t	          |j        |j        |j        |j        ¦  «        | _        |  	                    ¦   «          d S r/   )
r0   r1   r&  rG   rc  r·   Ú
num_labelsÚclassifier_dropoutÚclassification_headrí   )r2   rF   rs   r3   s      €r4   r1   z(PLBartForSequenceClassification.__init__�  sq   ø€ Ø�‰ŒÔ˜Ð*Ð* 6Ð*Ð*Ð*Ý  Ñ(Ô(ˆŒ
Ý#;ØŒNØŒNØÔØÔ%ñ	$
ô $
ˆÔ ð 	�ŠÑÔÐÐÐr5   Nr6   rp   r1  r2  r3  rî   r4  rU  r  rs   rš   c
                 óJ  — |�d}	|€|�t          d| j        j        › �¦  «        ‚ | j        |f|||||||	dœ|
¤Ž}|d         }|                     | j        j        ¦  «                             |j        ¦  «        }t          t          j        |                     d¦  «        ¦  «                             ¦   «         dk    d¦  «         ||dd…f         }t          |j        d         |j        d         z  dk    d¦  «         |                     |                     d¦  «        d	|                     d	¦  «        ¦  «        dd…d	dd…f         }|                      |¦  «        }d}|��ˆ|                     |j        ¦  «        }| j        j        €p| j        j        dk    rd
| j        _        nS| j        j        dk    r7|j        t          j        k    s|j        t          j        k    rd| j        _        nd| j        _        | j        j        d
k    r\t/          ¦   «         }| j        j        dk    r1 ||                     ¦   «         |                     ¦   «         ¦  «        }n“ |||¦  «        }n†| j        j        dk    rLt3          ¦   «         } ||                     d	| j        j        ¦  «        |                     d	¦  «        ¦  «        }n*| j        j        dk    rt5          ¦   «         } |||¦  «        }t7          |||j        |j        |j        |j        |j         |j!        |j"        ¬¦	  «	        S )a©  
        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`] or [`PLBartMultiTokenizer`] depending on the checkpoint.
            See [`PreTrainedTokenizer.encode`] and [`PreTrainedTokenizer.__call__`] for details.

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

            PLBart uses a specific language id token as the starting token for `decoder_input_ids` generation that
            varies according to source and target language, *e.g.* 50003 for *en_XX*, and 50001 for *java*. If
            `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see
            `past_key_values`).

            For translation and summarization training, `decoder_input_ids` should be provided. If no
            `decoder_input_ids` is provided, the model will create this tensor by shifting the `input_ids` to the right
            for denoising pre-training following the paper.
        decoder_attention_mask (:
            obj:*torch.LongTensor* 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,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        NFz8Passing input embeddings is currently not supported for )rp   r1  r2  r3  rî   r4  r  r   r%   z7All examples must have the same number of <eos> tokens.z3Each example must contain at least one <eos> token.rc   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationrW  )#ÚNotImplementedErrorr3   r:   rG   ÚeqrF   Úeos_token_idrñ   rb   r!   r@   Úunique_consecutiver  Únumelrd   rœ   r{   rr  Úproblem_typerp  ra   rf   r>   r   r   r   r   r   r™   r7  r8  r	  r9  r  r:  )r2   r6   rp   r1  r2  r3  rî   r4  rU  r  rs   rZ  r—   Úeos_maskÚselectedÚsentence_representationrY  rX  r]  s                      r4   r8   z'PLBartForSequenceClassification.forwardš  sH  € ðP ÐØˆIàÐ Ð!:Ý%ØdÈ4Ì>ÔKbÐdÐdñô ð ð '1 d¤jØð
'
à)Ø/Ø#9Ø+Ø'Ø"7Øð
'
ð 
'
ð ð
'
ð 
'
ˆð   œ
ˆà—<’< ¤Ô 8Ñ9Ô9×<Ò<¸]Ô=QÑRÔRˆåÝÔ$ X§\¢\°!¡_¤_Ñ5Ô5×;Ò;Ñ=Ô=ÀÒBØEñ	
ô 	
ð 	
ð ! ¨1¨1¨1 Ô-ˆÝØŒN˜1Ô Ô!4°QÔ!7Ñ7¸1Ò<ØAñ	
ô 	
ð 	
ð #+§-¢-°×0BÒ0BÀ1Ñ0EÔ0EÀrÈ=×K]ÒK]Ð^`ÑKaÔKaÑ"bÔ"bÐcdÐcdÐcdÐfhÐjkÐjkÐjkÐckÔ"lÐØ×)Ò)Ð*AÑBÔBˆàˆØÑØ—Y’Y˜vœ}Ñ-Ô-ˆFØŒ{Ô'Ð/Ø”;Ô)¨QÒ.Ð.Ø/;�D”KÔ,Ð,Ø”[Ô+¨aÒ/Ð/°V´\ÅUÄZÒ5OÐ5OÐSYÔS_ÕchÔclÒSlÐSlØ/L�D”KÔ,Ð,à/K�D”KÔ,àŒ{Ô'¨<Ò7Ð7Ý"™9œ9�Ø”;Ô)¨QÒ.Ð.Ø#˜8 F§N¢NÑ$4Ô$4°f·n²nÑ6FÔ6FÑGÔG�D�Dà#˜8 F¨FÑ3Ô3�D�DØ”Ô)Ð-JÒJÐJÝ+Ñ-Ô-�Ø�x §¢¨B°´Ô0FÑ GÔ GÈÏÊÐUWÉÌÑYÔY��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨Ñ/Ô/�å.ØØØ#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r5   r>  )r:   r;   r<   r&   r1   r   r   r@   rú   rA   r@  rÐ   r³   r   r   r´   r   r8   rB   rC   s   @r4   rn  rn  †  se  ø€ € € € € ð˜|ð ð ð ð ð ð ð Øð .2Ø.2Ø59Ø:>Ø:>Ø26Ø:>Ø*.Ø!%ðk
ð k
àÔ# dÑ*ðk
ð œ tÑ+ðk
ð !Ô+¨dÑ2ð	k
ð
 !&Ô 0°4Ñ 7ðk
ð ˜eÔ/Ô0°4Ñ7ðk
ð Ô(¨4Ñ/ðk
ð  %Ô0°4Ñ7ðk
ð Ô  4Ñ'ðk
ð ˜$‘;ðk
ð Ð+Ô,ðk
ð 
Ð0Ñ	0ðk
ð k
ð k
ñ „^ñ Ôðk
ð k
ð k
ð k
ð k
r5   rn  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚPLBartDecoderWrapperz½
    This wrapper class is a helper class to correctly load pretrained checkpoints when the causal language model is
    used in combination with the [`EncoderDecoderModel`] framework.
    c                 óš   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      ¦   «          d S r/   )r0   r1   r  r*  rí   rH  s     €r4   r1   zPLBartDecoderWrapper.__init__  s@   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý$ VÑ,Ô,ˆŒØ�ŠÑÔÐÐÐr5   c                 ó   —  | j         |i |¤ŽS r/   )r*  )r2   Úargsrs   s      r4   r8   zPLBartDecoderWrapper.forward  s   € ØˆtŒ|˜TÐ, VÐ,Ð,Ð,r5   )r:   r;   r<   r=   r1   r8   rB   rC   s   @r4   r�  r�  
  sQ   ø€ € € € € ðð ð
ð ð ð ð ð
-ð -ð -ð -ð -ð -ð -r5   r�  zw
    PLBART decoder with a language modeling head on top (linear layer with weights tied to the input embeddings).
    c                   ó(  ‡ — e Zd ZddiZˆ fd„Zd„ Zd„ Z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dz  de	j        dz  de	j
        dz  dedz  dee	j        z  dee         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚPLBartForCausalLMrC  z!model.decoder.embed_tokens.weightc                 ó  •— d|_         d|_        t          ¦   «                              |¦  «         t	          |¦  «        | _        t          j        |j        |j	        d¬¦  «        | _
        |                      ¦   «          d S )NTFr�   )rˆ   r  r0   r1   r�  rG   r   r’   Úhidden_sizerå   rG  rí   rH  s     €r4   r1   zPLBartForCausalLM.__init__#  sp   ø€ Ø ˆÔØ$)ˆÔ!Ý‰Œ×Ò˜Ñ Ô Ð Ý)¨&Ñ1Ô1ˆŒ
å”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒð 	�ŠÑÔÐÐÐr5   c                 ó$   — | j         j        j        S r/   ©rG   r*  ræ   r,  s    r4   r-  z&PLBartForCausalLM.get_input_embeddings.  s   € ØŒzÔ!Ô.Ð.r5   c                 ó(   — || j         j        _        d S r/   rŠ  r/  s     r4   r0  z&PLBartForCausalLM.set_input_embeddings1  s   € Ø*/ˆŒ
ÔÔ'Ð'Ð'r5   Nr   r6   rp   r  r  r™   rî   rU  r  Úlogits_to_keeprs   rš   c
                 óþ  —  | j         j        d|||||||dœ|
¤Ž}|d         }t          |	t          ¦  «        rt	          |	 d¦  «        n|	}|                      |dd…|dd…f         ¦  «        }d}|�e|                     |j        ¦  «        }t          ¦   «         } || 	                    d| j
        j        ¦  «        | 	                    d¦  «        ¦  «        }t          |||j        |j        |j        |j        ¬¦  «        S )aF  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, PLBartForCausalLM

        >>> tokenizer = AutoTokenizer.from_pretrained("uclanlp/plbart-base")
        >>> model = PLBartForCausalLM.from_pretrained("uclanlp/plbart-base")
        >>> assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
        >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
        >>> outputs = model(**inputs)

        >>> logits = outputs.logits
        >>> expected_shape = [1, inputs.input_ids.shape[-1], model.config.vocab_size]
        >>> list(logits.shape) == expected_shape
        True
        ```r6  r   Nrc   )rX  rY  r™   r—   rÓ   r	  r;  )rG   r*  rL   r>   ÚslicerG  rñ   rb   r   rœ   rF   rå   r   r™   r—   rÓ   r	  )r2   r6   rp   r  r  r™   rî   rU  r  rŒ  rs   rZ  r—   Úslice_indicesrY  rX  r]  s                    r4   r8   zPLBartForCausalLM.forward4  s)  € ðL >P¸T¼ZÔ=Oð 	>
ØØ)Ø"7Ø#9Ø+Ø'Øð	>
ð 	>
ð ð	>
ð 	>
ˆð   œ
ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ—Y’Y˜vœ}Ñ-Ô-ˆFÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬KÔ,BÑCÔCÀVÇ[Â[ÐQSÁ_Ä_ÑUÔUˆDå0ØØØ#Ô3Ø!Ô/ØÔ)Ø$Ô5ð
ñ 
ô 
ð 	
r5   )	NNNNNNNNr   )r:   r;   r<   r?  r1   r-  r0  r   r   r@   rú   rA   rÐ   r   r³   r>   r   r   r´   r   r8   rB   rC   s   @r4   r†  r†    s}  ø€ € € € € ð 	Ð=ðÐð	ð 	ð 	ð 	ð 	ð/ð /ð /ð0ð 0ð 0ð Øð .2Ø.2Ø:>Ø;?Ø(,Ø26Ø*.Ø!%Ø-.ðA
ð A
àÔ# dÑ*ðA
ð œ tÑ+ðA
ð  %Ô0°4Ñ7ð	A
ð
 !&Ô 1°DÑ 8ðA
ð  ™ðA
ð Ô(¨4Ñ/ðA
ð Ô  4Ñ'ðA
ð ˜$‘;ðA
ð ˜eœlÑ*ðA
ð Ð+Ô,ðA
ð 
Ð2Ñ	2ðA
ð A
ð A
ñ „^ñ ÔðA
ð A
ð A
ð A
ð A
r5   r†  )r†  rM   rn  r&  rE   )Nrl   )Nrã   Úcollections.abcr   r@   r   Útorch.nnr   r   r   Ú r	   rN   Úactivationsr
   Úcache_utilsr   r   r   Ú
generationr   Úmasking_utilsr   r   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r    r!   Úutils.genericr"   Úutils.output_capturingr#   r$   Úconfiguration_plbartr&   Ú
get_loggerr:   r�   ra  r(   rE   rZ   ÚModulerA   r?   rƒ   r…   rI   rÒ   rH   r  r>   r$  r&  rM   rc  rn  r�  r†  Ú__all__r;  r5   r4   ú<module>r£     s  ðð* €€€Ø $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ )Ð )Ð )Ð )Ð )Ð )Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ BÐ BÐ BÐ BÐ BÐ BØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ .Ð .Ð .Ð .Ð .Ð .ð 
ˆÔ	˜HÑ	%Ô	%€ð
=ð 
=ð 
=ð 
=ð 
= ¤ñ 
=ô 
=ð 
=ð ð2ð 2ð 2ð 2ð 2˜Oñ 2ô 2ñ „ð2ð;ð ;ð ;ð ;ð ; r¤|ñ ;ô ;ð ;ðB !Øð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð8r)ð r)ð r)ð r)ð r)�b”iñ r)ô r)ð r)ðj0ð 0ð 0ð 0ð 0Ð3ñ 0ô 0ð 0ðfV
ð V
ð V
ð V
ð V
Ð)ñ V
ô V
ð V
ðrOð Oð Oð Oð OÐ3ñ Oô Oð Oðd|
ð |
ð |
ð |
ð |
Ð)ñ |
ô |
ð |
ð~ %¤,ð ¸cð ð ð ð ð( ðg
ð g
ð g
ð g
ð g
Ð'ñ g
ô g
ñ „ðg
ðT €ððñ ô ð
DDð DDð DDð DDð DDÐ%:¸Oñ DDô DDñô ð
DDðNð ð ð ð ˜rœyñ ô ð ð0 €ððñ ô ð{
ð {
ð {
ð {
ð {
Ð&;ñ {
ô {
ñô ð{
ð|-ð -ð -ð -ð -Ð0ñ -ô -ð -ð €ððñ ô ð
Y
ð Y
ð Y
ð Y
ð Y
Ð-¨ñ Y
ô Y
ñô ð
Y
ðxð ð €€€r5   