Ë
    S^(h—€  ã                   ó  — d dl Z d dlmZmZmZ d dlmZ d dlZd dl	m
Z d dl
Zd dl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mZmZm Z  dd	l!m"Z"m#Z#m$Z$ d
dl%m&Z&  e$jN                  e(«      Z)dZ*dZ+dZ,dZ-d„ Z.d„ Z/ G d„ dej`                  «      Z1 G d„ dej`                  «      Z2 G d„ dej`                  «      Z3 G d„ dej`                  «      Z4 G d„ dej`                  «      Z5 G d„ dej`                  «      Z6 G d„ dej`                  «      Z7 G d „ d!e«      Z8 G d"„ d#ej`                  «      Z9 e"d$e,«       G d%„ d&e8«      «       Z: ee:e*de+«        G d'„ d(ej`                  «      Z; e"d)e,«       G d*„ d+e8«      «       Z< ee<e*ee+«        G d,„ d-ej`                  «      Z= e"d.e,«       G d/„ d0e8«      «       Z> ee>e*ee+«        G d1„ d2ej`                  «      Z? e"d3e,«       G d4„ d5e8«      «       Z@ e e@e-jƒ                  d6«      «        ee@e*ee+«        G d7„ d8ej`                  «      ZB e"d9e,«       G d:„ d;e8«      «       ZC eeCe*ee+«        G d<„ d=ej`                  «      ZD e"d>e,«       G d?„ d@e8«      «       ZE eeEe*ee+«       g dA¢ZFy)Bé    N)ÚCallableÚOptionalÚTuple)Ú
FrozenDictÚfreezeÚunfreeze)Úflatten_dictÚunflatten_dict)Úlaxé   )ÚFlaxBaseModelOutputÚFlaxMaskedLMOutputÚFlaxMultipleChoiceModelOutputÚ FlaxQuestionAnsweringModelOutputÚFlaxSequenceClassifierOutputÚFlaxTokenClassifierOutput)ÚACT2FNÚFlaxPreTrainedModelÚappend_call_sample_docstringÚoverwrite_call_docstring)Úadd_start_docstringsÚ%add_start_docstrings_to_model_forwardÚloggingé   )ÚDistilBertConfigzdistilbert-base-uncasedr   a  

    This model inherits from [`FlaxPreTrainedModel`]. Check the superclass documentation for the generic methods the
    library implements for all its model (such as downloading, saving and converting weights from PyTorch models)

    This model is also a
    [flax.linen.Module](https://flax.readthedocs.io/en/latest/api_reference/flax.linen/module.html) subclass. Use it as
    a regular Flax linen Module and refer to the Flax documentation for all matter related to general usage and
    behavior.

    Finally, this model supports inherent JAX features such as:

    - [Just-In-Time (JIT) compilation](https://jax.readthedocs.io/en/latest/jax.html#just-in-time-compilation-jit)
    - [Automatic Differentiation](https://jax.readthedocs.io/en/latest/jax.html#automatic-differentiation)
    - [Vectorization](https://jax.readthedocs.io/en/latest/jax.html#vectorization-vmap)
    - [Parallelization](https://jax.readthedocs.io/en/latest/jax.html#parallelization-pmap)

    Parameters:
        config ([`DistilBertConfig`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~PreTrainedModel.from_pretrained`] method to load the model weights.
