
    d@                        d Z ddlZddlZddlmZ ddlZddlmZ ddl	m
Z ddlmZ ddlmZ d Zej        d             Z ej        dej        g	          d
             Zej        d             Z ej        dej        g	          d             Z ej        dej        g	          d             Z ej        dej        g	          d             Z ej        dej        g	          d             Zej        d             Zej        d             Z ej        dej        g	          d             Z ej        dej        g	          d             Z G d d          Z G d deej                  Z  G d deej!                  Z" G d deej#                  Z$ G d deej%                  Z& G d deej'                  Z( G d  d!ej)                  Z* G d" d#eej+                  Z, G d$ d%eej-                  Z. G d& d'eej/                  Z0 G d( d)eej1                  Z2 G d* d+e          Z3 G d, d-eej4                  Z5 G d. d/eej6                  Z7 G d0 d1ej8                  Z9dS )2aj  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.

The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).

Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.

    N)PerformanceWarningSparseDtype)SparseArray)basec                    t          j        |           r!t           j                            d          }nDt           j                            ddd          }|d         |d         k    r|dxx         dz  cc<   | |dd d<   |S )Nd   )size   r         )npisnanrandomuniformrandint)
fill_valuedatas     ^/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/extension/test_sparse.py	make_datar      s    	x
 y  c **y  Cc 227d1gGGGqLGGGDAJK    c                      t                      S Nr    r   r   dtyper   )   s    ==r   )paramsc                 V    t          t          | j                  | j                  }|S )z*Length-100 PeriodArray for semantics test.r   )r   r   param)requestress     r   r   r   .   s'     i..7=
I
I
ICJr   c                  J    t          t          j        d          dz            S )Nr	   r   )r   r   onesr   r   r   data_for_twosr$   5   s    rws||a'(((r   c                 F    t          t          j        dg| j                  S )zLength 2 array with [NA, Valid]r   r   r   r   nanr   r    s    r   data_missingr)   :   s     {w}====r   c              #       K    fd}|V  dS )z1Return different versions of data for count timesc              3      K   t          |           D ],}t          t          j                  j                  V  -d S )Nr   )ranger   r   r   )count_r    s     r   genzdata_repeated.<locals>.genD   sR      u 	R 	RAi667=QQQQQQQ	R 	Rr   Nr   )r    r/   s   ` r   data_repeatedr0   @   s4      R R R R R IIIIIr   c                 2    t          g d| j                  S )N)r   r   r   r   )r   r   r(   s    r   data_for_sortingr2   K   s    yyyW];;;;r   c                 H    t          dt          j        dg| j                  S )Nr   r   r   r&   r(   s    r   data_missing_for_sortingr4   P   s    261~'-@@@@r   c                      t           j        S r   )r   r'   r   r   r   na_valuer6   U   s	    6Mr   c                      d S )Nc                 R    t          j        |           ot          j        |          S r   )pdisna)leftrights     r   <lambda>zna_cmp.<locals>.<lambda>\   s    rwt}}? r   r   r   r   r   na_cmpr>   Z   s    ???r   c           
      f    t          ddt          j        t          j        ddddg| j                  S )Nr   r   r   r   r&   r(   s    r   data_for_groupingr@   _   s,    1bfbfaAq9gmTTTTr   c                 V    t          ddt          j        dddddddg
| j                  S )Nr      r   r   r   r&   r(   s    r   data_for_comparerE   d   s.    1bfb"aAq!<WWWWr   c                   f     e Zd Zd Zej                            d           fd            Z xZS )BaseSparseTestsc                 n    |j         t          t          d          k    rt          j        d           d S d S )Nr   zCan't store nan in int array.)r   r   intpytestskipselfr   s     r   _check_unsupportedz"BaseSparseTests._check_unsupportedj   s8    :S!,,,,K788888 -,r   $SparseArray does not support setitemreasonc                 J    t                                          |           d S r   )super
test_ravelrM   r   	__class__s     r   rT   zBaseSparseTests.test_raveln   s!    4     r   )	__name__
__module____qualname__rN   rJ   markxfailrT   __classcell__rV   s   @r   rG   rG   i   si        9 9 9 [DEE! ! ! ! FE! ! ! ! !r   rG   c                       e Zd Zd ZdS )	TestDtypec                 @    |                                 t          u sJ d S r   )construct_array_typer   )rM   r   r   s      r   test_array_type_with_argz"TestDtype.test_array_type_with_argt   s%    ))++{::::::r   N)rW   rX   rY   rb   r   r   r   r_   r_   s   s#        ; ; ; ; ;r   r_   c                       e Zd Zd Zd ZdS )TestInterfacec                 .    |                                  d S r   copyrL   s     r   	test_copyzTestInterface.test_copyy       		r   c                 .    |                                  d S r   )viewrL   s     r   	test_viewzTestInterface.test_view}   ri   r   N)rW   rX   rY   rh   rl   r   r   r   rd   rd   x   s2              r   rd   c                       e Zd ZdS )TestConstructorsNrW   rX   rY   r   r   r   rn   rn              Dr   rn   c            	       2    e Zd Zd Zej                            dddgej        	                    ddgddg	          g           fd
            Z
 fdZ fdZ fdZ fdZ fdZ fdZej                            d           fd            Z xZS )TestReshapingc                 b   t          j        d|d d         i          }t          j        dg di          }t          j        dg di                              d          }|||g}t          j        |          }t          j        d |D                       }|                     ||           d S )NAr   )r   r   r   )abccategoryc                 :    g | ]}|                     d            S )c                 Z    t          j        |                               t                    S r   )r   asarrayastypeobject)ss    r   r=   zCTestReshaping.test_concat_mixed_dtypes.<locals>.<listcomp>.<lambda>   s    rz!}}33F;; r   )apply.0xs     r   
