+
    K<iQ$                       ^ RI Ht ^ RIt^ RIHt ^ RIHtHt ^ RIH	t	H
t
HtHtHtHtHt  ^ RIHt ^ RIHt ^ RIHt ^ R	IHt R
.t]P4                  ! R4      tRRRR/tR]R,           R2t]R 4       tR R ltR R lt R R lt!R R lt"R R lt#R R lt$R R  lt%R! R" lt&R# R$ lt']! ]PP                  ! R%4      4      R& R' l4       t)R#   ] d    Rt Li ; i)(    )annotationsN)cache)chaincount)DictIterableIteratorListOptionalSetTuple)etree)ttLib)_add_method)SVGDocumentsubset_glyphsz^glyph(\d+)$svgzhttp://www.w3.org/2000/svgxlinkzhttp://www.w3.org/1999/xlink{z}hrefc                :    \         P                  ! V \        R 7      # ))
namespaces)r   XPath
NAMESPACES)paths   &6/usr/lib/python3/dist-packages/fontTools/subset/svg.pyxpathr       s     ;;t
33    c                    V ^8  d   QhRRRR/# )   treeetree.ElementreturnDict[str, etree.Element] )formats   "r   __annotate__r&   &   s     G G} G1I Gr   c                p    \        R 4      ! V 4       Uu/ uF  qP                  R,          VbK  	  up# u upi )z//svg:*[@id]id)r   attrib)r    els   & r   group_elements_by_idr+   &   s3     +0*?*EF*EBIIdOR*EFFFs   3c                    V ^8  d   QhRRRR/# )r   
style_attrstrr"   Dict[str, str]r$   )r%   s   "r   r&   r&   -   s      s ~ r   c                   / pV P                  R 4       Ft  pVP                  R4      ^8X  d8   VP                  R4      w  r4VP                  4       pVP                  4       W&   KP  VP                  4       '       g   Kh  \        RV 24      h	  V# );:z Invalid CSS declaration syntax: )splitr   strip
ValueError)r-   resultdeclarationproperty_namevalues   &    r   parse_css_declarationsr:   -   s     F!'',S!Q&#.#4#4S#9 M)//1M$)KKMF!  ?}MNN - Mr   c                    V ^8  d   QhRRRR/# )r   r    r!   r"   zIterator[str]r$   )r%   s   "r   r&   r&   ;   s     ! !m ! !r   c              #    "   \        R 4      p\        V .V! V 4      4       F  p\        V4      pVe   Vx  VP                  pRV9   d*   / \	        V4      C\        VP                  R,          4      CpR FX  pWT9   g   K  WE,          pVP                  R4      '       g   K,  VP                  R4      '       g   KE  V^R pV'       g   Q hVx  KZ  	  K  	  R# 5i)z.//svg:*[ starts-with(@xlink:href, '#') or starts-with(@fill, 'url(#') or starts-with(@clip-path, 'url(#') or contains(@style, ':url(#') ]Nstylezurl(#))fillz	clip-path)r   r   href_local_targetr)   dictr:   
startswithendswith)r    !find_svg_elements_with_referencesr*   ref_idattrsattrr9   s   &      r   iter_referenced_idsrI   ;   s     
 ).	)% TF=dCD"2&L		eQtE{Q&<RYYw=O&PQE)D}##G,,1D1D"1R[F!M6 L * Es   A9C C!C:Cc               $    V ^8  d   QhRRRRRR/# )r   elementsr#   element_idsSet[str]r"   Noner$   )r%   s   "r   r&   r&   Y   s$      &5=	r   c                    TpV'       dY   \        4       pV F+  pW@9  d   K  VP                  \        W,          4      4       K-  	  W1,          pVP                  V4       TpK`  R # N)setupdaterI   )rK   rL   	unvisited
referencedel_ids   &&   r   closure_element_idsrV   Y   s^    
 I
"u
E$1(/BC	 
 	!
:&	 r   c               $    V ^8  d   QhRRRRRR/# )r   r*   r!   retained_idsrM   r"   boolr$   )r%   s   "r   r&   r&   k   s!       X $ r   c           	        V P                   P                  R 4      V9   d   R# \        V  Uu. uF  p\        W!4      NK  	  up4      '       d   R# \	        V 4      ^ 8X  g   Q hV P                  4       pVe   VP                  V 4       R# u upi )r(   TF)r)   getanysubset_elementslen	getparentremove)r*   rX   eparents   &&  r   r]   r]   k   su     
yy}}Tl* b9bOA,b9::r7a<<\\^Fb :s   Bc               $    V ^8  d   QhRRRRRR/# )r   r   r!   glyph_index_mapzDict[int, int]r"   r/   r$   )r%   s   "r   r&   r&   ~   s$      	)7r   c                ~   \        V 4      p/ pVP                  4        F  w  rE\        P                  V4      pV'       g   K$  \	        VP                  ^4      4      pVP                  V4      pVe   Wx8X  d   K[  RV 2p	M(RV 2p	\        ^4      p
W9   d   V	 R\        V
4       2p	K  WV&   WP                  R&   K  	  V# )   glyph.r(   )
r+   itemsGID_REmatchintgroupr[   r   nextr)   )r   rd   rK   id_maprU   r*   m	old_index	new_indexnew_idns   &&         r   remap_glyph_idsru   ~   s    
 $C(HF^^%	LL
O	#''	2	 %YK(F
 [FaA$"81T!WI.u 		$) &, Mr   c                    V ^8  d   QhRRRR/# )r   r*   r!   r"   zOptional[str]r$   )r%   s   "r   r&   r&      s      - M r   c                    \         V P                  9   dH   V P                  \         ,          pVP                  R 4      '       d   \        V4      ^8  d
   VR,          # R# )#:rf   NNN)
XLINK_HREFr)   rC   r^   )r*   hrefs   & r   rA   rA      sA    RYYyy$??3CIM8Or   c               $    V ^8  d   QhRRRRRR/# )r   r   r!   ro   r/   r"   rN   r$   )r%   s   "r   r&   r&      s!     1 1 1 14 1r   c                    \        R 4      ! V 4       F:  p\        V4      pVf   Q hW19   g   K  W,          pRV 2VP                  \        &   K<  	  R# )z,.//svg:*[starts-with(@xlink:href, '#glyph')]Nrx   )r   rA   r)   ry   )r   ro   r*   old_idrs   s   &&   r   update_glyph_href_linksr~      sO    BCCH"2&!!!^F&'xLBIIj! Ir   c                    V ^8  d   QhRRRR/# )r   intszIterable[int]r"   zIterator[Tuple[int, int]]r$   )r%   s   "r   r&   r&      s       #< r   c              #     "   \        \        \        V 4      4      4      p \        V4      ;r#T F  pT^,
          T8X  d   TpK  Y#3x  T;r#K  	  Y#3x  R #   \         d     R # i ; i5irP   )itersortedrQ   rn   StopIteration)r   sorted_intsstartendvs   &    r   rangesr      st     vc$i()K;'' q5C<C,OEC  ,  s'   A)A *A)A&"A)%A&&A)zSVG c                   V ^8  d   QhRR/# )r   r"   rY   r$   )r%   s   "r   r&   r&      s     ; ;d ;r   c           
     X  a \         f   \        R4      hVP                  pVP                  pVP                  o. pV P
                   EF  p\        VP                  VP                  ^,           4       Uu0 uF  qbV,          kK  	  upP                  VP                  4      pV'       g   Kd  \         P                  ! VP                  P                  R4      \         P                  ! RRRR7      R7      p\        V4      p	V U
