Ë
    èlÖieQ  ã                   ój  — d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlZd dlZd dlmZ d dlmZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dl m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-  ej\                  d¬«      d„ «       Z/ ej\                  d¬«      de0fd„«       Z1 ej\                  d¬«      d„ «       Z2 ej\                  d¬«      d„ «       Z3 ej\                  d¬«      d„ «       Z4 ej\                  d¬«      d„ «       Z5 ej\                  d¬«      d„ «       Z6 ej\                  d¬«      d„ «       Z7 ej\                  d¬«      d„ «       Z8 ej\                  d¬«      d „ «       Z9 ej\                  d¬«      d!„ «       Z: ej\                  d¬«      d"„ «       Z; ej\                  d¬«      d#„ «       Z< ej\                  d¬«      d$„ «       Z= ej\                  d¬«      d%„ «       Z> ej\                  d¬«      d&„ «       Z? ej\                  d¬«      d'„ «       Z@ ej\                  d¬«      d(„ «       ZA ej\                  d¬«      d)„ «       ZB ej\                  d¬«      d*„ «       ZC ej\                  d¬«      d+„ «       ZDd,„ ZEd-„ ZF ej\                  d¬«      d.„ «       ZG ej\                  d¬«      d/„ «       ZH ej\                  d¬«      d0„ «       ZI ej\                  d¬«      d1„ «       ZJ ej\                  d¬«      d2„ «       ZK ej\                  d¬«      d3„ «       ZL ej\                  d¬«      d4„ «       ZM ej\                  d¬«      de	e0e0f   fd5„«       ZN ej\                  d¬«      d6„ «       ZO ej\                  d¬«      d7„ «       ZP ej\                  d¬«      d8„ «       ZQ G d9„ d:«      ZR ej\                  d¬«      de
e0e0f   fd;„«       ZS ej\                  d¬«      d@d<„«       ZT ej\                  d¬«      d=„ «       ZU ej\                  d¬«      d>eRfd?„«       ZVy)Aé    N)Ú	Namespace)ÚdatetimeÚtimezone)ÚPath)ÚDictÚMapping)Úget_adapterÚget_adapter_by_typeÚregister_adapterÚreset_adapters)ÚRuntimeConfig)Úgenerate_runtime_macro_context)Úreset_deprecations)Úsetup_event_logger)Úget_mp_context)ÚManifestLoader)ÚTestProcessingExceptionÚget_connectionÚrun_sql_with_adapterÚ
write_file)Úset_invocation_context©Úcleanup_event_logger)ÚCompilationErrorÚDbtDatabaseError)Úenable_test_cachingÚclass)Úscopec            	      ó  — t        j                  dd«      } t        j                  t        j
                  «      j                  d ¬«      t        dddddd«      z
  }t        |j                  «       dz  «      |j                  z   }d|› | d›�}|S )	Nr   i'  )Útzinfoi²  é   g    €„.AÚtestÚ04)
