§
    ¥”jÅ  ã                   óž  — d Z ddl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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 ddlmZmZ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l&m'Z'm(Z(m)Z)m*Z*m+Z+ d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3ed„ ¦   «         Z4d„ Z5d„ Z6d„ Z7d „ Z8d!„ Z9d.d#„Z:d$„ Z;d%„ Z<d&„ Z=d'„ Z>d(„ Z?d)„ Z@d*„ ZAd+„ ZBd,„ ZCd-„ ZDdS )/zLayout for inline-level boxes.é    N)Úinfé   )ÚPending)Ú	INHERITED)ÚboxesÚbuildé   )ÚAbsolutePlaceholderÚabsolute_layout)Úflex_layout)Úavoid_collisionsÚfloat_layout)Úgrid_layout)Úhandle_leader)Úhandle_min_max_width)Ú
percentageÚresolve_one_percentageÚresolve_percentages)Úinline_min_content_widthÚshrink_to_fitÚtrailing_whitespace_size)Úinline_replaced_box_layout)Úfind_in_flow_baselineÚtable_wrapper_width)Úcan_break_textÚcharacter_ratioÚcreate_layoutÚsplit_first_lineÚstrutc
              #   ó  K  — t          ||¦  «         |€t          |d|j        ¦  «         nd|_        	 t	          | |||||||||	¦
  «
        \  }
}d}	|
r t          | |
|¦  «         |
j        |
j        z   }|
€dS |
|fV — |€dS |}d|_        d}ŒY)z�Return an iterator of ``(line, resume_at)``.

    ``line`` is a laid-out LineBox with as much content as possible that
    fits in the available width.

    NÚtext_indentr   )r   r   Úwidthr!   Úget_next_lineboxr   Ú
position_yÚheight)ÚcontextÚboxr$   Úbottom_spaceÚ
skip_stackÚcontaining_blockÚabsolute_boxesÚfixed_boxesÚfirst_letter_styleÚfirst_line_styleÚlineÚ	resume_ats               úg/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/weasyprint/layout/inline.pyÚiter_line_boxesr2      sß   è è € õ ˜Ð-Ñ.Ô.Ð.ØÐå˜s MÐ3CÔ3IÑJÔJÐJÐJàˆŒð"Ý*Ø�S˜* l°JÐ@PØ˜KÐ);Ð=MñOô O‰ˆˆið  ÐØð 	7Ý˜' 4Ð)9Ñ:Ô:Ð:Øœ¨4¬;Ñ6ˆJØˆ<ØˆFØ�IˆoÐÐÐØÐØˆFØˆ
ØˆŒØ!Ðð"ó    c
                 ó&  — t          ||¦  «        }|dk    rdS t          |||¦  «        }||_        | j        r5t	          | ||d¬¦  «        |_        t          |j        ¦  «        \  |_        }
ndx|_        |_        t          | ||d¬¦  «        \  }}}|j        }| j         
                    ¦   «         }	 |x}|_        |x}|_        |j        }||z   }||j        z  }g }g }g }g }g }t          | |||||||||||||	¦  «        \  }}}}}}|j        |j        c|_        |_        t          |¦  «        r|s	d|_        �n»t          | |¦  «         t          | ||d¬¦  «        \  }}
}t!          | |||du p|¬	¦  «        } |j        d
         dk    r| dz  } | |j        z  } t#          |¦  «        \  }!}"|"€J ‚|!€J ‚|" |_        |"|_        |!|"z
  |_        ||"z
  }#d|_        d|_        |                     | |#¦  «         ||_        |j        |k    rnî|j        }| j        }$|| _        t          | ||d¬¦  «        \  }}}|	rƒ|                     |j        ¦  «        }%|%xj        dz  c_        |%j         
                    ¦   «         |%_        |	                     ¦   «         D ]\  }&}'|'|%j        |&<   Œ|%g|_        t5          |%¦  «         |j        d
         dk    r||f||fk    }(n||j        z   |f||z   |fk    }(|(r|$| _        n�ŒC|                     |¦  «         |                     |¦  «         |D ]h})d|)j        j        d         v r|)                     d||)j        z
  ¦  «         Œ5|)                     |j        |)j        z
  ||j        z   |)j        z
  ¦  «         Œig }*|j        |j        z   }+|D ]Q},|+|,_        t;          | |,||||d¬¦  «        \  }-}.|*                     |-¦  «         |.r|                      |-|,||.¦  «         ŒR|*r|xj        tA          |*¦  «        z  c_        ||fS )zöReturn next line from given linebox.

    Return ``(line, resume_at)``, where ``line`` is a new linebox copied from the
    original one, with replaced children.

    This function takes care of excluded floating shapes to avoid collisions.

    Úcontinue©NNT)r)   Ú
first_liner   F)ÚouterN©ÚlastÚ	directionÚrtléÿÿÿÿz::first-lineÚltrÚinlineÚdisplay©r)   )!Úskip_first_whitespaceÚfirst_letter_to_boxr$   Úexcluded_shapesr   r"   r   Ústyler%   r   ÚcopyÚ
position_xr!   Úsplit_inline_boxÚis_phantom_lineboxÚremove_last_whitespaceÚ
text_alignÚline_box_verticalityÚbaselineÚ
margin_topÚmargin_bottomÚ	translateÚcopy_with_childrenÚchildrenÚelement_tagÚitemsÚ_adjust_line_heightÚextendÚ	specifiedr   ÚappendÚadd_broken_out_of_flowÚtuple)/r&   Úlineboxr$   r(   r)   r*   r+   r,   r-   r.   Ú_rG   Úavailable_widthÚcandidate_heightrD   Úoriginal_position_xÚoriginal_position_yÚoriginal_widthÚmax_xÚline_placeholdersÚline_absolutesÚ
line_fixedÚwaiting_floatsÚline_childrenr/   r0   Úpreserved_line_breakÚfirst_letterÚlast_letterÚfloat_widthÚnew_position_xÚnew_available_widthÚoffset_xÚbottomÚtopÚoffset_yÚnew_excluded_shapesÚfirst_line_boxÚkeyÚvalueÚ	conditionÚplaceholderÚfloat_childrenÚwaiting_floats_yÚwaiting_floatÚnew_waiting_floatÚwaiting_float_resume_ats/                                                  r1   r#   r#   9   s  € õ ' w°
Ñ;Ô;€JØ�ZÒÐØˆzå$ W¨jÐ:LÑMÔM€Jà#€GÔàÔð +å0Ø�W¨ÀðFñ Fô FˆŒå! '¤-Ñ0Ô0ÑˆŒ˜˜ð *+Ð*ˆŒ˜œÝ.>Ø�Ð*°%ð/9ñ /9ô /9Ñ+€J�
˜Oð ”~ÐàÔ-×2Ò2Ñ4Ô4€OðMØ3=Ð=Ð˜gÔ0Ø3=Ð=Ð˜gÔ0Ø œˆØ˜_Ñ,ˆØ�gÔ)Ñ)ˆ
àÐØˆØˆ
ØˆØˆõ &6Ø�g˜z¨5°,À
Ø˜~¨zÐ;LØ˜]Ð,>Ð@Pñ&Rô &Rñ	#ˆˆyÐ.°Ø	�kð )-¬
°D´KÐ%ˆŒ�w”~å˜dÑ#Ô#ð 	Ð,@ð 	ØˆDŒKÙå˜w¨Ñ-Ô-Ð-å1AØ�WÐ.°eð2=ñ 2=ô 2=Ñ.ˆ˜Ð.åØ�TÐ.Ø˜tÐ#Ð;Ð';ð>ñ >ô >ˆð Ô! +Ô.°%Ò7Ð7Ø˜‰NˆHØ˜œ
Ñ"ˆHå*¨4Ñ0Ô0‰ˆ�ØˆˆˆØÐ!Ð!Ð!Ø˜ˆŒØˆŒØ˜s‘lˆŒØ Ñ#ˆØˆŒØˆÔà�Š�x Ñ*Ô*Ð*ð %ˆŒàŒ;Ð*Ò*Ð*ØØœ;Ðà%Ô5ÐØ"1ˆÔÝ2BØ�TÐ+°5ð3:ñ 3:ô 3:Ñ/ˆ
�J ð ð 	0Ø!×4Ò4°T´]ÑCÔCˆNØÐ&Ô&¨.Ñ8Ð&Ô&Ø#1Ô#7×#<Ò#<Ñ#>Ô#>ˆNÔ Ø.×4Ò4Ñ6Ô6ð 2ð 2‘
��UØ,1�Ô$ SÑ)Ð)Ø+Ð,ˆDŒMÝ Ñ/Ô/Ð/àÔ! +Ô.°%Ò7Ð7Ø# ZÐ0Ø#Ð%8ð5:ò :ˆIˆIð $ d¤jÑ0°*Ð=Ø# nÑ4Ð6IðBKò KˆIàð 	Ø&9ˆGÔ#Øñ[Mð^ ×Ò˜.Ñ)Ô)Ð)Ø×Ò�zÑ"Ô"Ð"à(ð Cð CˆØ�{Ô(Ô2°9Ô=Ð=Ð=à×!Ò! ! Z°+Ô2HÑ%HÑIÔIÐIÐIð ×!Ò!Ø” +Ô"8Ñ8Ø˜Tœ[Ñ(¨;Ô+AÑAñCô Cð Cð Cð €NØ”¨¬Ñ4ÐØ'ð 	)ð 	)ˆØ#3ˆÔ Ý5AØ�]Ð$4°nØ˜°$ð68ñ 68ô 68Ñ2ÐÐ2ð 	×ÒÐ/Ñ0Ô0Ð0Ø"ð 	)Ø×*Ò*Ø! =Ð2BØ'ñ)ô )ð )øð ð /ØˆŒ�˜~Ñ.Ô.Ñ.ˆŒà�ˆ?Ðr3   c                 óð  — |€d}d}n|                      ¦   «         \  \  }}t          | t          j        ¦  «        r’|�J ‚| j        d         }| j                             ¦   «         }|t          |¦  «        k    rdS |dv rG||d…         }|r;|                     d¦  «        r&|dz  }|dd…         }|r|                     d¦  «        °&|r|dindS t          | t          j	        t          j
        f¦  «        rt|dk    r	| j        sdS t          | j        |         |¦  «        }|dk    r:|dz  }|t          | j        ¦  «        k    rdS t          | j        |         d¦  «        }|s|r||indS |�J d| › �¦   «         ‚dS )	zŠReturn ``skip_stack`` to start just after removable leading spaces.

    See https://www.w3.org/TR/CSS21/text.html#white-space-model

    Nr   Úwhite_spacer5   ©ÚnormalÚnowrapúpre-lineó    r	   zunexpected skip inside )rT   Ú
