§
    äóÉjxz  ã                  óø  — U d dl mZ d dlmZ d dlmZ 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 er¤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/m0Z0 d d(l1m2Z2 d d)l1m3Z3 d d*l1m4Z4 d d+l1m5Z5 d d,l1m6Z6 d d-l7m8Z8 d d.l9m:Z: dd/lm;Z; dd0l<m=Z= dd1l>m?Z? dd2l>m@Z@ e%e&z  e(z  e'z  e)z  ZA ejB        eC¦  «        ZD G d3„ d4eE¦  «        ZFi ZGd5eHd6<    G d7„ d8eF¬9¦  «        ZI G d:„ d;e¦  «        ZJdDdC„ZKdS )Eé    )Úannotations)ÚIterable)ÚMapping)ÚSequenceN)ÚAny)ÚCallable)Ú
NamedTuple)ÚTYPE_CHECKING)Úcast)ÚColumn)ÚMetaData)ÚPrimaryKeyConstraint©Úschema)ÚString)ÚTable)Útexté   )Ú_autogen)Úbase)Ú_constraint_sig)ÚComparisonResulté   )Úutil)Úsqla_compat)ÚLiteral)ÚTextIO)Ú
Connection)ÚDialect)ÚCursorResult)ÚReflectedCheckConstraint)ÚReflectedForeignKeyConstraint)ÚReflectedIndex)ÚReflectedPrimaryKeyConstraint)ÚReflectedUniqueConstraint)Ú	Inspector)ÚClauseElement)Ú
Executable)Úquoted_name)ÚCheckConstraint)Ú
Constraint)ÚForeignKeyConstraint)ÚIndex)ÚUniqueConstraint)ÚTableClause)Ú
TypeEngine)Ú_ServerDefaultArgument)Ú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)Úclsr7   r9   r;   Únewtypes        ús/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/alembic/ddl/impl.pyr@   zImplMeta.__init__H   s:   € õ —-’-  Y°°uÑ=Ô=ˆØ˜EÐ!Ð!Ø+.�F�5˜Ô'Ñ(Øˆó    N)r7   r8   r9   r:   r;   r<   )Ú__name__Ú
__module__Ú__qualname__r@   © rE   rD   r6   r6   G   s(   € € € € € ð	ð 	ð 	ð 	ð 	ð 	rE   r6   zdict[str, type[DefaultImpl]]rA   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d3dd3d3d3d3dd3d3d3d3d3dAœdÂdS„Zd3d3d3d3dTœdÃd[„Zd3d3d\œdÄd^„ZdÅd`„ZdÆdb„Z	 dÀdÇdf„ZdÈdg„ZdÈdh„ZdÉdk„Z dÊdl„Z!dÊdm„Z"dËdn„Z#dÉdo„Z$	 dÌdÍdu„Z%dÎdx„Z&dÏd{„Z'dÐd~„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Ý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_synonymsrI   zSequence[str]Útype_arg_extract)ÚorderÚon_nullztuple[str, ...]Úidentity_attrs_ignoreÚdialectr   Ú
connectionúConnection | NoneÚas_sqlÚboolÚtransactional_ddlúbool | NoneÚoutput_bufferúTextIO | NoneÚ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)rU   rV   rX   Úgetrb   r\   Úmemor^   rZ   r   ÚCommandError)ÚselfrU   rV   rX   rZ   r\   r^   s          rD   r@   zDefaultImpl.__init__p   s—   € ð ˆŒØ$ˆŒØˆŒØ)×-Ò-¨o¸uÑEÔEˆÔà*ˆÔØˆŒ	Ø(ˆÔØÐ(Ø%6ˆDÔ"àÔð 	Ø”;ð ÝÔ'ØIñô ð ð	ð 	ðð rE   útype[DefaultImpl]c                ó&   — t           |j                 S ©N)rA   Úname)rB   rU   s     rD   Úget_by_dialectzDefaultImpl.get_by_dialectŠ   s   € å�g”lÔ#Ð#rE   r   r8   c                ó„   — | j         €J ‚| j                              |dz   ¦  «         | j                              ¦   «          d S )Nz

)r\   ÚwriteÚflush)rf   r   s     rD   Ústatic_outputzDefaultImpl.static_outputŽ   sG   € ØÔ!Ð-Ð-Ð-ØÔ× Ò  ¨¡Ñ/Ô/Ð/ØÔ× Ò Ñ"Ô"Ð"Ð"Ð"rE   Úversion_tableÚversion_table_schemaú
str | NoneÚ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©rj   )r   r   r   r   Úappend_constraintr   )rf   rp   rq   rs   rt   Úvts         rD   Úversion_table_implzDefaultImpl.version_table_impl“   s†   € õ& ØÝ‰JŒJÝ�=¥&¨¡*¤*°uÐ=Ñ=Ô=Ø'ð	
ñ 
ô 
ˆð ð 	Ø× Ò Ý$Ø!¨=Ð(>Ð(>Ð(>ðñ ô ñô ð ð ˆ	rE   Úbatch_opr4   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.

        FrI   )rf   r~   s     rD   Úrequires_recreate_in_batchz&DefaultImpl.requires_recreate_in_batchµ   s	   € ð ˆurE   Ú
batch_implr3   Ú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.

        NrI   )rf   r�   r‚   s      rD   Úprep_table_for_batchz DefaultImpl.prep_table_for_batchÂ   ó   € € € rE   c                ó   — | j         S ri   )rV   ©rf   s    rD   ÚbindzDefaultImpl.bindÍ   s
   € àŒÐrE   NÚ	constructúExecutable | strÚexecution_optionsúMapping[str, Any] | NoneÚmultiparamsú"Sequence[Mapping[str, Any]] | NoneÚparamsúMapping[str, Any]úCursorResult | Nonec                ó¨  — 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_sqlrb   T)Úcompile_kwargsrU   ú	z    z2Can't send params and multiparams at the same timerI   )Ú
isinstancer8   r   rX   Ú	TypeErrorrb   r   Ú
DDLElementÚdictr
   r'   ÚcompilerU   ro   ÚreplaceÚstripÚcommand_terminatorrV   r‹   Úexecute)rf   r‰   r‹   r�   r�   Ú
compile_kwÚcompiledÚconns           rD   Ú_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Ð6rE   Úsqlúdict[str, Any] | Nonec                ó2   — |                       ||¦  «         d S ri   )r¡   )rf   r¢   r‹   s      rD   r�   zDefaultImpl.executeþ   s   € ð
 	�
Š
�3Ð)Ñ*Ô*Ð*Ð*Ð*rE   )rx   Úserver_defaultrj   Útype_r   ÚautoincrementÚcommentÚexisting_commentÚexisting_typeÚexisting_server_defaultÚexisting_nullableÚexisting_autoincrementÚ
table_nameÚcolumn_namerx   r¥   r1   rj   r¦   úTypeEngine | Noner   r§   r¨   ústr | Literal[False] | Noner©   rª   r«   r¬   r­   c               óÆ  — |€|�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)rf   r®   r¯   rx   r¥   rj   r¦   r   r§   r¨   r©   rª   r«   r¬   r­   rt   Úcls_s                    rD   Ú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ðñ ô ñ
ô 
ð 
ð 
ð 
ð ÐrE   ©r   Úif_not_existsÚinline_referencesÚinline_primary_keyÚcolumnúColumn[Any]ústr | quoted_name | NonerÃ   rÄ   rÅ   c          
     ó`   — |                       t          j        ||||||¬¦  «        ¦  «         d S )NrÂ   )r¡   r   Ú	AddColumn)rf   r®   rÆ   r   rÃ   rÄ   rÅ   s          rD   Ú