ÚrandomÚrandintr   Únowr   ÚutcÚreplaceÚintÚtotal_secondsÚmicroseconds)Ú_randintÚ_runtime_timedeltaÚ_runtimeÚprefixs       ú_/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/dbt/tests/fixtures/project.pyr/   r/   K   s�   € ô �~‰~˜a Ó&€HÜ!Ÿ™¤h§l¡lÓ3×;Ñ;À4Ð;ÓHÌ8Øˆa��A�q˜!óLñ Ðô Ð&×4Ñ4Ó6¸Ñ<Ó=ÐAS×A`ÑA`Ñ`€HØ�H�:˜h r˜]Ð+€FØ€Mó    Úreturnc                 óh   — | j                   j                  }|j                  d«      d   }|› d|› �}|S )Nú.éÿÿÿÿÚ_)ÚmoduleÚ__name__Úsplit)Úrequestr/   Ú	test_fileÚunique_schemas       r0   r<   r<   X   s:   € à—‘×'Ñ'€Ià—‘ Ó$ RÑ(€IØ�h˜a 	˜{Ð+€MØÐr1   c                 ó$   — | j                  d«      S )NÚprofile)Úmktemp)Útmpdir_factorys    r0   Úprofiles_rootrA   b   s   € à× Ñ  Ó+Ð+r1   c                 óD   — | j                  d«      }t        d|› �«       |S )NÚprojectz
=== Test project_root: )r?   Úprint)r@   Úproject_roots     r0   rE   rE   h   s*   € ð "×(Ñ(¨Ó3€LÜ	Ð% l ^Ð
4Ô5ØÐr1   Úsessionc                 ól   — t         j                  j                  | j                  j                  dd«      S )NÚtestsÚdata)ÚosÚpathÚjoinÚconfigÚrootdir©r:   s    r0   Úshared_data_dirrP   q   s#   € ä�7‰7�<‰<˜Ÿ™×.Ñ.°¸Ó@Ð@r1   r7   c                 ój   — t         j                  j                  | j                  j                  d«      S )NrI   )rJ   rK   rL   ÚfspathÚdirnamerO   s    r0   Útest_data_dirrT   w   s!   € ä�7‰7�<‰<˜Ÿ™×.Ñ.°Ó7Ð7r1   c            
      óÈ   — dddt        t        j                  dd«      «      t        j                  dd«      t        j                  dd	«      t        j                  d
d«      dœS )NÚpostgresé   Ú	localhostÚPOSTGRES_TEST_PORTi8  ÚPOSTGRES_TEST_USERÚrootÚPOSTGRES_TEST_PASSÚpasswordÚPOSTGRES_TEST_DATABASEÚdbt)ÚtypeÚthreadsÚhostÚportÚuserÚpassÚdbname)r)   rJ   Úgetenv© r1   r0   Údbt_profile_targetri   �   sX   € ð ØØÜ”B—I‘IÐ2°DÓ9Ó:Ü—	‘	Ð.°Ó7Ü—	‘	Ð.°
Ó;Ü—)‘)Ð4°eÓ<ñð r1   c                 ó   — | d   S )Nrd   rh   )ri   s    r0   Úprofile_userrk   Ž   s   € à˜fÑ%Ð%r1   c                  ó   — i S ©Nrh   rh   r1   r0   Úprofiles_config_updatern   •   ó   € à€Ir1   c                 ób   — ddi iddœi}|}| |d<   ||d   d   d<   |r|j                  |«       |S )Nr"   Údefault)ÚoutputsÚtargetÚschemarr   )Úupdate)r<   ri   rn   r>   rs   s        r0   Údbt_profile_datarv   �   s[   € ð 	à˜2ðð  ñ	
ð€Gð  €FØ$€Fˆ8ÑØ,2€GˆF�O�IÑ˜yÑ)áØ�‰Ð-Ô.Ø€Nr1   c              #   ó®   K  — t        | «      t        j                  d<   t        t	        j
                  |«      | d«       |–— t        j                  d= y ­w)NÚDBT_PROFILES_DIRzprofiles.yml)ÚstrrJ   Úenvironr   ÚyamlÚ	safe_dump)rA   rv   s     r0   Úprofiles_ymlr}   ±   sC   è ø€ ä%(¨Ó%7„B‡J�JÐ!Ñ"ÜŒt�~‰~Ð.Ó/°ÀÔOØ
ÒÜ
�
‰
Ð%Ñ&ùs   ‚AAc                  ó   — i S rm   rh   rh   r1   r0   Úproject_config_updater   º   ro   r1   c                 ó
  — ddddidœ}|rXt        |t        «      r|j                  |«       n6t        |t        «      r&t	        j
                  |«      }|j                  |«       t        t	        j                  |«      | d«       |S )Nr"   Úsend_anonymous_usage_statsF)Únamer>   Úflagszdbt_project.yml)Ú
isinstanceÚdictru   ry   r{   Ú	safe_loadr   r|   )rE   r   Úproject_configÚupdatess       r0   Údbt_project_ymlr‰   Á   s|   € ð ØØ.°Ð6ñ€Nñ
 ÜÐ+¬TÔ2Ø×!Ñ!Ð"7Õ8ÜÐ-¬sÔ3Ü—n‘nÐ%:Ó;ˆGØ×!Ñ! 'Ô*ÜŒt�~‰~˜nÓ-¨|Ð=NÔOØÐr1   c                  ó   — i S rm   rh   rh   r1   r0   Údependenciesr‹   Ó   ro   r1   c                 ót   — |r6t        |t        «      r|}nt        j                  |«      }t	        || d«       y y )Nzdependencies.yml©r„   ry   r{   r|   r   )rE   r‹   rI   s      r0   Údependencies_ymlrŽ   Ú   s4   € áÜ�l¤CÔ(Ø‰Dä—>‘> ,Ó/ˆDÜ�4˜Ð'9Õ:ð r1   c                  ó   — i S rm   rh   rh   r1   r0   Úpackagesr�   å   ro   r1   c                 ót   — |r6t        |t        «      r|}nt        j                  |«      }t	        || d«       y y )Nzpackages.ymlr�   )rE   r�   rI   s      r0   Úpackages_ymlr’   ë   s3   € áÜ�h¤Ô$Ø‰Dä—>‘> (Ó+ˆDÜ�4˜ ~Õ6ð r1   c                  ó   — i S rm   rh   rh   r1   r0   Ú	selectorsr”   ö   ro   r1   c                 ót   — |r6t        |t        «      r|}nt        j                  |«      }t	        || d«       y y )Nzselectors.ymlr�   )rE   r”   rI   s      r0   Úselectors_ymlr–   ü   s3   € áÜ�i¤Ô%Ø‰Dä—>‘> )Ó,ˆDÜ�4˜ Õ7ð r1   c                  ó   — t        «        y rm   r   rh   r1   r0   Úclean_up_loggingr˜   
  s   € äÕr1   c              #   óÄ  K  — t        t        |«      t        |«      d d d ¬«      }t        j                  |i «       t	        j
                  |«      }t        |t        «       «       t        |«      }	t        j                  ||	j                  j                  d¬«      }
|	j                  |
«       |	j                  t        «       |	–— |	j!                  «        t#        «        y ­w)N)Úprofiles_dirÚproject_dirrs   r>   ra   T©Úbase_macros_only)r   ry   rƒ   Úset_from_argsr   Ú	from_argsr   r   r	   r   Úload_macrosÚconnectionsÚset_query_headerÚset_macro_resolverÚset_macro_context_generatorr   Úcleanup_connectionsr   )Úlogs_dirr<   rE   rA   r}   r˜   r‰   ÚargsÚruntime_configÚadapterÚmanifests              r0   r©   r©     sÁ   è ø€ ô Ü˜Ó'Ü˜Ó%ØØØô€Dô 
×Ñ˜˜bÔ!Ü"×,Ñ,¨TÓ2€NÜ�^¤^Ó%5Ô6Ü˜.Ó)€Gô ×)Ñ)ØØ×Ñ×,Ñ,Øô€Hð ×Ñ˜xÔ(Ø×'Ñ'Ô(FÔGØ
‚MØ×ÑÔ!ÜÕùs   ‚CC c                 óD   — | j                  |«      }|rt        ||«       y y rm   )ÚmkdirÚwrite_project_files_recursively)rE   Údir_nameÚ	file_dictrK   s       r0   Úwrite_project_filesr°   ?  s$   € Ø×Ñ˜hÓ'€DÙÜ'¨¨iÕ8ð r1   c                 ó¸  — t        |«      t        urt        d|› d| › d�«      ‚g d¢}|j                  «       D ]   \  }}|j	                  d«      s|j	                  d«      r6t        |t        «      r|}nt        j                  |«      }t        || |«       Œ^|j	                  t        |«      «      rt        || |«       Œ†t        | j                  |«      |«       Œ¢ y )NzFile dict is not a dict: 'z' for path 'ú')z.sqlz.csvz.mdz.txtz.pyz.ymlz.yaml)r`   r…   r   ÚitemsÚendswithr„   ry   r{   r|   r   Útupler­   r¬   )rK   r¯   Úsuffix_listr‚   ÚvaluerI   s         r0   r­   r­   F  s½   € ÜˆIƒœdÑ"Ü%Ð(BÀ9À+È\ÐZ^ÐY_Ð_`Ð&aÓbÐbÚ8€KØ —‘Ó(ò 
E‰ˆˆeØ�=‰=˜Ô  D§M¡M°'Ô$:Ü˜%¤Ô%Ø‘ä—~‘~ eÓ,�Ü�t˜T 4Õ(Ø�]‰]œ5 Ó-Ô.Ü�u˜d DÕ)ä+¨D¯J©J°tÓ,<¸eÕDñ
Er1   c                  ó   — i S rm   rh   rh   r1   r0   Úmodelsr¹   ]  ro   r1   c                  ó   — i S rm   rh   rh   r1   r0   Úmacrosr»   c  ro   r1   c                  ó   — i S rm   rh   rh   r1   r0   Ú
propertiesr½   i  ro   r1   c                  ó   — i S rm   rh   rh   r1   r0   Úseedsr¿   o  ro   r1   c                  ó   — i S rm   rh   rh   r1   r0   Ú	snapshotsrÁ   u  ro   r1   c                  ó   — i S rm   rh   rh   r1   r0   rH   rH   {  ro   r1   c                  ó   — i S rm   rh   rh   r1   r0   ÚanalysesrÄ   �  ro   r1   c                  ó   — i S rm   rh   rh   r1   r0   Ú	functionsrÆ   †  ro   r1   c                 óÂ   — t        | di |¥|¥«       t        | d|«       t        | d|«       t        | d|«       t        | d|«       t        | d|«       t        | d|«       y )Nr¹   r»   rÁ   r¿   rH   rÄ   rÆ   )r°   )rE   r¹   r»   rÁ   r½   r¿   rH   rÄ   rÆ   r–   rŽ   r’   r‰   s                r0   Úproject_filesrÈ   Œ  sc   € ô  ˜ hÐ0H°6Ð0H¸ZÐ0HÔIÜ˜ h°Ô7Ü˜ k°9Ô=Ü˜ g¨uÔ5Ü˜ g¨uÔ5Ü˜ j°(Ô;Ü˜ k°9Õ=r1   c              #   óü   K  — t         j                  j                  | j                  j                  d|«      }t        |«      t         j                  d<   t        t        |«      «      –— t         j                  d= y ­w)NÚlogsÚDBT_LOG_PATH)rJ   rK   rL   rM   rN   ry   rz   r   )r:   r/   Údbt_log_dirs      r0   r¦   r¦   ¦  sU   è ø€ ä—'‘'—,‘,˜wŸ~™~×5Ñ5°v¸vÓF€KÜ!$ [Ó!1„B‡J�Jˆ~ÑÜ
Œd�;ÓÓ
 Ò Ü
�
‰
�>Ñ"ùs   ‚A:A<c                  ó   — i S rm   rh   rh   r1   r0   Útest_configrÎ   °  ro   r1   c                   óJ   — e Zd ZdZd„ Zed„ «       Zd
d„Zd
d„Zd
d„Z	d„ Z
d	„ Zy)ÚTestProjInfoFc
                 ó�   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        g | _	        y rm   )
