
    dhjM                     ~   U d dl Z d dlmZmZmZmZ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mZ d dlmZmZmZmZ eZdedefd	Z G d
 dee         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! 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& 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+ G d* d+e      Z, G d, d-e      Z- G d. d/e      Z.i ej^                  eej^                  eej^                  eej^                  ee j^                  e e!j^                  e!e"j^                  e"e#j^                  e#e$j^                  e$e%j^                  e%e&j^                  e&e'j^                  e'e(j^                  e(e)j^                  e)e*j^                  e*e+j^                  e+e,j^                  e,e-j^                  e-e.j^                  e.iZ0ee	e   ee   f   e1d0<   d1ed2edefd3Z2	 	 dSd4e3d5ee   d6e	e   d7e	e   deeddf   f
d8Z4d9d:d;d<ed=ed>edefd?Z5d9d@d<ed>edefdAZ6dBdCd<edDedefdEZ7dFdGdHd<edIedJedefdKZ8dLedMedefdNZ9dBdCdLedMedDedefdOZ:dFdGdHdLedMedIedJedef
dPZ;dQededefdRZ<y)T    N)
AnyClassVarDict	GeneratorIterableIteratorListOptionalTupleType)Self)MessageEntityType)MessageEntityUser)add_surrogateshtml_decorationmarkdown_decorationremove_surrogatesvaluereturnc                 <    t        | j                  d            dz  S )Nz	utf-16-le   )lenencode)r   s    R/var/www/netwell/bot/venv/lib/python3.12/site-packages/aiogram/utils/formatting.pysizeofr      s    u||K()Q..    c                      e Zd ZU dZdZeee      ed<   dZ	de
deddfdZed	ed
ee   dd fd       Zdddddedededeeee   f   fdZdededefdZd	d
ddddededededeeef   f
dZdddedeeef   fdZdddedeeef   fdZdddedeeef   fd Zdddedeeef   fd!Zdefd"Zdefd#Zd$ed%ed&edefd'Zd0d(edefd)Z d*e
dd fd+Z!de"e
   fd,Z#defd-Z$d.e%dd fd/Z&y)1Textz
    Simple text element
    Ntype_body_paramsbodyparamsr   c                      || _         || _        y Nr!   )selfr$   r%   s      r   __init__zText.__init__*   s    
 ,0
'-r   textentitiesc           	      `     | t        t        |      |rt        |d              S g        S )Nc                     | j                   S r'   offset)items    r   <lambda>z$Text.from_entities.<locals>.<lambda>7   s
    4;; r   key)r*   r+   )_unparse_entitiesr   sorted)clsr*   r+   s      r   from_entitieszText.from_entities2   sB    #D)KS.FG
 	
 Z\
 	
r   r   T_offset_sort_collect_entitiesr9   r:   r;   c                   d}g }|}| j                   D ]o  }t        |t              st        |      }||z  }|t	        |      z  }2|j                  |d|      \  }}	||z  }|t	        |      z  }|s_|j                  |	       q |r1| j                  r%|j                  | j                  |||z
               |r|r|j                  d        ||fS )zS
        Render elements tree as text with entities list

        :return:
         Fr8   r/   lengthc                     | j                   S r'   r.   )entitys    r   r1   zText.render.<locals>.<lambda>`   s
    V]] r   r2   )r"   
isinstancer   strr   renderextendr    append_render_entitysort)
r(   r9   r:   r;   r*   r+   r/   node	node_textnode_entitiess
             r   rD   zText.render;   s     JJ 	3DdD)4y&,&+/;;"&7 ,7 ,(	=
 	!&++$OOM2	3  OOD//wvPWGW/XYMM:M;X~r   r/   r?   c                n    | j                   J d       t        d| j                   ||d| j                  S )Nz-Node without type can't be rendered as entity)r    r/   r?    )r    r   r#   )r(   r/   r?   s      r   rG   zText._render_entityd   s7    yy$U&UU$Z$))F6ZT\\ZZr   
