o
    N i‰& ã                   @   sü   d Z ddlZddlZddlZddlZddlmZ ddlZddlZddl	Z	ddl
m  mZ ddlZddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZmZm Z  G d	d
„ d
ej!ƒZ!G dd„ dej"ƒZ#G dd„ dej$ƒZ%dS )z,common definitions for Docutils HTML writersé    N)ÚPath)ÚfrontendÚ	languagesÚnodesÚutilsÚwriters)Ú length_or_percentage_or_unitless)ÚPIL)Ú
writer_aux)Úlatex2mathmlÚ	math2htmlÚtex2mathml_externÚunichar2texÚwrap_math_codeÚ	MathErrorc                       s²  e Zd ZdZ	 ddddgddifdd	gd
dejdœfddgddejdœfddgdejdœfddgddejdœfddgdddœfdd gd! ¡ d"d#d$œfd%d&gd'd(gd(d)d*d+œfd,d-gg d.¢d/d)d$œfd0d1gddejdœfd2d3gd4ddœfd5d6gddejdœfd7d8gd9ddœfd:d;gd<d=ifd>d?gd@ejdAœfdBdCgdDdejdœfdEdFgdGddœfdHdIgdejdJœfffZ	dKdLiZ
dMZdNZdOZdPZ‡ fdQdR„ZdSdT„ ZdUdV„ ZdWdX„ ZdYdZ„ Z‡  ZS )[ÚWriter)ÚhtmlÚxhtmlzHTML Writer OptionsNzFSpecify the template file (UTF-8 encoded). (default: writer dependent)z
--templateÚmetavarz<file>zhComma separated list of stylesheet URLs. Overrides previous --stylesheet and --stylesheet-path settings.z--stylesheetz<URL[,URL,...]>Ústylesheet_path)r   Ú	overridesÚ	validatorzçComma separated list of stylesheet paths. Relative paths are expanded if a matching file is found in the --stylesheet-dirs. With --link-stylesheet, the path is rewritten relative to the output HTML file. (default: writer dependent)z--stylesheet-pathz<file[,file,...]>Ú
stylesheetzžComma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. (default: writer dependent)z--stylesheet-dirsz<dir[,dir,...]>)r   r   zvEmbed the stylesheet(s) in the output HTML file.  The stylesheet files must be accessible during processing. (default)z--embed-stylesheetTÚ
store_true)ÚdefaultÚactionr   z3Link to the stylesheet(s) in the output HTML file. z--link-stylesheetÚembed_stylesheetÚstore_false)Údestr   z}Specify the initial header level. Does not affect document title & subtitle (see --no-doc-title).(default: writer dependent).z--initial-header-levelz1 2 3 4 5 6Ú2z<level>)Úchoicesr   r   zYFormat for footnote references: one of "superscript" or "brackets". (default: "brackets")z--footnote-referencesÚsuperscriptÚbracketsz<format>Útrim_footnote_reference_space)r    r   r   r   zyFormat for block quote attributions: one of "dash" (em-dash prefix), "parentheses"/"parens", or "none". (default: "dash")z--attribution©ÚdashÚparenthesesÚparensÚnoner%   zgRemove extra vertical whitespace between items of "simple" bullet lists and enumerated lists. (default)z--compact-listsz3Disable compact simple bullet and enumerated lists.z--no-compact-listsÚcompact_listszORemove extra vertical whitespace between items of simple field lists. (default)z--compact-field-listsz#Disable compact simple field lists.z--no-compact-field-listsÚcompact_field_listszAdded to standard table classes. Defined styles: borderless, booktabs, align-left, align-center, align-right, colwidths-auto, colwidths-grid.z--table-styler   Ú zmMath output format (one of "MathML", "HTML", "MathJax", or "LaTeX") and option(s). (default: "HTML math.css")z--math-outputzHTML math.css)r   r   zPrepend an XML declaration. z--xml-declarationFzOmit the XML declaration.z--no-xml-declarationÚxml_declarationzyObfuscate email addresses to confuse harvesters while still keeping email links usable with standards-compliant browsers.z--cloak-email-addresses)r   r   Úoutput_encoding_error_handlerÚxmlcharrefreplace)Útemplatezhtml base writer)r   zhtml writers)Úhead_prefixÚheadr   Úbody_prefixÚbody_pre_docinfoÚdocinfoÚbodyÚbody_suffixÚtitleÚsubtitleÚheaderÚfooterÚmetaÚfragmentÚhtml_prologÚ	html_headÚ
html_titleÚhtml_subtitleÚ	html_bodyc                    s   t ƒ  ¡ tjg S ©N)ÚsuperÚget_transformsr
   ÚAdmonitions©Úself©Ú	__class__© úO/home/ubuntu/.local/lib/python3.10/site-packages/docutils/writers/_html_base.pyrD   —   s   zWriter.get_transformsc                 C   sJ   |   | j¡ | _}| j |¡ | jD ]}t| |t||ƒƒ q|  ¡ | _d S rB   )	Útranslator_classÚdocumentÚvisitorÚ	walkaboutÚvisitor_attributesÚsetattrÚgetattrÚapply_templateÚoutput)rG   rN   ÚattrrJ   rJ   rK   Ú	translateš   s
   
zWriter.translatec                 C   sJ   t | jjjdd}| ¡ }W d   ƒ n1 sw   Y  |  ¡ }|| S )Núutf-8©Úencoding)ÚopenrM   Úsettingsr/   ÚreadÚinterpolation_dict)rG   Úfpr/   ÚsubsrJ   rJ   rK   rS   ¡   s
   
ÿzWriter.apply_templatec                 C   sJ   i }| j j}| jD ]}d t| |ƒ¡ d¡||< q	|j|d< tj|d< |S )Nr+   Ú
rY   Úversion)	rM   r[   rP   ÚjoinrR   ÚrstripÚoutput_encodingÚdocutilsÚ__version__)rG   r_   r[   rU   rJ   rJ   rK   r]   §   s   


zWriter.interpolation_dictc                 C   s2   t j | ¡ | jD ]}d t| |ƒ¡| j|< q	d S ©Nr+   )r   r   Úassemble_partsrP   rb   rR   Úparts)rG   ÚpartrJ   rJ   rK   rh   °   s   
ÿzWriter.assemble_parts)Ú__name__Ú
__module__Ú__qualname__Ú	supportedr   Úvalidate_comma_separated_listÚvalidate_booleanÚsplitÚvalidate_math_outputÚsettings_specÚsettings_defaultsÚrelative_path_settingsÚconfig_sectionÚconfig_section_dependenciesrP   rD   rV   rS   r]   rh   Ú__classcell__rJ   rJ   rH   rK   r   &   sà    ýÿýÿúÿüÿýþÿüþýÿüÿýþÿýþûÿüÿþþ
ý¬ý^	r   c                
   @   sŠ  e Zd ZdZdZeZdZdZdej	› dZ