aÃ  
    Args:
        input_ids (`numpy.ndarray` of shape `({0})`):
            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)
        attention_mask (`numpy.ndarray` of shape `({0})`, *optional*):
            Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

            - 1 for tokens that are **not masked**,
            - 0 for tokens that are **masked**.

            [What are attention masks?](../glossary#attention-mask)
        output_attentions (`bool`, *optional*):
            Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned
            tensors for more detail.
        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
            more detail.
        return_dict (`bool`, *optional*):
            Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
c                 óv   — dt        j                  dd|dz  z  t        j                  |«      z  «      z  }| |z  S )Nr   i'  é   )ÚnpÚpowerÚfloat32)ÚposÚiÚd_modelÚangle_ratess       úu/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/distilbert/modeling_flax_distilbert.pyÚ
get_anglesr&   `   s8   € Ø”b—h‘h˜u q¨A°©F¡|´r·z±zÀ'Ó7JÑ&JÓKÑK€KØ�ÑÐó    c                 ó´  — t        t        j                  | «      d d …t        j                  f   t        j                  |«      t        j                  d d …f   |«      }t        j                  |d d …dd d…f   «      |d d …dd d…f<   t        j
                  |d d …dd d…f   «      |d d …dd d…f<   |t        j                  df   }t        j                  |«      S )Nr   r   r   .)r&   r   ÚarangeÚnewaxisÚsinÚcosÚjnpÚarray)Úpositionr#   Ú
angle_radsÚpos_encodings       r%   Úpositional_encodingr2   e   s¿   € äœBŸI™I hÓ/²´2·:±:°Ñ>ÄÇ	Á	È'Ó@RÔSU×S]ÑS]Ò_`ÐS`Ñ@aÐcjÓk€Jô Ÿ&™& ªA¨q¨t°!¨t¨GÑ!4Ó5€JŠq�!�$�Q�$ˆwÑô Ÿ&™& ªA¨q¨t°!¨t¨GÑ!4Ó5€JŠq�!�$�Q�$ˆwÑàœbŸj™j¨#˜oÑ.€Lä�9‰9�\Ó"Ð"r'   c                   óf   — e Zd ZU dZeed<   ej                  Zej                  ed<   d„ Z	dde
fd„Zy)	ÚFlaxEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.ÚconfigÚdtypec                 óR  — t        j                  | j                  j                  | j                  j                  t
        j                   j                  j                  | j                  j                  ¬«      ¬«      | _	        | j                  j                  s‚t        j                  | j                  j                  | j                  j                  t
        j                   j                  j                  | j                  j                  ¬«      ¬«      | _        n9t        | j                  j                  | j                  j                  «      | _        t        j                  d| j                   ¬«      | _        t        j"                  | j                  j$                  ¬«      | _        y )N©Ústddev)Úembedding_initçê-�™—q=©Úepsilonr6   ©Úrate)ÚnnÚEmbedr5   Ú
vocab_sizeÚdimÚjaxÚinitializersÚnormalÚinitializer_rangeÚword_embeddingsÚsinusoidal_pos_embdsÚmax_position_embeddingsÚposition_embeddingsr2   r1   Ú	LayerNormr6   ÚDropoutÚdropout©Úselfs    r%   ÚsetupzFlaxEmbeddings.setupz   s  € Ü!Ÿx™xØ�K‰K×"Ñ"Ø�K‰K�O‰OÜŸ6™6×.Ñ.×5Ñ5¸T¿[¹[×=ZÑ=ZÐ5Ó[ô 
ˆÔð
 �{‰{×/Ò/Ü')§x¡xØ—‘×3Ñ3Ø—‘—‘Ü"Ÿv™v×2Ñ2×9Ñ9ÀÇÁ×A^ÑA^Ð9Ó_ô(ˆDÕ$ô !4°D·K±K×4WÑ4WÐY]×YdÑYd×YhÑYhÓ iˆDÔÜŸ™¨e¸4¿:¹:ÔFˆŒÜ—z‘z t§{¡{×':Ñ':Ô;ˆ�r'   Údeterministicc                 ó  — |j                   \  }}| j                  |j                  d«      «      }| j                  j                  s^t        j                  |«      j                  d«      }t        j                  |||f¬«      }| j                  |j                  d«      «      }n3| j                  d d …d |…d d …f   }|j                  |j                  «      }||z   }| j                  |«      }| j                  ||¬«      }|S )NÚi4)Úshape©rR   )rU   rH   Úastyper5   rI   r-   r)   Úbroadcast_torK   r1   r6   rL   rN   )	rP   Ú	input_idsrR   Ú
batch_sizeÚ
seq_lengthÚinputs_embedsÚposition_idsÚposition_embedsÚhidden_statess	            r%   Ú__call__zFlaxEmbeddings.__call__‹   sè   € à!*§¡Ñˆ
�JØ×,Ñ,¨Y×-=Ñ-=¸dÓ-CÓDˆØ�{‰{×/Ò/ÜŸ:™: jÓ1×8Ñ8¸Ó>ˆLÜ×+Ñ+¨LÀÈZÐ@XÔYˆLØ"×6Ñ6°|×7JÑ7JÈ4Ó7PÓQ‰Oà"×/Ñ/²°;°J°;ÂÐ0AÑBˆOà-×4Ñ4°]×5HÑ5HÓIˆOð &¨Ñ7ˆð Ÿ™ }Ó5ˆØŸ™ ]À-˜ÓPˆØÐr'   N©T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r-   r    r6   rQ   Úboolr`   © r'   r%   r4   r4   t   s.   … ÙQàÓØ—{‘{€Eˆ3�9‰9Ó"ò<ñ"°ô r'   r4   c                   ój   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 dde	de	fd„Z
y)	ÚFlaxMultiHeadSelfAttentionr5   r6   c                 ó¸  — | j                   j                  | _        | j                   j                  | _        t        j                  | j                   j
                  ¬«      | _        | j                  | j                  z  dk(  s%t        d| j                  › d| j                  › �«      ‚t        j                  | j                  | j                  t        j                  j                  j                  | j                   j                  ¬«      ¬«      | _        t        j                  | j                  | j                  t        j                  j                  j                  | j                   j                  ¬«      ¬«      | _        t        j                  | j                  | j                  t        j                  j                  j                  | j                   j                  ¬«      ¬«      | _        t        j                  | j                  | j                  t        j                  j                  j                  | j                   j                  ¬«      ¬«      | _        y )Nr>   r   úHidden size ú" not dividable by number of heads r8   ©r6   Úkernel_init)r5   Ún_headsrC   r@   rM   Úattention_dropoutrN   Ú
ValueErrorÚDenser6   rD   rE   rF   rG   Úq_linÚk_linÚv_linÚout_linrO   s    r%   rQ   z FlaxMultiHeadSelfAttention.setup¥   sˆ  € Ø—{‘{×*Ñ*ˆŒØ—;‘;—?‘?ˆŒÜ—z‘z t§{¡{×'DÑ'DÔEˆŒà—‘˜4Ÿ<™<Ñ'¨1Ò,Ü˜|¨D¯H©H¨:Ð5WÐX\×XdÑXdÐWeÐfÓgÐgä—X‘XØ�H‰HØ—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô
ˆŒ
ô
 —X‘XØ�H‰HØ—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô
ˆŒ
ô
 —X‘XØ�H‰HØ—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô
ˆŒ
ô
 —x‘xØ�H‰HØ—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô
ˆ�r'   rR   Úoutput_attentionsc           	      óæ  ‡ ‡‡— |j                   \  Š}}|j                   d   }	‰ j                  ‰ j                  z  Š‰dd|	f}
ˆˆˆ fd„}ˆˆˆ fd„} |‰ j                  |«      «      } |‰ j	                  |«      «      } |‰ j                  |«      «      }|t        j                  ‰«      z  }t        j                  ||j                  dddd«      «      }t        j                  ||
«      }|j                  |j                  «      }|dd|z
  z  z
  }t        j                  |d	¬
