+
    i;c                       a  R; t@0 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	H
t
HtHtHtHt ^ RIt^ RIt^ RIt^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ]P6                  R<8  d   ^ R	IHt M]P:                  t]P<                  '       d   ^ R
IH t! ^ RI"H#t$ M]t!] ^ k ]t$] ^k  ^ R
IH t! ^ RI"H#t$ ^
t&]PN                  ! R4      t(R R lt)R R lt*R R lt+R=R R llt,R=R R llt-R>R R llt.R R lt/R R lt0R R lt1R R  lt2R! R" lt3R# R$ lt4R% R& lt5R' R( lt6R) R* lt7R=R+ R, llt8R=R- R. llt9R/ R0 lt:R=R1 R2 llt;R=R3 R4 llt<R=R5 R6 llt=R7 R8 lt>R?R9 R: llt?R#   ]% d    Rt!Rt$ Li ; i)@zNExtra utils depending on types that are shared between sync and async modules.N)AnyCallableDictOptionalUnionget_args
get_origin)_common)
_mcp_utils)_transformers)errors)types)McpToGenAiToolAdapter)	UnionType)ClientSession)Toolzgoogle_genai.modelsc                X    V ^8  d   QhR\         P                  R\         P                  /#    configreturn)r   GenerateContentConfigOrDictGenerateContentConfig)formats   "l/Users/igloo/.openclaw/workspace/scratch/fb_ad_env/lib/python3.14/site-packages/google/genai/_extra_utils.py__annotate__r   <   s(      --
      c                 ^    \        V \        4      '       d   \        P                  ! R/ V B # V # )N )
isinstancedictr   r   )r   s   &r   %_create_generate_content_config_modelr!   <   s*     &&000Mr   c                |    V ^8  d   QhR\         \        \        P                  3,          R\        \        ,          /# r   srcr   r   strr   BatchJobSourceOrDictr   )r   s   "r   r   r   E   0     
 
	sE...	/
c]
r   c                   \        V \        4      '       d   V P                  R4      '       d   V # \        V \        4      '       d9   V P	                  R4      '       d"   V R,          '       d   V R,          ^ ,          # R# \        V \
        P                  4      '       d:   V P                  '       d(   V P                  '       d   V P                  ^ ,          # R# R# )z9Extracts the first GCS URI from the source, if available.zgs://gcs_uriN)r   r&   
startswithr    getr   BatchJobSourcer*   r$   s   &r   _get_gcs_urir/   E   s     ScnnW55J#t!3!3 #I3y>!8D8#u++,, [[[3;;q>2d2	r   c                |    V ^8  d   QhR\         \        \        P                  3,          R\        \        ,          /# r#   r%   )r   s   "r   r   r   R   r(   r   c                L   \        V \        4      '       d   V P                  R4      '       d   V # \        V \        4      '       d!   V P	                  R4      '       d
   V R,          # \        V \
        P                  4      '       d   V P                  '       d   V P                  # R# )z8Extracts the BigQuery URI from the source, if available.zbq://bigquery_uriN)r   r&   r+   r    r,   r   r-   r2   r.   s   &r   _get_bigquery_urir3   R   sw     ScnnW55J#t!8!8~#u++,,1A1A1A	r   c                    V ^8  d   QhR\         \        \        P                  3,          R\        \        P
                  ,          R\        P
                  /# )r   r$   r   r   )r   r&   r   r-   r   CreateBatchJobConfig)r   s   "r   r   r   _   sG      	sE(((	)U//0 r   c                   Vf   \         P                  ! 4       pRpVP                  '       g    \        P                  ! 4       pRV 2Vn        VP
                  '       gx   \        V 4      p\        V 4      pV'       d'   VP                  R4      '       d   VRR  R2Vn        V# V'       d,   T;'       g    \        P                  ! 4       pV RV 2Vn        V# )zBFormats the destination uri based on the source uri for Vertex AI.Ngenai_batch_job_z.jsonlz/dest_dest_i)	r   r5   display_namer	   timestamped_unique_namedestr/   r3   endswith)r$   r   unique_namegcs_source_uribigquery_source_uris   &&   r   format_destinationr@   _   s    
 ^'')F+				113K,[M:F	!#&N+C0.11(;;%cr*+51fk
 
-	 
DD7#B#B#Dk*+6+?fk	-r   c                p    V ^8  d   QhR\         \        P                  ,          R\        \        ,          /# r   )r   r   r   listint)r   s   "r   r   r   y   s+     $ $U667$	#Y$r   c                |   V '       g   . # \        V 4      p. pV'       d   VP                  '       g   V# \        VP                  4       Fo  w  r4\        V\        P
                  4      '       g   K'  VP                  '       d   VP                  V4       VP                  '       g   K^  VP                  V4       Kq  	  V# )a@  Checks if the config contains any AFC incompatible tools.

A `types.Tool` object that contains `function_declarations` is considered a
non-AFC tool for this execution path.

Args:
  config: The GenerateContentConfig to check for incompatible tools.

Returns:
  A list of indexes of the incompatible tools in the config.
)	r!   tools	enumerater   r   r   function_declarationsappendmcp_servers)r   config_modelincompatible_tools_indexesindextools   &    r   "find_afc_incompatible_tool_indexesrN   y   s     
I6v>,*,	\///%%|112kedEJJ''!!! ''. ''. 3 
$#r   c                   V ^8  d   QhR\         \        P                  ,          R\         \        \        \
        3,          ,          R\        R\        \        \        \        R\        3,          \
        3,          3,          /# )r   r   mcp_to_genai_tool_adaptersis_caller_method_asyncr   .)