ddd	œZd
ZdZ	 dZdZe d¡Ze d¡ZdZedƒdedƒdedƒdedƒdedƒdiZ	 dZ	 dd„ Zdd„ Ze d ¡fd!d"„Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd³d.d/„Z d´d2d3„Z!dµd4d5„Z"d6d7„ Z#d¶d9d:„Z$d;d<„ Z%d=d>„ Z&d?d@„ Z'dAdB„ Z(dCdD„ Z)dEdF„ Z*dGdH„ Z+dIdJ„ Z,dKdL„ Z-dMdN„ Z.d³dOdP„Z/dQdRdRdSdTœZ0dUdV„ Z1dWdX„ Z2dYdZ„ Z3d[d\„ Z4d]d^„ Z5d_d`„ Z6dadb„ Z7dcdd„ Z8dedf„ Z9dgdh„ Z:didj„ Z;dkdl„ Z<dmdn„ Z=dodp„ Z>dqdr„ Z?dsdt„ Z@dudv„ ZAdwdx„ ZBdydz„ ZCd{d|„ ZDd}d~„ ZEdd€„ ZFe d¡jGfd‚dƒ„ZHd„d…„ ZId†d‡„ ZJdˆd‰„ ZKdŠd‹„ ZLdŒd„ ZMdŽd„ ZNdd‘„ ZOd’d“„ ZPd”d•„ ZQd–d—„ ZRd˜d™„ ZSdšd›„ ZTdœd„ ZUdždŸ„ ZVd d¡„ ZWd¢d£„ ZXd¤d¥„ ZYd¦d§„ ZZd¨d©„ Z[dªd«„ Z\d¬d­„ Z]d®d¯„ Z^d·d±d²„Z_d³d´„ Z`dµd¶„ Zad·d¸„ Zbd¹dº„ Zcd»d¼„ Zdd½d¾„ Zed¿dÀ„ ZfdÁdÂ„ ZgdÃdÄ„ ZhdÅdÆ„ ZidÇdÈ„ ZjdÉdÊ„ ZkdËdÌ„ ZldÍdÎ„ ZmdÏdÐ„ ZndÑdÒ„ ZodÓdÔ„ ZpdÕdÖ„ Zqd×dØ„ ZrdÙdÚ„ ZsdÛdÜ„ ZtdÝdÞ„ Zudßdà„ Zvdádâ„ Zwdãdä„ Zxdådæ„ Zydçdè„ Zzdédê„ Z{dëdì„ Z|dídî„ Z}dïdð„ Z~dñdò„ Zdódô„ Z€dõdö„ Zd÷dø„ Z‚dùdú„ Zƒdûdü„ Z„dýdþ„ Z…dÿd „ Z†dd„ Z‡dd„ Zˆdd„ Z‰dd„ ZŠd	d
„ Z‹dd„ ZŒdd„ Zdd„ ZŽdd„ Zdd„ Zdddgfdddgfdddgfddg fddddgfdœZ‘dd„ Z’dd „ Z“d!d"„ Z”d#d$„ Z•d%d&„ Z–d'd(„ Z—d)d*„ Z˜d+d,„ Z™d-d.„ Zšd/d0„ Z›d1d2„ Zœd3d4„ Zd5d6„ Zžd7d8„ ZŸd9d:„ Z d;d<„ Z¡d=d>„ Z¢d?d@„ Z£dAdB„ Z¤dCdD„ Z¥dEdF„ Z¦dGdH„ Z§dIdJ„ Z¨dKdL„ Z©dMdN„ ZªdOdP„ Z«dQdR„ Z¬dSdT„ Z­dUdV„ Z®dWdX„ Z¯dYdZ„ Z°d[d\„ Z±d]d^„ Z²d_d`„ Z³dadb„ Z´dcdd„ Zµdedf„ Z¶dgdh„ Z·didj„ Z¸dkdl„ Z¹dmdn„ Zºdodp„ Z»dqdr„ Z¼dsdt„ Z½dudv„ Z¾dwdx„ Z¿dydz„ ZÀd{d|„ ZÁd}d~„ ZÂdd€„ ZÃdd‚„ ZÄdƒd„„ ZÅd…d†„ ZÆd‡dˆ„ ZÇd‰dŠ„ ZÈd‹dŒ„ ZÉddŽ„ ZÊdd„ ZËd‘d’„ ZÌd“d”„ ZÍd•d–„ ZÎd—d˜„ ZÏd™dš„ ZÐd›dœ„ ZÑddž„ ZÒdŸd „ ZÓd¡d¢„ ZÔd£d¤„ ZÕd¥d¦„ ZÖd§d¨„ Z×d©dª„ ZØd«d¬„ ZÙd­d®„ ZÚd¯d°„ ZÛd±d²„ ZÜd-S (¸  ÚHTMLTranslatorai  
    Generic Docutils to HTML translator.

    See the `html4css1` and `html5_polyglot` writers for full featured
    HTML writers.

    .. IMPORTANT::
      The `visit_*` and `depart_*` methods use a
      heterogeneous stack, `self.context`.
      When subclassing, make sure to be consistent in its use!

      Examples for robust coding:

      a) Override both `visit_*` and `depart_*` methods, don't call the
         parent functions.

      b) Extend both and unconditionally call the parent functions::

           def visit_example(self, node):
               if foo:
                   self.body.append('<div class="foo">')
               html4css1.HTMLTranslator.visit_example(self, node)

           def depart_example(self, node):
               html4css1.HTMLTranslator.depart_example(self, node)
               if foo:
                   self.body.append('</div>')

      c) Extend both, calling the parent functions under the same
         conditions::

           def visit_example(self, node):
               if foo:
                   self.body.append('<div class="foo">
')
               else: # call the parent method
                   _html_base.HTMLTranslator.visit_example(self, node)

           def depart_example(self, node):
               if foo:
                   self.body.append('</div>
')
               else: # call the parent method
                   _html_base.HTMLTranslator.depart_example(self, node)

      d) Extend one method (call the parent), but don't otherwise use the
         `self.context` stack::

           def depart_example(self, node):
               _html_base.HTMLTranslator.depart_example(self, node)
               if foo:
                   # implementation-specific code
                   # that does not use `self.context`
                   self.body.append('</div>
')

      This way, changes in stack use will not bite you.
    z<!DOCTYPE html>
zW<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="%(lang)s" lang="%(lang)s">
<head>
z<meta charset="%s" />
z)<meta name="generator" content="Docutils z': https://docutils.sourceforge.io/" />
ÚdivrM   )ÚtagnameÚCLASSz2<script type="text/javascript" src="%s"></script>
z-file:/usr/share/javascript/mathjax/MathJax.jsz4<link rel="stylesheet" href="%s" type="text/css" />
z%<style type="text/css">

%s
</style>
z[^ \n]+| +|\nz.+\W\W.+|[-?].+Úlangú&z&amp;ú<z&lt;ú"z&quot;ú>z&gt;ú@ú&#64;)z	video/mp4z
video/webmz	video/oggc                    sè  t j ˆ |¡ |j ˆ _}t |j|j¡ˆ _t	|j
ƒˆ _
d}t|dd ƒd ur7|jr+d}tjd|› dtdd t|d|ƒˆ _tˆ jjtƒrNt ˆ jj¡ˆ j_ˆ jj\ˆ _ˆ _g ˆ _d	gˆ _g ˆ _d
gˆ _g ˆ _g ˆ _g ˆ _g ˆ _g ˆ _g ˆ _ g ˆ _!ˆ j"gˆ _#g ˆ _$g ˆ _%g ˆ _&ˆ j'gˆ _(‡ fdd„t) *|¡D ƒˆ _+g ˆ _,g ˆ _-|j.rµˆ j /t) .|j0¡¡ ˆ j$ /t) .d¡¡ |j0rÊ|j0 1¡ dkrÊˆ j( 2dˆ j"|j0 ¡ g ˆ _3	 dˆ _4g ˆ _5dˆ _6dˆ _7dˆ _8dˆ _9dˆ _:dˆ _;dˆ _<dˆ _=g ˆ _>g ˆ _?d S )NÚlinkÚembed_imagesÚembedz`The configuration setting "embed_images"
  will be removed in Docutils 2.0. Use "image_loading: z".é   )Ú
stacklevelÚimage_loadingz</head>
<body>
z</body>
</html>
c                    s   g | ]}ˆ   |¡‘qS rJ   )Ústylesheet_call)Ú.0ÚpathrF   rJ   rK   Ú
<listcomp>L  s    ÿz+HTMLTranslator.__init__.<locals>.<listcomp>z%sÚunicoder   TF)@r   ÚNodeVisitorÚ__init__r[   r   Úget_languageÚlanguage_codeÚreporterÚlanguageÚintÚinitial_header_levelrR   r…   ÚwarningsÚwarnÚFutureWarningr‰   Ú
isinstanceÚmath_outputÚstrr   rr   Úmath_optionsr5   r2   r3   r6   r4   r:   r<   r1   r0   r9   rA   Úcontent_typer>   r=   r@   r?   Ú	generatorr;   r   Úget_stylesheet_listr   r7   r8   r,   Úappendrd   ÚlowerÚinsertÚcontextÚsection_levelÚcolspecsÚ	compact_pÚcompact_simpleÚcompact_field_listÚ
in_docinfoÚ
in_sidebarÚin_document_titleÚ	in_mailtoÚauthor_in_authorsÚmath_headerÚmessages)rG   rM   r[   Ú_image_loading_defaultrJ   rF   rK   r      sŽ   ÿþýÿÿÿ


ÿ
ÿÿzHTMLTranslator.__init__c                 C   s6   d  | j| j | j | j | j | j | j | j ¡S rg   )	rb   r0   r1   r   r2   r3   r4   r5   r6   rF   rJ   rJ   rK   Úastextr  s   ÿÿþþýýzHTMLTranslator.astextz[
	]c                 C   s<   |   | d|¡¡}| jr| jjr| dd¡}| dd¡}|S )z6Cleanse, HTML encode, and return attribute value text.ú ú%40z&#37;&#52;&#48;Ú.z&#46;)ÚencodeÚsubr­   r[   Úcloak_email_addressesÚreplace)rG   ÚtextÚ
whitespaceÚencodedrJ   rJ   rK   Úattvalx  s
   zHTMLTranslator.attvalc                 C   s   |  dd¡}|  dd¡S )z;Try to hide the link text of a email link from harversters.rƒ   z<span>&#64;</span>rµ   z<span>&#46;</span>©r¹   )rG   ÚaddrrJ   rJ   rK   Úcloak_email‚  s   zHTMLTranslator.cloak_emailc                 C   s   |  dd¡S )z*Try to hide a mailto: URL from harvesters.r‚   r´   r¾   )rG   ÚurirJ   rJ   rK   Úcloak_mailto‰  s   zHTMLTranslator.cloak_mailtoc                 C   s   t |ƒ}| | j¡S )z-Encode special characters in `text` & return.)rœ   rV   Úspecial_characters)rG   rº   rJ   rJ   rK   r¶     s   zHTMLTranslator.encodec              
   C   s.  |  dd ¡|  dd ¡g}d|v räd|vsd|vr·g }|d }ts%| d¡ t |¡d | jv r4| d¡ | jjs=| d¡ |s‡z |  |¡}tj	 
|¡}|j}W d   ƒ n1 sYw   Y  W n tttfy{ } z| t|ƒ¡ W Y d }~nd }~ww | jj | d	d
¡¡ |r¤dd|› dg|¢}	| j | jjjd |	¡|d¡ ntdƒD ]}
||
 p³d||
  ||
< q¨t|d ƒd }tdƒD ] }
||
 rãt d||
 ¡}d|t| d¡ƒ | d¡f ||
< qÃg }tdƒD ]'\}
}||
 rt d||
 ¡r||
  d7  < | |› d||
 › d¡ qêd |¡S )NÚwidthÚheightÚscalerÁ   z Requires Python Imaging Library.r   zPIL cannot read video images.z Reading external files disabled.ú\ú/zCannot scale image!zCould not get size from "z":z
  ©Ú	base_nodeé   z%dpxéd   z([0-9.]+)(\S*)$z%s%sé   ©rÄ   rÅ   z	^[0-9.]+$Úpxz: ú;r³   )Úgetr	   r¡   Ú	mimetypesÚ
guess_typeÚ
videotypesr[   Úfile_insertion_enabledÚuri2imagepathÚImagerZ   ÚsizeÚ
ValueErrorÚOSErrorÚUnicodeEncodeErrorrœ   Úrecord_dependenciesÚaddr¹   r°   rM   r“   Úwarningrb   ÚrangeÚfloatÚreÚmatchÚgroupÚ	enumerate)rG   ÚnoderØ   Úreading_problemsrÁ   Ú	imagepathÚimgÚimgsizeÚerrÚmsgÚiÚfactorrâ   Úsize_declarationsÚ	dimensionrJ   rJ   rK   Ú
image_size˜  sh   



ÿ€€ÿ
ÿ
ÿþ

ÿ
ÿ€
€
zHTMLTranslator.image_sizec           
   
   C   s„  dddœ}t  d|d ¡ t  d|d ¡ z
t  | d¡¡}W n- t jyL } z | j | jjj	d|d › d	|› |d
¡ | d¡W  Y d }~S d }~ww |rpdd„ | 
dd¡ d¡D ƒ}dd„ |D ƒ}| dd ||g ¡¡ |d sxd|v rŸ| 
dd¡ ¡ }|| 
dg ¡7 }d|v r–| d|d › ¡ | dd |¡¡ d|v r»| d|¡d u r»t  d¡}	|d |	_| d|	¡ t j|ddS )Nzhttp://www.w3.org/2000/svgzhttp://www.w3.org/1999/xlink)r+   Úxlinkr+   rñ   rW   zCannot parse SVG image "rÁ   ú":
  rÉ   c                 S   s   g | ]}|  ¡ ‘qS rJ   )Ústrip©r‹   ÚdrJ   rJ   rK   r   ã  ó    z.HTMLTranslator.prepare_svg.<locals>.<listcomp>ÚstylerÐ   c                 S   s(   g | ]}|r|  d ¡s|  d¡s|‘qS rÎ   )Ú
startswithrô   rJ   rJ   rK   r   ä  s    ÿþ
ýz; ÚclassesÚalignÚclasszalign-r³   Úaltr7   r   rŽ   rX   )ÚETÚregister_namespaceÚ
fromstringÚdecodeÚ
ParseErrorr°   r¡   rM   r“   ÚerrorrÑ   rq   Úsetrb   ÚfindÚElementrº   r£   Útostring)
rG   rå   Ú	imagedataÚsize_declarationÚsvg_nsÚsvgrê   Údeclarationsrù   Ú	svg_titlerJ   rJ   rK   Úprepare_svgÌ  s<   	ÿþ€ü

zHTMLTranslator.prepare_svgNc              
   C   sÖ   |du r
t | jjƒ}| jjrYzt|dd}| ¡ }W d  ƒ n1 s$w   Y  W n" tyL } zd|› }| jj 	|¡ d| W  Y d}~S d}~ww | jj
 |¡ | j| S |rct | jj|¡}| j|  |¡ S )z8Return code to reference or embed stylesheet file `path`NrW   rX   zCannot embed stylesheet: z<--- %s --->
)Úboolr[   r   r   rZ   r\   rÚ   rM   r“   r  rÜ   rÝ   Úembedded_stylesheetr   Úrelative_pathÚ_destinationÚstylesheet_linkr¶   )rG   rŒ   Úadjust_pathÚfÚcontentrê   rë   rJ   rJ   rK   rŠ   õ  s&   
ÿ€
€ý
zHTMLTranslator.stylesheet_callr`   Fc              
      s  |  ¡ }g }i }| ¡ D ]
