+
    œ°³jéŒ  ã                   óÜ  € R t ^ RIt^ RIHt ^ RIHtHtHt ^RIHt	 ^RI
HtHtHt ^RIHtHtHtHtHtHtHtHt ^RIHt ^RIHt ^RIHtHtHt ^R	IH t H!t! ^R
I"H#t# ^RI$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5 ^RI6H7t7 ]Pp                  ! ]94      t: ! R R]&4      t; ! R R]54      t< ! R R]%4      t= ! R R]04      t> ! R R]44      t? ! R R]24      t@ ! R R]'4      tA] ! R R]4      4       tB ! R R]34      tC ! R R ],4      tD ! R! R"]+4      tE ! R# R$]14      tF ! R% R&](4      tG ! R' R(]*4      tH ! R) R*].4      tI ! R+ R,])4      tJ ! R- R.]/4      tK ! R/ R0]-4      tL. R1OtMR# )2zPyTorch ERNIE model.N)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELoss)Úinitialization)ÚCacheÚDynamicCacheÚEncoderDecoderCache)Ú,BaseModelOutputWithPoolingAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚMaskedLMOutputÚMultipleChoiceModelOutputÚNextSentencePredictorOutputÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs)ÚBertCrossAttentionÚBertEmbeddingsÚBertEncoderÚBertForMaskedLMÚBertForMultipleChoiceÚBertForNextSentencePredictionÚBertForPreTrainingÚBertForPreTrainingOutputÚBertForQuestionAnsweringÚBertForSequenceClassificationÚBertForTokenClassificationÚ	BertLayerÚBertLMHeadModelÚBertLMPredictionHeadÚ	BertModelÚ
BertPoolerÚBertSelfAttention)ÚErnieConfigc                   óL   a a€ ] tR t^>t oRtV 3R ltRV3R lR lltRtVtV ;t	# )ÚErnieEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                óÐ   <€ \         SV `  V4       VP                  V n        VP                  '       d3   \        P                  ! VP
                  VP                  4      V n        R # R # )N)ÚsuperÚ__init__Úuse_task_idÚnnÚ	EmbeddingÚtask_type_vocab_sizeÚhidden_sizeÚtask_type_embeddings)ÚselfÚconfigÚ	__class__s   &&€Úh/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/ernie/modular_ernie.pyr/   ÚErnieEmbeddings.__init__A   sO   ø€ Ü‰Ñ˜Ô à!×-Ñ-ˆÔØ××ÐÜ(*¯ª°V×5PÑ5PÐRX×RdÑRdÓ(eˆDÖ%ñ ó    c                ó  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[RS[ P                  /# )	é   Ú	input_idsNÚtoken_type_idsÚtask_type_idsÚposition_idsÚinputs_embedsÚpast_key_values_lengthÚreturn)ÚtorchÚ