add_columnzDefaultImpl.add_columnv  sJ   € ð 	�
Š
ÝŒNØØØØ+Ø"3Ø#5ðñ ô ñ		
ô 		
ð 		
ð 		
ð 		
rE   ©r   Ú	if_existsrÍ   c               ó\   — |                       t          j        ||||¬¦  «        ¦  «         d S )NrÌ   )r¡   r   Ú
DropColumn)rf   r®   rÆ   r   rÍ   rt   s         rD   Údrop_columnzDefaultImpl.drop_column‹  sA   € ð 	�
Š
ÝŒOØ˜F¨6¸Yðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
rE   Úconstc                óÐ   — |j         �|                      | ¦  «        rIt          j        r|                     dd¦  «         |                      t          j        |fi |¤Ž¦  «         d S d S )NÚisolate_from_tableT)Ú_create_ruler   Úsqla_2_1Ú
setdefaultr¡   r   ÚAddConstraint©rf   rÑ   rt   s      rD   Úadd_constraintzDefaultImpl.add_constraintš  sq   € ØÔÐ%¨×);Ò);¸DÑ)AÔ)AÐ%ÝÔ#ð :à—’Ð2°DÑ9Ô9Ð9Ø�JŠJ•vÔ+¨EÐ8Ð8°RÐ8Ð8Ñ9Ô9Ð9Ð9Ð9ð	 &Ð%rE   r+   c                óP   — |                       t          j        |fi |¤Ž¦  «         d S ri   )r¡   r   ÚDropConstraintrØ   s      rD   Údrop_constraintzDefaultImpl.drop_constraint¡  s-   € Ø�
Š
•6Ô(¨Ð5Ð5°"Ð5Ð5Ñ6Ô6Ð6Ð6Ð6rE   Úold_table_nameÚnew_table_nameústr | quoted_namec                óZ   — |                       t          j        |||¬¦  «        ¦  «         d S )Nr   )r¡   r   ÚRenameTable)rf   rÝ   rÞ   r   s       rD   Úrename_tablezDefaultImpl.rename_table¤  s9   € ð 	�
Š
ÝÔ˜^¨^ÀFÐKÑKÔKñ	
ô 	
ð 	
ð 	
ð 	
rE   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_createrV   r¡   r   ÚCreateTableÚafter_createÚindexesÚCreateIndexrU   Úsupports_commentsÚinline_commentsr¨   Úcreate_table_commentÚcolumnsÚcreate_column_comment)rf   r‚   rt   ÚindexÚwith_commentr¨   rÆ   s          rD   Ú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ð 	3rE   c                óÜ   — |j                              || j        d| ¬¦  «         |                      t	          j        |fi |¤Ž¦  «         |j                              || j        d| ¬¦  «         d S rä   )rç   Úbefore_droprV   r¡   r   Ú	DropTableÚ
after_drop)rf   r‚   rt   s      rD   Ú
drop_tablezDefaultImpl.drop_tableÅ  s‡   € ØŒ×"Ò"Ø�4”?¨uÀ$ð 	#ñ 	
ô 	
ð 	
ð 	�
Š
•6Ô# EÐ0Ð0¨RÐ0Ð0Ñ1Ô1Ð1ØŒ×!Ò!Ø�4”?¨uÀ$ð 	"ñ 	
ô 	
ð 	
ð 	
ð 	
rE   rò   r-   c                óP   — |                       t          j        |fi |¤Ž¦  «         d S ri   )r¡   r   rì   ©rf   rò   rt   s      rD   Úcreate_indexzDefaultImpl.create_indexÎ  s-   € Ø�
Š
•6Ô% eÐ2Ð2¨rÐ2Ð2Ñ3Ô3Ð3Ð3Ð3rE   c                óT   — |                       t          j        |¦  «        ¦  «         d S ri   )r¡   r   ÚSetTableComment©rf   r‚   s     rD   rï   z DefaultImpl.create_table_commentÑ  s%   € Ø�
Š
•6Ô)¨%Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1rE   c                óT   — |                       t          j        |¦  «        ¦  «         d S ri   )r¡   r   ÚDropTableCommentrÿ   s     rD   Údrop_table_commentzDefaultImpl.drop_table_commentÔ  s%   € Ø�
Š
•6Ô*¨5Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2rE   c                óT   — |                       t          j        |¦  «        ¦  «         d S ri   )r¡   r   ÚSetColumnComment)rf   rÆ   s     rD   rñ   z!DefaultImpl.create_column_comment×  s%   € Ø�
Š
•6Ô*¨6Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3rE   c                óP   — |                       t          j        |fi |¤Ž¦  «         d S ri   )r¡   r   Ú	DropIndexrû   s      rD   Ú
drop_indexzDefaultImpl.drop_indexÚ  s-   € Ø�
Š
•6Ô# EÐ0Ð0¨RÐ0Ð0Ñ1Ô1Ð1Ð1Ð1rE   TúTableClause | TableÚrowsú
list[dict]Úmultiinsertc           
     ó   ‡— t          |t          ¦  «        st          d¦  «        ‚|r*t          |d         t          ¦  «        st          d¦  «        ‚| j        ri|D ]d}|                       ‰                     ¦   «                              ¦   «         j        di ˆfd„| 	                    ¦   «         D ¦   «         ¤Ž¦  «         Œed S |rˆ|r=|                      ‰                     ¦   «                              ¦   «         |¬¦  «         d S |D ]H}|                       ‰                     ¦   «                              ¦   «         j        di |¤Ž¦  «         ŒGd 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Úcr?   )Ú.0ÚkÚvr‚   s      €rD   ú
