Ë
    o]jSÁ  ã                   óJ  — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZ dd	lmZ dd
lmZmZmZ ddlmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZmZ 	 	 	 d&d„Zd„ Z d„ Z!d'd„Z" ee"d¬«      e"_#        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%„ Z2y)(zCPage breaking and layout for block-level and block-container boxes.é    )Úpartial)Úinfé   )Úboxesé   )ÚAbsolutePlaceholderÚabsolute_layout)Úcolumns_layout)Úflex_layout)Úavoid_collisionsÚfloat_layoutÚget_clearance)Úgrid_layout)Úiter_line_boxes)Ú
percentageÚresolve_percentagesÚresolve_position_percentages)Úblock_replaced_box_layout)Útable_layoutÚtable_wrapper_widthNFc                 ó°  — |€g n|}|€g n|}|€g n|}t        |t        j                  «      �st        ||«       |j                  dk(  rd|_        |j
                  dk(  rd|_        | j                  dkD  rS|rQ|j                  xs |}|r?|j                  d   dk(  rd|_        n%|j                  d   dk(  r| j                  sd|_        t        g |¢|j                  ‘«      }|j                  d   }t        | |||«      |_        |j                  �2|j                  |z   |j                  z   }||j                  z
  |_        g }t        | |||||||||	|
||«      S )z Lay out the block-level ``box``.Úautor   r   Úmargin_breakÚdiscardÚ	direction)Ú
isinstancer   ÚTableBoxr   Ú
margin_topÚmargin_bottomÚcurrent_pageÚis_for_root_elementÚstyleÚforced_breakÚcollapse_marginr   Ú	clearanceÚ
position_yÚblock_level_layout_switch)ÚcontextÚboxÚbottom_spaceÚ
skip_stackÚcontaining_blockÚpage_is_emptyÚabsolute_boxesÚfixed_boxesÚadjoining_marginsÚfirst_letter_styleÚfirst_line_styler   Ú	max_linesÚcollapse_with_pageÚcollapsed_marginr   Útop_border_edges                    úN/var/www/zogu/zoguvenv/lib/python3.12/site-packages/weasyprint/layout/block.pyÚblock_level_layoutr8      sq  € ð
 *Ð1‘R°~€NØ#Ð+‘"°€KØ/Ð7™Ð=NÐä�cœ5Ÿ>™>Õ*Ü˜CÐ!1Ô2à�>‰>˜VÒ#ØˆCŒNØ×Ñ Ò&Ø !ˆCÔà×Ñ !Ò#©ð !×4Ñ4ÒIÐ8Ið á!Ø—9‘9˜^Ñ,°	Ò9Ø%&�C•NØ—Y‘Y˜~Ñ.°&Ò8Ø"×/Ò/Ø)*˜œä*Ð+OÐ->Ð+OÀÇÁÐ+OÓPÐØ$×*Ñ*¨;Ñ7ˆ	Ü% g¨s°IÐ?OÓPˆŒØ�=‰=Ð$Ø!Ÿn™nÐ/?Ñ?À#Ç-Á-ÑOˆOØ,¨s¯~©~Ñ=ˆCŒNØ "Ðä$Ø��l JÐ0@À-Ø˜Ð%6Ð8JØ˜' 9ó.ð .ó    c                 ó  — t        |t        j                  «      rt        | |||||||«      }nÖt        |t        j                  «      rt        | |||||||||	|
||«      S t        |t        j                  «      rt        | ||«      }n}t        |t        j                  «      rt        | ||||||||«	      }nOt        |t        j                  «      rt        | |||||||«      }n"t        dt        |«      j                  › d�«      ‚g |¢d‘­S )z;Call the layout function corresponding to the ``box`` type.zLayout for z not handled yetN)r   r   r   r   ÚBlockBoxÚblock_box_layoutÚBlockReplacedBoxr   ÚFlexBoxr   ÚGridBoxr   Ú	TypeErrorÚtypeÚ__name__)r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r   r3   Úresults                 r7   r'   r'   A   s  € ô
 �#”u—~‘~Ô&ÜØ�S˜,¨
Ð4DØ˜>¨;ó8‰ô 
�CœŸ™Ô	(ÜØ�S˜,¨
Ð4DØ˜>¨;Ð8IØÐ 0°'¸9óFð 	Fô 
�Cœ×/Ñ/Ô	0Ü*¨7°CÐ9IÓJ‰Ü	�CœŸ™Ô	'ÜØ�S˜,¨
Ð4DØ˜>¨;¸óA‰ô 
�CœŸ™Ô	'ÜØ�S˜,¨
Ð4DØ˜>¨;ó8‰ô ˜+¤d¨3£i×&8Ñ&8Ð%9Ð9IÐJÓKÐKØˆVˆ?�T‰?Ðr9   c                 óÚ  — |j                   d   dk7  s|j                   d   dk7  ryt        | |||||||||	|
«      }|d   }|€V|d   }|j                  |j                  z   |j                  z   }|r)t        | |g||«       ||z  }t        | |||||||||	|
«      }g |¢d‘­S |j                  r#t        | ||j                  |j                  f«       t        ||«       t        | ||||||||	|
||«      }|d   x}r|j                  s|j                  r|S |j                  s|j                  «       r?t        | ||d¬«      \  }}}|j!                  ||j"                  z
  ||j$                  z
  «       |S )	zLay out the block ``box``.Úcolumn_widthr   Úcolumn_countr   Nr   F)Úouter)r"   r
   r   Úpadding_bottomÚborder_bottom_widthÚremove_placeholdersÚis_table_wrapperr   ÚwidthÚheightÚblock_level_widthÚblock_container_layoutÚ	is_columnÚis_flex_itemÚestablishes_formatting_contextr   Ú	translateÚ
position_xr&   )r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r   r3   rC   Ú	resume_atÚnew_boxÚcolumns_bottom_spacerT   r&   Ú_s                       r7   r<   r<   ^   sÌ  € ð
 	�	‰	�.Ñ! VÒ+Ø�I‰I�nÑ%¨Ò/ÜØ�S˜,¨
