§
    ¥”j?j  ã                   ó”  — d Z ddlZddlmZ  G d„ d¦  «        Z G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z	 G d„ de¦  «        Z
 G d„ de
e¦  «        Z G d„ de
¦  «        Z G d„ de
¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ d ee¦  «        Z G d!„ d"ee¦  «        Z G d#„ d$e¦  «        Z G d%„ d&e¦  «        Z G d'„ d(e¦  «        Z G d)„ d*e¦  «        Z G d+„ d,e¦  «        Z G d-„ d.e¦  «        Z G d/„ d0e¦  «        Z G d1„ d2e¦  «        Z G d3„ d4e¦  «        Z G d5„ d6e¦  «        Z G d7„ d8e¦  «        Z G d9„ d:ee¦  «        Z G d;„ d<ee
¦  «        Z G d=„ d>e¦  «        Z  G d?„ d@e e¦  «        Z! G dA„ dBe e
¦  «        Z"dS )CuÓ  Classes for all types of boxes in the CSS formatting structure / box model.

See https://www.w3.org/TR/CSS21/visuren.html

Names are the same as in CSS 2.1 with the exception of ``TextBox``. In
WeasyPrint, any text is in a ``TextBox``. What CSS calls anonymous inline boxes
are text boxes but not all text boxes are anonymous inline boxes.

See https://www.w3.org/TR/CSS21/visuren.html#anonymous

Abstract classes, should not be instantiated:

* Box
* BlockLevelBox
* InlineLevelBox
* BlockContainerBox
* ReplacedBox
* ParentBox
* AtomicInlineLevelBox

Concrete classes:

* PageBox
* BlockBox
* InlineBox
* InlineBlockBox
* BlockReplacedBox
* InlineReplacedBox
* TextBox
* LineBox
* Various table-related Box subclasses

All concrete box classes whose name contains "Inline" or "Block" have one of
the following "outside" behavior:

* Block-level (inherits from :class:`BlockLevelBox`)
* Inline-level (inherits from :class:`InlineLevelBox`)

and one of the following "inside" behavior:

* Block container (inherits from :class:`BlockContainerBox`)
* Inline content (InlineBox and :class:`TextBox`)
* Replaced content (inherits from :class:`ReplacedBox`)

â€¦ with various combinasions of both.

See respective docstrings for details.

é    Né   )ÚAnonymousStylec                   óT  — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZd„ Zd*d„Zd„ Zd„ Zed„ ¦   «         Zd	„ Zd
„ Zd+d„Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d „ Z4d!„ Z5d"„ Z6d#„ Z7d$„ Z8d%„ Z9d&„ Z:d'„ Z;d(„ Z<d)„ Z=dS ),ÚBoxz"Abstract base class for all boxes.FNc                 ó   — | j         S ©N©Úchildren©Úselfs    út/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/weasyprint/formatting_structure/boxes.pyÚall_childrenzBox.all_childrenX   s
   € ØŒ}Ðó    c              #   ó”   K  — | V — | j         D ]9}|st          |t          ¦  «        r|                     |¦  «        E d{V —† Œ5|V — Œ:dS )z9A flat generator for a box, its children and descendants.N)r
   Ú
isinstancer   Údescendants)r   ÚplaceholdersÚchilds      r   r   zBox.descendants[   sw   è è € àˆ
ˆ
ˆ
Ø”]ð 	ð 	ˆEØð �z¨%µÑ5Ô5ð Ø ×,Ò,¨\Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:à����ð		ð 	r   c                 ó€   — || _         || _        || _        t          ¦   «         | _        g | _        d | _        d | _        d S r   )Úelement_tagÚelementÚstyleÚsetÚremove_decoration_sidesr
   Úfirst_letter_styleÚfirst_line_style)r   r   r   r   s       r   Ú__init__zBox.__init__d   sA   € Ø&ˆÔØˆŒØˆŒ
Ý'*¡u¤uˆÔ$ØˆŒØ"&ˆÔØ $ˆÔÐÐr   c                 óB   — dt          | ¦  «        j        › d| j        › d�S ©Nú<ú ú>)ÚtypeÚ__name__r   r   s    r   Ú__repr__zBox.__repr__m   s'   € Ø<•4˜‘:”:Ô&Ð<Ð<¨Ô)9Ð<Ð<Ð<Ð<r   c                 óZ   — t          |j        ¦  «        } | |j        ||j        g|¢R i |¤ŽS )z6Return an anonymous box that inherits from ``parent``.)r   r   r   r   )ÚclsÚparentÚargsÚkwargsr   s        r   Úanonymous_fromzBox.anonymous_fromp   s<   € õ ˜vœ|Ñ,Ô,ˆØˆs�6Ô% u¨f¬nÐN¸tÐNÐNÐNÀvÐNÐNÐNr   c                 óŒ   — t          | ¦  «        }|                     |¦  «        }|j                             | j        ¦  «         |S )zReturn shallow copy of the box.)r#   Ú__new__Ú__dict__Úupdate)r   r'   Únew_boxs      r   ÚcopyzBox.copyv   s>   € å�4‰jŒjˆð —+’+˜cÑ"Ô"ˆàÔ×Ò ¤Ñ.Ô.Ð.Øˆr   c                 ó*   — |                       ¦   «         S )z?Return a copy of the box with recursive copies of its children.)r1   r   s    r   ÚdeepcopyzBox.deepcopy€   s   € à�yŠy‰{Œ{Ðr   r   c                 óò   — ||cxk    rdk    rn ndS | xj         |z  c_         | xj        |z  c_        |                      ¦   «         D ]/}|r|                     ¦   «         s|                     |||¦  «         Œ0dS )uc   Change the boxâ€™s position.

        Also update the childrenâ€™s positions accordingly.

        r   N)Ú
