
    3vj؉                        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	 ddl
mZ dd	lmZ dd
lmZmZ ddlmZ d Zd#dZd#dZd Zd Zd$dZd$dZd#dZd#dZ	 	 d%dZd&dZd Zd Zd#dZ 	 	 d'dZ!d Z"d#dZ#d#dZ$d#dZ%d#d Z&d#d!Z'd" Z(y)(a  Preferred and minimum preferred width.

Also known as max-content and min-content width, also known as the
shrink-to-fit algorithm.

Terms used (max-content width, min-content width) are defined in David
Baron's unofficial draft (https://dbaron.org/css/intrinsic/).

    N)cache)inf   )resolve_math)
check_math)validate_non_shorthand)boxes)can_break_textsplit_first_line   )default_image_sizingc           	      ^    t        t        t        | |d      |      t        | |d            S )zReturn the shrink-to-fit width of ``box``.

    *Warning:* both available_content_width and the return value are
    for width of the *content area*, not margin area.

    https://www.w3.org/TR/CSS21/visudet.html#float-width

    Fouter)minmaxmin_content_widthmax_content_width)contextboxavailable_content_widths      N/root/.hermes/venv/lib/python3.12/site-packages/weasyprint/layout/preferred.pyshrink_to_fitr      s6     gs%8#	% 	'3e4	6 6    c                    |j                   rt        | ||      d   S t        |t        j                        rt        | ||      S t        |t        j                  t        j                  f      rt        | ||      S t        |t        j                        rt        | |      S t        |t        j                  t        j                  f      rt        | ||d      S t        |t        j                        rt        ||      S t        |t        j                         rt#        | ||      S t        |t        j$                        rt        | ||      S t'        dt)        |      j*                   d      )zsReturn the min-content width for ``box``.

    This is the width by breaking at every line-break opportunity.

    r   Tis_line_startzmin-content width for  not handled yet)is_table_wrapper"table_and_columns_preferred_widths
isinstancer	   TableCellBoxtable_cell_min_content_widthBlockContainerBoxTableColumnBoxblock_min_content_widthTableColumnGroupBoxcolumn_group_content_width	InlineBoxLineBoxinline_min_content_widthReplacedBoxreplaced_min_content_widthFlexContainerBoxflex_min_content_widthGridContainerBox	TypeErrortype__name__r   r   r   s      r   r   r   '   s+    1'3FqII	C++	,+GS%@@	C%1153G3GH	I&wU;;	C22	3)'377	C%//5==9	:'e4PP	C**	+)#u55	C//	0%gsE::	C//	0&wU;;0c1C1C0DDTUVVr   c                    |j                   rt        | ||      d   S t        |t        j                        rt        | ||      d   S t        |t        j                  t        j                  f      rt        | ||      S t        |t        j                        rt        | |      S t        |t        j                  t        j                  f      rt        | ||d      S t        |t        j                        rt        ||      S t        |t        j                         rt#        | ||      S t        |t        j$                        rt        | ||      S t'        dt)        |      j*                   d      )znReturn the max-content width for ``box``.

    This is the width by only breaking at forced line breaks.

    r   Tr   zmax-content width for r   )r   r    r!   r	   r"    table_cell_min_max_content_widthr$   r%   block_max_content_widthr'   r(   r)   r*   inline_max_content_widthr,   replaced_max_content_widthr.   flex_max_content_widthr0   r1   r2   r3   r4   s      r   r   r   B   s0    1'3FqII	C++	,/eDQGG	C%1153G3GH	I&wU;;	C22	3)'377	C%//5==9	:'e4PP	C**	+)#u55	C//	0%gsE::	C//	0&wU;;0c1C1C0DDTUVVr   c                 p   |j                   d   }|dk(  st        |      s|j                  dk(  rC|j                  D cg c]  }|j	                         s || |d       }}|rt        |      nd}n4|j                   d   dk(  r|j                  }n|j                  }d}d	D ]p  }|j                   |   }	|	dk7  st        |	      r$|	j                  j                         d
k(  r||	j                  z  }Q|	j                  dk(  sJ ||	j                  z  }r |j                   d   dk(  }
|
rt        |d      r||j                  z  }n||j                   d   z  }|
rt        |d      r||j                  z  }n||j                   d   z  }dt        d|      z
  t        d|      z  dz  }t        |||      S c c}w )z+Helper to create ``block_*_content_width.``widthauto%Tr   r   