isinstancer   ÚTextBoxrE   ÚtextÚencodeÚlenÚ
startswithÚLineBoxÚ	InlineBoxrR   rB   )r'   r)   ÚindexÚnext_skip_stackr~   r†   Úresults          r1   rB   rB   Ê   sÁ  € ð ÐØˆØˆˆà$.×$4Ò$4Ñ$6Ô$6Ñ!Ñ ˆ�å�#•u”}Ñ%Ô%ð 0ØÐ&Ð&Ð&Ø”i Ô.ˆØŒx�ŠÑ Ô ˆØ•C˜‘I”IÒÐà�:ØÐ:Ð:Ð:Ø˜˜˜”<ˆDØð  ˜4Ÿ?š?¨4Ñ0Ô0ð  Ø˜‘
�Ø˜A˜B˜B”x�ð ð  ˜4Ÿ?š?¨4Ñ0Ô0ð  ð !&Ð/��tˆ}ˆ}¨4Ð/å�#�œ¥u¤Ð7Ñ8Ô8ð 	>Ø�AŠ:ˆ:˜cœlˆ:Ø�4Ý& s¤|°EÔ':¸OÑLÔLˆØ�ZÒÐØ�Q‰JˆEØ�˜CœLÑ)Ô)Ò)Ð)Ø!�zÝ*¨3¬<¸Ô+>ÀÑEÔEˆFØ#(Ð=¨FÐ=��vˆˆ¸Ð=àÐÐÐ>¸Ð>Ð>ÑÔÐØˆ4r3   c                 ó  — g }|}t          |t          j        t          j        f¦  «        rQ|                     |¦  «         |j        sdS |j        d         }t          |t          j        t          j        f¦  «        °Qt          |t          j        ¦  «        r|j        d         dv sdS |j         	                    d¦  «        }|rht          |¦  «        t          |j        ¦  «        k    rdS ||_        t          | |dd¦  «        \  }}}|€J ‚|�J ‚|j        |j        z
  }|j        |_        n|j        }d|_        d|_        |j        j        dz  r"|j        D ]}	|	                     | d	¬
¦  «         Œ|D ]}
|
xj        |z  c_        ŒdS )zšRemove in place space characters at the end of a line.

    This also reduces the width and position of the inline parents of the
    modified text.

    Nr=   r~   r   ú r   Ú r   T©ÚdxÚignore_floats)r„   r   rŠ   r‹   rX   rR   r…   rE   r†   Úrstriprˆ   Úsplit_text_boxr"   Úpango_layoutÚfirst_line_directionrP   )r&   r/   Ú	ancestorsr'   Únew_textÚnew_boxÚresumer\   Úspace_widthÚchildÚancestors              r1   rJ   rJ   ó   s¯  € ð €IØ
€CÝ
�S�5œ=­%¬/Ð:Ñ
;Ô
;ð Ø×Ò˜ÑÔÐØŒ|ð 	ØˆFØŒl˜2Ôˆõ	 �S�5œ=­%¬/Ð:Ñ
;Ô
;ð õ
 �s�EœMÑ*Ô*ð ØŒI�mÔ$Ð(HÐHÐHØˆØŒx�Š˜sÑ#Ô#€HØð Ýˆx‰=Œ=�C ¤™MœMÒ)Ð)ØˆFØˆŒÝ+¨G°S¸$ÀÑBÔBÑˆ�˜ØÐ"Ð"Ð"Øˆ~ˆ~ˆ~Ø”i '¤-Ñ/ˆØ”MˆŒ	ˆ	à”iˆØˆŒ	ØˆŒð ÔÔ,¨qÑ0ð AØ”]ð 	Að 	AˆEØ�OŠO ˜|¸4ˆOÑ@Ô@Ð@Ð@àð &ð &ˆØˆŒ˜+Ñ%ˆŒˆð&ð &r3   c                 óö  — |�rõ| j         �ríd|d<   d}| j         d         }t          |t          j        ¦  «        �rn| j                             ¦   «         }|                     ¦   «         D ]
\  }}|||<   Œ|j                             d¦  «        r?t          j	        | j        › d�|| j
        |g¦  «        }|g| j         dd…         ¢R | _         �n-|j        �rÔd}	|r2|                     ¦   «         \  }
|
r|
\  }|j        |d…         |_        d}|j        rJ|j        d         }t          j        |¦  «        }|d	vr|	rn"d
}	||z  }|j        dd…         |_        |j        °J|                     d¦  «        �r7|d         dk    rat          j	        | j        › d�|| j
        g ¦  «        }t          j        | j        › d�|| j
        |¦  «        }|f|_         |g| j         ¢R | _         nŒt          j        | j        › d�|| j
        g ¦  «        }t          j        | j        › d�|| j
        g ¦  «        }|f|_         t          j        | j        › d�|| j
        |¦  «        }|f|_         |g| j         ¢R | _         t%          j        |¦  «         |r(|
r&|\  }|
                     ¦   «         \  \  }}||dz   |ii}nPt          |t          j        ¦  «        r6|r|                     ¦   «         \  }
