
    )`i[              
          U d dl Z d dlmZ d dlmZmZmZ d dlZd dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZ d dlm Z   ej!        dd          Z" e j#        d          Z$ G d de          Z% G d de          Z& G d de          Z' G d de          Z( G d de          Z)deej*        ej+        f         ej,        z  e-z  ddfdZ.dedef         d ej/        dej0        ej1        z  ej2        z  fd!Z3dedef         d ej4        dej5        ej2        z  fd"Z6dedef         dej7        ej2        z  fd#Z8d ej9        ddfd$Z: eej+        ej2        z            Z;eej+        ej2        z           e<d%<    G d& deej=        ej>        ej+        ej*        ej,        f                   Z?dS )'    N)	timedelta)AnyProtocoloverload)MemoryObjectReceiveStreamMemoryObjectSendStream)AnyUrlTypeAdapter)
deprecated)ExperimentalClientFeatures)ExperimentalTaskHandlers)RequestContext)SessionMessage)BaseSessionProgressFnTRequestResponder)SUPPORTED_PROTOCOL_VERSIONSmcpz0.1.0)nameversionclientc                   f    e Zd Zdedef         dej        dej        ej        z  ej	        z  fdZ
dS )SamplingFnTcontextClientSessionparamsreturnc                 
   K   d S N selfr   r   s      f/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/mcp/client/session.py__call__zSamplingFnT.__call__   s       \_[^    N)__name__
__module____qualname__r   r   typesCreateMessageRequestParamsCreateMessageResultCreateMessageResultWithTools	ErrorDatar$   r    r%   r#   r   r      sl        _ 45_ 0_ 
	"U%G	G%/	Y	_ _ _ _ _ _r%   r   c                   V    e Zd Zdedef         dej        dej        ej        z  fdZ	dS )ElicitationFnTr   r   r   r   c                 
   K   d S r   r    r!   s      r#   r$   zElicitationFnT.__call__    s       03sr%   N)
r&   r'   r(   r   r   r)   ElicitRequestParamsElicitResultr-   r$   r    r%   r#   r/   r/      s[        3 453 )3 
	eo	-	3 3 3 3 3 3r%   r/   c                   H    e Zd Zdedef         dej        ej        z  fdZdS )ListRootsFnTr   r   r   c                 
   K   d S r   r    )r"   r   s     r#   r$   zListRootsFnT.__call__(   s      25#r%   N)	r&   r'   r(   r   r   r)   ListRootsResultr-   r$   r    r%   r#   r4   r4   '   sL        6%os&:;6			06 6 6 6 6 6r%   r4   c                   (    e Zd Zdej        ddfdZdS )
LoggingFnTr   r   Nc                 
   K   d S r   r    r"   r   s     r#   r$   zLoggingFnT.__call__.          sr%   )r&   r'   r(   r)    LoggingMessageNotificationParamsr$   r    r%   r#   r8   r8   -   s=        6 
     r%   r8   c                   X    e Zd Zdeej        ej        f         ej        z  ez  ddfdZ	dS )MessageHandlerFnTmessager   Nc                 
   K   d S r   r    )r"   r?   s     r#   r$   zMessageHandlerFnT.__call__5   r;   r%   )
r&   r'   r(   r   r)   ServerRequestClientResultServerNotification	Exceptionr$   r    r%   r#   r>   r>   4   sX        !%"5u7I"IJUMeehqq 
     r%   r>   r?   r   c                 R   K   t           j                                         d {V  d S r   )anyiolowlevel
checkpoint)r?   s    r#   _default_message_handlerrI   ;   s4       .
#
#
%
%%%%%%%%%%r%   r   r   r   c                 F   K   t          j        t           j        d          S )NzSampling not supportedcoder?   r)   r-   INVALID_REQUESTr   r   s     r#   _default_sampling_callbackrP   A   s*       ?"(   r%   c                 F   K   t          j        t           j        d          S )NzElicitation not supportedrK   rM   rO   s     r#   _default_elicitation_callbackrR   K   s*       ?"+   r%   c                 F   K   t          j        t           j        d          S )NzList roots not supportedrK   rM   )r   s    r#   _default_list_roots_callbackrT   U   s*       ?"*   r%   c                 
   K   d S r   r    r   s    r#   _default_logging_callbackrW   ^   s       	Dr%   ClientResponsec                   d    e Zd Z	 	 	 	 	 	 	 dJddddeeez           dee         dedz  dedz  de	dz  de
dz  d	edz  d
edz  dej        dz  dej        dz  dedz  ddf fdZdej        fdZdej        dz  fdZedefd            Zdej        fdZ	 	 dKdeez  dededz  dedz  ddf
dZdej        dej        fdZ e! e"d          dedz  dej#        fd                        Z$e!dej%        dz  dej#        fd            Z$e!dej#        fd             Z$	 dLdd!dedz  dej%        dz  dej#        fd"Z$e! e"d#          dedz  dej&        fd$                        Z'e!dej%        dz  dej&        fd%            Z'e!dej&        fd&            Z'	 dLdd!dedz  dej%        dz  dej&        fd'Z'd(e(dej)        fd)Z*d(e(dej        fd*Z+d(e(dej        fd+Z,	 	 	 dMdd,d-ed.e-ee.f         dz  dedz  d/e/dz  d0e-ee.f         dz  dej0        fd1Z1d-ed2ej0        ddfd3Z2e! e"d4          dedz  dej3        fd5                        Z4e!dej%        dz  dej3        fd6            Z4e!dej3        fd7            Z4	 dLdd!dedz  dej%        dz  dej3        fd8Z4dLd-ed.e-eef         dz  dej5        fd9Z6	 dLd:ej7        ej8        z  d;e-eef         d<e-eef         dz  dej9        fd=Z:e! e"d>          dedz  dej;        fd?                        Z<e!dej%        dz  dej;        fd@            Z<e!dej;        fdA            Z<	 dLdd!dedz  dej%        dz  dej;        fdBZ<dNdCZ=dDe>ej?        ej@        f         ddfdEZAdFe>ej?        ej@        f         ejB        z  ez  ddfdGZCdHejB        ddfdIZD xZES )Or   N)sampling_capabilitiesexperimental_task_handlersread_streamwrite_streamread_timeout_secondssampling_callbackelicitation_callbacklist_roots_callbacklogging_callbackmessage_handlerclient_inforZ   r[   r   c
                   t                                          ||t          j        t          j        |           |	pt
          | _        |pt          | _        |
| _	        |pt          | _        |pt          | _        |pt          | _        |pt           | _        i | _        d | _        d | _        |pt+                      | _        d S )N)r^   )super__init__r)   rA   rC   DEFAULT_CLIENT_INFO_client_inforP   _sampling_callback_sampling_capabilitiesrR   _elicitation_callbackrT   _list_roots_callbackrW   _logging_callbackrI   _message_handler_tool_output_schemas_server_capabilities_experimental_featuresr   _task_handlers)r"   r\   r]   r^   r_   r`   ra   rb   rc   rd   rZ   r[   	__class__s               r#   rg   zClientSession.__init__p   s     	$!5 	 	
 	
 	
 (>+>"3"Q7Q&;#%9%Z=Z"$7$W;W!!1!N5N / K3KFH!EI!IM# 9V<T<V<Vr%   c                 P  K   | j         t          ur| j        pt          j                    nd }| j        t          ur8t          j        t          j                    t          j	                              nd }| j
        t          urt          j        d          nd }|                     t          j        t          j        t          j        t          j        t          j        ||d || j                                                  | j                                      t          j                   d {V }|j        t0          vrt3          d|j                   |j        | _        |                     t          j        t          j                                         d {V  |S )N)formurlT)listChanged)samplingelicitationexperimentalrootstasks)protocolVersioncapabilities
