§
    ìŽ’jN±  ã                   óŽ  — U d Z ddlZddlmZmZ ddlmZmZ ddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlmZmZ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 ej        rddlZ ddl!Z!ddlm"Z" ddlmZ ddlmZ  e
j#        d¦  «        Z$ej%        dk    rej&        Z'ej        ej&        fZ(ddlm)Z) nej*        Z'ej        fZ(ddl+m)Z) ej        rddl,m-Z. ddl/m0Z1 neZ.ej2        e3d<   eZ1ej2        e3d<   ddddœZ4d„ e4 5                    ¦   «         D ¦   «         Z6ddœde"j7        de8de8de9d e8f
d!„Z:de"j7        d"e8d e8fd#„Z;d$e"j7        d%e<d e8fd&„Z=d'ej>        d e?ej>                 fd(„Z@d$e"j7        d"e8d ee8         fd)„ZAd*ed ejB        fd+„ZCd,ejD        d ejE        fd-„ZFd.eejD        eejD                 f         d e?ejE                 fd/„ZGd0eejH        e?ejH                 f         d e?ejB                 fd1„ZId2ejH        d ejB        fd3„ZJd2ejH        d ejB        fd4„ZKd2ejL        d ejB        fd5„ZMd6eejN                 d ejO        fd7„ZPd8eee?ejN                 ejN        e?ejO                 f                  d e?ejO                 fd9„ZQd:eeee8ef                           d ee?ejR                          fd;„ZSeejT        ejU        ejN        f         ZVd<eeVejU        df         d ejT        fd=„ZWde"j7        d>ee?ejT                 e?ejU                 eVf         d ee?e8         e?ejT                 f         fd?„ZXd>eeejY        ejZ        ejT        f                  d e?ejT                 fd@„Z[dAej>        d dfdB„Z\dCed dfdD„Z]dAedee"j7                 d dfdE„Z^	 dsdFddGœdAej>        dee"j7                 dHeej>                 dIe<dJee_e9                  d dfdK„Z`dLedee"j7                 d eja        fdM„ZbdCeejc        ef         d e)ej>                 fdN„Zddee"j7                 dCeejc        ef         d eeja                 fdO„ZedCeejf        ef         d eejg                 fdP„ZhdCeji        d eejg                 fdQ„Zjde"j7        dCed eeej0        ef                  fdR„Zkde"j7        dCe?e         d e?ej0                 fdS„Zlde"j7        dTe8d e8fdU„Zmde"j7        dVejn        d ejo        fdW„Zpde"j7        dVejq        d ejr        fdX„ZsdYee8ejt        f         d eju        fdZ„ZvdYewe8ef         d ewe8ef         fd[„Zxde"j7        dTe8d e8fd\„Zyd]e8d e8fd^„Zzd_Z{d`Z|daZ}dbZ~d$e"j7        dcej>        d efdd„ZdTeee8ej€        ej�        ej‚        f                  d e8fde„Zƒdfe8d eej„        e8f         fdg„Z…d<ej†        d ejT        fdh„Z‡d>eeej†                 ej†        f         d e?ejT                 fdi„Zˆ	 	 dtdjeeeej†                 ej†        f                  dke<d ej‰        fdl„ZŠdmeejD        eejD                 f         d ej‹        fdn„ZŒdoe?ej�                 d e?ewe8ef                  fdp„ZŽd"e8d e<fdq„Z�dCed efdr„Z�dS )uz"Transformers for Google GenAI SDK.é    N)ÚIterableÚMapping)ÚEnumÚEnumMeta)ÚAnyÚGenericAliasÚListÚOptionalÚSequenceÚUnioné   )Ú
_mcp_utils)Úmcp_to_gemini_tool)Úget_value_by_path)Úis_duck_type_of)Ú_api_client)Ú_common)Útypeszgoogle_genai._transformers)é   é
   )Ú	TypeGuard)ÚClientSession©ÚToolÚMcpClientSessionÚMcpToolÚexactMatchSpecÚbleuSpecÚ	rougeSpec)Úexact_matchÚbleuÚ
rouge_specc                 ó   — i | ]\  }}||“Œ	S © r$   )Ú.0ÚkÚvs      úHC:\Projects\DSCons\.venv\Lib\site-packages\google\genai\_transformers.pyú
<dictcomp>r)   D   s   € ÐLÐLÐL¡D A q˜1˜aÐLÐLÐLó    é   )Úcollection_hierarchy_depthÚclientÚresource_nameÚcollection_identifierr,   Úreturnc                óž  — |                      |› d�¦  «         o |› d|› �                     d¦  «        dz   |k    }| j        r‚|                      d¦  «        r|S |                      d¦  «        rd| j        › d|› �S |                      |› d�¦  «        rd| j        › d| j        › d|› �S |rd| j        › d| j        › d|› d|› �S |S |r|› d|› �S |S )a|  Prepends resource name with project, location, collection_identifier if needed.

  The collection_identifier will only be prepended if it's not present
  and the prepending won't violate the collection hierarchy depth.
  When the prepending condition doesn't meet, returns the input
  resource_name.

  Args:
    client: The API client.
    resource_name: The user input resource name to be completed.
    collection_identifier: The collection identifier to be prepended. See
      collection identifiers in https://google.aip.dev/122.
    collection_hierarchy_depth: The collection hierarchy depth. Only set this
      field when the resource has nested collections. For example,
      `users/vhugo1802/events/birthday-dinner-226`, the collection_identifier is
      `users` and collection_hierarchy_depth is 4. See nested collections in
      https://google.aip.dev/122.

  Example:

    resource_name = 'cachedContents/123'
    client.vertexai = True
    client.project = 'bar'
    client.location = 'us-west1'
    _resource_name(client, 'cachedContents/123',
      collection_identifier='cachedContents')
    returns: 'projects/bar/locations/us-west1/cachedContents/123'

  Example:

    resource_name = 'projects/foo/locations/us-central1/cachedContents/123'
    # resource_name = 'locations/us-central1/cachedContents/123'
    client.vertexai = True
    client.project = 'bar'
    client.location = 'us-west1'
    _resource_name(client, resource_name,
      collection_identifier='cachedContents')
    returns: 'projects/foo/locations/us-central1/cachedContents/123'

  Example:

    resource_name = '123'
    # resource_name = 'cachedContents/123'
    client.vertexai = False
    _resource_name(client, resource_name,
      collection_identifier='cachedContents')
    returns 'cachedContents/123'

  Example:
    resource_name = 'some/wrong/cachedContents/resource/name/123'
    resource_prefix = 'cachedContents'
    client.vertexai = False
    # client.vertexai = True
    _resource_name(client, resource_name,
      collection_identifier='cachedContents')
    returns: 'some/wrong/cachedContents/resource/name/123'

  Returns:
    The completed resource name.
  ú/r   ú	projects/z
locations/ú/locations/)Ú
startswithÚcountÚvertexaiÚprojectÚlocation)r-   r.   r/   r,   Ú$should_prepend_collection_identifiers        r(   Ú_resource_namer;   G   sO  € ðJ ×
"Ò
"Ð&;Ð#>Ð#>Ð#>Ñ
?Ô
?Ð?ð $ð #Ð
4Ð
4 ]Ð
4Ð
4×
:Ò
:¸3Ñ
?Ô
?À!Ñ
CØ	#ò$ð	 'ð „_ð Ø×Ò Ñ,Ô,ð 	ØÐØ	×	!Ò	! ,Ñ	/Ô	/ð Ø9˜œÐ9Ð9¨-Ð9Ð9Ð9Ø	×	!Ò	!Ð%:Ð"=Ð"=Ð"=Ñ	>Ô	>ð ØU˜œÐUÐU°F´OÐUÐUÀmÐUÐUÐUØ	-ð Øm˜œÐmÐm°F´OÐmÐmÐF[ÐmÐmÐ^kÐmÐmÐmàÐà+ð Ø%Ð7Ð7¨Ð7Ð7Ð7àÐr*   Úmodelc                 ó¤  — |st          d¦  «        ‚d|v sd|v sd|v rt          d¦  «        ‚| j        rk|                     d¦  «        s*|                     d¦  «        s|                     d¦  «        r|S d	|v r!|                     d	d
¦  «        \  }}d|› d|› �S d|› �S |                     d¦  «        r|S |                     d¦  «        r|S d|› �S )Nzmodel is required.z..Ú?ú&zinvalid model parameter.r3   úmodels/úpublishers/r2   r   z/models/zpublishers/google/models/ztunedModels/)Ú
ValueErrorr7   r5   Úsplit)r-   r<   Ú	publisherÚmodel_ids       r(   Út_modelrF   ¤   s  € Ø	ð +Ý
Ð)Ñ
*Ô
*Ð*Ø	ˆU€]€]�c˜U�l�l c¨U l lÝ
Ð/Ñ
0Ô
0Ð0Ø„_ð à×Ò˜Ñ%Ô%ð
1à×Ò˜IÑ&Ô&ð
1ð ×Ò˜MÑ*Ô*ð
1ð
 €lØ	�ˆˆØ!ŸKšK¨¨QÑ/Ô/Ñ€i�Ø8˜9Ð8Ð8¨hÐ8Ð8Ð8à0¨Ð0Ð0Ð0à×Ò˜	Ñ"Ô"ð Ø€lØ	×	Ò	˜.Ñ	)Ô	)ð Ø€là�uÐÐÐr*   Ú