position_xÚ
position_yr   Ú
is_floatedÚ	translate)r   ÚdxÚdyÚignore_floatsr   s        r   r8   zBox.translate„   s™   € ð �ˆ=ˆ=Š=ˆ=�qŠ=ˆ=ˆ=ˆ=ˆ=ØˆFØˆŒ˜2ÑˆŒØˆŒ˜2ÑˆŒØ×&Ò&Ñ(Ô(ð 	7ð 	7ˆEØ!ð 7 e×&6Ò&6Ñ&8Ô&8ð 7Ø—’  B¨Ñ6Ô6Ð6øð	7ð 	7r   c                 ó0   — | j         | j        z   | j        z   S )zWidth of the padding box.)ÚwidthÚpadding_leftÚpadding_rightr   s    r   Úpadding_widthzBox.padding_width•   s   € àŒz˜DÔ-Ñ-°Ô0BÑBÐBr   c                 ó0   — | j         | j        z   | j        z   S )zHeight of the padding box.)ÚheightÚpadding_topÚpadding_bottomr   s    r   Úpadding_heightzBox.padding_height™   s   € àŒ{˜TÔ-Ñ-°Ô0CÑCÐCr   c                 óJ   — |                       ¦   «         | j        z   | j        z   S )zWidth of the border box.)r@   Úborder_left_widthÚborder_right_widthr   s    r   Úborder_widthzBox.border_width�   s)   € à×!Ò!Ñ#Ô# dÔ&<Ñ<ØÔ#ñ$ð 	$r   c                 óJ   — |                       ¦   «         | j        z   | j        z   S )zHeight of the border box.)rE   Úborder_top_widthÚborder_bottom_widthr   s    r   Úborder_heightzBox.border_height¢   s)   € à×"Ò"Ñ$Ô$ tÔ'<Ñ<ØÔ$ñ%ð 	%r   c                 óJ   — |                       ¦   «         | j        z   | j        z   S )z)Width of the margin box (aka. outer box).)rI   Úmargin_leftÚmargin_rightr   s    r   Úmargin_widthzBox.margin_width§   s$   € à× Ò Ñ"Ô" TÔ%5Ñ5¸Ô8IÑIÐIr   c                 óJ   — |                       ¦   «         | j        z   | j        z   S )z*Height of the margin box (aka. outer box).)rM   Ú
margin_topÚmargin_bottomr   s    r   Úmargin_heightzBox.margin_height«   s#   € à×!Ò!Ñ#Ô# d¤oÑ5¸Ô8JÑJÐJr   c                 ó@   — | j         | j        z   | j        z   | j        z   S )z0Absolute horizontal position of the content box.)r5   rO   r>   rG   r   s    r   Úcontent_box_xzBox.content_box_x±   s'   € àŒ Ô!1Ñ1°DÔ4EÑEØÔ"ñ#ð 	#r   c                 ó@   — | j         | j        z   | j        z   | j        z   S )z.Absolute vertical position of the content box.)r6   rS   rC   rK   r   s    r   Úcontent_box_yzBox.content_box_y¶   s&   € àŒ ¤Ñ0°4Ô3CÑCØÔ!ñ"ð 	"r   c                 ó0   — | j         | j        z   | j        z   S )z0Absolute horizontal position of the padding box.)r5   rO   rG   r   s    r   Úpadding_box_xzBox.padding_box_x»   s   € àŒ Ô!1Ñ1°DÔ4JÑJÐJr   c                 ó0   — | j         | j        z   | j        z   S )z.Absolute vertical position of the padding box.)r6   rS   rK   r   s    r   Úpadding_box_yzBox.padding_box_y¿   s   € àŒ ¤Ñ0°4Ô3HÑHÐHr   c                 ó    — | j         | j        z   S )z/Absolute horizontal position of the border box.)r5   rO   r   s    r   Úborder_box_xzBox.border_box_xÃ   s   € àŒ Ô!1Ñ1Ð1r   c                 ó    — | j         | j        z   S )z-Absolute vertical position of the border box.)r6   rS   r   s    r   Úborder_box_yzBox.border_box_yÇ   s   € àŒ ¤Ñ0Ð0r   c                 óž   — |                       ¦   «         |                      ¦   «         |                      ¦   «         |                      ¦   «         fS ©z=Return the (x, y, w, h) rectangle where the box is clickable.)r_   ra   rI   rM   r   s    r   Úhit_areazBox.hit_areaË   sH   € ð
 ×!Ò!Ñ#Ô# T×%6Ò%6Ñ%8Ô%8Ø×!Ò!Ñ#Ô# T×%7Ò%7Ñ%9Ô%9ð;ð 	;r   c           
      ó  — | j         \  }}| j        \  }}| j        \  }	}
| j        \  }}t	          d||z
  ¦  «        }t	          d||z
  ¦  «        }t	          d||z
  ¦  «        }t	          d||z
  ¦  «        }t	          d|	|z
  ¦  «        }	t	          d|
|z
  ¦  «        }
t	          d||z
  ¦  «        }t	          d||z
  ¦  «        }|                      ¦   «         |z   }|                      ¦   «         |z   }|                      ¦   «         |z
  |z
  }|                      ¦   «         |z
  |z
  }t          dgd„ |||z   f|||	z   f|||z   f|||
z   ffD ¦   «         z   ¦  «        }||||||z  ||z  f||z  ||z  f|	|z  |
|z  f||z  ||z  ffS )z¹Position, size and radii of a box inside the outer border box.

        bt, br, bb, and bl are distances from the outer border box,
        defining a rectangle to be rounded.

        r   é   c                 ó*   — g | ]\  }}|d k    ¯||z  ‘ŒS )r   © )Ú.0ÚextentÚ	sum_radiis      r   ú
