+
    iq+                         ^ RI HtHt ^ RIHt ^ RIt^ RIt ^ RIt ! R R]
4      t ! R R]
4      t ! R	 R
]4      tR#   ] d
    ^ RI	Ht  L2i ; i)    )FeatureLibErrorIncludedFeaNotFound)FeatureLibLocationN)cythonc                   
  a  ] tR t^t o RtRtRt]]]3tRtRt	Rt
RtRtR	tR
tRtRtRtRtRtRtRtRtRt]R,           t]],           R,           t]P6                  ! R4      tRtRtR tR t R t!R t"R t#R t$R t%R t&R  t'R!t(V t)R"# )#LexerNUMBERHEXADECIMALOCTALFLOATSTRINGNAMEFILENAME
GLYPHCLASSCIDSYMBOLCOMMENTNEWLINEANONYMOUS_BLOCKz 	z
z,;:-+'{}[]<>()=
01234567890123456789ABCDEFabcdef4ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzz	_+*:.^~!\z
_.+*:^~!/-z^[A-Za-z_0-9.\-]+$NORMALc                    W n         ^V n        ^ V n        ^ V n        Wn        \        V4      V n        \        P                  V n	        R#    N)
	filename_line_pos_line_start_text_lentext_length_r   MODE_NORMAL_mode_)selftextfilenames   &&&v/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/fontTools/feaLib/lexer.py__init__Lexer.__init__+   s;    !
	
I''
    c                    V # N r&   s   &r)   __iter__Lexer.__iter__4       r,   c                "    V P                  4       # r.   __next__r0   s   &r)   next
Lexer.next7       }}r,   c                `     V P                  4       w  rpV\        P                  8w  g   K+  WV3# )T)next_r   r   )r&   
token_typetokenlocations   &   r)   r6   Lexer.__next__:   s,    *.**,'JxU]]*"844r,   c                    V P                   V P                  ,
          ^,           p\        V P                  ;'       g    RV P                  V4      # )r   z
<features>)r   r    r   r   r   )r&   columns   & r)   	location_Lexer.location_@   s:    T---1!$.."@"@L$**fUUr,   c                   V P                  \        P                  4       V P                  4       pV P                  pV P
                  p\        V4      pW$8  d   \        4       hW2,          pV^,           V8  d   W2^,           ,          MRpVR8X  dW   V ;P                  ^,          un        V ;P                  ^,          un        V P                  V n	        \        P                  RV3# VR8X  d`   T ;P                  VR8X  d   ^M^,          un        V ;P                  ^,          un        V P                  V n	        \        P                  RV3# VR8X  d?   V P                  \        P                  4       \        P                  W2V P                   V3# V P                  \        P                  J d   VR8w  d   \!        RV4      hV P                  R4       V P                  V8  d   W0P                  ,          MRpVR8w  d   \!        RV4      hV ;P                  ^,          un        \        P"                  V n        \        P$                  W2^,           V P                  ^,
           V3# VR	8X  d~   V\        P&                  9   di   V ;P                  ^,          un        V P                  \        P&                  4       \        P(                  \+        W2^,           V P                   ^
4      V3# VR
8X  d   V ;P                  ^,          un        V P                  \        P,                  4       W2^,           V P                   p\        V4      ^8  d   \!        RV4      h\        P.                  P1                  V4      '       g   \!        RV4      h\        P2                  Wq3# V\        P4                  9   du   V ;P                  ^,          un        V P                  \        P,                  4       W2V P                   pVR8X  d   \        P                  V n        \        P6                  W3# VR8X  di   VR9   db   V ;P                  ^,          un        V P                  \        P8                  4       \        P:                  \+        W2V P                   ^4      V3# VR8X  d^   V\        P&                  9   dI   V P                  \        P&                  4       \        P<                  \+        W2V P                   ^4      V3# V\        P&                  9   d   V P                  \        P&                  4       V P                  V8  g   W0P                  ,          R8w  d*   \        P>                  \+        W2V P                   ^
4      V3# V P                  R4       V P                  \        P&                  4       \        P@                  \C        W2V P                   4      V3# VR8X  d   V\        P&                  9   d   V ;P                  ^,          un        V P                  \        P&                  4       V P                  V8  g   W0P                  ,          R8w  d*   \        P>                  \+        W2V P                   ^
4      V3# V P                  R4       V P                  \        P&                  4       \        P@                  \C        W2V P                   4      V3# V\        PD                  9   d,   V ;P                  ^,          un        \        PF                  WQ3# VR8X  d   V ;P                  ^,          un        V P                  R4       V P                  V PH                  8  d   V P
                  V P                  ,          R8X  d^   V ;P                  ^,          un        \J        PL                  ! RRW2^,           V P                  ^,
           4      p	\        PN                  W3# \!        RV4      h\!        RV,          V4      h)r   N
#(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_rB   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
glyphclassr=   strings
   &         r)   r;   Lexer.next_D   s   ../>>#		zzD	>/!;',qy5'8DOd	tIINIJJ!OJ#yyDMM422tIIi4/Q6IJJ!OJ#yyDMM422s?U001MM4		#:HEE::---3%&ExPPS!*.))e*;tIIH3%&DhOOIINI++DJNNDTYY]$CXNNt	U->-> >IINIOOE--.IIs4	DII#>CXNNs?IINIOOE99:ai$))4J:"%&A8LL&&,,Z88%3 
 $$j;;u---IINIOOE99:+E	!"11
