+
    VBi                   "  a  0 t $ R t^ RIHt Rt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht Rt]'       d   ^ RIHtHtHtHtHt ^ RIHt ^ RIHtHtHtHtHtHt ^ R	IHt ^ R
IHt ^ RI H!t! ^ RI"H#t#H$t$ ^ RI%H&t& ]'R]'ER,          ,          ,          t(R])R&   ]ER,          t*]'](]*3,          t+R])R&   ]']+R3,          t,R])R&   ]-]P\                  ]-,          ,          t/R])R&    ]]-]]0.R3,          t1R])R&    ! R R4      t2 ! R R]2]-4      t3 ! R R]24      t4 ! R R 4      t5 ! R! R"4      t6 ! R# R$4      t7 ! R% R&4      t8 ! R' R(4      t9 ! R) R*]94      t: ! R+ R,]94      t; ! R- R.]94      t< ! R/ R0]94      t= ! R1 R24      t> ! R3 R44      t? ! R5 R64      t@ ! R7 R84      tA ! R9 R:]=]A4      tB ! R; R<4      tC ! R= R>4      tD ! R? R@4      tE ! RA RB]D4      tF ! RC RD]D4      tG ! RE RF4      tH ! RG RH]44      tI ! RI RJ]I4      tJ ! RK RL]I4      tK ! RM RN]?]44      tL ! RO RP]?]44      tM ! RQ RR]H]A]7]I4      tN ! RS RT]H]A]7]I4      tO ! RU RV]A]7]44      tP ! RW RX]7]44      tQ ! RY RZ]A]7]44      tR ! R[ R\]7]44      tS ! R] R^]6]44      tT ! R_ R`]6]44      tU ! Ra Rb]6]44      tV]NR3]OR3]9]T]U]S3R3]V]S3R33]VnW         ! Rc Rd]5]44      tX ! Re Rf]8]I4      tY ! Rg Rh]8]I4      tZ ! Ri Rj]8]J4      t[ ! Rk Rl]8]I4      t\ ! Rm Rn]8]I4      t] ! Ro Rp]8]I4      t^ ! Rq Rr]8]I4      t_ ! Rs Rt]8]I4      t` ! Ru Rv]8]I4      ta ! Rw Rx]8]44      tb ! Ry Rz]<]I4      tc ! R{ R|]H]<]I4      td ! R} R~]<]44      te ! R R]<]44      tf ! R R]>]I4      tg ! R R]<]44      th ! R R]<]@]F]I4      ti ! R R]>]44      tj ! R R];]44      tk ! R R];]44      tl ! R R]>]I4      tm ! R R]>]I4      tn ! R R]>]44      to ! R R]>]44      tp ! R R];]44      tq ! R R]>]I4      tr ! R R]>]44      ts ! R R]>]8]44      tt ! R R];]44      tu ! R R]>]K4      tv ! R R]>]K4      tw ! R R]>]44      tx ! R R]>]44      ty ! R R]>]44      tz ! R R]>]44      t{ ! R R];]44      t| ! R R]<]J4      t} ! R R]<]J4      t~ ! R R]<]J]K4      t ! R R]>]I4      t ! R R]<]44      t]]3R33]nW         ! R R]:]44      t ! R R]:]44      t ! R R]:]44      t ! R R]:]44      t ! R R]:]44      t ! R R]:]44      t ! R R]:]44      t ! R R]:]44      t ! R R]:]44      t ! R R]:]44      t ! R R]>]K4      t ! R R]<]E]4]C]G4      t ! R R]<]E]4]C]G4      t ! R R]<]@]44      t ! R R]>]I4      t ! R R]>]44      t ! R R]<]44      t ! R R]>]44      t ! R R]>]44      t ! R R]>]44      t ! R R]>]44      t ! R R]>]44      t ! R R]>]44      t ! R R]<]44      t ! R R]B]J]K4      t ! R R]B]I4      t ! R R]B]@]I]G4      t ! R R]=]E]A]44      t ! R R]B]44      t ! R R]=]@]A]J]K4      t ! R R]@]I4      t ! R R]@]I4      t ! R R]@]I4      t ! R R]@]I4      t ! R R]@]I4      t ! R R]@]I4      t ! R ER ]@]I4      t ! ER ER]@]I4      t ! ER ER]@]I4      t ! ER ER]@]I4      t ! ER ER]@]F]K4      t ! ER	 ER
]@]F]K4      t ! ER ER]@]I4      t ! ER ER]@]K4      t ! ER ER]@]I4      tEREP_                  4       tER])ER&     ! ER ER4      t ! ER ER]4      t ! ER ER]4      tER ER ltER ER ltER ER ltER  ER! lt]! ]4        ! ER" ER#]4      t ! ER$ ER%]4      t ! ER& ER']4      t ! ER( ER)]4      t ! ER* ER+]4      t ! ER, ER-]4      t ! ER. ER/]4      t ! ER0 ER1]4      t ! ER2 ER3]4      tERER4 ER5 lltER6 ER7 lt]EP                  ! ER84      tER9])ER:&   ]EP                  ! ER;4      tER9])ER<&   / ^ER=bER>ER?bER@ERAbERBERCbERDEREbERFERGbERHERIbERJERIbERKERLbERMER?bERNERObERPERQbERREREbERSERTbERUERVbERWERGbERXERGb/ ERYERZbER[ER\bER]ER^bER_ER\bER`EREbERaERTbERbERGbERcERdbEReERLbERfERgbERhER\bERiERjbERkERdbERlERmbERnERobERpERZbCtERq])ERr&   ^ERs^ERtERuERvERwERxERyERz/tERq])ER{&   ER| ER} ltER~ ER ltER ER ltER ER ltER ER ltER ER ltERER ER lltER ER ltER ER ltER ER ltER ER ltER ER ltER ER ltER ER ltER ER ltER ER lt/ ER]-bER]-bER]bER]-bER]bER]-bER]bER]-bER]bER]bER]bER]bER]bER]bER]-bER]-bER]! ERERER4      b/ ER]bER]! ERERERERER4      bER]-bER]! ERERERERERER4      bER]bER]-bER]bER]-bER]bR]bER]bER]! ERERER4      bER]-bER]bER]bER]bER]bC/ ER]bER]bER]bER]-bER]bER]bER]-bER]bER]bER]bER]-bER]-bER]bER]bER]-bRR]-bER]bCER]-ER]! ERERER4      ER]ER]! ERER4      /CtER])ER&   R# (  a~  
Docutils document tree element class library.

The relationships and semantics of elements and attributes is documented in
`The Docutils Document Tree`__.

Classes in CamelCase are abstract base classes or auxiliary classes. The one
exception is `Text`, for a text (PCDATA) node; uppercase is used to
differentiate from element classes.  Classes in lower_case_with_underscores
are element classes, matching the XML element generic identifiers in the DTD_.

The position of each node (the level at which it can occur) is significant and
is represented by abstract base classes (`Root`, `Structural`, `Body`,
`Inline`, etc.).  Certain transformations will be easier because we can use
``isinstance(node, base_class)`` to determine the position of the node in the
hierarchy.

__ https://docutils.sourceforge.io/docs/ref/doctree.html
.. _DTD: https://docutils.sourceforge.io/docs/ref/docutils.dtd
)annotationsreStructuredTextN)CounterF)CallableIterableIteratorMappingSequence)
ModuleType)AnyClassVarFinalLiteralSelfSupportsIndex)	TypeAlias)minidom)Values)Transformer	Transform)ReporterElement.r   _ContentModelCategory.?+*_ContentModelItem_ContentModelTupleStrPath
_UpdateFunc                     ] tR t^It$ RtRtR]R&    R]R&    RtR]R&    RtR	]R
&    R]R&    Rt	R]R&   ]
R R l4       t]P                  R R l4       tR R ltR4R R lltR5R R lltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR6R) R* lltR6R+ R, lltR7R- R. lltR8R/ R0 lltR1 R2 ltR3tR# )9Nodez0Abstract base class of nodes in a document tree.NElement | Noneparentr	   childrenStrPath | Nonesource
int | Nonelinestrtagnamedocument | None	_documentc                   V ^8  d   QhRR/# )   returnr,    )formats   "3/usr/lib/python3.14/site-packages/docutils/nodes.py__annotate__Node.__annotate__a   s      /     c                |     V P                   ;'       g    V P                  P                  #   \         d     R# i ; i)zJReturn the `document` root node of the tree containing this Node.
        N)r-   r$   documentAttributeErrorselfs   &r3   r8   Node.document`   s5    	>>99T[[%9%99 		s   , , ;;c                    V ^8  d   QhRRRR/# )r/   valuer8   r0   Noner1   )r2   s   "r3   r4   r5   j   s      h 4 r6   c                	    Wn         R # Nr-   )r;   r>   s   &&r3   r8   r<   i   s    r6   c                   V ^8  d   QhRR/# )r/   r0   zLiteral[True]r1   )r2   s   "r3   r4   r5   m   s      - r6   c                    R# )z
Node instances are always true, even if they're empty.  A node is more
than a simple container.  Its boolean "truth" does not depend on
having one or more subnodes in the doctree.

Use `len()` to check node length.
Tr1   r:   s   &r3   __bool__Node.__bool__m   s     r6   c                    V ^8  d   QhRRRR/# )r/   domModuleType | Noner0   z1minidom.Document | minidom.Element | minidom.Textr1   )r2   s   "r3   r4   r5   w   s     	' 	'$	'D	'r6   c                ^    Vf
   ^ RI Hu Hp VP                  4       pV P	                  V4      # )z6Return a DOM **fragment** representation of this Node.N)xml.dom.minidomrH   r   Document	_dom_noder;   rH   domroots   && r3   asdom
Node.asdomw   s)     ;)),,.~~g&&r6   c               $    V ^8  d   QhRRRRRR/# r/   indentr*   levelintr0   r1   )r2   s   "r3   r4   r5      s!     " "c "3 "s "r6   c                    \         h)z[
Return an indented pseudo-XML representation, for test purposes.

Override in subclasses.
NotImplementedError)r;   rT   rU   s   &&&r3   pformatNode.pformat   s
     "!r6   c                   V ^8  d   QhRR/# r/   r0   r   r1   )r2   s   "r3   r4   r5      s     " "d "r6   c                    \         h)zReturn a copy of self.rX   r:   s   &r3   copy	Node.copy       !!r6   c                   V ^8  d   QhRR/# r]   r1   )r2   s   "r3   r4   r5      s     " "$ "r6   c                    \         h)z3Return a deep copy of self (also copying children).rX   r:   s   &r3   deepcopyNode.deepcopy   ra   r6   c                   V ^8  d   QhRR/# r/   r0   r*   r1   )r2   s   "r3   r4   r5      s     " " "r6   c                    \         h)z,Return a string representation of this Node.rX   r:   s   &r3   astextNode.astext   ra   r6   c                   V ^8  d   QhRR/# r/   r0   r?   r1   )r2   s   "r3   r4   r5      s     8 8D 8r6   c                	   Wn         V P                  '       dh   V P                  Vn        VP                  f   V P                  P                  Vn        VP                  f   V P                  P
                  Vn        R # R # R # rA   )r$   r8   r'   current_sourcer)   current_liner;   childs   &&r3   setup_childNode.setup_child   s[    ===!]]EN||##}};;zz!!]]77
 "	 r6   c                    V ^8  d   QhRRRR/# r/   visitorNodeVisitorr0   boolr1   )r2   s   "r3   r4   r5      s     , ,K ,D ,r6   c                   RpVP                   P                  P                  RV P                  P                  ,          4         VP                  V 4       T P                  p TR,           F  pTP                  T4      '       g   K  Rp T# 	   T#   \        \        3 d    Tu # \         d     L]i ; i  \         d     T# i ; i  \         d    Rp T# i ; i)aa  
Traverse a tree of `Node` objects, calling the
`dispatch_visit()` method of `visitor` when entering each
node.  (The `walkabout()` method is similar, except it also
calls the `dispatch_departure()` method before exiting each
node.)

This tree traversal supports limited in-place tree
modifications.  Replacing one node with one or more nodes is
OK, as is removing an element.  However, if the node removed
or replaced occurs after the current node, the old node will
still be traversed, and any new nodes will not.

Within ``visit`` methods (and ``depart`` methods for
`walkabout()`), `TreePruningException` subclasses may be raised
(`SkipChildren`, `SkipSiblings`, `SkipNode`, `SkipDeparture`).

Parameter `visitor`: A `NodeVisitor` object, containing a
``visit`` implementation for each `Node` subclass encountered.

Return true if we should stop the traversal.
Fz6docutils.nodes.Node.walk calling dispatch_visit for %sNNNT)r8   reporterdebug	__class____name__dispatch_visitSkipChildrenSkipNodeSkipDeparturer%   walkSkipSiblingsStopTraversal)r;   rv   stopr%   rq   s   &&   r3   r   	Node.walk   s    . !!''Dnn%%&	'	&&t,
 }}H%a[[Ezz'**#
  )  !(+       	 	D	sl   B C	 # B7 B7 B7 B4%C	 'B40B41C	 3B44C	 7CC	 CC	 	CCc                    V ^8  d   QhRRRR/# ru   r1   )r2   s   "r3   r4   r5      s     ) ) ) )r6   c                z   RpRpVP                   P                  P                  RV P                  P                  ,          4         VP                  V 4       T P                  p TR,           F  pTP                  T4      '       g   K  Rp M	   T'       dR   TP                   P                  P                  RT P                  P                  ,          4       TP                  T 4       T#   \         d    Tu # \         d    Rp Li ; i  \         d     Li ; i  \         d     L\         d    Rp Li ; i)aF  
Perform a tree traversal similarly to `Node.walk()` (which
see), except also call the `dispatch_departure()` method
before exiting each node.

Parameter `visitor`: A `NodeVisitor` object, containing a
``visit`` and ``depart`` implementation for each `Node`
subclass encountered.

Return true if we should stop the traversal.
TFz;docutils.nodes.Node.walkabout calling dispatch_visit for %srz   z?docutils.nodes.Node.walkabout calling dispatch_departure for %s)r8   r{   r|   r}   r~   r   r   r   r%   	walkaboutr   r   r   dispatch_departure)r;   rv   call_departr   r%   rq   s   &&    r3   r   Node.walkabout   s+    !!''Inn%%&	'	$&&t,
 }}H%a[[Ew//# ) %%++>>2234 &&t,+    $#$    	 	D	sx   C, D % D 
D D ,D
9D ;D
D
D 	D

D DD DD D:+D:4D:9D:c                    V ^8  d   QhRRRR/# )r/   clstyper0   r   r1   )r2   s   "r3   r4   r5      s     0 0 0( 0r6   c              #     "   \        W4      '       d   V x  V P                   F  pVP                  V4       Rj  xL
  K  	  R#  L
5i)z3Return iterator that only supports instance checks.N)
isinstancer%   _fast_findall)r;   r   rq   s   && r3   r   Node._fast_findall   s:     d  J]]E**3/// #/s   9AAAc                   V ^8  d   QhRR/# )r/   r0   r   r1   )r2   s   "r3   r4   r5      s     2 2H 2r6   c              #  p   "   V x  V P                    F  pVP                  4        Rj  xL
  K  	  R#  L
5i)z3Return iterator that doesn't check for a condition.N)r%   _superfast_findallrp   s   & r3   r   Node._superfast_findall   s/     
 
]]E//111 #1s   '646c               0    V ^8  d   QhRRRRRRRRRRRR	/# )
r/   	condition$type | Callable[[Node], bool] | Noneinclude_selfrx   descendsiblingsascendr0   r   r1   )r2   s   "r3   r4   r5     sL     V' V'?V'"V' V' 	V'
 V' V'r6   c           	   #    "   V'       d   RpV'       d`   V'       dX   V'       gP   Vf   V P                  4        Rj  xL
  R# \        V\        4      '       d   V P                  V4       Rj  xL
  R# \        V\        4      '       d	   TpV3R lpV'       d   Ve   V! V 4      '       d   V x  V'       dC   \	        V P
                  4      '       d(   V  F!  pVP                  VRRRRR7       Rj  xL
  K#  	  V'       g	   V'       d   T pVP                  '       d   VP                  P                  V4      p	VP                  V	,          VJd%   VP                  P                  W^,           4      p	K;  VP                  V	^,           R  F!  p
V
P                  VRVRRR7       Rj  xL
  K#  	  V'       g   R# VP                  pK  R# R#  EL ELa L L,5i)a  
Return an iterator yielding nodes following `self`:

* self (if `include_self` is true)
* all descendants in tree traversal order (if `descend` is true)
* the following siblings (if `siblings` is true) and their
  descendants (if also `descend` is true)
* the following siblings of the parent (if `ascend` is true) and
  their descendants (if also `descend` is true), and so on.

If `condition` is not None, the iterator yields only nodes
for which ``condition(node)`` is true.  If `condition` is a
type ``cls``, it is equivalent to a function consisting
of ``return isinstance(node, cls)``.

If `ascend` is true, assume `siblings` to be true as well.

If the tree structure is modified during iteration, the result
is undefined.

For example, given the following tree::

    <paragraph>
        <emphasis>      <--- emphasis.traverse() and
            <strong>    <--- strong.traverse() are called.
                Foo
            Bar
        <reference name="Baz" refid="baz">
            Baz

Then tuple(emphasis.traverse()) equals ::

    (<emphasis>, <strong>, <#text: Foo>, <#text: Bar>)

and list(strong.traverse(ascend=True) equals ::

    [<strong>, <#text: Foo>, <#text: Bar>, <reference>, <#text: Baz>]
TNc                    \        W4      # rA   )r   )node
node_classs   &&r3   r   Node.findall.<locals>.conditionE  s    !$33r6   F)r   r   r   r   r   )	r   r   r   r   lenr%   findallr$   index)r;   r   r   r   r   r   r   rq   r   r   siblings   &&&&&&     r3   r   Node.findall  s    Z H GH 22444It,,--i888 i&&"J+5 4 Y.)D//Js4==)) ==96:D27 ) G G G  vD+++))$/kk%(4 KK--dAI>E#{{5784G&"+%)7!&u  /  6 6 6  5
 ;;D  ) 5 9G6s   GGGGG0G-G.+GG,G89G1G2GG
