§
    ‰eîi÷N  ã                  óÖ  — U d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	m
Z
mZ ddlmZmZ  ej        e¦  «        Z ed¬¦  «         G d	„ d
¦  «        ¦   «         Zi d edddd¬¦  «        “d eddd¬¦  «        “d eddd¬¦  «        “d edddd¬¦  «        “d eddd¬¦  «        “d eddd d!¬¦  «        “d" edd#¬$¦  «        “d% ed&d'¬$¦  «        “d( edd)d*¬+¦  «        “d, edd-¬.¦  «        “d/ edd0d1d2¬3¦  «        “d4 ed&d5¬.¦  «        “d6 ed&d7¬.¦  «        “d8 edd9¬.¦  «        “d: edd;¬.¦  «        “d< edd=¬.¦  «        “d> edd¬?¦  «        “ eddd@¬A¦  «         edddB¬A¦  «         edddC¬A¦  «         edddD¬A¦  «         eddEdF¬G¦  «         eddHdI¬G¦  «         eddJ¬.¦  «         eddKdL¬G¦  «         eddM¬.¦  «         eddN¬.¦  «        dOœ
¥ZdPedQ<   e G dR„ dS¦  «        ¦   «         Zi dTd“dUd(“dVd(“dWd(“dXd(“dYdZ“d[dZ“d\dZ“d]d^“d_d^“d`d^“dad^“dbd,“dcd,“ddd,“ded,“dfd/“i dgd/“dhd6“did6“djd%“dkd%“dld"“dmd"“dnd“dod>“dpd>“dqd>“drds“dtds“dudv“dwdv“dxdy“dzdy“¥i d{dy“d|d8“d}d:“d~d:“dd:“d€d:“d�d<“d‚d<“dƒd<“d„d“d…d“d†d‡“dˆd‡“d‰d‡“dŠd‹“dŒd‹“d�dŽ“¥dŽdŽdŽd�d�d�d�d�d‘d’d’d’d’d“œ¥Zd”ed•<   d–d—d˜d™dšd›dœd�džœZd”edŸ<   d d&dd¡d¢œZd”ed£<   d½d§„Zd¾d©„Zd¿d«„ZdÀd®„ZdÁdÂd±„ZdÃd´„ZdÄd¶„ZdÅd¹„Z 	 	 dÆdÇd¼„Z!dS )Èu‹  
Single source of truth for provider identity in Hermes Agent.

Two data sources, merged at runtime:

1. **models.dev catalog** â€” 109+ providers with base URLs, env vars, display
   names, and full model metadata (context, cost, capabilities).  This is
   the primary database.

2. **Hermes overlays** â€” transport type, auth patterns, aggregator flags,
   and additional env vars that models.dev doesn't track.  Small dict,
   maintained here.

3. **User config** (``providers:`` section in config.yaml) â€” user-defined
   endpoints and overrides.  Merged on top of everything else.

Other modules import from this file.  No parallel registries.
é    )ÚannotationsN)Ú	dataclass)ÚAnyÚDictÚListÚOptionalÚTuple)Úbase_url_host_matchesÚbase_url_hostnameT)Úfrozenc                  óh   — e Zd ZU dZdZded<   dZded<   dZded	<   d
Zded<   dZ	ded<   dZ
ded<   dS )ÚHermesOverlayz?Hermes-specific provider metadata layered on top of models.dev.Úopenai_chatÚstrÚ	transportFÚboolÚis_aggregatorÚapi_keyÚ	auth_type© úTuple[str, ...]Úextra_env_varsÚ Úbase_url_overrideÚbase_url_env_varN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r   r   r   r   ó    ú6/home/div/.hermes/hermes-agent/hermes_cli/providers.pyr   r   "   s€   € € € € € € àIÐIà"€IÐ"Ð"Ð"Ñ"Ø€MÐÐÐÑØ€IÐÐÐÑØ&(€NÐ(Ð(Ð(Ñ(ØÐÐÐÐÑØÐÐÐÐÑÐÐr!   r   Ú
openrouterr   )ÚOPENAI_API_KEYÚOPENROUTER_BASE_URL)r   r   r   r   ÚnousÚoauth_device_codez)https://inference-api.nousresearch.com/v1)r   r   r   úopenai-codexÚcodex_responsesÚoauth_externalz%https://chatgpt.com/backend-api/codexz
qwen-oauthzhttps://portal.qwen.ai/v1ÚHERMES_QWEN_BASE_URL)r   r   r   r   zgoogle-gemini-clizcloudcode-pa://googleúcopilot-acpÚexternal_processzacp://copilotÚCOPILOT_ACP_BASE_URLzgithub-copilot)ÚCOPILOT_GITHUB_TOKENÚGH_TOKEN)r   r   Ú	anthropicÚanthropic_messages)ÚANTHROPIC_TOKENÚCLAUDE_CODE_OAUTH_TOKENÚzai)ÚGLM_API_KEYÚZAI_API_KEYÚZ_AI_API_KEYÚGLM_BASE_URL)r   r   r   zkimi-for-codingÚKIMI_BASE_URL)r   r   Ústepfun)ÚSTEPFUN_API_KEYz#https://api.stepfun.ai/step_plan/v1ÚSTEPFUN_BASE_URL)r   r   r   r   ÚminimaxÚMINIMAX_BASE_URLz
minimax-cnÚMINIMAX_CN_BASE_URLÚdeepseekÚDEEPSEEK_BASE_URLÚalibabaÚDASHSCOPE_BASE_URLzalibaba-coding-planÚALIBABA_CODING_PLAN_BASE_URLÚvercel)r   r   ÚOPENCODE_ZEN_BASE_URL)r   r   r   ÚOPENCODE_GO_BASE_URLÚKILOCODE_BASE_URLÚHF_BASE_URLzhttps://api.x.ai/v1ÚXAI_BASE_URL)r   r   r   z#https://integrate.api.nvidia.com/v1ÚNVIDIA_BASE_URLÚXIAOMI_BASE_URLzhttps://api.arcee.ai/api/v1ÚARCEE_BASE_URLÚOLLAMA_BASE_URLÚAZURE_FOUNDRY_BASE_URL)
Úopencodeúopencode-goÚkiloÚhuggingfaceÚxaiÚnvidiaÚxiaomiÚarceeúollama-cloudzazure-foundryzDict[str, HermesOverlay]ÚHERMES_OVERLAYSc                  ó�   — e Zd ZU dZded<   ded<   ded<   ded<   dZded	<   dZded
<   dZded<   dZded<   dZ	ded<   dZ
ded<   dS )ÚProviderDefu9   Complete provider definition â€” merged from all sources.r   ÚidÚnamer   r   Úapi_key_env_varsr   Úbase_urlr   Fr   r   r   r   ÚdocÚsourceN)r   r   r   r   r    r`   r   r   r   ra   rb   r   r!   r"   r\   r\   ¶   s¢   € € € € € € àCÐCà€G€G�GØ€I€I�IØ€N€N�NØ%Ð%Ð%Ñ%Ø€HÐÐÐÑØÐÐÐÐÑØ€MÐÐÐÑØ€IÐÐÐÑØ€C€M€M€M�MØ€FÐÐÐÑÐÐr!   r\   ÚopenaiÚglmzz-aizz.aiÚzhipuzx-airU   zx.aiÚgrokÚnimrV   z
nvidia-nimzbuild-nvidiaÚnemotronÚkimizkimi-codingzkimi-coding-cnÚmoonshotÚstepzstepfun-coding-planzminimax-chinaÚ
minimax_cnÚclaudezclaude-codeÚcopilotÚgithubzgithub-copilot-acpz
ai-gatewayÚ	aigatewayzvercel-ai-gatewayzopencode-zenrQ   ÚzenÚgorR   zopencode-go-subÚkilocoderS   z	kilo-codezkilo-gatewayz	deep-seekÚ	dashscopeÚaliyunÚqwenzalibaba-cloudÚalibaba_codingzalibaba-codingÚalibaba_coding_planz
gemini-clizgemini-oauthÚhfrT   zhugging-facezhuggingface-hubÚmimorW   zxiaomi-mimoÚawsÚbedrockrX   ÚlmstudioÚcustomÚlocal)zaws-bedrockzamazon-bedrockÚamazonzarcee-aiÚarceeair}   z	lm-studioÚ	lm_studioÚollamaÚvllmÚllamacppz	llama.cppz	llama-cppzDict[str, str]ÚALIASESzNous PortalzOpenAI CodexzGitHub Copilot ACPzStepFun Step PlanzXiaomi MiMozLocal endpointzAWS BedrockzOllama Cloud)r&   r(   r,   r;   rW   r   r|   rY   Ú_LABEL_OVERRIDESÚchat_completionsÚbedrock_converse)r   r2   r)   r‰   ÚTRANSPORT_TO_API_MODEr^   r   Úreturnc                ó„   — |                       ¦   «                              ¦   «         }t                               ||¦  «        S )z±Resolve aliases and normalise casing to a canonical provider id.

    Returns the canonical id string.  Does *not* validate that the id
    corresponds to a known provider.
    )ÚstripÚlowerr†   Úget)r^   Úkeys     r"   Únormalize_providerr‘   T  s1   € ð �*Š*‰,Œ,×