nd}
t+          ||
|¦  «        }
|r|\  }||
i}|S )z-Create a box for the ::first-letter selector.ÚstaticÚpositionr‘   r   z::first-letterr	   NF)ÚPsÚPeÚPiÚPfÚPoTú
ÚfloatÚnone)rR   r„   r   r…   rE   rF   rT   rS   Úendswithr‹   Úelementr†   ÚvaluesÚunicodedataÚcategoryÚlstripÚBlockBoxrŠ   r   Úprocess_text_transformÚ	ParentBoxrC   )r'   r)   r-   ri   rž   Úletter_stylert   ru   Ú
letter_boxÚcharacter_foundÚchild_skip_stackrŒ   Únext_letterr¯   Útext_boxÚline_boxÚchild_indexÚgrandchild_skip_stacks                     r1   rC   rC   &  s¶  € àñ J7˜cœlñ J7ð *2Ð˜:Ñ&àˆØ”˜Q”ˆÝ�e�Uœ]Ñ+Ô+ñ B	7Øœ9Ÿ>š>Ñ+Ô+ˆLØ0×6Ò6Ñ8Ô8ð *ð *‘
��UØ$)�˜SÑ!Ð!ØÔ ×)Ò)Ð*:Ñ;Ô;ð 4WÝ"œ_Ø”Ð6Ð6Ð6¸Ø”K % ñ*ô *�
ð ",Ð ?¨c¬l¸1¸2¸2Ô.>Ð ?Ð ?�”‘Ø”ñ /WØ"'�Øð *Ø(2×(9Ò(9Ñ(;Ô(;Ñ%Ð$Ø'ð *Ø!1™˜Ø%*¤Z°°°Ô%7˜œ
Ø%)˜
Ø”jð 0Ø"'¤*¨Q¤-�KÝ*Ô3°KÑ@Ô@�HØÐ'EÐEÐEØ*ð "Ø!Ø*.˜Ø  KÑ/�LØ!&¤¨A¨B¨B¤�E”Jð ”jð 0ð  ×&Ò& tÑ,Ô,ñ Wð $ GÔ,°Ò6Ð6Ý%*¤_Ø"œÐ>Ð>Ð>Ø(¨#¬+°rñ&;ô &;˜
õ $)¤=Ø"œÐ>Ð>Ð>ÀØœK¨ñ$7ô $7˜ð 08¨k˜
Ô+Ø(2Ð'B°S´\Ð'BÐ'B˜œ˜å%*¤^Ø"œÐ>Ð>Ð>Ø(¨#¬+°rñ&;ô &;˜
õ $)¤=Ø"œÐ>Ð>Ð>ÀØœK¨ñ$-ô $-˜ð 08¨k˜
Ô+Ý#(¤=Ø"œÐ>Ð>Ð>ÀØœK¨ñ$7ô $7˜ð .6¨K˜Ô)Ø(2Ð'B°S´\Ð'BÐ'B˜œÝÔ0°Ñ:Ô:Ð:Ø!ð WÐ&6ð WØ!+™˜Ø@P×@VÒ@VÑ@XÔ@XÑ=Ñ<˜Ð&;Ø&+¨k¸A©oÐ?TÐ-UÐ%V˜
øÝ˜�uœÑ/Ô/ð 		7Øð (Ø$.×$5Ò$5Ñ$7Ô$7Ñ!Ð Ð à#'Ð Ý2ØÐ'Ð);ñ =ô  =Ðàð 7Ø#‘�Ø#Ð%5Ð6�
ØÐr3   c           	      ó  — t          |t          j        ¦  «        r>|                     ¦   «         }t	          ||¦  «         |                     ¦   «         |_        n­t          |t          j        ¦  «        rn|j        r4|j	        |j
        f}t          | ||¦  «         |j	        |j        |j        }
}	}t          | ||||||¦  «        }|j        r||	|
c|_	        |_        |_        n%t          dt!          |¦  «        j        › d�¦  «        ‚|S )z7Compute the width and the height of the atomic ``box``.úLayout for ú not handled yet)r„   r   ÚReplacedBoxrF   r   Úmargin_heightrM   ÚInlineBlockBoxÚis_table_wrapperr"   r%   r   Ú	min_widthÚ	max_widthÚinline_block_box_layoutÚ	TypeErrorÚtypeÚ__name__)r&   r'   rG   r)   r*   r+   r,   Úcontaining_sizer"   rÄ   rÅ   s              r1   Ú
atomic_boxrË   v  s  € õ �#•uÔ(Ñ)Ô)ð LØ�hŠh‰jŒjˆÝ" 3Ð(8Ñ9Ô9Ð9Ø×(Ò(Ñ*Ô*ˆŒˆÝ	�C�Ô-Ñ	.Ô	.ð LØÔð 	RØ/Ô5Ð7GÔ7NÐOˆOÝ ¨¨oÑ>Ô>Ð>Ø*-¬)°S´]ÀCÄM˜i�9ˆEÝ%Ø�S˜* jÐ2BØ˜Kñ)ô )ˆð Ôð 	RØ6;¸YÈ	Ð3ˆCŒI�s”} c¤møåÐJ¥d¨3¡i¤iÔ&8ÐJÐJÐJÑKÔKÐKØ€Jr3   c                 óp  — ddl m} t          ||¦  «         |j        dk    rd|_        |j        dk    rd|_        |j        dk    rd|_        |j        dk    rd|_        t          || |¦  «         ||_        d|_	         || |t           |d||d d d dd ¬¦  «        \  }}}}}}t          |¦  «        |_        |S )Nr	   )Úblock_container_layoutÚautor   TF)
r(   r)   Úpage_is_emptyr+   r,   Úadjoining_marginsr-   r.   ÚdiscardÚ	max_lines)ÚblockrÍ   r   Úmargin_leftÚmargin_rightrN   rO   Úinline_block_widthrG   r$   r   Úinline_block_baselinerM   )	r&   r'   rG   r)   r*   r+   r,   rÍ   r\   s	            r1   rÆ   rÆ   Œ  sø   € à-Ð-Ð-Ð-Ð-Ð-å˜Ð-Ñ.Ô.Ð.ð „˜&Ò Ð ØˆŒØ
Ô˜6Ò!Ð!ØˆÔà
„~˜ÒÐØˆŒØ
Ô˜FÒ"Ð"ØˆÔå�s˜GÐ%5Ñ6Ô6Ð6à€C„NØ€C„NØ/Ð/Ø�¥C 4°JÈdØ%°;ÐRVØ°$ÀÐQUðWñ Wô WÑ€CˆˆAˆq�!�Qõ )¨Ñ-Ô-€C„LØ€Jr3   c                 óR  — | j         r_| j        D ]V}t          |t          j        ¦  «        r:|j        r3|j        d         j        r!|j        d         j        d         }|j        c S ŒWn&| j        d         dk    rt          | d¬¦  «        }|r|S | j        |  	                    ¦   «         z   S )z¼Return the y position of the baseline for an inline block.

    Position is taken from the top of its margin box.

    https://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align

    r   ÚoverflowÚvisibleTr9   )
rÃ   rR   r„   r   ÚTableBoxrM   rE   r   r$   rÁ   )r'   rž   Ú	first_rowrŽ   s       r1   r×   r×   ©  sÄ   € ð Ôð 
à”\ð 	.ð 	.ˆEÝ˜%¥¤Ñ0Ô0ð .Ø”>ð . e¤n°QÔ&7Ô&@ð .Ø %¤¨qÔ 1Ô :¸1Ô =�IØ$Ô-Ð-Ð-Ð-øð		.ð
 
Œ�:Ô	 )Ò	+Ð	+Ý& s°Ð6Ñ6Ô6ˆØð 	ØˆMØŒ>˜C×-Ò-Ñ/Ô/Ñ/Ð/r3   c                 óº   — |j         | j        | j        z   | j        z   | j        z   | j        z   | j        z   z
  }| j         dk    rt          || |¦  «        | _         d S d S )NrÎ   )r"   rÔ   rÕ   Úborder_left_widthÚborder_right_widthÚpadding_leftÚpadding_rightr   )r'   r&   r*   Úavailable_content_widths       r1   rÖ   rÖ   ¿  sx   € à.Ô4ØŒ˜#Ô*Ñ*ØÔñ	Ø #Ô 6ñ	7àÔñ	àÔ,ñ	-ñ.Ðð „y�FÒÐÝ! '¨3Ð0GÑHÔHˆŒ	ˆ	ˆ	ð Ðr3   c                 ó„  — |rs|                      ¦   «         }|j                              ¦   «         |_        |                     ¦   «         D ]\  }}|t          v r
||j        |<   Œt	          j        |¦  «         t          ||¦  «         dddœ}t          |t          j	        ¦  «        rÊ||_
        |€d}n!|                     ¦   «         \  \  }}|pd}|�J ‚t          |¦  «        dk    }t          | |||z
  ||¬¦  «        \  }}}|€d}n|di}|j        rY|j        d         }|€|j        d         }�n|j                             ¦   «         d|…                              ¦   «         d         }�nÑdx}}�nËt          |t          j        ¦  «        rI|j        dk    rd|_        |j        dk    rd|_        t'          | |||||||||	|
|||¦  «        \  }}}}}}�nht          |t          j        ¦  «        r&t+          | ||||||¦  «        }||_
        d}d}d}d}�n(t          |t          j        ¦  «        rh||_
        d|_        d	D ]-}t1          |d