parse_mode)text_keyentities_keyreplace_parse_modeparse_mode_keyrO   rP   rQ   rR   c                F    | j                         \  }}||||i}|rd||<   |S )af  
        Render element tree as keyword arguments for usage in an API call, for example:

        .. code-block:: python

            entities = Text(...)
            await message.answer(**entities.as_kwargs())

        :param text_key:
        :param entities_key:
        :param replace_parse_mode:
        :param parse_mode_key:
        :return:
        N)rD   )r(   rO   rP   rQ   rR   
text_valueentities_valueresults           r   	as_kwargszText.as_kwargsh   s9    , &*[[]"
Nj."
 %)F>"r   )rQ   c                *    | j                  dd|      S )af  
        Shortcut for :meth:`as_kwargs` for usage with API calls that take
        ``caption`` as a parameter.

        .. code-block:: python

            entities = Text(...)
            await message.answer_photo(**entities.as_caption_kwargs(), photo=phot)

        :param replace_parse_mode: Will be passed to :meth:`as_kwargs`.
        :return:
        captioncaption_entities)rO   rP   rQ   rW   r(   rQ   s     r   as_caption_kwargszText.as_caption_kwargs   s#     ~~+1  
 	
r   c                ,    | j                  ddd|      S )at  
        Shortcut for :meth:`as_kwargs` for usage with
        method :class:`aiogram.methods.send_poll.SendPoll`.

        .. code-block:: python

            entities = Text(...)
            await message.answer_poll(**entities.as_poll_question_kwargs(), options=options)

        :param replace_parse_mode: Will be passed to :meth:`as_kwargs`.
        :return:
        questionquestion_entitiesquestion_parse_moderO   rP   rR   rQ   r[   r\   s     r   as_poll_question_kwargszText.as_poll_question_kwargs   s&     ~~,01	  
 	
r   c                ,    | j                  ddd|      S )a'  
        Shortcut for :meth:`as_kwargs` for usage with
        method :class:`aiogram.methods.send_poll.SendPoll`.

        .. code-block:: python

            question_entities = Text(...)
            explanation_entities = Text(...)
            await message.answer_poll(
                **question_entities.as_poll_question_kwargs(),
                options=options,
                **explanation_entities.as_poll_explanation_kwargs(),
            )

        :param replace_parse_mode: Will be passed to :meth:`as_kwargs`.
        :return:
        explanationexplanation_entitiesexplanation_parse_moderb   r[   r\   s     r   as_poll_explanation_kwargszText.as_poll_explanation_kwargs   s&    $ ~~"/31	  
 	
r   c                ,    | j                  ddd|      S )a{  
        Shortcut for :meth:`as_kwargs` for usage with
        method :class:`aiogram.methods.send_gift.SendGift`.

        .. code-block:: python

            entities = Text(...)
            await bot.send_gift(gift_id=gift_id, user_id=user_id, **entities.as_gift_text_kwargs())

        :param replace_parse_mode: Will be passed to :meth:`as_kwargs`.
        :return:
        r*   text_entitiestext_parse_moderb   r[   r\   s     r   as_gift_text_kwargszText.as_gift_text_kwargs   s&     ~~(,1	  
 	
r   c                 T    | j                         \  }}t        j                  ||      S )z5
        Render elements tree as HTML markup
        )rD   r   unparser(   r*   r+   s      r   as_htmlzText.as_html   s&     h&&tX66r   c                 T    | j                         \  }}t        j                  ||      S )z;
        Render elements tree as MarkdownV2 markup
        )rD   r   rn   ro   s      r   as_markdownzText.as_markdown   s&     h"**4::r   r(   argskwargsc                 @     t        |       |i i | j                  |S r'   )r    r#   )r(   rs   rt   s      r   replacezText.replace   s'    tDz4>#=dll#=f#=>>r   indentc                    rdnd}|j                  fd| j                  D              }|j                  d | j                  j                         D              }g }|r|j	                  |       |r|j	                  |       |j                  |      }rt        j                  d|z   dz   d      }t        |       j                   d| dS )	Nz,
z, c              3   x   K   | ]1  }t        |t              r|j                         n
t        |       3 yw))rw   N)rB   r   as_pretty_stringrepr).0r0   rw   s     r   	<genexpr>z(Text.as_pretty_string.<locals>.<genexpr>   s<      
 5?tT4JD!!!0PTUYPZZ
s   7:c              3   6   K   | ]  \  }}|	| d|  y w)N=rM   )r|   kvs      r   r}   z(Text.as_pretty_string.<locals>.<genexpr>   s"     Y41a1=QCq,Ys   

z    ())	joinr"   r#   itemsrF   textwraprw   r    __name__)r(   rw   sepr$   r%   rs   args_strs    `     r   rz   zText.as_pretty_string   s    e4xx 



 
 Y4<<3E3E3GYYKKKK88D>th'=vFHt*%%&az33r   otherc                 `   t        |t              rR|j                  | j                  k(  r9| j                  |j                  k(  r  t        |       g | |i | j                  S t        |       t        u r0t        |t              r  t        |       g | |i | j                  S t        | |      S r'   )rB   r   r    r#   rC   )r(   r   s     r   __add__zText.__add__   s    eT"uzzTYY'>4<<SXS`S`C`4:<t<e<t||<<:*UC"84:;t;U;dll;;D%  r   c              #   8   K   | j                   E d {    y 7 wr'   )r"   )r(   s    r   __iter__zText.__iter__  s     ::s   c                 B    | j                  d      \  }}t        |      S )NF)r;   )rD   r   )r(   r*   _s      r   __len__zText.__len__	  s     +++6ad|r   r0   c                 T   t        |t              st        d      |j                  |j                  dk(  r%|j                   | j
                  | j                   S |j                  dn|j                  }|j                  t        |       n|j                  }||k(  r| j                         S g }d}| j                  D ]Z  }t        |      }|}||z  }||k  r||kD  r n;t        d||z
  f      }	t        |||z
  f      }
