§
    ¢”j.(  ã                   óÞ  — d dl mZ d dlmZmZmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZmZmZmZ d dlZd dlZ ej        d	¦  «        Z G d
„ d¦  «        Zd„ Zd„ Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%	 d dl&m'Z' e#Z(n"# e)$ r 	 d dl*m+Z+ e$Z(n# e)$ r e%Z(Y nw xY wY nw xY wd„ Z,d„ Z-d„ Z.dZ/d „ Z0d!„ Z1 e2¦   «         d"œd#„Z3dS )$é    )ÚLerpGlyphSet)ÚAbstractPenÚBasePenÚDecomposingPen)ÚAbstractPointPenÚSegmentToPointPen)ÚRecordingPenÚDecomposingRecordingPen)Ú	Transform)ÚdefaultdictÚdeque)ÚsqrtÚcopysignÚatan2ÚpiNzfontTools.varLib.interpolatablec                   ój   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZededededede	de
dedededediZdS )ÚInterpolatableProblemÚnothingÚmissingÚ	open_pathÚ
path_countÚ
node_countÚnode_incompatibilityÚcontour_orderÚwrong_start_pointÚkinkÚunderweightÚ
overweighté   é   é   é   é   é   é   é   é	   é
   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNOTHINGÚMISSINGÚ	OPEN_PATHÚ
PATH_COUNTÚ
NODE_COUNTÚNODE_INCOMPATIBILITYÚCONTOUR_ORDERÚWRONG_START_POINTÚKINKÚUNDERWEIGHTÚ
OVERWEIGHTÚseverity© ó    úu/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/varLib/interpolatableHelpers.pyr   r      s‡   € € € € € Ø€GØ€GØ€IØ€JØ€JØ1ÐØ#€MØ+ÐØ€DØ€KØ€Jð 	�Ø�1Ø�AØ�AØ˜aØ�qØ˜1ØˆaØ�QØ�BØ�ð€H€H€Hr:   r   c                 óf   — t          t          |                      ¦   «         d„ d¬¦  «        ¦  «        S )z6Sort problem groups by their most severe problem type.c                 óB   — t          d„ | d         D ¦   «         ¦  «         S )Nc              3   ót   K  — | ]3}t           j        |d                   |                     dd¦  «        z   V — Œ4dS )ÚtypeÚ	tolerancer   N)r   r8   Úget)Ú.0Úps     r;   ú	<genexpr>z2sort_problems.<locals>.<lambda>.<locals>.<genexpr>1   sV   è è € ð ð àõ +Ô3°A°f´IÔ>ÀÇÂÀ{ÐTUÑAVÔAVÑVðð ð ð ð ð r:   r   )Úmin)Ú_s    r;   ú<lambda>zsort_problems.<locals>.<lambda>0   s5   € �3ðð à˜qœTðñ ô ñô ð € r:   T)ÚkeyÚreverse)ÚdictÚsortedÚitems)Úproblemss    r;   Úsort_problemsrN   +   sB   € åÝØ�NŠNÑÔðð ð ð		
ñ 		
ô 		
ñô ð r:   c                 ó0   — | | d…         | d| …         z   S )z{Rotate list by k items forward.  Ie. item at position 0 will be
    at position k in returned list.  Negative k is allowed.Nr9   )ÚlÚks     r;   Úrot_listrR   ;   s"   € ð ˆaˆRˆSˆSŒ6�A�c˜�r�c”F‰?Ðr:   c                   ó@   — e Zd Zd
