
    Џkhj]                         d Z dZg dZddlZddlmZ ddlmZ dd	l	m
Z
mZmZmZ dd
lmZ ddlmZmZmZmZmZmZmZmZ ddlmZmZmZ  G d de      Zd Zd Z G d dee      Z  G d dee      Z!y)zSparse DIAgonal formatzrestructuredtext en)	dia_array
dia_matrixisspmatrix_dia    N   )copy_if_needed   )spmatrix)issparse_formats_spbasesparray)_data_matrix)isdenseisscalarlikeisshapeupcast_chargetdtypeget_sum_dtypevalidateaxischeck_shape)
dia_matmat
dia_matvecdia_matvecsc                       e Zd ZdZddddZd Zd ZddZej                  j                  e_	        ddZ
ej                  j                  e
_	        dd	Zej                  j                  e_	        dd
Z fdZd Z fdZd Zd Z fdZddZddZej(                  j                  e_	        ddZej*                  j                  e_	        ddZej,                  j                  e_	        ddZej.                  j                  e_	        ddZej0                  j                  e_	        ddZd Zej4                  j                  e_	         xZS ) 	_dia_basediaNmaxprintc                   t        j                  | ||       t        |      r|j                  dk(  rP|r|j	                         }|j
                  | _        |j                  | _        t        |j                        | _	        nl|j                  | j                  k(  r|r|j	                         }n|j                         }|j
                  | _        |j                  | _        t        |j                        | _	        nt        |t              r5t        |      r}t        |      | _	        t        j                  dt!        |t"                    | _        | j%                  t'        | j                              }t        j                  d|      | _        nY	 |\  }}	|t)        d      |st*        }t        j,                  t        j.                  |d   ||	            | _        t        j.                  |d
   | j%                  t'        |            |	      }	t        j0                  |	      | _        t        |      | _	        n	 t        j4                  |      }t        | t6              r(|j8                  dk7  rt)        d|j8                   d      | j;                  |||      j                         }|j
                  | _        |j                  | _        t        |j                        | _	        |+t!        |      }| j
                  j=                  |      | _        | j                  j8                  d
k7  rt)        d      | j
                  j8                  dk7  rt)        d      | j
                  j                  d   t?        | j                        k7  r<t)        d| j
                  j                  d    dt?        | j                         d      t?        t        j@                  | j                              t?        | j                        k7  rt)        d      y # t2        $ r}
d}t)        |      |
d }
~
ww xY w# t2        $ r}
t)        d| j                   d      |
d }
~
ww xY w)Nr   r   )r   r   )defaultmaxvalr   dtypezexpected a shape argument)r$   copyr   z+unrecognized form for dia_array constructorzunrecognized form for z_matrix constructorr   zDIA arrays don't support zD input. Use 2D)r$   shapezoffsets array must have rank 1zdata array must have rank 2znumber of diagonals (z() does not match the number of offsets ()z&offset array contains duplicate values)!r   __init__r
   formatr%   dataoffsetsr   r&   _shapetodia
isinstancetupler   npzerosr   float_get_index_dtypemax
ValueErrorr   
atleast_2darray
atleast_1d	Exceptionasarrayr   ndim_coo_containerastypelenunique)selfarg1r&   r$   r%   r   A	idx_dtyper*   r+   emessagenewdtypes                M/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/sparse/_dia.pyr(   z_dia_base.__init__   s}   dD8<D>{{e#99;D II	#||)$**5;;$++-$		A

AFF	 yy)!''2e$t} *$/HHUHUE,JK	 11TZZ1I	!xx9=5$(MD'
 }()DEE- "bhhtAweRV.W XDI hhtAw-1-B-B#e*-B-U,02G $&==#9DL"-e"4DKMzz$' $(TYY!^ #<TYYK!WXX##DU#CIIKADI99DL%agg.DKH		((2DI <<!=>>99>>Q:;;99??1T\\!22'		(:'; <"4<<014  ryy&'3t||+<<EFF =Y ! 5KG$W-145$  M !9$(KK=0C"E FKLMMs0   P P8 	P5"P00P58	Q QQ c                     t         | j                     \  }}t        | t              rdnd}| j                  j
                  d   }d| d| d| j                   d| j                   d| d	| j
                   d
