ó
    oñ:iÌ©  ã                   ó   • S r SSKJrJrJrJr  SSKJrJrJ	r	J
r
  SSKJr  SSKrSSKr\R                  " \5      rS rS rS rS	 rS
 rS rS rS rS rS/S-  rS\/-  \SS& S\/-  \SS& S\/-  \SS& S\/-  \SS& \\S'   \" \5      S:X  d   e\SS r\\S'   \\S'   \SS r\\S'   \\S'   \\S'   / SQr\ " \5       V Vs0 s H  u  pX_M	     snn r!Sr"S r#/ SQr$S r%\%" S5      r&\%" S5      r'\%" S 5      r(\RR                  4S! jr*\" S5      \" S"5      -   r+S# r, " S$ S%\-5      r. " S& S'\/5      r0/ S(Qr1 " S) S*\05      r2 " S+ S,\05      r3 " S- S.\35      r4 " S/ S0\45      r5 " S1 S2\/5      r6 " S3 S4\65      r7 " S5 S6\/5      r8S7 r9gs  snn f )8zwpsCharStrings.py -- module implementing various kinds of CharStrings:
CFF dictionary data and Type1/Type2 CharStrings.
é    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloat)ÚbytechrÚbyteordÚ	bytesjoinÚstrjoin)Ú	BoundsPenNc                 ó¬   • US:X  a  U[        X#   5      4nUS-   nOUn U R                  U   nU R                  U5      nXc4$ ! [         a    S U4s $ f = f)Né   é   )r   Ú	operatorsÚKeyErrorÚhandle_operator)ÚselfÚb0ÚdataÚindexÚopÚoperatorÚvalues          Ú_/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/misc/psCharStrings.pyÚread_operatorr      sp   € Ø	ˆRƒxØ”'˜$™+Ó&Ð'ˆØ˜‘	‰àˆðØ—>‘> "Ñ%ˆð × Ñ  Ó*€EØˆ<Ðøô ó Ø�Uˆ{Òðús   ŸA ÁAÁAc                 ó   • US-
  U4$ )Né‹   © ©r   r   r   r   s       r   Ú	read_byter   "   s   € Ø�‰8�Uˆ?Ðó    c                 óB   • [        X#   5      nUS-
  S-  U-   S-   US-   4$ )Né÷   é   él   r   ©r   ©r   r   r   r   Úb1s        r   Úread_smallInt1r(   &   s0   € Ü	�‘Ó	€BØ�‰H˜Ñ˜bÑ  3Ñ&¨°©	Ð1Ð1r    c                 óD   • [        X#   5      nUS-
  * S-  U-
  S-
  US-   4$ )Néû   r#   r$   r   r%   r&   s        r   Úread_smallInt2r+   +   s2   € Ü	�‘Ó	€BØ�#‰Xˆ;˜Ñ˜rÑ! CÑ'¨°©Ð2Ð2r    c                 óJ   • [         R                  " SX#US-    5      u  nXCS-   4$ )Nú>hé   ©ÚstructÚunpack©r   r   r   r   r   s        r   Úread_shortIntr3   0   ó*   € Ü�}Š}˜T 4°¸±	Ð#:Ó;�H€UØ˜!‘)ÐÐr    c                 óJ   • [         R                  " SX#US-    5      u  nXCS-   4$ )Nú>lé   r/   r2   s        r   Úread_longIntr8   5   r4   r    c                 ó\   • [         R                  " SX#US-    5      u  n[        USS9US-   4$ )Nr6   r7   é   ©ÚprecisionBits)r0   r1   r   r2   s        r   Úread_fixed1616r=   :   s3   € Ü�}Š}˜T 4°¸±	Ð#:Ó;�H€UÜ˜¨RÑ0°%¸!±)Ð;Ð;r    c                 ó,   • [         (       d   e[        U4$ ©N)ÚNotImplementedErrorÚNotImplementedr   s       r   Úread_reservedrB   ?   s   € ßÒÐÐÜ˜5Ð Ð r    c                 ó°   • Sn [        X#   5      nUS-   nUS-  S-	  nUS-  nUS:X  a  O!U[        U   -   nUS:X  a  OU[        U   -   nMG  [        U5      U4$ )NÚ r   éð   r7   é   )r   ÚrealNibblesÚfloat)r   r   r   r   ÚnumberÚbÚnibble0Únibble1s           r   Úread_realNumberrM   D   s}   € Ø€FØ
Ü�D‘KÓ ˆØ˜‘	ˆØ�t‘8 ‘/ˆØ�d‘(ˆØ�c‹>ØØœ+ gÑ.Ñ.ˆØ�c‹>ØØœ+ gÑ.Ñ.ˆñ ô �‹=˜%ÐÐr    r#   é    é×   r"   r7   r*   éÿ   é   é   é   )Ú0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9Ú.ÚEúE-NÚ-éÁ   c                 óÈ   • 0 n0 nU  HV  n[        U5      S:X  a  US   XS   '   O
USS  XS   '   [        US   [        5      (       a  US   X#S   '   MK  US   4X#S   '   MX     X4$ )Nr.   r   r   )ÚlenÚ
isinstanceÚtuple)ÚoperatorListÚoperÚopcÚitems       r   ÚbuildOperatorDictrk   |   s|   € Ø€DØ
€CÛˆÜˆt‹9˜‹>Ø  ™GˆD�a‘ŠMà   ˜HˆD�a‘‰MÜ�d˜1‘gœu×%Ñ%Ø ™7ˆC�Q‘‹Là  ™G˜:ˆC�Q‘‹Lñ ð ˆ9Ðr    )4©r   Úhstem©é   Úvstem©r7   Úvmoveto©é   Úrlineto©é   Úhlineto©é   Úvlineto©é   Ú	rrcurveto©é
   Úcallsubr©é   Úreturn©é   Úendchar)rF   Úvsindex)r:   Úblend)é   Úhstemhm)é   Úhintmask)é   Úcntrmask©é   Úrmoveto©é   Úhmoveto)é   Úvstemhm)é   Ú
rcurveline)é   Ú
rlinecurve)é   Ú	vvcurveto)é   Ú	hhcurveto)rR   Ú	callgsubr©rS   Ú	vhcurveto©é   Ú	hvcurveto)©r   r   Úignore))r   ro   Úand))r   r7   Úor))r   rt   Únot))r   r}   Ústore))r   é	   Úabs))r   r€   Úadd))r   rƒ   Úsub©)r   r   Údiv))r   é   Úload))r   r†   Úneg))r   rF   Úeq))r   rŠ   Údrop))r   rŽ   Úput))r   r‘   Úget))r   r”   Úifelse))r   r–   Úrandom))r   r˜   Úmul))r   rœ   Úsqrt))r   rž   Údup))r   rQ   Úexch))r   rR   r   ))r   rS   Úroll))r   é"   Úhflex))r   é#   Úflex))r   é$   Úhflex1))r   é%   Úflex1c                 óæ   • U S:X  a  [        S5      n[        S5      nO)U S:X  a  S n[        S5      nOU S:X  d   e[        S5      nS nU[         [        R                  [        R                  U4S jnU$ )NÚcffrQ   rR   Út1rP   Út2c                 ó´  • SU s=::  a  S::  a  O  OU" U S-   5      nU$ SU s=::  a  S::  a$  O  O!U S-
  n U" U S-	  S-   5      U" U S-  5      -   nU$ S	U s=::  a  S
::  a%  O  O"U * S-
  n U" U S-	  S-   5      U" U S-  5      -   nU$ Ub  SU s=::  a  S::  a  O  OXS" SU 5      -   nU$ Uc)  [         R                  S5        U" S5      U" SU 5      -   nU$ X" SU 5      -   nU$ )Ni•ÿÿÿék   r   r$   ék  r}   r"   rP   i•ûÿÿi”ÿÿÿr*   i €ÿÿiÿ  r-   zk4-byte T2 number got passed to the IntType handler. This should happen only when reading in old XML files.
r6   )ÚlogÚwarning)r   Ú
fourByteOpr   Úpackr1   Ú	twoByteOpÚcodes          r   Ú	encodeIntÚ getIntEncoder.<locals>.encodeIntÒ   s%  € ð �5Õ˜CÖÙ˜5 3™;Ó'ˆDð4 ˆð3 �EÕ!˜TÖ!Ø˜C‘KˆEÙ˜E Q™J¨#Ñ-Ó.±¸À¹Ó1FÑFˆDð. ˆð- �eÕ#˜tÖ#Ø�F˜S‘LˆEÙ˜E Q™J¨#Ñ-Ó.±¸À¹Ó1FÑFˆDð( ˆð' Ñ" v°Õ'?¸%Ö'?Ø˜t D¨%Ó0Ñ0ˆDð$ ˆð# Ñô �K‰Kð#ôñ
 ˜3“<¡$ t¨UÓ"3Ñ3ˆDð ˆð   T¨5Ó 1Ñ1ˆDØˆr    )r   r0   rÒ   r1   )ÚformatrÓ   rÑ   rÕ   s       r   ÚgetIntEncoderrØ   Æ   sq   € Ø�ƒÜ˜B“Kˆ	Ü˜R“[‰