\}}	|	||  ¡ < q| dg ¡}
g }| dg ¡| dd¡ ¡  D ]}| d¡r>| |dd… ¡ q-| ¡ rK||
vrK|
 |¡ q-|rU|d || j< d‰ t	|t
jƒrf‡ fd	d
„|
D ƒ}
|
rod |
¡|d< d|vsuJ ‚| dg ¡}| | dg ¡¡ |r°|d |d< |dd… D ]}|s¡t	|t
jt
jt
jfƒr©| d| ¡ q’|d| 7 }q’t| ¡ ƒ}|g}|D ]8\}}	|	dusÅJ ‚t	|	tƒrãdd
„ |	D ƒ}| d|  ¡ |  d |¡¡f ¡ q»| d|  ¡ |  t|	ƒ¡f ¡ q»|rùd}nd}d |¡dd |¡|f  | S )z‘
        Construct and return a start tag given a node (id & class attributes
        are extracted), tag name, and optional attributes.
        rù   rû   r+   z	language-é	   Nr   )úcolwidths-autoúcolwidths-givenúcolwidths-gridc                    s   g | ]}|ˆ vr|‘qS rJ   rJ   )r‹   Úcls©ÚinternalrJ   rK   r   "  s    z+HTMLTranslator.starttag.<locals>.<listcomp>r³   ÚidÚidsrÍ   z<span id="%s"></span>c                 S   s   g | ]}t |ƒ‘qS rJ   )rœ   )r‹   ÚvrJ   rJ   rK   r   @  rö   z%s="%s"z /z<%s%s>)r¢   ÚitemsÚpoprÑ   rq   rø   r¡   ró   Úlang_attributerš   r   Útablerb   ÚextendÚ
Sequentialr4   ÚsortedÚlistr½   rœ   )rG   rå   r{   ÚsuffixÚemptyÚ
attributesÚprefixÚattsÚnameÚvaluerù   r   r  r  r  Úattlistri   ÚvaluesÚinfixrJ   r  rK   Ústarttag
  s`    

€þ

ÿ
ÿ zHTMLTranslator.starttagc                 K   s   | j |||fddi|¤ŽS )z1Construct and return an XML-compatible empty tag.r)  T)r2  )rG   rå   r{   r(  r*  rJ   rJ   rK   ÚemptytagL  ó   zHTMLTranslator.emptytagc                 C   sR   t |jtjtjfƒrd S | jr'| j d¡}| jj|d kr"| 	| ¡ | jsd S d S )Nr   Úlevel)
rš   Úparentr   Úsystem_messageÚentryr°   r!  r[   Úreport_levelrO   )rG   rå   ÚmessagerJ   rJ   rK   Úreport_messagesP  s   
ýzHTMLTranslator.report_messagesr   c                 C   sB   dd„ |D ƒ}z|| }W n
 t y   Y dS w |d  |¡ dS )zŠ
        Set class `class_` on the visible child no. index of `node`.
        Do nothing if node has fewer children than `index`.
        c                 S   ó   g | ]
}t |tjƒs|‘qS rJ   ©rš   r   Ú	Invisible)r‹   ÚnrJ   rJ   rK   r   ]  s    z5HTMLTranslator.set_class_on_child.<locals>.<listcomp>Nrù   )Ú
IndexErrorr¡   )rG   rå   Úclass_ÚindexÚchildrenÚchildrJ   rJ   rK   Úset_class_on_childX  s   ÿz!HTMLTranslator.set_class_on_childc                 C   s    | j jpd}tj |¡}|jdvrtdƒ‚tj |j	¡}| 
d¡r3t| j jƒ}||dd…   ¡ }|S tj	 |¡sNtj	 tj	 |¡¡}t dtj	 ||¡¡}|S )a‚  Get filesystem path corresponding to an URI.

        The image directive expects an image URI. Some writers require the
        corresponding image path to read the image size from the file or to
        embed the image in the output.

        Absolute URIs consider the "root_prefix" setting.

        In order to work in the output document, relative image URIs relate
        to the output directory. For access by the writer, the corresponding
        image path must be relative to the current working directory.

        Provisional: the function's location, interface and behaviour
        may change without advance warning.
        r+   )r+   ÚfilezCan only read local images.rÈ   rÍ   N)r[   r  ÚurllibÚparseÚurlparseÚschemerÙ   ÚrequestÚurl2pathnamerŒ   rø   r   Úroot_prefixÚas_posixÚosÚisabsÚabspathÚdirnamer   r  rb   )rG   rÁ   ÚdestinationÚ	uri_partsrç   rM  ÚdestdirrJ   rJ   rK   rÖ   d  s   

üÿzHTMLTranslator.uri2imagepathc                 C   s:   |  ¡ }|  |¡}| jr| jjr|  |¡}| j |¡ d S rB   )r²   r¶   r­   r[   r¸   rÀ   r5   r¡   )rG   rå   rº   r¼   rJ   rJ   rK   Ú
visit_Text‚  s
   

zHTMLTranslator.visit_Textc                 C   ó   d S rB   rJ   ©rG   rå   rJ   rJ   rK   Údepart_Text‰  ó   zHTMLTranslator.depart_Textc                 C   ó   | j  |  |dd¡¡ d S )NÚabbrr+   ©r5   r¡   r2  rX  rJ   rJ   rK   Úvisit_abbreviationŒ  r4  z!HTMLTranslator.visit_abbreviationc                 C   ó   | j  d¡ d S )Nz</abbr>©r5   r¡   rX  rJ   rJ   rK   Údepart_abbreviation  ó   z"HTMLTranslator.depart_abbreviationc                 C   r[  )NÚacronymr+   r]  rX  rJ   rJ   rK   Úvisit_acronym“  r4  zHTMLTranslator.visit_acronymc                 C   r_  )Nz
</acronym>r`  rX  rJ   rJ   rK   Údepart_acronym—  rb  zHTMLTranslator.depart_acronymc                 C   s.   | j |ddd | j | j|dddd¡ d S )NÚaddressF©r;   Úprer+   ©r(  r|   )Úvisit_docinfo_itemr5   r¡   r2  rX  rJ   rJ   rK   Úvisit_addressš  s   ÿzHTMLTranslator.visit_addressc                 C   s   | j  d¡ |  ¡  d S ©Nz
</pre>
)r5   r¡   Údepart_docinfo_itemrX  rJ   rJ   rK   Údepart_addressŸ  s   zHTMLTranslator.depart_addressc                 C   s   | j  | j|ddgd¡ d S )NÚasideÚ
admonition©rù   r]  rX  rJ   rJ   rK   Úvisit_admonition£  ó   zHTMLTranslator.visit_admonitionc                 C   r_  ©Nú	</aside>
r`  rX  rJ   rJ   rK   Údepart_admonition¦  rb  z HTMLTranslator.depart_admonition)u   â€”r+   )ú(ú))r+   r+   r$   c                 C   s<   | j | jj \}}| j |¡ | j | j|d|dd¡ d S )NÚpÚattribution©r|   )Úattribution_formatsr[   rz  r¤   r¡   r5   r2  )rG   rå   r+  r(  rJ   rJ   rK   Úvisit_attribution®  s
   ÿz HTMLTranslator.visit_attributionc                 C   s   | j  | j ¡ d ¡ d S ©Nú</p>
©r5   r¡   r¤   r!  rX  rJ   rJ   rK   Údepart_attribution´  ó   z!HTMLTranslator.depart_attributionc                 C   s*   t |jtjƒs|  |d¡ | j d¡ d S )NÚauthorz<p>)rš   r6  r   Úauthorsrj  r5   r¡   rX  rJ   rJ   rK   Úvisit_author·  s   zHTMLTranslator.visit_authorc                 C   s6   | j  d¡ t|jtjƒr| j  d¡ d S |  ¡  d S )Nú</p>r`   )r5   r¡   rš   r6  r   r„  rm  rX  rJ   rJ   rK   Údepart_author¼  s   zHTMLTranslator.depart_authorc                 C   ó   |   |d¡ d S )Nr„  ©rj  rX  rJ   rJ   rK   Úvisit_authorsÃ  rb  zHTMLTranslator.visit_authorsc                 C   ó   |   ¡  d S rB   ©rm  rX  rJ   rJ   rK   Údepart_authorsÆ  ó   zHTMLTranslator.depart_authorsc                 C   ó   | j  |  |d¡¡ d S )NÚ
blockquoter]  rX  rJ   rJ   rK   Úvisit_block_quoteÉ  ó   z HTMLTranslator.visit_block_quotec                 C   r_  )Nz</blockquote>
r`  rX  rJ   rJ   rK   Údepart_block_quoteÌ  rb  z!HTMLTranslator.depart_block_quotec                 C   s2   t | jƒ}z| |¡ W dS  tjy   Y dS w )z7Check for a simple list that can be rendered compactly.FT)ÚSimpleListCheckerrM   Úwalkr   Ú	NodeFound)rG   rå   rN   rJ   rJ   rK   Úcheck_simple_listÏ  s   
ýÿz HTMLTranslator.check_simple_listc                 C   sx   d|d v rdS d|d v rdS t |tjtjfƒr| jjsdS t |tjtjfƒr.| jjs.dS d|j	d v r7dS |  
|¡S )NÚcompactrù   TrZ   FÚcontents)rš   r   Ú
field_listÚdefinition_listr[   r*   Úenumerated_listÚbullet_listr)   r6  r—  rX  rJ   rJ   rK   Úis_compactableà  s   ÿÿ
zHTMLTranslator.is_compactablec                 C   sb   i }| j }| j | j | jf¡ d | _|  |¡| _ | j r!|s!d|d< | j | j|dfi |¤Ž¡ d S )NÚsimplerû   Úul)r¨   r¤   r¡   r§   rž  r5   r2  )rG   rå   r,  Úold_compact_simplerJ   rJ   rK   Úvisit_bullet_listó  s   
 z HTMLTranslator.visit_bullet_listc                 C   s"   | j  ¡ \| _| _| j d¡ d S )Nz</ul>
)r¤   r!  r¨   r§   r5   r¡   rX  rJ   rJ   rK   Údepart_bullet_listý  s   z!HTMLTranslator.depart_bullet_listc                 C   ó   | j  | j|dddd¡ d S )Nry  r+   Úcaptionr{  r]  rX  rJ   rJ   rK   Úvisit_caption  rs  zHTMLTranslator.visit_captionc                 C   r_  r~  r`  rX  rJ   rJ   rK   Údepart_caption  rb  zHTMLTranslator.depart_captionc                 C   s@   t | ¡ t|ƒƒs| j d¡ | j | j|d|jgdd¡ d S )Nz(<div role="list" class="citation-list">
rz   zdoc-biblioentry©rù   Úrole)rš   Úprevious_siblingÚtyper5   r¡   r2  r{   rX  rJ   rJ   rK   Úvisit_citation  s
   ÿzHTMLTranslator.visit_citationc                 C   ó8   | j  d¡ t|jdddt|ƒƒs| j  d¡ d S d S )Nú</div>
