Ë
    ¥#ijæ,  ã                   ó¤  — d dl Z d dlZd dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ ddlmZ d	d
lmZ g d¢Z G d„ dej(                  «      Z G d„ d«      Z G d„ deej.                  «      ZdZ G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d ej@                  «      Z!ejE                  e!«       ejE                  ejF                  «       ejE                  ejH                  «        G d!„ d"e«      Z%ejE                  e%«       ejE                  e%«        G d#„ d$e«      Z&ejN                  jE                  e&«       ejP                  jE                  e&«       ejR                  jE                  e&«       ejT                  jE                  e&«       ejV                  jE                  e&«       ejD                   G d%„ d&e«      «       Z,ejD                   G d'„ d(e«      «       Z-ejD                   G d)„ d*e«      «       Z.ejD                   G d+„ d,e«      «       Z/ejD                   G d-„ d.e«      «       Z0ejD                   G d/„ d0ejb                  «      «       Z2ejD                   G d1„ d2ejb                  «      «       Z3ejD                   G d3„ d4ejb                  «      «       Z4ejD                   G d5„ d6ejb                  «      «       Z5ejD                   G d7„ d8ejb                  «      «       Z6ejD                   G d9„ d:ejb                  «      «       Z7ejD                   G d;„ d<ejb                  «      «       Z8y)=é    N)ÚformsÚlookups)Úmodels)Ú	DateRangeÚDateTimeTZRangeÚNumericRangeÚRange)ÚCast)ÚPostgresOperatorLookupé   )ÚCheckPostgresInstalledMixiné   )ÚAttributeSetter)Ú
RangeFieldÚIntegerRangeFieldÚBigIntegerRangeFieldÚDecimalRangeFieldÚDateTimeRangeFieldÚDateRangeFieldÚRangeBoundaryÚRangeOperatorsc                   ó   — e Zd ZdZdd„Zd„ Zy)r   z)A class that represents range boundaries.c                 ó<   — |rdnd| _         |rd| _        y d| _        y )Nú[ú(ú]ú)©ÚlowerÚupper)ÚselfÚinclusive_lowerÚinclusive_uppers      ú_/var/www/html/office/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/ranges.pyÚ__init__zRangeBoundary.__init__!   s   € Ù+‘S°ˆŒ
Ù+�Sˆ�
°ˆ�
ó    c                 ó>   — d| j                   ›| j                  ›d�g fS )Nú'r   )r!   ÚcompilerÚ
connections      r$   Úas_sqlzRangeBoundary.as_sql%   s   � ØŸ:š: t§z£zÐ2°BÐ6Ð6r&   N)TF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r+   © r&   r$   r   r      s   „ Ù3ó5ó7r&   r   c                   ó4   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)r   ú=z<>z@>z<@z&&z<<z>>z&>z&<z-|-N)r,   r-   r.   ÚEQUALÚ	NOT_EQUALÚCONTAINSÚCONTAINED_BYÚOVERLAPSÚFULLY_LTÚFULLY_GTÚNOT_LTÚNOT_GTÚADJACENT_TOr0   r&   r$   r   r   )   s4   „ à€EØ€IØ€HØ€LØ€HØ€HØ€HØ€FØ€FØ�Kr&   r   c                   ó–   ‡ — e Zd ZdZˆ fd„Zed„ «       Zej                  d„ «       Zeˆ fd„«       Z	d„ Z
d„ Zd„ Zˆ fd	„Zd
„ Zˆ fd„Zˆ xZS )r   Fc                 ó´   •— d|v r#t        d| j                  j                  › d�«      ‚t        | d«      r| j	                  «       | _        t        ‰| �  |i |¤Ž y )NÚdefault_boundsz!Cannot use 'default_bounds' with ú.Ú
base_field)Ú	TypeErrorÚ	__class__r,   ÚhasattrrA   Úsuperr%   )r!   ÚargsÚkwargsrC   s      €r$   r%   zRangeField.__init__:   s[   ø€ Ø˜vÑ%ÜØ3°D·N±N×4KÑ4KÐ3LÈAÐNóð ô
 �4˜Ô&Ø"Ÿo™oÓ/ˆDŒOÜ‰Ñ˜$Ð) &Ó)r&   c                 ó€   — 	 | j                   d   S # t        $ r# t        d| j                  j                  z  «      ‚w xY w)NÚmodelz$'%s' object has no attribute 'model')Ú__dict__ÚKeyErrorÚAttributeErrorrC   r,   ©r!   s    r$   rI   zRangeField.modelE   sD   € ð	Ø—=‘= Ñ)Ð)øÜò 	Ü Ø6¸¿¹×9PÑ9PÑPóð ð	ús   ‚ ‘,=c                 óD   — || j                   d<   || j                  _        y )NrI   )rJ   rA   rI   )r!   rI   s     r$   rI   zRangeField.modelN   s   € à!&ˆ�‰�gÑØ %ˆ�‰Õr&   c                 óR   •— t        |t        t        f«      xs t        ‰| �  |«      S ©N)Ú
isinstanceÚlistÚtuplerE   Ú_choices_is_value)ÚclsÚvaluerC   s     €r$   rT   zRangeField._choices_is_valueS   s#   ø€ ä˜%¤$¬ Ó/ÒS´5±7Ñ3LÈUÓ3SÐSr&   c                 óB   — dj                  | j                  |«      «      S )Nz%s::{})ÚformatÚdb_type)r!   rV   r)   r*   s       r$   Úget_placeholderzRangeField.get_placeholderW   s   € Ø�‰˜tŸ|™|¨JÓ7Ó8Ð8r&   c                 óŒ   — |€y t        |t        «      r|S t        |t        t        f«      r| j	                  |d   |d   «      S |S ©Nr   r   )rQ   r	   rR   rS   Ú
range_type)r!   rV   s     r$   Úget_prep_valuezRangeField.get_prep_valueZ   sE   € Øˆ=ØÜ˜œuÔ%ØˆLÜ˜¤¤e˜}Ô-Ø—?‘? 5¨¡8¨U°1©XÓ6Ð6Øˆr&   c                 ó.  — t        |t        «      rVt        j                  |«      }dD ](  }||v sŒ| j                  j                  ||   «      ||<   Œ*  | j                  di |¤Ž}|S t        |t        t        f«      r| j                  |d   |d   «      }|S )Nr   r   r   r0   )	rQ   ÚstrÚjsonÚloadsrA   Ú	to_pythonr]   rR   rS   )r!   rV   ÚvalsÚends       r$   rc   zRangeField.to_pythonc   s—   € Ü�eœSÔ!ä—:‘:˜eÓ$ˆDØ)ò E�Ø˜$’;Ø $§¡× 9Ñ 9¸$¸s¹)Ó D�D˜’IðEð $�D—O‘OÑ+ dÑ+ˆEð ˆô ˜¤¤e˜}Ô-Ø—O‘O E¨!¡H¨e°A©hÓ7ˆEØˆr&   c                 óZ   •— t         ‰| �  |«       | j                  j                  |«       y rP   )rE   Úset_attributes_from_namerA   )r!   ÚnamerC   s     €r$   rg   z#RangeField.set_attributes_from_nameo   s"   ø€ Ü‰Ñ(¨Ô.Ø�‰×0Ñ0°Õ6r&   c                 óX  — | j                  |«      }|€y |j                  rt        j                  ddi«      S | j                  }d|j
                  i}dD ]@  }t        ||«      }|€d ||<   Œt        |j                  |«      }|j                  |«      ||<   ŒB t        j                  |«      S )NÚemptyTÚboundsr   )
