+
    Z‹io   ã                  óà   € R t ^ RIHt ^ RIHt ^RIHt ^RIHt ^RI	H
t
HtHt ^RIHtHt ^RIHt ^RIHt ^ R	It^ R
IHtHtHt ]'       d   ^ RIHt  ! R R]4      t ! R R]4      tR tR	# )z£
This extension adds Fenced Code Blocks to Python-Markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/fenced_code_blocks)
for details.
)Úannotations)Údedent)Ú	Extension)ÚPreprocessor)Ú
CodeHiliteÚCodeHiliteExtensionÚparse_hl_lines)Úget_attrs_and_remainderÚAttrListExtension)ÚparseBoolValue©Ú_escape_attrib_htmlN)ÚTYPE_CHECKINGÚAnyÚIterable)ÚMarkdownc                  ó.   a € ] tR t^&tV 3R ltR tRtV ;t# )ÚFencedCodeExtensionc                	ó@   <€ R RR./V n          \        SV `  ! R/ VB  R# )Úlang_prefixú	language-z6Prefix prepended to the language. Default: "language-"N© )ÚconfigÚsuperÚ__init__)ÚselfÚkwargsÚ	__class__s   &,€ÚA/usr/lib/python3/dist-packages/markdown/extensions/fenced_code.pyr   ÚFencedCodeExtension.__init__'   s,   ø€ à˜KÐ)aÐbð
ˆŒð 	/Ü‰ÒÑ"˜6Ô"ó    c                ó�   € VP                  V 4       VP                  P                  \        WP	                  4       4      R^4       R# )z8Add `FencedBlockPreprocessor` to the Markdown instance. Úfenced_code_blockN)ÚregisterExtensionÚpreprocessorsÚregisterÚFencedBlockPreprocessorÚ
getConfigs)r   Úmds   &&r   ÚextendMarkdownÚ"FencedCodeExtension.extendMarkdown.   s7   € à
×Ñ˜TÔ"à
×Ñ×!Ñ!Ô"9¸"¿o¹oÓ>OÓ"PÐReÐgiÖjr    )r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r)   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r   &   s   ø† õ#÷kð kr    r   c                  óà   a € ] tR t^5tRt]P                  ! ]! R4      ]P                  ]P                  ,          ]P                  ,          4      tR V 3R lltR R ltR R ltR	 R
 ltRtV ;t# )r&   z%Find and extract fenced code blocks. a}  
            (?P<fence>^(?:~{3,}|`{3,}))[ ]*                          # opening fence
            ((\{(?P<attrs>[^\n]*)\})|                                # (optional {attrs} or
            (\.?(?P<lang>[\w#.+-]*)[ ]*)?                            # optional (.)lang
            (hl_lines=(?P<quot>"|')(?P<hl_lines>.*?)(?P=quot)[ ]*)?) # optional hl_lines)
            \n                                                       # newline (end of opening fence)
            (?P<code>.*?)(?<=\n)                                     # the code block
            (?P=fence)[ ]*$                                          # closing fence
        c               ó    € V ^8„  d   QhRRRR/# )é   r(   r   r   zdict[str, Any]r   )Úformats   "r   Ú__annotate__Ú$FencedBlockPreprocessor.__annotate__E   s   € ÷ 
ñ 
˜8ð 
¨^ñ 
r    c                	ón   <€ \         SV `  V4       W n        R V n        / V n        R V n        . ROV n        R# )FN)ÚlinenumsÚ
guess_langÚ	noclassesÚuse_pygments)r   r   r   Úchecked_for_depsÚcodehilite_confÚuse_attr_listÚbool_options)r   r(   r   r   s   &&&€r   r   Ú FencedBlockPreprocessor.__init__E   s7   ø€ Ü‰Ñ˜ÔØŒØ %ˆÔØ/1ˆÔØ"ˆÔò
ˆÖr    c               ó    € V ^8„  d   QhRRRR/# )r4   Úlinesz	list[str]Úreturnr   )r5   s   "r   r6   r7   S   s   € ÷ P ñ P ˜ð P  yñ P r    c           
     ó*  € V P                   '       go   V P                  P                   FM  p\        V\        4      '       d   VP                  4       V n        \        V\        4      '       g   KF  RV n        KO  	  RV n         RP                  V4      p^ p V P                  P                  W44      pV'       EdK   RR. / 3w  rgr‰VP                  R4      '       do   \        VP                  R4      4      w  r«V'       d   VP                  R4      pK|  V P                  V
4      w  rxp	\!        V4      '       d   VP#                  ^ 4      pM\VP                  R4      '       d   VP                  R4      pVP                  R4      '       d   \%        VP                  R4      4      V	R&   V P                  '       dÓ   V P                  R,          '       dº   V	P'                  RR4      '       d¢   V P                  P)                  4       pVP+                  V	4       V'       d,   R	P-                  R
P                  V4      VR,          4      VR&   \/        VP                  R4      3RVRVP#                  RR4      /VB pVP1                  RR7      pEMR;p;p;ppV'       d.   V P2                  P'                  RR4      pRV \5        V4       R2pV'       d   R\5        R
P                  V4      4       R2pV'       d   R\5        V4       R2pV P                  '       dG   V	'       d?   V	P'                  RR4      '       g'   RP                  R V	P7                  4        4       4      pV P9                  VP                  R4      4      pRV V RV V RV R2	pV P                  P:                  P=                  V4      pVRVP?                  4         RV RW5P                  4       R  2pVP?                  4       ^,           \!        V4      ,           pEKo   TPA                  R4      # )z7Match and store Fenced Code Blocks in the `HtmlStash`. TÚ
NÚ ÚattrsÚlangÚhl_linesr<   z{} {}Ú Ú	css_classÚcodeÚstyleÚpygments_styleÚdefaultF)Úshebangr   r   z class="Ú"z id="c              3  ó\   "  € T F"  w  rVR 8w  g   K  RV R\        V4       R2x € K$  	  R# 5i)r<   rK   z="rR   Nr   )Ú.0ÚkÚvs   &  r   Ú	<genexpr>Ú.FencedBlockPreprocessor.run.<locals>.<genexpr>—   s7   é € ð +ÙKYÁ4À1Ð]^ÐbpÑ]pÔ>˜a ˜s "Ô%8¸Ó%;Ð$<¸AÕ>Ë>ùs   ‚,’,z<prez><codeÚ>z</code></pre>)!r=   r(   ÚregisteredExtensionsÚ
isinstancer   r'   r>   r
   r?   ÚjoinÚFENCED_BLOCK_REÚsearchÚgroupr	   ÚendÚhandle_attrsÚlenÚpopr   ÚgetÚcopyÚupdater5   r   Úhiliter   r   ÚitemsÚ_escapeÚ	htmlStashÚstoreÚstartÚsplit)r   rC   ÚextÚtextÚindexÚmrI   ÚidÚclassesr   rH   Ú	remainderÚlocal_configÚ	highliterrM   Úid_attrÚ	lang_attrÚ