<dictcomp>z+DefaultImpl.bulk_insert.<locals>.<dictcomp>í  sx   ø€ ð ð ð ñ !%  1ð õ (2Ø$%¥{Ô'Eñ("ô ("ð!'¥Ô >Ø$% q°´¸´
´ð!"ñ !"ô !"ð !"ð &'ðð ð rE   )r�   rI   )
r•   Úlistr–   r˜   rX   r¡   ÚinsertÚinlineÚvaluesÚitems)rf   r‚   r	  r  Úrows    `   rD   Úbulk_insertzDefaultImpl.bulk_insertÝ  s™  ø€ õ ˜$¥Ñ%Ô%ð 	=Ý˜OÑ,Ô,Ð,Øð 	=�* T¨!¤W­dÑ3Ô3ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ;ð 	JØð ð �Ø—
’
ð�E—L’L‘N”Nß’V‘X”XÜðð ðð ð ð ð ),¯	ª	©¬ðñ ô ðð ñô ð ð ðð ð( ð JØð JØ—J’J˜uŸ|š|™~œ~×4Ò4Ñ6Ô6ÀD�JÑIÔIÐIÐIÐIà#ð Jð J˜ØŸ
š
Ð#A 5§<¢<¡>¤>×#8Ò#8Ñ#:Ô#:Ô#AÐ#HÐ#HÀCÐ#HÐ#HÑIÔIÐIÐIðJð JðJð JrE   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[^(),]+ú=)rU   Útype_compilerÚprocessr?   ÚlowerÚreÚfindallÚmatchÚappendr  Úsplitr›   ÚkwargsÚargs)rf   rÆ   Ú
definitionÚtokensÚterm_tokensÚ
paren_termÚtokenr�   ÚtermÚkeyÚvals              rD   Ú_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àˆrE   Ú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 rI   )r   )r  Úts     rD   ú	<setcomp>z=DefaultImpl._column_types_match.<locals>.<listcomp>.<setcomp>1  s    € Ð.Ð.Ð. 1�Q—W’W‘Y”YÐ.Ð.Ð.rE   rI   )r  Úbatchs     rD   ú
<listcomp>z3DefaultImpl._column_types_match.<locals>.<listcomp>1  s'   € ÐOÐOÐO°5Ð.Ð.¨Ð.Ñ.Ô.ÐOÐOÐOrE   ú F)Útoken0rP   Újoinr)  Úissubset)rf   r1  r2  ÚsynonymsÚinspector_all_termsÚmetadata_all_termsr8  s          rD   Ú_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ð	ð
 ˆurE   Ú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
        Fr:  r   T)	Úlenr)  r'  r<  r   rQ   r!  ÚsearchÚgroup)rf   rB  rC  ÚinspÚmetaÚregÚmiÚmms           rD   Ú_column_args_matchzDefaultImpl._column_args_matchA  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øàˆtrE   Ú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)r0  rA  rM  )rf   rN  rO  r1  r2  s        rD   Úcompare_typezDefaultImpl.compare_typeb  sm   € ð  ×5Ò5Ð6FÑGÔGÐØ×4Ò4°_ÑEÔEˆà×'Ò'Ð(8¸/ÑJÔJð 	Ø�4Ø×&Ò&Ð'7¸ÑIÔIð 	Ø�4ØˆurE   c                ó   — ||k    S ri   rI   )rf   rN  rO  Úrendered_metadata_defaultÚrendered_inspector_defaults        rD   Úcompare_server_defaultz"DefaultImpl.compare_server_defaultr  s   € ð *Ð-FÒFÐFrE   Úconn_uniquesúset[UniqueConstraint]Úconn_indexesú
set[Index]Úmetadata_unique_constraintsÚmetadata_indexesc                ó   — d S ri   rI   )rf   rV  rX  rZ  r[  s        rD   Úcorrect_for_autogen_constraintsz+DefaultImpl.correct_for_autogen_constraints{  s	   € ð 	ˆrE   c                ób   — |j         j        |j        urt          |d         |¦  «        |d<   d S d S )NÚexpr)r?   Ú_type_affinityr   )rf   ÚexistingÚexisting_transferÚnew_types       rD   Úcast_for_batch_migratez"DefaultImpl.cast_for_batch_migrate„  sC   € ØŒ=Ô'¨xÔ/FÐFÐFÝ(,Ø! &Ô)¨8ñ)ô )Ð˜fÑ%Ð%Ð%ð GÐFrE   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)rb   Úinclude_table)rU   r“   )r8   r™   rU   )rf   r_  re  rt   rž   s        rD   Úrender_ddl_sql_exprzDefaultImpl.render_ddl_sql_exprŠ  s8   € ð (,¸eÐDÐDˆ
åØ�LŠL ¤¸jˆLÑIÔIñ
ô 
ð 	
rE   Ú	inspectorr&   r   c                ó   — | j         S ri   )Úautogen_column_reflect)rf   ri  s     rD   Ú_compat_autogen_column_reflectz*DefaultImpl._compat_autogen_column_reflect˜  s   € ØÔ*Ð*rE   Úconn_fksúset[ForeignKeyConstraint]Úmetadata_fksc                ó   — d S ri   rI   )rf   rm  ro  s      rD   Úcorrect_for_autogen_foreignkeysz+DefaultImpl.correct_for_autogen_foreignkeys›  s	   € ð
 	ˆrE   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.

        NrI   )rf   ri  r‚   Úcolumn_infos       rD   rk  z"DefaultImpl.autogen_column_reflect¢  r…   rE   c                ó   — dS )zœA hook called when :meth:`.EnvironmentContext.run_migrations`
        is called.

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

        NrI   r‡   s    rD   Ústart_migrationszDefaultImpl.start_migrations«  r…   rE   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©ro   rœ   r‡   s    rD   Ú
emit_beginzDefaultImpl.emit_begin³  s&   € ð 	×Ò˜7 TÔ%<Ñ<Ñ=Ô=Ð=Ð=Ð=rE   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`.

        ÚCOMMITNrx  r‡   s    rD   Úemit_commitzDefaultImpl.emit_commit½  s&   € ð 	×Ò˜8 dÔ&=Ñ=Ñ>Ô>Ð>Ð>Ð>rE   Útype_objr0   Úautogen_contextr2   ústr | Literal[False]c                ó   — dS ©NFrI   )rf   r}  r~  s      rD   Úrender_typezDefaultImpl.render_typeÇ  s	   € ð ˆurE   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ÚgetattrrY   ÚaddÚdifference_updaterT   )rf   Úmetadata_identityÚinspector_identityÚdiffÚignoredÚmeta_alwaysÚinspector_alwayss          rD   Ú_compare_identity_defaultz%DefaultImpl._compare_identity_defaultÌ  sÕ   € õ 2ØØÝŒOÑÔØ�ð	
