
    k7i*                   j   S r SSKJr  SrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Js  Jr  SSKJr  SSKrSSKJrJrJrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJrJrJ r J!r!J"r"  Sr#\#(       a  SSKJ$r$   " S S\RJ                  5      r% " S S\RL                  5      r' " S S\RP                  5      r)g)z-Common definitions for Docutils HTML writers.    )annotationsreStructuredTextN)Path)frontend	languagesnodesutilswriters) length_or_percentage_or_unitless)PIL)
writer_aux)latex2mathml	math2htmltex2mathml_externunichar2texwrap_math_code	MathErrorF)	Transformc                    ^  \ rS rSrSr SSSS/SS04S	S
/SS\R                  S.4SS/SS\R                  S.4SS/S\R                  S.4SS/SS\R                  S.4SS/SSS.4S S!/S"R                  5       S#S$S%.4S&S'/S(S)/S)S*S+S,.4S-S.// S/QS0S*S%.4S1S2/SS\R                  S.4S3S4/S5SS.4S6S7/SS\R                  S.4S8S9/S:SS.4S;S</S=S>S?.4S@SA/SBSC\R                  SD.4SESF/SGS\R                  S.4SHSI/SJSS.4SKSL/S\R                  SM.444r
SNSO0rSPrSQrSRrSSrSZU 4ST jjrS[SU jrS\SV jrSW rS[U 4SX jjrSYrU =r$ )]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	validatorzComma 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,...]>
stylesheetzComma-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_listszClass value(s) assigned to all tables. Defined styles: borderless, booktabs, align-left, align-center, align-right, colwidths-auto, colwidths-grid.z--table-stylez<style> )r   r    zfMath output format (one of "MathML", "HTML", "MathJax", or "LaTeX") and option(s). (default: "MathML")z--math-outputz<format [option(s)]>MathML)r   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                D   > [         TU ]  5       [        R                  /-   $ N)superget_transformsr   Admonitions)self	__class__s    U/home/james-whalen/.local/lib/python3.13/site-packages/docutils/writers/_html_base.pyrL   Writer.get_transforms   s    w%':+A+A*BBB    c           	         U R                  U R                  5      =U l        nU R                  R                  U5        U R                   H  n[        X[        X5      5        M     U R                  5       U l        g rJ   )	translator_classdocumentvisitor	walkaboutvisitor_attributessetattrgetattrapply_templateoutput)rN   rV   attrs      rP   	translateWriter.translate   s^    !%!6!6t}}!EEw(++DD 67 ,))+rR   c                    [        U R                  R                  R                  5      nUR	                  SS9nX R                  5       -  $ )Nutf-8encoding)r   rU   settingsr6   	read_textinterpolation_dict)rN   template_pathr6   s      rP   r[   Writer.apply_template   sA    T]]33<<= **G*<11333rR   c                    0 nU R                   R                  nU R                   H.  nSR                  [	        X5      5      R                  S5      X'   M0     UR                  US'   [        R                  US'   U$ )Nr1   
rc   version)	rU   rd   rX   joinrZ   rstripoutput_encodingdocutils__version__)rN   subsrd   r]   s       rP   rf   Writer.interpolation_dict   sj    ==))++D!45<<TBDJ ,#33Z"..YrR   c                   > [         TU ]  5         U R                   H*  nSR                  [	        X5      5      U R
                  U'   M,     g Nr1   )rK   assemble_partsrX   rl   rZ   parts)rN   partrO   s     rP   ru   Writer.assemble_parts   s:     ++D!wwwt':;DJJt ,rR   )r\   rV   )returnzlist[type[Transform]]ry   None)ry   str)__name__