Ð4DÀmØ˜KÐ):Ð<NØóˆð ˜1‘Iˆ	àÐØ˜Q‘iˆGà×%Ñ%¨×(>Ñ(>Ñ>Ø×+Ñ+ñ,ð !ñ $Ü#Ø˜g˜Y¨¸ôEàÐ 4Ñ4�Ü'Ø˜S ,°
Ð<LØ! >°;Ð@QØ&Ð(8ó:�ð �ˆ˜‰ÐØ	×	Ò	ÜØ�SÐ+×1Ñ1Ð3C×3JÑ3JÐKô	Mä�cÐ+Ô,ä#Ø��l J°¸~ØÐ&Ð(:Ð<LÈgØó€Fð ˜a‘yÐ ˆGÐ  W×%6Ò%6¸'×:NÒ:NØˆØ×Ò 7×#IÑ#IÔ#Kô %5Ø�WÐ.°eô%=Ñ!ˆ
�J à×ÑØ˜×+Ñ+Ñ+¨Z¸'×:LÑ:LÑ-Lô	Nà€Mr9   c                 óÀ  — t        |t        j                  «      r|j                  }|j                  d   }n|d   }d}| j
                  | j                  z   | j                  z   | j                  z   }| j                  dk(  rf||z
  | _        | j                  dk7  r| xj                  | j                  z  c_        | j                  dk7  r| xj                  | j                  z  c_        |r9t        | j                  t        | j                  | j                  «      «      | _        || j                  z   }| j                  dk7  r|| j                  z  }| j                  dk7  r|| j                  z  }||kD  r,| j                  dk(  rd| _	        | j                  dk(  rd| _
        |dk(  r�| j                  s�| xj                   ||z
  | j                  z
  z  c_        | j                  dk7  r| xj                   | j                  z  c_        | j                  dk7  r| xj                   | j                  z  c_        ||z
  | j                  z
  }| j                  | j                  cxk(  rdk(  rn n|dz  | _	        |dz  | _
        y| j                  dk(  r$| j                  dk7  r|| j                  z
  | _	        y| j                  dk7  r%| j                  dk(  r|| j                  z
  | _
        yyy)zSet the ``box`` width.r   r   Últrr   Úrtlr   N)r   r   ÚBoxrL   r"   Úpadding_leftÚpadding_rightÚborder_left_widthÚborder_right_widthÚmargin_leftÚmargin_rightÚmaxÚ	min_widthÚminÚ	max_widthrP   rT   )r)   r,   Úwith_min_maxÚcb_widthr   Úpadding_plus_borderÚmargin_widthÚ
margin_sums           r7   rN   rN   �   s{  € ô Ð"¤E§I¡IÔ.Ø#×)Ñ)ˆØ$×*Ñ*¨;Ñ7‰	à# AÑ&ˆàˆ	ð 	×Ñ˜3×,Ñ,Ñ,Ø×Ññ	Ø #× 6Ñ 6ñ	7ð ð ‡y�y�FÒØÐ2Ñ2ˆŒ	Ø�?‰?˜fÒ$Ø�IŠI˜Ÿ™Ñ(�IØ×Ñ˜vÒ%Ø�IŠI˜×)Ñ)Ñ)�IÙÜ˜Ÿ™¤s¨3¯=©=¸#¿)¹)Ó'DÓEˆŒ	ð '¨¯©Ñ2€LØ
‡�˜&Ò Ø˜Ÿ™Ñ'ˆØ
×Ñ˜6Ò!Ø˜×(Ñ(Ñ(ˆØ�hÒØ�?‰?˜fÒ$ØˆCŒOØ×Ñ˜vÒ%Ø ˆCÔð �EÒ #§-¢-Ø�Š˜(Ð%8Ñ8¸3¿9¹9ÑDÑD�Ø�?‰?˜fÒ$Ø�NŠN˜cŸo™oÑ-�NØ×Ñ˜vÒ%Ø�NŠN˜c×.Ñ.Ñ.�Nð Ð/Ñ/°#·)±)Ñ;€JØ
‡�˜#×*Ñ*Ô4¨fÕ4Ø$ q™.ˆŒØ%¨™>ˆÕØ	�‰˜FÒ	" s×'7Ñ'7¸6Ò'AØ$ s×'7Ñ'7Ñ7ˆ�Ø	�‰˜FÒ	" s×'7Ñ'7¸6Ò'AØ%¨¯©Ñ7ˆÕð (BÐ	"r9   )rg   c                 óv  — | j                   d   dk(  rßt        | |«       | j                  dk7  r<| j                  dk7  r-| j                   d   dk(  r| j                  }nI| j                   }n;| j                  dk7  r| j                  }n| j                  dk7  r| j                   }nd}| j                  dk7  r| j                  }n| j
                  dk7  r| j
                   }nd}| j                  ||«       t        | t        j                  t        j                  f«      r| j                  D ]  }t        ||«       Œ yy)z5Translate the ``box`` if it is relatively positioned.ÚpositionÚrelativer   r   rZ   r   N)r"   r   ÚleftÚrightÚtopÚbottomrS   r   r   Ú	InlineBoxÚLineBoxÚchildrenÚrelative_positioning)r)   r,   Útranslate_xÚtranslate_yÚchilds        r7   rv   rv   Ï   s  € à
‡y�y�Ñ 
Ò*Ü$ SÐ*:Ô;à�8‰8�vÒ #§)¡)¨vÒ"5Ø�y‰y˜Ñ%¨Ò.Ø!Ÿh™h‘à"Ÿy™y˜j‘Ø�X‰X˜ÒØŸ(™(‰KØ�Y‰Y˜&Ò ØŸ9™9˜*‰KàˆKà�7‰7�fÒØŸ'™'‰KØ�Z‰Z˜6Ò!ØŸ:™:˜+‰KàˆKà�‰�k ;Ô/ä�#œŸ™¬¯©Ð7Ô8Ø—\‘\ò 	:ˆEÜ  Ð(8Õ9ñ	:ð 9r9   c
           	      óp  — d}
d }d }d }|xj                   t        |«      z  c_         |j                  «       r]t        |«      x}}||_        |j                  |«       |j                  d   dk(  r|j                  |«       �n1|j                  |«       �n|j                  «       r¿t        | |||||	d ¬«      \  }}| j                  |	|j                   |j                  z   «      }|xr | xs | xs |j                  «       }|r||_        |j                  |«       n—t        |«      }t        ||«      }|d i}d }d}
|rvt        || «      rjt        | |||«      }|rZ|\  |d d  }d }nO|j!                  «       r?|j                  d   d   }| j"                  }| j$                  |   |   j                  |«       |
|||fS )NFrm   Úabsolute©r+   Tr   )r&   r$   Úis_absolutely_positionedr   ÚindexÚappendr"   Ú
is_floatedr   Úoverflows_pagerM   Úis_monolithicÚfind_last_in_flow_childÚblock_level_page_breakÚavoid_page_breakÚfind_earlier_page_breakÚ
is_runningr    Úrunning_elements)r(   r)   r~   ry   Únew_childrenr-   r.   r/   r0   r*   ÚstoprU   Ú	new_childÚout_of_flow_resume_atÚplaceholderÚpage_overflowÚ	add_childÚlast_in_flow_childÚ
page_breakrC   Úrunning_nameÚpages                         r7   Ú_out_of_flow_layoutr”   î   sð  € ð €DØ€IØ€IØ Ðð
 