d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
dS )ÚPerContourPenNc                 óZ   — t          j        | |¦  «         || _        d | _        g | _        d S ©N)r   Ú__init__Ú_PenÚ_penÚvalue)ÚselfÚPenÚglyphsets      r;   rW   zPerContourPen.__init__B   s.   € ÝÔ˜˜xÑ(Ô(Ð(ØˆŒ	ØˆŒ	ØˆŒ
ˆ
ˆ
r:   c                 ób   — |                       ¦   «          | j                             |¦  «         d S rV   )Ú_newItemrY   ÚmoveTo)r[   Úp0s     r;   Ú_moveTozPerContourPen._moveToH   s+   € Ø�Š‰ŒˆØŒ	×Ò˜ÑÔÐÐÐr:   c                 ó:   — | j                              |¦  «         d S rV   )rY   ÚlineTo)r[   Úp1s     r;   Ú_lineTozPerContourPen._lineToL   s   € ØŒ	×Ò˜ÑÔÐÐÐr:   c                 ó<   — | j                              ||¦  «         d S rV   )rY   ÚqCurveTo)r[   re   Úp2s      r;   Ú_qCurveToOnezPerContourPen._qCurveToOneO   s    € ØŒ	×Ò˜2˜rÑ"Ô"Ð"Ð"Ð"r:   c                 ó>   — | j                              |||¦  «         d S rV   )rY   ÚcurveTo)r[   re   ri   Úp3s       r;   Ú_curveToOnezPerContourPen._curveToOneR   s"   € ØŒ	×Ò˜"˜b "Ñ%Ô%Ð%Ð%Ð%r:   c                 óF   — | j                              ¦   «          d | _         d S rV   )rY   Ú	closePath©r[   s    r;   Ú
_closePathzPerContourPen._closePathU   s!   € ØŒ	×ÒÑÔÐØˆŒ	ˆ	ˆ	r:   c                 óF   — | j                              ¦   «          d | _         d S rV   )rY   ÚendPathrq   s    r;   Ú_endPathzPerContourPen._endPathY   s!   € ØŒ	×ÒÑÔÐØˆŒ	ˆ	ˆ	r:   c                 óp   — |                       ¦   «         x| _        }| j                             |¦  «         d S rV   )rX   rY   rZ   Úappend)r[   Úpens     r;   r_   zPerContourPen._newItem]   s2   € ØŸ)š)™+œ+Ð%ˆŒ	�CØŒ
×Ò˜#ÑÔÐÐÐr:   rV   )r*   r+   r,   rW   rb   rf   rj   rn   rr   ru   r_   r9   r:   r;   rT   rT   A   s‘   € € € € € ðð ð ð ðð ð ðð ð ð#ð #ð #ð&ð &ð &ðð ð ðð ð ðð ð ð ð r:   rT   c                   ó   — e Zd Zd„ ZdS )ÚPerContourOrComponentPenc                 óp   — |                       ¦   «          | j        d                              ||¦  «         d S )Néÿÿÿÿ)r_   rZ   ÚaddComponent)r[   Ú	glyphNameÚtransformations      r;   r}   z%PerContourOrComponentPen.addComponentc   s1   € Ø�Š‰ŒˆØŒ
�2Œ×#Ò# I¨~Ñ>Ô>Ð>Ð>Ð>r:   N)r*   r+   r,   r}   r9   r:   r;   rz   rz   b   s#   € € € € € ð?ð ?ð ?ð ?ð ?r:   rz   c                   ó,   — e Zd Zd„ Zdd„Zdd„Zdd„ZdS )	ÚSimpleRecordingPointPenc                 ó   — g | _         d S rV   )rZ   rq   s    r;   rW   z SimpleRecordingPointPen.__init__i   s   € ØˆŒ
ˆ
ˆ
r:   Nc                 ó   — d S rV   r9   )r[   Ú
identifierÚkwargss      r;   Ú	beginPathz!SimpleRecordingPointPen.beginPathl   ó   € Øˆr:   Úreturnc                 ó   — d S rV   r9   rq   s    r;   rt   zSimpleRecordingPointPen.endPatho   r‡   r:   c                 óF   — | j                              ||€dndf¦  «         d S )NFT)rZ   rw   )r[   ÚptÚsegmentTypes      r;   ÚaddPointz SimpleRecordingPointPen.addPointr   s,   € ØŒ
×Ò˜2¨Ð(;˜u˜uÀÐFÑGÔGÐGÐGÐGr:   rV   )rˆ   N)r*   r+   r,   rW   r†   rt   r�   r9   r:   r;   r�   r�   h   se   € € € € € ðð ð ðð ð ð ðð ð ð ðHð Hð Hð Hð Hð Hr:   r�   c                 óP   — d}t          | |¦  «        D ]\  }}||z
  }|||z  z  }Œ|S ©Nr   )Úzip©Úv0Úv1ÚsÚx0Úx1Úds         r;   Úvdiff_hypot2r˜   v   s?   € Ø	€AÝ�b˜"‘+”+ð ð ‰ˆˆBØ�‰GˆØ	ˆQ�‰U‰