Ò
Ñ
Ô
€CÝ�;Š;�s˜CÑ Ô Ð r!   úOptional[ProviderDef]c                ó¤  — t          | ¦  «        }	 ddlm}  ||¦  «        }n# t          $ r d}Y nw xY wt                               |¦  «        }|�®|r|j        nd}|r|j        nd}|r|j        nd}|r|j	        nd}|r|j
        nd}	t          |j        ¦  «        }
|r*|j        r#|j        D ]}||
vr|
                     |¦  «         Œt          ||j        |t#          |
¦  «        |	p|j        ||||j        d¬	¦
  «
        S |�Ot          |t(                               ||¦  «        |j        |j        |j
        |j	        |j        |j        d
¬¦	  «	        S dS )aA  Look up a built-in provider by id or alias.

    Resolution order:
      1. Hermes overlays (for providers not in models.dev: nous, openai-codex, etc.)
      2. models.dev catalog + Hermes overlay

    User-defined providers from config.yaml (``providers:`` / ``custom_providers:``)
    are resolved by :func:`resolve_provider_full`, which layers ``resolve_user_provider``
    and ``resolve_custom_provider`` on top of this function. Callers that need
    user-config support should use ``resolve_provider_full`` instead.

    Returns a fully-resolved ProviderDef or None.
    r   ©Úget_provider_infoNr   Fr   r   ú