clientInforV   z.Unsupported protocol version from the server: )rj   rP   rk   r)   SamplingCapabilityrl   rR   ElicitationCapabilityFormElicitationCapabilityUrlElicitationCapabilityrm   rT   RootsCapabilitysend_requestClientRequestInitializeRequestInitializeRequestParamsLATEST_PROTOCOL_VERSIONClientCapabilitiesrs   build_capabilityri   InitializeResultr~   r   RuntimeErrorr   rq   send_notificationClientNotificationInitializedNotification)r"   ry   rz   r|   results        r#   
initializezClientSession.initialize   s      &.HHH (FE,D,F,F 	 )1NNN	 '466244   
  	 (0LLL !d3333 	 ((' 8(-(E%*%=%-(3)-"'"&"5"F"F"H"H& & & $(#4
 
 
    "!
 
 
 
 
 
 
 
& !)DDDhPVPfhhiii$*$7!$$U%=e>[>]>]%^%^_________r%   c                     | j         S )zReturn the server capabilities received during initialization.

        Returns None if the session has not been initialized yet.
        )rq   r"   s    r#   get_server_capabilitiesz%ClientSession.get_server_capabilities   s    
 ((r%   c                 F    | j         t          |           | _         | j         S )a2  Experimental APIs for tasks and other features.

        WARNING: These APIs are experimental and may change without notice.

        Example:
            status = await session.experimental.get_task(task_id)
            result = await session.experimental.get_task_result(task_id, CallToolResult)
        )rr   r   r   s    r#   r{   zClientSession.experimental   s&     &.*DT*J*JD'**r%   c                    K   |                      t          j        t          j                              t          j                   d{V S )zSend a ping request.N)r   r)   r   PingRequestEmptyResultr   s    r#   	send_pingzClientSession.send_ping   sY      && 1 3 344
 
 
 
 
 
 
 
 	