<listcomp>z#Box.rounded_box.<locals>.<listcomp>ï   s6   € ð 	
ð 	
ð 	
á!�˜	ð ˜1Š}ˆ}ð �YÑð ˆ}ˆ}r   )
Úborder_top_left_radiusÚborder_top_right_radiusÚborder_bottom_right_radiusÚborder_bottom_left_radiusÚmaxr_   ra   rI   rM   Úmin)r   ÚbtÚbrÚbbÚblÚtlrxÚtlryÚtrrxÚtrryÚbrrxÚbrryÚblrxÚblryÚxÚyr=   rB   Úratios                     r   Úrounded_boxzBox.rounded_boxÓ   sí  € ð Ô0‰
ˆˆdØÔ1‰
ˆˆdØÔ4‰
ˆˆdØÔ3‰
ˆˆdå�1�d˜R‘iÑ Ô ˆÝ�1�d˜R‘iÑ Ô ˆÝ�1�d˜R‘iÑ Ô ˆÝ�1�d˜R‘iÑ Ô ˆÝ�1�d˜R‘iÑ Ô ˆÝ�1�d˜R‘iÑ Ô ˆÝ�1�d˜R‘iÑ Ô ˆÝ�1�d˜R‘iÑ Ô ˆà×ÒÑÔ "Ñ$ˆØ×ÒÑÔ "Ñ$ˆØ×!Ò!Ñ#Ô# bÑ(¨2Ñ-ˆØ×#Ò#Ñ%Ô%¨Ñ*¨RÑ/ˆõ �Q�Cð 	
ð 	
ð ˜˜t™Ð$Ø˜˜t™Ð$Ø˜ ™Ð%Ø˜ ™Ð%ð	&ð	
ñ 	
ô 	
ñ 	
ñ 	ô 	ˆð ˆq�%˜Ø�E‰\˜4 %™<Ð(Ø�E‰\˜4 %™<Ð(Ø�E‰\˜4 %™<Ð(Ø�E‰\˜4 %™<Ð(ð*ð 	*r   c                 ór   — |                       | j        |z  | j        |z  | j        |z  | j        |z  ¦  «        S r   ©r‚   rK   rH   rL   rG   )r   r�   s     r   Úrounded_box_ratiozBox.rounded_box_ratio   sF   € Ø×ÒØÔ! EÑ)ØÔ# eÑ+ØÔ$ uÑ,ØÔ" UÑ*ñ	,ô ,ð 	,r   c                 óZ   — |                       | j        | j        | j        | j        ¦  «        S )z?Return the position, size and radii of the rounded padding box.r„   r   s    r   Úrounded_padding_boxzBox.rounded_padding_box  s2   € à×ÒØÔ!ØÔ#ØÔ$ØÔ"ñ	$ô $ð 	$r   c                 ó2   — |                       dddd¦  «        S )z>Return the position, size and radii of the rounded border box.r   )r‚   r   s    r   Úrounded_border_boxzBox.rounded_border_box  s   € à×Ò  1 a¨Ñ+Ô+Ð+r   c                 óš   — |                       | j        | j        z   | j        | j        z   | j        | j        z   | j        | j        z   ¦  «        S )z?Return the position, size and radii of the rounded content box.)	r‚   rK   rC   rH   r?   rL   rD   rG   r>   r   s    r   Úrounded_content_boxzBox.rounded_content_box  sR   € à×ÒØÔ! DÔ$4Ñ4ØÔ# dÔ&8Ñ8ØÔ$ tÔ':Ñ:ØÔ" TÔ%6Ñ6ñ	8ô 8ð 	8r   c                 ó    — | j         d         dv S )z#Return whether this box is floated.Úfloat)ÚleftÚright©r   r   s    r   r7   zBox.is_floated  s   € àŒz˜'Ô"Ð&7Ð7Ð7r   c                 ó$   — | j         d         dk    S )z&Return whether this box is a footnote.r�   Úfootnoter�   r   s    r   Úis_footnotezBox.is_footnote!  s   € àŒz˜'Ô" jÒ0Ð0r   c                 ó    — | j         d         dv S )z>Return whether this box is in the absolute positioning scheme.Úposition)ÚabsoluteÚfixedr�   r   s    r   Úis_absolutely_positionedzBox.is_absolutely_positioned%  s   € àŒz˜*Ô%Ð)>Ð>Ð>r   c                 ó0   — | j         d         d         dk    S )z-Return whether this box is a running element.r•   r   z	running()r�   r   s    r   Ú
is_runningzBox.is_running)  s   € àŒz˜*Ô% aÔ(¨KÒ7Ð7r   c                 ó¤   — |                       ¦   «         p;|                      ¦   «         p'|                      ¦   «         p|                      ¦   «          S )z*Return whether this box is in normal flow.)r7   r˜   rš   r“   r   s    r   Úis_in_normal_flowzBox.is_in_normal_flow-  sT   € ð �OŠOÑÔð 4 ×!>Ò!>Ñ!@Ô!@ð 4Ø�OŠOÑÔð4Ø!%×!1Ò!1Ñ!3Ô!3ð5ð 	5r   c                 ó¸   — t          | t          ¦  «        pEt          | t          ¦  «        p0| j        d         dv p!| j        d         dk    o| j        d         dk    S )z&Return whether this box is monolithic.Úoverflow)ÚautoÚscrollÚhiddenrB   rŸ   )r   ÚAtomicInlineLevelBoxÚReplacedBoxr   r   s    r   Úis_monolithiczBox.is_monolithic3  sh   € õ �tÕ1Ñ2Ô2ð -Ý�t�[Ñ)Ô)ð-àŒJ�zÔ"Ð&8Ð8ð-ð ŒZ˜
Ô# xÒ/ð ,ØŒZ˜Ô! VÒ+ð	.r   c                 ó   — |                       ¦   «         pz|                      ¦   «         pf| j        p_t          | t          ¦  «        ot          | t
          ¦  «         p4t          | t
          ¦  «        o| j        d         dk    pd| j        d         v S )z?Return whether this box establishes a block formatting context.rž   Úvisiblez	flow-rootÚdisplay)r7   r˜   Ú	is_columnr   ÚBlockContainerBoxÚBlockBoxr   r   s    r   Úestablishes_formatting_contextz"Box.establishes_formatting_context=  s–   € ð �OŠOÑÔð 1Ø×)Ò)Ñ+Ô+ð1àŒNð1õ ˜Õ/Ñ0Ô0ÐS½ÀDÍ(Ñ9SÔ9SÐ5Sð1õ ˜�hÑ'Ô'ÐO¨D¬J°zÔ,BÀiÒ,Oð	1ð
 ˜4œ: iÔ0Ð0ð	2r   c                 ó6   — | j         d         | j         d         fS )z!Return start and end page values.Úpager�   r   s    r   Úpage_valueszBox.page_valuesJ  s   € à”