LongTensorÚFloatTensorÚintÚTensor)ÚformatÚ__classdict__s   "€r9   Ú__annotate__ÚErnieEmbeddings.__annotate__H   sŒ   ø€ ÷ 3ñ 3á×#Ñ# dÕ*ð3ñ ×(Ñ(¨4Õ/ð3ñ ×'Ñ'¨$Õ.ð	3ñ
 ×&Ñ&¨Õ-ð3ñ ×(Ñ(¨4Õ/ð3ñ !$ð3ñ 
�‰ñ3r;   c                óÎ  € Ve   VP                  4       pMVP                  4       R R pVw  r‰Vf   V P                  RWiV,           13,          pVf¦   \        V R4      '       dY   V P                  P	                  VP
                  ^ ,          R4      p
\        P                  ! V
^VR7      p
V
P	                  W‰4      pM;\        P                  ! V\        P                  V P                  P                  R7      pVf   V P                  V4      pV P                  V4      pVP                  VP                  4      pW[,           pV P                  V4      pWÍ,           pV P                  '       dY   Vf<   \        P                  ! V\        P                  V P                  P                  R7      pV P!                  V4      pWÎ,          pV P#                  V4      pV P%                  V4      pV# )NºNNNr?   )ÚdimÚindex)ÚdtypeÚdeviceéÿÿÿÿ)ÚsizerA   Úhasattrr?   ÚexpandÚshaperE   ÚgatherÚzerosÚlongrS   Úword_embeddingsÚtoken_type_embeddingsÚtoÚposition_embeddingsr0   r5   Ú	LayerNormÚdropout)r6   r>   r?   r@   rA   rB   rC   Úinput_shapeÚ
batch_sizeÚ
seq_lengthÚbuffered_token_type_idsr]   Ú
embeddingsr_   r5   s   &&&&&&&        r9   ÚforwardÚErnieEmbeddings.forwardH   s°  € ð Ò Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà!,Ñˆ
àÒØ×,Ñ,¨QÐ0FÐVlÕIlÐ0lÐ-lÕmˆLð
 Ò!Ü�tÐ-×.Ò.à*.×*=Ñ*=×*DÑ*DÀ\×EWÑEWÐXYÕEZÐ\^Ó*_Ð'Ü*/¯,ª,Ð7NÐTUÐ]iÔ*jÐ'Ø!8×!?Ñ!?À
Ó!W‘ä!&§¢¨[ÄÇ
Á
ÐSW×SdÑSd×SkÑSkÔ!l�àÒ Ø ×0Ñ0°Ó;ˆMØ $× :Ñ :¸>Ó JÐð &×(Ñ(Ð)>×)EÑ)EÓFˆØ"Õ:ˆ
à"×6Ñ6°|ÓDÐØÕ5ˆ
ð ××ÐØÒ$Ü %§¢¨K¼u¿z¹zÐRV×RcÑRc×RjÑRjÔ k�Ø#'×#<Ñ#<¸]Ó#KÐ ØÕ.ˆJà—^‘^ JÓ/ˆ
Ø—\‘\ *Ó-ˆ
ØÐr;   )r5   r0   )NNNNNé    )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r/   rg   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r8   rK   s   @@r9   r,   r,   >   s   ù‡ € ÙQõf÷3÷ 3ò 3r;   r,   c                   ó   € ] tR t^~tRtR# )ÚErnieSelfAttention© N©rj   rk   rl   rm   ro   ru   r;   r9   rt   rt   ~   ó   † Ûr;   rt   c                   ó   € ] tR t^‚tRtR# )ÚErnieCrossAttentionru   Nrv   ru   r;   r9   ry   ry   ‚   rw   r;   ry   c                   ó   € ] tR t^†tRtR# )Ú
ErnieLayerru   Nrv   ru   r;   r9   r{   r{   †   rw   r;   r{   c                   ó   € ] tR t^ŠtRtR# )ÚErniePoolerru   Nrv   ru   r;   r9   r}   r}   Š   rw   r;   r}   c                   ó   € ] tR t^ŽtRtR# )ÚErnieLMPredictionHeadru   Nrv   ru   r;   r9   r   r   Ž   rw   r;   r   c                   ó   € ] tR t^’tRtR# )ÚErnieEncoderru   Nrv   ru   r;   r9   r�   r�   ’   rw   r;   r�   c                   ó†   a a€ ] tR t^–t o]tRtRtRtRt	Rt
RtR]R]R]/t]P"                  ! 4       V 3R l4       tRtVtV ;t# )ÚErniePreTrainedModelÚernieTÚhidden_statesÚ
attentionsÚcross_attentionsc                óÄ  <€ \         SV `  V4       \        V\        4      '       d#   \        P
                  ! VP                  4       R# \        V\        4      '       d‚   \        P                  ! VP                  \        P                  ! VP                  P                  R,          4      P                  R4      4       \        P
                  ! VP                  4       R# R# )zInitialize the weightsNrT   )é   rT   )r.   Ú_init_weightsÚ
isinstancer   ÚinitÚzeros_Úbiasr,   Úcopy_rA   rE   ÚarangerX   rW   r?   )r6   Úmoduler8   s   &&€r9   rŠ   Ú"ErniePreTrainedModel._init_weights¥   s�   ø€ ô 	‰Ñ˜fÔ%Ü�fÔ3×4Ò4Ü�KŠK˜Ÿ™Ö$Ü˜¤×0Ò0Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÔhÜ�KŠK˜×-Ñ-Ö.ñ 1r;   ru   )rj   rk   rl   rm   r*   Úconfig_classÚbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_attention_backendr{   rt   ry   Ú_can_record_outputsrE   Úno_gradrŠ   ro   rp   rq   rr   s   @@r9   rƒ   rƒ   –   se   ù‡ € à€LØÐØ&*Ð#ØÐØ€NØÐØ"&Ðà˜ØÐ(ØÐ/ðÐð ‡]‚]ƒ_ô/ó ÷/ð /r;   rƒ   c                   óp   a a€ ] tR t^°t oR.tRV 3R llt]]]RV3R lR ll4       4       4       t	Rt
VtV ;t# )Ú
ErnieModelr{   c                óÔ   <€ \         SV `  W4       Wn        R V n        \	        V4      V n        \        V4      V n        V'       d   \        V4      MRV n	        V P                  4        R# )FN)r.   r/   r7   Úgradient_checkpointingr,   rf   r�   Úencoderr}   ÚpoolerÚ	post_init)r6   r7   Úadd_pooling_layerr8   s   &&&€r9   r/   ÚErnieModel.__init__³   sQ   ø€ Ü‰Ñ˜Ô&ØŒØ&+ˆÔ#ä)¨&Ó1ˆŒÜ# FÓ+ˆŒç->”k &Ô)ÀDˆŒð 	�‰Ör;   c                óÒ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[R,          RS[R,          RS[S[,          RS[S[ P                  ,          S[,          /# )r=   r>   NÚattention_maskr?   r@   rA   rB   Úencoder_hidden_statesÚencoder_attention_maskÚpast_key_valuesÚ	use_cacheÚkwargsrD   )rE   rI   r   Úboolr   r   Útupler	   )rJ   rK   s   "€r9   rL   ÚErnieModel.__annotate__Ã   sö   ø€ ÷ H
ñ H
á—<‘< $Õ&ðH
ñ Ÿ™ tÕ+ðH
ñ Ÿ™ tÕ+ð	H
ñ
 —|‘| dÕ*ðH
