+
    @id                        ^ RI t ^ RIt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht ^ RIHtHtHtHt ^RIHtHtHtHt ^RIHtHtHtHtHtHtHt ^RIH t  ^RI!H"t" / t#]PH                  R8  d   R]#R&   / t%R	]PL                  9   d   ^]%R
&   M^
]%R
&    ! R R]PN                  4      t( ! R R]PN                  4      t)R#   ] d    ^ RIt Li ; i)    N)givenassumesettingsexample)CurveFpPointJacobiINFINITYPoint)generator_256	curve_256generator_224generator_brainpoolp160r1curve_brainpoolp160r1generator_112r2curve_112r2)inverse_mod)	randrangei  deadlinez--fastmax_examplesc                   B  a  ] tR t^+t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t] ! RR/ ]!B ]"! ]#PH                  ! ^ ]%! ]&PN                  ! 4       ^,
          4      R7      4      R 4       4       t(] ! RR/ ]!B ]"! ]#PH                  ! ^ ]%! ]&PN                  ! 4       ^,
          4      R7      4      ])! ^ 4      ])! ]%! ]&PN                  ! 4       4      4      R 4       4       4       4       t*] ! RR/ ]!B ]"! ]#PH                  ! ^]%! ]&PN                  ! 4       ^,
          4      R7      ]#PH                  ! ^]%! ]&PN                  ! 4       ^,
          4      R7      4      ])! ^^4      R  4       4       4       t+] ! RR/ ]!B ]"! ]#PH                  ! ^]%! ]&PN                  ! 4       ^,
          4      R7      ]#PH                  ! ^]%! ]&PN                  ! 4       ^,
          4      R7      ]#PH                  ! ^]%! ],PZ                  ! 4       ^,
          4      R7      4      R! 4       4       t.]/P`                  Pb                  ] ! RR/ ]!B ]"! ]#PH                  ! ^]%! ]&PN                  ! 4       ^,
          4      R7      ]#PH                  ! ^]%! ]&PN                  ! 4       ^,
          4      R7      ]#PH                  ! ^]%! ],PZ                  ! 4       ^,
          4      R7      4      ])! ^^^4      ])! ^^^4      ])! ^]%! ]&PN                  ! 4       ^,
          4      ^4      ])! ^]%! ]&PN                  ! 4       ^,
          4      ^4      R" 4       4       4       4       4       4       4       t2R# t3]/P`                  Pb                  ] ! RR/ ]!B ]"! ]#PH                  ! ^]%! ]&PN                  ! 4       ^,
          4      R7      ]#PH                  ! ^]%! ]&PN                  ! 4       ^,
          4      R7      ]#Ph                  ! ]#PH                  ! ^]%! ],PZ                  ! 4       ^,
          4      R7      ^^R$R%7      4      ])! ^^^^.4      ])! ^^^^.4      ])! ^]%! ]&PN                  ! 4       ^,
          4      ^^.4      ])! ^]%! ]&PN                  ! 4       ^,
          4      ^^.4      R& 4       4       4       4       4       4       4       t5R' t6R( t7R) t8R* t9R+ t:R, t;R- t<R. t=R/ t>R0 t?R1 t@R2 tAR3 tBR4 tCR5 tDR6 tER7 tFR8 tGR9 tH]"! ]#PH                  ! ^ ]%! ]IPN                  ! 4       ^,
          4      R7      ]#PH                  ! ^ ]%! ]IPN                  ! 4       ^,
          4      R7      ]#PH                  ! ^ ]%! ]IPN                  ! 4       ^,
          4      R7      4      ])! R:^R;4      R< 4       4       tJR= tKR> tLR? tMR@ tNRA tORB tPRC tQRD tRRE tSRF tTRG tURH tVRI tWRJ tX]/P`                  Pb                  ] ! RR/ ]YB ]/P`                  P                  ][P                  ! 4       RK8H  RLRM7      ]"! ]#PH                  ! ^^