Ø	�4‹Øˆ	Ü˜S“\‰
à˜‹~Ðˆ~Ü˜B“Kˆ	Øˆ
ð ÜÜ�[‰[Ü�}‰}Øô#ðJ Ðr    rÉ   rÊ   rË   c                 ó\   • [        U SS9nUS-  S:X  a  [        US-	  5      $ SU" SU5      -   $ )zFor T2 onlyr:   r;   iÿÿ  r   ó   ÿr6   )r   ÚencodeIntT2)ÚfrÒ   r   s      r   ÚencodeFixedrÝ   ÿ   s;   € ä˜¨"Ñ-€EØˆv�~˜ÓÜ˜5 B™;Ó'Ð'à™˜d EÓ*Ñ*Ð*r    rF   c                 ó8  • U S:X  a  [         $ SU -  nUS S S:X  a  USS  nOÅUS S S:X  a	  SUSS  -   nO³UR                  S	5      (       a.  UR                  S
5      nSU[        U5      [        U5      -
  4-  nOoUR	                  S5      nUR	                  S5      nUS:w  aG  US:w  aA  US U nXS-   U n[        XS-   S  5      nU[        U5      -
  nUS:X  a
  U< U< S
3nOSXVU4-  nUR                  S5      (       a3  UR                  SS5      u  p‘SX‘R                  S
5      [        U5      4-  n/ n
U(       aj  US   nUSS  nUS:X  a9  US S nUS:X  a  USS  nSnOUS:X  a  USS  nUR                  S
5      (       a  USS  nU
R                  [        U   5        U(       a  Mj  U
R                  S5        [        U
5      S-  (       a  U
R                  S5        [        S5      n[        S[        U
5      S5       H  nU[        X®   S-  X®S-      -  5      -   nM      U$ )Ng        z%.8Gr.   z0.r   ro   z-0.ra   Ú000rT   z%sE%dr^   r_   éÿÿÿÿz%s%sE%d)z.0z-.0z%s%sE-%dr   r`   Ú+rF   rS   r7   )ÚrealZeroBytesÚendswithÚrstriprd   ÚfindÚintÚ
startswithÚsplitÚlstripÚappendÚrealNibblesDictr   Úrange)rÜ   ÚsÚsignificantDigitsÚdotIndexÚeIndexÚintegerPartÚfractionalPartÚexponentÚnewExponentÚsignÚnibblesÚcÚc2ÚdÚis                  r   ÚencodeFloatrû     s;  € àˆCƒxÜÐð 	�‰
€AØˆˆ!€u�ƒ}ØˆaˆbˆE‰Ø	
ˆ2ˆAˆ�%‹Ø�!�A�B�%‰K‰Ø	
�‰�E×	Ñ	ØŸH™H S›MÐØÐ(¬#¨a«&´3Ð7HÓ3IÑ*IÐJÑJ‰à—6‘6˜#“;ˆØ—‘˜“ˆØ�r‹>˜f¨›lØ˜I˜X˜,ˆKØ¨!™|¨fÐ5ˆNÜ˜1 a™Z˜\˜?Ó+ˆHØ"¤S¨Ó%8Ñ8ˆKØ˜aÓÚ*«NÐ;‘à ¸kÐ JÑJ�Ø‡|�|�M×"Ñ"Ø—'‘'˜#˜q“/‰ˆØ˜$§¡¨£¬s°1«vÐ6Ñ6ˆØ€GÞ
Øˆa‰DˆØˆaˆbˆEˆØ�‹8Ø�2�A�ˆBØ�S‹yØ�a�b�E�Ø‘Ø�s“Ø�a�b�E�Ø�|‰|˜C× Ñ Ø�a�b�E�Ø�‰” qÑ)Ô*÷ ˆ!ð ‡N�N�3ÔÜ
ˆ7ƒ|�a×Ø�‰�sÔÜ�‹€AÜ�1”c˜'“l AÖ&ˆØ”˜™
 a™¨'°a±%©.Ñ8Ó9Ñ9Šñ 'à€Hr    c                   ó   • \ rS rSrSrg)ÚCharStringCompileErrori?  r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   r    r   rý   rý   ?  s   † Úr    rý   c                   ó  • \ rS rSrS.S jrS rSS.S jrS rS rS	 r	S
 r
S rS rS rS rS rS rS rS rS r\rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-S-r.g)/ÚSimpleT2DecompileriC  Nc                 ó”   • Xl         [        U5      U l        X l        [        U5      U l        X0l        X@l        U R                  5         g r?   )Ú
localSubrsÚcalcSubrBiasÚ	localBiasÚglobalSubrsÚ
globalBiasÚprivateÚblenderÚreset)r   r  r	  r  r  s        r   Ú__init__ÚSimpleT2Decompiler.__init__D  s8   € Ø$ŒÜ% jÓ1ˆŒØ&ÔÜ& {Ó3ˆŒØŒØŒØ�
‰
�r    c                 óX   • / U l         / U l        SU l        SU l        SU l        SU l        g ©Nr   )ÚcallingStackÚoperandStackÚ	hintCountÚhintMaskBytesÚ
numRegionsÚvsIndex©r   s    r   r  ÚSimpleT2Decompiler.resetM  s/   € ØˆÔØˆÔØˆŒØˆÔØˆŒØˆ�r    ©ÚpushToStackc                óò  • U R                   R                  U5        UR                  5       nU(       a  / nUR                  nOS nUc  U R                  R                  nSn UR	                  U5      u  pxnUc  OZU" U5        U(       aA  SU-   n	[        X	S 5      n
U
b  U
" U5      nU(       a  Uu  pÆU" U5        OU R                  5         OU" U5        Mr  U(       a  UR                  W5        U R                   S	 g )Nc                 ó   • g r?   r   )Úxs    r   Ú<lambda>Ú,SimpleT2Decompiler.execute.<locals>.<lambda>\  s   €  dr    r   Úop_rà   )r  rê   ÚneedsDecompilationr  ÚgetTokenÚgetattrÚpopallÚ
setProgram)r   Ú
charStringr  r"  ÚprogramÚpushToProgramr   ÚtokenÚ
isOperatorÚhandlerNameÚhandlerÚrvr  s                r   ÚexecuteÚSimpleT2Decompiler.executeU  sñ   € Ø×Ñ× Ñ  Ô,Ø'×:Ñ:Ó<ÐÞØˆGØ#ŸN™N‰Má*ˆMØÑØ×+Ñ+×2Ñ2ˆKØˆØØ'1×':Ñ':¸5Ó'AÑ$ˆE˜uØ‰}ØÙ˜%Ô ÞØ# e™m�Ü! $°TÓ:�ØÑ&Ù  ›�BÞØ/1Ñ,˜Ù% mÔ4øà—K‘K•Má˜EÔ"ñ! ö" Ø×!Ñ! 'Ô*Ø×Ñ˜bÑ!r    c                 ó>   • U R                   S   nU R                   S	 U$ ©Nrà   ©r  ©r   r   s     r   ÚpopÚSimpleT2Decompiler.popu  s%   € Ø×!Ñ! "Ñ%ˆØ×Ñ˜bÐ!Øˆr    c                 óB   • U R                   S S  n/ U R                   S S & U$ r?   r3  ©r   Ústacks     r   r%  ÚSimpleT2Decompiler.popallz  s'   € Ø×!Ñ!¡!Ð$ˆØ!ˆ×Ñ™!ÐØˆr    c                 ó:   • U R                   R                  U5        g r?   )r  rê   r4  s     r   ÚpushÚSimpleT2Decompiler.push  s   € Ø×Ñ× Ñ  Õ'r    c                 ó(   • U R                   (       a  g g r?   r3  ©r   r   s     r   Ú	op_returnÚSimpleT2Decompiler.op_return‚  s   € Ø××Øð r    c                 ó   • g r?   r   r?  s     r   Ú
op_endcharÚSimpleT2Decompiler.op_endchar†  ó   € Ør    c                 ó   • g r?   r   r?  s     r   Ú	op_ignoreÚSimpleT2Decompiler.op_ignore‰  rE  r    c                 ó|   • U R                  5       nU R                  X R                  -      nU R                  U5        g r?   )r5  r  r  r/  ©r   r   Ú	subrIndexÚsubrs       r   Úop_callsubrÚSimpleT2Decompiler.op_callsubrŒ  s.   € Ø—H‘H“Jˆ	Ø�‰˜y¯>©>Ñ9Ñ:ˆØ�‰�TÕr    c                 ó|   • U R                  5       nU R                  X R                  -      nU R                  U5        g r?   )r5  r	  r
  r/  rJ  s       r   Úop_callgsubrÚSimpleT2Decompiler.op_callgsubr‘  s0   € Ø—H‘H“Jˆ	Ø×Ñ 	¯O©OÑ ;Ñ<ˆØ�‰�TÕr    c                 ó$   • U R                  5         g r?   ©Ú
countHintsr?  s     r   Úop_hstemÚSimpleT2Decompiler.op_hstem–  ó   € Ø�‰Õr    c                 ó$   • U R                  5         g r?   rS  r?  s     r   Úop_vstemÚSimpleT2Decompiler.op_vstem™  rW  r    c                 ó$   • U R                  5         g r?   rS  r?  s     r   Ú
op_hstemhmÚSimpleT2Decompiler.op_hstemhmœ  rW  r    c                 ó$   • U R                  5         g r?   rS  r?  s     r   Ú
op_vstemhmÚSimpleT2Decompiler.op_vstemhmŸ  rW  r    c                 óÌ   • U R                   (       d'  U R                  5         U R                  S-   S-  U l         U R                  S   R	                  XR                   5      u  p!X!4$ )Nrz   r}   rà   )r  rT  r  r  ÚgetBytes)r   r   r  s      r   Úop_hintmaskÚSimpleT2Decompiler.op_hintmask¢  sX   € Ø×!×!Ø�O‰OÔØ"&§.¡.°1Ñ"4¸Ñ!:ˆDÔØ#×0Ñ0°Ñ4×=Ñ=¸e×EWÑEWÓXÑˆØÐ#Ð#r    c                 ód   • U R                  5       nU R                  [        U5      S-  -   U l        g ©Nr.   )r%  r  rd   ©r   Úargss     r   rT  ÚSimpleT2Decompiler.countHints«  s%   € Ø�{‰{‹}ˆØŸ™¬#¨d«)°q©.Ñ8ˆ�r    c                 ó   • [         er?   ©r@   r?  s     r   Úop_andÚSimpleT2Decompiler.op_and°  ó   € Ü!Ð!r    c                 ó   • [         er?   rk  r?  s     r   Úop_orÚSimpleT2Decompiler.op_or³  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_notÚSimpleT2Decompiler.op_not¶  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_storeÚSimpleT2Decompiler.op_store¹  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_absÚSimpleT2Decompiler.op_abs¼  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_addÚSimpleT2Decompiler.op_add¿  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_subÚSimpleT2Decompiler.op_subÂ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_divÚSimpleT2Decompiler.op_divÅ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_loadÚSimpleT2Decompiler.op_loadÈ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_negÚSimpleT2Decompiler.op_negË  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_eqÚSimpleT2Decompiler.op_eqÎ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_dropÚSimpleT2Decompiler.op_dropÑ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_putÚSimpleT2Decompiler.op_putÔ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_getÚSimpleT2Decompiler.op_get×  rn  r    c                 ó   • [         er?   rk  r?  s     r   Ú	op_ifelseÚSimpleT2Decompiler.op_ifelseÚ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Ú	op_randomÚSimpleT2Decompiler.op_randomÝ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_mulÚSimpleT2Decompiler.op_mulà  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_sqrtÚSimpleT2Decompiler.op_sqrtã  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_dupÚSimpleT2Decompiler.op_dupæ  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_exchÚSimpleT2Decompiler.op_exché  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_indexÚSimpleT2Decompiler.op_indexì  rn  r    c                 ó   • [         er?   rk  r?  s     r   Úop_rollÚSimpleT2Decompiler.op_rollï  rn  r    c                 ó   • U R                   S:X  a  U R                  R                  5       U l         U R                  5       nX R                   S-   -  nU R                  c  U R
                  X2-
  * S 2	 g [        U R
                  5      U-
  nXB-   =pVXE:  a]  X`R                   -   nU R
                  Xg nU R	                  U R                  U5      n	U R
                  U==   U	-  ss'   UnUS-  nXE:  a  M]  / U R
                  US & g ©Nr   r   )r  r  ÚgetNumRegionsr5  r  r  rd   r  )
r   r   Ú	numBlendsÚnumOpsÚargiÚend_argsÚtupleiÚnext_tiÚdeltasÚdeltas
             r   Úop_blendÚSimpleT2Decompiler.op_blendò  sø   € Ø�?‰?˜aÓØ"Ÿl™l×8Ñ8Ó:ˆDŒOØ—H‘H“Jˆ	ØŸo™o°Ñ1Ñ2ˆØ�<‰<ÑØ×!Ñ!ØÑ$Ð%Ñ'ñô �t×(Ñ(Ó)¨FÑ2ˆDØ $Ñ 0Ð0ˆHØ“/Ø §?¡?Ñ2�Ø×*Ñ*¨6Ð:�ØŸ™ T§\¡\°6Ó:�Ø×!Ñ! $Ó'¨5Ñ0Ó'Ø �Ø˜‘	�ð •/ð ,.ˆD×Ñ˜h˜iÑ(r    c                 óp   • U R                  5       nX l        U R                  R                  U5      U l        g r?   )r5  r  r  r°  r  )r   r   Úvis      r   Ú
op_vsindexÚSimpleT2Decompiler.op_vsindex  s(   € Ø�X‰X‹ZˆØŒØŸ,™,×4Ñ4°RÓ8ˆ�r    )r  r  r
  r	  r  r  r  r  r  r  r  r  ©NN)/rþ   rÿ   r   r  r  r  r/  r5  r%  r<  r@  rC  rG  rM  rP  rU  rY  r\  r_  rc  Úop_cntrmaskrT  rl  rp  rs  rv  ry  r|  r  r‚  r…  rˆ  r‹  rŽ  r‘  r”  r—  rš  r�  r   r£  r¦  r©  r¬  r¹  r½  r  r   r    r   r  r  C  sÜ   † ôòð 26õ "ò@ò
ò
(òòòòò
ò
òòòò$ð €Kò9ò
"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò.õ*9r    r  )rl   rn   rq   rs   rv   ry   r|   )r¬   Ú	closepathr   r‚   )r²   Úhsbwr…   r�   r“   r¡   r£   )r¦   Ú
dotsection))r   r   Úvstem3))r   r.   Úhstem3))r   rw   Úseac))r   rz   Úsbwr°   ))r   r:   Úcallothersubr))r   é   r5  ))r   é!   Úsetcurrentpointc                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )ÚT2StackUseExtractori+  c                 ó8   >^ ^• SmUU 4S jn[         TT ]  XS9  T$ )Nr   c                 óz   >• TR                   R                  U 5        [        T[        TR                   5      5      mg r?   )r  rê   Úmaxrd   )r   ÚmaxStackUser   s    €€r   r  Ú0T2StackUseExtractor.execute.<locals>.pushToStack0  s.   ø€ à×Ñ×$Ñ$ UÔ+Ü˜k¬3¨t×/@Ñ/@Ó+AÓB‰Kr    r  )Úsuperr/  )r   r'  r  rÑ  Ú	__class__s   `  @€r   r/  ÚT2StackUseExtractor.execute-  s$   ú€ Øˆö	Cô
 	‰‰˜