<listcomp>z:TestReshaping.test_concat_mixed_dtypes.<locals>.<listcomp>   s(    JJJQWW;;<<JJJr   )r9   	DataFramer|   concatassert_frame_equal)rM   r   df1df2df3dfsresultexpecteds           r   test_concat_mixed_dtypesz&TestReshaping.test_concat_mixed_dtypes   s     lCbqb?++lC+,,lC12299*EECo 39JJcJJJ
 
 	11111r   columnsrt   B)rt   ru   )rt   rv   outerinner)namesc                 L    t                                          ||           d S r   )rS   
test_stack)rM   r   r   rV   s      r   r   zTestReshaping.test_stack   s%     	4)))))r   c                 v    |                      |           t                                          ||           d S r   )rN   rS   test_concat_columnsrM   r   r6   rV   s      r   r   z!TestReshaping.test_concat_columns   s7    %%%##D(33333r   c                 v    |                      |           t                                          ||           d S r   )rN   rS   'test_concat_extension_arrays_copy_falser   s      r   r   z5TestReshaping.test_concat_extension_arrays_copy_false   s7    %%%77hGGGGGr   c                 v    |                      |           t                                          ||           d S r   )rN   rS   
test_alignr   s      r   r   zTestReshaping.test_align   7    %%%4*****r   c                 v    |                      |           t                                          ||           d S r   )rN   rS   test_align_framer   s      r   r   zTestReshaping.test_align_frame   s7    %%%  x00000r   c                 v    |                      |           t                                          ||           d S r   )rN   rS   test_align_series_framer   s      r   r   z%TestReshaping.test_align_series_frame   s7    %%%''h77777r   c                 v    |                      |           t                                          ||           d S r   )rN   rS   
test_merger   s      r   r   zTestReshaping.test_merge   r   r   rO   rP   c                 J    t                                          |           d S r   )rS   test_transposerU   s     r   r   zTestReshaping.test_transpose   s!    t$$$$$r   )rW   rX   rY   r   rJ   rZ   parametrizer9   
MultiIndexfrom_tuplesr   r   r   r   r   r   r   r[   r   r\   r]   s   @r   rr   rr      sv       2 2 2 [#JM%%Z('0B &  	
 * * * * *4 4 4 4 4H H H H H+ + + + +1 1 1 1 18 8 8 8 8+ + + + + [DEE% % % % FE% % % % %r   rr   c                   $     e Zd Zd Z fdZ xZS )TestGetitemc           	         t          j        |d t          t          |                    D                       }t	          j        |j        j                  rIt	          j        |                    d                    rt	          j        |j	        d                   sJ n&|                    d          |j	        d         k    sJ |                    d          |j	        d         k    sJ d S )Nc                     g | ]}d |z  S )r   r   )r   is     r   r   z(TestGetitem.test_get.<locals>.<listcomp>   s    $E$E$EqQU$E$E$Er   )indexrD   r   r   )