models.dev)
r]   r^   r   r_   r`   r   r   r   ra   rb   Úhermes)	r]   r^   r   r_   r`   r   r   r   rb   )r‘   Úagent.models_devr•   Ú	ExceptionrZ   r�   r   r   r   r   r   ÚlistÚenvr   Úappendr\   r^   ÚtupleÚapira   r‡   )r^   Ú	canonicalÚ_mdev_providerÚ	mdev_infoÚoverlayr   Úis_aggÚauthÚbase_url_envr   Úenv_varsÚevs               r"   Úget_providerr¨   ^  sÏ  € õ # 4Ñ(Ô(€IðØHÐHÐHÐHÐHÐHØ"�N 9Ñ-Ô-ˆ	ˆ	øÝð ð ð Øˆ	ˆ	ˆ	ðøøøõ ×!Ò! )Ñ,Ô,€GàÐà)0ÐC�GÔ%Ð%°mˆ	Ø*1Ð<�Ô&Ð&°uˆØ$+Ð:ˆwÔ Ð °ˆØ3:ÐB�wÔ/Ð/ÀˆØ9@ÐH˜GÔ5Ð5ÀbÐõ ˜	œÑ&Ô&ˆØð 	(�wÔ-ð 	(ØÔ,ð (ð (�Ø˜XÐ%Ð%Ø—O’O BÑ'Ô'Ð'øåØØ”ØÝ" 8™_œ_Ø&Ð7¨)¬-Ø)Ø ØØ”Øð
ñ 
ô 
ð 	
ð ÐåØÝ!×%Ò% i°Ñ;Ô;ØÔ'Ø$Ô3ØÔ.Ø$Ô5Ø!Ô/ØÔ'Øð

ñ 

ô 

ð 
	
ð ˆ4s   ‘# £2±2Úprovider_idc                ó€   — t          | ¦  «        }|t          v rt          |         S t          |¦  «        }|r|j        S |S )z1Get a human-readable display name for a provider.)r‘   r‡   r¨   r^   )r©   rŸ   Úpdefs      r"   Ú	get_labelr¬   ¤  sM   € å" ;Ñ/Ô/€Ið Õ$Ð$Ð$Ý 	Ô*Ð*õ ˜	Ñ"Ô"€DØð ØŒyÐàÐr!   Úproviderr   c                ó6   — t          | ¦  «        }|r|j        ndS )z:Return True when the provider is a multi-model aggregator.F)r¨   r   )r­   r«   s     r"   r   r   ¶  s"   € å˜Ñ!Ô!€DØ!%Ð0ˆ4ÔÐ¨5Ð0r!   r   r`   c                ó8  — t          | ¦  «        }|�p|rN|                     d¦  «                             ¦   «         }d|v rdS |                     d¦  «        sd|v rdS d|v rdS t                               |j        d	¦  «        S | d
k    rdS |rŽ|                     d¦  «                             ¦   «         }t          |¦  «        }|                     d¦  «        s|dk    rdS |dk    rd|v rdS |dk    rdS |                     d¦  «        rt          |d¦  «        rdS d	S )uú   Determine the API mode (wire protocol) for a provider/endpoint.

    Resolution order:
      1. Known provider â†’ transport â†’ TRANSPORT_TO_API_MODE.
      2. URL heuristics for unknown / custom providers.
      3. Default: 'chat_completions'.
    Nú/zapi.kimi.com/codingr2   z
/anthropiczapi.anthropic.comzapi.openai.comr)   rˆ   r|   r‰   zapi.kimi.comz/codingzbedrock-runtime.zamazonaws.com)
r¨   ÚrstriprŽ   ÚendswithrŠ   r�   r   r   Ú
startswithr
   )r­   r`   r«   Ú	url_lowerÚhostnames        r"   Údetermine_api_moder¶   ¼  sq  € õ ˜Ñ!Ô!€DØÐð ð 	)Ø Ÿš¨Ñ,Ô,×2Ò2Ñ4Ô4ˆIØ$¨	Ð1Ð1Ø+Ð+Ø×!Ò! ,Ñ/Ô/ð ,Ð3FÈ)Ð3SÐ3SØ+Ð+Ø 9Ð,Ð,Ø(Ð(Ý$×(Ò(¨¬Ð9KÑLÔLÐLð �9ÒÐØ!Ð!ð ð 
&Ø—O’O CÑ(Ô(×.Ò.Ñ0Ô0ˆ	Ý$ XÑ.Ô.ˆØ×Ò˜lÑ+Ô+ð 	(¨xÐ;NÒ/NÐ/NØ'Ð'Ø�~Ò%Ð%¨)°yÐ*@Ð*@Ø'Ð'ØÐ'Ò'Ð'Ø$Ð$Ø×ÒÐ1Ñ2Ô2ð 	&Õ7LÈXÐWfÑ7gÔ7gð 	&Ø%Ð%àÐr!   Úuser_configúDict[str, Any]c           
     ó  — |rt          |t          ¦  «        sdS |                     | ¦  «        }t          |t          ¦  «        sdS |                     dd¦  «        p| }|                     dd¦  «        p-|                     dd¦  «        p|                     dd¦  «        pd}|                     dd¦  «        pd}|                     dd	¦  «        pd	}g }|r|                     |¦  «         t	          | ||t          |¦  «        |d
dd¬¦  «        S )zþResolve a provider from the user's config.yaml ``providers:`` section.

    Args:
        name: Provider name as given by the user.
        user_config: The ``providers:`` dict from config.yaml.

    Returns:
        ProviderDef if found, else None.
    Nr^   r   rž   Úurlr`   Úkey_envr   r   Fr   úuser-config©r]   r^   r   r_   r`   r   r   rb   )Ú
isinstanceÚdictr�   rœ   r\   r�   )r^   r·   ÚentryÚdisplay_nameÚapi_urlr»   r   r¦   s           r"   Úresolve_user_providerrÃ   è  s(  € ð ð �j¨µdÑ;Ô;ð Øˆtà�OŠO˜DÑ!Ô!€EÝ�e�TÑ"Ô"ð Øˆtð —9’9˜V RÑ(Ô(Ð0¨D€LØ�iŠi˜˜rÑ"Ô"Ð] e§i¢i°°rÑ&:Ô&:Ð]¸e¿iºiÈ
ÐTVÑ>WÔ>WÐ]Ð[]€GØ�iŠi˜	 2Ñ&Ô&Ð,¨"€GØ—	’	˜+ }Ñ5Ô5ÐF¸€Ià€HØð !Ø�Š˜Ñ Ô Ð åØØØÝ˜x™œØØØØð	ñ 	ô 	ð 	r!   rÁ   c                ó|   — d|                       ¦   «                              ¦   «                              dd¦  «        z   S )zçBuild a canonical slug for a custom_providers entry.

    Matches the convention used by runtime_provider and credential_pool
    (``custom:<normalized-name>``).  Centralised here so all call-sites
    produce identical slugs.
    zcustom:Ú Ú-)r�   rŽ   Úreplace)rÁ   s    r"   Úcustom_provider_slugrÈ     s7   € ð �|×)Ò)Ñ+Ô+×1Ò1Ñ3Ô3×;Ò;¸CÀÑEÔEÑEÐEr!   Úcustom_providersúOptional[List[Dict[str, Any]]]c                óN  — |rt          |t          ¦  «        sdS | pd                     ¦   «                              ¦   «         }|sdS |D ]Ü}t          |t          ¦  «        sŒ|                     d¦  «        pd                     ¦   «         }|                     dd¦  «        p-|                     dd¦  «        p|                     dd¦  «        pd                     ¦   «         }|r|sŒœt          |¦  «        }||                     ¦   «         |hvrŒÄt          ||dd|d	d
d¬¦  «        c S dS )zIResolve a provider from the user's config.yaml ``custom_providers`` list.Nr   r^   r`   rº   rž   r   r   Fr   r¼   r½   )r¾   rš   r�   rŽ   r¿   r�   rÈ   r\   )r^   rÉ   Ú	requestedrÀ   rÁ   rÂ   Úslugs          r"   Úresolve_custom_providerrÎ     sl  € ð
 ð ¥:Ð.>ÅÑ#EÔ#Eð Øˆtà�˜×"Ò"Ñ$Ô$×*Ò*Ñ,Ô,€IØð Øˆtà!ð 