|› �¦  «        dk    rt3          |d
|› �d¦  «         Œ.t5          | |t6           ||d||d¦	  «	        \  }}}}}d}d}d}n¦t          |t          j        ¦  «        rg||_
        d|_        d	D ]-}t1          |d
|› �¦  «        dk    rt3          |d
|› �d¦  «         Œ.t;          | |t6           ||d||¦  «        \  }}}}}d}d}d}n%t=          dt?          |¦  «        j         › d�¦  «        ‚||||||fS )aØ  Fit as much content as possible from an inline-level box in a width.

    Return ``(new_box, resume_at, preserved_line_break, first_letter, last_letter)``.
    ``resume_at`` is ``None`` if all of the content fits. Otherwise it can be passed as
    a ``skip_stack`` parameter to resume where we left off.

    ``new_box`` is non-empty (unless the box is empty) and as big as possible
    while respecting ``max_x``, if possible (may overflow is no split is possible.)

    r   ©ÚleftÚrightN©Úis_line_startr=   rÎ   Fu   âº€©rp   ræ   ro   rå   Úmargin_r¾   r¿   )!rF   rE   rT   r   r   r²   r   r„   r   r…   rG   rˆ   r–   r†   r‡   Údecoder‹   rÔ   rÕ   rH   ÚAtomicInlineLevelBoxrË   ÚInlineFlexBoxr$   ÚgetattrÚsetattrr   r   ÚInlineGridBoxr   rÇ   rÈ   rÉ   )r&   r'   rG   rb   r(   r)   r*   r+   r,   rc   rf   rg   r-   r.   rt   ru   Úfloat_widthsÚskiprè   r›   rh   r0   ri   rj   Úsider\   s                             r1   Úsplit_inline_levelrô   É  s  € ð ð *Ø�hŠh‰jŒjˆØ”I—N’NÑ$Ô$ˆŒ	Ø*×0Ò0Ñ2Ô2ð 	'ð 	'‰JˆC�Ø•iÐÐØ!&�”	˜#‘øÝÔ$ SÑ)Ô)Ð)Ý˜Ð-Ñ.Ô.Ð.Ø¨Ð*Ð*€LÝ�#•u”}Ñ%Ô%ð HLØ#ˆŒØÐØˆDˆDà",×"2Ò"2Ñ"4Ô"4ÑÑˆT�:Ø�9˜1ˆDØÐ%Ð%Ð%å˜MÑ*Ô*¨aÒ/ˆÝ.<Ø�S˜% *Ñ,¨dØ'ð/)ñ /)ô /)Ñ+ˆ�Ð+ð ˆ<ØˆIˆIà˜t˜ˆIØŒ8ð 	.Øœ8 Aœ;ˆLØˆ|Ø!œh rœl�‘à!œhŸošoÑ/Ô/°°°Ô6×=Ò=Ñ?Ô?ÀÔC�‘à)-Ð-ˆL˜;™;Ý	�C�œÑ	)Ô	)ð .LØŒ?˜fÒ$Ð$ØˆCŒOØÔ˜vÒ%Ð%Ø ˆCÔå&6Ø�c˜: u¨l¸JØ˜~¨{Ð<MØ˜]Ð,>Ð@Pñ'Rô 'Rñ	$ˆ�)Ð1°<Ø	�l‘lõ 
�C�Ô3Ñ	4Ô	4ð $LÝØ�S˜* jÐ2BØ˜Kñ)ô )ˆð (ˆÔØˆ	Ø$Ðð  ˆØˆ‰Ý	�C�Ô,Ñ	-Ô	-ð LØ#ˆŒØˆŒØ6ð 	2ð 	2ˆDÝ�sÐ, dÐ,Ð,Ñ-Ô-°Ò7Ð7Ý˜Ð- tÐ-Ð-¨qÑ1Ô1Ð1øÝ&1Ø�S�3˜$ 
Ð,<¸eØ˜K¨ñ'0ô '0Ñ#ˆ�˜A˜q !ð  %ÐØˆØˆˆÝ	�C�Ô,Ñ	-Ô	-ð LØ#ˆŒØˆŒØ6ð 	2ð 	2ˆDÝ�sÐ, dÐ,Ð,Ñ-Ô-°Ò7Ð7Ý˜Ð- tÐ-Ð-¨qÑ1Ô1Ð1øÝ&1Ø�S�3˜$ 
Ð,<¸eØ˜Kñ')ô ')Ñ#ˆ�˜A˜q !ð  %ÐØˆØˆˆåÐJ¥d¨3¡i¤iÔ&8ÐJÐJÐJÑKÔKÐKà�Ð0°,ÀØðð r3   c           	      ón  — |                      ¦   «         r‚||_        t          |¦  «        }|                     |¦  «         |                     |||f¦  «         |j        d         dk    r|	                     |¦  «         d S |
                     |¦  «         d S |                     ¦   «         �r³||_        t          | ||j        ¦  «        }d„ ||z   D ¦   «         }|r|t          | |d         ¦  «        z  }|||z
  k    s|r|                     |¦  «         d S t          | |||	|
|d ¬¦  «        \  }}|r|  
                    ||||¦  «         |                     |||f¦  «         |}t          |                     ¦   «         d¦  «        }||j        d         xx         |z  cc<   |j        d         dk    r t          |t          j        ¦  «        r||z  }n|j        d         d	k    r||z  }|D ]t\  }}|                     ¦   «         sŒ|j        d         dk    r|j        d
         dk    s"|j        d         d	k    r'|j        d
         dk    r|                     |¬¦  «         Œud S |                     ¦   «         rB|j        d         d         }| j        }| j        |         |                              |¦  «         d S d S )Nr¢   Úabsolutec                 óB   — g | ]\  }}}|                      ¦   «         °|‘ŒS © ©Ú
is_floated)Ú.0r\   Úchild_s      r1   ú
<listcomp>z'_out_of_flow_layout.<locals>.<listcomp>C  s@   € ð !(ð !(ð !(Ù#�q˜& !Ø×$Ò$Ñ&Ô&ð!(Øð!(ð !(ð !(r3   r=   rA   r   r©   rå   ræ   r;   r>   r<   ©r“   r	   )Úis_absolutely_positionedrG   r
   rX   rE   rú   r   r"   r   r   rY   ÚmaxÚmargin_widthr„   r   rŠ   Úis_in_normal_flowrP   Ú
is_runningÚcurrent_pageÚrunning_elements)r&   r'   r*   rŒ   rž   rR   rg   Úwaiting_childrenrf   r+   r,   rc   rñ   rb   rG   r(   rw   rk   Únon_floating_childrenÚ	new_childÚfloat_resume_atr“   r\   Ú	old_childÚrunning_nameÚpages                             r1   Ú_out_of_flow_layoutr  .  sX  € ð
 ×%Ò%Ñ'Ô'ð ?CØ%ˆÔÝ)¨%Ñ0Ô0ˆØ× Ò  Ñ-Ô-Ð-Ø×Ò ¨°UÐ ;Ñ<Ô<Ð<ØŒ;�zÔ" jÒ0Ð0Ø×!Ò! +Ñ.Ô.Ð.Ð.Ð.à×Ò˜{Ñ+Ô+Ð+Ð+Ð+à	×	Ò	Ñ	Ô	ñ 5CØ%ˆÔÝ# G¨UÐ4DÔ4JÑKÔKˆð!(ð !(Ø(0Ð3CÑ(Cð!(ñ !(ô !(Ðð !ð 	4ØÕ3ØÐ.¨rÔ2ñ4ô 4ñ 4ˆKð ˜ Ñ+Ò+Ð+¨~Ð+ð ×!Ò! %Ñ(Ô(Ð(Ð(Ð(å)5Ø˜Ð 0°.À+Ø¨ð*/ñ */ô */Ñ&ˆI�ð ð EØ×.Ò.Ø˜5Ð"2°OñEô Eð Eà×#Ò# U¨I°uÐ$=Ñ>Ô>Ð>ØˆEõ �U×'Ò'Ñ)Ô)¨1Ñ-Ô-ˆBØ˜œ WÔ-Ð.Ð.Ô.°"Ñ4Ð.Ð.Ñ.ØŒ{˜7Ô# vÒ-Ð-Ý˜c¥5¤=Ñ1Ô1ð %ð  "Ñ$�JøØ”˜WÔ%¨Ò0Ð0à˜‘�Ø -ð /ð /‘��9Ø ×2Ò2Ñ4Ô4ð ØØ”[ Ô)¨VÒ3Ð3Øœ	 +Ô.°%Ò7Ð7Ø”[ Ô)¨WÒ4Ð4Øœ	 +Ô.°%Ò7Ð7Ø×'Ò'¨2Ð'Ñ.Ô.Ð.øð/ð /ð 