Úvalue_from_objectÚisemptyra   ÚdumpsrA   Ú_boundsÚgetattrr   ÚattnameÚvalue_to_string)r!   ÚobjrV   rA   Úresultre   Úvals          r$   rr   zRangeField.value_to_strings   s«   € Ø×&Ñ& sÓ+ˆØˆ=ØØ�=Š=Ü—:‘:˜w¨˜oÓ.Ð.Ø—_‘_ˆ
Ø˜EŸM™MÐ*ˆØ%ò 	>ˆCÜ˜% Ó%ˆCØˆ{Ø"��s’ä% j×&8Ñ&8¸#Ó>�Ø(×8Ñ8¸Ó=��s’ð	>ô �z‰z˜&Ó!Ð!r&   c                 óZ   •— |j                  d| j                  «       t        ‰| �  di |¤ŽS )NÚ
form_classr0   )Ú
setdefaultÚ
form_fieldrE   Ú	formfield©r!   rG   rC   s     €r$   rz   zRangeField.formfield„   s*   ø€ Ø×Ñ˜,¨¯©Ô8Ü‰wÑ Ñ* 6Ñ*Ð*r&   )r,   r-   r.   Úempty_strings_allowedr%   ÚpropertyrI   ÚsetterÚclassmethodrT   rZ   r^   rc   rg   rr   rz   Ú__classcell__©rC   s   @r$   r   r   7   ss   ø„ Ø!Ðô	*ð ñó ðð ‡\�\ñ&ó ð&ð óTó ðTò9òò
ô7ò"÷"+ð +r&   r   ú[)c                   óF   ‡ — e Zd ZdZedœˆ fd„
Zˆ fd„Zˆ fd„Zˆ fd„Zˆ xZ	S )ÚContinuousRangeFieldzd
    Continuous range field. It allows specifying default bounds for list and
    tuple inputs.
    )r?   c                óP   •— |dvrt        d«      ‚|| _        t        ‰| �  |i |¤Ž y )N)r‚   z(]z()z[]z8default_bounds must be one of '[)', '(]', '()', or '[]'.)Ú