ˆÑ<ØÐr    r   )rþ   rÿ   r   r  r/  r  Ú__classcell__©rÔ  s   @r   rÍ  rÍ  +  s   ø† ÷	ó 	r    rÍ  c                   óP   • \ rS rSr  SS jrS rSS jrS rS rS r	S	 r
S
 rSrg)ÚT2WidthExtractori9  Nc                 óJ   • [         R                  XX%U5        X0l        X@l        g r?   )r  r  ÚnominalWidthXÚdefaultWidthX)r   r  r	  rÛ  rÜ  r  r  s          r   r  ÚT2WidthExtractor.__init__:  s"   € ô 	×#Ñ# D°kÈGÔTØ*ÔØ*Õr    c                 óJ   • [         R                  U 5        SU l        SU l        g r  )r  r  ÚgotWidthÚwidthr  s    r   r  ÚT2WidthExtractor.resetG  s   € Ü× Ñ  Ô&ØˆŒØˆ�
r    c                 ó  • U R                  5       nU R                  (       d_  U[        U5      S-  -  (       a1  U R                  c   S5       eU R                  US   -   U l        USS  nOU R                  U l        SU l        U$ )Nr.   z5CFF2 CharStrings must not have an initial width valuer   r   )r%  rß  rd   rÜ  rÛ  rà  )r   ÚevenOddrh  s      r   ÚpopallWidthÚT2WidthExtractor.popallWidthL  s~   € Ø�{‰{‹}ˆØ�}�}Øœ#˜d›) a™-×(ð ×&Ñ&Ñ2ðKàJóKØ2à!×/Ñ/°$°q±'Ñ9�”
Ø˜A˜B�x‘à!×/Ñ/�”
ØˆDŒMØˆr    c                 ód   • U R                  5       nU R                  [        U5      S-  -   U l        g rf  )rä  r  rd   rg  s     r   rT  ÚT2WidthExtractor.countHints[  s(   € Ø×ÑÓ!ˆØŸ™¬#¨d«)°q©.Ñ8ˆ�r    c                 ó$   • U R                  5         g r?   ©rä  r?  s     r   Ú
op_rmovetoÚT2WidthExtractor.op_rmoveto_  ó   € Ø×ÑÕr    c                 ó&   • U R                  S5        g ©Nr   ré  r?  s     r   Ú
op_hmovetoÚT2WidthExtractor.op_hmovetob  ó   € Ø×Ñ˜Õr    c                 ó&   • U R                  S5        g rî  ré  r?  s     r   Ú
op_vmovetoÚT2WidthExtractor.op_vmovetoe  rñ  r    c                 ó$   • U R                  5         g r?   ré  r?  s     r   rC  ÚT2WidthExtractor.op_endcharh  rì  r    )rÜ  rß  r  rÛ  rà  r¿  ©r   )rþ   rÿ   r   r  r  r  rä  rT  rê  rï  ró  rC  r  r   r    r   rÙ  rÙ  9  s2   † ð Øô+òô
ò9òòòõr    rÙ  c                   ób  ^ • \ rS rSr  S7S jrS rU 4S jrS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6r8U =r9$ )8ÚT2OutlineExtractoril  c           	      óT   • [         R                  U UUUUUU5        Xl        SU l        g r  )rÙ  r  ÚpenÚ	subrLevel)r   rû  r  r	  rÛ  rÜ  r  r  s           r   r  ÚT2OutlineExtractor.__init__m  s5   € ô 	×!Ñ!ØØØØØØØô	
ð ŒØˆ�r    c                 óX   • [         R                  U 5        SU l        SU l        SU l        g )N©r   r   r   )rÙ  r  ÚcurrentPointÚ	sawMoveTorü  r  s    r   r  ÚT2OutlineExtractor.resetƒ  s&   € Ü×Ñ˜tÔ$Ø"ˆÔØˆŒØˆ�r    c                 óº   >• U =R                   S-  sl         [        TU ]	  U5        U =R                   S-  sl         U R                   S:X  a  U R                  5         g g ©Nr   r   )rü  rÓ  r/  ÚendPath)r   r'  rÔ  s     €r   r/  ÚT2OutlineExtractor.execute‰  sE   ø€ Ø�Š˜!Ñ�Ü‰‰˜
Ô#Ø�Š˜!Ñ�Ø�>‰>˜QÓØ�L‰L�Nð r    c                 óJ   • U R                   u  p#X!S   -   X1S   -   4nXl         U$ r¯  )r   )r   Úpointr  Úys       r   Ú
_nextPointÚT2OutlineExtractor._nextPoint�  s0   € Ø× Ñ ‰ˆØ˜!‘H‘˜a¨¡(™lÐ*ˆØ!ÔØˆr    c                 óf   • U R                   R                  U R                  U5      5        SU l        g rî  )rû  ÚmoveTor
  r  ©r   r  s     r   ÚrMoveToÚT2OutlineExtractor.rMoveTo–  s"   € Ø�‰�‰˜Ÿ™¨Ó.Ô/Øˆ�r    c                 óœ   • U R                   (       d  U R                  S5        U R                  R                  U R	                  U5      5        g ©Nrÿ  )r  r  rû  ÚlineTor
  r  s     r   ÚrLineToÚT2OutlineExtractor.rLineToš  s.   € Ø�~�~Ø�L‰L˜Ô Ø�‰�‰˜Ÿ™¨Ó.Õ/r    c                 ó¾   • U R                   (       d  U R                  S5        U R                  nU R                  R	                  U" U5      U" U5      U" U5      5        g r  )r  r  r
  rû  ÚcurveTo)r   Úpt1Úpt2Úpt3Ú	nextPoints        r   ÚrCurveToÚT2OutlineExtractor.rCurveToŸ  s@   € Ø�~�~Ø�L‰L˜Ô Ø—O‘Oˆ	Ø�‰×Ñ™ 3›©°3«¹À3»ÕHr    c                 óh   • U R                   (       a  U R                  R                  5         SU l         g r  )r  rû  Ú	closePathr  s    r   r  ÚT2OutlineExtractor.closePath¥  s    € Ø�>�>Ø�H‰H×ÑÔ Øˆ�r    c                 óH   • U R                   (       a  U R                  5         g g r?   )r  r  r  s    r   r  ÚT2OutlineExtractor.endPathª  s   € ð
 �>�>Ø�N‰NÕð r    c                 ób   • U R                  5         U R                  U R                  5       5        g r?   ©r  r  rä  r?  s     r   rê  ÚT2OutlineExtractor.op_rmovetoÅ  s    € Ø�‰ŒØ�‰�T×%Ñ%Ó'Õ(r    c                 ón   • U R                  5         U R                  U R                  S5      S   S45        g r  r$  r?  s     r   rï  ÚT2OutlineExtractor.op_hmovetoÉ  s,   € Ø�‰ŒØ�‰�d×&Ñ& qÓ)¨!Ñ,¨aÐ0Õ1r    c                 ón   • U R                  5         U R                  SU R                  S5      S   45        g r¯  r$  r?  s     r   ró  ÚT2OutlineExtractor.op_vmovetoÍ  s,   € Ø�‰ŒØ�‰�a˜×)Ñ)¨!Ó,¨QÑ/Ð0Õ1r    c           	      óô   • U R                  5         U R                  5       nU(       aQ  SSKJn  Uu  pEpgX6   nU R                  R                  US5        X7   n	U R                  R                  U	SSSSXE45        g g )Nr   ©ÚStandardEncoding©r   r   r   r   r   r   r   )r  rä  Ú$fontTools.encodings.StandardEncodingr,  rû  ÚaddComponent)
