
    \hr                        S r SSKJr  SSKJrJr  SSKJr  SSKr\	" S5      r
S rS r\=rr\=rrS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSNS jrS rS r S r!S r"S r#S r$S r%S r&S r'S  r(S! r)S" r*S# r+S$ r,S% r-S& r.S' r/S( r0S) r1S* r2S+ r3S, r4S- r5S. r6S/ r7S0 r8S1 r9SOS2 jr:SOS3 jr;SOS4 jr<S5 r=S6 r>S7 r?S8 r@S9 rAS: rBS; rCS< rDS= rES> rFS? rGS@ rHSA rISPSB jrJSPSC jrKSD rLSE rMSF rNSNSG jrOSH rPSI rQSJ rRSK rSSL rTSM rUg)QzEBasic tools for dense recursive polynomials in ``K[x]`` or ``K[X]``.     )igcd)monomial_minmonomial_div)monomial_keyNz-infc                 2    U (       d  UR                   $ U S   $ )z
Return leading coefficient of ``f``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import poly_LC

>>> poly_LC([], ZZ)
0
>>> poly_LC([ZZ(1), ZZ(2), ZZ(3)], ZZ)
1

r   zerofKs     N/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/densebasic.pypoly_LCr      s      vvt    c                 2    U (       d  UR                   $ U S   $ )z
Return trailing coefficient of ``f``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import poly_TC

>>> poly_TC([], ZZ)
0
>>> poly_TC([ZZ(1), ZZ(2), ZZ(3)], ZZ)
3