ValueErrorr?   rE   r%   )r!   r?   rF   rG   rC   s       €r$   r%   zContinuousRangeField.__init__’   s2   ø€ ØÐ!9Ñ9ÜÐWÓXÐXØ,ˆÔÜ‰Ñ˜$Ð) &Ó)r&   c                 ó”   •— t        |t        t        f«      r#| j                  |d   |d   | j                  «      S t
        ‰| �  |«      S r\   )rQ   rR   rS   r]   r?   rE   r^   )r!   rV   rC   s     €r$   r^   z#ContinuousRangeField.get_prep_value˜   sB   ø€ Ü�eœd¤E˜]Ô+Ø—?‘? 5¨¡8¨U°1©X°t×7JÑ7JÓKÐKÜ‰wÑ% eÓ,Ð,r&   c                 óZ   •— |j                  d| j                  «       t        ‰| �  di |¤ŽS )Nr?   r0   )rx   r?   rE   rz   r{   s     €r$   rz   zContinuousRangeField.formfield�   s-   ø€ Ø×ÑÐ*¨D×,?Ñ,?Ô@Ü‰wÑ Ñ* 6Ñ*Ð*r&   c                 ó’   •— t         ‰| �  «       \  }}}}| j                  r"| j                  t        k7  r| j                  |d<   ||||fS )Nr?   )rE   Údeconstructr?   ÚCANONICAL_RANGE_BOUNDS)r!   rh   ÚpathrF   rG   rC   s        €r$   rŠ   z ContinuousRangeField.deconstruct¡   sP   ø€ Ü#(¡7Ñ#6Ó#8Ñ ˆˆd�D˜&Ø×Ò 4×#6Ñ#6Ô:PÒ#PØ'+×':Ñ':ˆFÐ#Ñ$Ø�T˜4 Ð'Ð'r&   )
r,   r-   r.   r/   r‹   r%   r^   rz   rŠ   r€   r�   s   @r$   r„   r„   Œ   s'   ø„ ñð
 .Dö *ô-ô