GBG&G'G7GGGGc               0    V ^8  d   QhRRRRRRRRRRRR	/# )
r/   r   r   r   rx   r   r   r   r0   listr1   )r2   s   "r3   r4   r5   `  sD     4 4@4#4 4  	4
 4 4r6   c           	     t    \         P                  ! R\        ^R7       \        V P	                  WVWE4      4      # )ziReturn list of nodes following `self`.

For looping, Node.findall() is faster and more memory efficient.
z5nodes.Node.traverse() is obsoleted by Node.findall().
stacklevel)warningswarnDeprecationWarningr   r   r;   r   r   r   r   r   s   &&&&&&r3   traverseNode.traverse`  s7     	M(Q	8DLL'!)3 4 	4r6   c               0    V ^8  d   QhRRRRRRRRRRRR	/# )
r/   r   r   r   rx   r   r   r   r0   zNode | Noner1   )r2   s   "r3   r4   r5   q  sD      A $   !	
  #r6   c           	     `     \        V P                  WW4V4      4      #   \         d     R# i ; i)z
Return the first node in the iterator returned by findall(),
or None if the iterable is empty.

Parameter list is the same as of `findall()`.  Note that `include_self`
defaults to False, though.
N)nextr   StopIterationr   s   &&&&&&r3   	next_nodeNode.next_nodeq  s;    	Y%,@ A A 		s    --c                    V ^8  d   QhRRRR/# r/   	recursiverx   r0   r?   r1   )r2   s   "r3   r4   r5     s      $ $ r6   c                    R# )zkRaise ValidationError if this node is not valid.

Override in subclasses that define validity constraints.
Nr1   )r;   r   s   &&r3   validateNode.validate      r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r5     s      4 r6   c                    R# )zHook for additional checks of the parent's content model.

Raise ValidationError, if `self` is at an invalid position.