u0 uF  qV
,          kK  	  pp
V Uu0 uF  pRV 2kK
  	  pp\!        W4       \#        W4      '       g   EK  VP$                  P&                  '       g   \)        VS4      p\+        W4       \         P,                  ! WP$                  P.                  R7      P1                  R4      pV3R	 lV 4       p\3        V4       F-  w  ppVP5                  \7        VVVVP8                  4      4       K/  	  EK  	  W@n        \;        V P
                  4      # u upi u up
i u upi )
Nz.No module named 'lxml', required to subset SVGzutf-8TF)	huge_treeremove_blank_textresolve_entities)parserrg   )pretty_printc              3  6   <"   T F  pSV,          x  K  	  R # 5irP   r$   ).0ird   s   & r   	<genexpr> subset_glyphs.<locals>.<genexpr>   s     51OA&&s   )r   ImportErrororig_glyph_orderreverseOrigGlyphMaprd   docListrangestartGlyphID
endGlyphIDintersectionglyphs
fromstringdataencode	XMLParserr+   rV   r]   optionsretain_gidsru   r~   tostring
pretty_svgdecoder   appendr   
compressedrY   )selfsglyph_orderrev_orig_glyph_mapnew_docsdocr   r   r   rK   ggidsrL   ro   new_docnew_gidsr   r   rd   s   &&                @r   r   r      s   }JKK //K)*)>)>&'&7&7O"$H||$)#*:*:CNNQ<N$O
$OqNN$O

,qxx
  	  HHOOG$??
  #' "'	
& (,/56v!1%%v6,01Dqqc{D1H2s00yy$$$$S/:F#C0..993G3GHOOPWX55 *JE3OOKS^^LM +U Z L]
6 71s   4HH"H')*
__future__r   re	functoolsr   	itertoolsr   r   typingr   r   r	   r
   r   r   r   lxmlr   r   	fontToolsr   fontTools.subset.utilr   fontTools.ttLib.tables.S_V_G_r   __all__compilerj   r   ry   r   r+   r:   rI   rV   r]   ru   rA   r~   r   getTableClassr   r$   r   r   <module>r      s    " 	  " G G G  - 5 
 
O	$ 
'+
 *W%&f-
 4 4
G!<$&@1  U  (); *;o   Es   C 	CC