˜6Ô" D¤J¨vÔ$6Ð7Ð7r   c                 ób   — ddl m} | j        �!| j        j        dk    r || j        d¦  «        S dS )z>Return whether this link should be stored as a PDF attachment.r   )Úelement_has_link_typeNÚaÚ
attachmentF)Úhtmlr°   r   Útag)r   r°   s     r   Úis_attachmentzBox.is_attachmentP  sE   € à0Ð0Ð0Ð0Ð0Ð0àŒ<Ð#¨¬Ô(8¸CÒ(?Ð(?Ø(Ð(¨¬°|ÑDÔDÐDØˆur   c                 óŒ   — | j         d         dk    r2| j        �+| j        j        dv rt          | t          t
          f¦  «         S dS )z(Return whether this box is a form input.Ú
appearancerŸ   N)ÚbuttonÚinputÚselectÚtextareaF)r   r   r´   r   ÚLineBoxÚTextBoxr   s    r   Úis_inputzBox.is_inputZ  sK   € ð Œ:�lÔ# vÒ-Ð-°$´,Ð2JØŒ|ÔÐ#LÐLÐLÝ% d­WµgÐ,>Ñ?Ô?Ð?Ð?Øˆur   c                 ó4   — | j         €dS | j         j        dk    S )z*Return whether this box is a form element.NFÚform)r   r´   r   s    r   Úis_formzBox.is_formb  s   € àŒ<ÐØ�5ØŒ|Ô 6Ò)Ð)r   )F©r   r   F)>r$   Ú
__module__Ú__qualname__Ú__doc__Úproper_table_childÚinternal_table_or_captionÚtabular_containerÚleading_collapsible_spaceÚtrailing_collapsible_spaceÚis_table_wrapperÚis_flex_itemÚis_grid_itemÚis_for_root_elementr¨   Ú	is_leaderÚis_outside_markerÚtransformation_matrixÚbookmark_labelÚ
string_setr’   Úcached_counter_valuesÚmissing_linkÚlink_annotationÚforce_fragmentationr   r   r   r%   Úclassmethodr+   r1   r3   r8   r@   rE   rI   rM   rQ   rU   rW   rY   r[   r]   r_   ra   rd   r‚   r…   r‡   r‰   r‹   r7   r“   r˜   rš   rœ   r¤   r«   r®   rµ   r¾   rÁ   rh   r   r   r   r   8   sè  € € € € € Ø,Ð,ð ÐØ %ÐØÐð !&ÐØ!&Ðð ÐØ€LØ€LØÐØ€IØ€IØÐð !ÐØ€NØ€JØ€HØ ÐØ€LØ€OØÐðð ð ðð ð ð ð%ð %ð %ð=ð =ð =ð ðOð Oñ „[ðOð
ð ð ðð ð ð7ð 7ð 7ð 7ð"Cð Cð CðDð Dð Dð$ð $ð $ð
%ð %ð %ð
Jð Jð JðKð Kð Kð#ð #ð #ð
"ð "ð "ð
Kð Kð KðIð Ið Ið2ð 2ð 2ð1ð 1ð 1ð;ð ;ð ;ð+*ð +*ð +*ðZ,ð ,ð ,ð$ð $ð $ð,ð ,ð ,ð8ð 8ð 8ð8ð 8ð 8ð1ð 1ð 1ð?ð ?ð ?ð8ð 8ð 8ð5ð 5ð 5ð.ð .ð .ð	2ð 	2ð 	2ð8ð 8ð 8ðð ð ðð ð ð*ð *ð *ð *ð *r   r   c                   óV   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	ˆ fd„Z
d	„ Zd
„ Zˆ xZS )Ú	ParentBoxzA box that has children.c                 óv   •— t          ¦   «                              |||¦  «         t          |¦  «        | _        d S r   )Úsuperr   Útupler
   ©r   r   r   r   r
   Ú	__class__s        €r   r   zParentBox.__init__k  s0   ø€ Ý‰Œ×Ò˜ e¨WÑ5Ô5Ð5Ý˜h™œˆŒˆˆr   c                 ó´   — | j                              |¦  «         t          | d|› �d¦  «         t          | d|› �d¦  «         t          | d|› d�d¦  «         dS )z4Set to 0 the margin, padding and border of ``side``.Úmargin_r   Úpadding_Úborder_Ú_widthN)r   ÚaddÚsetattr)r   Úsides     r   Ú_reset_spacingzParentBox._reset_spacingo  ss   € àÔ$×(Ò(¨Ñ.Ô.Ð.Ý�Ð& Ð&Ð&¨Ñ*Ô*Ð*Ý�Ð' Ð'Ð'¨Ñ+Ô+Ð+Ý�Ð, Ð,Ð,Ð,¨aÑ0Ô0Ð0Ð0Ð0r   c                 óŒ   — | j         d         dk    rd S |r|                      d¦  «         |r|                      d¦  «         d S d S )NÚbox_decoration_breakÚcloneÚtopÚbottom©r   rè   )r   ÚstartÚends      r   Úremove_decorationzParentBox.remove_decorationv  sb   € ØŒ:Ð,Ô-°Ò8Ð8ØˆFØð 	'Ø×Ò Ñ&Ô&Ð&Øð 	*Ø×Ò Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*r   c                 ób   — |                       ¦   «         }||_        t          ¦   «         | _        |S )z8Create a new equivalent box with given ``new_children``.)r1   r
   r   r   )r   Únew_childrenr0   s      r   Úcopy_with_childrenzParentBox.copy_with_children~  s*   € à—)’)‘+”+ˆØ'ˆÔõ (+¡u¤uˆÔ$àˆr   c                 ót   — |                       ¦   «         }t          d„ | j        D ¦   «         ¦  «        |_        |S )Nc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r   )r3   ©ri   r   s     r   ú	<genexpr>z%ParentBox.deepcopy.<locals>.<genexpr>‹  s,   è è € ÐKÐK°E˜uŸ~š~Ñ/Ô/ÐKÐKÐKÐKÐKÐKr   )r1   Úlistr
   )r   Úresults     r   r3   zParentBox.deepcopy‰  s4   € Ø—’‘”ˆÝÐKÐK¸T¼]ÐKÑKÔKÑKÔKˆŒØˆr   c                 óx   — | j         sJ ‚| j        D ]}t          |t          ¦  «        r|c S Œt	          d¦  «        ‚)z!Get the table wrapped by the box.zTable wrapper without a table)rË   r
   r   ÚTableBoxÚ