r9   Seriesr,   lenr   r   valuesr   getiloc)rM   r   sers      r   test_getzTestGetitem.test_get   s    i$E$EE#d))4D4D$E$E$EFFF8CJ)** 	-8CGGAJJ''ABHSXa[,A,AAAAA771::!,,,,wwqzzSXa[((((((r   c                 v    |                      |           t                                          ||           d S r   )rN   rS   test_reindexr   s      r   r   zTestGetitem.test_reindex   s7    %%%T8,,,,,r   )rW   rX   rY   r   r   r\   r]   s   @r   r   r      sG        ) ) )- - - - - - - - -r   r   c                       e Zd ZdS )	TestIndexNro   r   r   r   r   r      rp   r   r   c                        e Zd Zd Z fdZ fdZ fdZ fdZej	        
                    d           fd            Zd	 Z xZS )
TestMissingc                    t          |          }t          t          t          j        |j        j                            }t          ddg|          }|                                }t          j        ||           |	                    d          }t          t          t          j        |j        j                            }t          ddgd|          }| 
                    |                                |           d S )NTFr   r   r   r   )r   r   boolr9   r:   r   r   tmassert_sp_array_equalfillnaassert_equal)rM   r)   sarrexpected_dtyper   r   s         r   	test_isnazTestMissing.test_isna   s    <(($T27<3E3P+Q+QRRe}NCCC
 222 {{1~~$T27<3E3P+Q+QRRu~%~VVV$))++x00000r   c                     t          j        t          d          5  t                                          |           d d d            d S # 1 swxY w Y   d S NFcheck_stacklevel)r   assert_produces_warningr   rS   test_fillna_limit_padrM   r)   rV   s     r   r   z!TestMissing.test_fillna_limit_pad   s    '(:USSS 	8 	8GG)),777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8   "AAAc                     t          j        t          d          5  t                                          |           d d d            d S # 1 swxY w Y   d S r   r   r   r   rS   test_fillna_limit_backfillr   s     r   r   z&TestMissing.test_fillna_limit_backfill       '(:USSS 	= 	=GG..|<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=r   c                 T   t          j        |j                  r8|j                            t
          j                            d                     t          j	        t          d          5  t                                          |           d d d            d S # 1 swxY w Y   d S )Nz'returns array with different fill valuerP   Fr   )r   r   r   node
add_markerrJ   rZ   r[   r   r   r   rS   test_fillna_no_op_returns_copy)rM   r   r    rV   s      r   r   z*TestMissing.test_fillna_no_op_returns_copy   s    8DO$$ 	L##!!)R!SS   '(:USSS 	9 	9GG224888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   ."BB!$B!c                     t          j        t          d          5  t                                          |           d d d            d S # 1 swxY w Y   d S r   r   r   s     r   test_fillna_series_methodz%TestMissing.test_fillna_series_method   r   r   UnsupportedrP   c                 H    t                                                       d S r   )rS   test_fillna_series)rM   rV   s    r   r   zTestMissing.test_fillna_series   s!     	""$$$$$r   c                 f   |d         }t          j        |ddgd                              |          }t          j        |j                  rt          |j        |          }n|j        }t          j        |                    ||g|          ddgd          }|                     ||           d S )Nr   r   )rt   r   r   )	r9   r   r   r:   r   r   r   _from_sequencer   )rM   r)   r   r   r   r   s         r   test_fillna_framezTestMissing.test_fillna_frame   s    !!_
L1v>>??FFzRR7<*++ 	' 2J??EE &E<!00*j1IQV0WWV 
 
 	11111r   )rW   rX   rY   r   r   r   r   r   rJ   rZ   r[   r   r   r\   r]   s   @r   r   r      s        1 1 18 8 8 8 8= = = = =9 9 9 9 9= = = = = [m,,% % % % -,%2 2 2 2 2 2 2r   r   c                   P    e Zd ZdZd Zd Zej                            d           fd            Z	d Z
 fdZ fd	Zd
 Zej                            dddg           fd            Zej                            dej        ej        ej        g           fd            Z xZS )TestMethodszSparse[bool]c                    |                     ddg          }t          j        d|id          }|j        d         }|                    |          }t          |j        d          r7|r|j        j        |j        j        u sJ n|j        j        |j        j        usJ |j	        j
                                        |                                u sJ d S )Nr   rt   Frf   )r   r   blocks)taker9   r   r   r   hasattr_mgrr   r   rt   _valuesto_dense)rM   r)   using_copy_on_writearrdf