box_sizingzcontent-box)padding_leftpadding_rightpxborder_collapsecollapseborder_left_widthborder_right_widthd   )styler   unitchildrenis_absolutely_positionedr   valuelowerhasattrrE   rF   r   adjust)r   r   functionr   r<   childchildren_widthspercentagesrL   style_valuerD   s              r   _block_content_widthrU   ]   s   IIgE*U+uzzS/@
 ?Bll55:113 We405 5 )8O$Q	<	 M	16 	5E))E*Kf$Z-D##))+t3[...E&++s222;#4#44K	5 99./:=%89S***ESYY233E%9:S+++ESYY344Es3,,Au=C#ue$$?5s   "F3c                    | j                   d   }| j                   d   }t        |      }t        |      }|dk(  s|s|j                  dk(  rd}n|j                  }|dk(  s|s|j                  dk(  rt        }n|j                  }t        | t        j                        r| j                  j                  d| j                   d         \  }}}|| j                   d   }| j                   d	   }	t        |      }t        |	      }|dk7  r*|s(|j                  dk7  rt        ||j                  |z        }|	dk7  r*|s(|	j                  dk7  rt        ||	j                  |z        }t        |t        ||            S )
z;Get box width from given width and box min- and max-widths.	min_width	max_widthr=   r>   r   r   	font_size
min_height
max_height)rH   r   rI   rL   r   r!   r	   r,   replacementget_intrinsic_sizer   r   )
r   r<   rW   rX   min_pendingmax_pending_ratiorZ   r[   s
             r   min_maxrb      sR   		+&I		+&IY'KY'KFkY^^s-B	OO	FkY^^s-B	OO	#u(()oo88syy%'1e<0J<0J$Z0K$Z0KV#KJOOs<R	:+;+;e+CD	V#KJOOs<R	:+;+;e+CD	y#eY/00r   c                    d}|rddgng |rddgng z   D ]p  }| j                   |   }|dk7  st        |      r$|j                  j                         dk(  r||j                  z  }Q|j                  dk(  sJ ||j                  z  }r | j                   d	   d
k(  }|r0|rt        | d      r|| j                  z  }n|| j                   d   z  }|r0|rt        | d      r|| j                  z  }n|| j                   d   z  }|dk  r|d|dz  z
  z  S y)z3Add box paddings, borders and margins to ``width``.r   margin_leftr@   margin_rightrA   r=   rB   r>   rC   rD   rE   rF   rG   r   )rH   r   rI   rM   rL   rN   rE   rF   )r   r<   leftrightrS   rL   rT   rD   s           r   margin_widthrh      sB   K -1-	(b.3./	*	=
1 ii&& K)@%%'4/***"''3...{000
1 yy*+z9H%89 S***E SYY233E%9:S+++E SYY344ESK#--.. r   c                 >    t        | |      }|rt        | |||      S |S )zRespect min/max and adjust width depending on ``outer``.

    If ``outer`` is set to ``True``, return margin width, else return content
    width.

    )rb   rh   )r   r   r<   rf   rg   fixeds         r   rO   rO      s)     CECe44r   c                 &    t        | |t        |      S )z0Return the min-content width for a ``BlockBox``.)rU   r   r4   s      r   r&   r&      s    '0 0r   c                 &    t        | |t        |      S )z0Return the max-content width for a ``BlockBox``.)rU   r   r4   s      r   r7   r7      s    .?GGr   c           	      p    t        | |||d||      }|rt        |      n
t        |      }t        |||      S )zReturn the min-content width for an ``InlineBox``.

    The width is calculated from the lines from ``skip_stack``. If
    ``first_line`` is ``True``, only the first line minimum width is
    calculated.

    T)minimum