__module____qualname____firstlineno__	supportedr   validate_comma_separated_listvalidate_booleansplitvalidate_math_outputsettings_specsettings_defaultsrelative_path_settingsconfig_sectionconfig_section_dependenciesrX   rL   r^   r[   rf   ru   __static_attributes____classcell__rO   s   @rP   r   r   -   s   !I' 	(.h

!L
'6G >>@
A
(
 
) >>@
A( 
' >>@	
AB
 l 113
4
 @
%
?
A) $
$#))+!	
"."
#$j1j 79
: 
?5	
62
l 113
4
 @
 "m
<
>"
#l 113
4
 0%
&(M
B
D, 
B
/
1;
, 557
8
 )
| 113
4 &!
"$
>
@J$
%!0I0I
J
LgW	[
Mz 9:MN*'N"=C,4
< <rR   r   c                  $	  ^  \ rS rSrSrSrSrSrS\R                   S3r
SS	S
.rSrSr SrSr\R"                  " S5      r\R"                  " S5      rSr\" S5      S\" S5      S\" S5      S\" S5      S\" S5      S0r Sr SU 4S jjrS r\R"                  " S5      4S  jrS! rS" rS# rSS$ jrSS% jrSS& jr SS' jr!SS( jr"SS) jr#SS* jr$SSS+ jjr%SS, jr&SS- jr'SS. jr(SS/ jr)SS0 jr*SS1 jr+SS2 jr,SS3 jr-SS4 jr.SSS5 jjr/S6S7S7S8S9.r0SS: jr1SS; jr2SS< jr3SS= jr4SS> jr5SS? jr6SS@ jr7SSA jr8SSB jr9SC r:SSD jr;SSE jr<SSF jr=SSG jr>SSH jr?SSI jr@SSJ jrASSK jrBSSL jrCSSM jrDSSN jrESSO jrF\R"                  " SP5      R                  4SQ jrHSSR jrISSS jrJSST jrKSSU jrLSSV jrMSSW jrNSSX jrOSSY jrPSSZ jrQSS[ jrRSS\ jrSSS] jrTSS^ jrUSS_ jrVSS` jrWSSa jrXSSb jrYSSc jrZSSd jr[SSe jr\SSf jr]SSg jr^SSSh jjr_SSi jr`SSj jraSSk jrbSSl jrcSSm jrdSSn jreSSo jrfSSp jrgSSq jrhSSr jriSSs jrjSSt jrkSSu jrlSSv jrmSSw jrnSSx jroSSy jrpSSz jrqSS{ jrrSS| jrsSS} jrtSS~ jruSS jrvSS jrwSS jrxSS jrySS jrzS r{SS jr|SS jr}SS jr~SS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrS rSS jrSS jrSS jrSSS/4SSS/4SSS/4SS/ 4SSSS/4S.rS rSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrS rSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrS rSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrS rSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrS rSrU =r$ )HTMLTranslator   am  
    Generic Docutils to HTML translator.

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

    .. 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/" />
divrU   )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                  > [         TU ]  U5        U R                  n[        R                  " UR
                  UR                  5      U l        [        UR                  5      U l	        Sn[        USS 5      b1  UR                  (       a  Sn[        R                  " SU S3[        SS9  [        USU5      U l        [!        U R                  R"                  [$        5      (       a9  [&        R(                  " U R                  R"                  5      U R                  l        U R                  R"                  u  U l        U l        / U l        S	/U l        / U l        S
/U l        / U l        / U l        / U l        / U l        / U l        / U l        / U l         U RB                  /U l"        / U l#        / U l$        / U l%        U RL                  /U l'        [P        RR                  " U5       Vs/ s H  nU RU                  U5      PM     snU l+        / U l,        / U l-        UR\                  (       ah  U R<                  R_                  [P        R\                  " UR`                  5      5        U RF                  R_                  [P        R\                  " S5      5        UR`                  (       aQ  UR`                  Rc                  5       S:w  a3  U RN                  Re                  SU RB                  UR`                  -  5        / U l3         SU l4        / U l5        SU l6        SU l7        SU l8        SU l9        SU l:        SU l;        SU l<        SU l=        / U l>        / U l?        g s  snf )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>
z%sunicoder   TF)@rK   __init__rd   r   get_languagelanguage_codereporterlanguageintinitial_header_levelrZ   r   warningswarnFutureWarningr   
isinstancemath_outputr|   r   r   math_optionsr<   r9   r:   r=   r;   rA   rC   r8   r7   r@   rH   content_typerE   rD   rG   rF   	generatorrB   r	   get_stylesheet_liststylesheet_callr   r>   r?   r3   appendrn   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)rN   rU   rd   _image_loading_defaultpathrO   s        rP   r   HTMLTranslator.__init__$  s   "==!..$22H4E4EG$'(E(E$F!!'8^T2>$$)0&MM 11G0HL (A7 %X%46LN dmm//55(0(E(E,0MM,E,E)GDMM% #mm77				 	/0 "01	++,^^$	','@'@'JL'Jt  //5'JL
####%%h&>&>?A##%%d+-$$((..0I=IIQ 1 1H4L4L LM 	
 #"'!"!&	CLs   Mc                    SR                  U R                  U R                  -   U R                  -   U R                  -   U R
                  -   U R                  -   U R                  -   U R                  -   5      $ rt   )	rl   r7   r8   r   r9   r:   r;   r<   r=   rN   s    rP   astextHTMLTranslator.astextv  sv    wwt''$))3)+/+;+;<../15> # &*%5%56 7 	7rR   z[
	]c                    U R                  UR                  SU5      5      nU R                  (       a?  U R                  R                  (       a$  UR                  SS5      nUR                  SS5      nU$ )z6Cleanse, HTML encode, and return attribute value text. %40z&#37;&#52;&#48;.z&#46;)encodesubr   rd   cloak_email_addressesreplace)rN   text
whitespaceencodeds       rP   attvalHTMLTranslator.attval|  sV     ++jnnS$78>>dmmAAooe->?Gooc73GrR   c                J    UR                  SS5      nUR                  SS5      $ )z;Try to hide the link text of a email link from harversters.r   z<span>&#64;</span>r   z<span>&#46;</span>r   )rN   addrs     rP   cloak_emailHTMLTranslator.cloak_email  s'     ||G%9:||C!566rR   c                &    UR                  SS5      $ )z*Try to hide a mailto: URL from harvesters.r   r   r   )rN   uris     rP   cloak_mailtoHTMLTranslator.cloak_mailto  s    
 {{3&&rR   c                N    [        U5      nUR                  U R                  5      $ )z-Encode special characters in `text` & return.)r|   r^   special_characters)rN   r   s     rP   r   HTMLTranslator.encode  s"    
 4y~~d5566rR   c                   Sn0 nU H$  nXA;   d  M
  [         R                  " X   5      X4'   M&     SU;   aH  [        U5      S:  a9  U R                  U5      nU(       a!  [	        X%5       H  u  pFXC;  d  M  US4X4'   M     UR                  SS5      S-  n0 n/ n	UR                  5        H=  u  nu  pjXg-  nU
(       a  U	R                  U SUS U
 S35        M/  [        U5       X'   M?     U	(       a  S	R                  U	5      US
'   U$ )zDetermine the image size from node arguments or the image file.

Return as dictionary of <img> attributes,
e.g., ``{height': '32', 'style': 'width: 4 em;'}``.

Auxiliary method called from `self.visit_image()`.
Provisional.
widthheightscale   r1   d   : g;r   style)
r   parse_measurelenread_size_with_PILzipgetitemsr   roundrl   )rN   node
dimensionsmeasures	dimensionimgsizevaluescaling_factor	size_attsdeclarationsunits              rP   
image_sizeHTMLTranslator.image_size  s    )
#I &+&9&9$/&J# $ d?s8}q0--d3G(+J(@$I 0/4bk+ )A
 '3/#5	(0(8$I}#E##ykE!9TF!$DE*/,	$ )9 !$,!7IgrR   c                N   / nUS   n[         (       d  UR                  S5        [        R                  " U5      S   U R                  ;   a  UR                  S5        U R
                  R                  (       d  UR                  S5        U(       dk   U R                  U5      n[         R                  R                  U5       nUR                  nS S S 5        U R
                  R                  R                  U5        U(       aW  SSU S3/UQnU R"                  R                  U R$                  R&                  R)                  S	R+                  U5      US
95        g W$ ! , (       d  f       N= f! [        [        [        4 a$  nUR                  [!        U5      5         S nANS nAff = f)Nr   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)r   r   	mimetypes
guess_type
videotypesrd   file_insertion_enableduri2pathImageopensizerecord_dependenciesadd
ValueErrorOSErrorUnicodeEncodeErrorr|   r   rU   r   warningrl   )	rN   r   reading_problemsr   	imagepathimgr   errmsgs	            rP   r   !HTMLTranslator.read_size_with_PIL  s^   
 5ks##$FG$Q'4??:##$CD}}33##$FGA MM#.	YY^^I.#!hhG /
 1155i@(.se26&$&C MM  !7!7!?!?%+[[%5 "@ "G H /.);< 2 ''C112s0   0E+  EE+ 
E($E+ +F$ FF$c           	        SSS.nUR                  5        H  u  pV[        R                  " XV5        M      [        R                  " U5      nSU;   a  0 n	UR                  SS	5      R                  S
5      n
US   R                  S
5      nX-    HN  nUR                  5       (       d  M  UR                  S5      u  p]nUR                  5       XR                  5       '   MP     UR                  SSR                  S U	R                  5        5       5      5        S H  nX;   d  M
  UR                  XU   5        M      SU;   d
  US   (       a[  UR                  SS	5      R                  5       nXS   UR                  S/ 5      -   -  nUR                  SSR                  U5      5        SU;   aE  UR!                  SU5      c2  [        R"                  " S5      nUS   Ul        UR'                  SU5        [        R(                  " USS9$ ! [        R                   aR  nU R
                  R                  U R                  R                  R                  SUS    SU 3US95        Us S nA$ S nAff = f)Nzhttp://www.w3.org/2000/svgzhttp://www.w3.org/1999/xlink)r1   xlinkzCannot parse SVG image "r   ":
  r  r   r1   r   :r   c              3  6   #    U  H  u  pU S U S3v   M     g7f)r   r   N ).0kvs      rP   	<genexpr>-HTMLTranslator.prepare_svg.<locals>.<genexpr>  s&      &L2J$! *+2aSl2Js   r   classesclassaltr>   r   r   rb   )r   ETregister_namespace
fromstring
ParseErrorr   r   rU   r   errorr   r   strip	partitionsetrl   findElementr   r   tostring)rN   coder   attssvg_nskeyr   svgr  declaration_dictsvg_declarationsnode_declarationsdeclaration_r   r$  	svg_titles                    rP   prepare_svgHTMLTranslator.prepare_svg  s1   
 39; !,,.JC!!#- )	--%C d?!"www399#> $W 3 3C 8/C"((** + 5 5c :05 -	  D
 GGGSXX &L2B2H2H2J&L L M,I 		?3 - Ygggr*002GI)R)@@@GGGGSXXg./D=SXXgv6>

7+I!%[INJJq)${{333; }} 	MM  !7!7!=!=*4;-vcUC "> "  ! K		s   H I*AI%I*%I*c                B   Uc  [        U R                  R                  5      nU R                  R                  (       aM   [	        U5      R                  SS9nU R                  R                  R                  U5        U R                  U-  $ U(       a+  [        R                  " U R                  R                  U5      nU R                   U R#                  U5      -  $ ! [         a9  nSU 3nU R                  R                  R                  U5        SU-  s SnA$ SnAff = f)z8Return code to reference or embed stylesheet file `path`Nra   rb   zCannot embed stylesheet: z<--- %s --->
)boolrd   r   r"   r   re   r  r  r  rU   r   r+  embedded_stylesheetr	   relative_pathoutput_pathstylesheet_linkr   )rN   r   adjust_pathcontentr  r  s         rP   r   HTMLTranslator.stylesheet_call  s    t}}<<=K==))<t*...@ 1155d;++g55&&t}}'@'@$GD##dkk$&777  .1#7&&,,S1'#--.s   C 
D%.DDDc           
     |   UR                  5       n/ n0 nUR                  5        H  u  pXUR                  5       '   M     UR                  S/ 5      n
/ nUR                  S/ 5      UR                  SS5      R	                  5       -    Hk  nUR                  S5      (       a#  UR                  " UR                  S5      5        M<  UR                  5       (       d  MS  X;  d  MZ  U
R                  U5        Mm     U(       a  US   XpR                  '   Sn[        U[        R                  5      (       a  U
 Vs/ s H  oU;  d  M
  UPM     n
nU
(       a  SR                  U
5      US'   SU;  d   eUR                  S	/ 5      nUR                  UR                  S	/ 5      5        U(       aw  US   US'   US
S  Hf  nU(       d>  [        U[        R                  [        R                   [        R                  45      (       a  UR                  SU-  5        M^  USU-  -  nMh     [#        UR                  5       5      nU/nU H  u  pU	c   e[        U	[$        5      (       ab  U	 Vs/ s H  n['        U5      PM     nnUR                  UR                  5       < SU R)                  SR                  U5      5      < S35        M  UR                  UR                  5       < SU R)                  ['        U	5      5      < S35        M     U(       a  SnOSnSR                  U5       SSR                  U5       U SU 3$ s  snf s  snf )zy
Construct and return a start tag given a node (id & class attributes
are extracted), tag name, and optional attributes.
r$  r%  r1   z	language-r   )colwidths-autocolwidths-givencolwidths-gridr   idids   Nz<span id="%s"></span>z="r   z /r   r   )r   r   popr   r   
startswithr   removeprefixr,  lang_attributer   r   tablerl   extend
Sequentialr;   sortedlistr|   r   )rN   r   r   suffixempty
attributesprefixr3  namer   r$  r   clsinternalrM  rL  attlistrv   r!  valuesinfixs                        rP   starttagHTMLTranslator.starttag  s   
 --/'--/MT!& 0((9b)	88Ir*TXXgr-B-H-H-JJC~~k**  !1!1+!>?!3s#	 K
 (1!D$$%JdEKK((&-EgsH1DsgGEHHW-DM4hhub!

488E2&'QDJ!"g Jte.>.>.3mm.3kk.; < < MM"9B">? 5::F  &	"KD $$$%&&*/0%Q#a&%0$**,*.++chhv6F*GI J $**,*.++c%j*AC D # EE''&/"!CHHUO#4UG1VHEEQ F< 1s   3	L4 L4L9c                .    U R                   " XU4SS0UD6$ )z1Construct and return an XML-compatible empty tag.rY  T)rb  )rN   r   r   rX  rZ  s        rP   emptytagHTMLTranslator.emptytaga  s    }}TFM$M*MMrR   c                T   [        UR                  [        R                  [        R                  45      (       a  g U R
                  (       a]  U R
                  R                  S5      nU R                  R                  US   ::  a  UR                  U 5        U R
                  (       a  M\  g g )Nr   level)
r   parentr   system_messageentryr   rO  rd   report_levelrW   )rN   r   messages      rP   report_messagesHTMLTranslator.report_messagese  sp    dkkE$8$8%++#FGGmmmm''*G}}))WW-==!!$' mmmrR   c                    U Vs/ s H&  n[        U[        R                  5      (       a  M$  UPM(     nn XS   nUS   R	                  U5        gs  snf ! [         a     gf = f)zr
Set class `class_` on the visible child no. index of `node`.
Do nothing if node has fewer children than `index`.
Nr$  )r   r   	Invisible
IndexErrorr   )rN   r   class_indexnchildrenchilds          rP   set_class_on_child!HTMLTranslator.set_class_on_childm  s`    
  $Jt!:a+IAtJ	OE 	i' K  		s   #AAA 
A A c                    UR                  5       nU R                  U5      nU R                  (       a,  U R                  R                  (       a  U R                  U5      nU R                  R                  U5        g rJ   )r   r   r   rd   r   r   r<   r   )rN   r   r   r   s       rP   
visit_TextHTMLTranslator.visit_Texty  sP    {{}++d#>>dmmAA&&w/G		!rR   c                    g rJ   r  rN   r   s     rP   depart_TextHTMLTranslator.depart_Text      rR   c                \    U R                   R                  U R                  USS5      5        g )Nabbrr1   r<   r   rb  r~  s     rP   visit_abbreviation!HTMLTranslator.visit_abbreviation  s!    		tVR89rR   c                :    U R                   R                  S5        g )Nz</abbr>r<   r   r~  s     rP   depart_abbreviation"HTMLTranslator.depart_abbreviation      		#rR   c                \    U R                   R                  U R                  USS5      5        g )Nacronymr1   r  r~  s     rP   visit_acronymHTMLTranslator.visit_acronym  s!    		tY;<rR   c                :    U R                   R                  S5        g )Nz
</acronym>r  r~  s     rP   depart_acronymHTMLTranslator.depart_acronym      		&rR   c           	     |    U R                  USSS9  U R                  R                  U R                  USSSS95        g )NaddressFrB   prer1   rX  r   )visit_docinfo_itemr<   r   rb  r~  s     rP   visit_addressHTMLTranslator.visit_address  sD    ie<		tU.0	 ' C 	DrR   c                Z    U R                   R                  S5        U R                  5         g Nz
</pre>
)r<   r   depart_docinfo_itemr~  s     rP   depart_addressHTMLTranslator.depart_address  s     		&  "rR   c                Z    U R                   R                  U R                  USS/S95        g )Naside
admonitionr$  r  r~  s     rP   visit_admonitionHTMLTranslator.visit_admonition  s%    		tW|nMNrR   c                :    U R                   R                  S5        g N	</aside>
r  r~  s     rP   depart_admonition HTMLTranslator.depart_admonition  r  rR   )u   —r1   )())r1   r1   r*   c           	         U R                   U R                  R                     u  p#U R                  R	                  U5        U R
                  R	                  U R                  USUSS95        g )Npattributionr   )attribution_formatsrd   r  r   r   r<   rb  )rN   r   r[  rX  s       rP   visit_attribution HTMLTranslator.visit_attribution  sW    11$--2K2KLF#		MM$V=MA	CrR   c                p    U R                   R                  U R                  R                  5       S-   5        g N</p>
r<   r   r   rO  r~  s     rP   depart_attribution!HTMLTranslator.depart_attribution  s&    		))+h67rR   c                    [        UR                  [        R                  5      (       d  U R	                  US5        U R
                  R                  S5        g )Nauthorz<p>)r   ri  r   authorsr  r<   r   r~  s     rP   visit_authorHTMLTranslator.visit_author  s9    $++u}}55##D(3		rR   c                    U R                   R                  S5        [        UR                  [        R
                  5      (       a  U R                   R                  S5        g U R                  5         g )N</p>rj   )r<   r   r   ri  r   r  r  r~  s     rP   depart_authorHTMLTranslator.depart_author  sG    		 dkk5==11IIT"$$&rR   c                (    U R                  US5        g )Nr  r  r~  s     rP   visit_authorsHTMLTranslator.visit_authors  s    i0rR   c                $    U R                  5         g rJ   r  r~  s     rP   depart_authorsHTMLTranslator.depart_authors        "rR   c                Z    U R                   R                  U R                  US5      5        g )N