rE   rš   Úadapter_typeÚtest_dirrP   rT   Útest_schemaÚdatabaserÎ   Úcreated_schemas)
ÚselfrE   rš   rÒ   rÓ   rP   rT   rÔ   rÕ   rÎ   s
             r0   Ú__init__zTestProjInfo.__init__»  sR   € ð )ˆÔØ(ˆÔØ(ˆÔØ ˆŒØ.ˆÔØ*ˆÔØ&ˆÔØ ˆŒØ&ˆÔØ!ˆÕr1   c                 ó,   — t        | j                  «      S rm   )r
   rÒ   )r×   s    r0   r©   zTestProjInfo.adapterÒ  s   € ô
 # 4×#4Ñ#4Ó5Ð5r1   Nc                 ó¸   — t        |d«      5 }|j                  «       j                  d«      }|D ]  }| j                  ||«       Œ 	 d d d «       y # 1 sw Y   y xY w)NÚrú;)ÚopenÚreadr9   Úrun_sql)r×   Úsql_pathÚfetchÚfÚ
statementsÚ	statements         r0   Úrun_sql_filezTestProjInfo.run_sql_fileÚ  sT   € Ü�(˜CÓ ð 	/ AØŸ™›Ÿ™¨Ó,ˆJØ'ò /�	Ø—‘˜Y¨Õ.ñ/÷	/÷ 	/ñ 	/ús   �9AÁAc                 ó2   — t        | j                  ||¬«      S )N©rá   )r   r©   )r×   Úsqlrá   s      r0   rß   zTestProjInfo.run_sqlá  s   € Ü# D§L¡L°#¸UÔCÐCr1   c                 óB  — |€| j                   }t        | j                  «      5  | j                  j                  j	                  | j
                  |¬«      }| j                  j                  |«       | j                  j                  |«       d d d «       y # 1 sw Y   y xY w)N©rÕ   rt   )	rÔ   r   r©   ÚRelationÚcreaterÕ   Úcreate_schemarÖ   Úappend)r×   Úschema_nameÚrelations      r0   Úcreate_test_schemazTestProjInfo.create_test_schemaæ  s~   € ØÐØ×*Ñ*ˆKÜ˜DŸL™LÓ)ñ 	5Ø—|‘|×,Ñ,×3Ñ3¸T¿]¹]ÐS^Ð3Ó_ˆHØ�L‰L×&Ñ& xÔ0Ø× Ñ ×'Ñ'¨Ô4÷	5÷ 	5ñ 	5ús   ¤A(BÂBc                 ó  — | j                   j                  «       €et        j                  | j                   j                  | j                   j
                  j                  d¬«      }| j                   j                  |«       t        | j                   «      5  | j                  D ]N  }| j                   j                  j                  | j                  |¬«      }| j                   j                  |«       ŒP g | _	        d d d «       y # 1 sw Y   y xY w)NTrœ   rê   )r©   Úget_macro_resolverr   r    rM   r¡   r¢   r£   r   rÖ   rë   rì   rÕ   Údrop_schema)r×   rª   rï   rð   s       r0   Údrop_test_schemazTestProjInfo.drop_test_schemaï  sÒ   € Ø�<‰<×*Ñ*Ó,Ð4Ü%×1Ñ1Ø—‘×#Ñ#Ø—‘×(Ñ(×9Ñ9Ø!%ôˆHð
 �L‰L×+Ñ+¨HÔ5ä˜DŸL™LÓ)ñ 	&Ø#×3Ñ3ò 3�ØŸ<™<×0Ñ0×7Ñ7ÀÇÁÐWbÐ7Óc�Ø—‘×(Ñ(¨Õ2ð3ð $&ˆDÔ ÷		&÷ 	&ñ 	&ús   ÂA%DÄDc                 óº   — d}|j                  dj                  d| j                  «      «      }| j                  |d¬«      }|D ��ci c]  \  }}||“Œ
 c}}S c c}}w )Na‡  
                select table_name,
                        case when table_type = 'BASE TABLE' then 'table'
                             when table_type = 'VIEW' then 'view'
                             else table_type
                        end as materialization
                from information_schema.tables
                where {}
                order by table_name
                z{} ilike '{}'Útable_schemaÚallrç   )ÚformatrÔ   rß   )r×   rè   ÚresultÚ
