Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_telnetlib.cpython-311.pyc
�

�Ked3��R�ddlZddlZddlZddlZddlmZddlmZmZddl	Z	ej
d���ejd��Zej
Z
d�ZGd�d	e	j��ZGd
�de��ZGd�d
ej��ZGd�dej��Zejd���Zdefd�ZGd�de	j��ZGd�de��ZGd�de��ZeZGd�de	j��ZGd�de	j��ZGd�de��Z e!dkre	j"��dSdS) �N)�support)�
socket_helper�warnings_helperT)�module�	telnetlibc�*�|���|���	|���\}}|���n#t$rYnwxYw|���dS#|���wxYw�N)�listen�set�accept�close�TimeoutError)�evt�serv�conn�addrs    �=/usr/local/apps/python3/lib/python3.11/test/test_telnetlib.py�serverrs����K�K�M�M�M��G�G�I�I�I���[�[�]�]�
��d��
�
�������
�
�
���
����	
�
�
��������
�
�������s)�+A�A<�
A#� A<�"A#�#A<�<Bc�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�GeneralTestsc���tj��|_tjtjtj��|_|j�d��tj	|j��|_
tjt|j|jf���|_
d|j
_|j
���|j���dS)N�<)�target�argsT)�	threading�Eventr�socket�AF_INET�SOCK_STREAM�sock�
settimeoutr�	bind_port�port�Threadr�thread�daemon�start�wait��selfs r�setUpzGeneralTests.setUps����?�$�$����M�&�.�&�2D�E�E��	��	���R� � � �!�+�D�I�6�6��	��&�f�D�H�T�Y�;O�P�P�P���!�������������
�
������c�<�|j���|`dSr	)r%�joinr)s r�tearDownzGeneralTests.tearDown's����������K�K�Kr,c��t�t|j��}|j���dSr	)r�Telnet�HOSTr#r r
�r*�telnets  r�	testBasiczGeneralTests.testBasic+s3���!�!�$��	�2�2����������r,c��t�t|j��5}|�|�����ddd��n#1swxYwY|�|�����dSr	)rr1r2r#�assertIsNotNone�
get_socket�assertIsNone)r*�tns  r�testContextManagerzGeneralTests.testContextManager0s���
�
�
�d�D�I�
.�
.�	2�"�� � ������1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2����"�-�-�/�/�*�*�*�*�*s�(A�A�!Ac��|�tj��du��tjd��	t�t|j��}tjd��n#tjd��wxYw|�|j	�
��d��|j	���dS)N�)�
assertTruer�getdefaulttimeout�setdefaulttimeoutrr1r2r#�assertEqualr �
gettimeoutr
r3s  r�testTimeoutDefaultzGeneralTests.testTimeoutDefault5s�������0�2�2�d�:�;�;�;�� ��$�$�$�	+��%�%�d�D�I�6�6�F��$�T�*�*�*�*��F�$�T�*�*�*�*���������/�/�1�1�2�6�6�6���������s�%A8�8Bc��|�tj��du��tjd��	t�t|jd���}tjd��n#tjd��wxYw|�|j�	��du��|j�
��dS�Nr=)�timeout)r>rr?r@rr1r2r#r rBr
r3s  r�testTimeoutNonezGeneralTests.testTimeoutNone?s�������0�2�2�d�:�;�;�;�� ��$�$�$�	+��%�%�d�D�I�t�%�D�D�F��$�T�*�*�*�*��F�$�T�*�*�*�*���������.�.�0�0�D�8�9�9�9���������s�'A:�:Bc���t�t|jd���}|�|j���d��|j���dSrE)rr1r2r#rAr rBr
r3s  r�testTimeoutValuezGeneralTests.testTimeoutValueJs\���!�!�$��	�2�!�>�>�������/�/�1�1�2�6�6�6���������r,c��t���}|�t|jd���|�|j���d��|j���dSrE)	rr1�openr2r#rAr rBr
r3s  r�testTimeoutOpenzGeneralTests.testTimeoutOpenOsk���!�!�#�#�����D�$�)�R��0�0�0������/�/�1�1�2�6�6�6���������r,c�X�t�t|jd���}|j}|�|���|��|�|���|�����|j���dSrE)	rr1r2r#r rAr8�filenor
)r*r4�t_socks   r�testGetterszGeneralTests.testGettersUs����!�!�$��	�2�!�>�>���������*�*�,�,�f�5�5�5���������&�-�-�/�/�:�:�:���������r,N)�__name__�
__module__�__qualname__r+r/r5r;rCrGrIrLrP�r,rrrs����������������
+�+�+�
���	�	�	����
�������r,rc�&�eZdZdZdd�Zd�Zd�ZdS)�
SocketStubz* a socket proxy that re-defines sendall() rTc�J�t|��|_g|_d|_dS)NF)�list�reads�writes�block)r*rYs  r�__init__zSocketStub.__init___s!���%�[�[��
������
�
�
r,c�:�|j�|��dSr	)rZ�append)r*�datas  r�sendallzSocketStub.sendallcs������4� � � � � r,c�,�d}|jrJt|��|kr7||j�d��z
}|jrt|��|k�7t|��|kr-|j�d||d���|d|�}|S)Nr,r)rY�len�pop�insert)r*�size�outs   r�recvzSocketStub.recves������j�	%�S��X�X��_�_��4�:�>�>�!�$�$�$�C��j�	%�S��X�X��_�_��s�8�8�d�?�?��J���a��T�U�U��,�,�,��e�t�e�*�C��
r,N)rT)rQrRrS�__doc__r\r`rgrTr,rrVrV]sL������4�4�����!�!�!�����r,rVc�&�eZdZd�Zd�Zd�Zd�ZdS)�TelnetAlikec��t���r	)�NotImplementedErrorr)s rrNzTelnetAlike.filenoos��!�#�#�#r,c��dSr	rTr)s rr
zTelnetAlike.closeqs���r,c��|jjSr	)r r[r)s r�
sock_availzTelnetAlike.sock_availrs���I�O�#�$r,c���tj��5}tjj||g|�R�ddd��n#1swxYwY|xj|���z
c_dSr	)r�captured_stdoutrr1�msg�	_messages�getvalue)r*rrrrfs    rrrzTelnetAlike.msgts���
�
$�
&�
&�	3�#��� ��s�2�T�2�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3����#�,�,�.�.�(����s
�9�=�=N)rQrRrSrNr
rorrrTr,rrjrjnsJ������$�$�$����%�%�%�����r,rjc�F�eZdZd�Zed���Zdd�Zd�Zdd�Zd�Z	dS)	�MockSelectorc��i|_dSr	��keysr)s rr\zMockSelector.__init__|s
����	�	�	r,c��dS)Ng����MbP?rTr)s r�
resolutionzMockSelector.resolutions���tr,Nc�H�tj|d||��}||j|<|S)Nr)�	selectors�SelectorKeyry)r*�fileobj�eventsr_�keys     r�registerzMockSelector.register�s)���#�G�Q���=�=�� ��	�'���
r,c�6�|j�|��Sr	)ryrc)r*rs  r�
unregisterzMockSelector.unregister�s���y�}�}�W�%�%�%r,c��d}|jD]%}t|t��r|jj}n�&|rgSd�|j���D��S)NFc� �g|]}||jf��SrT)r�)�.0r�s  r�
<listcomp>z'MockSelector.select.<locals>.<listcomp>�s��D�D�D�#�S�#�*�%�D�D�Dr,)ry�
isinstancerjr r[�values)r*rFr[rs    r�selectzMockSelector.select�sp�����y�	�	�G��'�;�/�/�
���*����
��	E��I�D�D���1A�1A�1C�1C�D�D�D�Dr,c��|jSr	rxr)s r�get_mapzMockSelector.get_map�s
���y�r,r	)
rQrRrSr\�propertyr{r�r�r�r�rTr,rrvrvzs��������������X������
&�&�&�	E�	E�	E�	E�����r,rvc#��K��fd�}	tj}|t_dV�|t_n#|t_wxYwdS)Nc�"��t���Sr	)rV)�ignoredrYs �r�new_connztest_socket.<locals>.new_conn�s����%� � � r,)r�create_connection)rYr��old_conns`  r�test_socketr��sb�����!�!�!�!�!�,��+��#+�� ��
�
�
�#+�� � ��8�� �+�+�+�+�
�Fs	�3�ArTc���|D]"}t|��tus
J|����#t|��5|dd��}d|_ddd��n#1swxYwY|S)za return a telnetlib.Telnet object that uses a SocketStub with
        reads queued up to be read �dummyr�N)�type�bytesr�rs)rY�cls�xr4s    r�test_telnetr��s����#�#���A�w�w�%���������	�U�	�	�����W�a��������������������������Ms�A�A�Ac��eZdZd�Zd�ZdS)�ExpectAndReadTestCasec�J�tj|_tt_dSr	)r�_TelnetSelector�old_selectorrvr)s rr+zExpectAndReadTestCase.setUp�s��%�5���$0�	�!�!�!r,c�(�|jt_dSr	)r�rr�r)s rr/zExpectAndReadTestCase.tearDown�s��$(�$5�	�!�!�!r,N)rQrRrSr+r/rTr,rr�r��s2������1�1�1�6�6�6�6�6r,r�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�	ReadTestsc�h�dg}t|��}|�d��}|�|d|j|j|jjf���gd�}d�|dd���}t|��}|�d��}|�||��dS)	zc
        read_until(expected, timeout=None)
        test the blocking version of read_util
        sxxxmatchyyy�matchsxxxmatch)rr)s2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr�s2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyr,N���)r��
read_untilrA�cookedq�rawqr rYr.)r*�wantr4r_rY�expects      r�test_read_untilzReadTests.test_read_until�s���
����T�"�"��� � ��*�*������{�����f�k�N_�0`��a�a�a�0�0�0�����%����*�%�%���U�#�#��� � ��*�*������v�&�&�&�&�&r,c��gd�}d�|��}t|��}|���}|�||��dS)zJ
        read_all()
          Read all data until EOF; may block.
        )��xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs�yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyys�zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzr,N)r.r��read_allrA)r*rYr�r4r_s     r�
test_read_allzReadTests.test_read_all�sU��
5�4�4�����%�����U�#�#����� � ������v�&�&�&��r,c�
�tdg��}|���}|�t|��dk��t��}|���}|�d|��dS)zQ
        read_some()
          Read at least one byte or EOF; may block.
        r��r,N)r��	read_somer>rbrA)r*r4r_s   r�test_read_somezReadTests.test_read_some�sv���j�\�*�*�����!�!������D�	�	�Q��'�'�'��������!�!������d�#�#�#�#�#r,c�(�d}t|g��}t||��}d|j_|�d|����d|j_d}		||��z
}n#t
$rYnwxYw� |�||��dS)z
        read_*_eager()
          Read all data available already queued or on the socket,
          without blocking.
        �dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTr,FN)r��getattrr r[rA�EOFError)r*�	func_namer�r4�funcr_s      r�_read_eagerzReadTests._read_eager�s������d�V�$�$���v�y�)�)�� ��������d�d�f�f�%�%�%�!������	�
�����������
�
�
���
����	�
	
����t�$�$�$�$�$s�
A+�+
A8�7A8c�Z�|�d��|�d��dS)N�
read_eager�read_very_eager)r�r)s r�test_read_eagerzReadTests.test_read_eager�s3��	
����&�&�&����*�+�+�+�+�+r,c�f�d}t|g��}|�d|�����|jjr |���|jj� |���}|�||��|�t|j��dS�Nr�r,)r�rA�read_very_lazyr rY�	fill_rawq�assertRaisesr�)r*r�r4r_s    rr�zReadTests.read_very_lazy�s������d�V�$�$������f�3�3�5�5�6�6�6��k��	��������k��	��$�$�&�&������t�$�$�$����(�F�$9�:�:�:�:�:r,c��d}t|g��}|�d|�����d}		|���}||z
}|s|���n#t$rYn-wxYw|�|�|�����j|�||��dSr�)r�rA�	read_lazyr�r�r>�
startswith)r*r�r4r_�	read_datas     r�test_read_lazyzReadTests.test_read_lazy	s������d�V�$�$������f�.�.�0�0�1�1�1���	3�
�"�,�,�.�.�	��	�!�� �'��$�$�&�&�&����
�
�
���
�����O�O�D�O�O�D�1�1�2�2�2�	3�	
����t�$�$�$�$�$s�/A/�/
A<�;A<N)
rQrRrSr�r�r�r�r�r�r�rTr,rr�r��s}������'�'�'�"
�
�
�$�$�$�%�%�%�(,�,�,�;�;�;�%�%�%�%�%r,r�c��eZdZdd�Zd�ZdS)�nego_collectorNc�0�d|_||_d|_dS)Nr,)�seen�	sb_getter�sb_seen)r*r�s  rr\znego_collector.__init__s����	�"�������r,c��|xj||zz
c_|tjkr-|jr(|���}|xj|z
c_dSdSdSr	)r��tl�SEr�r�)r*r �cmd�opt�sb_datas     r�do_negoznego_collector.do_negosU���	�	�S�3�Y��	�	��"�%�<�<�D�N�<��n�n�&�&�G��L�L�G�#�L�L�L�L��<�<�<r,r	)rQrRrSr\r�rTr,rr�r�s7����������
$�$�$�$�$r,r�c��eZdZdZd�ZdS)�
WriteTestszKThe only thing that write does is replace each tl.IAC for
    tl.IAC+tl.IACc��ddtjzdzdtjztjzdztjztjdg}|D]�}t��}|�|��d�|jj��}|�|�tjtjtjz��|����dS)Nsdata sample without IACsdata sample withs one IACsa fews iacsr,)	r��IACr��writer.r rZrA�replace)r*�data_sampler_r4�writtens     r�
test_writezWriteTests.test_write+s���1�*�R�V�3�k�A��"�&�(�2�6�1�H�<�r�v�E��v��	��
 �	J�	J�D� �]�]�F��L�L������h�h�v�{�1�2�2�G����T�\�\�"�&������?�?��I�I�I�I�		J�	Jr,N)rQrRrSrhr�rTr,rr�r�'s2��������
J�
J�
J�
J�
Jr,r�c��eZdZejejejejejej	ej
ejgZd�Z
d�Zd�Zd�Zd�Zd�ZdS)�OptionTestsc�*�t|��}td�|����}t��}|�|j��|���}|j}|�t|��dk��|�	|dd�|j
��|�|dd�tj
��|�|t||z����d|_dS)z helper for testing IAC + cmd r,rNr��)r�rbr.r��set_option_negotiation_callbackr�r�r�r>�assertIn�cmdsrAr��NOOPTr�)r*r_r4�data_len�nego�txtr�s       r�
_test_commandzOptionTests._test_command;s����T�"�"���s�x�x��~�~�&�&�������.�.�t�|�<�<�<��o�o�����i������C���1��%�%�%��
�
�c�"�1�"�g�t�y�)�)�)�����Q�q�S��2�8�,�,�,�����3�s�S�y�>�>�2�2�2�����r,c�0�|jD]i}|�tj|g��|�dtj|dg��|�dtj|dg���j|�d�|jD����dS)Nr�sdyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy�
xxxxxxxxxx�
yyyyyyyyyyc�,�g|]}tj|z��SrT)r�r�)r�r�s  rr�z1OptionTests.test_IAC_commands.<locals>.<listcomp>Os��@�@�@�c�B�F�S�L�@�@�@r,)r�r�r�r�)r*r�s  r�test_IAC_commandszOptionTests.test_IAC_commandsIs����9�	B�	B�C�������}�-�-�-����
�B�F�C��B�C�C�C����	�2�6�3��@�A�A�A�A����@�@�d�i�@�@�@�A�A�A�A�Ar,c��tjtjztjztjztjtjztjztjztjztjztjtjztjztjzdztjztjztjtjzdztjztjztjztjztjtjzdztjztjzdztjztjzg}t	|��}t|j��}|�|j��|�	��}|�
|d��tjtjzdztjzdztjzdz}|�
|j|��|�
d|�����d|_dS)Nsaasbbsccsddr,saabb)
r�r��SBr�r�r��read_sb_datar�r�r�rAr�r�)r*�sendr4r�r��want_sb_datas      r�test_SB_commandszOptionTests.test_SB_commandsQs����������'�"�%�/��������'�"�&�0�2�6�9�B�E�A��������'�"�&�0�5�8�2�6�A�B�E�I�������&���/�"�&�8�2�6�A�B�E�I�������&���/�"�&�8�5�@�2�6�I�B�E�Q�	���T�"�"���f�1�2�2���.�.�t�|�<�<�<��o�o��������c�"�"�"��v�����0�2�6�9�E�A�B�F�J�U�R�������|�4�4�4�����f�1�1�3�3�4�4�4�����r,c	�X�dtjtdg��zdftjtjztdg��zdftjtjztdg��zdftjtjztdg��zdftjtjztdg��zdfg}|D]Y\}}t|g��}|�d��|�	��}|�
||j���ZdS)	N)�az: recv b''
�Xz: IAC 88 not recognized
r�z: IAC DO 1
z
: IAC DONT 1
z
: IAC WILL 1
z
: IAC WONT 1
)r�r�r��DO�DONT�WILL�WONTr��set_debuglevelr�r�rs)r*�given_a_expect_b�a�br4r�s      r�test_debuglevel_readsz!OptionTests.test_debuglevel_readscs��
#�
�V�e�R�D�k�k�
!�#>�?�
�V�b�e�^�e�Q�C�j�j�
(�.�9�
�V�b�g�
��q�c�
�
�
*�,<�=�
�V�b�g�
��q�c�
�
�
*�,<�=�
�V�b�g�
��q�c�
�
�
*�,<�=�	
��%�	/�	/�D�A�q� �!��%�%�F��!�!�!�$�$�$��/�/�#�#�C��M�M�!�V�-�.�.�.�.��r,c��t��}|�d��|�d��d}|�||j��dS)Nr�sxxxzsend b'xxx'
)r�rr�r�rs)r*r4�expecteds   r�test_debuglevel_writez!OptionTests.test_debuglevel_writevsS���������a� � � ����V����"���
�
�h�� 0�1�1�1�1�1r,c��tg��5tdd��}d|_ddd��n#1swxYwY|�d��|�d��|�|jd��dS)Nr��0r�r��testz0.*test)r�rjrsrrr�assertRegexr3s  r�test_debug_accepts_str_portz'OptionTests.test_debug_accepts_str_port}s���
��_�_�	"�	"� ��#�.�.�F�!�F��	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	���a� � � ��
�
�6��������)�:�6�6�6�6�6s�4�8�8N)rQrRrSr��AO�AYT�BRK�EC�EL�GA�IP�NOPr�r�r�r�rrrrTr,rr�r�7s��������E�2�6�2�6�2�5�"�%�����r�v�F�D����B�B�B����$���&2�2�2�7�7�7�7�7r,r�c��eZdZd�ZdS)�ExpectTestsc���gd�}t|��}|�dg��\}}}|�|d�|dd�����dS)z�
        expect(expected, [timeout])
          Read until the expected string has been seen, or a timeout is
          hit (default is no timeout); may block.
        )r�r�r�r�r,Nr�)r�r�rAr.)r*r�r4�_r_s     r�test_expectzExpectTests.test_expect�se��0�/�/���T�"�"���]�]�H�:�.�.�
��1�T�����s�x�x��S�b�S�	�2�2�3�3�3�3�3r,N)rQrRrSrrTr,rrr�s#������	4�	4�	4�	4�	4r,r�__main__)#rr}r�
contextlibr
r�test.supportrr�unittest�requires_working_socket�import_deprecatedrr2r�TestCaser�objectrVr1rj�BaseSelectorrv�contextmanagerr�r�r�r�r�r�r�r�rrQ�mainrTr,r�<module>r%s���
�
�
�
�������������������7�7�7�7�7�7�7�7��������t�,�,�,�,�-�O�-�k�:�:�	����	�	�	�@�@�@�@�@�8�$�@�@�@�D���������"
�
�
�
�
�)�"�
�
�
������9�)����@��	�	���	��k�����6�6�6�6�6�H�-�6�6�6�`%�`%�`%�`%�`%�%�`%�`%�`%�D
$�
$�
$�
$�
$�V�
$�
$�
$���J�J�J�J�J��"�J�J�J� M7�M7�M7�M7�M7�(�#�M7�M7�M7�`
4�
4�
4�
4�
4�'�
4�
4�
4��z����H�M�O�O�O�O�O��r,