Override in subclasses with complex validity constraints. See
`subtitle.validate_position()` and `transition.validate_position()`.
Nr1   r:   s   &r3   validate_positionNode.validate_position  r   r6   rB   rA           )NTTFF)NFTFFT)r~   
__module____qualname____firstlineno____doc__r$   __annotations__r'   r)   r-   propertyr8   setterrE   rP   rZ   r_   rd   ri   rr   r   r   r   r   r   r   r   r   r   __static_attributes__r1   r6   r3   r"   r"   I   s    :!FN!F
 "FN!LD*NL)!%I%  __ 	'""""8,\)V02V'p4"( r6   r"   c                      ] tR tRt$ RtRtR]R&   RtR]R&    RR R	 lltRR
 R llt	R R lt
R R ltR R ltR R ltR R ltRR R lltRR R lltRR R lltRtR# ) Texti  z
Instances are terminal nodes (leaves) containing text only; no child
nodes or attributes.  Initialize by passing a string to the constructor.

Access the raw (null-escaped) text with ``str(<instance>)``
and unescaped text with ``<instance>.astext()``.
z#textr   r+   r%   Nc               $    V ^8  d   QhRRRRRR/# )r/   datar*   	rawsourcer?   r0   r   r1   )r2   s   "r3   r4   Text.__annotate__  s!     
& 
&3 
&4 
&4 
&r6   c                    \        V\        4      '       d   \        R4      hVe   \        P                  ! R\
        ^R7       \        P                  W4      # )zeAssert that `data` is not an array of bytes
and warn if the deprecated `rawsource` argument is used.
zexpecting str data, not bytesz_nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 2.0.r   )r   bytes	TypeErrorr   r   r   r*   __new__)r   r   r   s   &&&r3   r   Text.__new__  sK     dE"";<< MM L,< {{3%%r6   c                    V ^8  d   QhRRRR/# )r/   maxlenrV   r0   r*   r1   )r2   s   "r3   r4   r     s     6 6 6S 6r6   c                	    T p\        V4      V8  d   VR V^,
           R,           pRV P                  : R\        V4      : R2# )N ...<: >)r   r+   r*   )r;   r   r   s   && r3   	shortreprText.shortrepr  s;    t9v	?V+D!\\3t955r6   c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r     s     ) )# )r6   c                	&    V P                  ^DR7      # )D   )r   )r   r:   s   &r3   __repr__Text.__repr__  s    ~~R~((r6   c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r          # # #r6   c                	*    \        \        V 4      4      # rA   )r*   unescaper:   s   &r3   ri   Text.astext  s    8D>""r6   c                    V ^8  d   QhRRRR/# )r/   rO   minidom.Documentr0   zminidom.Textr1   )r2   s   "r3   r4   r     s     1 1!1 1l 1r6   c                	6    VP                  \        V 4      4      # rA   )createTextNoder*   )r;   rO   s   &&r3   rM   Text._dom_node  s    %%c$i00r6   c                   V ^8  d   QhRR/# r]   r1   )r2   s   "r3   r4   r     s     ) )d )r6   c                	6    V P                  \        V 4      4      # rA   )r}   r*   r:   s   &r3   r_   	Text.copy  s    ~~c$i((r6   c                   V ^8  d   QhRR/# r]   r1   )r2   s   "r3   r4   r     s      $ r6   c                	"    V P                  4       # rA   )r_   r:   s   &r3   rd   Text.deepcopy  s    yy{r6   c               $    V ^8  d   QhRRRRRR/# rS   r1   )r2   s   "r3   r4   r     s!     ' 'c '3 's 'r6   c                	  aa  V P                   P                  P                  '       dH   SS,          : R : 2pVV3R lV P                  R4       4       pRP	                  V.VO54      R,           #  SS,          oV P                  4       P                  4        Uu. uF  pSV,           NK  	  ppV'       g   R# RP	                  V4      R,           #   \
         d     Lli ; iu upi )z<#text>c              3  d   <"   T F%  pSS^,           ,          \        V4      ,           x  K'  	  R# 5i   N)repr.0r)   rT   rU   s   & r3   	<genexpr>Text.pformat.<locals>.<genexpr>  s-      <%:T  q)DJ66%:s   -0T
 )r8   settingsdetailed
splitlinesjoinr9   ri   )r;   rT   rU   taglinesr)   s   &ff   r3   rZ   Text.pformat  s    	}}%%... &ui8<%)__T%:<yy#/$66	 / %)-)A)A)CD)C)CDyy$&&  		 Es   %C AC C"CCc                    V ^8  d   QhRRRR/# r/   chars
str | Noner0   r   r1   )r2   s   "r3   r4   r          7 7J 7$ 7r6   c                	J    V P                  \        P                  W4      4      # rA   )r}   r*   rstripr;   r  s   &&r3   r  Text.rstrip      ~~cjj566r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r     r  r6   c                	J    V P                  \        P                  W4      4      # rA   )r}   r*   lstripr  s   &&r3   r  Text.lstrip  r  r6   r1   rA   )   r   )r~   r   r   r   r   r+   r   r%   r   r   r   ri   rM   r_   rd   rZ   r  r  r   r1   r6   r3   r   r     sW     GUHe@
&6)#1)'&77 7r6   r   c                  F   ] tR tRt$ RtRtR]R&    ]R,           tR]R&    ]tR]R&    ]t	R]R&    ]t
R]R&    RtR]R	&    RtR
]R&    RtR]R&    RtR]R&    RR R lltR R ltR R ltR R ltR R ltRR R lltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 R4 lt R5 R6 lt!RR7 R8 llt"R9 R: lt#R; R< lt$RR= R> llt%]#t&RR? R@ llt'RA RB lt(RC RD lt)RE RF lt*RRG RH llt+RI RJ lt,^ ]-P\                  3RK RL llt/RM t0RN RO lt1RP RQ lt2RR RS lt3RT RU lt4RV RW lt5RRY RZ llt6RR[ R\ llt7R] R^ lt8R_ R` lt9Ra Rb lt:]:RXRc3Rd Re llt;RRf Rg llt<RRh Ri llt=RRj Rk llt>RRl Rm llt?Rn Ro lt@Rp Rq ltARr Rs ltB^ ]-P\                  3Rt Ru lltC^ ]-P\                  3Rv Rw lltDRRx Ry lltERz R{ ltFR| R} ltGRR~ R lltH]IR R l4       tJ]IR R l4       tKR R ltLRR R lltMR R ltNRR R lltORtPR# )r   i  a  
`Element` is the superclass to all specific elements.

Elements contain attributes and child nodes.
They can be described as a cross between a list and a dictionary.

Elements emulate dictionaries for external [#]_ attributes, indexing by
attribute name (a string). To set the attribute 'att' to 'value', do::

    element['att'] = 'value'

.. [#] External attributes correspond to the XML element attributes.
   From its `Node` superclass, Element also inherits "internal"
   class attributes that are accessed using the standard syntax, e.g.
   ``element.parent``.

There are two special attributes: 'ids' and 'names'.  Both are
lists of unique identifiers: 'ids' conform to the regular expression
``[a-z](-?[a-z0-9]+)*`` (see the make_id() function for rationale and
details). 'names' serve as user-friendly interfaces to IDs; they are
case- and whitespace-normalized (see the fully_normalize_name() function).

Elements emulate lists for child nodes (element nodes and/or text
nodes), indexing by integer.  To get the first child node, use::

    element[0]

to iterate over the child nodes (without descending), use::

    for child in element:
        ...

Elements may be constructed using the ``+=`` operator.  To add one new
child node to element, do::

    element += node

This is equivalent to ``element.append(node)``.

To add a list of multiple child nodes at once, use the same ``+=``
operator::

    element += [node1, node2]

This is equivalent to ``element.extend([node1, node2])``.
r   list_attributesvalid_attributescommon_attributesknown_attributesbasic_attributeslocal_attributeszClassVar[_ContentModelTuple]content_modelNr  r+   z

child_text_separatorc               $    V ^8  d   QhRRRRRR/# )r/   r   r*   
attributesr   r0   r?   r1   )r2   s   "r3   r4   Element.__annotate__F  s(     $8 $8$8  #$8 	$8r6   c                	   Wn          \        V\        4      '       d   \        R 4      h. V n         V P                  V4       / V n         V P                   F  p. V P                  V&   K  	  VP                  4        FK  w  rEVP                  4       pW@P                  9   d   VR,          V P                  V&   K=  WPP                  V&   KM  	  V P                  f   V P                  P                  V n
        R# R# )z,First argument "rawsource" must be a string.rz   N)r   r   r   r   r%   extendr'  r  itemslowerr+   r}   r~   )r;   r   r%   r'  attr>   s   &&*,  r3   __init__Element.__init__F  s    
 #	 i))JKK ;H*,4 ''C#%DOOC  ( %**,JC))+C***',Qx$',$ - << $ 7 7DL  r6   c                    V ^8  d   QhRRRR/# )r/   rO   r   r0   zminidom.Elementr1   )r2   s   "r3   r4   r(  l  s      !1 o r6   c                	b   VP                  V P                  4      pV P                  4        FL  w  r4\        V\        4      '       d   R P                  R V 4       4      pVP                  VRV,          4       KN  	  V P                   F#  pVP                  VP                  V4      4       K%  	  V# ) c              3  <   "   T F  p\        V: 4      x  K  	  R # 5irA   )serial_escape)r  vs   & r3   r  $Element._dom_node.<locals>.<genexpr>p  s      KUq!;!;Us   z%s)
createElementr+   attlistr   r   r
  setAttributer%   appendChildrM   )r;   rO   element	attributer>   rq   s   &&    r3   rM   Element._dom_nodel  s    ''5 $I%&& KU KK  D5L9 !/ ]]E 89 #r6   c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r(  v  s     5 5# 5r6   c                	B   R pV P                    F;  pWP                  4       ,          p\        V4      ^<8  g   K+  VR,          R,           p M	  V R,          '       d0   RV P                  : RRP	                  V R,          4      : RV: R2# RV P                  : R	V: R2# )
r  :N8   Nr   namesr    "; z": r   r   )r%   r   r   r+   r
  )r;   r   cs   &  r3   r   Element.__repr__v  s    AKKM!D4y2~Cy6)	 
 ==&*ll&*iiW&>F F  "&t44r6   c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r(    s     , ,3 ,r6   c                	    V R ,          '       d,   RV P                   : RRP                  V R ,          4      : R2# RV P                   ,          # )rA  r   rB  rC  z"...>z<%s...>)r+   r
  r:   s   &r3   r   Element.shortrepr  s6    ==%)\\499T']3KLLt||++r6   c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r(    s     # # #r6   c                	    V P                   '       dH   V P                  4       : R P                  R V P                    4       4      : V P                  4       : 2# V P	                  4       # )r  c              3  8   "   T F  p\        V4      x  K  	  R # 5irA   )r*   r  rD  s   & r3   r  "Element.__str__.<locals>.<genexpr>  s     &E}!s1vv}   )r%   starttagr
  endtagemptytagr:   s   &r3   __str__Element.__str__  sK    ===#}}!ww&Et}}&EE#{{}. . ==?"r6   c                    V ^8  d   QhRRRR/# )r/   	quoteattrzCallable[[str], str] | Noner0   r*   r1   )r2   s   "r3   r4   r(    s     ( ("= ( (r6   c                	
   Vf   \         pV P                  .pV P                  4        F  w  r4Vf   VP                  RV,          4       K#  \	        V\
        4      '       d   \        \        V4      4      p\	        V\        4      '       d/   V Uu. uF  p\        V: 4      NK  	  ppRP                  V4      pM\        V4      pV! V4      pVP                  V: RV: 24       K  	  RRP                  V4      ,          # u upi )Nz	%s="True"r2  =z<%s>)pseudo_quoteattrr+   r8  appendr   rx   r*   rV   r   r4  r
  )r;   rU  partsnamer>   r5  valuess   &&     r3   rO  Element.starttag  s    (I<<>KD}[4/0%&&CJ%&&>CDe-4eD(E
e$ELLD%01 * '' Es   D c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r(    s     & & &r6   c                	(    R V P                   ,          # )z</%s>)r+   r:   s   &r3   rP  Element.endtag  s    %%r6   c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r(    s     ? ?# ?r6   c                	|    R  V P                  4        4       pRRP                  V P                  .VO54      ,          # )c              3  :   "   T F  w  rV: R V: R2x  K  	  R# 5i)z=""Nr1   )r  nr5  s   &  r3   r  #Element.emptytag.<locals>.<genexpr>  s     D^TQ1a(^s   z<%s/>r2  )r8  r
  r+   )r;   r'  s   & r3   rQ  Element.emptytag  s2    DT\\^D
4<<"=*"=>>>r6   c                   V ^8  d   QhRR/# )r/   r0   rV   r1   )r2   s   "r3   r4   r(    s     " " "r6   c                	,    \        V P                  4      # rA   )r   r%   r:   s   &r3   __len__Element.__len__  s    4==!!r6   c                   V ^8  d   QhRR/# )r/   r0   rx   r1   )r2   s   "r3   r4   r(    s     $ $4 $r6   c                	f    \        V\        4      '       d   WP                  9   # WP                  9   # rA   )r   r*   r'  r%   r;   keys   &&r3   __contains__Element.__contains__  s)    c3//))mm##r6   c                    V ^8  d   QhRRRR/# )r/   ro  str | int | slicer0   r   r1   )r2   s   "r3   r4   r(    s     
8 
80 
8S 
8r6   c                	^   \        V\        4      '       d   V P                  V,          # \        V\        4      '       d   V P                  V,          # \        V\
        4      '       d<   VP                  R9   g   Q R4       hV P                  VP                  VP                   # \        R4      hNcannot handle slice with stridezFelement index must be an integer, a slice, or an attribute name stringNr   
r   r*   r'  rV   r%   slicestepstartr   r   rn  s   &&r3   __getitem__Element.__getitem__  s    c3??3''S!!==%%U##88y(K*KK(==38844 7 8 8r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r(    s     8 8 8r6   c                	   \        V\        4      '       d   W P                  \        V4      &   R # \        V\        4      '       d"   V P	                  V4       W P
                  V&   R # \        V\        4      '       dW   VP                  R9   g   Q R4       hV F  pV P	                  V4       K  	  W P
                  VP                  VP                  % R # \        R4      hru  )r   r*   r'  rV   rr   r%   ry  rz  r{  r   r   )r;   ro  itemr   s   &&& r3   __setitem__Element.__setitem__  s    c3(,OOCH%S!!T"!%MM#U##88y(K*KK(  & 04MM#))CHH- 7 8 8r6   c                    V ^8  d   QhRRRR/# )r/   ro  rs  r0   r?   r1   )r2   s   "r3   r4   r(    s     
B 
B0 
BT 
Br6   c                	R   \        V\        4      '       d   V P                  V R # \        V\        4      '       d   V P                  V R # \        V\
        4      '       d>   VP                  R9   g   Q R4       hV P                  VP                  VP                  1 R # \        R4      h)Nrv  zMelement index must be an integer, a simple slice, or an attribute name stringrw  rx  rn  s   &&r3   __delitem__Element.__delitem__  s    c3$S!!c"U##88y(K*KK(cii01 A B Br6   c                    V ^8  d   QhRRRR/# r/   otherr   r0   r1   )r2   s   "r3   r4   r(    s     % %T %d %r6   c                	(    V P                   V,           # rA   r%   r;   r  s   &&r3   __add__Element.__add__  s    }}u$$r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r(    s     % %d %t %r6   c                	&    WP                   ,           # rA   r  r  s   &&r3   __radd__Element.__radd__  s    }}$$r6   c                   V ^8  d   QhRR/# r]   r1   )r2   s   "r3   r4   r(    s       r6   c                    \        V\        4      '       d   V P                  V4       V # Ve   V P                  V4       V # )z4Append a node or a list of nodes to `self.children`.)r   r"   rY  r*  r  s   &&r3   __iadd__Element.__iadd__  s;    eT""KK  KKr6   c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r(    s     @ @ @r6   c                	    V P                   P                  V P                   Uu. uF  qP                  4       NK  	  up4      # u upi rA   )r%  r
  r%   ri   rp   s   & r3   ri   Element.astext  s:    ((--04>uLLN>@ 	@>s   Ac                   V ^8  d   QhRR/# r/   r0   zdict[str, Any]r1   )r2   s   "r3   r4   r(    s       r6   c                	    V P                   P                  4        UUu/ uF   w  rV P                  V4      '       g   K  WbK"  	  pppV# u uppi rA   )r'  r+  is_not_default)r;   ro  r>   attss   &   r3   non_default_attributesElement.non_default_attributes  sJ    -1__-B-B-D --Dzs&&s+ 
-D --s
   A	A	c                   V ^8  d   QhRR/# )r/   r0   zlist[tuple[str, Any]]r1   )r2   s   "r3   r4   r(    s     = =. =r6   c                	P    \        V P                  4       P                  4       4      # rA   )sortedr  r+  r:   s   &r3   r8  Element.attlist  s    d11399;<<r6   c               $    V ^8  d   QhRRRRRR/# r/   ro  r*   failobjz
Any | Noner0   r   r1   )r2   s   "r3   r4   r(    s!     1 1s 1Z 13 1r6   c                	8    V P                   P                  W4      # rA   )r'  getr;   ro  r  s   &&&r3   r  Element.get  s    ""300r6   c                    V ^8  d   QhRRRR/# r/   attrr*   r0   rx   r1   )r2   s   "r3   r4   r(    s     ' 'C 'D 'r6   c                	    WP                   9   # rA   r'  r;   r  s   &&r3   hasattrElement.hasattr  s    &&r6   c                    V ^8  d   QhRRRR/# )r/   r  r*   r0   r?   r1   )r2   s   "r3   r4   r(    s     & &C &D &r6   c                	D    WP                   9   d   V P                   V R # R # rA   r  r  s   &&r3   delattrElement.delattr  s    ??"% #r6   c               $    V ^8  d   QhRRRRRR/# r  r1   )r2   s   "r3   r4   r(     s!     8 8c 8J 8# 8r6   c                	8    V P                   P                  W4      # rA   )r'  
setdefaultr  s   &&&r3   r  Element.setdefault   s    ))#77r6   c                    V ^8  d   QhRRRR/# )r/   fallbackr*   r0   r1   )r2   s   "r3   r4   r(    s      # s r6   c                    V P                  R. 4       F-  pVP                  R4      '       g   K  VP                  R4      u # 	   V P                  P	                  V4      #   \
         d    Tu # i ; i)zReturn node's language tag.

Look iteratively in self and parents for a class argument
starting with ``language-`` and return the remainder of it
(which should be a `BCP49` language tag) or the `fallback`.
classesz	language-)r  
startswithremoveprefixr$   get_language_coder9   )r;   r  r   s   && r3   r  Element.get_language_code  sg     88Ir*C~~k**''44 +	;;00:: 	O	s   A   A0/A0c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r(    s     # #d #r6   c                	^    V P                  V4       V P                  P                  V4       R # rA   )rr   r%   rY  r;   r  s   &&r3   rY  Element.append  s"    T"r6   c                    V ^8  d   QhRRRR/# )r/   r  r   r0   r?   r1   )r2   s   "r3   r4   r(    s      8  r6   c                	:    V F  pV P                  V4       K  	  R # rA   rY  )r;   r  r   s   && r3   r*  Element.extend  s    DKK r6   c                    V ^8  d   QhRRRR/# )r/   r   r   r0   r?   r1   )r2   s   "r3   r4   r(    s     % %M %D %r6   c                	    \        V\        4      '       d/   V P                  V4       V P                  P	                  W4       R # Ve   W W% R # R # rA   )r   r"   rr   r%   insert)r;   r   r  s   &&&r3   r  Element.insert  sB    dD!!T"MM  - $ r6   c                   V ^8  d   QhRR/# )r/   irV   r1   )r2   s   "r3   r4   r(  #  s     $ $S $r6   c                	8    V P                   P                  V4      # rA   )r%   popr;   r  s   &&r3   r  Element.pop#  s    }}  ##r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r(  &  s     # #d #r6   c                	<    V P                   P                  V4       R # rA   )r%   remover  s   &&r3   r  Element.remove&  s    T"r6   c               $    V ^8  d   QhRRRRRR/# )r/   r{  rV   r   r0   r1   )r2   s   "r3   r4   r(  )  s!     6 6 6 6c 6r6   c                	:    V P                   P                  WV4      # rA   )r%   r   )r;   r  r{  r   s   &&&&r3   r   Element.index)  s    }}""455r6   c                     V P                   P                  V 4      pT^ 8  d   T P                   T^,
          ,          # R#   \         d     R# i ; i)z*Return preceding sibling node or ``None``.N)r$   r   r9   r  s   & r3   previous_siblingElement.previous_sibling,  sO    	!!$'A $%q5t{{1Q32d2  		s   A   AAc                   V ^8  d   QhRR/# )r/   r0   zlist[section]r1   )r2   s   "r3   r4   r(  4  s      = r6   c                    . pT pVP                   e6   \        V\        4      '       d   VP                  V4       VP                   pKC  VP	                  4        V# )a  Return the element's section anchestors.

Return a list of all <section> elements that contain `self`
(including `self` if it is a <section>) and have a parent node.

List item ``[i]`` is the parent <section> of level i+1
(1: section, 2: subsection, 3: subsubsection, ...).
The length of the list is the element's section level.

See `docutils.parsers.rst.states.RSTState.check_subsection()`
for a usage example.

Provisional. May be changed or removed without warning.
)r$   r   sectionrY  reverse)r;   sectionsr   s   &  r3   section_hierarchyElement.section_hierarchy4  sK     kk%$((%;;Dr6   c                    V ^8  d   QhRRRR/# )r/   ro  r*   r0   rx   r1   )r2   s   "r3   r4   r(  L  s      # $ r6   c                	D    W,          . 8X  d   WP                   9   d   R # R# )FTr  rn  s   &&r3   r  Element.is_not_defaultL  s    9?s&:&::r6   c                    V ^8  d   QhRRRR/# )r/   dict_Mapping[str, Any] | Elementr0   r?   r1   )r2   s   "r3   r4   r(  R  s     
; 
;'B 
;t 
;r6   c                    \        V\        4      '       d   VP                  pV P                   F$  pV P	                  W!P                  V. 4      4       K&  	  R# )z
Update basic attributes ('ids', 'names', 'classes',
'dupnames', but not 'source') from node or dictionary `dict_`.

Provisional.
N)r   r"   r'  r"  append_attr_listr  )r;   r  r-  s   && r3   update_basic_attsElement.update_basic_attsR  sE     eT""$$E((C!!#yyb'9: )r6   c               $    V ^8  d   QhRRRRRR/# )r/   r  r*   r\  zIterable[Any]r0   r?   r1   )r2   s   "r3   r4   r(  ^  s!     ) )S )- )D )r6   c                d    V F)  pW0V,          9  g   K  W,          P                  V4       K+  	  R# )z
For each element in values, if it does not exist in self[attr], append
it.

NOTE: Requires self[attr] and values to be sequence type and the
former should specifically be a list.
Nr  )r;   r  r\  r>   s   &&& r3   r  Element.append_attr_list^  s(     EJ&
!!%( r6   c               $    V ^8  d   QhRRRRRR/# )r/   r  r*   r>   zlist[Any] | Anyr0   r?   r1   )r2   s   "r3   r4   r(  k  s$     + ++$3+8<+r6   c                    \        V P                  V4      \        4      '       g   W,          .W&   \        V\        4      '       g   V.pV P                  W4       R# )z
First, convert both self[attr] and value to a non-string sequence
type; if either is not already a sequence, convert it to a list of one
element.  Then call append_attr_list.

NOTE: self[attr] and value both must not be None.
N)r   r  r   r  )r;   r  r>   s   &&&r3   coerce_append_attr_listElement.coerce_append_attr_listk  sF     $((4.$//*DJ%&&GEd*r6   Tc               (    V ^8  d   QhRRRRRRRR/# )	r/   r  r*   r>   r   forcerx   r0   r?   r1   )r2   s   "r3   r4   r(  {  s(       S   r6   c                H    V'       g   V P                  V4      f   W V&   R# R# )zj
If self[attr] does not exist or force is True or omitted, set
self[attr] to value, otherwise do nothing.
Nr  )r;   r  r>   r  s   &&&&r3   replace_attrElement.replace_attr{  s      DHHTN*J +r6   c               (    V ^8  d   QhRRRRRRRR/# 	r/   r  r*   r>   r   replacerx   r0   r?   r1   )r2   s   "r3   r4   r(    s,     
6 
6
6$'
626
6BF
6r6   c                V    V P                  V4      VJd   V P                  W4       R# R# )z
If attr is an attribute of self, set self[attr] to
[self[attr], value], otherwise set self[attr] to value.

NOTE: replace is not used by this function and is kept only for
      compatibility with the other copy functions.
N)r  r  r;   r  r>   r  s   &&&&r3   copy_attr_convertElement.copy_attr_convert  s'     88D>&((5 'r6   c               (    V ^8  d   QhRRRRRRRR/# r   r1   )r2   s   "r3   r4   r(    s(     8 8S 8 8t 8 8r6   c                    V P                  V4      VJdc   \        V P                  V4      \        4      '       g   \        V\        4      '       d   V P                  W4       R# V P	                  WV4       R# R# )a_  
If attr is an attribute of self and either self[attr] or value is a
list, convert all non-sequence values to a sequence of 1 element and
then concatenate the two sequence, setting the result to self[attr].
If both self[attr] and value are non-sequences and replace is True or
self[attr] is None, replace self[attr] with value. Otherwise, do
nothing.
N)r  r   r   r  r  r  s   &&&&r3   copy_attr_coerceElement.copy_attr_coerce  sY     88D>&$((4.$//%&&,,T9!!$w7 'r6   c               (    V ^8  d   QhRRRRRRRR/# r   r1   )r2   s   "r3   r4   r(    s,     8 88$'8268;?8r6   c                    V P                  V4      VJdc   \        V P                  V4      \        4      '       d*   \        V\        4      '       d   V P                  W4       R# V P	                  WV4       R# R# )a  
If attr is an attribute of self and both self[attr] and value are
lists, concatenate the two sequences, setting the result to
self[attr].  If either self[attr] or value are non-sequences and
replace is True or self[attr] is None, replace self[attr] with value.
Otherwise, do nothing.
N)r  r   r   r  r  r  s   &&&&r3   copy_attr_concatenateElement.copy_attr_concatenate  sY     88D>&$((4.$//%&&%%d2!!$w7 'r6   c               (    V ^8  d   QhRRRRRRRR/# r   r1   )r2   s   "r3   r4   r(    s,     4 44$'4264;?4r6   c                X    V P                  V4      VJd   V P                  WV4       R# R# )zb
If replace is True or self[attr] is None, replace self[attr] with
value.  Otherwise, do nothing.
N)r  r  r  s   &&&&r3   copy_attr_consistentElement.copy_attr_consistent  s)     88D>&d73 'r6   Fc          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r/   r  r  
update_funr    r  rx   
and_sourcer0   r?   r1   )r2   s   "r3   r4   r(    s:     (7 (7:(7$.(7 "&(7 %)	(7
 "(7r6   c                    \        V\        4      '       d   VP                  pV'       d   V P                  pMV P                  pV P                  V4       \        WQ4       F  pV! WW,          V4       K  	  R# )a  
Updates all attributes from node or dictionary `dict_`.

Appends the basic attributes ('ids', 'names', 'classes',
'dupnames', but not 'source') and then, for all other attributes in
dict_, updates the same attribute in self.  When attributes with the
same identifier appear in both self and dict_, the two values are
merged based on the value of update_fun.  Generally, when replace is
True, the values in self are replaced or merged with the values in
dict_; otherwise, the values in self may be preserved or merged.  When
and_source is True, the 'source' attribute is included in the copy.

NOTE: When replace is False, and self contains a 'source' attribute,
      'source' is not replaced even when dict_ has a 'source'
      attribute, though it may still be merged into a list depending
      on the value of update_fun.
NOTE: It is easier to call the update-specific methods then to pass
      the update_fun method to this function.
N)r   r"   r'  is_not_list_attributeis_not_known_attributer  filter)r;   r  r  r  r  
filter_funr-  s   &&&&&  r3   update_all_attsElement.update_all_atts  sf    2 eT""$$E 33J44J 	u% *,Ct%*g6 -r6   c               (    V ^8  d   QhRRRRRRRR/# r/   r  r  r  rx   r  r0   r?   r1   )r2   s   "r3   r4   r(    s0     ) ),G).2) 26) +/	)r6   c                J    V P                  V\        P                  VV4       R# )a  
Updates all attributes from node or dictionary `dict_`.

Appends the basic attributes ('ids', 'names', 'classes',
'dupnames', but not 'source') and then, for all other attributes in
dict_, updates the same attribute in self.  When attributes with the
same identifier appear in both self and dict_ and replace is True, the
values in self are replaced with the values in dict_; otherwise, the
values in self are preserved.  When and_source is True, the 'source'
attribute is included in the copy.

NOTE: When replace is False, and self contains a 'source' attribute,
      'source' is not replaced even when dict_ has a 'source'
      attribute, though it may still be merged into a list depending
      on the value of update_fun.
N)r  r   r  r;   r  r  r  s   &&&&r3   update_all_atts_consistantly$Element.update_all_atts_consistantly  s!    * 	UG$@$@''	)r6   c               (    V ^8  d   QhRRRRRRRR/# r  r1   )r2   s   "r3   r4   r(    s0     ) )-H)/3) 37) ,0	)r6   c                J    V P                  V\        P                  VV4       R# )a  
Updates all attributes from node or dictionary `dict_`.

Appends the basic attributes ('ids', 'names', 'classes',
'dupnames', but not 'source') and then, for all other attributes in
dict_, updates the same attribute in self.  When attributes with the
same identifier appear in both self and dict_ whose values aren't each
lists and replace is True, the values in self are replaced with the
values in dict_; if the values from self and dict_ for the given
identifier are both of list type, then the two lists are concatenated
and the result stored in self; otherwise, the values in self are
preserved.  When and_source is True, the 'source' attribute is
included in the copy.

NOTE: When replace is False, and self contains a 'source' attribute,
      'source' is not replaced even when dict_ has a 'source'
      attribute, though it may still be merged into a list depending
      on the value of update_fun.
N)r  r   r  r  s   &&&&r3   update_all_atts_concatenating%Element.update_all_atts_concatenating  s!    0 	UG$A$A7'	)r6   c               (    V ^8  d   QhRRRRRRRR/# r  r1   )r2   s   "r3   r4   r(    s0     ) )(C)*.) .2) '+	)r6   c                J    V P                  V\        P                  VV4       R# )a  
Updates all attributes from node or dictionary `dict_`.

Appends the basic attributes ('ids', 'names', 'classes',
'dupnames', but not 'source') and then, for all other attributes in
dict_, updates the same attribute in self.  When attributes with the
same identifier appear in both self and dict_ whose values are both
not lists and replace is True, the values in self are replaced with
the values in dict_; if either of the values from self and dict_ for
the given identifier are of list type, then first any non-lists are
converted to 1-element lists and then the two lists are concatenated
and the result stored in self; otherwise, the values in self are
preserved.  When and_source is True, the 'source' attribute is
included in the copy.

NOTE: When replace is False, and self contains a 'source' attribute,
      'source' is not replaced even when dict_ has a 'source'
      attribute, though it may still be merged into a list depending
      on the value of update_fun.
N)r  r   r  r  s   &&&&r3   update_all_atts_coercion Element.update_all_atts_coercion  s!    2 	UG$<$<g'	)r6   c               $    V ^8  d   QhRRRRRR/# )r/   r  r  r  rx   r0   r?   r1   )r2   s   "r3   r4   r(  2  s&     4 4'B4,04 &*4r6   c                J    V P                  V\        P                  VR7       R# )a  
Updates all attributes from node or dictionary `dict_`.

Appends the basic attributes ('ids', 'names', 'classes',
'dupnames', but not 'source') and then, for all other attributes in
dict_, updates the same attribute in self.  When attributes with the
same identifier appear in both self and dict_ then first any non-lists
are converted to 1-element lists and then the two lists are
concatenated and the result stored in self; otherwise, the values in
self are preserved.  When and_source is True, the 'source' attribute
is included in the copy.

NOTE: When replace is False, and self contains a 'source' attribute,
      'source' is not replaced even when dict_ has a 'source'
      attribute, though it may still be merged into a list depending
      on the value of update_fun.
)r  N)r  r   r  )r;   r  r  s   &&&r3   update_all_atts_convertElement.update_all_atts_convert2  s$    * 	UG$=$=(2 	 	4r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r(  J  s      t r6   c                	    . V n         R # rA   r  r:   s   &r3   clearElement.clearJ  s	    r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r(  M  s     & &4 &r6   c                    V P                  V4      p\        V\        4      '       d   V P                  V4       W V&   R# Ve   W W3^,           % R# R# )z8Replace one child `Node` with another child or children.N)r   r   r"   rr   )r;   oldnewr   s   &&& r3   r  Element.replaceM  sG    

3c4  S!K_"%Qw r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r(  V  s     ' '4 'r6   c                b   Tp\        V\        4      '       g    V^ ,          p\        V\        4      '       d   VP	                  V 4       M6V P
                   F&  pW,          '       g   K  Q RV: RW,          : 24       h	  V P                  P                  W4       R#   \         d    Rp Li ; i)z
Replace `self` node with `new`, where `new` is a node or a
list of nodes.

Provisional: the handling of node attributes will be revised.
NzLosing "z" attribute: )r   r"   
IndexErrorr   r  r"  r$   r  )r;   r5  updater-  s   &&  r3   replace_selfElement.replace_selfV  s     #t$$Q fg&&$$T* ,,99 F6949EF} - 	D&  s   	B B.-B.c               (    V ^8  d   QhRRRRRRRR/# r/   
childclasszCtype[Element] | type[Text] | tuple[type[Element] | type[Text], ...]r{  rV   endr0   r(   r1   )r2   s   "r3   r4   r(  n  s5      0L +. ),	
 )3r6   c                    \        V\        4      '       g   V3p\        V\        \	        V 4      V4      4       F*  pV F!  p\        W,          V4      '       g   K  Vu u # 	  K,  	  R# )a  
Return the index of the first child whose class exactly matches.

Parameters:

- `childclass`: A `Node` subclass to search for, or a tuple of `Node`
  classes. If a tuple, any of the classes may match.
- `start`: Initial index to check.
- `end`: Initial index to *not* check.
N)r   tuplerangeminr   r;   r?  r{  r@  r   rD  s   &&&&  r3   first_child_matching_class"Element.first_child_matching_classn  sW      *e,,$J5#c$i"56Edk1-- L   7 r6   c               (    V ^8  d   QhRRRRRRRR/# r>  r1   )r2   s   "r3   r4   r(    s4      5 	
  r6   c                    \        V\        4      '       g   V3p\        V\        \	        V 4      V4      4       F4  pV F)  p\        V P
                  V,          V4      '       g   K(   K0  	  Vu # 	  R# )a  
Return the index of the first child whose class does *not* match.

Parameters:

- `childclass`: A `Node` subclass to skip, or a tuple of `Node`
  classes. If a tuple, none of the classes may match.
- `start`: Initial index to check.
- `end`: Initial index to *not* check.
N)r   rB  rC  rD  r   r%   rE  s   &&&&  r3   first_child_not_matching_class&Element.first_child_not_matching_class  sc    " *e,,$J5#c$i"56EdmmE2A66    7 r6   c               $    V ^8  d   QhRRRRRR/# rS   r1   )r2   s   "r3   r4   r(    s!     . .c .3 .s .r6   c                	   aa SS,          : V P                  4       : R 2pVV3R lV P                   4       pRP                  V.VO54      # )r  c              3  T   <"   T F  qP                  SS^,           4      x  K  	  R# 5ir   )rZ   )r  rD  rT   rU   s   & r3   r  "Element.pformat.<locals>.<genexpr>  s!     GAYYvuQw//s   %(r  )rO  r%   r
  )r;   rT   rU   tagline	childrepss   &ff  r3   rZ   Element.pformat  s<    $UlDMMO<GG	ww,),--r6   c                   V ^8  d   QhRR/# r]   r1   )r2   s   "r3   r4   r(          d r6   c                	    V P                   ! RR V P                  /V P                  B pV P                  Vn        V P                  Vn        V P
                  Vn        V# )r   r1   )r}   r   r'  r-   r'   r)   r;   objs   & r3   r_   Element.copy  sF    nnIt~~II[[
99
r6   c                   V ^8  d   QhRR/# r]   r1   )r2   s   "r3   r4   r(    s      $ r6   c                	    V P                  4       pTP                  V P                   Uu. uF  q"P                  4       NK  	  up4       V# u upi rA   )r_   r*  r%   rd   )r;   r_   rq   s   &  r3   rd   Element.deepcopy  s<    yy{4==A=%^^%=AB Bs   Ac               $    V ^8  d   QhRRRRRR/# )r/   r[  r  idr0   r?   r1   )r2   s   "r3   r4   r(    s&     $ $!+$)$ !%$r6   c                    RV n         \        V R/ 4      P                  V4      p\        V R/ 4      P                  V4      pV'       d   Vf   Q hRVn         V'       d   Vf   Q hRVn         R# R# )zINote that this Element has been referenced by its name
`name` or id `id`.Texpect_referenced_by_nameexpect_referenced_by_idN)
referencedgetattrr  )r;   r[  r]  by_nameby_ids   &&&  r3   note_referenced_byElement.note_referenced_by  sr     
 $ ;R@DDTJ7<@@D###!%G>!>#E r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r(    s     / / / /r6   c                    WP                   9  # )zs
Returns True if and only if the given attribute is NOT one of the
basic list attributes defined for all Elements.
r  r   r  s   &&r3   r  Element.is_not_list_attribute  s     ....r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r(    s     1 1# 1$ 1r6   c                    WP                   9  # )up   
Return True if `attr` is NOT defined for all Element instances.

Provisional. May be removed in Docutils 2.0.
)r   ri  s   &&r3   r  Element.is_not_known_attribute  s     0000r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r(    s     < <T <r6   c           
     D   . pV P                   P                  4        F  w  r#VP                  R4      '       d   K  W P                  9  d6   RP	                  V P                  4      pVP                  RV RV R24       Kc   \        V,          ! V4      V P                   V&   K  	  V'       d6   \        R	V P                  4        R
2RP	                  V4      ,           V R7      hR#   \        \        \        3 d&   pTP                  RT RT RT 24        Rp?K  Rp?ii ; i)zNormalize and validate element attributes.

Convert string values to expected datatype.
Normalize values.

Raise `ValidationError` for invalid attributes or attribute values.

Provisional.
z	internal:", "zAttribute "z" not one of "".z" has invalid value "z".
  NElement z invalid:
  
  problematic_element)r'  r+  r  r  r
  rY  ATTRIBUTE_VALIDATORS
ValueErrorr   KeyErrorValidationErrorrO  )r;   messagesro  r>   vaes   &     r3   validate_attributesElement.validate_attributes  s    ////1JC~~k**///[[!6!67+cU.B GHN';C'@'G$ 2 !HT]]_,=]"K$*KK$9#:6:< <  	84 N!#&;E7&LN NNs    C$$D:DDc               $    V ^8  d   QhRRRRRR/# r/   modelz_ContentModelTuple | NoneelementszSequence | Noner0   r   r1   )r2   s   "r3   r4   r(    s&     +< +< 9+<#2+< #+<r6   c                   Vf   V P                   pVf   V P                  p\        V4      p\        VR4      pV F  w  rV\	        WE4      '       g&   VR9   d   \        V P                  WE4      VR7      hK;  VP                  4        VR9   d   \        VR4      pK`  V F(  p\	        WE4      '       g    Ky   VP                  4        K*  	  RpK  	  Vf   . # V.VO#   \         d     KK  i ; i)a<  Test compliance of `elements` with `model`.

:model: content model description, default `self.content_model`,
:elements: list of doctree elements, default `self.children`.

Return list of children that do not fit in the model or raise
`ValidationError` if the content does not comply with the `model`.

Provisional.
Nrt  )r   r   )r   r   )	r$  r%   iterr   r   ry  _report_childr   r9   )r;   r  r  	ichildrenrq   category
quantifiers   &&&    r3   validate_contentElement.validate_content  s     =&&E}}HN	Y%$) He..+)$*<*<U*M>CE E  '')Z'Y-&E%e66//1	 ' !E- %*. ]r;(;(;;	 * s   4CC('C(c                    V ^8  d   QhRRRR/# )r/   r  zElement | Iterable[Element]r0   r*   r1   )r2   s   "r3   r4   r(     s     , , ;, ,r6   c                	>    VP                   pRV P                  4        R2pVf	   V RV R2# \	        V\
        4      '       d   V RV RVP                  4        R2# V RV R	VP                  4        R
2#   \         d    R P                  R T 4       4      p Li ; i)z> or <c              3  8   "   T F  qP                   x  K  	  R # 5irA   )r~   rL  s   & r3   r  (Element._report_child.<locals>.<genexpr>(  s     !?h**hrN  rr  z
 invalid:
z  Missing child of type <z>.z  Expecting child of type <z>, not text data "rq  z>, not r   )r~   r9   r
  rO  r   r   ri   )r;   rq   r  _typemsgs   &&&  r3   r  Element._report_child   s    
	@%%E )5=U3E7"==eT""e6ug >&&+lln%5R9 :%25' :~~'(+ 	,  	@MM!?h!??E	@s   A6 6#BBc                    V ^8  d   QhRRRR/# r   r1   )r2   s   "r3   r4   r(  2  s     4 4$ 4$ 4r6   c                   V P                  4        V P                  4       pV Fw  p\        V\        4      '       d1   \	        RV P                  4        RVP                  4        R2V R7      h\	        RV P                  4        RVP                  4        R2VR7      h	  V'       d   V  F  pVP                  VR7       K  	  R# R# )	aQ  Validate Docutils Document Tree element ("doctree").

Raise ValidationError if there are violations.
If `recursive` is True, validate also the element's descendants.

See `The Docutils Document Tree`__ for details of the
Docutils Document Model.

__ https://docutils.sourceforge.io/docs/ref/doctree.html

Provisional (work in progress).
rr  z invalid:
  Spurious text: "rq  rt  z invalid:
  Child element z not allowed at this position.r   N)r}  r  r   r   ry  rO  ri   r   )r;   r   leftover_childsrq   s   &&  r3   r   Element.validate2  s     	  "//1$E%&&%0A B;;@<<>:J"'N:>@ @ &0A B99>9I8J KF'F ;@A A % 3  r6   )r'  r%   r   ra  r+   )idsr  rA  dupnames)r'   backrefsr1   )r  rA   )r   )TF)Fr   NN)Qr~   r   r   r   r   r  r   r  r   r!  r"  r#  r$  r+   r%  r.  rM   r   r   rR  rO  rP  rQ  rj  rp  r|  r  r  r  r  r  ri   r  r8  r  r  r  r  has_keyr  rY  r*  r  r  r  sysmaxsizer   r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r(  r,  r0  r  r;  rF  rJ  rZ   r_   rd   re  classmethodr  r  r}  r  r  r   r   r1   r6   r3   r   r     s/   -^ EOUD .;e;  0u/
 0e/I-e-N+e+424M/4" GZ
 #)%(?$8L5,#((&?"$
88
B%%@
=1'&8 G#%$# ()ckk 630
;)+ 
68 8 4 2F(,+0	(7T)0)6)840&'6 12.1kk	8 {{6.

$( / / 1 1<8+<Z,$4 4r6   c                      ] tR tRtRtRtR# )RootiX  z'Element at the root of a document tree.r1   Nr~   r   r   r   r   r   r1   r6   r3   r  r  X  s    1r6   r  c                      ] tR tRtRtRtR# )
Structurali\  zk`Structural elements`__.

__ https://docutils.sourceforge.io/docs/ref/doctree.html
   #structural-elements
r1   Nr  r1   r6   r3   r  r  \      r6   r  c                      ] tR tRtRtRtR# )SubStructuralid  z`Structural subelements`__ are children of `Structural` elements.

Most Structural elements accept only specific `SubStructural` elements.

__ https://docutils.sourceforge.io/docs/ref/doctree.html
   #structural-subelements
r1   Nr  r1   r6   r3   r  r  d      r6   r  c                      ] tR tRtRtRtR# )Bibliographicin  z`Bibliographic Elements`__ (displayed document meta-data).

__ https://docutils.sourceforge.io/docs/ref/doctree.html
   #bibliographic-elements
r1   Nr  r1   r6   r3   r  r  n  r  r6   r  c                      ] tR tRtRtRtR# )Bodyiv  z[`Body elements`__.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#body-elements
r1   Nr  r1   r6   r3   r  r  v      r6   r  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )
Admonitioni}  z5Admonitions (distinctive and self-contained notices).r   r   r$  r1   N	r~   r   r   r   r   r  r$  r   r   r1   r6   r3   r  r  }  s    ?!3K>M5)r6   r  c                      ] tR tRtRtRtR# )
Sequentiali  zList-like body elements.r1   Nr  r1   r6   r3   r  r    s    "r6   r  c                      ] tR tRtRtRtR# )Generali  zMiscellaneous body elements.r1   Nr  r1   r6   r3   r  r    s    &r6   r  c                      ] tR tRtRtRtR# )Speciali  zSpecial internal body elements.r1   Nr  r1   r6   r3   r  r    s    )r6   r  c                      ] tR tRtRtRtR# )Parti  z`Body Subelements`__ always occur within specific parent elements.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#body-subelements
r1   Nr  r1   r6   r3   r  r    r  r6   r  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )
Decorativei  zHDecorative elements (`header` and `footer`).

Children of `decoration`.
r   r   r$  r1   Nr  r1   r6   r3   r  r    s     "3K>M5)r6   r  c                      ] tR tRtRtRtR# )Inlinei  zJInline elements contain text data and possibly other inline elements.
    r1   Nr  r1   r6   r3   r  r        r6   r  c                      ] tR tRtRtRtR# )PreBibliographici  z7Elements which may occur before Bibliographic Elements.r1   Nr  r1   r6   r3   r  r    s    Ar6   r  c                      ] tR tRtRtRtR# )	Invisiblei  z.Internal elements that don't appear in output.r1   Nr  r1   r6   r3   r  r    s    8r6   r  c                      ] tR tRtRtRtR# )Labeledi  z(Contains a `label` as its first element.r1   Nr  r1   r6   r3   r  r        2r6   r  c                  &    ] tR tRt$ RtR]R&   RtR# )
Resolvablei  Frx   resolvedr1   N)r~   r   r   r   r  r   r   r1   r6   r3   r  r    s    Hdr6   r  c                      ] tR tRt$ Rt]P                  R
,           tR]R&   ]P                  R
,           tR]R&   R R lt	Rt
R	# )BackLinkablei  z6Mixin for Elements that accept a "backrefs" attribute.r   r  r  c               $    V ^8  d   QhRRRRRR/# )r/   r;   r   refidr*   r0   r?   r1   )r2   s   "r3   r4   BackLinkable.__annotate__  s!     ' '' '# '$ 'r6   c                	6    V R ,          P                  V4       R# )r  Nr  )r;   r  s   &&r3   add_backrefBackLinkable.add_backref  s    Z&r6   r1   Nr  )r~   r   r   r   r   r   r  r   r  r  r   r1   r6   r3   r  r    s:    @$44}DOUD%66FeF' 'r6   r  c                      ] tR tRtRtRtR# )Referentiali  z8Elements holding a cross-reference (outgoing hyperlink).r1   Nr  r1   r6   r3   r  r    s    Br6   r  c                  8    ] tR tRt$ Rt^ tR]R&   RtR]R&   RtR# )	
Targetablei  z-Cross-reference targets (incoming hyperlink).rV   ra  Nr  indirect_reference_namer1   )	r~   r   r   r   r   ra  r   r  r   r1   r6   r3   r  r    s    7J*.Z.r6   r  c                      ] tR tRtRtRtR# )Titulari  z/Title, sub-title, or informal heading (rubric).r1   Nr  r1   r6   r3   r  r        9r6   r  c                  T    ] tR tRt$ Rt]]3R33tR]R&   Rt	R]R&    RR R	 llt
R
tR# )TextElementi  a  
An element which directly contains text.

Its children are all `Text` or `Inline` subclass nodes.  You can
check whether an element's context is inline simply by checking whether
its immediate parent is a `TextElement` instance (including subclasses).
This is handy for nodes like `image` that can appear both inline and as
standalone body elements.

If passing children to `__init__()`, make sure to set `text` to
``''`` or some other suitable value.
r   r   r$  r  r%  c               (    V ^8  d   QhRRRRRRRR/# r/   r   r*   textr'  r   r0   r?   r1   )r2   s   "r3   r4   TextElement.__annotate__  s6     G GGG  #	G
 Gr6   c                	    V'       d)   \        V4      p\        P                  ! WV.VO5/ VB  R # \        P                  ! W.VO5/ VB  R # rA   )r   r   r.  )r;   r   r  r%   r'  textnodes   &&&*, r3   r.  TextElement.__init__  sK     DzHTh + +)+ TFxF:Fr6   r1   Nr  r  )r~   r   r   r   r   r   r  r$  r   r%  r.  r   r1   r6   r3   r  r    s;     #F^S13M53 #%%$?G Gr6   r  c                  h   a  ] tR tRt$ Rt]P                  R,           tR]R&   R	R V 3R llltRt	V ;t
# )
FixedTextElementi  z5An element which directly contains preformatted text.r   r  c               (    V ^8  d   QhRRRRRRRR/# r  r1   )r2   s   "r3   r4   FixedTextElement.__annotate__  s0     2 222  #	2
 2r6   c                	N   < \         SV `  ! W.VO5/ VB  R V P                  R&   R# )preserve	xml:spaceN)superr.  r'  )r;   r   r  r%   r'  r}   s   &&&*,r3   r.  FixedTextElement.__init__  s*     	B8BzB'1$r6   r1   )r  r  )r~   r   r   r   r   r   r  r   r.  r   __classcell__r}   s   @r3   r  r    s+    ?%66GeG2 2 2r6   r  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )PureTextElementi  z1An element which only contains text, no children.r   r   r$  r1   N)	r~   r   r   r   r   r   r$  r   r   r1   r6   r3   r  r    s    ;!3K>M5)r6   r  c                      ] tR tRtRtR# )headeri  r1   Nr~   r   r   r   r   r1   r6   r3   r  r        4r6   r  c                      ] tR tRtRtR# )footeri  r1   Nr  r1   r6   r3   r  r    r  r6   r  c                  L    ] tR tRt$ Rt]P                  R,           tR]R&   RtR# )titlei  zFTitle of `document`, `section`, `topic` and generic `admonition`.
    r   r  r1   N)autor  	r~   r   r   r   r   r   r  r   r   r1   r6   r3   r  r    s    %669JJeJr6   r  c                  &    ] tR tRtRtR R ltRtR# )subtitlei  z1Sub-title of `document`, `section` and `sidebar`.c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   subtitle.__annotate__"  s     < <4 <r6   c                    V P                   '       dL   V P                   P                  V 4      ^ 8X  d*   \        RV P                   P                  4        R2V R7      hR# R# )z0Check position of subtitle: must follow a title.rr  z2 invalid:
  <subtitle> only allowed after <title>.rt  N)r$   r   ry  rO  r:   s   &r3   r   subtitle.validate_position"  sY    ;;;4;;,,T2a7!HT[[-A-A-C,D EO #O6:< < 8;r6   r1   Nr~   r   r   r   r   r   r   r1   r6   r3   r  r    s    ;< <r6   r  c                  L    ] tR tRt$ Rt]P                  R,           tR]R&   RtR# )metai*  z;Container for "invisible" bibliographic data, or meta-data.r   r  r1   N)contentdir
http-equivlangmediar[  schemer  r1   r6   r3   r  r  *  s%    E%66 :K Ke Kr6   r  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )docinfoi0  z+Container for displayed document meta-data.r   r   r$  r1   N)	r~   r   r   r   r   r  r$  r   r   r1   r6   r3   r
  r
  0  s    5*C02M52r6   r
  c                  N    ] tR tRt$ Rt]R3]R33tR]R&   R R lt	R R	 lt
R
tR# )
decorationi6  z$Container for `header` and `footer`.r   r   r$  c                   V ^8  d   QhRR/# )r/   r0   r  r1   )r2   s   "r3   r4   decoration.__annotate__=  s        F  r6   c                	    \        V P                  4      '       d(   \        V P                  ^ ,          \        4      '       g   V P	                  ^ \        4       4       V P                  ^ ,          # r   )r   r%   r   r  r  r:   s   &r3   
get_headerdecoration.get_header=  sE    4==!!DMM!4Df)M)MKK68$}}Qr6   c                   V ^8  d   QhRR/# )r/   r0   r  r1   )r2   s   "r3   r4   r  B  s     ! !F !r6   c                	    \        V P                  4      '       d(   \        V P                  R,          \        4      '       g   V P	                  \        4       4       V P                  R,          # )r   r  )r   r%   r   r  rY  r:   s   &r3   
get_footerdecoration.get_footerB  sC    4==!!DMM"4Ev)N)NKK!}}R  r6   r1   N)r~   r   r   r   r   r  r  r$  r   r  r  r   r1   r6   r3   r  r  6  s0    .#SM#SMM5 
 
! !r6   r  c                  &    ] tR tRtRtR R ltRtR# )
transitioniH  z{Transitions__ are breaks between untitled text parts.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#transition
c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   transition.__annotate__N  s     < <4 <r6   c                   RV P                   P                  4        R2.pV P                  4       pVe'   \        V\        \
        \        \        34      '       d   VP                  R4       V P                   P                  V 4      \        V P                   4      ^,
          8X  d   VP                  R4       \        V\        4      '       d   VP                  R4       \        V4      ^8  d   \        RP                  V4      V R7      hR# )	zCheck additional constraints on `transition` placement.

A transition may not begin or end a section or document,
nor may two transitions be immediately adjacent.
rr  z	 invalid:Nz1<transition> may not begin a section or document.z/<transition> may not end a section or document.z8<transition> may not directly follow another transition.rs  rt  )r$   rO  r  r   r  r  r  r  rY  r   r   r  ry  r
  )r;   rz  predecessors   &  r3   r   transition.validate_positionN  s     t{{3356i@A++-+xz'JKK OOCE;;T"c$++&6&::OOMNk:..OOJLx=1!&++h"76:< < r6   r1   Nr   r1   r6   r3   r  r  H  s    
< <r6   r  c                  6    ] tR tRt$ Rt]R3]R33tR]R&   Rt	R# )	topicij  zl
Topics__ are non-recursive, mini-sections.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#topic
r   r   r   r$  r1   N)
r~   r   r   r   r   r  r  r$  r   r   r1   r6   r3   r  r  j  s     
 #CL4+6M56r6   r  c                  @    ] tR tRt$ Rt]R3]R3]]3R33t	R]
R&   RtR# )	sidebarit  z
Sidebars__ are like parallel documents providing related material.

A sidebar is typically offset by a border and "floats" to the side
of the page

__ https://docutils.sourceforge.io/docs/ref/doctree.html#sidebar
r   r   r   r$  r1   N)r~   r   r   r   r   r  r  r  r  r$  r   r   r1   r6   r3   r!  r!  t  s1     #CL%sO#T]C0M5 r6   r!  c                      ] tR tRtRtRtR# )r  i  zrDocument section__. The main unit of hierarchy.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#section
r1   Nr  r1   r6   r3   r  r    r  r6   r  c            
         ] tR tRt$ Rt]P                  RD,           tR]R&   ]R3]	R3]
R3]R3]R3]R3]]]]3R3]]3R33tR]R&   R R	 ltR
 R ltRER R lltRFR R lltRGR R lltR R ltR R ltRER R lltRER R lltR R ltR R ltR R  ltR! R" ltR# R$ lt R% R& lt!R' R( lt"R) R* lt#R+ R, lt$R- R. lt%R/ R0 lt&R1 R2 lt'RER3 R4 llt(R5 R6 lt)RER7 R8 llt*R9 R: lt+R; R< lt,R= R> lt-R? R@ lt.RA RB lt/RCt0R# )Hr8   i  zr
The document root element.

Do not instantiate this class directly; use
`docutils.utils.new_document()` instead.
r   r  r   r   r$  c               (    V ^8  d   QhRRRRRRRR/# )	r/   r  r   r{   r   kwargsr   r0   r?   r1   )r2   s   "r3   r4   document.__annotate__  s6     ^( ^(!^(#^( 	^(
 ^(r6   c                	L   \         P                  ! V .VO5/ VB  R V n         R V n         Wn         W n         . V n         / V n         / V n         / V n	         / V n
         / V n         / V n         / V n         / V n         / V n         . V n         . V n         . V n         . V n         . V n         . V n         ^V n         ^ V n         \1        4       V n         . V n         . V n         ^ R IpVP:                  P=                  V 4      V n         . V n          R V n!         W n"        R # rA   )#r   r.  rn   ro   r  r{   indirect_targetssubstitution_defssubstitution_namesrefnamesrefidsnameids	nametypesr  footnote_refscitation_refsautofootnotesautofootnote_refssymbol_footnotessymbol_footnote_refs	footnotes	citationsautofootnote_startsymbol_footnote_startr   
id_counterparse_messagestransform_messagesdocutils.transforms
transformsr   transformerinclude_logr  r-   )r;   r  r{   argsr%  docutilss   &&&*, r3   r.  document.__init__  s`    	///.2I(,8 (+"*'.0,EGM24N24=02;').*,	 (*&BDNBDN-/3;==02,>@!6)+7)+%'(4*+"3(/	74668:B"(0(;(;(G(G(MD8:G-1+#'r6   c                   V ^8  d   QhRR/# r  r1   )r2   s   "r3   r4   r&    s      n r6   c                N    V P                   P                  4       pRVR&   RVR&   V# )z2
Return dict with unpicklable references removed.
Nr{   r>  )__dict__r_   )r;   states   & r3   __getstate__document.__getstate__  s/     ""$ j#mr6   Nc                    V ^8  d   QhRRRR/# )r/   rH   rI   r0   r   r1   )r2   s   "r3   r4   r&    s      * 6F r6   c                    Vf
   ^ RI Hu Hp VP                  4       pVP	                  V P                  V4      4       V# )z-Return a DOM representation of this document.N)rK   rH   r   rL   r:  rM   rN   s   && r3   rP   document.asdom  s4    ;)),,.DNN734r6   c               (    V ^8  d   QhRRRRRRRR/# )r/   r   r   msgnoder#   suggested_prefixr*   r0   r1   )r2   s   "r3   r4   r&  #  s0     0 00&0 "%0 	0r6   c           
     	R   VR ,          '       d   VR ,           F  pV P                   P                  WA4       V P                   V,          VJg   K7  V P                  P                  RV RV P                   V,          P	                  4        RVP	                  4        2VR7      pVf   K  W%,          pK  	  X# V P
                  P                  pV P
                  P                  pRpRpVR,           FT  p	V'       d   \        RV	,           4      R	,          pM\        V	4      pWh,           pV'       g   KB  W@P                   9  g   KT   M	  V'       d"   VP                  R
4      '       d   VR,           p
MFWg,           p
V
P                  R
4      '       d(   V
RR  T;'       g    \        VP                  4       R2p
 V P                  V
;;,          ^,          uu&   V
 V P                  V
,           2pW@P                   9  g   KI   VR ,          P                  V4       WP                   V&   V# )r  zDuplicate ID: "z
" used by z and 	base_nodeNr  rA  x:r   NN%-r  )r  r  r{   errorrO  r  	id_prefixauto_id_prefixmake_idendswithr+   r9  rY  )r;   r   rM  rN  r]  r  rV  rW  base_idr[  prefixs   &&&&       r3   set_iddocument.set_id#  s   
 ;;5kk##B-88B<t+----t:15"1F1F1H0I J559]]_4E/G 9= . >C * " IMM++	55MMD!#d(+B/!$-$Bw2XX- " >22377 c"3??3''"("+/? 0H 0H29$,,2G/IHIMF'1,'x 789XX%U2	r6   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r/   r   r   r]  r*   rM  r#   explicitrx   r0   r?   r1   )r2   s   "r3   r4   r&  U  s:     20 20%2020 "020 #'	20
 "20r6   c                    \        VR,          4       FD  pWPP                  9   d   V P                  WWSV4       K(  W P                  V&   W@P                  V&   KF  	  R# )a  
Update the name/id mappings.

`self.nameids` maps names to IDs. The value ``None`` indicates
that the name is a "dupname" (i.e. there are already at least
two targets with the same name and type).

`self.nametypes` maps names to booleans representing
hyperlink target type (True==explicit, False==implicit).

The following state transition table shows how `self.nameids` items
("id") and `self.nametypes` items ("type") change with new input
(a call to this method), and what actions are performed:

========  ====  ========  ====  ========  ======== =======  ======
 Input      Old State      New State            Action      Notes
--------  --------------  --------------  ----------------  ------
type      id    type      id    type      dupname  report
========  ====  ========  ====  ========  ======== =======  ======
explicit                  new   explicit
implicit                  new   implicit
explicit  old   explicit  None  explicit  new,old  WARNING  [#ex]_
implicit  old   explicit  old   explicit  new      INFO     [#ex]_
explicit  old   implicit  new   explicit  old      INFO     [#ex]_
implicit  old   implicit  None  implicit  new,old  INFO     [#ex]_
explicit  None  explicit  None  explicit  new      WARNING
implicit  None  explicit  None  explicit  new      INFO
explicit  None  implicit  new   explicit
implicit  None  implicit  None  implicit  new      INFO
========  ====  ========  ====  ========  ======== =======  ======

.. [#] Do not clear the name-to-id map or invalidate the old target if
   both old and new targets refer to identical URIs or reference names.
   The new target is invalidated regardless.

Provisional. There will be changes to prefer explicit reference names
as base for an element's ID.
rA  N)rB  r-  set_duplicate_name_idr.  )r;   r   r]  rM  r_  r[  s   &&&&& r3   set_name_id_mapdocument.set_name_id_mapU  sN    X $w-(D||#**4THM &(T"'/t$ )r6   c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r/   r   r   r]  r*   r[  rM  r_  rx   r0   r?   r1   )r2   s   "r3   r4   r&    sD     =& =&$+=&"%=& %(=& (/	=&
 )-=& $(=&r6   c                	D   V P                   V,          pV P                  V,          pV P                  P                  V4      p^ p	T;'       g    TV P                  V&   Ve   RV9   d   VR,          VP                  R4      8X  g%   RV9   d_   VR,          VP                  R4      8X  dB   ^p	VP                  R4      ;'       g    VP                  R4      p
RV RV
 R2p\	        W4       MV'       da   V'       d3   ^p	RV R2p\	        W4       Ve   \	        W4       RV P                   V&   M_W P                   V&   Ve   ^p	RV R2p\	        W4       M9^p	R	V R2p\	        W4       Ve#   V'       g   \	        W4       RV P                   V&   V	'       de   V.p\        V\        4      '       d
   RV9   d   . pV P                  P                  V	XVVR
7      pVe   WM,          p VP                  RR7       R# R# R#   \         d    TP                  4        RTn         R# i ; i)r   NrefnamerefurizDuplicate name "z" for external target "rq  z!Duplicate explicit target name: "z,Target name overrides implicit target name "z!Duplicate implicit target name: ")r  rQ  Fr  )r-  r.  r  r  dupnamer   targetr{   system_messager   ry  r  r$   )r;   r   r]  r[  rM  r_  old_idold_explicitold_noderU   refsr  r  s   &&&&&&        r3   ra  document.set_duplicate_name_id  s	    d#~~d+88<<'+77xt$y/X\\)5L"L4DNhll86L$L E((8$;;(;C"4&(?uBGAD7vR@#%H+)-DLL&%'T"%EFtfBOAH+E3D6<AD!,'%)T"tH$''H,<--..ua8@9= / ?C "&$$u$5 #  ' &KKM!%CJ&s   !G9 9"HHc                    V ^8  d   QhRRRR/# )r/   r[  r*   r0   rx   r1   )r2   s   "r3   r4   r&    s     $ $S $T $r6   c                	    WP                   9   # rA   )r-  )r;   r[  s   &&r3   has_namedocument.has_name  s    ||##r6   c               $    V ^8  d   QhRRRRRR/# r/   ri  r   rM  r#   r0   r?   r1   )r2   s   "r3   r4   r&    s)     B B!B,:BFJBr6   c                	P    V P                  W4      pV P                  WVR R7       R# )Fr_  Nr\  rb  r;   ri  rM  r]  s   &&& r3   note_implicit_targetdocument.note_implicit_target  s'    
 [[)V5Ar6   c               $    V ^8  d   QhRRRRRR/# rv  r1   )r2   s   "r3   r4   r&    s)     A A!A,:AFJAr6   c                	P    V P                  W4      pV P                  WVR R7       R# )Trx  Nry  rz  s   &&& r3   note_explicit_targetdocument.note_explicit_target  s%    [[)V4@r6   c                    V ^8  d   QhRRRR/# r/   r   r   r0   r?   r1   )r2   s   "r3   r4   r&    s     C C CT Cr6   c                	j    V P                   P                  VR ,          . 4      P                  V4       R# rf  N)r+  r  rY  r;   r   s   &&r3   note_refnamedocument.note_refname  s%      i"5<<TBr6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r&    s     ? ?w ?4 ?r6   c                	j    V P                   P                  VR ,          . 4      P                  V4       R# )r  N)r,  r  rY  r  s   &&r3   
note_refiddocument.note_refid  s%    tG}b188>r6   c                    V ^8  d   QhRRRR/# r/   ri  r0   r?   r1   )r2   s   "r3   r4   r&    s     & &6 &d &r6   c                	    V P                   P                  V4       VR ,          '       d   V P                  V4       R# R# )rA  N)r(  rY  r  r;   ri  s   &&r3   note_indirect_targetdocument.note_indirect_target  s2    $$V,'??f% r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r&    s      F t r6   c                	(    V P                  V4       R # rA   )r\  r  s   &&r3   note_anonymous_targetdocument.note_anonymous_target  s    Fr6   c                    V ^8  d   QhRRRR/# r/   footnoter0   r?   r1   )r2   s   "r3   r4   r&    s     , ,( ,t ,r6   c                	^    V P                  V4       V P                  P                  V4       R # rA   )r\  r1  rY  r;   r  s   &&r3   note_autofootnotedocument.note_autofootnote  s"    H!!(+r6   c                    V ^8  d   QhRRRR/# r/   rn  footnote_referencer0   r?   r1   )r2   s   "r3   r4   r&    s     + +); + +r6   c                	^    V P                  V4       V P                  P                  V4       R # rA   )r\  r2  rY  r;   rn  s   &&r3   note_autofootnote_refdocument.note_autofootnote_ref  s"    C%%c*r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r&    s     / /X /$ /r6   c                	^    V P                  V4       V P                  P                  V4       R # rA   )r\  r3  rY  r  s   &&r3   note_symbol_footnotedocument.note_symbol_footnote  s"    H$$X.r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r&    s     . .,> .4 .r6   c                	^    V P                  V4       V P                  P                  V4       R # rA   )r\  r4  rY  r  s   &&r3   note_symbol_footnote_ref!document.note_symbol_footnote_ref  s"    C!!((-r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r&    s     ( (h (4 (r6   c                	^    V P                  V4       V P                  P                  V4       R # rA   )r\  r5  rY  r  s   &&r3   note_footnotedocument.note_footnote  s     Hh'r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r&          %7 D r6   c                	    V P                  V4       V P                  P                  VR ,          . 4      P                  V4       V P	                  V4       R# r  )r\  r/  r  rY  r  r  s   &&r3   note_footnote_refdocument.note_footnote_ref  A    C%%c)nb9@@E#r6   c                    V ^8  d   QhRRRR/# )r/   citationr0   r?   r1   )r2   s   "r3   r4   r&     s     ( (h (4 (r6   c                	<    V P                   P                  V4       R # rA   )r6  rY  )r;   r  s   &&r3   note_citationdocument.note_citation   s    h'r6   c                    V ^8  d   QhRRRR/# )r/   rn  citation_referencer0   r?   r1   )r2   s   "r3   r4   r&    r  r6   c                	    V P                  V4       V P                  P                  VR ,          . 4      P                  V4       V P	                  V4       R# r  )r\  r0  r  rY  r  r  s   &&r3   note_citation_refdocument.note_citation_ref  r  r6   c               (    V ^8  d   QhRRRRRRRR/# )	r/   subdefsubstitution_definitiondef_namer*   rM  r#   r0   r?   r1   )r2   s   "r3   r4   r&    s6     C C&=C(+C (6C $(	Cr6   c                	"   \        V4      pW@P                  9   dO   V P                  P                  R V,          VR7      pVe	   W5,          pV P                  V,          p\	        Wd4       WP                  V&   W@P
                  \        V4      &   R# )z-Duplicate substitution definition name: "%s".rP  N)whitespace_normalize_namer)  r{   rU  rh  r*  fully_normalize_name)r;   r  r  rM  r[  r  oldnodes   &&&&   r3   note_substitution_defdocument.note_substitution_def  s    
 )2)))--%%EL & & (C ",,T2GG"'-t$>B 4T :;r6   c               $    V ^8  d   QhRRRRRR/# )r/   subrefsubstitution_referencerf  r*   r0   r?   r1   )r2   s   "r3   r4   r&    s&     ? ?&<?'*? $(?r6   c                	"    \        V4      VR &   R# r  )r  )r;   r  rf  s   &&&r3   note_substitution_refdocument.note_substitution_ref  s     6g>yr6   c               $    V ^8  d   QhRRRRRR/# )r/   pendingpriorityr(   r0   r?   r1   )r2   s   "r3   r4   r&  !  s$     8 8"8.88DH8r6   c                	<    V P                   P                  W4       R # rA   )r>  add_pending)r;   r  r  s   &&&r3   note_pendingdocument.note_pending!  s    $$W7r6   c                    V ^8  d   QhRRRR/# r/   messagerj  r0   r?   r1   )r2   s   "r3   r4   r&  %  s     , ,. ,T ,r6   c                	<    V P                   P                  V4       R # rA   )r:  rY  r;   r  s   &&r3   note_parse_messagedocument.note_parse_message%  s    ""7+r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r&  (  s     0 0n 0 0r6   c                	<    V P                   P                  V4       R # rA   )r;  rY  r  s   &&r3   note_transform_messagedocument.note_transform_message(  s    &&w/r6   c               $    V ^8  d   QhRRRRRR/# )r/   r'   r&   offsetr(   r0   r?   r1   )r2   s   "r3   r4   r&  +  s&     + +*+&+ +r6   c                	    T;'       d    \         P                  ! V4      V n        Vf	   W n        R # V^,           V n        R # rA   )osfspathrn   ro   )r;   r'   r  s   &&&r3   note_sourcedocument.note_source+  s4     %::6):> & &
Dr6   c                   V ^8  d   QhRR/# r]   r1   )r2   s   "r3   r4   r&  5  rT  r6   c                	    V P                   ! V P                  V P                  3/ V P                  B pV P                  Vn        V P
                  Vn        V# rA   )r}   r  r{   r'  r'   r)   rV  s   & r3   r_   document.copy5  sC    nnT]]DMM 0#0[[
99
r6   c                   V ^8  d   QhRR/# )r/   r0   r  r1   )r2   s   "r3   r4   r&  <  s      
 r6   c                	   V P                   '       gq   \        4       V n         V P                  \        \        34      pVf(   V P	                  V P                   4       V P                   # V P                  WP                   4       V P                   # rA   )r  rJ  r  r  rY  r  )r;   r   s   & r3   get_decorationdocument.get_decoration<  se    *4,DO77$HE}DOO,  E??3r6   )r-   r2  r7  r1  r0  r6  ro   rn   r  r/  r5  r9  r  r?  r(  r-  r.  r:  r,  r+  r{   r  r)  r*  r4  r8  r3  r;  r>  )r  rA   Nr  )NF)1r~   r   r   r   r   r   r  r   r  r  r  r  r
  r  r  r  r!  r  r$  r.  rG  rP   r\  rb  ra  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r_   r  r   r1   r6   r3   r8   r8     s    &66CeC"CL%sO!3K'-$cN'-"E7J?E%z2C8M5 "^(@0d20h=&~$BA
C?&
,+/.(
(
C&?8,0+ r6   r8   c                      ] tR tRtRtR# )authoriJ  r1   Nr  r1   r6   r3   r  r  J      $r6   r  c                      ] tR tRtRtR# )organizationiK  r1   Nr  r1   r6   r3   r  r  K      r6   r  c                      ] tR tRtRtR# )addressiL  r1   Nr  r1   r6   r3   r  r  L  r  r6   r  c                      ] tR tRtRtR# )contactiM  r1   Nr  r1   r6   r3   r  r  M      4r6   r  c                      ] tR tRtRtR# )versioniN  r1   Nr  r1   r6   r3   r  r  N  r  r6   r  c                      ] tR tRtRtR# )revisioniO  r1   Nr  r1   r6   r3   r  r  O      Dr6   r  c                      ] tR tRtRtR# )statusiP  r1   Nr  r1   r6   r3   r  r  P  r  r6   r  c                      ] tR tRtRtR# )dateiQ  r1   Nr  r1   r6   r3   r  r  Q      r6   r  c                      ] tR tRtRtR# )	copyrightiR  r1   Nr  r1   r6   r3   r  r  R      Tr6   r  c                  ^   a  ] tR tRt$ Rt]R3]R3]R3]R33t	R]
R&   R
R V 3R llltR	tV ;t# )authorsiU  zJContainer for author information for documents with multiple authors.
    r   r   r   r$  c               $    V ^8  d   QhRRRRRR/# r  r1   )r2   s   "r3   r4   authors.__annotate___  s&       9#2 #r6   c                X   < \         SV `  4       pV'       d   \         SV `  VR7      pK  V# )zGRepeatedly test for children matching the content model.

Provisional.
)r  )r  r  )r;   r  r  relicsr}   s   &&& r3   r  authors.validate_content_  s,     )+W-v->Fr6   r1   r  )r~   r   r   r   r   r  r  r  r  r$  r   r  r   r  r  s   @r3   r
  r
  U  sB    #SM)3/$cN$cNM5   r6   r
  c                      ] tR tRtRtR# )	paragraphiu  r1   Nr  r1   r6   r3   r  r  u  s    tr6   r  c                      ] tR tRtRtR# )rubriciv  r1   Nr  r1   r6   r3   r  r  v  r  r6   r  c                  ,    ] tR tRt$ ]R33tR]R&   RtR# )compoundiy  r   r   r$  r1   Nr~   r   r   r   r  r$  r   r   r1   r6   r3   r  r  y      !3K>M5)r6   r  c                  ,    ] tR tRt$ ]R33tR]R&   RtR# )	containeri}  r   r   r$  r1   Nr  r1   r6   r3   r  r  }  r  r6   r  c                      ] tR tRtRtRtR# )attributioni  z3Visible reference to the source of a `block_quote`.r1   Nr  r1   r6   r3   r  r    s    =r6   r  c                  6    ] tR tRt$ Rt]R3]R33tR]R&   Rt	R# )	block_quotei  z2An extended quotation, set off from the main text.r   r   r   r$  r1   N)
r~   r   r   r   r   r  r  r$  r   r   r1   r6   r3   r  r    s    <!3K+s);<M5<r6   r  c                  H    ] tR tRt$ ]P
                  R,           tR]R&   RtR# )	referencei  r   r  r1   N)	anonymousr[  r  rf  rg  r~   r   r   r   r   r  r   r   r1   r6   r3   r  r    s    %66 :; ;e ;r6   r  c                  ,    ] tR tRt$ ]R33tR]R&   RtR# )	list_itemi  r   r   r$  r1   Nr  r1   r6   r3   r#  r#    r  r6   r#  c                  \    ] tR tRt$ ]P
                  R,           tR]R&   ]R33tR]R&   Rt	R# )	bullet_listi  r   r  r   r$  r1   N)bullet
r~   r   r   r   r   r  r   r#  r$  r   r1   r6   r3   r%  r%    s*    %66DeD&,.M5.r6   r%  c                  \    ] tR tRt$ ]P
                  R,           tR]R&   ]R33tR]R&   Rt	R# )	enumerated_listi  r   r  r   r$  r1   N)enumtyper[  suffixr{  r'  r1   r6   r3   r)  r)    s1    %66 :1 1e 1&,.M5.r6   r)  c                      ] tR tRtRtR# )termi  r1   Nr  r1   r6   r3   r-  r-    s    tr6   r-  c                      ] tR tRtRtR# )
classifieri  r1   Nr  r1   r6   r3   r/  r/        Tr6   r/  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )
definitioni  z.Definition of a `term` in a `definition_list`.r   r   r$  r1   Nr  r1   r6   r3   r2  r2    s    8!3K>M5)r6   r2  c                  <    ] tR tRt$ ]R3]]3R3]R33tR]R&   Rt	R# )definition_list_itemi  r   r   r   r$  r1   N)
r~   r   r   r   r-  r/  r2  r$  r   r   r1   r6   r3   r4  r4    s,    !3K($/5'-M5 r6   r4  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )definition_listi  zList of terms and their definitions.

Can be used for glossaries or dictionaries, to describe or
classify things, for dialogues, or to itemize subtopics.
r   r   r$  r1   N)	r~   r   r   r   r   r4  r$  r   r   r1   r6   r3   r6  r6    s    
 2379M59r6   r6  c                      ] tR tRtRtR# )
field_namei  r1   Nr  r1   r6   r3   r8  r8    r0  r6   r8  c                  ,    ] tR tRt$ ]R33tR]R&   RtR# )
field_bodyi  r   r   r$  r1   Nr  r1   r6   r3   r:  r:    r  r6   r:  c                  2    ] tR tRt$ ]R3]R33tR]R&   RtR# )fieldi  r   r   r$  r1   N)	r~   r   r   r   r8  r:  r$  r   r   r1   r6   r3   r<  r<    s    '-
C/@AM5Ar6   r<  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )
field_listi  z|List of label & data pairs.

Typically rendered as a two-column list.
Also used for extension syntax or special processing.
r   r   r$  r1   N)	r~   r   r   r   r   r<  r$  r   r   r1   r6   r3   r>  r>    s    
 #CL?M5*r6   r>  c                      ] tR tRtRtRtR# )option_stringi  z4A literal command-line option. Typically monospaced.r1   Nr  r1   r6   r3   r@  r@    s    >r6   r@  c                  X    ] tR tRt$ Rt]P                  R	,           tR]R&   R R ltRt	R# )
option_argumenti  z&Placeholder text for option arguments.r   r  c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   option_argument.__annotate__  s     E E Er6   c                	Z    V P                  R R4      \        P                  V 4      ,           # )	delimiterr2  )r  r  ri   r:   s   &r3   ri   option_argument.astext  s#    xxS)K,>,>t,DDDr6   r1   N)rF  
r~   r   r   r   r   r   r  r   ri   r   r1   r6   r3   rB  rB    s'    0%66GeGE Er6   rB  c                  D    ] tR tRt$ RtRtR]R&   ]R3]R33t	R]R&   R	t
R
# )optioni  zrOption element in an `option_list_item`.

Groups an option string with zero or more option argument placeholders.
r  r   r%  r   r   r$  r1   N)r~   r   r   r   r   r%  r   r@  rB  r$  r   r1   r6   r3   rJ  rJ    s-     #%%$*C0?C2HIM5Ir6   rJ  c                  >    ] tR tRt$ RtRtR]R&   ]R33tR]R&   Rt	R	# )
option_groupi  z<Groups together one or more `option` elements, all synonyms.z, r   r%  r   r$  r1   N)
r~   r   r   r   r   r%  r   rJ  r$  r   r1   r6   r3   rL  rL    s!    F"&%&#SM+M5+r6   rL  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )descriptioni  z%Describtion of a command-line option.r   r   r$  r1   Nr  r1   r6   r3   rN  rN    s    /!3K>M5)r6   rN  c                  D    ] tR tRt$ RtRtR]R&   ]R3]R33t	R]R&   Rt
R	# )
option_list_itemi  zGContainer for a pair of `option_group` and `description` elements.
    z  r   r%  r   r$  r1   N)r~   r   r   r   r   r%  r   rL  rN  r$  r   r1   r6   r3   rP  rP    s+    "&%&)3/+s1CDM5Dr6   rP  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )option_listi  z9Two-column list of command-line options and descriptions.r   r   r$  r1   N)	r~   r   r   r   r   rP  r$  r   r   r1   r6   r3   rR  rR    s    C-s35M55r6   rR  c                      ] tR tRtRtR# )literal_blocki	  r1   Nr  r1   r6   r3   rT  rT  	  r  r6   rT  c                      ] tR tRtRtR# )doctest_blocki	  r1   Nr  r1   r6   r3   rV  rV  	  r  r6   rV  c                      ] tR tRtRtRtR# )
math_blocki		  z(Mathematical notation (display formula).r1   Nr  r1   r6   r3   rX  rX  		  r  r6   rX  c                  *    ] tR tRt$ RtRtR]R&   RtR# )r)   i	  z&Single line of text in a `line_block`.Nr  rT   r1   )r~   r   r   r   r   rT   r   r   r1   r6   r3   r)   r)   	  s    0FJr6   r)   c                      ] tR tRtRtRtR# )
line_blocki	  z.Sequence of lines and nested line blocks.
    r1   Nr  r1   r6   r3   r[  r[  	  r  r6   r[  c                      ] tR tRtRtR# )	attentioni	  r1   Nr  r1   r6   r3   r]  r]  	      dr6   r]  c                      ] tR tRtRtR# )cautioni 	  r1   Nr  r1   r6   r3   r`  r`   	      Dr6   r`  c                      ] tR tRtRtR# )dangeri!	  r1   Nr  r1   r6   r3   rc  rc  !	  r  r6   rc  c                      ] tR tRtRtR# )rU  i"	  r1   Nr  r1   r6   r3   rU  rU  "	      $r6   rU  c                      ] tR tRtRtR# )	importanti#	  r1   Nr  r1   r6   r3   rg  rg  #	  r^  r6   rg  c                      ] tR tRtRtR# )notei$	  r1   Nr  r1   r6   r3   ri  ri  $	      r6   ri  c                      ] tR tRtRtR# )tipi%	  r1   Nr  r1   r6   r3   rl  rl  %	  s    r6   rl  c                      ] tR tRtRtR# )hinti&	  r1   Nr  r1   r6   r3   rn  rn  &	  rj  r6   rn  c                      ] tR tRtRtR# )warningi'	  r1   Nr  r1   r6   r3   rp  rp  '	  ra  r6   rp  c                  2    ] tR tRt$ ]R3]R33tR]R&   RtR# )
admonitioni*	  r   r   r   r$  r1   N)	r~   r   r   r   r  r  r$  r   r   r1   r6   r3   rr  rr  *	      "CL4+6M56r6   rr  c                      ] tR tRtRtRtR# )labeli2	  z/Visible identifier for footnotes and citations.r1   Nr  r1   r6   r3   ru  ru  2	  r  r6   ru  c                  f    ] tR tRt$ Rt]P                  R
,           tR]R&   ]R3]	R33t
R]R&   RtR	# )r  i6	  zALabelled note providing additional context (footnote or endnote).r   r  r   r   r$  r1   N)r  r  )r~   r   r   r   r   r   r  r   ru  r  r$  r   r1   r6   r3   r  r  6	  s3    K%669MMeM"CL4+6M56r6   r  c                  2    ] tR tRt$ ]R3]R33tR]R&   RtR# )r  i>	  r   r   r   r$  r1   N)	r~   r   r   r   ru  r  r$  r   r   r1   r6   r3   r  r  >	  rs  r6   r  c                  X    ] tR tRt$ Rt]P                  R	,           tR]R&   R R ltRt	R# )
imageiF	  zHReference to an image resource.

May be body element or inline element.
r   r  c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   image.__annotate__N	  r   r6   c                	&    V P                  R R4      # )altr  r  r:   s   &r3   ri   image.astextN	  s    xxr""r6   r1   N)urir}  alignheightwidthscaleloadingrH  r1   r6   r3   ry  ry  F	  s3     &66 :F Fe F# #r6   ry  c                      ] tR tRtRtR# )captioniR	  r1   Nr  r1   r6   r3   r  r  R	  re  r6   r  c                  0    ] tR tRt$ Rt]R33tR]R&   RtR# )legendiU	  zCA wrapper for text accompanying a `figure` that is not the caption.r   r   r$  r1   Nr  r1   r6   r3   r  r  U	  s    M!3K>M5)r6   r  c                  p    ] tR tRt$ Rt]P                  R
,           tR]R&   ]]	3R3]
R3]R33tR]R&   RtR	# )figureiZ	  z9A formal figure, generally an illustration, with a title.r   r  r   r   r$  r1   N)r  r  )r~   r   r   r   r   r   r  r   ry  r  r  r  r$  r   r1   r6   r3   r  r  Z	  sE    C%669KKeK#Y/5$cN#SMM5 r6   r  c                  `    ] tR tRt$ Rt]P                  R	,           tR]R&   ]R33t	R]R&   Rt
R# )
entryij	  z#An entry in a `row` (a table cell).r   r  r   r$  r1   N)r  charcharoffcolnamecolsepmorecolsmorerowsnamestnameendrowsepvalign)r~   r   r   r   r   r   r  r   r  r$  r   r1   r6   r3   r  r  j	  s4    -%66 := =e = "3K>M5)r6   r  c                  `    ] tR tRt$ Rt]P                  R	,           tR]R&   ]R33t	R]R&   Rt
R# )
rowis	  zRow of table cells.r   r  r   r$  r1   N)r  r  )r~   r   r   r   r   r   r  r   r  r$  r   r1   r6   r3   r  r  s	  s,    %669MMeM"CL?M5*r6   r  c                  X    ] tR tRt$ Rt]P                  R	,           tR]R&   R R ltRt	R# )
colspeciy	  z*Specifications for a column in a `tgroup`.r   r  c                   V ^8  d   QhRR/# )r/   r0   int | floatr1   )r2   s   "r3   r4   colspec.__annotate__	  s     ; ;9 ;r6   c                8    \        V P                  RR4      4      # )zReturn numerical value of "colwidth__" attribute. Default 1.

Raise ValueError if "colwidth" is zero, negative, or a *fixed value*.

Provisional.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#colwidth
colwidthr  )validate_colwidthr  r:   s   &r3   	propwidthcolspec.propwidth	  s     !*b!9::r6   r1   N)	r  r  r  r  colnumr  r  r  stub)
r~   r   r   r   r   r   r  r   r  r   r1   r6   r3   r  r  y	  s,    4%66 :0 0e 0; ;r6   r  c                  `    ] tR tRt$ Rt]P                  R	,           tR]R&   ]R33t	R]R&   Rt
R# )
theadi	  z(Row(s) that form the head of a `tgroup`.r   r  r   r$  r1   Nr  r~   r   r   r   r   r   r  r   r  r$  r   r1   r6   r3   r  r  	  s+    2%66DeD #J=M5(r6   r  c                  `    ] tR tRt$ Rt]P                  R	,           tR]R&   ]R33t	R]R&   Rt
R# )
tbodyi	  zBody of a `tgroup`.r   r  r   r$  r1   Nr  r  r1   r6   r3   r  r  	  s+    %66DeD #J=M5(r6   r  c                  l    ] tR tRt$ Rt]P                  R,           tR]R&   ]R3]	R3]
R33tR]R&   R	tR
# )tgroupi	  z9A portion of a table. Most tables have just one `tgroup`.r   r  r   r   r   r$  r1   N)r  colsr  r  )r~   r   r   r   r   r   r  r   r  r  r  r$  r   r1   r6   r3   r  r  	  s?    C%66 :- -e -$cNUCL5#,GM5Gr6   r  c                  f    ] tR tRt$ Rt]P                  R
,           tR]R&   ]R3]	R33t
R]R&   RtR	# )tablei	  z)A data arrangement with rows and columns.r   r  r   r   r$  r1   N)r  r  framepgwider  r  )r~   r   r   r   r   r   r  r   r  r  r$  r   r1   r6   r3   r  r  	  s<    3%66 :A Ae A"CL63-8M58r6   r  c                      ] tR tRtRtRtR# )commenti	  z%Author notes, hidden from the output.r1   Nr  r1   r6   r3   r  r  	  s    /r6   r  c                  H    ] tR tRt$ ]P
                  R,           tR]R&   RtR# )r  i	  r   r  r1   N)ltrimrtrimr!  r1   r6   r3   r  r  	  s    %669KKeKr6   r  c                  H    ] tR tRt$ ]P
                  R,           tR]R&   RtR# )ri  i	  r   r  r1   N)r   r  rf  rg  r!  r1   r6   r3   ri  ri  	  s    %66 :3 3e 3r6   ri  c                  |    ] tR tRt$ Rt]P                  R,           tR]R&   ]R33t	R]R&   RR R	 llt
R
 R ltRtR# )rj  i	  z
System message element.

Do not instantiate this class directly; use
``document.reporter.info/warning/error/severe()`` instead.
r   r  r   r$  Nc               $    V ^8  d   QhRRRRRR/# )r/   r  r  r'  r   r0   r?   r1   )r2   s   "r3   r4   system_message.__annotate__	  s(      $  # 	r6   c                	    VP                  R R4      pV'       d   \        RV4      pV3V,           p \        P                  ! W.VO5/ VB  R#    \	        RT: 24       h ; i)r   r  zsystem_message: children=N)r  r  r   r.  print)r;   r  r%   r'  r   ps   &&*,  r3   r.  system_message.__init__	  s`    
 NN;3	"g&AthH	TFxF:F	8=>s   A A c                   V ^8  d   QhRR/# rg   r1   )r2   s   "r3   r4   r  	  s     K K Kr6   c                	    V P                  R R4      pV R,          : RV: RV R,          : RV R,          : R\        P                  V 4      : 2	# )	r)   r  r'   :z: (r   /rU   z) )r  r   ri   )r;   r)   s   & r3   ri   system_message.astext	  sE    xx#&*8nndDLL&*7mmW^^D5IK 	Kr6   r1   )rU   r)   r   rA   )r~   r   r   r   r   r  r  r   r  r$  r.  ri   r   r1   r6   r3   rj  rj  	  sG     +;; ?4 4e 4!3K>M5)K Kr6   rj  c                  F    ] tR tRtRtRR R lltRR R lltR R	 ltR
tR# )r  i	  a  
Placeholder for pending operations.

The "pending" element is used to encapsulate a pending operation: the
operation (transform), the point at which to apply it, and any data it
requires.  Only the pending operation's location within the document is
stored in the public document tree (by the "pending" object itself); the
operation and its data are stored in the "pending" object's internal
instance attributes.

For example, say you want a table of contents in your reStructuredText
document.  The easiest way to specify where to put it is from within the
document, with a directive::

    .. contents::

But the "contents" directive can't do its work until the entire document
has been parsed and possibly transformed to some extent.  So the directive
code leaves a placeholder behind that will trigger the second phase of its
processing, something like this::

    <pending ...public attributes...> + internal attributes

Use `document.note_pending()` so that the
`docutils.transforms.Transformer` stage of processing can run all pending
transforms.
Nc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r/   	transformr   detailszMapping[str, Any] | Noner   r*   r'  r   r0   r?   r1   )r2   s   "r3   r4   pending.__annotate__	  sA     J J%J2J  J
  #J Jr6   c                	j    \         P                  ! W.VO5/ VB  Wn         T;'       g    / V n        R # rA   )r   r.  r  r  )r;   r  r  r   r%   r'  s   &&&&*,r3   r.  pending.__init__	  s8     	B8BzB$-	 +2--RIr6   c               $    V ^8  d   QhRRRRRR/# rS   r1   )r2   s   "r3   r4   r  
  s!     2 2c 23 2s 2r6   c           	     	  aa R RV P                   P                  : RV P                   P                  : 2R.p\        V P                  P                  4       4      pV EF;  w  rV\        V\        4      '       d`   VP                  R:R V: R24       TP                  VP                  4       P                  4        Uu. uF  pR:R V: 2NK  	  up4       K{  V'       d   \        V\        4      '       d   \        V^ ,          \        4      '       dj   VP                  R:R V: R24       V FG  pTP                  VP                  4       P                  4        Uu. uF  pR:R V: 2NK  	  up4       KI  	  EK  VP                  R:R V: RV: 24       EK>  	  \        P                  V SS4      RP                  VV3R	 lV 4       4      ,           # u upi u upi )
z.. internal attributes:z     .transform: r   z     .details:r  z>7r  z>9r   c              3  F   <"   T F  pR SS,          : V: R2x  K  	  R# 5i)r   r  Nr1   r  s   & r3   r  "pending.pformat.<locals>.<genexpr>
  s!      1&/d ,2E>4@&/s   !)r  r   r~   r  r  r+  r   r"   rY  r*  rZ   r	  r   r   r
  )	r;   rT   rU   	internalsr  ro  r>   r)   r5  s	   &ff      r3   rZ   pending.pformat
  s   .151J1J151H1HJ%'	 ++-.!JC%&&  R!56  .3mmo.H.H.J"L.Jd .0"6.J"L M -- q400  R!56A$$23))+2H2H2J&L2J$ 24T&:2J&L M    C!?@ " fe4'' 1&/1 11 	2"L&Ls   =G
Gc                   V ^8  d   QhRR/# r]   r1   )r2   s   "r3   r4   r  
  s      d r6   c                	    V P                   ! V P                  V P                  V P                  3/ V P                  B pV P
                  Vn        V P                  Vn        V P                  Vn        V# rA   )r}   r  r  r   r'  r-   r'   r)   rV  s   & r3   r_   pending.copy
  sT    nnT^^T\\4>> 0#0[[
99
r6   )r  r  r  r   )	r~   r   r   r   r   r.  rZ   r_   r   r1   r6   r3   r  r  	  s    8J 20 r6   r  c                  L    ] tR tRt$ Rt]P                  R,           tR]R&   RtR# )rawi(
  zgRaw data that is to be passed untouched to the Writer.

Can be used as Body element or Inline element.
r   r  r1   N)r2   r  r  r1   r6   r3   r  r  (
  s&     &66 : e r6   r  c                      ] tR tRtRtR# )abbreviationi5
  r1   Nr  r1   r6   r3   r  r  5
  s    r6   r  c                      ] tR tRtRtR# )acronymi6
  r1   Nr  r1   r6   r3   r  r  6
  ra  r6   r  c                      ] tR tRtRtR# )emphasisi7
  r1   Nr  r1   r6   r3   r  r  7
  r0  r6   r  c                      ] tR tRtRtR# )	generatedi8
  r1   Nr  r1   r6   r3   r  r  8
  r^  r6   r  c                      ] tR tRtRtR# )inlinei9
  r1   Nr  r1   r6   r3   r  r  9
  r  r6   r  c                      ] tR tRtRtR# )literali:
  r1   Nr  r1   r6   r3   r  r  :
  ra  r6   r  c                      ] tR tRtRtR# )strongi;
  r1   Nr  r1   r6   r3   r  r  ;
  r  r6   r  c                      ] tR tRtRtR# )	subscripti<
  r1   Nr  r1   r6   r3   r  r  <
  r^  r6   r  c                      ] tR tRtRtR# )superscripti=
  r1   Nr  r1   r6   r3   r  r  =
  r  r6   r  c                      ] tR tRtRtR# )title_referencei>
  r1   Nr  r1   r6   r3   r  r  >
  r   r6   r  c                  H    ] tR tRt$ ]P
                  R,           tR]R&   RtR# )r  iA
  r   r  r1   N)r  r  rf  r!  r1   r6   r3   r  r  A
  s    %66 :$ $e $r6   r  c                  H    ] tR tRt$ ]P
                  R,           tR]R&   RtR# )r  iF
  r   r  r1   N)r  rf  r!  r1   r6   r3   r  r  F
  s    %669MMeMr6   r  c                  H    ] tR tRt$ ]P
                  R,           tR]R&   RtR# )r  iJ
  r   r  r1   N)rf  r!  r1   r6   r3   r  r  J
  s    %66EeEr6   r  c                      ] tR tRtRtRtR# )mathiN
  z&Mathematical notation in running text.r1   Nr  r1   r6   r3   r  r  N
  s    0r6   r  c                  H    ] tR tRt$ ]P
                  R,           tR]R&   RtR# )problematiciR
  r   r  r1   N)r  rf  rg  r!  r1   r6   r3   r  r  R
  s    %66 :9 9e 9r6   r  aA  
    Text
    abbreviation acronym address admonition attention attribution author
        authors
    block_quote bullet_list
    caption caution citation citation_reference classifier colspec comment
        compound contact container copyright
    danger date decoration definition definition_list definition_list_item
        description docinfo doctest_block document
    emphasis entry enumerated_list error
    field field_body field_list field_name figure footer
        footnote footnote_reference
    generated
    header hint
    image important inline
    label legend line line_block list_item literal literal_block
    math math_block meta
    note
    option option_argument option_group option_list option_list_item
        option_string organization
    paragraph pending problematic
    raw reference revision row rubric
    section sidebar status strong subscript substitution_definition
        substitution_reference subtitle superscript system_message
    table target tbody term tgroup thead tip title title_reference topic
        transition
    version
    warningzSequence[str]node_class_namesc                  h    ] tR tRt$ RtRtR]R&    R R ltR R ltR	 R
 lt	R R lt
R R ltRtR# )rw   iz
  ab  
"Visitor" pattern [GoF95]_ abstract superclass implementation for
document tree traversals.

Each node class has corresponding methods, doing nothing by
default; override individual methods for specific and useful
behaviour.  The `dispatch_visit()` method is called by
`Node.walk()` upon entering a node.  `Node.walkabout()` also calls
the `dispatch_departure()` method before exiting a node.

The dispatch methods call "``visit_`` + node class name" or
"``depart_`` + node class name", resp.

This is a base class for visitors whose ``visit_...`` & ``depart_...``
methods must be implemented for *all* compulsory node types encountered
(such as for `docutils.writers.Writer` subclasses).
Unimplemented methods will raise exceptions (except for optional nodes).

For sparse traversals, where only certain node types are of interest, use
subclass `SparseNodeVisitor` instead.  When (mostly or entirely) uniform
processing is desired, subclass `GenericNodeVisitor`.

.. [GoF95] Gamma, Helm, Johnson, Vlissides. *Design Patterns: Elements of
   Reusable Object-Oriented Software*. Addison-Wesley, Reading, MA, USA,
   1995.
zClassVar[tuple[str, ...]]optionalc                    V ^8  d   QhRRRR/# r/   r8   r0   r?   r1   )r2   s   "r3   r4   NodeVisitor.__annotate__
  s     + + + +r6   c               	    Wn         R # rA   r8   )r;   r8   s   ""r3   r.  NodeVisitor.__init__
  s    "*r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r  
  s      d r6   c                    VP                   P                  p\        V RV,           V P                  4      pV P                  P
                  P                  RVP                  : RV: 24       V! V4      # )z
Call self."``visit_`` + node class name" with `node` as
parameter.  If the ``visit_...`` method does not exist, call
self.unknown_visit.
visit_z2docutils.nodes.NodeVisitor.dispatch_visit calling  for )r}   r~   rb  unknown_visitr8   r{   r|   r;   r   	node_namemethods   &&  r3   r   NodeVisitor.dispatch_visit
  s^     NN++	x)3T5G5GH$$	+	, d|r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r  
  s      $ r6   c                    VP                   P                  p\        V RV,           V P                  4      pV P                  P
                  P                  RVP                  : RV: 24       V! V4      # )z
Call self."``depart_`` + node class name" with `node` as
parameter.  If the ``depart_...`` method does not exist, call
self.unknown_departure.
depart_z6docutils.nodes.NodeVisitor.dispatch_departure calling r  )r}   r~   rb  unknown_departurer8   r{   r|   r  s   &&  r3   r   NodeVisitor.dispatch_departure
  s^     NN++	y94d6L6LM$$	+	, d|r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r  
  s     
= 
=T 
=r6   c                    V P                   P                  P                  '       g&   VP                  P                  V P
                  9  d1   \        V P                  : RVP                  P                  : 24      hR# )zS
Called when entering unknown `Node` types.

Raise an exception unless overridden.
z visiting unknown node type: Nr8   r  strict_visitorr}   r~   r  rY   r  s   &&r3   r  NodeVisitor.unknown_visit
  Z     MM""111~~&&dmm;%>>4>>#:#:<= = <r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r  
  s     
= 
= 
=r6   c                    V P                   P                  P                  '       g&   VP                  P                  V P
                  9  d1   \        V P                  : RVP                  P                  : 24      hR# )zQ
Called before exiting unknown `Node` types.

Raise exception unless overridden.
z departing unknown node type: Nr
  r  s   &&r3   r  NodeVisitor.unknown_departure
  r  r6   r  N)r  )r~   r   r   r   r   r  r   r.  r   r   r  r  r   r1   r6   r3   rw   rw   z
  s7    6 +4H'3+
=
= 
=r6   rw   c                      ] tR tRtRtRtR# )SparseNodeVisitori
  z
Base class for sparse traversals, where only certain node types are of
interest.  When ``visit_...`` & ``depart_...`` methods should be
implemented for *all* node types (such as for `docutils.writers.Writer`
subclasses), subclass `NodeVisitor` instead.
r1   Nr  r1   r6   r3   r  r  
  s    r6   r  c                  &    ] tR tRtRtR tR tRtR# )GenericNodeVisitori
  al  
Generic "Visitor" abstract superclass, for simple traversals.

Unless overridden, each ``visit_...`` method calls `default_visit()`, and
each ``depart_...`` method (when using `Node.walkabout()`) calls
`default_departure()`. `default_visit()` (and `default_departure()`) must
be overridden in subclasses.

Define fully generic visitors by overriding `default_visit()` (and
`default_departure()`) only. Define semi-generic visitors by overriding
individual ``visit_...()`` (and ``depart_...()``) methods also.

`NodeVisitor.unknown_visit()` (`NodeVisitor.unknown_departure()`) should
be overridden for default behavior.
c                    \         hz)Override for generic, uniform traversals.rX   r  s   &&r3   default_visit GenericNodeVisitor.default_visit
  ra   r6   c                    \         hr  rX   r  s   &&r3   default_departure$GenericNodeVisitor.default_departure
  ra   r6   r1   N)r~   r   r   r   r   r  r  r   r1   r6   r3   r  r  
  s     ""r6   r  c                    V ^8  d   QhRRRR/# r/   r;   r  r0   r?   r1   )r2   s   "r3   r4   r4   
  s      0 4 r6   c                (    V P                  V4       R # rA   )r  r  s   &&r3   _call_default_visitr  
  s    tr6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r4   
  s     ! !"4 !t !r6   c                (    V P                  V4       R # rA   )r  r  s   &&r3   _call_default_departurer"  
  s    4 r6   c                    V ^8  d   QhRRRR/# )r/   r;   r  r0   r?   r1   )r2   s   "r3   r4   r4     s     	 	  	4 	r6   c                    R # rA   r1   r  s   &&r3   _nopr%    s    r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r4     s     < <D <r6   c                    V  Fs  p\        \        RV,           \        4       \        \        RV,           \        4       \        \        RV,           \
        4       \        \        RV,           \
        4       Ku  	  R# )z%Save typing with dynamic assignments:r  r  N)setattrr  r  r"  r  r%  )rA  _names   & r3   _add_node_class_namesr*    sV    "Hu$46IJ"I$57NO!8e#3T:!9u#4d;	 r6   c                  P   a  ] tR tRtRtR V 3R lltR tR R ltR R	 ltR
t	V ;t
# )TreeCopyVisitori  zI
Make a complete copy of a tree or branch, including element attributes.
c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   TreeCopyVisitor.__annotate__  s       d r6   c                	B   < \         SV `  V4       . V n        . V n        R # rA   )r  r.  parent_stackr$   )r;   r8   r}   s   &&r3   r.  TreeCopyVisitor.__init__  s    "(*r6   c                	(    V P                   ^ ,          # r  )r$   r:   s   &r3   get_tree_copyTreeCopyVisitor.get_tree_copy  s    {{1~r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r.    s      T r6   c                    VP                  4       pV P                  P                  V4       V P                  P                  V P                  4       W n        R# )z9Copy the current node, and make it the new acting parent.N)r_   r$   rY  r0  )r;   r   newnodes   && r3   r  TreeCopyVisitor.default_visit  s<    ))+7#  -r6   c                   V ^8  d   QhRR/# rl   r1   )r2   s   "r3   r4   r.  %  s     . . .r6   c                D    V P                   P                  4       V n        R# )z#Restore the previous acting parent.N)r0  r  r$   r  s   &&r3   r  !TreeCopyVisitor.default_departure%  s    ''++-r6   )r$   r0  )r~   r   r   r   r   r.  r3  r  r  r   r  r  s   @r3   r,  r,    s&     
. .r6   r,  c                  6   a  ] tR tRtRtRR V 3R llltRtV ;t# )ry  i-  z'Invalid Docutils Document Tree Element.c               $    V ^8  d   QhRRRRRR/# )r/   r  r*   ru  r   r0   r?   r1   )r2   s   "r3   r4   ValidationError.__annotate__/  s!     7 7C 7g 7 7r6   c                	2   < \         SV `  V4       W n        R # rA   )r  r.  ru  )r;   r  ru  r}   s   &&&r3   r.  ValidationError.__init__/  s    #6 r6   rt  rA   )r~   r   r   r   r   r.  r   r  r  s   @r3   ry  ry  -  s    17 7 7r6   ry  c                      ] tR tRtRtRtR# )TreePruningExceptioni4  z
Base class for `NodeVisitor`-related tree pruning exceptions.

Raise subclasses from within ``visit_...`` or ``depart_...`` methods
called from `Node.walk()` and `Node.walkabout()` tree traversals to prune
the tree traversed.
r1   Nr  r1   r6   r3   rB  rB  4  r  r6   rB  c                      ] tR tRtRtRtR# )r   i>  zy
Do not visit any children of the current node.  The current node's
siblings and ``depart_...`` method are not affected.
r1   Nr  r1   r6   r3   r   r   >  r  r6   r   c                      ] tR tRtRtRtR# )r   iE  z
Do not visit any more siblings (to the right) of the current node.  The
current node's children and its ``depart_...`` method are not affected.
r1   Nr  r1   r6   r3   r   r   E  r  r6   r   c                      ] tR tRtRtRtR# )r   iL  ze
Do not visit the current node's children, and do not call the current
node's ``depart_...`` method.
r1   Nr  r1   r6   r3   r   r   L  r  r6   r   c                      ] tR tRtRtRtR# )r   iS  zs
Do not call the current node's ``depart_...`` method.  The current node's
children and siblings are not affected.
r1   Nr  r1   r6   r3   r   r   S  r  r6   r   c                      ] tR tRtRtRtR# )	NodeFoundiZ  z
Raise to indicate that the target of a search has been found.  This
exception must be caught by the client; it is not caught by the traversal
code.
r1   Nr  r1   r6   r3   rH  rH  Z  r  r6   rH  c                      ] tR tRtRtRtR# )r   ib  a$  
Stop the traversal altogether.  The current node's ``depart_...`` method
is not affected.  The parent nodes ``depart_...`` methods are also called
as usual.  No other nodes are visited.  This is an alternative to
NodeFound that does not cause exception handling to trickle up to the
caller.
r1   Nr  r1   r6   r3   r   r   b  r  r6   r   c               (    V ^8  d   QhRRRRRRRR/# )r/   r  r*   restore_backslashesrx   respect_whitespacer0   r1   )r2   s   "r3   r4   r4   m  s-      3 "&!% r6   c                    V'       d   V P                  RR4      # R F#  pRP                  V P                  V4      4      p K%  	  V # )zk
Return a string with nulls removed or restored to backslashes.
Backslash-escaped spaces are also removed.
 \r  )  z 
rN  )r  r
  split)r  rK  rL  seps   &&& r3   r   r   m  s=     ||FD)).C774::c?+D /r6   c                    V ^8  d   QhRRRR/# )r/   stringr*   r0   r1   )r2   s   "r3   r4   r4   ~  s     - -C -C -r6   c                   V P                  4       pVP                  \        4      pVP                  \        4      p\        P
                  ! RV4      P                  RR4      P                  R4      p\        P                  RRP                  VP                  4       4      4      p\        P                  RV4      p\        V4      # )a  
Convert `string` into an identifier and return it.

Docutils identifiers will conform to the regular expression
``[a-z](-?[a-z0-9]+)*``.  For CSS compatibility, identifiers (the "class"
and "id" attributes) should have no underscores, colons, or periods.
Hyphens may be used.

- The `HTML 4.01 spec`_ defines identifiers based on SGML tokens:

      ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
      followed by any number of letters, digits ([0-9]), hyphens ("-"),
      underscores ("_"), colons (":"), and periods (".").

- However the `CSS1 spec`_ defines identifiers based on the "name" token,
  a tighter interpretation ("flex" tokenizer notation; "latin1" and
  "escape" 8-bit characters have been replaced with entities)::

      unicode     \[0-9a-f]{1,4}
      latin1      [&iexcl;-&yuml;]
      escape      {unicode}|\[ -~&iexcl;-&yuml;]
      nmchar      [-a-z0-9]|{latin1}|{escape}
      name        {nmchar}+

The CSS1 "nmchar" rule does not include underscores ("_"), colons (":"),
or periods ("."), therefore "class" and "id" attributes should not contain
these characters. They should be replaced with hyphens ("-"). Combined
with HTML's requirements (the first character must be a letter; no
"unicode", "latin1", or "escape" characters), this results in the
``[a-z](-?[a-z0-9]+)*`` pattern.

.. _HTML 4.01 spec: https://www.w3.org/TR/html401
.. _CSS1 spec: https://www.w3.org/TR/REC-CSS1
NFKDasciiignorerT  r2  r  )r,  	translate_non_id_translate_digraphs_non_id_translateunicodedata	normalizeencodedecode_non_id_charssubr
  rQ  _non_id_at_endsr*   )rT  r]  s   & r3   rX  rX  ~  s    F 
B	0	1B	'	(B 
		B
w1&&/  
		3 4	5B			R	$Br7Nr6   z
[^a-z0-9]+zre.Pattern[str]r`  z^[-0-9]+|-+$rb  oi  di'  hi1  r  iB  lig  ti  bi  i  rD  i  i  fi  ki  i  re  i  r  i  i  i  yi  zi  gi%  i4  i5  i6  i7  ji<  i?  ro  i@  iG  r|  iI  iK  qiM  riO  zdict[int, str]r[  szaeiS  oei8  dbi9  qprZ  c               $    V ^8  d   QhRRRRRR/# )r/   r   r   r[  r*   r0   r?   r1   )r2   s   "r3   r4   r4     s!      '   r6   c                t    V R ,          P                  V4       V R,          P                  V4       RV n        R# )r  rA  TN)rY  r  ra  )r   r[  s   &&r3   rh  rh    s0    D!M DOr6   c                    V ^8  d   QhRRRR/# r/   r[  r*   r0   r1   )r2   s   "r3   r4   r4     s     * *s *s *r6   c                \    RP                  V P                  4       P                  4       4      # )z.Return a case- and whitespace-normalized name.r2  )r
  r,  rQ  r[  s   &r3   r  r    s     88DJJL&&())r6   c                    V ^8  d   QhRRRR/# ry  r1   )r2   s   "r3   r4   r4     s     " "C "C "r6   c                @    RP                  V P                  4       4      # )z$Return a whitespace-normalized name.r2  )r
  rQ  r{  s   &r3   r  r    s    88DJJL!!r6   c                    V ^8  d   QhRRRR/# r/   r>   r*   r0   r1   )r2   s   "r3   r4   r4     s     : : : :r6   c                F    V P                  RR4      P                  RR4      # )zDEscape string values that are elements of a list, for serialization.rO  z\\r2  z\ )r  r>   s   &r3   r4  r4    s     ==u%--c599r6   c                    V ^8  d   QhRRRR/# )r/   ro  r*   r0   	list[str]r1   )r2   s   "r3   r4   r4     s      s y r6   c                    V P                  RR4      p V P                  RR4      p V P                  RR4      p V P                  R4      pV Uu. uF%  pVP                  RR4      P                  RR4      NK'  	  up# u upi )a  Split a string at non-escaped whitespace.

Backslashes escape internal whitespace (cf. `serial_escape()`).
Return list of "names" (after removing escaping backslashes).

>>> split_name_list(r'a\ n\ame two\\ n\\ames'),
['a name', 'two\\', r'n\ames']

Provisional.
rO  rN  z  rP  r2  r  )r  rQ  )ro  rA  r[  s   &  r3   split_name_listr    s     	
		$A			*d#A			':&AGGCLE  LLS)11&"=  s   +A:c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r4     s      C C r6   c                    RV ,          # )zQuote attributes for pseudo-xmlz"%s"r1   r  s   &r3   rX  rX    s    E>r6   c               $    V ^8  d   QhRRRRRR/# )r/   measurer*   unit_patternr0   ztuple[int | float, str]r1   )r2   s   "r3   r4   r4     s"      3 c ,r6   c                6   \         P                  ! RV R2V 4      p  \        VP                  ^4      4      pVP                  ^4      pW43#   \         d    \        TP                  ^4      4      p L;i ; i  \        \        3 d    \	        RT  R24      hi ; i)aV  Parse a measure__, return value + unit.

`unit_pattern` is a regular expression describing recognized units.
The default is suited for (but not limited to) CSS3 units and SI units.
It matches runs of ASCII letters or Greek mu, a single percent sign,
or no unit.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#measure

Provisional.
z(-?[0-9.]+) *()rd  z" is no valid measure.)re	fullmatchrV   grouprw  floatr9   )r  r  matchr>   units   &&   r3   parse_measurer    s     LL>,q97CE>	*A'E {{1~ ;  	*%++a.)E	* J' >1WI%;<==>s(   A A7 %A41A7 3A44A7 7!Bc                    V ^8  d   QhRRRR/# )r/   keywordsr*   r0   zCallable[[str], str]r1   )r2   s   "r3   r4   r4   3  s       0D r6   c                    a  R V 3R llpV# )zR
Return a function that validates a `str` against given `keywords`.

Provisional.
c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   .create_keyword_validator.<locals>.__annotate__9  s        r6   c                \   < V S9  d$   R P                  S4      p\        RV  RV R24      hV # )rp  rd  z" is not one of "rq  )r
  rw  )r>   allowedr  s   & r3   validate_keywords3create_keyword_validator.<locals>.validate_keywords9  s9     ll8,Gq'8	DEEr6   r1   )r  r  s   j r3   create_keyword_validatorr  3  s     
 r6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r4   A  s      s s r6   c                D    V \        V 4      8w  d   \        RV  R24      hV # )z
Validate identifier key or class name.

Used in `idref.type`__ and for the tokens in `validate_identifier_list()`.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#idref-type

Provisional.
rd  z" is no valid id or class name.)rX  rw  r  s   &r3   validate_identifierr  A  s*     1UG#BCDDLr6   c                    V ^8  d   QhRRRR/# r/   r>   zstr | list[str]r0   r  r1   )r2   s   "r3   r4   r4   P  s      O 	 r6   c                z    \        V \        4      '       d   V P                  4       p V  F  p\        V4       K  	  V # )a  
A (space-separated) list of ids or class names.

`value` may be a `list` or a `str` with space separated
ids or class names (cf. `validate_identifier()`).

Used in `classnames.type`__, `ids.type`__, and `idrefs.type`__.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#classnames-type
__ https://docutils.sourceforge.io/docs/ref/doctree.html#ids-type
__ https://docutils.sourceforge.io/docs/ref/doctree.html#idrefs-type

Provisional.
)r   r*   rQ  r  r>   tokens   & r3   validate_identifier_listr  P  s3     %E" Lr6   c                    V ^8  d   QhRRRR/# )r/   r  r*   r0   r1   )r2   s   "r3   r4   r4   f  s      c c r6   c                (    \        V 4      w  rV V 2# )uX  
Validate a measure__ (number + optional unit).  Return normalized `str`.

See `parse_measure()` for a function returning a "number + unit" tuple.

The unit may be a run of ASCII letters or Greek mu, a single percent sign,
or the empty string. Case is preserved.

Provisional.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#measure
)r  )r  r>   r  s   &  r3   validate_measurer  f  s      (KEWTFr6   c                    V ^8  d   QhRRRR/# )r/   r  zstr | int | floatr0   r  r1   )r2   s   "r3   r4   r4   w  s      }  r6   c                    \        V \        \        34      '       d   T pMV R9   d   ^pM \        V RR7      w  rV^ 8:  d   \	        RV  R24      hV#   \         d    Rp L'i ; i)u7  Validate the "colwidth__" attribute.

Provisional:
    `measure` must be a `str` and will be returned as normalized `str`
    (with unit "*" for proportional values) in Docutils 1.0.

    The default unit will change to "pt" in Docutils 2.0.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#colwidth
z[*]?)r  rd  z" is no proportional measure.)r   r  r  )r   rV   r  r  rw  )r  r>   _units   &  r3   r  r  w  ss     'C<((	I		(vFLE z1WI%BCDDL	  	E	s   A A"!A"c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r4     s      C C r6   c                ^    \         P                  ! RV 4      '       g   \        RV  R24      hV # )zU
Validate a "name token": a `str` of ASCII letters, digits, and [-._].

Provisional.
z[-._A-Za-z0-9]+rd  z" is no NMTOKEN.)r  r  rw  r  s   &r3   validate_NMTOKENr    s0     <<)5111UG#3455Lr6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r4     s     
 
_ 
 
r6   c                z    \        V \        4      '       d   V P                  4       p V  F  p\        V4       K  	  V # )z1
Validate a list of "name tokens".

Provisional.
)r   r*   rQ  r  r  s   & r3   validate_NMTOKENSr    s3     % Lr6   c                    V ^8  d   QhRRRR/# r  r1   )r2   s   "r3   r4   r4     s     ? ? ?Y ?r6   c                    \        V \        4      '       d   \        V 4      p V  Uu. uF  p\        V4      NK  	  up# u upi )a  
Validate a list of `reference names`__.

Reference names may contain all characters;
whitespace is normalized (cf, `whitespace_normalize_name()`).

`value` may be either a `list` of names or a `str` with
space separated names (with internal spaces backslash escaped
and literal backslashes doubled cf. `serial_escape()`).

Return a list of whitespace-normalized, unescaped reference names.

Provisional.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#reference-name
)r   r*   r  r  )r>   r[  s   & r3   validate_refname_listr    s9    " %&8=>%d+>>>s   =c                    V ^8  d   QhRRRR/# )r/   r>   zstr | int | boolr0   rx   r1   )r2   s   "r3   r4   r4     s     
 
, 
 
r6   c                *    V R8X  d   R# \        V 4      # )zValidate a `%yesorno`__ (flag) value.

The string literal "0" evaluates to ``False``, all other
values are converterd with `bool()`.

__ https://docutils.sourceforge.io/docs/ref/doctree.html#yesorno
0F)rx   r  s   &r3   validate_yesornor    s     |;r6   r}  r  r   r  r  r&  r  r  r  r  r  r  r  r  r  rF  r  ltrrtlr  r*  arabic
loweralpha
lowerroman
upperalpha
upperromanr2   r  topbottomtopbotallsidesnoner  r  r  r  rU   r  r  embedlinklazyr  r  r  r[  rA  r  r  r  r[  r  rf  rg  r  r  r  r  r'   r{  r  r+  r   r  r  middler  r  defaultr  zdict[str, Callable[[str], Any]]rv  )r   .)r   r   r   r   )FF)u   [a-zA-Zµ]*|%?)__conditional_annotations__r   
__future__r   __docformat__r  r  r  r\  r   collectionsr   TYPE_CHECKINGcollections.abcr   r   r   r   r	   typesr
   typingr   r   r   r   r   r   docutils.utils._typingr   xml.domr   docutils.frontendr   r<  r   r   docutils.utilsr   rB  r   r   _ContentModelQuantifierr   r   r*   PathLiker   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$  r8   r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r#  r%  r)  r-  r/  r2  r4  r6  r8  r:  r<  r>  r@  rB  rJ  rL  rN  rP  rR  rT  rV  rX  r)   r[  r]  r`  rc  rU  rg  ri  rl  rn  rp  rr  ru  r  r  ry  r  r  r  r  r  r  r  r  r  r  r  r  ri  rj  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rQ  r  rw   r  r  r  r"  r%  r*  r,  rw  ry  	ExceptionrB  r   r   r   r   rH  r   r   rX  compiler`  rb  r[  rZ  rh  r  r  r4  r  rX  r  r  r  r  r  r  r  r  r  r  rV   rv  )r  s   @r3   <module>r     s  * #" 	 	 
    4 4 II0(:'',Y~9N-N'O9O%&89#()>)@*A $By B$)*;S*@$A	Ar{{3//GY/%$c3%5t%;<J	<I IX
F74 F7Rq4d q4t2 2    * *
# #'d '*d * * * B B9) 93 3 ' 'C* C
 
: :G' GB2{ 2*k * (Z ' 'Z 'KG%}k K<w(- <K]G K3mW 3!!=' !$< <D7J 7j' "j'   "C<cB"J/5 ktW kb /]K . 4=+ 4 4m- 4 /m[ / /m[ / 0}k 0 .]K . ,=+ , 1{ 1mW @ , + 1Wg{ 1*w ** *>$ >='7 =;k ;*g */*g /
/j' / $4 # ){ )*w *
4 :j' : *{ )*w *BD- B
+W +?D/ ?EdO EJT7 J,4 ,*$ *
EtW E6*g 6 5G- 4 4G- 43*O 34 
'  #J/57
  +
G * (j' ( 'Z ' &J & *
G * %:w % $*g $ %:w % (j' (7W 7:D/ :7wgw
 77wgw
 7	#GVW 	# 'dK &*T7 *
Wg  *D' *+$ +;dG ;()D' ))D' )HT7 H9GW 90i)? 0Li L3YZ 3
KWl,<g K@Ki K\'6+
O .6; - (fk ( )v{ ) * * 'V[ ' (fk ( 'V[ ' * * ,&+ , 0fk 0$o $
No NFV[ F16? 19&+ 9#6 uw7 - 8 7Y= Y=x " "4!	< & '.( .87j 79 ' ' # ( $ (  "-` "$L!9 9#%::n#= ="%
C"%
C"% C"% C	"%
 C"% C"% C"% C"% C"% C"% C"% C"% C"% C"% C"%  C!"%" C#"%$ C%"%& C'"%( C)"%* C+"%, C-"%. C/"%0 C1"%2 C3"%4 C5"%6 C7"%8 C9"%: C;"%< C="%> C?"%@ CA"%B CC"% > "H D
D
D
D
D. N *
"
:
(
 N,"2
?,
;9	3;9S;9 !;9 C	;9
 (;9 c;9 ';9 C;9 ;9 ;9 c;9 C;9 ;9 !;9 s;9  !;9" 
#E5&9#;9$ %%;9& (<)5|E';9* c+;9, %eXx&-v7-;90 1;92 #3;94 
#5;96 C7;98 S9;9: C;;9< =;9> '@?;9@ SA;9B C;9D E;9F %G;9J "K;9L M;9N O;9P Q;9R cS;9T  U;9V (W;9X cY;9Z [;9\ ];9^ S_;9` ca;9b cc;9d Se;9f g;9h ci;9j Sk;9l m;9n 
3&uhA))Z@u;9 5 ;xr6   