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

�Ke�z���ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
	ddlmZn
#e
$rdZYnwxYwd�ZGd�dej��ZGd�d��ZGd	�d
e��ZGd�d��ZGd
�de��ZGd�de��Zejedud��Gd�dej����Zedkrej��dSdS)�N)�threading_helper��hamtc�F��tj����fd���}|S)z*Needed to make reftracking test mode work.c�L��tj��}|j�g|�Ri|��S�N��contextvars�Context�run)�args�kwargs�ctx�funcs   ��;/usr/local/apps/python3/lib/python3.11/test/test_context.py�wrapperz!isolated_context.<locals>.wrappers3����!�#�#���s�w�t�-�d�-�-�-�f�-�-�-�)�	functools�wraps)rrs` r�isolated_contextrs8����_�T���.�.�.�.���.��Nrc�0�eZdZd�Zed���Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zed
���Z
d�Zd�Zd
�Zed���Zed���Zed���Zed���Zed���Zd�Zeej��d�����ZdS)�ContextTestc�P�|�td��5tj��ddd��n#1swxYwY|�td��5tjd��ddd��n#1swxYwYtjd��}|�|jd��|�t��5d|_ddd��n#1swxYwY|�t|��td����dS)Nztakes exactly 1z
must be a str��aaa�bbb)
�assertRaisesRegex�	TypeErrorr
�
ContextVar�assertEqual�name�assertRaises�AttributeError�assertNotEqual�hash)�self�cs  r�test_context_var_new_1z"ContextTest.test_context_var_new_1s���
�
#�
#�I�/@�
A�
A�	%�	%��"�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��
#�
#�I��
?�
?�	&�	&��"�1�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�
�"�5�)�)��������'�'�'�
�
�
�~�
.�
.�	�	��A�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���D��G�G�T�%�[�[�1�1�1�1�1s3�<�A�A�"B�B�
B�C+�+C/�2C/c��tjd��}|�dt|����tjdd���}|�dt|����g}tjd|���}|�|��|�dt|����|�dt|����|�d��}|�t|��t|����|�dt|����|�|��|�dt|����dS)N�a�{��default�123z...rz used )r
r�assertIn�repr�append�set�assertNotIn�reset)r&r'�lst�ts    r�test_context_var_repr_1z#ContextTest.test_context_var_repr_1*s2���"�3�'�'���
�
�c�4��7�7�#�#�#��"�3��4�4�4���
�
�e�T�!�W�W�%�%�%����"�3��4�4�4���
�
�1�
�
�
��
�
�e�T�!�W�W�%�%�%��
�
�e�T�#�Y�Y�'�'�'�
�E�E�!�H�H���
�
�d�1�g�g�t�A�w�w�'�'�'�����4��7�7�+�+�+�	����
�
�
��
�
�h��Q���(�(�(�(�(rc���|�td��5Gd�dtj��}ddd��n#1swxYwY|�td��5Gd�dtj��}ddd��n#1swxYwY|�td��5Gd�dtj��}ddd��dS#1swxYwYdS)Nznot an acceptable base typec��eZdZdS)�<ContextTest.test_context_subclassing_1.<locals>.MyContextVarN��__name__�
__module__�__qualname__�rr�MyContextVarr:@s�������rr@c��eZdZdS)�9ContextTest.test_context_subclassing_1.<locals>.MyContextNr;r?rr�	MyContextrBE��������rrCc��eZdZdS)�7ContextTest.test_context_subclassing_1.<locals>.MyTokenNr;r?rr�MyTokenrFIrDrrG)rrr
rr�Token)r&r@rCrGs    r�test_context_subclassing_1z&ContextTest.test_context_subclassing_1>s���
�
#�
#�I�/L�
M�
M�	�	�
�
�
�
�
�{�5�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�I�/L�
M�
M�	�	�
�
�
�
�
�K�/�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
#�
#�I�/L�
M�
M�	�	�
�
�
�
�
�+�+�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s5�A�A�A�'B�B�B�2C�C�Cc���|�td��5tjd��ddd��n#1swxYwY|�td��5tjdd���ddd��n#1swxYwY|�td��5tjd���ddd��n#1swxYwYtjdii��dS)Nz
any argumentsr�r*r?)rrr
r�r&s r�test_context_new_1zContextTest.test_context_new_1Ls���
�
#�
#�I��
?�
?�	#�	#����"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�
�
#�
#�I��
?�
?�	(�	(����Q�'�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�
�
#�
#�I��
?�
?�	%�	%���!�$�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%���!�!�b�!�!�!�!�!s3�=�A�A�#B�B
�
B
�,C�C�Cc��tj��}|�td��5|dddd��n#1swxYwY|�td��5d|vddd��n#1swxYwY|�td��5|�d��ddd��dS#1swxYwYdS)NzContextVar key was expectedr)r
rrr�get�r&rs  r�test_context_typerrors_1z$ContextTest.test_context_typerrors_1Us����!�#�#��
�
#�
#�I�/L�
M�
M�	�	���F�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�I�/L�
M�
M�	�	�
��H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�I�/L�
M�
M�	�	��G�G�A�J�J�J�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s5�	A�A�A�*A;�;A?�A?�!C�C�Cc�l�tj��}|�|tj��dSr)r
�copy_context�assertIsInstancerrPs  r�test_context_get_context_1z&ContextTest.test_context_get_context_1_s/���&�(�(�����c�;�#6�7�7�7�7�7rc��tj��}|�td��5|���ddd��dS#1swxYwYdS)Nzmissing 1 required)r
rrrrrPs  r�test_context_run_1zContextTest.test_context_run_1cs����!�#�#��
�
#�
#�I�/C�
D�
D�	�	��G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�Ac�Z�tj��}d�}|tj|��fD]�}|�|�|��dddif��|�|�|d��dddif��|�|�|d���dddd	�f��|�|�|d
d���dddd	�f��i}|�|j|d
fi|��dddif��|�|i����dS)Nc��d|d<|dz
}||fS)N�foo�spam��barr?�r
rs  rrz,ContextTest.test_context_run_2.<locals>.funcls��"�F�6�N��H��D���<�rr\r[rZr)rr]�rK)r*r[�)r`r])r
rr�partialr r)r&rr�fr*s     r�test_context_run_2zContextTest.test_context_run_2isw���!�#�#��	 �	 �	 �
�	�)�$�/�/�0�	$�	$�A�
���S�W�W�Q�Z�Z�(�V�U�O�)D�E�E�E����S�W�W�Q��]�]�Z�&�%��,I�J�J�J��������Q������E�2�2�3�
5�
5�
5�
�������2���#�#��A�u�5�5�6�
8�
8�
8��A��������2�#�#��#�#��v�u�o�.�
0�
0�
0�
���Q��#�#�#�#�%	$�	$rc���tj��}d�}|�t��5|�|��ddd��n#1swxYwY|�t��5|�|dd��ddd��n#1swxYwY|�t��5|�|ddd���ddd��dS#1swxYwYdS)Nc��ddzdS)Nrrr?r^s  rrz,ContextTest.test_context_run_3.<locals>.func�s��
��E�E�E�Errr_r+rK)r
rr"�ZeroDivisionErrorr)r&rrs   r�test_context_run_3zContextTest.test_context_run_3�s����!�#�#��	�	�	��
�
�0�
1�
1�	�	��G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�0�
1�
1�	 �	 ��G�G�D�!�Q����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �
�
�
�0�
1�
1�	'�	'��G�G�D�!�Q�#�G�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	's5�A�A�A�8B�B �#B �C(�(C,�/C,c�X�����tj��}tj���tjd�����fd������fd�}|�|��}��||����|�d�����|��dS)N�varc�X������d����dSr)�assertIsNonerO�r&ris��r�func2z-ContextTest.test_context_run_4.<locals>.func2�s'������c�g�g�d�m�m�,�,�,�,�,rc�������d������d�����������d��d��tj��}��t|��d����|�d��|S)Nr[r)rkrOr2rr r
rS�len)�cur�ctx2rmr&ris ����r�func1z-ContextTest.test_context_run_4.<locals>.func1�s�������c�g�g�d�m�m�,�,�,��G�G�F�O�O�O��H�H�U�O�O�O����S�W�W�T�]�]�F�3�3�3��*�,�,�C����S��X�X�q�)�)�)����S��X�v�.�.�.��Jrr[)r
rrrr r/)r&�ctx1rr�returned_ctxrqrmris`   @@@r�test_context_run_4zContextTest.test_context_run_4�s��������"�$�$���"�$�$���$�U�+�+��	-�	-�	-�	-�	-�	-�		�		�		�		�		�		�		�		��x�x���������|�,�,�,�����c�*�F�3�3�3��
�
�c�<�(�(�(�(�(rc�B���tj��}tjd�����fd�}��t��5|�|��ddd��n#1swxYwY����d����dS)Nric�������d������d��ddzdS)Nr[rr)rkrOr2rls��rrz,ContextTest.test_context_run_5.<locals>.func�s=������c�g�g�d�m�m�,�,�,��G�G�F�O�O�O�
��E�E�E�Er)r
rrr"rfrrkrO)r&rrris`  @r�test_context_run_5zContextTest.test_context_run_5�s������!�#�#���$�U�+�+��	�	�	�	�	�	�
�
�
�0�
1�
1�	�	��G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���#�'�'�$�-�-�(�(�(�(�(s�
A,�,A0�3A0c�����tj���tjdd�������fd�}��|��dS)Nr*rr,c�t��������d�������������d��������d���������d��dS)Nr�*)r rOrkr2)r'rr&s���r�funz+ContextTest.test_context_run_6.<locals>.fun�s�������Q�U�U�W�W�a�(�(�(����c�g�g�a�j�j�)�)�)�
�E�E�"�I�I�I����Q�U�U�W�W�b�)�)�)����S�W�W�Q�Z�Z��,�,�,�,�,r�r
rrr�r&r|r'rs` @@r�test_context_run_6zContextTest.test_context_run_6�s`������!�#�#���"�3��2�2�2��	-�	-�	-�	-�	-�	-�	-�	��������rc�j����tj������fd�������dS)Nc�����td��5�����ddd��dS#1swxYwYdS)Nzis already entered)r�RuntimeErrorr)rr|r&s���rr|z+ContextTest.test_context_run_7.<locals>.fun�s�����'�'��6J�K�K�
�
��������
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
s�A�A�Ar	)r&rr|s`@@r�test_context_run_7zContextTest.test_context_run_7�sK������!�#�#��	�	�	�	�	�	�	�	��������rc��tjd��}|�t��5|���ddd��n#1swxYwY|�|�d����|�d��}|�|���d��|�|�d��d��|�|j	|j
��|�|j	tjj
��|�|j|��|�d��}|�|���d��|�|�d��d��|�|j	d��|�
|��|�|���d��|�|�d��d��|�d��|�td��5|�
|��ddd��n#1swxYwY|�|���d��tj��}|�||��|�
|��|�td��5|�
|��ddd��n#1swxYwY|�|�d����|�||��|�||d��|�|�|d��d��|�t%|��d��|�t'|�����|dfg��|�t'|�����dg��|�t'|�����|g��|�t'|��|g��tj��}|�||��|�t0��5||ddd��n#1swxYwY|�|�|d��d��|�t%|��d��|�t'|��g��dS)	Nr'r{r[�spam2zhas already been used�aarr)r
rr"�LookupErrorrOrkr2r �assertIs�	old_value�MISSINGrHrir4rr�rSr/ro�list�items�values�keysr3�KeyError)r&r'�t0r6rsrqs      r�test_context_getset_1z!ContextTest.test_context_getset_1�sc���"�3�'�'��
�
�
�{�
+�
+�	�	�
�E�E�G�G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���!�%�%��+�+�&�&�&�
�U�U�2�Y�Y����������"�%�%�%�������t���b�)�)�)��
�
�b�l�B�J�/�/�/��
�
�b�l�K�$5�$=�>�>�>��
�
�b�f�a� � � �
�E�E�&�M�M����������&�)�)�)�������t���f�-�-�-������b�)�)�)�	����
�
�
���������"�%�%�%�������t���b�)�)�)�	���g����
�
#�
#�L�2I�
J�
J�	�	�
�G�G�A�J�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	���������'�*�*�*��'�)�)���
�
�a�����	�������
�
#�
#�L�2I�
J�
J�	�	�
�G�G�B�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����!�%�%��+�+�&�&�&��
�
�a���������a��'�*�*�*�������!�T�*�*�G�4�4�4�����T���A�&�&�&�����d�j�j�l�l�+�+�q�'�l�^�<�<�<�����d�k�k�m�m�,�,�w�i�8�8�8�����d�i�i�k�k�*�*�Q�C�0�0�0�����d���a�S�)�)�)��'�)�)������D�!�!�!�
�
�
�x�
(�
(�	�	���G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�������!�T�*�*�D�1�1�1�����T���A�&�&�&�����d���R�(�(�(�(�(sG�A�A�A�%J�J�J�L5�5L9�<L9�2	T�T�Tc��tjd��}tjd��}|�d��}|�td��5|�|��ddd��dS#1swxYwYdS)N�v1�v2r{zby a different)r
rr2r�
ValueErrorr4)r&r�r��t1s    r�test_context_getset_2z!ContextTest.test_context_getset_2s���
�
#�D�
)�
)��
�
#�D�
)�
)��
�V�V�B�Z�Z��
�
#�
#�J�0@�
A�
A�	�	��H�H�R�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A<�<B�Bc�����tjdd����tj������fd�}��|��dS)Nr'r{r,c����������d����t��5��ddd��n#1swxYwY��������������d��d����������t
������g����d��}��t
�������g������d����	|����t
������g����t��5��ddd��dS#1swxYwYdS)Nr{r[r)
r rOr"r�rkr3r�r�r2r4)r6r'rr&s ���rr|z.ContextTest.test_context_getset_3.<locals>.funs������Q�U�U�W�W�b�)�)�)��"�"�8�,�,�
�
��A���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����c�g�g�a�j�j�)�)�)����S�W�W�Q��/�/��8�8�8����Q��$�$�$����T�#�(�(�*�*�-�-�r�2�2�2����a���A����T�#�(�(�*�*�-�-��s�3�3�3����S��V�Q�'�'�'�
�G�G�A�J�J�J����T�#�(�(�*�*�-�-�r�2�2�2��"�"�8�,�,�
�
��A���
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
s$�	A�A� A�	G"�"G&�)G&)r
rrrr~s` @@r�test_context_getset_3z!ContextTest.test_context_getset_3s`������"�3��3�3�3���!�#�#��	�	�	�	�	�	�	�$	��������rc� �tjdd���}tj��}|�|jd��}|�td��5|�|��ddd��dS#1swxYwYdS)Nr'r{r,rzdifferent Context)r
rrrr2rr�r4)r&r'r�toks    r�test_context_getset_4z!ContextTest.test_context_getset_4(s����"�3��3�3�3���!�#�#���g�g�a�e�Q����
�
#�
#�J�0C�
D�
D�	�	�
�G�G�C�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s� B�B�
Bc����tjdd������g����fd�}tj���|��������g��dS)Nr'r{r,c������g�������d��������dg��dS)Nr{)r2rOr1r �r'r&s��rr|z.ContextTest.test_context_getset_5.<locals>.fun7sR���
�E�E�"�I�I�I�
�E�E�G�G�N�N�2�������Q�U�U�W�W�r�d�+�+�+�+�+r)r
rr2rSrr rO)r&r|r's` @r�test_context_getset_5z!ContextTest.test_context_getset_52s������"�3��3�3�3��	���b�	�	�	�	,�	,�	,�	,�	,�	,�
	� �"�"�&�&�s�+�+�+���������"�%�%�%�%�%rc������tj���tjdd��������fd�}��fd����|��dS)Nr'r{r,c������d������}��|�d����d������d����|�d��|��������d����|�d��dS)N�
��)r2�copyr r)rqr'rs�ctx2_funr&s ����r�ctx1_funz1ContextTest.test_context_copy_1.<locals>.ctx1_funCs����
�E�E�"�I�I�I��9�9�;�;�D����T�!�W�b�)�)�)�
�E�E�"�I�I�I����T�!�W�b�)�)�)����T�!�W�b�)�)�)��H�H�X�������T�!�W�b�)�)�)����T�!�W�b�)�)�)�)�)rc����������d����d��������d��dS)Nr�r�)r rOr2r�s��rr�z1ContextTest.test_context_copy_1.<locals>.ctx2_funQsT������Q�U�U�W�W�b�)�)�)�
�E�E�"�I�I�I����Q�U�U�W�W�b�)�)�)�)�)rr})r&r�r'rsr�s` @@@r�test_context_copy_1zContextTest.test_context_copy_1?s��������"�$�$���"�3��3�3�3��	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�
	
��������rc����tjd�����fd�}tj�d���}	t|�|td������}|���n#|���wxYw��	|ttd������dS)N�cvarc���td��D]l}��||z��tjt	jdd����������||z���m|S)Nr�g����MbP?g�������?)�ranger2�time�sleep�random�uniformr rO)�num�ir�r&s  ��r�subz/ContextTest.test_context_threads_1.<locals>.sub]st����2�Y�Y�
6�
6������q��!�!�!��
�6�>�%��6�6�7�7�7�� � ������S�1�W�5�5�5�5��Jrr�)�max_workers)
r
r�
concurrent�futures�ThreadPoolExecutorr��mapr��shutdownr )r&r��tp�resultsr�s`   @r�test_context_threads_1z"ContextTest.test_context_threads_1Xs������%�f�-�-��	�	�	�	�	�	��
�
2�
2�r�
2�
B�
B��	��2�6�6�#�u�R�y�y�1�1�2�2�G��K�K�M�M�M�M��B�K�K�M�M�M�M��������$�u�R�y�y�/�/�2�2�2�2�2s�0B�BN)r<r=r>r(rr7rIrMrQrUrWrcrgrurxrr�r�r�r�r�r�r�r�requires_working_threadingr�r?rrrrs�������
2�
2�
2��)�)���)�&���"�"�"����8�8�8����$�$�$�8'�'�'��)�)���)�0)�)�)��������3)�3)���3)�j������������0�������
&�
&���
&����2�0��0�2�2�3�3�3�2���3�3�3rrc�0�eZdZdZdd�d�Zd�Zd�Zd�ZdS)�HashKeyN��error_on_eq_toc�0�||_||_||_dSr)r!r%r�)r&r%r!r�s    r�__init__zHashKey.__init__rs����	���	�,����rc�(�d|j�d|j�d�S)Nz
<Key name:z hash:�>)r!r%rLs r�__repr__zHashKey.__repr__xs��9�D�I�9�9�T�Y�9�9�9�9rc�D�|j�|jjrt�|jSr)�_crasher�
error_on_hash�HashingErrorr%rLs r�__hash__zHashKey.__hash__{s"���=�$���)D�$����y�rc�>�t|t��stS|j�|jjrt
�|j�|j|urtd|�d|�����|j�|j|urtd|�d|�����|j|j	f|j|j	fkS)Nzcannot compare z to )
�
isinstancer��NotImplementedr��error_on_eq�EqErrorr�r�r!r%)r&�others  r�__eq__zHashKey.__eq__�s����%��)�)�	"�!�!��=�$���)B�$��M���*�t�/B�e�/K�/K��D�t�D�D�5�D�D�E�E�E���+��0D��0L�0L��D�u�D�D�D�D�D�E�E�E��	�4�9�%�%�*�e�j�)A�A�Ar)r<r=r>r�r�r�r�r�r?rrr�r�osg�������H�59�-�-�-�-�-�:�:�:����B�B�B�B�Brr�c�(��eZdZ�fd�Z�fd�Z�xZS)�KeyStrc���tj�tjjrt�t	�����Sr)r�r�r�r��superr�)r&�	__class__s �rr�zKeyStr.__hash__�s3�����'�G�,<�,J�'����w�w���!�!�!rc���tj�tjjrt�t	���|��Sr)r�r�r�r�r�r�)r&r�r�s  �rr�z
KeyStr.__eq__�s2�����'�G�,<�,H�'��M��w�w�~�~�e�$�$�$r)r<r=r>r�r��
__classcell__)r�s@rr�r��sQ�������"�"�"�"�"�
%�%�%�%�%�%�%�%�%rr�c�(�eZdZddd�d�Zd�Zd�ZdS)�HaskKeyCrasherF�r�r�c�"�||_||_dSrr�)r&r�r�s   rr�zHaskKeyCrasher.__init__�s��*���&����rc�T�tj�td���|t_dS)Nzcannot nest crashers)r�r�r�rLs r�	__enter__zHaskKeyCrasher.__enter__�s(����'��5�6�6�6�����rc��dt_dSr)r�r�)r&�excs  r�__exit__zHaskKeyCrasher.__exit__�s������rN)r<r=r>r�r�r�r?rrr�r��sP������(-�5�'�'�'�'�'� � � �
 � � � � rr�c��eZdZdS)r�Nr;r?rrr�r����������Drr�c��eZdZdS)r�Nr;r?rrr�r��r�rr�z!_testcapi lacks "hamt()" functionc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�HamtTestc�r�tdd��}tdd��}|�||��|�t|��t|����t	��}d||<d||<|�||d��|�||d��dS)Nr�rrr*�b)r�r$r r%�dict)r&�k1�k2�ds    r�test_hashkey_helper_1zHamtTest.test_hashkey_helper_1�s���
�R��
�
��
�R��
�
�����B��#�#�#�����b���4��8�8�,�,�,��F�F����"����"������2���$�$�$�����2���$�$�$�$�$rc�&�t��}d}dSrr�r&�hs  r�test_hamt_basics_1zHamtTest.test_hamt_basics_1�s���F�F�����rc�^�t��}|�t|��d��|�dd��}|�||��|�t|��d��|�t|��d��|�|�d����|�|�dd��d��|�|�d��d��|�dd��}|�||��|�t|��d��|�t|��d��|�t|��d��|�|�d��d��|�|�d��d��|�|�d����|�|�d����|�|�d����|�|�d��d��dx}x}}dS)Nrr*r�rr{r�r_)rr ror2�assertIsNotrkrO)r&r��h2�h3s    r�test_hamt_basics_2zHamtTest.test_hamt_basics_2�s.���F�F������Q����#�#�#�
�U�U�3��_�_������B��������Q����#�#�#�����R���!�$�$�$����!�%�%��*�*�%�%�%�������s�B����,�,�,����������c�*�*�*�
�V�V�C��_�_������R� � � �����Q����#�#�#�����R���!�$�$�$�����R���!�$�$�$����������c�*�*�*����������b�)�)�)����!�%�%��*�*�%�%�%����"�&�&��+�+�&�&�&����!�%�%��*�*�%�%�%����������c�*�*�*�����B���rc���t��}t��}|�d|��}|�d|��}|�||��dS)N�1)r�objectr2r�)r&r��o�h1r�s     r�test_hamt_basics_3zHamtTest.test_hamt_basics_3�sP���F�F���H�H��
�U�U�3��]�]��
�V�V�C��^�^���
�
�b�"�����rc��t��}|�dg��}|�dg��}|�||��|�t	|��d��|�t	|��d��|�|�d��|�d����dS)N�keyr)rr2r�r rorO)r&r�r�r�s    r�test_hamt_basics_4zHamtTest.test_hamt_basics_4�s����F�F��
�U�U�5�"�
�
��
�V�V�E�2�
�
������R� � � �����R���!�$�$�$�����R���!�$�$�$�������������u�
�
�6�6�6�6�6rc�^�tdd��}tdd��}tdd��}t��}|�|d��}|�|d��}|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�|d��}|�|d��}|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�|�|��d��|�t|��d	��|�t|��d
��|�t|��d��|�t|��d��|�t|��d��dS)
Nr�rr�cccr*r��ccr�rrr_�)r�rr2r rOro)	r&r�r��k3r�r�r��h4�h5s	         r�test_hamt_collision_1zHamtTest.test_hamt_collision_1�s���
�R��
�
��
�R��
�
��
�R��
�
���F�F��
�U�U�2�s�^�^��
�V�V�B��_�_��������r���D�)�)�)�������r���D�)�)�)����������S�)�)�)����������T�*�*�*����������S�)�)�)����������S�)�)�)�
�V�V�B��
�
��
�V�V�B��
�
�����������S�)�)�)����������S�)�)�)����������S�)�)�)����������T�*�*�*����������T�*�*�*����������S�)�)�)����������T�*�*�*����������T�*�*�*����������T�*�*�*�����Q����#�#�#�����R���!�$�$�$�����R���!�$�$�$�����R���!�$�$�$�����R���!�$�$�$�$�$rc�n�tdd��}tdd��}tdd��}t��}|�|d��}|�|d��}|�|d��}|�d�|���D��hd���dS)Nl�C�Dr�Ec��h|]	}|j��
Sr?)r!)�.0�ks  r�	<setcomp>z1HamtTest.test_hamt_collision_3.<locals>.<setcomp>;s��3�3�3�Q�!�&�3�3�3r>r
rr)r�rr2r r�)r&r
rrr�s     r�test_hamt_collision_3zHamtTest.test_hamt_collision_3s���
�9�3�?�?���9�3�?�?���9�3�?�?���F�F��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��*	
���3�3�!�&�&�(�(�3�3�3�_�_�_�E�E�E�E�Erc	���d}d}d}d}d}t|��D�]�}t��}t��}t|��D�]}	t|	��}
|	|zspt	d���5|�t��5|�|
|	��ddd��n#1swxYwYddd��n#1swxYwY|�|
|	��}|	|zs|t	d���5|�t��5|�	t|	����ddd��n#1swxYwYddd��n#1swxYwY|	||
<|�
t|��t|����|	|zs�|�
t|�����t|�������|�
t|�����t|���������|�
t|��|��t|��D]9}
|�
|�	t|
��d	��|
���:tt|����}tj|��t!|��D�]H\}}	t|	��}
||zsot	d���5|�t��5|�|
��ddd��n#1swxYwYddd��n#1swxYwY||zs|t	d���5|�t��5|�t|	����ddd��n#1swxYwYddd��n#1swxYwY|�|
��}|�
|�	|
d	��d	��||
=|�
t|��t|����||d
zkr|}
|���}||zs�|�
t|�����t|�������|�
t|�����t|���������J|�
t|��d��|�
t|��d��|D]>}
|�
|
�	t)|
����||
���?|�
t|��t|
����t!|��D�]_\}	}
|
�t)|
����}
|�
|
�	t)|
��d	��d	��|�t)|
��d��|�
t|��t|����|	|zs�|�
t|�����t|�������|�
t|�����t|���������a|�
t|��d��|�
t|��d��|�
t|�����g�����dS)NiXi��ar`rT�r��r�z	not foundr_r)r�rr�r�r�r"r�r2r�rOr ror�r�r��shuffle�	enumerate�deleter�r��str�popr�)r&�COLLECTION_SIZE�TEST_ITERS_EVERY�CRASH_HASH_EVERY�CRASH_EQ_EVERY�
RUN_XTIMES�_r�r�r�r�keys_to_delete�iter_i�hm�dms               r�test_hamt_stresszHamtTest.test_hamt_stress=s������������
��z�"�"�P	2�P	2�A����A����A��?�+�+�
E�
E���Q�i�i���,�,�*�'�d�;�;�;�*�*�!�.�.�|�<�<�*�*��E�E�#�q�M�M�M�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*��E�E�#�q�M�M���N�*�-�'�D�9�9�9�-�-�!�.�.�w�7�7�-�-��E�E�&��)�)�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-���#��� � ��Q����Q���0�0�0��,�,�E��$�$�S������^�^�S������^�^�D�D�D��$�$�S������^�^�S������^�^�D�D�D�����S��V�V�_�5�5�5��_�-�-�
G�
G��� � ����v�c�{�{�K�!@�!@�#�F�F�F�F�!�%��"8�"8�9�9�N��N�>�*�*�*�&�~�6�6�
C�
C�	����Q�i�i���!1�1�*�'�d�;�;�;�*�*�!�.�.�|�<�<�*�*��H�H�S�M�M�M�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*���/�0�'�D�9�9�9�0�0�!�.�.�w�7�7�0�0��H�H�V�A�Y�Y�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0��H�H�S�M�M��� � ����s�K�!8�!8�+�F�F�F��c�F�� � ��Q����Q���0�0�0��_��1�1�1��B������B��!1�1�C��$�$�S������]�]�C������M�M�B�B�B��$�$�S������]�]�C������M�M�B�B�B�����S��V�V�Q�'�'�'����S��V�V�Q�'�'�'��
<�
<��� � �����C���!1�!1�2�c�7�;�;�;�;����S��W�W�c�"�g�g�.�.�.�#�N�3�3�
G�
G���3��Y�Y�s�3�x�x�(�(��� � �����C���+�!>�!>��L�L�L����s�3�x�x��&�&�&�� � ��Q����Q���0�0�0��,�,�G��$�$�S������_�_�c�!�(�(�*�*�o�o�F�F�F��$�$�S������_�_�c�!�(�(�*�*�o�o�F�F�F�����S��V�V�Q�'�'�'����S��V�V�Q�'�'�'����T�!�'�'�)�)�_�_�b�1�1�1�1�aP	2�P	2s��/C�
B-	�!C�-B1
�1C�4B1
�5C�C�C�:E�#E	�8E�E
�E�E
�E�E�"E�M3�:M	�M3�M 
� M3�#M 
�$M3�3M7�:M7�O4�.#O	�O4�O!
�!O4�$O!
�%O4�4O8�;O8c�@�tdd��}tdd��}tdd��}tdd��}td	d
��}tdd��}tdd
|���}t��}|�|d��}|�|d��}|�|d��}|�|d��}|�|d��}t|��}	|�|��}|�t|��|	dz
��|�td��5|�|��ddd��n#1swxYwY|�|��}|�t|��|	dz
��|�|��}
|�|
|��|�|��}|�t|��|	dz
��|�|�	|d��d��|�|�	|��d��|�|�	|��d��dS)N�d�A�e�B�fr
�gr�hr����Z�Err�r*r�r'r��er�cannot comparer_rr{)
r�rr2rorr rr�r�rO)r&r+r-r
rrr2r3r��orig_lenr�s           r�test_hamt_delete_1zHamtTest.test_hamt_delete_1�sp���C������C������C������C������C������D�#����
�S�$�q�
1�
1�
1���F�F��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M���q�6�6��
�H�H�Q�K�K������Q����A��.�.�.�
�
#�
#�J�0@�
A�
A�	�	�
�H�H�R�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�H�H�Q�K�K������Q����A��.�.�.�
�X�X�a�[�[���
�
�b�!����
�H�H�Q�K�K������Q����A��.�.�.�������q�"���r�*�*�*�������q���3�'�'�'�������q���3�'�'�'�'�'s�E6�6E:�=E:c���tdd��}tdd��}tdd��}tdd��}td	d
��}tdd��}tdd
|���}t��}|�|d��}|�|d��}|�|d��}|�|d��}|�|d��}t|��}	|�t
d��5|�|��ddd��n#1swxYwY|�|��}|�t|��|	��|�|��}|�t|��|	dz
��|�|��}|�t|��|	dz
��|�|��}|�t|��|	dz
��|�|�|��d��|�|�|��d��|�|��}|�|��}|�|��}|�|��}|�t|��d��dS)Nr*r+�)r-鉊r
r/rr0rr1r2r3r�r*r�r'r�r4r5rr_rr)	r�rr2rorr�rr rO)
r&r+r-r
rrr2r3r�r6s
          r�test_hamt_delete_2zHamtTest.test_hamt_delete_2�s����C������F�C� � ���F�C� � ���C������C������D�#����
�V�T�!�
4�
4�
4���F�F��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M���q�6�6���
#�
#�J�0@�
A�
A�	�	�
�H�H�R�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�H�H�Q�K�K������Q����*�*�*�
�H�H�Q�K�K������Q����A��.�.�.�
�H�H�Q�K�K������Q����A��.�.�.�
�H�H�Q�K�K������Q����A��.�.�.�������q���3�'�'�'�������q���3�'�'�'�
�H�H�Q�K�K��
�H�H�Q�K�K��
�H�H�Q�K�K��
�H�H�Q�K�K������Q����#�#�#�#�#s�D;�;D?�D?c�L�tdd��}tdd��}tdd��}tdd��}tdd	��}t��}|�|d
��}|�|d��}|�|d��}|�|d
��}|�|d��}t|��}|�|��}|�t|��|dz
��|�|��}|�t|��|dz
��|�|�|��d��|�|�|��d��dS)Nr*r+r,r-��r
rr0rr*r�r'r�r4rr_)r�rr2rorr rO�r&r+r-r
rrr�r6s        r�test_hamt_delete_3zHamtTest.test_hamt_delete_3�s\���C������C������F�C� � ���F�C� � ���C������F�F��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M���q�6�6��
�H�H�Q�K�K������Q����A��.�.�.�
�H�H�Q�K�K������Q����A��.�.�.�������q���3�'�'�'�������q���3�'�'�'�'�'rc��tdd��}tdd��}tdd��}tdd��}tdd��}t��}|�|d	��}|�|d
��}|�|d��}|�|d��}|�|d
��}t|��}|�|��}|�t|��|dz
��|�|��}|�t|��|dz
��|�|��}|�t|��|dz
��|�|��}|�t|��|dz
��|�|��}|�t|��d��dS)Nr*r+r,r-r=r
rrr*r�r'r�r4rr_r�r)r�rr2rorr r>s        r�test_hamt_delete_4zHamtTest.test_hamt_delete_4s����C������C������F�C� � ���F�C� � ���F�C� � ���F�F��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M���q�6�6��
�H�H�Q�K�K������Q����A��.�.�.�
�H�H�Q�K�K������Q����A��.�.�.�
�H�H�Q�K�K������Q����A��.�.�.�
�H�H�Q�K�K������Q����A��.�.�.�
�H�H�Q�K�K������Q����#�#�#�#�#rc�L�t��}g}td��D]M}t|t|����}|�|��|�|d|����}�Ntdd��}|�|d��}|�t|��d��|�|d��}|�t|��d��|�|��}|�t|��d��|�|d��}|�t|��d��|�|d	��}|�t|��d
��|�|d	��}|�t|��d
��|D]}|�|��}�|�t|��d��dS)N�zval-��18�	collision�r_�r�r)	rr�r�rr1r2r ror)r&r�r�r�r�collision_key16s      r�test_hamt_delete_5zHamtTest.test_hamt_delete_5Es����F�F�����r���	'�	'�A��!�S��V�V�$�$�C��K�K��������c�:�!�:�:�&�&�A�A�!�"�d�+�+��
�E�E�/�;�/�/��(	
����Q����$�$�$�
�H�H�T�!�W��������Q����$�$�$�
�H�H�_�%�%������Q����$�$�$�
�H�H�T�"�X��������Q����$�$�$�
�H�H�T�!�W��������Q����$�$�$�
�H�H�T�!�W��������Q����$�$�$��	�	�C�����
�
�A�A�����Q����#�#�#�#�#rc
��tdd��}tdd��}tdd��}tdd��}td	d
��}tdd��}t��}|�|d
��}|�|d��}|�|d��}|�|d��}|�|d��}|�|d��}|���}|�tt|����|d
f|df|df|df|df|dfh��dS)Nr*r+r9r-r:r
r/rr0r�n�Fr*r�r'r�r4rb�r�rr2r�r r��	r&r+r-r
rrrOr��its	         r�test_hamt_items_1zHamtTest.test_hamt_items_1vs6���C������F�C� � ���F�C� � ���C������C������C������F�F��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�W�W�Y�Y�������R���M�M���X��3�x�!�S��A�s�8�a��X��3�x�H�	J�	J�	J�	J�	Jrc
��tdd��}tdd��}tdd��}tdd��}tdd��}td	d
��}t��}|�|d��}|�|d��}|�|d
��}|�|d��}|�|d��}|�|d��}|���}|�tt|����|df|df|d
f|df|df|dfh��dS�Nr*r+r,r-r=r
rrrNrOr*r�r'r�r4rbrPrQs	         r�test_hamt_items_2zHamtTest.test_hamt_items_2�s6���C������C������F�C� � ���F�C� � ���F�C� � ���C������F�F��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�W�W�Y�Y�������R���M�M���X��3�x�!�S��A�s�8�a��X��3�x�H�	J�	J�	J�	J�	Jrc	���tdd��}tdd��}tdd��}tdd��}tdd��}td	d
��}t��}|�|d��}|�|d��}|�|d
��}|�|d��}|�|d��}|�|d��}|�tt	|�������||||||h��|�tt	|����||||||h��dSrU)r�rr2r r�r�)r&r+r-r
rrrOr�s        r�test_hamt_keys_1zHamtTest.test_hamt_keys_1�s9���C������C������F�C� � ���F�C� � ���F�C� � ���C������F�F��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M��
�E�E�!�S�M�M������T�!�&�&�(�(�^�^�,�,�q�!�Q��1�a�.@�A�A�A�����T�!�W�W����1�a��A�q�'9�:�:�:�:�:rc��t��}|�t|�����d��|�t	|�����g��dS)Nr)rr ror�r�r�s  r�test_hamt_items_3zHamtTest.test_hamt_items_3�sY���F�F������Q�W�W�Y�Y����+�+�+�����a�g�g�i�i���"�-�-�-�-�-rc��tdd��}tdd��}tdd��}tdd��}tdd	��}t��}|�|d
��}|�|d��}|�|d��}|�|d
��}t��}|�|d
��}|�||k��|�||k��|�|d��}|�||k��|�||k��|�|d��}|�||k��|�||k��|�|d��}|�||k��|�||k��|�|d
��}|�||k��|�||k��|�|d��}|�||k��|�||k��|�|��}|�||k��|�||k��|�|d
��}|�||k��|�||k��dS)Nr*r+r,r-r=r
r�xrr*r�r'r��d2r4)r�rr2�assertFalse�
assertTruer)r&r+r-r
rrr�r�s        r�test_hamt_eq_1zHamtTest.test_hamt_eq_1�s����C������C������F�C� � ���F�C� � ���C�����
�V�V��
�V�V�A�s�^�^��
�V�V�A�s�^�^��
�V�V�A�s�^�^��
�V�V�A�s�^�^��
�V�V��
�V�V�A�s�^�^������r��"�"�"�����b��!�!�!�
�V�V�A�s�^�^������r��"�"�"�����b��!�!�!�
�V�V�A�s�^�^������r��"�"�"�����b��!�!�!�
�V�V�A�t�_�_������r��"�"�"�����b��!�!�!�
�V�V�A�s�^�^������b��!�!�!�����r��"�"�"�
�V�V�A�s�^�^������r��"�"�"�����b��!�!�!�
�Y�Y�q�\�\������r��"�"�"�����b��!�!�!�
�V�V�A�s�^�^������r��"�"�"�����b��!�!�!�!�!rc��tdd��}tdd|���}t��}|�|d��}t��}|�|d��}|�td��5||kddd��n#1swxYwY|�td��5||kddd��dS#1swxYwYdS)Nr*r+r3r�r*r5)r�rr2rr�)r&r+r3r�r�s     r�test_hamt_eq_2zHamtTest.test_hamt_eq_2�sT���C�����
�S�$�q�
1�
1�
1��
�V�V��
�V�V�A�s�^�^��
�V�V��
�V�V�B��_�_��
�
#�
#�J�0@�
A�
A�	�	��"�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
#�
#�J�0@�
A�
A�	�	��"�H�H�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s$�B�B� B�?C�C�Cc�$�tdd��}t��}|�dd��}tj|��}g}|�|��|�|��g}|�|��|�|��|�||��}~~~t
j��t
j��t
j��|�|����dS)Nr*r+r)	r�rr2�weakref�refr1�gc�collectrk)r&r+r�rer*r�s      r�test_hamt_gc_1zHamtTest.test_hamt_gc_1�s����C������F�F��
�E�E�!�Q�K�K���k�!�n�n����	�������	���������	�������	�������
�E�E�!�Q�K�K��
�q�!�
�
����
�
����
�
�������#�#�%�%� � � � � rc���tdd��}tdd��}t��}|�|d��}|�||��}tj|��}|���}t
|��~~tj��tj��tj��|�	|����dS)Nr*r+r,r-r*)
r�rr2rdrer��nextrfrgrk)r&r+r-r�re�his      r�test_hamt_gc_2zHamtTest.test_hamt_gc_2s����C������C������F�F��
�E�E�!�S�M�M��
�E�E�!�Q�K�K���k�!�n�n��
�W�W�Y�Y���R����
�r�
�
����
�
����
�
�������#�#�%�%� � � � � rc��tdd��}tdd��}tdd��}t��}|�|d��}|�||v��|�||v��|�t��5td���5||vddd��n#1swxYwYddd��n#1swxYwY|�t��5td���5||vddd��n#1swxYwYddd��dS#1swxYwYdS�	Nr*r+r,r-rTrr)	r�rr2r_r^r"r�r�r��r&r+�AAr-r�s     r�test_hamt_in_1zHamtTest.test_hamt_in_1"s8���C�����
�S�#�
�
���C������F�F��
�E�E�!�Q�K�K������Q���������a�� � � �
�
�
�w�
'�
'�	�	��D�1�1�1�
�
��a���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�|�
,�
,�	�	��d�3�3�3�
�
��a���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sl�C�.B?�3C�?C	�C�C	�C�C�C�;D5�D�D5�D!	�!D5�$D!	�%D5�5D9�<D9c��tdd��}tdd��}tdd��}t��}|�|d��}|�||d��|�||d��|�t
��5||ddd��n#1swxYwY|�t��5td���5||ddd��n#1swxYwYddd��n#1swxYwY|�t��5td���5||ddd��n#1swxYwYddd��dS#1swxYwYdSrn)	r�rr2r r"r�r�r�r�ros     r�test_hamt_getitem_1zHamtTest.test_hamt_getitem_16s����C�����
�S�#�
�
���C������F�F��
�E�E�!�Q�K�K������1��q�!�!�!�����2���"�"�"�
�
�
�x�
(�
(�	�	�
�a�D�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�w�
'�
'�	�	��D�1�1�1�
�
��"���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�|�
,�
,�	�	��d�3�3�3�
�
��"���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s~�'	B<�<C�C�!D�2	D�;D�D	�D�D	�D�D"�%D"�F�	E)�F�)E-	�-F�0E-	�1F�F�FN)r<r=r>r�r�r�rrrrr(r7r;r?rBrLrSrVrXrZr`rbrhrlrqrsr?rrr�r��s�������%�%�%�������<���7�7�7�#%�#%�#%�J!F�!F�!F�FW2�W2�W2�r+(�+(�+(�Z2$�2$�2$�h"(�"(�"(�H($�($�($�T/$�/$�/$�bJ�J�J�*J�J�J�*;�;�;�&.�.�.�
-"�-"�-"�^��� !�!�!�.!�!�!�(���(����rr��__main__)�concurrent.futuresr�r
rrfr�r��unittestrd�test.supportr�	_testcapir�ImportErrorr�TestCaserr�rr�r��	Exceptionr�r��skipIfr�r<�mainr?rr�<module>r~s?��������������	�	�	�	�
�
�
�
�������������)�)�)�)�)�)���������������D�D�D��������O3�O3�O3�O3�O3�(�#�O3�O3�O3�j
B�B�B�B�B�B�B�B�B	%�	%�	%�	%�	%�S�	%�	%�	%� � � � � � � � �	�	�	�	�	�9�	�	�	�	�	�	�	�	�i�	�	�	�������B�C�C�X
�X
�X
�X
�X
�x� �X
�X
�D�C�X
�v�z����H�M�O�O�O�O�O��s�/�9�9