filled_valr   s          r   test_fillna_copy_framez"TestMethods.test_fillna_copy_frame  s    A''\3*5111WT]
:&&27H%% 	@" @y~);;;;;;y~V]-?????t|$$&&#,,..888888r   c                 >   |                     ddg          }t          j        |d          }|d         }|                    |          }|r|j        |j        u sJ n|j        |j        usJ |j                                        |                                u sJ d S )Nr   Frf   r   )r   r9   r   r   r   r   )rM   r)   r   r   r   r   r   s          r   test_fillna_copy_seriesz#TestMethods.test_fillna_copy_series!  s    A''i%(((V
J'' 	5;&.00000 ;fn4444{##%%777777r   zNot ApplicablerP   c                 J    t                                          |           d S r   )rS   test_fillna_length_mismatchr   s     r   r   z'TestMethods.test_fillna_length_mismatch/  s!    ++L99999r   c                    |d         |d         k    sJ t          |          }|d d         \  }}t          j        |                    ||||g|j                            }t          j        g d          }|                    |          }t          dd          }	t          j        |                    ||||g|	                    }
| 	                    ||
           |                    ||||g|j                  }t          j        g d          }|                    ||          }t          j        |                    ||||g|j                            }
| 	                    ||
           d S )	Nr   r   r   r   )TTFFfloatg        )TFTT)