r%   progress_tokenprogresstotalr?   c                    K   |                      t          j        t          j        t          j        ||||                                         d{V  dS )zSend a progress notification.)progressTokenr   r   r?   rV   N)r   r)   r   ProgressNotificationProgressNotificationParams)r"   r   r   r   r?   s        r#   send_progress_notificationz(ClientSession.send_progress_notification   s       $$$* ;&4!)# '	    	 	
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
r%   levelc           	         K   |                      t          j        t          j        t          j        |                              t          j                   d{V S )z Send a logging/setLevel request.)r   rV   N)r   r)   r   SetLevelRequestSetLevelRequestParamsr   )r"   r   s     r#   set_logging_levelzClientSession.set_logging_level   sz      &&% 6UCCC   
 
 
 
 
 
 
 
 
 	
r%   z>Use list_resources(params=PaginatedRequestParams(...)) insteadcursorc                 
   K   d S r   r    r"   r   s     r#   list_resourceszClientSession.list_resources  s      UXUXr%   r   c                
   K   d S r   r    r:   s     r#   r   zClientSession.list_resources  s      qtqtr%   c                 
   K   d S r   r    r   s    r#   r   zClientSession.list_resources
  s      ADr%   rV   c                   K   ||t          d          ||}n|t          j        |          }nd}|                     t          j        t          j        |                    t          j                   d{V S )zSend a resources/list request.

        Args:
            cursor: Simple cursor string for pagination (deprecated, use params instead)
            params: Full pagination parameters including cursor and any future fields
        N%Cannot specify both cursor and paramsr   rV   )
ValueErrorr)   PaginatedRequestParamsr   r   ListResourcesRequestListResourcesResultr"   r   r   request_paramss       r#   r   zClientSession.list_resources  s       &"4DEEE#NN"9HHHNN!N&& :. Q Q QRR%
 
 
 
 
 
 
 
 	
r%   zGUse list_resource_templates(params=PaginatedRequestParams(...)) insteadc                 
   K   d S r   r    r   s     r#   list_resource_templatesz%ClientSession.list_resource_templates(  s      fifir%   c                
   K   d S r   r    r:   s     r#   r   z%ClientSession.list_resource_templates,  s       -0Cr%   c                 
   K   d S r   r    r   s    r#   r   z%ClientSession.list_resource_templates1  s      RURUr%   c                   K   ||t          d          ||}n|t          j        |          }nd}|                     t          j        t          j        |                    t          j                   d{V S )zSend a resources/templates/list request.

        Args:
            cursor: Simple cursor string for pagination (deprecated, use params instead)
            params: Full pagination parameters including cursor and any future fields
        Nr   r   rV   )r   r)   r   r   r   ListResourceTemplatesRequestListResourceTemplatesResultr   s       r#   r   z%ClientSession.list_resource_templates4  s       &"4DEEE#NN"9HHHNN!N&& B. Y Y YZZ-
 
 
 
 
 
 
 
 	
