
    gx                     <   d Z ddlmZmZ d Zd Z	 	 d%dZd Zd Zd	 Z	d
Z
d Zd Zd Zed&d            Zd Zd Zd Zed             Zed             Z	 g ddgdddgdddgdddgdd d!gdd"d#gdd$d%gdd&d'gdd(d)gdd*d+gdd,d-gdd.d/gdd0d1gdd2d3gd4d5d6gdd7d8gdd9d:gdd;d<gdd=d>gdd?d@gddAdBgddCdDgddEdFgddGdHgddIdJgddKdLgddMdNgddOdPgddQdRgddSdTgddUdVgddWdXgddYdZgdd[d\gdd]d^gdd_d`gddadbgddcddgddedfgddgdhgddidjgddkdlgddmdngddodpgddqdrgddsdtgddudvgddwdxgddydzgdd{d|gdd}d~gdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgd4ddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgd͑ddgdddgdddgdddgd֑ddgdddgd͑ddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgd֑ddgdddgdddgdddgdddgdddgddd gdddgdddgdddgddd	gdd
dgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdd d!gdd"d#gdd$d%gdd&d'gdd(d)gdd*d+gdd,d-gdd.d/gdd0d1gd͑d2d3gdd4d5gdd6d7gdd8d9gdd:d;gdd<d=gdd>d?gdd@dAgddBdCgddDdEgddFdGgddHdIgddJdKgddLdMgddNdOgdPdQdRgddSdTgddUdVgdWdXdYgddZd[gdd\d]gdd^d_gdd`dagddbdcgddddegddfdggddhdigddjdkgddldmgddndogddpdqgddrdsgddtdugddvdwgddxdygddzd{gdd|d}gdd~dgd͑ddgdddgdddgdddgdWddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgd֑ddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgddĐdgddƐdgddȐdgddʐdgdd̐dgddΐdgddАdgddҐdgddԐdgdd֐dgddؐdgddڐdgddܐdgd֑dސdgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdd dgdddgdddgdddgddd	gdd
dgdddgdddgdddgdddgdddgdddgd4ddgdddgdddgdddgdd d!gdd"d#gdd$d%gdWd&d'gdd(d)gdd*d+gdd,d-gdd.d/gdd0d1gdd2d3gdd4d5gdd6d7gdd8d9gdd:d;gdd<d=gdd>d?gdd@dAgddBdCgddDdEgddFdGgddHdIgddJdKgddLdMgddNdOgd֑dPdQgddRdSgddTdUgddVdWgddXdYgddZd[gdd\d]gdd^d_gdd`dagddbdcgddddegddfdggddhdigddjdkgddldmgddndogddpdqgddrdsgddtdugddvdwgddxdygddzd{gdd|d}gdd~dgdddgdddgdddgdddgd4ddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdWddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgddÐdgddŐdgddǐdgddɐdgddːdgdd͐dgddϐdgdWdѐdgddӐdgddՐdgddאdgd͑dِdgddېdgddݐdgddߐdgdddgd͑ddgdddgdddgdddgdddgd֑ddgdddgdddgdddgd֑ddgdddgdddgdddgdddgddd gdddgdddgdddgdddgdd	d
gdddgdddgdddgdddgdddgdddgdddgdddgdddgddd gdd!d"gdd#d$gdZdS ('  a  
The function zetazero(n) computes the n-th nontrivial zero of zeta(s).

The general strategy is to locate a block of Gram intervals B where we
know exactly the number of zeros contained and which of those zeros
is that which we search.

If n <= 400 000 000  we know exactly the Rosser exceptions, contained
in a list in this file. Hence for n<=400 000 000 we simply
look at these list of exceptions. If our zero is implicated in one of
these exceptions we have our block B.  In other case we simply locate
the good Rosser block containing our zero.

For n > 400 000 000 we apply the method of Turing, as complemented by
Lehman, Brent and Trudgian  to find a suitable B.
   )defundefun_wrappedc                    t          t          t                    dz            D ]}t          d|z           d         }t          d|z           d         }||dz
  k    r|dz
  |k    r|                     |          }|                     |          }| j                            |          }| j                            |          }||z
  dz
  }	||z
  }
