
    קgdi                     T   d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlZd dlm	Z	 ej
         G d d                      Z e            Z	 	 	 	 	 	 ddZdeeef         fdZe j        d	             Zd
 Z G d d          ZddZddZddZd Zd Zd ZdddZdddZdddZdS )    N)AnyDictOptional)infc                   b    e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   d	Z
ee         ed
<   d	S )__PrinterOptions   	precision  	threshold   	edgeitemsP   	linewidthNsci_mode)__name__
__module____qualname__r
   int__annotations__r   floatr   r   r   r   bool     M/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_tensor_str.pyr   r      sf         IsIuIsIs#Hhtn#####r   r   c                    ||dk    r1dt           _        dt           _        dt           _        dt           _        nr|dk    r1dt           _        dt           _        dt           _        dt           _        n;|d	k    r5dt           _        t
          t           _        dt           _        dt           _        | | t           _        ||t           _        ||t           _        ||t           _        |t           _        dS )
a  Set options for printing. Items shamelessly taken from NumPy

    Args:
        precision: Number of digits of precision for floating point output
            (default = 4).
        threshold: Total number of array elements which trigger summarization
            rather than full `repr` (default = 1000).
        edgeitems: Number of array items in summary at beginning and end of
            each dimension (default = 3).
        linewidth: The number of characters per line for the purpose of
            inserting line breaks (default = 80). Thresholded matrices will
            ignore this parameter.
        profile: Sane defaults for pretty printing. Can override with any of
            the above options. (any one of `default`, `short`, `full`)
        sci_mode: Enable (True) or disable (False) scientific notation. If
            None (default) is specified, the value is defined by
            `torch._tensor_str._Formatter`. This value is automatically chosen
            by the framework.

    Example::

        >>> # Limit the precision of elements
        >>> torch.set_printoptions(precision=2)
        >>> torch.tensor([1.12345])
        tensor([1.12])
        >>> # Limit the number of elements shown
        >>> torch.set_printoptions(threshold=5)
        >>> torch.arange(10)
        tensor([0, 1, 2, ..., 7, 8, 9])
        >>> # Restore defaults
        >>> torch.set_printoptions(profile='default')
        >>> torch.tensor([1.12345])
        tensor([1.1235])
        >>> torch.arange(10)
        tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

    Ndefaultr	   r   r   r   short   full)
PRINT_OPTSr
   r   r   r   r   r   )r
   r   r   r   profiler   s         r   set_printoptionsr#      s    Z i#$J #'J #$J #%J  #$J #'J #$J #%J  #$J #&J #$J #%J (
(
(
(
"Jr   returnc                  4    t          j        t                    S )zyGets the current options for printing, as a dictionary that
    can be passed as ``**kwargs`` to set_printoptions().
    )dataclassesasdictr!   r   r   r   get_printoptionsr(   b   s     j)))r   c               +      K   t                      }t          di |  	 dV  t          di | dS # t          di | w xY w)zyContext manager that temporarily changes the print options.  Accepted
    arguments are same as :func:`set_printoptions`.Nr   )r(   r#   )kwargs
old_kwargss     r   printoptionsr,   i   sj       "##Jv'&&:&&&&&&&:&&&&s   0 >c                     | j         s0| j        r5t          j                            | j                  j        st          j        nt          j        }| 	                    |          S )N)dtype)
is_mpsis_xputorchxpuget_device_propertiesdevicehas_fp64r   doubleto)tr.   s     r   tensor_totyper9   u   sa     H	 	 "'!@!@!J!J!S	
 \ 
 44e4r   c                        e Zd Zd Zd Zd ZdS )
