§
    ZøÁióu  ã                  óô  — U d dl mZ d dl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 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rxd 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/m0Z0 d d*l/m1Z1 d d+l2m3Z3 d d,l2m4Z4 d d-l2m5Z5 d d.l2m6Z6 d d/l7m8Z8 d d0l9m:Z: dd1lm;Z; dd2l<m=Z= dd3l>m?Z? dd4l>m@Z@  ejA        eB¦  «        ZC G d5„ d6eD¦  «        ZEi ZFd7eGd8<    G d9„ d:eE¬;¦  «        ZH G d<„ d=e¦  «        ZIdFdE„ZJdS )Gé    )ÚannotationsN)ÚAny)ÚCallable)ÚDict)ÚIterable)ÚList)ÚMapping)Ú
NamedTuple)ÚOptional)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚUnion)Úcast)ÚColumn)ÚMetaData)ÚPrimaryKeyConstraint©Úschema)ÚString)ÚTable)Útexté   )Ú_autogen)Úbase)Ú_constraint_sig)ÚComparisonResulté   )Úutil)Úsqla_compat)ÚLiteral)ÚTextIO)Ú
Connection)ÚDialect)ÚCursorResult)Ú	Inspector)ÚClauseElement)Ú
Executable)ÚColumnElement)Úquoted_name)Ú
Constraint)ÚForeignKeyConstraint)ÚIndex)ÚUniqueConstraint)ÚTableClause)Ú
TypeEngine)Ú_ServerDefault)ÚAutogenContext)ÚApplyBatchImpl)ÚBatchOperationsImplc                  ó   — e Zd Zd	d„ZdS )
ÚImplMetaÚ	classnameÚstrÚbasesúTuple[Type[DefaultImpl]]Údict_úDict[str, Any]c                óh   — t                                | |||¦  «        }d|v r| t          |d         <   |S )NÚ__dialect__)ÚtypeÚ__init__Ú_impls)Úclsr9   r;   r=   Únewtypes        úZ/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/alembic/ddl/impl.pyrB   zImplMeta.__init__C   s:   € õ —-’-  Y°°uÑ=Ô=ˆØ˜EÐ!Ð!Ø+.�F�5˜Ô'Ñ(Øˆó    N)r9   r:   r;   r<   r=   r>   )Ú__name__Ú
__module__Ú__qualname__rB   © rG   rF   r8   r8   B   s(   € € € € € ð	ð 	ð 	ð 	ð 	ð 	rG   r8   zDict[str, Type[DefaultImpl]]rC   c                  ó*  — e Zd ZU dZdZdZdZddhfZded<   d	Z	d
ed<   dZ
ded<   d°d„Zed±d„¦   «         Zd²d"„Zd³d*„Zd´d-„Zdµd1„Zed¶d2„¦   «         Zd3d3 ej        ¦   «         fd·d=„Z	 d¸d¹d@„Z	 	 	 	 	 	 	 	 	 	 	 	 dºd»dS„Z	 d¸d¼dW„Z	 d¸d½dX„Zd¾dZ„Zd¿d\„Z	 d¸dÀd`„ZdÁda„ZdÁdb„ZdÂde„Z dÃdf„Z!dÃdg„Z"dÄdi„Z#dÂdj„Z$	 dÅdÆdp„Z%dÇds„Z&dÈdv„Z'dÉdy„Z(dÊd|„Z)d}„ Z*dËd„„Z+d…„ Z,	 dÌdÍd‰„Z-dÎd�„Z.dÏd‘„Z/d’„ Z0dÐd“„Z1dÐd”„Z2dÐd•„Z3dÑd›„Z4dœ„ Z5dÒdŸ„Z6dÓd¤„Z7dÓd¥„Z8dÔd§„Z9dÕd«„Z:d¬„ Z;dÖd¯„Z<d3S )×ÚDefaultImplaš  Provide the entrypoint for major migration operations,
    including database-specific behavioral variances.

    While individual SQL/DDL constructs already provide
    for database-specific implementations, variances here
    allow for entirely different sequences of operations
    to take place for a particular migration, such as
    SQL Server's special 'IDENTITY INSERT' step for
    bulk inserts.

    ÚdefaultFú;ÚNUMERICÚDECIMALzTuple[Set[str], ...]Útype_synonymsrK   zSequence[str]Útype_arg_extract)ÚorderÚon_nullzTuple[str, ...]Úidentity_attrs_ignoreÚdialectr&   Ú
connectionúOptional[Connection]Úas_sqlÚboolÚtransactional_ddlúOptional[bool]Úoutput_bufferúOptional[TextIO]Úcontext_optsr>   ÚreturnÚNonec                óê   — || _         || _        || _        |                     dd¦  «        | _        || _        i | _        || _        |�|| _        | j        r| j        st          j
        d¦  «        ‚d S d S )NÚliteral_bindsFz3Can't use literal_binds setting without as_sql mode)rW   rX   rZ   Úgetrd   r^   Úmemor`   r\   r!   ÚCommandError)ÚselfrW   rX   rZ   r\   r^   r`   s          rF   rB   zDefaultImpl.__init__k   s—   € ð ˆŒØ$ˆŒØˆŒØ)×-Ò-¨o¸uÑEÔEˆÔà*ˆÔØˆŒ	Ø(ˆÔØÐ(Ø%6ˆDÔ"àÔð 	Ø”;ð ÝÔ'ØIñô ð ð	ð 	ðð rG   úType[DefaultImpl]c                ó&   — t           |j                 S ©N)rC   Úname)rD   rW   s     rF   Úget_by_dialectzDefaultImpl.get_by_dialect…   s   € å�g”lÔ#Ð#rG   r   r:   c                ó„   — | j         €J ‚| j                              |dz   ¦  «         | j                              ¦   «          d S )Nz

)r^   ÚwriteÚflush)rh   r   s     rF   Ústatic_outputzDefaultImpl.static_output‰   sG   € ØÔ!Ð-Ð-Ð-ØÔ× Ò  ¨¡Ñ/Ô/Ð/ØÔ× Ò Ñ"Ô"Ð"Ð"Ð"rG   Úversion_tableÚversion_table_schemaúOptional[str]Úversion_table_pkÚkwr   r   c          
     óÐ   — t          |t          ¦   «         t          dt          d¦  «        d¬¦  «        |¬¦  «        }|r'|                     t          d|› d�¬¦  «        ¦  «         |S )a»  Generate a :class:`.Table` object which will be used as the
        structure for the Alembic version table.

        Third party dialects may override this hook to provide an alternate
        structure for this :class:`.Table`; requirements are only that it
        be named based on the ``version_table`` parameter and contains
        at least a single string-holding column named ``version_num``.

        .. versionadded:: 1.14

        Úversion_numé    F)Únullabler   Ú_pkc©rl   )r   r   r   r   Úappend_constraintr   )rh   rr   rs   ru   rv   Úvts         rF   Úversion_table_implzDefaultImpl.version_table_implŽ   s†   € õ& ØÝ‰JŒJÝ�=¥&¨¡*¤*°uÐ=Ñ=Ô=Ø'ð	