r   r   r   r    r&   r   boolr   r   r   )r   s   "r   r   r      sl     ! !U667! (S''(!!
 !! 
#uXc3h')>>?
?@!r   c                V   / pV '       g   V# \        V 4      pVP                  '       d   VP                   Fy  p\        V4      '       g   K  \        P                  ! V4      '       d:   V'       g2   \
        P                  ! RVP                   RVP                   R24      hWSVP                  &   K{  	  V'       do   V'       g   \
        P                  ! R4      hVP                  4        F+  w  rgVP                  V4      '       g   K  \        RV R24      h	  VP                  V4       V# )z'Returns a function map from the config.z	Function zh is a coroutine function, which is not supported for automatic function calling. Please manually invoke z to get the function response.z3MCP tools are not supported in synchronous methods.Tool $ is already defined for the request.)r!   rE   callableinspectiscoroutinefunctionr   UnsupportedFunctionError__name__itemsr,   
ValueErrorupdate)r   rP   rQ   function_maprJ   rM   	tool_name_s   &&&     r   get_function_mapra      s    OQ,	6v>,""	$&&t,,5K//$-- )'EG 
 '+T]]# #  !++
?  388:				)	$	$I;BC
 	
 ;
 23	r   c                X    V ^8  d   QhR\         P                  R\         P                  /# r   argsr   )r	   
StringDict)r   s   "r   r   r      s(      


r   c                j    V P                  4        UUu/ uF  w  rV\        V4      bK  	  upp# u uppi )z:Converts float values in dict with no decimal to integers.)r[   ,convert_number_values_for_function_call_argsrd   keyvalues   &  r   1convert_number_values_for_dict_function_call_argsrk      s<     


$*# 
7>>$
  
s   /c                    V ^8  d   QhR\         \        \        \        3,          \        \        ,          \        3,          R\         \        \        \        3,          \        \        ,          \        3,          /# rc   )r   r    r&   objectrB   )r   s   "r   r   r      sN      
S&[!4<7
8
4Vd6lF23r   c                t   \        V \        4      '       d"   V P                  4       '       d   \        V 4      # \        V \        4      '       d/   V P                  4        UUu/ uF  w  rV\        V4      bK  	  upp# \        V \        4      '       d   V  Uu. uF  p\        V4      NK  	  up# V # u uppi u upi )z2Converts float values with no decimal to integers.)r   float
is_integerrC   r    r[   rg   rB   rh   s   &  r   rg   rg      s     e!2!2t9d **,&JC 	9%@@&  dIMIM4U;  
+
s   !B/B5c                0    V ^8  d   QhR\         R\        /# )r   
annotationr   )r   rR   )r   s   "r   r   r      s     	 	S 	T 	r   c                      \         P                  ! V 4      ;'       d    \        V \        P                  4      #   \
         d     R # i ; i)F)rW   isclass
issubclasspydantic	BaseModel	TypeError)rr   s   &r   is_annotation_pydantic_modelry      sH    ??:&  :H&&,  
 s   : : A	A	c          
      T    V ^8  d   QhR\         R\         R\        R\        R\         /# )r   rj   rr   