t          d|z  dz            }|	||g||g||gfc S |dz
  }t          | |          \  }}}|g}|g}|dk     rK|dz  }t          | |          \  }}}|                    d|           |                    d|           |dk     K||z
  dz
  }	|dz
  }t          | |          \  }}}|                    |           |                    |           |dk     rI|dz  }t          | |          \  }}}|                    |           |                    |           |dk     I|	||g||fS )z;for n<400 000 000 determines a block were one find our zero       r   )	rangelen_ROSSER_EXCEPTIONS	grampoint_fpsiegelzcompute_triple_tvbinsertappend)ctxnkabt0t1v0v1my_zero_numberzero_number_blockpatterntvTVms                    V/var/www/html/ai-engine/env/lib/python3.11/site-packages/mpmath/functions/zetazeros.pyfind_rosser_block_zeror#      s)   3)**A-.. = =
QqS
!!
$
QqS
!!
$1WW1Q3!88q!!Bq!!B$$B$$BqSUN !!(1Q/G"QqEBr7RG<<<<	!AsA&&EAa	
A	
A
a%%	Q"3**!A	1	1	 a%%
 qSUN	!AsA&&EAaHHQKKKHHQKKK
a%%	Q"3**!A			 a%%
 QqE1a((    c                 :    d}| dk    rd}| dk    rd}| dk    rd}|S )z(Precision needed to compute higher zeros5   i ?   l    h] F       @ k S    )r   wps     r"   wpzerosr-   7   s6    	B7{{6zz6zzIr$   Nc                     | j         }d}t          |          }||k     r||k     r|d         }|d         }	|g}
|	g}d}t          dt          |                    D ]%}||         }||         }||	z  dk    r'                     ||	z            }||z  |z   |dz   z  }n||z   dz  }|dk     rC j                            |          }t          |          |k     r                     |          }n                     |          }|	|z  dk     r|dz  }|
                    |           |                    |           ||         }||z  dk     r|dz  }|
                    |           |                    |           |}|}	'|
}|}|dz  }|t          k    r|dk    r|dz   |k    rd}d}d}t          dt          |                    D ]1}||         ||dz
           z
  }||k    r|}|}|}#||k     r||k    r|}2|d|z  k    r fd}||dz
           }||         } 
                    |||fdd	d	
          }                     |          }	||k     rA||k     r;|	||         z  dk     r,|                    ||           |                    ||	           t          |          }||k     r||k     ||k    rd}nd	}|||fS )z^Separate the zeros contained in the block T, limitloop
    determines how long one must searchNr   r   r   
      c                 2                         | d          S )Nr   
derivative)rs_zxr   s    r"   <lambda>z)separate_zeros_in_block.<locals>.<lambda>y   s    chhqAh66 r$   illinoisF)solververifyverboseT)infcount_variationsr   r	   sqrtr   r   absr   ITERATION_LIMITfindrootr   )r   r   r   r    	limitloopfp_tolerance
loopnumber
variationsr   r   newTnewVr   b2ualphar   wdtMaxdtSeckMaxk1dtfr   r   r   	separateds   `                           r"   separate_zeros_in_blockrS   B   s<    G	J!!$$J***Y1F1FaDaDss
qQ 	 	A1B!A!A1!GBJq)rT1Hb  GOOA&&q66,&&AA++a..s1uua
KKNNNKKNNN!AsAvva
KKOOOKKNNNAAAQ
o%%*Q,,:a<IZ;Z;ZEEDAc!ffoo  rU1RT7]::D!EEE%xxRYYEQuW}}6666T!V9tW,,qBr7JeUZ,[[KKNNqDDqtt!AdG)A++HHT!$$$HHT!$$$%a((
o ***Y1F1Fp &&&			ar$   c                 p    d}|d         }t          dt          |                    D ]&}||         }	||	z  dk     r|dz  }||k    r|}
|}|	}|	}'||
         }||
dz
           }| _        t          |                     |          z            }d                     |          z  } j        dz   g}d}|d         d|z  k    r,|dz  }|d         dz  dz   d|z  z   g|z   }|d         d|z  k    ,|d         |z    _                              fd||fdd	          }                     d
|          }|dd         D ]e}||z    _        |                     |                               |d          z  z
  }                     d
 	                    |                    }f 	                    |          S )zPIf we know which zero of this block is mine,
    the function separates the zeror   r      r   r0   c                 .                         |           S )Nr   r5   s    r"   r7   z"separate_my_zero.<locals>.<lambda>   s    ckk!nn r$   r8   F)r9   r;         ?Nr2   )
r   r	   precr-   logmagrA   mpczetaim)r   r   r   r   r    rY   rE   r   r   r   k0leftvrightvr   r   wpzguardprecsindexrzznews   `                     r"   separate_my_zerori      s    J	
1B1SVV__  qTb5199NJ^++	
2B	
2a4BCH
.!8!88
9
9Ccggn%%%EXaZLE
E
(QsU

	qQ!!E')*U2 (QsU

 Qx%CH,,,,r"gzSXYYA	ggc!nnAabb	 $ $%<388A;;!!:!:::
''#cffTll
#
#66!99r$   c                    |dk     rdS |                      |dz
            }| j                            |          }d|dz  z  d|z  z   }d|dz  z  d|z  z   }|                     t	          ||                    }t          |          }|S )a  The number of good Rosser blocks needed to apply
    Turing method
    References:
    R. P. Brent, On the Zeros of the Riemann Zeta Function
    in the Critical Strip, Math. Comp. 33 (1979) 1361--1372
    T. Trudgian, Improvements to Turing Method, Math. Comp.i r   d   gHPx?g{Gz?ga+ei?g)\(?)r   r   lnceilminint)r   r   glgbrenttrudgianNs          r"   sure_number_blockru      s     	7{{qaeA	ABRUNDG#EA~tBw&HU8$$%%AAAHr$   c                    |                      |          }| j                            |          }|                     t	          |                    |                     |          dz
  k     r|                     |          }|d|z  z  }|||fS )N-   )r   r   r   r[   r?   )r   r   r   r   r   s        r"   r   r      sv    aAA