×	Ò	Ñ	Ô	ð CØ”{ :Ô.¨qÔ1ˆØÔ#ˆØÔ  Ô.¨tÔ4×;Ò;¸EÑBÔBÐBÐBÐBðCð Cr3   c                 ój  — |�r|                      ¦   «         }|�r|                     ¦   «         \  }}}|                     ¦   «         rt          |¦  «        sŒ?|r||v r	||         }nd }|j        |                     ¦   «         z   dz
  }||j        k    r;t          | ||j        |||||||||	||¦  «        \  }}}}}}|rn|dz  }||j        k    °;Œ¶|
                     |¦  «         |€t          |t          j
        ¦  «        sJ ‚n|
                     |||f¦  «         ||iS |
r|
d         d         dz   d iS d S )Nr	   r=   r   )rF   Úpopr  Úcan_break_insiderG   r  rô   rV   r„   r   r…   rX   )r&   r'   rb   r(   Úinitial_skip_stackr+   r,   rc   rf   rg   rR   r  r-   r.   Úwaiting_children_copyr»   rž   Úoriginal_childr·   r  Úchild_resume_atr\   s                         r1   Ú_break_waiting_childrenr  u  s°  € ð ñ (2ð !1× 5Ò 5Ñ 7Ô 7ÐØ#ñ #	2Ø1F×1JÒ1JÑ1LÔ1LÑ.ˆK˜ Ø×*Ò*Ñ,Ô,ð Õ4DÀUÑ4KÔ4Kð Øà!ð ( kÐ5GÐ&GÐ&GØ#5°kÔ#BÐ Ð à#'Ð ð Ô$ u×'9Ò'9Ñ';Ô';Ñ;¸aÑ?ˆEØ˜%Ô*Ò*Ð*Ý9KØ˜^¨UÔ-=¸uØ Ð"2°C¸ØÐ!2°NØ!Ð#5Ð7Gñ	:Iô :IÑ6�	˜?¨A¨q°!°Qð
 #ð ØØ˜‘
�ð ˜%Ô*Ò*Ð*ð à�OŠOÐ1Ñ2Ô2Ð2ØÐ å! %­¬Ñ7Ô7Ð7Ð7Ð7Ð7à—’ ¨i¸Ð ?Ñ@Ô@Ð@à Ð1Ð1àð +ð ˜”˜Q” !Ñ# TÐ*Ð*ð+ð +r3   c                 óØ   — t          | j        ¦  «        \  }| _        | j        d         | _        || j        z
  dz  }|| j        z
  | j        z
  | _        || j        z
  | j        z
  | _	        dS )z“Set margins to the half leading to respect line height.

    Also compensate for borders and padding, we want margin_height() == line_height.

    Ú	font_sizer   N)
r   rE   rM   r%   Úborder_top_widthÚpadding_toprN   Úborder_bottom_widthÚpadding_bottomrO   )r'   Úline_heightÚhalf_leadings      r1   rU   rU   ©  sm   € õ !& c¤iÑ 0Ô 0Ñ€K�”Ø”˜;Ô'€C„JØ #¤*Ñ,°Ñ1€LØ! CÔ$8Ñ8¸3¼?ÑJ€C„NØ$ sÔ'>Ñ>ÀÔASÑS€CÔÐÐr3   c                 ó´  — |dz  }|du }|}|}t          |t          j        t          j        f¦  «        sJ ‚|j        |j        z   |j        z   }|j        |j        z   |j	        z   }|}g }g }d}dx}}dddœ}d}|j
        d         dk    rg }|rd}n|                     ¦   «         \  \  }}t          |j        |d…         ¦  «        D �]É\  }}||z   }|j        |_        |                     ¦   «         sSt!          | ||||||||
|||	||||¦  «         |                     ¦   «         r |dz   }||
vr||                     ¦   «         z  }Œ~|t'          |j        ¦  «        dz
  k    }|} g }!t)          | ||| ||||||	|!|||¦  «        \  }"}#}$}%}&}'|j
        d	         d
k    r|}(||'d         z  }n|}(||'d         z  }|r,|(r*|#€(| |(z  } t)          | ||| ||||||	|!|||¦  «        \  }"}#}$}%}&}'t+          |d         |'d         ¦  «        |d<   t+          |d         |'d         ¦  «        |d<   d}|$rd}d})|du rd}n|du rd}n|j
        d         dv rd})|)€.d||%fv rd})n%|%dv r|%})nt-          ||%z   |j
        d         ¦  «        })|)r|                     |¦  «         g }|€|%}|j        rd}n|&}|"€t          |t          j        ¦  «        sJ ‚n t          |t          j        ¦  «        r|                     ||"f¦  «         |"j        |"                     ¦   «         z   }*|*t9          | |"¦  «        z
  |k    r"t;          | |||||||	|
|||||¦  «        }+|+r|+}# ne|*}|                     ||"|f¦  «         |
                     |!¦  «         |#�|                     |¦  «         ||#i}# n�ŒË|                     |¦  «         d}#|j
        d	         d
k    rpt'          |¦  «        dk    r]d„ |D ¦   «         },|,d         j        }|,ddd…         D ]8}|                     ||j        z
  d¬¦  «         ||                     ¦   «         z  }Œ9|#du }-|                     d„ |D ¦   «         ¦  «        }.|.                      | |- ¬¦  «         t          |t          j        ¦  «        rod|._!        |.j        }|.j
        d	         dk    r|ddd…         }|D ]A}|                     ¦   «         r+|j        |                     ¦   «         z   |.j        z
  |._!         nŒBny||._        |j
        d         dk    rd}/n|j
        d	         dk    r|n|-}/|/r |.j        D ]}|                     |¬¦  «         Œ||z
  |._!        |.                     |d         d¬¦  «         tE          |.¦  «         |.j
        d         dk    r|D ]}0tG          | |0|.||d¬¦  «         Œ|#�&tI          tK          |#¦  «        ¦  «        }||k     r|di}#|j&        rd}d}|.|#||||fS )aš  Fit as much content as possible from an inline box in a width.

    Return ``(new_box, resume_at, preserved_line_break, first_letter, last_letter)``.
    ``resume_at`` is ``None`` if all of the content fits. Otherwise it can be passed as
    a ``skip_stack`` parameter to resume where we left off.

    ``new_box`` is non-empty (unless the box is empty) and as big as possible while
    respecting ``max_x``, if possible (may overflow is no split is possible.)

    This is the recursive step that loops over the children of the box; base steps of
    recursion are handled by ``split_inline_level()``.

    In this phase, excluded floating shapes are ignored.

    g0¸D   ð?NFr   rä   r¢   Úrelativer	   r;   r<   rå   ræ   Tr�   õ   Â r~   )Úprer�   )TFÚlangc                 óB   — g | ]\  }}}|                      ¦   «         ¯|‘ŒS rø   )r  )rû   r\   Ú	box_childs      r1   rý   z$split_inline_box.<locals>.<listcomp>Z  s@   € ð .ð .ð .Ù)˜!˜Y¨Ø×*Ò*Ñ,Ô,ð.Øð.ð .ð .r3   r=   r’   c                 ó   — g | ]\  }}}|‘Œ	S rø   rø   )rû   rŒ   r$  r\   s       r1   rý   z$split_inline_box.<locals>.<listcomp>e  s   € Ð7Ð7Ð7Ñ*�u˜i¨ˆÐ7Ð7Ð7r3   )ÚstartÚendr>   Úbox_decoration_breakÚclonerþ   rA   )'r„   r   rŠ   r‹   rà   rÔ   rÞ   rá   rÕ   rß   rE   rT   Ú	enumeraterR   r$   r  r  rú   r  rˆ   rô   r   r   rV   Útrailing_collapsible_spacer…   rX   rG   r   r  rP   rQ   Úremove_decorationr"   rU   r   ÚnextÚiterÚ	is_leader)1r&   r'   rG   rb   r(   r)   r*   r+   r,   rc   rf   rg   r-   r.   Úis_startÚinitial_position_xr  Úleft_spacingÚright_spacingÚcontent_box_leftrR   r  rh   ri   rj   rñ   Úfloat_resume_indexrò   Úirž   rŒ   Úis_last_childr]   Úchild_waiting_floatsr  r0   Ú	preservedÚfirstr:   Únew_float_widthsÚend_spacingÚ	can_breakrl   Úprevious_resume_atÚin_flow_childrenÚis_endr›   Útranslation_neededÚabsolute_boxs1                                                    r1   rH   rH   ¶  s*  € ð4 