ñ 
ô 
‰ˆˆ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ð
ð 	
rE   Úmetadata_indexÚreflected_indexc                ór   — t          |j        ¦  «        }t          |j        ¦  «        }||k    rd|› d|› �S d S )Nzunique=z to unique=)rY   Úunique)rf   r’  r“  Úconn_uniqueÚmeta_uniques        rD   Ú_compare_index_uniquez!DefaultImpl._compare_index_uniqueè  sJ   € õ ˜?Ô1Ñ2Ô2ˆÝ˜>Ô0Ñ1Ô1ˆØ˜+Ò%Ð%ØB˜[ÐBÐB°[ÐBÐBÐBà�4rE   Ú
constraintú_autogen._CÚoptsú_constraint_sig[_autogen._C]c                ó*   — t          j        d| |fi |¤ŽS )NT©r   Úfrom_constraint©rf   r™  r›  s      rD   Ú_create_metadata_constraint_sigz+DefaultImpl._create_metadata_constraint_sigò  s!   € õ Ô.¨t°T¸:ÐNÐNÈÐNÐNÐNrE   c                ó*   — t          j        d| |fi |¤ŽS r�  rž  r   s      rD   Ú _create_reflected_constraint_sigz,DefaultImpl._create_reflected_constraint_sig÷  s!   € õ Ô.¨u°d¸JÐOÐOÈ$ÐOÐOÐOrE   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)rf   r’  r“  ÚmsgÚ
unique_msgÚm_sigÚr_sigÚsigs           rD   Ú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å#Ô)Ñ+Ô+Ð+rE   Úmetadata_constraintr.   Ú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­  )rf   r´  rµ  Úmetadata_tupÚreflected_tupÚmeta_sigÚconn_sigs          rD   Úcompare_unique_constraintz%DefaultImpl.compare_unique_constraint'  sŒ   € ð ×;Ò;Øñ
ô 
ˆð ×=Ò=Ø ñ
ô 
ˆð  Ô'ˆØ Ô(ˆØ�xÒÐÝ#Ô-Ø6˜hÐ6Ð6¨HÐ6Ð6ñô ð õ $Ô)Ñ+Ô+Ð+rE   r*   c                ó(   — t          j        ¦   «         S ri   )r   r­  )rf   r´  rµ  s      rD   Úcompare_check_constraintz$DefaultImpl.compare_check_constraintC  s   € õ
  Ô%Ñ'Ô'Ð'rE   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 rI   rz   )r  r  s     rD   r  z8DefaultImpl._skip_functional_indexes.<locals>.<dictcomp>K  s   € Ð@Ð@Ð@¨a ¤¨Ð@Ð@Ð@rE   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  rj   r   Úis_expression_indexr   r¶   r>   Úsqlalchemy_versionÚdiscard)rf   r[  rX  Úconn_indexes_by_nameÚidxÚiexs         rD   Ú_skip_functional_indexesz$DefaultImpl._skip_functional_indexesJ  sÏ   € Ø@Ð@°<Ð@Ñ@Ô@ÐåÐ(Ñ)Ô)ð 	.ð 	.ˆCØŒxÐ/Ð/Ð/ØÝÔ1°#Ñ6Ô6ˆCØð .Ý”	ðFà”xðFð Fà-1Ô-=ðFð Fõ #.Ô"@ðFð Fð Fñô ð ð !×(Ò(¨Ñ-Ô-Ð-øð	.ð 	.rE   Úreflected_objectÚ_ReflectedConstraintÚkindc                ó.   — |                      di ¦  «        S )NÚdialect_options)rc   )rf   rÈ  rÊ  s      rD   Ú adjust_reflected_dialect_optionsz,DefaultImpl.adjust_reflected_dialect_options[  s   € ð  ×#Ò#Ð$5°rÑ:Ô:Ð:rE   )rU   r   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r<   r_   r`   )rU   r   r_   rg   )r   r8   r_   r`   )