S )Nr7   matrixr   <z sparse z of dtype 'z'
	with z stored elements (z diagonals) and shape >)r   r)   r.   r   r*   r&   r$   nnz)r@   _fmt
sparse_clsds        rG   __repr__z_dia_base.__repr__d   s|    $++&3 *4 9Wx
IIOOAuHZLDJJ< @hhZ1!4J4::,VWY	
    c                     | j                   \  }}t        j                  | j                  j                   d         }|| j                  dddf   z
  }|dk\  }|||k  z  }|||k  z  }|S )z~Returns a mask of the same shape as self.data, where
        mask[i,j] is True when data[i,j] corresponds to a stored element.r   Nr   )r&   r0   aranger*   r+   )r@   num_rowsnum_colsoffset_indsrowmasks         rG   
_data_maskz_dia_base._data_maskm   so     "ZZ(ii		 23DLL400qx x'(rR   c                     |t        d      | j                         }t        j                  | j                  |         S )Nz<count_nonzero over an axis is not implemented for DIA format)NotImplementedErrorrZ   r0   count_nonzeror*   )r@   axisrY   s      rG   r]   z_dia_base.count_nonzerox   s?    %N   		$00rR   c                     |t        d      | j                  \  }}d}| j                  D ],  }|dkD  r|t        |||z
        z  }|t        ||z   |      z  }. t	        |      S )Nz6_getnnz over an axis is not implemented for DIA formatr   )r\   r&   r+   minint)r@   r^   MNrL   ks         rG   _getnnzz_dia_base._getnnz   sy    % '7 8 8jj! 	"A1us1QqSz!s1Q3qz!		"
 3xrR   c           
      :   t        |      }t        | j                        }| j                  \  }}d }|dk(  r| j	                         }| j
                  |z  j                  d      }	|	j                  d   |k(  r|	}
n3t        j                  ||	j                        }
|	|
d |	j                  d    | j                  |
|      }nt        j                  |df|      }t        j                  ||      }t        ||t        | j                        | j
                  j                  d   | j                  | j
                  ||       | j                  |      }||j                  ||      S | j                  |j                  |            }|j                  d||      S )	Nr   r   r^   r#   r   )r$   out )r^   r$   ri   )r   r   r$   r&   rZ   r*   sumr0   r1   _ascontaineronesr   r>   r+   )r@   r^   r$   ri   	res_dtyperU   rV   retrY   xresrow_sumsones                rG   rk   z_dia_base.sum   sf   D!!$**-	!ZZ(4<??$DT!&&A&.AwwqzX%hhxqww7#$KQWWQZ ##Cy#9C xx1Y?H''()4Cx3t||+<yyq)4<<CS ((2H|||%S|99##HLLdL$;<CwwBew55rR   c                 F   t        |t              s|j                  |       S t        j                  | j
                  |j
                        rG| j                  |r| j                  |j                  z
        S | j                  |j                  z         S t        j                  | j
                  |j
                        }t        j                  || j
                        }t        j                  ||j
                        }| j                  j                  d   }|j                  j                  d   }||k(  rut        |      t        | j
                        k(  rT| j                  t        |         }|r||d d fxx   |j                  z  cc<   nx||d d fxx   |j                  z  cc<   n[||k(  rqt        |      t        |j
                        k(  rP|r|j                  t        |          }n|j                  t        |         }||d d fxx   | j                  z  cc<   nt        | j                  d   |d   z   | j                  d         }	t        j                  t        |      |	ft        j                  | j                  |j                              }||d |fxx   | j                  d d d |	f   z  cc<   |r%||d |fxx   |j                  d d d |	f   z  cc<   n$||d |fxx   |j                  d d d |	f   z  cc<   | j!                  ||f| j                        S )Nr   r   r#   r&   )r.   r   _add_sparser0   array_equalr+   