model_nameÚmaterializations        r0   Úget_tables_in_schemaz!TestProjInfo.get_tables_in_schemaÿ  s\   € ð	ˆð �j‰j˜×/Ñ/°À×@PÑ@PÓQÓRˆØ—‘˜c¨�Ó/ˆØQW×XÑ0M°¸_�
˜OÑ+ÓXÐXùÓXs   ÁArm   )r8   Ú
__module__Ú__qualname__Ú__test__rØ   Úpropertyr©   rå   rß   rñ   rõ   rý   rh   r1   r0   rÐ   rÐ   ¸  s;   „ Ø€Hò"ð. ñ6ó ð6ó/óDó
5ò&ó Yr1   rÐ   c                  ó"   — t         j                  S rm   )rJ   rz   rh   r1   r0   Úenvironmentr    s   € ô �:‰:Ðr1   c                 ó.   — t        | «       t        «        y rm   )r   r   )r  s    r0   Úinitializationr    s   € ô ˜;Ô'ô Õr1   c              #   óB  K  — t        |
dddddddddd¬«      }t        |«       t        j                  «       }t        j                  |«       t        |||j                  «       |j                  j                  ||	||j                  j                  j                  |¬«	      }|j                  «        |j                  «        |–— 	 |j                  «        t        j                  |«       t%        «        t'        «        y # t        t        t         t"        f$ r Y ŒEw xY w­w)NÚjsonFÚinfoÚdebugi@B )ÚLOG_PATHÚ
LOG_FORMATÚLOG_FORMAT_FILEÚ
USE_COLORSÚUSE_COLORS_FILEÚ	LOG_LEVELÚLOG_LEVEL_FILEÚDEBUGÚLOG_CACHE_EVENTSÚQUIETÚLOG_FILE_MAX_BYTES)	rE   rš   rÒ   rÓ   rP   rT   rÔ   rÕ   rÎ   )r   r   rJ   ÚgetcwdÚchdirrÐ   r`   rR   rS   rM   ÚcredentialsrÕ   rõ   rñ   ÚKeyErrorÚAttributeErrorr   r   r   r   )r  r˜   rE   rA   r:   r<   r}   r©   rP   rT   r¦   rÎ   Ú	log_flagsÚorig_cwdrC   s                  r0   Úproject_setupr     s  è ø€ ô ØØØØØØØØØØØ"ô€Iô �yÔ!Ü�y‰y‹{€HÜ‡H�Hˆ\Ôô Ø!Ø"Ø—\‘\“^Ø—‘×'Ñ'Ø'Ø#Ø!Ø—‘×+Ñ+×4Ñ4Øô
€Gð ×ÑÔØ×ÑÔ à
‚MðØ× Ñ Ô"ô ‡H�HˆXÔÜÔÜÕøô	 ”nÔ&6Ô8HÐIò Ùðüs*   ‚CDÃD  Ã*DÄ DÄDÄDÄDr  c                 ó   — | S rm   rh   )r  rÈ   s     r0   rC   rC   g  s
   € ð
 Ðr1   )r2   N)WrJ   r$   Úargparser   r   r   Úpathlibr   Útypingr   r   Úpytestr{   Ú	dbt.flagsrƒ   Údbt.adapters.factoryr	   r
   r   r   Údbt.config.runtimer   Údbt.context.providersr   Údbt.deprecationsr   Údbt.events.loggingr   Údbt.mp_contextr   Údbt.parser.manifestr   Údbt.tests.utilr   r   r   r   Údbt_common.contextr   Ú&dbt_common.events.event_manager_clientr   Údbt_common.exceptionsr   r   Údbt_common.testsr   Úfixturer/   ry   r<   rA   rE   rP   rT   ri   rk   rn   rv   r}   r   r‰   r‹   rŽ   r�   r’   r”   r–   r˜   r©   r°   r­   r¹   r»   r½   r¿   rÁ   rH   rÄ   rÆ   rÈ   r¦   rÎ   rÐ   r  r  r  rC   rh   r1   r0   ú<module>r0     sÿ  ðÛ 	Û Ý ß 'Ý ß  ã Û å ÷ó õ -Ý @Ý /Ý 1Ý )Ý .÷ó õ 6Ý Gß DÝ 0ðT €‡��gÔñó ðð €‡��gÔð cò ó ðð €‡��gÔñ,ó ð,ð
 €‡��gÔñó ðð €‡��iÔ ñAó !ðAð
 €‡��hÔñ8ó  ð8ð €‡��gÔñ	ó ð	ð €‡��gÔñ&ó ð&ð €‡��gÔñó ðð €‡��gÔñó ðð& €‡��gÔñ'ó ð'ð €‡��gÔñó ðð €‡��gÔñó ðð" €‡��gÔñó ðð €‡��gÔñ;ó ð;ð €‡��gÔñó ðð
 €‡��gÔñ7ó ð7ð €‡��gÔñó ðð
 €‡��gÔñ8ó ð8ð €‡��gÔñó ðð €‡��gÔñ!ó ð!òJ9òEð. €‡��gÔñó ðð
 €‡��gÔñó ðð
 €‡��gÔñó ðð
 €‡��gÔñó ðð
 €‡��gÔñó ðð
 €‡��gÔñó ðð
 €‡��gÔñó ðð €‡��gÔð�4˜˜S˜‘>ò ó ðð
 €‡��gÔñ>ó ð>ð2 €‡��gÔñ#ó ð#ð €‡��gÔñó ð÷TYñ TYðn €‡��gÔð�W˜S #˜XÑ&ò ó ðð €‡��gÔòó ðð €‡��gÔñ>ó ð>ðL €‡��gÔðØòó ñr1   