ó
    "njóD  ã                  óð   • S r SSKJr  SSKrSSKJs  Jr  SSKJrJ	r	  SSK
Jr  SSK
Jr  \(       a  SSKJr  SS	 jrSS
 jr " S S\R"                  5      r " S S\5      r " S S\5      r " S S\5      rg)zê
Tree processors manipulate the tree created by block processors. They can even create an entirely
new `ElementTree` object. This is an excellent place for creating summaries, adding collected
references, or last minute adjustments.

é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyé   )Úutil)Úinlinepatterns)ÚMarkdownc                óØ   • [         R                  " 5       nUR                  [        U 5      SS5        UR                  [	        U 5      SS5        UR                  [        U 5      SS5        U$ )z2Build the default  `treeprocessors` for Markdown. Úinlineé   Úprettifyé
   Úunescaper   )r   ÚRegistryÚregisterÚInlineProcessorÚPrettifyTreeprocessorÚUnescapeTreeprocessor)ÚmdÚkwargsÚtreeprocessorss      Ú9/usr/lib/python3/dist-packages/markdown/treeprocessors.pyÚbuild_treeprocessorsr   '   sZ   € ä—]’]“_€NØ×ÑœO¨BÓ/°¸2Ô>Ø×ÑÔ1°"Ó5°zÀ2ÔFØ×ÑÔ1°"Ó5°zÀ1ÔEØÐó    c                ób   • [        U [        R                  5      (       d  [        U [        5      $ g)z^Return `True` if object is a string but not an  [`AtomicString`][markdown.util.AtomicString]. F)Ú
isinstancer   ÚAtomicStringÚstr)Úss    r   ÚisStringr    0   s%   € ä�aœ×*Ñ*×+Ñ+Ü˜!œSÓ!Ð!Ør   c                  ó"   • \ rS rSrSrSS jrSrg)ÚTreeprocessoré7   zø
`Treeprocessor`s are run on the `ElementTree` object before serialization.

Each `Treeprocessor` implements a `run` method that takes a pointer to an
`Element` and modifies it as necessary.

`Treeprocessors` must extend `markdown.Treeprocessor`.

c                ó   • g)zö
Subclasses of `Treeprocessor` should implement a `run` method, which
takes a root `Element`. This method can return another `Element`
object, and the existing root `Element` will be replaced, or it can
modify the current tree and return `None`.
N© )ÚselfÚroots     r   ÚrunÚTreeprocessor.runA   s   € ð 	r   r%   N)r'   úetree.ElementÚreturnúetree.Element | None)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r(   Ú__static_attributes__r%   r   r   r"   r"   7   s   † ñ÷r   r"   c                  ó´   • \ rS rSrSrSS jrSS jrSS jrSS jrSSS jjr	SSS jjr
 S       SS	 jjr S         SS
 jjrSS jrSSS jjrSrg)r   éK   zD