«      }‰ j!                  ||¬«      }t        j                  ||«      } ||«      }‰ j#                  |«      }|r||fS |fS )Nr   c                 ód   •— | j                  ‰d‰j                  ‰«      j                  dddd«      S )zseparate headséÿÿÿÿr   r   r   r   )Úreshaperp   Ú	transpose©ÚxÚbsÚdim_per_headrP   s    €€€r%   rU   z2FlaxMultiHeadSelfAttention.__call__.<locals>.shapeÔ   s/   ø€ à—9‘9˜R  T§\¡\°<Ó@×JÑJÈ1ÈaÐQRÐTUÓVÐVr'   c                 óh   •— | j                  dddd«      j                  ‰d‰j                  ‰z  «      S )zgroup headsr   r   r   r   r{   )r}   r|   rp   r~   s    €€€r%   Úunshapez4FlaxMultiHeadSelfAttention.__call__.<locals>.unshapeØ   s0   ø€ à—;‘;˜q ! Q¨Ó*×2Ñ2°2°r¸4¿<¹<È,Ñ;VÓWÐWr'   r   r   r   gêŒ 9Y>)Fg      ð?r{   ©ÚaxisrV   )rU   rC   rp   rt   ru   rv   ÚmathÚsqrtr-   Úmatmulr}   r|   rW   r6   r@   ÚsoftmaxrN   rw   )rP   ÚqueryÚkeyÚvalueÚmaskrR   rx   Úq_lenrC   Úk_lenÚ
mask_reshprU   rƒ   ÚqÚkÚvÚscoresÚweightsÚcontextr€   r�   s   `                  @@r%   r`   z#FlaxMultiHeadSelfAttention.__call__Â   sP  ú€ ð Ÿ™‰ˆˆE�3Ø—	‘	˜!‘ˆð —x‘x 4§<¡<Ñ/ˆà˜!˜Q Ð&ˆ
ö	Wö	Xñ �$—*‘*˜UÓ#Ó$ˆÙ�$—*‘*˜S“/Ó"ˆÙ�$—*‘*˜UÓ#Ó$ˆà”—	‘	˜,Ó'Ñ'ˆÜ—‘˜A˜qŸ{™{¨1¨a°°AÓ6Ó7ˆÜ�{‰{˜4 Ó,ˆà�{‰{˜6Ÿ<™<Ó(ˆØ˜$ #¨¡*Ñ-Ñ-ˆä—*‘*˜V¨"Ô-ˆØ—,‘,˜w°m�,ÓDˆä—*‘*˜W aÓ(ˆÙ˜'Ó"ˆØ—,‘,˜wÓ'ˆáØ˜WÐ%Ð%à�:Ðr'   N)TF©rb   rc   rd   r   rf   r-   r    r6   rQ   rg   r`   rh   r'   r%   rj   rj   ¡   sA   … ØÓØ—{‘{€Eˆ3�9‰9Ó"ò
ðF #Ø"'ñ/ð ð/ð  ô/r'   rj   c                   ób   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Zdde	fd„Z
y)ÚFlaxFFNr5   r6   c                 óÆ  — t        j                  | j                  j                  ¬«      | _        | j                  j                  | _        d| _        t        j                  | j                  j                  | j                  t        j                   j                  j                  | j                  j                  ¬«      ¬«      | _        t        j                  | j                  j                  | j                  t        j                   j                  j                  | j                  j                  ¬«      ¬«      | _        t         | j                  j"                     | _        y )Nr>   r   r8   rn   )r@   rM   r5   rN   Úchunk_size_feed_forwardÚseq_len_dimrs   Ú
hidden_dimr6   rD   rE   rF   rG   Úlin1rC   Úlin2r   Ú
activationrO   s    r%   rQ   zFlaxFFN.setupø   sà   € Ü—z‘z t§{¡{×':Ñ':Ô;ˆŒØ'+§{¡{×'JÑ'JˆÔ$ØˆÔÜ—H‘HØ�K‰K×"Ñ"Ø—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô
ˆŒ	ô
 —H‘HØ�K‰K�O‰OØ—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô
ˆŒ	ô ! §¡×!7Ñ!7Ñ8ˆ�r'   rR   c                 ó’   — | j                  |«      }| j                  |«      }| j                  |«      }| j                  ||¬«      }|S )NrV   )rž   r    rŸ   rN   )rP   r_   rR   s      r%   r`   zFlaxFFN.__call__	  sD   € ØŸ	™	 -Ó0ˆØŸ™¨Ó6ˆØŸ	™	 -Ó0ˆØŸ™ ]À-˜ÓPˆØÐr'   Nra   r—   rh   r'   r%   r™   r™   ô   s+   … ØÓØ—{‘{€Eˆ3�9‰9Ó"ò9ñ"°Tô r'   r™   c                   ój   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 dde	de	fd„Z
y)	ÚFlaxTransformerBlockr5   r6   c                 óþ  — | j                   j                  | j                   j                  z  dk(  s5J d| j                   j                  › d| j                   j                  › �«       ‚t        | j                   | j                  ¬«      | _        t        j                  d| j                  ¬«      | _        t        | j                   | j                  ¬«      | _
        t        j                  d| j                  ¬«      | _        y )Nr   rl   rm   ©r6   r;   r<   )r5   rC   rp   rj   r6   Ú	attentionr@   rL   Úsa_layer_normr™   ÚffnÚoutput_layer_normrO   s    r%   rQ   zFlaxTransformerBlock.setup  s¯   € Ø�{‰{�‰ §¡×!4Ñ!4Ñ4¸Ò9ð 	
Ø˜4Ÿ;™;Ÿ?™?Ð+Ð+MÈdÏkÉk×NaÑNaÐMbÐcó	
Ð9ô 4°D·K±KÀtÇzÁzÔRˆŒÜŸ\™\°%¸t¿z¹zÔJˆÔä˜4Ÿ;™;¨d¯j©jÔ9ˆŒÜ!#§¡°eÀ4Ç:Á:Ô!NˆÕr'   rx   rR   c                 ó   — | j                  ||||||¬«      }|r|\  }}nt        |«      t        u sJ ‚|d   }| j                  ||z   «      }| j	                  ||¬«      }| j                  ||z   «      }|f}|rf|z   }|S )N)rŠ   r‹   rŒ   r�   rx   rR   r   rV   )r¦   ÚtypeÚtupler§   r¨   r©   )	rP   r_   Ú	attn_maskrx   rR   Ú	sa_outputÚ
sa_weightsÚ
ffn_outputÚoutputs	            r%   r`   zFlaxTransformerBlock.__call__   s¬   € ð —N‘NØØØØØ/Ø'ð #ó 
ˆ	ñ Ø$-Ñ!ˆI‘zä˜	“?¤eÑ+Ð+Ð+Ø! !™ˆIØ×&Ñ& y°=Ñ'@ÓAˆ	ð —X‘X˜i°}�XÓEˆ
Ø×+Ñ+¨J¸Ñ,BÓCˆ
Ø�ˆÙØ �] VÑ+ˆFØˆr'   N)FTr—   rh   r'   r%   r£   r£     sA   … ØÓØ—{‘{€Eˆ3�9‰9Ó"ò	Oð #(Ø"ñð  ð	ð
 ôr'   r£   c            	       óv   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 	 	 d
de	de	de	de	fd„Z
y	)ÚFlaxTransformerr5   r6   c           	      óÄ   — t        | j                  j                  «      D �cg c]-  }t        | j                  t	        |«      | j
                  ¬«      ‘Œ/ c}| _        y c c}w )N)Únamer6   )Úranger5   Ún_layersr£   Ústrr6   Úlayers)rP   r"   s     r%   rQ   zFlaxTransformer.setupD  sF   € äV[Ð\`×\gÑ\g×\pÑ\pÓVqö
ØQRÔ  §¡´3°q³6ÀÇÁÖLò
ˆ�ùò 
s   ¢2Arx   Úoutput_hidden_statesrR   Úreturn_dictc                 ó$  — |rdnd }|rdnd }| j                   D ]I  }	|r||fz   } |	||||¬«      }
|
d   }|rt        |
«      dk(  sJ ‚|
d   }||fz   }Œ:t        |
«      dk(  rŒIJ ‚ |r||fz   }|st        d„ |||fD «       «      S t        |||¬«      S )	Nrh   )r_   r­   rx   rR   r{   r   r   r   c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­w©Nrh   )Ú.0r“   s     r%   ú	<genexpr>z+FlaxTransformer.__call__.<locals>.<genexpr>m  s   è ø€ Òh˜qÐZ[ÑZgœÑhùs   ‚Š)Úlast_hidden_stater_   Ú
attentions)r¹   Úlenr¬   r   )rP   r_   Úattention_maskrx   rº   rR   r»   Úall_hidden_statesÚall_attentionsÚlayer_moduleÚlayer_outputsrÂ   s               r%   r`   zFlaxTransformer.__call__I  sá   € ñ #7™B¸DÐÙ0™°dˆà ŸK™Kò 	/ˆLÙ#Ø$5¸Ð8HÑ$HÐ!á(Ø+Ø(Ø"3Ø+ô	ˆMð *¨"Ñ-ˆMá Ü˜=Ó)¨QÒ.Ð.Ð.Ø*¨1Ñ-�
Ø!/°:°-Ñ!?‘ä˜=Ó)¨QÓ.Ð.Ð.ð#	/ñ(  Ø 1°]Ð4DÑ DÐáÜÑh ]°NÐDUÐ$VÔhÓhÐhÜ"Ø+Ð;LÐYgô
ð 	
r'   N©FFTFr—   rh   r'   r%   r³   r³   @  sZ   … ØÓØ—{‘{€Eˆ3�9‰9Ó"ò
ð #(Ø%*Ø"Ø!ñ'
ð  ð	'
ð
 #ð'
ð ð'
ð ô'
r'   r³   c            	       óv   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 	 	 d
de	de	de	de	fd„Z
y	)ÚFlaxTransformerEncoderr5   r6   c                 óP   — t        | j                  | j                  ¬«      | _        y ©Nr¥   )r³   r5   r6   ÚlayerrO   s    r%   rQ   zFlaxTransformerEncoder.setupw  s   € Ü$ T§[¡[¸¿
¹
ÔCˆ�
r'   rx   rº   rR   r»   c                 ó0   — | j                  ||||||¬«      S )N)r_   rÄ   rx   rº   rR   r»   )rÎ   )rP   r_   rÄ   rx   rº   rR   r»   s          r%   r`   zFlaxTransformerEncoder.__call__z  s,   € ð �z‰zØ'Ø)Ø/Ø!5Ø'Ø#ð ó 
ð 	
r'   NrÉ   r—   rh   r'   r%   rË   rË   s  s[   … ØÓØ—{‘{€Eˆ3�9‰9Ó"òDð #(Ø%*Ø"Ø!ñ
ð  ð	
ð
 #ð
ð ð
ð ô
r'   rË   c                   óÂ   — e Zd ZU eed<   ej                  Zej                  ed<   ej                  j                  j                  Zedej                  f   ed<   d„ Zd„ Zy)ÚFlaxDistilBertLMDecoderr5   r6   .Ú	bias_initc                 ór   — | j                  d| j                  | j                  j                  f«      | _        y )NÚbias)ÚparamrÒ   r5   rB   rÔ   rO   s    r%   rQ   zFlaxDistilBertLMDecoder.setup’  s'   € Ø—J‘J˜v t§~¡~¸¿¹×8NÑ8NÐ7PÓQˆ�	r'   c                 ó6  — t        j                  || j                  «      }t        j                  || j                  «      }t        j                  |||j
                  dz
  fdfdf«      }t        j                  | j                  | j                  «      }||z   }|S )Nr   )r   )rh   rh   )r-   Úasarrayr6   r   Údot_generalÚndimrÔ   )rP   ÚinputsÚkernelÚyrÔ   s        r%   r`   z FlaxDistilBertLMDecoder.__call__•  sw   € Ü—‘˜V T§Z¡ZÓ0ˆÜ—‘˜V T§Z¡ZÓ0ˆÜ�O‰O˜F F¨v¯{©{¸Q©Ð.@À$Ð-GÈÐ,RÓSˆÜ�{‰{˜4Ÿ9™9 d§j¡jÓ1ˆØ�‰HˆØˆr'   N)rb   rc   rd   r   rf   r-   r    r6   rD   r@   rE   ÚzerosrÒ   r   r   ÚndarrayrQ   r`   rh   r'   r%   rÑ   rÑ   �  sL   … ØÓØ—{‘{€Eˆ3�9‰9Ó"Ø+.¯6©6×+>Ñ+>×+DÑ+D€Iˆx˜˜RŸZ™Z˜Ñ(ÓDòRór'   rÑ   c                   óx  ‡ — e Zd ZU dZeZdZdZej                  e