×ÒœÐ(9Ó:Ñ:Õð ×%Ñ%Ô'Ü"5°eÓ"<Ð<ˆ	�KØ!ˆÔØ×Ñ˜KÔ(Ø�;‰;�zÑ" jÒ0Ø×!Ñ! +Ö.à×Ñ˜{Ö+ð 
×	Ñ	Ô	Ü+7Ø�U˜C °¸lØô,Ñ(ˆ	Ð(ð
  ×.Ñ.Ø˜)×.Ñ.°×1AÑ1AÑAóCˆð Ò/ <Ð/ò  ØÐò à×ÑÓð 	ñ à#ˆIŒOØ×Ñ 	Õ*ô "9¸Ó!FÐÜ/Ð0BÀEÓJˆJØ ˜ˆIØ$(Ð!ØˆDÙÔ 0°¸WÔ Eä0Ø˜\¨>¸;óH�áà17Ñ.�L¡�O YØ $‘Ið 
×	Ñ	Ô	Ø—{‘{ :Ñ.¨qÑ1ˆØ×#Ñ#ˆØ× Ñ  Ñ.¨tÑ4×;Ñ;¸EÔBà�˜IÐ'<Ð<Ð<r9   c                 óf  — t        |«      |j                  d   z
  }|dk  r|st        | |j                  |	|
«       dd|fS ||kD  r|st        | |j                  |	|
«       dd|fS |r.||k  r)|| d D ]  }t        | |j                  |	|
«       Œ || d…= t        | |j                  |	|
«       dd||ifS )z[Break line where allowed by orphans and widows.

    Return (abort, stop, resume_at).

    Úorphansr   TFN)Úlenr"   rJ   ru   )r(   r)   Úliner‰   Úneededr-   r~   r+   rU   r.   r/   Úover_orphansry   s                r7   Ú_break_liner›   0  sÞ   € ô �|Ó$ s§y¡y°Ñ';Ñ;€LØ�aÒ¡ô 	˜G T§]¡]°NÀKÔPØ�U˜IÐ%Ð%ð �Ò¡]ä˜G T§]¡]°NÀKÔPØ�U˜IÐ%Ð%Ù�&˜LÒ(à! 6 ' (Ð+ò 	FˆEÜØ˜Ÿ™¨¸õFð	Fð ˜&˜™Ð"ä˜ §¡°ÀÔLØ�$˜ 
Ð+Ð+Ð+r9   c                 ól  ‡ — dx}}d }g }t        |j                  «      dk(  sJ d«       ‚|r|
t        |«      z  }
|}t        ‰ ||
|	||||||«
      }t	        |«      D �]=  \  }\  }}|�$|dk(  r|j
                  d   |d   _         �n|dz  }||_        |j                  |j                  z   }||d u z  }|r|j                  |j                  z   }nd}|xs | xr ‰ j                  |	||z   «      }|�rJdx}}|j
                  d   dz
  }|D ]  }|dz  }|dk(  sŒ n t        |«      dz   |j
                  d	   k  rd}n|dk\  rd}t        |«      |j
                  d	   k  rd}n|dkD  rd}t        d|«      }‰ j                   xr |xr | }d} |rg‰ j                  r[‰ j!                  ‰ j                  d   «       | dz  } ‰ j                  |	||z   «      s|j#                  |«       d}n(|r‰ j                  rŒ[t%        ‰ ||||||||||«      \  }}}| d
k\  r&‰ j&                  d|  dz
  d…   }!|!‰ j&                  |  d   �na|rE‰ j                  |	|«      r3||j(                  z  }|j+                  d|j(                   «       d|_        ‰ j,                  röd}"ˆ fd„|j/                  «       D «       }#|#D ]Ò  }$‰ j1                  |$«      }|j#                  |$«       |xs# ‰ j&                  xs ‰ j                  |	||z   «      }|sŒO‰ j!                  |$«       |s|rŒe|$j
                  d   dk(  rD|j
                  d   dz
  x}r|D ]  }|dz  }|dk(  sŒ n t%        ‰ ||||||||||«      \  }}}d}" n|$j
                  d   dk(  sŒÎdx}}" n |"r n|j#                  |«       |}