+÷(ð (r&   r„   c                   óF   — e Zd Zej                  ZeZej                  Z
d„ Zy)r   c                  ó   — y)NÚ	int4ranger0   ©r!   r*   s     r$   rY   zIntegerRangeField.db_type­   ó   € Ør&   N)r,   r-   r.   r   ÚIntegerFieldrA   r   r]   r   r   ry   rY   r0   r&   r$   r   r   ¨   s"   „ Ø×$Ñ$€JØ€JØ×(Ñ(€Jór&   r   c                   óF   — e Zd Zej                  ZeZej                  Z
d„ Zy)r   c                  ó   — y)NÚ	int8ranger0   r�   s     r$   rY   zBigIntegerRangeField.db_type¶   r‘   r&   N)r,   r-   r.   r   ÚBigIntegerFieldrA   r   r]   r   r   ry   rY   r0   r&   r$   r   r   ±   s"   „ Ø×'Ñ'€JØ€JØ×(Ñ(€Jór&   r   c                   óF   — e Zd Zej                  ZeZej                  Z
d„ Zy)r   c                  ó   — y)NÚnumranger0   r�   s     r$   rY   zDecimalRangeField.db_type¿   s   € Ør&   N)r,   r-   r.   r   ÚDecimalFieldrA   r   r]   r   r   ry   rY   r0   r&   r$   r   r   º   s"   „ Ø×$Ñ$€JØ€JØ×(Ñ(€Jór&   r   c                   óF   — e Zd Zej                  ZeZej                  Z
d„ Zy)r   c                  ó   — y)NÚ	tstzranger0   r�   s     r$   rY   zDateTimeRangeField.db_typeÈ   r‘   r&   N)r,   r-   r.   r   ÚDateTimeFieldrA   r   r]   r   r   ry   rY   r0   r&   r$   r   r   Ã   s"   „ Ø×%Ñ%€JØ €JØ×)Ñ)€Jór&   r   c                   óF   — e Zd Zej                  ZeZej                  Z
d„ Zy)r   c                  ó   — y)NÚ	dateranger0   r�   s     r$   rY   zDateRangeField.db_typeÑ   r‘   r&   N)r,   r-   r.   r   Ú	DateFieldrA   r   r]   r   r   ry   rY   r0   r&   r$   r   r   Ì   s"   „ Ø×!Ñ!€JØ€JØ×%Ñ%€Jór&   r   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚRangeContainsc                 óÒ   •— t        | j                  t        t        t        f«      s4t        | j                  | j                  j                  j                  «      S t        ‰| �)  «       S rP   )rQ   ÚrhsrR   rS   r	   r
   ÚlhsÚfieldrA   rE   Úget_prep_lookup)r!   rC   s    €r$   r©   zRangeContains.get_prep_lookupÖ   sE   ø€ Ü˜$Ÿ(™(¤T¬5´%Ð$8Ô9Ü˜Ÿ™ $§(¡(§.¡.×";Ñ";Ó<Ð<Ü‰wÑ&Ó(Ð(r&   )r,   r-   r.   r©   r€   r�   s   @r$   r¤   r¤   Õ   s   ø„ ÷)ð )r&   r¤   c                   óH   ‡ — e Zd ZdZdZej                  Zˆ fd„Zˆ fd„Z	ˆ xZ
S )ÚDateTimeRangeContainsz\
    Lookup for Date/DateTimeRange containment to cast the rhs to the correct
    type.
    Úcontainsc                 óê   •— t        | j                  t        j                  «      r?t	        j
                  | j                  «      }|j                  |j                  «      | _        t        ‰| �%  ||«      S rP   )
rQ   r¦   ÚdatetimeÚdater   ÚValueÚresolve_expressionÚqueryrE   Úprocess_rhs)r!   r)   r*   rV   rC   s       €r$   r³   z!DateTimeRangeContains.process_rhsê   sO   ø€ ä�d—h‘h¤§¡Ô.Ü—L‘L §¡Ó*ˆEØ×/Ñ/°·±Ó?ˆDŒHÜ‰wÑ" 8¨ZÓ8Ð8r&   c                 óÞ  •— t         ‰| �  ||«      \  }}d}t        | j                  t        j
                  «      r¬| j                  j                  r–t        | j                  j                  | j                  j                  j                  «      sX| j                  j                  j                  j                  «       }dj                  |j                  j                  |«      «      }|›|›�|fS )NÚ z::{})rE   Úas_postgresqlrQ   r¦   r   Ú
ExpressionÚ_output_field_or_noner§   Úoutput_fieldrC   rA   Úget_internal_typerX   Ú
data_typesÚget)r!   r)   r*   ÚsqlÚparamsÚcast_sqlÚcast_internal_typerC   s          €r$   r¶   z#DateTimeRangeContains.as_postgresqlñ   s¸   ø€ Ü‘gÑ+¨H°jÓA‰ˆˆVàˆä�t—x‘x¤×!2Ñ!2Ô3Ø—‘×.Ò.ô Ø—‘×.Ñ.°·±×0EÑ0E×0OÑ0Oôð "&§¡×!6Ñ!6×!AÑ!A×!SÑ!SÓ!UÐØ—}‘} Z×%:Ñ%:×%>Ñ%>Ð?QÓ%RÓSˆHÙ™hÐ'¨Ð/Ð/r&   )r,   r-   r.   r/   Úlookup_namer   r5   Úpostgres_operatorr³   r¶   r€   r�   s   @r$   r«   r«   á   s*   ø„ ñð
 €KØ&×/Ñ/Ðô9÷0ð 0r&   r«   c                   ó^   ‡ — e Zd ZdZddddddddœZej                  Zˆ fd„Zˆ fd	„Z	d