ˆˆØ€Hr:   c                 ó„   — d}t          | |¦  «        D ],\  }}||z
  }||j        |j        z  |j        |j        z  z   z  }Œ-|S r�   )r�   ÚrealÚimagr‘   s         r;   Úvdiff_hypot2_complexrœ   ~   sS   € Ø	€AÝ�b˜"‘+”+ð /ð /‰ˆˆBØ�‰GˆØ	ˆQŒV�a”f‰_˜qœv¨¬™Ñ.Ñ.ˆˆð €Hr:   c                 óT   ‡ — t          ˆ fd„t          |¦  «        D ¦   «         ¦  «        S )Nc              3   ó:   •K  — | ]\  }}‰|         |         V — Œd S rV   r9   )rB   ÚiÚjÚGs      €r;   rD   z matching_cost.<locals>.<genexpr>‰   s/   øè è € Ð7Ð7™4˜1˜aˆq�Œt�AŒwÐ7Ð7Ð7Ð7Ð7Ð7r:   )ÚsumÚ	enumerate)r¡   Úmatchings   ` r;   Úmatching_costr¥   ˆ   s.   ø€ ÝÐ7Ð7Ð7Ð7¥9¨XÑ#6Ô#6Ð7Ñ7Ô7Ñ7Ô7Ð7r:   c                 ó  — t          | ¦  «        }t          | ¦  «        \  }}|t          t          |¦  «        ¦  «        k                         ¦   «         sJ ‚t          d„ |D ¦   «         ¦  «        }t          |¦  «        t          | |¦  «        fS )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rV   )Úint)rB   Úes     r;   rD   z<min_cost_perfect_bipartite_matching_scipy.<locals>.<genexpr>’   s(   è è € Ð%Ð%˜1•�A‘”Ð%Ð%Ð%Ð%Ð%Ð%r:   )ÚlenÚlinear_sum_assignmentÚlistÚrangeÚallr¥   )r¡   ÚnÚrowsÚcolss       r;   Ú)min_cost_perfect_bipartite_matching_scipyr²   Œ   s€   € ÝˆA‰Œ€AÝ& qÑ)Ô)�J€Dˆ$Ø•D�˜q™œ‘N”NÒ"×'Ò'Ñ)Ô)Ð)Ð)Ð)õ Ð%Ð% Ð%Ñ%Ô%Ñ%Ô%€DÝ�‰:Œ:•} Q¨Ñ-Ô-Ð-Ð-r:   c                 ó¨   — t          | ¦  «        }d g|z  }t          ¦   «                              | ¦  «        D ]