ñ 
ô 
ˆð ð 	Ø× Ò Ý$Ø!¨=Ð(>Ð(>Ð(>ðñ ô ñô ð ð ˆ	rG   Úbatch_opr6   c                ó   — dS )zÿReturn True if the given :class:`.BatchOperationsImpl`
        would need the table to be recreated and copied in order to
        proceed.

        Normally, only returns True on SQLite when operations other
        than add_column are present.

        FrK   )rh   r€   s     rF   Úrequires_recreate_in_batchz&DefaultImpl.requires_recreate_in_batch°   s	   € ð ˆurG   Ú
batch_implr5   Útablec                ó   — dS )zèperform any operations needed on a table before a new
        one is created to replace it in batch mode.

        the PG dialect uses this to drop constraints on the table
        before the new one uses those same names.

        NrK   )rh   rƒ   r„   s      rF   Úprep_table_for_batchz DefaultImpl.prep_table_for_batch½   ó   € € € rG   c                ó   — | j         S rk   )rX   ©rh   s    rF   ÚbindzDefaultImpl.bindÈ   s
   € àŒÐrG   NÚ	constructúUnion[Executable, str]Úexecution_optionsúOptional[Mapping[str, Any]]Úmultiparamsú%Optional[Sequence[Mapping[str, Any]]]ÚparamsúMapping[str, Any]úOptional[CursorResult]c                ó¨  — t          |t          ¦  «        rt          |¦  «        }| j        rÍ|€|rt	          d¦  «        ‚| j        r-t          |t          j        ¦  «        st          ddi¬¦  «        }ni }t          rt          |t          ¦  «        sJ ‚ |j        d	d| j        i|¤Ž}|                      t          |¦  «                             dd¦  «                             ¦   «         | j        z   ¦  «         d S | j        }|€J ‚|r |j        d	i |¤Ž}|r|�t	          d¦  «        ‚|r|                     ||¦  «        S |                     ||¦  «        S )
Nz&SQL parameters not allowed with as_sqlrd   T)Úcompile_kwargsrW   ú	z    z2Can't send params and multiparams at the same timerK   )Ú
isinstancer:   r   rZ   Ú	TypeErrorrd   r   Ú
DDLElementÚdictr   r)   ÚcompilerW   rq   ÚreplaceÚstripÚcommand_terminatorrX   r�   Úexecute)rh   r‹   r�   r�   r‘   Ú
compile_kwÚcompiledÚconns           rF   Ú_execzDefaultImpl._execÌ   sž  € õ �i¥Ñ%Ô%ð 	(Ý˜Y™œˆIØŒ;ð "	7ØÐ&¨&Ð&ÝÐ HÑIÔIÐIð Ô!ð  ­*Ø�6Ô,ñ+ô +ð  õ "°/À4Ð1HÐIÑIÔI�
�
à�
åð <Ý! )­]Ñ;Ô;Ð;Ð;Ð;Ø(�yÔ(ÐLÐL°´ÐLÀÐLÐLˆHØ×ÒÝ�H‘”×%Ò% d¨FÑ3Ô3×9Ò9Ñ;Ô;ØÔ)ñ*ñô ð ð �4à”?ˆDØÐ#Ð#Ð#Ø ð CØ-�tÔ-ÐBÐBÐ0AÐBÐB�àð ˜+Ð1ÝØHñô ð ð ð 7Ø—|’| I¨{Ñ;Ô;Ð;à—|’| I¨vÑ6Ô6Ð6rG   ÚsqlúOptional[dict[str, Any]]c                ó2   — |                       ||¦  «         d S rk   )r£   )rh   r¤   r�   s      rF   rŸ   zDefaultImpl.executeù   s   € ð
 	�
Š
�3Ð)Ñ*Ô*Ð*Ð*Ð*rG   Ú
table_nameÚcolumn_namerz   Úserver_defaultú%Union[_ServerDefault, Literal[False]]rl   Útype_úOptional[TypeEngine]r   ÚautoincrementÚcommentú$Optional[Union[str, Literal[False]]]Úexisting_commentÚexisting_typeÚexisting_server_defaultúOptional[_ServerDefault]Úexisting_nullableÚexisting_autoincrementc                óÆ  — |€|�t          j        dd¬¦  «         |�/|                      t          j        ||||||||
¬¦  «        ¦  «         |dur{i }t          j        ||¦  «        rt          j        }n3t          j        ||¦  «        rt          j	        }| |d<   nt          j
        }|                       ||||f|||||