||	|
 }|sJ|j                  |       \  | j
                  | S )NzCan only be slicedr   )rB   slice	TypeErrorstartstoprv   r"   r   maxminrF   )r(   r0   r   r   nodespositionrI   	node_sizecurrent_positionabnew_nodes               r   __getitem__zText.__getitem__  s/   $&011JJ$**/tyy7H4<<,,ZZ'TZZ II-s4y499D=<<>!JJ 	#DD	I'	!H%$&Q 0012AY'7 789AAayHLL"	# t||U##r   )F)'r   
__module____qualname____doc__r    r   r
   rC   __annotations__	__slots__NodeTyper   r)   classmethodr	   r   r7   intboolr   rD   rG   r   rW   r]   rc   rh   rl   rp   rr   r   rv   rz   r   r   r   r   r   r   rM   r   r   r   r   !   sC    %)D(8C=
!($I.. . 
	. 
 
]0C 
 
 
 "&' ' 	'
  ' 
sD''	('R[ [S [] [ &#'*  	
 !  
c3h> ?C 
t 
tCQTH~ 
& EI 
T 
TRUWZRZ^ 
( HL 
 
PTUXZ]U]P^ 
2 AE 
 
cSVh 
(7 7;S ;?d ?3 ?# ?$ ?4t 4 4&!X !& !(8,  $ $& $r   r   c                   H     e Zd ZdZej
                  Zdededdf fdZ	 xZ
S )HashTaga   
    Hashtag element.

    .. warning::

        The value should always start with '#' symbol

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.HASHTAG`
    r$   r%   r   Nc                     t        |      dk7  rt        d      t        |d   t              st        d      |d   j	                  d      s	d|d   z   f}t        |   |i | y )N   z$Hashtag can contain only one elementr   zHashtag can contain only string#r   
ValueErrorrB   rC   
startswithsuperr)   r(   r$   r%   	__class__s      r   r)   zHashTag.__init__:  h    t9>CDD$q'3'>??Aw!!#&$q'M#D$)&)r   )r   r   r   r   r   HASHTAGr    r   r   r)   __classcell__r   s   @r   r   r   ,  4    	 $$D*h *# *$ * *r   r   c                   H     e Zd ZdZej
                  Zdededdf fdZ	 xZ
S )CashTaga   
    Cashtag element.

    .. warning::

        The value should always start with '$' symbol

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CASHTAG`
    r$   r%   r   Nc                     t        |      dk7  rt        d      t        |d   t              st        d      |d   j	                  d      s	d|d   z   f}t        |   |i | y )Nr   z$Cashtag can contain only one elementr   zCashtag can contain only string$r   r   s      r   r)   zCashTag.__init__R  r   r   )r   r   r   r   r   CASHTAGr    r   r   r)   r   r   s   @r   r   r   D  r   r   r   c                   (    e Zd ZdZej
                  Zy)