„ Z
ˆ xZS )ÚRangeContainedByÚcontained_byr�   r•   r™   r¡   r�   )ÚsmallintÚintegerÚbigintzdouble precisionÚnumericr¯   ztimestamp with time zonec                 óÈ   •— t         ‰| �  ||«      \  }}| j                  j                  j	                  |«      j                  d«      d   }| j                  |   }|›d|›�|fS )Nr   r   z::)rE   r³   r§   r¹   Úcast_db_typeÚsplitÚtype_mapping)r!   r)   r*   r¦   Ú
rhs_paramsrY   Ú	cast_typerC   s          €r$   r³   zRangeContainedBy.process_rhs  sb   ø€ Ü™'Ñ-¨h¸
ÓC‰ˆˆZà—(‘(×'Ñ'×4Ñ4°ZÓ@×FÑFÀsÓKÈAÑNˆØ×%Ñ% gÑ.ˆ	Ú¡	Ð*¨JÐ6Ð6r&   c                 ó  •— t         ‰| �  ||«      \  }}t        | j                  j                  t
        j                  «      r	d|z  }||fS t        | j                  j                  t
        j                  «      rd|z  }||fS )Nz%s::numericz%s::integer)rE   Úprocess_lhsrQ   r§   r¹   r   Ú
FloatFieldÚSmallIntegerField)r!   r)   r*   r§   Ú
lhs_paramsrC   s        €r$   rÑ   zRangeContainedBy.process_lhs  sx   ø€ Ü™'Ñ-¨h¸
ÓC‰ˆˆZÜ�d—h‘h×+Ñ+¬V×->Ñ->Ô?Ø #Ñ%ˆCð �JˆÐô ˜Ÿ™×-Ñ-¬v×/GÑ/GÔHØ #Ñ%ˆCØ�JˆÐr&   c                 óH   — t        «       j                  | j                  «      S rP   )r   r^   r¦   rM   s    r$   r©   z RangeContainedBy.get_prep_lookup#  s   € Ü‹|×*Ñ*¨4¯8©8Ó4Ð4r&   )r,   r-   r.   rÁ   rÍ   r   r6   rÂ   r³   rÑ   r©   r€   r�   s   @r$   rÄ   rÄ     sA   ø„ Ø €KàØØØ&ØØØ$/ñ€Lð '×3Ñ3Ðô7ôö5r&   rÄ   c                   ó(   — e Zd ZdZej
                  Zy)ÚFullyLessThanÚfully_ltN)r,   r-   r.   rÁ   r   r8   rÂ   r0   r&   r$   r×   r×   .  ó   „ à€KØ&×/Ñ/Ñr&   r×   c                   ó(   — e Zd ZdZej
                  Zy)ÚFullGreaterThanÚfully_gtN)r,   r-   r.   rÁ   r   r9   rÂ   r0   r&   r$   rÛ   rÛ   4  rÙ   r&   rÛ   c                   ó(   — e Zd ZdZej
                  Zy)ÚNotLessThanÚnot_ltN)r,   r-   r.   rÁ   r   r:   rÂ   r0   r&   r$   rÞ   rÞ   :  ó   „ à€KØ&×-Ñ-Ñr&   rÞ   c                   ó(   — e Zd ZdZej
                  Zy)ÚNotGreaterThanÚnot_gtN)r,   r-   r.   rÁ   r   r;   rÂ   r0   r&   r$   râ   râ   @  rà   r&   râ   c                   ó(   — e Zd ZdZej
                  Zy)ÚAdjacentToLookupÚadjacent_toN)r,   r-   r.   rÁ   r   r<   rÂ   r0   r&   r$   rå   rå   F  s   „ à€KØ&×2Ñ2Ñr&   rå   c                   ó$   — e Zd ZdZdZed„ «       Zy)ÚRangeStartsWithÚ