rp   r8   rq   rr   rs   rY   rt   r   r_   r   )r~   r4   r_   rY   )r�   r3   r‚   r   r_   r`   )r_   rW   )
r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r_   r‘   ri   )r¢   rŠ   r‹   r£   r_   r`   ) r®   r8   r¯   r8   rx   r[   r¥   r1   rj   rr   r¦   r°   r   rr   r§   r[   r¨   r±   r©   rr   rª   r°   r«   r1   r¬   r[   r­   r[   rt   r   r_   r`   )r®   r8   rÆ   rÇ   r   rÈ   rÃ   r[   rÄ   r[   rÅ   r[   r_   r`   )
r®   r8   rÆ   rÇ   r   rr   rÍ   r[   r_   r`   )rÑ   r   rt   r   r_   r`   )rÑ   r+   rt   r   r_   r`   )rÝ   r8   rÞ   rß   r   rÈ   r_   r`   )r‚   r   rt   r   r_   r`   )rò   r-   rt   r   r_   r`   )r‚   r   r_   r`   )rÆ   rÇ   r_   r`   )T)r‚   r  r	  r
  r  rY   r_   r`   )rÆ   r   r_   r  )r1  r  r2  r  r_   rY   )rB  r  rC  r  r_   rY   )rN  rÇ   rO  r   r_   rY   )
rV  rW  rX  rY  rZ  rW  r[  rY  r_   r`   )F)r_  r'   re  rY   rt   r   r_   r8   )ri  r&   r_   r   )rm  rn  ro  rn  r_   r`   )r_   r`   )r}  r0   r~  r2   r_   r  )r’  r-   r“  r-   r_   rr   )r™  rš  r›  r   r_   rœ  )r’  r-   r“  r-   r_   r   )r´  r.   rµ  r.   r_   r   )r´  r*   rµ  r*   r_   r   )rÈ  rÉ  rÊ  r8   r_   r<   )>rF   rG   rH   Ú__doc__r>   rZ   rœ   rP   Ú__annotations__rQ   rT   r@   Úclassmethodrk   ro   r}   r€   r„   Úpropertyrˆ   r   Úimmutabledictr¡   r�   rÁ   rË   rÐ   rÙ   rÜ   râ   rô   rù   rü   rï   r  rñ   r  r  r0  rA  rM  rQ  rU  r]  rd  rh  rl  rq  rk  ru  ry  r|  r‚  r‘  r˜  r¡  r£  r³  r¼  r¾  rÇ  rÍ  rI   rE   rD   rK   rK   W   sÙ  € € € € € € ð
ð 
ð €KàÐØÐØ,5°yÐ+AÐ*C€MÐCÐCÐCÑCØ&(ÐÐ(Ð(Ð(Ñ(ð
 .BÐÐAÐAÐAÑAðð ð ð ð4 ð$ð $ð $ñ „[ð$ð#ð #ð #ð #ð
 ð  ð  ð  ðDð ð ð ð	ð 	ð 	ð 	ð ðð ð ñ „Xðð 7;Ø:>Ø$6 DÔ$6Ñ$8Ô$8ð+7ð +7ð +7ð +7ð +7ð` 48ð+ð +ð +ð +ð +ð !%Ø16ØØ#'Ø!Ø%)Ø/4Ø'+Ø+/Ø:>Ø)-Ø.2ð!oð oð oð oð oð oðl ,0Ø%)Ø)-Ø*.ð
ð 
ð 
ð 
ð 
ð 
ð4 "Ø!%ð
ð 
ð 
ð 
ð 
ð 
ð:ð :ð :ð :ð7ð 7ð 7ð 7ð ,0ð	
ð 
ð 
ð 
ð 
ð3ð 3ð 3ð 3ð.
ð 
ð 
ð 
ð4ð 4ð 4ð 4ð2ð 2ð 2ð 2ð3ð 3ð 3ð 3ð4ð 4ð 4ð 4ð2ð 2ð 2ð 2ð !ð	$Jð $Jð $Jð $Jð $JðL&ð &ð &ð &ðPð ð ð ð,ð ð ð ðBð ð ð ð Gð Gð Gðð ð ð ðð ð ð >Cð
ð 
ð 
ð 
ð 
ð+ð +ð +ð +ðð ð ð ðð ð ðð ð ð ð>ð >ð >ð >ð?ð ?ð ?ð ?ðð ð ð ð

ð 
ð 
ð8ð ð ð ðOð Oð Oð Oð
Pð Pð Pð Pð
),ð ),ð ),ð ),ðV,ð ,ð ,ð ,ð8(ð (ð (ð (ð.ð .ð .ð";ð ;ð ;ð ;ð ;ð ;rE   rK   )Ú	metaclassc                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )	r  r8   r;  z	list[str]r)  r'  zdict[str, str]r&  N)rF   rG   rH   rÏ  rI   rE   rD   r  r  a  s<   € € € € € € Ø€K€K�KØÐÐÑØ€O€O�OØÐÐÑÐÐrE   r  Úmetadata_ioú(schema.Identity | schema.Sequence | NoneÚinspector_ioÚ
default_ioú!schema.Identity | schema.Sequencer…  úset[str]c           
     óä  ‡‡‡— t          j        | ¦  «        }t          j        |¦  «        }t          ¦   «         Št          ¦   «         Šd	ˆˆˆfd„} |||t          j        |¦  «        t          |¦  «                             |¦  «        ¦  «         t           j        rRt          |d¦  «        sJ ‚ |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 ri   )ÚsetÚ
differencerc   r‰  )rÜ  rÝ  rÞ  rß  ÚattrÚ
meta_valueÚ
insp_valueÚdefault_valuer�  Úignored_attrr…  s           €€€rD   Úcheck_dictsz._compare_identity_options.<locals>.check_dictsw  s¤   ø€ õ ˜‘J”J×)Ò)¨$Ñ/Ô/ð 	#ð 	#ˆDØ"Ÿš tÑ,Ô,ˆJØ"Ÿš tÑ,Ô,ˆJØ˜ZÒ'Ð'Ø ,× 0Ò 0°Ñ 6Ô 6�Ø Ò.Ð.Ø ×$Ò$ TÑ*Ô*Ð*Ð*à—H’H˜T‘N”N�Nøð	#ð 	#rE   Údialect_kwargs)rÜ  r�   rÝ  r�   rÞ  r�   rß  rà  )r   Ú_get_identity_options_dictrâ  ÚunionÚidentity_has_dialect_kwargsÚhasattrrˆ  rê  )	rÕ  r×  rØ  r…  Úmeta_dÚinsp_dré  r�  rè  s	      `   @@rD   r†  r†  h  s  øøø€ õ Ô3°KÑ@Ô@€FÝÔ3°LÑAÔA€Få‰5Œ5€DÝ‘5”5€Lð#ð #ð #ð #ð #ð #ð #ð #ð  €KØØÝÔ.¨zÑ:Ô:ÝˆF‰Œ×Ò˜&Ñ!Ô!ñ	ô ð õ Ô.ð 	
Ý�zÐ#3Ñ4Ô4Ð4Ð4Ð4ð 	ˆÝ�KÐ!1°2Ñ6Ô6Ý�LÐ"2°BÑ7Ô7ØÔ%Ý�LÐ"2°BÑ7Ô7ñ		
ô 	
ð 	
ð �ÐÐrE   )rÕ  rÖ  r×  rÖ  rØ  rÙ  r…  rÚ  )LÚ
__future__r   Úcollections.abcr   r   r   Úloggingr!  Útypingr   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.interfacesr!   r"   r#   r$   r%   Úsqlalchemy.engine.reflectionr&   Úsqlalchemy.sqlr'   r(   Úsqlalchemy.sql.elementsr)   Úsqlalchemy.sql.schemar*   r+   r,   r-   r.   Úsqlalchemy.sql.selectabler/   Úsqlalchemy.sql.type_apir0   r1   Úautogenerate.apir2   Úoperations.batchr3   r4   rÉ  Ú	getLoggerrF   r©  r?   r6   rA   rÏ  rK   r  r†  rI   rE   rD   ú<module>r     sr  ðð #Ð "Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àð #ØÐÐÐÐÐØÐÐÐÐÐà,Ð,Ð,Ð,Ð,Ð,Ø)Ð)Ð)Ð)Ð)Ð)Ø5Ð5Ð5Ð5Ð5Ð5ØEÐEÐEÐEÐEÐEØJÐJÐJÐJÐJÐJØ;Ð;Ð;Ð;Ð;Ð;ØJÐJÐJÐJÐJÐJØFÐFÐFÐFÐFÐFØ6Ð6Ð6Ð6Ð6Ð6Ø,Ð,Ð,Ð,Ð,Ð,Ø)Ð)Ð)Ð)Ð)Ð)Ø3Ð3Ð3Ð3Ð3Ð3Ø5Ð5Ð5Ð5Ð5Ð5Ø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ñ 
ô 
ð 
ð (*€Ð )Ð )Ð )Ñ )ðG;ð G;ð G;ð G;ð G;˜Hð G;ñ G;ô G;ð G;ðTð ð ð ð ˆZñ ô ð ð0ð 0ð 0ð 0ð 0ð 0rE   