BotCommanda  
    Bot command element.

    .. warning::

        The value should always start with '/' symbol

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.BOT_COMMAND`
    N)r   r   r   r   r   BOT_COMMANDr    rM   r   r   r   r   \  s    	 ((Dr   r   c                   (    e Zd ZdZej
                  Zy)Urlz
    Url element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.URL`
    N)r   r   r   r   r   URLr    rM   r   r   r   r   k  s       Dr   r   c                   (    e Zd ZdZej
                  Zy)Emailz
    Email element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.EMAIL`
    N)r   r   r   r   r   EMAILr    rM   r   r   r   r   v  s     ""Dr   r   c                   (    e Zd ZdZej
                  Zy)PhoneNumberz
    Phone number element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.PHONE_NUMBER`
    N)r   r   r   r   r   PHONE_NUMBERr    rM   r   r   r   r     s     ))Dr   r   c                   (    e Zd ZdZej
                  Zy)Boldz
    Bold element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.BOLD`
    N)r   r   r   r   r   BOLDr    rM   r   r   r   r          !!Dr   r   c                   (    e Zd ZdZej
                  Zy)Italicz
    Italic element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.ITALIC`
    N)r   r   r   r   r   ITALICr    rM   r   r   r   r     s     ##Dr   r   c                   (    e Zd ZdZej
                  Zy)	Underlinez
    Underline element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.UNDERLINE`
    N)r   r   r   r   r   	UNDERLINEr    rM   r   r   r   r     s     &&Dr   r   c                   (    e Zd ZdZej
                  Zy)Strikethroughz
    Strikethrough element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.STRIKETHROUGH`
    N)r   r   r   r   r   STRIKETHROUGHr    rM   r   r   r   r     s     **Dr   r   c                   (    e Zd ZdZej
                  Zy)Spoilerz
    Spoiler element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.SPOILER`
    N)r   r   r   r   r   SPOILERr    rM   r   r   r   r     s     $$Dr   r   c                   (    e Zd ZdZej
                  Zy)Codez
    Code element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CODE`
    N)r   r   r   r   r   CODEr    rM   r   r   r   r     r   r   r   c            	       X     e Zd ZdZej
                  Zdddedee	   de
ddf fdZ xZS )	Prez
    Pre element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.PRE`
    N)languager$   r   r%   r   c                (    t        |   |d|i| y )Nr   r   r)   )r(   r   r$   r%   r   s       r   r)   zPre.__init__  s    $<<V<r   )r   r   r   r   r   PREr    r   r
   rC   r   r)   r   r   s   @r   r   r     sD       DBF =h =(3- =RU =Z^ = =r   r   c                   L     e Zd ZdZej
                  Zdedede	ddf fdZ
 xZS )TextLinkz
    Text link element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_LINK`
    r$   urlr%   r   Nc                (    t        |   |d|i| y )Nr   r   )r(   r   r$   r%   r   s       r   r)   zTextLink.__init__  s    $2C262r   )r   r   r   r   r   	TEXT_LINKr    r   rC   r   r)   r   r   s   @r   r   r     s;     &&D3h 3S 3C 3D 3 3r   r   c                   L     e Zd ZdZej
                  Zdedede	ddf fdZ
 xZS )TextMentionz
    Text mention element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_MENTION`
    r$   userr%   r   Nc                (    t        |   |d|i| y )Nr   r   )r(   r   r$   r%   r   s       r   r)   zTextMention.__init__  s    $4T4V4r   )r   r   r   r   r   TEXT_MENTIONr    r   r   r   r)   r   r   s   @r   r   r     s;     ))D5h 5d 5c 5d 5 5r   r   c                   L     e Zd ZdZej
                  Zdedede	ddf fdZ
 xZS )CustomEmojiz
    Custom emoji element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CUSTOM_EMOJI`
    r$   custom_emoji_idr%   r   Nc                (    t        |   |d|i| y )Nr   r   )r(   r   r$   r%   r   s       r   r)   zCustomEmoji.__init__  s    $JJ6Jr   )r   r   r   r   r   CUSTOM_EMOJIr    r   rC   r   r)   r   r   s   @r   r   r     sB     ))DKh K K KPT K Kr   r   c                   (    e Zd ZdZej
                  Zy)
BlockQuotez
    Block quote element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.BLOCKQUOTE`
    N)r   r   r   r   r   
BLOCKQUOTEr    rM   r   r   r   r     s     ''Dr   r   c                   (    e Zd ZdZej
                  Zy)ExpandableBlockQuotez
    Expandable block quote element.

    Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity`
    with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.EXPANDABLE_BLOCKQUOTE`
    N)r   r   r   r   r   EXPANDABLE_BLOCKQUOTEr    rM   r   r   r   r     s     22Dr   r   
NODE_TYPESrA   r   c                     t         j                  | j                  t              } ||i | j	                  h dd      S )zW
    Apply single entity to text

    :param entity:
    :param text:
    :return:
    >   r    r?   r/   F)excludewarnings)r   getr    r   
model_dump)rA   r   	node_types      r   _apply_entityr  3  sB     v{{D1I	##,HSX#Y r   r*   r+   r/   r?   c           
   #     K   d|xs t        |       }t        |      D ]  \  }}|j                  dz  k  r|j                  dz  kD  rt        | |j                  dz          |j                  dz  }|j                  dz  |j                  dz  z   t        t        fd||dz   d              }t        |gt        | ||         |k  rt        | |        y y w)Nr   r   c                 0    | j                   dz  xs dk  S )Nr   r   r.   )er/   s    r   r1   z#_unparse_entities.<locals>.<lambda>S  s    QXX\V[q-I r   r   r>   )	r   	enumerater/   r   r?   listfilterr  r4   )r*   r+   r/   r?   indexrA   r   sub_entitiess     `     r   r4   r4   A  s     ~ s4yF"8, 