\  }}|||<   Œ|t          | |¦  «        fS rV   )rª   ÚMunkresÚcomputer¥   )r¡   r¯   r±   ÚrowÚcols        r;   Ú+min_cost_perfect_bipartite_matching_munkresr¸   –   s]   € ÝˆA‰Œ€AØˆ6�A‰:€DÝ‘I”I×%Ò% aÑ(Ô(ð ð ‰ˆˆSØˆˆS‰	ˆ	Ø•˜q $Ñ'Ô'Ð'Ð'r:   c                 óD  — t          | ¦  «        }|dk    rt          d¦  «        ‚t          j        t	          |¦  «        ¦  «        }t          t          |¦  «        ¦  «        }t          | |¦  «        }|D ])}t          | |¦  «        }||k     rt          |¦  «        |}}Œ*||fS )Nr$   z4Install Python module 'munkres' or 'scipy >= 0.17.0')rª   Ú	ExceptionÚ	itertoolsÚpermutationsr­   r¬   Únextr¥   )r¡   r¯   r¼   ÚbestÚ	best_costrC   Úcosts          r;   Ú.min_cost_perfect_bipartite_matching_bruteforcerÁ   ž   s¤   € ÝˆA‰Œ€Aàˆ1‚u€uÝÐNÑOÔOÐOõ Ô)­%°©(¬(Ñ3Ô3€LÝ•�\Ñ"Ô"Ñ#Ô#€DÝ˜a Ñ&Ô&€IØð ,ð ,ˆÝ˜Q Ñ"Ô"ˆØ�)ÒÐÝ" 1™gœg t�)ˆDøØ�ˆ?Ðr:   )r«   )r´   c                 ó¾   — t          t          | j        ¦  «        ¦  «        }t          || j        ¦  «        | j        | j        | j        dz  | j        dz  | j        |z  fS )Nr    )	r   ÚabsÚarear   ÚmeanXÚmeanYÚstddevXÚstddevYÚcorrelation)ÚstatsÚsizes     r;   Úcontour_vector_from_statsrÌ   Ã   s[   € õ •�E”J‘”Ñ Ô €Då�$˜œÑ$Ô$ØŒØŒØŒ˜ÑØŒ˜ÑØÔ˜DÑ ðð r:   c                 ó¾   ‡‡— t          | ¦  «        }ˆfd„| D ¦   «         Št          ‰¦  «        \  }}t          ˆfd„t          |¦  «        D ¦   «         ¦  «        }|||fS )Nc                 ó.   •‡— g | ]Šˆfd „‰D ¦   «         ‘ŒS )c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r9   )r˜   )rB   r“   r’   s     €r;   ú
<listcomp>z3matching_for_vectors.<locals>.<listcomp>.<listcomp>Õ   s#   ø€ Ð0Ð0Ð0 r�l˜2˜rÑ"Ô"Ð0Ð0Ð0r:   r9   )rB   r’   Úm1s    @€r;   rÐ   z(matching_for_vectors.<locals>.<listcomp>Õ   s/   øø€ Ð>Ð>Ð>°RÐ0Ð0Ð0Ð0¨RÐ0Ñ0Ô0Ð>Ð>Ð>r:   c              3   ó4   •K  — | ]}‰|         |         V — Œd S rV   r9   )rB   rŸ   Úcostss     €r;   rD   z'matching_for_vectors.<locals>.<genexpr>Ú   s+   øè è € Ð6Ð6¨˜˜aœ œÐ6Ð6Ð6Ð6Ð6Ð6r:   )rª   Ú#min_cost_perfect_bipartite_matchingr¢   r­   )Úm0rÑ   r¯   r¤   r¥   Úidentity_costrÓ   s    `    @r;   Úmatching_for_vectorsr×   Ò   su   øø€ ÝˆB‰Œ€Aà>Ð>Ð>Ð>¸2Ð>Ñ>Ô>€Eõ 	,¨EÑ2Ô2ñØØåÐ6Ð6Ð6Ð6­U°1©X¬XÐ6Ñ6Ô6Ñ6Ô6€MØ�] MÐ1Ð1r:   c                 óD   — d}t          | ¦  «        D ]\  }}|dz  |z  }Œ|S )Nr   r   )Úreversed)ÚpointsÚbitsr‹   Úbs       r;   Úpoints_characteristic_bitsrÝ   Þ   s6   € Ø€DÝ˜&Ñ!Ô!ð ð ‰ˆˆAØ˜‘	˜Q‰ˆˆØ€Kr:   r"   c                 ó  — g }| s|S d„ | D ¦   «         } t          | ¦  «        }t          dk    sJ ‚|                      | d t          dz
  …         ¦  «         t          | ¦  «        t          k     r=|                      | d t          dz
  …         ¦  «         t          | ¦  «        t          k     °=t          |¦  «        D ]Ð}| |         }|                     |¦  «         | |dz            }||z
  }|                     |dz  ¦  «         | |dz            }||z
  }|                     ||z
  ¦  «         |j        |j        z  |j        |j        z  z
  }	t          t          t          |	¦  «        ¦  «        |	¦  «        }	|                     |	dz  ¦  «         ŒÑ|S )Nc                 ó&   — g | ]\  }}t          |Ž ‘ŒS r9   )Úcomplex)rB   r‹   rF   s      r;   rÐ   z)points_complex_vector.<locals>.<listcomp>ì   s    € Ð/Ð/Ð/™u˜r 1�g�rˆlÐ/Ð/Ð/r:   r"   r   r!   r    )