r%   uric           	         K   |                      t          j        t          j        t          j        |                              t          j                   d{V S )zSend a resources/read request.r   rV   N)r   r)   r   ReadResourceRequestReadResourceRequestParamsReadResourceResultr"   r   s     r#   read_resourcezClientSession.read_resourceO  sz      &&) :sCCC   
 $
 
 
 
 
 
 
 
 	
r%   c           	         K   |                      t          j        t          j        t          j        |                              t          j                   d{V S )z#Send a resources/subscribe request.r   rV   N)r   r)   r   SubscribeRequestSubscribeRequestParamsr   r   s     r#   subscribe_resourcez ClientSession.subscribe_resourceZ  sz      &&& 7C@@@   
 
 
 
 
 
 
 
 
 	
r%   c           	         K   |                      t          j        t          j        t          j        |                              t          j                   d{V S )z%Send a resources/unsubscribe request.r   rV   N)r   r)   r   UnsubscribeRequestUnsubscribeRequestParamsr   r   s     r#   unsubscribe_resourcez"ClientSession.unsubscribe_resourcee  sz      &&( 9cBBB   
 
 
 
 
 
 
 
 
 	
r%   )metar   	argumentsprogress_callbackr   c                J  K   d}|t          j        j        di |}|                     t          j        t          j        t          j        |||                              t           j        ||           d{V }|j        s| 	                    ||           d{V  |S )zBSend a tools/call request with optional progress callback support.N)r   r   _metarV   )request_read_timeout_secondsr   r    )
r)   RequestParamsMetar   r   CallToolRequestCallToolRequestParamsCallToolResultisError_validate_tool_result)r"   r   r   r^   r   r   r   r   s           r#   	call_toolzClientSession.call_toolp  s       26',44t44E((% 6DI]bccc   
  )=/ ) 	
 	
 	
 	
 	
 	
 	
 	
 ~ 	;,,T6:::::::::r%   r   c                   K   || j         vr|                                  d{V  d}|| j         v r| j                             |          }nt                              d| d           |wddlm}m}m} |j	        t          d| d          	  ||j	        |           dS # |$ r}t          d| d|           d}~w|$ r}t          d	| d|           d}~ww xY wdS )
zKValidate the structured content of a tool result against its output schema.NzTool z= not listed by server, cannot validate any structured contentr   )SchemaErrorValidationErrorvalidatez; has an output schema but did not return structured contentz,Invalid structured content returned by tool z: zInvalid schema for tool )rp   
list_toolsgetloggerwarning
jsonschemar   r   r   structuredContentr   )r"   r   r   output_schemar   r   r   es           r#   r   z#ClientSession._validate_tool_result  sq     t000//#########4,,, 599$??MMNNf4fffggg$IIIIIIIIII'/"]D]]]  K1=AAAAA" _ _ _"#]RV#]#]Z[#]#]^^^ K K K"#Id#I#Ia#I#IJJJK %$s$   B$ $C )B>>C CC z<Use list_prompts(params=PaginatedRequestParams(...)) insteadc                 
   K   d S r   r    r   s     r#   list_promptszClientSession.list_prompts  s      QTQTr%   c                
   K   d S r   r    r:   s     r#   r   zClientSession.list_prompts  s      mpmpr%   c                 
   K   d S r   r    r   s    r#   r   zClientSession.list_prompts  s      =@Sr%   c                   K   ||t          d          ||}n|t          j        |          }nd}|                     t          j        t          j        |                    t          j                   d{V S )zSend a prompts/list request.

        Args:
            cursor: Simple cursor string for pagination (deprecated, use params instead)
            params: Full pagination parameters including cursor and any future fields
        Nr   r   rV   )r   r)   r   r   r   ListPromptsRequestListPromptsResultr   s       r#   r   zClientSession.list_prompts  s       &"4DEEE#NN"9HHHNN!N&& 8 O O OPP#
 
 
 
 
 
 
 
 	
r%   c           
         K   |                      t          j        t          j        t          j        ||                              t          j                   d{V S )zSend a prompts/get request.)r   r   rV   N)r   r)   r   GetPromptRequestGetPromptRequestParamsGetPromptResult)r"   r   r   s      r#   
get_promptzClientSession.get_prompt  s|      &&& 7TYWWW   
 !
 
 
 
 
 
 
 
 	