blockquoter  r~  s     rP   visit_block_quote HTMLTranslator.visit_block_quote  s    		t\:;rR   c                :    U R                   R                  S5        g )Nz</blockquote>
r  r~  s     rP   depart_block_quote!HTMLTranslator.depart_block_quote  s    		*+rR   c                    [        U R                  5      n UR                  U5        g! [        R                   a     gf = f)z7Check for a simple list that can be rendered compactly.TF)SimpleListCheckerrU   walkr   	NodeFound)rN   r   rV   s      rP   check_simple_list HTMLTranslator.check_simple_list  s>    #DMM2	IIg   		s   ) A A c                   SUS   ;   a  gSUS   ;   a  g[        U[        R                  [        R                  45      (       a  U R                  R
                  (       d  g[        U[        R                  [        R                  45      (       a  U R                  R                  (       d  gSUR                  S   ;   a  gU R                  U5      $ )Ncompactr$  Tr  Fcontents)r   r   
field_listdefinition_listrd   r0   enumerated_listbullet_listr/   ri  r  r~  s     rP   is_compactableHTMLTranslator.is_compactable  s    Y'T)_$te..0E0EFGGMM55te33U5F5FGHHMM//Y//%%d++rR   c                P   0 nU R                   nU R                  R                  U R                   U R                  45        S U l        U R	                  U5      U l         U R                   (       a  U(       d  SUS'   U R
                  R                  U R                  " US40 UD65        g )Nsimpler%  ul)r   r   r   r   r  r<   rb  )rN   r   r3  old_compact_simples       rP   visit_bullet_list HTMLTranslator.visit_bullet_list  s    !00T00$..AB"11$7'9$DM		tT:T:;rR   c                    U R                   R                  5       u  U l        U l        U R                  R                  S5        g )Nz</ul>
)r   rO  r   r   r<   r   r~  s     rP   depart_bullet_list!HTMLTranslator.depart_bullet_list  s0    .2ll.>.>.@+T^		#rR   c           	     Z    U R                   R                  U R                  USSSS95        g )Nr  r1   captionr  r  r~  s     rP   visit_captionHTMLTranslator.visit_caption  s%    		tS"IFGrR   c                :    U R                   R                  S5        g r  r  r~  s     rP   depart_captionHTMLTranslator.depart_caption      		"rR   c           	         [        UR                  5       [        U5      5      (       d  U R                  R	                  S5        U R                  R	                  U R                  USUR                  /SS95        g )Nz(<div role="list" class="citation-list">
r   zdoc-biblioentryr$  role)r   previous_siblingtyper<   r   rb  r   r~  s     rP   visit_citationHTMLTranslator.visit_citation  sc     $//14:>>IIHI		tUT\\N,= ' ? 	@rR   c                    U R                   R                  S5        [        UR                  SSS9[	        U5      5      (       d  U R                   R                  S5        g g )N</div>
FTdescendsiblingsr<   r   r   	next_noder  r~  s     rP   depart_citationHTMLTranslator.depart_citation  sN    		$$...Ft*& &IIZ(&rR   c                    SnSU;   a  X!S   -  nO$SU;   a  X R                   R                  US      -  nU R                  R                  U R	                  USSUS/SS95        g )	N#refidrefnamea[zcitation-referencezdoc-biblioref)rX  hrefr$  r  )rU   nameidsr<   r   rb  )rN   r   r
  s      rP   visit_citation_reference'HTMLTranslator.visit_citation_reference  sr    d?M!D$MM))$y/::D 			tS40D/E,; ' = 	>rR   c                :    U R                   R                  S5        g )Nz]</a>r  r~  s     rP   depart_citation_reference(HTMLTranslator.depart_citation_reference      		!rR   c           	     Z    U R                   R                  U R                  USSSS95        g )Nspanr1   