FT©ÚdescendÚsiblings©r5   r¡   rš   Ú	next_noder«  rX  rJ   rJ   rK   Údepart_citation  ó   ÿþzHTMLTranslator.depart_citationc              
   C   sZ   d}d|v r||d 7 }nd|v r|| j j|d  7 }| j | j|dd|dgdd¡ d S )	Nú#ÚrefidÚrefnameÚaú[zcitation-referencezdoc-biblioref)r(  Úhrefrù   r©  )rM   Únameidsr5   r¡   r2  )rG   rå   r»  rJ   rJ   rK   Úvisit_citation_reference  s   þz'HTMLTranslator.visit_citation_referencec                 C   r_  )Nz]</a>r`  rX  rJ   rJ   rK   Údepart_citation_reference$  rb  z(HTMLTranslator.depart_citation_referencec                 C   r¤  )NÚspanr+   Ú
classifierr{  r]  rX  rJ   rJ   rK   Úvisit_classifier'  rs  zHTMLTranslator.visit_classifierc                 C   ó   | j  d¡ |  |¡ d S ©Nú</span>)r5   r¡   Údepart_termrX  rJ   rJ   rK   Údepart_classifier*  ó   z HTMLTranslator.depart_classifierc                 C   s&   | j  |¡ |jj |j d¡¡ d S )NÚstub)r¦   r¡   r6  Ústubsr*  rÑ   rX  rJ   rJ   rK   Úvisit_colspec.  s   zHTMLTranslator.visit_colspecc              	   C   sº   t |jdddtjƒrd S d|jjd v s#d| jjvr%d|jjd vr%d S | j |  	|d¡¡ t
d	d
„ | jD ƒƒ}| jD ]}|d | }| j | j|dd|d›d¡ q<| j d¡ d S )NFTr¯  r  rù   r  r  Úcolgroupc                 s   s    | ]}|d  V  qdS )ÚcolwidthNrJ   )r‹   rå   rJ   rJ   rK   Ú	<genexpr>=  s   € z0HTMLTranslator.depart_colspec.<locals>.<genexpr>rÌ  Úcolzwidth: z.1%)r÷   z</colgroup>
)rš   r³  r   Úcolspecr6  r[   Útable_styler5   r¡   r2  Úsumr¦   r3  )rG   rå   Útotal_widthrÌ  rJ   rJ   rK   Údepart_colspec3  s    ÿ


ÿzHTMLTranslator.depart_colspecz-(?=-)c                 C   s    | j  d|d| ¡ ƒ ¡ tj‚)z%Escape double-dashes in comment text.z<!-- %s -->
z- )r5   r¡   r²   r   ÚSkipNode)rG   rå   r·   rJ   rJ   rK   Úvisit_commentD  s   zHTMLTranslator.visit_commentc                 C   ó   | j  | j|ddd¡ d S )Nrz   Úcompoundr{  r]  rX  rJ   rJ   rK   Úvisit_compoundK  ó   zHTMLTranslator.visit_compoundc                 C   r_  ©Nr®  r`  rX  rJ   rJ   rK   Údepart_compoundN  rb  zHTMLTranslator.depart_compoundc                 C   rÖ  )Nrz   zdocutils containerr{  r]  rX  rJ   rJ   rK   Úvisit_containerQ  s   ÿzHTMLTranslator.visit_containerc                 C   r_  rÚ  r`  rX  rJ   rJ   rK   Údepart_containerU  rb  zHTMLTranslator.depart_containerc                 C   ó   | j |ddd d S )NÚcontactFrg  r‰  rX  rJ   rJ   rK   Úvisit_contactX  ó   zHTMLTranslator.visit_contactc                 C   r‹  rB   rŒ  rX  rJ   rJ   rK   Údepart_contact[  rŽ  zHTMLTranslator.depart_contactc                 C   rˆ  )NÚ	copyrightr‰  rX  rJ   rJ   rK   Úvisit_copyright^  rb  zHTMLTranslator.visit_copyrightc                 C   r‹  rB   rŒ  rX  rJ   rJ   rK   Údepart_copyrighta  rŽ  zHTMLTranslator.depart_copyrightc                 C   rˆ  )NÚdater‰  rX  rJ   rJ   rK   Ú
visit_dated  rb  zHTMLTranslator.visit_datec                 C   r‹  rB   rŒ  rX  rJ   rJ   rK   Údepart_dateg  rŽ  zHTMLTranslator.depart_datec                 C   rW  rB   rJ   rX  rJ   rJ   rK   Úvisit_decorationj  rZ  zHTMLTranslator.visit_decorationc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_decorationm  rZ  z HTMLTranslator.depart_decorationc                 C   s.   d|j j d vr| j |  |dd¡¡ d S d S )NÚdetailsrù   Úddr+   ©r6  r5   r¡   r2  rX  rJ   rJ   rK   Úvisit_definitionp  s   ÿzHTMLTranslator.visit_definitionc                 C   s$   d|j j d vr| j d¡ d S d S )Nrë  rù   ú</dd>
©r6  r5   r¡   rX  rJ   rJ   rK   Údepart_definitiont  s   ÿz HTMLTranslator.depart_definitionc                 C   sT   d|d v r| j  |  |d¡¡ d S |  |¡rdgng }| j  | j|d|d¡ d S )Nrë  rù   rz   rŸ  Údlrq  )r5   r¡   r2  rž  ©rG   rå   rù   rJ   rJ   rK   Úvisit_definition_listx  s   z$HTMLTranslator.visit_definition_listc                 C   s,   d|d v r| j  d¡ d S | j  d¡ d S )Nrë  rù   r®  ú</dl>
r`  rX  rJ   rJ   rK   Údepart_definition_list  s   z%HTMLTranslator.depart_definition_listc                 C   sL   d|j d v r$i }d|j d v rd|d< | j | j|dfi |¤Ž¡ d S d S )Nrë  rù   rZ   rí  ©rG   rå   r,  rJ   rJ   rK   Úvisit_definition_list_item†  s    üz)HTMLTranslator.visit_definition_list_itemc                 C   s"   d|j d v r| j d¡ d S d S )Nrë  rù   z</details>
rð  rX  rJ   rJ   rK   Údepart_definition_list_item  s   ÿz*HTMLTranslator.depart_definition_list_itemc                 C   r[  )Nrì  r+   r]  rX  rJ   rJ   rK   Úvisit_description‘  r‚  z HTMLTranslator.visit_descriptionc                 C   r_  ©Nrï  r`  rX  rJ   rJ   rK   Údepart_description”  rb  z!HTMLTranslator.depart_descriptionc                 C   sH   | j  t| jƒ¡ dg}|  |¡r| d¡ | j | j|d|d¡ d S )Nr4   rŸ  rò  rq  )r¤   r¡   Úlenr5   rž  r2  ró  rJ   rJ   rK   Úvisit_docinfo—  s
   

zHTMLTranslator.visit_docinfoc                 C   s0   | j  d¡ | j ¡ }| j |d … | _g | _ d S ©Nrõ  )r5   r¡   r¤   r!  r4   )rG   rå   ÚstartrJ   rJ   rK   Údepart_docinfož  s   