d<   ddej                  dfded	ed
edej                  def
ˆ fd„Zddej&                  j(                  d	ededefd„Z eej3                  d«      «      	 	 	 	 	 	 	 	 ddedej&                  j(                  dedee   dee   dee   fd„«       Zˆ xZS )ÚFlaxDistilBertPreTrainedModelz†
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    Ú
distilbertNÚmodule_class)r   r   r   Tr5   Úinput_shapeÚseedr6   Ú_do_initc                 óZ   •—  | j                   d||dœ|¤Ž}t        ‰| �	  ||||||¬«       y )N©r5   r6   )rã   rä   r6   rå   rh   )râ   ÚsuperÚ__init__)	rP   r5   rã   rä   r6   rå   ÚkwargsÚmoduleÚ	__class__s	           €r%   ré   z&FlaxDistilBertPreTrainedModel.__init__¨  s=   ø€ ð #�×"Ñ"ÐH¨&¸ÑHÀÑHˆÜ‰Ñ˜ °[ÀtÐSXÐckÐÕlr'   ÚrngÚparamsÚreturnc                 ó¼  — t        j                  |d¬«      }t        j                  |«      }t        j                  j                  |«      \  }}||dœ}| j                  j                  |||d¬«      d   }	|�dt        t        |	«      «      }	t        t        |«      «      }| j                  D ]
  }