class_attrÚkv_pairsÚprefixÚplaceholders   &&                   r   ÚrunÚFencedBlockPreprocessor.runS   s”  € ð ×$×$Ð$Ø—w‘w×3Ô3�Ü˜cÔ#6×7Ò7Ø+.¯>©>Ó+;�DÔ(Ü˜cÔ#4×5Ô5Ø)-�DÖ&ñ	 4ð %)ˆDÔ!à�y‰y˜ÓˆØˆØØ×$Ñ$×+Ñ+¨DÓ8ˆAßˆqØ,0°"°b¸"Ð,<Ñ)�˜'Ø—7‘7˜7×#Ò#Ü'>¸q¿w¹wÀwÓ?OÓ'PÑ$�Eß Ø !§¡ g£˜Ù Ø*.×*;Ñ*;¸EÓ*BÑ'�B Ü˜7—|’|Ø&Ÿ{™{¨1›~˜øà—w‘w˜v—’Ø Ÿw™w v›˜Ø—w‘w˜z×*Ò*ä-;¸A¿G¹GÀJÓ<OÓ-P˜˜zÑ*ð ×'×'Ð'¨D×,@Ñ,@À×,PÔ,PÐU[×U_ÑU_Ð`nÐpt×UuÒUuØ#'×#7Ñ#7×#<Ñ#<Ó#>�LØ ×'Ñ'¨Ô/÷ Ø4;·N±NØŸH™H WÓ-Ø(¨Õ5ó5˜ [Ñ1ô !+ØŸ™ ›ñ!à!ð!ð +×.Ñ.Ð/?ÀÓKð!ð 'ñ	!�Ið %×+Ñ+°EÐ+Ó:’DàBDÐD�GÐD˜iÐD¨*°xßØ!%§¡§¡°ÀÓ!L˜Ø&.¨v¨hÔ7JÈ4Ó7PÐ6QÐQRÐ$S˜	ßØ'/Ô0CÀCÇHÁHÈWÓDUÓ0VÐ/WÐWXÐ%Y˜
ßØ$)Ô*=¸bÓ*AÐ)BÀ!Ð"D˜Ø×)×)Ð)¯f¸V¿Z¹ZÈÐX]×=^Ò=^ð $&§7¡7ñ +ØKQÏ<É<Ì>ó+ó $˜ð  Ÿ<™<¨¯©°«Ó8�DØ! ' ¨:¨,°f¸Y¸KÈÀzÐQRÐSWÐRXÐXeÐf�Dà"Ÿg™g×/Ñ/×5Ñ5°dÓ;�Ø˜z §¡£	Ð*Ð+¨2¨k¨]¸"¸TÇ%Á%Ã'À(¸^Ð<LÐM�àŸ™›	 A�¬¨KÓ(8Õ8“àØ�z‰z˜$ÓÐr    c               ó    € V ^8„  d   QhRRRR/# )r4   rH   zIterable[tuple[str, str]]rD   z%tuple[str, list[str], dict[str, Any]]r   )r5   s   "r   r6   r7   ¥   s   € ÷ $ñ $Ð";ð $Ð@eñ $r    c                óî   € Rp. p/ pV Ff  w  rVVR8X  d   TpK  VR8X  d   VP                  V4       K*  VR8X  d   \        V4      WE&   K@  WPP                  9   d   \        VRRR7      WE&   Kb  WdV&   Kh  	  W#V3# )z5Return tuple: `(id, [list, of, classes], {configs})` rG   rr   Ú.rJ   FT)Úfail_on_errorsÚpreserve_none)Úappendr   r@   r   )r   rH   rr   rs   ÚconfigsrU   rV   s   &&     r   ra   Ú$FencedBlockPreprocessor.handle_attrs¥   s€   € àˆØˆØˆÛ‰DˆAØ�DŒyØ’Ø�c”Ø—‘˜qÖ!Ø�j”Ü+¨AÓ.�“
Ø×'Ñ'Ô'Ü+¨A¸eÐSWÔX�“
à˜“
ñ ð ˜GÐ#Ð#r    c               ó    € V ^8„  d   QhRRRR/# )r4   ÚtxtÚstrrD   r   )r5   s   "r   r6   r7   ·   s   € ÷ ñ ˜3ð  3ñ r    c                ó–   € VP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pV# )	zbasic html escaping Ú&z&amp;Ú<z&lt;rY   z&gt;rR   z&quot;)Úreplace)r   rˆ   s   &&r   ri   ÚFencedBlockPreprocessor._escape·   sG   € à�k‰k˜#˜wÓ'ˆØ�k‰k˜#˜vÓ&ˆØ�k‰k˜#˜vÓ&ˆØ�k‰k˜#˜xÓ(ˆØˆ
r    )r@   r=   r>   r   r?   )r+   r,   r-   r.   Ú__doc__ÚreÚcompiler   Ú	MULTILINEÚDOTALLÚVERBOSEr]   r   r}   ra   ri   r/   r0   r1   s   @r   r&   r&   5   s\   ø† Ù0à—j’jÙð ó 	ð 	�‰�r—y‘yÕ  2§:¡:Õ-ó€O÷
ð 
õP õd$÷$ó r    r&   c                 ó   € \        R/ V B # )Nr   )r   )r   s   ,r   ÚmakeExtensionr–   À   s   € ÜÑ( Ñ(Ð(r    )r�   Ú
__future__r   Útextwrapr   rG   r   r$   r   Ú
codehiliter   r   r   Ú	attr_listr	   r
   Úutilr   Úserializersr   r�   Útypingr   r   r   Úmarkdownr   r   r&   r–   r   r    r   Ú<module>rŸ      sX   ðñõ #å Ý Ý (ß GÑ Gß AÝ !Ý -Û 	ß /Ñ /çÝ!ôk˜)ô kôH˜lô HôV)r    