A `Treeprocessor` that traverses a tree, applying inline patterns.
c                ó$  • [         R                  U l        [         R                  U l        S[        U R                  5      -   [        U R                  5      -   U l        [         R                  U l        Xl	        UR                  U l
        / U l        g )Né   )r   ÚINLINE_PLACEHOLDER_PREFIXÚ$_InlineProcessor__placeholder_prefixÚETXÚ$_InlineProcessor__placeholder_suffixÚlenÚ$_InlineProcessor__placeholder_lengthÚINLINE_PLACEHOLDER_REÚ _InlineProcessor__placeholder_rer   ÚinlinePatternsÚ	ancestors)r&   r   s     r   Ú__init__ÚInlineProcessor.__init__P   sp   € Ü$(×$BÑ$BˆÔ!Ü$(§H¡HˆÔ!Ø$%¬¨D×,EÑ,EÓ(FÑ$FÜ(+¨D×,EÑ,EÓ(Fñ%GˆÔ!ä $× :Ñ :ˆÔØŒØ ×/Ñ/ˆÔØ$&ˆ�r   c                ó^   • S[        U R                  5      -  n[        R                  U-  nX24$ )zGenerate a placeholder z%04d)r;   Ústashed_nodesr   ÚINLINE_PLACEHOLDER)r&   ÚtypeÚidÚhashs       r   Ú__makePlaceholderÚ!InlineProcessor.__makePlaceholderZ   s.   € à”c˜$×,Ñ,Ó-Ñ-ˆÜ×&Ñ&¨Ñ+ˆØˆxˆr   c                ó–   • U R                   R                  X5      nU(       a!  UR                  S5      UR                  5       4$ SUS-   4$ )zÉ
Extract id from data string, start from index.

Arguments:
    data: String.
    index: Index, from which we start search.

Returns:
    Placeholder id and string index, after the found placeholder.

r   N)r>   ÚsearchÚgroupÚend)r&   ÚdataÚindexÚms       r   Ú__findPlaceholderÚ!InlineProcessor.__findPlaceholder`   sD   € ð ×!Ñ!×(Ñ(¨Ó5ˆÞØ—7‘7˜1“:˜qŸu™u›wÐ&Ð&à˜ ™�?Ð"r   c                óH   • U R                  U5      u  p4XR                  U'   U$ )zAdd node to stash. )Ú!_InlineProcessor__makePlaceholderrD   )r&   ÚnoderF   ÚplaceholderrG   s        r   Ú__stashNodeÚInlineProcessor.__stashNoder   s(   € à×0Ñ0°Ó6‰ˆØ!%×Ñ˜2ÑØÐr   c                óè   • [        U[        R                  5      (       dR  Sn[        U R                  5      nX$:  a6  U R                  U R                  U   XU5      u  pnU(       d  US-  nX$:  a  M6  U$ )zá
Process string with inline patterns and replace it with placeholders.

Arguments:
    data: A line of Markdown text.
    patternIndex: The index of the `inlinePattern` to start with.

Returns:
    String with placeholders.

r   r   )r   r   r   r;   r?   Ú_InlineProcessor__applyPattern)r&   rO   ÚpatternIndexÚ
startIndexÚcountÚmatcheds         r   Ú__handleInlineÚInlineProcessor.__handleInlinex   sw   € ô ˜$¤× 1Ñ 1×2Ñ2ØˆJÜ˜×+Ñ+Ó,ˆEØÓ&Ø,0×,?Ñ,?Ø×'Ñ'¨Ñ5°tÈ:ó-Ñ)�˜zö Ø  AÑ%�Lð Õ&ð ˆr   c                ó4  • U(       a  UR                   nSUl         OUR                  nSUl        U R                  XBU5      nU(       d"  XLa  [        U5      R	                  U5      S-   nOSnUR                  5         U H  nUR                  XgS   5        M     g)zï
Process placeholders in `Element.text` or `Element.tail`
of Elements popped from `self.stashed_nodes`.

Arguments:
    node: Parent node.
    subnode: Processing node.
    isText: Boolean variable, True - it's text, False - it's a tail.

Nr   r   )ÚtextÚtailÚ%_InlineProcessor__processPlaceholdersÚlistrP   ÚreverseÚinsert)r&   rV   ÚsubnodeÚisTextrc   ÚchildResultÚposÚnewChilds           r   Ú__processElementTextÚ$InlineProcessor.__processElementText�   s…   € ö Ø—<‘<ˆDØˆG�Là—<‘<ˆDØˆGŒLà×0Ñ0°ÀÓGˆæ˜$Ò-Ü�t“*×"Ñ" 7Ó+¨aÑ/‰CàˆCà×ÑÔÛ#ˆHØ�K‰K˜ a™[Ö)ò $r   c                óÆ  ^^^• SUUU4S jjn/ mSnU(       GaÇ  UR                  U R                  U5      nUS:w  GaW  U R                  X5      u  pxXpR                  ;   Ga  U R                  R	                  U5      n	US:”  a  XU n
U" U
5        [        U	[        5      (       dž  U	/[        U	5      -    HŠ  nUR                  (       a1  UR                  R                  5       (       a  U R                  X›S5        UR                  (       d  MX  UR                  R                  5       (       d  My  U R                  X»5        MŒ     OU" U	5        UnGM;  UnTR                  X�R                  SS 45        OhU[        U R                  5      -   nU" XU 5        UnOCXS n
[        U[        R                   5      (       a  [        R                   " U
5      n
U" U
5        SnU(       a  GMÇ  T$ )ad  
Process string with placeholders and generate `ElementTree` tree.

Arguments:
    data: String with placeholders instead of `ElementTree` elements.
    parent: Element, which contains processing inline data.
    isText: Boolean variable, True - it's text, False - it's a tail.

Returns:
    List with `ElementTree` elements with applied inline patterns.

c                ón  >• U (       a­  T(       aA  TS   S   R                   (       a  TS   S   =R                   U -  sl         g U TS   S   l         g T(       d/  TR                   (       a  T=R                   U -  sl         g U Tl         g TR                  (       a  T=R                  U -  sl        g U Tl        g g )Néÿÿÿÿr   )rd   rc   )rc   rj   ÚparentÚresults    €€€r   ÚlinkTextÚ7InlineProcessor.__processPlaceholders.<locals>.linkText¾   sƒ   ø€ ÞÞØ˜b‘z !‘}×)×)Ø˜r™
 1™×*Ò*¨dÑ2Ö*à-1˜˜r™
 1™Õ*ÞØ—{—{ØŸš tÑ+žà&*˜�à—{—{ØŸš tÑ+žà&*˜�ð r   r   rr   FNÚ )rc   ú
str | Noner+   ÚNone)Úfindr8   Ú!_InlineProcessor__findPlaceholderrD   Úgetr   r   rf   rd   ÚstripÚ$_InlineProcessor__processElementTextrc   Úappendr@   r;   r   r   )r&   rO   rs   rj   ru   ÚstrartIndexrP   rG   Ú
phEndIndexrV   rc   ÚchildrN   rt   s     ``         @r   Ú__processPlaceholdersÚ%InlineProcessor.__processPlaceholders¬   s   ú€ ÷$	+ñ 	+ð" ˆØˆßØ—I‘I˜d×7Ñ7¸ÓEˆEØ˜Œ{Ø!%×!7Ñ!7¸Ó!D‘�à×+Ñ+Ô+Ø×-Ñ-×1Ñ1°"Ó5�Dà˜q“yØ#°Ð6˜Ù  œä% d¬C×0Ñ0Ø&* V¬d°4«jÔ%8˜EØ$ŸzŸzØ#(§:¡:×#3Ñ#3×#5Ñ#5Ø$(×$=Ñ$=Ø(,°Uô%&ð  %ŸzŸz™zØ#(§:¡:×#3Ñ#3×#5Ó#5Ø$(×$=Ñ$=¸eÖ$Kò &9ñ ! œØ&0˜Ú à",�KØ—M‘M 4¯©¹Ð):Ð";Õ<ð  ¤# d×&?Ñ&?Ó"@Ñ@�CÙ˜T¨cÐ2Ô3Ø"%‘Kà˜LÐ)�Ü˜d¤D×$5Ñ$5×6Ñ6ä×,Ò,¨TÓ2�DÙ˜”Ø�÷Q ‰dðT ˆr   c                óx  • [        U[        R                  5      nUR                   H(  nUR	                  5       U R
                  ;   d  M#  USS4s  $    U(       aZ  SnUR                  5       R                  X$5       H4  nUR                  Xr5      u  p‰n
U	b  U
c  XGR                  S5      -  nSnM4    O)   O&UR                  5       R                  X$S 5      nUSU nU(       d  USS4$ U(       d3  UR                  U5      nUR                  S5      n	UR                  S5      n
Wc  USW
4$ [        U[        5      (       Gd  [        UR                  [        R                  5      (       dÞ  U/[!        U5      -    HË  n[#        U5      (       a  M  UR                  (       aq  U R
                  R%                  UR&                  R	                  5       5        U R)                  UR                  US-   5      Ul        U R
                  R+                  5         UR,                  (       d  Mª  U R)                  UR,                  U5      Ul        MÍ     U R/                  X�R1                  5       5      nU(       a  SR3                  USW	 XÒW
S 5      SS4$ SR3                  WUR5                  S5      X×R7                  5       S   5      SS4$ )	ak  
Check if the line fits the pattern, create the necessary
elements, add it to `stashed_nodes`.

Arguments:
    data: The text to be processed.
    pattern: The pattern to be checked.
    patternIndex: Index of current pattern.
    startIndex: String index, from which we start searching.

Returns:
    String with placeholders instead of `ElementTree` elements.

Fr   NTr   z{}{}{}z{}{}{}{}rr   )r   r   r   ÚANCESTOR_EXCLUDESÚlowerr@   ÚgetCompiledRegExpÚfinditerÚhandleMatchrN   ÚmatchÚstartr   rc   r   r   rf   r    r   ÚtagÚ_InlineProcessor__handleInlineÚpoprd   Ú_InlineProcessor__stashNoderF   ÚformatrM   Úgroups)r&   ÚpatternrO   r\   r]   Ú	new_styleÚexcluder‹   rV   rŒ   rN   ÚleftDatar‚   rW   s                 r   Ú__applyPatternÚInlineProcessor.__applyPatterný   sc  € ô* ˜w¬×(FÑ(FÓGˆ	à×0Ô0ˆGØ�}‰}‹ $§.¡.Õ0Ø˜U A�~Ò%ñ 1ö ØˆEð !×2Ñ2Ó4×=Ñ=¸dÖO�Ø#*×#6Ñ#6°uÓ#CÑ �˜SØ‘= C¡KØ§)¡)¨A£,Ñ.�JØ �EÙÙò Pð ×-Ñ-Ó/×5Ñ5°d¸;Ð6GÓHˆEØ˜K˜ZÐ(ˆHæØ˜ �>Ð!æØ×&Ñ& uÓ-ˆDØ—K‘K “NˆEØ—)‘)˜A“,ˆCà‰<Ø˜˜s�?Ð"ä˜$¤×$Ò$Ü˜dŸi™i¬×):Ñ):×;Ñ;à"˜V¤d¨4£jÔ0�EÜ# DŸ>›>Ø Ÿ:Ÿ:Ø ŸN™N×1Ñ1°%·)±)·/±/Ó2CÔDØ)-×)<Ñ)<Ø %§
¡
¨L¸1Ñ,<ó*˜EœJð !ŸN™N×.Ñ.Ô0Ø Ÿ:Ÿ:™:Ø)-×)<Ñ)<Ø %§
¡
¨Ló*˜EžJñ 1ð ×&Ñ& t¯\©\«^Ó<ˆæØ—?‘? 4¨¨ <Ø#.°S°T°
ó<Ø=AÀ1ðEð Eð ×$Ñ$ XØ%*§[¡[°£^Ø%0·,±,³.ÀÑ2DóFàGKÈQðOð Or   c                óè   • / nUbL  Ub)  UR                  UR                  R                  5       5        U R                  R	                  U5      nUb  ML  UR                  5         UR                  U5        g)zBuild the ancestor list.N)r   r�   r‡   Ú
parent_mapr|   rg   Úextend)r&   rs   Úparentsr@   s       r   Ú__build_ancestorsÚ!InlineProcessor.__build_ancestorsM  sd   € àˆ	ØÑ ØÑ!Ø× Ñ  §¡×!1Ñ!1Ó!3Ô4Ø—_‘_×(Ñ(¨Ó0ˆFð Ó ð 	×ÑÔØ�‰�yÕ!r   Nc                óº  • 0 U l         Uc  / OUSS nUR                  5        VVs0 s H  oD  H  oUU_M     M     snnU l        X4/nU(       Ga†  UR                  5       u  pxX€l        U R                  XpR                  5        / n	U GH  n
U
R                  (       aÚ  [        U
R                  [        R                  5      (       d±  U R                  R                  U
R                  R                  5       5        U
R                  nSU
l        U R                  U R                  U5      U
5      nU H  nX R                  US   '   M     Xl-  nU	R                  X¬45        U R                  R                  5         U
R                  (       aÈ  U R                  U
R                  5      n[         R"                  " S5      nSU
l        U R                  XïS5      nUR                  (       a  UR                  U
l        [%        U5      R'                  U
5      S-   nUR)                  5         U H)  nXpR                  US   '   UR+                  UUS   5        M+     [-        U
5      (       d  GMÛ  XpR                  U
'   UR                  X R                  SS 45        GM     U	 H2  u  nn[/        U5       H  u  nnUS   nUR+                  UU5        M     M4     U(       a  GM†  U$ s  snnf )a_  Apply inline patterns to a parsed Markdown tree.

Iterate over `Element`, find elements with inline tag, apply inline
patterns and append newly created Elements to tree.  To avoid further
processing of string with inline patterns, instead of normal string,
use subclass [`AtomicString`][markdown.util.AtomicString]:

    node.text = markdown.util.AtomicString("This will not be processed.")

Arguments:
    tree: `Element` object, representing Markdown tree.
    ancestors: List of parent tag names that precede the tree node (if needed).

Returns:
    An element tree object with applied inline patterns.

Nr   ÚdFr   )rD   Úiterrš   r�   r@   Ú!_InlineProcessor__build_ancestorsrc   r   r   r   r   r�   r‡   re   rŽ   rd   ÚetreeÚElementrf   rP   rg   rh   r;   Ú	enumerate)r&   Útreer@   Útree_parentsÚpÚcÚstackÚcurrElementrœ   ÚinsertQueuer‚   rc   ÚlstÚitemrd   ÚdumbyÚ
tailResultrl   rm   ÚelementÚiÚobjs                         r   r(   ÚInlineProcessor.runW  sb  € ð$ >@ˆÔð 'Ñ.‘r°I¹a°Lˆà)-¯©¬Ô@ª A»a¸˜aš4¹a™1©Ò@ˆŒØÐ%Ð&ˆçØ#(§9¡9£;Ñ ˆKà$ŒNØ×"Ñ" ;·±Ô?àˆKÜ$�Ø—:—:¤jØ—J‘J¤× 1Ñ 1÷'ñ 'ð —N‘N×)Ñ)¨%¯)©)¯/©/Ó*;Ô<Ø Ÿ:™:�DØ!%�E”JØ×4Ñ4Ø×+Ñ+¨DÓ1°5ó�Có !$˜Ø38Ÿ™¨¨Q©Ó0ñ !$à‘L�EØ×&Ñ&¨ |Ô4Ø—N‘N×&Ñ&Ô(Ø—:—:Ø×.Ñ.¨u¯z©zÓ:�DÜ!ŸMšM¨#Ó.�EØ!%�E”JØ!%×!;Ñ!;¸DÈÓ!O�JØ—z—zØ%*§Z¡Z˜œ
Ü˜{Ó+×1Ñ1°%Ó8¸1Ñ<�CØ×&Ñ&Ô(Û$.˜Ø7BŸ™¨°©Ñ4Ø#×*Ñ*¨3°¸±Ö<ñ %/ô �u—:”:Ø-8—O‘O EÑ*Ø—L‘L %¯©¹Ð):Ð!;×<ñ; %ó> !,‘�˜Ü'¨žn‘F�A�sØ" 1™v�HØ—N‘N 1 hÖ/ó -ñ !,÷M ‰eðT ˆùó[ As   ¥K)	Ú__placeholder_lengthÚ__placeholder_prefixÚ__placeholder_reÚ__placeholder_suffixr@   r?   r   rš   rD   )r   r	   )rF   r   r+   ztuple[str, str])rO   r   rP   Úintr+   ztuple[str | None, int])rV   zetree.Element | strrF   r   r+   r   )r   )rO   r   r\   r¹   r+   r   )T)rV   r*   ri   r*   rj   Úboolr+   ry   )rO   rx   rs   r*   rj   rº   r+   z%list[tuple[etree.Element, list[str]]])
r“   zinlinepatterns.PatternrO   r   r\   r¹   r]   r¹   r+   ztuple[str, bool, int])rs   r,   rœ   z	list[str]r+   ry   ©N)r¦   r*   r@   zlist[str] | Noner+   r*   )r-   r.   r/   r0   r1   rA   rU   r{   r�   rŽ   r~   re   r[   r¢   r(   r2   r%   r   r   r   r   K   s´   † ñô'ôô#ô$öö.*ðB ð	OàðOð ðOð ð	Oð
 
/õOðl ðNOà'ðNOð ðNOð ð	NOð
 ðNOð 
õNOô`"÷Eñ Er   r   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	r   iŸ  z&Add line breaks to the html document. c                ó\  • SnU R                   R                  UR                  5      (       aÉ  UR                  S;  a¹  UR                  (       a  UR                  R	                  5       (       dC  [        U5      (       a3  U R                   R                  US   R                  5      (       a  X!l        U H@  nU R                   R                  UR                  5      (       d  M/  U R                  U5        MB     UR                  (       a  UR                  R	                  5       (       d  X!l        gg)z7Recursively add line breaks to `ElementTree` children. Ú
)ÚcodeÚprer   N)r   Úis_block_levelr�   rc   r}   r;   Ú_prettifyETreerd   )r&   Úelemr²   Úes       r   rÂ   Ú$PrettifyTreeprocessor._prettifyETree¢  sÂ   € ð ˆØ�7‰7×!Ñ! $§(¡(×+Ñ+°·±ÀÓ0OØ—I—I T§Y¡Y§_¡_×%6Ñ%6Ü˜DŸ	™	 d§g¡g×&<Ñ&<¸TÀ!¹W¿[¹[×&IÑ&IØ”	Û�Ø—7‘7×)Ñ)¨!¯%©%×0Ó0Ø×'Ñ'¨Ö*ñ ð �y�y §	¡	§¡× 1Ñ 1Ø�Ið !2r   c                ó.  • U R                  U5        UR                  S5      nU HP  nUR                  (       a  UR                  R                  5       (       d	  SUl        M<  SUR                  -  Ul        MR     UR                  S5      nU H†  n[	        U5      (       d  M  US   R
                  S:X  d  M*  US   n[	        U5      (       a  MA  UR                  c  MP  [        R                  " UR                  R                  5       S-   5      Ul        Mˆ     g)z6Add line breaks to `Element` object and its children. Úbrr¾   z
%srÀ   r   r¿   N)
rÂ   r¡   rd   r}   r;   r�   rc   r   r   Úrstrip)r&   r'   ÚbrsrÇ   ÚpresrÀ   r¿   s          r   r(   ÚPrettifyTreeprocessor.run°  sÈ   € ð 	×Ñ˜DÔ!ð �i‰i˜‹oˆÛˆBØ—7—7 "§'¡'§-¡-§/¡/Ø�–à  2§7¡7Ñ*�–ñ	 ð �y‰y˜ÓˆÛˆCÜ�3�x‹x˜C ™FŸJ™J¨&Õ0Ø˜1‘v�ä˜4—y“y T§Y¡YÓ%:Ü $× 1Ò 1°$·)±)×2BÑ2BÓ2DÀtÑ2KÓ L�D–Iò r   r%   N)rÃ   r*   r+   ry   ©r'   r*   r+   ry   )r-   r.   r/   r0   r1   rÂ   r(   r2   r%   r   r   r   r   Ÿ  s   † Ù1ô÷Mr   r   c                  ó¢   • \ rS rSrSr\R                  " SR                  \R                  \R                  5      5      rS	S jrS
S jrSS jrSrg)r   iÆ  zRestore escaped chars z	{}(\d+){}c                óH   • [        [        UR                  S5      5      5      $ )Nr   )Úchrr¹   rM   )r&   rQ   s     r   Ú	_unescapeÚUnescapeTreeprocessor._unescapeË  s   € Ü”3�q—w‘w˜q“z“?Ó#Ð#r   c                óN   • U R                   R                  U R                  U5      $ r»   )ÚREÚsubrÐ   )r&   rc   s     r   r   ÚUnescapeTreeprocessor.unescapeÎ  s   € Ø�w‰w�{‰{˜4Ÿ>™>¨4Ó0Ð0r   c                óˆ  • UR                  5        H®  nUR                  (       a0  UR                  S:X  d   U R                  UR                  5      Ul        UR                  (       a   U R                  UR                  5      Ul        UR                  5        H%  u  p4UR                  X0R                  U5      5        M'     M°     g)z.Loop over all elements and unescape all text. r¿   N)r¡   rc   r�   r   rd   ÚitemsÚset)r&   r'   rÃ   ÚkeyÚvalues        r   r(   ÚUnescapeTreeprocessor.runÑ  sz   € à—I‘I–KˆDà�y�y §¡¨VÓ!3Ø ŸM™M¨$¯)©)Ó4�”	à�y�yØ ŸM™M¨$¯)©)Ó4�”	à"Ÿj™jžl‘
�Ø—‘˜Ÿm™m¨EÓ2Ö3ó +ò  r   r%   N)rQ   zre.Match[str]r+   r   )rc   r   r+   r   rÌ   )r-   r.   r/   r0   r1   ÚreÚcompiler‘   r   ÚSTXr9   rÓ   rÐ   r   r(   r2   r%   r   r   r   r   Æ  s7   † Ù!à	�Š�L×'Ñ'¨¯©°$·(±(Ó;Ó	<€Bô$ô1÷4r   r   )r   r	   r   r   r+   zutil.Registry[Treeprocessor])r   Úobjectr+   rº   )r1   Ú
__future__r   rÜ   Úxml.etree.ElementTreer£   ÚElementTreeÚtypingr   r   rw   r   r   Úmarkdownr	   r   r    Ú	Processorr"   r   r   r   r%   r   r   Ú<module>ræ      sk   ðñ(õ #ã 	ß %Ð %ß %Ý Ý æÝ!ôôô�D—N‘Nô ô(Q�mô Qôh
$M˜Mô $MôN4˜Mõ 4r   