r%   refargumentcontext_argumentsc                   K   d}|t          j        |          }|                     t          j        t          j        t          j        |t          j        di ||                              t           j                   d{V S )z#Send a completion/complete request.N)r   )r   r   r   rV   r    )r)   CompletionContextr   r   CompleteRequestCompleteRequestParamsCompletionArgumentCompleteResult)r"   r   r   r   r   s        r#   completezClientSession.complete  s       (-8IJJJG&&% 6!&!9!E!EH!E!E '       
 
 
 
 
 
 
 
 	
r%   z:Use list_tools(params=PaginatedRequestParams(...)) insteadc                 
   K   d S r   r    r   s     r#   r   zClientSession.list_tools  s      MPSr%   c                
   K   d S r   r    r:   s     r#   r   zClientSession.list_tools  s      ililr%   c                 
   K   d S r   r    r   s    r#   r   zClientSession.list_tools  s      9<r%   c                @  K   ||t          d          ||}n|t          j        |          }nd}|                     t          j        t          j        |                    t          j                   d{V }|j        D ]}|j        | j	        |j
        <   |S )zSend a tools/list request.

        Args:
            cursor: Simple cursor string for pagination (deprecated, use params instead)
            params: Full pagination parameters including cursor and any future fields
        Nr   r   rV   )r   r)   r   r   r   ListToolsRequestListToolsResulttoolsoutputSchemarp   r   )r"   r   r   r   r   tools         r#   r   zClientSession.list_tools  s       &"4DEEE#NN"9HHHNN!N(( 6n M M MNN!
 
 
 
 
 
 
 
 L 	E 	ED373DD%di00r%   c                    K   |                      t          j        t          j                                         d{V  dS )z'Send a roots/list_changed notification.N)r   r)   r   RootsListChangedNotificationr   s    r#   send_roots_list_changedz%ClientSession.send_roots_list_changed  sF      $$U%=e>`>b>b%c%cdddddddddddr%   	responderc                   K   t          t          t          f         |j        |j        | d           }| j                            |j                  r=|5  | j                            ||           d {V  d d d            n# 1 swxY w Y   d S |j        j	        xt          j        d x\  } |5  |j        (| j                            |||j                   d {V }n|                     ||           d {V }t                              |          }|                    |           d {V  d d d            n# 1 swxY w Y   n xt          j        d x\  } |5  |j        (| j                            |||j                   d {V }n|                     ||           d {V }t                              |          }|                    |           d {V  d d d            n# 1 swxY w Y   n xt          j        d xn\    |5  |                     |           d {V }t                              |          }|                    |           d {V  d d d            n# 1 swxY w Y   no t          j        d x\\   |5  |                    t          j        t          j                                         d {V cd d d            S # 1 swxY w Y   n 	 	 d S )N)
request_idr   sessionlifespan_contextrV   r    )root)r   r   r   r  request_metars   handles_requestrequesthandle_requestr  r)   CreateMessageRequesttaskaugmented_samplingrj   rX   validate_pythonrespondElicitRequestaugmented_elicitationrl   ListRootsRequestrm   r   rB   r   )r"   r  ctxr   responseclient_responses         r#   _received_requestzClientSession._received_request!  s     ]C/0 +'!	
 
 
 ..y/@AA 	 I I)88iHHHHHHHHHI I I I I I I I I I I I I I I4 $:+:::::66 = ={.)-)<)O)OPSU[]c]h)i)i#i#i#i#i#i#i)-)@)@f)M)M#M#M#M#M#M#M&4&D&DX&N&NO#++O<<<<<<<<<= = = = = = = = = = = = = = = ; 4$33333FF = ={.)-)<)R)RSVX^`f`k)l)l#l#l#l#l#l#l)-)C)CC)P)P#P#P#P#P#P#P&4&D&DX&N&NO#++O<<<<<<<<<= = = = = = = = = = = = = = = 4 *')))))) = =%)%>%>s%C%CCCCCCCH&4&D&DX&N&NO#++O<<<<<<<<<= = = = = = = = = = = = = = = * "$$$$$ a a!*!2!253E5K\K^K^3_3_3_!`!```````a a a a a a a a a a a a a a a a a % ts]   "BBB/BD<<E E  BG--G14G1AI,,I03I0?KKKreqc                 @   K   |                      |           d{V  dS )z>Handle incoming messages by forwarding to the message handler.N)ro   )r"   r!  s     r#   _handle_incomingzClientSession._handle_incomingT  s4      
 ##C(((((((((((r%   notificationc                    K   |j         xt          j        d x!\  } |                     |           d{V  dS  t          j        d x\  }dS  	 dS )z%Handle notifications from the server.rV   N)r  r)   LoggingMessageNotificationrn   ElicitCompleteNotification)r"   r$  r   s      r#   _received_notificationz$ClientSession._received_notification[  s       @1@@@@@,,V44444444444 A1@@@@@ 	 A
 r%   )NNNNNNN)NNr   )NNN)r   N)Fr&   r'   r(   r   r   rD   r   r   r   r/   r4   r8   r>   r)   Implementationr   r   rg   r   r   ServerCapabilitiesr   propertyr   r{   r   r   strintfloatr   LoggingLevelr   r   r   r   r   r   r   r   r	   r   r   r   r   dictr   r   r   r   r   r   r   r   r   ResourceTemplateReferencePromptReferencer   r   r  r   r
  r   rA   rB   r   rC   r#  r(  __classcell__)rt   s   @r#   r   r   g   su        26046:37.24837"W BFFJ"W "W "W.~	/IJ"W -^<"W ($.	"W
 '-"W -t3"W *D0"W %t+"W +T1"W )D0"W  %7$>"W %=t$C"W 