ˆXÑ€Eà˜TÐ!€HØ#ÐØ#ÐÝ�c�EœM­5¬?Ð;Ñ<Ô<Ð<Ð<Ð<àÔ˜3œ?Ñ*¨SÔ-BÑBð ð 	Ô˜CÔ,Ñ,¨sÔ/EÑEð à!Ðà€HØÐØ ÐØ!%Ð%€L�;Ø¨Ð*Ð*€LØÐà
„y�Ô 
Ò*Ð*Øˆàð 1Øˆˆà(×.Ò.Ñ0Ô0ÑÑˆˆzå˜cœl¨4¨5¨5Ô1Ñ2Ô2ð kñ k‰ˆˆ5Ø�D‘ˆØœ>ˆÔà×&Ò&Ñ(Ô(ð 
	ÝØ˜Ð.°°u¸hØÐ/°Ø Ð->ÀØ�z <ñ	1ô 1ð 1ð
 ×ÒÑ!Ô!ð 2Ø%*¨Q¡YÐ"Ø Ð.Ð.Ø˜U×/Ò/Ñ1Ô1Ñ1�EØà¥# c¤lÑ"3Ô"3°aÑ"7Ò7ˆØˆØ!ÐåØ˜ 
¨O¸\ØÐ,¨n¸kØ!Ð#7¸Ø"Ð$4ñ	6ô 6ñ 	Gˆ	�9˜i¨°Ð6Fð Œ9�[Ô! UÒ*Ð*Ø&ˆKØÐ% fÔ-Ñ-ˆEˆEà'ˆKØÐ% gÔ.Ñ.ˆEØð 		;˜[ð 		;¨YÐ->ð ˜{Ñ*ˆOå"Ø˜U J°ÀØÐ 0°.À+Ø%Ð';¸]Ø&Ð(8ñ	:ô :ñ KˆI�y )¨U°DÐ:Jõ  # <°Ô#7Ð9IÈ&Ô9QÑRÔRˆ�VÑÝ # L°Ô$9Ð;KÈGÔ;TÑ UÔ Uˆ�WÑàˆ
Øð 	(Ø#'Ð àˆ	Ø˜$ÐÐØˆKˆKØ˜EÐ!Ð!ØˆKˆKØŒY�}Ô%Ð):Ð:Ð:ØˆIØÐØ˜ UÐ+Ð+Ð+Ø!�	�	Ø˜-Ð'Ð'Ø!�	�	å*Ø %Ñ'¨¬°VÔ)<ñ>ô >�	ð ð 	"Ø�OŠOÐ,Ñ-Ô-Ð-Ø!ÐàÐØ ˆLØÔ+ð 	ØˆKˆKàˆKàÐå˜e¥U¤]Ñ3Ô3Ð3Ð3Ð3Ð3õ ˜#�uœ}Ñ-Ô-ð 9Ø×$Ò$ e¨YÐ%7Ñ8Ô8Ð8ð 'Ô1°I×4JÒ4JÑ4LÔ4LÑLˆNØÕ 8¸À)Ñ LÔ LÑLÈuÒTÐTå%<ØÐ-¨u°lÐDVØ" KÐ1BÀNØ! 8Ð-=Ð?QØ$ñ	&&ô &&Ð"ð
 &ð Ø 2�IØ�Eà'ˆJØ×#Ò# U¨I°uÐ$=Ñ>Ô>Ð>à×ÒÐ2Ñ3Ô3Ð3ØÐ Ø�OŠOÐ,Ñ-Ô-Ð-Ø 	Ð*ˆIØˆEñ !ð
 	�ŠÐ(Ñ)Ô)Ð)Øˆ	ð „y�Ô Ò&Ð&­3¨x©=¬=¸1Ò+<Ð+<ð.ð .Ø-5ð.ñ .ô .Ðð & aÔ(Ô3ˆ
Ø% d d¨ dÔ+ð 	/ð 	/ˆEØ�OŠOØ Ô!1Ñ1À$ð ñ Hô Hð Hà˜%×,Ò,Ñ.Ô.Ñ.ˆJˆJà˜$Ð€FØ×$Ò$Ø7Ð7¨hÐ7Ñ7Ô7ñ9ô 9€Gà×Ò¨ L¸&°jÐÑAÔAÐAÝ�#•u”}Ñ%Ô%ð GàˆŒØÔ#ˆØŒ=˜Ô%¨Ò.Ð.Ø   " ”~ˆHØð 	ð 	ˆEØ×&Ò&Ñ(Ô(ð àÔ$ u×'9Ò'9Ñ';Ô';Ñ;ØÔ&ñ'ð ”ð �ð	øð 0ˆÔØŒ9Ð+Ô,°Ò7Ð7Ø!%ÐÐð  œI kÔ2°eÒ;Ð;��Àð àð 	1Ø Ô)ð 1ð 1�Ø—’ <�Ñ0Ô0Ð0Ð0Ø"Ð%5Ñ5ˆŒØ×Ò˜\¨&Ô1ÀÐÑFÔFÐFå˜Ñ Ô Ð à„}�ZÔ  JÒ.Ð.Ø*ð 	!ð 	!ˆLÝØ˜ w°¸\Øð!ñ !ô !ð !ð !ð ÐÝ•T˜)‘_”_Ñ%Ô%ˆØÐ%Ò%Ð%Ø+¨TÐ2ˆIà
„}ð ØˆØˆð 	�Ð0°,ÀØðð r3   Tc                 óä  — t          |t          j        ¦  «        sJ ‚|j        d         }|j                             ¦   «         |d…         }|dk    s|sdS t          |                     ¦   «         |j        | ||j        |¬¦  «        \  }}}	}
}}|	dk    sJ ‚|dk    ry| 	                    |j        ¦  «        }|
|_
        ||_        ||_        t          |j        ¦  «        \  }}||z
  dz  }||_        ||_        ||_        |xj        |j        z  c_        nd}|	€d}nR|||	…                              ¦   «         }||	k    o|                     d¦  «        }|rd	}||v sJ d
|›d�¦   «         ‚|	|z  }	||	|fS )av  Keep as much text as possible from a TextBox in a limited width.

    Try not to overflow but always have some text in ``new_box``.

    Return ``(new_box, skip, preserved_line_break)``. ``skip`` is the number of
    UTF-8 bytes to skip form the start of the TextBox for the next line, or
    ``None`` if all of the text fits.

    Also break on preserved line breaks.

    r  Nr   )NNFrç   r   Fr�   )r¨   ú	úõ   Â…u   â€¨u   â€©zGot z> between two lines. Expected nothing or a preserved line break)r„   r   r…   rE   r†   r‡   r   rë   Újustification_spacingÚcopy_with_textr"   r—   r%   r   rN   rO   rM   Ústrip)r&   r'   r]   rò   rè   r  r†   ÚlayoutÚlengthÚresume_indexr"   r%   rM   r  r\   r  rh   ÚbetweenÚline_breakss                      r1   r–   r–   –  sÌ  € õ �c�5œ=Ñ)Ô)Ð)Ð)Ð)Ø”	˜+Ô&€IØŒ8�?Š?ÑÔ˜T˜U˜UÔ#€DØ�A‚~€~˜T€~Ø Ð Ý<LØ�Š‰Œ�s”y '¨?ØÔ!°ð=@ñ =@ô =@Ñ9€FˆF�L %¨°ð ˜1ÒÐÐÐà�‚z€zØ× Ò  ¤Ñ-Ô-ˆØˆŒ	Ø!ˆÔð
 ˆŒ