rª   Ú$_NUM_ITEMS_PER_POINTS_COMPLEX_VECTORÚextendr­   rw   rš   r›   r   r   rÃ   )
rÚ   Úvectorr¯   rŸ   ra   re   Úd0ri   Úd1Úcrosss
             r;   Úpoints_complex_vectorrç   è   s–  € Ø€FØð ØˆØ/Ð/¨Ð/Ñ/Ô/€FÝˆF‰Œ€AÝ/°1Ò4Ð4Ð4Ð4Ø
‡M‚M�&ÐCÕ?À!ÑCÐCÔDÑEÔEÐEÝ
ˆf‰+Œ+Õ<Ò
<Ð
<Ø�Š�fÐGÕCÀaÑGÐGÔHÑIÔIÐIõ ˆf‰+Œ+Õ<Ò
<Ð
<å�1‰XŒXð !ð !ˆð �AŒYˆØ�Š�bÑÔÐð �A˜‘EŒ]ˆØ�"‰WˆØ�Š�b˜1‘fÑÔÐð �A˜‘EŒ]ˆØ�"‰WˆØ�Š�b˜2‘gÑÔÐð ”˜"œ'Ñ! B¤G¨b¬gÑ$5Ñ5ˆÝ��c %™jœjÑ)Ô)¨5Ñ1Ô1ˆØ�Š�e˜a‘iÑ Ô Ð Ð à€Mr:   c                 ó¼  — t          | ¦  «        }t          | ¦  «        }|r| d d d…         } t          | ¦  «        }n|}t          | ¦  «        }t          |¦  «        |z  dk    sJ ‚t          |¦  «        |z  }d|z  dz
  }t          |¦  «        D ]M}	|||	z
  z  |z  ||	z	  z  }
|
|k    r4|                     t          ||	 |z  ¦  «        |r|dz
  |	z
  n|	|f¦  «         ŒNd S )Nr|   r   r   )rÝ   rª   rç   r­   rw   rR   )rÚ   ÚisomorphismsrI   Úreference_bitsr¯   rÛ   rã   ÚmultÚmaskrŸ   rÜ   s              r;   Úadd_isomorphismsrí     s  € Ý/°Ñ7Ô7€NÝˆF‰Œ€Að
 ð Ø˜˜˜"˜”ˆÝ)¨&Ñ1Ô1ˆˆàˆå" 6Ñ*Ô*€Fåˆv‰;Œ;˜‰?˜aÒÐÐÐÝˆv‰;Œ;˜!Ñ€DØ�‰F�a‰<€Då�1‰XŒXð ð ˆØ�q˜1‘u‰o Ñ%¨$°!©)Ñ4ˆØ�ÒÐØ×ÒÝ˜& 1 " t¡)Ñ,Ô,¸7Ð.I¨a°!©e°a©i¨iÈÈ7ÐSñô ð øðð r:   )Údiscrete_axesc                ó  ‡‡‡— d gt          t          t          | ¦  «        dz
  ¦  «        ¦  «        z   }t          t          t          | ¦  «        ¦  «        ¦  «        }‰�r+ˆfd„t          ‰¦  «        D ¦   «         }|r*t                               dt          |¦  «        |¦  «         nt                               d¦  «         	 ddlm} ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }t          ¦   «         Š‰D ])}‰ 
                    |                     ¦   «         ¦  «         Œ*t          ‰¦  «        Šˆfd„‰D ¦   «         }	t          j        t          t          ‰¦  «        ¦  «        d	¦  «        D ]u\  }
}ˆfd
„t          ‰|	|
         ¦  «        D ¦   «         }ˆfd„t          ‰|	|         ¦  «        D ¦   «         }||k    rŒPt!          |	|
         |	|         ¦  «        ||
         |<   Œv ||d¬¦  «        }|                     ¦   «         \  }}t%          t          ¦  «        }t          ||¦  «        D ];\  }}||                              |¦  «         ||                              |¦  «         Œ<d gt          ‰¦  «        z  }g }t          ¦   «         }t)          |¦  «        }|rv|                     ¦   «         }