param_name	func_namer   )r   r&   )r   s   "r   r   r      s4     ; ;;;-0;=@;;r   c                    \        V \        4      '       d   \        V4      '       d
    V! R/ V B # \        V \        4      '       dC   \        V4      \        8X  d/   \        V4      ^ ,          pV  Uu. uF  p\        WeW#4      NK  	  up# \        V \        4      '       dQ   \        V4      \        8X  d=   \        V4      w  rxV P                  4        U	U
u/ uF  w  rV	\        WW#4      bK  	  up
p	# \        V4      \        \        39   d   \        V4       Fp  p\        V4      '       d   \        V4      \        J g=   \        W4      '       g,   \        V \        4      '       g   KP  \        V4      '       g   Kc   \        WW#4      u # 	  \
        P                  ! R V RV RV  RV R2	4      h\        V \        4      '       d   V\        J d   V # \        W4      '       g$   \
        P                  ! R V RV RV  RV R2	4      hV #   \        P                   d+   p\
        P                  ! R T RT RT  RT RT 2
4      hRp?ii ; iu upi u up
p	i   \        P                   d     EKU  i ; i)	zFailed to parse parameter z for function z> from function call part because function call argument value z- is not compatible with parameter annotation z, due to error Nz- cannot be converted to parameter annotation .r   )r   r    ry   rv   ValidationErrorr    UnknownFunctionCallArgumentErrorrB   r   r   convert_if_exist_pydantic_modelr[   r   r   rC   ro   )rj   rr   r{   r|   e	item_typeitemr`   
value_typekvargs   &&&&        r   r   r      s}    t!=j!I!I %   tJ!74!?$Q'I D 	(O  tJ!74!?Z(MA KKM!DA 	
*1*PP!  
y11
#C==Z_4##%%*Fs*K*K	0*  $ 
1
1
$ZL 1;  <q	  s
e 3L	E	&	&

1
1
$ZLyk JDDI7 K55?L	C 
 
,k ## 33&zl 3[ 7 \- & '' 	
	s5   H 1II
8II%H==II*)I*c                ~    V ^8  d   QhR\         P                  R\        R\        3,          R\         P                  /# )r   rd   function.r   r	   re   r   r   )r   s   "r   r   r   #  s9      


(0c(:r   c                     \         P                  ! V4      pVP                  p/ pVP                  P	                  4        F-  w  rVWP9   g   K  \        W,          VP                  VV4      WE&   K/  	  V# N)rW   	signaturerZ   
parametersr[   r   rr   )rd   r   r   r|   converted_argsr{   params   &&     r   convert_argument_from_functionr   #  sp     ))).$//557j#B






	$n  8 
r   c                j    V ^8  d   QhR\         P                  R\        R\        3,          R\        /# r   rd   function_to_invoke.r   r   )r   s   "r   r   r   4  3      


2:382Dr   c                     \        W4      p V! R/ VB #   \         d2   p\        P                  ! R TP                   RT RT  RT 24      hRp?ii ; i)Failed to invoke function  with converted arguments , from model returned function call argument  because of error Nr   r   	Exceptionr   FunctionInvocationErrorrZ   rd   r   r   r   s   &&  r   invoke_function_from_dict_argsr   4  su     2$K.///	 

(
(
$%7%@%@$A B  ./ 01!	6 s    A,AAc                j    V ^8  d   QhR\         P                  R\        R\        3,          R\        /# r   r   )r   s   "r   r   r   B  r   r   c                    "   \        W4      p V! R/ VB G R j  xL
 #  L  \         d2   p\        P                  ! RTP                   RT RT  RT 24      hR p?ii ; i5i)Nr   r   r   r   r   r   r   s   &&  r   $invoke_function_from_dict_args_asyncr   B  s}      2$K.#5n5555	 

(
(
$%7%@%@$A B  ./ 01!	6 s0   A ! ! A ! A,AAA c          	          V ^8  d   QhR\         P                  R\        \        \        \
        R\        3,          \        3,          3,          R\        \         P                  ,          /# r   responser^   .r   
r   GenerateContentResponser    r&   r   r   r   r   rB   Part)r   s   "r   r   r   P  sS        ++ sE(38"46K"KLLM  
%** r   c                &   . pV P                   Ee[   \        V P                   ^ ,          P                  \        P                  4      '       Ed   V P                   ^ ,          P                  P
                  e   V P                   ^ ,          P                  P
                   F  pVP                  '       g   K  VP                  P                  pVf   K3  VP                  P                  f   KM  W,          p\        VP                  P                  4      p \        V\        4      '       g   R\        We4      /p\        P                  P                  TXR7      p	TP!                  T	4       K  	  V#   \         d   pR\        T4      /p Rp?LURp?ii ; i)6Returns the function response parts from the response.Nresulterrornamer   )
candidatesr   contentr   Contentpartsfunction_callr   rd   rk   r   r   r   r&   r   from_function_responserH   )
r   r^   func_response_partspartr|   funcrd   func_responser   func_response_parts
   &&        r   get_function_response_partsr   P  sM   
 %
X((+33U]]
C
C


a
 
(
(
.
.
:##A&..44$$))i		4#5#5#:#:#F&@##
	,D"7888DM
 #ZZ>>] ? 
 	""#56) 5* 
  	,"CF+-	,s   #E..F9FFc          	          V ^8  d   QhR\         P                  R\        \        \        \
        R\        3,          \        3,          3,          R\        \         P                  ,          /# r   r   )r   s   "r   r   r   s  sS     . .++.sE(38"46K"KLLM. 
%**.r   c                h  "   . pV P                   Ee   \        V P                   ^ ,          P                  \        P                  4      '       Ed   V P                   ^ ,          P                  P
                  Ee   V P                   ^ ,          P                  P
                   EF_  pVP                  '       g   K  VP                  P                  pVf   K4  VP                  P                  f   KN  W,          p\        VP                  P                  4      p \        V\        4      '       dK   VP                  \        P                  ! WFR7      4      G Rj  xL
 pVP                  '       d   RV/pM]RV/pMX\        P                  ! V4      '       d   R\!        We4      G Rj  xL
 /pM&R\"        P$                  ! \&        We4      G Rj  xL
 /p \        P,                  P/                  WHR7      p
VP1                  V
4       EKb  	  V#  L Lf LB  \(         d   p	R\+        T	4      /p Rp	?	L[Rp	?	ii ; i5i)r   N)r   rd   r   r   r   )r   r   r   r   r   r   r   r   rd   rk   r   	call_toolFunctionCallisErrorrW   rX   r   asyncio	to_threadr   r   r&   r   r   rH   )r   r^   r   r   r|   r   rd   mcp_tool_responser   r   r   s   &&         r   !get_function_response_parts_asyncr   s  s    
 %
X((+33U]]
C
C


a
 
(
(
.
.
:##A&..44$$))i		4#5#5#:#:#F&@##
	,344&*nn""	=' ! !(((&(9:m'):;m**400 DT PPM
  1 12D! M #ZZ>> ? 
 	""#56E 5F 
/! Q  	,"CF+-	,s   CH2H2/'H2?HHH-H1H22H6H27HH"H	#H(H2)HH	H9H2H	HHH/H*%H2*H//H2c                Z    V ^8  d   QhR\         \        P                  ,          R\        /# r   r   r   r   rR   )r   s   "r   r   r     s'     49 49U66749	49r   c                   V '       g   R# \        V 4      pV'       d   VP                  '       dm   VP                  P                   eT   \        VP                  P                  4      ^ 8:  d0   \        P                  RVP                  P                   R24       R# VP                  '       d   VP                  P                  f   R# VP                  P                  '       d   VP                  P                   em   RVP                  P                  9   dR   \        VP                  P                  4      ^ 8  d.   \        P                  RVP                  P                   R24       VP                  P                  # )z6Returns whether automatic function calling is enabled.Fz6max_remote_calls in automatic_function_calling_config zu is less than or equal to 0. Disabling automatic function calling. Please set max_remote_calls to a positive integer.Tmaximum_remote_callsz`automatic_function_calling.disable` is set to `True`. And `automatic_function_calling.maximum_remote_calls` is a positive number a9  . Disabling automatic function calling. If you want to enable automatic function calling, please set `automatic_function_calling.disable` to `False` or leave it unset, and set `automatic_function_calling.maximum_remote_calls` to a positive integer or leave `automatic_function_calling.maximum_remote_calls` unset.)r!   automatic_function_callingr   rC   loggerwarningdisablemodel_fields_setr   rJ   s   & r   should_disable_afcr     sO    
6v>, 

1
1
1

1
1
F
F
l55JJ
Kq
P
NN	33HHI J>	>  
1
1
1		0	0	8	8	@ --555

1
1
F
F !		0	0	A	AB
l55JJ
Ka
O
NN	 33HHI JD		D 
	0	0	8	88r   c                Z    V ^8  d   QhR\         \        P                  ,          R\        /# r   )r   r   r   rC   )r   s   "r   r   r     s+     K KU667KKr   c                    V '       g   \         #  \        V 4      '       d   \        R 4      h\        V 4      pVP                  '       d   VP                  P
                  f   \         # \        VP                  P
                  4      # )zUautomatic function calling is not enabled, but SDK is trying to get max remote calls.)_DEFAULT_MAX_REMOTE_CALLS_AFCr   r\   r!   r   r   rC   r   s   & r   get_max_remote_calls_afcr     st     
((J
	  7v>,

1
1
1		0	0	E	E	M((	\44II	JJr   c                R    V ^8  d   QhR\         \        P                  ,          RR/# )r   r   r   N)r   r   r   )r   s   "r   r   r     s&      HU=X=X4Y 	r   c                4   V '       d/   V P                   '       d   V P                   P                  '       g   R# V P                  pV'       d   VP                  MRpV P                   P                  P                  pV'       d   V'       g   \        R4      hR# R# )z9Raises an error if the config is not compatible with AFC.NFav  Running in streaming mode with stream_function_call_arguments enabled, this feature is not compatible with automatic function calling (AFC). Please set config.automatic_function_calling.disable to True to disable AFC or leave config.tool_config. function_calling_config.stream_function_call_arguments to be empty or set to False to disable streaming function call arguments.)tool_configfunction_calling_configr   r   stream_function_call_argumentsr\   )r   
afc_configdisable_afc_configstream_function_calls   &   r   'raise_error_for_afc_incompatible_configr     s     777
00*-7z))U00OO  "4
	I  #5r   c                Z    V ^8  d   QhR\         \        P                  ,          R\        /# r   r   )r   s   "r   r   r     s+     I IU667I	Ir   c                     V '       g   R # \        V 4      pVP                  '       g   R # VP                  P                  '       * # )T)r!   r   ignore_call_historyr   s   & r   should_append_afc_historyr     s8     
6v>,		0	0	044HH	HHr   c                    V ^8  d   QhR\         \        P                  ,          R\         \        P                  ,          /# r   )r   r   r   r   )r   s   "r   r   r     s2      U667e))*r   c                   V '       g   R# \        V 4      pVP                  RR/R7      pVP                  Vn        VP                  '       d   \        P                  ! VP                  4      '       d~   VP
                  f   \        P                  ! / R7      Vn        VP
                  P                  f   / VP
                  n        \        P                  ! VP
                  P                  4       V# )zVReturns a parsed config with an appended MCP header if MCP tools or sessions are used.NrE   r]   )headers)
r!   
model_copyrE   r
   has_mcp_tool_usagehttp_optionsr   HttpOptionsr   set_mcp_usage_header)r   rJ   config_model_copys   &  r   parse_config_for_mcp_usager     s     
6v>, #--gt_-E(..J99,:L:LMM%%-','8'8'D$%%--5/1$$,##$5$B$B$J$JK	r   c                    V ^8  d   QhR\         \        P                  ,          R\        \         \        P                  ,          \
        \        \        3,          3,          /# r   )r   r   r   tupler   r    r&   r   )r   s   "r   r   r   (  sM     )8 )8U667)8
U(()#	#$&)8r   c                  "   / p\        V 4      pV'       g   RV3# VP                  RR/R7      pVP                  '       Ed5   . Vn        VP                   EF  p\        e   \	        V\        4      '       d   \        YDP                  4       G Rj  xL
 4      pVP                  P                  VP                  4       VP                   F  pVP                  '       g   K  VP                   F_  pVP                  '       g   K  VP                  VP                  4      '       d   \        RVP                   R24      hVWP                  &   Ka  	  K  	  EK  VP                  P                  V4       EK  	  W13#  L5i)zReturns a parsed config with MCP sessions converted to GenAI tools.

Also returns a map of MCP tools to GenAI tool adapters to be used for AFC.
NrE   r   rT   rU   )r   r   rE   McpClientSessionr   r   
list_toolsextendrG   r   r,   r\   rH   )r   rP   parsed_configparsed_config_copyrM   mcp_to_genai_tool_adapter
genai_toolfunction_declarations   &       r   parse_config_for_mcp_sessionsr   (  s`     BD,V4-	+++ %///G!##		%*T;K*L*L$9))%
! 	  ''(A(G(GH399J---(2(H(H$%***-112F2K2KLL"2778 9& & 
 . ++D+DE )I : 	  ''-) $, 
	77' *s-   A E<AE<E:AE<!E< E<%AE<c                    V ^8  d   QhR\         \        P                  \        P                  3,          R\        P                  R\         \        P                  \        P                  3,          /# )r   contentschunkr   )r   r   ContentListUnionContentListUnionDictr   )r   s   "r   r   r   T  sX     
 
E**E,F,FFG
((
 5!!5#=#==>
r   c                    Vem   VP                   e_   VP                   ^ ,          P                  p\        P                  ! V 4      p \	        V \
        4      '       d   Ve   V P                  V4       V # )zFAppends the contents of the chunk to the contents list and returns it.)r   r   t
t_contentsr   rB   rH   )r   r   chunk_contents   && r   append_chunk_contentsr  T  s\    
 5++7$$Q'//M||H%H(D!!m&?oom$	/r   c                2   V ^8  d   QhR\         \        \        P                  \        ,          \        P
                  3,          R\        \        P                  ,          R\        \        ,          R\        \        P                  \        \        3,          /# )r   fileuser_http_optionsuser_mime_typer   )r   r&   osPathLikeioIOBaser   r   HttpOptionsOrDictr   r   rC   )r   s   "r   r   r   a  sw     F- F-
R[[%ryy0
1F- 7 78F- SMF- 			F-r   c                   RpTp\        V \        P                  4      '       d   Vf   \        R4      h\	        V R4      '       d   RV P
                  9  d   \        R4      hV P                  4       pV P                  ^ \        P                  4       V P                  4       V,
          pV P                  V\        P                  4       M\        P                  ! V 4      pV'       d&   \        P                  P                  V4      '       g   \        V  R24      h\        P                  P                  V4      pVf   \         P"                  ! V4      w  rGVf   \        R4      hV'       dJ   \        V\$        4      '       d   \&        P(                  ! R/ VB pTpRVn        R	R
RRRRRV RV /Vn        M$\&        P(                  ! RR	R
RRRRRV RV /R7      p\        V \.        \        P0                  34      '       dB   VP,                  f   / Vn        \        P                  P3                  V 4      VP,                  R&   WV3# )a%  Prepares the HTTP options, file bytes size and mime type for a resumable upload.

This function inspects a file (from a path or an in-memory object) to
determine its size and MIME type. It then constructs the necessary HTTP
headers and options required to initiate a resumable upload session.
NzfUnknown mime type: Could not determine the mimetype for your file
 please set the `mime_type` argumentmodebz'The file must be opened in binary mode.z is not a valid file path.ziUnknown mime type: Could not determine the mimetype for your file
    please set the `mime_type` argument zContent-Typezapplication/jsonzX-Goog-Upload-Protocol	resumablezX-Goog-Upload-Commandstartz#X-Goog-Upload-Header-Content-Lengthz!X-Goog-Upload-Header-Content-Type)api_versionr   zX-Goog-Upload-File-Namer   )r   r  r	  r\   hasattrr  tellseekr  SEEK_ENDSEEK_SETfspathpathisfileFileNotFoundErrorgetsize	mimetypes
guess_typer    r   r   r  r   r&   r  basename)	r  r  r  
size_bytes	mime_typeoffsetfs_pathr`   r   s	   &&&      r   prepare_resumable_uploadr#  a  s     *)bii  8  tV	DII	BCCYY[FIIav%JIIfbkk"iioG"''..11&@ABB)J))'2li; 
 #T**++@.?@$L!L* +-*+	{L $$.$k#W1j\/I;
	L sBKK())#!68gg6F6Ft6LL23	9	,,r   c                    V ^8  d   Qh/ ^ \         9   d   \        P                  ;R&   ^\         9   d   \        P                  ;R&   # )r   r   McpTool)__conditional_annotations__typingType)r   s   "r   r   r      s6     T T< &%FKK%= U> 6;;? Ur   )   
   r   )NNF)NN)Ar&  __doc__r   rW   r  loggingsysr'  r   r   r   r   r   r   r   r  r  rv   r  r	   r
   r   r   r   r   	_adaptersr   version_infor   _UnionGenericAliasTYPE_CHECKINGmcpr   r   	mcp.typesr   r%  ImportErrorr   	getLoggerr   r!   r/   r3   r@   rN   ra   rk   rg   ry   r   r   r   r   r   r   r   r   r   r   r   r   r  r#  r   )r&  s   @r   <module>r6     sG    U   	  
  M M M  	        , w'')	3'"%%'5)
 !# 			0	1

4$@!H$	;|" F.b49nK(2I*)8X
F- F-] 
 Gs   3E1 1E?>E?