zHTMLTranslator.depart_docinfoTc              	   C   sh   |r| j  d|› d|  | ¡ ¡› d¡ | j d|› d| jj| › d¡ | j | j|dd|d	¡ d S )
Nz<meta name="z" content="z" />
z<dt class="ú">ú"<span class="colon">:</span></dt>
rì  r+   r{  )r;   r¡   r½   r²   r5   r”   Úlabelsr2  )rG   rå   r-  r;   rJ   rJ   rK   rj  ¤  s   
ÿ"z!HTMLTranslator.visit_docinfo_itemc                 C   r_  rû  r`  rF   rJ   rJ   rK   rm  ¬  rb  z"HTMLTranslator.depart_docinfo_itemc                 C   s"   | j  | j|ddg d¢d¡ d S )Nrh  r+   )ÚcodeÚpythonÚdoctest©r(  rù   r]  rX  rJ   rJ   rK   Úvisit_doctest_block¯  s   ÿz"HTMLTranslator.visit_doctest_blockc                 C   r_  rl  r`  rX  rJ   rJ   rK   Údepart_doctest_block³  rb  z#HTMLTranslator.depart_doctest_blockc                 C   s<   |  d¡ptj |d ¡pd}| j d|  |¡› d¡ d S )Nr7   Úsourcezuntitled Docutils documentz<title>z	</title>
)rÑ   rO  rŒ   Úbasenamer1   r¡   r¶   )rG   rå   r7   rJ   rJ   rK   Úvisit_document¶  s   ÿzHTMLTranslator.visit_documentc                 C   s>  | j  | j| jd| jji g¡ | j | j¡ | jd d … | j	 | _	dd 
| j¡v r0| j	 d¡ | jrG| jdkr@| j	 | j¡ n| j | j¡ | j | j	dd … ¡ | j | j|fi | j¤Ž¡ | j dd| jd	 › d
¡ | j | j¡ | j | jdd … | j | j | j | jd d…  ¡ | jrJ dt| jƒ› ƒ‚d S )Nr}   zname="dcterms.r+   z=<link rel="schema.dcterms" href="http://purl.org/dc/terms/"/>ÚmathjaxrÍ   r   ú</r{   z>
éÿÿÿÿzlen(context) = )r0   r$  ÚdoctypeÚhead_prefix_templater[   r’   r=   r¡   r;   r1   rb   r¯   r›   r   r>   r2   r2  Údocumenttag_argsr6   r£   r<   r5   rA   r3   r4   r¤   rý  rX  rJ   rJ   rK   Údepart_document»  s2   

ÿÿ
ÿÿþzHTMLTranslator.depart_documentc                 C   r[  )NÚemr+   r]  rX  rJ   rJ   rK   Úvisit_emphasisÓ  r‚  zHTMLTranslator.visit_emphasisc                 C   r_  )Nz</em>r`  rX  rJ   rJ   rK   Údepart_emphasisÖ  rb  zHTMLTranslator.depart_emphasisc                 C   sä   dg i}t |jjtjƒr|d  d¡ |jjjj|jj r$|d  d¡ |d r+d}nd}|j jd7  _d|v rA|d d |d< d	|v rW|d	 d |d
< |j j|d	 7  _| j | j||dfi |¤Ž¡ | j	 d| 
¡  ¡ d S )Nrù   r1   rÈ  ÚthÚtdrÍ   ÚmorerowsÚrowspanÚmorecolsÚcolspanr+   ú</%s>
)rš   r6  r   Útheadr¡   rÉ  Úcolumnr5   r2  r¤   r¢   )rG   rå   r,  r{   rJ   rJ   rK   Úvisit_entryÙ  s    zHTMLTranslator.visit_entryc                 C   ó   | j  | j ¡ ¡ d S rB   r€  rX  rJ   rJ   rK   Údepart_entryí  ó   zHTMLTranslator.depart_entryc                 C   sn   dg i}d|v r|d |d< d|v r|d   |d ¡ |  |¡r'|d   d¡ | j  | j|dfi |¤Ž¡ d S )Nrù   r   ÚenumtyperŸ  Úol)r¡   rž  r5   r2  r÷  rJ   rJ   rK   Úvisit_enumerated_listð  s   
 z$HTMLTranslator.visit_enumerated_listc                 C   r_  )Nz</ol>
r`  rX  rJ   rJ   rK   Údepart_enumerated_listú  rb  z%HTMLTranslator.depart_enumerated_listc              	   C   s°   i }|  dg ¡}t|ƒD ],\}}| d¡r8zt|dd … dƒ}W n
 ty*   Y  nw d| |d< | |¡  nq| d¡ |  |¡rH| d¡ | j | j	|d	fi |¤Ž¡ d S )
Nrù   zfield-indent-é   rÏ   z--field-indent: %s;r÷   z
field-listrŸ  rò  )
Ú
setdefaulträ   rø   r   rÙ   r!  r¡   rž  r5   r2  )rG   rå   r,  rù   rì   r  Úindent_lengthrJ   rJ   rK   Úvisit_field_listý  s&   
ÿÿ
ø
	

 zHTMLTranslator.visit_field_listc                 C   r_  rÿ  r`  rX  rJ   rJ   rK   Údepart_field_list  rb  z HTMLTranslator.depart_field_listc                 C   s,   |D ]}t |tjƒr|d  |d ¡ qd S )Nr  )rš   r   Ú
field_namer$  )rG   rå   rD  rJ   rJ   rK   Úvisit_field  s
   €þzHTMLTranslator.visit_fieldc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_field  rZ  zHTMLTranslator.depart_fieldc                 C   s$   | j  | j|dd|jd d¡ d S )NÚdtr+   rù   rq  )r5   r¡   r2  r6  rX  rJ   rJ   rK   Úvisit_field_name  s   ÿzHTMLTranslator.visit_field_namec                 C   r_  )Nr  r`  rX  rJ   rJ   rK   Údepart_field_name!  rb  z HTMLTranslator.depart_field_namec                 C   s:   | j  | j|dd|jd d¡ |js| j  d¡ d S d S )Nrì  r+   rù   rq  z<p></p>)r5   r¡   r2  r6  rC  rX  rJ   rJ   rK   Úvisit_field_body$  s   ÿÿzHTMLTranslator.visit_field_bodyc                 C   r_  rû  r`  rX  rJ   rJ   rK   Údepart_field_body+  rb  z HTMLTranslator.depart_field_bodyc                 C   sd   ddi}|  d¡rd|d  |d< |  d¡r"|d  d|d  7  < | j | j|dfi |¤Ž¡ d S )	Nrû   ÚfigurerÄ   z	width: %sr÷   rú   z align-rz   )rÑ   r5   r¡   r2  r÷  rJ   rJ   rK   Úvisit_figure.  s   

 zHTMLTranslator.visit_figurec                 C   r_  rÚ  r`  rX  rJ   rJ   rK   Údepart_figure6  rb  zHTMLTranslator.depart_figurec                 C   ó   | j  t| jƒ¡ d S rB   ©r¤   r¡   rý  r5   rX  rJ   rJ   rK   Úvisit_footer9  r$  zHTMLTranslator.visit_footerc                 C   sf   | j  ¡ }| j|ddddg}| | j|d … ¡ | d¡ | j |¡ || jd d…< | j|d …= d S )Nrz   r:   r{  z<hr class="footer" />
z
</div>
r   )r¤   r!  r2  r$  r5   r¡   r:   r6   )rG   rå   r   r:   rJ   rJ   rK   Údepart_footer<  s   
ÿ
zHTMLTranslator.depart_footerc                 C   sR   | j j}t| ¡ t|ƒƒs| j d|› d¡ | j | j|d|j|gdd¡ d S )Nz<aside class="footnote-list z">
ro  zdoc-footnoter¨  )	r[   Úfootnote_referencesrš   rª  r«  r5   r¡   r2  r{   )rG   rå   Úlabel_stylerJ   rJ   rK   Úvisit_footnoteF  s   þzHTMLTranslator.visit_footnotec                 C   r­  )Nru  FTr¯  r²  rX  rJ   rJ   rK   Údepart_footnoteQ  rµ  zHTMLTranslator.depart_footnotec              
   C   sD   d|d  }| j jg}| j | j|dd|d|d¡ | j d¡ d S )Nr¶  r·  r¹  r+   zdoc-noteref)r(  rù   r©  r»  ú!<span class="fn-bracket">[</span>)r[   r=  r5   r¡   r2  )rG   rå   r»  rù   rJ   rJ   rK   Úvisit_footnote_referenceW  s   
ÿz'HTMLTranslator.visit_footnote_referencec                 C   s   | j  d¡ | j  d¡ d S )Nz!<span class="fn-bracket">]</span>ú</a>r`  rX  rJ   rJ   rK   Údepart_footnote_reference^  s   z(HTMLTranslator.depart_footnote_referencec                 C   s:   d|d v r|  ¡  d¡}| j d|  |¡ ¡ tj‚d S )NÚsectnumrù   õ   Â z <span class="sectnum">%s </span>)r²   rc   r5   r¡   r¶   r   rÔ  )rG   rå   rE  rJ   rJ   rK   Úvisit_generatedc  s   ÿúzHTMLTranslator.visit_generatedc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_generatedl  rZ  zHTMLTranslator.depart_generatedc                 C   r9  rB   r:  rX  rJ   rJ   rK   Úvisit_headero  r$  zHTMLTranslator.visit_headerc                 C   sb   | j  ¡ }| j|dddg}| | j|d … ¡ | d¡ | j |¡ | j |¡ | j|d …= d S )Nrz   r9   r{  z
<hr class="header"/>
</div>
)r¤   r!  r2  r$  r5   r¡   r2   r9   )rG   rå   r   r9   rJ   rJ   rK   Údepart_headerr  s   

zHTMLTranslator.depart_headerc              
   C   s¤  |d }|  d|¡}t |¡d }d}i }d|v r!d|d  |d< |  |¡}|r,||d< || jv r3d	n| j}|  d
|¡}|dkrEd|d
< nn|dkr³z |  |¡}	t|	dƒ}
|
 ¡ }W d   ƒ n1 scw   Y  W n' t	t