|}�Œ@ |r||d   j                  i}||||
||fS )NFr   z$line box with siblings before layoutr   Úblock_ellipsiséÿÿÿÿTÚwidowsr–   r   c              3   óf   •K  — | ](  }|j                   ‰j                  v r|j                   –— Œ* y ­w©N)ÚfootnoteÚ	footnotes)Ú.0Ú
descendantr(   s     €r7   ú	<genexpr>z"_linebox_layout.<locals>.<genexpr>®  s3   øè ø€ ò =Ø(2Ø×&Ñ&¨'×*;Ñ*;Ñ;ð ×#Õ#ñ=ùs   ƒ.1Úfootnote_policyr˜   Úblock)r—   ru   r$   r   Ú	enumerater"   r�   rU   r&   rM   rI   rH   r�   rc   Ú	in_columnÚcurrent_page_footnotesÚreport_footnoter   r›   Úreported_footnotesr   rS   r£   ÚdescendantsÚlayout_footnote)%r(   r)   r~   ry   r‰   r-   r.   r/   r0   r*   r&   r+   r1   r2   Údraw_bottom_decorationr3   ÚabortrŠ   rU   Únew_footnotesÚnew_containing_blockÚlines_iteratorÚir˜   Únew_position_yÚoffset_yÚoverflowÚcould_break_beforeÚcan_break_nowr™   rX   Úreportr­   ÚextraÚbreak_lineboxr£   r¢   s%   `                                    r7   Ú_linebox_layoutr¾   N  s±  ø€ ð Ð€EˆDØ€IØ€Mäˆs�|‰|Ó Ò!ÐIÐ#IÓIÐ!áØ”oÐ&7Ó8Ñ8ˆ
ØÐÜ$Ø�˜
 L°*Ð>RØ˜Ð%7Ð9IóK€Nô !*¨.Ó 9ó vÑˆÑˆD�)àÐ Ø˜AŠ~Ø25·)±)Ð<LÑ2M�˜RÑ Ô/ÚØ˜‰NˆIð #ˆŒØŸ™¨4¯;©;Ñ6ˆð 	 )¨tÐ"3Ñ3ÐÙ!Ø×.Ñ.°×1CÑ1CÑC‰HàˆHð
 Ò. Ð.ò LØ×"Ñ" <°À(Ñ1JÓKð 	ò ð 26Ð5Ð Ø—Y‘Y˜xÑ(¨1Ñ,ˆFØ#ò �Ø˜!‘�à˜R“<Ùð	ô
 �<Ó  1Ñ$ s§y¡y°Ñ';Ò;Ø %‘Ø˜1’Ø %�Ü�<Ó  3§9¡9¨YÑ#7Ò7Ø%*Ñ"Ø˜!’Ø%*Ð"Ü˜˜F“^ˆFØ ×*Ñ*Ð*ÒW¨}ÒWÐEWÐAWˆFØ!"ÐÙ˜W×;Ò;Ø×'Ñ'¨×(FÑ(FÀrÑ(JÔKØ" aÑ'Ð"Ø×-Ñ-¨l¸NÈXÑ<UÔVØ ×'Ñ'¨Ô-Ø�DØñ ˜W×;Ó;ô *5Ø˜S $¨°f¸mÈUØ 	¨>¸;ó*HÑ&��t˜Yð " QÒ&Ø×2Ñ2°2Ð7IÐ6IÈ!Ñ6KÈBÐ3NÑO�ØCH�×*Ñ*Ð,>Ð+>Ð+?Ð@âñ ˜w×5Ñ5°lÀNÔSð ˜cŸn™nÑ,ˆNØ�N‰N˜1˜sŸ~™~˜oÔ.ØˆCŒNà×ÒØ!ˆMó=Ø6:×6FÑ6FÓ6Hô=ˆIð &ò "�Ø"×2Ñ2°8Ó<�Ø×$Ñ$ XÔ.àò TØ×.Ñ.òTà×*Ñ*¨<¸È(Ñ9RÓSð ò Ø×+Ñ+¨HÔ5ñ
 $ª=Ø#Ÿ>™>Ð*;Ñ<ÀÒFØ),¯©°8Ñ)<¸qÑ)@Ð@˜vÐ@Ø)7ò !. AØ$*¨a¡K Fà'-°£{Ù(-ð	!.ô
 6AØ '¨¨d°LÀ&È-Ø % z°9¸nØ +ó6-Ñ2˜E 4¨ð -1˜MÙ!Ø%Ÿ^™^Ð,=Ñ>À'ÓIØ48Ð8˜E MÙ!ð;"ñ< Ùà×Ñ˜DÔ!Ø#ˆ
ØŠ
ðmvñp Ø˜L¨Ñ,×6Ñ6Ð7ˆ	à�$˜	 :¨}¸iÐGÐGr9   c                 ó”	  — dx}}t        |«      }|�Nt        ||«      }t        ||«      }|st        || «      r*|j	                  «       d   }||dœ}|d i}d}||||
||||fS d}|j
                  �s*t        ||«       |�€|j                  «       �r
t        |«      }|j                  }|dk(  rd}nF| j                  dkD  r7|r5|j                  d   dk(  rd}n |j                  d   dk(  r| j                  sd}t        g |¢|‘«      }||z
  }|D ]  }|j                  |¬	«       Œ |j                  d
   }t        | |||«      }|�Y|D ]  }|j                  | ¬	«       Œ t        |«      }|xj                  ||j                  z
  z  c_        g }|j!                  «       }
|rÂ|j
                  r#t        |«      }|xj                  |z  c_        g }n“t#        |t$        j&                  «      sy|j                  d   dk(  rd}n.t)        |j                  d   |j                  |j*                  «      }|j-                  |«       t        |«      |z
  } |xj                  | z  c_        g }|xr t/        d„ |D «       «       }!|j0                  |j                  f}"t3        | ||	|||!|||||||«      \  }#}}}$}%}|#��|%�s.|#j!                  «       |#j4                  z   }&| j7                  |	|&«      }'|	|#j8                  |#j:                  z   z  }	|j=                  «       s|	|#j>                  z  }	|#jA                  «       |#jC                  «       z   }(| j7                  |	|(«      })|!xs |jE                  «        }*|*r|'rtG        | |#g||«       d }#nf|*rb|)r`tG        | |#g||«       |"\  |_        |_        t3        | ||	|||!|||||||«      \  }#}}}$}%}|#r$|#jA                  «       |#jC                  «       z   }