r   r   rh  r,  ÚadxÚadyÚbcharÚacharÚ	baseGlyphÚaccentGlyphs
             r   rC  ÚT2OutlineExtractor.op_endcharÑ  st   € Ø�‰ŒØ×ÑÓ!ˆÞÝMð &*Ñ"ˆC�eØ(Ñ/ˆIØ�H‰H×!Ñ! )Ð-?Ô@Ø*Ñ1ˆKØ�H‰H×!Ñ! +°°1°a¸¸CÐ/EÕFð r    c                 óŽ   • U R                  5       n[        S[        U5      S5       H  nX#US-    nU R                  U5        M     g )Nr   r.   )r%  rì   rd   r  )r   r   rh  rú   r  s        r   Ú
op_rlinetoÚT2OutlineExtractor.op_rlinetoâ  s=   € Ø�{‰{‹}ˆÜ�qœ#˜d›) QÖ'ˆAØ˜Q ™U�OˆEØ�L‰L˜Öò (r    c                 ó&   • U R                  S5        g rî  ©ÚalternatingLinetor?  s     r   Ú
op_hlinetoÚT2OutlineExtractor.op_hlinetoè  ó   € Ø×Ñ˜qÕ!r    c                 ó&   • U R                  S5        g r  r;  r?  s     r   Ú
op_vlinetoÚT2OutlineExtractor.op_vlinetoë  r?  r    c                 ó¦   • U R                  5       n[        S[        U5      S5       H'  nX#US-    u  nnnnnn	U R                  XE4Xg4X‰45        M)     g)z${dxa dya dxb dyb dxc dyc}+ rrcurvetor   rw   N)r%  rì   rd   r  )
r   r   rh  rú   ÚdxaÚdyaÚdxbÚdybÚdxcÚdycs
             r   Úop_rrcurvetoÚT2OutlineExtractor.op_rrcurvetoñ  s^   € à�{‰{‹}ˆÜ�qœ#˜d›) QÖ'ˆAð ˜˜Q™�ñØØØØØØà�M‰M˜3˜* s j°3°*Ö=ò (r    c                 óÎ   • U R                  5       n[        S[        U5      S-
  S5       H$  nX#US-    u  pEpgp‰U R                  XE4Xg4X‰45        M&     U R	                  USS 5        g)z-{dxa dya dxb dyb dxc dyc}+ dxd dyd rcurveliner   r.   rw   éþÿÿÿN)r%  rì   rd   r  r  )
r   r   rh  rú   rF  rG  rH  rI  ÚdxdÚdyds
             r   Úop_rcurvelineÚ T2OutlineExtractor.op_rcurvelineÿ  sf   € à�{‰{‹}ˆÜ�qœ#˜d›) a™-¨Ö+ˆAØ+/°A¸±E¨?Ñ(ˆC�c Ø�M‰M˜3˜* s j°3°*Ö=ñ ,ð 	�‰�T˜"˜#�YÕr    c                 óÒ   • U R                  5       nUSS n[        S[        U5      S5       H  nU R                  X4US-    5        M     USS u  pVpxpšU R	                  XV4Xx4Xš45        g)z-{dxa dya}+ dxb dyb dxc dyc dxd dyd rlinecurveNiúÿÿÿr   r.   )r%  rì   rd   r  r  )r   r   rh  ÚlineArgsrú   rF  rG  rH  rI  rN  rO  s              r   Úop_rlinecurveÚ T2OutlineExtractor.op_rlinecurve  sl   € à�{‰{‹}ˆØ˜˜�9ˆÜ�qœ#˜h›-¨Ö+ˆAØ�L‰L˜ a¨!¡eÐ,Ö-ñ ,à'+¨B¨C yÑ$ˆ�#˜CØ�‰�s�j 3 *¨s¨jÕ9r    c                 óä   • U R                  5       n[        U5      S-  (       a  US   nUSS nOSn[        S[        U5      S5       H&  nX$US-    u  pVpxU R                  X54Xg4SU45        SnM(     g)z!dx1? {dya dxb dyb dyc}+ vvcurvetor.   r   r   Nr7   ©r%  rd   rì   r  )	r   r   rh  Údx1rú   rE  rF  rG  rI  s	            r   Úop_vvcurvetoÚT2OutlineExtractor.op_vvcurveto  sw   € à�{‰{‹}ˆÜˆt‹9�q�=Ø�q‘'ˆCØ˜˜�8‰DàˆCÜ�qœ#˜d›) QÖ'ˆAØ!%¨!¨a©% ÑˆC�cØ�M‰M˜3˜* s j°1°c°(Ô;ØŠCò (r    c                 óä   • U R                  5       n[        U5      S-  (       a  US   nUSS nOSn[        S[        U5      S5       H&  nX$US-    u  pVpxU R                  XS4Xg4US45        SnM(     g)z!dy1? {dxa dxb dyb dxc}+ hhcurvetor.   r   r   Nr7   rW  )	r   r   rh  Údy1rú   rD  rF  rG  rH  s	            r   Úop_hhcurvetoÚT2OutlineExtractor.op_hhcurveto  sw   € à�{‰{‹}ˆÜˆt‹9�q�=Ø�q‘'ˆCØ˜˜�8‰DàˆCÜ�qœ#˜d›) QÖ'ˆAØ!%¨!¨a©% ÑˆC�cØ�M‰M˜3˜* s j°3¸°(Ô;ØŠCò (r    c                 ó˜   • U R                  5       nU(       a3  U R                  U5      nU(       a  U R                  U5      nU(       a  M2  gg)zydy1 dx2 dy2 dx3 {dxa dxb dyb dyc dyd dxe dye dxf}* dyf? vhcurveto (30)
{dya dxb dyb dxc dxd dxe dye dyf}+ dxf? vhcurveto
N)r%  ÚvcurvetoÚhcurveto©r   r   rh  s      r   Úop_vhcurvetoÚT2OutlineExtractor.op_vhcurveto*  ó8   € ð �{‰{‹}ˆÞØ—=‘= Ó&ˆDÞØ—}‘} TÓ*�÷ Šdr    c                 ó˜   • U R                  5       nU(       a3  U R                  U5      nU(       a  U R                  U5      nU(       a  M2  gg)z`dx1 dx2 dy2 dy3 {dya dxb dyb dxc dxd dxe dye dyf}* dxf?
{dxa dxb dyb dyc dyd dxe dye dxf}+ dyf?
N)r%  ra  r`  rb  s      r   Úop_hvcurvetoÚT2OutlineExtractor.op_hvcurveto4  re  r    c                 óš   • U R                  5       u  p#pEpgnS=n	=n
=p¼U* nU R                  X)4X44XZ45        U R                  Xk4X}4XŒ45        g r  ©r%  r  )r   r   rX  Údx2Údy2Údx3Údx4Údx5Údx6r\  Údy3Údy4Údy6Údy5s                 r   Úop_hflexÚT2OutlineExtractor.op_hflexA  s[   € Ø,0¯K©K«MÑ)ˆ�#˜C cØ !Ð!ˆÐ!ˆcÐ!�CØˆdˆØ�‰�s�j 3 *¨s¨jÔ9Ø�‰�s�j 3 *¨s¨jÕ9r    c                 óŒ   • U R                  5       u  p#pEpgp‰p«pÍnU R                  X#4XE4Xg45        U R                  X‰4X«4XÍ45        g r?   rj  )r   r   rX  r\  rk  rl  rm  rq  rn  rr  ro  rt  rp  rs  Úfds                  r   Úop_flexÚT2OutlineExtractor.op_flexH  sH   € ØIMÏÉËÑFˆ�#˜C c°¸#ÀBØ�‰�s�j 3 *¨s¨jÔ9Ø�‰�s�j 3 *¨s¨jÕ9r    c           	      óª   • U R                  5       u	  p#pEpgp‰n
S=p¼X5-   U-   U-   U	-   * nU R                  X#4XE4Xk45        U R                  X|4X‰4X­45        g r  rj  )r   r   rX  r\  rk  rl  rm  rn  ro  rt  rp  rq  rr  rs  s                 r   Ú	op_hflex1ÚT2OutlineExtractor.op_hflex1M  sc   € Ø6:·k±k³mÑ3ˆ�#˜C c°ØˆˆØ‘	˜C‘ #Ñ%¨Ñ+Ð,ˆà�‰�s�j 3 *¨s¨jÔ9Ø�‰�s�j 3 *¨s¨jÕ9r    c                 ó  • U R                  5       u  p#pEpgp‰p«nX$-   U-   U-   U
-   nX5-   U-   U	-   U-   n[        U5      [        U5      :”  a  UnU* nOU* nUnU R                  X#4XE4Xg45        U R                  X‰4X«4UU45        g r?   )r%  r­   r  )r   r   rX  r\  rk  rl  rm  rq  rn  rr  ro  rt  Úd6ÚdxÚdyrp  rs  s                    r   Úop_flex1ÚT2OutlineExtractor.op_flex1U  sš   € Ø?C¿{¹{»}Ñ<ˆ�#˜C c°¸"Ø‰Y˜‰_˜sÑ" SÑ(ˆØ‰Y˜‰_˜sÑ" SÑ(ˆÜˆr‹7”S˜“WÓØˆCØ�#‰Cà�#ˆCØˆCØ�‰�s�j 3 *¨s¨jÔ9Ø�‰�s�j 3 *¨s°C¨jÕ9r    c                 ó   • [         er?   rk  r?  s     r   rl  ÚT2OutlineExtractor.op_andc  rn  r    c                 ó   • [         er?   rk  r?  s     r   rp  ÚT2OutlineExtractor.op_orf  rn  r    c                 ó   • [         er?   rk  r?  s     r   rs  ÚT2OutlineExtractor.op_noti  rn  r    c                 ó   • [         er?   rk  r?  s     r   rv  ÚT2OutlineExtractor.op_storel  rn  r    c                 ó   • [         er?   rk  r?  s     r   ry  ÚT2OutlineExtractor.op_abso  rn  r    c                 ó   • [         er?   rk  r?  s     r   r|  ÚT2OutlineExtractor.op_addr  rn  r    c                 ó   • [         er?   rk  r?  s     r   r  ÚT2OutlineExtractor.op_subu  rn  r    c                 ó¤   • U R                  5       nU R                  5       nX2-  nX2-  nXE:X  a  U R                  U5        g U R                  U5        g r?   )r5  r<  )r   r   Únum2Únum1Úd1Úd2s         r   r‚  ÚT2OutlineExtractor.op_divx  sA   € Ø�x‰x‹zˆØ�x‰x‹zˆØ‰\ˆØ‰[ˆØ‹8Ø�I‰I�b�Mà�I‰I�b�Mr    c                 ó   • [         er?   rk  r?  s     r   r…  ÚT2OutlineExtractor.op_load‚  rn  r    c                 ó   • [         er?   rk  r?  s     r   rˆ  ÚT2OutlineExtractor.op_neg…  rn  r    c                 ó   • [         er?   rk  r?  s     r   r‹  ÚT2OutlineExtractor.op_eqˆ  rn  r    c                 ó   • [         er?   rk  r?  s     r   rŽ  ÚT2OutlineExtractor.op_drop‹  rn  r    c                 ó   • [         er?   rk  r?  s     r   r‘  ÚT2OutlineExtractor.op_putŽ  rn  r    c                 ó   • [         er?   rk  r?  s     r   r”  ÚT2OutlineExtractor.op_get‘  rn  r    c                 ó   • [         er?   rk  r?  s     r   r—  ÚT2OutlineExtractor.op_ifelse”  rn  r    c                 ó   • [         er?   rk  r?  s     r   rš  ÚT2OutlineExtractor.op_random—  rn  r    c                 ó   • [         er?   rk  r?  s     r   r�  ÚT2OutlineExtractor.op_mulš  rn  r    c                 ó   • [         er?   rk  r?  s     r   r   ÚT2OutlineExtractor.op_sqrt�  rn  r    c                 ó   • [         er?   rk  r?  s     r   r£  ÚT2OutlineExtractor.op_dup   rn  r    c                 ó   • [         er?   rk  r?  s     r   r¦  ÚT2OutlineExtractor.op_exch£  rn  r    c                 ó   • [         er?   rk  r?  s     r   r©  ÚT2OutlineExtractor.op_index¦  rn  r    c                 ó   • [         er?   rk  r?  s     r   r¬  ÚT2OutlineExtractor.op_roll©  rn  r    c                 ó†   • U R                  5       nU H+  nU(       a  US4nOSU4nU R                  U5        U(       + nM-     g r  )r%  r  )r   ÚisHorizontalrh  Úargr  s        r   r<  Ú$T2OutlineExtractor.alternatingLineto¯  s@   € Ø�{‰{‹}ˆÛˆCÞØ˜a˜‘à˜C˜�Ø�L‰L˜ÔØ+Ô+ŠLò r    c                 ó€   • US S u  p#pEUSS  n[        U5      S:X  a  US   n/ nOSnU R                  SU4X44XV45        U$ ©Nr7   r   r   ©rd   r  )r   rh  rE  rF  rG  rH  rI  s          r   r`  ÚT2OutlineExtractor.vcurveto¹  sX   € Ø! " 1˜XÑˆ�#Ø�A�BˆxˆÜˆt‹9˜‹>Ø�q‘'ˆCØ‰DàˆCØ�‰�q˜#�h  
¨S¨JÔ7Øˆr    c                 ó€   • US S u  p#pEUSS  n[        U5      S:X  a  US   n/ nOSnU R                  US4X44Xe45        U$ r¹  rº  )r   rh  rD  rF  rG  rI  rH  s          r   ra  ÚT2OutlineExtractor.hcurvetoÄ  sX   € Ø! " 1˜XÑˆ�#Ø�A�BˆxˆÜˆt‹9˜‹>Ø�q‘'ˆCØ‰DàˆCØ�‰�s˜A�h  
¨S¨JÔ7Øˆr    )r   rû  r  rü  r¿  ):rþ   rÿ   r   r  r  r  r/  r
  r  r  r  r  r  rê  rï  ró  rC  r8  r=  rA  rJ  rP  rT  rY  r]  rc  rg  ru  ry  r|  r‚  rl  rp  rs  rv  ry  r|  r  r‚  r…  rˆ  r‹  rŽ  r‘  r”  r—  rš  r�  r   r£  r¦  r©  r¬  r<  r`  ra  r  rÖ  r×  s   @r   rù  rù  l  s  ø† ð Øôò,õòòò0ò
Iòò
ò6)ò2ò2òGò" ò"ò"ò>ò ò:òòò+ò+ò:ò:ò
:ò:ò"ò"ò"ò"ò"ò"ò"òò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò,ò	÷	ð 	r    rù  c                   ó–   • \ rS rSrS rS rS rSS jrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚT1OutlineExtractoriÐ  c                 ó<   • Xl         X l        U R                  5         g r?   )rû  Úsubrsr  )r   rû  rÁ  s      r   r  ÚT1OutlineExtractor.__init__Ñ  s   € ØŒØŒ
Ø�
‰
�r    c                 óX   • SU l         SU l        SU l        [        R	                  U 5        g r  )Úflexingrà  Úsbxrù  r  r  s    r   r  ÚT1OutlineExtractor.resetÖ  s%   € ØˆŒØˆŒ
ØˆŒÜ× Ñ  Õ&r    c                 óh   • U R                   (       a  U R                  R                  5         SU l         g r  )r  rû  r  r  s    r   r  ÚT1OutlineExtractor.endPathÜ  s    € Ø�>�>Ø�H‰H×ÑÔØˆ�r    c                 ó"   • U R                  5       $ r?   ©r%  )r   rã  s     r   rä  ÚT1OutlineExtractor.popallWidthá  ó   € Ø�{‰{‹}Ðr    c                 ó>   • U R                   nUS   US   sUS'   US'   g )NrM  rà   r3  r8  s     r   r¾   ÚT1OutlineExtractor.exchä  s)   € Ø×!Ñ!ˆØ$ R™y¨%°©)Ðˆˆb‰	�5˜’9r    c                 ó†   • U R                   (       a  g U R                  5         U R                  U R                  5       5        g r?   )rÄ  r  r  r%  r?  s     r   rê  ÚT1OutlineExtractor.op_rmovetoë  s'   € Ø�<�<ØØ�‰ŒØ�‰�T—[‘[“]Õ#r    c                 ó²   • U R                   (       a  U R                  S5        g U R                  5         U R                  U R	                  5       S   S45        g r  )rÄ  r<  r  r  r%  r?  s     r   rï  ÚT1OutlineExtractor.op_hmovetoñ  s<   € Ø�<�<à�I‰I�aŒLØØ�‰ŒØ�‰�d—k‘k“m AÑ&¨Ð*Õ+r    c                 óÒ   • U R                   (       a"  U R                  S5        U R                  5         g U R                  5         U R	                  SU R                  5       S   45        g r  )rÄ  r<  r¾   r  r  r%  r?  s     r   ró  ÚT1OutlineExtractor.op_vmovetoù  sE   € Ø�<�<à�I‰I�aŒLØ�I‰IŒKØØ�‰ŒØ�‰�a˜Ÿ™› qÑ)Ð*Õ+r    c                 ó$   • U R                  5         g r?   )r  r?  s     r   Úop_closepathÚT1OutlineExtractor.op_closepath  s   € Ø�‰Õr    c                 ó<   • U R                  5       nUu  p4X44U l        g r?   )r%  r   )r   r   rh  r  r	  s        r   Úop_setcurrentpointÚ%T1OutlineExtractor.op_setcurrentpoint  s   € Ø�{‰{‹}ˆØ‰ˆØ˜DˆÕr    c                 ó$   • U R                  5         g r?   )r  r?  s     r   rC  ÚT1OutlineExtractor.op_endchar
  s   € Ø�‰�r    c                 ój   • U R                  5       u  p#X0l        X l        X R                  S   4U l        g rî  )r%  rà  rÅ  r   )r   r   rÅ  Úwxs       r   Úop_hsbwÚT1OutlineExtractor.op_hsbw  s/   € Ø—+‘+“-‰ˆØŒ
ØŒØ×!2Ñ!2°1Ñ!5Ð5ˆÕr    c                 ó$   • U R                  5         g r?   rÊ  r?  s     r   Úop_sbwÚT1OutlineExtractor.op_sbw  ó   € Ø�‰�r    c                 ód   • U R                  5       nU R                  U   nU R                  U5        g r?   )r5  rÁ  r/  rJ  s       r   rM  ÚT1OutlineExtractor.op_callsubr  s'   € Ø—H‘H“Jˆ	Ø�z‰z˜)Ñ$ˆØ�‰�TÕr    c                 ó¶   • U R                  5       nU R                  5       nUS:X  a  US:X  a  U R                  5         SU l        g US:X  a  US:X  a  SU l        g g g )Nr   ro   r   )r5  ÚdoFlexrÄ  )r   r   rK  ÚnArgss       r   Úop_callothersubrÚ#T1OutlineExtractor.op_callothersubr  sP   € Ø—H‘H“Jˆ	Ø—‘“
ˆà˜‹>˜e q›jØ�K‰KŒMØˆD�LØ˜!‹^ ¨£
ØˆD�Lð !+ˆ^r    c                 ó   • g r?   r   r?  s     r   Úop_popÚT1OutlineExtractor.op_pop'  rE  r    c                 óN  • U R                  5       nU R                  5       nU R                  5         U R                  5       nU R                  5       nU R                  5       nU R                  5       nU R                  5       nU R                  5       nU R                  5       n	U R                  5       n
U R                  5       nU R                  5       nU R                  5       nU R                  5       nU R                  5       nU R                  5       nU R                  UU-   5        U R                  Xß-   5        U R                  U5        U R                  U5        U R                  U
5        U R                  U	5        U R                  S 5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        U R                  S 5        U R                  U5        U R                  U5        g r?   )r5  r<  rJ  )r   ÚfinalyÚfinalxÚp3yÚp3xÚbcp4yÚbcp4xÚbcp3yÚbcp3xÚp2yÚp2xÚbcp2yÚbcp2xÚbcp1yÚbcp1xÚrpyÚrpxs                    r   rè  ÚT1OutlineExtractor.doFlex*  s‡  € Ø—‘“ˆØ—‘“ˆØ�‰Œ
à�h‰h‹jˆØ�h‰h‹jˆØ—‘“
ˆØ—‘“
ˆØ—‘“
ˆØ—‘“
ˆØ�h‰h‹jˆØ�h‰h‹jˆØ—‘“
ˆØ—‘“
ˆØ—‘“
ˆØ—‘“
ˆØ�h‰h‹jˆØ�h‰h‹jˆð 	�	‰	�%˜#‘+ÔØ�	‰	�%‘+ÔØ�	‰	�%ÔØ�	‰	�%ÔØ�	‰	�#ŒØ�	‰	�#ŒØ×Ñ˜$Ôð 	�	‰	�%ÔØ�	‰	�%ÔØ�	‰	�%ÔØ�	‰	�%ÔØ�	‰	�#ŒØ�	‰	�#ŒØ×Ñ˜$Ôð 	�	‰	�&ÔØ�	‰	�&Õr    c                 ó$   • U R                  5         g r?   rÊ  r?  s     r   Úop_dotsectionÚ T1OutlineExtractor.op_dotsectionT  rä  r    c                 ó$   • U R                  5         g r?   rÊ  r?  s     r   Ú	op_hstem3ÚT1OutlineExtractor.op_hstem3W  rä  r    c           	      óä   • SSK Jn  U R                  5       u  p4pVnX&   nU R                  R	                  US5        X'   n	X@R
                  -   U-
  nU R                  R	                  U	SSSSXE45        g)zasb adx ady bchar achar seacr   r+  r-  r   N)r.  r,  r%  rû  r/  rÅ  )
r   r   r,  Úasbr0  r1  r2  r3  r4  r5  s
             r   Úop_seacÚT1OutlineExtractor.op_seacZ  sk   € åIà&*§k¡k£mÑ#ˆ�#˜eØ$Ñ+ˆ	Ø�‰×Ñ˜iÐ);Ô<Ø&Ñ-ˆØ—H‘H‰n˜sÑ"ˆØ�‰×Ñ˜k¨A¨q°!°Q¸Ð+AÕBr    c                 ó$   • U R                  5         g r?   rÊ  r?  s     r   Ú	op_vstem3ÚT1OutlineExtractor.op_vstem3e  rä  r    )r   rÄ  rû  r  rÅ  rÁ  rà  Nr÷  )rþ   rÿ   r   r  r  r  r  rä  r¾   rê  rï  ró  rÖ  rÙ  rC  rß  râ  rM  rê  rí  rè  r  r  r	  r  r  r   r    r   r¿  r¿  Ð  sm   † òò
'òô
ò4ò$ò,ò,òò!ò
ò6òòò
òò(òTòò	Cõr    r¿  c                   óº   • \ rS rSr\r\" \5      u  rr	\
r\rSS jrSS jrS rS rS rS rSS	 jrS
 rSS jrS rS rS r\\\4S jrS rS rSS jr S r!Sr"g)ÚT2CharStringii  Nc                 óX   • Uc  / nXl         X l        X0l        Ub  UO/ U l        S U l        g r?   )Úbytecoder(  r  r	  Ú_cur_vsindex)r   r  r(  r  r	  s        r   r  ÚT2CharString.__init__o  s2   € Ø‰?ØˆGØ ŒØŒØŒØ*5Ñ*A™;ÀrˆÔØ ˆÕr    c                 óÐ   • U R                   nUc   eUb  Xl        O1U R                  c$  [        US5      (       a  UR                  OSU l        UR	                  U R                  5      $ )Nrˆ   r   )r  r  Úhasattrrˆ   r°  )r   rˆ   Úpds      r   r°  ÚT2CharString.getNumRegionsx  s^   € Ø�\‰\ˆØ‰~Ðˆ~ØÑØ 'ÕØ×ÑÑ&Ü.5°b¸)×.DÑ.D §
¢
È!ˆDÔØ×Ñ × 1Ñ 1Ó2Ð2r    c                 ó¬   • U R                   c$  SU R                  R                  [        U 5      4-  $ SU R                  R                  [        U 5      4-  $ )Nz<%s (source) at %x>z<%s (bytecode) at %x>)r  rÔ  rþ   Úidr  s    r   Ú__repr__ÚT2CharString.__repr__�  sH   € Ø�=‰=Ñ Ø(¨D¯N©N×,CÑ,CÄRÈÃXÐ+NÑNÐNà*¨d¯n©n×.EÑ.EÄrÈ$ÃxÐ-PÑPÐPr    c                 ó   • [         $ r?   )rÛ   r  s    r   rØ   ÚT2CharString.getIntEncoder‡  ó   € ÜÐr    c                 ó   • [         $ r?   )rÝ   r  s    r   ÚgetFixedEncoderÚT2CharString.getFixedEncoderŠ  r  r    c                 óÌ   • U R                  5       (       d  g [        U R                  S/ 5      nU R                  XR                  U R                  5      nUR                  U 5        g ©NÚSubrs)r"  r$  r  ÚdecompilerClassr	  r/  )r   rÁ  Ú
decompilers      r   Ú	decompileÚT2CharString.decompile�  sP   € Ø×&Ñ&×(Ñ(ØÜ˜Ÿ™ g¨rÓ2ˆØ×)Ñ)¨%×1AÑ1AÀ4Ç<Á<ÓPˆ
Ø×Ñ˜4Õ r    c           	      ó  • [        U R                  S/ 5      nU R                  UUU R                  U R                  R                  U R                  R
                  U R                  U5      nUR                  U 5        UR                  U l        g r#  )r$  r  ÚoutlineExtractorr	  rÛ  rÜ  r/  rà  )r   rû  r  rÁ  Ú	extractors        r   ÚdrawÚT2CharString.draw”  sr   € Ü˜Ÿ™ g¨rÓ2ˆØ×)Ñ)ØØØ×ÑØ�L‰L×&Ñ&Ø�L‰L×&Ñ&Ø�L‰LØó
ˆ	ð 	×Ñ˜$ÔØ—_‘_ˆ�
r    c                 óR   • [        U5      nU R                  U5        UR                  $ r?   )r   r,  Úbounds)r   ÚglyphSetÚ	boundsPens      r   Ú
calcBoundsÚT2CharString.calcBounds¢  s$   € Ü˜hÓ'ˆ	Ø�	‰	�)ÔØ×ÑÐr    c                 ó˜  • U R                   b  g U R                  nU R                  nU(       a  U(       a  US   S;   a  US S nO*U(       a#  [        US   [        5      (       d  [        S5      e/ nU R                  5       nU R                  5       nSn[        U5      nXx:  aÌ  X7   n	US-   n[        U	[        5      (       a:   UR                  S X)    5       5        U	S;   a  UR                  X7   5        US-   nOm[        U	[        5      (       a  UR                  U" U	5      5        O@[        U	[        5      (       a  UR                  U" U	5      5        O S	[        U	5      -  5       eXx:  a  MÌ   [        U5      nU R'                  U5        g ! [         a    [        SU	-  5      ef = f! [          a    ["        R%                  U5        e f = f)
Nrà   )r„   r‡   z@T2CharString or Subr has items on the stack after last operator.r   r   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr?   )r   )Ú.0rJ   s     r   Ú	<genexpr>Ú'T2CharString.compile.<locals>.<genexpr>À  s   é € Ð#Gº°1¤G¨A§J Jºùs   ‚zillegal operator: %s©r�   r�   zunsupported type: %s)r  Úopcodesr(  re   Ústrrý   rØ   r   rd   Úextendr   rê   ræ   rH   Útyper	   Ú	TypeErrorrÏ   ÚerrorÚsetBytecode)
r   ÚisCFF2r:  r(  r  rÕ   rÝ   rú   Úendr*  s
             r   ÚcompileÚT2CharString.compile§  s«  € Ø�=‰=Ñ$ØØ—,‘,ˆØ—,‘,ˆææ˜7 2™;Ð*?Ó?Ø! # 2˜,�øÞœZ¨°©´S×9Ñ9Ü(ØRóð ð ˆØ×&Ñ&Ó(ˆ	Ø×*Ñ*Ó,ˆØˆÜ�'‹lˆØ‹gØ‘JˆEØ�A‘ˆAÜ˜%¤×%Ñ%ðQØ—O‘OÑ#G¸ºÓ#GÔGð Ð4Ó4Ø—O‘O G¡JÔ/Ø˜A™�AøÜ˜E¤3×'Ñ'Ø—‘¡	¨%Ó 0Õ1Ü˜E¤5×)Ñ)Ø—‘¡¨EÓ 2Õ3à>Ð0´4¸³;Ñ>Ó>�qð! �gð"	Ü  Ó*ˆHð 	×Ñ˜Õ"øô!  ó QÜ0Ð1GÈ%Ñ1OÓPÐPðQûô ó 	Ü�I‰I�hÔØð	ús   ÃF Å/F( ÆF%Æ(!G	c                 ó   • U R                   S L$ r?   )r  r  s    r   r"  ÚT2CharString.needsDecompilationÓ  s   € Ø�}‰} DÐ(Ð(r    c                 ó   • Xl         S U l        g r?   )r(  r  )r   r(  s     r   r&  ÚT2CharString.setProgramÖ  s   € ØŒØˆ�r    c                 ó   • Xl         S U l        g r?   )r  r(  )r   r  s     r   r@  ÚT2CharString.setBytecodeÚ  s   € Ø ŒØˆ�r    c                 ó>  • U R                   bV  X" U R                   5      :¼  a  gU" U R                   U   5      nUS-   nU R                  U   nU" XU R                   U5      u  pqO*X" U R                  5      :¼  a  gU R                  U   nUS-   nU" U[        5      nXxU4$ )N)Nr   r   r   )r  ÚoperandEncodingr(  r;  )	r   r   rd   r   re   r   r-  r*  r+  s	            r   r#  ÚT2CharString.getTokenÞ  s¤   € Ø�=‰=Ñ$Ø˜˜DŸM™MÓ*Ó*Ø!Ù˜Ÿ™ uÑ-Ó.ˆBØ˜A‘IˆEØ×*Ñ*¨2Ñ.ˆGÙ" 4¨T¯]©]¸EÓB‰LˆE�5à˜˜DŸL™LÓ)Ó)Ø!Ø—L‘L Ñ'ˆEØ˜A‘IˆEÙ ¤sÓ+ˆ
Ø %Ð'Ð'r    c                 ó–   • U R                   b  X-   nU R                   X nUnOU R                  U   nUS-   n[        U5      U:X  d   eXA4$ rî  )r  r(  rd   )r   r   ÚnBytesÚnewIndexÚbytess        r   rb  ÚT2CharString.getBytesî  sW   € Ø�=‰=Ñ$Ø‘~ˆHØ—M‘M %Ð1ˆEØ‰Eà—L‘L Ñ'ˆEØ˜A‘IˆEÜ�5‹z˜VÓ#Ð#Ð#Øˆ|Ðr    c                 ó   • U$ r?   r   )r   r   s     r   r   ÚT2CharString.handle_operatorù  s   € Øˆr    c                 ó¸  • SSK Jn  U R                  b  UR                  U R                  5        g Sn/ n U R	                  U5      u  pgnUc  OäU(       aŸ  US;   aa  U R	                  U5      u  p‡n/ n	U H$  n
U	R                  U" [        U
5      S5      5        M&     [        U	5      nSR                  XVU/-   5      nOSR                  XV/-   5      nUR                  U5        UR                  5         / nO<[        U[        5      (       a  [        USS9nO[        U5      nUR                  U5        Mü  U(       a#  SR                  U5      nUR                  U5        g g )Nr   )Ú
num2binaryr9  r}   Ú r:   r;   )ÚfontTools.misc.textToolsrV  r  Údumphexr#  rê   r   r
   ÚjoinÚwriteÚnewlinere   rH   r   r;  )r   Ú	xmlWriterÚttFontrV  r   rh  r*  r+  ÚhintMaskÚbitsÚbyteÚlines               r   ÚtoXMLÚT2CharString.toXMLü  s4  € Ý7à�=‰=Ñ$Ø×Ñ˜dŸm™mÕ,àˆEØˆDØØ+/¯=©=¸Ó+?Ñ(� 5Ø‘=ØÞØÐ 8Ó8Ø6:·m±mÀEÓ6JÑ3˜¨eØ!˜Û$,˜DØ ŸK™K©
´7¸4³=À!Ó(DÖEñ %-ä#*¨4£=˜Ø"Ÿx™x¨°xÐ/@Ñ(@ÓA™à"Ÿx™x¨¨w©Ó7˜Ø—O‘O DÔ)Ø×%Ñ%Ô'Ø‘Dä! %¬×/Ñ/Ü 1°%ÀrÑ J™ä # E£
˜Ø—K‘K Ô&ñ- ö. ð —x‘x “~�Ø—‘ Õ%ð r    c                 ó–  • SSK JnJn  UR                  S5      (       a  U R	                  U" U5      5        g [        U5      nUR                  5       n/ n[        U5      nSnX‡:  a-  X8   n	US-   n [        U	5      n	UR                  U	5        X‡:  a  M-  U R                  U5        g ! [         a™     [        U	SS9n	UR                  U	5         NA! [         am    UR                  U	5        U	S;   aR  X8   n
Sn[        S[        U
5      S	5       H  nU[        U" X¬US	-    5      5      -   nM     UR                  U5        US-   n  N·f = ff = f)
Nr   )Ú
binary2numÚreadHexÚrawr   r:   r;   r9  r    r}   )rX  rf  rg  r¸   r@  r
   rè   rd   ræ   rê   Ú
ValueErrorr   rì   r   r&  )r   ÚnameÚattrsÚcontentrf  rg  r(  rB  rú   r*  ÚmaskÚ	maskBytesÚjs                r   ÚfromXMLÚT2CharString.fromXML"  sF  € ß@à�9‰9�U×ÑØ×Ñ™W WÓ-Ô.ØÜ˜'Ó"ˆØ—-‘-“/ˆØˆÜ�'‹lˆØˆØ‹gØ‘JˆEØ�A‘ˆAð&Ü˜E›
�ð  —‘˜uÔ%ð) �gð* 	�‰˜Õ øô! ó *ð*Ü-¨eÀ2ÑF�Eð —N‘N 5Ö)øô "ó "Ø—N‘N 5Ô)ØÐ 8Ó8Ø&™z˜Ø$'˜	Ü!& q¬#¨d«)°QÖ!7˜AØ(1´G¹JÀtÐPQÐTUÑPUÀÓ<WÓ4XÑ(XšIñ "8àŸ™ yÔ1Ø ™E˜úð"úð*ús1   Á0B% Â%
EÂ0
CÂ:EÃA3EÅ EÅEÅE)r  r  r	  r  r(  rà  )NNNNr?   )F)#rþ   rÿ   r   r  Út2OperandEncodingrL  rk   Út2Operatorsr   r:  r  r%  rù  r*  r  r°  r  rØ   r   r'  r,  r2  rC  r"  r&  r@  rd   r   re   r#  rb  r   rc  rp  r  r   r    r   r  r  i  s‚   † Ø'€OÙ*¨;Ó7Ñ€IˆwØ(€OØ)Ðô!ô3òQòòò!ô%ò ô
*#òX)òòð #&¨wÀ:ô (ò 	òô$&õL !r    r  c                   ó^   ^ • \ rS rSr\r\" \5      u  rr	SU 4S jjr
S rS rS rS rSrU =r$ )	ÚT1CharStringiE  c                 ó0   >• [         TU ]  X5        X0l        g r?   )rÓ  r  rÁ  )r   r  r(  rÁ  rÔ  s       €r   r  ÚT1CharString.__init__I  s   ø€ Ü‰Ñ˜Ô+Ø�
r    c                 ó   • [         $ r?   )ÚencodeIntT1r  s    r   rØ   ÚT1CharString.getIntEncoderM  r  r    c                 ó
   • S ng )Nc                 ó   • [        S5      e)Nz8Type 1 charstrings don't support floating point operands)r>  )r   s    r   rÝ   Ú1T1CharString.getFixedEncoder.<locals>.encodeFixedQ  s   € ÜÐVÓWÐWr    r   )r   rÝ   s     r   r   ÚT1CharString.getFixedEncoderP  s   € ó	Xr    c                 ó¢   • U R                   c  g / nSn U R                  U5      u  p4nUc  OUR                  U5        M+  U R                  U5        g r  )r  r#  rê   r&  )r   r(  r   r*  r+  s        r   r'  ÚT1CharString.decompileT  sV   € Ø�=‰=Ñ ØØˆØˆØØ'+§}¡}°UÓ';Ñ$ˆE˜uØ‰}ØØ�N‰N˜5Ô!ñ	 ð
 	�‰˜Õ r    c                 ór   • [        XR                  5      nUR                  U 5        UR                  U l        g r?   )r¿  rÁ  r/  rà  )r   rû  r+  s      r   r,  ÚT1CharString.draw`  s)   € Ü& s¯J©JÓ7ˆ	Ø×Ñ˜$ÔØ—_‘_ˆ�
r    )rÁ  rà  )NNN)rþ   rÿ   r   r  Út1OperandEncodingrL  rk   Út1Operatorsr   r:  r  rØ   r   r'  r,  r  rÖ  r×  s   @r   ru  ru  E  s6   ø† Ø'€OÙ*¨;Ó7Ñ€Iˆw÷òòXò
!÷%ð %r    ru  c                   ód   • \ rS rSr\rSS jrS rS rS r	S r
S rS	 rS
 rS rS rS rS rSrg)ÚDictDecompilerif  Nc                 ó8   • / U l         Xl        0 U l        X l        g r?   )r9  ÚstringsÚdictÚparent)r   rˆ  rŠ  s      r   r  ÚDictDecompiler.__init__i  s   € ØˆŒ
ØŒØˆŒ	Ø�r    c                 óZ   • [        U R                  5      S:X  d   S5       eU R                  $ )Nr   znon-empty stack)rd   r9  r‰  r  s    r   ÚgetDictÚDictDecompiler.getDicto  s(   € Ü�4—:‘:‹ !Ó#Ð6Ð%6Ó6Ð#Ø�y‰yÐr    c                 óÒ   • Sn[        U5      nU R                  R                  nX#:  a?  [        X   5      nUS-   nU R                  U   nU" XX5      u  prUb  U" U5        X#:  a  M>  g g r¯  )rd   r9  rê   r   rL  )r   r   r   ÚlenDatar<  r   r-  r   s           r   r'  ÚDictDecompiler.decompiles  sk   € ØˆÜ�d“)ˆØ�z‰z× Ñ ˆØ‹oÜ˜™Ó%ˆBØ˜A‘IˆEØ×*Ñ*¨2Ñ.ˆGÙ" 4¨TÓ9‰LˆEØÑ Ù�U”ð �or    c                 ó>   • U R                   S   nU R                   S	 U$ r2  ©r9  r4  s     r   r5  ÚDictDecompiler.pop  s   € Ø—
‘
˜2‘ˆØ�J‰J�rˆNØˆr    c                 óB   • U R                   S S  nU R                   S S 2	 U$ r?   r“  rg  s     r   r%  ÚDictDecompiler.popall„  s   € Ø�z‰z™!ˆ}ˆØ�J‰J’qˆMØˆr    c                 óH  • Uu  p[        U[        5      (       aB  Sn[        [        U5      S-
  SS5       H"  nX$   n[	        U SU-   5      nU" U5      4U-   nM$     O[	        U SU-   5      nU" U5      nUS:X  a  U R
                  R                  U5        g X0R                  U'   g )Nr   r   rà   Úarg_r‰   )re   rf   rì   rd   r$  r9  r<  r‰  )r   r   ÚargTyper   rú   r¶  Ú
arghandlers          r   r   ÚDictDecompiler.handle_operator‰  s¤   € Ø$ÑˆÜ�gœu×%Ñ%ØˆEÜœ3˜w›<¨!Ñ+¨R°Ö4�Ø‘j�Ü$ T¨6°C©<Ó8�
Ù# HÓ-Ð/°%Ñ7’ò 5ô
 !  v°Ñ'7Ó8ˆJÙ˜xÓ(ˆEØ�wÓØ�J‰J×Ñ˜eÕ$à"'�I‰I�hÒr    c                 ó¤   • [        U R                  S   [        5      (       a  U R                  U R                  5      nU$ U R	                  5       nU$ r  )re   r9  ÚlistÚarg_blend_numberr5  )r   rj  Úouts      r   Ú
arg_numberÚDictDecompiler.arg_number™  sD   € Ü�d—j‘j ‘m¤T×*Ñ*Ø×'Ñ'¨¯
©
Ó3ˆCð ˆ
ð —(‘(“*ˆCØˆ
r    c                 ó¤   • / nU R                  5       n[        U5      nUR                  U5        UR                  S5        U R                  5       nU$ )Nr‰   )r5  rd   rê   r%  )r   rj  rŸ  Ú	blendArgsÚ
numMastersÚdummys         r   rž  ÚDictDecompiler.arg_blend_number   sD   € ØˆØ—H‘H“Jˆ	Ü˜“^ˆ
Ø�
‰
�9ÔØ�
‰
�7ÔØ—‘“ˆØÐr    c                 ó<   • U R                   U R                  5          $ r?   )rˆ  r5  ©r   rj  s     r   Úarg_SIDÚDictDecompiler.arg_SID©  s   € Ø�|‰|˜DŸH™H›JÑ'Ð'r    c                 ó"   • U R                  5       $ r?   rÊ  r¨  s     r   Ú	arg_arrayÚDictDecompiler.arg_array¬  rÌ  r    c                 ó`  • U R                   R                  SS5      nU R                  R                  U5      S-   nU R	                  5       nU R                  5       n[        U5      nXcU-  :X  d   eS/U-  nUS-
  nSn	Sn
X”:  a*  XY   U
-   nUn
XIU-  -   nU/X\XÈ-    -   nX×U	'   U	S-  n	X”:  a  M*  U$ )a¡  
There may be non-blend args at the top of the stack. We first calculate
where the blend args start in the stack. These are the last
numMasters*numBlends) +1 args.
The blend args starts with numMasters relative coordinate values, the  BlueValues in the list from the default master font. This is followed by
numBlends list of values. Each of  value in one of these lists is the
Variable Font delta for the matching region.

We re-arrange this to be a list of numMaster entries. Each entry starts with the corresponding default font relative value, and is followed by
the delta values. We then convert the default values, the first item in each entry, to an absolute value.
rˆ   r   r   N)r‰  r¸   rŠ  r°  r5  r%  rd   )r   rj  rˆ   r¤  r±  rh  ÚnumArgsr   Ú	numDeltasrú   ÚprevValÚnewValÚmasterOffsetÚ	blendLists                 r   Úarg_blendListÚDictDecompiler.arg_blendList¯  sÙ   € ð —)‘)—-‘- 	¨1Ó-ˆà�K‰K×%Ñ% gÓ.°Ñ2ð 	ð —H‘H“Jˆ	Ø�{‰{‹}ˆÜ�d“)ˆà yÑ0Ó0Ð0Ð0Ø�˜Ñ"ˆØ ‘Nˆ	ØˆØˆØ‹mØ‘W˜wÑ&ˆFØˆGØ$¨I©Ñ6ˆLØ˜ 4°|Ñ7OÐ#PÑPˆIØ �!‰HØ�‰FˆAð �mð ˆr    c                 ó°   • U R                  5       n/ nU(       a  [        US   [        5      (       a  UnU$ SnU H  nXE-   nUR                  U5        M     U$ r  )r%  re   r�  rê   )r   rj  Ú	valueListrŸ  ÚcurrentÚvs         r   Ú	arg_deltaÚDictDecompiler.arg_deltaÑ  s\   € Ø—K‘K“Mˆ	ØˆÞœ I¨a¡L´$×7Ñ7àˆCð ˆ
ð	 ˆGÛ�Ø!™+�Ø—
‘
˜7Ö#ñ ð ˆ
r    )r‰  rŠ  r9  rˆ  r?   )rþ   rÿ   r   r  ÚcffDictOperandEncodingrL  r  r�  r'  r5  r%  r   r   rž  r©  r¬  rµ  r»  r  r   r    r   r†  r†  f  sD   † Ø,€Oôòò
òò
ò
(ò òò(òò õDr    r†  c                 óH   • [        U 5      nUS:  a  SnU$ US:  a  SnU$ SnU$ )NiØ  rÍ   il„  rÎ   i €  )rd   )rÁ  ÚnSubrsÚbiass      r   r  r  ß  s?   € Ü�‹Z€FØ�ƒ}Øˆð
 €Kð	 
