
    iY\                     t   d Z ddlZej                  s
dZ ee      ddlZddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ ddlZddlZddlZddlmZ ddgZ	 ej:                   d	 Z' G d
 dejP                  jR                        Z* G d d      Z+ G d dejX                        Z-e.dk(  r ej^                          yy# e$ r  ej>                  ej@                        Z! ej>                  ejD                        e!k(  rejD                  e_        n ej>                  ejF                        e!k(  rejF                  e_        nm ej>                  ejH                        e!k(  rejH                  e_        n< ej>                  ejJ                        e!k(  rejJ                  e_        n e&de!z        Y Lw xY w)aR  Module pygame.tests.test_utils.array

Export the Exporter and Importer classes.

Class Exporter has configurable shape and strides. Exporter objects
provide a convenient target for unit tests on Pygame objects and functions
that import a new buffer interface.

Class Importer imports a buffer interface with the given PyBUF_* flags.
It returns NULL Py_buffer fields as None. The shape, strides, and suboffsets
arrays are returned as tuples of ints. All Py_buffer field properties are
read-only. This class is useful in comparing exported buffer interfaces
with the actual request. The simular Python builtin memoryview currently
does not support configurable PyBUF_* flags.

This module contains its own unit tests. When Pygame is installed, these tests
can be run with the following command line statement:

python -m pygame.tests.test_utils.array

    Nz:This Pygame build does not support the new buffer protocol)PyBUF_SIMPLEPyBUF_FORMATPyBUF_NDPyBUF_WRITABLEPyBUF_STRIDESPyBUF_C_CONTIGUOUSPyBUF_F_CONTIGUOUSPyBUF_ANY_CONTIGUOUSPyBUF_INDIRECTPyBUF_STRIDEDPyBUF_STRIDED_ROPyBUF_RECORDSPyBUF_RECORDS_RO