dœ|¤Ž¦  «         |�/|                      t          j        ||||||||
¬¦  «        ¦  «         |	dur/|                      t          j        |||	|||||
¬¦  «        ¦  «         |�0|                      t          j        |||||||¬¦  «        ¦  «         d S d S )NzBautoincrement and existing_autoincrement only make sense for MySQLé   )Ú
stacklevel)r   r±   r²   r´   r°   FÚimpl)r   r±   r²   r´   )r!   Úwarnr£   r   ÚColumnNullabler"   Ú_server_default_is_computedÚComputedColumnDefaultÚ_server_default_is_identityÚIdentityColumnDefaultÚColumnDefaultÚ
ColumnTypeÚColumnCommentÚ
ColumnName)rh   r§   r¨   rz   r©   rl   r«   r   r­   r®   r°   r±   r²   r´   rµ   rv   Úcls_s                    rF   Úalter_columnzDefaultImpl.alter_column   s5  € ð$ Ð$Ð(>Ð(JÝŒIð,àðñ ô ð ð
 ÐØ�JŠJÝÔ#ØØØØ!Ø"/Ø,CØ&7Ø%5ð	ñ 	ô 	ñô ð ð  Ð&Ð&ØˆBõ Ô6ØÐ 7ñô ð 
*õ Ô1��ÝÔ8ØÐ 7ñô ð *õ Ô1�Ø!��6‘
�
åÔ)�Ø�JŠJØ�ØØØ"ð
ð "Ø"/Ø,CØ&7Ø%5ð
ð 
ð ð
ð 
ñô ð ð ÐØ�JŠJÝ”ØØØØ!Ø"/Ø,CØ&7Ø%5ð	ñ 	ô 	ñô ð ð ˜%ÐÐØ�JŠJÝÔ"ØØØØ!Ø"/Ø,CØ&7Ø%5ð	ñ 	ô 	ñô ð ð ÐØ�JŠJÝ”ØØØØ!Ø"/Ø,CØ&7ðñ ô ñ
ô 
ð 
ð 
ð 
ð ÐrG   ÚcolumnúColumn[Any]ú!Optional[Union[str, quoted_name]]c                óZ   — |                       t          j        |||¬¦  «        ¦  «         d S ©Nr   )r£   r   Ú	AddColumn)rh   r§   rÆ   r   s       rF   Ú
add_columnzDefaultImpl.add_columnp  s-   € ð 	�
Š
•4”> *¨f¸VÐDÑDÔDÑEÔEÐEÐEÐErG   c                óZ   — |                       t          j        |||¬¦  «        ¦  «         d S rÊ   )r£   r   Ú
DropColumn)rh   r§   rÆ   r   rv   s        rF   Údrop_columnzDefaultImpl.drop_columnx  s-   € ð 	�
Š
•4”? :¨v¸fÐEÑEÔEÑFÔFÐFÐFÐFrG   Úconstc                ó�   — |j         �|                      | ¦  «        r)|                      t          j        |¦  «        ¦  «         d S d S rk   )Ú_create_ruler£   r   ÚAddConstraint©rh   rÐ   s     rF   Úadd_constraintzDefaultImpl.add_constraint�  sI   € ØÔÐ%¨×);Ò);¸DÑ)AÔ)AÐ%Ø�JŠJ•vÔ+¨EÑ2Ô2Ñ3Ô3Ð3Ð3Ð3ð &Ð%rG   r-   c                óT   — |                       t          j        |¦  «        ¦  «         d S rk   )r£   r   ÚDropConstraintrÔ   s     rF   Údrop_constraintzDefaultImpl.drop_constraint…  s%   € Ø�
Š
•6Ô(¨Ñ/Ô/Ñ0Ô0Ð0Ð0Ð0rG   Úold_table_nameÚnew_table_nameúUnion[str, quoted_name]c                óZ   — |                       t          j        |||¬¦  «        ¦  «         d S rÊ   )r£   r   ÚRenameTable)rh   rÙ   rÚ   r   s       rF   Úrename_tablezDefaultImpl.rename_tableˆ  s9   € ð 	�
Š
ÝÔ˜^¨^ÀFÐKÑKÔKñ	
ô 	
ð 	
ð 	
ð 	
rG   c                ó  — |j                              || j        d| ¬¦  «         |                      t	          j        |fi |¤Ž¦  «         |j                              || j        d| ¬¦  «         |j        D ])}|                      t	          j        |¦  «        ¦  «         Œ*| j	        j
        o| j	        j         }|j        }|r|r|                      |¦  «         |j        D ]"}|j        }|r|r|                      |¦  «         Œ#d S ©NF)Ú
checkfirstÚ_ddl_runner)ÚdispatchÚbefore_createrX   r£   r   ÚCreateTableÚafter_createÚindexesÚCreateIndexrW   Úsupports_commentsÚinline_commentsr®   Úcreate_table_commentÚcolumnsÚcreate_column_comment)rh   r„   rv   ÚindexÚwith_commentr®   rÆ   s          rF   Úcreate_tablezDefaultImpl.create_table’  s>  € ØŒ×$Ò$Ø�4”?¨uÀ$ð 	%ñ 	
ô 	
ð 	
ð 	�
Š
•6Ô% eÐ2Ð2¨rÐ2Ð2Ñ3Ô3Ð3ØŒ×#Ò#Ø�4”?¨uÀ$ð 	$ñ 	
ô 	
ð 	
ð ”]ð 	2ð 	2ˆEØ�JŠJ•vÔ)¨%Ñ0Ô0Ñ1Ô1Ð1Ð1ð ŒLÔ*ÐO°4´<Ô3OÐ/Oð 	ð ”-ˆØð 	-�|ð 	-Ø×%Ò% eÑ,Ô,Ð,à”mð 	3ð 	3ˆFØ”nˆGØð 3˜<ð 3Ø×*Ò*¨6Ñ2Ô2Ð2øð	3ð 	3rG   c                óÜ   — |j                              || j        d| ¬¦  «         |                      t	          j        |fi |¤Ž¦  «         |j                              || j        d| ¬¦  «         d S rà   )rã   Úbefore_droprX   r£   r   Ú	DropTableÚ
after_drop)rh   r„   rv   s      rF   Ú
drop_tablezDefaultImpl.drop_table©  s‡   € ØŒ×"Ò"Ø�4”?¨uÀ$ð 	#ñ 	
ô 	
ð 	
ð 	�
Š
•6Ô# EÐ0Ð0¨RÐ0Ð0Ñ1Ô1Ð1ØŒ×!Ò!Ø�4”?¨uÀ$ð 	"ñ 	
ô 	
ð 	
ð 	
ð 	
rG   rî   r/   c                óP   — |                       t          j        |fi |¤Ž¦  «         d S rk   )r£   r   rè   ©rh   rî   rv   s      rF   Úcreate_indexzDefaultImpl.create_index²  s-   € Ø�
Š
•6Ô% eÐ2Ð2¨rÐ2Ð2Ñ3Ô3Ð3Ð3Ð3rG   c                óT   — |                       t          j        |¦  «        ¦  «         d S rk   )r£   r   ÚSetTableComment©rh   r„   s     rF   rë   z DefaultImpl.create_table_commentµ  s%   € Ø�
Š
•6Ô)¨%Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1rG   c                óT   — |                       t          j        |¦  «        ¦  «         d S rk   )r£   r   ÚDropTableCommentrû   s     rF   Údrop_table_commentzDefaultImpl.drop_table_comment¸  s%   € Ø�
Š
•6Ô*¨5Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2rG   úColumnElement[Any]c                óT   — |                       t          j        |¦  «        ¦  «         d S rk   )r£   r   ÚSetColumnComment)rh   rÆ   s     rF   rí   z!DefaultImpl.create_column_comment»  s%   € Ø�
Š
•6Ô*¨6Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3rG   c                óP   — |                       t          j        |fi |¤Ž¦  «         d S rk   )r£   r   Ú	DropIndexr÷   s      rF   Ú
drop_indexzDefaultImpl.drop_index¾  s-   € Ø�
Š
•6Ô# EÐ0Ð0¨RÐ0Ð0Ñ1Ô1Ð1Ð1Ð1rG   TúUnion[TableClause, Table]Úrowsú
List[dict]Úmultiinsertc           
     ó4  ‡— t          |t          ¦  «        st          d¦  «        ‚|r*t          |d         t          ¦  «        st          d¦  «        ‚| j        rW|D ]R}|                       t          j        ‰¦  «        j        di ˆfd„| 	                    ¦   «         D ¦   «         ¤Ž¦  «         ŒSd S |rd|r+|                      t          j        ‰¦  «        |¬¦  «         d S |D ]6}|                       t          j        ‰¦  «        j        di |¤Ž¦  «         Œ5d S d S )NzList expectedr   zList of dictionaries expectedc           	     óž   •— i | ]I\  }}|t          |t          j        ¦  «        s't          j        ||‰j        |         j        ¬ ¦  «        n|“ŒJS ))r«   )r—   r"   Ú_literal_bindparamÚcrA   )Ú.0ÚkÚvr„   s      €rF   ú
