§
    ¢”jq+  ã                   ó´   — d dl mZmZ d dlmZ d dlZd dlZ	 d dlZn# e$ r	 d dl	mZ Y nw xY w G d„ de
¦  «        Z G d„ de
¦  «        Z G d	„ d
e¦  «        ZdS )é    )ÚFeatureLibErrorÚIncludedFeaNotFound)ÚFeatureLibLocationN)Úcythonc                   óÜ   — e Zd ZdZdZdZeeef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dZdZdZdZedz   Zeez   dz   Z ej        d¦  «        ZdZdZd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d „ Z&d!S )"ÚLexerÚNUMBERÚHEXADECIMALÚOCTALÚFLOATÚSTRINGÚNAMEÚFILENAMEÚ
GLYPHCLASSÚCIDÚSYMBOLÚCOMMENTÚNEWLINEÚANONYMOUS_BLOCKz 	z
z,;:-+'{}[]<>()=Ú
0123456789Ú0123456789ABCDEFabcdefÚ4ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzz	_+*:.^~!\z
_.+*:^~!/-z^[A-Za-z_0-9.\-]+$ÚNORMALc                 ó–   — || _         d| _        d| _        d| _        || _        t          |¦  «        | _        t          j        | _	        d S )Né   r   )
Ú	filename_Úline_Úpos_Úline_start_Útext_ÚlenÚtext_length_r   ÚMODE_NORMAL_Úmode_)ÚselfÚtextÚfilenames      úe/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/feaLib/lexer.pyÚ__init__zLexer.__init__+   sB   € Ø!ˆŒØˆŒ
ØˆŒ	ØˆÔØˆŒ
Ý ™IœIˆÔÝÔ'ˆŒ
ˆ
ˆ
ó    c                 ó   — | S ©N© ©r%   s    r(   Ú__iter__zLexer.__iter__4   ó   € Øˆr*   c                 ó*   — |                       ¦   «         S r,   ©Ú__next__r.   s    r(   Únextz
Lexer.next7   ó   € Ø�}Š}‰ŒÐr*   c                 ó`   — 	 |                       ¦   «         \  }}}|t          j        k    r|||fS Œ.r,   )Únext_r   r   )r%   Ú
token_typeÚtokenÚlocations       r(   r3   zLexer.__next__:   s:   € ð	5Ø*.¯*ª*©,¬,Ñ'ˆJ˜˜xØ�Uœ]Ò*Ð*Ø" E¨8Ð4Ð4ð	5r*   c                 ó`   — | j         | j        z
  dz   }t          | j        pd| j        |¦  «        S )Nr   z
<features>)r   r   r   r   r   )r%   Úcolumns     r(   Ú	location_zLexer.location_@   s1   € Ø”˜TÔ-Ñ-°Ñ1ˆÝ! $¤.Ð"@°LÀ$Ä*ÈfÑUÔUÐUr*   c                 óÐ  — |                       t          j        ¦  «         |                      ¦   «         }| j        }| j        }t          |¦  «        }||k    rt          ¦   «         ‚||         }|dz   |k     r||dz            nd }|dk    r;| xj        dz  c_        | xj        dz  c_        | j        | _	        t          j
        d |fS |dk    rC| xj        |dk    rdndz  c_        | xj        dz  c_        | j        | _	        t          j
        d |fS |dk    r;|                      t          j        ¦  «         t          j        ||| j        …         |fS | j        t          j        u rž|dk    rt!          d|¦  «        ‚|                      d¦  «         | j        |k     r|| j                 nd }|dk    rt!          d	|¦  «        ‚| xj        dz  c_        t          j        | _        t          j        ||dz   | j        dz
  …         |fS |d