PyBUF_FULLPyBUF_FULL_ROPyBUF_CONTIGPyBUF_CONTIG_RO)reduceExporterImporterz*Cannot set c_ssize_t: sizeof(void *) is %ic                     t        |       S N)property)fns    j/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/test_utils/buftools.py	_prop_getr   H   s    B<    c                   :   e Zd ZdZddddddddddd	d
ddZi dej                  dej                  dej                  dej                  dej                  dej                  dej                  dej                  dej                  dej                  dej                  dej                  dej                   dej"                  dej$                  dej&                  dej(                  i dej*                  dej$                  d ej&                  d!ej,                  d"ej.                  d#ej0                  d$ej2                  d%ej4                  d&ej6                  d'ej8                  d(ej                  d)z  d*ej                  d+z  d,ej                  d-z  d.ej                  d/z  d0ej                  d1z  d2ej                  d3z  d4ej                  d5z  ej                  d6z  ej                  d7z  d8Zd@d:Zd; Zd< Z d= Z!d> Z"d? Z#y9)Ar   zAn object that exports a multi-dimension new buffer interface

    The only array operation this type supports is to export a buffer.
     =23456789)@r    <>!r!   r"   r#   r$   r%   r&   r'   r(   cbB=c=b=B?=?hH=h=HiI=i=IlL=l=LqQ=q=QfdPx   2x   3x   4x   5x   6x   7x      	   )8x9xNc                 p   |d}|d}d}d}d}|t        |      k  r	 | j                  ||      }|dz  }|t        |      k  r||   dk(  r|dz  }|t        |      dz
  k(  r||   }|&	 t        j                  | j
                  ||z            }t        |      | _	        || _
        t        j                  |j                  d	            | _        t        |      | _        || _        t!        t"        j$                  |d      | j                  z  | _         t'        |      | _        t        j*                  | j                  z  | j(                   | _        |t        j*                  | j                  z         | _        || j.                  | j                  dz
  <   t1        | j                  dz
  dd
      D ]1  }| j(                  |   | j.                  |   z  | j.                  |dz
  <   3 t'        | j.                        | _        nbt        |      | j                  k(  r?t'        |      | _        t        j*                  | j                  z  | j2                   | _        nt        d      t5        d t7        | j(                  | j2                        D              }	|	| _        t        j:                  |	z         | _        t?        d t7        | j(                  | j2                        D              }
t        j@                  | j<                        |
z   | _!        y # t        $ r Y w xY w# t        $ r t        d|z   dz         w xY w)Nr/   Fr   r   rI   1zUnknown item format ''latin_1z'Mismatch in length of strides and shapec              3   >   K   | ]  \  }}|t        |      z    y wr   abs.0rF   ss      r   	<genexpr>z$Exporter.__init__.<locals>.<genexpr>   s     JDAqQQZJs   c              3   P   K   | ]  \  }}|d k  s|dz
  t        |      z     yw)r   rI   Nr`   rb   s      r   re   z$Exporter.__init__.<locals>.<genexpr>   s,      
!%A!a%QUc!f
s   &&)"lenprefixesLookupErrorctypessizeoftypesKeyError
ValueErrorboolreadonlyformatcreate_string_bufferencode_formatndimitemsizer   operatormultupleshape	c_ssize_t_shape_stridesrangestridesmaxzipbuflenc_ubyte_bufsum	addressofbuf)selfrz   rq   r   rp   rv   prefixtypecoder9   r   offsets              r   __init__zExporter.__init__   s   >FHs6{?vay1Q s6{?vayC/FAFaayHI!==FX4E)FG X226==3KLJ	 (,,q1DMMA5\
''$))3djjA?#--		9<DM+3DMM$))a-(499q=!R0 H'+zz!}t}}Q7G'Ga!e$H /DL\TYY& >DL#--		9DLLIDMFGGJC

DLL,IJJ^^f,/	 
),TZZ)F
 
 ##DII.7I    I !86!AC!GHHIs   L
 )%L 
	LLL5c                 ^    t        j                  | j                        | j                  d   fS Nr   )rj   r   bufferrz   r   s    r   buffer_infozExporter.buffer_info   s$      -tzz!}==r   c                     t        j                  | j                  t        j                  t         j                              d| j
                   S r   )rj   castr   POINTERc_char_lenr   s    r   tobyteszExporter.tobytes   s/    {{4;;v}}(EFq499UUr   c                      | j                   d   S r   )rz   r   s    r   __len__zExporter.__len__   s    zz!}r   c                 F   ddl m} |t        z  t        k(  r| j                  rt	        d      |t
        z  t
        k(  r| j                  d      st	        d      |t        z  t        k(  r| j                  d      st	        d      |t        z  t        k(  r| j                  d      st	        d	      | j                  |_	        | j                  |_        | j                  |_
        |t        z  t        k(  rd|_        n| j                  |_        | j                  |_        |t        z  t        k(  r || j                        |_        nd |_        |t         z  t         k(  r || j"                        |_        n2| j                  d      rd |_        nt	        d
| j                   d      |t&        z  t&        k(  r%t        j                  | j(                        |_        n0|j$                  | j                  d      rd |_        nt	        d      d |_        d |_        | |_        y )Nr   )r   zbuffer is read-onlyCzdata is not C contiguousFzdata is not F contiguousAzdata is not contiguouszshape required for z dimensional dataz+strides required for none C contiguous data)rj   r   r   rp   BufferErrorr   is_contiguousr	   r
   r   rg   ru   rv   r   rt   rq   r   r|   rz   r   r}   r   
suboffsetsinternalobj)r   viewflagsr   s       r   _get_bufferzExporter._get_buffer   s   $N"~5$--344&& (,(:(:3(?899&& (,(:(:3(?899((!"*.*<*<S*A6778888>!^3DI		DIL \1#DLL1DKDKH)"4;;/DJ$DJ 3DII;>OPQQM!m3!++DMM:DLZZ4#5#5c#:DLKLLr   c                    |dv rp| j                   d   | j                  k(  rTt        | j                  dz
  dd      D ]6  }| j                   |dz
     | j                  |   | j                   |   z  k7  s6 n y|dv ro| j                   d   | j                  k(  rSt        d| j                  dz
        D ]6  }| j                   |dz      | j                  |   | j                   |   z  k7  s6 y yy)NCAr^   rI   r   TFAF)r   rv   r~   ru   rz   )r   fortranr9   s      r   r   zExporter.is_contiguous   s    d?||B4==0tyy1}a4  A||AE*djjmdll1o.MM   d?||A$--/q$))a-0  A||AE*djjmdll1o.MM    r   )NNNN)$__name__
__module____qualname____doc__rh   rj   r   c_byter   c_int8c_uint8c_boolc_shortc_ushortc_int16c_uint16c_intc_uintc_int32c_uint32c_longc_ulong
c_longlongc_ulonglongc_int64c_uint64c_floatc_doublec_void_prl   r   r   r   r   r   r    r   r   r   r   L   s    H%V]]%V]]% 	V^^% 	fmm	%
 	fmm% 	fnn% 	V]]% 	fmm% 	V^^% 	V__% 	fnn% 	foo% 	V\\% 	V]]% 	fnn%  	foo!%" 	V]]#%$ 	V^^%%& 	fnn'%( 	foo)%* 	V+%, 	V-%. 	fnn/%0 	foo1%2 	V^^3%4 	V__5%6 	V__7%8 	V^^a9%: 	fnnq ;%< 	fnnq =%> 	fnnq ?%@ 	fnnq A%B 	fnnq C%D 	fnnq E%F nnq nnq I%EN08d>V+Zr   c                       e Zd ZdZd Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zed        Zed        Zd Zy)r   zAn object that imports a new buffer interface

    The fields of the Py_buffer C struct are exposed by identically
    named Importer read-only properties.
    c                     t         j                  j                         | _        | j                  j	                  ||       y r   )pygame	newbuffer	Py_buffer_view
get_buffer)r   r   r   s      r   r   zImporter.__init__	  s,    %%//1


c5)r   c                 .    | j                   j                  S )z$return object or None for NULL field)r   r   r   s    r   r   zImporter.obj       zz~~r   c                 .    | j                   j                  S z!return int or None for NULL field)r   r   r   s    r   r   zImporter.buf  r   r   c                 .    | j                   j                  S z
return int)r   rg   r   s    r   rg   zImporter.len  r   r   c                 .    | j                   j                  S )zreturn bool)r   rp   r   s    r   rp   zImporter.readonly       zz"""r   c                     | j                   j                  }|yt        j                  |t        j                        j
                  j                  d      S )z#return bytes or None for NULL fieldNascii)r   rq   rj   r   c_char_pvaluedecode)r   format_addrs     r   rq   zImporter.format!  sB     jj''{{;8>>EEgNNr   c                 .    | j                   j                  S r   )r   rv   r   s    r   rv   zImporter.itemsize)  r   r   c                 .    | j                   j                  S r   )r   ru   r   s    r   ru   zImporter.ndim.  s     zzr   c                 L    | j                  | j                  j                        S z'return int tuple or None for NULL field)_to_ssize_tupler   rz   r   s    r   rz   zImporter.shape3  s     ##DJJ$4$455r   c                 L    | j                  | j                  j                        S r   )r   r   r   r   s    r   r   zImporter.strides8  s     ##DJJ$6$677r   c                 L    | j                  | j                  j                        S r   )r   r   r   r   s    r   r   zImporter.suboffsets=  s     ##DJJ$9$9::r   c                 .    | j                   j                  S r   )r   r   r   s    r   r   zImporter.internalB  r   r   c                 z    ddl m}m}m} |y t	         || ||            d| j
                  j                         S )Nr   )r   r   r{   )rj   r   r   r{   ry   r   ru   )r   addrr   r   r{   s        r   r   zImporter._to_ssize_tupleG  s6    33<T$	 23A

HIIr   N)r   r   r   r   r   r   r   r   rg   rp   rq   rv   ru   rz   r   r   r   r   r   r   r   r   r     s    *       # # O O # #   6 6 8 8 ; ; # #Jr   c                   J    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Z	 dd
Zy)ExporterTestzClass Exporter unit testsc           	         t        j                  t         j                        }t        j                  t         j                        }t        j                  t         j                        }t        j                  t         j
                        }t        j                  t         j                        }t        j                  t         j                        }t        j                  t         j                        }t        j                  t         j                        }t        j                  t         j                        }	| j                  ddddddd       | j                  ddddddd       | j                  ddddddd       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd	|f|||       | j                  ddd
|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddddddd       | j                  ddd|f|||       | j                  ddd|	f|	|	|	       | j                  ddddddd       | j                  ddddddd       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd|f|||       | j                  ddd |f|||       | j                  ddd!|	f|	|	|	       | j                  ddd"dddd       | j                  ddd#dddd       | j                  ddd$dddd       | j                  ddd%d&d'd'd'       | j                  ddd(d&d'd'd'       | j                  ddd)d*d+d+d+       | j                  ddd,d*d+d+d+       | j                  ddd-d*d+d+d+       | j                  ddd.d*d+d+d+       | j                  ddd/d0d1d1d1       | j                  ddd2d0d1d1d1       | j                  ddd3dddd       | j                  ddd4d&d'd'd'       | j                  ddd5d&d'd'd'       | j                  ddd6d&d'd'd'       | j                  ddd7d0d1d1d1       | j                  ddd8d0d1d1d1       | j                  ddd9d0d1d1d1       | j                  ddd:dddd       | j                  ddd;d&d'd'd'       | j                  ddd<d=d>d>d>       | j                  ddd?d*d+d+d+       | j                  ddd@dAdBdBdB       | j                  dddCdDdEdEdE       | j                  dddFdGdHdHdH       | j                  dddId0d1d1d1       | j                  dddJdKdLdLdL       | j                  dddMd&d'd'd'       | j                  dddNd&d'd'd'       | j                  t        t        dOdP       | j                  t        t        dOdQ       | j                  t        t        dOdR       | j                  t        t        dOdS       | j                  t        t        dOdT       | j                  t        t        dOdU       | j                  t        t        dOdV       | j                  t        t        dOdW       | j                  t        t        dOdX       | j                  t        t        dOdY       | j                  t        t        dOdZ       | j                  t        t        dOd[       | j                  t        t        dOd\       | j                  t        t        dOd]       | j                  t        t        dOd^       y )_Nr   rI   r/   rI   r.   r-   r5   r6   r9   r:   r=   r>   rA   rB   rE   rF   rH   rG   r3   z@bz@Bz@cz@hz@Hz@iz@Iz@lz@Lz@qz@Qz@fz@dz@?r1   r2   r0   r7   rK   rK   r8   r;   )rO   rO   r<   r?   r@   rC   rV   rV   rD   r4   z<hz>hz!hz<qz>qz!q1xrJ   rL   )rM   rM   rN   rP   )rQ   rQ   rR   )rS   rS   rT   )rU   rU   rX   rY   )rW   rW   1hz=1h)rK   rI   r   Wz^Qz=Wz=fz=dz<fz<dz>fz>dz!fz!d0x11xBB)rj   rk   r   r   r   r   r   r   r   r   r   
check_argsassertRaisesrn   r   )
r   char_szshort_szint_szlong_szlonglong_szfloat_sz	double_szvoidp_szbool_szs
             r   test_formatszExporterTest.test_formatsR  s   --.==0v||,--.mmF$5$56==0MM&//2	==1--.4dAq!44dAq!44dAq!44wj'7GL4xk8XxP4xk8XxP4viH4viH4wj'7GL4wj'7GLtS;.+{K	
 	tS;.+{K	
 	4xk8XxP4ylIy)T4dAq!44xk8XxP4wj'7GL4tQ154tQ154z7GWM4{HhQ4{HhQ4y&&&I4y&&&I4z7GWM4z7GWMtTK>;[	
 	tTK>;[	
 	4{HhQ4	|Y	9U4z7GWM4tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154tQ154aA6*h;*h<*h=*h=*h=*h=*h=*h=*h=*h=*h=*h=*h=*h>*h=r   c           	         | j                  ddddddd       | j                  ddddd	d	d       | j                  dd
ddddd       | j                  ddddddd       | j                  dd
ddddd       | j                  dd
ddddd       | j                  ddddddd       | j                  ddddddd       | j                  ddddddd       | j                  ddddddd       y )NrI   
   r7   r      rK   )rQ   rM   )rS   rK      )rU   rM   rQ   )r   r   rK         rQ      rM   iJ  B   rS   rK     rM   )rK      *   )rK      0      i  X   rV   rK   X  )rU   rQ   rL   )   rM   i   )rM      )rM      x   r   r   s    r   test_strideszExporterTest.test_strides  s    5$b"a864R;9dKc1E>4$aP9dKc1E9dKc1E>4$aP64#sA>64#sA>64#sA>r   c                     t        ddd      }| j                  |j                         t        |t              }| j                  t        t        |t               t        |t              }y )Nr   r5   T)rp   )r   
assertTruerp   r   r   r   r   r   r   ar.   s      r   test_readonlyzExporterTest.test_readonly  sN    T3.

#Q()+xMBQ()r   c                    t        dd      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        dd      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        ddd      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        ddd	      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        ddd
      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        ddd      }| j                  |j                  d             t        ddd      }| j                  |j                  d             t        ddd      }| j                  |j                  d             t        ddd      }| j                  |j                  d             y )Nr   r7   r   r   r   )r   rO   r  r  )rK   r   )rK         i  )rK   r  rS   rO   )i@  r
  rV   rK   )rK   rO   r
  i   )rM   rK   rK   )r	  rV   rO   )rO      r  )r   r  r   assertFalser   r  s     r   test_is_contiguouszExporterTest.test_is_contiguous  s   UD!,-,-,-Wd#,-,--.^T?;,-,--.WdG,,-,--.^T+=>,-,--.]D/:-.]D/:-.Yj1-.Yk2-.r   c                    t        dd      }t        |t              }| j                  |j                  |u        | j                  |j
                  d u        | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  d u        | j                  |j                  d u        | j                  |j                  d u        | j                  |j                  d u        | j                  |j                         t        |t              }| j                  |j                  |u        | j                  |j
                  d u        | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  d u        | j                  |j                  d u        | j                  |j                  d u        | j                  |j                  d u        | j                  |j                         t        |t               }| j                  |j                  |u        | j                  |j
                  d u        | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  d u        | j                  |j                  d u        | j                  |j                  d u        | j                  |j                         t        ddd      }t        |t"              }| j                  |j                  |u        | j                  |j
                  d u        | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  d u        | j                  |j                  d u        | j                  |j                         t        |t$              }| j                  |j                  |u        | j                  |j
                  d       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  d u        | j                  |j                  d u        | j                  |j                         | j'                  t(        t        |t               | j'                  t(        t        |t               | j'                  t(        t        |t                | j'                  t(        t        |t*               | j'                  t(        t        |t,               | j'                  t(        t        |t.               | j'                  t(        t        |t0               y )N)r   rK   rF   )rQ   r   r7   )r  rK   )r   r   r   r  r   rq   assertEqualrg   rv   rz   r   r   r   r  rp   r   r   r   r   r   r   r   r	   r
   r   r  s      r   test_PyBUF_flagszExporterTest.test_PyBUF_flags  s   Wc"Q%
#D()&QZZ04(		T)*,-

d*+$Q'
#D()&QZZ04(		T)*,-

d*+$Q!
#D()&QZZ0!''*		T)*,-

d*+$WdG,Q&
#D()&QZZ0!''*AII.,-

d*+$Q
#
#4(&QZZ0!''*AII.,-

d*+$+xLA+xNC+xH=+x4FG+x4FG+x4HI+xLAr   c           
          | j                  dddddddd       | j                  dddddddd	       | j                  dddd
dddd       | j                  dddddddd       | j                  dddddddd       y )NrM   )rM   rQ   rO   r/   )r   rO   r^   <   rI   )rM   rQ   rM   -   rK   )r   rI   r	  )ir(  r^   ;   :   r  r   s    r   test_negative_stridesz"ExporterTest.test_negative_strides  s    9c;B1E9c;B1E9c;B2F9c="b!RH9c="b!RHr   c                    t        ddd      }| j                  |j                  d       | j                  |j                  d       | j	                  |j
                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  t        j                  |j                               t        d      }| j                  |j                  d	       | j                  |j                  d	       | j	                  |j
                         | j                  |j                  d       | j                  |j                  d
       | j                  t!        |j                  t"                     | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        g ddg d      }| j                  t!        |j                  t"                     | j                  t!        |j                  t"                     | j                  |j                  d       | j                  |j                  d       y )Nr  r7   r  rO   rK   r  r  r   rI   r/   r   rV   )r   r#  ru   rv   r  rp   rz   rq   r   rg   r   r   rj   r   r   r  
isinstancery   r   s     r   test_attributeszExporterTest.test_attributes&  s   ^T?;#Q'$.14(O4%4( 0 0 89TN#Q'$$'3'
199e45D)"1%^T?;
177E23
199e45.1O4r   c                    t        ddd      }t        |t              }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       t        ddd      }t        |t              }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y )	N)rO   rQ   r/   rV   )rq   rv   )(   rV   weirdrQ   )   rQ   )r   r   r   r#  rv   rq   r   )r   expimps      r   test_itemsizezExporterTest.test_itemsizeA  s    vcA6sM*q)S)g.vg:sM*q)W-g.r   c	                 v   |dz  r|nd }	|dz  r|nd }
t        ||	|
      }| j                  |j                  |       | j                  |j                  t	        j
                  |j                        |z          t        |t              }| j                  |j                  |j                         | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       y )NrI   rK   )r   r#  r   r   rj   r   r   r   r   rg   rq   rv   rz   r   )r   
call_flagsrz   rq   r   lengthbufsizerv   r   
format_argstrides_argr  ms                r   r   zExporterTest.check_argsM  s      *A~V4
!+agTUJ47+ 0 0 86 ABQ()&'6*X.%(G,r   N)r   )r   r   r   r   r   r  r  r!  r$  r+  r.  r5  r   r   r   r   r   r   O  s>    #]>~
?*/<;BzI56
/ UV-r   r   __main__)0r   r   HAVE_NEWBUFemsgImportErrorpygame.newbufferr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   unittestrj   rw   	functoolsr   __all__r{   AttributeErrorrk   r   	void_p_szr   r   r   r   RuntimeErrorr   r   BufferMixinr   r   TestCaser   r   mainr   r   r   <module>rK     s  , GD
d
     (    z
"U
sv++ slJJ JJZL-8$$ L-^ zHMMO I  Ufoo.Iv}}V^^$	1!>>	v||	$		1!<<	v}}	%	2!==	v((	)Y	6!,,G)STTUs   C C0F76F7