api_clientÚbase_modelsc                 ó(   — | j         r|rdS dS |rdS dS )Nzpublishers/google/modelsÚmodelsÚtunedModels)r7   )rG   rH   s     r(   Út_models_urlrL   ¾   s4   € ð Ôð 	Øð Ø'Ð'àˆXàð ØˆXàˆ]r*   Úresponsec                 óf  — | sg S |                       d¦  «        }|�|S |                       d¦  «        }|�|S |                       d¦  «        }|�|S |                       d¦  «        �|                       d¦  «        €g S t                               d¦  «         t                               d| ¦  «         g S )NrJ   rK   ÚpublisherModelsÚhttpHeadersÚjsonPayloadz!Cannot determine the models type.z1Cannot determine the models type for response: %s)ÚgetÚloggerÚwarningÚdebug)rM   rJ   Útuned_modelsÚpublisher_modelss       r(   Út_extract_modelsrX   Í   sÇ   € ð 
ð Ø€Ià/7¯|ª|¸HÑ/EÔ/E€&ØÐØ€Mà5=·\²\À-Ñ5PÔ5P€,ØÐØÐà9A¿ºØñ:ô :Ðð Ð!ØÐð ‡l‚l�=Ñ!Ô!Ð-Ø
�,Š,�}Ñ
%Ô
%Ð
-à€Iå
‡N‚NÐ6Ñ7Ô7Ð7Ý
‡L‚LÐDÀhÑOÔOÐOØ€Ir*   c                 óò   — t          | |¦  «        }|sd S |                     d¦  «        r| j        rd| j        › d| j        › d|› �S |                     d¦  «        r| j        rd| j        › d| j        › d|› �S |S )NrA   r3   r4   r2   r@   z/publishers/google/)rF   r5   r7   r8   r9   )rG   r<   s     r(   Út_caches_modelrZ   ì   sµ   € õ �*˜eÑ
$Ô
$€%Ø	ð Øˆ4Ø
×Ò�mÑ$Ô$ð ¨Ô)<ð ð 	Q�JÔ&ÐPÐP°:Ô3FÐPÐPÈÐPÐPðð ×Ò˜	Ñ"Ô"ð  zÔ':ð Øe�zÔ)ÐeÐe°jÔ6IÐeÐeÐ^cÐeÐeÐeà€Lr*   Úimagec                 ób  — d}t          ¦   «         }| j        dk    r2t          | dd¦  «        r!| j        dv rd}|                     d¬¦  «         t          j        ¦   «         } | j        ||fi |¤Ž |                     ¦   «         }d| 	                    ¦   «         › �}t          j        ||¬	¦  «        S )
NÚPNGÚJPEGÚfilenameÚ )Ú1ÚLÚRGBÚRGBXÚCMYKÚkeep)Úqualityúimage/)ÚdataÚ	mime_type)ÚdictÚformatÚgetattrÚmodeÚupdateÚioÚBytesIOÚsaveÚgetvalueÚlowerr   ÚBlob)r[   Úimage_formatÚsave_paramsÚimage_ioÚimage_bytesrj   s         r(   Úpil_to_blobrz   ý   sÁ   € Ø€,Ý $¡¤€+à„l�fÒÐÝ
�%˜ RÑ
(Ô
(ð à
Œ*Ð9Ð
9Ð
9à€LØ×Ò˜vÐÑ&Ô&Ð&åŒZ‰\Œ\€(Ø€%„*ˆX�|Ð3Ð3 {Ð3Ð3Ð3Ø×!Ò!Ñ#Ô#€+Ø-�|×)Ò)Ñ+Ô+Ð-Ð-€)å	Œ˜°	Ð	:Ñ	:Ô	:Ð:r*   Úfunction_responsec                 ó  — | st          d¦  «        ‚t          | t          ¦  «        rt          j                             | ¦  «        S t          | t          j        ¦  «        r| S t          dt          | ¦  «        › �¦  «        ‚)Nzfunction_response is required.zOCould not parse input as FunctionResponse. Unsupported function_response type: )	rB   Ú
isinstancerk   r   ÚFunctionResponseÚmodel_validater   Ú	TypeErrorÚtype)r{   s    r(   Út_function_responser‚     s�   € ð 
ð 7Ý
Ð5Ñ
6Ô
6Ð6ÝÐ!¥4Ñ(Ô(ð ÝÔ!×0Ò0Ð1BÑCÔCÐCÝÐ(­%Ô*@ÑAÔAð ØÐå
ð	>Ý$(Ð):Ñ$;Ô$;ð	>ð 	>ñô ð r*   Úfunction_responsesc                 ó†   — | st          d¦  «        ‚t          | t          ¦  «        rd„ | D ¦   «         S t          | ¦  «        gS )Nz function_responses are required.c                 ó,   — g | ]}t          |¦  «        ‘ŒS r$   )r‚   )r%   rM   s     r(   ú
<listcomp>z(t_function_responses.<locals>.<listcomp>)  s!   € ÐMÐMÐM¨hÕ Ñ)Ô)ÐMÐMÐMr*   )rB   r}   r   r‚   ©rƒ   s    r(   Út_function_responsesrˆ      sU   € ð 
ð 9Ý
Ð7Ñ
8Ô
8Ð8ÝÐ"¥HÑ-Ô-ð 5ØMÐMÐ:LÐMÑMÔMÐMåÐ 2Ñ3Ô3Ð4Ð4r*   Úblobsc                 ód   — t          | t          ¦  «        rd„ | D ¦   «         S t          | ¦  «        gS )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r$   )Út_blob)r%   Úblobs     r(   r†   zt_blobs.<locals>.<listcomp>2  ó   € Ð+Ð+Ð+˜T�F�4‰LŒLÐ+Ð+Ð+r*   )r}   ÚlistrŒ   )r‰   s    r(   Út_blobsr�   .  s8   € õ �•tÑÔð Ø+Ð+ UÐ+Ñ+Ô+Ð+å�5‰MŒMˆ?Ðr*   r�   c                 óÌ  — | st          d¦  «        ‚t          | t          j        ¦  «        r| S t	          | t
          ¦  «        rt          j                             | ¦  «        S d| j        j         	                    ¦   «         v rE	 dd l
}|j        j        }n# t          $ r d }Y nw xY w|�t	          | |¦  «        rt          | ¦  «        S t          dt          | ¦  «        › �¦  «        ‚)Nzblob is required.r[   r   z6Could not parse input as Blob. Unsupported blob type: )rB   r   r   ru   r}   rk   r   Ú	__class__Ú__name__rt   Ú	PIL.ImageÚImageÚImportErrorrz   r€   r�   )r�   ÚPILÚ	PIL_Images      r(   rŒ   rŒ   7  sþ   € Ø	ð *Ý
Ð(Ñ
)Ô
)Ð)å�T�5œ:Ñ&Ô&ð Ø€Kå�•dÑÔð +ÝŒ:×$Ò$ TÑ*Ô*Ð*à�”Ô'×-Ò-Ñ/Ô/Ð/Ð/ðØÐÐÐà”)”/€i€iøÝð ð ð Ø€i€i€iðøøøð Ð¥¨D°)Ñ!<Ô!<ÐÝ˜ÑÔÐåØK½tÀD¹z¼zÐKÐKñ	ô 	ð s   ÂB ÂB#Â"B#c                 ó”   — t          | ¦  «        } | j        r| j                             d¦  «        r| S t          d| j        ›�¦  «        ‚)Nrh   úUnsupported mime type: ©rŒ   rj   r5   rB   ©r�   s    r(   Út_image_blobr�   Q  óL   € Ý	�‰Œ€$Ø	„^ð ˜œ×1Ò1°(Ñ;Ô;ð Ø€KÝÐ?¨T¬^Ð?Ð?Ñ@Ô@Ð@r*   c                 ó”   — t          | ¦  «        } | j        r| j                             d¦  «        r| S t          d| j        ›�¦  «        ‚)Nzaudio/rš   r›   rœ   s    r(   Út_audio_blobr    X  rž   r*   Úpartc                 óš  — | €t          d¦  «        ‚t          | t          ¦  «        rt          j        | ¬¦  «        S t          | t          j        ¦  «        rH| j        r| j        st          d¦  «        ‚t          j         	                    | j        | j        ¬¦  «        S t          | t          ¦  «        rg	 t          j                             | ¦  «        S # t          j        $ r5 t          j        t          j                             | ¦  «        ¬¦  «        cY S w xY wt          | t          j        ¦  «        r| S d| j        j                             ¦   «         v rX	 dd l}|j        j        }n# t(          $ r d }Y nw xY w|�2t          | |¦  «        r"t          j        t+          | ¦  «        ¬¦  «        S t          d	t-          | ¦  «        › �¦  «        ‚)
Nzcontent part is required.)Útextz$file uri and mime_type are required.)Úfile_urirj   )Ú	file_datar[   r   )Úinline_datazUnsupported content part type: )rB   r}   Ústrr   ÚPartr   ÚFileÚurirj   Úfrom_urirk   r   ÚpydanticÚValidationErrorÚFileDatar’   r“   rt   r”   r•   r–   rz   r�   ©r¡   r—   r˜   s      r(   Út_partr°   _  sÏ  € Ø	€\Ý
Ð0Ñ
1Ô
1Ð1Ý�•cÑÔð !ÝŒ:˜4Ð Ñ Ô Ð Ý�T�5œ:Ñ&Ô&ð LØŒ8ð ?˜4œ>ð ?ÝÐ=Ñ>Ô>Ð>ÝŒ:×Ò¨¬¸D¼NÐÑKÔKÐKÝ�•dÑÔð GðGÝŒZ×&Ò& tÑ,Ô,Ð,øÝÔ#ð Gð Gð GÝŒZ¥%¤.×"?Ò"?ÀÑ"EÔ"EÐFÑFÔFÐFÐFÐFðGøøøå�T�5œ:Ñ&Ô&ð Ø€Kà�”Ô'×-Ò-Ñ/Ô/Ð/Ð/ðØÐÐÐà”)”/€i€iøÝð ð ð Ø€i€i€iðøøøð Ð¥¨D°)Ñ!<Ô!<ÐÝŒZ¥K°Ñ$5Ô$5Ð6Ñ6Ô6Ð6ÝÐAµT¸$±Z´ZÐAÐAÑBÔBÐBs%   Â4C ÃADÄDÅE( Å(E7Å6E7Úpartsc                 ó´   — | �t          | t          ¦  «        r| st          d¦  «        ‚t          | t          ¦  «        rd„ | D ¦   «         S t          | ¦  «        gS )Nzcontent parts are required.c                 ó,   — g | ]}t          |¦  «        ‘ŒS r$   )r°   )r%   r¡   s     r(   r†   zt_parts.<locals>.<listcomp>†  rŽ   r*   )r}   r�   rB   r°   ©r±   s    r(   Út_partsrµ   }  s^   € ð €]•z %­Ñ.Ô.€]°u€]Ý
Ð2Ñ
3Ô
3Ð3Ý�•tÑÔð Ø+Ð+ UÐ+Ñ+Ô+Ð+å�5‰MŒMˆ?Ðr*   Úpredictionsc           
      óî   — | sd S g }| D ]k}|                      d¦  «        rT|                     t          j        t          j        |d         d         |d         d         ¬¦  «        ¬¦  «        ¦  «         Œl|S )Nr[   ÚgcsUriÚ
imageBytes)Úgcs_uriry   )r[   )rR   Úappendr   ÚGeneratedImager•   )r¶   ÚimagesÚ
predictions      r(   Út_image_predictionsr¿   ‹  sš   € ð 
ð Øˆ4Ø€&Øð 	ð 	€jØ‡~‚~�gÑÔð Ø‡m‚mÝ
Ô
Ý”KØ$ WÔ-¨hÔ7Ø(¨Ô1°,Ô?ðñ ô ðñ ô ñô ð øð 
€-r*   Úcontentc                 ó²  — | €t          d¦  «        ‚t          | t          j        ¦  «        r| S t	          | t
          ¦  «        rw	 t          j                             | ¦  «        S # t          j        $ rE t          | ¦  «        }|j
        rt          j        |g¬¦  «        nt          j        |g¬¦  «        cY S w xY wt          | t          j        ¦  «        r#t          j        t          | ¦  «        g¬¦  «        S t          | t          j        ¦  «        r3| j
        rt          j        | g¬¦  «        nt          j        | g¬¦  «        S t          j        | ¬¦  «        S )Nzcontent is required.r´   )rB   r   r   ÚContentr}   rk   r   r¬   r­   r°   Úfunction_callÚModelContentÚUserContentr©   r¨   )rÀ   Úpossible_parts     r(   Ú	t_contentrÇ   ¡  sb  € ð €_Ý
Ð+Ñ
,Ô
,Ð,Ý�W�eœmÑ,Ô,ð Ø€NÝ��ÑÔð 	ðÝŒ]×)Ò)¨'Ñ2Ô2Ð2øÝÔ#ð ð ð Ý˜W‘o”o€mð Ô(ð8�%Ô
 M ?Ð