k    rj|t          j        v r\| xj        dz  c_        |                       t          j        ¦  «         t          j        t+          ||dz   | j        …         d¦  «        |fS |dk    r¢| xj        dz  c_        |                       t          j        ¦  «         ||dz   | j        …         }t          |¦  «        dk     rt!          d|¦  «        ‚t          j                             |¦  «        st!          d|¦  «        ‚t          j        ||fS |t          j        v rd| xj        dz  c_        |                       t          j        ¦  «         ||| j        …         }|dk    rt          j        | _        t          j        ||fS |dk    r]|dv rY| xj        dz  c_        |                       t          j        ¦  «         t          j        t+          ||| j        …         d¦  «        |fS |dk    rW|t          j        v rI|                       t          j        ¦  «         t          j        t+          ||| j        …         d¦  «        |fS |t          j        v rÂ|                       t          j        ¦  «         | j        |k    s|| j                 dk    r*t          j        t+          ||| j        …         d¦  «        |fS |                       d¦  «         |                       t          j        ¦  «         t          j         tC          ||| j        …         ¦  «        |fS |dk    rà|t          j        v rÒ| xj        dz  c_        |                       t          j        ¦  «         | j        |k    s|| j                 dk    r*t          j        t+          ||| j        …         d¦  «        |fS |                       d¦  «         |                       t          j        ¦  «         t          j         tC          ||| j        …         ¦  «        |fS |t          j"        v r| xj        dz  c_        t          j#        ||fS |dk    r£| xj        dz  c_        |                      d¦  «         | j        | j$        k     r^| j        | j                 dk    rH| xj        dz  c_        tK          j&        dd||dz   | j        dz
  …         ¦  «        }	t          j'        |	|fS t!          d|¦  «        ‚t!          d|z  |¦  «        ‚)Nr   ú