ñ —l‘l TÕ)ðH
ñ —|‘| dÕ*ðH
ñ  %Ÿ|™|¨dÕ2ðH
ñ !&§¡¨tÕ 3ðH
ñ  �ðH
ñ ˜$•;ðH
ñ Ñ+Õ,ðH
ñ 
‰u�|‰|Õ	ÑKÕ	KñH
r;   c                óì  € VRJ VRJ,          '       d   \        R4      hV P                  P                  '       d   V
e   T
MV P                  P                  p
MRp
V
'       do   V	fk   Vf   V P                  P                  '       d5   \        \        V P                  R7      \        V P                  R7      4      M\        V P                  R7      p	V	e   V	P                  4       M^ pV P                  VVVVVVR7      pV P                  VVVVV	R7      w  r(V P                  ! V3RVRVR	VR
V	RV
RV/VB pV^ ,          pV P                  e   V P                  V4      MRp\        VVVP                  R7      # )áª  
task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Task type embedding is a special embedding to represent the characteristic of different tasks, such as
    word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
    assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
    config.task_type_vocab_size-1]
Nz:You must specify exactly one of input_ids or inputs_embedsF)r7   )r>   rA   r?   r@   rB   rC   )r¦   r¨   Úembedding_outputr§   r©   r¦   r§   r¨   r©   rª   rA   )Úlast_hidden_stateÚpooler_outputr©   )Ú
ValueErrorr7   Ú
is_decoderrª   Úis_encoder_decoderr   r   Úget_seq_lengthrf   Ú_create_attention_masksr    r¡   r	   r©   )r6   r>   r¦   r?   r@   rA   rB   r§   r¨   r©   rª   r«   rC   r±   Úencoder_outputsÚsequence_outputÚpooled_outputs   &&&&&&&&&&&,     r9   rg   ÚErnieModel.forwardÀ   s¥  € ð0 ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZà�;‰;×!×!Ð!Ø%.Ò%:™	ÀÇÁ×@UÑ@U‰IàˆIç˜Ò0ð )Ò4¸¿¹×8V×8VÐ8Vô $¤L¸¿¹Ô$DÄlÐZ^×ZeÑZeÔFfÔgä!¨¯©Ô5ð ð FUÒE` ×!?Ñ!?Ô!AÐfgÐØŸ?™?ØØ%Ø)à'Ø'Ø#9ð +ó 
Ðð 26×1MÑ1MØ)Ø#9Ø-Ø"7Ø+ð 2Nó 2
Ñ.ˆð Ÿ,š,Øñ	
à)ð	
ð #8ð	
ð $:ð		
ð
 ,ð	
ð  ð	
ð &ð	
ð ñ	
ˆð *¨!Õ,ˆØ8<¿¹Ò8O˜Ÿ™ OÔ4ÐUYˆä;Ø-Ø'Ø+×;Ñ;ô
ð 	
r;   )r7   rf   r    rŸ   r¡   )T)
NNNNNNNNNN)rj   rk   rl   rm   Ú_no_split_modulesr/   r   r   r   rg   ro   rp   rq   rr   s   @@r9   r�   r�   °   sD   ù‡ € Ø%˜Ð÷ð  ØØ÷H
ñ H
ó ó ó  ÷H
ð H
r;   r�   c                   ó   € ] tR tRtRtR# )ÚErnieForPreTrainingOutputi  ru   Nrv   ru   r;   r9   r¿   r¿     rw   r;   r¿   c                   óV   a € ] tR tRt o RRRR/t]]R
V 3R lR ll4       4       tR	tV t	R# )ÚErnieForPreTrainingi  úcls.predictions.decoder.biasúcls.predictions.biasúcls.predictions.decoder.weightú'ernie.embeddings.word_embeddings.weightNc                óª  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[S[,          RS[S[ P                  ,          S[,          /
# )r=   r>   Nr¦   r?   r@   rA   rB   ÚlabelsÚnext_sentence_labelr«   rD   )rE   rI   r   r   r­   r¿   )rJ   rK   s   "€r9   rL   Ú ErnieForPreTraining.__annotate__  sØ   ø€ ÷ H
ñ H
á—<‘< $Õ&ðH
ñ Ÿ™ tÕ+ðH
ñ Ÿ™ tÕ+ð	H
ñ
 —|‘| dÕ*ðH
ñ —l‘l TÕ)ðH
ñ —|‘| dÕ*ðH
ñ —‘˜tÕ#ðH
ñ #Ÿ\™\¨DÕ0ðH
ñ Ñ+Õ,ðH
ñ 
‰u�|‰|Õ	Ñ8Õ	8ñH
r;   c	                óÆ  € V P                   ! V3RVRVRVRVRVRR/V	B p
V
R,          w  r¼V P                  W¼4      w  rÞR	pVe|   Vex   \        4       pV! VP                  RV P                  P
                  4      VP                  R4      4      pV! VP                  R^4      VP                  R4      4      pVV,           p\        VVVV
P                  V
P                  R
7      # )aj  
task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Task type embedding is a special embedding to represent the characteristic of different tasks, such as
    word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
    assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
    config.task_type_vocab_size-1]
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss. 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 in `[0, ..., config.vocab_size]`
next_sentence_label (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the next sequence prediction (classification) loss. Input should be a sequence
    pair (see `input_ids` docstring) Indices should be in `[0, 1]`:

    - 0 indicates sequence B is a continuation of sequence A,
    - 1 indicates sequence B is a random sequence.

Example:

```python
>>> from transformers import AutoTokenizer, ErnieForPreTraining
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("nghuyong/ernie-1.0-base-zh")
>>> model = ErnieForPreTraining.from_pretrained("nghuyong/ernie-1.0-base-zh")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)