�%‹Øˆð €Kð ˆØ€Kr    ):Ú__doc__ÚfontTools.misc.fixedToolsr   r   r   r   rX  r   r   r	   r
   ÚfontTools.pens.boundsPenr   r0   ÚloggingÚ	getLoggerrþ   rÏ   r   r   r(   r+   r3   r8   r=   rB   rM   rƒ  rd   rr  r½  rG   Ú	enumeraterë   Ú
maxOpStackrk   rs  rØ   ÚencodeIntCFFry  rÛ   rÒ   rÝ   râ   rû   Ú	Exceptionrý   Úobjectr  r„  rÍ  rÙ  rù  r¿  r  ru  r†  r  )rú   rº  s   00r   Ú<module>rË     sL  ðñ÷ó ÷ JÓ IÝ .Û Û ð ×Ò˜Ó!€òòò2ò
3ò
ò
ò
<ò
!ò
 ð  �F˜S‘LÐ Ø - Ñ0Ð �!�BÐ Ø%¨)¨Ñ4Ð �"�SÐ Ø'¨NÐ+;Ñ;Ð �#�cÐ Ø'¨NÐ+;Ñ;Ð �#�cÐ Ø%Ð �#Ñ Ù
ÐÓ Ó$Ð $Ð$à%¡aÐ(Ð Ø%Ð �"Ñ Ø'Ð �#Ñ à*©1Ð-Ð Ø)Ð �rÑ Ø,Ð �rÑ Ø+Ð �sÑ ò€ñ" %.¨kÔ$:Ô;Ò$:™D˜A�1’4Ñ$:Ò;€à€
òò8€òv1ñh ˜UÓ#€Ù˜DÓ!€Ù˜DÓ!€ð Ÿ™ô +ñ ˜“™g c›lÑ*€ò1ôh	˜Yô 	ôG9˜ô G9òT€ô<Ð,ô ô0Ð)ô 0ôfaÐ)ô aôHVÐ+ô VôrY!�6ô Y!ôx%�<ô %ôBv�Vô vórùóQ+ <s   ÃF