typer9   r   r   r   r   arraywherer   assert_series_equal)rM   r   r6   clsru   rv   r   condr   	new_dtyper   others               r   test_where_serieszTestMethods.test_where_series3  sr   Aw$q'!!!!4jjBQBx1i**Aq!Q<tz*JJKKx222334--	91h9KK
 
 	  222""Aq!Q<tz"BBx111224''9S//Aq!DJ/OOPP  22222r   c                     |j         j        dk    r:t          j                            d          }|j                            |           t                                          |           d S )NrI   z2TODO(SparseArray.__setitem__) will preserve dtype.rP   )	r   subtyperJ   rZ   r[   r   r   rS   test_combine_first)rM   r   r    rZ   rV   s       r   r   zTestMethods.test_combine_firstI  sj    :&& ;$$K %  D L##D)))""4(((((r   c                     t          j        t          d          5  t                                          ||           d d d            d S # 1 swxY w Y   d S r   )r   r   r   rS   test_searchsorted)rM   r2   	as_seriesrV   s      r   r   zTestMethods.test_searchsortedS  s    '(:USSS 	C 	CGG%%&6	BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   #AAAc                     |                     d          }|j        d         |j        d<   |j        d         |j        d         k    sJ d S )Nr   r   )shift_sparse_values)rM   r   r   s      r   test_shift_0_periodsz TestMethods.test_shift_0_periodsW  sM    A!%!4Q!7A$Q'6+@+CCCCCCCr   methodargmaxargminc                 x    |                      |           t                                          |||           d S r   )rN   rS   test_argmin_argmax_all_na)rM   r  r   r6   rV   s       r   r	  z%TestMethods.test_argmin_argmax_all_na^  s;     	%%%))&$AAAAAr   boxc                 z    |                      |           t                                          ||||           d S r   )rN   rS   test_equals)rM   r   r6   r   r
  rV   s        r   r  zTestMethods.test_equalsd  s;    %%%D(Is;;;;;r   )rW   rX   rY   _combine_le_expected_dtyper   r   rJ   rZ   r[   r   r   r   r   r  r   r	  r9   r   r   r   r  r\   r]   s   @r   r   r     s]       !/9 9 98 8 8 [.//: : : : 0/:3 3 3,) ) ) ) )C C C C CD D D [X(';<<B B B B =<B
 [URXry",$GHH< < < < IH< < < < <r   r   c                   h     e Zd Zd Zej                            ed           fd            Z xZ	S )TestCastingc                     t          j        |d d                                       t                    }t          j        d |d d         D             t                    }|                     ||           d S )N   c                 ,    g | ]}t          |          S r   )strr   s     r   r   z/TestCasting.test_astype_str.<locals>.<listcomp>o  s    777c!ff777r   r   )r9   r   r|   r  r}   r   )rM   r   r   r   s       r   test_astype_strzTestCasting.test_astype_strk  sp     48$$++C00977d2A2h777vFFF  22222r   zno sparse StringDtype)raisesrQ   c                 J    t                                          |           d S r   )rS   test_astype_stringrU   s     r   r  zTestCasting.test_astype_stringr  s!    ""4(((((r   )
rW   rX   rY   r  rJ   rZ   r[   	TypeErrorr  r\   r]   s   @r   r  r  j  sk        3 3 3 [i0GHH) ) ) ) IH) ) ) ) )r   r  c                   V     e Zd ZdZdZdZdZd Z fdZ fdZ	 fdZ
ef fd	Z xZS )TestArithmeticOpsNc                 H    |j         dk    rt          j        d           d S d S )Nr   z=Incorrected expected from Series.combine and tested elsewhere)r   rJ   rK   rL   s     r   _skip_if_different_combinez,TestArithmeticOps._skip_if_different_combine}  s0    ?a KWXXXXX	  r   c                 v    |                      |           t                                          ||           d S r   )r  rS   test_arith_series_with_scalarrM   r   all_arithmetic_operatorsrV   s      r   r  z/TestArithmeticOps.test_arith_series_with_scalar  s8    ''-----d4LMMMMMr   c                 v    |                      |           t                                          ||           d S r   )r  rS   test_arith_series_with_arrayr  s      r   r"  z.TestArithmeticOps.test_arith_series_with_array  s8    ''---,,T3KLLLLLr   c                    |j         j        dk    rnQ|                    d          dvr:t          j                            d          }|j                            |           t                      	                    ||           d S )Nr   r.   )mulrmulfloordiv	rfloordivpowmodrmodz result dtype.fill_value mismatchrP   )
r   r   striprJ   rZ   r[   r   r   rS   test_arith_frame_with_scalar)rM   r   r   r    rZ   rV   s        r   r,  z.TestArithmeticOps.test_arith_frame_with_scalar  s    : A%%%++C00 9
 
 
 ;$$,N$OODL##D))),,T3KLLLLLr   c                 R    t                                          |||d            d S )N)exc)rS   _check_divmod_op)rM   r   opr   r.  rV   s        r   r/  z"TestArithmeticOps._check_divmod_op  s*      b%T :::::r   )rW   rX   rY   series_scalar_excframe_scalar_exc
divmod_excseries_array_excr  r  r"  r,  NotImplementedErrorr/  r\   r]   s   @r   r  r  w  s        JY Y YN N N N NM M M M MM M M M M  4G ; ; ; ; ; ; ; ; ; ;r   r  c                       e Zd ZdefdZdefdZej                            d          defd            Z	ej                            d          defd            Z
dS )	TestComparisonOpsrE   c                 ,   |} |||          }t          |t                    sJ |j        j        t          j        k    sJ t          |t                    r ||j        |j                  }nt	          j         |t	          j        |j                  t	          j        |                              }t           ||	                                t	          j        |                    |t          j                  }t          j        ||           d S )Nr   )
isinstancer   r   r   r   bool_r   allr{   r   r   r   )rM   rE   comparison_opr   r0  r   r   r   s           r   _compare_otherz TestComparisonOps._compare_other  s
   $e,,&+.....|#rx////e[)) 	,79IJJJJ2:.9::BJu<M<MNN J ##,,..