>>> prediction_logits = outputs.prediction_logits
>>> seq_relationship_logits = outputs.seq_relationship_logits
```
r¦   r?   r@   rA   rB   Úreturn_dictT:Nr=   NN)ÚlossÚprediction_logitsÚseq_relationship_logitsr…   r†   rT   )	r„   Úclsr   Úviewr7   Ú
vocab_sizer¿   r…   r†   )r6   r>   r¦   r?   r@   rA   rB   rÇ   rÈ   r«   Úoutputsrº   r»   Úprediction_scoresÚseq_relationship_scoreÚ
total_lossÚloss_fctÚmasked_lm_lossÚnext_sentence_losss   &&&&&&&&&,         r9   rg   ÚErnieForPreTraining.forward  s  € ð^ —*’*Øñ	
à)ð	
ð *ð	
ð (ð		
ð
 &ð	
ð (ð	
ð ð	
ð ñ	
ˆð *1°­Ñ&ˆØ48·H±H¸_Ó4\Ñ1Ðàˆ
ØÒÐ"5Ò"AÜ'Ó)ˆHÙ%Ð&7×&<Ñ&<¸RÀÇÁ×AWÑAWÓ&XÐZ`×ZeÑZeÐfhÓZiÓjˆNÙ!)Ð*@×*EÑ*EÀbÈ!Ó*LÐNa×NfÑNfÐgiÓNjÓ!kÐØ'Ð*<Õ<ˆJä(ØØ/Ø$:Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r;   ru   ©NNNNNNNN©
rj   rk   rl   rm   Ú_tied_weights_keysr   r   rg   ro   rp   ©rK   s   @r9   rÁ   rÁ     s=   ø‡ € à&Ð(>Ø(Ð*SðÐð
 Ø÷H
ñ H
ó ó öH
r;   rÁ   c                   óJ   a € ] tR tRt o ]]RV 3R lR ll4       4       tRtV tR# )ÚErnieForCausalLMie  Nc                óH  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[ P                  R,          RS[S[ P                  ,          R,          RS[R,          RS[S[ P                  ,          RS[S[,          RS[S[ P                  ,          S[,          /# )r=   r>   Nr¦   r?   r@   rA   rB   r§   r¨   rÇ   r©   rª   Úlogits_to_keepr«   rD   )	rE   rI   Úlistr¬   rH   r   r   r­   r
   )rJ   rK   s   "€r9   rL   ÚErnieForCausalLM.__annotate__h  s  ø€ ÷ =
ñ =
á—<‘< $Õ&ð=
ñ Ÿ™ tÕ+ð=
ñ Ÿ™ tÕ+ð	=
ñ
 —|‘| dÕ*ð=
ñ —l‘l TÕ)ð=
ñ —|‘| dÕ*ð=
ñ  %Ÿ|™|¨dÕ2ð=
ñ !&§¡¨tÕ 3ð=
ñ —‘˜tÕ#ð=
ñ ™eŸl™lÕ+¨dÕ2ð=
ñ ˜$•;ð=
ñ ™eŸl™lÕ*ð=
ñ Ñ+Õ,ð=
ñ 
‰u�|‰|Õ	Ñ@Õ	@ñ=
r;   c                óÊ  € V	e   RpV P                   ! V3RVRVRVRVRVRVR	VR
V
RVRR/
VB pVP                  p\        V\        4      '       d   \	        V) R4      MTpV P                  VRVR3,          4      pRpV	e-   V P                  ! RRVRV	RV P                  P                  /VB p\        VVVP                  VP                  VP                  VP                  R7      # )aA  
task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Task type embedding is a special embedding to represent the characteristic of different tasks, such as
    word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
    assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
    config.task_type_vocab_size-1]
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 in `[0, ..., config.vocab_size]`
NFr¦   r?   r@   rA   rB   r§   r¨   r©   rª   rË   TrO   ÚlogitsrÇ   rÑ   )rÌ   rå   r©   r…   r†   r‡   ru   )r„   r²   r‹   rH   ÚslicerÏ   Úloss_functionr7   rÑ   r
   r©   r…   r†   r‡   )r6   r>   r¦   r?   r@   rA   rB   r§   r¨   rÇ   r©   rª   rá   r«   rÒ   r…   Úslice_indicesrå   rÌ   s   &&&&&&&&&&&&&,     r9   rg   ÚErnieForCausalLM.forwardf  sL  € ð: ÒØˆIà@DÇ