n|(}
|$}|#r|j-                  |#j>                  «       |#r-|#jH                  r!|#jA                  «       |#jC                  «       z   }
|#€rtK        || «      r/tM        | |||«      }+|+r|+\  }}d}||||
||||fS |sd}||||
||||fS tO        d„ |D «       «      rtG        | |||«       g }|r|d i}d}nd}||||
||||fS ||#_(        |j-                  |#«       |�||i}d}||||
||||fS )NFr   ©Úbreakr“   Tr   r   r   r   )Údyr   r   c              3   ó@   K  — | ]  }t        |t        «      s|–— Œ y ­wr¡   )r   r   ©r¤   ry   s     r7   r¦   z"_in_flow_layout.<locals>.<genexpr>)  s#   è ø€ ò ?7ØÜ˜%Ô!4Ô5ô 	ñ?7ùs   ‚c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr¡   )r}   rÄ   s     r7   r¦   z"_in_flow_layout.<locals>.<genexpr>z  s   è ø€ ÒJ°Eˆu×-Ñ-×/ÑJùs   ‚))rƒ   r„   Úblock_level_page_nameÚforce_page_breakÚpage_valuesrK   r   Útop_margin_collapsesr$   r   r    r"   r#   rS   r   r&   Úcontent_box_yr   r   r;   r   rL   r   ÚanyrT   r8   rM   r�   rH   rI   Úbottom_margin_collapsesr   Úborder_box_yÚborder_heightr‚   rJ   r%   r…   r†   Úallr~   ),r(   r)   r~   ry   r‰   r-   r.   r/   r0   r*   r&   r+   r1   r2   r   Ú	next_pager3   r±   rŠ   r�   r‘   Ú	page_namerU   Úold_collapsed_marginÚchild_margin_topÚnew_collapsed_marginÚcollapsed_margin_differenceÚprevious_new_childr   r%   r5   r   r·   Úpage_is_empty_with_no_childrenÚchild_positionr‹   Únext_adjoining_marginsÚcollapsing_throughÚnew_content_position_yÚcontent_page_overflowr¶   Úborder_page_overflowÚ	can_breakrC   s,                                               r7   Ú_in_flow_layoutrß   Ü  sð  € ð Ð€EˆDô 1°Ó>ÐØÐ%Ü+Ð,>ÀÓFˆ
Ü)Ð*<¸eÓDˆ	ÙÔ(¨°WÔ=Ø×)Ñ)Ó+¨AÑ.ˆIØ",°iÑ@ˆIØ ˜ˆIØˆDà�t˜Y¨
Ð4EØ˜<¨ð4ð 4ð ˆ
ð ×ÓÜ˜E 3Ô'ØÑ%¨#×*BÑ*BÕ*Dô $3Ð3DÓ#EÐ ð  %×/Ñ/ÐØ 6Ò)Ø#$Ñ Ø×%Ñ%¨Ò)©mØ—9‘9˜^Ñ,°	Ò9Ø'(Ñ$Ø—Y‘Y˜~Ñ.°&Ò8Ø"×/Ò/Ø+,Ð(Ü#2Ø6Ð#Ð6Ð%5Ð6ó$8Ð ð %Ð';Ñ;ð (à&2ò MÐ"Ø"×,Ñ,Ð0KÐ,ÕLðMàŸ	™	 +Ñ.ˆIÜ% g¨u°iÐAUÓVˆIØÐ$Ø*6ò 9Ð&Ø&×0Ñ0Ø7Ð7ð 1õ 9ð9ô $3Ð3DÓ#EÐ Ø—’Ð"2°S·^±^Ñ"CÑC•à$&Ð!Ø ×.Ñ.Ó0�
ñ Ø×ÒÜ.Ð/@ÓAÐØ×ÒÐ 0Ñ0ÕØ "ÑÜ˜E¤5§>¡>Ô2Ø�{‰{˜<Ñ(¨FÒ2Ø‘
ä'Ø—K‘K Ñ-¨u¯{©{¸C¿I¹IóG�
à×$Ñ$ ZÔ0Ü&Ð'8Ó9¸JÑFˆHØ×Ò Ñ(ÕØ "Ðà%2ò &7¼3ñ ?7Ø'ô?7ó <7ð 87Ð"ð ×%Ñ% u×'7Ñ'7Ð7€Nä&8Ø	�%˜ z°3Ð8VØ	˜Ð&7Ð9KØ	˜7 Ió'/ñ$€Y�	˜9Ð&<Ø˜ð ÑÚ!à%.×%<Ñ%<Ó%>À×AQÑAQÑ%QÐ"Ø$+×$:Ñ$:ØÐ4ó%6Ð!ð
 ˜I×4Ñ4°y×7TÑ7TÑTÑTˆLØ×.Ñ.Ô0Ø 	× 7Ñ 7Ñ7�Ø&×3Ñ3Ó5¸	×8OÑ8OÓ8QÑQˆNØ#*×#9Ñ#9¸,ÈÓ#WÐ à;ÒR¸s×?PÑ?PÓ?RÐSˆIÙÑ2ä# G¨i¨[¸.È+ÔVØ ‘	ÙÑ3ô $ G¨i¨[¸.È+ÔVØ5CÑ2�Ô  %Ô"2ä2DØ˜e \°:¸sØ3°^À[Ø&Ð(:Ð<LØ˜ió	3)ñ0�˜I yÐ2HØ# Yñ
 Ø!*×!7Ñ!7Ó!9¸I×<SÑ<SÓ<UÑ!U‘Jà+�
ð 3ÐÙØ×$Ñ$ Y×%<Ñ%<Ô=ñ ˜×,Ò,Ø"×/Ñ/Ó1°I×4KÑ4KÓ4MÑMˆJàÐä˜J¨Ô0ä,Ø˜ ~°{óDˆFáØ*0Ñ'�˜iØ�à˜4 ¨JÐ8IØ˜|¨Yð8ð 8ñ
 %ð !�Eà˜t Y°
Ð<MØ! <°ð<ð <ô ÑJ¸\ÔJÔJô   ¨°~À{ÔSØˆLáà ˜ˆIØ‰Dð ˆEà�4˜ JÐ0AÀ9Ø˜)ð%ð 	%ð €I„Oà×Ñ˜	Ô"ØÐØ˜IÐ&ˆ	Øˆð 	ˆt�Y 
Ð,=¸yØ�ið!ð !r9   c                 ó¶  — t        |t        j                  «      sJ ‚|j                  «       r| j	                  |«       |du }|j                  | d¬«       |
|j                  d   dk(  z  }
|
xs |j                  d   dk(  }|€g }|r)||j                  |j                  z   |j                  z   z  }|j                  |j                  «       |}|j                  «       r|j                  }n=|xj                  t        |«      |j                  z
  z  c_        g }|j                  «       }|j!                  «       }|j                  d   d	k(  rg }g }d