ValueError)r   r   s     r   Úget_wrapped_tablezParentBox.get_wrapped_tableŽ  sS   € àÔ$Ð$Ð$Ð$Ø”]ð 	>ð 	>ˆEÝ˜%¥Ñ*Ô*ð Ø���ðõ Ð<Ñ=Ô=Ð=r   c                 óŒ  •— t          ¦   «                              ¦   «         \  }}d„ | j        D ¦   «         }|rŠt          |¦  «        dk    r/|d                              ¦   «         }|d         p|}|d         p|}nH|d         |d         }}|                     ¦   «         d         p|}|                     ¦   «         d         p|}||fS )Nc                 ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rh   )rœ   r÷   s     r   rl   z)ParentBox.page_values.<locals>.<listcomp>œ  s@   € ð Kð Kð KØ°×0GÒ0GÑ0IÔ0IðKØðKð Kð Kr   rf   r   éÿÿÿÿ)rÜ   r®   r
   Úlen)r   Ústart_valueÚ	end_valuer
   r®   Ú	start_boxÚend_boxrß   s          €r   r®   zParentBox.page_values—  sá   ø€ Ý!&¡¤×!4Ò!4Ñ!6Ô!6Ñˆ�YðKð KØ#œ}ðKñ Kô Kˆàð 	BÝ�8‰}Œ} Ò!Ð!Ø& qœk×5Ò5Ñ7Ô7�Ø)¨!œnÐ;°�Ø'¨œNÐ7¨i�	�	à%-¨a¤[°(¸2´,˜7�	Ø'×3Ò3Ñ5Ô5°aÔ8ÐG¸K�Ø#×/Ò/Ñ1Ô1°!Ô4ÐA¸	�	Ø˜IÐ%Ð%r   c                 ó€   — | j         p6| j        p/| j        p(| j        p!|                      ¦   «         p| j        p| j         S r   )rK   rC   rÌ   rÍ   r«   rË   rÎ   r   s    r   Útop_margin_collapseszParentBox.top_margin_collapses©  s`   € àÔ!ð % TÔ%5ð %ØÔð%Ø!%Ô!2ð%à×/Ò/Ñ1Ô1ð%ð Ô!ð%ð Ô$ð&ð 	&r   c                 ó€   — | j         p6| j        p/| j        p(| j        p!|                      ¦   «         p| j        p| j         S r   )rL   rD   rÌ   rÍ   r«   rË   rÎ   r   s    r   Úbottom_margin_collapsesz!ParentBox.bottom_margin_collapses±  s`   € àÔ$ð %¨Ô(;ð %ØÔð%Ø!%Ô!2ð%à×/Ò/Ñ1Ô1ð%ð Ô!ð%ð Ô$ð&ð 	&r   )r$   rÃ   rÄ   rÅ   r   rè   rñ   rô   r3   rþ   r®   r  r
  Ú__classcell__©rß   s   @r   rÚ   rÚ   i  sÀ   ø€ € € € € Ø"Ð"ð(ð (ð (ð (ð (ð1ð 1ð 1ð*ð *ð *ð	ð 	ð 	ðð ð ð
>ð >ð >ð&ð &ð &ð &ð &ð$&ð &ð &ð&ð &ð &ð &ð &ð &ð &r   rÚ   c                   ó   — e Zd ZdZdZdS )ÚBlockLevelBoxz°A box that participates in an block formatting context.

    An element with a ``display`` value of ``block``, ``list-item`` or
    ``table`` generates a block-level box.

    N)r$   rÃ   rÄ   rÅ   Ú	clearancerh   r   r   r  r  º  s   € € € € € ðð ð €I€I€Ir   r  c                   ó   — e Zd ZdZdS )r©   aj  A box that contains only block-level boxes or only line boxes.

    A box that either contains only block-level boxes or establishes an inline
    formatting context and thus contains only line boxes.

    A non-replaced element with a ``display`` value of ``block``,
    ``list-item``, ``inline-block`` or 'table-cell' generates a block container
    box.

    N©r$   rÃ   rÄ   rÅ   rh   r   r   r©   r©   Ä  s   € € € € € ð	ð 	ð 	ð 	r   r©   c                   ó   — e Zd ZdZdS )rª   z£A block-level box that is also a block container.

    A non-replaced element with a ``display`` value of ``block``, ``list-item``
    generates a block box.

    Nr  rh   r   r   rª   rª   Ñ  ó   € € € € € ðð ð ð r   rª   c                   ó:   ‡ — e Zd ZdZdZdZeˆ fd„¦   «         Zˆ xZS )r¼   aK  A box that represents a line in an inline formatting context.

    Can only contain inline-level boxes.

    In early stages of building the box tree a single line box contains many
    consecutive inline boxes. Later, during layout phase, each line boxes will
    be split into multiple line boxes, one for each actual line.

    ÚclipÚnonec                 óˆ   •—  t          ¦   «         j        |g|¢R i |¤Ž}|j        d         dk    r|j        d         |_        |S )Nrž   r¦   Útext_overflow)rÜ   r+   r   r  )r'   r(   r)   r*   Úboxrß   s        €r   r+   zLineBox.anonymous_fromç  sO   ø€ à$�e‰gŒgÔ$ VÐ=¨dÐ=Ð=Ð=°fÐ=Ð=ˆØŒ<˜
Ô# yÒ0Ð0Ø &¤¨_Ô =ˆCÔØˆ
r   )	r$   rÃ   rÄ   rÅ   r  Úblock_ellipsisrØ   r+   r  r  s   @r   r¼   r¼   Ú  sX   ø€ € € € € ðð ð €MØ€Nàðð ð ð ñ „[ðð ð ð ð r   r¼   c                   ó   — e Zd ZdZd„ ZdS )ÚInlineLevelBoxaQ  A box that participates in an inline formatting context.

    An inline-level box that is not an inline box is said to be "atomic". Such
    boxes are inline blocks, replaced elements and inline tables.

    An element with a ``display`` value of ``inline``, ``inline-table``, or
    ``inline-block`` generates an inline-level box.

    c                 ó¾   — | j         d         dk    rd S | j         d         dk    }|r|                      |rdnd¦  «         |r|                      |rdnd¦  «         d S d S )Nrê   rë   Ú	directionÚltrrŽ   r�   rî   )r   rï   rð   r  s       r   rñ   z InlineLevelBox.remove_decorationù  s…   € ØŒ:Ð,Ô-°Ò8Ð8ØˆFØŒj˜Ô%¨Ò.ˆØð 	<Ø×Ò¨#Ð :  °7Ñ;Ô;Ð;Øð 	<Ø×Ò¨3Ð :  °FÑ;Ô;Ð;Ð;Ð;ð	<ð 	<r   N)r$   rÃ   rÄ   rÅ   rñ   rh   r   r   r  r  ï  s-   € € € € € ðð ð<ð <ð <ð <ð <r   r  c                   ó   — e Zd ZdZd„ ZdS )Ú	InlineBoxa  An inline box with inline children.

    A box that participates in an inline formatting context and whose content
    also participates in that inline formatting context.

    A non-replaced element with a ``display`` value of ``inline`` generates an
    inline box.

    c                 ó„   — |                       ¦   «         | j        |                      ¦   «         |                      ¦   «         fS rc   )r_   r6   rI   rU   r   s    r   rd   zInlineBox.hit_area  s>   € ð ×!Ò!Ñ#Ô# T¤_Ø×!Ò!Ñ#Ô# T×%7Ò%7Ñ%9Ô%9ð;ð 	;r   N)r$   rÃ   rÄ   rÅ   rd   rh   r   r   r!  r!    s-   € € € € € ðð ð;ð ;ð ;ð ;ð ;r   r!  c                   ó,   ‡ — e Zd ZdZdZˆ fd„Zd„ Zˆ xZS )r½   z²A box that contains only text and has no box children.

    Any text in the document ends up in a text box. What CSS calls "anonymous
    inline boxes" are also text boxes.

    r   c                 ód   •— |sJ ‚t          ¦   «                              |||¦  «         || _        d S r   )rÜ   r   Útext)r   r   r   r   r%  rß   s        €r   r   zTextBox.__init__  s3   ø€ ØˆˆˆÝ‰Œ×Ò˜ e¨WÑ5Ô5Ð5ØˆŒ	ˆ	ˆ	r   c                 óD   — |sJ ‚|                       ¦   «         }||_        |S )z?Return a new TextBox identical to this one except for the text.)r1   r%  )r   r%  r0   s      r   Úcopy_with_textzTextBox.copy_with_text"  s$   € àˆˆˆØ—)’)‘+”+ˆØˆŒØˆr   )r$   rÃ   rÄ   rÅ   Újustification_spacingr   r'  r  r  s   @r   r½   r½     sY   ø€ € € € € ðð ð Ððð ð ð ð ð