Â
ØñA
à)ðA
ð *ðA
ð (ð	A
ð
 &ðA
ð (ðA
ð #8ðA
ð $:ðA
ð ,ðA
ð  ðA
ð ðA
ð ñA
ˆð  ×1Ñ1ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜-¨¨=¸!Ð(;Õ<Ó=ˆàˆØÒØ×%Ò%Ñp¨VÐp¸FÐpÈtÏ{É{×OeÑOeÐpÐioÑpˆDä0ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø$×5Ñ5ô
ð 	
r;   ru   )NNNNNNNNNNNri   ©	rj   rk   rl   rm   r   r   rg   ro   rp   rÝ   s   @r9   rß   rß   e  s$   ø‡ € ØØ÷=
ñ =
ó ó ö=
r;   rß   c                   óV   a € ] tR tRt o RRRR/t]]R
V 3R lR ll4       4       tR	tV t	R# )ÚErnieForMaskedLMi¨  rÂ   rÃ   rÄ   rÅ   Nc                óÒ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[ P                  R,          RS[S[,          RS[S[ P                  ,          S[,          /# )r=   r>   Nr¦   r?   r@   rA   rB   r§   r¨   rÇ   r«   rD   )rE   rI   r   r   r­   r   )rJ   rK   s   "€r9   rL   ÚErnieForMaskedLM.__annotate__°  sÞ   ø€ ÷ 2
ñ 2
á—<‘< $Õ&ð2
ñ Ÿ™ tÕ+ð2
ñ Ÿ™ tÕ+ð	2
ñ
 —|‘| dÕ*ð2
ñ —l‘l TÕ)ð2
ñ —|‘| dÕ*ð2
ñ  %Ÿ|™|¨dÕ2ð2
ñ !&§¡¨tÕ 3ð2
ñ —‘˜tÕ#ð2
ñ Ñ+Õ,ð2
ñ 
‰u�|‰|Õ	™~Õ	-ñ2
r;   c
                óZ  € V P                   ! V3RVRVRVRVRVRVRVRR	/V
B pV^ ,          pV P                  V4      pR
pV	eG   \        4       pV! VP                  RV P                  P
                  4      V	P                  R4      4      p\        VVVP                  VP                  R7      # )a#  
