
    h*                     ^    S SK Jr  S SKJr  S SKJr  S/rSrS rSS jr	\" S5      S	 5       r
g
)    )supportScalar)MAX_F2DOT14)	lru_cache
rebaseTentg      ?c                 $    U S   * U S   * U S   * 4$ )N      r    )vs    S/var/www/html/env/lib/python3.13/site-packages/fontTools/varLib/instancer/solver.py_reverse_negater   
   s!    qTEAaD51Q4%      c                    Uu  p4pVnU u  pn
XI:  aM  [        [        U 5      UR                  5       U(       + 5       VVs/ s H  u  pXb  [        U5      OS 4PM     snn$ XX::  a  XY:  a  / $ XY:  a8  [        SU0SU 05      nXU4n [        X5       VVs/ s H  u  pX-  U4PM     snn$ [        SU0SU 05      nUS 4/n[        SU0SU 05      nUU:  a  U	SU-
  X-
  -  -   n[	        X5      U	U4nSnUR                  X-
  U45        X:  a  UXU4nUnUR                  X-
  U45        OX:X  a	  U
[        -  n
UX4nSnXU4nSnUR                  UU-
  U45        UR                  UU-
  U45        OcXY:X  a  U	n
U	SU-
  X-
  -  -   nUU::  d   e [	        XH5      X4nSnXU4nUnUR                  UU-
  U45        X:  a  UR                  UU-
  U45        X::  a+  X3U4n[        SU0SU 05      nUR                  X-
  U45        U$ X:X  a	  U[        -  nX8U4nSnX3U4nSnUR                  UU-
  U45        UR                  UU-
  U45        U$ s  snnf s  snnf )Ntagr	   r   )_solver   reverse_negater   maxappendEPSILONr   )tent	axisLimitnegativeaxisMinaxisDefaxisMax_distanceNegative_distancePositivelowerpeakupperscalartmultgainoutoutGaincrossinglocloc1scalar1loc2scalar2newUppers                           r   r   r      s   FOCGg2CE ~ $%((*
	 =_Q'dC
 	
* GN	: ~eW-t}=(4:44KL4Kyv"4KLL %)E4=9D$<.C
 UG,udm<G$ w 1t8555"D(3 	

FM3'( W.CFJJs+,(   e-DG G,DGJJ$-.JJ$-. ?E$ 1t855(""" : '7DG7+DGJJ$-.~

GdND12$ )w/%?

FM3'(B J WE ( %(

GdND)*

GdND)*JA
l Ms   II   c                 d  ^ Tu  p#pEnSUs=::  a  Us=::  a  Us=::  a  S::  d   e   eU u  pxn	SUs=::  a  Us=::  a  U	s=::  a  S::  d   e   eUS:w  d   e[        U T5      n
U4S jnU
 VVs/ s H4  u  pU(       d  M  Xb   U" US   5      U" US   5      U" US   5      4OS4PM6     n
nnU
$ s  snnf )a  Given a tuple (lower,peak,upper) "tent" and new axis limits
(axisMin,axisDefault,axisMax), solves how to represent the tent
under the new axis configuration.  All values are in normalized
-1,0,+1 coordinate system. Tent values can be outside this range.

Return value is a list of tuples. Each tuple is of the form
(scalar,tent), where scalar is a multipler to multiply any
delta-sets by, and tent is a new tent for that output delta-set.
If tent value is None, that is a special deltaset that should
be always-enabled (called "gain").r	   r   r   c                 &   > TR                  U 5      $ )N)renormalizeValue)r   r   s    r   <lambda>rebaseTent.<locals>.<lambda>.  s    ),,Q/r   N)r   )r   r   r   r   r   r   r   r   r   r    solsnr!   r   s    `            r   r   r     s     GPCGg2C4G4w4"44444E-$-%-2-----199$	"D/A IF 	I!AaD'1QqT7AadG,4H 	  Ks   ,B,=*B,N)F)fontTools.varLib.modelsr   fontTools.misc.fixedToolsr   	functoolsr   __all__r   r   r   r   r
   r   r   <module>r<      s>    1 1 .
!FR 3 r   