fy } z| j | jjjd|› d|› |d¡ W Y d }~n'd }~ww | jj |	¡ |dkr¤|  |||¡}nt |¡ ¡ }d|› d|› }t|jtjƒrÉt|jtjƒrÌt|jjtjƒsÌd}nd}|| jv r	||d< d|d v ré|d  d¡ d|d< | j|d|fd|i|¤Žd|d › d|› d|›  d|›  }n7|dkr'||d< | j|d dfd!|i|¤Ž|› d"|›  }n|r/||7 }n||d< | j|d#|fd|i|¤Ž}| j |¡ |rP|   |¡ d S d S )$NrÁ   rü   r   r+   rú   úalign-%srû   r÷   r„   ÚloadingÚlazyr†   ÚrbzCannot embed image "rò   rÉ   zimage/svg+xmlzdata:z;base64,r`   r7   Úcontrolsrù   ÚvideoÚsrcz	<a href="r  rC  z</video>zapplication/x-shockwave-flashr«  ÚobjectÚdataz	</object>rè   )!rÑ   rÒ   rÓ   rð   rÔ   r‰   rÖ   rZ   r\   rÙ   rÚ   r°   r¡   rM   r“   r  r[   rÜ   rÝ   r  Úbase64Ú	b64encoder   rš   r6  r   ÚTextElementÚ	referenceÚremover2  r3  r5   r;  )rG   rå   rÁ   rü   ÚmimetypeÚelementr,  r  rL  rç   Ú	imagefiler  rê   Údata64r(  rJ   rJ   rK   Úvisit_image{  s€   



ÿ€ÿ€ÿÿÿþÿþ
ÿ
ÿzHTMLTranslator.visit_imagec                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_imageÀ  rZ  zHTMLTranslator.depart_imagec                 C   r[  )Nr¿  r+   r]  rX  rJ   rJ   rK   Úvisit_inlineÃ  r‚  zHTMLTranslator.visit_inlinec                 C   r_  rÃ  r`  rX  rJ   rJ   rK   Údepart_inlineÆ  rb  zHTMLTranslator.depart_inlinec                 C   sZ   | j  d¡ | j  d¡ | jjr)|j dg ¡}t|ƒdkr+| j  d|d  ¡ d S d S d S )Nz<span class="label">rA  ÚbackrefsrÍ   z"<a role="doc-backlink" href="#%s">r   )r5   r¡   r[   Úfootnote_backlinksr6  rÑ   rý  )rG   rå   ra  rJ   rJ   rK   Úvisit_labelÊ  s   
ÿýzHTMLTranslator.visit_labelc                 C   s|   g }| j jr|j d|¡}t|ƒdkr| j d¡ | j d¡ t|ƒdkr<dd„ t|dƒD ƒ}| j dd |¡ ¡ d S d S )	Nra  rÍ   rC  z)<span class="fn-bracket">]</span></span>
c                 S   s   g | ]
\}}d ||f ‘qS )z(<a role="doc-backlink" href="#%s">%s</a>rJ   )r‹   rì   ÚrefrJ   rJ   rK   r   Ü  s    ÿz/HTMLTranslator.depart_label.<locals>.<listcomp>z#<span class="backrefs">(%s)</span>
ú,)	r[   rb  r6  rÑ   rý  r5   r¡   rä   rb   )rG   rå   ra  Ú	backlinksrJ   rJ   rK   Údepart_labelÔ  s   ÿ
ÿýzHTMLTranslator.depart_labelc                 C   rÖ  )Nrz   Úlegendr{  r]  rX  rJ   rJ   rK   Úvisit_legendá  rÙ  zHTMLTranslator.visit_legendc                 C   r_  rÚ  r`  rX  rJ   rJ   rK   Údepart_legendä  rb  zHTMLTranslator.depart_legendc                 C   s6   | j  | j|dddd¡ t|ƒs| j  d¡ d S d S )Nrz   r+   Úlineri  z<br />)r5   r¡   r2  rý  rX  rJ   rJ   rK   Ú
visit_lineç  s   ÿzHTMLTranslator.visit_linec                 C   r_  rÚ  r`  rX  rJ   rJ   rK   Údepart_lineì  rb  zHTMLTranslator.depart_linec                 C   rÖ  )Nrz   z
line-blockr{  r]  rX  rJ   rJ   rK   Úvisit_line_blockï  rÙ  zHTMLTranslator.visit_line_blockc                 C   r_  rÚ  r`  rX  rJ   rJ   rK   Údepart_line_blockò  rb  z HTMLTranslator.depart_line_blockc                 C   r[  )NÚlir+   r]  rX  rJ   rJ   rK   Úvisit_list_itemõ  r‚  zHTMLTranslator.visit_list_itemc                 C   r_  )Nz</li>
r`  rX  rJ   rJ   rK   Údepart_list_itemø  rb  zHTMLTranslator.depart_list_itemc                 C   sØ   |d }d|v r|  | d¡¡ | j |  |dd¡¡ d S | j | j|dddd¡ | ¡ }t|jtj	ƒs;| 
dd¡}| j |¡D ]!}| ¡ rY| j |¡rY| j d	|  |¡ ¡ qA| j |  |¡¡ qA| j d
¡ tj‚)Nrù   r  r+   r¿  zdocutils literalr{  r`   r³   z<span class="pre">%s</span>rÄ  )r!  rB  r5   r¡   r2  r²   rš   r6  r   Úliteral_blockr¹   Úwords_and_spacesÚfindallró   Úin_word_wrap_pointÚsearchr¶   rÔ  )rG   rå   rù   rº   ÚtokenrJ   rJ   rK   Úvisit_literalü  s&   ÿÿzHTMLTranslator.visit_literalc                 C   r_  )Nú</code>r`  rX  rJ   rJ   rK   Údepart_literal  s   zHTMLTranslator.depart_literalc                 C   s:   | j  | j|dddd¡ d|d v r| j  d¡ d S d S )Nrh  r+   zliteral-blockr{  r  rù   z<code>r]  rX  rJ   rJ   rK   Úvisit_literal_block  s   ÿz"HTMLTranslator.visit_literal_blockc                 C   s(   d|d v r| j  d¡ | j  d¡ d S )Nr  rù   rz  z</pre>
r`  rX  rJ   rJ   rK   Údepart_literal_block  s   z#HTMLTranslator.depart_literal_blockr¿  ÚformulaÚttrh  Úmathr+   Úproblematic)r   Úlatexr  Úmathmlr  c           
   
      sV  t |tjƒ}ˆ j}| ¡  tj¡}|dkr8ˆ jr)ˆ j	s)‡ fdd„ˆ j 
d¡D ƒˆ _	|tj_t||ƒ}t |¡}n·|dkrBˆ  |¡}n­|dkr‚ˆ j	snˆ jrQˆ jˆ _n	ˆ jjjd|d d	ˆ jvrfˆ  jd
7  _ˆ jˆ j gˆ _	|rvt||ƒ}nd|› d}ˆ  |¡}nm|dkrïdˆ jv r“ˆ jˆ _ˆ jˆ _ˆ jrttˆ jƒ}ntj}z|||d}W nF ttfyî } z8t|dg ƒ}ˆ j  ˆ jjj|g|¢R d|iŽ¡ ˆ  | ¡ ¡}ˆ j!j"dkrÚd}nd}t |tƒrä|ˆ _W Y d }~nd }~ww ˆ j#| | }|rúdnd}	|rˆ j$  ˆ j%|||	ˆ j#| d d¡ ˆ j$ &||	g¡ |r(ˆ j$  d|› d|	› ¡ tj'‚)Nr   c                    s&   g | ]}ˆ j t |ˆ jj¡d d‘qS )T)r  )rŠ   r   Úfind_file_in_dirsr[   Ústylesheet_dirs)r‹   ÚsrF   rJ   rK   r   8  s    þÿÿÿz-HTMLTranslator.visit_math.<locals>.<listcomp>re  r‚  r  zANo MathJax URL specified, using local fallback (see config.html).rÉ   ú?z?config=TeX-AMS_CHTMLz\(z\)rƒ  zXHTML 1)Úas_blockrë  rÊ   rË   r  r`   r+   r  r  r   )(rš   r   Ú
math_blockr›   r²   rV   r   Úuni2tex_tabler   r¯   rq   r   ÚDocumentParametersÚdisplaymoder   r¶   Úmathjax_urlrM   r“   rÞ   Úmathjax_scriptr  Údoctype_mathmlÚcontent_type_mathmlrž   rR   r   r   Ú
tex2mathmlr   rÚ   r°   r¡   r[   r9  Ú	math_tagsr5   r2  r$  ÚSkipChildren)
rG   rå   Úis_blockÚformatÚ	math_codeÚ	converterrê   rë  Útagr(  rJ   rF   rK   Ú
visit_math/  s€   

ý

þ

ÿÿÿ
€õÿzHTMLTranslator.visit_mathc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_mathw  rZ  zHTMLTranslator.depart_mathc                 C   ó   |   |¡ d S rB   )r™  rX  rJ   rJ   rK   Úvisit_math_blockz  ó   zHTMLTranslator.visit_math_blockc                 C   r›  rB   )r;  rX  rJ   rJ   rK   Údepart_math_block}  r  z HTMLTranslator.depart_math_blockc                 C   s$   | j  | j|dfi | ¡ ¤Ž¡ d S )Nr;   )r;   r¡   r3  Únon_default_attributesrX  rJ   rJ   rK   Ú
visit_meta‚  s   ÿzHTMLTranslator.visit_metac                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_meta†  rZ  zHTMLTranslator.depart_metac                 C   r¤  )Nr¿  r+   Úoptionr{  r]  rX  rJ   rJ   rK   Úvisit_option‰  rs  zHTMLTranslator.visit_optionc                 C   s6   | j  d¡ t|jdddtjƒr| j  d¡ d S d S )NrÄ  FTr¯  ú, )r5   r¡   rš   r³  r   r¢  rX  rJ   rJ   rK   Údepart_optionŒ  s   ÿþzHTMLTranslator.depart_optionc                 C   s.   | j  | dd¡¡ | j  |  |dd¡¡ d S )NÚ	delimiterr³   Úvarr+   )r5   r¡   rÑ   r2  rX  rJ   rJ   rK   Úvisit_option_argument’  s   z$HTMLTranslator.visit_option_argumentc                 C   r_  )Nz</var>r`  rX  rJ   rJ   rK   Údepart_option_argument–  rb  z%HTMLTranslator.depart_option_argumentc                 C   s&   | j  |  |dd¡¡ | j  d¡ d S )Nr1  r+   z<kbd>r]  rX  rJ   rJ   rK   Úvisit_option_group™  s   z!HTMLTranslator.visit_option_groupc                 C   r_  )Nz</kbd></dt>
r`  rX  rJ   rJ   rK   Údepart_option_group  rb  z"HTMLTranslator.depart_option_groupc                 C   rÖ  )Nrò  zoption-listr{  r]  rX  rJ   rJ   rK   Úvisit_option_list   s   ÿz HTMLTranslator.visit_option_listc                 C   r_  rÿ  r`  rX  rJ   rJ   rK   Údepart_option_list¤  rb  z!HTMLTranslator.depart_option_listc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Úvisit_option_list_item§  rZ  z%HTMLTranslator.visit_option_list_itemc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_option_list_itemª  rZ  z&HTMLTranslator.depart_option_list_itemc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Úvisit_option_string­  rZ  z"HTMLTranslator.visit_option_stringc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_option_string°  rZ  z#HTMLTranslator.depart_option_stringc                 C   rˆ  )NÚorganizationr‰  rX  rJ   rJ   rK   Úvisit_organization³  rb  z!HTMLTranslator.visit_organizationc                 C   r‹  rB   rŒ  rX  rJ   rJ   rK   Údepart_organization¶  rŽ  z"HTMLTranslator.depart_organizationc                 C   r[  )Nry  r+   r]  rX  rJ   rJ   rK   Úvisit_paragraphÈ  r‚  zHTMLTranslator.visit_paragraphc                 C   sL   | j  d¡ t|jtjtjfƒrt|jƒdks$| j  d¡ |  |¡ d S d S )Nr†  rÍ   r`   )	r5   r¡   rš   r6  r   Ú	list_itemr8  rý  r;  rX  rJ   rJ   rK   Údepart_paragraphË  s   þzHTMLTranslator.depart_paragraphc                 C   sV   |  d¡r| j d|d  ¡ | j d¡ n| j d¡ | j | j|dddd¡ d S )Nr·  z<a href="#%s">rC  r+   r¿  r  r{  )Úhasattrr5   r¡   r¤   r2  rX  rJ   rJ   rK   Úvisit_problematicÒ  s
   