skip_stack
first_line)inline_line_widthsnextr   rO   )r   r   r   ro   rp   r   widthsr<   s           r   r+   r+      s@      e]D*6F 'DLCKE#ue$$r   c           	          t        t        | |||d            }|dxx   t        | |      z  cc<   t        ||t	        |            S )z2Return the max-content width for an ``InlineBox``.F)rn   )listrq   trailing_whitespace_sizerO   r   )r   r   r   r   rs   s        r   r8   r8      sH    7CuMOF 2J*7C88J#uc&k**r   c                     |j                   d   }|dk(  st        |      s|j                  dk(  rd}n+|j                  j                         dk(  sJ |j                  }t        |d|      S )z9Return the *-content width for a ``TableColumnGroupBox``.r<   r=   r>   r   rB   F)rH   r   rI   rM   rL   rO   )r   r   r<   s      r   r(   r(     sa    IIgE*U+uzzS/@zz!T)))#ue$$r   c                     |j                   D cg c]  }|j                         st        | |        }}t        |||rt	        |            }|S d      }|S c c}w )z4Return the min-content width for a ``TableCellBox``.r   )rJ   rK   r   rO   r   )r   r   r   rQ   rR   children_min_widths         r   r#   r#     sw     \\1--/ 	'5)1O 1   /O8
  678
 1s   #Ac                 R    t        | ||      }t        |t        | ||            }||fS )z=Return the min- and max-content width for a ``TableCellBox``.)r#   r   r7   )r   r   r   rW   rX   s        r   r6   r6   %  s3     -Wc5AII6wUKLIir   c           
   #     K   d}t        |t        j                        r|j                  d   }t	        |      rJt        ||j                  dd      }	t        |	fd      d   d   }
|
rD|
j                  dk7  r5|
j                  }n(|j                  dk7  r|j                  d   j                  }d}|d}n|j                         \  \  }}|j                  |d D ]  }|j                         rt        |t        j                        rt        | ||||||      }|rt        |      xs dg}n|D cg c]  }|xs d
 }}t        |      dk(  rt!        |||d   xs d      |d<   nt!        |||d   xs dd	      xs d|d<   t!        |||d
   xs dd      xs d|d
<   nt        |t        j"                        r0|j                  d   }|dv }|dv }|d}n|j                         \  \  }}|J |j$                  j'                         |xs dd }|r|r|j)                  d      }|rdnd}g }dx}}|^||z  }t+        ||d j-                         |j                  | ||j.                  |d      \  }}}}}}|j1                  |xs d       |rn|^|r|r||d   xs dz  } n|j-                         d
d }t3        |dz   |j                  d         }|rT|rR|rP|j1                  d       n>|r/|j                  d   dv rdt5        | |      dg}nt5        | |      g}nt7        | |      g}||d   xs dz  }t        |      dkD  r2||z    d}t        |      dkD  r|dd
 D ]
  }|xs d  |d
   xs d}|d
   du }d} ||z    yc c}w w)zYield line width for each line.r   text_indent)refer_toztext-indentr   r>   NF)rg   ru   )rf   white_spacenormalnowrappre-line)r   zpre-wrapr       T)r   rn   alangr   )r!   r	   r*   rH   r   r   r   rI   rL   itemsrJ   rK   r)   rq   rr   lenrO   TextBoxtextencodelstripr   decodejustification_spacingappendr
   r   r   )r   r   r   r   rn   ro   rp   r}   indent_tokenresultrL   current_lineskiprQ   linesliner   space_collapse	text_wrap
