§
    eŠtjC  ã                  óF  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d d	lmZ d
dlmZ d
dlmZ d
dlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ e	rTddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl&m(Z( ddl&m)Z) ddl&m*Z* dd lm+Z+ dd!l,m-Z-  e
d"e¬#¦  «        Z. e
d$e¬#¦  «        Z/ej0        fd7d-„Zej0        fd7d.„Z1 G d/„ d0ej2        e.         ¦  «        Z3 G d1„ d2ej4        e.         ¦  «        Z4d8d6„Z5dS )9é    )ÚannotationsN)ÚAny)ÚIterable)ÚOptional)ÚSequence)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )ÚCONTAINED_BY)ÚCONTAINS)ÚOVERLAPé   )Útypes)Úutil)Ú
expression)Ú	operators)ÚInternalTraversal)ÚDialect)Ú_ColumnExpressionArgument)Ú_TypeEngineArgument)ÚColumnElement)ÚGrouping)ÚBindParameter)ÚOperatorType)Ú_SelectIterable)Ú_BindProcessorType)Ú_LiteralProcessorType)Ú_ResultProcessorType)Ú
TypeEngine)Ú_TraverseInternalsType)ÚSelfÚ_T)ÚboundÚ_CTÚotherÚ
typing_AnyÚarrexprú_ColumnExpressionArgument[_T]Úoperatorr   ÚreturnúColumnElement[bool]c                ó.   — |                      | |¦  «        S )zjA synonym for the ARRAY-level :meth:`.ARRAY.Comparator.any` method.
    See that method for details.

    )Úany©r&   r(   r*   s      úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/array.pyr   r   2   ó   € ð �;Š;�u˜hÑ'Ô'Ð'ó    c                ó.   — |                      | |¦  «        S )zjA synonym for the ARRAY-level :meth:`.ARRAY.Comparator.all` method.
    See that method for details.

    )Úallr/   s      r0   ÚAllr5   ?   r1   r2   c                  ó”   ‡ — e Zd ZU dZd ZdZdej        fdej        fgZ	de
d<   ddœdˆ fd„Zed d„¦   «         Z	 	 d!d"d„Z	 d#d$d„Zˆ xZS )%ÚarrayaÝ  A PostgreSQL ARRAY literal.

    This is used to produce ARRAY literals in SQL expressions, e.g.::

        from sqlalchemy.dialects.postgresql import array
        from sqlalchemy.dialects import postgresql
        from sqlalchemy import select, func

        stmt = select(array([1, 2]) + array([3, 4, 5]))

        print(stmt.compile(dialect=postgresql.dialect()))

    Produces the SQL:

    .. sourcecode:: sql

        SELECT ARRAY[%(param_1)s, %(param_2)s] ||
            ARRAY[%(param_3)s, %(param_4)s, %(param_5)s]) AS anon_1

    An instance of :class:`.array` will always have the datatype
    :class:`_types.ARRAY`.  The "inner" type of the array is inferred from the
    values present, unless the :paramref:`_postgresql.array.type_` keyword
    argument is passed::

        array(["foo", "bar"], type_=CHAR)

    When constructing an empty array, the :paramref:`_postgresql.array.type_`
    argument is particularly important as PostgreSQL server typically requires
    a cast to be rendered for the inner type in order to render an empty array.
    SQLAlchemy's compilation for the empty array will produce this cast so
    that::

        stmt = array([], type_=Integer)
        print(stmt.compile(dialect=postgresql.dialect()))

    Produces:

    .. sourcecode:: sql

        ARRAY[]::INTEGER[]

    As required by PostgreSQL for empty arrays.

    .. versionadded:: 2.0.40 added support to render empty PostgreSQL array
       literals with a required cast.

    Multidimensional arrays are produced by nesting :class:`.array` constructs.
    The dimensionality of the final :class:`_types.ARRAY`
    type is calculated by
    recursively adding the dimensions of the inner :class:`_types.ARRAY`
    type::

        stmt = select(
            array(
                [array([1, 2]), array([3, 4]), array([column("q"), column("x")])]
            )
        )
        print(stmt.compile(dialect=postgresql.dialect()))

    Produces:

    .. sourcecode:: sql

        SELECT ARRAY[
            ARRAY[%(param_1)s, %(param_2)s],
            ARRAY[%(param_3)s, %(param_4)s],
            ARRAY[q, x]
        ] AS anon_1

    .. versionadded:: 1.3.6 added support for multidimensional array literals

    .. seealso::

        :class:`_postgresql.ARRAY`

    Ú