úé   ú#ú(zExpected '(' before file nameú)zExpected ')' after file nameú\é
   ú@zExpected glyph class namezOGlyph class names must consist of letters, digits, underscore, period or hyphenÚincludeÚ0ÚxXé   é   ú.ú-ú"z[
]Ú z Expected '"' to terminate stringzUnexpected character: %r)(Ú
scan_over_r   ÚCHAR_WHITESPACE_r=   r   r    r!   ÚStopIterationr   r   r   Úscan_until_ÚCHAR_NEWLINE_r   r$   ÚMODE_FILENAME_r   r#   r   ÚCHAR_DIGIT_r   ÚintÚCHAR_NAME_CONTINUATION_ÚRE_GLYPHCLASSÚmatchr   ÚCHAR_NAME_START_r   ÚCHAR_HEXDIGIT_r
   r   r	   r   ÚfloatÚCHAR_SYMBOL_r   r"   ÚreÚsubr   )
r%   r:   Ústartr&   ÚlimitÚcur_charÚ	next_charÚ
glyphclassr9   Ústrings
             r(   r7   zLexer.next_D   su  € Ø�Š�Ô.Ñ/Ô/Ð/Ø—>’>Ñ#Ô#ˆØ”	ˆØŒzˆÝ�D‘	”	ˆØ�EŠ>ˆ>Ý‘/”/Ð!Ø˜”;ˆØ',¨q¡y°5Ò'8Ð'8�D˜ ™”O�O¸dˆ	à�tÒÐØˆIŒI˜‰NˆIŒIØˆJŒJ˜!‰OˆJŒJØ#œyˆDÔÝ”M 4¨Ð2Ð2Ø�tÒÐØˆIŒI˜i¨4Ò/Ð/˜˜°QÑ6ˆIŒIØˆJŒJ˜!‰OˆJŒJØ#œyˆDÔÝ”M 4¨Ð2Ð2Ø�sŠ?ˆ?Ø×Ò�UÔ0Ñ1Ô1Ð1Ý”M 4¨°´	Ð(9Ô#:¸HÐEÐEàŒ:�Ô-Ð-Ð-Ø˜3ŠˆÝ%Ð&EÀxÑPÔPÐPØ×Ò˜SÑ!Ô!Ð!Ø*.¬)°eÒ*;Ð*;�t˜DœI”�ÀˆHØ˜3ŠˆÝ%Ð&DÀhÑOÔOÐOØˆIŒI˜‰NˆIŒIÝÔ+ˆDŒJÝ”N D¨°©°T´YÀ±]Ð)BÔ$CÀXÐNÐNà�tÒÐ 	­UÔ->Ð >Ð >ØˆIŒI˜‰NˆIŒIØ�OŠO�EÔ-Ñ.Ô.Ð.Ý”I�s 4¨°©	°D´IÐ(=Ô#>ÀÑCÔCÀXÐNÐNØ�sŠ?ˆ?ØˆIŒI˜‰NˆIŒIØ�OŠO�EÔ9Ñ:Ô:Ð:Ø˜e a™i¨$¬)Ð3Ô4ˆJÝ�:‰Œ Ò"Ð"Ý%Ð&AÀ8ÑLÔLÐLÝÔ&×,Ò,¨ZÑ8Ô8ð Ý%ð3àñô ð õ
 Ô$ j°(Ð;Ð;Ø•uÔ-Ð-Ð-ØˆIŒI˜‰NˆIŒIØ�OŠO�EÔ9Ñ:Ô:Ð:Ø˜ ¤Ð*Ô+ˆEØ˜	Ò!Ð!Ý"Ô1�”
Ý”J  xÐ0Ð0Ø�sŠ?ˆ?˜y¨DÐ0Ð0ØˆIŒI˜‰NˆIŒIØ�OŠO�EÔ0Ñ1Ô1Ð1ÝÔ%¥s¨4°¸¼	Ð0AÔ+BÀBÑ'GÔ'GÈÐRÐRØ�sŠ?ˆ?˜y­EÔ,=Ð=Ð=Ø�OŠO�EÔ-Ñ.Ô.Ð.Ý”K¥ T¨%°$´)Ð*;Ô%<¸aÑ!@Ô!@À(ÐKÐKØ•uÔ(Ð(Ð(Ø�OŠO�EÔ-Ñ.Ô.Ð.ØŒy˜EÒ!Ð! T¨$¬)¤_¸Ò%;Ð%;Ýœ¥c¨$¨u°t´yÐ/@Ô*AÀ2Ñ&FÔ&FÈÐQÐQØ�OŠO˜CÑ Ô Ð Ø�OŠO�EÔ-Ñ.Ô.Ð.Ý”K¥ t¨E°D´IÐ,=Ô'>Ñ!?Ô!?ÀÐJÐJØ�sŠ?ˆ?˜y­EÔ,=Ð=Ð=ØˆIŒI˜‰NˆIŒIØ�OŠO�EÔ-Ñ.Ô.Ð.ØŒy˜EÒ!Ð! T¨$¬)¤_¸Ò%;Ð%;Ýœ¥c¨$¨u°t´yÐ/@Ô*AÀ2Ñ&FÔ&FÈÐQÐQØ�OŠO˜CÑ Ô Ð Ø�OŠO�EÔ-Ñ.Ô.Ð.Ý”K¥ t¨E°D´IÐ,=Ô'>Ñ!?Ô!?ÀÐJÐJØ•uÔ)Ð)Ð)ØˆIŒI˜‰NˆIŒIÝ”L (¨HÐ5Ð5Ø�sŠ?ˆ?ØˆIŒI˜‰NˆIŒIØ×Ò˜SÑ!Ô!Ð!ØŒy˜4Ô,Ò,Ð,°´¸D¼IÔ1FÈ#Ò1MÐ1MØ�	”	˜Q‘�	”	åœ ¨"¨d°5¸1±9¸t¼yÈ1¹}Ð3LÔ.MÑNÔN�Ýœ f¨hÐ7Ð7å%Ð&IÈ8ÑTÔTÐTÝÐ8¸8ÑCÀXÑNÔNÐNr*   c                 ó”   — | j         }|| j        k     r.| j        |         |v r|dz  }|| j        k     r| j        |         |v °|| _         d S ©Nr   ©r   r"   r    )r%   ÚvalidÚps      r(   rQ   zLexer.scan_over_¥   s[   € ØŒIˆØ�$Ô#Ò#Ð#¨¬
°1¬¸Ð(>Ð(>Ø�‰FˆAð �$Ô#Ò#Ð#¨¬
°1¬¸Ð(>Ð(>àˆŒ	ˆ	ˆ	r*   c                 ó”   — | j         }|| j        k     r.| j        |         |vr|dz  }|| j        k     r| j        |         |v°|| _         d S ri   rj   )r%   Ústop_atrl   s      r(   rT   zLexer.scan_until_«   s[   € ØŒIˆØ�$Ô#Ò#Ð#¨¬
°1¬¸WÐ(DÐ(DØ�‰FˆAð �$Ô#Ò#Ð#¨¬
°1¬¸WÐ(DÐ(DàˆŒ	ˆ	ˆ	r*   c                 óì  — |                       ¦   «         }|                     ¦   «         }|                      t          j        ¦  «         |                      t          j        ¦  «         d|z   dz   }t          j        || j        | j	        d …         d¬¦  «        }t          |¦  «        dk    rt          d|z  |¦  «        ‚| xj	        t          |d         ¦  «        z  c_	        t          j        |d         |fS )Nz}\s*z\s*;r   )ÚmaxsplitrA   z-Expected '} %s;' to terminate anonymous blockr   )r=   ÚstriprT   r   rU   rQ   r`   Úsplitr    r   r!   r   r   )r%   Útagr:   Úregexprr   s        r(   Úscan_anonymous_blockzLexer.scan_anonymous_block±   sÖ   € Ø—>’>Ñ#Ô#ˆØ�iŠi‰kŒkˆØ×Ò�Ô,Ñ-Ô-Ð-Ø�Š�Ô+Ñ,Ô,Ð,Ø˜3‘ Ñ(ˆÝ”˜ ¤¨D¬I¨K¨KÔ!8À1ÐEÑEÔEˆÝˆu‰:Œ:˜Š?ˆ?Ý!Ø?À#ÑEÀxñô ð ð 	ˆ	Œ	•S˜˜qœ‘]”]Ñ"ˆ	Œ	ÝÔ% u¨Q¤x°Ð:Ð:r*   N)'Ú__name__Ú
__module__Ú__qualname__r	   r
   r   ÚNUMBERSr   r   r   r   r   r   r   r   r   r   rR   rU   r_   rW   r]   ÚCHAR_LETTER_r\   rY   r`   ÚcompilerZ   r#   rV   r)   r/   r4   r3   r=   r7   rQ   rT   ru   r-   r*   r(   r   r      sH  € € € € € Ø€FØ€KØ€EØ�{ EÐ*€GØ€EØ€FØ€DØ€HØ€JØ
€CØ€FØ€GØ€GØ'€OàÐØ€MØ$€LØ€KØ-€NØI€LØ# lÑ2ÐØ*¨[Ñ8¸<ÑGÐà�B”JÐ4Ñ5Ô5€Mà€LØ€Nð(ð (ð (ðð ð ðð ð ð5ð 5ð 5ðVð Vð Vð_Oð _Oð _OðBð ð ðð ð ð;ð ;ð ;ð ;ð ;r*   r   c                   óL   — e Zd ZdZddœd„Zd„ Zd„ Zd„ Zed„ ¦   «         Z	d	„ Z
dS )
ÚIncludingLexeraŸ  A Lexer that follows include statements.

    The OpenType feature file specification states that due to
    historical reasons, relative imports should be resolved in this
    order:

    1. If the source font is UFO format, then relative to the UFO's
       font directory
    2. relative to the top-level include file
    3. relative to the parent include file

    We only support 1 (via includeDir) and 2.
    N)Ú