v==1v%==1v%#D&--!2C$DEE!"V]]Q%66F#I8TY\]T]T_K`ab
t\%O
 	

 VF 344 s   C'C*r   r=   )endr   r   r
  r   c                     |rLg }|dd D ]  }|j                  ||g        |j                  |d          |j                  |        t        | S g || }t        | S )z
    Wrap multiple nodes into line with :code:`\\n` at the end of line.

    :param items: Text or Any
    :param end: ending of the line, by default is :code:`\\n`
    :param sep: separator between items, by default is empty string
    :return: Text
    NrE   rF   r   )r
  r   r   r   r0   s        r   as_liner  ]  sr     #2J 	&DLL$%	&U2YS < %<r   )r   c                 x    g }|dd D ]  }|j                  || g        |j                  |d          t        | S )z^
    Wrap each element to separated lines

    :param items:
    :param sep:
    :return:
    Nr  r  )r   r   r   r0   s       r   as_listr  q  sH     Ecr
 "dC[!"	LLr<r   z- )markerr  c                 &     t         fd|D         S )z~
    Wrap elements as marked list

    :param items:
    :param marker: line marker, by default is '- '
    :return: Text
    c              3   6   K   | ]  }t        |        y wr'   r   )r|   r0   r  s     r   r}   z!as_marked_list.<locals>.<genexpr>  s     :DT&$':s   )r  )r  r   s   ` r   as_marked_listr    s     :E:;;r   r   z{}. r   fmtr   r  c                 :    t        fdt        ||       D         S )z
    Wrap elements as numbered list

    :param items:
    :param start: initial number, by default 1
    :param fmt: number format, by default '{}. '
    :return: Text
    c              3   Z   K   | ]"  \  }}t        j                  |      |       $ y wr'   )r   format)r|   r  r0   r  s      r   r}   z#as_numbered_list.<locals>.<genexpr>  s%     ^{udT#**U+T2^s   (+)r  r  )r   r  r   s    ` r   as_numbered_listr    s     ^iPUW\F]^__r   titler$   c                     t        | dg| S )z{
    Wrap elements as simple section, section has title and body

    :param title:
    :param body:
    :return: Text
    r   r  )r  r$   s     r   
as_sectionr    s     t#d##r   c                ,    t        | t        |d|i      S )zw
    Wrap elements as section with marked list

    :param title:
    :param body:
    :param marker:
    :return:
    r  )r  r  )r  r  r$   s      r   as_marked_sectionr     s     e^TA&ABBr   c          	      .    t        | t        |||d      S )z
    Wrap elements as section with numbered list

    :param title:
    :param body:
    :param start:
    :param fmt:
    :return:
    r  )r  r  )r  r   r  r$   s       r   as_numbered_sectionr"    s     e-t5cJKKr   r3   c                 0    t        t        | d      d|      S )z
    Wrap elements pair as key-value line. (:code:`<b>{key}:</b> {value}`)

    :param key:
    :param value:
    :return: Text
    : )r   r   )r3   r   s     r   as_key_valuer&    s     S#U++r   )NN)=r   typingr   r   r   r   r   r   r	   r
   r   r   typing_extensionsr   aiogram.enumsr   aiogram.typesr   r   aiogram.utils.text_decorationsr   r   r   r   r   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r  bytesr4   r  r  r  r  r  r   r"  r&  rM   r   r   <module>r-     s-      # + -  /# /# /H$8H H$V*d *0*d *0) )!$ !#D #*$ *"4 "$T $' '+D +%d %"4 "=$ =3t 35$ 5K$ K( (34 3/IIt/LL'/ LL'/ OOZ	/
 HHc/ 
JJ/ k/ 	IIt/ KK/ NNI/ / LL'/ 	IIt/ HHc/ MM8/  k!/" k#/$ OOZ3'/
D#T
*+ .-  h " ! 	5
5=!5 SM5 SM	5
 xt#$58 *." H 3 C  ( *. H 3 $  48 <8 <S <D < 56& 	`X 	`c 	`C 	`T 	`$h $x $D $ CCC C 
	C& 	LLL L 
	L
 
L$,h ,x ,D ,r   