R7      4      RN 4       4       4       4       t]]/P`                  Pb                  ]/P`                  P                  ][P                  ! 4       RO8H  ;'       g    ][P                  ! 4       RK8H  RPRM7      RQ 4       4       t_RRt`V taRS# )T
TestJacobic                D   \        4       p^p^p^p^p\        WW4V4      pV P                  VP                  4       V4       V P	                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  4       V4       R#    N)objectr   assertEqualorderassertIscurvexy)selfr   r    r!   zr   pjs   &      O/var/www/html/photoedit/myenv/lib/python3.14/site-packages/ecdsa/test_jacobi.pytest___init__TestJacobi.test___init__,   s    1/U+bhhj%(##    c                    \         P                  ! \        4      p\         P                  ! \        4      pV P	                  \
        4      ;_uu_ 4        W,            R R R 4       R #   + '       g   i     R # ; iN)r   from_affiner   r   assertRaises
ValueErrorr"   p_ap_bs   &  r%   test_add_with_different_curves)TestJacobi.test_add_with_different_curves9   sG    %%m4%%m4z**I +***s   	A%%A6	c                :    V P                  \        \        4       R # r*   )assertNotEqualr   r   r"   s   &r%   test_compare_different_curves(TestJacobi.test_compare_different_curves@   s    M=9r(   c                ^    \         P                  ! \        4      pV P                  VR 4       R# )valueNr   r+   r   r4   r"   r$   s   & r%   test_equality_with_non_point'TestJacobi.test_equality_with_non_pointC   s"    $$]3B(r(   c                    \         P                  ! \        4      pVP                  4       pV P	                  \        V4       R # r*   r   r+   r   	to_affiner   r"   r$   pws   &  r%   test_conversionTestJacobi.test_conversionH   s-    $$]3\\^+r(   c                <   \         P                  ! \        4      p\        P                  ! 4       pVP                  4       pV P	                  VP                  4       VP                  4       4       V P	                  VP                  4       VP                  4       4       R # r*   )r   r+   r   doubler   r    r!   rA   s   &  r%   test_single_doubleTestJacobi.test_single_doubleN   sc    $$]3!!#YY[((r(   c                v    \        \        ^ ^ ^4      pVP                  4       pV P                  V\        4       R# r   Nr   r   rF   r   r	   r;   s   & r%   test_double_with_zero_point&TestJacobi.test_double_with_zero_pointW   +    Aq!,YY[b(#r(   c                v    \        \        ^ ^ ^ 4      pVP                  4       pV P                  V\        4       R# rJ   rK   r;   s   & r%   &test_double_with_zero_equivalent_point1TestJacobi.test_double_with_zero_equivalent_point^   rN   r(   c                    \        \        ^ ^\        P                  ! 4       4      pVP                  4       pV P	                  V\
        4       R# rJ   r   r   prF   r   r	   r;   s   & r%   <test_double_with_zero_equivalent_point_non_zero_z_non_zero_yGTestJacobi.test_double_with_zero_equivalent_point_non_zero_z_non_zero_ye   1    Aq)++-8YY[b(#r(   c                    \        \        ^ ^ \        P                  ! 4       4      pVP                  4       pV P	                  V\
        4       R# rJ   rS   r;   s   & r%   1test_double_with_zero_equivalent_point_non_zero_z<TestJacobi.test_double_with_zero_equivalent_point_non_zero_zl   rW   r(   c                    \         P                  ! \        4      pVP                  4       pV P	                  W4       V P	                  W!4       R # r*   r?   r"   r$   pas   &  r%   test_compare_with_affine_point)TestJacobi.test_compare_with_affine_points   s9    $$]3\\^  r(   c                v    \        \        ^ ^ ^ 4      pVP                  4       pV P                  V\        4       R# rJ   )r   r   r@   r   r	   r\   s   &  r%   test_to_affine_with_zero_point)TestJacobi.test_to_affine_with_zero_pointz   s+    Aq!,\\^b(#r(   c                    \         P                  ! \        4      pVP                  4       pW,           pV P	                  W1P                  4       4       R # r*   r   r+   r   r@   r   rF   r"   r$   r]   ss   &   r%   test_add_with_affine_point%TestJacobi.test_add_with_affine_point   8    $$]3\\^GIIK(r(   c                    \         P                  ! \        4      pVP                  4       pW!,           pV P	                  W1P                  4       4       R # r*   rd   re   s   &   r%   test_radd_with_affine_point&TestJacobi.test_radd_with_affine_point   ri   r(   c                v    \         P                  ! \        4      pV\        ,           pV P	                  W!4       R # r*   )r   r+   r   r	   r   )r"   r$   rf   s   &  r%   test_add_with_infinity!TestJacobi.test_add_with_infinity   s)    $$]3Mr(   c                    \         P                  ! \        4      P                  4       p\        \        ^ ^ ^ 4      pW!,           pV P                  W14       R# rJ   )r   r+   r   r@   r   r   )r"   r]   r$   rf   s   &   r%   test_add_zero_point_to_affine(TestJacobi.test_add_zero_point_to_affine   s>    $$]3==?Aq!,Gar(   c                x    \         P                  ! \        4      pV^ ,          pV P                  V\        4       R# rJ   )r   r+   r   r   r	   r;   s   & r%   test_multiply_by_zero TestJacobi.test_multiply_by_zero   s)    $$]3!Vb(#r(   c                h    \        \        ^ ^ ^4      pV^,          pV P                  V\        4       R# rJ   )r   r   r   r	   r;   s   & r%   test_zero_point_multiply_by_one*TestJacobi.test_zero_point_multiply_by_one   s)    Aq!,!Vb(#r(   c                   \         P                  ! \        4      p\        ^,          pV^,          pV P                  VP	                  4       VP	                  4       4       V P                  VP                  4       VP                  4       4       R#    Nr   r+   r   r   r    r!   rA   s   &  r%   test_multiply_by_oneTestJacobi.test_multiply_by_one   ]    $$]3Q!V((r(   c                   \         P                  ! \        4      p\        ^,          pV^,          pV P                  VP	                  4       VP	                  4       4       V P                  VP                  4       VP                  4       4       R# r   r|   rA   s   &  r%   test_multiply_by_twoTestJacobi.test_multiply_by_two   r   r(   c                    \         P                  ! \        4      p\        ^,          p^V,          pV P                  W4       R# r   r   r+   r   r   rA   s   &  r%   test_rmul_by_twoTestJacobi.test_rmul_by_two   s3    $$]3QV r(   c                f    \         P                  ! \        4      pV P                  V\        4       R # r*   )r   r+   r   r4   r	   r;   s   & r%   #test_compare_non_zero_with_infinity.TestJacobi.test_compare_non_zero_with_infinity   s"    $$]3B)r(   c                V    \        \        ^^^ 4      pV P                  V\        4       R# rz   r   r   r   r	   r;   s   & r%   -test_compare_non_zero_bad_scale_with_infinity8TestJacobi.test_compare_non_zero_bad_scale_with_infinity   s"    Aq!,X&r(   c                    \        ^^^4      p\        V^ ^^4      pV P                  VP                  ^ ^4      4       V P	                  V\
        4       R#    Nr   r   
assertTruecontains_pointr4   r	   r"   c_23r$   s   &  r%   "test_eq_x_0_on_curve_with_infinity-TestJacobi.test_eq_x_0_on_curve_with_infinity   I    r1a q!Q'++Aq12B)r(   c                    \        ^^^4      p\        V^^ ^4      pV P                  VP                  ^^ 4      4       V P	                  V\
        4       R# r   r   r   s   &  r%   "test_eq_y_0_on_curve_with_infinity-TestJacobi.test_eq_y_0_on_curve_with_infinity   r   r(   c                z    \        ^^^4      p\        V^ ^^4      p\        V^ ^^4      pV P                  W#4       R# r   )r   r   r4   )r"   r   r/   r0   s   &   r%   test_eq_with_same_x_different_y*TestJacobi.test_eq_with_same_x_different_y   s>    r1a $2q)$1a(C%r(   c                V    \        \        ^ ^ ^ 4      pV P                  V\        4       R# rJ   r   r;   s   & r%   %test_compare_zero_point_with_infinity0TestJacobi.test_compare_zero_point_with_infinity   s"    Aq!,X&r(   c                    \         P                  ! \        4      pVP                  4       pV^,          pV P	                  W#4       R# r   )r   r+   r   rF   r   )r"   r$   dblmlpls   &   r%   !test_compare_double_with_multiply,TestJacobi.test_compare_double_with_multiply   s4    $$]3iikAv#r(   )	min_value	max_valuec                6   \         P                  ! \        4      pVP                  4       V,          pW!,          pV P	                  VP                  4       VP                  4       3VP                  4       VP                  4       34       V P	                  W#4       R # r*   )r   r+   r   r@   r   r    r!   )r"   mulr$   rB   s   &&  r%   test_multiplicationsTestJacobi.test_multiplications   sl     $$%>?\\^c!X"$$&"$$&)BDDFBDDF+;< r(   c                    \         pV P                  VP                  4       \        P                  ! \         4      pW!,          pW1,          pV P                  WE4       R # r*   )r   r   _PointJacobi__precomputer   r+   r   )r"   r   precompr$   abs   &&    r%   test_precomputeTestJacobi.test_precompute  sH     ,889$$%>?MHr(   c                    \         P                  ! \        4      p\         P                  ! W1,          4      p\         P                  ! W2,          4      pWE,           pV P                  WcW,           ,          4       R # r*   )r   r+   r   r   )r"   a_mulb_mulj_gr   r   cs   &&&    r%   test_add_scaled_points!TestJacobi.test_add_scaled_points  sU     %%&?@##CK0##CK0E5=12r(   c                   \         P                  ! \        4      p\         P                  ! WA,          4      p\         P                  ! WB,          4      p\        P                  ! 4       p\        \        W74      4       W3,          V,          p\        \        VP                  4       V,          V,          VP                  4       V,          V,          V,          V4      pWV,           p	V P                  WW,           ,          4       R # r*   
r   r+   r   r   rT   r   r   r    r!   r   
r"   r   r   new_zr   r   r   rT   new_zzr   s
   &&&&      r%   test_add_one_scaled_point$TestJacobi.test_add_one_scaled_point(  s     %%&?@##CK0##CK0!##%{5$%"!CCEFNQCCEFNU"Q&	
 E5=12r(   c                   \         P                  ! \        4      p\         P                  ! WA,          4      p\         P                  ! WB,          4      p\        P                  ! 4       p\        \        W74      4       W3,          V,          p\        \        VP                  4       V,          V,          VP                  4       V,          V,          V,          V4      p\        \        VP                  4       V,          V,          VP                  4       V,          V,          V,          V4      pWV,           p	V P                  WW,           ,          4       R # r*   r   r   s
   &&&&      r%   test_add_same_scale_points%TestJacobi.test_add_same_scale_pointsH  s      %%&?@##CK0##CK0!##%{5$%"!CCEFNQCCEFNU"Q&	
 !CCEFNQCCEFNU"Q&	
 E5=12r(   c                   \         p\        P                  ! 4       pV^,          pVP                  4        ^p\	        \        VP                  4       V^,          ,          V,          VP                  4       V^,          ,          V,          V4      p\	        \        VP                  4       V^,          ,          V,          VP                  4       V^,          ,          V,          V4      pW3,           pV P                  WuV,           4       R#    Nr   r   rT   scaler   r    r!   r   )r"   r   rT   r   z1r    r!   r   s   &       r%   !test_add_same_scale_points_static,TestJacobi.test_add_same_scale_points_statics  s    '!##%"H		!CCEBEMACCEBEMA	
 !CCEBEMACCEBEMA	
 EE"r(   T)min_sizemax_sizeuniquec                   \         P                  ! \        4      p\         P                  ! WA,          4      p\         P                  ! WB,          4      p\        P                  ! 4       p\        \        V^ ,          V4      4       \        \        V^,          V4      4       V^ ,          V^ ,          ,          V,          pV^,          V^,          ,          V,          p	\        \        VP                  4       V,          V,          VP                  4       V,          V^ ,          ,          V,          V^ ,          4      p\        \        VP                  4       V	,          V,          VP                  4       V	,          V^,          ,          V,          V^,          4      pWV,           p
V P                  WW,           ,          4       R# rJ   r   )r"   r   r   r   r   r   r   rT   new_zz0new_zz1r   s   &&&&       r%   test_add_different_scale_points*TestJacobi.test_add_different_scale_points  s=   . %%&?@##CK0##CK0!##%{58Q'({58Q'((U1X%)(U1X%)!CCEGOaCCEGOeAh&*!H	
 !CCEGOaCCEGOeAh&*!H	
 E5=12r(   c                   \         p\        P                  ! 4       pV^,          pVP                  4        ^p\	        \        VP                  4       V^,          ,          V,          VP                  4       V^,          ,          V,          V4      p^p\	        \        VP                  4       V^,          ,          V,          VP                  4       V^,          ,          V,          V4      pW3,           pV P                  WV,           4       R# r   r   )	r"   r   rT   r   r   r    z2r!   r   s	   &        r%   &test_add_different_scale_points_static1TestJacobi.test_add_different_scale_points_static  s    '!##%"H		!CCEBEMACCEBEMA	
 !CCEBEMACCEBEMA	
 EE"r(   c                $   \         p\        P                  ! 4       pV^,          pVP                  4        V^,          p^p\	        \        VP                  4       V^,          ,          V,          VP                  4       V^,          ,          V,          V4      p\	        \        VP                  4       V^,          ,          V,          VP                  4       V^,          ,          V,          V4      pW4,           pV P                  WV,           4       R# r   r   )	r"   r   rT   r   r   r#   r    r!   r   s	   &        r%   +test_add_different_points_same_scale_static6TestJacobi.test_add_different_points_same_scale_static  s    '!##%"H		"H!CCEAqDL1CCEAqDL1	
 !CCEAqDL1CCEAqDL1	
 EE"r(   c                   \         p\        P                  ! 4       p^pW,          pVP                  4        \	        \        VP                  4       V^,          ,          V,          VP                  4       V^,          ,          V,          V4      p\	        \        VP                  4       VP                  4       ^4      pWD,           pV P                  WuV,           4       R# r   )r   r   rT   r   r   r    r!   r   )r"   r   rT   r#   r   r    r!   r   s   &       r%   5test_add_same_point_different_scale_second_z_1_static@TestJacobi.test_add_same_point_different_scale_second_z_1_static  s    MMOG		CCEAqDL1CCEAqDL1	
 CCECCE	
 EE"r(   c                <   \         p^pW,          pVP                  4        V) p\        \        VP	                  4       VP                  4       ^4      p\        \        VP	                  4       VP                  4       ^4      pV P                  \        WV,           4       R# r   )r   r   r   r   r    r!   r   r	   )r"   r   r#   r   r   r    r!   s   &      r%   test_add_to_infinity_static&TestJacobi.test_add_to_infinity_static  s}    G		BCCECCE	
 CCECCE	
 	15)r(   c                    \         P                  ! \        4      pV P                  V^,          W,           V,           4       R#    Nr   r"   r   s   & r%   test_add_point_3_times!TestJacobi.test_add_point_3_times  s,    %%m4q#)c/2r(   c                    \        \        \        P                  ! 4       \        P                  ! 4       ^4      pV P                  V\        P                  ! 4       ,          \        4       R# rz   )r   r   r   r    r!   r   r   r	   r   s   & r%   test_mul_without_order!TestJacobi.test_mul_without_order#  s>    )]__%68I1M}2244h?r(   c                    \         P                  ! \        4      pV P                  WP	                  ^\
        ^4      4       R# rz   r   r+   r   r   mul_addr	   r   s   & r%   test_mul_add_infTestJacobi.test_mul_add_inf(  s-    %%m4kk!Xq9:r(   c                    \         P                  ! \        4      pV P                  V^,          VP	                  ^V^4      4       R# r   r   r+   r   r   r   r   s   & r%   test_mul_add_sameTestJacobi.test_mul_add_same-  s3    %%m4q#++aa"89r(   c                f   \         P                  ! \        R 4      p\         P                  ! V^,          R 4      pV P                  VR,          W,           4       V P                  VR,          V^,          V^,          ,           4       V P                  VR,          VP	                  ^V^4      4       R# )T   Ni  r   r+   r   r   r   r"   r   r   s   &  r%   test_mul_add_precompute"TestJacobi.test_mul_add_precompute2  s    %%&?F##C#It4sCG,,cAgAo>,ckk!Q.BCr(   c                f   \         P                  ! \        R 4      p\         P                  ! V^,          R 4      pV P                  VR,          W,           4       V P                  VR,          VR,          VR,          ,           4       V P                  VR,          VP	                  RVR4      4       R# )Tr        N r   r   s   &  r%   test_mul_add_precompute_large(TestJacobi.test_mul_add_precompute_large:  s    %%&?F##C#It4sCG,()3<!f*+D	
 	()3;;vq&+I	
r(   c                    \         P                  ! \        4      pV^,          pVP                  ^V^4      pV P	                  W#4       R# r   )r   r+   r   r   r   )r"   r   r   r   s   &   r%   test_mul_add_to_mulTestJacobi.test_mul_add_to_mulF  s;    %%m4!GKK3"r(   c                    \         P                  ! \        4      pV^,          pV P                  VP	                  ^V^4      V^,          4       R# r   r   )r"   r   w_as   &  r%   test_mul_add_differnt TestJacobi.test_mul_add_differntN  s<    %%m4AgQQ/q9r(   c                    \         P                  ! \        4      pV^,          pV^,          pV P                  VP	                  ^V^4      V^,          V^,          ,           4       R# r   r   )r"   r   r  w_bs   &   r%   test_mul_add_slightly_different*TestJacobi.test_mul_add_slightly_differentU  sN    %%m4AgAgQQ/q371BCr(   c                    \         P                  ! \        4      p\        ^,          p\        R,          pV^,          pVP                  ^V^4      pV P	                  VP                  4       W#,           4       R# )   Ni  r   r+   r   r   r   r@   r"   r   r  r  j_brets   &     r%   test_mul_addTestJacobi.test_mul_add]  sY    %%m4c!{+Djkk#sD)#)4r(   c                    \         P                  ! \        4      p\        ^,          p\        ^ ,          pV^,          pVP                  ^V^ 4      pV P	                  VP                  4       W#,           4       R# )r  Nr  r  s   &     r%   test_mul_add_zeroTestJacobi.test_mul_add_zeroh  sY    %%m4c!x(Djkk#sA&#)4r(   c                b   \         P                  ! \        4      p\         P                  ! V^,          4      pV P                  VR,          W,           4       V P                  VR,          VR,          VR,          ,           4       V P                  VR,          VP	                  RVR4      4       R# )r  r   r   r   Nr   r   r   s   &  r%   test_mul_add_largeTestJacobi.test_mul_add_larget  s    %%m4##C#I.sCG,()3<!f*+D	
 	()3;;vq&+I	
r(   c                   \         P                  ! \        4      p\        P                  ! 4       p\         P                  ! \        R ,          4      pV P	                  VP                  VR ,          W2R ,          4      \        4       R# )r   N)r   r+   r   r   r   r   r	   )r"   r   r   r   s   &   r%   $test_mul_add_with_infinity_as_result/TestJacobi.test_mul_add_with_infinity_as_result  sX    %%m4##%##MC$78US[!c\BHMr(   c                   \        \        \        P                  ! 4       \        P                  ! 4       ^4      p\        P
                  ! 4       p\        ^",          pVP                  4        \        \        VP                  4       VP	                  4       ^4      pV P                  VP                  V^",          WB^",          4      \        4       R# rz   )
r   r   r   r    r!   r   r   r   r   r	   )r"   r   r   r  r   s   &    r%   test_mul_add_without_order%TestJacobi.test_mul_add_without_order  s    )]__%68I1M##%b 			3557CEEGQ7URZRK@(Kr(   c                    \         P                  ! \        ^,          4      p^V) ,          pV P                  VP	                  ^V^4      \
        4       R# )   Nr   )r"   r   dbl_negs   &  r%   ,test_mul_add_with_doubled_negation_of_itself7TestJacobi.test_mul_add_with_doubled_negation_of_itself  s?    %%mb&89t*Q3X>r(   i  i  c                    \         P                  ! \        4      p\        V,          pVP                  WV4      pV P	                  WdV,          WS,          ,           4       R # r*   )r   r+   r   r   r   )r"   mul1mul2mul3r/   r0   ress   &&&&   r%   test_mul_add_randomTestJacobi.test_mul_add_random  sG     %%o6$kk$T*Dj3:56r(   c                    \        \        ^^^^4      ^^^^R7      p\        \        ^^^^4      ^^^^R7      pV P                  W4       R# r   r   r    r!   r#   r   N)r   r   r   )r"   pj1pj2s   &  r%   test_equalityTestJacobi.test_equality  sJ    Aq! 4Q!1MAq! 4Q!1M"r(   c                ^    \         P                  ! \        4      pV P                  V^4       R# )   Nr:   r   s   & r%   !test_equality_with_invalid_object,TestJacobi.test_equality_with_invalid_object  s"    %%m4C$r(   c                    \         P                  ! \        4      p\         P                  ! \        4      pV P	                  W4       R # r*   )r   r+   r   r   r4   r.   s   &  r%   test_equality_with_wrong_curves*TestJacobi.test_equality_with_wrong_curves  s0    %%m4%%m4C%r(   c           	         \        \        ^^^^4      ^^^^R7      pVP                  ^^^^^^ ^4      w  r#pV P                  W#V3R4       R# )r   r-  N)r   r   r{   )r   r   _addr   )r"   r.  r    r!   r#   s   &    r%   test_add_with_point_at_infinity*TestJacobi.test_add_with_point_at_infinity  sQ    Aq! 4Q!1M((1aAq!R0a!I.r(   c                `   \        ^^^4      p\        V^^^4      pVP                  4       pV P                  VP	                  4       VP                  4       3R4       V P                  V\        4       VP                  4       pV P                  V\        4       V P                  V\        4       R# r   N)   r   )	r   r   rF   r   r    r!   r4   r	   r   r"   r   rT   p2p3s   &    r%   test_double_to_infinity"TestJacobi.test_double_to_infinity  s    r1a b"a(XXZ"$$&"$$&)62B)YY[X&b(#r(   c                    \        ^^^4      p\        V^	^^4      pVP                  4       pV P                  VP	                  4       VP                  4       3R4       R# )r   N)r      )r   r   rF   r   r    r!   )r"   c_23_2rT   rA  s   &   r%   test_double_to_x_0TestJacobi.test_double_to_x_0  sL    Q"1a(XXZ"$$&"$$&)73r(   c                D   \        ^^^4      p\        V^^^4      pV^,          pV P                  VP                  4       VP	                  4       3R4       V P                  V\        4       V^,          pV P                  V\        4       V P                  V\        4       R# r>  r   r   r   r    r!   r4   r	   r   r@  s   &    r%   test_mul_to_infinityTestJacobi.test_mul_to_infinity  s    r1a b"a(U"$$&"$$&)62B)!VX&b(#r(   c                @   \        ^^^4      p\        V^^^4      pW",           pV P                  VP                  4       VP	                  4       3R4       V P                  V\        4       W3,           pV P                  V\        4       V P                  V\        4       R# r>  rK  r@  s   &    r%   test_add_to_infinityTestJacobi.test_add_to_infinity  s}    r1a b"a(U"$$&"$$&)62B)WX&b(#r(   c                    \        ^^^4      p\        V^	^^4      pV^,          pV P                  VP                  4       VP	                  4       3R4       R# r   N)r      r   r   r   r    r!   r"   r   rT   rA  s   &   r%   test_mul_to_x_0TestJacobi.test_mul_to_x_0  sJ    r1a aA&V"$$&"$$&)73r(   c                    \        ^^^4      p\        V^	^^4      pV^,          pV P                  VP                  4       VP	                  4       3R4       R# r>  rT  rU  s   &   r%   test_mul_to_y_0TestJacobi.test_mul_to_y_0  sJ    r1a aA&V"$$&"$$&)62r(   c                    \        ^^^4      p\        V^	^^4      pV^,          V,           pV P                  VP                  4       VP	                  4       3R4       R# rR  rT  rU  s   &   r%   test_add_to_x_0TestJacobi.test_add_to_x_0  sN    r1a aA&VaZ"$$&"$$&)73r(   c                    \        ^^^4      p\        V^	^^4      pV^,          V,           pV P                  VP                  4       VP	                  4       3R4       R# r>  rT  rU  s   &   r%   test_add_to_y_0TestJacobi.test_add_to_y_0  sN    r1a aA&VaZ"$$&"$$&)62r(   c                    \        ^^^4      p\        V^	^^4      pV^,          V^,          ,           pV P                  V\        4       R# r   )r   r   r   r	   )r"   r   rT   r   s   &   r%   test_add_diff_z_to_infinity&TestJacobi.test_add_diff_z_to_infinity  s?    r1a aA&FQUNa"r(   c                    \        \        ^^^^4      ^^^^R7      pV P                  \        P                  ! \        P
                  ! V4      4      V4       R# r,  )r   r   r   pickleloadsdumpsr;   s   & r%   test_pickleTestJacobi.test_pickle  sA    wr1a3qA!Lfll2&67<r(   PyPyz!threading on PyPy breaks coverage)reasonc                8   \         ^,           \         p\        VP                  4       VP                  4       VP	                  4       ^VP                  4       R4      pV P                  VP                  . 4       R p. p\        V4       F*  pVP                  \        P                  ! W23R7      4       K,  	  V F  pVP                  4        K  	  V! V4       V F  pVP                  4        K  	  V P                  VP                  \         P                  4       R# )r   Tc                 n    V P                  4       p\        ^
4       F  pV \        V4      ,           K  	  R# )
   Nr   ranger   	generatorr   _s   &  r%   runner.TestJacobi.test_multithreading.<locals>.runner  ,    OO%E2YIe,,, r(   targetargsN)r   r   r   r    r!   r   r   r   rp  append	threadingThreadstartjoin)r"   
thread_numgenrt  threadsrs  ts   &&     r%   test_multithreadingTestJacobi.test_multithreading  s     	! #))+suuwCIIKN55r:	-
 z"ANN9++6GH # AGGI  	sAFFH  	((44	
r(   WindowszFthere are no signals on Windows, and threading breaks coverage on PyPyc                D   ^
p\         ^,           \         p\        VP                  4       VP                  4       VP	                  4       ^VP                  4       R4      pV P                  VP                  . 4       R pR p. p\        V4       F*  pVP                  \        P                  ! W23R7      4       K,  	  \        P                  ! 4       pVP                  4        \        P                  ! 4       pVP                  4        \        P                  ! 4       p	V	P                  4        VP                  \        P                  ! VWxV	3R7      4       V F  p
V
P                  4        K  	  V P                  \         4      ;_uu_ 4        VP                  4        VP#                  4        V! V4       V	P                  4        RRR4       V F  p
V
P%                  4        K  	  V P                  VP                  \         P                  4       R#   + '       g   i     LU; i)rn  Tc                 n    V P                  4       p\        ^24       F  pV \        V4      ,           K  	  R# )2   Nro  rq  s   &  r%   rt  >TestJacobi.test_multithreading_with_interrupts.<locals>.runnerE  rv  r(   c                     V P                  4        VP                  4        \        P                  ! \        P                  ! 4       \
        P                  4       VP                  4        R # r*   )releaseacquireoskillgetpidsignalSIGINT)barrier_startbarrier_end	lock_exits   &&&r%   interrupterCTestJacobi.test_multithreading_with_interrupts.<locals>.interrupterJ  s>    !!#!GGBIIK/r(   rw  N)r   r   r   r    r!   r   r   r   rp  rz  r{  r|  Lockr  r}  r,   KeyboardInterruptr  r~  )r"   r  r  rt  r  r  rs  r  r  r  r  s   &          r%   #test_multithreading_with_interrupts.TestJacobi.test_multithreading_with_interrupts3  s    
! #))+suuwCIIKN55r:	-
	  z"ANN9++6GH # "(nn&NN$	"#)<	
 AGGI  011!!#!3K  2 AFFH  	((44	
 21s   	9HH	 N)b__name__
__module____qualname____firstlineno__r&   r1   r6   r<   rC   rG   rL   rP   rU   rY   r^   ra   rg   rk   rn   rq   rt   rw   r}   r   r   r   r   r   r   r   r   r   r   SLOW_SETTINGSr   stintegersintr   r   r   r   r   r   r   rT   r   pytestmarkslowr   r   listsr   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r"  r   r)  r0  r4  r7  r;  rC  rH  rL  rO  rV  rY  r\  r_  rb  rh  NO_OLD_SETTINGSskipifplatformpython_implementationr  systemr  __static_attributes____classdictcell____classdict__s   @r%   r   r   +   s    $:)
,)$$$$!$)) $$))!*
'**&'
$ 

3'@'F'F'H1'L#M	

! ! 

3'@'F'F'H1'L#M	

 QZS*00234 5   

3'@'F'F'H1'L#M	
 	3'@'F'F'H1'L#M	
	 Q]3  3 

3'@'F'F'H1'L#M	
 	3'@'F'F'H1'L#M	
 	a3/D/F/F/H1/L+MN3 3, [[

3'@'F'F'H1'L#M	
 	3'@'F'F'H1'L#M	
 	a3/D/F/F/H1/L+MN Q1Q1Q-3359:A>Q-3359:A>3 ? ?    38#. [[

3'@'F'F'H1'L#M	
 	3'@'F'F'H1'L#M	
 	KKs+@+B+B+Dq+H'I 	
  QAq6QAq6Q-3359:QFCQ-3359:QFC3 D D  !  ,3<#0#0#0*03
@
;
:
D

:D	5
5

N
L? 
a3/D/D/F/J+KL
a3/D/D/F/J+KL
a3/D/D/F/J+KL
 S!T7 7#
%
&/$4$$4343#= [[  [[&&(F22   2;;b12
 3	 ! 
@ [[[[Y& 	6 	6))+v5  ;
 ;
r(   r   c                   N   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
tV tR# )TestZeroCurveix  z.Tests with curve that has (0, 0) on the curve.c                *    \        ^^^ 4      V n        R# r   )r   r   r5   s   &r%   setUpTestZeroCurve.setUp{  s    RA&
r(   c                \    V P                  V P                  P                  ^ ^ 4      4       R# rJ   )r   r   r   r5   s   &r%   test_zero_point_on_curve&TestZeroCurve.test_zero_point_on_curve~  s    

11!Q78r(   c                    \        V P                  ^^^4      pVP                  4       pV P                  V\        4       V P                  RVP                  4       VP                  4       34       R# )r{   Nr   r   r   r   rF   r4   r	   r   r    r!   r"   rT   ds   &  r%   test_double_to_0_0_point&TestZeroCurve.test_double_to_0_0_point  sQ    

Ar1-HHJAx(!##%0r(   c                   ^p\        V P                  ^V^,          ,          ^V^,          ,          V4      pVP                  4       pV P                  V\        4       V P                  RVP                  4       VP                  4       34       R# )r   Nr  r  )r"   r#   rT   r  s   &   r%   'test_double_to_0_0_point_with_non_one_z5TestZeroCurve.test_double_to_0_0_point_with_non_one_z  sf    

A1Hb1a4i;HHJAx(!##%0r(   c                    \        V P                  ^^^4      pV^,          pV P                  V\        4       V P	                  RVP                  4       VP                  4       34       R# )r   Nr  )r   r   r4   r	   r   r    r!   r  s   &  r%   test_mul_to_0_0_point#TestZeroCurve.test_mul_to_0_0_point  sO    

BA.FAx(!##%0r(   c                    \        V P                  ^ ^ ^4      pVP                  4       pV P                  V\        4       R# rJ   )r   r   rF   r   r	   r  s   &  r%   test_double_of_0_0_point&TestZeroCurve.test_double_of_0_0_point  s/    

Aq!,HHJa"r(   c                    \        V P                  ^^^4      p\        V P                  ^^4      p\        ^4       F!  pV P	                  W,          W#,          4       K#  	  R# r   )r   r   r
   rp  r   )r"   rT   p_cis   &   r%   "test_compare_to_old_implementation0TestZeroCurve.test_compare_to_old_implementation  sJ    

BA.DJJB'rAQUCG, r(   )r   N)r  r  r  r  __doc__r  r  r  r  r  r  r  r  r  r  s   @r%   r  r  x  s0     8'9111#- -r(   r  )r      )*re  sys	unittest2unittestImportErrorr  r  r  r{  r  hypothesis.strategies
strategiesr  
hypothesisr   r   r   r   ellipticcurver   r   r	   r
   ecdsar   r   r   r   r   r   r   numbertheoryr   utilr   r  version_infor  argvTestCaser   r  r  r(   r%   <module>r     s     
  
     " 7 7 @ @   &  f"&OJ sxx$%M.!$&M.!J
"" J
Z.-H%% .-e  s   C   CC