postgresqlÚclausesÚtyper!   Ú_traverse_internalsN)Útype_úIterable[_T]r<   ú!Optional[_TypeEngineArgument[_T]]Úkwr'   c               óV  •—  t          ¦   «         j        t          j        g|¢R i |¤Ž |�|n$| j        r| j        d         j        nt          j        }t          |t          ¦  «        r.t          |j
        |j        �
|j        dz   nd¬¦  «        | _        dS t          |¦  «        | _        dS )a  Construct an ARRAY literal.

        :param clauses: iterable, such as a list, containing elements to be
         rendered in the array
        :param type\_: optional type.  If omitted, the type is inferred
         from the contents of the array.

        Nr   r   é   )Ú
dimensions)ÚsuperÚ__init__r   Úcomma_opr9   r:   ÚsqltypesÚNULLTYPEÚ
isinstanceÚARRAYÚ	item_typerB   )Úselfr9   r<   r?   Ú	main_typeÚ	__class__s        €r0   rD   zarray.__init__£   sÅ   ø€ ð 	�‰ŒÔ�Ô+Ð<¨gÐ<Ð<Ð<¸Ð<Ð<Ð<ð Ð ð ˆEà)-¬ÐL�”˜a”Ô%Ð%½8Ô;Lð 	õ �i¥Ñ'Ô'ð 
	)ÝØÔ#ð !Ô+Ð7ð Ô(¨1Ñ,Ð,àðñ ô ˆDŒIˆIˆIõ ˜iÑ(Ô(ˆDŒIˆIˆIr2   r+   r   c                ó   — | fS ©N© ©rK   s    r0   Ú_select_iterablezarray._select_iterableÆ   s	   € àˆwˆr2   Fr*   r   ÚobjúOptional[TypeEngine[_T]]Ú_assume_scalarÚboolúBindParameter[_T]c                ó    ‡ ‡‡— |s‰t           j        u rt          j        d |‰‰‰ j        d¬¦  «        S t          ˆˆ ˆfd„|D ¦   «         ¦  «        S )NT)Ú_compared_to_operatorr<   Ú_compared_to_typeÚuniquec                óB   •— g | ]}‰                      ‰|d ‰¬¦  «        ‘ŒS )T)rU   r<   )Ú_bind_param)Ú.0Úor*   rK   r<   s     €€€r0   ú