_with_datar*   union1dsearchsortedr&   r>   _invert_indexr`   r1   result_type_dia_container)
r@   othersubnew_offsetsself_idx	other_idxself_dother_dnew_datarP   s
             rG   rw   z_dia_base._add_sparse   s   %+$$T** >>$,,6??S499uzz#9 ; ;#'99uzz#9; ; jju}}=??;=OOK?	#**""1% W[!1S5F!Fyyx!89HA&%**4&A&%**4&w3{#3s5==7I#I!JJ}Y'?@@ ::mI&>?Xq[!TYY.! DJJqMKO3TZZ]CA xx[!1%nnTYY

;H Xww&'499QU+;;'HWH,-ArrE1BB-HWH,-ArrE1BB-""Hk#:$**"MMrR   c                 h    t        |t              st        |   |      S | j	                  |d      S )NT)r   )r.   r   super_sub_sparserw   )r@   r   	__class__s     rG   r   z_dia_base._sub_sparse   s3    %+7&u--400rR   c                 >    | j                  | j                  |z        S N)ry   r*   )r@   r   s     rG   _mul_scalarz_dia_base._mul_scalar   s    tyy5011rR   c                 P   t        |      r| j                  |      S t        |      r|j                  dkD  r| j	                         |z  S d| j
                  v sd| j
                  v sd|j
                  v rt        |   |      S t        j                  |      }|j
                  \  }}| j
                  \  }}t        | j                  j
                  d   |      }| j                  d d d |f   j                  t        j                  | j                  |            }|dk(  r||dd |f   z  }n||k7  rt        d      t        j                  |      }||kD  r|| j                   d d d f   z
  |z  }	n|| j                   d d d f   |z  z
  }	|dk(  rd}n||k7  rt        d      |||	|f   z  }| j#                  |      S t%        |t&              r|j
                  | j
                  k7  rt        |   |      S t        j(                  | j                   |j                   dd      \  }
}}t        | j                  j
                  d   |j                  j
                  d         }| j                  |d |f   |j                  |d |f   z  }| j+                  ||
f| j
                        S )Nr   r   r   zinconsistent shapesT)assume_uniquereturn_indicesrv   )r   r   r   r;   toarrayr&   r   multiplyr0   r6   r`   r*   r=   r}   r5   rT   r+   ry   r.   r   intersect1dr~   )r@   r   
other_rows
other_colsrowscolsLr*   jir+   r   r   r   s                rG   r   z_dia_base.multiply   sk   ##E**5>zzA~||~-- DJJ!tzz/Q%++5Ew'..MM%(E%*[["J
JD$DIIOOA&-A99QU#**2>>$))U+KLDQa!e$t# !677IIaLt8T\\!T'22d:ADLLD1D88A?A4'$%:;;ad#??4(( %+u{{djj/H7#E**
 NN4<<)-dD 	%9 		"EJJ$4$4Q$78yy2A2&IrrM)BB""D'?$**"EErR   c                    |}t        j                  | j                  d   t        | j                  j
                  |j                  j
                              }| j                  j                  d   }| j                  \  }}t        ||t        | j                        || j                  | j                  |j                         |j                                |S )Nr   r#   r   )r0   r1   r&   r   r$   charr*   r   r>   r+   ravel)r@   r   rp   yr   rb   rc   s          rG   _matmul_vectorz_dia_base._matmul_vector  s    HHTZZ]+djjoo78ww||+E F IIOOAjj!1QDLL)1dllDII779aggi	) rR   c                 T   t        j                  | j                  d   |j                  d   ft        j                  | j                  |            }t        g | j                  | j                  j                  | j                  | j                  |j                  d   ||  |S )Nr   r   r#   )r0   r1   r&   r}   r*   r   r+   )r@   r   rq   s      rG   _matmul_multivectorz_dia_base._matmul_multivector,  s    hh

1u{{1~6^^DIIu=? 	0TZZ 	0$))// 	04<< 	0 	0KKN	0$)	0+.	0
rR   c                 l   t        |t              st        |   |      S d| j                  v sd|j                  v r-| j                  | j                  d   |j                  d   f      S t        g | j                  | j                  j                  | j                  | j                  |j                  d   |j                  j                  |j                  |j                   \  }}| j                  |j                  t        |      d      |f| j                  d   |j                  d   f      S )Nr   r   ru   )r.   r   r   _matmul_sparser&   r~   r   r*   r+   reshaper>   )r@   r   r+   r*   r   s       rG   r   z_dia_base._matmul_sparse3  s   %+7)%00 

?a5;;.&&

1u{{1~'FGG" >DJJ > >#'<<>15>#(;;q>>49JJ4D4D> $)==> 38**> ""DLLWr$BG#L$(JJqM5;;q>#BD 	DrR   c                    | j                   \  }}|j                  dk(  rt        j                  }nt	        |      }|dk  rt        ||z   ||      }d}|}nt        |||z
  |      }|}||z   }|j                  dk7  r|d | }| j                  j                   \  }	}