child_textrX   resume_indexnew_resume_indexr`   r<   last_letter	can_breaks                              r   rq   rq   -  s    
 K#u}}%yy/l#!,		=STUF*F9mDQGJEs*#kk#%))M288K L(..0zde$ X))+ eU__-&}gz:WEe,-278$885zQ!%aA>a!%aAUKSta"5%raeLTPTb	u}}-++m4K(,LLN#'III!&0&6&6&8#"z!)))**,dia\:J'..t4
$$IE.//L+". 006F|}-446Wi//} 7"31&q! U]d+ #. .aA-$++-bc2K&{S'8%++f:MNI9T"  99]+/QQ!#4We#DdKE.w>?E*7E:;aA%u:>,,K5zA~!!BK $D)!O$ 9>Lb	T)
qXr 
$$Y 9s   D+N-N:ENC<Nc                    | j                   d   }|dk7  r&t        |      s|j                  dk(  r|j                  nd}| j                   d   }|dk7  r&t        |      s|j                  dk(  r|j                  nt        }| j                   d   }|dk7  r&t        |      s|j                  dk(  r|j                  nd}t        |t        ||            S )z~Return the percentage contribution of a cell, column or column group.

    https://dbaron.org/css/intrinsic/#pct-contrib

    rW   r=   r>   r   rX   r<   )rH   r   rI   rL   r   r   r   )r   rW   rX   r<   s       r   _percentage_contributionr     s     		+&I$.y!inn&; 	AB  		+&I$.y!inn&; 	AD  IIgEu%**"3 	9: 
 y#eY/00r   c                 P  => ddl m} |j                         }| j                  j	                  |      }|r||   S d\  }}d}|j
                  D ]e  }	|	j
                  D ]T  }
|
j
                  D ]>  }t        |j                  |j                  z   |      }t        ||j                  z   |      }@ |dz  }V g t        |      D cg c]  }dg|z  
 }}d}|j
                  D ];  }	|	j
                  D ]*  }
|
j
                  D ]  }|||   |j                  <    |dz  }, = t        t        |       }|j                  d   dk(  rA|dkD  r<|j                  d   d   dt        |D cg c]  }t        |      s| c}      z   z  }nd}|dk(  s|dk(  r~g |_        t!        | |d	
      }t#        | |d	
      }t%        |dt!        | |            }t%        |dt#        | |            }g g g g |g f}||g|||g|dx| j                  |<   }||   S dg|z  }dg|z  }d}|j&                  D ]+  }|j
                  D ]  }|||<   |||<   |dz  }||k(  s n + n g }t)               }dg|z  }dg|z  >dg|z  =t        |      D ]  }||fD ]]  }||   x}st        ||   t+        | |            ||<   t        >|   t-        | |            >|<   t        =|   t/        |            =|<   _ ||   D ]  }|s|j                  dk(  rOt1        | |      \  }}t        ||   |      ||<   t        >|   |      >|<   t        =|   t/        |            =|<   d|j3                  |       |j5                  |j                  dz
           g }t7        |      D ]B  \  }}
d} |j3                  g x}!       t7        |
      D ]  \  }"}|r|"} |!j3                  |         D t8        =>fd       }#t;        |      D ]  }$g }%t        |      D ]y  }=|   x}&r|%j3                  |&       t        ||      D ]>  \  }
}!|!|   x} |
|    }'|'j                  dz
  |$k7  r& |#|'| >|         }(t        |&|(      }&@ |%j3                  |&       { |%= t        |      D cg c]  }d	 })}t        |      D ]  }||   r7||   j                  d   }*|*dk7  r t=        |*      s|*j>                  dk7  rd|)|<   ?||   r7||   j                  d   }*|*dk7  r t=        |*      s|*j>                  dk7  rd|)|<   {||   D ]L  }|s|j                  dk(  s|j                  d   }*|*dk7  s+t=        |*      r7|*j>                  dk7  sGd|)|<      t7        =      D +cg c]   \  }}+tA        |+dtC        =d|       z
        " c}+}=|D ]  }t+        | |      },t-        | |      }-tE        |j                  |j                  |j                  z         }.tC        ||.         }/tC        >|.         }0|j                  d   dk(  r#|j                  dz
  |j                  d   d   z  }1nd}1|,|/|1z   kD  r|,|/|1z   z
  }2 || ||2||)=>|.       |-|0|1z   kD  s|-|0|1z   z
  }2 || ||2>|)=>|.        t        |      D cg c]  }=|   r>|   =|   dz  z   }3}tC        =>fdt        |      D              }4dtC        =      z
  dz  }5|5dk(  r|4dk(  rd}6ntF        jH                  }6n|4|5z  }6|tC        |      z   }7|t        tC        >      |6g|3      z   }8|j                  d   }*|*dk7  rDt=        |*      s9|*j>                  jK                         dk(  r|j                  d   jL                  x}9}:n|7}9|8}:t        |7t%        |d	|9            }7t        |8t%        |d	|:            }8tO        |tO        ||7            };tO        |tO        ||8            }<|>=|)||f}|7|8g||;|<g|dx| j                  |<   }||   S c c}w c c}w c c}w c c}+}w c c}w )ad  Return content widths for the auto layout table and its columns.

    The tuple returned is
    ``(table_min_content_width, table_max_content_width,
       column_min_content_widths, column_max_content_widths,
       column_intrinsic_percentages, constrainedness,
       total_horizontal_border_spacing, grid)``

    https://dbaron.org/css/intrinsic/

    r   )distribute_excess_width)r   r   r   NrC   separateborder_spacingFr   T)r   r<   )FTc                 T   t        ||| j                  z         }t        |         }t        |       }t	        d||z
        }t        ||| j                  z         D cg c]  }|   dk(  r|    }}t        |      }	|	dk(  rdt        |      xs dz  }
||
z  S ||	z  }
||
z  S c c}w )Nr   r   )slicecolspansumr   r   ranger   )origin_celloriginr   
cell_slicebaseline_percentagecell_percentage_contributiondiffjother_columns_contributionsother_columns_contributions_sumra   intrinsic_percentagesmax_content_widthss              r   get_percentage_contributionzGtable_and_columns_preferred_widths.<locals>.get_percentage_contribution.  s     66K,?,?#?@
!"7
"CD'?'L$125HHI 66K,?,?#?@'.$Q'1, q!'.# '. +..I*J'*a/89>Q?E e| &(GGEe|'.s   B%r<   r=   r>   rG   c              3   8   K   | ]  }|   d k(  r|     yw)r   N ).0ir   r   s     r   	<genexpr>z5table_and_columns_preferred_widths.<locals>.<genexpr>  s+      2*"# #q( 	12*s   rB   )(tabler   get_wrapped_tabletablesgetrJ   r   grid_xr   rowspanr   rv   ziprH   r   anyr&   r7   rO   column_groupssetr   r   r   r6   r   add	enumerater   sortedr   rI   r   r   r   sysmaxsizerM   rL   rh   )?r   r   r   r   r   r   
grid_widthgrid_height
row_number	row_grouprowcellr   gridzipped_gridcolumntotal_horizontal_border_spacingrW   rX   outer_min_widthouter_max_widthr   columnscolumn_numbercolumn_groupcolspan_cellscolspansmin_content_widthsgroupsgrouprows_originsyr   row_originsxr   spanpercentage_contributionspercentage_contributionr   r   constrainednessr<   
percentagemin_contentmax_contentcolumn_slicecolumns_min_contentcolumns_max_contentspacingexcess_widthsmall_percentage_contributions'large_percentage_contribution_numerator)large_percentage_contribution_denominatorlarge_percentage_contributiontable_min_content_widthtable_max_content_widthtable_min_widthtable_max_widthtable_outer_min_content_widthtable_outer_max_content_widthr   r   s?                                                                @@r   r    r      sI
    /!!#E^^&Fe} #JJ^^ 	%% 	C J t||!;ZH
!*t||";[IJ !OJ		 */{);<ATFZ<D<J^^ 	%% 	C 504Z -5!OJ	 sDz"K {{$%3
QKK()!,;F#f+fFGGI 	( +,'Q+*+GU%H	+GU%H	 t#:7E#JL t#:7E#JLb"b"A2Fy262"O=f=*
 	
u e}FZ'Mfz!GM++ 	"++ 	F+7M-(%+GM"QM
*	 	 MuH z)z)C*, : /$g. 	OFq	!u!(+&q)+<We+L)N"1%(+&q)+<We+L)N"1%+.)!,.Fu.M,O%a(	O  N 	/D||q 'GQU'V$	9(+,>q,A9(M"1%(+,>q,A9(M"1%+.)!,.Ft.L,N%a( $$T*T\\A-.	//8 LD/ '32-K. ~ 	'GAtv&	''  " x  9#% z" 	EA*?*BB&B(//0GH$'l$; 	K [)!n,F5!&k&&*d2/J);A)>0@,*-+-I+K'	K %++,CD	E" !9'9, ',J&78u8O8: !!$**73Ez%'8UZZ3=N%)"1:AJ$$W-Ez%'8UZZ3=N%)"N 	D)

7+F?:e+<sAR)-OA&	( ''<=?Az 	Jc"7";<<=?
  '6'6T[[$++*DE!"4\"BC!"4\"BC;;()Z7||a'5;;7G+H+KKGG,w66&*=*GHL#l4F!68J
 ,w66&*=*GHL#l4F!68J)8 z"&% # 	1!6q!9C!?@&%" &% /2 2*',Z'82* /*+ 
s()	)S0 .0A52a7,-) -0KK) 456 	&
 	(#.@*AA  	(#"#%B/-+/- +. 	. 
 KK Ez%0UZZ5E5E5G45O -2KK,@,F,FF/11!o"78 "o"78 %1|C!89%;!$0|C!89%;! 	.0E8+GF ()@J6J,.KUfU& GNN5F %=m = Gn 9&?>&%s$   `!`2`	` %``#c           	         | j                   d   }|dk(  r| j                   d   }|dk(  st        |      s|j                  dk(  rd}n+|j                  j                         dk(  sJ |j                  }| j                   d   dk7  xr7 t        | j                   d          xr | j                   d   j                  dk(  }|rd}n| j
                  }|j                  | j                   d   | j                   d	         \  }}}t        |||d|dd
      \  }}	nbt        | j                   d         s| j                   d   j                  dk(  rd}n+|j                  j                         dk(  sJ |j                  }t        | ||      S )z:Return the min-content width for an ``InlineReplacedBox``.r<   r=   heightr>   rB   rX   r   image_resolutionrY   default_widthdefault_height	rH   r   rI   rM   rL   r\   r]   r   rO   )
r   r   r<   r   unknown_max_widthimageintrinsic_widthintrinsic_heightintrinsic_ratior`   s
             r   r-   r-     s{   IIgE8$Vz&1V[[C5GF;;$$&$...\\FIIk"f, /399[122/IIk"''3. 	 EOOE((II01399[3IK ?O- ,!1?Fa;HE1 
CIIg&	'399W+=+B+Bc+Izz!T)))#ue$$r   c           	      d   | j                   d   }|dk(  r| j                   d   }|dk(  st        |      s|j                  dk(  rd}n+|j                  j                         dk(  sJ |j                  }| j
                  }|j                  | j                   d   | j                   d         \  }}}t        |||d|dd	
      \  }}nbt        | j                   d         s| j                   d   j                  dk(  rd}n+|j                  j                         dk(  sJ |j                  }t        | ||      S )z:Return the max-content width for an ``InlineReplacedBox``.r<   r=   r   r>   rB   r   rY   i,     r   r   r   )	r   r   r<   r   r   r   r   r  r`   s	            r   r9   r9     s&   IIgE8$Vz&1V[[C5GF;;$$&$...\\F$$		,-syy/EG 	;)? (-c3q 
CIIg&	'399W+=+B+Bc+Izz!T)))#ue$$r   c                 @   |j                   D cg c]  }|j                  rt        | |       }}|st        ||d      S |j                  d   j                  d      r(|j                  d   dk(  rt        ||t        |            S t        ||t        |            S c c}w )z9Return the min-content width for an ``FlexContainerBox``.r   flex_directionr   	flex_wrapr   )rJ   is_flex_itemr   rO   rH   
startswithr   r   )r   r   r   rQ   min_contentss        r   r/   r/     s     \\9U%7%7 	'5)9L 9 c5!$$		"#..u5IIk"h.c5#l"344c5#l"3449s   Bc                    |j                   D cg c]  }|j                  rt        | |       }}|st        ||d      S |j                  d   j                  d      rt        ||t        |            S t        ||t        |            S c c}w )z9Return the max-content width for an ``FlexContainerBox``.r   r  r   )rJ   r  r   rO   rH   r  r   r   )r   r   r   rQ   max_contentss        r   r:   r:     s     \\9U%7%7 	'5)9L 9 c5!$$
yy!"--e4c5#l"344c5#l"3449s   B	c                    ddl m}m} d}t        |t        j
                  t        j                  f      rI|j                  sy||j                  d   }}t        |t        j
                  t        j                  f      rIt        |t        j                        r|j                  sy|j                  d   dvry|j                  d   dk(  ry|j                  j                  d	      sy|j                  j                  d	      x}rgd}||} || |d|      \  }}}	|sJ |j                  |      }
 || |
d      \  }
}}	|
|j                  S |J |j                  |
j                  z
  S  ||j                  |j                  | d|j                        \  }	}	}	}}	}	|r4t!        |j                        d
k\  r|t#        | |j                  d         z  }|S )z6Return the size of the trailing whitespace of ``box``.r   )r   split_text_boxNr   ru   r   r   rY    r   )inliner   r  r!   r	   r)   r*   rJ   r   r   rH   endswithrstripcopy_with_textr<   r   r   rw   )r   r   r   r  last_parentstripped_textresume
old_resumeold_boxr`   stripped_boxr<   s               r   rw   rw   %  s   8 K
S5??EMM:
;||R 0S S5??EMM:
; c5==)	=	!)I	I	;	1	$XXs# ,,}, J!/dF!KGVQ   w))-8"0\4#5fa==  >!>==<#5#555  0HHcii$0I0I K1a1 3{3349-g{7K7KB7OPPEr   )T)TT)TNFF)TF)NF))__doc__r   	functoolsr   mathr   cssr   css.functionsr   css.validationr   formatting_structurer	   text.line_breakr
   r   replacedr   r   r   r   rU   rb   rh   rO   r&   r7   r+   r8   r(   r#   r6   rq   r   r    r-   r9   r/   r:   rw   r   r   r   <module>r#     s        & 3 ( > *6 W6W6&%R1>+\0H
 CG=B% +	%$  PT"'p%f1*Rj%D%45 52r   