ó
    oñ:ië}  ã                   ó  • S SK JrJrJrJrJ	r	  S SK
Jr  S SKrS SKJrJr  S SKrS SKrS SKrS SK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 \RB                  " \"5      r# " S S\$5      r%S r&\ S-   4S jr' SSS.S jjr(S r)S r*S r+g)é    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloatÚotRound)ÚsafeEvalN)ÚCounterÚdefaultdicti €  i @  i    é€   é@   éÀ   é?   é   iÿ  c                   óT  • \ rS rSrS rS rS rS rS rS r	S r
0 S	4S
S.S jjrS rS r\S 5       r\S 5       r\S 5       rS"S jr\S#S
S.S jj5       r\S 5       r\S"S j5       r\S"S j5       r\S"S j5       r\S$S j5       r\S 5       rS rS rS rS rS%S jrS rS  r S!r!g	)&ÚTupleVariationé'   c                 óN   • UR                  5       U l        [        U5      U l        g ©N)ÚcopyÚaxesÚlistÚcoordinates)Úselfr   r   s      Úh/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/ttLib/tables/TupleVariation.pyÚ__init__ÚTupleVariation.__init__(   s   € Ø—I‘I“KˆŒ	Ü Ó,ˆÕó    c                 óÔ   • SR                  [        U R                  R                  5        VVs/ s H  u  pU< SU< 3PM     snn5      5      nSU< SU R                  < S3$ s  snnf )NÚ,Ú=z<TupleVariation Ú Ú>)ÚjoinÚsortedr   Úitemsr   )r   ÚnameÚvaluer   s       r   Ú__repr__ÚTupleVariation.__repr__,   sT   € Ø�x‰xÜÀÇÁÇÁÔARÔSÒAR±°›t¢UÓ+ÑARÒSÓTó
‰ó ,0°×1AÔ1AÐBÐBùó Ts   ®A$c                 ót   • U R                   UR                   :H  =(       a    U R                  UR                  :H  $ r   )r   r   )r   Úothers     r   Ú__eq__ÚTupleVariation.__eq__2   s+   € Ø×Ñ 5×#4Ñ#4Ñ4×P¸¿¹ÀeÇjÁjÑ9PÐPr   c                 óÈ   • S U R                   ;  a
  [        5       $ [        [        U R                   5       VVs/ s H  u  pUc  M
  UPM     snn5      nU(       a  U$ S $ s  snnf r   )r   Ú	frozensetÚ	enumerate)r   ÚiÚpÚuseds       r   ÚgetUsedPointsÚTupleVariation.getUsedPoints5   sU   € à�t×'Ñ'Ó'Ü“;ÐÜ¬	°$×2BÑ2BÔ(CÔUÒ(C¡ ÀqŸ!Ñ(CÒUÓVˆæˆtÐ% Ð%ùó Vs   ¸	A
ÁA
c                 ó:   • [        S U R                   5       5      $ )z¬Returns True if this TupleVariation has any visible impact.

If the result is False, the TupleVariation can be omitted from the font
without making any visible difference.
c              3   ó(   #   • U  H  oS Lv •  M
     g 7fr   © ©Ú.0Úcs     r   Ú	<genexpr>Ú+TupleVariation.hasImpact.<locals>.<genexpr>C   s   é € Ð;Ò*: Q˜D•=Ò*:ùó   ‚)Úanyr   )r   s    r   Ú	hasImpactÚTupleVariation.hasImpact=   s   € ô Ñ;¨$×*:Ò*:Ó;Ó;Ð;r   c           	      ó  • UR                  S5        UR                  5         U H´  nU R                  R                  U5      nUc  M#  Uu  pTn[	        US5      n[        US5      nXW:X  a!  Xh:X  a  UR                  SU[        US5      S9  O>SU4S[        US5      4S[        US5      4S	[        US5      4/n	UR                  SU	5        UR                  5         M¶     S
n
[        U R                  5       HÉ  u  p¼[        U5      [        :X  a:  [        U5      S:X  a+  UR                  SX¼S   US   S9  UR                  5         Sn
MR  [        U5      [        :X  a$  UR                  SX¼S9  UR                  5         Sn
M‰  Uc  MŽ  [        R                  S5        UR!                  SU-  5        UR                  5         Sn
MË     U
(       d!  UR!                  S5        UR                  5         UR#                  S5        UR                  5         g )NÚtupleç        Úcoordé   )Úaxisr'   rG   Úminr'   ÚmaxFé   Údeltar   é   )ÚptÚxÚyT)Úcvtr'   zbad delta formatzbad delta #%dz	no deltas)ÚbegintagÚnewliner   ÚgetrH   rI   Ú	simpletagÚfl2strr0   r   ÚtyperC   ÚlenÚintÚlogÚerrorÚcommentÚendtag)r   ÚwriterÚaxisTagsrG   r'   ÚminValueÚmaxValueÚdefaultMinValueÚdefaultMaxValueÚattrsÚwrote_any_deltasr1   rK   s                r   ÚtoXMLÚTupleVariation.toXMLE   sÐ  € Ø�‰˜Ô Ø�‰ÔÛˆDØ—I‘I—M‘M $Ó'ˆEØÓ Ø,1Ñ)� Ü"% e¨S£/�Ü"% e¨S£/�ØÓ.°8Ó3NØ×$Ñ$ W°4¼vÀeÈRÓ?PÐ$ÒQð   ˜Ø¤ x°Ó 4Ð5Ø ¤&¨°Ó"3Ð4Ø¤ x°Ó 4Ð5ð	�Eð ×$Ñ$ W¨eÔ4Ø—‘Ö ñ! ð" !ÐÜ! $×"2Ñ"2Ö3‰HˆAÜ�E‹{œeÓ#¬¨E«
°a«Ø× Ñ  ¨Q¸±(¸eÀA¹hÐ ÑGØ—‘Ô Ø#'Ò Ü�e“¤Ó#Ø× Ñ  ¨aÐ Ñ=Ø—‘Ô Ø#'Ò ØÓ"Ü—	‘	Ð,Ô-Ø—‘˜°Ñ2Ô3Ø—‘Ô Ø#'Ò ñ 4ö  Ø�N‰N˜;Ô'Ø�N‰NÔØ�‰�gÔØ�‰Õr   c           	      ój  • US:X  av  US   n[        US   S5      n[        US5      n[        US5      n[        UR                  SU5      S5      n[        UR                  SU5      S5      n	X…U	4U R                  U'   g US:X  a±  S	U;   a;  [        US	   5      n
[        US
   5      n[        US   5      nX¼4U R                  U
'   g SU;   a+  [        US   5      n[        US   5      nXPR                  U'   g [        R                  SSR                  [        UR                  5       5      5      -  5        g g )NrE   rG   r'   rF   rD   rH   rI   rK   rM   rN   rO   rP   zbad delta format: %sz, )Ústr2flrH   rI   rS   r   r   r   rY   Úwarningr#   r$   Úkeys)r   r&   rc   Ú_contentrG   r'   ra   rb   r_   r`   ÚpointrN   rO   rP   s                 r   ÚfromXMLÚTupleVariation.fromXMLn   s  € Ø�7‹?Ø˜‘=ˆDÜ˜5 ™>¨2Ó.ˆEÜ! %¨›oˆOÜ! %¨›oˆOÜ˜eŸi™i¨¨Ó?ÀÓDˆHÜ˜eŸi™i¨¨Ó?ÀÓDˆHØ'°Ð9ˆD�I‰I�dŠOØ�W‹_Ø�u‹}Ü   t¡Ó-�Ü˜U 3™ZÓ(�Ü˜U 3™ZÓ(�Ø+,¨&�× Ñ  Ò'Ø˜%“Ü˜u U™|Ó,�Ü   w¡Ó0�Ø(-× Ñ  Ò%ä—‘Ð2°T·Y±Y¼vÀeÇjÁjÃlÓ?SÓ5TÑTÕUð r   NT©ÚoptimizeSizec          	      óú  • [        U R                  R                  5       5      [        U5      ::  d"   SU R                  R                  5       U45       e/ n/ nUc%  U R                  5       nUc  gU R	                  U5      nU R                  U5      nUR                  U5      n	U	c  [        n	UR                  U5        U R                  U5      n
U
b  U	[        -  n	UR                  U
5        U(       a  U	[        -  n	UR                  U5        UR                  U R                  US95        SR                  U5      nUR                  S[        R                   " S[#        U5      U	5      5        SR                  U5      U4$ )NzUnknown axis tag found.)r   r   ro   r   r   ú>HH)Úsetr   rj   r4   ÚcompilePointsÚcompileCoordrS   ÚEMBEDDED_PEAK_TUPLEÚappendÚcompileIntermediateCoordÚINTERMEDIATE_REGIONÚPRIVATE_POINT_NUMBERSÚcompileDeltasr#   ÚinsertÚstructÚpackrW   )r   r^   ÚsharedCoordIndicesÚ	pointDatarp   Ú	tupleDataÚauxDataÚ
usedPointsrE   ÚflagsÚintermediateCoords              r   ÚcompileÚTupleVariation.compile„   sa  € ô �4—9‘9—>‘>Ó#Ó$¬¨H«Ó5ð 	
Ø%Ø�I‰I�N‰NÓØð8
ó 	
Ð5ð ˆ	ØˆàÑØ×+Ñ+Ó-ˆJØÑ!ØØ×*Ñ*¨:Ó6ˆIà×!Ñ! (Ó+ˆØ"×&Ñ& uÓ-ˆØ‰=Ü'ˆEØ×Ñ˜UÔ#à ×9Ñ9¸(ÓCÐØÑ(ØÔ(Ñ(ˆEØ×ÑÐ.Ô/ö ØÔ*Ñ*ˆEØ�N‰N˜9Ô%à�‰�t×)Ñ)°|Ð)ÐDÔEØ—(‘(˜7Ó#ˆà×Ñ˜œFŸKšK¨¬s°7«|¸UÓCÔDØ�x‰x˜	Ó" GÐ+Ð+r   c           
      ó  • / nU R                   nU H]  nUR                  U5      nUc  UR                  S5        M*  UR                  [        R                  " S[        US   S5      5      5        M_     SR                  U5      $ )Ns     ú>hrL   rF   r   )r   rS   rw   r}   r~   Úfl2fir#   )r   r^   Úresultr   rG   Útriples         r   ru   ÚTupleVariation.compileCoord¬   sk   € ØˆØ�y‰yˆÛˆDØ—X‘X˜d“^ˆFØ‰~Ø—‘˜gÖ&à—‘œfŸkšk¨$´°f¸Q±iÀÓ0DÓEÖFñ ð �x‰x˜ÓÐr   c           
      óð  • SnU HH  nU R                   R                  US5      u  pEn[        US5      n[        US5      nXG:w  d  Xh:w  d  MF  Sn  O   U(       d  g / n	/ n
U H‚  nU R                   R                  US5      u  pEnU	R	                  [
        R                  " S[        US5      5      5        U
R	                  [
        R                  " S[        US5      5      5        M„     SR                  Xš-   5      $ )NF©rD   rD   rD   rD   Tr‰   rF   r   )	r   rS   rH   rI   rw   r}   r~   rŠ   r#   )r   r^   ÚneededrG   r_   r'   r`   ra   rb   Ú	minCoordsÚ	maxCoordss              r   rx   Ú'TupleVariation.compileIntermediateCoord·   sÜ   € ØˆÛˆDØ(,¯	©	¯©°d¸OÓ(LÑ%ˆH˜XÜ! %¨›oˆOÜ! %¨›oˆOØÓ+°Õ1LØ�Ùñ ö ØØˆ	Øˆ	ÛˆDØ(,¯	©	¯©°d¸OÓ(LÑ%ˆH˜XØ×ÑœVŸ[š[¨¬u°X¸rÓ/BÓCÔDØ×ÑœVŸ[š[¨¬u°X¸rÓ/BÓCÖDñ ð �x‰x˜	Ñ-Ó.Ð.r   c           
      ó‚   • 0 nUnU  H3  n[        [        R                  " SXUS-    5      S   S5      X5'   US-  nM5     X44$ )Nr‰   rJ   r   rF   )Úfi2flr}   Úunpack)r^   ÚdataÚoffsetrE   ÚposrG   s         r   ÚdecompileCoord_ÚTupleVariation.decompileCoord_Ê   sP   € àˆØˆÛˆDÜ¤§¢¨d°D¸sÀQ¹wÐ4GÓ HÈÑ KÈRÓPˆE‰KØ�1‰HŠCñ ð ˆzÐr   c                 óÈ  • U (       d  g[        U 5      n U R                  5         [        U 5      n[        5       nUS:  a  UR	                  U5        O+UR	                  US-	  S-  5        UR	                  US-  5        SnSnSnXA:  aÛ  Sn[        U5      nUR	                  S5        S nXA:  a’  Xc::  a�  X   n	X•-
  n
Uc  SU
s=:*  =(       a    S:*  Os  nU(       a  U
S:”  d  U
S:  a  OYU(       a  UR	                  U
5        O(UR	                  U
S-	  5        UR	                  U
S-  5        U	nUS-  nUS-  nXA:  a  Xc::  a  M�  U(       a  US-
  X''   OUS-
  [
        -  X''   XA:  a  MÛ  U$ )Nó    r   é   éÿ   r   r   rL   )r   ÚsortrW   Ú	bytearrayrw   ÚPOINTS_ARE_WORDS)ÚpointsÚ	numPointsr‹   ÚMAX_RUN_LENGTHr™   Ú	lastValueÚ	runLengthÚ	headerPosÚuseByteEncodingÚcurValuerK   s              r   rt   ÚTupleVariation.compilePointsÓ   se  € ö Øô �f“ˆØ�‰ŒÜ˜“Kˆ	ä“ˆð �tÓØ�M‰M˜)Õ$à�M‰M˜9¨™>¨TÑ1Ô2Ø�M‰M˜) dÑ*Ô+àˆØˆØˆ	Ø‹oØˆIä˜F›ˆIØ�M‰M˜!Ôà"ˆOØ“/ iÓ&AØ!™;�Ø Ñ,�Ø"Ñ*Ø&'¨5×&8Ó&8°DÔ&8�OÞ"¨°«¸À»	àö #Ø—M‘M %Õ(à—M‘M %¨1¡*Ô-Ø—M‘M %¨$¡,Ô/Ø$�	Ø�q‘�Ø˜Q‘�	ð# “/ iÕ&Aö$ Ø$-°¡M�Ò!à%.°¡]Ô6FÑ$F�Ñ!ð9 �oð< ˆr   c                 óh  • US;   d   eUnX   nUS-  nU[         -  S:w  a  U[        -  S-  X   -  nUS-  nUS:X  a  [        U 5      U4$ / n[        U5      U:  aÈ  X   nUS-  nU[        -  S-   nSn	U[         -  S:w  a  [        R                  " S5      n
US-  nO[        R                  " S5      n
UnU
R                  XXK-    5        [        R                  S:w  a  U
R                  5         [        U
5      U:X  d   eXK-  nUR                  U
5        [        U5      U:  a  MÈ  / nSnU H  nXÞ-  nUR                  U5        M     UnAU Vs1 s H  oÿS:  d  Xð:¼  d  M  [        U5      iM     nnU(       a6  [        R                  S	S
R                  [        U5      5      < SU< S35        Xd4$ s  snf )zJ(numPoints, data, offset, tableTag) --> ([point1, point2, ...], newOffset)©ÚcvarÚgvarrL   r   rž   ÚHrJ   ÚBÚbigzpoint r   z out of range in 'z' table)r¢   ÚPOINT_RUN_COUNT_MASKÚrangerW   ÚarrayÚ	frombytesÚsysÚ	byteorderÚbyteswapÚextendrw   ÚstrrY   ri   r#   r$   )r¤   r—   r˜   ÚtableTagr™   ÚnumPointsInDatar‹   Ú	runHeaderÚnumPointsInRunrl   r£   Ú
pointsSizeÚabsoluteÚcurrentrK   r2   Ú	badPointss                    r   ÚdecompilePoints_ÚTupleVariation.decompilePoints_  sÊ  € ð Ð+Ó+Ð+Ð+ØˆØ™)ˆØˆq‰ˆØÔ.Ñ.°1Ó4Ø.Ô1EÑEÈ!ÑKÈdÉiÑWˆOØ�1‰HˆCØ˜aÓÜ˜)Ó$ cÐ*Ð*àˆÜ�&‹k˜OÓ+Ø™	ˆIØ�1‰HˆCØ'Ô*>Ñ>À!ÑCˆNØˆEØÔ,Ñ,°Ó2ÜŸš SÓ)�Ø+¨aÑ/‘
äŸš SÓ)�Ø+�
Ø×Ñ˜T¨Ñ(8Ð9Ô:Ü�}‰} Ó%Ø—‘Ô!ä�v“; .Ó0Ð0Ð0ØÑˆCà�M‰M˜&Ô!ô% �&‹k˜OÕ+ð* ˆØˆÛˆEØÑˆGØ�O‰O˜GÖ$ñ ð ˆØá%+ÓG¢V °1«u¸¹“V”S˜–V¡Vˆ	ÐGÞÜ�KŠKà—8‘8œF 9Ó-Ö.³ð:ôð ˆ}Ðùò Hs   ÅF/ÅF/c                 ó^  • / n/ nU R                  5       S:X  aA  U R                   H0  nUc  M  UR                  US   5        UR                  US   5        M2     O)U R                   H  nUc  M  UR                  U5        M     [        5       nU R	                  X%US9  U R	                  X5US9  U$ )NrJ   r   rL   ro   )ÚgetCoordWidthr   rw   r¡   ÚcompileDeltaValues_)r   rp   ÚdeltaXÚdeltaYr;   Úbytearrs         r   r{   ÚTupleVariation.compileDeltasG  s¯   € ØˆØˆØ×ÑÓ 1Ó$Ø×%Ô%�Ø‘9ÙØ—‘˜a ™dÔ#Ø—‘˜a ™dÖ#ò	 &ð ×%Ô%�Ø‘9ÙØ—‘˜aÖ ñ &ô “+ˆØ× Ñ  ¸|Ð ÑLØ× Ñ  ¸|Ð ÑLØˆr   c                óÜ  • Uc
  [        5       nSn[        U 5      nU(       a’  X4:  aŒ  X   nUS:X  a  [        R                  XU5      nOdSUs=::  a  S::  a  O  O[        R	                  XU5      nO=SUs=::  a  S::  a  O  O[        R                  XU5      nO[        R                  XU5      nX4:  a  MŒ  O«[        U 5      [        U 5      pvUSs=:X  a  U:X  a  O  O[        R                  XU5      nOoSUs=::  a  Us=::  a  S::  a  O  O[        R	                  XUSS9nOBSUs=::  a  Us=::  a  S::  a  O  O[        R                  XUSS9nO[        R                  XUSS9nX4:X  d   X445       eU$ )a‚  [value1, value2, value3, ...] --> bytearray

Emits a sequence of runs. Each run starts with a
byte-sized header whose 6 least significant bits
(header & 0x3F) indicate how many values are encoded
in this run. The stored length is the actual length
minus one; run lengths are thus in the range [1..64].
If the header byte has its most significant bit (0x80)
set, all values in this run are zero, and no data
follows. Otherwise, the header byte is followed by
((header & 0x3F) + 1) signed values.  If (header &
0x40) is clear, the delta values are stored as signed
bytes; if (header & 0x40) is set, the delta values are
signed 16-bit integers.
r   é€ÿÿÿr   é €ÿÿéÿ  Fro   )	r¡   rW   r   ÚencodeDeltaRunAsZeroes_ÚencodeDeltaRunAsBytes_ÚencodeDeltaRunAsWords_ÚencodeDeltaRunAsLongs_rH   rI   )ÚdeltasrË   rp   r™   Ú	numDeltasr'   ÚminValÚmaxVals           r   rÈ   Ú"TupleVariation.compileDeltaValues_Z  se  € ð" ‰?Ü“kˆGàˆÜ˜“Kˆ	æØ“/Ø™�Ø˜A“:Ü(×@Ñ@ÀÈgÓV‘CØ˜UÕ) cÖ)Ü(×?Ñ?ÀÈWÓU‘CØ˜uÕ-¨Ö-Ü(×?Ñ?ÀÈWÓU‘Cä(×?Ñ?ÀÈWÓU�Cð •/øô ! ›[¬#¨f«+�FØ˜Õ$˜fÖ$Ü$×<Ñ<¸VÈ'ÓR‘Ø˜Õ0 6Õ0¨SÖ0Ü$×;Ñ;Ø °uð <ð ‘ð ˜6Õ4 VÕ4¨uÖ4Ü$×;Ñ;Ø °uð <ð ‘ô %×;Ñ;Ø °uð <ð �ð ÓÐ1 #Ð!1Ó1Ðàˆr   c                 ó  • Un[        U 5      nX4:  a  X   S:X  a  US-  nX4:  a
  X   S:X  a  M  X1-
  nUS:¼  a%  UR                  [        S-  5        US-  nUS:¼  a  M%  U(       a  UR                  [        US-
  -  5        U$ )Nr   rL   r   r   )rW   rw   ÚDELTAS_ARE_ZERO)rÕ   r˜   rË   r™   rÖ   r§   s         r   rÑ   Ú&TupleVariation.encodeDeltaRunAsZeroes_‘  s‡   € àˆÜ˜“Kˆ	Ø‹o &¡+°Ó"2Ø�1‰HˆCð ‹o &¡+°Õ"2à‘Lˆ	Ø˜2‹oØ�N‰Nœ?¨RÑ/Ô0Ø˜‰OˆIð ˜2�oö Ø�N‰Nœ?¨i¸!©mÑ<Ô=Øˆ
r   c           	      óä  • Un[        U 5      nXE:  aB  X   nSUs=::  a  S::  d  O  O.U(       a  US:X  a  US-   U:  a  XS-      S:X  a  OUS-  nXE:  a  MB  XA-
  nUS:¼  aN  UR                  S5        UR                  [        R                  " SXUS-    5      5        US-  nUS-  nUS:¼  a  MN  U(       a<  UR                  US-
  5        UR                  [        R                  " SXU 5      5        U$ )NrÎ   r   r   rL   r   r   Úb)rW   rw   rº   rµ   )rÕ   r˜   rË   rp   r™   rÖ   r'   r§   s           r   rÒ   Ú%TupleVariation.encodeDeltaRunAsBytes_Ÿ  sò   € àˆÜ˜“Kˆ	Ø‹oØ‘KˆEØ˜EÕ( SÕ(Øö Ø˜Q“JØ˜!‘G˜iÓ'Ø ™7‘O qÓ(àØ�1‰HˆCð' �oð( ‘Lˆ	Ø˜2‹oØ�N‰N˜2ÔØ�N‰Nœ5Ÿ;š; s¨F¸FÀR¹KÐ,HÓIÔJØ�b‰LˆFØ˜‰OˆIð	 ˜2�oö
 Ø�N‰N˜9 q™=Ô)Ø�N‰Nœ5Ÿ;š; s¨F¸#Ð,>Ó?Ô@Øˆ
r   c                 óÜ  • Un[        U 5      nXE:  ad  X   nU(       a  US:X  a  ORU(       a/  SUs=::  a  S::  a"  O  OUS-   U:  a  SXS-      s=::  a  S::  a  O  OOSUs=::  a  S::  d  O  OUS-  nXE:  a  Md  XA-
  nUS:¼  a{  UR                  [        S-  5        [        R                  " S	XUS-    5      n[        R
                  S
:w  a  UR                  5         UR                  U5        US-  nUS-  nUS:¼  a  M{  U(       ai  UR                  [        US-
  -  5        [        R                  " S	XU 5      n[        R
                  S
:w  a  UR                  5         UR                  U5        U$ )Nr   rÎ   r   rL   rÏ   rÐ   r   r   Úhr²   )rW   rw   ÚDELTAS_ARE_WORDSrµ   r·   r¸   r¹   rº   ©	rÕ   r˜   rË   rp   r™   rÖ   r'   r§   Úas	            r   rÓ   Ú%TupleVariation.encodeDeltaRunAsWords_Â  sK  € àˆÜ˜“Kˆ	Ø‹oØ‘KˆEö  ¨£
Øö Ø˜UÕ) cÖ)Ø˜!‘G˜iÓ'Ø˜V¨!¡G™_Õ3°Ö3àà˜eÕ, uÕ,Øà�1‰HˆCð= �oð> ‘Lˆ	Ø˜2‹oØ�N‰NÔ+¨bÑ0Ô1Ü—’˜C °¸"±Ð!=Ó>ˆAÜ�}‰} Ó%Ø—
‘
”Ø�N‰N˜1ÔØ�b‰LˆFØ˜‰OˆIð ˜2�oö Ø�N‰NÔ+¨y¸1©}Ñ=Ô>Ü—’˜C ¨sÐ!3Ó4ˆAÜ�}‰} Ó%Ø—
‘
”Ø�N‰N˜1ÔØˆ
r   c                 ód  • Un[        U 5      nXE:  a(  X   nU(       a  SUs=::  a  S::  a  O  OOUS-  nXE:  a  M(  XA-
  nUS:¼  a{  UR                  [        S-  5        [        R                  " SXUS-    5      n[        R
                  S:w  a  UR                  5         UR                  U5        US-  nUS-  nUS:¼  a  M{  U(       ai  UR                  [        US-
  -  5        [        R                  " SXU 5      n[        R
                  S:w  a  UR                  5         UR                  U5        U$ )NrÏ   rÐ   rL   r   r   r1   r²   )rW   rw   ÚDELTAS_ARE_LONGSrµ   r·   r¸   r¹   rº   rã   s	            r   rÔ   Ú%TupleVariation.encodeDeltaRunAsLongs_ö  s  € àˆÜ˜“Kˆ	Ø‹oØ‘KˆEÞ ¨%Õ 8°5Ö 8ØØ�1‰HˆCð	 �oð
 ‘Lˆ	Ø˜2‹oØ�N‰NÔ+¨bÑ0Ô1Ü—’˜C °¸"±Ð!=Ó>ˆAÜ�}‰} Ó%Ø—
‘
”Ø�N‰N˜1ÔØ�b‰LˆFØ˜‰OˆIð ˜2�oö Ø�N‰NÔ+¨y¸1©}Ñ=Ô>Ü—’˜C ¨sÐ!3Ó4ˆAÜ�}‰} Ó%Ø—
‘
”Ø�N‰N˜1ÔØˆ
r   c                 ó
  • / nUnU b  [        U5      U :  GaV  OU[        U5      :  GaE  X   nUS-  nU[        -  S-   nU[        -  [        :X  a  UR	                  S/U-  5        OáU[        -  [
        :X  a  [        R                  " S5      nUS-  nOEU[        -  [        :X  a  [        R                  " S5      nUS-  nO[        R                  " S5      nUnUR                  XXH-    5        [        R                  S:w  a  UR                  5         [        U5      U:X  d   [        U5      U45       eXH-  nUR	                  U5        U b  [        U5      U :  a  GM2  OU[        U5      :  a  GME  U b  [        U5      U :X  d   eX44$ )	z>(numDeltas, data, offset) --> ([delta, delta, ...], newOffset)rL   r   r1   é   rá   rJ   rÞ   r²   )rW   ÚDELTA_RUN_COUNT_MASKÚDELTAS_SIZE_MASKrÛ   rº   rç   rµ   râ   r¶   r·   r¸   r¹   )	rÖ   r—   r˜   r‹   r™   r¾   ÚnumDeltasInRunrÕ   Ú
deltasSizes	            r   ÚdecompileDeltas_ÚTupleVariation.decompileDeltas_  si  € ð ˆØˆØ)2Ñ)>Œc�&‹k˜IÕ%ÀCÌ#ÈdË)ÄOØ™	ˆIØ�1‰HˆCØ'Ô*>Ñ>À!ÑCˆNØÔ,Ñ,´Ó@Ø—‘˜q˜c NÑ2Õ3àÔ 0Ñ0Ô5EÓEÜ"Ÿ[š[¨Ó-�FØ!/°!Ñ!3‘JØÔ"2Ñ2Ô7GÓGÜ"Ÿ[š[¨Ó-�FØ!/°!Ñ!3‘Jä"Ÿ[š[¨Ó-�FØ!/�JØ× Ñ  ¨CÑ,<Ð!=Ô>Ü—=‘= EÓ)Ø—O‘OÔ%Ü˜6“{ nÓ4ÐS´s¸6³{ÀNÐ6SÓSÐ4ØÑ!�Ø—‘˜fÔ%ð+ *3Ñ)>Œc�&‹k˜I×%ÀCÌ#ÈdË)ÆOð, Ñ ¤C¨£K°9Ó$<Ð<Ð<Øˆ}Ðr   c                 óZ   • SnU [         -  S:w  a  X!S-  -  nU [        -  S:w  a  X!S-  -  nU$ )Nrê   r   rJ   )rv   ry   )r„   Ú	axisCountÚsizes      r   ÚgetTupleSize_ÚTupleVariation.getTupleSize_.  s@   € àˆØÔ'Ñ'¨AÓ-Ø ‘MÑ!ˆDØÔ'Ñ'¨AÓ-Ø ‘MÑ!ˆDØˆr   c                 óØ   • [        S U R                   5       S5      nUc  g[        U5      [        [        4;   a  g[        U5      [
        L a  [        U5      S:X  a  g[        SU-  5      e)z]Return 2 if coordinates are (x, y) as in gvar, 1 if single values
as in cvar, or 0 if empty.
c              3   ó.   #   • U  H  oc  M  Uv •  M     g 7fr   r8   r9   s     r   r<   Ú/TupleVariation.getCoordWidth.<locals>.<genexpr>;  s   é € ÐHÒ&6 Ÿ1™1Ò&6ùs   ‚Œ	Nr   rL   rJ   zSinvalid type of delta; expected (int or float) number, or Tuple[number, number]: %r)Únextr   rV   rX   ÚfloatrC   rW   Ú	TypeError)r   Ú
firstDeltas     r   rÇ   ÚTupleVariation.getCoordWidth7  sn   € ô ÑH d×&6Ò&6ÓHÈ$ÓOˆ
ØÑØÜ�
Ó¤¤U˜|Ó+ØÜ�
ÓœuÒ$¬¨Z«¸AÓ)=ØÜð(Ø*4ñ5ó
ð 	
r   c                 óº   • US:X  a  g U R                  5       nU R                   Vs/ s H"  nUc  S OUS:X  a  X1-  OUS   U-  US   U-  4PM$     snU l        g s  snf )Ng      ð?rL   r   )rÇ   r   )r   ÚscalarÚ
coordWidthÚds       r   ÚscaleDeltasÚTupleVariation.scaleDeltasG  sz   € Ø�S‹=ØØ×'Ñ'Ó)ˆ
ð ×%Ò%ó
ò &�ð ‘9ñ à#-°£?�Q’Z¸¸1¹À¹ÈÈ!ÉÈvÉÐ8VòWñ &ñ
ˆÕùò 
s   ¦)Ac                 óÒ   • U R                  5       nU R                   Vs/ s H5  nUc  S O,US:X  a  [        U5      O[        US   5      [        US   5      4PM7     snU l        g s  snf ©NrL   r   )rÇ   r   r   )r   r   r  s      r   ÚroundDeltasÚTupleVariation.roundDeltasT  su   € Ø×'Ñ'Ó)ˆ
ð ×%Ò%ó
ò &�ð ‘9ñ à#-°£?”W˜Q”Z¼ÀÀ1Á»ÌÐPQÐRSÑPTËÐ8VòWñ &ñ
ˆÕùò 
s   Ÿ<A$c                 ó<  • SSK Jn  U R                  5       S:X  a  [        S5      eS U R                  ;   ag  [        U R                  5      [        U5      :w  a,  [        S[        U R                  5      [        U5      4-  5      eU" U R                  X5      U l        g g )Nr   )Ú	iup_deltarL   z3Only 'gvar' TupleVariation can have inferred deltasz(Expected len(origCoords) == %d; found %d)ÚfontTools.varLib.iupr	  rÇ   rû   r   rW   Ú
ValueError)r   Ú
origCoordsÚendPtsr	  s       r   ÚcalcInferredDeltasÚ!TupleVariation.calcInferredDeltas_  s�   € Ý2à×ÑÓ 1Ó$ÜÐQÓRÐRØ�4×#Ñ#Ó#Ü�4×#Ñ#Ó$¬¨J«Ó7Ü Ø>Ü˜4×+Ñ+Ó,¬c°*«oÐ>ñ?óð ñ  )¨×)9Ñ)9¸:ÓNˆDÕð $r   c                 ó  • SSK Jn  S U R                  ;   a  g U" U R                  XUS9nS U;   aÙ  U(       a-  [        S U 5       5      (       a  S/S /[	        U5      S-
  -  -   n[        U R                  U5      n[        U R                  R                  5       5      nU R                  U5      u  pš[	        U	5      [	        U
5      -   nUR                  U5      u  pš[	        U	5      [	        U
5      -   nXË:  a  UR                  U l        g g g )Nr   )Úiup_delta_optimize)Ú	tolerancec              3   ó(   #   • U  H  oS L v •  M
     g 7fr   r8   )r:   r  s     r   r<   Ú*TupleVariation.optimize.<locals>.<genexpr>v  s   é € Ð"?²h°¨¥9²hùr>   )r   r   rL   )
r
  r  r   ÚallrW   r   r   r$   rj   r†   )r   r  r  r  ÚisCompositer  ÚdeltaOptÚvarOptr^   r�   r‚   ÚunoptimizedLengthÚoptimizedLengths                r   ÚoptimizeÚTupleVariation.optimizel  sô   € Ý;à�4×#Ñ#Ó#Øá%Ø×Ñ˜j¸Iñ
ˆð �8ÓÞœsÑ"?±hÓ"?×?Ñ?ð #˜8 t f´°H³ÀÑ0AÑ&BÑB�ä# D§I¡I¨xÓ8ˆFô ˜dŸi™iŸn™nÓ.Ó/ˆHØ!%§¡¨hÓ!7ÑˆIÜ # I£´°W³Ñ =ÐØ!'§¡°Ó!9ÑˆIÜ! )›n¬s°7«|Ñ;ˆOàÓ2Ø#)×#5Ñ#5�Õ ð 3ð r   c                 ó(   • U R                  U5        U $ r   )r  )r   rÿ   s     r   Ú__imul__ÚTupleVariation.__imul__‡  s   € Ø×Ñ˜Ô Øˆr   c                 ó  • [        U[        5      (       d  [        $ U R                  n[	        U5      nUR                  n[	        U5      U:w  a  [        S5      eU R                  5       S:X  a=  [        [        U5      U5       H"  u  pVX%   n US   US   -   US   US   -   4X%'   M$     U $ [        [        U5      U5       H%  u  pVX%   nUb  Ub  Xv-   X%'   M  Ub  M  Uc  M!  XbU'   M'     U $ ! [         a    [        S5      ef = f)Nz7cannot sum TupleVariation deltas with different lengthsrJ   r   rL   z+cannot sum gvar deltas with inferred points)
Ú
isinstancer   ÚNotImplementedr   rW   r  rÇ   Úzipr´   rû   )r   r+   Údeltas1ÚlengthÚdeltas2r1   Úd2Úd1s           r   Ú__iadd__ÚTupleVariation.__iadd__‹  s  € Ü˜%¤×0Ñ0Ü!Ð!Ø×"Ñ"ˆÜ�W“ˆØ×#Ñ#ˆÜˆw‹<˜6Ó!ÜÐVÓWÐWð ×ÑÓ 1Ó$ÜœU 6›]¨GÖ4‘�Ø‘Z�ðTØ"$ Q¡%¨"¨Q©%¡-°°A±¸¸A¹±Ð!?�G“Jñ 5ð ˆô œU 6›]¨GÖ4‘�Ø‘Z�Ø‘> b¡nØ!#¡�G“JØ“Z B£NØ!#˜A“Jñ 5ð ˆøô !ó TÜ$Ð%RÓSÐSðTús   ÂC*Ã*D )r   r   ©Tr   )r   )g      à?F)"Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r(   r,   r4   r@   re   rm   r†   ru   rx   Ústaticmethodrš   rt   rÄ   r{   rÈ   rÑ   rÒ   rÓ   rÔ   rï   rô   rÇ   r  r  r  r  r  r)  Ú__static_attributes__r8   r   r   r   r   '   sE  † ò-òCòQò&ò<ò'òRVð. ,.¸ð&,ØOSö&,òP	 ò/ð& ñó ðð ñ>ó ð>ð@ ñ0ó ð0ôdð& ð4À$õ 4ó ð4ðl ñó ðð ó ó ð ðD ó1ó ð1ðf óó ðð2 óó ðð: ñó ðò
ò 
ò	
òOô6ò6õr   r   c                 ó€   • / n[        U5       H,  n[        R                  XU5      u  pcUR                  U5        M.     U$ r   )r´   r   rš   rw   )r^   ÚsharedTupleCountr—   r˜   r‹   Ú_Úts          r   ÚdecompileSharedTuplesr6  ­  s>   € Ø€FÜÐ#Ö$ˆÜ"×2Ñ2°8À6ÓJ‰	ˆØ�‰�aÖñ %ð €Mr   rL   c                 óà   • [        5       nU H   nUR                  U 5      nX5==   S-  ss'   M"     [        UR                  U5      S S9nU Vs/ s H  owS   S:”  d  M  US   PM     sn$ s  snf )NrL   c                 ó   • U S   * U S   4$ r  r8   )Úitems    r   Ú<lambda>Ú%compileSharedTuples.<locals>.<lambda>À  s   € ˜4 ™7˜( D¨¡GÑ,r   ©Úkeyr   )r	   ru   r$   Úmost_common)r^   Ú
variationsÚMAX_NUM_SHARED_COORDSÚ
coordCountÚvarrE   ÚsharedCoordsr;   s           r   ÚcompileSharedTuplesrD  µ  sy   € ô “€JÛˆØ× Ñ  Ó*ˆØÓ˜QÑÕñ ô
 Ø×ÑÐ4Ó5Ù,ñ€Lñ 'Ó3š,�Q¨A©$°©(‹DˆAˆaŒD™,Ñ3Ð3ùÒ3s   ÁA+Á	A+Tro   c                ót  ^^• A/ n/ nS n[        [        5      n	U  HF  n
U
R                  5       nUc  M  X›==   S-  ss'   UR                  U
5        UR                  U5        MH     Un AU (       d  g[	        U S   R
                  5      m[        U4S jU  5       5      (       d   S5       eU	 Vs0 s H  oÌ[        R                  U5      _M     snm[	        U 5      n/ n/ nU(       a>  U4S jn[        U	R                  5       US9S   nUR                  TU   5        U[        -  nU Vs/ s H  nX¸:w  a  TU   OSPM     nn[        X5       H<  u  n
nU
R                  X#UUS	9u  nnUR                  U5        UR                  U5        M>     SR                  U5      nSR                  U5      nXÞU4$ s  snf s  snf )
NrL   )r   r   r   r   c              3   óT   >#   • U  H  n[        UR                  5      T:H  v •  M     g 7fr   )rW   r   )r:   ÚvÚns     €r   r<   Ú-compileTupleVariationStore.<locals>.<genexpr>å  s"   øé € ð Ú)3 AŒˆA�M‰MÓ˜aÖªùs   ƒ%(z#Variation sets have different sizesc                 ó@   >• U S   nU S   n[        TU   5      US-
  -  $ )Nr   rL   )rW   )ÚpnÚpointSetÚcountÚcompiledPointss      €r   r=  Ú'compileTupleVariationStore.<locals>.keyó  s.   ø€ Ø˜!‘uˆHØ�q‘EˆEÜ�~ hÑ/Ó0°E¸A±IÑ>Ð>r   r<  r   )r€   rp   )r
   rX   r4   rw   rW   r   r  r   rt   rI   r%   ÚTUPLES_SHARE_POINT_NUMBERSr#  r†   r#   )r?  Ú
pointCountr^   ÚsharedTupleIndicesÚuseSharedPointsrp   ÚnewVariationsÚ
pointDatasÚsharedPointsÚpointSetCountrG  r£   rL  ÚtupleVariationCountÚtuplesr—   r=  r2   Ú	thisTupleÚthisDatarN  rH  s                       @@r   ÚcompileTupleVariationStorer\  Å  sï  ù€ ð 	Ø€MØ€Jà€Lô  ¤Ó$€MÛˆØ—‘Ó"ˆØ‰>ÙØÓ Ñ"ÓØ×Ñ˜QÔØ×Ñ˜&Ö!ñ ð €JØæØäˆJ�q‰M×%Ñ%Ó&€AÜô Ù)3ó÷ ñ ð -à,ó-ð ñ
 JWóÚIV¸X”.×.Ñ.¨xÓ8Ò8Éñ€Nô ˜j›/ÐØ€FØ€Dæõ	?ô
 ˜=×.Ñ.Ó0°cÑ:¸1Ñ=ˆà�‰�N <Ñ0Ô1ØÔ9Ñ9Ðñ
 !óâ ˆFð #)Ó"8ˆ�vÒ¸cÒAÙ ð ð ô
 �JÖ+‰ˆˆ1ØŸi™iØ°AÀLð (ð 
Ñˆ	�8ð 	�‰�iÔ Ø�‰�HÖñ ,ð �X‰X�fÓ€FØ�8‰8�D‹>€DØ¨Ð,Ð,ùòIùò*s   Â-F0Ä'F5c                 óp  • [        U5      n/ n	U[        -  S:w  a  [        R                  X5Xp5      u  p§O/ n
[	        U[
        -  5       Hj  n[        R                  " SXVUS-    5      u  pÍ[        R                  XØ5      nXVXn-    nXWX|-    nU	R                  [        UUU
U UUU5      5        Xn-  nX|-  nMl     U	$ )Nr   rr   rê   )rW   rP  r   rÄ   r´   ÚTUPLE_COUNT_MASKr}   r–   rô   rw   ÚdecompileTupleVariation_)r¼   r^   rX  rQ  ÚsharedTuplesr—   r™   ÚdataPosÚnumAxesr‹   rV  r4  ÚdataSizer„   Ú	tupleSizer�   ÚpointDeltaDatas                    r   ÚdecompileTupleVariationStorerf    sÝ   € ô �(‹m€GØ€FØÔ8Ñ8¸QÓ>Ü .× ?Ñ ?Ø˜gó!
Ñˆ�gð ˆÜÐ&Ô)9Ñ9Ö:ˆÜ Ÿ-š-¨¨t¸#À¹'Ð/BÓC‰ˆÜ"×0Ñ0°Ó@ˆ	Ø˜s™Ð/ˆ	Ø¨Ñ(:Ð;ˆØ�‰Ü$ØØØØØØØóô
	
ð 	ÑˆØÑŠñ# ;ð$ €Mr   c                 ó´  • US;   d   U5       e[         R                  " SUSS 5      S   nSnU[        -  S:X  a  X[        -     n	O[        R                  XEU5      u  p˜U[        -  S:w  a1  [        R                  XEU5      u  p¨[        R                  XEU5      u  p¸O[        U	5      u  p«0 nU H  nX­   X�   X½   4nUS:w  d  M  XìU'   M     SnU[        -  S:w  a  [        R                  XXƒ5      u  pøOUnS /U -  nUS:X  aQ  [        R                  [        U5      Xh5      u  nn[        UU5       H  u  nnSUs=::  a  U :  d  M  O  M  UUU'   M      O|US:X  av  [        R                  [        U5      Xh5      u  nn[        R                  [        U5      Xh5      u  nn[        UUU5       H!  u  nnnSUs=::  a  U :  d  M  O  M  UU4UU'   M#     [	        UU5      $ )	Nr­   z>HrJ   rê   r   r�   r®   r¯   )r}   r–   rv   ÚTUPLE_INDEX_MASKr   rš   ry   ÚinferRegion_rz   rÄ   rï   rW   r#  )rQ  r`  rV  r¼   r^   r—   r�   r„   r™   ÚpeakÚstartÚendr   rG   Úregionr£   rÕ   Ú
deltas_cvtr2   rK   Údeltas_xÚdeltas_yrN   rO   s                           r   r_  r_  7  sð  € ð Ð'Ó'Ð1¨Ó1Ð'Ü�MŠM˜$  Q q 	Ó*¨1Ñ-€EØ
€CØÔ#Ñ#¨Ó)ØÔ$4Ñ4Ñ5‰ä"×2Ñ2°8À3ÓG‰	ˆØÔ#Ñ#¨Ó)Ü#×3Ñ3°HÀCÓH‰
ˆÜ!×1Ñ1°(À#ÓF‰ˆˆSä! $Ó'‰
ˆØ€DÛˆØ‘˜d™j¨#©)Ð3ˆØ�_Õ$Ø�‹Jñ ð €CØÔ%Ñ%¨!Ó+Ü$×5Ñ5Ø 3ó
‰ˆ�ð ˆàˆV�jÑ €Fà�6ÓÜ(×9Ñ9¼#¸f»+ÀyÓV‰ˆ
�CÜ˜F JÖ/‰HˆAˆuØ�AÕ"˜
×"Ñ"Ø!��q“	ò 0ð 
�VÓ	Ü&×7Ñ7¼¸F»ÀYÓT‰ˆ�#Ü&×7Ñ7¼¸F»ÀYÓT‰ˆ�#Ü˜6 8¨XÖ6‰GˆAˆq�!Ø�AÕ"˜
×"Ñ"Ø ˜F��q“	ñ 7ô ˜$ Ó'Ð'r   c                 óx   • 0 0 p!U R                  5        H!  u  p4[        US5      X'   [        US5      X#'   M#     X4$ )aÎ  Infer start and end for a (non-intermediate) region

This helper function computes the applicability region for
variation tuples whose INTERMEDIATE_REGION flag is not set in the
TupleVariationHeader structure.  Variation tuples apply only to
certain regions of the variation space; outside that region, the
tuple has no effect.  To make the binary encoding more compact,
TupleVariationHeaders can omit the intermediateStartTuple and
intermediateEndTuple fields.
rD   )r%   rH   rI   )rj  rk  rl  rG   r'   s        r   ri  ri  e  sA   € ð �Rˆ3Ø—z‘z–|‰ˆÜ˜% “oˆ‰Ü˜˜s“Oˆ‹	ñ $ð ˆ<Ðr   r+  ),ÚfontTools.misc.fixedToolsr   r•   r   rŠ   r   rU   r   rh   r   ÚfontTools.misc.textToolsr   rµ   Úcollectionsr	   r
   ÚioÚloggingr}   r·   rv   ry   rz   rÛ   râ   rç   rì   rë   r¢   r³   rP  r^  rh  Ú	getLoggerr,  rY   Úobjectr   r6  rD  r\  rf  r_  ri  r8   r   r   Ú<module>ry     sÑ   ð÷õ õ .Û ß ,Û 	Û Û Û 
ð
 Ð ØÐ ØÐ à€ØÐ ØÐ ØÐ ØÐ àÐ ØÐ à#Ð ØÐ ØÐ à×Ò˜Ó!€ôC
�Vô C
òLð 1AÀ1Ñ0Dô4ð* ðH-ð öH-òV$òN+(ó\r   