_Formatterc                    |j         j        | _        d| _        d| _        d| _        t          j                    5  |                    d          }d d d            n# 1 swxY w Y   | j        s1|D ],}| }t          | j        t          |                    | _        -n<t          j        |t          j        |          |                    d          z            }|                                dk    rd S t          |                                          }t          |                                          }t          |	                                          }|D ]#}|t          j        |          k    r	d| _         n$| j        r||z  dk    s|dk    rWd| _        |D ]L}dt&          j         d	                    |          }t          | j        t          |                    | _        Mn|D ]0}|d
}t          | j        t          |          dz             | _        1n||z  dk    s|dk    s|dk     rWd| _        |D ]L}dt&          j         d	                    |          }t          | j        t          |                    | _        MnO|D ]L}dt&          j         d                    |          }t          | j        t          |                    | _        Mt&          j        t&          j        | _        d S d S )NTF   r   g     @@g    חA{:.e}.0fg-C6?f})r.   is_floating_pointfloating_dtypeint_moder   	max_widthr1   no_gradreshapemaxlenmasked_selectisfinitenenumelr9   absminceilr!   r
   format)	selftensortensor_viewvalue	value_strnonzero_finite_valsnonzero_finite_absnonzero_finite_minnonzero_finite_maxs	            r   __init__z_Formatter.__init__   sp   $l<]__ 	- 	- ..,,K	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- " 5	M$ E E$J	!$T^S^^!D!DE
 #("5U^K88;>>!;L;LL# # #((**a// "//B/F/F/H/H!I!I!./A/E/E/G/G!H!H!./A/E/E/G/G!H!H,  EJu----$)DME . } M ');;fDD)E11$(DM!4 M M$D:+?$D$D$D$K$KE$R$R	),T^S^^)L)LM "5 Q Q',NN	),T^S^^a=O)P)PQ ');;fDD)E11)F22$(DM!4 M M$D:+?$D$D$D$K$KE$R$R	),T^S^^)L)LM "5 M M$D:+?$D$D$D$K$KE$R$R	),T^S^^)L)L*&/DMMM +*s   AA #A c                     | j         S N)rF   )rS   s    r   widthz_Formatter.width   s
    ~r   c                 p   | j         r| j        r,d| j         dt          j         d                    |          }n`| j        r2|d}t          j        |          st          j	        |          s|dz  }n'dt          j         d                    |          }n| }| j        t          |          z
  dz  |z   S )Nz{:.r@   rA   r?   rB    )rD   r   rF   r!   r
   rR   rE   mathisinfisnanrJ   )rS   rV   rets      r   rR   z_Formatter.format   s     
	} EFDNFFZ-AFFFMMeTT Enn
5)) TZ->-> 3JC6Z1666==eDD*CS)S0366r   N)r   r   r   r\   r_   rR   r   r   r   r;   r;      sE        A0 A0 A0F  7 7 7 7 7r   r;   c                    |dt          | j        |          }t          | j        |          dz                                   }|d         dk    s|d         dk    r||z   S |dz   |z   S |                    |                                           S Njr   +-)_scalar_strrealimaglstriprR   item)rS   
formatter1
formatter2real_strimag_strs        r   rl   rl      s    ty*55	:66<DDFFA;#!!3!3h&&c>H,,  ---r   c           	      8  	
 |                                 dz   }|||                                 dz   z  }t          dt          t          j        t
          j        |z
  |z                                
||fd|rt
          j        sdg	n|r|                     d          dt
          j        z  k    rkfd| d t
          j                 	                                D             dgz   fd| t
          j         d          	                                D             z   	n fd	| 	                                D             		
fd
t          dt          	          
          D             }d |D             }ddd|dz   z  z                       |          z   dz   S )Nr   r=   c                    |n|                     | j                  }|                     | j                  dz                                   }|d         dk    s|d         dk    r||z   S |dz   |z   S |                     |           S rh   )rR   rm   rn   ro   )valrq   rr   rs   rt   s        r   _val_formatterz#_vector_str.<locals>._val_formatter   s    !!((22H"))#(33c9AACCH{c!!Xa[C%7%7(**#~00$$S)))r   ...r   c                 &    g | ]} |          S r   r   .0rw   rx   s     r   
<listcomp>z_vector_str.<locals>.<listcomp>   s#    RRRS^^C  RRRr   z ...c                 &    g | ]} |          S r   r   r{   s     r   r}   z_vector_str.<locals>.<listcomp>  s#    UUUs~~c""UUUr   c                 &    g | ]} |          S r   r   r{   s     r   r}   z_vector_str.<locals>.<listcomp>  s#    ===s##===r   c                 *    g | ]}||z            S r   r   )r|   idataelements_per_lines     r   r}   z_vector_str.<locals>.<listcomp>  s6       ,-Q&&&'  r   c                 8    g | ]}d                      |          S ), )joinr|   lines     r   r}   z_vector_str.<locals>.<listcomp>
  s"    444TYYt__444r   [,
rb   ])r_   rI   r   rc   floorr!   r   r   sizetolistrangerJ   r   )rS   indent	summarizerq   rr   element_length
data_lineslinesrx   r   r   s           @@@r   _vector_strr      s   %%''!+N***,,q00	3tz:/&8^LMMNN  (2j 
* 
* 
* 
*  
>- 
>w	 >tyy||a**>&>>>RRRRD1G:3G1G,H,O,O,Q,QRRRhUUUUdJ4H3H3J3J.K.R.R.T.TUUUV 	 >===t{{}}===    16q#d))EV1W1W  J 54444E*sfqj1177>>>DDr   c                                                       }|dk    rt                     S |dk    rt                     S r                     d          dt          j        z  k    rw fdt          dt          j                  D             dgz    fdt          t                     t          j        z
  t                               D             z   }n3 fdt          d                     d                    D             }dd	|dz
  z  z   d
dz   z  z                       |          }d|z   dz   S )Nr   r=   r   c           	      H    g | ]}t          |         d z             S r=   _tensor_str_with_formatterr|   r   rq   rr   r   rS   r   s     r   r}   z._tensor_str_with_formatter.<locals>.<listcomp>  sH         +GVaZJ
   r   ry   c           	      H    g | ]}t          |         d z             S r   r   r   s     r   r}   z._tensor_str_with_formatter.<locals>.<listcomp>#  sH         +GVaZJ
   r   c           	      H    g | ]}t          |         d z             S r   r   r   s     r   r}   z._tensor_str_with_formatter.<locals>.<listcomp>+  sH     
 
 
  'Q!Y
J 
 
 
r   ,
rb   r   r   )	dimrl   r   r   r!   r   r   rJ   r   )rS   r   r   rq   rr   r   slices
tensor_strs   `````   r   r   r     s   
((**C
axx4Z888
axx4J
KKK 
TYYq\\A
(<$<<<        q*"677	   g        s4yy:+??TKK	   	 
 
 
 
 
 
 
 
 1diill++	
 
 
 a((3&1*+==CCFKKJc!!r   c                    |                                  dk    rdS |                                 r|                     d           } |                                  t          j        k    }|                                 r|                                 } |                                 r|                                 } | j	        t          j        t          j        t          j        t          j        t          j        t          j        fv r|                                 } | j	        t          j        u r|                                 } | j	        j        r{|                                 } t-          |rt/          | j                  n| j                  }t-          |rt/          | j                  n| j                  }t5          | ||||          S t-          |rt/          |           n|           }t5          | |||          S )Nr   [])rN   	has_namesrenamer!   r   _is_zerotensorcloneis_negresolve_negr.   r1   float16bfloat16float8_e5m2float8_e5m2fnuzfloat8_e4m3fnfloat8_e4m3fnuzr   	complex32cfloat