|| j                  v ro||
kD  rIt        j                  |	|f| j                  j                        }| j                  |d d d |
f<   || _        || j                  | j                  |k(  ||f<   y t        j                  | j                  | j                  j                  j                  |            | _        t        ||
      }t        j                  |	dz   |f| j                  j                        }| j                  |d dd |
f<   ||d||f<   || _        y )Nr   r#   r   ru   )r&   r;   r0   infr>   r`   r*   r+   r1   r$   appendtyper4   )r@   valuesrd   rb   rc   values_nn	min_index	max_index	data_rows	data_colsr*   ms                rG   _setdiagz_dia_base._setdiagC  s   zz1;;!vvH6{Hq5AE1h'AIIAq1uh'AIAI;;!BQZF#yy	99$xxI 6diiooN&*iiQ

]# 	@FDIIdlla'9)<<=99T\\4<<3E3E3J3J13MNDLIy)A88Y]A.diiooFD$(IID"jyj!,2DYy(()DIrR   c                 *    |r| j                         S | S r   r%   )r@   r%   s     rG   r-   z_dia_base.todiah  s    99;KrR   c                    ||dk7  rt        d      | j                  \  }}t        | j                        }| j                   }t	        j
                  t        |      t        j                        d d d f   }t	        j
                  |t        j                        ||z  d d d f   z
  }t        d|| j                  j                  d   z
        }	t	        j                  | j                  t	        j                  | j                  j                  d   |	f| j                  j                        f      }
|
||f   }
| j                  |
|f||f|      S )N)r   r   zvSparse arrays/matrices do not support an 'axes' parameter because swapping dimensions is the only logical permutation.r#   r   r   )r&   r%   )r5   r&   r4   r+   r0   rT   r>   intcr*   hstackr1   r$   r~   )r@   axesr%   rU   rV   max_dimr+   rc
pad_amountr*   s              rG   	transposez_dia_base.transposep  s3    L M M "ZZ(djj/ <<- IIc'l"''21d7;IIhbgg.'G2CQW1MMGDIIOOA$667
yy$))RXXtyyq/A:.N48IIOO&E F GAqDz""D'?h; &* # , 	,rR   c                    | j                   \  }}|| k  s||k\  r+t        j                  d| j                  j                        S t        j
                  | j                  |k(        \  }t        d|      }t        ||z   |      }||z
  }|j                  dk(  r+t        j                  || j                  j                        S | j                  |d   ||f   }|t        |      z
  }	|	dkD  rt        j                  |d|	fd      }|S )Nr   r#   constant)mode)r&   r0   emptyr*   r$   nonzeror+   r4   r`   sizer1   r>   pad)
r@   rd   r   r   idx	first_collast_colresult_sizeresultpaddings
             rG   diagonalz_dia_base.diagonal  s    ZZ
d:d88ATYY__55zz$,,!+,1I	tax&*88q=88Ktyy??3q69X#556F+Q;VVFQLzBFrR   c                 L   | j                   dk(  r'| j                  | j                  | j                        S | j                  \  }}| j                  j                  \  }}t        j                  |      }|| j                  d d d f   z
  }|dk\  }|||k  z  }|||k  z  }|| j                  dk7  z  }| j                  t        | j                              }	t        j                  |dz   |	      }
t        j                  |j                  d      d |       |
d|dz    ||k  r|
|   |
|dz   d  |j                  |j                     j                  |	d      }| j                  j                  |j                     }| j                  |||
f| j                  | j                        S )	Nr   r#   r!   r   rh   Fr   )r&   r$   )rL   _csc_containerr&   r$   r*   r0   rT   r+   r3   r4   r1   cumsumrk   Tr=   )r@   r%   rU   rV   num_offsets
offset_lenrW   rX   rY   rC   indptrindicesr*   s                rG   tocscz_dia_base.tocsc  s   88q=&&tzz&DD!ZZ("&))//Zii
+DLL400qx x'(a ))TZZ)A	(Q,i8!#4888+;IX+F!GqA $*:$6F:a<=!%%-&&yu&=yy{{466"""D'6#:$**)- # 5 	5rR   c                 t   | j                   \  }}| j                  j                   \  }}t        j                  |      }|| j                  d d d f   z
  }|dk\  }|||k  z  }|||k  z  }|| j                  dk7  z  }||   }t        j
                  ||      |j                            }	| j                  | j                  ft        | j                               }