õ ˜sœyÑ)Ô)‰ˆ�QØ# fÑ,°Ñ1ˆØ%ˆŒØ(ˆÔàˆŒàˆŒ˜œÑ&ˆŒˆàˆàÐØ$ÐÐà�v˜lÐ*Ô+×2Ò2Ñ4Ô4ˆà�|Ò#Ð;¨¯ª°sÑ);Ô);ð 	àð 	Kð KˆKØ˜kÐ)Ð)Ð)Ð)à@GÀÀðJñ *Ô)Ð)ð 	˜Ñˆà�Ð2Ð2Ð2r3   c                 óˆ  ‡
— g Š
t          | ‰
d¬¦  «        \  }}ˆ
fd„‰
D ¦   «         }|r0d„ |D ¦   «         }|r"t          |¦  «        }t          |||z   ¦  «        }|D ]d\  }}}|                     ¦   «         r||j        z
  }	n/|j        d         dk    r||z
  }	n|j        d         dk    sJ ‚||z
  }	t          ||	¦  «         Œe||fS )zòHandle ``vertical-align`` within a :class:`LineBox`.

    Place all boxes vertically assuming that the baseline of ``box``
    is at `y = 0`.

    Return ``(max_y, min_y)``, the maximum and minimum vertical position
    of margin boxes.

    r   ©Ú
baseline_yc                 óp   •— g | ]2}|                      ¦   «         rd nt          |‰d¬¦  «        \  }}|||f‘Œ3S )r6   r   rP  )rú   Úaligned_subtree_verticality)rû   ÚsubtreeÚ	sub_max_yÚ	sub_min_yÚtop_bottom_subtreess       €r1   rý   z(line_box_verticality.<locals>.<listcomp>â  sk   ø€ ð >ð >ð >àà#×.Ò.Ñ0Ô0ð <ˆLˆLÝ,ØÐ,¸ð<ñ <ô <ñ !ˆI�yð 
�)˜YÐ'ð>ð >ð >r3   c                 óH   — g | ]\  }}}|                      ¦   «         °||z
  ‘Œ S rø   rù   )rû   rT  rU  rV  s       r1   rý   z(line_box_verticality.<locals>.<listcomp>ë  sE   € ð )ð )ð )á-�˜ IØ×%Ò%Ñ'Ô'ð)Ø˜	Ñ!ð)ð )ð )r3   Úvertical_alignrp   ro   )rS  r   rú   r$   rE   Útranslate_subtree)r'   Úmax_yÚmin_yÚsubtrees_with_min_maxÚsub_positionsÚhighest_subrT  rU  rV  ÚdyrW  s             @r1   rL   rL   Õ  s?  ø€ ð ÐÝ.ØÐ ¨Qð0ñ 0ô 0�L€Eˆ5ð>ð >ð >ð >à*ð>ñ >ô >Ðð ð 4ð)ð )à1Fð)ñ )ô )ˆð ð 	4Ý˜mÑ,Ô,ˆKÝ˜˜u {Ñ2Ñ3Ô3ˆEà)>ð 'ð 'Ñ%ˆ�˜IØ×ÒÑÔð 	#Ø˜Ô+Ñ+ˆBˆBØŒ]Ð+Ô,°Ò5Ð5Ø˜Ñ"ˆBˆBà”=Ð!1Ô2°hÒ>Ð>Ð>Ð>Ø˜Ñ"ˆBÝ˜' 2Ñ&Ô&Ð&Ð&Ø�%ˆ<Ðr3   c                 óà   — t          | t          j        ¦  «        r=| xj        |z  c_        | j        d         dv r| j        D ]}t          ||¦  «         Œd S d S |                      |¬¦  «         d S )NrY  ©rp   ro   ©r`  )r„   r   r‹   r$   rE   rR   rZ  rP   )r'   r`  rž   s      r1   rZ  rZ  ÿ  sŒ   € Ý�#•u”Ñ'Ô'ð ØˆŒ˜"ÑˆŒØŒ9Ð%Ô&Ð*;Ð;Ð;Øœð -ð -�Ý! %¨Ñ,Ô,Ð,Ð,ð <Ð;ð-ð -ð 	�Š˜ˆÑÔÐÐÐr3   c                 óœ   — t          | ||¦  «        \  }}|| j        z
  }||                      ¦   «         z   }|�||k     r|}|�||k    r|}||fS ©N)Úinline_box_verticalityrM   rÁ   )r'   rW  rQ  r[  r\  rp   ro   s          r1   rS  rS  
  sh   € Ý)¨#Ð/BÀJÑOÔO�L€Eˆ5à
�s”|Ñ
#€CØ�3×$Ò$Ñ&Ô&Ñ&€FØ€}˜˜eš˜ØˆØ€}˜ š˜Øˆà�%ˆ<Ðr3   c                 óJ  — d}d}t          | t          j        t          j        f¦  «        s||fS | j        D �]i}|                     ¦   «         s*|                     ¦   «         r|                     |¦  «         ŒA|j        d         }|dk    r|}�n&|dk    rK| j        d         t          | j        d¦  «        z  }||| 
                    ¦   «         z   dz  z
  }	|	|j        z   }nÕ|dk    r-|| j        z
  | j        z   | j        z   | j        z   }	|	|j        z   }n¢|d	k    rJ|| j        z
  | j        z   | j        z   | j        z   | j        z   }
|
| 
                    ¦   «         z
  |j        z   }nR|d
v rd}nKt          |t           ¦  «        r1t#          | j        ¦  «        \  }}|t%          || j        |¦  «        z
  }n||z
  }||j        z
  }	t          j        t          j        t          j        f}t          ||¦  «        r|                     |	|j        z
  ¬¦  «         n|	|_        |d
v r|                     |¦  «         �Œü|	| 
                    ¦   «         z   }
|�|	|k     r|	}|�|
|k    r|
}t          |t          j        ¦  «        r(t1          |||¦  «        \  }}|�||k     r|}|�||k    r|}�Œk||fS )zþHandle ``vertical-align`` within an :class:`InlineBox`.

    Place all boxes vertically assuming that the baseline of ``box``
    is at `y = baseline_y`.

    Return ``(max_y, min_y)``, the maximum and minimum vertical position
    of margin boxes.

    NrY  rM   Úmiddler  Úexr   ztext-topztext-bottomrb  r   rc  )r„   r   rŠ   r‹   rR   r  rú   rX   rE   r   rÁ   rM   rN   r  r  r%   r   r   r   rÂ   rí   rð   rP   r$   rf  )r'   rW  rQ  r[  r\  rž   rY  Úchild_baseline_yÚone_exrp   ro   r%   r\   Ú	box_typesÚchildren_max_yÚchildren_min_ys                   r1   rf  rf    s-  € ð €EØ€EÝ�c�EœM­5¬?Ð;Ñ<Ô<ð Ø�eˆ|Ðà”ð ?'ñ ?'ˆØ×&Ò&Ñ(Ô(ð 	Ø×ÒÑ!Ô!ð 2Ø#×*Ò*¨5Ñ1Ô1Ð1ØØœÐ%5Ô6ˆØ˜ZÒ'Ð'Ø)ÐÑØ˜xÒ'Ð'Ø”Y˜{Ô+­o¸c¼iÈÑ.NÔ.NÑNˆFØ ¨×)<Ò)<Ñ)>Ô)>Ñ >À!ÑCÑCˆCØ" U¤^Ñ3ÐÐØ˜zÒ)Ð)à ¤Ñ,¨s¬~Ñ=ØÔ'ñ(Ø*-¬/ñ:ˆCà" U¤^Ñ3ÐÐØ˜}Ò,Ð,à  3¤<Ñ/°#´.Ñ@ØÔ*ñ+Ø-0¬_ñ=Ø?B¼zñJˆFà%¨×(;Ò(;Ñ(=Ô(=Ñ=ÀÄÑNÐÐØÐ0Ð0Ð0ð  !ÐÐÝ˜­Ñ0Ô0ð 	;Ý˜cœiÑ(Ô(‰IˆF�AØ)­JØ ¤	¨6ñ-3ô -3ñ  3ÐÐð
  *¨NÑ:Ðð  ¤Ñ/ˆÝÔ)­5Ô+>ÅÔ@SÐTˆ	Ý�e˜YÑ'Ô'ð 	#à�OŠO˜s UÔ%5Ñ5ˆOÑ6Ô6Ð6Ð6à"ˆEÔð Ð.Ð.Ð.ð  ×&Ò& uÑ-Ô-Ð-Ùà�u×*Ò*Ñ,Ô,Ñ,ˆØˆ=˜C %šK˜KØˆEØˆ=˜F UšN˜NØˆEÝ�e�Uœ_Ñ-Ô-ð 	'Ý-CØÐ*Ð,<ñ.>ô .>Ñ*ˆN˜NàÐ)¨n¸uÒ.DÐ.DØ&�ØÐ)¨n¸uÒ.DÐ.DØ&�ùØ�%ˆ<Ðr3   c                 óL  — |j         |k    rdS |j        d         }|r|j        d         }|dk    r|n|}|j        d         dv }|dv r|dk    |j        d	         d