classifierr  r  r~  s     rP   visit_classifierHTMLTranslator.visit_classifier  s%    		tVR|LMrR   c                \    U R                   R                  S5        U R                  U5        g N</span>)r<   r   depart_termr~  s     rP   depart_classifier HTMLTranslator.depart_classifier!  s"    		#rR   c                    U R                   R                  U5        UR                  R                  R                  UR                  R                  S5      5        g )Nstub)r   r   ri  stubsrZ  r   r~  s     rP   visit_colspecHTMLTranslator.visit_colspec%  s;    T"  !4!4V!<=rR   c           
     v   [        UR                  SSS9[        R                  5      (       a  g SUR                  R                  S   ;   d7  SU R
                  R                  ;  a  SUR                  R                  S   ;  a  g U R                  R                  U R                  US5      5        [        S	 U R                   5       5      nU R                   HD  nUR                  5       U-  nU R                  R                  U R                  US
SUS 3S95        MF     U R                  R                  S5        g )NFTr  rI  r$  rK  rJ  colgroupc              3  @   #    U  H  oR                  5       v   M     g 7frJ   )	propwidth)r  r   s     rP   r"  0HTMLTranslator.depart_colspec.<locals>.<genexpr>4  s     E}t..**}s   colwidth: z.1%)r   z</colgroup>
)r   r  r   colspecri  rd   table_styler<   r   rb  sumr   r%  re  )rN   r   total_widthcolwidths       rP   depart_colspecHTMLTranslator.depart_colspec*  s   dnnUTnBmm% %t{{11)<<DMM$=$==!););I)FF		tZ89Et}}EEMMD~~'+5HIIT]]43:8C.1I + K L " 			)rR   z-(?=-)c                    U R                   R                  SU" SUR                  5       5      -  5        [        R                  e)z%Escape double-dashes in comment text.z<!-- %s -->
z- )r<   r   r   r   SkipNode)rN   r   r   s      rP   visit_commentHTMLTranslator.visit_comment;  s2     			3tT[[]+CCDnnrR   c                X    U R                   R                  U R                  USSS95        g )Nr   compoundr  r  r~  s     rP   visit_compoundHTMLTranslator.visit_compoundB  s#    		tU*EFrR   c                :    U R                   R                  S5        g Nr  r  r~  s     rP   depart_compoundHTMLTranslator.depart_compoundE      		$rR   c                X    U R                   R                  U R                  USSS95        g )Nr   zdocutils containerr  r  r~  s     rP   visit_containerHTMLTranslator.visit_containerH  s-    		tU-A ' C 	DrR   c                :    U R                   R                  S5        g r9  r  r~  s     rP   depart_containerHTMLTranslator.depart_containerL  r<  rR   c                &    U R                  USSS9  g )NcontactFr  r  r~  s     rP   visit_contactHTMLTranslator.visit_contactO      ie<rR   c                $    U R                  5         g rJ   r  r~  s     rP   depart_contactHTMLTranslator.depart_contactR  r  rR   c                (    U R                  US5        g )N	copyrightr  r~  s     rP   visit_copyrightHTMLTranslator.visit_copyrightU  s    k2rR   c                $    U R                  5         g rJ   r  r~  s     rP   depart_copyrightHTMLTranslator.depart_copyrightX  r  rR   c                (    U R                  US5        g )Ndater  r~  s     rP   
visit_dateHTMLTranslator.visit_date[  s    f-rR   c                $    U R                  5         g rJ   r  r~  s     rP   depart_dateHTMLTranslator.depart_date^  r  rR   c                    g rJ   r  r~  s     rP   visit_decorationHTMLTranslator.visit_decorationa  r  rR   c                    g rJ   r  r~  s     rP   depart_decoration HTMLTranslator.depart_decorationd  r  rR   c                    SUR                   R                   S   ;  a-  U R                  R                  U R                  USS5      5        g g )Ndetailsr$  ddr1   ri  r<   r   rb  r~  s     rP   visit_definitionHTMLTranslator.visit_definitiong  s=    DKK..y99IIT]]4r:; :rR   c                v    SUR                   R                   S   ;  a  U R                  R                  S5        g g )Nr`  r$  </dd>
ri  r<   r   r~  s     rP   depart_definition HTMLTranslator.depart_definitionk  s0    DKK..y99IIY' :rR   c                    SUS   ;   a,  U R                   R                  U R                  US5      5        g U R                  U5      (       a  S/O/ nU R                   R                  U R                  USUS95        g )Nr`  r$  r   r  dlr  )r<   r   rb  r  rN   r   r$  s      rP   visit_definition_list$HTMLTranslator.visit_definition_listo  se    Y'IIT]]478$($7$7$=$=xj2GIIT]]4w]GHrR   c                    SUS   ;   a  U R                   R                  S5        g U R                   R                  S5        g )Nr`  r$  r  </dl>
r  r~  s     rP   depart_definition_list%HTMLTranslator.depart_definition_listv  s2    Y'IIZ(IIY'rR   c                    SUR                   S   ;   aH  0 nSUR                   S   ;   a  SUS'   U R                  R                  U R                  " US40 UD65        g g )Nr`  r$  r  rb  rN   r   r3  s      rP   visit_definition_list_item)HTMLTranslator.visit_definition_list_item}  sY    I..DY//%VIIT]]4CdCD	 /rR   c                b    SUR                   S   ;   a  U R                  R                  S5        g g )Nr`  r$  z</details>
rg  r~  s     rP   depart_definition_list_item*HTMLTranslator.depart_definition_list_item  s*    I..II^, /rR   c                \    U R                   R                  U R                  USS5      5        g )Nra  r1   r  r~  s     rP   visit_description HTMLTranslator.visit_description  !    		tT267rR   c                :    U R                   R                  S5        g Nrf  r  r~  s     rP   depart_description!HTMLTranslator.depart_description  r  rR   c                   U R                   R                  [        U R                  5      5        S/nU R	                  U5      (       a  UR                  S5        U R                  R                  U R                  USUS95        g )Nr;   r  rk  r  )r   r   r   r<   r  rb  rl  s      rP   visit_docinfoHTMLTranslator.visit_docinfo  sa    C		N++t$$NN8$		tT7CDrR   c                    U R                   R                  S5        U R                  R                  5       nU R                   US  U l        / U l         g Nrp  )r<   r   r   rO  r;   )rN   r   starts      rP   depart_docinfoHTMLTranslator.depart_docinfo  s?    		#  "yy(	rR   c           	     X   U(       a?  U R                   R                  SU SU R                  UR                  5       5       S35        U R                  R                  SU SU R
                  R                  U    S35        U R                  R                  U R                  USSUS	95        g )