3Ñ
3Ô
3Ð
3åÔ ¨ Ð7Ñ7Ô7ðð ð ðøøøõ �W�eœjÑ)Ô)ð 6ÝÔ¥F¨7¡O¤OÐ#4Ð5Ñ5Ô5Ð5Ý�W�eœjÑ)Ô)ð ð Ô ð	0�Ô ' Ð+Ñ+Ô+Ð+åÔ g YÐ/Ñ/Ô/ðõ
 
Ô	 Ð	)Ñ	)Ô	)Ð)s   ÁA# Á#AB7Â6B7Úcontentsc                 ó�  — t          |t          ¦  «        rd„ |D ¦   «         }nt          |¦  «        g}| j        rŒg }|D ]…}|��t          |t          ¦  «        rt
          j                             |¦  «        }|j        �F|j        D ]>}|j	        r| 
                    |j	        ¦  «         Œ$t                               d¦  «         Œ?Œ†|S |S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r$   )rÇ   ©r%   rÀ   s     r(   r†   z(t_contents_for_embed.<locals>.<listcomp>Â  s    € ÐGÐGÐG°7�I gÑ.Ô.ÐGÐGÐGr*   z/Non-text part found, only returning text parts.)r}   r�   rÇ   r7   rk   r   rÂ   r   r±   r£   r»   rS   rT   )r-   rÈ   Útransformed_contentsÚ
text_partsrÀ   r¡   s         r(   Út_contents_for_embedrÎ   ½  sí   € õ ��$ÑÔð 1ØGÐG¸hÐGÑGÔGÐÐå% hÑ/Ô/Ð0Ðà„_ð  Ø€JØ'ð 	Qð 	QˆØ	Ð	Ý�g�tÑ$Ô$ð 	:Ý”M×0Ò0°Ñ9Ô9ˆ'ØŒ=Ð$Ø”mð Qð QˆdØŒyð QØ×Ò ¤	Ñ*Ô*Ð*Ð*å�nŠnÐOÑPÔPÐPÐPøØÐàÐr*   c                 óÊ  ‡‡‡— | �t          | t          ¦  «        r| st          d¦  «        ‚t          | t          ¦  «        st          | ¦  «        gS g }g }dt          t
          j        t          f         dt          t
          j                 fd„}dt
          j	        dt          fd„Šdt          t
          j	                 dt          fˆfd„Šdt          t
          j                 d	t          t
          j	                 dd fˆfd