ð ð ð ð ð ð r   r½   c                   ó   — e Zd ZdZdS )r¢   zpAn atomic box in an inline formatting context.

    This inline-level box cannot be split for line breaks.

    Nr  rh   r   r   r¢   r¢   *  ó   € € € € € ðð ð ð r   r¢   c                   ó   — e Zd ZdZdS )ÚInlineBlockBoxzëA box that is both inline-level and a block container.

    It behaves as inline on the outside and as a block on the inside.

    A non-replaced element with a 'display' value of 'inline-block' generates
    an inline-block box.

    Nr  rh   r   r   r,  r,  2  s   € € € € € ðð ð ð r   r,  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )r£   u£   A box whose content is replaced.

    For example, ``<img>`` are replaced: their content is rendered externally
    and is opaque from CSSâ€™s point of view.

    c                 ó\   •— t          ¦   «                              |||¦  «         || _        d S r   )rÜ   r   Úreplacement)r   r   r   r   r/  rß   s        €r   r   zReplacedBox.__init__D  s-   ø€ Ý‰Œ×Ò˜ e¨WÑ5Ô5Ð5Ø&ˆÔÐÐr   ©r$   rÃ   rÄ   rÅ   r   r  r  s   @r   r£   r£   =  sB   ø€ € € € € ðð ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'r   r£   c                   ó   — e Zd ZdZdS )ÚBlockReplacedBoxz·A box that is both replaced and block-level.

    A replaced element with a ``display`` value of ``block``, ``liste-item`` or
    ``table`` generates a block-level replaced box.

    Nr  rh   r   r   r2  r2  I  r  r   r2  c                   ó   — e Zd ZdZdS )ÚInlineReplacedBoxzÉA box that is both replaced and inline-level.

    A replaced element with a ``display`` value of ``inline``,
    ``inline-table``, or ``inline-block`` generates an inline-level replaced
    box.

    Nr  rh   r   r   r4  r4  R  s   € € € € € ðð ð ð r   r4  c                   ó4   ‡ — e Zd ZdZdZd„ Zdˆ fd„	Zd„ Zˆ xZS )	rü   z(Box for elements with ``display: table``Tc                 ó@   — t          j        | j        | j        ¦  «        S r   )Ú	itertoolsÚchainr
   Úcolumn_groupsr   s    r   r   zTableBox.all_childrenb  s   € ÝŒ˜tœ}¨dÔ.@ÑAÔAÐAr   r   Fc                 ó|   •‡— ˆfd„| j         D ¦   «         | _         t          ¦   «                              ‰||¦  «        S )Nc                 ó   •— g | ]}|‰z   ‘ŒS rh   rh   )ri   r•   r9   s     €r   rl   z&TableBox.translate.<locals>.<listcomp>f  s0   ø€ ð !Að !Að !AØ&ˆH�r‰Mð!Að !Að !Ar   )Úcolumn_positionsrÜ   r8   )r   r9   r:   r;   rß   s    `  €r   r8   zTableBox.translatee  sU   øø€ ð!Að !Að !Að !AØ*.Ô*?ð!Añ !Aô !AˆÔå‰wŒw× Ò   R¨Ñ7Ô7Ð7r   c                 ó6   — | j         d         | j         d         fS )Nr­   r�   r   s    r   r®   zTableBox.page_valuesj  s   € Ø”
˜6Ô" D¤J¨vÔ$6Ð7Ð7r   rÂ   )	r$   rÃ   rÄ   rÅ   rÈ   r   r8   r®   r  r  s   @r   rü   rü   \  sl   ø€ € € € € Ø2Ð2ð ÐðBð Bð Bð8ð 8ð 8ð 8ð 8ð 8ð
8ð 8ð 8ð 8ð 8ð 8ð 8r   rü   c                   ó   — e Zd ZdZdS )ÚInlineTableBoxz/Box for elements with ``display: inline-table``Nr  rh   r   r   r?  r?  n  s   € € € € € Ø9Ð9Ð9Ð9r   r?  c                   ó.   — e Zd ZdZdZdZdZeefZ	dZ
dZdS )ÚTableRowGroupBoxz2Box for elements with ``display: table-row-group``TFN)r$   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rü   r?  Úproper_parentsÚ	is_headerÚ	is_footerrh   r   r   rA  rA  r  s<   € € € € € Ø<Ð<ØÐØ $ÐØÐØ Ð/€Nð €IØ€I€I€Ir   rA  c                   ó(   — e Zd ZdZdZdZdZeee	fZ
dS )ÚTableRowBoxz,Box for elements with ``display: table-row``TN)r$   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rü   r?  rA  rB  rh   r   r   rF  rF  ~  s3   € € € € € Ø6Ð6ØÐØ $ÐØÐØ Ð0@ÐA€N€N€Nr   rF  c                   ó^   — e Zd ZdZdZdZeefZdZ	dZ
dZdZdZdZdZdZd„ Zed„ ¦   «         ZdS )ÚTableColumnGroupBoxz5Box for elements with ``display: table-column-group``Tr   c                 ó$   — d„ | j         D ¦   «         S )z3Return cells that originate in the group's columns.c                 ó@   — g | ]}|                      ¦   «         D ]}|‘ŒŒS rh   )Ú	get_cells)ri   ÚcolumnÚcells      r   rl   z1TableColumnGroupBox.get_cells.<locals>.<listcomp>™  sN   € ð Mð Mð MØ¸×9IÒ9IÑ9KÔ9KðMð MØ15ˆDðMð Mð Mð Mr   r	   r   s    r   rK  zTableColumnGroupBox.get_cells—  s+   € ðMð MØ#œ}ðMñ Mô Mð 	Mr   c                 óì   — | j         rt          | j         ¦  «        S 	 t          t          | j                             dd¦  «                             ¦   «         ¦  «        d¦  «        S # t          $ r Y dS w xY w©NÚspanÚ rf   )r
   r  rq   Úintr   ÚgetÚstriprý   r   s    r   rP  zTableColumnGroupBox.spanœ  sy   € àŒ=ð 	Ý�t”}Ñ%Ô%Ð%ðÝ�3˜tœ|×/Ò/°¸Ñ;Ô;×AÒAÑCÔCÑDÔDÀaÑHÔHÐHøÝð ð ð Ø�q�qðøøøs   �AA% Á%
A3Á2A3N)r$   rÃ   rÄ   rÅ   rÆ   rÇ   rü   r?  rB  rS   rT   rO   rP   rC   rD   r>   r?   rK  ÚpropertyrP  rh   r   r   rH  rH  †  s‡   € € € € € Ø?Ð?ØÐØ $ÐØ Ð/€Nð €JØ€MØ€KØ€Là€KØ€NØ€LØ€MðMð Mð Mð
 ðð ñ „Xðð ð r   rH  c                   ó`   — e Zd ZdZdZdZeeefZ	dZ