r   r
   s     r   poly_TCr   $   s      vvur   c                 X    U(       a  [        X5      n US-  nU(       a  M  [        X5      $ )z
Return the ground leading coefficient.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_ground_LC

>>> f = ZZ.map([[[1], [2, 3]]])

>>> dmp_ground_LC(f, 2, ZZ)
1

   )dmp_LCdup_LCr   ur   s      r   dmp_ground_LCr   =   ,      1L	Q ! !<r   c                 X    U(       a  [        X5      n US-  nU(       a  M  [        X5      $ )z
Return the ground trailing coefficient.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_ground_TC

>>> f = ZZ.map([[[1], [2, 3]]])

>>> dmp_ground_TC(f, 2, ZZ)
3

r   )dmp_TCdup_TCr   s      r   dmp_ground_TCr   T   r   r   c                 
   / nU(       a/  UR                  [        U 5      S-
  5        U S   US-
  pU(       a  M/  U (       d  UR                  S5        OUR                  [        U 5      S-
  5        [        U5      [        X5      4$ )z
Return the leading term ``c * x_1**n_1 ... x_k**n_k``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_true_LT

>>> f = ZZ.map([[4], [2, 0], [3, 0, 0]])

>>> dmp_true_LT(f, 1, ZZ)
((2, 0), 4)

r   r   )appendlentupler   )r   r   r   monoms       r   dmp_true_LTr$   k   sm      E
SVaZ tQU1 ! QSVaZ <%%r   c                 8    U (       d  [         $ [        U 5      S-
  $ )a  
Return the leading degree of ``f`` in ``K[x]``.

Note that the degree of 0 is negative infinity (``float('-inf')``).

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_degree

>>> f = ZZ.map([1, 2, 0, 3])

>>> dup_degree(f)
3

r   )ninfr!   r   s    r   
dup_degreer(      s    $ q6A:r   c                 J    [        X5      (       a  [        $ [        U 5      S-
  $ )aI  
Return the leading degree of ``f`` in ``x_0`` in ``K[X]``.

Note that the degree of 0 is negative infinity (``float('-inf')``).

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_degree

>>> dmp_degree([[[]]], 2)
-inf

>>> f = ZZ.map([[2], [1, 2, 3]])

>>> dmp_degree(f, 1)
1

r   )
dmp_zero_pr&   r!   r   r   s     r   
dmp_degreer,      s"    * !1vzr   c                 p   ^^^ TT:X  a  [        U T5      $ TS-
  TS-   smm[        UUU4S jU  5       5      $ )z4Recursive helper function for :func:`dmp_degree_in`.r   c              3   @   >#    U  H  n[        UTTT5      v   M     g 7fN)_rec_degree_in).0cijvs     r   	<genexpr>!_rec_degree_in.<locals>.<genexpr>   s     51a~aAq))1s   )r,   max)gr5   r3   r4   s    ```r   r0   r0      s;    Av!Qq5!a%DAq51555r   c                 |    U(       d  [        X5      $ US:  d  X:  a  [        SU< SU< 35      e[        XSU5      $ )a
  
Return the leading degree of ``f`` in ``x_j`` in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_degree_in

>>> f = ZZ.map([[2], [1, 2, 3]])

>>> dmp_degree_in(f, 0, 1)
1
>>> dmp_degree_in(f, 1, 1)
2

r   z
0 <= j <=  expected, got )r,   
IndexErrorr0   )r   r4   r   s      r   dmp_degree_inr=      s<    $ !1uAqABB!1%%r   c                     [        X2   [        X5      5      X2'   US:  a  US-
  US-   p!U  H  n[        XAX#5        M     gg)z-Recursive helper for :func:`dmp_degree_list`.r   r   N)r8   r,   _rec_degree_list)r9   r5   r3   degsr2   s        r   r?   r?      sF    $':a+,DG1u1ua!e1AQ1+  r   c                 L    [         /US-   -  n[        XSU5        [        U5      $ )z
Return a list of degrees of ``f`` in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_degree_list

>>> f = ZZ.map([[1], [1, 2, 3]])

>>> dmp_degree_list(f, 1)
(1, 2)

r   r   )r&   r?   r"   )r   r   r@   s      r   dmp_degree_listrB      s)      61q5>DQ1d#;r   c                 b    U (       a
  U S   (       a  U $ SnU  H  nU(       a    O	US-  nM     XS $ )z
Remove leading zeros from ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.densebasic import dup_strip

>>> dup_strip([0, 0, 1, 2, 3, 0])
[1, 2, 3, 0]

r   r   N )r   r3   cfs      r   	dup_striprF      s;     !	AFA	  R5Lr   c                     U(       d  [        U 5      $ [        X5      (       a  U $ SUS-
  p2U  H  n[        XC5      (       d    O	US-  nM     U[        U 5      :X  a  [        U5      $ XS $ )z
Remove leading zeros from ``f`` in ``K[X]``.

Examples
========

>>> from sympy.polys.densebasic import dmp_strip

>>> dmp_strip([[], [0, 1, 2], [1]], 1)
[[0, 1, 2], [1]]

r   r   N)rF   r*   r!   dmp_zero)r   r   r3   r5   r2   s        r   	dmp_striprI     sm     |!a!eq!FA	  	CF{{ur   c                    [        U[        5      (       d?  Ub6  UR                  U5      (       d   [        U< SU < SUR                  < 35      eUS-
  1$ U(       d  U1$ [        5       nU H  nU[        XUS-   U5      -  nM     U$ )z*Recursive helper for :func:`dmp_validate`.z in z in not of type r   )
isinstancelistof_type	TypeErrordtypeset_rec_validate)r   r9   r3   r   levelsr2   s         r   rQ   rQ   ;  sz    a=1Aq!''JKKAws
AmA!a%33F  r   c           	          U(       d  [        U 5      $ US-
  n[        U  Vs/ s H  n[        X25      PM     snU5      $ s  snf )z(Recursive helper for :func:`_rec_strip`.r   )rF   rI   
_rec_strip)r9   r5   wr2   s       r   rT   rT   M  s<    |	AA4Az!'4a884s   >c                 z    [        X SU5      nUR                  5       nU(       d  [        X5      U4$ [        S5      e)aH  
Return the number of levels in ``f`` and recursively strip it.

Examples
========

>>> from sympy.polys.densebasic import dmp_validate

>>> dmp_validate([[], [0, 1, 2], [1]])
([[1, 2], [1]], 1)

>>> dmp_validate([[1], 1])
Traceback (most recent call last):
...
ValueError: invalid data structure for a multivariate polynomial

r   z4invalid data structure for a multivariate polynomial)rQ   poprT   
ValueError)r   r   rR   r   s       r   dmp_validaterY   W  sB    $ 1A&F

A!""BD 	Dr   c                 <    [        [        [        U 5      5      5      $ )z
Compute ``x**n * f(1/x)``, i.e.: reverse ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_reverse

>>> f = ZZ.map([1, 2, 3, 0])

>>> dup_reverse(f)
[3, 2, 1]

)rF   rL   reversedr'   s    r   dup_reverser\   t  s      T(1+&''r   c                     [        U 5      $ )z
Create a new copy of a polynomial ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_copy

>>> f = ZZ.map([1, 2, 3, 0])

>>> dup_copy([1, 2, 3, 0])
[1, 2, 3, 0]

)rL   r'   s    r   dup_copyr^     s      7Nr   c                 r    U(       d  [        U 5      $ US-
  nU  Vs/ s H  n[        X25      PM     sn$ s  snf )z
Create a new copy of a polynomial ``f`` in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_copy

>>> f = ZZ.map([[1], [1, 2]])

>>> dmp_copy(f, 1)
[[1], [1, 2]]

r   )rL   dmp_copy)r   r   r5   r2   s       r   r`   r`     s5      Aw	AA%&(QXa^Q(((s   4c                     [        U 5      $ )a
  
Convert `f` into a tuple.

This is needed for hashing. This is similar to dup_copy().

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_copy

>>> f = ZZ.map([1, 2, 3, 0])

>>> dup_copy([1, 2, 3, 0])
[1, 2, 3, 0]

r"   r'   s    r   dup_to_tuplerc     s    $ 8Or   c                 \   ^ U(       d  [        U 5      $ US-
  m[        U4S jU  5       5      $ )a  
Convert `f` into a nested tuple of tuples.

This is needed for hashing.  This is similar to dmp_copy().

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_to_tuple

>>> f = ZZ.map([[1], [1, 2]])

>>> dmp_to_tuple(f, 1)
((1,), (1, 2))

r   c              3   <   >#    U  H  n[        UT5      v   M     g 7fr/   )dmp_to_tuple)r1   r2   r5   s     r   r6   dmp_to_tuple.<locals>.<genexpr>  s     /Qa##Qs   rb   )r   r   r5   s     @r   rf   rf     s+    $ Qx	AA/Q///r   c                 `    [        U  Vs/ s H  o!R                  U5      PM     sn5      $ s  snf )z
Normalize univariate polynomial in the given domain.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_normal

>>> dup_normal([0, 1, 2, 3], ZZ)
[1, 2, 3]

)rF   normalr   r   r2   s      r   
dup_normalrk     s'     A/Aqxx{A/00/   +c           
          U(       d  [        X5      $ US-
  n[        U  Vs/ s H  n[        XCU5      PM     snU5      $ s  snf )z
Normalize a multivariate polynomial in the given domain.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_normal

>>> dmp_normal([[], [0, 1, 2]], 1, ZZ)
[[1, 2]]

r   )rk   rI   
dmp_normalr   r   r   r5   r2   s        r   rn   rn     sA     !	AAA7Aqz!*A7;;7   ?c           	      t    Ub  X:X  a  U $ [        U  Vs/ s H  o2R                  X15      PM     sn5      $ s  snf )a^  
Convert the ground domain of ``f`` from ``K0`` to ``K1``.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_convert

>>> R, x = ring("x", ZZ)

>>> dup_convert([R(1), R(2)], R.to_domain(), ZZ)
[1, 2]
>>> dup_convert([ZZ(1), ZZ(2)], ZZ, R.to_domain())
[1, 2]

)rF   convert)r   K0K1r2   s       r   dup_convertru     s6    & 
~"(a9a::a,a9::9s   5c                     U(       d  [        XU5      $ Ub  X#:X  a  U $ US-
  n[        U  Vs/ s H  n[        XTX#5      PM     snU5      $ s  snf )at  
Convert the ground domain of ``f`` from ``K0`` to ``K1``.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_convert

>>> R, x = ring("x", ZZ)

>>> dmp_convert([[R(1)], [R(2)]], 1, R.to_domain(), ZZ)
[[1], [2]]
>>> dmp_convert([[ZZ(1)], [ZZ(2)]], 1, ZZ, R.to_domain())
[[1], [2]]

r   )ru   rI   dmp_convert)r   r   rs   rt   r5   r2   s         r   rw   rw      sQ    & 1"%%	~"(	AA!=!Q{10!=qAA=s   A
c                 `    [        U  Vs/ s H  o!R                  U5      PM     sn5      $ s  snf )a   
Convert the ground domain of ``f`` from SymPy to ``K``.

Examples
========

>>> from sympy import S
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_from_sympy

>>> dup_from_sympy([S(1), S(2)], ZZ) == [ZZ(1), ZZ(2)]
True

)rF   
from_sympyrj   s      r   dup_from_sympyrz   =  s'     31||A3443rl   c           
          U(       d  [        X5      $ US-
  n[        U  Vs/ s H  n[        XCU5      PM     snU5      $ s  snf )a  
Convert the ground domain of ``f`` from SymPy to ``K``.

Examples
========

>>> from sympy import S
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_from_sympy

>>> dmp_from_sympy([[S(1)], [S(2)]], 1, ZZ) == [[ZZ(1)], [ZZ(2)]]
True

r   )rz   rI   dmp_from_sympyro   s        r   r|   r|   O  sA     a##	AA;1~aA.;Q??;rp   c                     US:  a  [        SU-  5      eU[        U 5      :  a  UR                  $ U [        U 5      U-
     $ )z
Return the ``n``-th coefficient of ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_nth

>>> f = ZZ.map([1, 2, 3])

>>> dup_nth(f, 0, ZZ)
3
>>> dup_nth(f, 4, ZZ)
0

r    'n' must be non-negative, got %i)r<   r!   r	   r(   )r   nr   s      r   dup_nthr   f  sD    $ 	1u;a?@@	
c!fvvA"##r   c                     US:  a  [        SU-  5      eU[        U 5      :  a  [        US-
  5      $ U [        X5      U-
     $ )z
Return the ``n``-th coefficient of ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_nth

>>> f = ZZ.map([[1], [2], [3]])

>>> dmp_nth(f, 0, 1, ZZ)
[3]
>>> dmp_nth(f, 4, 1, ZZ)
[]

r   r~   r   )r<   r!   rH   r,   )r   r   r   r   s       r   dmp_nthr     sJ    $ 	1u;a?@@	
c!fAA!A%&&r   c                     UnU HV  nUS:  a  [        SU-  5      eU[        U 5      :  a  UR                  s  $ [        X5      nU[        :X  a  SnXU-
     US-
  p@MX     U $ )z
Return the ground ``n``-th coefficient of ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_ground_nth

>>> f = ZZ.map([[1], [2, 3]])

>>> dmp_ground_nth(f, (0, 1), 1, ZZ)
2

r   z `n` must be non-negative, got %ir   r   )r<   r!   r	   r,   r&   )r   Nr   r   r5   r   ds          r   dmp_ground_nthr     sm      	
Aq5?!CDD#a&[66M1 ADyU8QUq  Hr   c                 d    U(       a#  [        U 5      S:w  a  gU S   n US-  nU(       a  M#  U (       + $ )z
Return ``True`` if ``f`` is zero in ``K[X]``.

Examples
========

>>> from sympy.polys.densebasic import dmp_zero_p

>>> dmp_zero_p([[[[[]]]]], 4)
True
>>> dmp_zero_p([[[[[1]]]]], 4)
False

r   Fr   )r!   r+   s     r   r*   r*     s7     q6Q;aD	Q ! 5Lr   c                 4    / n[        U 5       H  nU/nM     U$ )z~
Return a multivariate zero.

Examples
========

>>> from sympy.polys.densebasic import dmp_zero

>>> dmp_zero(4)
[[[[[]]]]]

)range)r   rr3   s      r   rH   rH     s%     	A1XC  Hr   c                 .    [        XR                  U5      $ )z
Return ``True`` if ``f`` is one in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_one_p

>>> dmp_one_p([[[ZZ(1)]]], 2, ZZ)
True

)dmp_ground_poner   s      r   	dmp_one_pr     s     55!$$r   c                 .    [        UR                  U 5      $ )z
Return a multivariate one over ``K``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_one

>>> dmp_one(2, ZZ)
[[[1]]]

)
dmp_groundr   )r   r   s     r   dmp_oner     s     aeeQr   c                     Ub  U(       d  [        X5      $ U(       a#  [        U 5      S:w  a  gU S   n US-  nU(       a  M#  Uc  [        U 5      S:*  $ X/:H  $ )z
Return True if ``f`` is constant in ``K[X]``.

Examples
========

>>> from sympy.polys.densebasic import dmp_ground_p

>>> dmp_ground_p([[[3]]], 3, 2)
True
>>> dmp_ground_p([[[4]]], None, 2)
True

r   Fr   )r*   r!   )r   r2   r   s      r   r   r   
  s^     	}Q!
q6Q;aD	Q	 ! 	y1v{Cxr   c                 Z    U (       d  [        U5      $ [        US-   5       H  nU /n M     U $ )z
Return a multivariate constant.

Examples
========

>>> from sympy.polys.densebasic import dmp_ground

>>> dmp_ground(3, 5)
[[[[[[3]]]]]]
>>> dmp_ground(1, -1)
1

r   )rH   r   )r2   r   r3   s      r   r   r   (  s1     {1q5\C  Hr   c                     U (       d  / $ US:  a  UR                   /U -  $ [        U 5       Vs/ s H  n[        U5      PM     sn$ s  snf )z
Return a list of multivariate zeros.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_zeros

>>> dmp_zeros(3, 2, ZZ)
[[[[]]], [[[]]], [[[]]]]
>>> dmp_zeros(3, -1, ZZ)
[0, 0, 0]

r   )r	   r   rH   )r   r   r   r3   s       r   	dmp_zerosr   @  sC      	1uxz&+Ah0h!h000s   Ac                     U(       d  / $ US:  a  U /U-  $ [        U5       Vs/ s H  n[        X5      PM     sn$ s  snf )z
Return a list of multivariate constants.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_grounds

>>> dmp_grounds(ZZ(4), 3, 2)
[[[[4]]], [[[4]]], [[[4]]]]
>>> dmp_grounds(ZZ(4), 3, -1)
[4, 4, 4]

r   )r   r   )r2   r   r   r3   s       r   dmp_groundsr   Y  s?      	1us1u+0858aA!8555s   ;c                 8    UR                  [        XU5      5      $ )a  
Return ``True`` if ``LC(f)`` is negative.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_negative_p

>>> dmp_negative_p([[ZZ(1)], [-ZZ(1)]], 1, ZZ)
False
>>> dmp_negative_p([[-ZZ(1)], [ZZ(1)]], 1, ZZ)
True

)is_negativer   r   s      r   dmp_negative_pr   r        ==qQ/00r   c                 8    UR                  [        XU5      5      $ )a  
Return ``True`` if ``LC(f)`` is positive.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_positive_p

>>> dmp_positive_p([[ZZ(1)], [-ZZ(1)]], 1, ZZ)
True
>>> dmp_positive_p([[-ZZ(1)], [ZZ(1)]], 1, ZZ)
False

)is_positiver   r   s      r   dmp_positive_pr     r   r   c                    U (       d  / $ [        U R                  5       5      / p2[        U[        5      (       a?  [	        USS5       H-  nUR                  U R                  XAR                  5      5        M/     ODUu  n[	        USS5       H/  nUR                  U R                  U4UR                  5      5        M1     [        U5      $ )a  
Create a ``K[x]`` polynomial from a ``dict``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_from_dict

>>> dup_from_dict({(0,): ZZ(7), (2,): ZZ(5), (4,): ZZ(1)}, ZZ)
[1, 0, 5, 0, 7]
>>> dup_from_dict({}, ZZ)
[]

r   )	r8   keysrK   intr   r    getr	   rF   r   r   r   hks        r   dup_from_dictr     s      	qvvx="q!Sq"b!AHHQUU1ff%& " q"b!AHHQUUA4() " Q<r   c                     U (       d  / $ [        U R                  5       5      / p2[        USS5       H-  nUR                  U R	                  XAR
                  5      5        M/     [        U5      $ )z
Create a ``K[x]`` polynomial from a raw ``dict``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_from_raw_dict

>>> dup_from_raw_dict({0: ZZ(7), 2: ZZ(5), 4: ZZ(1)}, ZZ)
[1, 0, 5, 0, 7]

r   )r8   r   r   r    r   r	   rF   r   s        r   dup_from_raw_dictr     sU     	qvvx="q1b"	q&&!"  Q<r   c                    U(       d  [        X5      $ U (       d  [        U5      $ 0 nU R                  5        H!  u  pEUS   USS pvXc;   a	  XSU   U'   M  Xu0X6'   M#     [        UR	                  5       5      US-
  / pn[        USS5       HN  nUR                  U5      nUb  U
R                  [        XYU5      5        M4  U
R                  [        U	5      5        MP     [        X5      $ )a  
Create a ``K[X]`` polynomial from a ``dict``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_from_dict

>>> dmp_from_dict({(0, 0): ZZ(3), (0, 1): ZZ(2), (2, 1): ZZ(1)}, 1, ZZ)
[[1, 0], [], [2, 3]]
>>> dmp_from_dict({}, 0, ZZ)
[]

r   r   Nr   )
r   rH   itemsr8   r   r   r   r    dmp_from_dictrI   )r   r   r   coeffsr#   coeffheadtailr   r5   r   r   s               r   r   r     s      Q""{F	1XuQRyd>!&4L!?FL " &++- !a%!A1b"

1HH]5Q/0HHXa[!  Q?r   c                     U (       d  U(       a  SUR                   0$ [        U 5      S-
  0 pC[        SUS-   5       H  nXU-
     (       d  M  XU-
     XE4'   M     U$ )z
Convert ``K[x]`` polynomial to a ``dict``.

Examples
========

>>> from sympy.polys.densebasic import dup_to_dict

>>> dup_to_dict([1, 0, 5, 0, 7])
{(0,): 7, (2,): 5, (4,): 1}
>>> dup_to_dict([])
{}

r   r   r   r	   r!   r   r   r   r	   r   resultr   s         r   dup_to_dictr     s[     aff~A
Bv1a!e_U88U8F4L  Mr   c                     U (       d  U(       a  SUR                   0$ [        U 5      S-
  0 pC[        SUS-   5       H  nXU-
     (       d  M  XU-
     XE'   M     U$ )z
Convert a ``K[x]`` polynomial to a raw ``dict``.

Examples
========

>>> from sympy.polys.densebasic import dup_to_raw_dict

>>> dup_to_raw_dict([1, 0, 5, 0, 7])
{0: 7, 2: 5, 4: 1}

r   r   r   r   s         r   dup_to_raw_dictr     sY     166{A
Bv1a!e_U88a%FI  Mr   c                 H   U(       d
  [        XUS9$ [        X5      (       a  U(       a  SUS-   -  UR                  0$ [        X5      US-
  0 penU[        :X  a  Sn[        SUS-   5       H5  n[        XU-
     U5      nUR                  5        H  u  pXU4U	-   '   M     M7     U$ )z
Convert a ``K[X]`` polynomial to a ``dict````.

Examples
========

>>> from sympy.polys.densebasic import dmp_to_dict

>>> dmp_to_dict([[1, 0], [], [2, 3]], 1)
{(0, 0): 3, (0, 1): 2, (2, 1): 1}
>>> dmp_to_dict([], 0)
{}

r   r   r   r   r   )r   r*   r	   r,   r&   r   dmp_to_dictr   )r   r   r   r	   r   r5   r   r   r   expr   s              r   r   r   2  s     1d++!Da!eaff%%a#QUB&ADy1a!e_a%!$'')JC!&A4#: $  Mr   c                     US:  d  US:  d
  X:  d  X#:  a  [        SU-  5      eX:X  a  U $ [        X5      0 peUR                  5        H(  u  pxUXgSU Xr   4-   XqS-   U -   Xq   4-   XrS-   S -   '   M*     [        XcU5      $ )ai  
Transform ``K[..x_i..x_j..]`` to ``K[..x_j..x_i..]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_swap

>>> f = ZZ.map([[[2], [1, 0]], []])

>>> dmp_swap(f, 0, 1, 2, ZZ)
[[[2], []], [[1, 0], []]]
>>> dmp_swap(f, 1, 2, 2, ZZ)
[[[1], [2, 0]], [[]]]
>>> dmp_swap(f, 0, 2, 2, ZZ)
[[[1, 0]], [[2, 0], []]]

r   z0 <= i < j <= %s expectedNr   )r<   r   r   r   )	r   r3   r4   r   r   FHr   r   s	            r   dmp_swapr   U  s    ( 	1uA!%4q899	
qbqggi
 &+ 	
bq'SVI

!eA,6)a%&k" 	#  
 q!!r   c                     [        X5      0 pTUR                  5        H9  u  pgS/[        U5      -  n[        Xa5       H	  u  pXU
'   M     Xu[	        U5      '   M;     [        XRU5      $ )aH  
Return a polynomial in ``K[x_{P(1)},..,x_{P(n)}]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_permute

>>> f = ZZ.map([[[2], [1, 0]], []])

>>> dmp_permute(f, [1, 0, 2], 2, ZZ)
[[[2], []], [[1, 0], []]]
>>> dmp_permute(f, [1, 2, 0], 2, ZZ)
[[[1], []], [[2, 0], []]]

r   )r   r   r!   zipr"   r   )r   Pr   r   r   r   r   r   new_expeps              r   dmp_permuter   x  se    $ qbqggi
#c#h,KDAAJ   "%.   q!!r   c                 p    [        U [        5      (       d  [        X5      $ [        U5       H  nU /n M     U $ )z
Return a multivariate value nested ``l``-levels.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_nest

>>> dmp_nest([[ZZ(1)]], 2, ZZ)
[[[[1]]]]

)rK   rL   r   r   )r   lr   r3   s       r   dmp_nestr     s8     a!1XC  Hr   c           	          U(       d  U $ U(       d3  U (       d  [        U5      $ US-
  nU  Vs/ s H  n[        XT5      PM     sn$ US-
  nU  Vs/ s H  n[        XQXc5      PM     sn$ s  snf s  snf )z
Return a multivariate polynomial raised ``l``-levels.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_raise

>>> f = ZZ.map([[], [1, 2]])

>>> dmp_raise(f, 2, 1, ZZ)
[[[[]]], [[[1]], [[2]]]]

r   )rH   r   	dmp_raise)r   r   r   r   r   r2   r5   s          r   r   r     sn      A;E+,.1aA!1..	AA,-/AqYqQ"A//	 / 0s   A&A+c                     [        U 5      S::  a  SU 4$ Sn[        [        U 5      5       H)  nX* S-
     (       d  M  [        X#5      nUS:X  d  M%  SU 4s  $    X SSU2   4$ )z
Map ``x**m`` to ``y`` in a polynomial in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_deflate

>>> f = ZZ.map([1, 0, 0, 1, 0, 0, 1])

>>> dup_deflate(f, ZZ)
(3, [1, 1, 1])

r   r   N)r(   r   r!   r   )r   r   r9   r3   s       r   dup_deflater     si      !}!t	A3q6]ayJ6a4K  !f9r   c                    [        X5      (       a
  SUS-   -  U 4$ [        X5      nS/US-   -  nUR                  5        H'  n[        U5       H  u  pg[	        XF   U5      XF'   M     M)     [        U5       H  u  phU(       a  M  SXF'   M     [        U5      n[        S U 5       5      (       a  X@4$ 0 n	UR                  5        H3  u  p[        X5       VVs/ s H	  u  pX-  PM     nnnX[        U5      '   M5     U[        XU5      4$ s  snnf )a  
Map ``x_i**m_i`` to ``y_i`` in a polynomial in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_deflate

>>> f = ZZ.map([[1, 0, 0, 2], [], [3, 0, 0, 4]])

>>> dmp_deflate(f, 1, ZZ)
((2, 3), [[1, 2], [3, 4]])

)r   r   r   c              3   *   #    U  H	  oS :H  v   M     g7fr   NrD   r1   bs     r   r6   dmp_deflate.<locals>.<genexpr>       
1a61   )
r*   r   r   	enumerater   r"   allr   r   r   )r   r   r   r   BMr3   mr   r   Ar   ar   s                 r   dmp_deflater     s     !QU|QAA	
QUAVVXaLDAa=AD !  !qAD  	aA

1
t
AGGI!$Q,af,%(  mA!$$$ -s   Dc           
      2   SnU  Hh  n[        U5      S::  a  SU 4s  $ Sn[        [        U5      5       H+  nX5* S-
     (       d  M  [        XE5      nUS:X  d  M%  SU 4s  s  $    [        X$5      nMj     U[	        U  Vs/ s H
  o3SSU2   PM     sn5      4$ s  snf )a(  
Map ``x**m`` to ``y`` in a set of polynomials in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_multi_deflate

>>> f = ZZ.map([1, 0, 2, 0, 3])
>>> g = ZZ.map([4, 0, 0])

>>> dup_multi_deflate((f, g), ZZ)
(2, ([1, 2, 3], [4, 0]))

r   r   N)r(   r   r!   r   r"   )polysr   Gr   r9   r3   s         r   dup_multi_deflater     s    " 	
Aa=Ae8Os1vAR!V9Q
AAv%x  J " ee-e!fe-...-s   ;B
c                    U(       d  [        X5      u  p4U4U4$ / S/US-   -  peU  Hj  n[        Xq5      n[        Xq5      (       d;  UR                  5        H'  n[	        U5       H  u  p[        Xi   U
5      Xi'   M     M)     UR                  U5        Ml     [	        U5       H  u  pU(       a  M  SXi'   M     [        U5      n[        S U 5       5      (       a  X`4$ / nU Hg  n0 nUR                  5        H3  u  p[        X5       VVs/ s H	  u  pX-  PM     nnnX[        U5      '   M5     UR                  [        XU5      5        Mi     U[        U5      4$ s  snnf )a{  
Map ``x_i**m_i`` to ``y_i`` in a set of polynomials in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_multi_deflate

>>> f = ZZ.map([[1, 0, 0, 2], [], [3, 0, 0, 4]])
>>> g = ZZ.map([[1, 0, 2], [], [3, 0, 4]])

>>> dmp_multi_deflate((f, g), 1, ZZ)
((2, 1), ([[1, 0, 0, 2], [3, 0, 0, 4]], [[1, 0, 2], [3, 0, 4]]))

r   r   c              3   *   #    U  H	  oS :H  v   M     g7fr   rD   r   s     r   r6   $dmp_multi_deflate.<locals>.<genexpr>i  r   r   )r   r   r*   r   r   r   r    r"   r   r   r   r   )r   r   r   r   r   r   r   r   r   r3   r   r   r   r   r   r   r   s                    r   dmp_multi_deflater   B  sB   "  *tQwsAE{q!VVX%aLDAa=AD )  	
  !qAD  	aA

1
x
A	HA%(Y0YTQ!&YA0eAhK " 	
qQ'(  eAh; 1s   E
c                     US::  a  [        SU-  5      eUS:X  d  U (       d  U $ U S   /nU SS  H6  nUR                  UR                  /US-
  -  5        UR                  U5        M8     U$ )z
Map ``y`` to ``x**m`` in a polynomial in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_inflate

>>> f = ZZ.map([1, 1, 1])

>>> dup_inflate(f, 3, ZZ)
[1, 0, 0, 1, 0, 0, 1]

r   z'm' must be positive, got %sr   N)r<   extendr	   r    )r   r   r   r   r   s        r   dup_inflater   z  ss      	Av7!;<<AvQdVF12qvvhA&'e  Mr   c           
      \   U(       d  [        XU   U5      $ X   S::  a  [        SX   -  5      eUS-
  US-   peU  Vs/ s H  n[        XqXVU5      PM     n nU S   /nU SS  HC  n	[        SX   5       H  n
UR	                  [        U5      5        M     UR	                  U	5        ME     U$ s  snf )z)Recursive helper for :func:`dmp_inflate`.r   z!all M[i] must be positive, got %sr   N)r   r<   _rec_inflater   r    rH   )r9   r   r5   r3   r   rU   r4   r2   r   r   _s              r   r   r     s    1dA&&tqy<qtCDDq5!a%q/02q!,qQ1
%qA2dVF12q!$AMM(1+&   	e	  M 	3s   B)c                 |    U(       d  [        XS   U5      $ [        S U 5       5      (       a  U $ [        XUSU5      $ )a  
Map ``y_i`` to ``x_i**k_i`` in a polynomial in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_inflate

>>> f = ZZ.map([[1, 2], [3, 4]])

>>> dmp_inflate(f, (2, 3), 1, ZZ)
[[1, 0, 0, 2], [], [3, 0, 0, 4]]

r   c              3   *   #    U  H	  oS :H  v   M     g7fr   rD   )r1   r   s     r   r6   dmp_inflate.<locals>.<genexpr>  r   r   )r   r   r   )r   r   r   r   s       r   dmp_inflater     s?      1dA&&

1
A!Q**r   c                    U(       a  [        U SU5      (       a  / X4$ / [        X5      pC[        SUS-   5       H7  nUR                  5        H  nXe   (       d  M    M$     UR	                  U5        M9     U(       d  / X4$ 0 n UR                  5        H1  u  pg[        U5      n[        U5       H  nXe	 M     Xp[        U5      '   M3     U[        U5      -  nU[        XU5      U4$ )a3  
Exclude useless levels from ``f``.

Return the levels excluded, the new excluded ``f``, and the new ``u``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_exclude

>>> f = ZZ.map([[[1]], [[1], [2]]])

>>> dmp_exclude(f, 2, ZZ)
([2], [[1], [1, 2]], 1)

Nr   r   )r   r   r   r   r    r   rL   r[   r"   r!   r   )r   r   r   Jr   r4   r#   r   s           r   dmp_excluder     s    $ Qa((1x{1 q1a!e_VVXExx  HHQK  1x
A	U!A   %, " QKAmA!$a''r   c                     U(       d  U $ [        X5      0 pUR                  5        H8  u  pV[        U5      nU H  nUR                  US5        M     X`[	        U5      '   M:     U[        U5      -  n[        XU5      $ )z
Include useless levels in ``f``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_include

>>> f = ZZ.map([[1], [1, 2]])

>>> dmp_include(f, [2], 1, ZZ)
[[[1]], [[1], [2]]]

r   )r   r   rL   insertr"   r!   r   )r   r   r   r   r   r#   r   r4   s           r   dmp_includer     st      qbq	UALLA   %, " QKAq!!r   c                 $   [        X5      0 p@UR                  S-
  nU R                  5        HC  u  pgUR                  5       nUR                  5        H  u  pU(       a  XX-   '   M  XXh-   '   M     ME     X-   S-   n
[	        XJUR
                  5      U
4$ )a  
Convert ``f`` from ``K[X][Y]`` to ``K[X,Y]``.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_inject

>>> R, x,y = ring("x,y", ZZ)

>>> dmp_inject([R(1), x + 2], 0, R.to_domain())
([[[1]], [[1], [2]]], 2)
>>> dmp_inject([R(1), x + 2], 0, R.to_domain(), front=True)
([[[1]], [[1, 2]]], 2)

r   )r   ngensr   to_dictr   dom)r   r   r   frontr   r5   f_monomr9   g_monomr2   rU   s              r   
dmp_injectr     s    & qbq	!Aggi
IIK'')JG'('#$'('#$	 $   	
	Aquu%q((r   c                 D   [        X5      0 p@UR                  nXR                  -
  S-   nU R                  5        H2  u  pxU(       a	  USU XuS pO
Xu* S USU*  pX;   a	  XU
   U	'   M-  X0XJ'   M4     UR                  5        H  u  pxU" U5      XG'   M     [        XFS-
  U5      $ )z
Convert ``f`` from ``K[X,Y]`` to ``K[X][Y]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_eject

>>> dmp_eject([[[1]], [[1], [2]]], 2, ZZ['x', 'y'])
[1, x + 2]

r   N)r   r   r   r   )r   r   r   r   r   r   r5   r#   r2   r   r   s              r   	dmp_ejectr   >  s     qbq	A	GGaAGGI$Ray%)W$RSz51":W<"#gJw!AJ  GGIQ4  E1%%r   c                     [        X5      (       d  U (       d  SU 4$ Sn[        U 5       H  nU(       d  US-  nM    O   X SU*  4$ )z
Remove GCD of terms from ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_terms_gcd

>>> f = ZZ.map([1, 0, 1, 0, 0])

>>> dup_terms_gcd(f, ZZ)
(2, [1, 0, 1])

r   r   N)r   r[   )r   r   r3   r2   s       r   dup_terms_gcdr   b  sL      a||1!t	Aa[FA	  !f9r   c                 L   [        XU5      (       d  [        X5      (       a
  SUS-   -  U 4$ [        X5      n[        [	        UR                  5       5      6 n[        S U 5       5      (       a  X@4$ 0 n UR                  5        H  u  pVX`[        XT5      '   M     U[        XU5      4$ )a   
Remove GCD of terms from ``f`` in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_terms_gcd

>>> f = ZZ.map([[1, 0], [1, 0, 0], [], []])

>>> dmp_terms_gcd(f, 1, ZZ)
((2, 1), [[1], [1, 0]])

r   r   c              3   *   #    U  H	  oS :H  v   M     g7f)r   NrD   )r1   r9   s     r   r6    dmp_terms_gcd.<locals>.<genexpr>  r   r   )
r   r*   r   r   rL   r   r   r   r   r   )r   r   r   r   r   r#   r   s          r   dmp_terms_gcdr    s      Q1A!1!1QU|QAAd1668n%A

1
t
A	$),u
 ! " mA!$$$r   c           
         [        X5      / pCU(       d8  [        U 5       H'  u  pVU(       d  M  UR                  X#U-
  4-   U45        M)     U$ US-
  n[        U 5       H&  u  pVUR                  [	        XgX#U-
  4-   5      5        M(     U$ )z,Recursive helper for :func:`dmp_list_terms`.r   )r,   r   r    r   _rec_list_terms)r9   r5   r#   r   termsr3   r2   rU   s           r   r  r    s    !uaLDALL%q5(*A./	 ! L EaLDALLuAx/?@A ! Lr   c                     S n[        XS5      nU(       d  SUS-   -  UR                  4/$ Uc  U$ U" U[        U5      5      $ )a  
List all non-zero terms from ``f`` in the given order ``order``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_list_terms

>>> f = ZZ.map([[1, 1], [2, 3]])

>>> dmp_list_terms(f, 1, ZZ)
[((1, 1), 1), ((1, 0), 1), ((0, 1), 2), ((0, 0), 3)]
>>> dmp_list_terms(f, 1, ZZ, order='grevlex')
[((1, 1), 1), ((1, 0), 1), ((0, 1), 2), ((0, 0), 3)]

c                 "   ^ [        U U4S jSS9$ )Nc                    > T" U S   5      $ )Nr   rD   )termOs    r   <lambda>.dmp_list_terms.<locals>.sort.<locals>.<lambda>  s    aQjr   T)keyreverse)sorted)r  r  s    `r   sortdmp_list_terms.<locals>.sort  s    e!8$GGr   rD   r   r   )r  r	   r   )r   r   r   orderr  r  s         r   dmp_list_termsr    sO    $H A"%Eq1uqvv&''}E<.//r   c                    [        U 5      [        U5      peXV:w  a0  XV:  a  UR                  /XV-
  -  U-   nOUR                  /Xe-
  -  U -   n / n[        X5       H  u  pUR                  U" X/UQ76 5        M     [	        U5      $ )a  
Apply ``h`` to pairs of coefficients of ``f`` and ``g``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_apply_pairs

>>> h = lambda x, y, z: 2*x + y - z

>>> dup_apply_pairs([1, 2, 3], [3, 2, 1], h, (1,), ZZ)
[4, 5, 6]

)r!   r	   r   r    rF   )
r   r9   r   argsr   r   r   r   r   r   s
             r   dup_apply_pairsr    s      q63q6qv5!% 1$A!% 1$AFA	antn%  Vr   c                 2   U(       d  [        XX#U5      $ [        U 5      [        U5      US-
  pnXg:w  a(  Xg:  a  [        Xg-
  X5      U-   nO[        Xv-
  X5      U -   n / n	[        X5       H!  u  pU	R	                  [        XX#X5      5        M#     [        X5      $ )a#  
Apply ``h`` to pairs of coefficients of ``f`` and ``g``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_apply_pairs

>>> h = lambda x, y, z: 2*x + y - z

>>> dmp_apply_pairs([[1], [2, 3]], [[3], [2, 1]], h, (1,), 1, ZZ)
[[4], [5, 6]]

r   )r  r!   r   r   r    dmp_apply_pairsrI   )r   r9   r   r  r   r   r   r   r5   r   r   r   s               r   r  r    s      qQa00!fc!fa!e!Av5!%&*A!%&*AFA	oaAQ:;  Vr   c                    [        U 5      nXA:  a  XA-
  nOSnXB:  a  XB-
  nOSnXU n U (       a@  U S   UR                  :X  a-  U R                  S5        U (       a  U S   UR                  :X  a  M-  U (       d  / $ XR                  /U-  -   $ )z=Take a continuous subsequence of terms of ``f`` in ``K[x]``. r   )r!   r	   rW   )r   r   r   r   r   r   r   s          r   	dup_slicer    s    AAvEvE	AA
!	a ! 	FF8A:~r   c                     [        XUSX45      $ )z=Take a continuous subsequence of terms of ``f`` in ``K[X]``. r   )dmp_slice_in)r   r   r   r   r   s        r   	dmp_slicer  /  s    aA))r   c                 8   US:  d  X4:  a  [        SU< SU< SU< 35      eU(       d  [        XX%5      $ [        X5      0 p`U R                  5        H:  u  pxXs   n	X:  d  X:  a  USU S-   XsS-   S -   nXv;   a  Xg==   U-  ss'   M6  XU'   M<     [	        XdU5      $ )zHTake a continuous subsequence of terms of ``f`` in ``x_j`` in ``K[X]``. r   -z <= j < r;   Nr   r   )r<   r  r   r   r   )
r   r   r   r4   r   r   r9   r#   r   r   s
             r   r  r  4  s    1uQ1EFFq$$qbq	H5AF"1I$uUV}4E:HHeH " q!!r   c           	         [        SU S-   5       Vs/ s H'  oCR                  [        R                  " X5      5      PM)     nnUS   (       d4  UR                  [        R                  " X5      5      US'   US   (       d  M4  U$ s  snf )z
Return a polynomial of degree ``n`` with coefficients in ``[a, b]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_random

>>> dup_random(3, -10, 10, ZZ) #doctest: +SKIP
[-2, -8, 9, -4]

r   r   )r   rr   randomrandint)r   r   r   r   r   r   s         r   
dup_randomr%  L  sl     49AE?D?a))FNN1(
)?ADdyy-.! dd H 	Es   .Br/   )NF)F)V__doc__
sympy.corer   sympy.polys.monomialsr   r   sympy.polys.orderingsr   r#  floatr&   r   r   r   r   r   r   r   r   r$   r(   r,   r0   r=   r?   rB   rF   rI   rQ   rT   rY   r\   r^   r`   rc   rf   rk   rn   ru   rw   rz   r|   r   r   r   r*   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r%  rD   r   r   <module>r+     s   K  < .  V},*   ..&<.66&4,*6B$9D:(&&)0*021"<,;2B:5$@.$4'4@2*%" "<012621&1&B2)X62 F "F">.0@B)%X$/N5p<,+2-(`"D")J!&H<%B&0@@  F0*
"0r   