§
    æ˜ºhG"  ã                   óÖ   — d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
Z
ddlZddlmZmZ ddlmZ  G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZeZdS )z@Lightweight wrapper around requests library, with async support.é    )Úasynccontextmanager)ÚAnyÚAsyncGeneratorÚDictÚLiteralÚOptionalÚUnionN)Ú	BaseModelÚExtra)ÚResponsec                   ó  — e Zd ZU dZdZeeeef                  ed<   dZ	ee
j                 ed<   dZee         ed<    G d„ d¦  «        Zded	ed
ej        fd„Zdedeeef         d	ed
ej        fd„Zdedeeef         d	ed
ej        fd„Zdedeeef         d	ed
ej        fd„Zded	ed
ej        fd„Zededed	ed
ee
j        df         fd„¦   «         Zeded	ed
ee
j        df         fd„¦   «         Zededeeef         d	ed
ee
j        df         fd„¦   «         Zededeeef         d	ed
ee
j        df         fd„¦   «         Zededeeef         d	ed
ee
j        df         fd„¦   «         Zeded	ed
ee
j        df         fd„¦   «         ZdS )ÚRequestszÇWrapper around requests to handle auth and async.

    The main purpose of this wrapper is to handle authentication (by saving
    headers) and enable easy async methods on the same base object.
    NÚheadersÚ
aiosessionÚauthc                   ó$   — e Zd ZdZej        ZdZdS )úRequests.Configú'Configuration for this pydantic object.TN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚforbidÚextraÚarbitrary_types_allowed© ó    ún/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/utilities/requests.pyÚConfigr      ó#   € € € € € Ø5Ð5à”ˆØ"&ÐÐÐr   r    ÚurlÚkwargsÚreturnc                 ó@   — t          j        |f| j        | j        dœ|¤ŽS )ú GET the URL and return the text.©r   r   )ÚrequestsÚgetr   r   ©Úselfr"   r#   s      r   r)   zRequests.get   s%   € åŒ|˜CÐP¨¬¸D¼IÐPÐPÈÐPÐPÐPr   Údatac                 óB   — t          j        |f|| j        | j        dœ|¤ŽS )ú$POST to the URL and return the text.©Újsonr   r   )r(   Úpostr   r   ©r+   r"   r,   r#   s       r   r1   zRequests.post    s6   € åŒ}Øð
Ø D¤L°t´yð
ð 
ØDJð
ð 
ð 	
r   c                 óB   — t          j        |f|| j        | j        dœ|¤ŽS )ú"PATCH the URL and return the text.r/   )r(   Úpatchr   r   r2   s       r   r5   zRequests.patch&   s6   € åŒ~Øð
Ø D¤L°t´yð
ð 
ØDJð
ð 
ð 	
r   c                 óB   — t          j        |f|| j        | j        dœ|¤ŽS )ú PUT the URL and return the text.r/   )r(   Úputr   r   r2   s       r   r8   zRequests.put,   s6   € åŒ|Øð
Ø D¤L°t´yð
ð 
ØDJð
ð 
ð 	
r   c                 ó@   — t          j        |f| j        | j        dœ|¤ŽS )ú#DELETE the URL and return the text.r'   )r(   Údeleter   r   r*   s      r   r;   zRequests.delete2   s%   € åŒ˜sÐS¨D¬L¸t¼yÐSÐSÈFÐSÐSÐSr   Úmethodc                óÔ  K  — | j         sŒt          j        ¦   «         4 ƒd{V —†} |j        ||f| j        | j        dœ|¤Ž4 ƒd{V —†	 }|W V — ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS  | j         j        ||f| j        | j        dœ|¤Ž4 ƒd{V —†	 }|W V — ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )zMake an async request.Nr'   )r   ÚaiohttpÚClientSessionÚrequestr   r   )r+   r<   r"   r#   ÚsessionÚresponses         r   Ú	_arequestzRequests._arequest6   sÒ  è è € ð
 Œð 
	ÝÔ,Ñ.Ô.ð #ð #ð #ð #ð #ð #ð #°'Ø*˜7œ?Ø˜CðØ)-¬¸D¼Iðð ØIOðð ð #ð #ð #ð #ð #ð #ð #ð #àØ"�N�N�N�Nð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #ð /�t”Ô.Ø˜ðØ%)¤\¸¼	ðð ØEKðð ð ð ð ð ð ð ð ð àØ����ðð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð sG   £#BÁAÁBÁ
A)	Á)BÁ,A)	Á-BÂ
BÂBÂ>CÃ
C!Ã$C!c                óˆ   K  —  | j         d|fi |¤Ž4 ƒd{V —†}|W V — ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )ú/GET the URL and return the text asynchronously.ÚGETN©rC   ©r+   r"   r#   rB   s       r   ÚagetzRequests.agetG   sê   è è € ð
 "�4”> %¨Ð7Ð7°Ð7Ð7ð 	ð 	ð 	ð 	ð 	ð 	ð 	¸8ØˆNˆNˆNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   ˜1±