<dictcomp>z+DefaultImpl.bulk_insert.<locals>.<dictcomp>Ï  sx   ø€ ð ð ð ñ !%  1ð õ (2Ø$%¥{Ô'Eñ("ô ("ð!'¥Ô >Ø$% q°´¸´
´ð!"ñ !"ô !"ð !"ð &'ðð ð rG   )r�   rK   )
r—   Úlistr˜   rš   rZ   r£   r"   Ú_insert_inlineÚvaluesÚitems)rh   r„   r  r  Úrows    `   rF   Úbulk_insertzDefaultImpl.bulk_insertÁ  sŽ  ø€ õ ˜$¥Ñ%Ô%ð 	=Ý˜OÑ,Ô,Ð,Øð 	=�* T¨!¤W­dÑ3Ô3ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ;ð 	Øð ð �Ø—
’
Ø<•KÔ.¨uÑ5Ô5Ô<ð ð ðð ð ð ð ),¯	ª	©¬ðñ ô ðð ñô ð ð ðð ð$ ð 	Øð Ø—J’JÝ#Ô2°5Ñ9Ô9Àtð ñ ô ð ð ð ð  $ð ð ˜ØŸ
š
ØD�KÔ6°uÑ=Ô=ÔDÐKÐKÀsÐKÐKñô ð ð ð	ð 	ðð rG   r   ÚParamsc                ój  — | j         j                             |j        ¦  «                             ¦   «         }t          j        d|¦  «        }g }d }|D ]/}t          j        d|¦  «        r|}Œ|                     |¦  «         Œ0t          |d         |dd …         g i ¦  «        }|r�t          j        d|¦  «        D ]y}d|v rG| 
                    d¦  «        \  }	}
|
                     ¦   «         |j        |	                     ¦   «         <   ŒM|j                             |                     ¦   «         ¦  «         Œz|S )Nz[\w\-_]+|\(.+?\)z^\(.*\)$r   r   z[^(),]+ú=)rW   Útype_compilerÚprocessrA   ÚlowerÚreÚfindallÚmatchÚappendr  Úsplitr�   ÚkwargsÚargs)rh   rÆ   Ú
definitionÚtokensÚterm_tokensÚ
paren_termÚtokenr‘   ÚtermÚkeyÚvals              rF   Ú_tokenize_column_typez!DefaultImpl._tokenize_column_typeé  s*  € à”\Ô/×7Ò7¸¼ÑDÔD×JÒJÑLÔLˆ
õ œJÐ':¸JÑGÔGˆà!#ˆØˆ
àð 	*ð 	*ˆEÝŒx˜ UÑ+Ô+ð *Ø"�
�
à×"Ò" 5Ñ)Ô)Ð)Ð)å˜ Aœ¨°A°B°B¬¸¸RÑ@Ô@ˆàð 	5åœ
 9¨jÑ9Ô9ð 5ð 5�Ø˜$�;�;Ø#Ÿzšz¨#™œ‘H�C˜Ø14·²±´�F”M #§)¢)¡+¤+Ñ.Ð.à”K×&Ò& t§z¢z¡|¤|Ñ4Ô4Ð4Ð4àˆrG   Úinspector_paramsÚmetadata_paramsc                óX  — |j         |j         k    rdS d„ | j        D ¦   «         }d                     |j         g|j        z   ¦  «        }d                     |j         g|j        z   ¦  «        }|D ]=}||h                     |¦  «        s!|j         |j         h                     |¦  «        r dS Œ>dS )NTc                ó&   — g | ]}d „ |D ¦   «         ‘ŒS )c                ó6   — h | ]}|                      ¦   «         ’ŒS rK   )r  )r  Úts     rF   ú	<setcomp>z=DefaultImpl._column_types_match.<locals>.<listcomp>.<setcomp>  s    € Ð.Ð.Ð. 1�Q—W’W‘Y”YÐ.Ð.Ð.rG   rK   )r  Úbatchs     rF   ú