|	|
   ||
<   Œ t        «       | _
        t        t        |«      «      S |	S )NrT   r¥   )rî   rN   F)r»   rî   )r-   rÝ   Ú	ones_likerD   ÚrandomÚsplitrë   Úinitr	   r   Ú_missing_keysÚsetr   r
   )rP   rí   rã   rî   rY   rÄ   Ú
params_rngÚdropout_rngÚrngsÚrandom_paramsÚmissing_keys              r%   Úinit_weightsz*FlaxDistilBertPreTrainedModel.init_weights´  sÑ   € ä—I‘I˜k°Ô6ˆ	ÜŸ™ yÓ1ˆä"%§*¡*×"2Ñ"2°3Ó"7Ñˆ
�KØ$°Ñ=ˆàŸ™×(Ñ(¨¨y¸.ÐV[Ð(Ó\Ð]eÑfˆàÐÜ(¬°-Ó)@ÓAˆMÜ!¤(¨6Ó"2Ó3ˆFØ#×1Ñ1ò A�Ø&3°KÑ&@��{Ò#ðAä!$£ˆDÔÜœ.¨Ó0Ó1Ð1à Ð r'   zbatch_size, sequence_lengthrø   Útrainrx   rº   r»   c
           
      óš  — |�|n| j                   j                  }|�|n| j                   j                  }|	�|	n| j                   j                  }	|€t	        j
                  |«      }i }
|�||
d<   | j                  j                  d|xs | j                  it	        j                  |d¬«      t	        j                  |d¬«      | |||	|
¬«      S )NrN   rî   rT   r¥   )rù   )
r5   rx   rº   r»   r-   rñ   rë   Úapplyrî   r.   )rP   rY   rÄ   Ú	head_maskrî   rø   rý   rx   rº   r»   rù   s              r%   r`   z&FlaxDistilBertPreTrainedModel.__call__È  sÖ   € ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆàÐ!Ü Ÿ]™]¨9Ó5ˆNð ˆØÐ"Ø)ˆD�‰Oà�{‰{× Ñ Ø�vÒ, §¡Ð-Ü�I‰I�i tÔ,Ü�I‰I�n¨DÔ1ØˆIØØ ØØð !ó 	
ð 		
r'   r¾   )NNNNFNNN)rb   rc   rd   re   r   Úconfig_classÚbase_model_prefixrâ   r@   ÚModulerf   r-   r    r   Úintr6   rg   ré   rD   rò   ÚPRNGKeyr   rü   r   ÚDISTILBERT_INPUTS_DOCSTRINGÚformatÚdictr   r`   Ú__classcell__)rì   s   @r%   rà   rà   ž  s4  ø… ñð
 $€LØ$ÐØ"€L�"—)‘)Ó"ð
 $ØØŸ;™;Øñ
mà ð
mð ð
mð ð	
mð
 �y‰yð