;¾;c                óŒ   K  —  | j         d|fd|i|¤Ž4 ƒd{V —†}|W V — ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )ú3POST to the URL and return the text asynchronously.ÚPOSTr0   NrG   ©r+   r"   r,   r#   rB   s        r   ÚapostzRequests.apostO   sï   è è € ð
 "�4”> &¨#ÐCÐC°DÐC¸FÐCÐCð 	ð 	ð 	ð 	ð 	ð 	ð 	ÀxØˆNˆNˆNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   š3³
=Á =c                óŒ   K  —  | j         d|fd|i|¤Ž4 ƒd{V —†}|W V — ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )ú1PATCH the URL and return the text asynchronously.ÚPATCHr0   NrG   rN   s        r   ÚapatchzRequests.apatchW   sï   è è € ð
 "�4”> '¨3ÐDÐD°TÐD¸VÐDÐDð 	ð 	ð 	ð 	ð 	ð 	ð 	ÈØˆNˆNˆNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	rP   c                óŒ   K  —  | j         d|fd|i|¤Ž4 ƒd{V —†}|W V — ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )ú/PUT the URL and return the text asynchronously.ÚPUTr0   NrG   rN   s        r   ÚaputzRequests.aput_   sï   è è € ð
 "�4”> %¨ÐBÐB°4ÐB¸6ÐBÐBð 	ð 	ð 	ð 	ð 	ð 	ð 	ÀhØˆNˆNˆNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	rP   c                óˆ   K  —  | j         d|fi |¤Ž4 ƒd{V —†}|W V — ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )ú2DELETE the URL and return the text asynchronously.ÚDELETENrG   rH   s       r   ÚadeletezRequests.adeleteg   sê   è è € ð
 "�4”> (¨CÐ:Ð:°6Ð:Ð:ð 	ð 	ð 	ð 	ð 	ð 	ð 	¸hØˆNˆNˆNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	rJ   )r   r   r   r   r   r   r   ÚstrÚ__annotations__r   r>   r?   r   r   r    r(   r   r)   r1   r5   r8   r;   r   r   ÚClientResponserC   rI   rO   rT   rX   r\   r   r   r   r   r      s†  € € € € € € ðð ð )-€GˆX�d˜3 ˜8”nÔ%Ð,Ð,Ñ,Ø26€J�˜Ô.Ô/Ð6Ð6Ñ6Ø€Dˆ(�3Œ-ÐÐÑð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ðQ�sð Q cð Q¨hÔ.?ð Qð Qð Qð Qð
˜ð 
 4¨¨S¨¤>ð 
¸Sð 
ÀXÔEVð 
ð 
ð 
ð 
ð
˜ð 
 D¨¨c¨¤Nð 
¸cð 
ÀhÔFWð 
ð 
ð 
ð 
ð
�sð 
 $ s¨C x¤.ð 