wws1vvswwqzz"}$$KKNN	2'	AQq5Lr$   rU   c                 L
   t          | |          }d}|dz
  }t          | |          \  }}}|g}	|g}
|dk     rI|dz  }t          | |          \  }}}|	                    |           |
                    |           |dk     I|g}|g}|g}|d|z  k     rC|dz  }t          | |          \  }}}|                    |           |                    |           |dk     rI|dz  }t          | |          \  }}}|                    |           |                    |           |dk     I|                    |           t          |          dz
  }t	          | |||t
          |          \  }}}|	                                 |	                    |           |
                                 |
                    |           |r|dz  }nd}|g}|g}|d|z  k     Cd}|dz
  }t          | |          \  }}}|	                    d|           |
                    d|           |dk     rK|dz  }t          | |          \  }}}|	                    d|           |
                    d|           |dk     K|                    d|           |g}|g}|d|z  k     r(|dz  }t          | |          \  }}}|                    d|           |                    d|           |dk     rK|dz  }t          | |          \  }}}|                    d|           |                    d|           |dk     K|                    d|           t          |          dz
  }t	          | |||t
          |          \  }}}|                                 ||	z   }	|                                 ||
z   }
|r|dz  }nd}|g}|g}|d|z  k     (|d|z           }t          |          }||d|z  z
  dz
           }t          | |          \  }}}|		                    |          }t          | |          \  }}}|		                    |          }|	||dz            }|
||dz            }||z
  }t	          | |||t
          |          \  }}}|r||z
  dz
  ||g||fS ||         }t          |          }|||z
  dz
           }t          | |          \  }}} |		                    |          }!t          | |          \  }"}#}$|		                    |"          }%|	|!|%dz            }|
|!|%dz            }||z
  dz
  ||g||fS )zTo use for n>400 000 000r   r   r   rB   rC   )
ru   r   r   r	   rS   r@   popextendr   re   )&r   r   rC   sbnumber_goodblocksm2r   r   r   TfVf
goodpointsr   r    znABrR   rf   rq   strvrbrartsvsbsas1qtqvqbqaqttvtbtats&                                         r"   search_supergood_blockr      s   	3	"	"B	
1B b))GAq!
B
B
a%%
a"3++!A
		!
		!	 a%%
 J	
A	
A
ad
"
"
a$S"--1a		!ee!GB&sB//EAaHHQKKKHHQKKK	 !ee
 	"VVAX"3AqO)+ + + 	1i 	
		!

		! 	"" !CC1 ad
"
"4 	
1B b))GAq!IIaNNNIIaNNN
a%%
a"3++!A
		!A
		!A	 a%%
 a	