„Šdt          t
          j                 d	t          t
          j	                 dt
          j        dd fˆˆˆfd„}| D �]}t          |t
          j        ¦  «        st          |t          ¦  «        r` ‰||¦  «         t          |t          ¦  «        r)|                     t          j        |¬¦  «        ¦  «         Œ||                     |¦  «         Œ’ ||¦  «        r ||||¦  «         Œ«t          |t          ¦  «        r3|                     t
          j                             |¦  «        ¦  «         Œót          dt#          |¦  «        › �¦  «        ‚ ‰||¦  «         |S )Nzcontents are required.r¡   r0   c                 ó\  — t          | t          ¦  «        s4t          | t          j        ¦  «        st          | t          j        ¦  «        rdS t          | t          ¦  «        rs| sdS 	 t          j                             | ¦  «         dS # t          j	        $ r; 	 t          j
                             | ¦  «         Y dS # t          j	        $ r Y Y dS w xY ww xY wd| j        j                             ¦   «         v r8	 dd l}|j        j        }n# t           $ r d }Y nw xY w|�t          | |¦  «        rdS dS )NTFr[   r   )r}   r§   r   r   r©   r¨   rk   r   r¬   r­   r®   r’   r“   rt   r”   r•   r–   r¯   s      r(   Ú_is_partzt_contents.<locals>._is_partä  sl  € õ 	�4�ÑÔðå˜4¥¤Ñ,Ô,ðõ ˜4¥¤Ñ,Ô,ðð
 ˆTå�$�ÑÔð Øð àˆuðÝŒ
×!Ò! $Ñ'Ô'Ð'ØˆtøÝÔ%ð ð ð ð	Ý
Œ.×
'Ò
'¨Ñ
-Ô
-Ð
-Ø��øÝÔ'ð 	ð 	ð 	Ø���ð	øøøð	øøøð �$”.Ô)×/Ò/Ñ1Ô1Ð1Ð1ðØÐÐÐà”I”Oˆ	ˆ	øÝð ð ð Øˆ	ˆ	ˆ	ðøøøð 
Ð	¥:¨d°IÑ#>Ô#>Ð	Øˆtàˆ5s<   Á&B ÂCÂB9Â9CÃCÃCÃCÃ5D ÄDÄDc                 ó   — | j          S ©N)rÃ   )r¡   s    r(   Ú_is_user_partz!t_contents.<locals>._is_user_part	  s   € ØÔ!Ð!Ð!r*   r±   c                 ó:   •— t          ˆfd„| D ¦   «         ¦  «        S )Nc              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rÓ   r$   )r%   r¡   rÔ   s     €r(   ú	<genexpr>z6t_contents.<locals>._are_user_parts.<locals>.<genexpr>  s-   øè è € Ð5Ð5 tˆ}ˆ}˜TÑ"Ô"Ð5Ð5Ð5Ð5Ð5Ð5r*   )Úall)r±   rÔ   s    €r(   Ú_are_user_partsz#t_contents.<locals>._are_user_parts  s&   ø€ ÝÐ5Ð5Ð5Ð5¨uÐ5Ñ5Ô5Ñ5Ô5Ð5r*   ÚresultÚaccumulated_partsc                 ó®   •— |sd S |                        ‰|¦  «        rt          j        |¬¦  «        nt          j        |¬¦  «        ¦  «         g |d d …<   d S )Nr´   )r»   r   rÅ   rÄ   )rÚ   rÛ   rÙ   s     €r(   Ú$_append_accumulated_parts_as_contentz8t_contents.<locals>._append_accumulated_parts_as_content  sx   ø€ ð ð Ø€fØ
‡M‚Màˆ?Ð,Ñ-Ô-ð	9�ÔÐ 1Ð2Ñ2Ô2Ð2åÔÐ&7Ð8Ñ8Ô8ñô ð ð
 Ð�a�a�aÑÐÐr*   Úcurrent_partc                 ó¬   •— t          |¦  «        } ‰|¦  «         ‰|¦  «        k    r|                     |¦  «         d S  ‰| |¦  «         |g|d d …<   d S rÓ   )r°   r»   )rÚ   rÛ   rÞ   rÝ   rÙ   rÔ   s      €€€r(   Ú_handle_current_partz(t_contents.<locals>._handle_current_part  sw   ø€ õ
 ˜,Ñ'Ô'€LØ€}�\Ñ"Ô" o oÐ6GÑ&HÔ&HÒHÐHØ×Ò˜|Ñ,Ô,Ð,Ð,Ð,à*Ð*¨6Ð3DÑEÔEÐEØ*˜^Ð˜˜˜ÑÐÐr*   r´   zUnsupported content type: )r}   r�   rB   rÇ   r   r   ÚPartUnionDictr   r   r¨   ÚboolrÂ   r   r»   rÅ   rk   r   r�   )	rÈ   rÚ   rÛ   rÑ   rà   rÀ   rÝ   rÙ   rÔ   s	         @@@r(   Ú
t_contentsrã   ×  sÄ  øøø€ ð
 Ð�* X­tÑ4Ô4Ð¸XÐÝ
Ð-Ñ
.Ô
.Ð.Ý	�H�dÑ	#Ô	#ð !Ý�hÑÔÐ Ð à "€&Ø(*Ðð#Ý•%Ô%¥sÐ*Ô+ð#å•Ô$Ô%ð#ð #ð #ð #ðJ"�%œ*ð "­ð "ð "ð "ð "ð6�T¥%¤*Ô-ð 6µ$ð 6ð 6ð 6ð 6ð 6ð 6ðÝ•5”=Ô!ðå�eœjÔ)ðð ðð ð ð ð ð ð
,Ý•5”=Ô!ð
,å�eœjÔ)ð
,õ Ô'ð
,ð ð	
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð& ð Eñ E€gÝ�w¥¤Ñ.Ô.ð Eµ*¸WÅdÑ2KÔ2Kð EØ*Ð*¨6Ð3DÑEÔEÐEÝ	�G�TÑ	"Ô	"ð Ø�Š•eÔ'¨gÐ6Ñ6Ô6Ñ7Ô7Ð7Ð7à�Š�gÑÔÐÐØ	ˆ�'Ñ	Ô	ð EØÐ˜6Ð#4°gÑ>Ô>Ð>Ð>Ý	�G�TÑ	"Ô	"ð Eà‡m‚m•E”M×0Ò0°Ñ9Ô9Ñ:Ô:Ð:Ð:åÐCµD¸±M´MÐCÐCÑDÔDÐDà&Ð& vÐ/@ÑAÔAÐAà	€-r*   Úschemac                 ób  — |                       dd¦  «        dk    r
d| d<   | d= dS d| v r„| d         D ]}}d|v ru|d         dk    rid| d<   | d                              ddi¦  «         t          | d         ¦  «        dk    r.| d         d                              ¦   «         D ]
\  }}|| |<   Œ| d= Œ|dS dS )	a  Process null fields in the schema so it is compatible with OpenAPI.

  The OpenAPI spec does not support 'type: 'null' in the schema. This function
  handles this case by adding 'nullable: True' to the null field and removing
  the {'type': 'null'} entry.

  https://swagger.io/docs/specification/v3_0/data-models/data-types/#null

  Example of schema properties before and after handling null fields:
    Before:
      {
        "name": {
          "title": "Name",
          "type": "string"
        },
        "total_area_sq_mi": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": None,
          "title": "Total Area Sq Mi"
        }
      }

    After:
      {
        "name": {
          "title": "Name",
          "type": "string"
        },
        "total_area_sq_mi": {
          "type": "integer",
          "nullable": true,
          "default": None,
          "title": "Total Area Sq Mi"
        }
      }
  r�   NÚnullTÚnullableÚanyOfr   r   )rR   ÚremoveÚlenÚitems)rä   ÚitemÚkeyÚvals       r(   Úhandle_null_fieldsrï   C  só   € ðX ‡Z‚Z�˜ÑÔ Ò'Ð'Ø€Fˆ:ÑØˆvˆˆˆØ�&ÐÐØ�w”ð ð ˆØ	�4ˆˆ˜D œL¨FÒ2Ð2Ø!ˆˆzÑØˆwŒ×Ò ¨Ð/Ñ0Ô0Ð0Ýˆv�gŒÑÔ 1Ò$Ð$à  œ/¨!Ô,×2Ò2Ñ4Ô4ð ð ‰hˆc�3ØˆF�3‰KˆKØ�Wˆoøð Ððð r*   Úoriginc                 ó&   — t          d| › �¦  «        ‚)z2Raises an error if the schema type is unsupported.úUnsupported schema type: )rB   ©rð   s    r(   Ú"_raise_for_unsupported_schema_typerô   ~  s   € åÐ7¨vÐ7Ð7Ñ8Ô8Ð8r*   c                 ó’   — |r@|j         s;|                      d¦  «        s|                      d¦  «        rt          d¦  «        ‚d S d S d S )NÚadditionalPropertiesÚadditional_propertiesztadditionalProperties is only supported in Gemini Enterprise Agent Platform mode, , not in Gemini Developer API mode.)r7   rR   rB   )rä   r-   s     r(   Ú'_raise_for_unsupported_mldev_propertiesrø   ƒ  s‰   € ð ðMàŒoðMð �*Š*Ð+Ñ
,Ô
,ð	Mð
 �ZŠZÐ/Ñ0Ô0ðMõ ð  Lñ  Mô  Mð  MðMð Mð Mð Mð Mð Mr*   T©Úorder_propertiesÚvisited_dicts_pathÚdefsrú   rû   c                ó  ‡‡‡‡‡— ‰€t          ¦   «         Št          | ¦  «        ‰v rdS ‰                     t          | ¦  «        ¦  «         |                      d¦  «        dk    r| d= t	          | ‰¦  «         dD ]"\  }}|                      |d¦  «        x}�|| |<   Œ#‰€D|                      di ¦  «        Š‰                     ¦   «         D ]\  }}	t          |	‰‰‰‰¬¦  «         Œt          | ¦  «         |                      dd¦  «        x}
�4|  	                    ‰|
 
                    d¦  «        d	                  ¦  «         d
t          j        dt          j        fˆˆˆˆfd„Š|                      d¦  «        x}�5ˆfd„|D ¦   «         | d<   ‰                     t          | ¦  «        ¦  «         dS |                      d¦  «        }t          |t          ¦  «        r|j        }t          |t"          ¦  «        r|                     ¦   «         }|                      d¦  «        }|�|dk    r
|g| d<   | d= nt'          d¦  «        ‚|dk    rÖ|                      d¦  «        x}�„t)          |                     ¦   «         ¦  «        D ]\  }}	 ‰|	¦  «        ||<   Œt+          |                     ¦   «         ¦  «        dk    r*‰r(d| vr$t)          |                     ¦   «         ¦  «        | d<   |                      d¦  «        x}�#t          |t.          ¦  «        r ‰|¦  «        | d<   nS|dk    rM|                      d¦  «        x}� ‰|¦  «        | d<   |                      d¦  «        x}�ˆfd„|D ¦   «         | d<   ‰                     t          | ¦  «        ¦  «         dS )a{  Updates the schema and each sub-schema inplace to be API-compatible.

  - Inlines the $defs.

  Example of a schema before and after (with mldev):
    Before:

    `schema`

    {
        'items': {
            '$ref': '#/$defs/CountryInfo'
        },
        'title': 'Placeholder',
        'type': 'array'
    }


    `defs`

    {
      'CountryInfo': {
        'properties': {
          'continent': {
              'title': 'Continent',
              'type': 'string'
          },
          'gdp': {
              'title': 'Gdp',
              'type': 'integer'}
          },
        }
        'required':['continent', 'gdp'],
        'title': 'CountryInfo',
        'type': 'object'
      }
    }

    After:

    `schema`
     {
        'items': {
          'properties': {
            'continent': {
              'title': 'Continent',
              'type': 'string'
            },
            'gdp': {
              'title': 'Gdp',
              'type': 'integer'
            },
          }
          'required':['continent', 'gdp'],
          'title': 'CountryInfo',
          'type': 'object'
        },
        'type': 'array'
    }
  NÚtitleÚPlaceholderLiteralEnum))r÷   rö   )Úany_ofrè   )Úprefix_itemsÚprefixItems)Úproperty_orderingÚpropertyOrderingz$defsrù   ú$refúdefs/éÿÿÿÿÚ
sub_schemar0   c                 óÈ   •— |                       dd¦  «        x}�4‰|                     d¦  «        d                  } t          | ¦  «        ‰v ri S t          | ‰‰‰‰¬¦  «         | S )z@Returns the processed `sub_schema`, resolving its '$ref' if any.r  Nr  r  rù   )ÚpoprC   ÚidÚprocess_schema)r  Úrefr-   rü   rú   rû   s     €€€€r(   Ú_recursez process_schema.<locals>._recurse  s|   ø€ à�~Š~˜f dÑ+Ô+Ð+ˆÐ8Ø˜Ÿ	š	 'Ñ*Ô*¨2Ô.Ô/€jÝ	ˆJ‰ŒÐ-Ð	-Ð	-Øˆ	åØØØØ)Ø-ðñ ô ð ð Ðr*   rè   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r$   r$   )r%   r  r  s     €r(   r†   z"process_schema.<locals>.<listcomp>  s#   ø€ ÐEÐEÐE°
�x�x 
Ñ+Ô+ÐEÐEÐEr*   r�   ÚconstÚSTRINGÚenumzLiteral values must be strings.ÚOBJECTÚ
propertiesr   r  r  rö   ÚARRAYrë   r  c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r$   r$   )r%   Úprefixr  s     €r(   r†   z"process_schema.<locals>.<listcomp>;  s#   ø€ ÐGÐGÐG°F˜x˜x¨Ñ/Ô/ÐGÐGÐGr*   )Úsetr  ÚaddrR   rø   r
  rë   r  rï   ro   rC   r   Ú
StringDictré   r}   r   Úvaluer§   ÚupperrB   r�   rê   Úkeysrk   )rä   r-   rü   rú   rû   Ú	from_nameÚto_namer  Ú_r  r  r   Úschema_typer  r  ÚnameÚ
additionalrë   Úprefixesr  s    ````              @r(   r  r  ‘  s  øøøøø€ ðH ÐÝ™œÐåˆ�Z„ZÐ%Ð%Ð%Ø
€FØ×Ò�˜F™œÑ$Ô$Ð$à‡Z‚Z�ÑÔÐ4Ò4Ð4Øˆwˆå)¨&°&Ñ9Ô9Ð9ð
ð ð Ñ€i�ð —’˜I tÑ,Ô,Ð,ˆÐ9Ø€fˆW�oøà	€\Ø�:Š:�g˜rÑ"Ô"€DØŸš™œð 
ð 
‰ˆˆ:õ Ø
Ø
Ø
Ø+Ø/ðñ ô ð ð õ �VÑÔÐð
 �ZŠZ˜ Ñ%Ô%Ð%€cÐ2Ø
‡M‚M�$�s—y’y Ñ)Ô)¨"Ô-Ô.Ñ/Ô/Ð/ð�7Ô-ð µ'Ô2Dð ð ð ð ð ð ð ð ð ð  —
’
˜7Ñ#Ô#Ð#€fÐ0ØEÐEÐEÐE¸fÐEÑEÔE€Fˆ7�OØ×Ò�b ™jœjÑ)Ô)Ð)Ø
€Fà—
’
˜6Ñ"Ô"€+Ý��TÑ"Ô"ð $ØÔ#€KÝ��SÑ!Ô!ð &Ø×#Ò#Ñ%Ô%€Kð �*Š*�WÑ
Ô
€%Ø
ÐØ�hÒÐØ�w€fˆV�nØ
�ˆ/ˆ/åÐ8Ñ9Ô9Ð9à�HÒÐØ—j’j Ñ.Ô.Ð.ˆ
Ð;Ý" :×#3Ò#3Ñ#5Ô#5Ñ6Ô6ð 0ð 0Ñ
ˆ$�
Ø#˜8 JÑ/Ô/ˆ
�4ÑÐå
ˆj×ÒÑ Ô Ñ
!Ô
! AÒ
%Ð
%Øð &à ¨Ð.Ð.å&*¨:¯?ª?Ñ+<Ô+<Ñ&=Ô&=ˆÐ"Ñ#Ø—j’jÐ!7Ñ8Ô8Ð8ˆ
ÐEõ 
�J¥Ñ	%Ô	%ð >Ø)1¨°*Ñ)=Ô)=ˆÐ%Ñ&øØ�gÒÐØ—’˜GÑ$Ô$Ð$ˆÐ1Ø ˜ ™œ€fˆW�oØ—J’J˜}Ñ-Ô-Ð-ˆÐ:ØGÐGÐGÐG¸hÐGÑGÔG€fˆ]Ñà×Ò�B˜v™JœJÑ'Ô'Ð'Ð'Ð'r*   r  c           	      ó
  ‡— d}| D ]e}t          |j        t          ¦  «        rd}Œt          |j        t          ¦  «        s,t	          d|j        › dt          |j        ¦  «        › �¦  «        ‚Œf| Š|r*d„ | D ¦   «         }t          | j        |t          ¬¦  «        }|Š G ˆfd„dt          j
        ¦  «        }|                     ¦   «         }t          ||¦  «         |d	         d
         }t          j                             |¦  «        S )NFTzEnum member z( value must be a string or integer, got c                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS r$   )r§   r  )r%   Úmembers     r(   r†   z!_process_enum.<locals>.<listcomp>O  s"   € Ð8Ð8Ð8¨•3�v”|Ñ$Ô$Ð8Ð8Ð8r*   )r�   c                   ó   •— e Zd ZU ” ed<   dS )ú"_process_enum.<locals>.PlaceholderÚplaceholderN©r“   Ú
__module__Ú__qualname__Ú__annotations__)Úenum_to_processs   €r(   ÚPlaceholderr)  S  s   ø€ € € € € € Ø Ð Ð Ñ Ð Ð r*   r0  r  r*  )r}   r  Úintr§   r€   r"  r�   r   r“   r¬   Ú	BaseModelÚmodel_json_schemar  r   ÚSchemar   )	r  r-   Úis_integer_enumr'  Ústr_membersÚstr_enumr0  Úenum_schemar/  s	           @r(   Ú_process_enumr9  ?  sE  ø€ ð €/àð ð €fÝ�&”,¥Ñ$Ô$ð Ø€o€oÝ˜œ¥cÑ*Ô*ð Ýð#˜œð #ð #Ý�6”<Ñ Ô ð#ð #ñô ð ðð €/Øð Ø8Ð8°4Ð8Ñ8Ô8€KÝ�D”M ;µSÐ9Ñ9Ô9€HØ€Oð!ð !ð !ð !ð !ð !ð !•HÔ&ñ !ô !ð !ð ×-Ò-Ñ/Ô/€+Ý�˜fÑ%Ô%Ð%Ø˜LÔ)¨-Ô8€+Ý	Œ×	$Ò	$ [Ñ	1Ô	1Ð1r*   c                 ó^   — t          | t          ¦  «        ot          d„ | D ¦   «         ¦  «        S )zEVerifies the schema is of type dict[str, Any] for mypy type checking.c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rÓ   )r}   r§   )r%   rí   s     r(   r×   z(_is_type_dict_str_any.<locals>.<genexpr>`  s=   è è € ð *ð *Ø"…j�•cÑÔð*ð *ð *ð *ð *ð *r*   )r}   rk   rØ   ró   s    r(   Ú_is_type_dict_str_anyr<  \  sC   € õ 
�F�DÑ	!Ô	!ð 
¥cð *ð *Ø&,ð*ñ *ô *ñ 'ô 'ð r*   c                 óö  ‡— ‰sd S t          ‰t          ¦  «        r>t          ‰¦  «        r/t          ‰| ¦  «         t          j                             ‰¦  «        S t          ‰t          ¦  «        rt          ‰| ¦  «        S t          ‰t          j        ¦  «        r…t          ‰¦  «        t          t	          j        ¦   «         ¦  «        k    rt          ‰¦  «         ‰                     d¬¦  «        }t          || ¦  «         t          j                             |¦  «        S t          ‰t          ¦  «        srt          ‰t          ¦  «        r]t          ‰t          j        ¦  «        rC‰                     ¦   «         }t          || ¦  «         t          j                             |¦  «        S t          ‰t          ¦  «        sEt          ‰t          ¦  «        s0t          ‰t$          ¦  «        st'          j        ‰¦  «        t*          v rk G ˆfd„dt          j        ¦  «        }|                     ¦   «         }t          || ¦  «         |d         d         }t          j                             |¦  «        S t-          d‰› �¦  «        ‚)NT)Úexclude_unsetc                   ó   •— e Zd ZU ” ed<   dS )út_schema.<locals>.Placeholderr*  Nr+  ró   s   €r(   r0  r@  Š  s   ø€ € € € € € ØÐÐÑÐÐr*   r0  r  r*  rò   )r}   rk   r<  r  r   r4  r   r   r9  r   rô   Ú
model_dumpr   r�   Ú
issubclassr¬   r2  r3  ÚVersionedUnionTypeÚtypingÚ
get_originÚ_UNION_TYPESrB   )r-   rð   rä   r0  s    `  r(   Út_schemarG  e  sZ  ø€ ð 
ð Øˆ4Ý��ÑÔð /Õ"7¸Ñ"?Ô"?ð /Ý�6˜6Ñ"Ô"Ð"ÝŒ<×&Ò& vÑ.Ô.Ð.Ý��Ñ!Ô!ð )Ý˜ Ñ(Ô(Ð(Ý�V�Uœ\Ñ*Ô*ð /ÝˆF�|„|•t�EœL™NœNÑ+Ô+Ò+Ð+õ )¨Ñ0Ô0Ð0Ø×Ò¨TÐÑ2Ô2€FÝ�6˜6Ñ"Ô"Ð"ÝŒ<×&Ò& vÑ.Ô.Ð.õ
 �V�\Ñ
*Ô
*ð/õ �V�TÑ
"Ô
"ð	/õ
 �V�XÔ/Ñ
0Ô
0ð/ð ×%Ò%Ñ'Ô'€FÝ�6˜6Ñ"Ô"Ð"ÝŒ<×&Ò& vÑ.Ô.Ð.å��Ñ&Ô&ð/å	�F�DÑ	!Ô	!ð/õ 
�FÕ.Ñ	/Ô	/ð/õ 
Ô	˜6Ñ	"Ô	"¥lÐ	2Ð	2ðð ð ð ð ð ð •hÔ(ñ ô ð ð ×*Ò*Ñ,Ô,€FÝ�6˜6Ñ"Ô"Ð"Ø�LÔ! -Ô0€FÝŒ<×&Ò& vÑ.Ô.Ð.åÐ7¨vÐ7Ð7Ñ8Ô8Ð8r*   c                 óˆ  — | sd S t          | t          j        ¦  «        r| S t          | t          ¦  «        r;t          j        t          j        t          j        | ¬¦  «        ¬¦  «        ¬¦  «        S t          | t          ¦  «        rt          j                             | ¦  «        S t          dt          | ¦  «        › �¦  «        ‚)N)Ú
voice_name)Úprebuilt_voice_config)Úvoice_configzUnsupported speechConfig type: )r   r   ÚSpeechConfigr}   r§   ÚVoiceConfigÚPrebuiltVoiceConfigrk   r   rB   r�   ró   s    r(   Út_speech_configrO  •  sÅ   € ð 
ð Øˆ4Ý�V�UÔ/Ñ0Ô0ð Ø€MÝ��ÑÔð ÝÔÝÔ&Ý"'Ô";ÀvÐ"NÑ"NÔ"Nð
ñ 
ô 
ðñ ô ð õ
 ��ÑÔð 5ÝÔ×,Ò,¨VÑ4Ô4Ð4åÐCµT¸&±\´\ÐCÐCÑDÔDÐDr*   c                 óÒ   — t          | t          j        ¦  «        r| }t          | t          ¦  «        rt          j                             | ¦  «        }|j        �t          d¦  «        ‚|S )Nz<multi_speaker_voice_config is not supported in the live API.)r   r   rL  r}   rk   r   Úmulti_speaker_voice_configrB   )rð   Úspeech_configs     r(   Út_live_speech_configrS  ¨  sl   € õ �V�UÔ/Ñ0Ô0ð Ø€MÝ��ÑÔð >ÝÔ&×5Ò5°fÑ=Ô=€MàÔ-Ð9Ý
ØFñô ð ð 
Ðr*   c                 óÆ  — |sd S t          j        |¦  «        st          j        |¦  «        r6t          j        t          j                             | |d¬¦  «        g¬¦  «        S t          j        ¦   «         r7	 ddl	m} t          ||¦  «        rt          |¦  «        S n# t          $ r Y nw xY wt          |t          ¦  «        rt          j                             |¦  «        S |S )NT)r-   ÚcallableÚuse_json_schema©Úfunction_declarationsr   r   )ÚinspectÚ
isfunctionÚismethodr   r   ÚFunctionDeclarationÚfrom_callabler   Ú_is_mcp_loadedÚ	mcp.typesr   r   r–   r}   rk   r   )r-   rð   Ú_McpTools      r(   Út_toolra  ¸  s  € ð 
ð Øˆ4ÝÔ˜ÑÔð ¥7Ô#3°FÑ#;Ô#;ð ÝŒ:åÔ%×3Ò3Ø¨Àð 4ñ ô ð
ðñ ô ð õ ÔÑ Ô ð ðØ,Ð,Ð,Ð,Ð,Ð,å	˜ Ñ	*Ô	*ð *Ý! &Ñ)Ô)Ð)ð*øåð ð ð Ø
€dðøøøå��ÑÔð -ÝŒ:×$Ò$ VÑ,Ô,Ð,Ø	€-s   Á7$B Â
B*Â)B*c                 ó   — |sg S t          j        g ¬¦  «        }g }|D ]“}t          | |¦  «        }|�|j        rc|j        �\|xj        |j        z  c_        |                     ¦   «         }d |_        |                     d¬¦  «        r|                     |¦  «         Œ~|                     |¦  «         Œ”|j        r|                     |¦  «         |S )NrW  T)Úexclude_none)r   r   ra  rX  Ú
model_copyrA  r»   )r-   rð   Úfunction_toolÚtoolsÚtoolÚtransformed_toolÚ	tool_copys          r(   Út_toolsrj  Ò  sø   € ð 
ð Ø€IÝ”*°2Ð6Ñ6Ô6€-Ø
€%Øð 'ð '€dÝ˜f dÑ+Ô+ÐàÐ#à
Ô
0ð'àÔ1Ð=àÐ+Ô+ØÔ2ñ	
Ð+Ô+ð %×/Ò/Ñ1Ô1ˆ	Ø*.ˆ	Ô'Ø×Ò¨TÐÑ2Ô2ð 	"Ø
�,Š,�yÑ
!Ô
!Ð
!øà�ŠÐ%Ñ&Ô&Ð&øØÔ(ð  Ø	‡L‚L�ÑÔÐØ	€,r*   r"  c                 ó&   — t          | |d¬¦  «        S )NÚcachedContents)r/   )r;   )r-   r"  s     r(   Út_cached_content_namerm  ï  s   € Ý	˜ Ð<LÐ	MÑ	MÔ	MÐMr*   Úsrcc                 óx  — t          |t          ¦  «        rt          j        di |¤Ž}t	          |t          j        ¦  «        r~t          |j        d u|j        d u|j        d ug¦  «        }t          |j	        d u|j
        d ug¦  «        }| j        r|s|dk    rt          d¦  «        ‚n|s|dk    rt          d¦  «        ‚|S t          |t          ¦  «        rt          j        |¬¦  «        S t          |t          ¦  «        r¬|                     d¦  «        rt          j        d|g¬¦  «        S |                     d¦  «        rt          j        d	|¬
¦  «        S t!          j        d|¦  «        rt          j        d|¬¦  «        S |                     d¦  «        rt          j        |¬¦  «        S t          d|› �¦  «        ‚)Nr   z–Exactly one of `gcs_uri` or `bigquery_uri`, or `vertex_dataset_name` must be set, other sources are not supported in Gemini Enterprise Agent Platform.úªExactly one of `inlined_requests`, `file_name`, `inlined_embed_content_requests`, or `embed_content_file_name` must be set, other sources are not supported in Gemini API.)Úinlined_requestsúgs://Újsonl©rl   rº   úbq://Úbigquery©rl   Úbigquery_uriz/^projects/[^/]+/locations/[^/]+/datasets/[^/]+$zvertex-dataset)rl   Úvertex_dataset_nameúfiles/)Ú	file_namezUnsupported source: r$   )r}   rk   r   ÚBatchJobSourcer   Úsumrº   rx  ry  rq  r{  r7   rB   r�   r§   r5   ÚreÚmatch)r-   rn  Úvertex_sourcesÚmldev_sourcess       r(   Út_batch_job_sourcer‚  ó  s5  € õ �•TÑÔð &Ý
Ô
Ð
%Ð
% Ð
%Ð
%€CÝ�S�%Ô.Ñ/Ô/ð 0ÝàŒK˜tÐ#ØÔ DÐ(ØÔ#¨4Ð/ð	
ñô €Nõ ØÔ DÐ(ØŒ˜TÐ!ðñ ô €Mð „ð 
Ø	ð 
˜.¨AÒ-Ð-ÝðMñ
ô 
ð 	
ð .ð 
ð 
˜=¨AÒ-Ð-ÝðJñ
ô 
ð 	
ð
 €Jå�#•tÑÔð ÝÔ°Ð5Ñ5Ô5Ð5Ý�#•sÑÔð Ø
‡~‚~�gÑÔð ÝÔ!ØØ�%ðñ ô ð ð 
�Š˜Ñ	 Ô	 ð ÝÔ!ØØðñ ô ð õ 
ŒÐDÀcÑ	JÔ	Jð ÝÔ!Ø!Ø!ðñ ô ð ð 
�Š˜Ñ	!Ô	!ð ÝÔ!Øðñ ô ð õ 	Ð/¨#Ð/Ð/Ñ0Ô0Ð0r*   c                 ó,  — t          |t          ¦  «        rt          j        di |¤Ž}t	          |t          j        ¦  «        r6t          |j        d u|j        d ug¦  «        }|dk    rt          d¦  «        ‚|S t          dt          |¦  «        › �¦  «        ‚)Nr   rp  zUnsupported source type: r$   )
r}   rk   r   ÚEmbeddingsBatchJobSourcer   r}  rq  r{  rB   r�   )r-   rn  r�  s      r(   Út_embedding_batch_job_sourcer…  .  s³   € õ �•TÑÔð 0Ý
Ô
(Ð
/Ð
/¨3Ð
/Ð
/€Cå�S�%Ô8Ñ9Ô9ð >ÝØÔ DÐ(ØŒ˜TÐ!ðñ ô €Mð ˜ÒÐÝðHñô ð ð
 €Jå
Ð<µ°c±´Ð<Ð<Ñ
=Ô
=Ð=r*   Údestc                 ó¨  — t          | t          ¦  «        rt          j        di | ¤Ž} | S t          | t          ¦  «        rh|                      d¦  «        rt          j        d| ¬¦  «        S |                      d¦  «        rt          j        d| ¬¦  «        S t          d| › �¦  «        ‚t          | t          j        ¦  «        r| S t          d| › �¦  «        ‚)	Nrr  rs  rt  ru  rv  rw  zUnsupported destination: r$   )r}   rk   r   ÚBatchJobDestinationr§   r5   rB   r   )r†  s    r(   Út_batch_job_destinationr‰  E  s÷   € õ �•dÑÔð 9ÝÔ$Ð,Ð, tÐ,Ð,€DØ€KÝ�$�ÑÔð 9Ø‡‚�wÑÔð ;ÝÔ&ØØðñ ô ð ð 
�Š˜Ñ	!Ô	!ð ;ÝÔ&ØØðñ ô ð õ
 Ð9°4Ð9Ð9Ñ:Ô:Ð:Ý�t�UÔ6Ñ7Ô7ð 9Ø€Kå
Ð7°Ð7Ð7Ñ
8Ô
8Ð8r*   c                 óÚ   — |                       di ¦  «                              dg ¦  «        }|s| S |D ]9}|                      di ¦  «        }|sŒd|v r|                      d¦  «        | d<    nŒ:| S )NÚinlinedResponsesrM   Ú	embeddingÚinlinedEmbedContentResponses)rR   r
  )r†  Úinline_responsesrM   Úinner_responses       r(   Út_recv_batch_job_destinationr�  ^  sœ   € à—X’XÐ0°"Ñ5Ô5×9Ò9Ø˜"ñô Ðð 
ð Ø€KØ"ð ð €hØ—\’\ *¨bÑ1Ô1€NØð ØØ�nÐ$Ð$Ø-1¯XªXÐ6HÑ-IÔ-I€dÐ)Ñ*Ø€eð %ð 
€+r*   c                 óP  — | j         sEd}t          j        ||¦  «        r|                     d¦  «        d         S t	          d|› d�¦  «        ‚d}t          j        ||¦  «        r|                     d¦  «        d         S |                     ¦   «         r|S t	          d|› d�¦  «        ‚)Nzbatches/[^/]+$r2   r  zInvalid batch job name: ú.z:^projects/[^/]+/locations/[^/]+/batchPredictionJobs/[^/]+$)r7   r~  r  rC   rB   Úisdigit)r-   r"  Úmldev_patternÚvertex_patterns       r(   Út_batch_job_namer–  o  s±   € Ø	Œð ;Ø%€MÝ	„x�˜tÑ$Ô$ð ;Ø�ZŠZ˜‰_Œ_˜RÔ Ð åÐ9°$Ð9Ð9Ð9Ñ:Ô:Ð:àP€.å„Xˆn˜dÑ#Ô#ð 9Ø�:Š:�c‰?Œ?˜2ÔÐØ‡|‚|�~„~ð 9Ø€Kå
Ð7°Ð7Ð7Ð7Ñ
8Ô
8Ð8r*   Ústatec                 óv   — | dk    rdS | dk    rdS | dk    rdS | dk    rdS | d	k    rd
S | dk    rdS | dk    rdS | S )NÚBATCH_STATE_UNSPECIFIEDÚJOB_STATE_UNSPECIFIEDÚBATCH_STATE_PENDINGÚJOB_STATE_PENDINGÚBATCH_STATE_RUNNINGÚJOB_STATE_RUNNINGÚBATCH_STATE_SUCCEEDEDÚJOB_STATE_SUCCEEDEDÚBATCH_STATE_FAILEDÚJOB_STATE_FAILEDÚBATCH_STATE_CANCELLEDÚJOB_STATE_CANCELLEDÚBATCH_STATE_EXPIREDÚJOB_STATE_EXPIREDr$   )r—  s    r(   Út_job_stater§  �  s…   € Ø
Ð'Ò'Ð'Ø"Ð"ØÐ%Ò%Ð%ØÐØÐ%Ò%Ð%ØÐØÐ'Ò'Ð'Ø Ð ØÐ$Ò$Ð$ØÐØÐ'Ò'Ð'Ø Ð ØÐ%Ò%Ð%ØÐà€Lr*   g      ð?g      4@g      Œ@g      ø?Ústructc                 ó  — |                      d¦  «        x}ród|v rï|}d}t          }|                      d¦  «        dk    r‡|t          k    rt          d|› d|› �¦  «        ‚|                      d|i ¬	¦  «        }t          j        |¦  «         ||z  }t          |t          z  t          ¦  «        }|                      d¦  «        dk    °‡|                      d
¦  «        x}rt          d|› d|› d|› �¦  «        ‚|                      d¦  «        S |S )Nr"  z/operations/g        ÚdoneTz
Operation z timed out.
ÚGET)Úhttp_methodÚpathÚrequest_dictÚerrorz failed with error: z.
rM   )
rR   Ú!LRO_POLLING_INITIAL_DELAY_SECONDSÚLRO_POLLING_TIMEOUT_SECONDSÚRuntimeErrorÚrequestÚtimeÚsleepÚminÚLRO_POLLING_MULTIPLIERÚ!LRO_POLLING_MAXIMUM_DELAY_SECONDS)rG   r¨  r"  Ú	operationÚtotal_secondsÚdelay_secondsr¯  s          r(   Út_resolve_operationr¼  š  sJ  € ð �jŠj˜Ñ Ô Ð €dð  n¸Ð&<Ð&<Ø$*€IØ€MÝ5€MØ
�-Š-˜Ñ
Ô
 4Ò
'Ð
'Ø	Õ4Ò	4Ð	4ÝÐF¨ÐFÐF¸9ÐFÐFÑGÔGÐGà×$Ò$Ø $°Rð %ñ ô €iõ „j�ÑÔÐØ�}Ñ$€måØ
Õ0Ñ
0Ý
+ñô €mð �-Š-˜Ñ
Ô
 4Ò
'Ð
'ð —’˜gÑ&Ô&Ð&€uð ÝØ
F�tÐ
FÐ
F°Ð
FÐ
F¸9Ð
FÐ
Fñô ð ð �=Š=˜Ñ$Ô$Ð$à€Mr*   c                 ó¸  — t          | t          j        ¦  «        r| j        } nRt          | t          j        ¦  «        r| j        } n0t          | t          j        ¦  «        r| j        �| j        j        } nd } | €t          d¦  «        ‚t          | t          ¦  «        s t          dt          | ¦  «        › d�¦  «        ‚|                      d¦  «        rZ|                      d¦  «        d         }t          j        d|¦  «        }|€t          d| › �¦  «        ‚|                     d	¦  «        } n0|                      d¦  «        r|                      d¦  «        d         } | S )
NzFile name is required.z"Could not convert object of type `z` to a file name.zhttps://rz  r   z	[a-z0-9]+z&Could not extract file name from URI: r   )r   r   r©   r"  ÚVideorª   ÚGeneratedVideoÚvideorB   r}   r§   r�   r5   rC   r~  r  Úgroup)r"  Úsuffixr  s      r(   Út_file_namerÃ  ¸  sP  € õ �T�5œ:Ñ&Ô&ð ØŒ9€D€DÝ�t�Uœ[Ñ)Ô)ð ØŒ8€D€DÝ�t�UÔ1Ñ2Ô2ð Ø„zÐØŒZŒ^€d€dà€dà	€\Ý
Ð-Ñ
.Ô
.Ð.å	�D�#Ñ	Ô	ð Ý
ØJ­T°$©Z¬ZÐJÐJÐJñô ð ð 
‡_‚_�ZÑ Ô ð #Ø�ZŠZ˜Ñ!Ô! !Ô$€FÝŒH�[ &Ñ)Ô)€EØ€}ÝÐFÀÐFÐFÑGÔGÐGØ�;Š;�q‰>Œ>€D€DØ‡‚�xÑ Ô ð #Ø�:Š:�hÑÔ Ô"€Dà	€+r*   Ústatusc                 ó  — | dk    rt           j        j        S | dk    rt           j        j        S | dk    rt           j        j        S | dk    rt           j        j        S t           j        D ]}t          |j        ¦  «        | k    r|c S Œ| S )NÚSTATE_UNSPECIFIEDÚCREATINGÚACTIVEÚFAILED)r   ÚJobStaterš  rž  r   r¢  r§   r  )rÄ  r—  s     r(   Út_tuning_job_statusrË  Ú  s”   € ØÐ"Ò"Ð"ÝŒ>Ô/Ð/Ø�ÒÐÝŒ>Ô+Ð+Ø�ÒÐÝŒ>Ô-Ð-Ø�ÒÐÝŒ>Ô*Ð*å”ð ð ˆÝ	ˆUŒ[Ñ	Ô	˜VÒ	#Ð	#Øˆˆˆð 
$à€Mr*   c                 óâ   — t          | t          ¦  «        rt          j                             | ¦  «        S t          | t          j        ¦  «        r| S t          dt          | ¦  «        › d�¦  «        ‚)NúCould not convert input (type "z") to `types.Content`)r}   rk   r   rÂ   r   r   rB   r�   )rÀ   s    r(   Út_content_strictrÎ  ê  si   € Ý��ÑÔð ÝŒ=×'Ò'¨Ñ0Ô0Ð0Ý�w¥¤Ñ.Ô.ð Ø€Nå
ØN­$¨w©-¬-ÐNÐNÐNñô ð r*   c                 ód   — t          | t          ¦  «        rd„ | D ¦   «         S t          | ¦  «        gS )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r$   )rÎ  rË   s     r(   r†   z%t_contents_strict.<locals>.<listcomp>ù  s!   € Ð>Ð>Ð>¨'Õ˜WÑ%Ô%Ð>Ð>Ð>r*   )r}   r   rÎ  ©rÈ   s    r(   Út_contents_strictrÒ  õ  s;   € õ ��(Ñ#Ô#ð (Ø>Ð>°XÐ>Ñ>Ô>Ð>å˜XÑ&Ô&Ð'Ð'r*   ÚturnsÚturn_completec                 óà   — | €t          j        |¬¦  «        S 	 t          j        t          | ¬¦  «        |¬¦  «        S # t          $ r&}t	          dt          | ¦  «        › d�¦  «        |‚d }~ww xY w)N)rÔ  rÑ  )rÓ  rÔ  rÍ  z") to `types.LiveClientContent`)r   ÚLiveClientContentrÒ  Ú	ExceptionrB   r�   )rÓ  rÔ  Úes      r(   Út_client_contentrÙ  þ  s¡   € ð €]ÝÔ"°Ð?Ñ?Ô?Ð?ð	ÝÔ"Ý¨Ð/Ñ/Ô/Ø#ðñ ô ð øõ 
ð ð ð Ý
ð	$­$¨u©+¬+ð 	$ð 	$ð 	$ñô ð ðøøøøðøøøs   ™#= ½
A-Á!A(Á(A-Úinputc                 óØ   — | st          d| › �¦  «        ‚	 t          j        t          | ¬¦  «        ¬¦  «        S # t          $ r&}t          dt          | ¦  «        › d�¦  «        |‚d }~ww xY w)Nz#A tool response is required, got: 
r‡   rÍ  z$") to `types.LiveClientToolResponse`)rB   r   ÚLiveClientToolResponserˆ   r×  r�   )rÚ  rØ  s     r(   Út_tool_responserÝ    s¥   € ð 
ð EÝ
ÐC¸EÐCÐCÑ
DÔ
DÐDðÝÔ'Ý/À5ÐIÑIÔIðñ ô ð øõ 
ð ð ð Ý
ð	)­$¨u©+¬+ð 	)ð 	)ð 	)ñô ð ðøøøøðøøøs   –"9 ¹
A)Á!A$Á$A)Úmetricsc                 ó0  — g }| D �]�}t          |t          ¦  «        r6	 t          j                             |¦  «        }n# t
          j        $ r Y nw xY wt          |t          j        ¦  «        r1|                     ¦   «         }ddg|d<   |                     |¦  «         Œ™i }ddg|d<   t          |dg¦  «         
                    ¦   «         }|dk    ri |d<   n©|dk    ri |d<   n�|                     d	¦  «        r|                     d
d¦  «        }d|i|d<   njt          |d¦  «        rH|j        rAd|j        i}t          |dg¦  «        }|r||d<   t          |dg¦  «        }	|	rd|	i|d<   ||d<   nt          d|› �¦  «        ‚|                     |¦  «         �Œ‘|S )a   Prepares the metric payload for the evaluation request.

    Args:
        request_dict: The dictionary containing the request details.
        resolved_metrics: A list of resolved metric objects.

    Returns:
        The updated request dictionary with the prepared metric payload.
    ÚAVERAGEÚSTANDARD_DEVIATIONÚaggregation_metricsr"  r    Úexact_match_specr!   Ú	bleu_specÚrouger   r`   Ú