JJ00s?yD0IINIOOE001%%s4		+BB'GRRs?yE,=,==OOE--.KKT$))%<a!@(KKu(((OOE--.yyE!T))_%;c$tyy*A2&FQQOOC OOE--.KKtDII'>!?JJs?yE,=,==IINIOOE--.yyE!T))_%;c$tyy*A2&FQQOOC OOE--.KKtDII'>!?JJu)))IINILL(55s?IINIS!yy4,,,DII1F#1M		Q	"d19tyy1}.MNf77%&I8TT88CXNNr,   c                    V P                   pW P                  8  d$   V P                  V,          V9   d   V^,          pK3  W n         R# r   r   r#   r!   )r&   validps   && r)   rS   Lexer.scan_over_   s4    II###

1(>FA	r,   c                    V P                   pW P                  8  d$   V P                  V,          V9  d   V^,          pK3  W n         R# r   rl   )r&   stop_atrn   s   && r)   rV   Lexer.scan_until_   s4    II###

1W(DFA	r,   c                   V P                  4       pVP                  4       pV P                  \        P                  4       V P                  \        P                  4       R V,           R,           p\        P                  ! W0P                  V P                  R ^R7      p\        V4      ^8w  d   \        RV,          V4      hV ;P                  \        V^ ,          4      ,          un	        \        P                  V^ ,          V3# )z}\s*z\s*;N)maxsplitz-Expected '} %s;' to terminate anonymous block)rB   striprV   r   rW   rS   rb   splitr!   r   r"   r   r   )r&   tagr>   regexprv   s   &&   r)   scan_anonymous_blockLexer.scan_anonymous_block   s    >>#iik,,-++,3(DIIK!81Eu:?!?#Ex  			Sq]"	%%uQx::r,   )r   r   r    r%   r   r!   r#   N)*__name__
__module____qualname____firstlineno__r	   r
   r   NUMBERSr   r   r   r   r   r   r   r   r   r   rT   rW   ra   rY   r_   CHAR_LETTER_r^   r[   rb   compiler\   r$   rX   r*   r1   r7   r6   rB   r;   rS   rV   ry   __static_attributes____classdictcell____classdict__s   @r)   r   r      s     FKE{E*GEFDHJ
CFGG'OM$LK-NIL#l2*[8<GJJ45MLN(5V_OB; ;r,   r   c                   Z   a  ] tR t^t o RtRR/R ltR tR tR t]	R 4       t
R	 tR
tV tR# )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.

includeDirNc                   V P                  V4      .V n        V P                  ^ ,          P                  V n        W n        R# )a  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.
N)make_lexer_lexers_r   featurefilepathr   )r&   featurefiler   s   &&$r)   r*   IncludingLexer.__init__   s4     ((56#||A88$r,   c                    V # r.   r/   r0   s   &r)   r1   IncludingLexer.__iter__   r3   r,   c                "    V P                  4       # r.   r5   r0   s   &r)   r7   IncludingLexer.next   r9   r,   c                   V P                   '       Edz   V P                   R,          p \        V4      w  r#pT\        P
                  J Ed?   TR8X  Ed7   TP                  4       w  rVpT\        P                  Jd   \        RT4      h\        P                  P                  T4      '       d   TpMT P                  e   T P                  p	MMT P                  e+   \        P                  P                  T P                  4      p	M\        P                  ! 4       p	\        P                  P                  Y4      p\!        T P                   4      ^8  d   \        RT4      h T P                   P#                  T P%                  T4      4       EK  Y#T3# \        4       h  \         d     T P                   P                  4         EK  i ; i  \&         d   p
\)        Yg4      T
hRp
?
ii ; i)r   rL   zExpected file nameNzToo many recursive includes)r   r7   rU   popr   r   r   r   ospathisabsr   r   dirnamegetcwdjoinr"   appendr   FileNotFoundErrorr   )r&   lexerr<   r=   r>   
fname_typefname_tokenfname_locationr   curpatherrs   &          r)   r6   IncludingLexer.__next__   sx   lllLL$E.25k+
8 UZZ'EY,>:?**,7
U^^3)*>OO 77==--&D2"&//--9"$''//$2F2F"G #%))+77<<=Dt||$))*GXXTLL''(8(8(>? #844oA !   "8 ) T-kJPSSTs)   F *G %G GG GG c                    \        V R 4      '       d   T Rr!MT Rr#\        VRRR7      pVP                  4       p\        VRR4      pV'       d   VP	                  4        \        WC4      # )readFTrz	utf-8-sig)encodingnameN)hasattropenr   getattrcloser   )file_or_pathfileobjclosingr(   datas   &    r)   r   IncludingLexer.make_lexer_
  s[    <((+UW ,dg8S;?G||~7FD1MMOT$$r,   c                F    V P                   R,          P                  V4      # )r   r   )r   ry   )r&   rw   s   &&r)   ry   #IncludingLexer.scan_anonymous_block  s    ||B44S99r,   )r   r   r   )r{   r|   r}   r~   __doc__r*   r1   r7   r6   staticmethodr   ry   r   r   r   s   @r)   r   r      sD     %$ %%N 
% 
%: :r,   r   c                   *   a  ] tR tRt o RtR tRtV tR# )NonIncludingLexeri  zBLexer that does not follow `include` statements, emits them as-is.c                :    \        V P                  ^ ,          4      # )r   )r7   r   r0   s   &r)   r6   NonIncludingLexer.__next__  s    DLLO$$r,   r/   N)r{   r|   r}   r~   r   r6   r   r   r   s   @r)   r   r     s     L% %r,   r   )fontTools.feaLib.errorr   r   fontTools.feaLib.locationr   rb   r   r   ImportErrorfontTools.miscobjectr   r   r   r/   r,   r)   <module>r      sX    G 8 	 	&p;F p;fX:V X:v% %g  &%&s   ? AA