<listcomp>z%array._bind_param.<locals>.<listcomp>Ý   sI   ø€ ð ð ð ð ð ×$Ò$Ø  !°DÀð %ñ ô ðð ð r2   )r   Úgetitemr   r   r:   r7   )rK   r*   rS   r<   rU   s   `` ` r0   r]   zarray._bind_paramÊ   s�   øøø€ ð ð 	˜X­Ô):Ð:Ð:ÝÔ+ØØØ&.ØØ"&¤)Øðñ ô ð õ ðð ð ð ð ð ð !ð	ñ ô ñô ð r2   ÚagainstúOptional[OperatorType]úUnion[Self, Grouping[_T]]c                óx   — |t           j        t           j        t           j        fv rt	          j        | ¦  «        S | S rO   )r   Úany_opÚall_opra   r   r   )rK   rb   s     r0   Ú
self_groupzarray.self_groupå   s5   € ð •yÔ'­Ô)9½9Ô;LÐMÐMÐMÝÔ& tÑ,Ô,Ð,àˆKr2   )r9   r=   r<   r>   r?   r'   )r+   r   )NF)
r*   r   rS   r'   r<   rT   rU   rV   r+   rW   rO   )rb   rc   r+   rd   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__visit_name__Ústringify_dialectr   Údp_clauseelement_tupleÚdp_typer;   Ú__annotations__rD   ÚpropertyrR   r]   rh   Ú__classcell__)rM   s   @r0   r7   r7   L   sþ   ø€ € € € € € ðKð KðZ €Nà$Ðð 
Ð%Ô<Ð=Ø	Ð"Ô*Ð+ð3Ðð ð ð ñ ð 48ð	!)ð !)ð !)ð !)ð !)ð !)ð !)ð !)ðF ðð ð ñ „Xðð +/Ø$ðð ð ð ð ð8 15ðð ð ð ð ð ð ð ð r2   r7   c                  óœ   — e Zd ZdZ	 	 	 ddd„Z G d„ dej        j        e         ¦  «        ZeZ	e
j        dd„¦   «         Zdd„Zdd„Zdd„ZdS ) rI   an
  PostgreSQL ARRAY type.

    The :class:`_postgresql.ARRAY` type is constructed in the same way
    as the core :class:`_types.ARRAY` type; a member type is required, and a
    number of dimensions is recommended if the type is to be used for more
    than one dimension::

        from sqlalchemy.dialects import postgresql

        mytable = Table(
            "mytable",
            metadata,
            Column("data", postgresql.ARRAY(Integer, dimensions=2)),
        )

    The :class:`_postgresql.ARRAY` type provides all operations defined on the
    core :class:`_types.ARRAY` type, including support for "dimensions",
    indexed access, and simple matching such as
    :meth:`.types.ARRAY.Comparator.any` and
    :meth:`.types.ARRAY.Comparator.all`.  :class:`_postgresql.ARRAY`
    class also
    provides PostgreSQL-specific methods for containment operations, including
    :meth:`.postgresql.ARRAY.Comparator.contains`
    :meth:`.postgresql.ARRAY.Comparator.contained_by`, and
    :meth:`.postgresql.ARRAY.Comparator.overlap`, e.g.::

        mytable.c.data.contains([1, 2])

    Indexed access is one-based by default, to match that of PostgreSQL;
    for zero-based indexed access, set
    :paramref:`_postgresql.ARRAY.zero_indexes`.

    Additionally, the :class:`_postgresql.ARRAY`
    type does not work directly in
    conjunction with the :class:`.ENUM` type.  For a workaround, see the
    special type at :ref:`postgresql_array_of_enum`.

    .. container:: topic

        **Detecting Changes in ARRAY columns when using the ORM**

        The :class:`_postgresql.ARRAY` type, when used with the SQLAlchemy ORM,
        does not detect in-place mutations to the array. In order to detect
        these, the :mod:`sqlalchemy.ext.mutable` extension must be used, using
        the :class:`.MutableList` class::

            from sqlalchemy.dialects.postgresql import ARRAY
            from sqlalchemy.ext.mutable import MutableList


            class SomeOrmClass(Base):
                # ...

                data = Column(MutableList.as_mutable(ARRAY(Integer)))

        This extension will allow "in-place" changes such to the array
        such as ``.append()`` to produce events which will be detected by the
        unit of work.  Note that changes to elements **inside** the array,
        including subarrays that are mutated in place, are **not** detected.

        Alternatively, assigning a new array value to an ORM element that
        replaces the old one will always trigger a change event.

    .. seealso::

        :class:`_types.ARRAY` - base array type

        :class:`_postgresql.array` - produces a literal array value.

    FNrJ   ú_TypeEngineArgument[_T]Úas_tuplerV   rB   úOptional[int]Úzero_indexesc                óÄ   — t          |t          ¦  «        rt          d¦  «        ‚t          |t          ¦  «        r
 |¦   «         }|| _        || _        || _        || _        dS )a-  Construct an ARRAY.

        E.g.::

          Column("myarray", ARRAY(Integer))

        Arguments are:

        :param item_type: The data type of items of this array. Note that
          dimensionality is irrelevant here, so multi-dimensional arrays like
          ``INTEGER[][]``, are constructed as ``ARRAY(Integer)``, not as
          ``ARRAY(ARRAY(Integer))`` or such.

        :param as_tuple=False: Specify whether return results
          should be converted to tuples from lists. DBAPIs such
          as psycopg2 return lists by default. When tuples are
          returned, the results are hashable.

        :param dimensions: if non-None, the ARRAY will assume a fixed
         number of dimensions.  This will cause the DDL emitted for this
         ARRAY to include the exact number of bracket clauses ``[]``,
         and will also optimize the performance of the type overall.
         Note that PG arrays are always implicitly "non-dimensioned",
         meaning they can store any number of dimensions no matter how
         they were declared.

        :param zero_indexes=False: when True, index values will be converted
         between Python zero-based and PostgreSQL one-based indexes, e.g.
         a value of one will be added to all index values before passing
         to the database.

        zUDo not nest ARRAY types; ARRAY(basetype) handles multi-dimensional arrays of basetypeN)rH   rI   Ú
ValueErrorr:   rJ   rv   rB   rx   )rK   rJ   rv   rB   rx   s        r0   rD   zARRAY.__init__6  sp   € õN �i¥Ñ'Ô'ð 	Ýð?ñô ð õ �i¥Ñ&Ô&ð 	$Ø!˜	™œˆIØ"ˆŒØ ˆŒØ$ˆŒØ(ˆÔÐÐr2   c                  ó*   — e Zd ZdZdd„Zdd„Zdd	„Zd
S )úARRAY.Comparatora*  Define comparison operations for :class:`_types.ARRAY`.

        Note that these operations are in addition to those provided
        by the base :class:`.types.ARRAY.Comparator` class, including
        :meth:`.types.ARRAY.Comparator.any` and
        :meth:`.types.ARRAY.Comparator.all`.

        r&   r'   Úkwargsr+   r,   c                óP   — |                       t          |t          j        ¬¦  «        S )zåBoolean expression.  Test if elements are a superset of the
            elements of the argument array expression.

            kwargs may be ignored by this operator but are required for API
            conformance.
            ©Úresult_type)Úoperater   rF   ÚBoolean)rK   r&   r}   s      r0   ÚcontainszARRAY.Comparator.containss  s   € ð —<’<¥¨%½XÔ=M�<ÑNÔNÐNr2   c                óP   — |                       t          |t          j        ¬¦  «        S )z„Boolean expression.  Test if elements are a proper subset of the
            elements of the argument array expression.
            r   )r�   r   rF   r‚   ©rK   r&   s     r0   Úcontained_byzARRAY.Comparator.contained_by~  s)   € ð —<’<Ý˜eµÔ1Að  ñ ô ð r2   c                óP   — |                       t          |t          j        ¬¦  «        S )zuBoolean expression.  Test if array has elements in common with
            an argument array expression.
            r   )r�   r   rF   r‚   r…   s     r0   ÚoverlapzARRAY.Comparator.overlap†  s   € ð —<’<¥¨½HÔ<L�<ÑMÔMÐMr2   N)r&   r'   r}   r'   r+   r,   )r&   r'   r+   r,   )ri   rj   rk   rl   rƒ   r†   rˆ   rP   r2   r0   Ú
Comparatorr|   i  sd   € € € € € ð	ð 	ð		Oð 		Oð 		Oð 		Oð	ð 	ð 	ð 	ð	Nð 	Nð 	Nð 	Nð 	Nð 	Nr2   r‰   r+   c                óX   — t          | j        t          j        ¦  «        o| j        j        S rO   )rH   rJ   rF   ÚEnumÚnative_enumrQ   s    r0   Ú_against_native_enumzARRAY._against_native_enumŽ  s'   € õ �t”~¥x¤}Ñ5Ô5ð +Ø”Ô*ð	
r2   Údialectr   ú#Optional[_LiteralProcessorType[_T]]c                ó†   ‡ ‡‡— ‰ j                              |¦  «                             |¦  «        Š‰€d S d	d„Šd
ˆˆ ˆfd„}|S )NÚelementsúIterable[typing_Any]r+   Ústrc                ó4   — dd                      | ¦  «        › d�S )NzARRAY[z, ú])Újoin)r‘   s    r0   Úto_strz'ARRAY.literal_processor.<locals>.to_strž  s   € Ø2˜DŸIšI hÑ/Ô/Ð2Ð2Ð2Ð2r2   ÚvalueúSequence[typing_Any]c                óB   •— ‰                      | ‰‰j        ‰¦  «        }|S rO   )Ú_apply_item_processorrB   )r˜   ÚinnerÚ	item_procrK   r—   s     €€€r0   Úprocessz(ARRAY.literal_processor.<locals>.process¡  s*   ø€ Ø×.Ò.Ø�y $¤/°6ñô ˆEð ˆLr2   )r‘   r’   r+   r“   )r˜   r™   r+   r“   )rJ   Údialect_implÚliteral_processor)rK   rŽ   rž   r�   r—   s   `  @@r0   r    zARRAY.literal_processor•  s   øøø€ ð ”N×/Ò/°Ñ8Ô8×JÒJØñ
ô 
ˆ	ð ÐØ�4ð	3ð 	3ð 	3ð 	3ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ˆr2   ú2Optional[_BindProcessorType[Sequence[typing_Any]]]c                ór   ‡ ‡— ‰ j                              |¦  «                             |¦  «        Šdˆˆ fd„}|S )Nr˜   úOptional[Sequence[typing_Any]]r+   úOptional[list[typing_Any]]c                óP   •— | €| S ‰                      | ‰‰j        t          ¦  «        S rO   )r›   rB   Úlist©r˜   r�   rK   s    €€r0   rž   z%ARRAY.bind_processor.<locals>.process°  s2   ø€ ð ˆ}Ø�à×1Ò1Ø˜9 d¤oµtñô ð r2   )r˜   r£   r+   r¤   )rJ   rŸ   Úbind_processor)rK   rŽ   rž   r�   s   `  @r0   r¨   zARRAY.bind_processor©  sX   øø€ ð ”N×/Ò/°Ñ8Ô8×GÒGØñ
ô 
ˆ	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð ˆr2   ÚcoltypeÚobjectú*_ResultProcessorType[Sequence[typing_Any]]c                óÎ   ‡ ‡‡‡‡— ‰ j                              |¦  «                             ||¦  «        Šdˆˆ fd„}‰ j        r#|Št	          j        d¦  «        Šdˆfd	„Šdˆˆfd
„}|S )Nr˜   r™   r+   r£   c                ól   •— | €| S ‰                      | ‰‰j        ‰j        rt          nt          ¦  «        S rO   )r›   rB   rv   Útupler¦   r§   s    €€r0   rž   z'ARRAY.result_processor.<locals>.processÃ  s@   ø€ ð ˆ}Ø�à×1Ò1ØØØ”OØ!œ]Ð4•E�Eµñ	ô ð r2   z^{(.*)}$r“   úSequence[Optional[str]]c                ór   •— ‰                      | ¦  «                             d¦  «        }t          |¦  «        S )Nr   )ÚmatchÚgroupÚ_split_enum_values)r˜   rœ   Úpatterns     €r0   Úhandle_raw_stringz1ARRAY.result_processor.<locals>.handle_raw_stringÔ  s0   ø€ ØŸš eÑ,Ô,×2Ò2°1Ñ5Ô5�Ý)¨%Ñ0Ô0Ð0r2   c                ób   •— | €| S  ‰t          | t          ¦  «        r ‰| ¦  «        n| ¦  «        S rO   )rH   r“   )r˜   rµ   Úsuper_rps    €€r0   rž   z'ARRAY.result_processor.<locals>.processØ  sK   ø€ ð �=Ø �Lð  �xå! %­Ñ-Ô-ðÐ%Ð% eÑ,Ô,Ð,àñô ð r2   )r˜   r™   r+   r£   )r˜   r“   r+   r¯   )rJ   rŸ   Úresult_processorr�   ÚreÚcompile)rK   rŽ   r©   rž   rµ   r�   r´   r·   s   `   @@@@r0   r¸   zARRAY.result_processor¼  s¿   øøøøø€ ð ”N×/Ò/°Ñ8Ô8×IÒIØ�Wñ
ô 
ˆ	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð Ô$ð 	ØˆHÝ”j Ñ-Ô-ˆGð1ð 1ð 1ð 1ð 1ð 1ðð ð ð ð ð ð ð ˆr2   )FNF)rJ   ru   rv   rV   rB   rw   rx   rV   )r+   rV   )rŽ   r   r+   r�   )rŽ   r   r+   r¡   )rŽ   r   r©   rª   r+   r«   )ri   rj   rk   rl   rD   rF   rI   r‰   r%   Úcomparator_factoryr   Úmemoized_propertyr�   r    r¨   r¸   rP   r2   r0   rI   rI   î   sé   € € € € € ðEð EðT Ø$(Ø"ð1)ð 1)ð 1)ð 1)ð 1)ðf!Nð !Nð !Nð !Nð !N�X”^Ô.¨sÔ3ñ !Nô !Nð !NðF $Ðà	Ôð
ð 
ð 
ñ Ôð
ðð ð ð ð(ð ð ð ð&*ð *ð *ð *ð *ð *r2   rI   Úarray_stringr“   r¯   c                ó¸  — d| vr#d„ | r|                       d¦  «        ng D ¦   «         S |                      dd¦  «        }|                     dd¦  «        }g }t          j         d|¦  «        }d	}|D ]j}|dk    r| }Œ|r*|                     |                     dd¦  «        ¦  «         Œ8|                     d
„ t          j        d|¦  «        D ¦   «         ¦  «         Œk|S )Nú"c                ó"   — g | ]}|d k    r|nd‘ŒS ©ÚNULLNrP   ©r^   Úrs     r0   r`   z&_split_enum_values.<locals>.<listcomp>ì  s4   € ð 
ð 
ð 
àð �f’�ˆAˆA $ð
ð 
ð 
r2   ú,z\"z_$ESC_QUOTE$_z\\ú\z(")Fc                ó"   — g | ]}|d k    r|nd‘ŒS rÁ   rP   rÃ   s     r0   r`   z&_split_enum_values.<locals>.<listcomp>  s4   € ð ð ð àð ˜fš˜�A�A¨$ðð ð r2   z([^\s,]+),?)ÚsplitÚreplacer¹   ÚappendÚextendÚfindall)r½   ÚtextÚresultÚ	on_quotesÚ	in_quotesÚtoks         r0   r³   r³   é  s#  € Ø
�,ÐÐð
ð 
à1=ÐE�l×(Ò(¨Ñ-Ô-Ð-À2ð
ñ 
ô 
ð 	
ð ×Ò  Ñ7Ô7€DØ�<Š<˜˜tÑ$Ô$€DØ€FÝ”˜ Ñ&Ô&€IØ€IØð ð ˆØ�#Š:ˆ:Ø%˜ˆIˆIØð 		Ø�MŠM˜#Ÿ+š+ o°sÑ;Ô;Ñ<Ô<Ð<Ð<ð �MŠMðð åœZ¨¸Ñ<Ô<ðñ ô ñô ð ð ð €Mr2   )r&   r'   r(   r)   r*   r   r+   r,   )r½   r“   r+   r¯   )6Ú
__future__r   r¹   Útypingr   r'   r   r   r   r   r	   r
   r   r   r   r   Ú r   rF   r   Úsqlr   Úsql.visitorsr   Úengine.interfacesr   Úsql._typingr   r   Úsql.elementsr   r   Úsql.expressionr   Úsql.operatorsr   Úsql.selectabler   Úsql.type_apir   r   r   r    r!   Úutil.typingr"   r#   r%   Úeqr5   ÚExpressionClauseListr7   rI   r³   rP   r2   r0   ú<module>rá      s1  ðð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -àð $Ø,Ð,Ð,Ð,Ð,Ð,Ø8Ð8Ð8Ð8Ð8Ð8Ø2Ð2Ð2Ð2Ð2Ð2Ø-Ð-Ð-Ð-Ð-Ð-Ø(Ð(Ð(Ð(Ð(Ð(Ø/Ð/Ð/Ð/Ð/Ð/Ø-Ð-Ð-Ð-Ð-Ð-Ø1Ð1Ð1Ð1Ð1Ð1Ø2Ð2Ð2Ð2Ð2Ð2Ø5Ð5Ð5Ð5Ð5Ð5Ø4Ð4Ð4Ð4Ð4Ð4Ø*Ð*Ð*Ð*Ð*Ð*Ø6Ð6Ð6Ð6Ð6Ð6Ø#Ð#Ð#Ð#Ð#Ð#ð €WˆT˜Ð$Ñ$Ô$€Ø€gˆe˜:Ð&Ñ&Ô&€ð 'œ\ð
(ð 
(ð 
(ð 
(ð 
(ð  'œ\ð
(ð 
(ð 
(ð 
(ð 
(ð_ð _ð _ð _ð _ˆJÔ+¨BÔ/ñ _ô _ð _ðDxð xð xð xð xˆHŒN˜2Ôñ xô xð xðvð ð ð ð ð r2   