rouge_typer"   Úprompt_templateÚmetric_prompt_templateÚjudge_model_system_instructionÚsystem_instructionÚreturn_raw_outputÚcustom_output_format_configÚpointwise_metric_specz0Unsupported metric type or invalid metric name: )r}   rk   r   ÚUnifiedMetricr   r¬   r­   rA  r»   Úgetvrt   r5   ÚreplaceÚhasattrrç  rB   )
rÞ  Úmetrics_payloadÚmetricÚunified_metric_payloadÚmetric_payload_itemÚmetric_nameræ  Úpointwise_specrê  rë  s
             r(   Ú	t_metricsrø  '  sI  € ð €Oàð 42ñ 42ˆå	�F�DÑ	!Ô	!ð ð	ÝÔ&×5Ò5°fÑ=Ô=ˆ&ˆ&øÝÔ'ð 	ð 	ð 	Ø
ˆ$ð	øøøõ 
�F�EÔ/Ñ	0Ô	0ð Ø17×1BÒ1BÑ1DÔ1DÐàØ ð9
ÐÐ4Ñ5ð 	×ÒÐ5Ñ6Ô6Ð6Øà,.Ðà
Ø
ð4ÐÐ/Ñ0õ
 ˜ & Ñ*Ô*×0Ò0Ñ2Ô2€kà	˜Ò	%Ð	%Ø24ÐÐ.Ñ/Ð/Ø˜&Ò Ð Ø+-Ð˜KÑ(Ð(Ø×!Ò! 'Ñ*Ô*ð 
Ø ×(Ò(¨¨bÑ1Ô1ˆ
Ø-9¸:Ð,FÐ˜LÑ)Ð)å�6Ð,Ñ-Ô-ð 
°&Ô2Hð 
Ø2°FÔ4JÐKˆÝ!ØÐ5Ð6ñ
ô 
Ðð ð 	DØ1Cˆ.Ð-Ñ
.Ý ØÐ(Ð)ñ
ô 
Ðð ð 	à!Ð#4ð;ˆ.Ð6Ñ
7ð 8FÐÐ3Ñ4Ð4åØOÀ+ÐOÐOñ
ô 
ð 	
ð ×ÒÐ0Ñ1Ô1Ð1Ñ1ØÐs   ž>¾AÁAc                 ó   — d| v r| dk    pd| v S )NÚgeminizgemini-embedding-001Úmaasr$   )r<   s    r(   Út_is_vertex_embed_content_modelrü  m  s(   € ð �%ÐÐ;˜EÐ%;Ò;ð à	�5ˆð	r*   c                 ó   — | S rÓ   r$   ró   s    r(   Út_json_schemarþ  v  s   € Ø	€-r*   rÓ   )NT)‘Ú__doc__Úbase64Úcollections.abcr   r   r  r   r   rY  rp   Úloggingr~  Úsysr´  r   Úbuiltin_typesrD  r   r   r	   r
   r   r   r`   r   r   r   r   rï  r   ÚTYPE_CHECKINGr”   r—   r¬   r   Ú	getLoggerrS   Úversion_infoÚ	UnionTyperC  rF  r   Ú_UnionGenericAliasÚtyping_extensionsÚmcpr   r   r_  r   r   ÚTyper.  Úmetric_name_sdk_api_maprë   Úmetric_name_api_sdk_mapÚBaseApiClientr§   r1  r;   rF   râ   rL   r  r�   rX   rZ   ru   rz   ÚFunctionResponseOrDictr~   r‚   rˆ   ÚBlobImageUnionDictr�   rŒ   r�   Ú
BlobOrDictr    rá   r¨   r°   rµ   r¼   r¿   rÂ   ÚContentDictÚContentTyperÇ   rÎ   ÚContentListUnionÚContentListUnionDictrã   rï   rô   rø   r  r  r4  r9  ÚSchemaUnionDictr<  rG  ÚSpeechConfigUnionDictrL  rO  ÚSpeechConfigOrDictrS  ra  rj  rm  ÚBatchJobSourceUnionDictr|  r‚  ÚEmbeddingsBatchJobSourceOrDictr„  r…  ÚBatchJobDestinationOrDictrˆ  r‰  rk   r�  r–  r§  r°  r¸  r±  r·  r¼  r©   r¾  r¿  rÃ  rÊ  rË  ÚContentOrDictrÎ  rÒ  rÖ  rÙ  rÜ  rÝ  ÚMetricSubclassrø  rü  rþ  r$   r*   r(   ú<module>r     s  ðð  )Ð (Ð (à €€€Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .Ø $Ð $Ð $Ð $Ð $Ð $à	Ôð ØÐÐÐà €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	Ð7Ñ	8Ô	8€àÔ�wÒÐØ$Ô.ÐØ”, Ô 7Ð8€,ØÐÐÐÐÐÐàÔ0ÐØ”,�€,Ø)Ð)Ð)Ð)Ð)Ð)à	Ôð Ø3Ð3Ð3Ð3Ð3Ð3Ø'Ð'Ð'Ð'Ð'Ð'Ð'à"%Ð�F”KÐ%Ð%Ñ%Ø€'ˆ6Œ;ÐÐÑð $ØØðð Ð ð
 MÐLÐ,C×,IÒ,IÑ,KÔ,KÐLÑLÔLÐ ð '(ðZð Zð ZØÔ%ðZàðZð ð	Zð
 !$ðZð 	ðZð Zð Zð Zðz�KÔ-ð °cð ¸cð ð ð ð ð4ØÔ)ðØ8<ðàðð ð ð ðØÔ ðà	ˆ'Ô
Ôðð ð ð ð>ØÔ)ðØ25ðàˆc„]ðð ð ð ð";�sð ;˜uœzð ;ð ;ð ;ð ;ð&ØÔ3ðà
Ôðð ð ð ð 5ØØÔ$Ø�Ô-Ô.ð	0ôð5ð
 
ˆ%Ô
 Ô!ð5ð 5ð 5ð 5ðØ�Ô)¨4°Ô0HÔ+IÐIÔJðà	ˆ%Œ*Ôðð ð ð ð�Ô)ð ¨e¬jð ð ð ð ð4A�uÔ/ð A°E´Jð Að Að Að AðA�uÔ'ð A¨E¬Jð Að Að Að AðC�˜%Ô-Ô.ð C°5´:ð Cð Cð Cð Cð<ØØˆd�5Ô&Ô'¨Ô)<¸dÀ5Ä:Ô>NÐNÔOôðð 
ˆ%Œ*Ôð	ð ð ð ðØ˜( 7¨3°¨8Ô#4Ô5Ô6ðàˆd�5Ô'Ô(Ô)ðð ð ð ð& �E”M 5Ô#4°eÔ6IÐIÔJ€ð*Ø�; Ô 1°4Ð7Ô8ð*à
„]ð*ð *ð *ð *ð8 ØÔ%ð à�D˜œÔ'¨¨eÔ.?Ô)@À+ÐMÔNð ð ˆ4�Œ9�d˜5œ=Ô)Ð)Ô*ð ð  ð  ð  ð4iØØˆeÔ$ eÔ&@À%Ä-ÐOÔPôðið 
ˆ%Œ-Ôð	ið ið ið iðX8˜wÔ1ð 8°dð 8ð 8ð 8ð 8ðv9¨sð 9°tð 9ð 9ð 9ð 9ð
MØðMØ! +Ô";Ô<ðMà	ðMð Mð Mð Mð" *.ðl(ð
 "Ø-1ðl(ð l(ð l(ØÔðl(à�[Ô.Ô/ðl(ð �7Ô%Ô
&ðl(ð
 ðl(ð !  S¤Ô*ðl(ð 
ðl(ð l(ð l(ð l(ð\2Ø
ð2Ø$ [Ô%>Ô?ð2à
„\ð2ð 2ð 2ð 2ð:Ø�%Ô'¨Ð,Ô-ðàˆwÔ!Ô"ðð ð ð ð-9Ø�[Ô.Ô/ð-9à�%Ô'¨Ð,Ô-ð-9ð ˆeŒlÔð-9ð -9ð -9ð -9ð`EØ�%Ô-¨sÐ2Ô3ðEàˆeÔ Ô!ðEð Eð Eð Eð&ØÔ$ðàˆeÔ Ô!ðð ð ð ð ØÔ%ðØ/2ðàˆe�E”J �OÔ$Ô%ðð ð ð ð4ØÔ%ðØ/3°C¬yðà	ˆ%Œ*Ôðð ð ð ð:N +Ô";ð NÀ3ð NÈ3ð Nð Nð Nð Nð81ØÔ%ð81à	Ô	&ð81ð Ôð81ð 81ð 81ð 81ðv>ØÔ%ð>à	Ô	-ð>ð Ô#ð>ð >ð >ð >ð.9Ø
��UÔ4Ð4Ô
5ð9à
Ôð9ð 9ð 9ð 9ð2 t¨C°¨H¤~ð ¸$¸sÀC¸x¼.ð ð ð ð ð"9˜[Ô6ð 9¸cð 9Àcð 9ð 9ð 9ð 9ð$�sð ˜sð ð ð ð ð& %(Ð !Ø$(Ð !Ø#Ð ØÐ ðØÔ)ðØ3:Ô3Eðàðð ð ð ð<Ø
�5˜˜eœj¨%¬+°uÔ7KÐKÔLÔ
Mðàðð ð ð ðD ð ¨¨e¬n¸cÐ.AÔ(Bð ð ð ð ð ˜eÔ1ð °e´mð ð ð ð ð(Ø�H˜UÔ0Ô1°5Ô3FÐFÔGð(à	ˆ%Œ-Ôð(ð (ð (ð (ð 	Øð	ð ØØˆh�uÔ*Ô+¨UÔ-@Ð@ÔAôðð ð	ð
 Ôðð ð ð ð*ØØÔ$Ø�Ô-Ô.ð	0ôðð
 Ô!ðð ð ð ð(CØ�%Ô&Ô'ðCà	ˆ$ˆs�CˆxŒ.ÔðCð Cð Cð CðL¨3ð °4ð ð ð ð ð˜#ð  #ð ð ð ð ð ð r*   