|                     |
¦  «         |                     |
¦  «         t          ||
         ¦  «        D ] }||vr|
||<   |                     |¦  «         Œ!|°vt          |¦  «        t          |¦  «        k    s
J d¦   «         ‚n# t.          $ r Y nw xY wt                               d|¦  «         t                               d|¦  «         ||fS )Nr   c                 ót   •— g | ]4\  }}t          ˆfd „|                     ¦   «         D ¦   «         ¦  «        ¯2|‘Œ5S )c              3   ó2   •K  — | ]\  }}|‰v¯	|d k    V — ŒdS ©r   Nr9   ©rB   rQ   Úvrî   s      €r;   rD   z4find_parents_and_order.<locals>.<listcomp>.<genexpr>/  s5   øè è € ÐJÐJ™d˜a °1¸MÐ3IÐ3I�1˜’6Ð3IÐ3IÐ3IÐ3IÐJÐJr:   )r®   rL   )rB   rŸ   rP   rî   s      €r;   rÐ   z*find_parents_and_order.<locals>.<listcomp>,  sX   ø€ ð 
ð 
ð 
á��1ÝÐJÐJÐJÐJ a§g¢g¡i¤iÐJÑJÔJÑJÔJð
Øð
ð 
ð 
r:   zFound %s base masters: %szNo base master location foundr   )Úminimum_spanning_treec                 ó6   •— g | ]}d gt          ‰¦  «        z  ‘ŒS )r   )rª   )rB   rF   Ú	locationss     €r;   rÐ   z*find_parents_and_order.<locals>.<listcomp>:  s&   ø€ ÐIÐIÐI¨a�a�S�3˜y™>œ>Ñ)ÐIÐIÐIr:   c                 óH   •‡— g | ]Št          ˆfd „‰D ¦   «         ¦  «        ‘ŒS )c              3   óD   •K  — | ]}‰                      |d ¦  «        V — ŒdS rò   )rA   )rB   rQ   rP   s     €r;   rD   z4find_parents_and_order.<locals>.<listcomp>.<genexpr>?  s/   øè è € Ð7Ð7¨Q˜QŸUšU 1 a™[œ[Ð7Ð7Ð7Ð7Ð7Ð7r:   )Útuple)rB   rP   Úaxess    @€r;   rÐ   z*find_parents_and_order.<locals>.<listcomp>?  s7   øø€ ÐKÐKÐK¸A•uÐ7Ð7Ð7Ð7°$Ð7Ñ7Ô7Ñ7Ô7ÐKÐKÐKr:   r    c                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r9   r9   ró   s      €r;   ú
<dictcomp>z*find_parents_and_order.<locals>.<dictcomp>A  ó0   ø€ ð 'ð 'ð 'Ù!˜Q ¸aÀ=Ð>PÐ>P�A�qÐ>PÐ>PÐ>Pr:   c                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r9   r9   ró   s      €r;   rý   z*find_parents_and_order.<locals>.<dictcomp>D  rþ   r:   T)Ú	overwritez.Not all masters are reachable; report an issuezParents: %sz	Order: %s)r¬   r­   rª   r£   ÚlogÚinfoÚwarningÚscipy.sparse.csgraphrõ   ÚsetÚupdateÚkeysrK   r»   Úcombinationsr�   r˜   Únonzeror   Úaddr   Úpopleftrw   ÚImportError)Ú	glyphsetsr÷   rî   ÚparentsÚorderÚbasesrõ   ÚgraphrP   ÚvectorsrŸ   r    Úi_discrete_locationÚj_discrete_locationÚtreer°   r±   r¶   r·   ÚvisitedÚqueuerû   s    ``                  @r;   Úfind_parents_and_orderr  '  sß  øøø€ Øˆf•t�E¥# i¡.¤.°1Ñ"4Ñ5Ô5Ñ6Ô6Ñ6€GÝ••s˜9‘~”~Ñ&Ô&Ñ'Ô'€EØñ =%ð
ð 
ð 
ð 
å! )Ñ,Ô,ð
ñ 
ô 
ˆð
 ð 	9Ý�HŠHÐ0µ#°e±*´*¸eÑDÔDÐDÐDå�KŠKÐ7Ñ8Ô8Ð8ð-	ØBÐBÐBÐBÐBÐBàIÐIÐIÐIµ5½¸Y¹¼Ñ3HÔ3HÐIÑIÔIˆEÝ‘5”5ˆDØð &ð &�Ø—’˜AŸFšF™HœHÑ%Ô%Ð%Ð%Ý˜$‘<”<ˆDØKÐKÐKÐKÀÐKÑKÔKˆGÝ!Ô.­uµS¸±^´^Ñ/DÔ/DÀaÑHÔHð 	Cð 	C‘��1ð'ð 'ð 'ð 'Ý%(¨¨w°q¬zÑ%:Ô%:ð'ñ 'ô 'Ð#ð'ð 'ð 'ð 'Ý%(¨¨w°q¬zÑ%:Ô%:ð'ñ 'ô 'Ð#ð 'Ð*=Ò=Ð=ØÝ*¨7°1¬:°w¸q´zÑBÔB��a”˜‘�à(Ð(¨¸$Ð?Ñ?Ô?ˆDØŸš™œ‰JˆD�$Ý¥Ñ$Ô$ˆEÝ  d™OœOð $ð $‘��SØ�c”