startswithr   c                 óB   — | j                   j                  j                  S rP   ©r§   r¹   rA   rM   s    r$   r¹   zRangeStartsWith.output_fieldQ  ó   € à�x‰x×$Ñ$×/Ñ/Ð/r&   N©r,   r-   r.   rÁ   Úfunctionr}   r¹   r0   r&   r$   rè   rè   L  s   „ à€KØ€Hàñ0ó ñ0r&   rè   c                   ó$   — e Zd ZdZdZed„ «       Zy)ÚRangeEndsWithÚendswithr    c                 óB   — | j                   j                  j                  S rP   rë   rM   s    r$   r¹   zRangeEndsWith.output_field[  rì   r&   Nrí   r0   r&   r$   rð   rð   V  s   „ à€KØ€Hàñ0ó ñ0r&   rð   c                   ó6   — e Zd ZdZdZ ej                  «       Zy)ÚIsEmptyrm   N©r,   r-   r.   rÁ   rî   r   ÚBooleanFieldr¹   r0   r&   r$   rô   rô   `  s   „ à€KØ€HØ&�6×&Ñ&Ó(�Lr&   rô   c                   ó6   — e Zd ZdZdZ ej                  «       Zy)ÚLowerInclusiveÚ	lower_incÚ	LOWER_INCNrõ   r0   r&   r$   rø   rø   g  ó   „ à€KØ€HØ&�6×&Ñ&Ó(�Lr&   rø   c                   ó6   — e Zd ZdZdZ ej                  «       Zy)ÚLowerInfiniteÚ	lower_infÚ	LOWER_INFNrõ   r0   r&   r$   rý   rý   n  rû   r&   rý   c                   ó6   — e Zd ZdZdZ ej                  «       Zy)ÚUpperInclusiveÚ	upper_incÚ	UPPER_INCNrõ   r0   r&   r$   r  r  u  rû   r&   r  c                   ó6   — e Zd ZdZdZ ej                  «       Zy)ÚUpperInfiniteÚ	upper_infÚ	UPPER_INFNrõ   r0   r&   r$   r  r  |  rû   r&   r  )9r®   ra   Údjango.contrib.postgresr   r   Ú	django.dbr   Ú)django.db.backends.postgresql.psycopg_anyr   r   r   r	   Údjango.db.models.functionsr
   Údjango.db.models.lookupsr   Úutilsr   r   Ú__all__r·   r   r   ÚFieldr   r‹   r„   r   r   r   r   r   ÚDataContainsr¤   Úregister_lookupÚContainedByÚOverlapr«   rÄ   r¢   rž   r’   rÒ   rš   r×   rÛ   rÞ   râ   rå   Ú	Transformrè   rð   rô   rø   rý   r  r  r0   r&   r$   ú<module>r     s^  ðÛ Û ç 2Ý ÷ó õ ,Ý ;å /Ý "ò	€ô7�F×%Ñ%ô 7÷ñ ôO+Ð,¨f¯l©lô O+ðd Ð ô(˜:ô (ô8˜
ô ô˜:ô ôÐ,ô ôÐ-ô ô�Zô ô)�G×(Ñ(ô )ð × Ñ ˜=Ô )Ø 
× Ñ ˜7×.Ñ.Ô /Ø 
× Ñ ˜7Ÿ?™?Ô +ô0Ð2ô 0ðD × Ñ Ð4Ô 5Ø × "Ñ "Ð#8Ô 9ô5Ð-ô 5ð@ × Ñ ×  Ñ  Ð!1Ô 2Ø × Ñ × $Ñ $Ð%5Ô 6Ø × Ñ × #Ñ #Ð$4Ô 5Ø × Ñ × !Ñ !Ð"2Ô 3Ø × Ñ × #Ñ #Ð$4Ô 5ð ×Ñô0Ð*ó 0ó ð0ð
 ×Ñô0Ð,ó 0ó ð0ð
 ×Ñô.Ð(ó .ó ð.ð
 ×Ñô.Ð+ó .ó ð.ð
 ×Ñô3Ð-ó 3ó ð3ð
 ×Ñô0�f×&Ñ&ó 0ó ð0ð ×Ñô0�F×$Ñ$ó 0ó ð0ð ×Ñô)ˆf×Ñó )ó ð)ð ×Ñô)�V×%Ñ%ó )ó ð)ð ×Ñô)�F×$Ñ$ó )ó ð)ð ×Ñô)�V×%Ñ%ó )ó ð)ð ×Ñô)�F×$Ñ$ó )ó ñ)r&   