ddœ}|j                  d   dk7  r!t#        |j                  d   |xs t$        «      }|j&                  �;|j&                  j(                  D �ci c]  }||j&                  |   “Œ }}|	€|}	n|	|z  }	|j*                  �;|j*                  j(                  D �ci c]  }||j*                  |   “Œ }}|€|}n||z  }|rd}n|j-                  «       \  \  }}t/        |j0                  |d |xs d¬«      D �]x  \  }}||_        ||_        g }|j5                  «       s“d}t7        | |||||||||«
      \  }}}}|r| j9                  ||||«       |j:                  �rK|j=                  «       |_        |j                  d   dk(  �r#|xj2                  |j>                  |j@                  z   z  c_        nöt        |t        jB                  «      r/tE        | |||||||||||||	||«      \  }}}}}}||du z  }g }dx}}	n­tG        | |||||||||||||	|
||«      \  }}}}}}}}d}dx}}	d||fvr}|}|dk  rvd}||j0                  d   k(  } | s`|}!|!r\|!d   } t        | t        jB                  «      r|j                  d   | _$        n't        | t        jJ                  «      r| j0                  }!Œ]	 |rs|jM                  «       d   }"tO        | |j0                  |d ||«       |D ]  }#| jQ                  |#«       Œ |j                  «       r| jS                  «        ddd
|"dœg d|fc S |s�Œ)|jT                  dk7  r?|j                  |jW                  «       z   }$t        |«      }%| jY                  |$||%z
  «      rd}g } n d}|duxs |jZ                  }&|j                  d   dk(  rd}|&ret]        |j                  d   | «      rL|sJtO        | g |¢|j0                  |d ¢||«       |j                  «       r| jS                  «        ddd
ddœg d|fS |j                  «       r+|xj                  t        |«      |j                  z
  z  c_        t_        |«      }'d}(|'€Št        |«      })|j                  d   }*|jT                  dv rZta        | ||*|)«      €Ltc        d„ |jd                  |jf                  |jh                  |j                  |j                  fD «       «      rd}(n||)z  }g }n|jT                  dk7  rg }|jk                  «       s|t        |«      z  }g }|&r5|r3|d   } t        | t        jB                  «      r|j                  d   | _$        |jm                  |«      }+|+j                  | |&xr |
 ¬«       |+jT                  dk(  r†| jn                  r:|+j                  d   dk7  r(tq        d„ | jn                  D «       «      },tq        |,|«      }||+j                  «       cxk(  r	t$        k(  rn nd|+_*        n||+j                  «       z
  |+_*        |+j                  d   d	k(  r|D ]  }-ts        | |-|+||d¬«       Œ |+j0                  D ]$  }tu        ||+j>                  |+jT                  f«       Œ& |j                  «       r| jS                  |+«       |
s|&s:tq        t#        |+jT                  |+jv                  «      |+jd                  «      |+_*        n¡|t$         kD  r—|+jx                  s‹| jz                  |z
  |+j                  z
  |+j}                  «       |+jT                  z
  z
  }.|.|+jT                  kD  rB|.|+_*        |r9|+xjT                  |j                  |j                  z   |j                  z   z  c_*        |d   €|+jM                  «       d   |d<   |+||||(|fS c c}w c c}w )zSet the ``box`` height.NF)ÚstartÚendÚcontinuer   Úbox_decoration_breakÚclonerm   rn   rË   rÀ   r3   Únoner   )rá   r   r[   Trž   r�   r   Úbreak_inside)r   r   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­w©r   N© )r¤   Úvalues     r7   r¦   z)block_container_layout.<locals>.<genexpr>O  s   è ø€ ò >˜u�˜•
ñ >ùs   ‚r¸   Úvisiblec              3   óV   K  — | ]!  }|j                   |j                  «       z   –— Œ# y ­wr¡   )r&   Úmargin_height)r¤   Ú	float_boxs     r7   r¦   z)block_container_layout.<locals>.<genexpr>q  s,   è ø€ ò ':àð ×$Ñ$ y×'>Ñ'>Ó'@Õ@ñ':ùs   ‚')r|   r“   r   )?r   r   ÚBlockContainerBoxrR   Úcreate_block_formatting_contextÚremove_decorationr"   rH   rI   r   r   r   rÉ   r&   r$   rÊ   Úcontent_box_xre   r   r2   Úcascadedr1   Úitemsr©   ru   rT   Úis_in_normal_flowr”   Úadd_broken_out_of_flowÚis_outside_markerÚborder_box_xrL   r^   rt   r¾   rß   r�   Ú	ParentBoxrÈ   rJ   Úunlayout_footnoteÚfinish_block_formatting_contextrM   rÎ   Ú	overflowsÚforce_fragmentationr…   rƒ   r   rÏ   Ú
min_heightÚborder_top_widthÚpadding_toprÌ   Úcopy_with_childrenÚexcluded_shapesrc   r	   rv   Ú
max_heightrP   Úpage_bottomrî   )/r(   r)   r*   r+   r-   r.   r/   r0   r1   r2   r   r3   Úis_startr°   Úthis_box_adjoining_marginsr&   rT   r‰   rÐ   ÚkeyÚbox_first_line_styleÚbox_first_letter_styleÚskipr~   ry   r²   r±   rŠ   rU   r‹   rŒ   Únew_max_linesÚ
last_childru   r“   r¢   Ú
box_bottomÚbottom_marginÚbox_is_fragmentedr�   rÚ   r5   r   rV   Úmax_float_position_yÚabsolute_boxÚnew_box_heights/                                                  r7   rO   rO   ™  s£	  € ô �cœ5×2Ñ2Ô3Ð3Ð3à
×)Ñ)Ô+Ø×/Ñ/°Ô4ð ˜TÐ!€HØ×Ñ H °%ÐÔ8àˆs�y‰y˜Ñ$¨	Ñ1Ñ1€GØ$ÒT¨¯	©	Ð2HÑ(IÈWÑ(TÐàÐ ØÐáØ˜×*Ñ*¨S×-DÑ-DÑDÀs×GXÑGXÑXÑXˆà×Ñ˜SŸ^™^Ô,Ø!2Ðà
×ÑÔ!ð —^‘^‰
à�Šœ/Ð*;Ó<¸s¿~¹~ÑMÑM�ØÐØ×&Ñ&Ó(ˆ
à×"Ñ"Ó$€Jà
‡y�y�Ñ 
Ò*àˆà€LØ¨Ñ.€Ià
‡y�y�Ñ Ò'Ü˜Ÿ	™	 +Ñ.°	Ò0@¼SÓAˆ	à
×ÑÐ'à69×6JÑ6J×6SÑ6Sö UØ/2ˆC�×%Ñ% cÑ*Ñ*ð UÐð  UàÐ#Ø3ÑàÐ 4Ñ4Ðà
×ÑÐ)à8;×8NÑ8N×8WÑ8Wö"YØ14ˆC�×'Ñ'¨Ñ,Ñ,ð"YÐð "YàÐ%Ø!7ÑàÐ"8Ñ8Ðñ Ø‰à(×.Ñ.Ó0ÑÑˆˆzÜ! #§,¡,¨t¨uÐ"5¸dºiÀaÔIó X‰ˆˆuØ%ˆÔØ%ˆÔØˆà×&Ñ&Ô(àˆEä#Ø˜S %¨°¸mØ" KÐ1BÀLóRñ >ˆD�)˜YÐ(=ñ %Ø×.Ñ.Ø˜u cÐ+@ôBà×&Ó&Ø'*×'7Ñ'7Ó'9�	Ô$Ø—;‘;˜{Ñ+¨uÓ4Ø×(Ò(¨C¯I©I¸×8IÑ8IÑ,IÑIÖ(ä˜œuŸ}™}Ô-ô *9Ø˜˜e U¨L¸-Ø Ð->ÀØ˜JÐ(:Ð<LØ&¨	ó	*3ñ'ˆU�D˜) ZØ˜Ið
 # i°4Ð&7Ñ7Ð"Ø "ÐØ48Ð8ÐÑ!1ô
 8GØ˜#˜u e¨\¸=Ø Ð.?ÀØ˜ZÐ);Ð=MØ˜) Yó	80ñ5ˆU�D˜) ZÐ1BØ˜ mð
 ˆJØ48Ð8ÐÐ!1ð ˜M¨9Ð5Ñ5Ø)�	Ø ’>à�DØ"'¨3¯<©<¸Ñ+;Ñ";�JÙ%ð $0˜Ù&Ø)1°"©˜JÜ)¨*´e·m±mÔDØ<?¿I¹IÐFVÑ<W 
Õ 9Ü!+¨J¼¿¹Ô!HØ+5×+>Ñ+> Ø (Ø!áà×$Ñ$Ó& qÑ)ˆDÜØ˜Ÿ™ d eÐ,¨n¸kôKà)ò 4�Ø×)Ñ)¨(Õ3ð4à×1Ñ1Ô3Ø×7Ñ7Ô9à�d e°TÑ:¸BÀØðò ó à�z‰z˜VÒ#Ø Ÿ^™^¨c×.?Ñ.?Ó.AÑA�
Ü /Ð0AÓ B�Ø×$Ñ$ Z°¸mÑ1KÔLð !%�IØ "ÐÙðkXðp ˆ	à!¨Ð-ÒH°×1HÑ1HÐØ
‡y�y�Ñ 	Ò)Øˆ	áÜ˜SŸY™Y ~Ñ6¸Ô@ÙÜØÐ:�|Ð: c§l¡l°4°5Ð&9Ð:¸NÈKô	Yà×-Ñ-Ô/Ø×3Ñ3Ô5Ø�T U°DÑ9¸2¸uÀiÐOÐOà
×ÑÔ!Ø�Šœ/Ð*DÓEÈÏÉÑVÑV�ô 1°Ó>ÐØÐØÐ!ä*Ð+<Ó=ÐØ—I‘I˜kÑ*ˆ	Ø�J‰J˜+Ñ%Ü˜' 3¨	Ð3CÓDÐLÜñ >Ø—‘ × 4Ñ 4°c·o±oØ×'Ñ'¨×);Ñ);ð)=ô >ô >ð "&Ñð Ð*Ñ*ˆJØ "Ñð �:‰:˜Òà "Ðà×&Ñ&Ô(Ø”oÐ&7Ó8Ñ8ˆ
ØÐñ ™\Ø! "Ñ%ˆ
Ü�j¤%§-¡-Ô0Ø(+¯	©	Ð2BÑ(CˆJÔ%à×$Ñ$ \Ó2€GØ×ÑØˆlÐ 1Ò A¸'°kð ô Cð ‡~�~˜ÒØ×"Ò" w§}¡}°ZÑ'@ÀIÒ'MÜ#&ñ ':à!(×!8Ñ!8ô':ó $:Ð ô Ð1°:Ó>ˆJØ˜×.Ñ.Ó0Ô7´CÕ7ØˆG�Nà'¨'×*?Ñ*?Ó*AÑAˆGŒNà‡}�}�ZÑ  JÒ.à*ò 	!ˆLÜØ˜ w°¸\Øö!ð	!ð
 ×!Ñ!ò EˆÜ˜U W§]¡]°G·N±NÐ$CÕDðEð ×)Ñ)Ô+Ø×/Ñ/°Ô8áÑ'ô Ü�—‘ × 2Ñ 2Ó3°W×5GÑ5GóIˆ�à	œ˜Ò	 W×%6Ò%6ð ×Ñ ,Ñ.°×1CÑ1CÑCØ×"Ñ"Ó$ w§~¡~Ñ5ñ7ð 	ð ˜GŸN™NÒ*Ø+ˆGŒNÙ%Ø—’Ø×&Ñ&¨×)@Ñ)@Ñ@Ø×%Ñ%ñ&ñ'•ð �ÑÐ Ø#×/Ñ/Ó1°!Ñ4ˆ	�&Ñð 	�˜IÐ'8Ð:LØðð ùòi Uùò"Ys   Æ)cÇ0cc                 ó|   — dg}|j                  | «       d„ |D «       }d„ |D «       }t        |«      t        |«      z   S )zCGet the amount of collapsed margin for a list of adjoining margins.r   c              3   ó,   K  — | ]  }|d k\  sŒ	|–— Œ y­wré   rê   ©r¤   Úms     r7   r¦   z"collapse_margin.<locals>.<genexpr>¥  ó   è ø€ Ò.�q q¨A£v”Ñ.ùó   ‚
�c              3   ó,   K  — | ]  }|d k  sŒ	|–— Œ y­wré   rê   r  s     r7   r¦   z"collapse_margin.<locals>.<genexpr>¦  r  r  )Úextendrc   re   )r0   ÚmarginsÚ	positivesÚ	negativess       r7   r$   r$   ¡  s=   € àˆc€GØ‡N�NÐ$Ô%Ù.˜GÔ.€IÙ.˜GÔ.€IÜˆy‹>œC 	›NÑ*Ð*r9   c                 ó  — g }t         j                  t         j                  t         j                  f}| }t	        ||«      rG|j                  |j                  d   «       |j                  sn|j                  d   }t	        ||«      rŒG|j                  «        |}t	        ||«      rG|j                  |j                  d   «       |j                  sn|j                  d   }t	        ||«      rŒGd}|D ]  }|dv s||fdv sŒ|}Œ |S )a�  Get the correct page break value between siblings.

    Return the value of ``page-break-before`` or ``page-break-after`` that
    "wins" for boxes that meet at the margin between two sibling boxes.

    For boxes before the margin, the 'page-break-after' value is considered;
    for boxes after the margin the 'page-break-before' value is considered.

    * 'avoid' takes priority over 'auto'
    * 'page' takes priority over 'avoid' or 'auto'
    * 'left' or 'right' take priority over 'always', 'avoid' or 'auto'
    * Among 'left' and 'right', later values in the tree take priority.

    See https://drafts.csswg.org/css-page-3/#allowed-pg-brk

    Úbreak_afterrž   Úbreak_beforer   r   )ro   rp   ÚrectoÚverso))r“   r   )r“   Úavoid)r“   ú
avoid-page)r“   úavoid-column)Úcolumnr   )r'  r$  )r'  r%  )r'  r&  )r$  r   )r%  r   )r&  r   )	r   ÚBlockLevelBoxÚTableRowGroupBoxÚTableRowBoxr   r   r"   ru   Úreverse)Úsibling_beforeÚsibling_afterÚvaluesÚblock_parallel_box_typesr)   rC   rë   s          r7   r„   r„   ª  s  € ð" €Fô 	×ÑœU×3Ñ3´U×5FÑ5Fð HÐð €CÜ
�SÐ2Ô
3Ø�‰�c—i‘i Ñ.Ô/Ø�|Š|ØØ�l‰l˜2Ñˆô	 �SÐ2Õ
3ð
 ‡N�NÔà
€CÜ
�SÐ2Ô
3Ø�‰�c—i‘i Ñ/Ô0Ø�|Š|ØØ�l‰l˜1‰oˆô	 �SÐ2Õ
3ð €FØò ˆØÐ7Ñ7¸EÀ6¸?ð O*ò <*ð ‰Fðð €Mr9   c                 ó^   — | j                  «       d   }|j                  «       d   }||k7  r|S y)zBReturn the next page name when siblings don't have the same names.r   r   N)rÈ   )r,  r-  Úbefore_pageÚ
after_pages       r7   rÆ   rÆ   â  s;   € à ×,Ñ,Ó.¨qÑ1€KØ×*Ñ*Ó,¨QÑ/€JØ�jÒ ØÐð !r9   c                 ó`  — |r€t        |d   t        j                  «      rc|d   j                  d   }|d   j                  d   }t	        |«      |z
  }||k  ry|d| }d|d   j
                  i}t        | ||d ||«       ||fS d}	t        |«      D �]†  \  }}