|j                  |
d      }|	j                  |
d      }	| j                  |   }| j                  |||	ff| j                   | j                  d      S )Nr   )arraysr"   Fr   )r&   r$   r%   )r&   r*   r0   rT   r+   tiler   r3   r4   r=   r<   r$   )r@   r%   rU   rV   r   r   rW   rX   rY   colrC   r*   s               rG   tocooz_dia_base.tocoo  s2   !ZZ("&))//Zii
+DLL400qx x'(a $iggk;/

=))LL?3tzz? * 
	 jjj/jjj/yy ""C:djj

 # 
 	
rR   c                     |r7| j                  || j                  j                         f| j                        S | j                  || j                  f| j                        S )zReturns a matrix with the same sparsity structure as self,
        but with different data.  By default the structure arrays are copied.
        rv   )r~   r+   r%   r&   )r@   r*   r%   s      rG   ry   z_dia_base._with_data  sf     &&t||((*+4:: '   &&t||$DJJ '  rR   c                    t        |      }|\  }}| j                  d d d |f   | _        || j                  d   kD  rt        j                  | j
                  | j                  d   z   | j                  j                  d   k        r_| j
                  d d d f   | j                  d   z   t        j                  | j                  j                  d         k  }d| j                  |<   || _        y )Nr   r   )r   r*   r&   r0   anyr+   rT   r,   )r@   r&   rb   rc   rY   s        rG   resizez_dia_base.resize  s    E"1IIa!e$	

1t||djjm3diiooa6HHILLD)DJJqM9IIdiiooa012DDIIdOrR   )NNFr   )NNN)Frg   )NF)T)__name__
__module____qualname___formatr(   rQ   rZ   r]   r   __doc__re   rk   rw   r   r   r   r   r   r   r   r-   r   r   r   r   ry   r   __classcell__)r   s   @rG   r   r      s:   GKGT KGZ
	1 $1199M oo--GO6@ ++%%CK-N^12/FbD #J MM))EM,,  ))11I  ''//H50 MM))EM