¸Cð 
ÀHÔDUð 
ð 
ð 
ð 
ðT˜#ð T¨ð T°Ô1Bð Tð Tð Tð Tð ðØðØ #ðØ/2ðà	˜Ô.°Ð4Ô	5ðð ð ñ Ôðð  ðØðØ"%ðà	˜Ô.°Ð4Ô	5ðð ð ñ Ôðð ðØðØ" 3¨ 8œnðØ8;ðà	˜Ô.°Ð4Ô	5ðð ð ñ Ôðð ðØðØ" 3¨ 8œnðØ8;ðà	˜Ô.°Ð4Ô	5ðð ð ñ Ôðð ðØðØ" 3¨ 8œnðØ8;ðà	˜Ô.°Ð4Ô	5ðð ð ñ Ôðð ðØðØ"%ðà	˜Ô.°Ð4Ô	5ðð ð ñ Ôðð ð r   r   c                   ó¶  — e Zd ZU dZdZeeeef                  ed<   dZ	ee
j                 ed<   dZee         ed<   dZed         ed<    G d	„ d
¦  «        Zedefd„¦   «         Zdedeeeeef         f         fd„Zde
j        deeeeef         f         fd„Zdededeeeeef         f         fd„Zdedeeef         dedeeeeef         f         fd„Zdedeeef         dedeeeeef         f         fd„Zdedeeef         dedeeeeef         f         fd„Zdededeeeeef         f         fd„Zdededeeeeef         f         fd„Zdedeeef         dedeeeeef         f         fd„Zdedeeef         dedeeeeef         f         fd„Z dedeeef         dedeeeeef         f         fd„Z!dededeeeeef         f         fd„Z"dS )ÚGenericRequestsWrapperz,Lightweight wrapper around requests library.Nr   r   r   Útext©rb   r0   Úresponse_content_typec                   ó$   — e Zd ZdZej        ZdZdS )úGenericRequestsWrapper.Configr   TNr   r   r   r   r    rf   x   r!   r   r    r$   c                 óD   — t          | j        | j        | j        ¬¦  «        S )N)r   r   r   )r   r   r   r   )r+   s    r   r(   zGenericRequestsWrapper.requests~   s&   € åØ”L¨T¬_À4Ä9ð
ñ 
ô 
ð 	
r   rB   c                 ó’   — | j         dk    r|j        S | j         dk    r|                     ¦   «         S t          d| j         › �¦  «        ‚©Nrb   r0   zInvalid return type: ©rd   rb   r0   Ú
ValueError©r+   rB   s     r   Ú_get_resp_contentz(GenericRequestsWrapper._get_resp_content„   sN   € ØÔ%¨Ò/Ð/Ø”=Ð ØÔ'¨6Ò1Ð1Ø—=’=‘?”?Ð"åÐQ°TÔ5OÐQÐQÑRÔRÐRr   c                 ó¬   — | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S t          d| j         › �¦  «        ‚ri   rj   rl   s     r   Ú_aget_resp_contentz)GenericRequestsWrapper._aget_resp_contentŒ   sV   € ð Ô%¨Ò/Ð/Ø—=’=‘?”?Ð"ØÔ'¨6Ò1Ð1Ø—=’=‘?”?Ð"åÐQ°TÔ5OÐQÐQÑRÔRÐRr   r"   r#   c                 óN   — |                        | j        j        |fi |¤Ž¦  «        S )r&   )rm   r(   r)   r*   s      r   r)   zGenericRequestsWrapper.get–   s.   € à×%Ò%Ð&7 d¤mÔ&7¸Ð&FÐ&F¸vÐ&FÐ&FÑGÔGÐGr   r,   c                 óP   — |                        | j        j        ||fi |¤Ž¦  «        S )r.   )rm   r(   r1   r2   s       r   r1   zGenericRequestsWrapper.postš   s2   € ð ×%Ò%Ð&8 d¤mÔ&8¸¸dÐ&MÐ&MÀfÐ&MÐ&MÑNÔNÐNr   c                 óP   — |                        | j        j        ||fi |¤Ž¦  «        S )r4   )rm   r(   r5   r2   s       r   r5   zGenericRequestsWrapper.patch    s2   € ð ×%Ò%Ð&9 d¤mÔ&9¸#¸tÐ&NÐ&NÀvÐ&NÐ&NÑOÔOÐOr   c                 óP   — |                        | j        j        ||fi |¤Ž¦  «        S )r7   )rm   r(   r8   r2   s       r   r8   zGenericRequestsWrapper.put¦   s2   € ð ×%Ò%Ð&7 d¤mÔ&7¸¸TÐ&LÐ&LÀVÐ&LÐ&LÑMÔMÐMr   c                 óN   — |                        | j        j        |fi |¤Ž¦  «        S )r:   )rm   r(   r;   r*   s      r   r;   zGenericRequestsWrapper.delete¬   s.   € à×%Ò%Ð&: d¤mÔ&:¸3Ð&IÐ&IÀ&Ð&IÐ&IÑJÔJÐJr   c              ‹   óº   K  —  | j         j        |fi |¤Ž4 ƒd{V —†}|                      |¦  «        ƒ d{V —†cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   dS )rE   N)r(   rI   ro   rH   s       r   rI   zGenericRequestsWrapper.aget°   s  è è € à%�4”=Ô% cÐ4Ð4¨VÐ4Ð4ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;¸Ø×0Ò0°Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:ð	;ð 	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ó   œA
Á

AÁAc              ‹   ó¼   K  —  | j         j        ||fi |¤Ž4 ƒd{V —†}|                      |¦  «        ƒ d{V —†cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   dS )rL   N)r(   rO   ro   rN   s        r   rO   zGenericRequestsWrapper.apostµ   s  è è € ð '�4”=Ô& s¨DÐ;Ð;°FÐ;Ð;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;¸xØ×0Ò0°Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:ð	;ð 	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ó   �AÁ
AÁAc              ‹   ó¼   K  —  | j         j        ||fi |¤Ž4 ƒd{V —†}|                      |¦  «        ƒ d{V —†cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   dS )rR   N)r(   rT   ro   rN   s        r   rT   zGenericRequestsWrapper.apatch¼   s  è è € ð (�4”=Ô'¨¨TÐ<Ð<°VÐ<Ð<ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ÀØ×0Ò0°Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:ð	;ð 	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;rx   c              ‹   ó¼   K  —  | j         j        ||fi |¤Ž4 ƒd{V —†}|                      |¦  «        ƒ d{V —†cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   dS )rV   N)r(   rX   ro   rN   s        r   rX   zGenericRequestsWrapper.aputÃ   s  è è € ð &�4”=Ô% c¨4Ð:Ð:°6Ð:Ð:ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;¸hØ×0Ò0°Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:ð	;ð 	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;rx   c              ‹   óº   K  —  | j         j        |fi |¤Ž4 ƒd{V —†}|                      |¦  «        ƒ d{V —†cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   dS )rZ   N)r(   r\   ro   rH   s       r   r\   zGenericRequestsWrapper.adeleteÊ   s  è è € à(�4”=Ô(¨Ð7Ð7°Ð7Ð7ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;¸8Ø×0Ò0°Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:ð	;ð 	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;rv   )#r   r   r   r   r   r   r   r]   r^   r   r>   r?   r   r   rd   r   r    Úpropertyr   r(   r   r	   rm   r_   ro   r)   r1   r5   r8   r;   rI   rO   rT   rX   r\   r   r   r   ra   ra   p   s)  € € € € € € Ø6Ð6à(,€GˆX�d˜3 ˜8”nÔ%Ð,Ð,Ñ,Ø26€J�˜Ô.Ô/Ð6Ð6Ñ6Ø€Dˆ(�3Œ-ÐÐÑØ5;Ð˜7 >Ô2Ð;Ð;Ñ;ð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð ð
˜(ð 
ð 
ð 
ñ „Xð
ð
S¨(ð S°u¸SÀ$ÀsÈCÀxÄ.Ð=PÔ7Qð Sð Sð Sð SðSØÔ.ðSà	ˆs�D˜˜c˜”NÐ"Ô	#ðSð Sð Sð SðH�sð H cð H¨e°C¸¸cÀ3¸h¼Ð4GÔ.Hð Hð Hð Hð HðOØðOØ" 3¨ 8œnðOØ8;ðOà	ˆs�D˜˜c˜”NÐ"Ô	#ðOð Oð Oð OðPØðPØ" 3¨ 8œnðPØ8;ðPà	ˆs�D˜˜c˜”NÐ"Ô	#ðPð Pð Pð PðNØðNØ" 3¨ 8œnðNØ8;ðNà	ˆs�D˜˜c˜”NÐ"Ô	#ðNð Nð Nð NðK˜#ð K¨ð K°°s¸DÀÀcÀ¼NÐ7JÔ1Kð Kð Kð Kð Kð;˜cð ;¨Sð ;°U¸3ÀÀSÈ#ÀXÄÐ;NÔ5Oð ;ð ;ð ;ð ;ð
;Øð;Ø" 3¨ 8œnð;Ø8;ð;à	ˆs�D˜˜c˜”NÐ"Ô	#ð;ð ;ð ;ð ;ð;Øð;Ø" 3¨ 8œnð;Ø8;ð;à	ˆs�D˜˜c˜”NÐ"Ô	#ð;ð ;ð ;ð ;ð;Øð;Ø" 3¨ 8œnð;Ø8;ð;à	ˆs�D˜˜c˜”NÐ"Ô	#ð;ð ;ð ;ð ;ð; ð ;°ð ;¸¸cÀ4ÈÈSÈÄ>Ð>QÔ8Rð ;ð ;ð ;ð ;ð ;ð ;r   ra   c                   ó.   — e Zd ZU dZdZed         ed<   dS )ÚJsonRequestsWrapperz‰Lightweight wrapper around requests library, with async support.

    The main purpose of this wrapper is to always return a json output.r0   rc   rd   N©r   r   r   r   rd   r   r^   r   r   r   r~   r~   Ð   ó6   € € € € € € ðKð Kð 6<Ð˜7 >Ô2Ð;Ð;Ñ;Ð;Ð;r   r~   c                   ó.   — e Zd ZU dZdZed         ed<   dS )ÚTextRequestsWrapperz‰Lightweight wrapper around requests library, with async support.

    The main purpose of this wrapper is to always return a text output.rb   rc   rd   Nr   r   r   r   r‚   r‚   Ø   r€   r   r‚   )r   Ú
contextlibr   Útypingr   r   r   r   r   r	   r>   r(   Úlangchain_core.pydantic_v1r
   r   r   r   ra   r~   r‚   ÚRequestsWrapperr   r   r   ú<module>r‡      sP  ðØ FÐ FØ *Ð *Ð *Ð *Ð *Ð *Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà €€€Ø €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð ðbð bð bð bð bˆyñ bô bð bðJ];ð ];ð ];ð ];ð ];˜Yñ ];ô ];ð ];ð@<ð <ð <ð <ð <Ð0ñ <ô <ð <ð<ð <ð <ð <ð <Ð0ñ <ô <ð <ð &€€€r   