ð 
ˆÝ˜%¥Ñ&Ô&ð 	ØàŸ	š	 &Ñ)Ô)Ð/¨R×6Ò6Ñ8Ô8ˆà�IŠI�j "Ñ%Ô%ð Ø�yŠy˜ Ñ#Ô#ðà�yŠy˜ Ñ#Ô#ðð ß
Š%‰'Œ'ð 	ð ð 	 7ð 	Øå# LÑ1Ô1ˆØ˜\×/Ò/Ñ1Ô1°4Ð8Ð8Ð8ØåØØØ#ØØØØØ ð	
ñ 	
ô 	
ð 		
ð 		
ð 		
ð ˆ4r!   Úuser_providersúOptional[Dict[str, Any]]c                ó   — t          | ¦  «        }t          |¦  «        }|�|S |rLt          ||¦  «        }|�|S t          |                      ¦   «                              ¦   «         |¦  «        }|�|S t          | |¦  «        }|�|S 	 ddlm}  ||¦  «        }|�$t          ||j	        d|j
        |j        d¬¦  «        S n# t          $ r Y nw xY wdS )u‘  Full resolution chain: built-in â†’ models.dev â†’ user config.

    This is the main entry point for --provider flag resolution.

    Args:
        name: Provider name or alias.
        user_providers: The ``providers:`` dict from config.yaml (optional).
        custom_providers: The ``custom_providers:`` list from config.yaml (optional).

    Returns:
        ProviderDef if found, else None.
    Nr   r”   r   r–   )r]   r^   r   r_   r`   rb   )r‘   r¨   rÃ   r�   rŽ   rÎ   r˜   r•   r\   r^   r›   rž   r™   )	r^   rÏ   rÉ   rŸ   r«   Ú	user_pdefÚcustom_pdefr    r¡   s	            r"   Úresolve_provider_fullrÔ   E  s&  € õ" # 4Ñ(Ô(€Iõ ˜	Ñ"Ô"€DØÐØˆð ð å)¨)°^ÑDÔDˆ	ØÐ ØÐå)¨$¯*ª*©,¬,×*<Ò*<Ñ*>Ô*>ÀÑOÔOˆ	ØÐ ØÐõ *¨$Ð0@ÑAÔA€KØÐØÐðØHÐHÐHÐHÐHÐHØ"�N 9Ñ-Ô-ˆ	ØÐ ÝØØ”^Ø'Ø!*¤Ø"œØ#ðñ ô ð ð !øõ ð ð ð Øˆðøøøð ˆ4s   Â6B> Â>
CÃ
C)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¸   r‹   r’   )rÁ   r   r‹   r   )r^   r   rÉ   rÊ   r‹   r’   )NN)r^   r   rÏ   rÐ   rÉ   rÊ   r‹   r’   )"r   Ú
__future__r   ÚloggingÚdataclassesr   Útypingr   r   r   r   r	   Úutilsr
   r   Ú	getLoggerr   Úloggerr   rZ   r    r\   r†   r‡   rŠ   r‘   r¨   r¬   r   r¶   rÃ   rÈ   rÎ   rÔ   r   r!   r"   ú<module>rÜ      s­	  ððð ð ð& #Ð "Ð "Ð "Ð "Ð "à €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à	ˆÔ	˜8Ñ	$Ô	$€ð €�$ÐÑÔðð ð ð ð ñ ô ñ ÔððB-Ø�-�-ØØØ*Ø.ð	ñ ô ðB-ð ˆMˆMØØ%ØEðñ ô ðB-ð �M�MØ#Ø"ØAðñ ô ðB-ð" �-�-ØØ"Ø5Ø/ð	ñ ô ð#B-ð. ˜˜ØØ"Ø1ðñ ô ð/B-ð8 �=�=Ø#Ø$Ø)Ø/ð	ñ ô ð9B-ðD �m�mØØ;ðñ ô ðEB-ðL ��Ø&ØEðñ ô ðMB-ðT 
ˆ=ˆ=ØØEØ'ðñ ô ðUB-ð^ �}�}ØØ(ðñ ô ð_B-ðf ˆ}ˆ}ØØ+Ø?Ø+ð	ñ ô ðgB-ðr ˆ}ˆ}Ø&Ø+ðñ ô ðsB-ðz �-�-Ø&Ø.ðñ ô ð{B-ðB ��ØØ,ðñ ô ðCB-ðJ ˆ}ˆ}ØØ-ðñ ô ðKB-ðR ˜=˜=ØØ7ðñ ô ðSB-ðZ ˆmˆmØØðñ ô ð[B-ðb �ØØØ0ðñ ô ð
 !�=ØØØ/ðñ ô ð
 ˆMØØØ,ðñ ô ð
 !�=ØØØ&ðñ ô ð
 ˆ=Ø#Ø/Ø'ðñ ô ð
 ˆmØØ?Ø*ðñ ô ð
 ˆmØØ*ðñ ô ð ˆ]ØØ7Ø)ðñ ô ð
 "�MØØ*ðñ ô ð #�]ØØ1ðñ ô ð}B-ð B-ð B-€ð Bð Bð Bñ BðP ðð ð ð ð ñ ô ñ „ðð&kàˆlðkð
 
ˆ5ðkð ˆEðkð ˆEðkð ˆUðkð ˆEðkð ˆEðkð ˆEðkð  
ˆ8ð!kð" �(ð#kð$ �Hð%kð& �ð'kð, Ðð-kð. Ð$ð/kð0 Ð'ð1kð2 Ð!ð3kð8 ˆIð9kð kð: ˜9ð;kð@ �\ðAkðB �,ðCkðH ˆkðIkðJ �;ðKkðP ÐðQkðR ÐðSkðT ˜-ðUkðZ �(ð[kð\ �ð]kð^ ˜ð_kðd �Jðekðf 
ˆ:ðgkðl 	ˆ-ðmkðn �}ðokðt �ðukðv �ðwkð kð kðx �Fðykð~ �ðkðD �ðEkðF ˆiðGkðH ˆIðIkðJ �YðKkðL Ð+ðMkðN Ð+ðOkðP Ð0ðQkðV Ð%ðWkðX Ð'ðYkð` 	ˆ-ðakðb �Mðckðd �}ðekðj ˆHðkkðl �8ðmkðr 
ˆ9ðskð kðt ØØð Øð ØØØØØØØðUkð kð k€ð kð kð kñ kðf Ø"Ø'Ø"ØØØØ"ð	$ð 	$Ð ð 	ð 	ð 	ñ 	ð &Ø.Ø(Ø*ð	)ð )Ð ð ð ð ñ ð!ð !ð !ð !ðCð Cð Cð CðLð ð ð ð$1ð 1ð 1ð 1ð'ð 'ð 'ð 'ð 'ðX$ð $ð $ð $ðNFð Fð Fð Fð)ð )ð )ð )ð\ 04Ø7;ð8ð 8ð 8ð 8ð 8ð 8ð 8r!   