<listcomp>z3DefaultImpl._column_types_match.<locals>.<listcomp>  s'   € ÐOÐOÐO°5Ð.Ð.¨Ð.Ñ.Ô.ÐOÐOÐOrG   ú F)Útoken0rR   Újoinr%  Úissubset)rh   r-  r.  ÚsynonymsÚinspector_all_termsÚmetadata_all_termsr4  s          rF   Ú_column_types_matchzDefaultImpl._column_types_match  sã   € ð Ô" oÔ&<Ò<Ð<Ø�4àOÐO¸DÔ<NÐOÑOÔOˆØ!ŸhšhØÔ$Ð%Ð(8Ô(?Ñ?ñ
ô 
Ðð !ŸXšXØÔ#Ð$ Ô'=Ñ=ñ
ô 
Ðð ð 	ð 	ˆEØ#Ð%7Ð8×AÒAÀ%ÑHÔHð Ø Ô'ØÔ&ðM÷ Šh�u‰oŒoðð �t�tð	ð
 ˆurG   Úinspected_paramsÚmeta_paramsc                ót  — t          |j        ¦  «        t          |j        ¦  «        k    r|j        |j        k    rdS t          |j        ¦  «        t          |j        ¦  «        k    r|j        |j        k    rdS d                     |j        ¦  «                             ¦   «         }d                     |j        ¦  «                             ¦   «         }| j        D ]_}t          j        ||¦  «        }t          j        ||¦  «        }|r1|r/|                     d¦  «        |                     d¦  «        k    r dS Œ`dS )a  We want to compare column parameters. However, we only want
        to compare parameters that are set. If they both have `collation`,
        we want to make sure they are the same. However, if only one
        specifies it, dont flag it for being less specific
        Fr6  r   T)	Úlenr%  r#  r8  r  rS   r  ÚsearchÚgroup)rh   r>  r?  ÚinspÚmetaÚregÚmiÚmms           rF   Ú_column_args_matchzDefaultImpl._column_args_match'  s'  € õ �Ô"Ñ#Ô#¥sÐ+;Ô+BÑ'CÔ'CÒCÐCØÔ"Ð&6Ô&=Ò=Ð=à�5õ �Ô Ñ!Ô!¥SÐ)9Ô)>Ñ%?Ô%?Ò?Ð?ØÔ Ð$4Ô$9Ò9Ð9à�5à�xŠxÐ(Ô/Ñ0Ô0×6Ò6Ñ8Ô8ˆØ�xŠx˜Ô*Ñ+Ô+×1Ò1Ñ3Ô3ˆàÔ(ð 	ð 	ˆCÝ”˜3 Ñ%Ô%ˆBÝ”˜3 Ñ%Ô%ˆBàð �bð ˜RŸXšX a™[œ[¨B¯HªH°Q©K¬KÒ7Ð7Ø�u�uøàˆtrG   Úinspector_columnÚmetadata_columnc                óº   — |                       |¦  «        }|                       |¦  «        }|                      ||¦  «        sdS |                      ||¦  «        sdS dS )z²Returns True if there ARE differences between the types of the two
        columns. Takes impl.type_synonyms into account between retrospected
        and metadata types
        TF)r,  r=  rI  )rh   rJ  rK  r-  r.  s        rF   Úcompare_typezDefaultImpl.compare_typeH  sm   € ð  ×5Ò5Ð6FÑGÔGÐØ×4Ò4°_ÑEÔEˆà×'Ò'Ð(8¸/ÑJÔJð 	Ø�4Ø×&Ò&Ð'7¸ÑIÔIð 	Ø�4ØˆurG   c                ó   — ||k    S rk   rK   )rh   rJ  rK  Úrendered_metadata_defaultÚrendered_inspector_defaults        rF   Úcompare_server_defaultz"DefaultImpl.compare_server_defaultX  s   € ð *Ð-FÒFÐFrG   Úconn_uniquesúSet[UniqueConstraint]Úconn_indexesú
Set[Index]Úmetadata_unique_constraintsÚmetadata_indexesc                ó   — d S rk   rK   )rh   rR  rT  rV  rW  s        rF   Úcorrect_for_autogen_constraintsz+DefaultImpl.correct_for_autogen_constraintsa  s	   € ð 	ˆrG   c                ób   — |j         j        |j        urt          |d         |¦  «        |d<   d S d S )NÚexpr)rA   Ú_type_affinityr   )rh   ÚexistingÚexisting_transferÚnew_types       rF   Úcast_for_batch_migratez"DefaultImpl.cast_for_batch_migratej  sC   € ØŒ=Ô'¨xÔ/FÐFÐFÝ(,Ø! &Ô)¨8ñ)ô )Ð˜fÑ%Ð%Ð%ð GÐFrG   r[  r)   Úis_server_defaultc                ó^   — dddœ}t          |                     | j        |¬¦  «        ¦  «        S )zdRender a SQL expression that is typically a server default,
        index expression, etc.

        TF)rd   Úinclude_table)rW   r•   )r:   r›   rW   )rh   r[  ra  rv   r    s        rF   Úrender_ddl_sql_exprzDefaultImpl.render_ddl_sql_exprp  s8   € ð (,¸eÐDÐDˆ
åØ�LŠL ¤¸jˆLÑIÔIñ
ô 
ð 	
rG   Ú	inspectorr(   r   c                ó   — | j         S rk   )Úautogen_column_reflect)rh   re  s     rF   Ú_compat_autogen_column_reflectz*DefaultImpl._compat_autogen_column_reflect~  s   € ØÔ*Ð*rG   Úconn_fksúSet[ForeignKeyConstraint]Úmetadata_fksc                ó   — d S rk   rK   )rh   ri  rk  s      rF   Úcorrect_for_autogen_foreignkeysz+DefaultImpl.correct_for_autogen_foreignkeys�  s	   € ð
 	ˆrG   c                ó   — dS )zåA hook that is attached to the 'column_reflect' event for when
        a Table is reflected from the database during the autogenerate
        process.

        Dialects can elect to modify the information gathered here.

        NrK   )rh   re  r„   Úcolumn_infos       rF   rg  z"DefaultImpl.autogen_column_reflectˆ  r‡   rG   c                ó   — dS )zœA hook called when :meth:`.EnvironmentContext.run_migrations`
        is called.

        Implementations can set up per-migration-run state here.

        NrK   r‰   s    rF   Ústart_migrationszDefaultImpl.start_migrations‘  r‡   rG   c                ó@   — |                       d| j        z   ¦  «         dS )zâEmit the string ``BEGIN``, or the backend-specific
        equivalent, on the current connection context.

        This is used in offline mode and typically
        via :meth:`.EnvironmentContext.begin_transaction`.

        ÚBEGINN©rq   rž   r‰   s    rF   Ú
emit_beginzDefaultImpl.emit_begin™  s&   € ð 	×Ò˜7 TÔ%<Ñ<Ñ=Ô=Ð=Ð=Ð=rG   c                ó@   — |                       d| j        z   ¦  «         dS )zãEmit the string ``COMMIT``, or the backend-specific
        equivalent, on the current connection context.

        This is used in offline mode and typically
        via :meth:`.EnvironmentContext.begin_transaction`.

        ÚCOMMITNrt  r‰   s    rF   Úemit_commitzDefaultImpl.emit_commit£  s&   € ð 	×Ò˜8 dÔ&=Ñ=Ñ>Ô>Ð>Ð>Ð>rG   Útype_objr2   Úautogen_contextr4   úUnion[str, Literal[False]]c                ó   — dS ©NFrK   )rh   ry  rz  s      rF   Úrender_typezDefaultImpl.render_type­  s	   € ð ˆurG   c                ó˜  — t          ||t          j        ¦   «         dh¬¦  «        \  }}t          |dd ¦  «        }t          |dd ¦  «        }t	          |¦  «        t	          |¦  «        k    r|                     d¦  «         |                     | j        ¦  «         ||t	          |¦  «        pt	          |¦  «        t	          |¦  «        k    fS )NÚalways)Úskip)Ú_compare_identity_optionsr"   ÚIdentityÚgetattrr[   ÚaddÚdifference_updaterV   )rh   Úmetadata_identityÚinspector_identityÚdiffÚignoredÚmeta_alwaysÚinspector_alwayss          rF   Ú_compare_identity_defaultz%DefaultImpl._compare_identity_default²  sÖ   € õ 2ØØÝÔ Ñ"Ô"Ø�ð	
ñ 
ô 
‰ˆˆgõ Ð/°¸4Ñ@Ô@ˆÝ"Ð#5°xÀÑFÔFÐå�ÑÔ¥Ð%5Ñ 6Ô 6Ò6Ð6Ø�HŠH�XÑÔÐà×Ò˜tÔ9Ñ:Ô:Ð:ð
 àå�‰JŒJÐM�$Ð0Ñ1Ô1µTÐ:LÑ5MÔ5MÒMð
ð 	
rG   Úmetadata_indexÚreflected_indexc                ór   — t          |j        ¦  «        }t          |j        ¦  «        }||k    rd|› d|› �S d S )Nzunique=z to unique=)r[   Úunique)rh   rŽ  r�  Úconn_uniqueÚmeta_uniques        rF   Ú_compare_index_uniquez!DefaultImpl._compare_index_uniqueÎ  sJ   € õ ˜?Ô1Ñ2Ô2ˆÝ˜>Ô0Ñ1Ô1ˆØ˜+Ò%Ð%ØB˜[ÐBÐB°[ÐBÐBÐBà�4rG   Ú
constraintú_autogen._CÚoptsú_constraint_sig[_autogen._C]c                ó*   — t          j        d| |fi |¤ŽS )NT©r   Úfrom_constraint©rh   r•  r—  s      rF   Ú_create_metadata_constraint_sigz+DefaultImpl._create_metadata_constraint_sigØ  s!   € õ Ô.¨t°T¸:ÐNÐNÈÐNÐNÐNrG   c                ó*   — t          j        d| |fi |¤ŽS r}  rš  rœ  s      rF   Ú _create_reflected_constraint_sigz,DefaultImpl._create_reflected_constraint_sigÝ  s!   € õ Ô.¨u°d¸JÐOÐOÈ$ÐOÐOÐOrG   r   c                ó$  — g }|                       ||¦  «        }|r|                     |¦  «         |                      |¦  «        }|                      |¦  «        }t	          j        |¦  «        sJ ‚t	          j        |¦  «        sJ ‚||fD ])}|j        r t                               d|j	        ¦  «         Œ*|j
        |j
        k    r%|                     d|j
        › d|j
        › �¦  «         |rt          j        |¦  «        S t          j        ¦   «         S )z—Compare two indexes by comparing the signature generated by
        ``create_index_sig``.

        This method returns a ``ComparisonResult``.
        z“Generating approximate signature for index %s. The dialect implementation should either skip expression indexes or provide a custom implementation.úexpression ú to )r”  r   r�  rŸ  r   Úis_index_sigÚhas_expressionsÚlogÚwarningrÐ   Úcolumn_namesr   Ú	DifferentÚEqual)rh   rŽ  r�  ÚmsgÚ
unique_msgÚm_sigÚr_sigÚsigs           rF   Úcompare_indexeszDefaultImpl.compare_indexesâ  sB  € ð ˆØ×/Ò/Ø˜Oñ
ô 
ˆ
ð ð 	#Ø�JŠJ�zÑ"Ô"Ð"Ø×4Ò4°^ÑDÔDˆØ×5Ò5°oÑFÔFˆåÔ$ UÑ+Ô+Ð+Ð+Ð+ÝÔ$ UÑ+Ô+Ð+Ð+Ð+ð ˜%�<ð 	ð 	ˆCØÔ"ð Ý—’ð:ð ”Iñô ð øð Ô Ô!3Ò3Ð3Ø�JŠJØJ˜eÔ0ÐJÐJ°eÔ6HÐJÐJñô ð ð ð 	,Ý#Ô-¨cÑ2Ô2Ð2å#Ô)Ñ+Ô+Ð+rG   Úmetadata_constraintr0   Úreflected_constraintc                óØ   — |                       |¦  «        }|                      |¦  «        }|j        }|j        }||k    rt          j        d|› d|› �¦  «        S t          j        ¦   «         S )a  Compare two unique constraints by comparing the two signatures.

        The arguments are two tuples that contain the unique constraint and
        the signatures generated by ``create_unique_constraint_sig``.

        This method returns a ``ComparisonResult``.
        r¡  r¢  )r�  rŸ  Úunnamedr   r¨  r©  )rh   r°  r±  Úmetadata_tupÚreflected_tupÚmeta_sigÚconn_sigs          rF   Úcompare_unique_constraintz%DefaultImpl.compare_unique_constraint  sŒ   € ð ×;Ò;Øñ
ô 
ˆð ×=Ò=Ø ñ
ô 
ˆð  Ô'ˆØ Ô(ˆØ�xÒÐÝ#Ô-Ø6˜hÐ6Ð6¨HÐ6Ð6ñô ð õ $Ô)Ñ+Ô+Ð+rG   c           
     ó  — d„ |D ¦   «         }t          |¦  «        D ]i}|j        |v rŒt          j        |¦  «        }|rGt	          j        d|j        ›d| j        ›dt          j        › d�¦  «         |                     |¦  «         Œjd S )Nc                ó   — i | ]
}|j         |“ŒS rK   r|   )r  r  s     rF   r  z8DefaultImpl._skip_functional_indexes.<locals>.<dictcomp>*  s   € Ð@Ð@Ð@¨a ¤¨Ð@Ð@Ð@rG   z@autogenerate skipping metadata-specified expression-based index z
; dialect z under SQLAlchemy z6 can't reflect these indexes so they can't be compared)	r  rl   r"   Úis_expression_indexr!   rº   r@   Úsqlalchemy_versionÚdiscard)rh   rW  rT  Úconn_indexes_by_nameÚidxÚiexs         rF   Ú_skip_functional_indexesz$DefaultImpl._skip_functional_indexes)  sÏ   € Ø@Ð@°<Ð@Ñ@Ô@ÐåÐ(Ñ)Ô)ð 	.ð 	.ˆCØŒxÐ/Ð/Ð/ØÝÔ1°#Ñ6Ô6ˆCØð .Ý”	ðFà”xðFð Fà-1Ô-=ðFð Fõ #.Ô"@ðFð Fð Fñô ð ð !×(Ò(¨Ñ-Ô-Ð-øð	.ð 	.rG   Úreflected_objectÚkindc                ó.   — |                      di ¦  «        S )NÚdialect_options)re   )rh   rÂ  rÃ  s      rF   Ú adjust_reflected_dialect_optionsz,DefaultImpl.adjust_reflected_dialect_options:  s   € ð  ×#Ò#Ð$5°rÑ:Ô:Ð:rG   )rW   r&   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r>   ra   rb   )rW   r&   ra   ri   )r   r:   ra   rb   )
rr   r:   rs   rt   ru   r[   rv   r   ra   r   )r€   r6   ra   r[   )rƒ   r5   r„   r   ra   rb   )ra   rY   )
r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   ra   r“   rk   )r¤   rŒ   r�   r¥   ra   rb   )NFNNNNFNNNNN) r§   r:   r¨   r:   rz   r]   r©   rª   rl   rt   r«   r¬   r   rt   r­   r]   r®   r¯   r°   rt   r±   r¬   r²   r³   r´   r]   rµ   r]   rv   r   ra   rb   )r§   r:   rÆ   rÇ   r   rÈ   ra   rb   )r§   r:   rÆ   rÇ   r   rt   ra   rb   )rÐ   r   ra   rb   )rÐ   r-   ra   rb   )rÙ   r:   rÚ   rÛ   r   rÈ   ra   rb   )r„   r   rv   r   ra   rb   )rî   r/   rv   r   ra   rb   )r„   r   ra   rb   )rÆ   rÿ   ra   rb   )T)r„   r  r  r  r  r[   ra   rb   )rÆ   r   ra   r  )r-  r  r.  r  ra   r[   )r>  r  r?  r  ra   r[   )rJ  rÇ   rK  r   ra   r[   )
rR  rS  rT  rU  rV  rS  rW  rU  ra   rb   )F)r[  r)   ra  r[   rv   r   ra   r:   )re  r(   ra   r   )ri  rj  rk  rj  ra   rb   )ra   rb   )ry  r2   rz  r4   ra   r{  )rŽ  r/   r�  r/   ra   rt   )r•  r–  r—  r   ra   r˜  )rŽ  r/   r�  r/   ra   r   )r°  r0   r±  r0   ra   r   )rÂ  r>   rÃ  r:   ra   r>   )=rH   rI   rJ   Ú__doc__r@   r\   rž   rR   Ú__annotations__rS   rV   rB   Úclassmethodrm   rq   r   r‚   r†   ÚpropertyrŠ   r!   Úimmutabledictr£   rŸ   rÅ   rÌ   rÏ   rÕ   rØ   rÞ   rð   rõ   rø   rë   rþ   rí   r  r  r,  r=  rI  rM  rQ  rY  r`  rd  rh  rm  rg  rq  ru  rx  r~  r�  r”  r�  rŸ  r¯  r¸  rÁ  rÆ  rK   rG   rF   rM   rM   R   s®  € € € € € € ð
ð 
ð €KàÐØÐØ,5°yÐ+AÐ*C€MÐCÐCÐCÑCØ&(ÐÐ(Ð(Ð(Ñ(ð
 .BÐÐAÐAÐAÑAðð ð ð ð4 ð$ð $ð $ñ „[ð$ð#ð #ð #ð #ð
 ð  ð  ð  ðDð ð ð ð	ð 	ð 	ð 	ð ðð ð ñ „Xðð :>Ø=AØ$6 DÔ$6Ñ$8Ô$8ð+7ð +7ð +7ð +7ð +7ð` 7;ð+ð +ð +ð +ð +ð $(Ø@EØ"Ø&*Ø $Ø(,Ø8=Ø*.Ø.2Ø<@Ø,0Ø15ðnð nð nð nð nðh 59ð	Fð Fð Fð Fð Fð !%ð	Gð Gð Gð Gð Gð4ð 4ð 4ð 4ð1ð 1ð 1ð 1ð 59ð	
ð 
ð 
ð 
ð 
ð3ð 3ð 3ð 3ð.
ð 
ð 
ð 
ð4ð 4ð 4ð 4ð2ð 2ð 2ð 2ð3ð 3ð 3ð 3ð4ð 4ð 4ð 4ð2ð 2ð 2ð 2ð !ð	&ð &ð &ð &ð &ðP&ð &ð &ð &ðPð ð ð ð,ð ð ð ðBð ð ð ð Gð Gð Gðð ð ð ðð ð ð >Cð
ð 
ð 
ð 
ð 
ð+ð +ð +ð +ðð ð ð ðð ð ðð ð ð ð>ð >ð >ð >ð?ð ?ð ?ð ?ðð ð ð ð

ð 
ð 
ð8ð ð ð ðOð Oð Oð Oð
Pð Pð Pð Pð
),ð ),ð ),ð ),ðV,ð ,ð ,ð ,ð8.ð .ð .ð";ð ;ð ;ð ;ð ;ð ;rG   rM   )Ú	metaclassc                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )	r  r:   r7  z	List[str]r%  r#  zDict[str, str]r"  N)rH   rI   rJ   rÈ  rK   rG   rF   r  r  @  s<   € € € € € € Ø€K€K�KØÐÐÑØ€O€O�OØÐÐÑÐÐrG   r  Úmetadata_ioú-Union[schema.Identity, schema.Sequence, None]Úinspector_ioÚ
default_ioú'Union[schema.Identity, schema.Sequence]r�  úSet[str]c           
     óÀ  ‡‡‡— t          j        | ¦  «        }t          j        |¦  «        }t          ¦   «         Št          ¦   «         Šd	ˆˆˆfd„} |||t          j        |¦  «        t          |¦  «                             |¦  «        ¦  «         t           j        r@ |t          | di ¦  «        t          |di ¦  «        |j        t          |di ¦  «        ¦  «         ‰‰fS )
NÚ	meta_dictr’   Ú	insp_dictÚdefault_dictÚattrsúIterable[str]c                ó>  •— t          |¦  «                             ‰
¦  «        D ]x}|                      |¦  «        }|                     |¦  «        }||k    rF|                     |¦  «        }||k    r‰	                     |¦  «         Œc‰                     |¦  «         Œyd S rk   )ÚsetÚ
differencere   r…  )rÕ  rÖ  r×  rØ  ÚattrÚ
meta_valueÚ
insp_valueÚdefault_valuer‰  Úignored_attrr�  s           €€€rF   Úcheck_dictsz._compare_identity_options.<locals>.check_dictsV  s¤   ø€ õ ˜‘J”J×)Ò)¨$Ñ/Ô/ð 	#ð 	#ˆDØ"Ÿš tÑ,Ô,ˆJØ"Ÿš tÑ,Ô,ˆJØ˜ZÒ'Ð'Ø ,× 0Ò 0°Ñ 6Ô 6�Ø Ò.Ð.Ø ×$Ò$ TÑ*Ô*Ð*Ð*à—H’H˜T‘N”N�Nøð	#ð 	#rG   Údialect_kwargs)rÕ  r’   rÖ  r’   r×  r’   rØ  rÙ  )r"   Ú_get_identity_options_dictrÛ  ÚunionÚidentity_has_dialect_kwargsr„  rã  )	rÎ  rÐ  rÑ  r�  Úmeta_dÚinsp_drâ  r‰  rá  s	      `   @@rF   r‚  r‚  G  s  øøø€ õ Ô3°KÑ@Ô@€FÝÔ3°LÑAÔA€Få‰5Œ5€DÝ‘5”5€Lð#ð #ð #ð #ð #ð #ð #ð #ð  €KØØÝÔ.¨zÑ:Ô:ÝˆF‰Œ×Ò˜&Ñ!Ô!ñ	ô ð õ Ô.ð 
ð 	ˆÝ�KÐ!1°2Ñ6Ô6Ý�LÐ"2°BÑ7Ô7ØÔ%Ý�LÐ"2°BÑ7Ô7ñ		
ô 	
ð 	
ð �ÐÐrG   )rÎ  rÏ  rÐ  rÏ  rÑ  rÒ  r�  rÓ  )KÚ
__future__r   Úloggingr  Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Ú
sqlalchemyr   r   r   r   r   r   r   r   Ú r   r   r   r   r!   r"   r#   r$   Úsqlalchemy.enginer%   r&   Úsqlalchemy.engine.cursorr'   Úsqlalchemy.engine.reflectionr(   Úsqlalchemy.sqlr)   r*   Úsqlalchemy.sql.elementsr+   r,   Úsqlalchemy.sql.schemar-   r.   r/   r0   Úsqlalchemy.sql.selectabler1   Úsqlalchemy.sql.type_apir2   r3   Úautogenerate.apir4   Úoperations.batchr5   r6   Ú	getLoggerrH   r¥  rA   r8   rC   rÈ  rM   r  r‚  rK   rG   rF   ú<module>rù     sf  ðð #Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àð 7ØÐÐÐÐÐØÐÐÐÐÐà,Ð,Ð,Ð,Ð,Ð,Ø)Ð)Ð)Ð)Ð)Ð)Ø5Ð5Ð5Ð5Ð5Ð5Ø6Ð6Ð6Ð6Ð6Ð6Ø,Ð,Ð,Ð,Ð,Ð,Ø)Ð)Ð)Ð)Ð)Ð)Ø5Ð5Ð5Ð5Ð5Ð5Ø3Ð3Ð3Ð3Ð3Ð3Ø0Ð0Ð0Ð0Ð0Ð0Ø:Ð:Ð:Ð:Ð:Ð:Ø+Ð+Ð+Ð+Ð+Ð+Ø6Ð6Ð6Ð6Ð6Ð6Ø5Ð5Ð5Ð5Ð5Ð5Ø2Ð2Ð2Ð2Ð2Ð2à$Ð$Ð$Ð$Ð$Ð$Ø1Ð1Ð1Ð1Ð1Ð1Ø1Ð1Ð1Ð1Ð1Ð1Ø6Ð6Ð6Ð6Ð6Ð6à€gÔ˜Ñ!Ô!€ð
ð 
ð 
ð 
ð 
ˆtñ 
ô 
ð 
ð (*€Ð )Ð )Ð )Ñ )ðk;ð k;ð k;ð k;ð k;˜Hð k;ñ k;ô k;ð k;ð\ð ð ð ð ˆZñ ô ð ð/ð /ð /ð /ð /ð /rG   