Nz<meta name="z" content="z" />
z<dt class="">"<span class="colon">:</span></dt>
ra  r1   r  )rB   r   r   r   r<   r   labelsrb  )rN   r   r\  rB   s       rP   r  !HTMLTranslator.visit_docinfo_item  s    II|D6 2))-T[[])C(DFL M		;tfBt}}/C/CD/I.J>? 	@		tT2TBCrR   c                :    U R                   R                  S5        g r  r  r   s    rP   r  "HTMLTranslator.depart_docinfo_item  r  rR   c           	     ^    U R                   R                  U R                  USS/ SQS95        g )Nr  r1   )r2  pythondoctestrX  r$  r  r~  s     rP   visit_doctest_block"HTMLTranslator.visit_doctest_block  s/    		tU2/L ' N 	OrR   c                :    U R                   R                  S5        g r  r  r~  s     rP   depart_doctest_block#HTMLTranslator.depart_doctest_block  r  rR   c                   UR                  S5      =(       d@    [        R                  R                  UR                  S5      =(       d    S5      =(       d    SnU R                  R                  SU R                  U5       S35        g )Nr>   sourcer1   zuntitled Docutils documentz<title>z	</title>
)r   osr   basenamer8   r   r   )rN   r   r>   s      rP   visit_documentHTMLTranslator.visit_document  sg    '" 1GG$$TXXh%7%=2>10 	 			74;;u#5"6jABrR   c                   U R                   R                  U R                  U R                  SU R                  R
                  0-  /5        U R                  R                  U R                  5        U R                  S S  U R                  -   U l	        SSR                  U R                  5      ;   a  U R                  R                  S5        U R                  (       a[  U R                  S:X  a&  U R                  R                  U R                  5        O%U R                  R                  U R                  5        U R                  R                  (       aQ  U R                  R                  R                  5       S:w  a)  U R                   R                  U R                  SS  5        O%U R                   R                  U R                  5        U R"                  R                  U R$                  " U40 U R&                  D65        U R(                  R+                  SS	U R&                  S
    S35        U R,                  R                  U R.                  5        U R0                  R                  U R"                  SS  U R2                  -   U R4                  -   U R.                  -   U R(                  S S -   5        U R6                  (       a   S[9        U R6                  5       35       eg )Nr   zname="dcterms.r1   z=<link rel="schema.dcterms" href="http://purl.org/dc/terms/"/>mathjaxr   rN  r   </r   z>
zlen(context) = )r7   rT  doctypehead_prefix_templaterd   r   rD   r   rB   r8   rl   r   r   r   rn   r   rE   r9   rb  documenttag_argsr=   r   rC   r<   rH   r:   r;   r   r   r~  s     rP   depart_documentHTMLTranslator.depart_document  s.   !%!:!:"($--*E*E!F"G!H 	I 	-IIaL499,	rwwtyy11II C D9,		  !1!12&&t'7'78MM))--335BNN!!$))AB-0NN!!$)),d Ld6K6K LMR(=(=i(H'I#MNTYY'd..qr2T5J5JJ $-/3yy9 $ 0 0" 56 	7 <<F?3t||3D2E!FF<rR   c                \    U R                   R                  U R                  USS5      5        g )Nemr1   r  r~  s     rP   visit_emphasisHTMLTranslator.visit_emphasis  r}  rR   c                :    U R                   R                  S5        g )Nz</em>r  r~  s     rP   depart_emphasisHTMLTranslator.depart_emphasis  r  rR   c                   S/ 0n[        UR                  R                  [        R                  5      (       a  US   R	                  S5        UR                  R                  R                  R
                  UR                  R                     (       a  US   R	                  S5        US   (       a  SnOSnUR                  =R                  S-  sl        SU;   a  US   S-   US'   S	U;   a-  US	   S-   US
'   UR                  =R                  US	   -  sl        U R                  R	                  U R                  " XS40 UD65        U R                  R	                  SUR                  5       -  5        g )Nr$  r8   r  thtdrN  morerowsrowspanmorecolscolspanr1   </%s>
)r   ri  r   theadr   r  columnr<   rb  r   r   )rN   r   r3  r   s       rP   visit_entryHTMLTranslator.visit_entry  s'   2dkk((%++66O""6*;;$$**4;;+=+=>O""6*	?GGa":.2DO":.2DOKK$z"22		tbADABI78rR   c                j    U R                   R                  U R                  R                  5       5        g rJ   r  r~  s     rP   depart_entryHTMLTranslator.depart_entry  !    		))+,rR   c                   S/ 0nSU;   a  US   US'   SU;   a  US   R                  US   5        U R                  U5      (       a  US   R                  S5        U R                  R                  U R                  " US40 UD65        g )Nr$  r  enumtyper  ol)r   r  r<   rb  rt  s      rP   visit_enumerated_list$HTMLTranslator.visit_enumerated_list  s    2d? MDMO""4
#34t$$O""8,		tT:T:;rR   c                :    U R                   R                  S5        g )Nz</ol>
r  r~  s     rP   depart_enumerated_list%HTMLTranslator.depart_enumerated_list  r  rR   c                   0 nUR                  S/ 5      n[        U5       HR  u  pEUR                  S5      (       d  M   [        UR	                  S5      S5      nSU-  US'   UR                  U5          O   UR                  S5        U R                  U5      (       a  UR                  S5        U R                  R                  U R                  " US40 UD65        g ! [
         a       Mt  f = f)	Nr$  zfield-indent-pxz--field-indent: %s;r   z
field-listr  rk  )
setdefault	enumeraterP  r   rQ  r  rO  r   r  r<   rb  )rN   r   r3  r$  ir]  indent_lengths          rP   visit_field_listHTMLTranslator.visit_field_list  s    //)R0(FA~~o..$D((94%AM !6 EWA ) 	|$t$$NN8$		tT:T:; " s   C
C+*C+c                :    U R                   R                  S5        g r  r  r~  s     rP   depart_field_list HTMLTranslator.depart_field_list  r  rR   c                    U H;  n[        U[        R                  5      (       d  M$  US   R                  US   5        M=     g )NrM  )r   r   
field_namerT  )rN   r   rw  s      rP   visit_fieldHTMLTranslator.visit_field  s7     E%!1!122e##DK0 rR   c                    g rJ   r  r~  s     rP   depart_fieldHTMLTranslator.depart_field  r  rR   c           	     t    U R                   R                  U R                  USSUR                  S   S95        g )Ndtr1   r$  r  )r<   r   rb  ri  r~  s     rP   visit_field_nameHTMLTranslator.visit_field_name  s8    		tT2/3{{9/E ' G 	HrR   c                :    U R                   R                  S5        g )Nr  r  r~  s     rP   depart_field_name HTMLTranslator.depart_field_name  s    		>?rR   c           	         U R                   R                  U R                  USSUR                  S   S95        UR                  (       d  U R                   R                  S5        g g )Nra  r1   r$  r  z<p></p>)r<   r   rb  ri  rv  r~  s     rP   visit_field_bodyHTMLTranslator.visit_field_body   sX    		tT2/3{{9/E ' G 	H }}IIY' rR   c                :    U R                   R                  S5        g r  r  r~  s     rP   depart_field_body HTMLTranslator.depart_field_body'  r  rR   c                    SS0nUR                  S5      (       a  SUS   -  US'   UR                  S5      (       a  US==   SUS   -   -  ss'   U R                  R                  U R                  " US40 UD65        g )	Nr%  figurer   z	width: %sr   alignz align-r   )r   r<   r   rb  rt  s      rP   visit_figureHTMLTranslator.visit_figure*  su    "88G'$w-7DM88GMYg66M		tU;d;<rR   c                :    U R                   R                  S5        g r9  r  r~  s     rP   depart_figureHTMLTranslator.depart_figure2  r<  rR   c                `    U R                   R                  [        U R                  5      5        g rJ   r   r   r   r<   r~  s     rP   visit_footerHTMLTranslator.visit_footer5      C		N+rR   c                ,   U R                   R                  5       nU R                  USSS9S/nUR                  U R                  US  5        UR                  S5        U R                  R                  U5        X0R                  S S& U R                  US 2	 g )Nr   rA   r  z<hr class="footer" />
z
</div>
r   )r   rO  rb  rT  r<   r   rA   r=   )rN   r   r  rA   s       rP   depart_footerHTMLTranslator.depart_footer8  s      "--e8-<+-dii'(l#6"%!IIefrR   c           	     ,   U R                   R                  n[        UR                  5       [	        U5      5      (       d  U R
                  R                  SU S35        U R
                  R                  U R                  USUR                  U/SS95        g )Nz<aside class="footnote-list z">
r  zdoc-footnoter  )	rd   footnote_referencesr   r  r  r<   r   rb  r   )rN   r   label_styles      rP   visit_footnoteHTMLTranslator.visit_footnoteB  s~     mm77$//14:>>II;K=MN		tW04k/J,: ' < 	=rR   c                    U R                   R                  S5        [        UR                  SSS9[	        U5      5      (       d  U R                   R                  S5        g g )Nr  FTr  r   r~  s     rP   depart_footnoteHTMLTranslator.depart_footnoteM  sN    		&$...Ft*& &II\*&rR   c                    SUS   -   nU R                   R                  /nU R                  R                  U R	                  USSUSUS95        U R                  R                  S5        g )Nr  r  r  r1   zdoc-noteref)rX  r$  r  r
  !<span class="fn-bracket">[</span>)rd   r  r<   r   rb  )rN   r   r
  r$  s       rP   visit_footnote_reference'HTMLTranslator.visit_footnote_referenceS  sf    T']"==445		tSW,9 ' F 	G		<=rR   c                p    U R                   R                  S5        U R                   R                  S5        g )Nz!<span class="fn-bracket">]</span></a>r  r~  s     rP   depart_footnote_reference(HTMLTranslator.depart_footnote_referenceZ  s'    		<=		 rR   c                    SUS   ;   a\  UR                  5       R                  S5      nU R                  R                  SU R	                  U5      -  5        [
        R                  eg )Nsectnumr$      z <span class="sectnum">%s </span>)r   rm   r<   r   r   r   r1  )rN   r   r  s      rP   visit_generatedHTMLTranslator.visit_generated_  s[    Y'kkm**40GII?#{{734 5 ..  (rR   c                    g rJ   r  r~  s     rP   depart_generatedHTMLTranslator.depart_generatedh  r  rR   c                `    U R                   R                  [        U R                  5      5        g rJ   r  r~  s     rP   visit_headerHTMLTranslator.visit_headerk  r  rR   c                D   U R                   R                  5       nU R                  USSS9/nUR                  U R                  US  5        UR                  S5        U R                  R                  U5        U R                  R                  U5        U R                  US 2	 g )Nr   r@   r  z
<hr class="header"/>
</div>
)r   rO  rb  rT  r<   r   r9   r@   )rN   r   r  r@   s       rP   depart_headerHTMLTranslator.depart_headern  s      "--e8-<=dii'(89'6"IIefrR   c           	     H   US   nUR                  SU5      n[        R                  " U5      S   nSnU R                  U5      nSU;   a  SUS    3/US'   X@R                  ;   a  SOU R
                  nUR                  S	U5      nUS
:X  a  S
US	'   OUS:X  a   U R                  U5      nUS:X  a  [        U5      R                  SS9n	O[        U5      R                  5       n	U R                  R                  R                  U5        US:X  a  U R                  XU5      nO-[        R                  " U	5      R!                  5       n
SU SU
 3n [3        UR4                  [6        R8                  5      (       a\  [3        UR4                  [6        R:                  5      (       a6  [3        UR4                  R4                  [6        R8                  5      (       d  SnOSnX@R                  ;   aS  X6S'   SUS   ;   a  US   R=                  S5        SUS'   U R>                  " USU4SU0UD6SUS    SU SU 3-   SU 3-   nOQUS:X  a$  XFS'   U R>                  " USS4S U0UD6U S!U 3-   nO'U(       a  X\-  nOX6S'   U R@                  " US"U4SU0UD6nU RB                  R+                  U5        U(       a  U RE                  U5        g g ! ["        [$        [&        4 aN  nU R(                  R+                  U R,                  R.                  R1                  SU SU 3US95         S nAGNS nAff = f)#Nr   r&  r   r1   r  zalign-r$  r   loadinglazyr   zimage/svg+xmlra   rb   zdata:z;base64,zCannot embed image "r  r  rj   r>   controlsvideosrcz	<a href="r  r  z</video>zapplication/x-shockwave-flashr  objectdataz	</object>r  )#r   r  r  r   r  r   r	  r   re   
read_bytesrd   r  r  r=  base64	b64encodedecoder  r  UnicodeErrorr   r   rU   r   r+  r   ri  r   TextElement	referenceremoverb  re  r<   rn  )rN   r   r   r&  mimetypeelementr3  r  r  	imagedatadata64r  rX  s                rP   visit_imageHTMLTranslator.visit_imagew  s   5khhuc"'',Q/t$d?!'W78DO %7&T=O=O((9g.f$DO= MM#.	. $Y 9 97 9 KI $Y : : <I 1155i@."..yEG#--i8??AF!(8F8<C 4;;(9(9::$++u77t{{1153D3DEEFF&MT)_,Y&&z2#-Z }}T7FLLtL$T%[MC5VHEF#F8,-G 88#L}}T8RJcJTJ5	&23GGKmmD%ISIDIG		!  & O 6 N$$T]]%;%;%A%A*3%vcU;t &B &M N NNs   A	J> >L!ALL!c                    g rJ   r  r~  s     rP   depart_imageHTMLTranslator.depart_image  r  rR   c                \    U R                   R                  U R                  USS5      5        g )Nr  r1   r  r~  s     rP   visit_inlineHTMLTranslator.visit_inline  !    		tVR89rR   c                :    U R                   R                  S5        g r  r  r~  s     rP   depart_inlineHTMLTranslator.depart_inline  r  rR   c                B   U R                   R                  S5        U R                   R                  S5        U R                  R                  (       aN  UR                  R                  S/ 5      n[        U5      S:X  a"  U R                   R                  SUS   -  5        g g g )Nz<span class="label">r   backrefsrN  z"<a role="doc-backlink" href="#%s">r   )r<   r   rd   footnote_backlinksri  r   r   )rN   r   r6  s      rP   visit_labelHTMLTranslator.visit_label  s    		/0		<===++{{z26H8}!		   "02:1+"> ? " ,rR   c           	        / nU R                   R                  (       a  UR                  R                  SU5      n[	        U5      S:X  a  U R
                  R                  S5        U R
                  R                  S5        [	        U5      S:  aW  [        US5       VVs/ s H  u  p4SU< SU< S3PM     nnnU R
                  R                  SSR                  U5      -  5        g g s  snnf )	Nr6  rN  r  z)<span class="fn-bracket">]</span></span>
z<a role="doc-backlink" href="#r  z#<span class="backrefs">(%s)</span>
,)	rd   r7  ri  r   r   r<   r   r  rl   )rN   r   r6  r  ref	backlinkss         rP   depart_labelHTMLTranslator.depart_label  s    ==++{{z8<Hx=AIIV$		EFx=1)28Q)?A)?Xa HKAN)?  AIIC"xx	23 4 As   C&c                X    U R                   R                  U R                  USSS95        g )Nr   legendr  r  r~  s     rP   visit_legendHTMLTranslator.visit_legend  s#    		tU(CDrR   c                :    U R                   R                  S5        g r9  r  r~  s     rP   depart_legendHTMLTranslator.depart_legend  r<  rR   c           	         U R                   R                  U R                  USSSS95        [        U5      (       d  U R                   R                  S5        g g )Nr   r1   liner  z<br />)r<   r   rb  r   r~  s     rP   
visit_lineHTMLTranslator.visit_line  sE    		tU2VLM4yyIIX& rR   c                :    U R                   R                  S5        g r9  r  r~  s     rP   depart_lineHTMLTranslator.depart_line  r<  rR   c                X    U R                   R                  U R                  USSS95        g )Nr   z
line-blockr  r  r~  s     rP   visit_line_blockHTMLTranslator.visit_line_block  s#    		tU,GHrR   c                :    U R                   R                  S5        g r9  r  r~  s     rP   depart_line_block HTMLTranslator.depart_line_block  r<  rR   c                \    U R                   R                  U R                  USS5      5        g )Nlir1   r  r~  s     rP   visit_list_itemHTMLTranslator.visit_list_item  r}  rR   c                :    U R                   R                  S5        g )Nz</li>
r  r~  s     rP   depart_list_itemHTMLTranslator.depart_list_item  r  rR   c           	     T   US   nSU;   aM  UR                  UR                  S5      5        U R                  R                  U R	                  USS5      5        g U R                  R                  U R	                  USSSS95        UR                  5       n[        UR                  [        R                  5      (       d  UR                  SS5      nU R                  R                  U5       H  nUR                  5       (       aO  U R                  R                  U5      (       a/  U R                  R                  S	U R!                  U5      -  5        Mg  U R                  R                  U R!                  U5      5        M     U R                  R                  S
5        [        R"                  e)Nr$  r2  r1   r  zdocutils literalr  rj   r   z<span class="pre">%s</span>r  )rO  rt  r<   r   rb  r   r   ri  r   literal_blockr   words_and_spacesfindallr,  in_word_wrap_pointsearchr   r1  )rN   r   r$  r   tokens        rP   visit_literalHTMLTranslator.visit_literal  sC   y/WKKf-.IIT]]4<=		MM$2DME	G{{}$++u':':;;<<c*D **2248E{{}}!8!8!?!?!F!F		  !>#';;u#5"6 7 		  U!34 9 			#nnrR   c                :    U R                   R                  S5        g )N</code>r  r~  s     rP   depart_literalHTMLTranslator.depart_literal  s    		#rR   c           	         U R                   R                  U R                  USSSS95        SUS   ;   a  U R                   R                  S5        g g )Nr  r1   zliteral-blockr  r2  r$  z<code>r  r~  s     rP   visit_literal_block"HTMLTranslator.visit_literal_block  sH    		tUBoNOT)_$IIX& %rR   c                    SUS   ;   a  U R                   R                  S5        U R                   R                  S5        g )Nr2  r$  re  z</pre>
r  r~  s     rP   depart_literal_block#HTMLTranslator.depart_literal_block  s2    T)_$IIY'		$rR   r  formulattr  mathr1   problematic)r   latexr  mathmlrq  c           	        [        U[        R                  5      nU R                  nUR	                  5       R                  [        R                  5      nUS:X  a  U R                  (       ax  U R                  (       dg  U R                  R                  S5       Vs/ s H;  nU R                  [        R                  " XPR                  R                  5      SS9PM=     snU l	        U[         R"                  l        ['        XB5      n[         R                   " U5      nGOPUS:X  a  U R)                  U5      nGO7US:X  a  U R                  (       d  U R                  (       a  U R                  U l        O$U R,                  R.                  R1                  SUS9  S	U R*                  ;  a  U =R*                  S
-  sl        U R2                  U R*                  -  /U l	        U(       a  ['        XB5      nOSU S3nU R)                  U5      nOjUS:X  ad  SU R4                  ;   a  U R6                  U l        U R                  (       a  [;        [<        U R                  5      nO[>        R@                  n U" XBS9nU RL                  U   U   n	U(       a  SOSn
U	(       a:  U RN                  RI                  U RQ                  XU
U RL                  U   S   S95        U RN                  RS                  XJ/5        U	(       a!  U RN                  RI                  SU	 SU
 35        [        RT                  es  snf ! [B        [D        4 a  n[;        US/ 5      nU RF                  RI                  U R,                  R.                  R0                  " U/UQ7SU065        U R)                  UR	                  5       5      nU R                  RJ                  S::  a  SnOSn[        U[D        5      (       a  X0l         S nAGNvS nAff = f)Nr   r;  T)rE  rr  r  zANo MathJax URL specified, using local fallback (see config.html).r  ?z?config=TeX-AMS_CHTMLz\(z\)rs  zXHTML 1)as_blockr`  r  r   rq  rj   r1   r  r  r   )+r   r   
math_blockr   r   r^   r   uni2tex_tabler   r   r   r   r	   find_file_in_dirsrd   stylesheet_dirsr   DocumentParametersdisplaymoder   r   mathjax_urlrU   r   r  mathjax_scriptr  content_type_mathmlr   rZ   r   r   
tex2mathmlr   r  r   r   rl  	math_tagsr<   rb  rT  SkipChildren)rN   r   is_blockformat	math_codes	converterr  r`  tagrX  s              rP   
visit_mathHTMLTranslator.visit_math(  sO   dE$4$45!!KKM++K,E,EF	 V  )9)9 "..44S9$; : (()@)@==88*:GK ) M9$;  8@I((4&y;I!++I6IwI.Iy ##$$'+'8'8D$MM**22-8< 3 >
 d...$$(??$$($7$7$:J:J$J#K *9?	!)B/	I.IxDLL($($<$<!  #$5t7H7HI	(33	.%iC	 nnV$X.!rIIT]]4V37>>&3I!3L + N O		),-IIr#ax01   y$;J w' .!#y"5$$T]]%;%;%C%C&3!&3-1&3 4 KK6	==--2*F$Fc7++'-$.s    AL%L" "O&2B)O!!O&c                    g rJ   r  r~  s     rP   depart_mathHTMLTranslator.depart_matho  r  rR   c                &    U R                  U5        g rJ   )r  r~  s     rP   visit_math_blockHTMLTranslator.visit_math_blockr  s    rR   c                &    U R                  U5        g rJ   )rn  r~  s     rP   depart_math_block HTMLTranslator.depart_math_blocku  s    T"rR   c                z    U R                   R                  U R                  " US40 UR                  5       D65        g )NrB   )rB   r   re  non_default_attributesr~  s     rP   
visit_metaHTMLTranslator.visit_metaz  s7    		tV H)-)D)D)FH 	IrR   c                    g rJ   r  r~  s     rP   depart_metaHTMLTranslator.depart_meta~  r  rR   c           	     Z    U R                   R                  U R                  USSSS95        g )Nr  r1   optionr  r  r~  s     rP   visit_optionHTMLTranslator.visit_option  s%    		tVRxHIrR   c                    U R                   R                  S5        [        UR                  SSS9[        R
                  5      (       a  U R                   R                  S5        g g )Nr  FTr  , )r<   r   r   r  r   r  r~  s     rP   depart_optionHTMLTranslator.depart_option  sN    		#dnnUTnBll$ $IIT"$rR   c                    U R                   R                  UR                  SS5      5        U R                   R                  U R                  USS5      5        g )N	delimiterr   varr1   )r<   r   r   rb  r~  s     rP   visit_option_argument$HTMLTranslator.visit_option_argument  s>    		+s34		tUB78rR   c                :    U R                   R                  S5        g )Nz</var>r  r~  s     rP   depart_option_argument%HTMLTranslator.depart_option_argument  r  rR   c                    U R                   R                  U R                  USS5      5        U R                   R                  S5        g )Nr  r1   z<kbd>r  r~  s     rP   visit_option_group!HTMLTranslator.visit_option_group  s3    		tT267		!rR   c                :    U R                   R                  S5        g )Nz</kbd></dt>
r  r~  s     rP   depart_option_group"HTMLTranslator.depart_option_group  s    		)rR   c                X    U R                   R                  U R                  USSS95        g )Nrk  zoption-listr  r  r~  s     rP   visit_option_list HTMLTranslator.visit_option_list  s&    		MM$MM:	<rR   c                :    U R                   R                  S5        g r  r  r~  s     rP   depart_option_list!HTMLTranslator.depart_option_list  r  rR   c                    g rJ   r  r~  s     rP   visit_option_list_item%HTMLTranslator.visit_option_list_item  r  rR   c                    g rJ   r  r~  s     rP   depart_option_list_item&HTMLTranslator.depart_option_list_item  r  rR   c                    g rJ   r  r~  s     rP   visit_option_string"HTMLTranslator.visit_option_string  r  rR   c                    g rJ   r  r~  s     rP   depart_option_string#HTMLTranslator.depart_option_string  r  rR   c                (    U R                  US5        g )Norganizationr  r~  s     rP   visit_organization!HTMLTranslator.visit_organization  s    n5rR   c                $    U R                  5         g rJ   r  r~  s     rP   depart_organization"HTMLTranslator.depart_organization  r  rR   c                \    U R                   R                  U R                  USS5      5        g )Nr  r1   r  r~  s     rP   visit_paragraphHTMLTranslator.visit_paragraph  s!    		tS"56rR   c                8   U R                   R                  S5        [        UR                  [        R
                  [        R                  45      (       a  [        UR                  5      S:X  d-  U R                   R                  S5        U R                  U5        g g )Nr  rN  rj   )	r<   r   r   ri  r   	list_itemrk  r   rn  r~  s     rP   depart_paragraphHTMLTranslator.depart_paragraph  sh    		 4;;%++(FGG%*IIT"  & +rR   c           	     6   UR                  S5      (       a=  U R                  R                  SUS   -  5        U R                  R                  S5        OU R                  R                  S5        U R                  R                  U R	                  USSSS95        g )Nr  z<a href="#%s">r  r1   r  rq  r  )hasattrr<   r   r   rb  r~  s     rP   visit_problematic HTMLTranslator.visit_problematic  st    <<  II-W=>LL'LL#		tVR}MNrR   c                    U R                   R                  S5        U R                   R                  U R                  R                  5       5        g r  r  r~  s     rP   depart_problematic!HTMLTranslator.depart_problematic  s3    		#		))+,rR   c                   SUR                  SS5      R                  5       ;   a  [        UR                  [        R
                  5      (       a  SnOSnUS   (       a)  U R                  R                  U R                  XSS95        U R                  R                  UR                  5       5        US   (       a  U R                  R                  SU-  5        [        R                  e)	Nr   r  r1   r  r   r$  rX  z</%s>)r   r   r   ri  r   r"  r<   r   rb  r   r1  )rN   r   r   s      rP   	visit_rawHTMLTranslator.visit_raw  s    TXXh+1133$++u'8'899 I		  tR!HIIIT[[]+I		  7!23nnrR   c                   SS/0nSnSU;   ao  US   US'   U R                   R                  (       a7  US   R                  S5      (       a  U R                  US   5      US'   SU l        US   R                  S5        O,S	U;   d   S
5       eSUS	   -   US'   US   R                  S5        [        U5      S:X  a6  [        US   [        R                  5      (       a  US   R                  S5        [        UR                  [        R                  5      (       d  SnU R                  R                  U R                  " USU40 UD65        g )Nr$  r#  r1   refurir
  zmailto:Texternalr  z3References must have "refuri" or "refid" attribute.r  r^  rN  r   zimage-referencerj   r  )rd   r   rP  r   r   r   r   r   r   imageri  r"  r<   rb  )rN   r   r3  rX  s       rP   visit_referenceHTMLTranslator.visit_reference  s)   K=)t>DL33L++I66#00f>V!%O"":.d? IHI?g.DLO"":.t9>ja%++>>O""#45$++u'8'899F		tS&ADABrR   c                    U R                   R                  S5        [        UR                  [        R
                  5      (       d  U R                   R                  S5        SU l        g )Nr  rj   F)r<   r   r   ri  r   r"  r   r~  s     rP   depart_referenceHTMLTranslator.depart_reference  sD    		 $++u'8'899IIT"rR   c                &    U R                  USSS9  g )NrevisionFr  r  r~  s     rP   visit_revisionHTMLTranslator.visit_revision  s    ju=rR   c                $    U R                  5         g rJ   r  r~  s     rP   depart_revisionHTMLTranslator.depart_revision  r  rR   c                j    U R                   R                  U R                  USS5      5        SUl        g )Ntrr1   r   )r<   r   rb  r  r~  s     rP   	visit_rowHTMLTranslator.visit_row  s(    		tT267rR   c                :    U R                   R                  S5        g )Nz</tr>
r  r~  s     rP   
depart_rowHTMLTranslator.depart_row	  r  rR   c           	     Z    U R                   R                  U R                  USSSS95        g )Nr  r1   rubricr  r  r~  s     rP   visit_rubricHTMLTranslator.visit_rubric  s%    		tS"HEFrR   c                :    U R                   R                  S5        g r  r  r~  s     rP   depart_rubricHTMLTranslator.depart_rubric  r  rR   c                    U =R                   S-  sl         U R                  R                  U R                  USSS95        g )NrN  r   sectionr  )r   r<   r   rb  r~  s     rP   visit_sectionHTMLTranslator.visit_section  s7    a		MM$YM7	9rR   c                d    U =R                   S-  sl         U R                  R                  S5        g )NrN  r  )r   r<   r   r~  s     rP   depart_sectionHTMLTranslator.depart_section  s%    a		$rR   c                f    U R                   R                  U R                  USSS95        SU l        g )Nr   sidebarr  T)r<   r   rb  r   r~  s     rP   visit_sidebarHTMLTranslator.visit_sidebar  s-    		MM$YM7	9rR   c                H    U R                   R                  S5        SU l        g )Nr  F)r<   r   r   r~  s     rP   depart_sidebarHTMLTranslator.depart_sidebar!  s    		$rR   c                &    U R                  USSS9  g )NstatusFr  r  r~  s     rP   visit_statusHTMLTranslator.visit_status%  s    hU;rR   c                $    U R                  5         g rJ   r  r~  s     rP   depart_statusHTMLTranslator.depart_status(  r  rR   c                \    U R                   R                  U R                  USS5      5        g )Nstrongr1   r  r~  s     rP   visit_strongHTMLTranslator.visit_strong+  s!    		tXr:;rR   c                :    U R                   R                  S5        g )Nz	</strong>r  r~  s     rP   depart_strongHTMLTranslator.depart_strong.  s    		%rR   c                \    U R                   R                  U R                  USS5      5        g )Nr   r1   r  r~  s     rP   visit_subscriptHTMLTranslator.visit_subscript1  !    		tUB78rR   c                :    U R                   R                  S5        g )Nz</sub>r  r~  s     rP   depart_subscriptHTMLTranslator.depart_subscript4  r  rR   c                "    [         R                  e)zInternal only.r   r1  r~  s     rP   visit_substitution_definition,HTMLTranslator.visit_substitution_definition7      nnrR   c                &    U R                  U5        g rJ   )unimplemented_visitr~  s     rP   visit_substitution_reference+HTMLTranslator.visit_substitution_reference;  s      &rR   c           	        [        UR                  [        R                  5      (       a  S/nOv[        UR                  [        R                  5      (       a!  S/n[        U R                  5      S-   U l        O,[        UR                  [        R                  5      (       a  S/nU R                  R                  U R                  USSWS95        g )Nzsidebar-subtitler?   rN  zsection-subtitler  r1   r  )r   ri  r   r  rU   r   r<   r   r  r   rb  rl  s      rP   visit_subtitleHTMLTranslator.visit_subtitleB  s    dkk5==11)*GU^^44!lG%(^a%7D"U]]33)*G		tS"gFGrR   c                   U R                   R                  S5        [        UR                  [        R
                  5      (       a  U R                   U R                  S U l        SU l        U R                  R                  U R                   5        U R                  R                  U R                   5        U R                   S S 2	 g g )Nr  r  r   )r<   r   r   ri  r   rU   r   r?   r:   rT  rG   r~  s     rP   depart_subtitleHTMLTranslator.depart_subtitleL  s    		"dkk5>>22 IId&<&<R@DM%&D"!!((3%%dii0		! 3rR   c                \    U R                   R                  U R                  USS5      5        g )Nsupr1   r  r~  s     rP   visit_superscript HTMLTranslator.visit_superscriptU  r  rR   c                :    U R                   R                  S5        g )Nz</sup>r  r~  s     rP   depart_superscript!HTMLTranslator.depart_superscriptX  r  rR   c                D   U R                   R                  U R                  USSS95        U R                   R                  S5        Sn[        US   5      (       a]  US   n[        U5      S:X  a	  SUS	   -  nO@Sn/ nU H"  nUR                  S
U< SU< S35        US-  nM$     SSR	                  U5      -  nUR                  S5      (       a	  SUS   -  nOSnU R                   R                  SUS   < SUS   < SU R                  US   5      < SU< SU< S35        g )Nr  zsystem-messager  z <p class="system-message-title">r1   r6  rN  z%; <em><a href="#%s">backlink</a></em>r   z
<a href="#r  r  z; <em>backlinks: %s</em>r  rH  z	, line %szSystem Message: r  /rh  z! (<span class="docutils literal">r  r  r  r  )r<   r   rb  r   rl   r  r   )rN   r   backref_textr6  r  r=  backrefrH  s           rP   visit_system_message#HTMLTranslator.visit_system_message[  s   		tW<LMN		;<tJ  J'H8}! G"*1+!. 	'G$$w%JKFA  ( !;"&))I"6!7<<f-DD		 L$w- KKX7|M 	NrR   c                :    U R                   R                  S5        g r  r  r~  s     rP   depart_system_message$HTMLTranslator.depart_system_messageu  r  rR   c                R   SU R                   R                  R                  SS5      R                  5       0nSU;   a  US   R	                  SUS   -  5        SU;   a  US   nUSS  S;   a  US	-  nS
U S3US'   U R
                  " US40 UD6nU R                  R	                  U5        g )Nr$  r;  r   r  zalign-%sr   r  z0123456789.r  r(  r   r   rS  )rd   r*  r   r   r   rb  r<   )rN   r   r3  r   r  s        rP   visit_tableHTMLTranslator.visit_tablex  s    4==44<<S#FLLNOd?O"":W#=>d?MERSz]*%eWA.DMmmD'2T2		rR   c                \    U R                   R                  S5        U R                  U5        g )Nz	</table>
)r<   r   rn  r~  s     rP   depart_tableHTMLTranslator.depart_table  s"    		&T"rR   c           	         SU;  aS  SU;  aM  SU;  aG  U R                   R                  U R                  USSSS95        U R                  R                  S5        g U R                  R                  S5        g )	Nr  r  r  r  r1   targetr  r  )r<   r   rb  r   r~  s     rP   visit_targetHTMLTranslator.visit_target  sa    D 4'T)IIT]]48]LMLL	*LL#rR   c                j    U R                   R                  U R                  R                  5       5        g rJ   r  r~  s     rP   depart_targetHTMLTranslator.depart_target  r  rR   c                Z    U R                   R                  U R                  US5      5        g )Ntbodyr  r~  s     rP   visit_tbodyHTMLTranslator.visit_tbody      		tW56rR   c                :    U R                   R                  S5        g )Nz	</tbody>
r  r~  s     rP   depart_tbodyHTMLTranslator.depart_tbody  r  rR   c           
         SUR                   R                   S   ;   a+  U R                  R                  U R                  USSS95        g U R                  R                  U R                  USSUR                   S   UR                   S   S95        g )	Nr`  r$  summaryr1   r  r  rM  )rX  r$  rM  rb  r~  s     rP   
visit_termHTMLTranslator.visit_term  s~    **955IIT]]42]FG IIT]]4b37;;y3I/3{{5/A + C DrR   c                    UR                  [        R                  SSS9(       a  g SUR                  R                  S   ;   a  U R                  R                  S5        g U R                  R                  S5        g )NFTr  r`  r$  z</summary>
z</dt>
)r  r   r  ri  r<   r   r~  s     rP   r  HTMLTranslator.depart_term  sX    >>%**ED>I**955II^,IIY'rR   c                     / U l         / Ul        g rJ   )r   r  r~  s     rP   visit_tgroupHTMLTranslator.visit_tgroup  s    
rR   c                    g rJ   r  r~  s     rP   depart_tgroupHTMLTranslator.depart_tgroup  r  rR   c                Z    U R                   R                  U R                  US5      5        g )Nr  r  r~  s     rP   visit_theadHTMLTranslator.visit_thead  rM  rR   c                :    U R                   R                  S5        g )Nz	</thead>
r  r~  s     rP   depart_theadHTMLTranslator.depart_thead  r  rR   c                f   0 nU R                   U R                  -   S-
  nS[        US5      -  nUS:  a  X2S'   U R                  " XS40 UD6nUR	                  S5      (       aI  0 nSUS'   S	US
'   SUS   -   US'   XPR                  " [
        R                  " 5       SS40 UD6-  nSU-  nXV4$ SU-  nXV4$ )NrN  zh%i   z
aria-levelr1   r  ztoc-backrefr%  zdoc-backlinkr  r  r
  r  z
</a></%s>
r  )r   r   minrb  r  r   r#  )rN   r   r3  h_levelr   	start_tag	close_tags          rP   section_title_tags!HTMLTranslator.section_title_tags  s    $$t'@'@@1D#gq/)Q;!(MM$<t<	<<  D)DM)DLg.DLu'8#rJTJJI%/I ## "G+I##rR   c           	        Sn[        UR                  [        R                  5      (       ax  U R                  R                  U R                  USSSS95        U R                  R                  (       a0  SUR                  S   ;   a  U R                  R                  S5        S	nGO[        UR                  [        R                  5      (       a-  U R                  R                  U R                  USSS
S95        GOx[        UR                  [        R                  5      (       a-  U R                  R                  U R                  USSSS95        GO"[        UR                  [        R                  5      (       a/  U R                  R                  U R                  USS5      5        SnO[        UR                  [        R                  5      (       aH  U R                  R                  U R                  USSSS95        Sn[        U R                  5      U l        OY[        UR                  [        R                  5      (       d   eU R!                  U5      u  p2U R                  R                  U5        U R"                  R                  U5        g )Nr  r  r1   ztopic-titler  r  r$  z*<a class="reference internal" href="#top">z	</a></p>
zsidebar-titlezadmonition-titler  z</caption>
h1r>   z</h1>
)r   ri  r   topicr<   r   rb  rd   toc_backlinksr  
AdmonitionrS  rU   r   r   r  ri  r   )rN   r   rh  rg  s       rP   visit_titleHTMLTranslator.visit_title  s   	dkk5;;//IIdC=AC++$++i"88		  !MN(	U]]33IIdC?CEU%5%566II--c25G-HJU[[11IIT]]4B?@&IU^^44IIT]]4r]IJ!I%(^D"dkk5==9999#'#:#:4#@ IIIY'I&rR   c                   U R                   R                  U R                  R                  5       5        U R                  (       a  U R                   U R                  S U l        SU l        U R                  R                  U R                   5        U R                  R                  U R                   5        U R                   S S 2	 g g )Nr  r   )	r<   r   r   rO  r   r>   r:   rT  rF   r~  s     rP   depart_titleHTMLTranslator.depart_title  s    		))+,!!4#9#9"=DJ%&D"!!((3OO""499-		! "rR   c                \    U R                   R                  U R                  USS5      5        g )Nciter1   r  r~  s     rP   visit_title_reference$HTMLTranslator.visit_title_reference  r1  rR   c                :    U R                   R                  S5        g )Nz</cite>r  r~  s     rP   depart_title_reference%HTMLTranslator.depart_title_reference  r  rR   c                X    U R                   R                  U R                  USSS95        g )Nr   rm  r  r  r~  s     rP   visit_topicHTMLTranslator.visit_topic  s#    		tU'BCrR   c                :    U R                   R                  S5        g r9  r  r~  s     rP   depart_topicHTMLTranslator.depart_topic  r<  rR   c                X    U R                   R                  U R                  USSS95        g )Nhrro   r  )r<   r   re  r~  s     rP   visit_transitionHTMLTranslator.visit_transition  s#    		tTDErR   c                    g rJ   r  r~  s     rP   depart_transition HTMLTranslator.depart_transition  r  rR   c                &    U R                  USSS9  g )Nrk   Fr  r  r~  s     rP   visit_versionHTMLTranslator.visit_version  rG  rR   c                $    U R                  5         g rJ   r  r~  s     rP   depart_versionHTMLTranslator.depart_version
  r  rR   c                F    [        SUR                  R                  -  5      e)Nz$visiting unimplemented node type: %s)NotImplementedErrorrO   r}   r~  s     rP   r#  "HTMLTranslator.unimplemented_visit  s$    !"H$(NN$;$;#< = 	=rR   )'r   r<   r:   r9   r=   r   r   r   r   r   r   r;   rA   rC   r8   r7   r@   rH   rE   rD   rG   rF   r   r   r   r   r   r   r   r   r   r   r}  r   rB   r   r   r?   r>   rz   )r   znodes.imagery   zdict[str, str])ry   ztuple[int, int] | None)r2  r|   r   znodes.Elementr3  dictry   r|   rJ   )rj   F)rj   )r   )ry   r@  )T)r}   r~   r   r   __doc__r  r  r   ro   rp   r   r  r~  r}  rD  rA  recompiler]  r_  rR  ordr   r  r   r   r   r   r   r   r   r   r=  r   rb  re  rn  rx  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   r2  r6  r:  r>  rA  rE  rI  rM  rP  rT  rW  rZ  r]  rc  rh  rm  rq  ru  rx  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/  r3  r8  r>  rB  rE  rI  rL  rO  rR  rV  rY  rb  rf  ri  rl  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.  r1  r7  r:  r=  r@  rD  rG  rK  rO  rS  r  rX  r[  r^  ra  ri  rp  rs  rw  rz  r}  r  r  r  r  r  r#  r   r   r   s   @rP   r   r      sF   6p "GN,L
3H4H4H3I J1 	1  $):> KNAK NOEzz"23$67Nc(Gc(Fc(Hc(Fc(G	 N9J<Pd7 **^47'7"H>*4X8(@FDN(
(":$='D
#O' $2*4%/#+-
C8 
'1#<,",&<$H#@)
>"N>
*$ **X.22G%D%=#3#.#<(I(E-8$ED$O'CG88"9(-<$<$$1H@($=%,	=+>!
!,@'D:$?4E%'
%I%8$0$'
% !%)51#UVH5r?!'0G HIE!N#
IJ#9#"*<$6#$7'O-C*>#$G#9
%

 <#<&9#'H9#N4'
#$-7'D(7'$&'>:$D%F=#= =rR   r   c                      \ rS rSrSrS rS rS rS
S jrS 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$Sr%g	)r  i  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                "    [         R                  erJ   )r   r  r~  s     rP   default_visitSimpleListChecker.default_visit  s    oorR   c                    g rJ   r  r~  s     rP   default_departure#SimpleListChecker.default_departure   r  rR   c                   UR                    Vs/ s H&  n[        U[        R                  5      (       a  M$  UPM(     nnU(       a  [        US   [        R                  5      (       av  [        US   [        R
                  5      (       dD  [        US   [        R                  5      (       d"  [        US   [        R                  5      (       a  UR                  5         [        U5      S::  a  g [        R                  es  snf )Nr   r  rN  )rv  r   r   rq  	paragraphr  r  r  rO  r   r  )rN   r   rw  rv  s       rP   rV  !SimpleListChecker.visit_list_item#  s    '+}} ?}e%eU__= } ?HQKAAHRL%*;*;<<x|U-B-BCCx|U-=-=>>LLNx=A//!?s
   #C=C=c                    g rJ   r  r~  s     rP   	pass_nodeSimpleListChecker.pass_node0  r  rR   c                "    [         R                  erJ   r  r~  s     rP   ignore_nodeSimpleListChecker.ignore_node3  r!  rR   r  Nrz   )&r}   r~   r   r   r  r  r  rV  r  r  r{  r  r  r  r  r  r  r  rE  rM  rT  r  r
  r  rm  ru  rS  r  rc  r  r  r  r  r2  r  rD  visit_pendingr   r  rR   rP   r  r    s    "
 J!O "%M L#M#MM!OJ$L#M &!*J & !K&"  M$/!LMrR   r  )*r  
__future__r   __docformat__r  r  r  os.pathr  r   xml.etree.ElementTreeetreeElementTreer'  pathlibr   ro   r   r   r   r	   r
   docutils.parsers.rst.directivesr   &docutils.parsers.rst.directives.imagesr   docutils.transformsr   docutils.utils.mathr   r   r   r   r   r   TYPE_CHECKINGr   r   DoctreeTranslatorr   GenericNodeVisitorr  r  rR   rP   <module>r     s   " 4 ""   	  	  " "   ? ? L 6 *I I -K<W^^ K<\T=W.. T=n2K 00 K rR   