is_complexresolve_conjr;   get_summarized_datarm   rn   r   )rS   r   r   real_formatterimag_formatter	formatters         r   _tensor_strr   6  s   zz||qt~~ ! {{4  

z33I zz|| {{}} "!!z   zz||zU_$${{}}z N  ""#.7F	***TY
 
 $.7F	***TY
 
 *&)^^
 
 	
 IO248884PP	)$	9MMMr   c                    | g}t          |           |                     d          z
  dz   }|D ]o}t          |          }|s||z   dz   t          j        k    r&|                    dd|z  z   |z              ||z   }d}O|                    d|z              ||dz   z  }p|                    d           d	                    |          S )
Nr   r=   r   r   rb   Fr   ) )rJ   rfindr!   r   appendr   )r   suffixesr   force_newlinetensor_strslast_line_lensuffix
suffix_lens           r   _add_suffixesr   i  s    ,K
OOj&6&6t&<&<<q@M , ,[[
 	,MJ6:Z=QQQusV|3f<==="Z/M!MMtf}---Z!^+MMs77;r   c                                                       }|dk    r S |dk    rc                     d          dt          j        z  k    r;t	          j         d t          j                  t          j         d          f          S  S t          j        s+                     dg                                  z            S                      d          dt          j        z  k    r fdt          dt          j                  D             } fdt          t                     t          j        z
  t                               D             }t	          j	        d ||z   D                       S t	          j	        d  D                       S )Nr   r=   r   c                      g | ]
}|         S r   r   r|   r   rS   s     r   r}   z'get_summarized_data.<locals>.<listcomp>  s    AAAQaAAAr   c                      g | ]
}|         S r   r   r   s     r   r}   z'get_summarized_data.<locals>.<listcomp>  s    SSS1tAwSSSr   c                 ,    g | ]}t          |          S r   r   r|   xs     r   r}   z'get_summarized_data.<locals>.<listcomp>  s!    JJJq/22JJJr   c                 ,    g | ]}t          |          S r   r   r   s     r   r}   z'get_summarized_data.<locals>.<listcomp>  s!    AAAq/22AAAr   )
r   r   r!   r   r1   cat	new_emptyr   rJ   stack)rS   r   startends   `   r   r   r   y  so   
((**C
axx
axx99Q<<!j22229,
,,-tZ5I4I4K4K/LM   K C~~qcDHHJJ.///	1J00	0	0AAAA%:+?"@"@AAASSSSc$ii*2F&FD		 R RSSS{JJUS[JJJKKK{AADAAABBBr   tensor_contentsc          	        !" t           j        j                            |           rt	          | |          S t          |           t           j        u pt          |           t           j        j        u }| j	        rd}n|rd}nt          |           j
         d}t          |          !g }|d u}|r|}t           j        j                            |           \  }}|j        j        t           j                                        k    sL|j        j        dk    r,t           j                                        |j        j        k    s|j        j        dk    r-|                    dt+          |j                  z   dz              |j        j        d	v r|                    d
          }t          j                    t           j        k    rt           j        nt           j        }	|j        t          j                    |	t           j        t           j        fv }
|j        r|                    dt+          t?          |j                             z              ddl!m"} |j#        ptI          ||          }|s7|                    dt+          |%                                          z              |
s*|                    dt+          |j                  z              |s3d}|&                                '                                }|rd}n tQ          |!t          |          z             }|s|)                                dk    r'|dt+          t?          |j                             z   z  }d}|*                                '                                }|rd}n tQ          |!t          |          z             }|s|)                                dk    r'|dt+          t?          |j                             z   z  }||z   dz   d!z  z   |z   |z   dz   }n|j+        t           j,        t           j-        t           j.        t           j/        hv r}ddl!m"} |                    dt+          t?          |j                             z              |j#        ptI          ||          }|s7|                    dt+          |%                                          z              |
s*|                    dt+          |j                  z              |st           j,        t           j        j0        t           j        j1        ft           j-        t           j        j2        t           j        j3        ft           j.        t           j        j0        t           j        j1        ft           j/        t           j        j2        t           j        j3        fi|j+                 \  }}|j+        t           j,        t           j.        hv rd\  }}nd\  }}d|d d          d} ||          '                                }|rd}n tQ          |!t          |          z             }|)                                dk    s|r'|dt+          t?          |j                             z   z  }|d d          d} ||          '                                }|rd}n tQ          |!t          |          z             }|)                                dk    s|r'|dt+          t?          |j                             z   z  }d}|4                                '                                }|rd}n tQ          |!t          |          z             }|)                                dk    s|r'|dt+          t?          |j                             z   z  }||z   dz   d!z  z   |z   |z   dz   d!z  z   |z   |z   dz   }n0|j5        r|                    dt+          t?          |j                             z              |
s*|                    dt+          |j                  z              |                    dt+          |6                                          z              |6                                t           j7        k    s"|6                                t           j8        k    rp|                    dt+          |9                                          z              |                    dt+          |:                                          z              n|6                                t           j;        k    sD|6                                t           j<        k    s"|6                                t           j=        k    r|                    dt+          |>                                          z              |                    dt+          |?                                          z              |                    dt+          |@                                          z              |s"tQ          |A                                !          }n|j	        rW|sSd  "d!B                    !"fd"t           jC        jD        jE        F                    |d          D                       }d#| d$}nKt          jG        |          r%d%}t          t          jI        |                    }nddl!m"} |j#        stI          ||          r|                    dt+          t?          |j                             z              |j        t          j                    k    r*|                    dt+          |j                  z              |sd}nr|)                                dk    r|j        s|J                                d&k    r7|                    dt+          t?          |j                             z              |j        t          j                    k    r*|                    dt+          |j                  z              |sd'}nt          jL        s7|                    dt+          t?          |j                             z              |
s*|                    dt+          |j                  z              |sH|j+        t           jM        k    r#tQ          |N                                !          }ntQ          |!          }|j+        t           jM        k    r*|                    d(t+          |j+                  z              d }	 | jO        }n# t          $ r d)}Y nw xY w|J|Ht          |          j
        }|d*k    r.|Q                                R                    d+d&          d,         }||                    d-| d.           n| jS        r|                    d/           |T                                r|                    d0|jU                    ||                    d1|            t          ||z   |!|j        2          } tI          |t           j        j                  r|sd3|  d} | S )4Nr   znested_tensor(ztensor((cudampszdevice='')xlalazyipumtiacpuzsize=r   )
FakeTensorznnz=zdtype=zindices=tensor(ry   z, size=zvalues=tensor(z),
rb   r   )rowcolumn)r   r   cr   z_indices=tensor(zquantization_scheme=zscale=zzero_point=zaxis=c                 f    d                     d |                     d          D                       S )Nr   c              3       K   | ]	}d | V  
dS )z  Nr   r   s     r   	<genexpr>z4_str_intern.<locals>.indented_str.<locals>.<genexpr>D  s(       G Gd G G G G G Gr   )r   split)sr   s     r   indented_strz!_str_intern.<locals>.indented_strC  s-    yy G G G G GGGGr   r   c              3   P   K   | ] } t          |          d z             V  !dS )r=   N)str)r|   r8   r   r   s     r   r   z_str_intern.<locals>.<genexpr>F  sM         SVVVaZ00     r   z[
z
]z_to_functional_tensor(r=   r   zlayout=InvalidCppFunctionz::r>   z	grad_fn=<>zrequires_grad=Trueznames=ztangent=)r   z
Parameter()Wr1   _C
_functorchis_functorch_wrapped_tensor_functorch_wrapper_str_interntypeTensornn	Parameter	is_nestedr   rJ   autograd
forward_adunpack_dualr4   _get_default_devicer   current_deviceindexr   r   r7   get_default_dtyper6   cdoubler   r.   int64r   	is_sparsetupleshapetorch._subclasses.fake_tensorr   is_meta
isinstance_nnz_indicesdetachr   rN   _valueslayout
sparse_csr
sparse_csc
sparse_bsr
sparse_bsccrow_indicescol_indicesccol_indicesrow_indicesvaluesis_quantizedqschemeper_tensor_affineper_tensor_symmetricq_scaleq_zero_pointper_channel_affineper_channel_symmetric per_channel_affine_float_qparamsq_per_channel_scalesq_per_channel_zero_pointsq_per_channel_axis
dequantizer   opsatenunbindr   _is_functional_tensorrepr_from_functional_tensorr   r!   r   stridedto_densegrad_fnRuntimeErrornamersplitrequires_gradr   namesr   )#inpr   is_plain_tensorprefixr   custom_contents_providedr   rS   tangent_default_complex_dtypehas_default_dtyper   r  indices_prefixindicesindices_strvalues_prefixr  
values_strcompressed_indices_methodplain_indices_methodcdimnamepdimnamecompressed_indices_prefixcompressed_indicescompressed_indices_strplain_indices_prefixplain_indicesplain_indices_strstrsgrad_fn_namer*  string_reprr   r   s#                                    @@r   _str_internrI    s   x66s;; S,S/RRRR3ii5</R499@R3RO
} *!	 *II&)))[[FH.d: %$

 N-99#>>MD' 	EH88::::K&&
))++t{/@@@K%%
S%5%55;<<<
 {999wwu~~ 022elBB  
!!
	'  ~ m?#eDJ&7&7"8"88999<<<<<<,>*T:">"> 	7OOFS%5%55666  	8OOHs4:6777' 	.Nmmoo,,..G Q#)'6C<O<O3OPP E'--//Q..y3uW]/C/C+D+DDD,M\\^^**,,F N"

(#m:L:L1LMM
 C&,,..A--i#eFL.A.A*B*BBB
 ,  	 
    
	 
 
 	=<<<<<#eDJ&7&7"8"88999,>*T:">"> 	7OOFS%5%55666  	8OOHs4:6777' 5	 5<#<el>V"W 5<#<el>V"W 5<#<el>V"W 5<#<el>V"W	?
 k?;%'; {u/1ABBB%4"((%4"((JHRaRL(J(J(J%!:!:4!@!@!G!G!I!I ).&&)4&5N1O1O(O* *& "''))Q..'.&)c,2337 7 + & '/rrl#D#D#D 0066==??M $)!!$/!6C0D,E,E#E% %! ""$$))W)!YU=;N5O5O1P1P%PP!,M[[]]))++F N"

(#m:L:L1LMM
||~~""g"i#eFL.A.A*B*BBB
)() , '	'
 $$  ,    	 
  
	 F?#eDJ&7&7"8"88999  	8OOHs4:6777.T\\^^1D1DDEEELLNNe555||~~!;;;OOHs4<<>>':'::;;;OOMC0A0A0C0C,D,DDEEEELLNNe666||~~!<<<||~~!GGGOOHs4+D+D+F+F'G'GGHHHOOMC0N0N0P0P,Q,QQRRROOGc$*A*A*C*C&D&DDEEE' 	@$T__%6%6??J	 1?' 		)H H H ::     .224;;    D )tJ		$T	*	* &?)%7==>>

 	=<<<<<< 	?:dJ77 	?OOGc%
*;*;&<&<<===zU466663tz?? :;;; , #"
zz||q   88::??OOGc%
2C2C.D.D$DEEE :!8!:!:::OOHs4:$>???/ &!%J!+ FOOGc%
2C2C.D.D$DEEE( @OOHs4:$>???/ ?{em33%0&%I%I

%0v%>%>
{em##	C$4$44555 L!+ ! ! ! !	!  3G}}-=(("<<>>00q99"=L3L3334444		 .,---~~ /---...,7,,---n	  K $*++ 2O 21;111s   *t2 2u uc                   t           j        j                            |           }|dk    sJ t           j        j                            |           rt          j        |            t           j        j                            |           }t          |          }t          j	        |d          }t           j        j        
                    |           r8t           j        j                            |           }|dk    sJ d| d| d| dS t           j        j                            |           r	d| d| dS t           j        j                            |           r	d| d	| d
S t          d          )Nr>   z    zBatchedTensor(lvl=z, bdim=z	, value=
z
)zGradTrackingTensor(lvl=zFunctionalTensor(lvl=z
, value=\
r   z8We don't know how to print this, please file us an issue)r1   r   r   maybe_get_levelis_functionaltensor_syncget_unwrappedr&  textwrapr   is_batchedtensormaybe_get_bdimis_gradtrackingtensor
ValueError)rT   r   levelrV   
value_reprindented_value_reprbdims          r   r   r     s|   H//77EB;;;;x..v66  	FH--f55EeJ"/*g>>x++F33 
x"11&99rzzzz  t  "  	

 x0088 
WeWW;NWWW	
 x..v66 HGuGG*GGGG
O
P
PPr   c                J   t          j                    5  t           j        j                                        5  t           j                                        }t          | |          cd d d            cd d d            S # 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   )r1   rG   utils_python_dispatch_disable_current_modesr   _DisableFuncTorchrI  )rS   r   guards      r   _strr^    sU   	 B B%+6MMOO B B**,,4AAAB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B Bs4   $B/B 'B B	BB	BBB)NNNNNNr^   )
contextlibr&   rc   rO  typingr   r   r   r1   r   	dataclassr   r!   r#   r   r(   contextmanagerr,   r9   r;   rl   r   r   r   r   r   rI  r   r^  r   r   r   <module>rc     sL             & & & & & & & & & &        $ $ $ $ $ $ $ $ 

 F# F# F# F#R*$sCx. * * * * ' ' '	 	 	S7 S7 S7 S7 S7 S7 S7 S7l
. 
. 
. 
.'E 'E 'E 'EZ"" "" "" ""J0N 0N 0Nf      C C C* )- Q Q Q Q Qh >B Q Q Q Q Q> #' B B B B B B Br   