50A0ABB%h  H
 	 22222r   c                     |                      ||d           |                      ||d           |                      ||d           |                      ||t          j                   d S )Nr   r   rC   )r=  r   r'   )rM   rE   r<  s      r   test_scalarzTestComparisonOps.test_scalar  sn    ,mQ???,mQ???,mR@@@,mRVDDDDDr   zWrong indicesrP   c                 `    t          j        ddd          }|                     |||           d S )Nr  
   )r   linspacer=  rM   rE   r<  r   s       r   
test_arrayzTestComparisonOps.test_array  s4    k"a$$,mSAAAAAr   c                 v    |dz   }|                      |||           |dz  }|                      |||           d S )Nr   r   )r=  rD  s       r   test_sparse_arrayz#TestComparisonOps.test_sparse_array  sN    ",mSAAA",mSAAAAAr   N)rW   rX   rY   r   r=  r?  rJ   rZ   r[   rE  rG  r   r   r   r7  r7    s        3{ 3 3 3 3*EK E E E E [o..B; B B B /.B [o..B+ B B B /.B B Br   r7  c                   `     e Zd Zej                            d           fd            Z xZS )TestPrintingzDifferent reprrP   c                 L    t                                          ||           d S r   )rS   test_array_repr)rM   r   r
   rV   s      r   rK  zTestPrinting.test_array_repr  s#    d+++++r   )rW   rX   rY   rJ   rZ   r[   rK  r\   r]   s   @r   rI  rI    sW        [.//, , , , 0/, , , , ,r   rI  c                   d     e Zd Zej                            dddg           fd            Z xZS )TestParsingenginerw   pythonc                     d}t          j        t          |          5  t                                          ||           d d d            d S # 1 swxY w Y   d S )Nz,.*must implement _from_sequence_of_strings.*)match)rJ   r  r5  rS   test_EA_types)rM   rN  r   expected_msgrV   s       r   rR  zTestParsing.test_EA_types  s    F].lCCC 	0 	0GG!!&$///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   #AAA)rW   rX   rY   rJ   rZ   r   rR  r\   r]   s   @r   rM  rM    sY        [XX770 0 0 0 870 0 0 0 0r   rM  c                   Z    e Zd Zej                            dddg          d             ZdS )TestNoNumericAccumulationsskipnaTFc                     d S r   r   )rM   r   all_numeric_accumulationsrV  s       r   test_accumulate_seriesz1TestNoNumericAccumulations.test_accumulate_series  s    r   N)rW   rX   rY   rJ   rZ   r   rY  r   r   r   rU  rU    sD        [Xe}55  65  r   rU  ):__doc__numpyr   rJ   pandas.errorsr   pandasr9   r   pandas._testing_testingr   pandas.arraysr   pandas.tests.extensionr   r   fixturer   r'   r   r$   r)   r0   r2   r4   r6   r>   r@   rE   rG   BaseDtypeTestsr_   BaseInterfaceTestsrd   BaseConstructorsTestsrn   BaseReshapingTestsrr   BaseGetitemTestsr   BaseIndexTestsr   BaseMissingTestsr   BaseMethodsTestsr   BaseCastingTestsr  BaseArithmeticOpsTestsr  r7  BasePrintingTestsrI  BaseParsingTestsrM  BaseAccumulateTestsrU  r   r   r   <module>rp     sB          , , , , , ,                 % % % % % % ' ' ' ' ' '	 	 	    26{###  $# ) ) ) 26{###> > $#>
 26{###  $# 26{###< < $#< 26{###A A $#A    @ @ @ 26{###U U $#U 26{###X X $#X! ! ! ! ! ! ! !; ; ; ; ;!4 ; ; ;
    OT%<   	 	 	 	 	(B 	 	 	6% 6% 6% 6% 6%OT%< 6% 6% 6%r- - - - -/4#8 - - -"	 	 	 	 	# 	 	 	92 92 92 92 92/4#8 92 92 92xW< W< W< W< W</4#8 W< W< W<t
) 
) 
) 
) 
)/4#8 
) 
) 
)'; '; '; '; ';)D '; '; ';T&B &B &B &B &B &B &B &BR, , , , ,?D$: , , ,0 0 0 0 0/4#8 0 0 0    !9     r   