t        |
t        j                  «      r|
j                  s|
j                  rŒ:|
j                  rŒG|
j                  «       r9t        |
|	«      }|	�)t        || «      s|dz  }|d| }||   j                  di} ný|
}	|
j                  «       sŒ¡t        |
j                  d   | «      rŒ»t        j                   t        j"                  t        j                  f}t        |
|«      sŒ÷t%        | |
j&                  ||«      }|s�Œ|\  }}|
j)                  |«      }g |d| ¢|‘}t        |
t        j                  «      r(||d D ]   }|j                  sŒ|j+                  |«       Œ" |j                  |i}|dz  } n yt        | ||d ||«       ||fS )aq  Find the last possible page break in ``children``.

    Because of a `page-break-before: avoid` or a `page-break-after: avoid` we
    need to find an earlier page break opportunity inside `children`.

    Absolute or fixed placeholders removed from children should also be
    removed from `absolute_boxes` or `fixed_boxes`.

    Return (new_children, resume_at).

    r   r–   rŸ   Nrž   r   rç   )r   r   rt   r"   r—   rU   rJ   Úreversed_enumerater)  Ú	is_headerÚ	is_footerrP   rö   r„   r…   r~   r;   r   r†   ru   r  r   )r(   ru   r.   r/   r–   rŸ   r~   r‰   rU   Úprevious_in_flowry   r‘   Úbreakable_box_typesrC   Únew_grand_childrenr‹   Ú