task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Task type embedding is a special embedding to represent the characteristic of different tasks, such as
    word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
    assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
    config.task_type_vocab_size-1]
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss. 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 in `[0, ..., config.vocab_size]`
r¦   r?   r@   rA   rB   r§   r¨   rË   TN©rÌ   rå   r…   r†   rT   )	r„   rÏ   r   rÐ   r7   rÑ   r   r…   r†   )r6   r>   r¦   r?   r@   rA   rB   r§   r¨   rÇ   r«   rÒ   rº   rÓ   r×   rÖ   s   &&&&&&&&&&,     r9   rg   ÚErnieForMaskedLM.forward®  sð   € ð4 —*’*Øñ
à)ð
ð *ð
ð (ð	
ð
 &ð
ð (ð
ð #8ð
ð $:ð
ð ð
ð ñ
ˆð " !�*ˆØ ŸH™H _Ó5ÐàˆØÒÜ'Ó)ˆHÙ%Ð&7×&<Ñ&<¸RÀÇÁ×AWÑAWÓ&XÐZ`×ZeÑZeÐfhÓZiÓjˆNäØØ$Ø!×/Ñ/Ø×)Ñ)ô	
ð 	
r;   ru   )	NNNNNNNNNrÛ   rÝ   s   @r9   rì   rì   ¨  s:   ø‡ € à&Ð(>Ø(Ð*SðÐð
 Ø÷2
ñ 2
ó ó ö2
r;   rì   c                   óJ   a € ] tR tRt o ]]RV 3R lR ll4       4       tRtV tR# )ÚErnieForNextSentencePredictioniå  Nc                ó‚  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[S[,          R
S[S[ P                  ,          S[,          /	# ©r=   r>   Nr¦   r?   r@   rA   rB   rÇ   r«   rD   )rE   rI   r   r   r­   r   )rJ   rK   s   "€r9   rL   Ú+ErnieForNextSentencePrediction.__annotate__è  sÄ   ø€ ÷ D
ñ D
á—<‘< $Õ&ðD
ñ Ÿ™ tÕ+ðD
ñ Ÿ™ tÕ+ð	D
ñ
 —|‘| dÕ*ðD
ñ —l‘l TÕ)ðD
ñ —|‘| dÕ*ðD
ñ —‘˜tÕ#ðD
ñ Ñ+Õ,ðD
ñ 
‰u�|‰|Õ	Ñ:Õ	:ñD
r;   c                ó*  € V P                   ! V3RVRVRVRVRVRR/VB p	V	^,          p
V P                  V
4      pRpVe3   \        4       pV! VP                  R
^4      VP                  R
4      4      p\	        VVV	P
                  V	P                  R	7      # )aÇ  
task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Task type embedding is a special embedding to represent the characteristic of different tasks, such as
    word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
    assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
    config.task_type_vocab_size-1]
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the next sequence prediction (classification) loss. Input should be a sequence pair
    (see `input_ids` docstring). Indices should be in `[0, 1]`:

    - 0 indicates sequence B is a continuation of sequence A,
    - 1 indicates sequence B is a random sequence.

Example:

```python
>>> from transformers import AutoTokenizer, ErnieForNextSentencePrediction
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("nghuyong/ernie-1.0-base-zh")
>>> model = ErnieForNextSentencePrediction.from_pretrained("nghuyong/ernie-1.0-base-zh")

>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> next_sentence = "The sky is blue due to the shorter wavelength of blue light."
>>> encoding = tokenizer(prompt, next_sentence, return_tensors="pt")

>>> outputs = model(**encoding, labels=torch.LongTensor([1]))
>>> logits = outputs.logits
>>> assert logits[0, 0] < logits[0, 1]  # next sentence was random
```
r¦   r?   r@   rA   rB   rË   TNrð   rT   )r„   rÏ   r   rÐ   r   r…   r†   )r6   r>   r¦   r?   r@   rA   rB   rÇ   r«   rÒ   r»   Úseq_relationship_scoresrØ   rÖ   s   &&&&&&&&,     r9   rg   Ú&ErnieForNextSentencePrediction.forwardæ  sÑ   € ðZ —*’*Øñ	
à)ð	
ð *ð	
ð (ð		
ð
 &ð	
ð (ð	
ð ð	
ð ñ	
ˆð   �
ˆà"&§(¡(¨=Ó"9Ðà!ÐØÒÜ'Ó)ˆHÙ!)Ð*A×*FÑ*FÀrÈ1Ó*MÈvÏ{É{Ð[]ËÓ!_Ðä*Ø#Ø*Ø!×/Ñ/Ø×)Ñ)ô	
ð 	
r;   ru   ©NNNNNNNrê   rÝ   s   @r9   ró   ró   å  s'   ø‡ € ØØ÷D
ñ D
ó ó öD
r;   ró   c                   óJ   a € ] tR tRt o ]]RV 3R lR ll4       4       tRtV tR# )ÚErnieForSequenceClassificationi/  Nc                ó‚  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[S[,          R
S[S[ P                  ,          S[,          /	# rõ   )rE   rI   r   r   r­   r   )rJ   rK   s   "€r9   rL   Ú+ErnieForSequenceClassification.__annotate__2  sÄ   ø€ ÷ B
ñ B
á—<‘< $Õ&ðB
ñ Ÿ™ tÕ+ðB
ñ Ÿ™ tÕ+ð	B
ñ
 —|‘| dÕ*ðB
ñ —l‘l TÕ)ðB
ñ —|‘| dÕ*ðB
ñ —‘˜tÕ#ðB
ñ Ñ+Õ,ðB
ñ 
‰u�|‰|Õ	Ñ7Õ	7ñB
r;   c                ó  € V P                   ! V3RVRVRVRVRVRR/VB p	V	^,          p
V P                  V
4      p
V P                  V
4      pRpVEe˜   V P                  P                  f–   V P
                  ^8X  d   R	V P                  n        MrV P
                  ^8”  dQ   VP                  \        P                  8X  g    VP                  \        P                  8X  d   R
V P                  n        MRV P                  n        V P                  P                  R	8X  dK   \        4       pV P
                  ^8X  d'   V! VP                  4       VP                  4       4      pMŽV! W·4      pM…V P                  P                  R
8X  d>   \        4       pV! VP                  RV P
                  4      VP                  R4      4      pM-V P                  P                  R8X  d   \        4       pV! W·4      p\        VVV	P                   V	P"                  R7      # )a  
task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Task type embedding is a special embedding to represent the characteristic of different tasks, such as
    word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
    assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
    config.task_type_vocab_size-1]
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 regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
r¦   r?   r@   rA   rB   rË   TNÚ
regressionÚsingle_label_classificationÚmulti_label_classificationrð   rT   )r„   ra   Ú
classifierr7   Úproblem_typeÚ
num_labelsrR   rE   r[   rH   r   Úsqueezer   rÐ   r   r   r…   r†   )r6   r>   r¦   r?   r@   rA   rB   rÇ   r«   rÒ   r»   rå   rÌ   rÖ   s   &&&&&&&&,     r9   rg   Ú&ErnieForSequenceClassification.forward0  sÉ  € ð0 —*’*Øñ	
à)ð	
ð *ð	
ð (ð		
ð
 &ð	
ð (ð	
ð ð	
ð ñ	
ˆð   �
ˆàŸ™ ]Ó3ˆØ—‘ Ó/ˆàˆØÓØ�{‰{×'Ñ'Ò/Ø—?‘? aÔ'Ø/;�D—K‘KÕ,Ø—_‘_ qÔ(¨f¯l©l¼e¿j¹jÔ.HÈFÏLÉLÔ\a×\eÑ\eÔLeØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ô7Ü"›9�Ø—?‘? aÔ'Ù# F§N¡NÓ$4°f·n±nÓ6FÓG‘Dá# FÓ3‘DØ—‘×)Ñ)Ð-JÔJÜ+Ó-�Ù §¡¨B°·±Ó @À&Ç+Á+ÈbÃ/ÓR‘Ø—‘×)Ñ)Ð-IÔIÜ,Ó.�Ù Ó/�ä'ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r;   ru   rú   rê   rÝ   s   @r9   rü   rü   /  s'   ø‡ € ØØ÷B
ñ B
ó ó öB
r;   rü   c                   óJ   a € ] tR tRt o ]]RV 3R lR ll4       4       tRtV tR# )ÚErnieForMultipleChoiceiw  Nc                ó‚  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[S[,          R
S[S[ P                  ,          S[,          /	# rõ   )rE   rI   r   r   r­   r   )rJ   rK   s   "€r9   rL   Ú#ErnieForMultipleChoice.__annotate__z  sÄ   ø€ ÷ U
ñ U
á—<‘< $Õ&ðU
ñ Ÿ™ tÕ+ðU
ñ Ÿ™ tÕ+ð	U
ñ
 —|‘| dÕ*ðU
ñ —l‘l TÕ)ðU
ñ —|‘| dÕ*ðU
ñ —‘˜tÕ#ðU
ñ Ñ+Õ,ðU
ñ 
‰u�|‰|Õ	Ñ8Õ	8ñU
r;   c                ó*  € Ve   VP                   ^,          MVP                   ^,          p	Ve"   VP                  R
VP                  R
4      4      MRpVe"   VP                  R
VP                  R
4      4      MRpVe"   VP                  R
VP                  R
4      4      MRpVe"   VP                  R
VP                  R
4      4      MRpVe2   VP                  R
VP                  R4      VP                  R
4      4      MRpV P                  ! V3RVRVRVRVRVRR/VB p
V
^,          pV P	                  V4      pV P                  V4      pVP                  R
V	4      pRpVe   \        4       pV! W×4      p\        VVV
P                  V
P                  R	7      # )aQ  
input_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`):
    Indices of input sequence tokens in the vocabulary.

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

    [What are input IDs?](../glossary#input-ids)
token_type_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *optional*):
    Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
    1]`:

    - 0 corresponds to a *sentence A* token,
    - 1 corresponds to a *sentence B* token.

    [What are token type IDs?](../glossary#token-type-ids)
task_type_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *optional*):
    Task type embedding is a special embedding to represent the characteristic of different tasks, such as
    word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
    assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
    config.task_type_vocab_size-1]
position_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *optional*):
    Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
    config.max_position_embeddings - 1]`.

    [What are position IDs?](../glossary#position-ids)
inputs_embeds (`torch.FloatTensor` of shape `(batch_size, num_choices, sequence_length, hidden_size)`, *optional*):
    Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation. This
    is useful if you want more control over how to convert `input_ids` indices into associated vectors than the
    model's internal embedding lookup matrix.
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the multiple choice classification loss. Indices should be in `[0, ...,
    num_choices-1]` where `num_choices` is the size of the second dimension of the input tensors. (See
    `input_ids` above)
Nr¦   r?   r@   rA   rB   rË   Trð   rT   éþÿÿÿ)
rX   rÐ   rU   r„   ra   r  r   r   r…   r†   )r6   r>   r¦   r?   r@   rA   rB   rÇ   r«   Únum_choicesrÒ   r»   rå   Úreshaped_logitsrÌ   rÖ   s   &&&&&&&&,       r9   rg   ÚErnieForMultipleChoice.forwardx  sÀ  € ð` -6Ò,A�i—o‘o aÖ(À}×GZÑGZÐ[\ÕG]ˆà>GÒ>S�I—N‘N 2 y§~¡~°bÓ'9Ô:ÐY]ˆ	ØM[ÒMg˜×,Ñ,¨R°×1DÑ1DÀRÓ1HÔIÐmqˆØM[ÒMg˜×,Ñ,¨R°×1DÑ1DÀRÓ1HÔIÐmqˆØGSÒG_�|×(Ñ(¨¨\×->Ñ->¸rÓ-BÔCÐeiˆð Ò(ð ×Ñ˜r =×#5Ñ#5°bÓ#9¸=×;MÑ;MÈbÓ;QÔRàð 	ð —*’*Øñ	
à)ð	
ð *ð	
ð (ð		
ð
 &ð	
ð (ð	
ð ð	
ð ñ	
ˆð   �
ˆàŸ™ ]Ó3ˆØ—‘ Ó/ˆØ Ÿ+™+ b¨+Ó6ˆàˆØÒÜ'Ó)ˆHÙ˜OÓ4ˆDä(ØØ"Ø!×/Ñ/Ø×)Ñ)ô	
ð 	
r;   ru   rú   rê   rÝ   s   @r9   r	  r	  w  s'   ø‡ € ØØ÷U
ñ U
ó ó öU
r;   r	  c                   óJ   a € ] tR tRt o ]]RV 3R lR ll4       4       tRtV tR# )ÚErnieForTokenClassificationiÒ  Nc                ó‚  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[S[,          R
S[S[ P                  ,          S[,          /	# rõ   )rE   rI   r   r   r­   r   )rJ   rK   s   "€r9   rL   Ú(ErnieForTokenClassification.__annotate__Õ  s¹   ø€ ÷ .
ñ .
á—<‘< $Õ&ð.
ñ Ÿ™ tÕ+ð.
ñ Ÿ™ tÕ+ð	.
ñ
 —|‘| dÕ*ð.
ñ —l‘l TÕ)ð.
ñ —|‘| dÕ*ð.
ñ —‘˜tÕ#ð.
ñ Ñ+Õ,ð.
ñ 
‰u�|‰|Õ	Ñ4Õ	4ñ.
r;   c                ó`  € V P                   ! V3RVRVRVRVRVRR/VB p	V	^ ,          p
V P                  V
4      p
V P                  V
4      pRpVe=   \        4       pV! VP	                  R
V P
                  4      VP	                  R
4      4      p\        VVV	P                  V	P                  R	7      # )al  
task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Task type embedding is a special embedding to represent the characteristic of different tasks, such as
    word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
    assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
    config.task_type_vocab_size-1]
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.
r¦   r?   r@   rA   rB   rË   TNrð   rT   )	r„   ra   r  r   rÐ   r  r   r…   r†   )r6   r>   r¦   r?   r@   rA   rB   rÇ   r«   rÒ   rº   rå   rÌ   rÖ   s   &&&&&&&&,     r9   rg   Ú#ErnieForTokenClassification.forwardÓ  sÛ   € ð, —*’*Øñ	
à)ð	
ð *ð	
ð (ð		
ð
 &ð	
ð (ð	
ð ð	
ð ñ	
ˆð " !�*ˆàŸ,™, Ó7ˆØ—‘ Ó1ˆàˆØÒÜ'Ó)ˆHÙ˜FŸK™K¨¨D¯O©OÓ<¸f¿k¹kÈ"»oÓNˆDä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r;   ru   rú   rê   rÝ   s   @r9   r  r  Ò  s$   ø‡ € ØØ÷.
ñ .
ó ó ö.
r;   r  c                   óJ   a € ] tR tRt o ]]RV 3R lR ll4       4       tRtV tR# )ÚErnieForQuestionAnsweringi  Nc                óª  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[S[,          RS[S[ P                  ,          S[,          /
# )r=   r>   Nr¦   r?   r@   rA   rB   Ústart_positionsÚend_positionsr«   rD   )rE   rI   r   r   r­   r   )rJ   rK   s   "€r9   rL   Ú&ErnieForQuestionAnswering.__annotate__	  sÌ   ø€ ÷ <
ñ <
á—<‘< $Õ&ð<
ñ Ÿ™ tÕ+ð<
ñ Ÿ™ tÕ+ð	<
ñ
 —|‘| dÕ*ð<
ñ —l‘l TÕ)ð<
ñ —|‘| dÕ*ð<
ñ Ÿ™¨Õ,ð<
ñ —|‘| dÕ*ð<
ñ Ñ+Õ,ð<
ñ 
‰u�|‰|Õ	Ñ;Õ	;ñ<
r;   c	                óô  € V P                   ! V3RVRVRVRVRVRR/V	B p
V
^ ,          pV P                  V4      pVP                  ^RR7      w  rÞVP                  R4      P	                  4       pVP                  R4      P	                  4       pR	pVeÄ   VeÀ   \        VP                  4       4      ^8”  d   VP                  R4      p\        VP                  4       4      ^8”  d   VP                  R4      pVP                  ^4      pVP                  ^ V4      pVP                  ^ V4      p\        VR
7      pV! W×4      pV! Wè4      pVV,           ^,          p\        VVVV
P                  V
P                  R7      # )r°   r¦   r?   r@   rA   rB   rË   T)rP   N)Úignore_index)rÌ   Ústart_logitsÚ
end_logitsr…   r†   rT   )r„   Ú
qa_outputsÚsplitr  Ú
contiguousÚlenrU   Úclampr   r   r…   r†   )r6   r>   r¦   r?   r@   rA   rB   r  r  r«   rÒ   rº   rå   r  r   rÕ   Úignored_indexrÖ   Ú
start_lossÚend_losss   &&&&&&&&&,          r9   rg   Ú!ErnieForQuestionAnswering.forward  sž  € ð* —*’*Øñ	
à)ð	
ð *ð	
ð (ð		
ð
 &ð	
ð (ð	
ð ð	
ð ñ	
ˆð " !�*ˆà—‘ Ó1ˆØ#)§<¡<°°r <Ó#:Ñ ˆØ#×+Ñ+¨BÓ/×:Ñ:Ó<ˆØ×'Ñ'¨Ó+×6Ñ6Ó8ˆ
àˆ
ØÒ&¨=Ò+Dä�?×'Ñ'Ó)Ó*¨QÔ.Ø"1×"9Ñ"9¸"Ó"=�Ü�=×%Ñ%Ó'Ó(¨1Ô,Ø -× 5Ñ 5°bÓ 9�à(×-Ñ-¨aÓ0ˆMØ-×3Ñ3°A°}ÓEˆOØ)×/Ñ/°°=ÓAˆMä'°]ÔCˆHÙ! ,Ó@ˆJÙ 
Ó:ˆHØ$ xÕ/°1Õ4ˆJä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r;   ru   rÚ   rê   rÝ   s   @r9   r  r    s$   ø‡ € ØØ÷<
ñ <
ó ó ö<
r;   r  )
rß   rì   r	  ró   rÁ   r  rü   r  r�   rƒ   )Nrn   rE   Útorch.nnr1   r   r   r   Ú r   rŒ   Úcache_utilsr   r   r   Úmodeling_outputsr	   r
   r   r   r   r   r   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úbert.modeling_bertr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Úconfiguration_ernier*   Ú
get_loggerrj   Úloggerr,   rt   ry   r{   r}   r   r�   rƒ   r�   r¿   rÁ   rß   rì   ró   rü   r	  r  r  Ú__all__ru   r;   r9   Ú<module>r8     s€  ðñ ã Ý ß AÑ Aå &ß CÑ C÷	÷ 	ó 	õ .Ý &ß @Ñ @ß IÝ 5÷÷ ÷ ÷ õ õ& -ð 
×	Ò	˜HÓ	%€ô=�nô =ô@	Ð*ô 	ô	Ð,ô 	ô	�ô 	ô	�*ô 	ô	Ð0ô 	ô	�;ô 	ð ô/˜?ó /ó ð/ô2[
�ô [
ô|	Ð 8ô 	ôP
Ð,ô P
ôf@
�ô @
ôF:
�ô :
ôzG
Ð%Bô G
ôTE
Ð%Bô E
ôPX
Ð2ô X
ôv1
Ð"<ô 1
ôh?
Ð 8ô ?
òD‚r;   