dZdZdZdZdZdZdZd„ Zed„ ¦   «         ZdS )ÚTableColumnBoxz/Box for elements with ``display: table-column``Tr   c                 ó   — t           ‚)zRReturn cells that originate in the column.

        Is set on instances.

        )ÚNotImplementedErrorr   s    r   rK  zTableColumnBox.get_cells¹  s
   € õ "Ð!r   c                 ó¶   — 	 t          t          | j                             dd¦  «                             ¦   «         ¦  «        d¦  «        S # t
          $ r Y dS w xY wrO  )rq   rR  r   rS  rT  rý   r   s    r   rP  zTableColumnBox.spanÁ  s_   € ð	Ý•s˜4œ<×+Ò+¨F°BÑ7Ô7×=Ò=Ñ?Ô?Ñ@Ô@À!ÑDÔDÐDøÝð 	ð 	ð 	Ø�1�1ð	øøøs   ‚AA
 Á

AÁAN)r$   rÃ   rÄ   rÅ   rÆ   rÇ   rü   r?  rH  rB  rS   rT   rO   rP   rC   rD   r>   r?   rK  rU  rP  rh   r   r   rW  rW  ¨  s‡   € € € € € Ø9Ð9ØÐØ $ÐØ Ð0CÐD€Nð €JØ€MØ€KØ€Là€KØ€NØ€LØ€Mð"ð "ð "ð ðð ñ „Xðð ð r   rW  c                   ó&   ‡ — e Zd ZdZdZˆ fd„Zˆ xZS )ÚTableCellBoxz-Box for elements with ``display: table-cell``Tc                 óî  •—  t          ¦   «         j        |i |¤Ž 	 t          t          | j                             dd¦  «                             ¦   «         ¦  «        d¦  «        | _        n# t          t          f$ r
 d| _        Y nw xY w	 t          t          | j                             dd¦  «                             ¦   «         ¦  «        d¦  «        | _
        d S # t          t          f$ r d| _
        Y d S w xY w)NÚcolspanrQ  rf   Úrowspanr   )rÜ   r   rq   rR  r   rS  rT  r^  ÚAttributeErrorrý   r_  )r   r)   r*   rß   s      €r   r   zTableCellBox.__init__Í  sõ   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ð	Ý�s 4¤<×#3Ò#3°I¸rÑ#BÔ#B×#HÒ#HÑ#JÔ#JÑKÔKÈQÑOÔOˆDŒLˆLøÝ¥