A	
A
ad
"
"
a$S"--1a	1	1!ee!GB&sB//EAaHHQqMMMHHQqMMM	 !ee
 	!BVVAX"3AqOZfggg 	1i	rT	rT 	"" !CC/ ad
"
"0 	1R4A	ZB2ad719A#C++JBB	"B#C++JBB
((2,,C
2c!e8A
2c!e8A	
1BsBq_S_``` Aq) !!AqeAa  2A	ZB2b57A#C++JBB	"B#C++JBB	"B
2bd7A
2bd7AaCE1Q%!r$   c                     d}| d         }t          dt          |                     D ]}| |         }||z  dk     r|dz  }|}|S Nr   r   )r   r	   )r    countvoldr   vnews        r"   r=   r=   2  sZ    EQ4D1c!ff  t9q==AIELr$   c                    d}|d         }|d         }t          | |          \  }}}	d}
d}t          |dz   |dz             D ]}t          | |          \  }}}t          |          }|
|k     r#||
         |k    r|
dz  }
|
|k     r||
         |k    |||
         }|                    |           |                    d|           t          |          }|d|z  z   }|dk    r|dz   }|
}|||}	}}|d d         }|S )N(r   r   z%sz)(rx   )r   r   r	   r   r   r=   )r   blockr   r    r   r   r   r   r   b0r   r_   r   r   r   b1lgTLr   s                      r"   pattern_constructr   <  s,   GaAaA!#q))HBr"	A	
B1Q3qs^^  %c1--2bVV3wwQqTRZZFA 3wwQqTRZZbdG		2 ##TE\*66nGbb2crclGNr$   FTc                    t          |          }|dk     r(|                     |                                           S |dk    rt          d          | j        }	 t          | |          \  }}|| _        |dk     rt          | |          \  }}}	}
nt          | ||          \  }}}	}
|d         |d         z
  }t          | ||	|
| j	        |          \  }	}
}|rt          | ||	|
          }t          ||          }t          | |||	|
|          }|                     d|          }|| _        n# || _        w xY w|r|
 }|r||||fS |S )a  
    Computes the `n`-th nontrivial zero of `\zeta(s)` on the critical line,
    i.e. returns an approximation of the `n`-th largest complex number
    `s = \frac{1}{2} + ti` for which `\zeta(s) = 0`. Equivalently, the
    imaginary part `t` is a zero of the Z-function (:func:`~mpmath.siegelz`).

    **Examples**

    The first few zeros::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> zetazero(1)
        (0.5 + 14.13472514173469379045725j)
        >>> zetazero(2)
        (0.5 + 21.02203963877155499262848j)
        >>> zetazero(20)
        (0.5 + 77.14484006887480537268266j)

    Verifying that the values are zeros::

        >>> for n in range(1,5):
        ...     s = zetazero(n)
        ...     chop(zeta(s)), chop(siegelz(s.imag))
        ...
        (0.0, 0.0)
        (0.0, 0.0)
        (0.0, 0.0)
        (0.0, 0.0)

    Negative indices give the conjugate zeros (`n = 0` is undefined)::

        >>> zetazero(-1)
        (0.5 - 14.13472514173469379045725j)

    :func:`~mpmath.zetazero` supports arbitrarily large `n` and arbitrary precision::

        >>> mp.dps = 15
        >>> zetazero(1234567)
        (0.5 + 727690.906948208j)
        >>> mp.dps = 50
        >>> zetazero(1234567)
        (0.5 + 727690.9069482075392389420041147142092708393819935j)
        >>> chop(zeta(_)/_)
        0.0

    with *info=True*, :func:`~mpmath.zetazero` gives additional information::

        >>> mp.dps = 15
        >>> zetazero(542964976,info=True)
        ((0.5 + 209039046.578535j), [542964969, 542964978], 6, '(013111110)')

    This means that the zero is between Gram points 542964969 and 542964978;
    it is the 6-th zero between them. Finally (01311110) is the pattern
    of zeros in this interval. The numbers indicate the number of zeros
    in each Gram interval (Rosser blocks between parenthesis). In this case
    there is only one Rosser block of length nine.
    r   zn must be nonzero r   rz   rX   )ro   zetazero	conjugate
ValueErrorrY   comp_fp_tolerancer#   r   rS   r<   r   maxri   r\   )r   r   inforound	wpinitialrb   rC   r   r   r   r    r   rR   r   rY   r   r   s                    r"   r   r   T  s   x 	AA1uu||QB))+++Avv,---I-c155\y==#C++ (NE1aa $CL99 (NE1a!!HU1X-1#7H!QgL: : :1i 	7'E!A66G9c""S.2CAaMMGGCNN9 2 %w//s   C	D, ,	D5c                     |dk    rd|                      |d          z  }nd}| j        }	 | xj        |z  c_        t          |                     |          | j        z            }|| _        n# || _        w xY w|S )Nl     a$r0   r/   r   )rZ   rY   ro   siegelthetapi)r   r   r,   rY   hs        r"   
gram_indexr     s    6zzswwq"~~8DB""36)**4Is   :A- -	A6c                     d}|d         }|d         }|d         }d}||k     r+||         }	||	z  dk     r|dz  }|	}|dz  }||         }||k     +|                      |          }
|
|z  dk     r|dz  }|S r   rW   )r   r   r   r    r   r   toldtnewr   r   r   s              r"   count_tor     s    EQ4DQ4DQ4D	A
((t9q==QJE	Qt (( 	AAvzz
Lr$   c                 |    t          ||                     |          z            }|dk     rd}n|dk    rd}nd}||fS )Ni /hYgMb@?r)   g?rk   )r-   rZ   )r   r   rb   rC   s       r"   r   r     sM    
!CGGAJJ,

C8||	
fr$   c                    |dk     rdS t          | |          }t          |                     |                    }| j        }t	          | |          \  }}|| _        |                     |          }|dk    r|dk     rdS |dk    r|dk    rdS |dz   dk     rt          | |dz             }nt          | |dz   |          }|d         \  }	}
|
|	z
  dk    r/|d         d         }||z  dk    r|| _        |dz   S || _        |dz   S |\  }}}}|
|	z
  }t          | |||| j	        |          \  }}}t          | |||          }|| _        ||	z   dz   S )	a  
    Computes the number of zeros of the Riemann zeta function in
    `(0,1) \times (0,t]`, usually denoted by `N(t)`.

    **Examples**

    The first zero has imaginary part between 14 and 15::

        >>> from mpmath import *
        >>> mp.dps = 15; mp.pretty = True
        >>> nzeros(14)
        0
        >>> nzeros(15)
        1
        >>> zetazero(1)
        (0.5 + 14.1347251417347j)

    Some closely spaced zeros::

        >>> nzeros(10**7)
        21136125
        >>> zetazero(21136125)
        (0.5 + 9999999.32718175j)
        >>> zetazero(21136126)
        (0.5 + 10000000.2400236j)
        >>> nzeros(545439823.215)
        1500000001
        >>> zetazero(1500000001)
        (0.5 + 545439823.201985j)
        >>> zetazero(1500000002)
        (0.5 + 545439823.325697j)

    This confirms the data given by J. van de Lune,
    H. J. J. te Riele and D. T. Winter in 1986.
    g%fD,@r   rx   r   r   r   r0   rz   )r   ro   floorrY   r   r   r#   r   rS   r<   r   )r   r   r6   r   r   rb   rC   r   Rblockn1n2r   r   r   r   r    r   rR   r   s                      r"   nzerosr     s   J 	q3ACIIaLLAI)#q11CCHAABww1q55q	
bQUUqsY'QqS11'QqS,??AYFB	"uzz1IaLQ377 CHQ3J CHQ3J!'N5!Q2-c.?A8;9EG G GOAq) 	aAACHR46Mr$   c                 n    |                      |          dz
  |                     |          | j        z  z
  S )aw  
    Computes the function
    `S(t) = \operatorname{arg} \zeta(\frac{1}{2} + it) / \pi`.

    See Titchmarsh Section 9.3 for details of the definition.

    **Examples**

        >>> from mpmath import *
        >>> mp.dps = 15; mp.pretty = True
        >>> backlunds(217.3)
        0.16302205431184

    Generally, the value is a small number. At Gram points it is an integer,
    frequently equal to 0::

        >>> chop(backlunds(grampoint(200)))
        0.0
        >>> backlunds(extraprec(10)(grampoint)(211))
        1.0
        >>> backlunds(extraprec(10)(grampoint)(232))
        -1.0

    The number of zeros of the Riemann zeta function up to height `t`
    satisfies `N(t) = \theta(t)/\pi + 1 + S(t)` (see :func:nzeros` and
    :func:`siegeltheta`)::

        >>> t = 1234.55
        >>> nzeros(t)
        842
        >>> siegeltheta(t)/pi+1+backlunds(t)
        842.0

    r   )r   r   r   )r   r   s     r"   	backlundsr   !  s1    H ::a==?3??1--cf444r$   i i z(00)3iaidiiz3(00)i=i=ioioiKiNi'i'iDiDi5i5i"i"i͜JiМJi+di.diOeiRei6٧i:٧z(00)40i(i(iR4yiU4yiýiýieieiii2 i5 i^RiaRi(i(iL=iO=iGi"Givi"viiiii	Ui	Ui_i_ieieihihi$.i'.i;i;iii~)i~)i<i