next_childs                    r7   r†   r†   ê  s]  € ñ ”J˜x¨™{¬E¯M©MÔ:ð ˜1‘+×#Ñ# IÑ.ˆØ˜!‘×"Ñ" 8Ñ,ˆÜ�H“ Ñ&ˆØ�7Š?ØØ  Ð'ˆØ˜ RÑ(×2Ñ2Ð3ˆ	ÜØ�X˜e˜fÐ% ~°{ô	Dà˜YÐ&Ð&àÐÜ*¨8Ó4ó ,‰ˆˆuÜ�eœU×3Ñ3Ô4Ø—’ 5§?¢?àØ�_Š_àà×"Ñ"Ô$Ü/°Ð7GÓHˆJØÐ+Ü(¨°WÔ=Ø˜‘
�Ø'¨¨Ð/�à% e™_×2Ñ2°DÐ9�	ÙØ$Ðà×"Ñ"Õ$Ü$ U§[¡[°Ñ%@À'ÕJä—‘¤§¡´×0FÑ0Fð#HÐä˜%Ð!4Õ5Ü0Ø˜UŸ^™^¨^¸[óJ�ãØ4:Ñ1Ð&¨	Ø %× 8Ñ 8Ð9KÓ L�IØ#A X¨f¨uÐ%5Ð#A°yÐ#A�Lô " %¬×)?Ñ)?Ô@Ø*2°5°6Ð*:ò @˜JØ)×3Ó3Ø ,× 3Ñ 3°JÕ ?ð@ð
 "+§¡°)Ð <�IØ˜Q‘J�EÙðU,ðX ô ˜ ¨%¨&Ð!1°>À;ÔOØ˜Ð"Ð"r9   c                 óL   — t        | «      D ]  }|j                  «       sŒ|c S  y)z=Find and return the last in-flow child of given ``children``.N)Úreversedrö   )ru   ry   s     r7   rƒ   rƒ   8  s'   € ä˜(Ó#ò ˆØ×"Ñ"Õ$ØŠLñr9   c           	      ób   — t        t        t        t        | «      «      «      t        | «      «      S )zBLike reversed(list(enumerate(seq))) without copying the whole seq.)Úzipr<  Úranger—   )Úseqs    r7   r4  r4  ?  s    € äŒxœœc #›h›Ó(¬(°3«-Ó8Ð8r9   c                 ó¶  — |D ]Ô  }t        |t        j                  «      rt        | |j                  ||«       |j
                  d   dk(  r||v r|j                  |«       n'|j
                  d   dk(  r||v r|j                  |«       |j                  r| j                  |j                  «       || j                  v sŒº| j                  j                  |«       ŒÖ y)zúRemove placeholders from absolute and fixed lists.

    For boxes that have been removed in find_earlier_page_break(), remove the
    matching placeholders in absolute_boxes and fixed_boxes.

    Also takes care of removed footnotes and floats.

    rm   r{   ÚfixedN)r   r   rú   rJ   ru   r"   Úremover¢   rû   Úbroken_out_of_flowÚpop)r(   Úbox_listr.   r/   r)   s        r7   rJ   rJ   D  s¾   € ð ò 0ˆÜ�cœ5Ÿ?™?Ô+ÜØ˜Ÿ™ ~°{ôDà�9‰9�ZÑ  JÒ.°3¸.Ñ3HØ×!Ñ! #Õ&Ø�Y‰Y�zÑ" gÒ-°#¸Ñ2DØ×Ñ˜sÔ#Ø�<Š<Ø×%Ñ% c§l¡lÔ3Ø�'×,Ñ,Ò,Ø×&Ñ&×*Ñ*¨3Õ/ñ0r9   c                 ó*   — |j                   r| dv S | dv S )z$Test whether we should avoid breaks.)r$  r%  r&  )r$  r%  ©rª   ©r‘   r(   s     r7   r…   r…   [  s#   € à×ÒØÐDÐDÐDØÐ0Ð0Ð0r9   c                 ó*   — |j                   r| dv S | dv S )z$Test whether we should force breaks.)r“   ro   rp   r"  r#  r'  )r“   ro   rp   r"  r#  rH  rI  s     r7   rÇ   rÇ   b  s,   € à×ÒØð Að Að 	AàÐDÐDÐDr9   )TNNNNNFN)T)3Ú__doc__Ú	functoolsr   Úmathr   Úformatting_structurer   r{   r   r	   r'  r
   Úflexr   Úfloatr   r   r   Úgridr   Úinliner   Úpercentr   r   r   Úreplacedr   Útabler   r   r8   r'   r<   rN   Úwithout_min_maxrv   r”   r›   r¾   rß   rO   r$   r„   rÆ   r†   rƒ   r4  rJ   r…   rÇ   rê   r9   r7   ú<module>rW     sÀ   ðÙ Iå Ý å (ß :Ý "Ý ß @Ñ @Ý Ý #ß RÑ RÝ /ß 4ð MQØBFØGKó,.ò^ò:/ód98ñx %,Ð,=ÈEÔ$RÐ Ô !ò:ò>?=òD,ò<KHò\z!òzEòP+ò5òpòK#ò\ò9ò
0ò.1óEr9   