"W "W "W "W "W "WH1%"8 1 1 1 1f))AD)H ) ) ) ) +8 + + + X+
!2 
 
 
 
 #"
 
c	
 
 t|	

 t
 

 
 
 
*	
U-? 	
EDU 	
 	
 	
 	
 ZPQQX3:X%:SXXX RQ XXte.JT.QtV[Vottt XtDe&?DDD XD "
 7;	
 
 
d

 ,t3	

 
	"
 
 
 
6 ZYZZiC$Ji5Cdiii [Z Xi05<0		*0 0 0 X0 Uu/PUUU XU "
 7;	
 
 
d

 ,t3	

 
	*
 
 
 
6	
v 	
%2J 	
 	
 	
 	
	
F 	
u7H 	
 	
 	
 	
	
f 	
9J 	
 	
 	
 	
 ,01504 '+   S>D( ($.	
 '- 38nt# 
	   >K KU=Q KVZ K K K K4 ZNOOTtT8OTTT PO XTpE,H4,OpTYTkppp Xp@E$;@@@ X@ "
 7;	
 
 
d

 ,t3	

 
	 
 
 
 
6	
 	
S 	
T#s(^d5J 	
V[Vk 	
 	
 	
 	
 48	
 
,u/DD
 sCx.
  S>D0	

 
	
 
 
 
0 ZLMMPsTzPe6KPPP NM XPl%*F*MlRWRglll Xl<%"7<<< X< "  7;	     d
  ,t3	 
 
	       De e e e11A%BUW\WiBi1j 1os 1 1 1 1f)e153EEFIaadmm) 
) ) ) )9Q VZ        r%   )@loggingdatetimer   typingr   r   r   anyio.lowlevelrF   anyio.streams.memoryr   r   pydanticr	   r
   typing_extensionsr   	mcp.typesr)   mcp.client.experimentalr   %mcp.client.experimental.task_handlersr   mcp.shared.contextr   mcp.shared.messager   mcp.shared.sessionr   r   r   mcp.shared.versionr   r)  rh   	getLoggerr   r   r/   r4   r8   r>   rA   rB   rC   rD   rI   r*   r+   r,   r-   rP   r1   r2   rR   r6   rT   r<   rW   rX   __annotations__r   r   r   r    r%   r#   <module>rD     s          * * * * * * * * * *     R R R R R R R R ( ( ( ( ( ( ( ( ( ( ( ( ( (       > > > > > > J J J J J J - - - - - - - - - - - - I I I I I I I I I I : : : : : :*e*wGGG 		8	$	$_ _ _ _ _( _ _ _3 3 3 3 3X 3 3 36 6 6 6 68 6 6 6              &e153EEFIaadmm&	& & & &OS01, !CCeoU   OS01% %/)   OS01
U_,   	2			 	 	 	 EPKPUPbejetPtDuDuE.@A u u u@ @ @ @ @  		"@ @ @ @ @r%   