<i@i@iZDi]DipNisNibibi(i(iiivxiyxiiikini7/i:/i(7i(7ioEirEiOeIiReIipipi5i5iiiEŵiHŵi:i=i#i&i	i	i.	i1	i	iÁ	i&&	i)&	iĺ?	iǺ?	iϴB	iҴB	i_	i_	i_	i_	i&g	i&g	itqo	iwqo	i		i		ic	if	i=	i=	iv	iv	i	i	id	ig	iL
	iO
	i;
i;
i0
i0
iS'
iV'
i,
i,
i@
i@
i1T
i1T
i[
i[
i`
i`
i`c
i`c
if
if
i!y
i!y
iՊ
iՊ
i
i
i
i
iWC
iZC
i>h
iAh
i[b
i^b
i
i
z22(00)iǂ
iʂ
it4diw4dididififz(00)22iyiyiiiךiךi׬i׬isisiii
i
iZi]ititiii!i!i{i{i"i%iyiyi{i~iiiii=&i=&i|Ei|EiwLizLiYiYioYirYi]i]z3(010)i$`i'`ififiˁgi΁gib|ie|i`i`i3i6iii߀ii(>i+>iOiRiiiiÀiii
i
ie
ih
ijimi.Wi1Wi0`i3`i)T/i,T/i	SiSiXiXi]Yi`Yi<Ngi@Ngimimiii*i-iwiwi_ibi٤i٤iii=gi@gi#i#iii`~ic~ib
ie
i?iBi<i?i7(i7(z04(00)i//Ni2/Niz|Qi}|QiNciNcz(010)3i˾eiξeihihiDhiGhihʇikʇiiiiiiiiiliЦiЦiS;iV;i ii%i(iii-i0i'i*i55i55iZ7iZ7i"Mi"Mi`i`iSgiWgiti ti?iBiviviii"Ai%Aikiki#i&iiiii0i0i[i^iXi[iR%iR%iO'iR'iz7i}7iaI?idI?i!Wi$WiKYiNYihihi}li}lioqirqihrikriyiyiiiii(i(i$
i'
im(ip(i[i^iѓiԓiqxitxi@QiCQiSiSiCiFie,ih,iw)iz)iߥii8i;iiiiiiic!if!i'i'i(i(i:6i:6iJiJiOiOi]^i`^iqsitsiexihxi&|i)|i"i"ibibiiiiiAiDiiiaiaiiiii i i1!i1!iʺ*iκ*iP2iS2i.Ii.Ii;Mi;MiSiSididijnimniiiɭi̭iIiLiii !i!iڜiڜikiki*i*iiiiiiili'Di*Diii~ii)i,iFiIiK\iN\izB-i}B-i*Vi*VimimixixiPyiSyi׸iڸi$Îi'Îiĩiǩiϐiϐiiiiimipi5i5i%i%i>KiAKi{~i~~iViYiHiHiii*i*iiiii3i6iiiiiY#iY#i#i#i$i$iNgiQgidligliůiůipipi\i\i׊iڊiNiQiiiiiAiAi	.i.i2i2ipipiii i iii'*i**iZ35i^35i<7i<7i'=i*=iAiAiEiEiEiEiPUiPUi{Xi{Xi fifiiiniri1i1i @i@iii?i?iiiii*i-i$i$z04(010)i9i<i i iImiLmisisiІ4iԆ4iZ6i]6i;i;iBiBicici
vi
vidzidzi}i}i8i8i5i5ixi{iʯiʯiGSiJSiiiQNiTNipipiiizi~iii6i6i} i} iViVi/i/iMo%iPo%i*i*i-i-iA@iA@iNAiRAiGCiJCizXizXi'\i*\i\i\i'li'li1li4lifrifriTKxiWKxi|i|i꣗iiљiљiiiiiii2ji5jiۣii	]i]z032(00)i΄c,iӄc,z(010)40iӹ,iӹ,i9i9i%:i%:z(00)410iw;iw;it?it?z(00)230iqHivHi}Ji}JiQiQ)NN)FT)__doc__	functionsr   r   r#   r-   rS   ri   ru   r   r@   r   r=   r   r   r   r   r   r   r   r
   r+   r$   r"   <module>r      s/   " , + + + + + + +!) !) !)F	 	 	 EID D D DL# # #J  "   f f fP    0 Y Y Y Yv    $   E E EN #5 #5 #5L&^C(H Cw C	8 CC	8 CC 
8 C C 
8 	C 	C
 
8 C
 C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C  
8 !C  !C" 
8 #C" #C$ 
8 %C$ %C& 
8 'C& 'C( 
8 )C( )C* 
8 +C* +C, 
8 -C, -C. 
8 /C. /C0 
8 1C0 1C2 I 3C2  3C4 I 5C4  5C6 I 7C6  7C8 I 9C8  9C: I ;C:  ;C< I =C<  =C> I ?C>  ?C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ !KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr !sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz !{C| I }C|  }C~ I C~ !C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV !WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf !gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT !UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr !sCt I uCt  uCv I wCv  wCx I yCx !yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC` !aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh !iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN !OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~ !C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^ !_C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx !yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF !GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp !qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@	 I A	C@	  A	CB	 I C	CB	  C	CD	 I E	CD	  E	CF	 I G	CF	  G	CH	 I I	CH	  I	CJ	 I K	CJ	  K	CL	 I M	CL	  M	CN	 I O	CN	  O	CP	 I Q	CP	  Q	CR	 I S	CR	  S	CT	 I U	CT	  U	CV	 I W	CV	  W	CX	 I Y	CX	  Y	CZ	 I [	CZ	  [	C\	 I ]	C\	  ]	C^	 I _	C^	  _	C`	 I a	C`	  a	Cb	 I c	Cb	  c	Cd	 I e	Cd	  e	Cf	 I g	Cf	  g	Ch	 I i	Ch	 !i	Cj	 I k	Cj	  k	Cl	 I m	Cl	  m	Cn	 I o	Cn	  o	Cp	 I q	Cp	  q	Cr	 I s	Cr	  s	Ct	 I u	Ct	  u	Cv	 I w	Cv	  w	Cx	 I y	Cx	  y	Cz	 I {	Cz	  {	C|	 I }	C|	 !}	C~	 I 	C~	  	C@
 I A
C@
  A
CB
 I C
CB
  C
CD
 I E
CD
  E
CF
 I G
CF
  G
CH
 I I
CH
  I
CJ
 I K
CJ
  K
CL
 I M
CL
 "M
CN
 I O
CN
  O
CP
 I Q
CP
  Q
CR
 I S
CR
  S
CT
 I U
CT
  U
CV
 I W
CV
 !W
CX
 I Y
CX
  Y
CZ
 I [
CZ
  [
C\
 I ]
C\
  ]
C^
 I _
C^
  _
C`
 I a
C`
  a
Cb
 I c
Cb
  c
Cd
 I e
Cd
  e
Cf
 I g
Cf
  g
Ch
 I i
Ch
  i
Cj
 I k
Cj
  k
Cl
 I m
Cl
  m
Cn
 I o
Cn
  o
Cp
 I q
Cp
 !q
Cr
 I s
Cr
  s
Ct
 I u
Ct
  u
Cv
 I w
Cv
  w
Cx
 I y
Cx
 !y
Cz
 I {
Cz
  {
C|
 I }
C|
  }
C~
 I 
C~
  
C@ I AC@  ACB I CCB !CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL !MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT !UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCn I oCn "oCp I qCp "qCr I sCr "sCt I uCt "uCv I wCv "wCx I yCx "yCz I {Cz "{C| Z }C| $}C~ Z C~ $C@ Z AC@ $ACB Z CCB $CCD Z ECD $EC   r$   