mð õ
mñ! §
¡
× 2Ñ 2ð !Àð !ÐPZð !Ðfpó !ñ( +Ð+F×+MÑ+MÐNkÓ+lÓmð ØØØ*.ØØ,0Ø/3Ø&*ñ#
ð
 ð#
ð —Z‘Z×'Ñ'ð#
ð ð#
ð $ D™>ð#
ð ' t™nð#
ð ˜d‘^ò#
ó nô#
r'   rà   c            	       óv   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 	 	 d
de	de	de	de	fd„Z
y	)ÚFlaxDistilBertModuler5   r6   c                 óœ   — t        | j                  | j                  ¬«      | _        t	        | j                  | j                  ¬«      | _        y rÍ   )r4   r5   r6   Ú
embeddingsrË   ÚtransformerrO   s    r%   rQ   zFlaxDistilBertModule.setupó  s/   € Ü(¨¯©¸D¿J¹JÔGˆŒÜ1°$·+±+ÀTÇZÁZÔPˆÕr'   rR   rx   rº   r»   c                 óò   — |�|n| j                   j                  }|�|n| j                   j                  }|�|n| j                   j                  }| j	                  ||¬«      }| j                  ||||||¬«      S )NrV   )r_   rÄ   rR   rx   rº   r»   )r5   rx   rº   r»   r  r  )rP   rY   rÄ   rR   rx   rº   r»   Úinput_embedss           r%   r`   zFlaxDistilBertModule.__call__÷  sŽ   € ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆà—‘ yÀ�ÓNˆØ×ÑØ&Ø)Ø'Ø/Ø!5Ø#ð  ó 
ð 	
r'   N©TFFTr—   rh   r'   r%   r  r  ï  s[   … ØÓØ—{‘{€Eˆ3�9‰9Ó"òQð #Ø"'Ø%*Ø ñ
ð ð	
ð
  ð
ð #ð
ð ô
r'   r  zdThe bare DistilBert Model transformer outputting raw hidden-states without any specific head on top.c                   ó   — e Zd ZeZy)ÚFlaxDistilBertModelN)rb   rc   rd   r  râ   rh   r'   r%   r  r    s	   „ ð
 (�Lr'   r  c            	       óv   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 	 	 d
de	de	de	de	fd„Z
y	)ÚFlaxDistilBertForMaskedLMModuler5   r6   c                 óò  — t        | j                  | j                  ¬«      | _        t	        j
                  | j                  j                  | j                  t        j                  j                  j                  | j                  j                  ¬«      ¬«      | _        t	        j                  d| j                  ¬«      | _        | j                  j                  r't        | j                  | j                  ¬«      | _        y t	        j
                  | j                  j"                  | j                  t        j                  j                  j                  | j                  j                  ¬«      ¬«      | _        y )Nr¥   r8   rn   r;   r<   )r  r5   r6   rá   r@   rs   rC   rD   rE   rF   rG   Úvocab_transformrL   Úvocab_layer_normÚtie_word_embeddingsrÑ   Úvocab_projectorrB   rO   s    r%   rQ   z%FlaxDistilBertForMaskedLMModule.setup   sí   € Ü.¨t¯{©{À$Ç*Á*ÔMˆŒÜ!Ÿx™xØ�K‰K�O‰OØ—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô 
ˆÔô
 !#§¡°UÀ$Ç*Á*Ô MˆÔØ�;‰;×*Ò*Ü#:Ø—‘Ø—j‘jô$ˆDÕ ô
 $&§8¡8Ø—‘×&Ñ&Ø—j‘jÜŸF™F×/Ñ/×6Ñ6¸d¿k¹k×>[Ñ>[Ð6Ó\ô$ˆDÕ r'   rR   rx   rº   r»   c                 ó   — |�|n| j                   j                  }| j                  ||||||¬«      }|d   }| j                  |«      }	t	        | j                   j
                     |	«      }	| j                  |	«      }	| j                   j                  r?| j                  j                  d   d   d   d   }
| j                  |	|
j                  «      }	n| j                  |	«      }	|s|	f|dd  z   }|S t        |	|j                  |j                  ¬«      S )	N)rY   rÄ   rx   rº   rR   r»   r   rî   r  rH   Ú	embeddingr   ©Úlogitsr_   rÂ   )r5   Úuse_return_dictrá   r  r   r    r  r  Ú	variablesr  ÚTr   r_   rÂ   )rP   rY   rÄ   rR   rx   rº   r»   Údlbrt_outputr_   Úprediction_logitsÚshared_embeddingr±   s               r%   r`   z(FlaxDistilBertForMaskedLMModule.__call__4  s&  € ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—‘ØØ)Ø/Ø!5Ø'Ø#ð 'ó 
ˆð % Q™ˆØ ×0Ñ0°Ó?ÐÜ" 4§;¡;×#9Ñ#9Ñ:Ð;LÓMÐØ ×1Ñ1Ð2CÓDÐà�;‰;×*Ò*Ø#Ÿ™×8Ñ8¸ÑBÀ<ÑPÐQbÑcÐdoÑpÐØ $× 4Ñ 4Ð5FÐHX×HZÑHZÓ [Ñà $× 4Ñ 4Ð5FÓ GÐáØ'Ð)¨L¸¸Ð,<Ñ<ˆFØˆMä!Ø$Ø&×4Ñ4Ø#×.Ñ.ô
ð 	
r'   Nr  r—   rh   r'   r%   r  r    sZ   … ØÓØ—{‘{€Eˆ3�9‰9Ó"òð0 #Ø"'Ø%*Ø ñ&
ð ð	&
ð
  ð&
ð #ð&
ð ô&
r'   r  z8DistilBert Model with a `language modeling` head on top.c                   ó   — e Zd ZeZy)ÚFlaxDistilBertForMaskedLMN)rb   rc   rd   r  râ   rh   r'   r%   r&  r&  ]  s   „ à2�Lr'   r&  c            	       óv   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 	 	 d
de	de	de	de	fd„Z
y	)Ú-FlaxDistilBertForSequenceClassificationModuler5   r6   c                 ó  — t        | j                  | j                  ¬«      | _        t	        j
                  | j                  j                  | j                  t        j                  j                  j                  | j                  j                  ¬«      ¬«      | _        t	        j                  | j                  j                  ¬«      | _        t	        j
                  | j                  j                  | j                  ¬«      | _        y )Nrç   r8   rn   r>   r¥   )r  r5   r6   rá   r@   rs   rC   rD   rE   rF   rG   Úpre_classifierrM   Úseq_classif_dropoutrN   Ú
num_labelsÚ
classifierrO   s    r%   rQ   z3FlaxDistilBertForSequenceClassificationModule.setupi  s    € Ü.°d·k±kÈÏÉÔTˆŒÜ Ÿh™hØ�K‰K�O‰OØ—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô
ˆÔô
 —z‘z t§{¡{×'FÑ'FÔGˆŒÜŸ(™(Ø�K‰K×"Ñ"Ø—*‘*ô
ˆ�r'   rR   rx   rº   r»   c                 ó`  — |�|n| j                   j                  }| j                  ||||||¬«      }|d   }|d d …df   }	| j                  |	«      }	t	        d   |	«      }	| j                  |	|¬«      }	| j                  |	«      }
|s	|
f|dd  z   S t        |
|j                  |j                  ¬«      S )N©rR   rx   rº   r»   r   ÚrelurV   r   r  )
r5   r  rá   r*  r   rN   r-  r   r_   rÂ   )rP   rY   rÄ   rR   rx   rº   r»   Údistilbert_outputÚhidden_stateÚpooled_outputr  s              r%   r`   z6FlaxDistilBertForSequenceClassificationModule.__call__v  sÒ   € ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà ŸO™OØØØ'Ø/Ø!5Ø#ð ,ó 
Ðð )¨Ñ+ˆØ$¢Q¨ TÑ*ˆØ×+Ñ+¨MÓ:ˆÜ˜v™ }Ó5ˆØŸ™ ]À-˜ÓPˆØ—‘ Ó/ˆáØ�9Ð0°°Ð4Ñ4Ð4ä+ØØ+×9Ñ9Ø(×3Ñ3ô
ð 	
r'   Nr  r—   rh   r'   r%   r(  r(  e  sZ   … ØÓØ—{‘{€Eˆ3�9‰9Ó"ò
ð" #Ø"'Ø%*Ø ñ!
ð ð	!
ð
  ð!
ð #ð!
ð ô!
r'   r(  z¢
    DistilBert Model transformer with a sequence classification/regression head on top (a linear layer on top of the
    pooled output) e.g. for GLUE tasks.
    c                   ó   — e Zd ZeZy)Ú'FlaxDistilBertForSequenceClassificationN)rb   rc   rd   r(  râ   rh   r'   r%   r5  r5  š  s
   „ ð A�Lr'   r5  c            	       óv   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 	 	 d
de	de	de	de	fd„Z
y	)Ú%FlaxDistilBertForMultipleChoiceModuler5   r6   c                 óè  — t        | j                  | j                  ¬«      | _        t	        j
                  | j                  j                  | j                  t        j                  j                  j                  | j                  j                  ¬«      ¬«      | _        t	        j                  | j                  j                  ¬«      | _        t	        j
                  d| j                  ¬«      | _        y )Nrç   r8   rn   r>   r   r¥   )r  r5   r6   rá   r@   rs   rC   rD   rE   rF   rG   r*  rM   r+  rN   r-  rO   s    r%   rQ   z+FlaxDistilBertForMultipleChoiceModule.setup±  s–   € Ü.°d·k±kÈÏÉÔTˆŒÜ Ÿh™hØ�K‰K�O‰OØ—*‘*ÜŸ™×+Ñ+×2Ñ2¸$¿+¹+×:WÑ:WÐ2ÓXô
ˆÔô
 —z‘z t§{¡{×'FÑ'FÔGˆŒÜŸ(™(ØØ—*‘*ô
ˆ�r'   rR   rx   rº   r»   c                 ó.  — |�|n| j                   j                  }|j                  d   }|�|j                  d|j                  d   «      nd }|�|j                  d|j                  d   «      nd }| j	                  ||||||¬«      }|d   }	|	d d …df   }
| j                  |
«      }
t        d   |
«      }
| j                  |
|¬«      }
| j                  |
«      }|j                  d|«      }|s	|f|dd  z   S t        ||j                  |j                  ¬«      S )	Nr   r{   r/  r   r0  rV   r   r  )r5   r  rU   r|   rá   r*  r   rN   r-  r   r_   rÂ   )rP   rY   rÄ   rR   rx   rº   r»   Únum_choicesÚoutputsr2  r3  r  Úreshaped_logitss                r%   r`   z.FlaxDistilBertForMultipleChoiceModule.__call__¾  s7  € ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆØ—o‘o aÑ(ˆØBKÐBW�I×%Ñ% b¨)¯/©/¸"Ñ*=Ô>Ð]aˆ	ØQ_ÐQk˜×/Ñ/°°N×4HÑ4HÈÑ4LÔMÐquˆð —/‘/ØØØ'Ø/Ø!5Ø#ð "ó 
ˆð ˜q‘zˆØ$¢Q¨ TÑ*ˆØ×+Ñ+¨MÓ:ˆÜ˜v™ }Ó5ˆØŸ™ ]À-˜ÓPˆØ—‘ Ó/ˆà Ÿ.™.¨¨[Ó9ˆáØ#Ð%¨°°¨Ñ3Ð3ä,Ø"Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r'   Nr  r—   rh   r'   r%   r7  r7  ­  sZ   … ØÓØ—{‘{€Eˆ3�9‰9Ó"ò
ð" #Ø"'Ø%*Ø ñ(
ð ð	(
ð
  ð(
ð #ð(
ð ô(
r'   r7  z«
    DistilBert Model with a multiple choice classification head on top (a linear layer on top of the pooled output and
    a softmax) e.g. for RocStories/SWAG tasks.
    c                   ó   — e Zd ZeZy)ÚFlaxDistilBertForMultipleChoiceN)rb   rc   rd   r7  râ   rh   r'   r%   r>  r>  é  s	   „ ð 9�Lr'   r>  z(batch_size, num_choices, sequence_lengthc            	       óv   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 	 	 d
de	de	de	de	fd„Z
y	)Ú*FlaxDistilBertForTokenClassificationModuler5   r6   c                 ó"  — t        | j                  | j                  ¬«      | _        t	        j
                  | j                  j                  ¬«      | _        t	        j                  | j                  j                  | j                  ¬«      | _	        y )Nrç   r>   r¥   )