z HTMLTranslator.visit_problematicc                 C   s"   | j  d¡ | j  | j ¡ ¡ d S rÃ  r€  rX  rJ   rJ   rK   Údepart_problematicÚ  s   z!HTMLTranslator.depart_problematicc                 C   sz   d|  dd¡ ¡ v r:t|jtjƒrd}nd}|d r&| j | j||dd¡ | j | 	¡ ¡ |d r:| j d| ¡ tj
‚)	Nr   r•  r+   r¿  rz   rù   ©r(  z</%s>)rÑ   rq   rš   r6  r   rV  r5   r¡   r2  r²   rÔ  )rG   rå   r{   rJ   rJ   rK   Ú	visit_rawÞ  s   zHTMLTranslator.visit_rawc                 C   sì   ddgi}d}d|v r0|d |d< | j jr(|d  d¡r(|  |d ¡|d< d| _|d  d¡ nd	|v s8J d
ƒ‚d|d	  |d< |d  d¡ t|ƒdkr\t|d tj	ƒr\|d  d¡ t|j
tjƒsed}| j | j|d|fi |¤Ž¡ d S )Nrù   rW  r+   Úrefurir»  zmailto:TÚexternalr·  z3References must have "refuri" or "refid" attribute.r¶  r  rÍ   r   zimage-referencer`   r¹  )r[   r¸   rø   rÂ   r­   r¡   rý  rš   r   Úimager6  rV  r5   r2  )rG   rå   r,  r(  rJ   rJ   rK   Úvisit_referenceì  s(   
ÿ
ÿ"zHTMLTranslator.visit_referencec                 C   s0   | j  d¡ t|jtjƒs| j  d¡ d| _d S )NrC  r`   F)r5   r¡   rš   r6  r   rV  r­   rX  rJ   rJ   rK   Údepart_reference  s   
zHTMLTranslator.depart_referencec                 C   rÞ  )NÚrevisionFrg  r‰  rX  rJ   rJ   rK   Úvisit_revision  rá  zHTMLTranslator.visit_revisionc                 C   r‹  rB   rŒ  rX  rJ   rJ   rK   Údepart_revision
  rŽ  zHTMLTranslator.depart_revisionc                 C   s    | j  |  |dd¡¡ d|_d S )NÚtrr+   r   )r5   r¡   r2  r   rX  rJ   rJ   rK   Ú	visit_row  s   
zHTMLTranslator.visit_rowc                 C   r_  )Nz</tr>
r`  rX  rJ   rJ   rK   Ú
depart_row  rb  zHTMLTranslator.depart_rowc                 C   r¤  )Nry  r+   Úrubricr{  r]  rX  rJ   rJ   rK   Úvisit_rubric  rs  zHTMLTranslator.visit_rubricc                 C   r_  r~  r`  rX  rJ   rJ   rK   Údepart_rubric  rb  zHTMLTranslator.depart_rubricc                 C   s*   |  j d7  _ | j | j|ddd¡ d S )NrÍ   rz   Úsectionr{  )r¥   r5   r¡   r2  rX  rJ   rJ   rK   Úvisit_section  s   ÿzHTMLTranslator.visit_sectionc                 C   s   |  j d8  _ | j d¡ d S )NrÍ   r®  )r¥   r5   r¡   rX  rJ   rJ   rK   Údepart_section  s   zHTMLTranslator.depart_sectionc                 C   s"   | j  | j|ddd¡ d| _d S )Nrz   Úsidebarr{  T)r5   r¡   r2  r«   rX  rJ   rJ   rK   Úvisit_sidebar$  s   ÿ
zHTMLTranslator.visit_sidebarc                 C   s   | j  d¡ d| _d S )Nr®  F)r5   r¡   r«   rX  rJ   rJ   rK   Údepart_sidebar)  s   
zHTMLTranslator.depart_sidebarc                 C   rÞ  )NÚstatusFrg  r‰  rX  rJ   rJ   rK   Úvisit_status-  rá  zHTMLTranslator.visit_statusc                 C   r‹  rB   rŒ  rX  rJ   rJ   rK   Údepart_status0  rŽ  zHTMLTranslator.depart_statusc                 C   r[  )NÚstrongr+   r]  rX  rJ   rJ   rK   Úvisit_strong3  r‚  zHTMLTranslator.visit_strongc                 C   r_  )Nz	</strong>r`  rX  rJ   rJ   rK   Údepart_strong6  rb  zHTMLTranslator.depart_strongc                 C   r[  )Nr·   r+   r]  rX  rJ   rJ   rK   Úvisit_subscript9  r‚  zHTMLTranslator.visit_subscriptc                 C   r_  )Nz</sub>r`  rX  rJ   rJ   rK   Údepart_subscript<  rb  zHTMLTranslator.depart_subscriptc                 C   ó   t j‚)zInternal only.©r   rÔ  rX  rJ   rJ   rK   Úvisit_substitution_definition?  ó   z,HTMLTranslator.visit_substitution_definitionc                 C   r›  rB   )Úunimplemented_visitrX  rJ   rJ   rK   Úvisit_substitution_referenceC  r  z+HTMLTranslator.visit_substitution_referencec                 C   sn   t |jtjƒrdg}nt |jtjƒrdg}t| jƒd | _n
t |jtjƒr(dg}| j 	| j
|dd|d¡ d S )Nzsidebar-subtitler8   rÍ   zsection-subtitlery  r+   rq  )rš   r6  r   rÎ  rM   rý  r5   r¬   rË  r¡   r2  ró  rJ   rJ   rK   Úvisit_subtitleJ  s   zHTMLTranslator.visit_subtitlec                 C   sb   | j  d¡ t|jtjƒr/| j | jd… | _d| _| j 	| j ¡ | j
 	| j ¡ | j d d …= d S d S )Nr  r  r   )r5   r¡   rš   r6  r   rM   r¬   r8   r3   r$  r@   rX  rJ   rJ   rK   Údepart_subtitleT  s   ûzHTMLTranslator.depart_subtitlec                 C   r[  )NÚsupr+   r]  rX  rJ   rJ   rK   Úvisit_superscript]  r‚  z HTMLTranslator.visit_superscriptc                 C   r_  )Nz</sup>r`  rX  rJ   rJ   rK   Údepart_superscript`  rb  z!HTMLTranslator.depart_superscriptc              	   C   sÜ   | j  | j|ddd¡ | j  d¡ d}t|d ƒrH|d }t|ƒdkr+d|d	  }nd}g }|D ]}| d