k    z  rd}nd}|dk    rdS ||j         z
  }|dk    r|rt          | ||¦  «         dS |dk    r|dz  S |dk    sJ ‚|S )z>Return the line horizontal offset according to ``text-align``.r   Útext_align_allÚtext_align_lastrÎ   r~   r   rä   rå   r;   r<   r&  r'  ÚjustifyÚcenterr   )r"   rE   Újustify_line)r&   r/   r]   r:   ÚalignÚ
align_lastÚspace_collapseÚoffsets           r1   rK   rK   i  s  € ð „z�_Ò$Ð$ØˆqàŒJÐ'Ô(€EØð >Ø”ZÐ 1Ô2ˆ
Ø# vÒ-Ð-��°:ˆØ”Z Ô.ð 3(ð (€NàÐ!Ð!Ð!Ø�VŠO ¤
¨;Ô 7¸5Ò @ÑAð 	ØˆEˆEàˆEØ�ÒÐØˆqØ˜tœzÑ)€FØ�	ÒÐØð 	0õ ˜ $¨Ñ/Ô/Ð/ØˆqØ�ÒÐØ˜‰zÐà˜Š~ˆ~ˆ~ˆ~Øˆr3   c                 óV   — t          |¦  «        x}rt          | |||z  d¦  «         d S d S )Nr   )Úcount_expandable_spacesÚadd_word_spacing)r&   r/   Úextra_widthÚ	nb_spacess       r1   rt  rt  Ž  sE   € õ -¨TÑ2Ô2Ð2ˆ	ð DÝ˜ $¨°iÑ(?ÀÑCÔCÐCÐCÐCðDð Dr3   c                 ó,  — t          | t          j        ¦  «        r5| j                             d¦  «        | j                             d¦  «        z   S t          | t          j        t          j        f¦  «        rt          d„ | j        D ¦   «         ¦  «        S dS )z;Count expandable spaces (space and nbsp) for justification.r�   r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S re  )rz  ©rû   rž   s     r1   ú	<genexpr>z*count_expandable_spaces.<locals>.<genexpr>›  s+   è è € ÐLÐL°eÕ*¨5Ñ1Ô1ÐLÐLÐLÐLÐLÐLr3   r   )	r„   r   r…   r†   ÚcountrŠ   r‹   ÚsumrR   )r'   s    r1   rz  rz  •  s|   € å�#•u”}Ñ%Ô%ð àŒx�~Š~˜cÑ"Ô" S¤X§^¢^°HÑ%=Ô%=Ñ=Ð=Ý	�C�%œ-­¬Ð9Ñ	:Ô	:ð ÝÐLÐL¸s¼|ÐLÑLÔLÑLÔLÐLàˆqr3   c                 ó¤  — t          |t          j        ¦  «        r…||_        |xj        |z  c_        t          |¦  «        }|dk    rXt          |j        |j        | d |j        ¬¦  «        }| 	                    ¦   «          ||z  }||z  }|xj
        |z  c_
        ||_        n°t          |t          j        t          j        f¦  «        rt|xj        |z  c_        |}|j        }|j        d         dk    r|d d d…         }|D ](}	|	                     ¦   «         rt!          | |	||¦  «        }Œ)|xj
        ||z
  z  c_
        n|                     |d¦  «         |S )Nr   )rÅ   rG  r;   r<   r=   )r„   r   r…   rG  rG   rz  r   r†   rE   Ú
deactivater"   r—   rŠ   r‹   rR   r  r{  rP   )
r&   r'   rG  Ú	x_advancer}  rJ  Úextra_spaceÚprevious_x_advancerR   rž   s
             r1   r{  r{     s~  € Ý�#•u”}Ñ%Ô%ð $Ø$9ˆÔ!ØˆŒ˜)Ñ#ˆŒÝ+¨CÑ0Ô0ˆ	Ø�qŠ=ˆ=Ý"Ø”˜#œ) W¸Ø&)Ô&?ðAñ Aô AˆFð ×ÒÑÔÐØ/°)Ñ;ˆKØ˜Ñ$ˆIØˆIŒI˜Ñ$ˆIŒIØ%ˆCÔøÝ	�C�%œ-­¬Ð9Ñ	:Ô	:ð $ØˆŒ˜)Ñ#ˆŒØ&ÐØ”<ˆØŒ9�[Ô! UÒ*Ð*Ø   " ”~ˆHØð 	Fð 	FˆEØ×&Ò&Ñ(Ô(ð FÝ,Ø˜UÐ$9¸9ñFô F�	øàˆ	Œ	�YÐ!3Ñ3Ñ3ˆ	Œ	ˆ	ð 	�Š�i Ñ#Ô#Ð#ØÐr3   c                 ó>  — | j         D ]”}t          |t          j        ¦  «        rat	          |¦  «        s dS dD ]K}t          |j        d|› �         dd ¦  «        s&|j        d|› d�         s|j        d|› �         j        r  dS ŒLŒ}|                     ¦   «         r dS Œ•dS )	NFré   rê   ru   Úborder_Ú_widthÚpadding_T)	rR   r„   r   r‹   rI   rî   rE   ru   r  )r[   rž   ró   s      r1   rI   rI   ¿  sä   € àÔ!ð 
ð 
ˆÝ�e�Uœ_Ñ-Ô-ð 		Ý% eÑ,Ô,ð Ø�u�uØ:ð !ð !�Ý˜EœKÐ(8°$Ð(8Ð(8Ô9¸7ÀDÑIÔIð !ØœÐ$:¨dÐ$:Ð$:Ð$:Ô;ð!àœÐ$5¨tÐ$5Ð$5Ô6Ô<ð!ð !˜5˜5˜5ð!ð!ð
 ×$Ò$Ñ&Ô&ð 	Ø�5�5ð	àˆ4r3   c                 óH  — | j         d         dv }t          | t          j        ¦  «        rdS |r:t          | t          j        ¦  «        r t          | j        | j         d         ¦  «        S |r8t          | t          j        ¦  «        rt          d„ | j	        D ¦   «         ¦  «        S dS )Nr~   )r€   zpre-wrapr‚   Fr"  c              3   ó4   K  — | ]}t          |¦  «        V — Œd S re  )r  r€  s     r1   r�  z#can_break_inside.<locals>.<genexpr>×  s+   è è € ÐEÐE¨uÕ# EÑ*Ô*ÐEÐEÐEÐEÐEÐEr3   )
rE   r„   r   rì   r…   r   r†   r³   ÚanyrR   )r'   Ú	text_wraps     r1   r  r  Ï  s¦   € à”	˜-Ô(Ð,NÐN€IÝ�#•uÔ1Ñ2Ô2ð FØˆuØ	ð F•z #¥u¤}Ñ5Ô5ð FÝ˜cœh¨¬	°&Ô(9Ñ:Ô:Ð:Ø	ð F•z #¥u¤Ñ7Ô7ð FÝÐEÐE¸¼ÐEÑEÔEÑEÔEÐEØˆ5r3   )T)EÚ__doc__r®   Úmathr   Úcssr   Úcss.propertiesr   Úformatting_structurer   r   rö   r
   r   Úflexr   r©   r   r   Úgridr   Úleaderr   Úmin_maxr   Úpercentr   r   r   Ú	preferredr   r   r   Úreplacedr   Útabler   r   Útext.line_breakr   r   r   r   r   r2   r#   rB   rJ   rC   rË   rÆ   r×   rÖ   rô   r  r  rU   rH   r–   rL   rZ  rS  rf  rK   rt  rz  r{  rI   r  rø   r3   r1   ú<module>rŸ     sU  ðØ $Ð $à Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø )Ð )Ð )Ð )Ð )Ð )Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =ðMð Mð Mð Mð Mð Mð Mð Mð Mð Mð Mð Mð Mð Mð"ð "ð "ðBNð Nð Nðb&ð &ð &ðR'&ð '&ð '&ðfMð Mð Mð`ð ð ð,ð ð ð:0ð 0ð 0ð, ðIð Iñ ÔðIðbð bð bðJDCð DCð DCðN1+ð 1+ð 1+ðh
Tð 
Tð 
Tð]ð ]ð ]ð@<3ð <3ð <3ð <3ð~'ð 'ð 'ðTð ð ð
ð 
ð 
ðOð Oð Oðd"ð "ð "ðJDð Dð Dðð ð ðð ð ð>ð ð ð 	ð 	ð 	ð 	ð 	r3   