includeDirc                óx   — |                       |¦  «        g| _        | j        d         j        | _        || _        dS )aO  Initializes an IncludingLexer.

        Behavior:
            If includeDir is passed, it will be used to determine the top-level
            include directory to use for all encountered include statements. If it is
            not passed, ``os.path.dirname(featurefile)`` will be considered the
            include directory.
        r   N)Úmake_lexer_Úlexers_r   Úfeaturefilepathr~   )r%   Úfeaturefiler~   s      r(   r)   zIncludingLexer.__init__Ï   s8   € ð ×(Ò(¨Ñ5Ô5Ð6ˆŒØ#œ|¨AœÔ8ˆÔØ$ˆŒˆˆr*   c                 ó   — | S r,   r-   r.   s    r(   r/   zIncludingLexer.__iter__Ý   r0   r*   c                 ó*   — |                       ¦   «         S r,   r2   r.   s    r(   r4   zIncludingLexer.nextà   r5   r*   c                 óŠ  — | j         �r®| j         d         }	 t          |¦  «        \  }}}n)# t          $ r | j                              ¦   «          Y ŒOw xY w|t          j        u �rG|dk    �r@|                     ¦   «         \  }}}|t          j        urt          d|¦  «        ‚t          j	         
                    |¦  «        r|}nn| j        �| j        }	n?| j        �%t          j	                             | j        ¦  «        }	nt          j        ¦   «         }	t          j	                             |	|¦  «        }t!          | j         ¦  «        dk    rt          d|¦  «        ‚	 | j                              |                      |¦  «        ¦  «         n(# t&          $ r}
t)          ||¦  «        |
‚d }
~
ww xY w|||fS | j         �°®t          ¦   «         ‚)NéÿÿÿÿrH   zExpected file nameé   zToo many recursive includes)r�   r4   rS   Úpopr   r   r   r   ÚosÚpathÚisabsr~   r‚   ÚdirnameÚgetcwdÚjoinr!   Úappendr€   ÚFileNotFoundErrorr   )r%   Úlexerr8   r9   r:   Ú
fname_typeÚfname_tokenÚfname_locationr‹   ÚcurpathÚerrs              r(   r3   zIncludingLexer.__next__ã   sÕ  € ØŒlñ #	5Ø”L Ô$ˆEðÝ.2°5©k¬kÑ+�
˜E 8 8øÝ ð ð ð Ø”× Ò Ñ"Ô"Ð"Ø�ðøøøð �UœZÐ'Ñ'¨E°YÒ,>Ñ,>Ø:?¿*º*¹,¼,Ñ7�
˜K¨Ø¥U¤^Ð3Ð3Ý)Ð*>ÀÑOÔOÐOõ ”7—=’= Ñ-Ô-ð >Ø&�D�Dà”Ð2Ø"&¤/˜˜ØÔ-Ð9Ý"$¤'§/¢/°$Ô2FÑ"GÔ"G˜˜õ #%¤)¡+¤+˜Ýœ7Ÿ<š<¨°Ñ=Ô=�DÝ�t”|Ñ$Ô$¨Ò)Ð)Ý)Ð*GÈÑXÔXÐXðTØ”L×'Ò'¨×(8Ò(8¸Ñ(>Ô(>Ñ?Ô?Ð?Ð?øÝ(ð Tð Tð TÝ-¨k¸>ÑJÔJÐPSÐSøøøøðTøøøð # E¨8Ð4Ð4ðG Œlñ #	5õH ‰oŒoÐs'   —+ «#AÁAÅ-F Æ
F'ÆF"Æ"F'c                 óî   — t          | d¦  «        r| d}}n| d}}t          |dd¬¦  «        }|                     ¦   «         }t          |dd ¦  «        }|r|                     ¦   «          t          ||¦  «        S )NÚreadFTÚrz	utf-8-sig)ÚencodingÚname)ÚhasattrÚopenr™   ÚgetattrÚcloser   )Úfile_or_pathÚfileobjÚclosingr'   Údatas        r(   r€   zIncludingLexer.make_lexer_
  s€   € å�< Ñ(Ô(ð 	@Ø+¨U�WˆGˆGà ,¨d�gˆHÝ˜8 S°;Ð?Ñ?Ô?ˆGØ�|Š|‰~Œ~ˆÝ˜7 F¨DÑ1Ô1ˆØð 	Ø�MŠM‰OŒOˆOÝ�T˜8Ñ$Ô$Ð$r*   c                 óB   — | j         d                              |¦  «        S )Nr‡   )r�   ru   )r%   rs   s     r(   ru   z#IncludingLexer.scan_anonymous_block  s   € ØŒ|˜BÔ×4Ò4°SÑ9Ô9Ð9r*   )rv   rw   rx   Ú__doc__r)   r/   r4   r3   Ústaticmethodr€   ru   r-   r*   r(   r}   r}   À   s”   € € € € € ðð ð 37ð %ð %ð %ð %ð %ðð ð ðð ð ð%ð %ð %ðN ð
%ð 
%ñ „\ð
%ð:ð :ð :ð :ð :r*   r}   c                   ó   — e Zd ZdZd„ ZdS )ÚNonIncludingLexerzBLexer that does not follow `include` statements, emits them as-is.c                 ó6   — t          | j        d         ¦  «        S )Nr   )r4   r�   r.   s    r(   r3   zNonIncludingLexer.__next__  s   € Ý�D”L ”OÑ$Ô$Ð$r*   N)rv   rw   rx   r¦   r3   r-   r*   r(   r©   r©     s)   € € € € € ØLÐLð%ð %ð %ð %ð %r*   r©   )ÚfontTools.feaLib.errorr   r   ÚfontTools.feaLib.locationr   r`   rŠ   r   ÚImportErrorÚfontTools.miscÚobjectr   r}   r©   r-   r*   r(   ú<module>r°      s  ðØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 	€	€	€	Ø 	€	€	€	ð&Ø€M€M€M€MøØð &ð &ð &à%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð&øøøð
p;ð p;ð p;ð p;ð p;ˆFñ p;ô p;ð p;ðfX:ð X:ð X:ð X:ð X:�Vñ X:ô X:ð X:ðv%ð %ð %ð %ð %˜ñ %ô %ð %ð %ð %s   ˜ �+ª+