||f ¡ |d7 }q1dd |¡ }| d¡rTd|d  }nd}| j  d|d |d |  |d ¡||f ¡ d S )Nro  zsystem-messager{  z <p class="system-message-title">r+   ra  rÍ   z%; <em><a href="#%s">backlink</a></em>r   z<a href="#%s">%s</a>z; <em>backlinks: %s</em>r¤  rk  z	, line %szISystem Message: %s/%s (<span class="docutils literal">%s</span>%s)%s</p>
r«  r5  r  )r5   r¡   r2  rý  rb   r¸  r¶   )rG   rå   Úbackref_textra  rì   rf  Úbackrefrk  rJ   rJ   rK   Úvisit_system_messagec  s2   ÿ
ÿ
ÿ
þz#HTMLTranslator.visit_system_messagec                 C   r_  rt  r`  rX  rJ   rJ   rK   Údepart_system_message}  rb  z$HTMLTranslator.depart_system_messagec                 C   sr   d| j j dd¡ ¡ i}d|v r|d  d|d  ¡ d|v r'd|d  |d< | j|d	fi |¤Ž}| j |¡ d S )
Nrù   re  r³   rú   rK  rÄ   z
width: %s;r÷   r#  )r[   rÐ  r¹   rq   r¡   r2  r5   )rG   rå   r,  r˜  rJ   rJ   rK   Úvisit_table€  s   zHTMLTranslator.visit_tablec                 C   rÂ  )Nz	</table>
)r5   r¡   r;  rX  rJ   rJ   rK   Údepart_table‰  rÇ  zHTMLTranslator.depart_tablec                 C   sR   d|vr!d|vr!d|vr!| j  | j|dddd¡ | j d¡ d S | j d¡ d S )	Nr½  r·  r¸  r¿  r+   Útargetr{  rÄ  )r5   r¡   r2  r¤   rX  rJ   rJ   rK   Úvisit_target  s   zHTMLTranslator.visit_targetc                 C   r"  rB   r€  rX  rJ   rJ   rK   Údepart_target–  r$  zHTMLTranslator.depart_targetc                 C   r  )NÚtbodyr]  rX  rJ   rJ   rK   Úvisit_tbodyš  r’  zHTMLTranslator.visit_tbodyc                 C   r_  )Nz	</tbody>
r`  rX  rJ   rJ   rK   Údepart_tbody  rb  zHTMLTranslator.depart_tbodyc              	   C   sX   d|j j d v r| j | j|ddd¡ d S | j | j|dd|j d |j d d¡ d S )	Nrë  rù   Úsummaryr+   r»  r1  r  )r(  rù   r  rí  rX  rJ   rJ   rK   Ú
visit_term   s   þzHTMLTranslator.visit_termc                 C   sF   |j tjdddrd S d|jjd v r| j d¡ d S | j d¡ d S )NFTr¯  rë  rù   z</summary>
z</dt>
)r³  r   rÀ  r6  r5   r¡   rX  rJ   rJ   rK   rÅ  ©  s
   zHTMLTranslator.depart_termc                 C   s   g | _ g |_d S rB   )r¦   rÉ  rX  rJ   rJ   rK   Úvisit_tgroup²  s   
zHTMLTranslator.visit_tgroupc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_tgroup¶  rZ  zHTMLTranslator.depart_tgroupc                 C   r  )Nr  r]  rX  rJ   rJ   rK   Úvisit_thead¹  r’  zHTMLTranslator.visit_theadc                 C   r_  )Nz	</thead>
r`  rX  rJ   rJ   rK   Údepart_thead¼  rb  zHTMLTranslator.depart_theadc                 C   s´   i }| j | j d }dt|dƒ }|dkr||d< | j||dfi |¤Ž}| d¡rRi }d|d< d	|d
< d|d  |d< || jt ¡ ddfi |¤Ž7 }d| }||fS d| }||fS )NrÍ   zh%ié   z
aria-levelr+   r·  ztoc-backrefrû   zdoc-backlinkr©  r¶  r»  r¹  z
</a></%s>
r  )r¥   r–   Úminr2  r¸  r   rW  )rG   rå   r,  Úh_levelr{   Ú	start_tagÚ	close_tagrJ   rJ   rK   Úsection_title_tags¿  s    
ÿz!HTMLTranslator.section_title_tagsc                 C   sH  d}t |jtjƒr*| j | j|dddd¡ | jjr)d|jd v r)| j d¡ d	}nrt |jtj	ƒr?| j | j|ddd
d¡ n]t |jtj
ƒrT| j | j|dddd¡ nHt |jtjƒri| j |  |dd¡¡ d}n3t |jtjƒr†| j | j|dddd¡ d}t| jƒ| _nt |jtjƒsJ ‚|  |¡\}}| j |¡ | j |¡ d S )Nr  ry  r+   ztopic-titler{  r™  rù   z*<a class="reference internal" href="#top">z	</a></p>
zsidebar-titlezadmonition-titler¥  z</caption>
Úh1r7   z</h1>
)rš   r6  r   Útopicr5   r¡   r2  r[   Útoc_backlinksrÎ  Ú
Admonitionr#  rM   rý  r¬   rË  rû  r¤   )rG   rå   rú  rù  rJ   rJ   rK   Úvisit_titleÒ  s:   ÿ€ÿÿzHTMLTranslator.visit_titlec                 C   s`   | j  | j ¡ ¡ | jr.| j | jd… | _d| _| j | j ¡ | j | j ¡ | j d d …= d S d S )Nr  r   )	r5   r¡   r¤   r!  r¬   r7   r3   r$  r?   rX  rJ   rJ   rK   Údepart_titleñ  s   ûzHTMLTranslator.depart_titlec                 C   r[  )NÚciter+   r]  rX  rJ   rJ   rK   Úvisit_title_referenceú  r‚  z$HTMLTranslator.visit_title_referencec                 C   r_  )Nz</cite>r`  rX  rJ   rJ   rK   Údepart_title_referenceý  rb  z%HTMLTranslator.depart_title_referencec                 C   rÖ  )Nrz   rý  r{  r]  rX  rJ   rJ   rK   Úvisit_topic   rÙ  zHTMLTranslator.visit_topicc                 C   r_  rÚ  r`  rX  rJ   rJ   rK   Údepart_topic  rb  zHTMLTranslator.depart_topicc                 C   rÖ  )NÚhrre   r{  )r5   r¡   r3  rX  rJ   rJ   rK   Úvisit_transition  rÙ  zHTMLTranslator.visit_transitionc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Údepart_transition	  rZ  z HTMLTranslator.depart_transitionc                 C   rÞ  )Nra   Frg  r‰  rX  rJ   rJ   rK   Úvisit_version  rá  zHTMLTranslator.visit_versionc                 C   r‹  rB   rŒ  rX  rJ   rJ   rK   Údepart_version  rŽ  zHTMLTranslator.depart_versionc                 C   s   t d|jj ƒ‚)Nz$visiting unimplemented node type: %s)ÚNotImplementedErrorrI   rk   rX  rJ   rJ   rK   rÝ    s   ÿz"HTMLTranslator.unimplemented_visitrB   )r`   F)r`   )r   )T)Ýrk   rl   rm   Ú__doc__r  r  r  rž   re   rf   rŸ   r  rŽ  r  r  r  rá   Úcompilert  rv  r"  ÚordrÃ   rÔ   r   r²   r½   rÀ   rÂ   r¶   rð   r  rŠ   r2  r3  r;  rE  rÖ   rV  rY  r^  ra  rd  re  rk  rn  rr  rv  r|  r}  r  r…  r‡  rŠ  r  r‘  r“  r—  rž  r¢  r£  r¦  r§  r¬  r´  r½  r¾  rÁ  rÆ  rÊ  rÓ  r·   rÕ  rØ  rÛ  rÜ  rÝ  rà  râ  rä  rå  rç  rè  ré  rê  rî  rñ  rô  rö  rø  rù  rú  rü  rþ  r  rj  rm  r	  r
  r  r  r  r  r!  r#  r'  r(  r,  r-  r/  r0  r2  r3  r4  r5  r7  r8  r;  r<  r?  r@  rB  rD  rG  rH  rI  rJ  r]  r^  r_  r`  rc  rg  ri  rj  rl  rm  rn  ro  rq  rr  ry  r{  r|  r}  r’  r™  rš  rœ  rž  r   r¡  r£  r¥  r¨  r©  rª  r«  r¬  r­  r®  r¯  r°  r±  r³  r´  rµ  r·  r¹  rº  r¼  rÀ  rÁ  rÃ  rÄ  rÆ  rÇ  rÉ  rÊ  rÌ  rÍ  rÏ  rÐ  rÒ  rÓ  rÕ  rÖ  r×  rØ  rÛ  rÞ  rß  rà  râ  rã  ræ  rç  rè  ré  rë  rì  rî  rï  rñ  rÅ  rò  ró  rô  rõ  rû  r   r  r  r  r  r  r  r	  r
  r  rÝ  rJ   rJ   rJ   rK   ry   ¶   sÒ   8ÿ


üR
ÿ
4)Bý
	

ÿ

		E


ûH
						ry   c                   @   sœ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ ZeZeZ	eZ
eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"d
S )r”  a  
    Raise `nodes.NodeFound` if non-simple list item is encountered.

    Here "simple" means a list item containing nothing other than a single
    paragraph, a simple list, or a paragraph followed by a simple list.

    This version also checks for simple field lists and docinfo.
    c                 C   rÙ  rB   )r   r–  rX  rJ   rJ   rK   Údefault_visit"  s   zSimpleListChecker.default_visitc                 C   sr   dd„ |j D ƒ}|r.t|d tjƒr.t|d tjƒs*t|d tjƒs*t|d tjƒr.| ¡  t|ƒdkr6d S tj	‚)Nc                 S   r<  rJ   r=  )r‹   rD  rJ   rJ   rK   r   &  s    

ÿz5SimpleListChecker.visit_list_item.<locals>.<listcomp>r   r  rÍ   )
rC  rš   r   Ú	paragraphr  rœ  rš  r!  rý  r–  )rG   rå   rC  rJ   rJ   rK   rq  %  s   ÿþýz!SimpleListChecker.visit_list_itemc                 C   rW  rB   rJ   rX  rJ   rJ   rK   Ú	pass_node2  rZ  zSimpleListChecker.pass_nodec                 C   rÙ  rB   rÚ  rX  rJ   rJ   rK   Úignore_node5  rÜ  zSimpleListChecker.ignore_nodeN)#rk   rl   rm   r  r  rq  r  r  rV  rµ  r¢  r'  rþ  r…  rŠ  rk  rà  rä  rç  r³  rÒ  r
  rô  rø  rñ  rÁ  rî  r,  r/  r4  r2  rÕ  rÛ  rë  Úvisit_pendingrJ   rJ   rJ   rK   r”    sB    	r”  )&r  rT  rÒ   rO  Úos.pathÚpathlibr   rá   rG  r—   Úxml.etree.ElementTreeÚetreeÚElementTreerý   re   r   r   r   r   r   Údocutils.parsers.rst.directivesr   Ú&docutils.parsers.rst.directives.imagesr	   Údocutils.transformsr
   Údocutils.utils.mathr   r   r   r   r   r   r   r   ry   ÚGenericNodeVisitorr”  rJ   rJ   rJ   rK   Ú<module>   s@                 m