0 MM))EM ^^++FNNrR   r   c                 r    t        j                  |       }t        j                  t        |             || <   |S )z)Helper function to invert an index array.)r0   
zeros_likerT   r>   )r   invs     rG   r|   r|     s+    
--
CyyS"CHJrR   c                 "    t        | t              S )a  Is `x` of dia_matrix type?

    Parameters
    ----------
    x
        object to check for being a dia matrix

    Returns
    -------
    bool
        True if `x` is a dia matrix, False otherwise

    Examples
    --------
    >>> from scipy.sparse import dia_array, dia_matrix, coo_matrix, isspmatrix_dia
    >>> isspmatrix_dia(dia_matrix([[5]]))
    True
    >>> isspmatrix_dia(dia_array([[5]]))
    False
    >>> isspmatrix_dia(coo_matrix([[5]]))
    False
    )r.   r   )rp   s    rG   r   r     s    . a$$rR   c                       e Zd ZdZy)r   a<  
    Sparse array with DIAgonal storage.

    This can be instantiated in several ways:
        dia_array(D)
            where D is a 2-D ndarray

        dia_array(S)
            with another sparse array or matrix S (equivalent to S.todia())

        dia_array((M, N), [dtype])
            to construct an empty array with shape (M, N),
            dtype is optional, defaulting to dtype='d'.

        dia_array((data, offsets), shape=(M, N))
            where the ``data[k,:]`` stores the diagonal entries for
            diagonal ``offsets[k]`` (See example below)

    Attributes
    ----------
    dtype : dtype
        Data type of the array
    shape : 2-tuple
        Shape of the array
    ndim : int
        Number of dimensions (this is always 2)
    nnz
    size
    data
        DIA format data array of the array
    offsets
        DIA format offset array of the array
    T

    Notes
    -----

    Sparse arrays can be used in arithmetic operations: they support
    addition, subtraction, multiplication, division, and matrix power.
    Sparse arrays with DIAgonal storage do not support slicing.

    Examples
    --------

    >>> import numpy as np
    >>> from scipy.sparse import dia_array
    >>> dia_array((3, 4), dtype=np.int8).toarray()
    array([[0, 0, 0, 0],
           [0, 0, 0, 0],
           [0, 0, 0, 0]], dtype=int8)

    >>> data = np.array([[1, 2, 3, 4]]).repeat(3, axis=0)
    >>> offsets = np.array([0, -1, 2])
    >>> dia_array((data, offsets), shape=(4, 4)).toarray()
    array([[1, 0, 3, 0],
           [1, 2, 0, 4],
           [0, 2, 3, 0],
           [0, 0, 3, 4]])

    >>> from scipy.sparse import dia_array
    >>> n = 10
    >>> ex = np.ones(n)
    >>> data = np.array([ex, 2 * ex, ex])
    >>> offsets = np.array([-1, 0, 1])
    >>> dia_array((data, offsets), shape=(n, n)).toarray()
    array([[2., 1., 0., ..., 0., 0., 0.],
           [1., 2., 1., ..., 0., 0., 0.],
           [0., 1., 2., ..., 0., 0., 0.],
           ...,
           [0., 0., 0., ..., 2., 1., 0.],
           [0., 0., 0., ..., 1., 2., 1.],
           [0., 0., 0., ..., 0., 1., 2.]])
    Nr   r   r   r   rj   rR   rG   r   r         HrR   r   c                       e Zd ZdZy)r   aO  
    Sparse matrix with DIAgonal storage.

    This can be instantiated in several ways:
        dia_matrix(D)
            where D is a 2-D ndarray

        dia_matrix(S)
            with another sparse array or matrix S (equivalent to S.todia())

        dia_matrix((M, N), [dtype])
            to construct an empty matrix with shape (M, N),
            dtype is optional, defaulting to dtype='d'.

        dia_matrix((data, offsets), shape=(M, N))
            where the ``data[k,:]`` stores the diagonal entries for
            diagonal ``offsets[k]`` (See example below)

    Attributes
    ----------
    dtype : dtype
        Data type of the matrix
    shape : 2-tuple
        Shape of the matrix
    ndim : int
        Number of dimensions (this is always 2)
    nnz
    size
    data
        DIA format data array of the matrix
    offsets
        DIA format offset array of the matrix
    T

    Notes
    -----

    Sparse matrices can be used in arithmetic operations: they support
    addition, subtraction, multiplication, division, and matrix power.
    Sparse matrices with DIAgonal storage do not support slicing.

    Examples
    --------

    >>> import numpy as np
    >>> from scipy.sparse import dia_matrix
    >>> dia_matrix((3, 4), dtype=np.int8).toarray()
    array([[0, 0, 0, 0],
           [0, 0, 0, 0],
           [0, 0, 0, 0]], dtype=int8)

    >>> data = np.array([[1, 2, 3, 4]]).repeat(3, axis=0)
    >>> offsets = np.array([0, -1, 2])
    >>> dia_matrix((data, offsets), shape=(4, 4)).toarray()
    array([[1, 0, 3, 0],
           [1, 2, 0, 4],
           [0, 2, 3, 0],
           [0, 0, 3, 4]])

    >>> from scipy.sparse import dia_matrix
    >>> n = 10
    >>> ex = np.ones(n)
    >>> data = np.array([ex, 2 * ex, ex])
    >>> offsets = np.array([-1, 0, 1])
    >>> dia_matrix((data, offsets), shape=(n, n)).toarray()
    array([[2., 1., 0., ..., 0., 0., 0.],
           [1., 2., 1., ..., 0., 0., 0.],
           [0., 1., 2., ..., 0., 0., 0.],
           ...,
           [0., 0., 0., ..., 2., 1., 0.],
           [0., 0., 0., ..., 1., 2., 1.],
           [0., 0., 0., ..., 0., 1., 2.]])
    Nr   rj   rR   rG   r   r   \  r   rR   r   )"r   __docformat____all__numpyr0   
_lib._utilr   _matrixr	   _baser
   r   r   r   _datar   _sputilsr   r   r   r   r   r   r   r   _sparsetoolsr   r   r   r   r|   r   r   r   rj   rR   rG   <module>r      su    %
7  '  7 7    > =W, W,t%6I	7 IXI9 IrR   