r  r5   r6   rá   r@   rM   rN   rs   r,  r-  rO   s    r%   rQ   z0FlaxDistilBertForTokenClassificationModule.setup  sR   € Ü.°d·k±kÈÏÉÔTˆŒÜ—z‘z t§{¡{×':Ñ':Ô;ˆŒÜŸ(™( 4§;¡;×#9Ñ#9ÀÇÁÔLˆ�r'   rR   rx   rº   r»   c                 ó  — |�|n| j                   j                  }| j                  ||||||¬«      }|d   }| j                  ||¬«      }| j	                  |«      }	|s	|	f|dd  z   S t        |	|j                  |j                  ¬«      S )Nr/  r   rV   r   r  )r5   r  rá   rN   r-  r   r_   rÂ   )
rP   rY   rÄ   rR   rx   rº   r»   r;  r_   r  s
             r%   r`   z3FlaxDistilBertForTokenClassificationModule.__call__  s¢   € ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—/‘/ØØØ'Ø/Ø!5Ø#ð "ó 
ˆð   ™
ˆØŸ™ ]À-˜ÓPˆØ—‘ Ó/ˆáØ�9˜w q r˜{Ñ*Ð*ä(ØØ!×/Ñ/Ø×)Ñ)ô
ð 	
r'   Nr  r—   rh   r'   r%   r@  r@  ÿ  s[   … ØÓØ—{‘{€Eˆ3�9‰9Ó"òMð #Ø"'Ø%*Ø ñ
ð ð	
ð
  ð
ð #ð
ð ô
r'   r@  z©
    DistilBert Model with a token classification head on top (a linear layer on top of the hidden-states output) e.g.
    for Named-Entity-Recognition (NER) tasks.
    c                   ó   — e Zd ZeZy)Ú$FlaxDistilBertForTokenClassificationN)rb   rc   rd   r@  râ   rh   r'   r%   rD  rD  *  s	   „ ð >�Lr'   rD  c            	       óv   — e Zd ZU eed<   ej                  Zej                  ed<   d„ Z	 	 	 	 d
de	de	de	de	fd„Z
y	)Ú(FlaxDistilBertForQuestionAnsweringModuler5   r6   c                 óX  — t        | j                  | j                  ¬«      | _        t	        j
                  | j                  j                  | j                  ¬«      | _        | j                  j                  dk(  sJ ‚t	        j                  | j                  j                  ¬«      | _
        y )Nrç   r¥   r   r>   )r  r5   r6   rá   r@   rs   r,  Ú
qa_outputsrM   Ú
qa_dropoutrN   rO   s    r%   rQ   z.FlaxDistilBertForQuestionAnsweringModule.setupA  sj   € Ü.°d·k±kÈÏÉÔTˆŒÜŸ(™( 4§;¡;×#9Ñ#9ÀÇÁÔLˆŒØ�{‰{×%Ñ%¨Ò*Ð*Ð*Ü—z‘z t§{¡{×'=Ñ'=Ô>ˆ�r'   rR   rx   rº   r»   c                 ó¶  — |�|n| j                   j                  }| j                  ||||||¬«      }|d   }| j                  ||¬«      }| j	                  |«      }	t        j                  |	| j                   j                  d¬«      \  }
}|
j                  d«      }
|j                  d«      }|s
|
|f|dd  z   S t        |
||j                  |j                  ¬«      S )Nr/  r   rV   r{   r„   r   )Ústart_logitsÚ
end_logitsr_   rÂ   )r5   r  rá   rN   rH  r-   ró   r,  Úsqueezer   r_   rÂ   )rP   rY   rÄ   rR   rx   rº   r»   r1  r_   r  rK  rL  s               r%   r`   z1FlaxDistilBertForQuestionAnsweringModule.__call__G  sð   € ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆð !ŸO™OØØØ'Ø/Ø!5Ø#ð ,ó 
Ðð *¨!Ñ,ˆàŸ™ ]À-˜ÓPˆØ—‘ Ó/ˆÜ#&§9¡9¨V°T·[±[×5KÑ5KÐRTÔ#UÑ ˆ�jØ#×+Ñ+¨BÓ/ˆØ×'Ñ'¨Ó+ˆ
áØ  *Ð-Ð0AÀ!À"Ð0EÑEÐEä/Ø%Ø!Ø+×9Ñ9Ø(×3Ñ3ô	
ð 	
r'   Nr  r—   rh   r'   r%   rF  rF  =  sZ   … ØÓØ—{‘{€Eˆ3�9‰9Ó"ò?ð #Ø"'Ø%*Ø ñ%
ð ð	%
ð
  ð%
ð #ð%
ð ô%
r'   rF  zã
    DistilBert Model with a span classification head on top for extractive question-answering tasks like SQuAD (a
    linear layers on top of the hidden-states output to compute `span start logits` and `span end logits`).
    c                   ó   — e Zd ZeZy)Ú"FlaxDistilBertForQuestionAnsweringN)rb   rc   rd   rF  râ   rh   r'   r%   rO  rO  o  s	   „ ð <�Lr'   rO  )r&  r>  rO  r5  rD  r  rà   )Gr†   Útypingr   r   r   Ú
flax.linenÚlinenr@   rD   Ú	jax.numpyÚnumpyr-   r   Úflax.core.frozen_dictr   r   r   Úflax.traverse_utilr	   r
   r   Úmodeling_flax_outputsr   r   r   r   r   r   Úmodeling_flax_utilsr   r   r   r   Úutilsr   r   r   Úconfiguration_distilbertr   Ú
get_loggerrb   ÚloggerÚ_CHECKPOINT_FOR_DOCÚ_CONFIG_FOR_DOCÚFLAX_DISTILBERT_START_DOCSTRINGr  r&   r2   r  r4   rj   r™   r£   r³   rË   rÑ   rà   r  r  r  r&  r(  r5  r7  r>  r  r@  rD  rF  rO  Ú__all__rh   r'   r%   ú<module>ra     s  ðó  ß ,Ñ ,å Û 
Ý Û ß >Ñ >ß ;Ý ÷÷ ÷ wÓ vß YÑ YÝ 6ð 
ˆ×	Ñ	˜HÓ	%€à/Ð Ø$€ð#Ð ð.Ð ò6ò
#ô*�R—Y‘Yô *ôZP §¡ô Pôfˆb�i‰iô ô:,˜2Ÿ9™9ô ,ô^0
�b—i‘iô 0
ôf
˜RŸY™Yô 
ô4˜bŸi™iô ô"N
Ð$7ô N
ôb
˜2Ÿ9™9ô 
ñD ØjØ#óô(Ð7ó (ó	ð(ñ Ð0Ð2EÀtÈ_Ô ]ô>
 b§i¡iô >
ñB ÐTÐVuÓvô3Ð =ó 3ó wð3ñ Ð6Ð8KÐM_ÐapÔ qô2
°B·I±Iô 2
ñj ðð $óôAÐ.Kó AóðAñ Ø+ØØ Øô	ô9
¨B¯I©Iô 9
ñx ðð $óô9Ð&Có 9óð9ñ Ø#Ð%@×%GÑ%GÐHrÓ%sôñ Ø#ØØ!Øô	ô(
°·±ô (
ñV ðð $óô>Ð+Hó >óð>ñ Ø(ØØØô	ô/
¨r¯y©yô /
ñd ðð $óô<Ð)Fó <óð<ñ Ø&ØØ$Øô	ò�r'   