—’˜sÑ#Ô#Ð#Ø�c”
—’˜sÑ#Ô#Ð#Ð#ð �f�s 9™~œ~Ñ-ˆGØˆEÝ‘e”eˆGÝ˜%‘L”LˆEØð (Ø—M’M‘O”O�Ø—’˜A‘”�Ø—’˜Q‘”�Ý  a¤Ñ)Ô)ð (ð (�AØ Ð'Ð'Ø%&˜ ™
ØŸš Q™œ˜øð ð (õ �u‘:”:¥Øñ"ô "ò ð ð à?ñô ð ð øõ ð 	ð 	ð 	ØˆDð	øøøõ 	�Š� Ñ(Ô(Ð(Ý�Š�˜eÑ$Ô$Ð$Ø�Eˆ>Ðs   ÃJM Í
MÍM)4ÚfontTools.ttLib.ttGlyphSetr   ÚfontTools.pens.basePenr   r   r   ÚfontTools.pens.pointPenr   r   ÚfontTools.pens.recordingPenr	   r
   ÚfontTools.misc.transformr   Úcollectionsr   r   Úmathr   r   r   r   r»   ÚloggingÚ	getLoggerr  r   rN   rR   rT   rz   r�   r˜   rœ   r¥   r²   r¸   rÁ   Úscipy.optimizer«   rÔ   r  Úmunkresr´   rÌ   r×   rÝ   rá   rç   rí   r  r  r9   r:   r;   ú<module>r$     s  ðØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ .Ð .Ð .Ð .Ð .Ð .Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð à €€€à€gÔÐ9Ñ:Ô:€ðð ð ð ð ñ ô ð ð8ð ð ð ð ð ðð ð ð ð �Gñ ô ð ðB?ð ?ð ?ð ?ð ?˜}ñ ?ô ?ð ?ðHð Hð Hð Hð HÐ.ñ Hô Hð Hðð ð ðð ð ð8ð 8ð 8ð.ð .ð .ð(ð (ð (ðð ð ð(
Ø4Ð4Ð4Ð4Ð4Ð4à*SÐ'Ð'øØð 

ð 

ð 

ð	
Ø#Ð#Ð#Ð#Ð#Ð#ð 8ð 	,Ð+øð ð 
ð 
ð 
à:ð 	,Ð+Ð+ð
øøøøøð

øøøðð ð ð	2ð 	2ð 	2ðð ð ð ()Ð $ð!ð !ð !ðHð ð ð6 CFÀ#Á%Ä%ð Að Að Að Að Að Að As6   Â#B, Â,CÂ2B;Â:CÂ;CÃCÃCÃCÃ
C