Ð+ð 	ð 	ð 	ØˆDŒLˆLˆLð	øøøð	Ý�s 4¤<×#3Ò#3°I¸rÑ#BÔ#B×#HÒ#HÑ#JÔ#JÑKÔKÈQÑOÔOˆDŒLˆLˆLøÝ¥
Ð+ð 	ð 	ð 	ØˆDŒLˆLˆLˆLð	øøøs%   œAA* Á*BÂBÂ	AC ÃC4Ã3C4)r$   rÃ   rÄ   rÅ   rÇ   r   r  r  s   @r   r\  r\  É  sD   ø€ € € € € Ø7Ð7Ø $Ððð ð ð ð ð ð ð ð r   r\  c                   ó"   — e Zd ZdZdZdZeefZdS )ÚTableCaptionBoxz0Box for elements with ``display: table-caption``TN)	r$   rÃ   rÄ   rÅ   rÆ   rÇ   rü   r?  rB  rh   r   r   rb  rb  ß  s*   € € € € € Ø:Ð:ØÐØ $ÐØ Ð/€N€N€Nr   rb  c                   óT   ‡ — e Zd ZdZˆ fd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zˆ xZ	S )ÚPageBoxz¤Box for a page.

    Initially the whole document will be in the box for the root element.
    During layout a new page box is created after every page break.

    c                 ó`   •— || _         t          ¦   «                              d |d g ¬¦  «         d S ©N)r   r   r   r
   )Ú	page_typerÜ   r   )r   rg  r   rß   s      €r   r   zPageBox.__init__í  sC   ø€ Ø"ˆŒå‰Œ×ÒØ E°4À"ð 	ñ 	Fô 	Fð 	Fð 	Fð 	Fr   c                 óB   — dt          | ¦  «        j        › d| j        › d�S r   )r#   r$   rg  r   s    r   r%   zPageBox.__repr__ó  s&   € Ø:•4˜‘:”:Ô&Ð:Ð:¨¬Ð:Ð:Ð:Ð:r   c                 ó    ‡ — ˆ fd„dD ¦   «         S )Nc                 ó<   •— i | ]}|‰j         d |› �         j        “ŒS )Úbleed_)r   Úvalue)ri   rç   r   s     €r   ú
<dictcomp>z!PageBox.bleed.<locals>.<dictcomp>ø  s;   ø€ ð <ð <ð <àð �$”*˜_ d˜_˜_Ô-Ô3ð<ð <ð <r   )rì   r�   rí   rŽ   rh   r   s   `r   ÚbleedzPageBox.bleedö  s.   ø€ ð<ð <ð <ð <à:ð<ñ <ô <ð 	<r   c                 óö   — | j         d          | j         d          |                      ¦   «         | j         d         z   | j         d         z   |                      ¦   «         | j         d         z   | j         d         z   fS )NrŽ   rì   r�   rí   )rn  rQ   rU   r   s    r   Ú
bleed_areazPageBox.bleed_areaü  sw   € ð ŒZ˜ÔÐ $¤*¨UÔ"3Ð!3Ø×ÒÑÔ $¤*¨VÔ"4Ñ4°t´zÀ'Ô7JÑJØ×ÒÑ Ô  4¤:¨eÔ#4Ñ4°t´zÀ(Ô7KÑKðMð 	Mr   )
r$   rÃ   rÄ   rÅ   r   r%   rU  rn  rp  r  r  s   @r   rd  rd  æ  s“   ø€ € € € € ðð ðFð Fð Fð Fð Fð;ð ;ð ;ð ð<ð <ñ „Xð<ð
 ðMð Mñ „XðMð Mð Mð Mð Mr   rd  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )Ú	MarginBoxz3Box in page margins, as defined in CSS3 Paged Mediac                 ó`   •— || _         t          ¦   «                              d |d g ¬¦  «         d S rf  )Ú
at_keywordrÜ   r   )r   rt  r   rß   s      €r   r   zMarginBox.__init__  sC   ø€ Ø$ˆŒå‰Œ×ÒØ E°4À"ð 	ñ 	Fô 	Fð 	Fð 	Fð 	Fr   c                 óB   — dt          | ¦  «        j        › d| j        › d�S r   )r#   r$   rt  r   s    r   r%   zMarginBox.__repr__  s&   € Ø;•4˜‘:”:Ô&Ð;Ð;¨¬Ð;Ð;Ð;Ð;r   ©r$   rÃ   rÄ   rÅ   r   r%   r  r  s   @r   rr  rr    sR   ø€ € € € € Ø=Ð=ðFð Fð Fð Fð Fð<ð <ð <ð <ð <ð <ð <r   rr  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚFootnoteAreaBoxz-Box displaying footnotes, as defined in GCPM.c                 ó`   •— || _         t          ¦   «                              d |d g ¬¦  «         d S rf  )r­   rÜ   r   )r   r­   r   rß   s      €r   r   zFootnoteAreaBox.__init__  sC   ø€ ØˆŒ	å‰Œ×ÒØ E°4À"ð 	ñ 	Fô 	Fð 	Fð 	Fð 	Fr   c                 ó2   — dt          | ¦  «        j        › d�S )Nr    z @footnote>)r#   r$   r   s    r   r%   zFootnoteAreaBox.__repr__  s   € Ø3•4˜‘:”:Ô&Ð3Ð3Ð3Ð3r   rv  r  s   @r   rx  rx    sR   ø€ € € € € Ø7Ð7ðFð Fð Fð Fð Fð4ð 4ð 4ð 4ð 4ð 4ð 4r   rx  c                   ó   — e Zd ZdZdS )ÚFlexContainerBoxz$A box that contains only flex-items.Nr  rh   r   r   r|  r|    s   € € € € € Ø.Ð.Ð.Ð.r   r|  c                   ó   — e Zd ZdZdS )ÚFlexBoxz‰A box that is both block-level and a flex container.

    It behaves as block on the outside and as a flex container on the inside.

    Nr  rh   r   r   r~  r~     r*  r   r~  c                   ó   — e Zd ZdZdS )ÚInlineFlexBoxz‹A box that is both inline-level and a flex container.

    It behaves as inline on the outside and as a flex container on the inside.

    Nr  rh   r   r   r€  r€  (  r*  r   r€  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚGridContainerBoxz$A box that contains only grid-items.c                 ó^   •— t          ¦   «                              ||||¦  «         i | _        d S r   )rÜ   r   ÚadvancementsrÞ   s        €r   r   zGridContainerBox.__init__2  s/   ø€ Ý‰Œ×Ò˜ e¨W°hÑ?Ô?Ð?àˆÔÐÐr   r0  r  s   @r   r‚  r‚  0  s>   ø€ € € € € Ø.Ð.ðð ð ð ð ð ð ð ð r   r‚  c                   ó   — e Zd ZdZdS )ÚGridBoxz‰A box that is both block-level and a grid container.

    It behaves as block on the outside and as a grid container on the inside.

    Nr  rh   r   r   r†  r†  8  r*  r   r†  c                   ó   — e Zd ZdZdS )ÚInlineGridBoxz‹A box that is both inline-level and a grid container.

    It behaves as inline on the outside and as a grid container on the inside.

    Nr  rh   r   r   rˆ  rˆ  @  r*  r   rˆ  )#rÅ   r7  Úcssr   r   rÚ   r  r©   rª   r¼   r  r!  r½   r¢   r,  r£   r2  r4  rü   r?  rA  rF  rH  rW  r\  rb  rd  rr  rx  r|  r~  r€  r‚  r†  rˆ  rh   r   r   ú<module>rŠ     s�  ðð0ð 0ðd Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  ðn*ð n*ð n*ð n*ð n*ñ n*ô n*ð n*ðb	N&ð N&ð N&ð N&ð N&�ñ N&ô N&ð N&ðbð ð ð ð �Cñ ô ð ð
ð 
ð 
ð 
ð 
˜	ñ 
ô 
ð 
ðð ð ð ð Ð  -ñ ô ð ðð ð ð ð ˆiñ ô ð ð*<ð <ð <ð <ð <�Sñ <ô <ð <ð(;ð ;ð ;ð ;ð ;� 	ñ ;ô ;ð ;ð"ð ð ð ð ˆnñ ô ð ð,ð ð ð ð ˜>ñ ô ð ðð ð ð ð Ð)Ð+<ñ ô ð ð	'ð 	'ð 	'ð 	'ð 	'�#ñ 	'ô 	'ð 	'ðð ð ð ð �{ Mñ ô ð ðð ð ð ð ˜Ð%9ñ ô ð ð8ð 8ð 8ð 8ð 8ˆ}˜iñ 8ô 8ð 8ð$:ð :ð :ð :ð :�Xñ :ô :ð :ð	ð 	ð 	ð 	ð 	�yñ 	ô 	ð 	ðBð Bð Bð Bð B�)ñ Bô Bð Bðð ð ð ð ˜)ñ ô ð ðDð ð ð ð �Yñ ô ð ðBð ð ð ð Ð$ñ ô ð ð,0ð 0ð 0ð 0ð 0�hñ 0ô 0ð 0ðMð Mð Mð Mð Mˆiñ Mô Mð Mð<	<ð 	<ð 	<ð 	<ð 	<Ð!ñ 	<ô 	<ð 	<ð	4ð 	4ð 	4ð 	4ð 	4�hñ 	4ô 	4ð 	4ð/ð /ð /ð /ð /�yñ /ô /ð /ðð ð ð ð Ð ñ ô ð ðð ð ð ð Ð$ nñ ô ð ðð ð ð ð �yñ ô ð ðð ð ð ð Ð ñ ô ð ðð ð ð ð Ð$ nñ ô ð ð ð r   