§
    Ò! hO ã                  óT  — U d Z ddlmZ ddlmZmZmZ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Zdd	lZdd
lmZ ddlmZmZmZmZmZ dd	l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,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z= ddl>m?Z? ddl@mAZA dd	lBmCc mDZE ddlFmGZGmHZHmIZImJZJ ddlKmLZL ddlMmNZN ddlOmPZP ddlQmRZRmSZS ddlTmUZU er$ddlVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb ddlcmdZdmeZe dZfd egd!<   d"Zhd#Zid egd$<    G d%„ d&¦  «        Zjd“d)„Zkd“d*„Zl G d+„ d,¦  «        Zm G d-„ d.¦  «        Zn	 	 d”d•d5„Zoe		 d–d—d7„¦   «         Zp	 	 	 	 	 	 	 	 	 d˜d™dN„Zq G dO„ dP¦  «        Zr G dQ„ dRer¦  «        Zs G dS„ dTer¦  «        Zt G dU„ dVer¦  «        Zu G dW„ dXer¦  «        Zvdšd[„Zwd›d^„Zxdœd�dc„Zy	 	 dždŸde„Zz	 džd di„Z{ G dj„ dkeu¦  «        Z| G dl„ dmer¦  «        Z}	 	 d¡d¢dr„Z~	 	 	 d£d¤dw„Zd¥d¦dy„Z€d§d{„Z�	 d¥d¨d~„Z‚d©d�„Zƒ G d‚„ dƒ¦  «        Z„dªd«dˆ„Z…	 d¬d­d�„Z†d®d’„Z‡d	S )¯z€
Internal module for formatting output data in csv, html, xml,
and latex files. This module also applies to display formatting.
é    )Úannotations)Ú	GeneratorÚHashableÚMappingÚSequence)Úcontextmanager)Ú
QUOTE_NONE)ÚDecimal)Úpartial)ÚStringION)Úget_terminal_size)ÚTYPE_CHECKINGÚAnyÚCallableÚFinalÚcast)Ú
get_optionÚ
set_option)Úlib)ÚNA)ÚNaTÚ	TimedeltaÚ	Timestamp)ÚNaTType)Úis_complex_dtypeÚis_floatÚ
is_integerÚis_list_likeÚis_numeric_dtypeÚ	is_scalar)ÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtype)ÚisnaÚnotna)ÚCategoricalÚDatetimeArrayÚExtensionArrayÚTimedeltaArray)ÚStringDtype)ÚPandasObject)ÚIndexÚ
MultiIndexÚPeriodIndexÚensure_index)ÚDatetimeIndex)ÚTimedeltaIndex)Úconcat)Úcheck_parent_directoryÚstringify_path)Úprinting)Ú	ArrayLikeÚAxesÚColspaceArgTypeÚColspaceTypeÚCompressionOptionsÚFilePathÚFloatFormatTypeÚFormattersTypeÚ
IndexLabelÚSequenceNotStrÚStorageOptionsÚWriteBuffer)Ú	DataFrameÚSeriesaŽ	  
        Parameters
        ----------
        buf : str, Path or StringIO-like, optional, default None
            Buffer to write to. If None, the output is returned as a string.
        columns : array-like, optional, default None
            The subset of columns to write. Writes all columns by default.
        col_space : %(col_space_type)s, optional
            %(col_space)s.
        header : %(header_type)s, optional
            %(header)s.
        index : bool, optional, default True
            Whether to print index (row) labels.
        na_rep : str, optional, default 'NaN'
            String representation of ``NaN`` to use.
        formatters : list, tuple or dict of one-param. functions, optional
            Formatter functions to apply to columns' elements by position or
            name.
            The result of each function must be a unicode string.
            List/tuple must be of length equal to the number of columns.
        float_format : one-parameter function, optional, default None
            Formatter function to apply to columns' elements if they are
            floats. This function must return a unicode string and will be
            applied only to the non-``NaN`` elements, with ``NaN`` being
            handled by ``na_rep``.
        sparsify : bool, optional, default True
            Set to False for a DataFrame with a hierarchical index to print
            every multiindex key at each row.
        index_names : bool, optional, default True
            Prints the names of the indexes.
        justify : str, default None
            How to justify the column labels. If None uses the option from
            the print configuration (controlled by set_option), 'right' out
            of the box. Valid values are

            * left
            * right
            * center
            * justify
            * justify-all
            * start
            * end
            * inherit
            * match-parent
            * initial
            * unset.
        max_rows : int, optional
            Maximum number of rows to display in the console.
        max_cols : int, optional
            Maximum number of columns to display in the console.
        show_dimensions : bool, default False
            Display DataFrame dimensions (number of rows by number of columns).
        decimal : str, default '.'
            Character recognized as decimal separator, e.g. ',' in Europe.
    r   Úcommon_docstring)ÚleftÚrightÚcenterÚjustifyzjustify-allÚstartÚendÚinheritzmatch-parentÚinitialÚunsetz™
        Returns
        -------
        str or None
            If buf is None, returns the result as a string. Otherwise returns
            None.
    Úreturn_docstringc            
      óP   — e Zd ZdZddddddddddœ	dd„Zd d„Zd!d„Zd"d„Zd!d„ZdS )#ÚSeriesFormatterz\
    Implement the main logic of Series.to_string, which underlies
    Series.__repr__.
    TÚNaNFN)	ÚlengthÚheaderÚindexÚna_repÚnameÚfloat_formatÚdtypeÚmax_rowsÚmin_rowsÚseriesrC   rR   ú
bool | strrS   ÚboolrT   rU   ÚstrrV   rW   ú
str | NonerX   rY   ú
int | NonerZ   ÚreturnÚNonec       	        ó2  — || _         t          ¦   «         | _        || _        || _        || _        || _        || _        |	| _        |
| _	        |€t          d¦  «        }|| _        || _        t          j        ¦   «         | _        |                      ¦   «          d S )Núdisplay.float_format)r[   r   ÚbufrV   rU   rS   rR   rT   rY   rZ   r   rW   rX   r5   Úget_adjustmentÚadjÚ_chk_truncate)Úselfr[   rR   rS   rT   rU   rV   rW   rX   rY   rZ   s              úRc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/io/formats/format.pyÚ__init__zSeriesFormatter.__init__Ã   s’   € ð ˆŒÝ‘:”:ˆŒØˆŒ	ØˆŒØˆŒØˆŒØˆŒ
Ø ˆŒØ ˆŒàÐÝ%Ð&<Ñ=Ô=ˆLØ(ˆÔØˆŒ
ÝÔ*Ñ,Ô,ˆŒà×ÒÑÔÐÐÐó    c                ó†  — |  | j         }| j        }|ot          | j        ¦  «        |k    }| j        }|rxt	          t
          |¦  «        }|rt          ||¦  «        }|dk    r|}|j        d |…         }n1|dz  }t          |j        d |…         |j        | d …         f¦  «        }|| _	        nd | _	        || _
        || _        d S )Né   é   )rZ   rY   Úlenr[   r   ÚintÚminÚilocr2   Ú
tr_row_numÚ	tr_seriesÚis_truncated_vertically)ri   rZ   rY   rv   r[   Úrow_nums         rj   rh   zSeriesFormatter._chk_truncateã   sá   € ØÐ#à”=ˆØ”=ˆð #+Ð"Lµ°D´KÑ0@Ô0@À8Ò0KÐØ”ˆØ"ð 	#Ý�C Ñ*Ô*ˆHØð 3õ ˜x¨Ñ2Ô2�Ø˜1Š}ˆ}Ø"�Øœ Y h YÔ/��à" a™-�Ý ¤¨X¨g¨XÔ!6¸¼ÀWÀHÀIÀIÔ8NÐ OÑPÔP�Ø%ˆDŒOˆOà"ˆDŒOØˆŒØ'>ˆÔ$Ð$Ð$rl   c                óÆ  — | j         j        }d}| j         j        }t          |t          t
          t          f¦  «        r|j        �|d|j        › �z  }| j        dur'|�%|r|dz  }t          j
        |d¬¦  «        }|d|› �z  }| j        du s| j        d	k    r(| j        r!|r|dz  }|d
t          | j         ¦  «        › �z  }| j        durE| j        �>t          | j        j        dd ¦  «        }|r!|r|dz  }|dt          j
        |¦  «        › �z  }t          | j        j        t"          ¦  «        r*| j        j                             ¦   «         }|r|dz  }||z  }t)          |¦  «        S )NÚ zFreq: Fz, ©ú	úú
)Úescape_charszName: TÚtruncatezLength: rV   zdtype: r}   )r[   rV   rT   Ú
isinstancer0   r.   r1   ÚfreqÚfreqstrr5   Úpprint_thingrR   rv   rp   rX   Úgetattrru   r!   Ú_valuesÚ_get_repr_footerr^   )ri   rV   ÚfooterrT   Úseries_nameÚ
dtype_nameÚ
level_infos          rj   Ú_get_footerzSeriesFormatter._get_footerþ   s¦  € ØŒ{ÔˆØˆà”Ô!ˆå�u�}­k½>ÐJÑKÔKð	/à”
Ð&àÐ.˜uœ}Ð.Ð.Ñ.ˆFàŒ9˜EÐ!Ð! dÐ&6Øð Ø˜$‘�å"Ô/°ÐCUÐVÑVÔVˆKØÐ,˜{Ð,Ð,Ñ,ˆFàŒ;˜$ÐÐØŒK˜:Ò%Ð%¨$Ô*FÐ%àð Ø˜$‘�ØÐ3¥ T¤[Ñ!1Ô!1Ð3Ð3Ñ3ˆFàŒ:˜UÐ"Ð" t¤zÐ'=Ý  ¤Ô!5°v¸tÑDÔDˆJØð HØð #Ø˜d‘N�FØÐG¥HÔ$9¸*Ñ$EÔ$EÐGÐGÑG�õ �d”nÔ*Õ,<Ñ=Ô=ð 	!ØœÔ/×@Ò@ÑBÔBˆJØð Ø˜$‘�Ø�jÑ ˆFå�6‰{Œ{Ðrl   ú	list[str]c                ó\   — t          | j        j        d | j        | j        | j        ¬¦  «        S )N)rW   rU   Úleading_space)Úformat_arrayru   r…   rW   rU   rT   ©ri   s    rj   Ú_get_formatted_valuesz%SeriesFormatter._get_formatted_values(  s4   € ÝØŒNÔ"ØØÔ*Ø”;Øœ*ð
ñ 
ô 
ð 	
rl   c                ó6  — | j         }|                      ¦   «         }t          |¦  «        dk    rt          | j        ¦  «        j        › d|› d�S |j        }t          |¦  «        }t          |t          ¦  «        rL| 
                    dd ¬¦  «        }t          j        ¦   «         } |j        dg|¢R Ž                      d¦  «        }n|                     d¬¦  «        }|                      ¦   «         }| j        r¢d}| j        }	t'          t(          |	¦  «        }	| j                             ||	d	z
           ¦  «        }
|
d
k    rd}nd}| j                             |g|
d¬¦  «        d         }|                     |	|z   |¦  «         |                     |	d	z   d¦  «         | j        r | j        j        d
g|d	d …         |g¢R Ž }n| j                             d
|¦  «        }| j        r|r|d         dz   |z   }|r|d|z   z  }t3          d                     |¦  «        ¦  «        S )Nr   z([], ú)T)Úinclude_namesÚsparsifyro   r}   ©Úinclude_namern   é   ú...z..rG   ©Úmodery   )ru   r‹   rp   Útyper[   Ú__name__rT   Ú
_has_namesr€   r-   Ú_format_multir5   rf   ÚadjoinÚsplitÚ_format_flatr‘   rv   rt   r   rq   rg   rH   ÚinsertrS   r^   Újoin)ri   r[   r‡   rT   Úhave_headerÚ	fmt_indexrg   Ú
fmt_valuesÚn_header_rowsrw   ÚwidthÚdot_strÚresults                rj   Ú	to_stringzSeriesFormatter.to_string1  s7  € Ø”ˆØ×!Ò!Ñ#Ô#ˆåˆv‰;Œ;˜!ÒÐÝ˜4œ;Ñ'Ô'Ô0Ð@Ð@°vÐ@Ð@Ð@Ð@à”ˆÝ  Ñ'Ô'ˆÝ�e�ZÑ(Ô(ð 	>Ø×+Ò+¸$ÈÐ+ÑNÔNˆIÝÔ)Ñ+Ô+ˆCØ"˜œ
 1Ð1 yÐ1Ð1Ð1×7Ò7¸Ñ=Ô=ˆIˆIà×*Ò*¸Ð*Ñ=Ô=ˆIØ×/Ò/Ñ1Ô1ˆ
àÔ'ð 	.ØˆMØ”oˆGÝ�3 Ñ(Ô(ˆGØ”H—L’L ¨G°a©KÔ!8Ñ9Ô9ˆEØ�qŠyˆyØ��à�ð ”h×&Ò&¨ y°%¸hÐ&ÑGÔGÈÔJˆGØ×Ò˜g¨Ñ5°wÑ?Ô?Ð?Ø×Ò˜W q™[¨"Ñ-Ô-Ð-àŒ:ð 	4Ø$�T”X”_ QÐE¨)°A°B°B¬-¸Ð)DÐEÐEÐEˆFˆFà”X—_’_ Q¨
Ñ3Ô3ˆFàŒ;ð 	2˜;ð 	2Ø˜q”\ DÑ(¨6Ñ1ˆFàð 	$Ø�d˜V‘mÑ#ˆFå�2—7’7˜6‘?”?Ñ#Ô#Ð#rl   )r[   rC   rR   r\   rS   r]   rT   r]   rU   r^   rV   r]   rW   r_   rX   r]   rY   r`   rZ   r`   ra   rb   ©ra   rb   ©ra   r^   ©ra   rŒ   )	r�   Ú
__module__Ú__qualname__Ú__doc__rk   rh   r‹   r‘   r¬   © rl   rj   rP   rP   ½   s«   € € € € € ðð ð "ØØØØØ#'ØØ#Ø#ðð ð ð ð ð ð@?ð ?ð ?ð ?ð6(ð (ð (ð (ðT
ð 
ð 
ð 
ð+$ð +$ð +$ð +$ð +$ð +$rl   rP   ra   údict[str, Any]c                 óô   — ddl m}  t          d¦  «        r|                      ¦   «         \  }}nd}t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d	¦  «        |d
œS )aõ  Get the parameters used to repr(dataFrame) calls using DataFrame.to_string.

    Supplying these parameters to DataFrame.to_string is equivalent to calling
    ``repr(DataFrame)``. This is useful if you want to adjust the repr output.

    .. versionadded:: 1.4.0

    Example
    -------
    >>> import pandas as pd
    >>>
    >>> df = pd.DataFrame([[1, 2], [3, 4]])
    >>> repr_params = pd.io.formats.format.get_dataframe_repr_params()
    >>> repr(df) == df.to_string(**repr_params)
    True
    r   )Úconsolezdisplay.expand_frame_reprNúdisplay.max_rowsúdisplay.min_rowszdisplay.max_columnsúdisplay.max_colwidthúdisplay.show_dimensions)rY   rZ   Úmax_colsÚmax_colwidthÚshow_dimensionsÚ
line_width)Úpandas.io.formatsr¶   r   Úget_console_size)r¶   r¾   Ú_s      rj   Úget_dataframe_repr_paramsrÂ   _  s‘   € ð" *Ð)Ð)Ð)Ð)Ð)åÐ-Ñ.Ô.ð Ø×0Ò0Ñ2Ô2‰ˆ
�A�Aàˆ
åÐ1Ñ2Ô2ÝÐ1Ñ2Ô2ÝÐ4Ñ5Ô5Ý"Ð#9Ñ:Ô:Ý%Ð&?Ñ@Ô@Ø ðð ð rl   c                 ó®   — t          ¦   «         \  } }t          d¦  «        }|dk    r|n|}|dk    r|nt          d¦  «        }dd||t          d¦  «        dœS )aé  Get the parameters used to repr(Series) calls using Series.to_string.

    Supplying these parameters to Series.to_string is equivalent to calling
    ``repr(series)``. This is useful if you want to adjust the series repr output.

    .. versionadded:: 1.4.0

    Example
    -------
    >>> import pandas as pd
    >>>
    >>> ser = pd.Series([1, 2, 3, 4])
    >>> repr_params = pd.io.formats.format.get_series_repr_params()
    >>> repr(ser) == ser.to_string(**repr_params)
    True
    r·   r   r¸   Trº   )rV   rX   rZ   rY   rR   )r   r   )r©   ÚheightÚmax_rows_optrY   rZ   s        rj   Úget_series_repr_paramsrÆ   €  sy   € õ" &Ñ'Ô'�M€Eˆ6ÝÐ0Ñ1Ô1€LØ%¨Ò*Ð*ˆvˆv°€HØ%¨Ò*Ð*ˆvˆvµ
Ð;MÑ0NÔ0N€Hð ØØØÝÐ6Ñ7Ô7ðð ð rl   c                  óú  — e Zd ZdZerendZeeez   z  Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dSdTd(„ZdUd*„ZedVd+„¦   «         Z	edVd,„¦   «         Z
edVd-„¦   «         ZedVd.„¦   «         ZedWd/„¦   «         ZedVd0„¦   «         ZedVd1„¦   «         ZedVd2„¦   «         ZedVd3„¦   «         ZedXd5„¦   «         ZdYd6„ZdZd8„Zd[d9„Zd\d;„Zd]d=„Zd^d>„Zd^d?„Zd_d@„ZdVdA„ZdVdB„ZdVdC„ZdXdD„Zd`dE„Zd`dF„Z d`dG„Z!dUdH„Z"dadK„Z#dbdN„Z$dcdO„Z%dddP„Z&dedR„Z'dS )fÚDataFrameFormatterz‡
    Class for processing dataframe formatting options and data.

    Used by DataFrame.to_string, which backs DataFrame.__repr__.
    ry   NTrQ   Fú.ÚframerB   ÚcolumnsúAxes | NoneÚ	col_spaceúColspaceArgType | NonerS   úbool | SequenceNotStr[str]rT   r]   rU   r^   Ú
formattersúFormattersType | NonerH   r_   rW   úFloatFormatType | Noner•   úbool | NoneÚindex_namesrY   r`   rZ   r»   r½   r\   ÚdecimalÚ	bold_rowsÚescapera   rb   c                ó”  — || _         |                      |¦  «        | _        |                      |¦  «        | _        || _        || _        || _        |                      |¦  «        | _	        |  
                    |¦  «        | _        |	| _        |                      |
¦  «        | _        || _        || _        || _        || _        || _        || _        || _        || _        |                      ¦   «         | _        |                      ¦   «         | _        | j         | _        |                      ¦   «          t;          j        ¦   «         | _        d S ©N) rÊ   Ú_initialize_columnsrË   Ú_initialize_colspacerÍ   rS   rT   rU   Ú_initialize_formattersrÐ   Ú_initialize_justifyrH   rW   Ú_initialize_sparsifyr•   Úshow_index_namesrÕ   rÖ   r×   rY   rZ   r»   r½   Ú_calc_max_cols_fittedÚmax_cols_fittedÚ_calc_max_rows_fittedÚmax_rows_fittedÚtr_framer   r5   rf   rg   )ri   rÊ   rË   rÍ   rS   rT   rU   rÐ   rH   rW   r•   rÔ   rY   rZ   r»   r½   rÕ   rÖ   r×   s                      rj   rk   zDataFrameFormatter.__init__©  s  € ð* ˆŒ
Ø×/Ò/°Ñ8Ô8ˆŒØ×2Ò2°9Ñ=Ô=ˆŒØˆŒØˆŒ
ØˆŒØ×5Ò5°jÑAÔAˆŒØ×/Ò/°Ñ8Ô8ˆŒØ(ˆÔØ×1Ò1°(Ñ;Ô;ˆŒØ +ˆÔØˆŒØ"ˆŒØˆŒØ ˆŒØ ˆŒØ ˆŒØ.ˆÔà#×9Ò9Ñ;Ô;ˆÔØ#×9Ò9Ñ;Ô;ˆÔàœ
ˆŒØ�Š‰ŒˆÝÔ*Ñ,Ô,ˆŒˆˆrl   úlist[list[str]]c                óœ   — |                       ¦   «         }| j        r0|                      | j        ¦  «        }|                     d|¦  «         |S )zP
        Render a DataFrame to a list of columns (as lists of strings).
        r   )Ú_get_strcols_without_indexrT   Ú_get_formatted_indexrä   r£   )ri   ÚstrcolsÚ	str_indexs      rj   Úget_strcolszDataFrameFormatter.get_strcolsØ  sM   € ð ×1Ò1Ñ3Ô3ˆàŒ:ð 	)Ø×1Ò1°$´-Ñ@Ô@ˆIØ�NŠN˜1˜iÑ(Ô(Ð(àˆrl   c                ó8   — | j         du p| j         dk    o| j        S )NTr   )r½   Úis_truncatedr�   s    rj   Úshould_show_dimensionsz)DataFrameFormatter.should_show_dimensionsä  s*   € àÔ# tÐ+ð 
ØÔ  JÒ.ÐD°4Ô3Dð	
rl   c                ó8   — t          | j        p| j        ¦  «        S rÙ   )r]   Úis_truncated_horizontallyrv   r�   s    rj   rí   zDataFrameFormatter.is_truncatedê  s   € å�DÔ2ÐR°dÔ6RÑSÔSÐSrl   c                ód   — t          | j        ot          | j        ¦  «        | j        k    ¦  «        S rÙ   )r]   rá   rp   rË   r�   s    rj   rð   z,DataFrameFormatter.is_truncated_horizontallyî  s*   € å�DÔ(ÐW­c°$´,Ñ.?Ô.?À$ÔBVÒ.VÑXÔXÐXrl   c                ód   — t          | j        ot          | j        ¦  «        | j        k    ¦  «        S rÙ   )r]   rã   rp   rÊ   r�   s    rj   rv   z*DataFrameFormatter.is_truncated_verticallyò  s(   € å�DÔ(ÐU­c°$´*©o¬oÀÔ@TÒ.TÑVÔVÐVrl   c                óf   — dt          | j        ¦  «        › dt          | j        j        ¦  «        › d�S )Nz

[z rows x z	 columns])rp   rÊ   rË   r�   s    rj   Údimensions_infoz"DataFrameFormatter.dimensions_infoö  s0   € àR•s˜4œ:‘”ÐRÐRµ°D´JÔ4FÑ0GÔ0GÐRÐRÐRÐRrl   c                ó4   — t          | j        j        ¦  «        S rÙ   )rž   rÊ   rT   r�   s    rj   Úhas_index_namesz"DataFrameFormatter.has_index_namesú  s   € å˜$œ*Ô*Ñ+Ô+Ð+rl   c                ó4   — t          | j        j        ¦  «        S rÙ   )rž   rÊ   rË   r�   s    rj   Úhas_column_namesz#DataFrameFormatter.has_column_namesþ  s   € å˜$œ*Ô,Ñ-Ô-Ð-rl   c                óD   — t          | j        | j        | j        f¦  «        S rÙ   )Úallrö   rT   rß   r�   s    rj   Úshow_row_idx_namesz%DataFrameFormatter.show_row_idx_names  s   € å�DÔ(¨$¬*°dÔ6KÐLÑMÔMÐMrl   c                óD   — t          | j        | j        | j        f¦  «        S rÙ   )rú   rø   rß   rS   r�   s    rj   Úshow_col_idx_namesz%DataFrameFormatter.show_col_idx_names  s   € å�DÔ)¨4Ô+@À$Ä+ÐNÑOÔOÐOrl   rq   c                óx   — t          | j        pt          | j        ¦  «        t          | j        ¦  «        ¦  «        S rÙ   )rr   rY   rp   rÊ   r�   s    rj   Úmax_rows_displayedz%DataFrameFormatter.max_rows_displayed
  s)   € å�4”=Ð3¥C¨¬
¡O¤OµS¸¼±_´_ÑEÔEÐErl   c                ó(   — |€t          d¦  «        S |S )Nzdisplay.multi_sparse©r   )ri   r•   s     rj   rÞ   z'DataFrameFormatter._initialize_sparsify  s   € ØÐÝÐ4Ñ5Ô5Ð5Øˆrl   r=   c                ó   — |€i S t          | j        j        ¦  «        t          |¦  «        k    st          |t          ¦  «        r|S t          dt          |¦  «        › dt          | j        j        ¦  «        › d�¦  «        ‚)NzFormatters length(ú+) should match DataFrame number of columns(r“   )rp   rÊ   rË   r€   ÚdictÚ
ValueError)ri   rÐ   s     rj   rÜ   z)DataFrameFormatter._initialize_formatters  s‘   € ð ÐØˆIÝ�”Ô#Ñ$Ô$­¨J©¬Ò7Ð7½:ÀjÕRVÑ;WÔ;WÐ7ØÐåðJ¥S¨¡_¤_ð Jð JÝ/2°4´:Ô3EÑ/FÔ/FðJð Jð Jñô ð rl   c                ó(   — |€t          d¦  «        S |S )Nzdisplay.colheader_justifyr  )ri   rH   s     rj   rÝ   z&DataFrameFormatter._initialize_justify   s   € Øˆ?ÝÐ9Ñ:Ô:Ð:àˆNrl   r,   c                ód   — |�#t          |¦  «        }| j        |         | _        |S | j        j        S rÙ   )r/   rÊ   rË   )ri   rË   Úcolss      rj   rÚ   z&DataFrameFormatter._initialize_columns&  s3   € ØÐÝ Ñ(Ô(ˆDØœ DÔ)ˆDŒJØˆKà”:Ô%Ð%rl   r9   c                ól  ‡— ‰€i }�n,t          ‰t          t          f¦  «        r0d‰i}|                     ˆfd„| j        j        D ¦   «         ¦  «         nàt          ‰t          ¦  «        r@‰                     ¦   «         D ](}|| j        j        vr|dk    rt          d|› �¦  «        ‚Œ)‰}n‹t          | j        j        ¦  «        t          ‰¦  «        k    r:t          dt          ‰¦  «        › dt          | j        j        ¦  «        › d�¦  «        ‚t          t          | j        j        ‰¦  «        ¦  «        }|S )Nry   c                ó   •— i | ]}|‰“ŒS r³   r³   )Ú.0ÚcolumnrÍ   s     €rj   ú
<dictcomp>z;DataFrameFormatter._initialize_colspace.<locals>.<dictcomp>5  s   ø€ ÐNÐNÐN°˜6 9ÐNÐNÐNrl   z,Col_space is defined for an unknown column: zCol_space length(r  r“   )r€   rq   r^   ÚupdaterÊ   rË   r   Úkeysr  rp   r  Úzip)ri   rÍ   r«   r  s    `  rj   rÛ   z'DataFrameFormatter._initialize_colspace.  sY  ø€ ð ÐØˆF‰FÝ˜	¥C­ :Ñ.Ô.ð 	>Ø˜)�_ˆFØ�MŠMÐNÐNÐNÐN¸4¼:Ô;MÐNÑNÔNÑOÔOÐOÐOÝ˜	¥7Ñ+Ô+ð 	>Ø#Ÿ.š.Ñ*Ô*ð ð �Ø ¤Ô!3Ð3Ð3¸À"º¸Ý$ØOÀvÐOÐOñô ð øð ˆFˆFå�4”:Ô%Ñ&Ô&­#¨i©.¬.Ò8Ð8Ý ðN­¨I©¬ð Nð NÝ36°t´zÔ7IÑ3JÔ3JðNð Nð Nñô ð õ �#˜dœjÔ0°)Ñ<Ô<Ñ=Ô=ˆFØˆrl   c                ó–   — |                       ¦   «         s| j        S t          ¦   «         \  }}|                      |¦  «        r|S | j        S )z%Number of columns fitting the screen.)Ú_is_in_terminalr»   r   Ú_is_screen_narrow)ri   r©   rÁ   s      rj   rà   z(DataFrameFormatter._calc_max_cols_fittedF  sP   € à×#Ò#Ñ%Ô%ð 	!Ø”=Ð å$Ñ&Ô&‰ˆˆqØ×!Ò! %Ñ(Ô(ð 	!ØˆLà”=Ð rl   c                ó  — |                       ¦   «         rSt          ¦   «         \  }}| j        dk    r||                      ¦   «         z
  S |                      |¦  «        r|}n| j        }n| j        }|                      |¦  «        S )z,Number of rows with data fitting the screen.r   )r  r   rY   Ú_get_number_of_auxiliary_rowsÚ_is_screen_shortÚ_adjust_max_rows)ri   rÁ   rÄ   rY   s       rj   râ   z(DataFrameFormatter._calc_max_rows_fittedQ  sŒ   € ð ×ÒÑ!Ô!ð 	%Ý)Ñ+Ô+‰IˆAˆvØŒ} Ò!Ð!à × BÒ BÑ DÔ DÑDÐDà×$Ò$ VÑ,Ô,ð )Ø!��àœ=��à”}ˆHà×$Ò$ XÑ.Ô.Ð.rl   c                ór   — |r4t          | j        ¦  «        |k    r| j        rt          | j        |¦  «        }|S )zºAdjust max_rows using display logic.

        See description here:
        https://pandas.pydata.org/docs/dev/user_guide/options.html#frequently-used-options

        GH #37359
        )rp   rÊ   rZ   rr   )ri   rY   s     rj   r  z#DataFrameFormatter._adjust_max_rowsd  s<   € ð ð 	8Ý�D”J‘” (Ò*Ð*°´Ð*å˜tœ}¨hÑ7Ô7�Øˆrl   c                óH   — t          | j        dk    p
| j        dk    ¦  «        S )z/Check if the output is to be shown in terminal.r   )r]   r»   rY   r�   s    rj   r  z"DataFrameFormatter._is_in_terminalr  s#   € å�D”M QÒ&Ð<¨$¬-¸1Ò*<Ñ=Ô=Ð=rl   c                ól   — t          | j        dk    ot          | j        j        ¦  «        |k    ¦  «        S ©Nr   )r]   r»   rp   rÊ   rË   )ri   Ú	max_widths     rj   r  z$DataFrameFormatter._is_screen_narrowv  s.   € Ý�D”M QÒ&ÐN­3¨t¬zÔ/AÑ+BÔ+BÀYÒ+NÑOÔOÐOrl   c                ób   — t          | j        dk    ot          | j        ¦  «        |k    ¦  «        S r  )r]   rY   rp   rÊ   )ri   Ú
max_heights     rj   r  z#DataFrameFormatter._is_screen_shorty  s)   € Ý�D”M QÒ&ÐG­3¨t¬z©?¬?¸ZÒ+GÑHÔHÐHrl   c                ó�   — d}d}||z   }| j         r)|t          | j                             ¦   «         ¦  «        z  }| j        r|dz  }|S )z?Get number of rows occupied by prompt, dots and dimension info.rn   )r½   rp   rô   Ú
splitlinesrS   )ri   Údot_rowÚ
prompt_rowÚnum_rowss       rj   r  z0DataFrameFormatter._get_number_of_auxiliary_rows|  sZ   € àˆØˆ
Ø˜ZÑ'ˆàÔð 	?Ø�˜DÔ0×;Ò;Ñ=Ô=Ñ>Ô>Ñ>ˆHàŒ;ð 	Ø˜‰MˆHàˆrl   c                óv   — | j         r|                      ¦   «          | j        r|                      ¦   «          dS dS )zY
        Check whether the frame should be truncated. If so, slice the frame up.
        N)rð   Ú_truncate_horizontallyrv   Ú_truncate_verticallyr�   s    rj   r   zDataFrameFormatter.truncateŠ  sN   € ð Ô)ð 	*Ø×'Ò'Ñ)Ô)Ð)àÔ'ð 	(Ø×%Ò%Ñ'Ô'Ð'Ð'Ð'ð	(ð 	(rl   c                óÖ  — | j         €J ‚| j         dz  }|dk    r‘| j        j        dd…d|…f         }| j        j        dd…| d…f         }t          ||fd¬¦  «        | _        t	          | j        t          t          f¦  «        r&g | j        d|…         ¢| j        | d…         ¢| _        n7t          t          | j
        ¦  «        }| j        j        dd…d|…f         | _        || _        dS )z´Remove columns, which are not to be displayed and adjust formatters.

        Attributes affected:
            - tr_frame
            - formatters
            - tr_col_num
        Nro   rn   ©Úaxis)rá   rä   rs   r2   r€   rÐ   ÚlistÚtupler   rq   r»   Ú
tr_col_num)ri   Úcol_numrE   rF   s       rj   r%  z)DataFrameFormatter._truncate_horizontally”  s   € ð Ô#Ð/Ð/Ð/ØÔ&¨!Ñ+ˆØ�aŠ<ˆ<Ø”=Ô% a a a¨¨'¨ kÔ2ˆDØ”MÔ& q q q¨7¨(¨)¨) |Ô4ˆEÝ" D¨% =°qÐ9Ñ9Ô9ˆDŒMõ ˜$œ/­Dµ%¨=Ñ9Ô9ð ð#Ø”_ X g XÔ.ð#à”_ g X Y YÔ/ð#�”øõ
 �3 ¤Ñ.Ô.ˆGØ œMÔ.¨q¨q¨q°(°7°(¨{Ô;ˆDŒMØ!ˆŒˆˆrl   c                óˆ  — | j         €J ‚| j         dz  }|dk    rjt          | j        ¦  «        }t          j        t          j        |¦  «        t          j        ||z
  |¦  «        g¦  «        }| j        j        |         | _        n7t          t          | j	        ¦  «        }| j        j        d|…dd…f         | _        || _
        dS )z‚Remove rows, which are not to be displayed.

        Attributes affected:
            - tr_frame
            - tr_row_num
        Nro   rn   )rã   rp   rä   ÚnpÚhstackÚarangers   r   rq   rY   rt   )ri   rw   Ú_lenÚ_slices       rj   r&  z'DataFrameFormatter._truncate_vertically®  s²   € ð Ô#Ð/Ð/Ð/ØÔ&¨!Ñ+ˆØ�aŠ<ˆ<Ý�t”}Ñ%Ô%ˆDÝ”Y¥¤	¨'Ñ 2Ô 2µB´I¸dÀW¹nÈdÑ4SÔ4SÐTÑUÔUˆFØ œMÔ.¨vÔ6ˆDŒMˆMå�3 ¤Ñ.Ô.ˆGØ œMÔ.¨x°¨x¸¸¸¨{Ô;ˆDŒMØ!ˆŒˆˆrl   c                ó   ‡ — g }t          ‰ j        ¦  «        s�‰ j        s‰t          ‰ j        ¦  «        D ]r\  }}‰                      |¦  «        }t          |‰ j        t          ‰ j         	                    |d¦  «        ¦  «        ‰ j
        ¬¦  «        }|                     |¦  «         Œs|S t          ‰ j        ¦  «        r t          t          t                   ‰ j        ¦  «        ‰ _        t          ‰ j        ¦  «        t          ‰ j        ¦  «        k    r:t#          dt          ‰ j        ¦  «        › dt          ‰ j        ¦  «        › d�¦  «        ‚d„ ‰ j        D ¦   «         }n‰                      ‰ j        ¦  «        }‰ j        r|D ]}|                     d¦  «         Œt          ‰ j        ¦  «        D ]Ò\  }}||         }t)          t          ‰ j         	                    |d¦  «        ¦  «        gˆ fd„|D ¦   «         ¢R Ž }‰                      |¦  «        }t          |‰ j        |‰ j
        ¬	¦  «        }t)          g ˆ fd
„|D ¦   «         ¢|‘R Ž }	‰ j
                             ||	‰ j        ¬¦  «        }|                     ||z   ¦  «         ŒÓ|S )Nr   )ÚstringsrH   Úminimumrg   zWriting z cols but got z aliasesc                ó   — g | ]}|g‘ŒS r³   r³   )r  Úlabels     rj   ú
<listcomp>zADataFrameFormatter._get_strcols_without_index.<locals>.<listcomp>×  s   € Ð<Ð<Ð< u˜E˜7Ð<Ð<Ð<rl   ry   c              3  óL   •K  — | ]}‰j                              |¦  «        V — Œd S rÙ   ©rg   rp   ©r  Úxri   s     €rj   ú	<genexpr>z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>â  s/   øè è € Ð0RÐ0RÀQ°´·²¸a±´Ð0RÐ0RÐ0RÐ0RÐ0RÐ0Rrl   )r6  rg   c              3  óL   •K  — | ]}‰j                              |¦  «        V — Œd S rÙ   r;  r<  s     €rj   r>  z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>é  s/   øè è € Ð@Ð@°˜DœHŸLšL¨™OœOÐ@Ð@Ð@Ð@Ð@Ð@rl   rš   )r   rS   Ú	enumeraterä   Ú
format_colÚ_make_fixed_widthrH   rq   rÍ   Úgetrg   Úappendr   r*  r^   rp   rË   r  Ú_get_formatted_column_labelsrû   Úmax)
ri   ré   ÚiÚcr§   Ústr_columnsr=  ÚcheaderÚheader_colwidthÚmax_lens
   `         rj   rç   z-DataFrameFormatter._get_strcols_without_indexÀ  s©  ø€ Ø#%ˆå˜DœKÑ(Ô(ð 
	°´ð 
	Ý! $¤-Ñ0Ô0ð +ð +‘��1Ø!Ÿ_š_¨QÑ/Ô/�
Ý.Ø&Ø œLÝ ¤× 2Ò 2°1°aÑ 8Ô 8Ñ9Ô9Øœð	ñ ô �
ð —’˜zÑ*Ô*Ð*Ð*ØˆNå˜œÑ$Ô$ð 
	Kå�t¥Cœy¨$¬+Ñ6Ô6ˆDŒKÝ�4”;ÑÔ¥3 t¤|Ñ#4Ô#4Ò4Ð4Ý ð:�s 4¤<Ñ0Ô0ð :ð :Ý" 4¤;Ñ/Ô/ð:ð :ð :ñô ð ð =Ð<°´Ð<Ñ<Ô<ˆKˆKà×;Ò;¸D¼MÑJÔJˆKàÔ"ð 	Ø ð ð �Ø—’˜‘”��å˜dœmÑ,Ô,ð 	1ð 	1‰DˆAˆqØ! !”nˆGÝ!Ý�D”N×&Ò& q¨!Ñ,Ô,Ñ-Ô-ðØ0RÐ0RÐ0RÐ0RÈ'Ð0RÑ0RÔ0Rðð ð ˆOð Ÿš¨Ñ+Ô+ˆJÝ*Ø˜DœL°/ÀtÄxðñ ô ˆJõ ÐRÐ@Ð@Ð@Ð@°ZÐ@Ñ@Ô@ÐRÀ/ÐRÐRÐRˆGØ”h×&Ò& w°¸d¼lÐ&ÑKÔKˆGØ�NŠN˜7 ZÑ/Ñ0Ô0Ð0Ð0àˆrl   rG  rŒ   c           
     óü   — | j         }|                      |¦  «        }t          |j        d d …|f         j        || j        | j        | j                             |j	        |         ¦  «        | j
        | j        ¬¦  «        S )N)rW   rU   ÚspacerÕ   rŽ   )rä   Ú_get_formatterr�   rs   r…   rW   rU   rÍ   rC  rË   rÕ   rT   )ri   rG  rÊ   Ú	formatters       rj   rA  zDataFrameFormatter.format_colï  sz   € Ø”ˆØ×'Ò'¨Ñ*Ô*ˆ	ÝØŒJ�q�q�q˜!�tÔÔ$ØØÔ*Ø”;Ø”.×$Ò$ U¤]°1Ô%5Ñ6Ô6Ø”LØœ*ð
ñ 
ô 
ð 	
rl   ú	str | intúCallable | Nonec                ó*  — t          | j        t          t          f¦  «        r3t	          |¦  «        r"t          t          |¦  «        }| j        |         S d S t	          |¦  «        r|| j        vr| j        |         }| j                             |d ¦  «        S rÙ   )	r€   rÐ   r*  r+  r   r   rq   rË   rC  )ri   rG  s     rj   rO  z!DataFrameFormatter._get_formatterü  s„   € Ý�d”o­­e }Ñ5Ô5ð 		0Ý˜!‰}Œ}ð Ý�˜a‘L”L�Ø” qÔ)Ð)à�tå˜!‰}Œ}ð $ ¨$¬,Ð!6Ð!6Ø”L ”O�Ø”?×&Ò& q¨$Ñ/Ô/Ð/rl   c           	     ó  ‡ ‡‡	‡
— ddl m} |j        }t          |t          ¦  «        rê|                     dd¬¦  «        }t          t          |Ž ¦  «        }‰ j        j	        j
        }t          d„ |j        D ¦   «         ¦  «        Š	t          t          |t          t          |¦  «        ¦  «        ¦  «        Šˆˆ	ˆ fd„Š
t          t          ˆ
fd„|D ¦   «         Ž ¦  «        }‰ j        rt#          |¦  «        r ||¦  «        }d„ t          |Ž D ¦   «         }nn|                     d¬	¦  «        }‰ j        j	        }t          t          |t          t          |¦  «        ¦  «        ¦  «        Šˆˆ fd
„t'          |¦  «        D ¦   «         }|S )Nr   )Úsparsify_labelsF)r•   r”   c              3  ó$   K  — | ]}|j         V — Œd S rÙ   )Úis_floating)r  Úlevels     rj   r>  zBDataFrameFormatter._get_formatted_column_labels.<locals>.<genexpr>  s%   è è € Ð%TÐ%T¸E eÔ&7Ð%TÐ%TÐ%TÐ%TÐ%TÐ%Trl   c                ó8   •— |‰j         vr‰|          r‰sd|z   S |S )Nú )rÐ   )r=  ÚyÚneed_leadspÚrestrict_formattingri   s     €€€rj   Úspace_formatzEDataFrameFormatter._get_formatted_column_labels.<locals>.space_format  s4   ø€ à˜Tœ_Ð,Ð,Ø# Aœð -à/ð -ð  ™7�NØ�rl   c              3  ó8   •‡K  — | ]Šˆˆfd „‰D ¦   «         V — ŒdS )c                ó(   •— g | ]} ‰‰|¦  «        ‘ŒS r³   r³   )r  r[  r^  r=  s     €€rj   r9  zMDataFrameFormatter._get_formatted_column_labels.<locals>.<genexpr>.<listcomp>   s%   ø€ Ð5Ð5Ð5¨a�|�| A qÑ)Ô)Ð5Ð5Ð5rl   Nr³   )r  r=  r^  s    @€rj   r>  zBDataFrameFormatter._get_formatted_column_labels.<locals>.<genexpr>   s<   øøè è € ÐKÐK¸!Ð5Ð5Ð5Ð5Ð5°1Ð5Ñ5Ô5ÐKÐKÐKÐKÐKÐKrl   c                ó,   — g | ]}t          |¦  «        ‘ŒS r³   )r*  ©r  r=  s     rj   r9  zCDataFrameFormatter._get_formatted_column_labels.<locals>.<listcomp>%  s   € ÐDÐDÐD q�4 ™7œ7ÐDÐDÐDrl   r–   c                ó`   •— g | ]*\  }}‰                      |¦  «        s‰|         rd |z   n|g‘Œ+S )rZ  )rO  )r  rG  r=  r\  ri   s      €€rj   r9  zCDataFrameFormatter._get_formatted_column_labels.<locals>.<listcomp>*  sT   ø€ ð ð ð á�A�qð !%× 3Ò 3°AÑ 6Ô 6ÐP¸;Àq¼>ÐP��q‘�ÈqÐQðð ð rl   )Úpandas.core.indexes.multirU  rË   r€   r-   rŸ   r*  r  rÊ   Údtypesr…   ÚanyÚlevelsr  Úmapr   r•   rp   r¢   r@  )ri   rÊ   rU  rË   Úfmt_columnsre  Ústr_columns_tuplerI  r\  r]  r^  s   `       @@@rj   rE  z/DataFrameFormatter._get_formatted_column_labels  sÆ  øøøø€ Ø=Ð=Ð=Ð=Ð=Ð=à”-ˆå�g�zÑ*Ô*ð  	Ø!×/Ò/¸ÈeÐ/ÑTÔTˆKÝ�s KÐ0Ñ1Ô1ˆKØ”ZÔ&Ô.ˆFõ #&Ð%TÐ%TÀWÄ^Ð%TÑ%TÔ%TÑ"TÔ"TÐÝ�s ;µÕ4DÀfÑ0MÔ0MÑNÔNÑOÔOˆKðð ð ð ð ð ð õ !%ÝÐKÐKÐKÐK¸{ÐKÑKÔKÐLñ!ô !Ðð Œ}ð G¥Ð%6Ñ!7Ô!7ð GØ$3 OÐ4EÑ$FÔ$FÐ!àDÐD­CÐ1BÐ,CÐDÑDÔDˆKˆKà!×.Ò.¸EÐ.ÑBÔBˆKØ”ZÔ&ˆFÝ�s ;µÕ4DÀfÑ0MÔ0MÑNÔNÑOÔOˆKðð ð ð ð å% kÑ2Ô2ðñ ô ˆKð
 Ðrl   c                ó$  ‡ ‡— d„ ‰ j                              ¦   «         D ¦   «         Š|j        }|j        }‰                      d¦  «        }t          |t          ¦  «        r#|                     ‰ j        ‰ j	        |¬¦  «        }n| 
                    ‰ j	        |¬¦  «        g}ˆˆ fd„|D ¦   «         } ‰ j        j        dg|¢R Ž                      d¦  «        }‰ j        rd„ ‰                      ¦   «         D ¦   «         }nd	g|j        z  }‰ j        r||z   S |S )
Nc                ó@   — i | ]\  }}|t          t          |¦  «        “ŒS r³   )r   rq   )r  ÚkÚvs      rj   r  z;DataFrameFormatter._get_formatted_index.<locals>.<dictcomp>4  s&   € ÐHÐHÐH©¨¨A�Q��S !™œÐHÐHÐHrl   Ú	__index__)r•   r”   rP  )r—   rP  c                óœ   •— g | ]H}t          t          t          |¦  «        d ‰                     dd¦  «        ‰j        ¬¦  «        ¦  «        ‘ŒIS )rE   ry   r   )rH   r6  rg   )r+  rB  r*  rC  rg   )r  r=  rÍ   ri   s     €€rj   r9  z;DataFrameFormatter._get_formatted_index.<locals>.<listcomp>D  sf   ø€ ð 
ð 
ð 
ð õ Ý!Ý˜‘G”G V°Y·]²]À2ÀqÑ5IÔ5IÈtÌxðñ ô ñô ð
ð 
ð 
rl   rn   r}   c                ó,   — g | ]}t          |¦  «        ‘ŒS r³   ©r^   rb  s     rj   r9  z;DataFrameFormatter._get_formatted_index.<locals>.<listcomp>Q  s   € ÐGÐGÐG Q�#˜a™&œ&ÐGÐGÐGrl   ry   )rÍ   ÚitemsrT   rË   rO  r€   r-   rŸ   r•   rû   r¢   rg   r    r¡   rý   Ú_get_column_name_listÚnlevelsrS   )	ri   rÊ   rT   rË   Úfmtr¦   ÚadjoinedÚ
col_headerrÍ   s	   `       @rj   rè   z'DataFrameFormatter._get_formatted_index1  sX  øø€ ð IÐH°´×1EÒ1EÑ1GÔ1GÐHÑHÔHˆ	Ø”ˆØ”-ˆØ×!Ò! +Ñ.Ô.ˆå�e�ZÑ(Ô(ð 		Ø×+Ò+ØœØ"Ô5Øð ,ñ ô ˆIˆIð ×"Ò"°Ô0GÐSVÐ"ÑWÔWðˆIð
ð 
ð 
ð 
ð 
ð ð
ñ 
ô 
ˆ	ð #�4”8”? 1Ð1 yÐ1Ð1Ð1×7Ò7¸Ñ=Ô=ˆð Ô"ð 	0ØGÐG¨$×*DÒ*DÑ*FÔ*FÐGÑGÔGˆJˆJà˜ ¤Ñ/ˆJàŒ;ð 	Ø Ñ(Ð(àˆOrl   úlist[Hashable]c                óÜ   — g }| j         j        }t          |t          ¦  «        r%|                     d„ |j        D ¦   «         ¦  «         n#|                     |j        €dn|j        ¦  «         |S )Nc              3  ó"   K  — | ]
}|€dn|V — Œd S )Nry   r³   )r  rV   s     rj   r>  z;DataFrameFormatter._get_column_name_list.<locals>.<genexpr>^  s*   è è € ÐPÐP¸$˜t˜|˜˜°ÐPÐPÐPÐPÐPÐPrl   ry   )rÊ   rË   r€   r-   ÚextendÚnamesrD  rV   )ri   r}  rË   s      rj   rt  z(DataFrameFormatter._get_column_name_listZ  sn   € Ø "ˆØ”*Ô$ˆÝ�g�zÑ*Ô*ð 	GØ�LŠLÐPÐPÀ'Ä-ÐPÑPÔPÑPÔPÐPÐPà�LŠL˜wœ|Ð3˜˜¸¼ÑFÔFÐFØˆrl   )NNTTrQ   NNNNTNNNFrÉ   FT)&rÊ   rB   rË   rÌ   rÍ   rÎ   rS   rÏ   rT   r]   rU   r^   rÐ   rÑ   rH   r_   rW   rÒ   r•   rÓ   rÔ   r]   rY   r`   rZ   r`   r»   r`   r½   r\   rÕ   r^   rÖ   r]   r×   r]   ra   rb   )ra   rå   ©ra   r]   r®   )ra   rq   )r•   rÓ   ra   r]   )rÐ   rÑ   ra   r=   )rH   r_   ra   r^   )rË   rÌ   ra   r,   )rÍ   rÎ   ra   r9   )ra   r`   )rY   r`   ra   r`   r­   )rG  rq   ra   rŒ   )rG  rQ  ra   rR  )rÊ   rB   ra   rå   )rÊ   rB   ra   rŒ   )ra   ry  )(r�   r°   r±   r²   rD   rN   rk   rë   Úpropertyrî   rí   rð   rv   rô   rö   rø   rû   rý   rÿ   rÞ   rÜ   rÝ   rÚ   rÛ   rà   râ   r  r  r  r  r  r   r%  r&  rç   rA  rO  rE  rè   rt  r³   rl   rj   rÈ   rÈ   Ÿ  s­  € € € € € ðð ð !Ð(ˆgˆg b€GØÐÐ"2Ñ2Ñ2€Gð
  $Ø,0Ø-1ØØØ,0Ø"Ø/3Ø $Ø Ø#Ø#Ø#Ø&+ØØØð'--ð --ð --ð --ð --ð^
ð 
ð 
ð 
ð ð
ð 
ð 
ñ „Xð
ð
 ðTð Tð Tñ „XðTð ðYð Yð Yñ „XðYð ðWð Wð Wñ „XðWð ðSð Sð Sñ „XðSð ð,ð ,ð ,ñ „Xð,ð ð.ð .ð .ñ „Xð.ð ðNð Nð Nñ „XðNð ðPð Pð Pñ „XðPð ðFð Fð Fñ „XðFðð ð ð ð
ð ð ð ðð ð ð ð&ð &ð &ð &ðð ð ð ð0	!ð 	!ð 	!ð 	!ð/ð /ð /ð /ð&ð ð ð ð>ð >ð >ð >ðPð Pð Pð PðIð Ið Ið Iðð ð ð ð(ð (ð (ð (ð"ð "ð "ð "ð4"ð "ð "ð "ð$-ð -ð -ð -ð^
ð 
ð 
ð 
ð
0ð 
0ð 
0ð 
0ð'ð 'ð 'ð 'ðR'ð 'ð 'ð 'ðRð ð ð ð ð rl   rÈ   c                  ól   — e Zd ZdZd5d„Z	 	 	 	 	 	 	 d6d7d„Z	 	 	 d8d9d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:d;d4„ZdS )<ÚDataFrameRendereraJ  Class for creating dataframe output in multiple formats.

    Called in pandas.core.generic.NDFrame:
        - to_csv
        - to_latex

    Called in pandas.core.frame.DataFrame:
        - to_html
        - to_string

    Parameters
    ----------
    fmt : DataFrameFormatter
        Formatter with the formatting options.
    rv  rÈ   ra   rb   c                ó   — || _         d S rÙ   )rv  )ri   rv  s     rj   rk   zDataFrameRenderer.__init__u  s   € ØˆŒˆˆrl   NFre   ú"FilePath | WriteBuffer[str] | NoneÚencodingr_   Úclassesústr | list | tuple | NoneÚnotebookr]   Úborderúint | bool | NoneÚtable_idÚrender_linksc                ó”   — ddl m}m}	 |r|	n|}
 |
| j        ||||¬¦  «        }|                     ¦   «         }t          |||¬¦  «        S )uJ  
        Render a DataFrame to a html table.

        Parameters
        ----------
        buf : str, path object, file-like object, or None, default None
            String, path object (implementing ``os.PathLike[str]``), or file-like
            object implementing a string ``write()`` function. If None, the result is
            returned as a string.
        encoding : str, default â€œutf-8â€�
            Set character encoding.
        classes : str or list-like
            classes to include in the `class` attribute of the opening
            ``<table>`` tag, in addition to the default "dataframe".
        notebook : {True, False}, optional, default False
            Whether the generated HTML is for IPython Notebook.
        border : int
            A ``border=border`` attribute is included in the opening
            ``<table>`` tag. Default ``pd.options.display.html.border``.
        table_id : str, optional
            A css id is included in the opening `<table>` tag if specified.
        render_links : bool, default False
            Convert URLs to HTML links.
        r   )ÚHTMLFormatterÚNotebookFormatter)r…  rˆ  rŠ  r‹  ©re   r„  )Úpandas.io.formats.htmlr�  rŽ  rv  r¬   Úsave_to_buffer)ri   re   r„  r…  r‡  rˆ  rŠ  r‹  r�  rŽ  ÚKlassÚhtml_formatterÚstrings                rj   Úto_htmlzDataFrameRenderer.to_htmlx  sŒ   € ðD	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 &.Ð@Ð!Ð!°=ˆà˜ØŒHØØØØ%ð
ñ 
ô 
ˆð  ×)Ò)Ñ+Ô+ˆÝ˜f¨#¸ÐAÑAÔAÐArl   r¾   r`   c                ó~   — ddl m}  || j        |¬¦  «        }|                     ¦   «         }t	          |||¬¦  «        S )u%  
        Render a DataFrame to a console-friendly tabular output.

        Parameters
        ----------
        buf : str, path object, file-like object, or None, default None
            String, path object (implementing ``os.PathLike[str]``), or file-like
            object implementing a string ``write()`` function. If None, the result is
            returned as a string.
        encoding: str, default â€œutf-8â€�
            Set character encoding.
        line_width : int, optional
            Width to wrap a line in characters.
        r   )ÚStringFormatter)r¾   r�  )Úpandas.io.formats.stringr—  rv  r¬   r‘  )ri   re   r„  r¾   r—  Ústring_formatterr”  s          rj   r¬   zDataFrameRenderer.to_string«  sS   € ð( 	=Ð<Ð<Ð<Ð<Ð<à*˜?¨4¬8À
ÐKÑKÔKÐØ!×+Ò+Ñ-Ô-ˆÝ˜f¨#¸ÐAÑAÔAÐArl   ú,ÚwÚinferú"TÚstrictÚpath_or_bufú7FilePath | WriteBuffer[bytes] | WriteBuffer[str] | NoneÚsepr^   rË   úSequence[Hashable] | NoneÚindex_labelúIndexLabel | Noner›   Úcompressionr:   ÚquotingÚ	quotecharÚlineterminatorÚ	chunksizeÚdate_formatÚdoublequoteÚ
escapecharÚerrorsÚstorage_optionsúStorageOptions | Nonec                óf  — ddl m} |€d}t          ¦   «         }nd} |di d|“d|
“d|“d	|“d
|“d|“d|“d|“d|“d|“d|“d|	“d|“d|“d|“d|“d| j        “Ž}|                     ¦   «          |rAt          |t          ¦  «        sJ ‚|                     ¦   «         }|                     ¦   «          |S dS )z;
        Render dataframe as comma-separated file.
        r   )ÚCSVFormatterNTFrŸ  r¨  r¡  r„  r­  r¥  r¦  r  r£  r›   r©  r§  rª  r«  r¬  r®  rP  r³   )Úpandas.io.formats.csvsr±  r   rv  Úsaver€   ÚgetvalueÚclose)ri   rŸ  r„  r¡  rË   r£  r›   r¥  r¦  r§  r¨  r©  rª  r«  r¬  r­  r®  r±  Úcreated_bufferÚcsv_formatterÚcontents                        rj   Úto_csvzDataFrameRenderer.to_csvÅ  sp  € ð, 	8Ð7Ð7Ð7Ð7Ð7àÐØ!ˆNÝ"™*œ*ˆKˆKà"ˆNà$˜ð 
ð 
ð 
Ø#˜ð
à)˜>ð
ð �ð
ð �Xð	
ð
 �6ð
ð $˜ð
ð �Gð
ð �ð
ð $˜ð
ð �ð
ð  �ið
ð  �ið
ð $˜ð
ð $˜ð
ð "�zð
ð  ,˜Oð!
ð" ”h�hð#
ˆð& 	×ÒÑÔÐàð 	Ý˜k­8Ñ4Ô4Ð4Ð4Ð4Ø!×*Ò*Ñ,Ô,ˆGØ×ÒÑÔÐØˆNàˆtrl   )rv  rÈ   ra   rb   )NNNFNNF)re   rƒ  r„  r_   r…  r†  r‡  r]   rˆ  r‰  rŠ  r_   r‹  r]   ra   r_   )NNN)re   rƒ  r„  r_   r¾   r`   ra   r_   )NNrš  NNr›  rœ  Nr�  NNNTNrž  N)"rŸ  r   r„  r_   r¡  r^   rË   r¢  r£  r¤  r›   r^   r¥  r:   r¦  r`   r§  r^   r¨  r_   r©  r`   rª  r_   r«  r]   r¬  r_   r­  r^   r®  r¯  ra   r_   )r�   r°   r±   r²   rk   r•  r¬   r¹  r³   rl   rj   r�  r�  d  sÞ   € € € € € ðð ð ð ð ð ð
 37Ø#Ø-1ØØ$(Ø#Ø"ð1Bð 1Bð 1Bð 1Bð 1Bðj 37Ø#Ø!%ð	Bð Bð Bð Bð Bð8 PTØ#ØØ-1Ø)-ØØ*1Ø"ØØ%)Ø $Ø"&Ø Ø!%ØØ15ð#9ð 9ð 9ð 9ð 9ð 9ð 9rl   r�  r”  r^   re   rƒ  r„  r_   c                óÊ   — t          ||¬¦  «        5 }|                     | ¦  «         |€ |                     ¦   «         cddd¦  «         S 	 ddd¦  «         dS # 1 swxY w Y   dS )zQ
    Perform serialization. Write to buf or return as string if buf is None.
    )r„  N)Ú_get_bufferÚwriter´  )r”  re   r„  Úfds       rj   r‘  r‘    sÇ   € õ 
�S 8Ð	,Ñ	,Ô	,ð °Ø
�Š�ÑÔÐØˆ;à—;’;‘=”=ð	ð ð ð ñ ô ð ð ð
 ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ’+AÁ
AÁAÁAúIGenerator[WriteBuffer[str], None, None] | Generator[StringIO, None, None]c              #  ó¨  K  — | �t          | ¦  «        } nt          ¦   «         } |€d}n$t          | t          ¦  «        st	          d¦  «        ‚t          | d¦  «        r| V — dS t          | t          ¦  «        rNt          t          | ¦  «        ¦  «         t          | d|d¬¦  «        5 }|V — ddd¦  «         dS # 1 swxY w Y   dS t          d¦  «        ‚)	z€
    Context manager to open, yield and close buffer for filenames or Path-like
    objects, otherwise yield buf unchanged.
    Nzutf-8z1buf is not a file name and encoding is specified.r¼  r›  ry   )r„  Únewlinez1buf is not a file name and it has no write method)	r4   r   r€   r^   r  Úhasattrr3   ÚopenÚ	TypeError)re   r„  Úfs      rj   r»  r»    s1  è è € ð €Ý˜SÑ!Ô!ˆˆå‰jŒjˆàÐØˆˆÝ˜�SÑ!Ô!ð NÝÐLÑMÔMÐMåˆs�GÑÔð Mð ˆ	ˆ	ˆ	ˆ	ˆ	Ý	�C�Ñ	Ô	ð 	MÝ�s 3™xœxÑ(Ô(Ð(Ý�#�s X°rÐ:Ñ:Ô:ð 	¸að
 ˆGˆGˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	õ ÐKÑLÔLÐLs   Â&B8Â8B<Â?B<rQ   rF   rÉ   TÚvaluesr6   rP  rR  rW   rÒ   rU   Údigitsr`   rN  ústr | int | NonerH   rÕ   rŽ   rÓ   r¦  Úfallback_formatterrŒ   c                óÆ  — t          j        | j        d¦  «        rt          }t	          t
          | ¦  «        } nÛt          | j        t          ¦  «        rt          }t	          t
          | ¦  «        } n¤t          j        | j        d¦  «        rt          }t	          t          | ¦  «        } nmt          | j        t          ¦  «        rt          }nKt          j        | j        d¦  «        rt          }n)t          j        | j        d¦  «        rt          }nt          }|€d}|€t!          d¦  «        }|€t!          d¦  «        } || |||||||||	|
¬	¦  «        }|                     ¦   «         S )
a™  
    Format an array for printing.

    Parameters
    ----------
    values : np.ndarray or ExtensionArray
    formatter
    float_format
    na_rep
    digits
    space
    justify
    decimal
    leading_space : bool, optional, default True
        Whether the array should be formatted with a leading space.
        When an array as a column of a Series or DataFrame, we do want
        the leading space to pad between columns.

        When formatting an Index subclass
        (e.g. IntervalIndex._get_values_for_csv), we don't want the
        leading space since it should be left-aligned.
    fallback_formatter

    Returns
    -------
    List[str]
    ÚMÚmÚfcÚiuNé   rd   údisplay.precision)
rÆ  rU   rW   rP  rN  rH   rÕ   rŽ   r¦  rÈ  )r   Úis_np_dtyperX   Ú_Datetime64Formatterr   r'   r€   r"   Ú_Datetime64TZFormatterÚ_Timedelta64Formatterr)   r#   Ú_ExtensionArrayFormatterÚFloatArrayFormatterÚ_IntArrayFormatterÚ_GenericArrayFormatterr   Ú
get_result)rÅ  rP  rW   rU   rÆ  rN  rH   rÕ   rŽ   r¦  rÈ  Ú	fmt_klassÚfmt_objs                rj   r�   r�   7  s]  € õR „�v”| SÑ)Ô)ð +Ý(ˆ	Ý•m VÑ,Ô,ˆˆÝ	�F”L¥/Ñ	2Ô	2ð +Ý*ˆ	Ý•m VÑ,Ô,ˆˆÝ	Œ˜œ sÑ	+Ô	+ð 
+Ý)ˆ	Ý•n fÑ-Ô-ˆˆÝ	�F”L¥.Ñ	1Ô	1ð +Ý,ˆ	ˆ	Ý	Œ˜œ tÑ	,Ô	,ð +Ý'ˆ	ˆ	Ý	Œ˜œ tÑ	,Ô	,ð +Ý&ˆ	ˆ	å*ˆ	à€}ØˆàÐÝ!Ð"8Ñ9Ô9ˆà€~ÝÐ/Ñ0Ô0ˆàˆiØØØØ!ØØØØØ#ØØ-ðñ ô €Gð ×ÒÑÔÐrl   c                  ó>   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 d#d$d„Zd%d!„Zd%d"„ZdS )&r×  é   NrQ   rÎ  rF   rÉ   TrÅ  r6   rÆ  rq   rP  rR  rU   r^   rN  rQ  rW   rÒ   rH   rÕ   r¦  r`   Úfixed_widthr]   rŽ   rÓ   rÈ  ra   rb   c                ó®   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        d S rÙ   )rÅ  rÆ  rU   rN  rP  rW   rH   rÕ   r¦  rÝ  rŽ   rÈ  )ri   rÅ  rÆ  rP  rU   rN  rW   rH   rÕ   r¦  rÝ  rŽ   rÈ  s                rj   rk   z_GenericArrayFormatter.__init__�  sb   € ð ˆŒØˆŒØˆŒØˆŒ
Ø"ˆŒØ(ˆÔØˆŒØˆŒØˆŒØ&ˆÔØ*ˆÔØ"4ˆÔÐÐrl   rŒ   c                óT   — |                       ¦   «         }t          || j        ¦  «        S rÙ   )Ú_format_stringsrB  rH   )ri   r§   s     rj   rØ  z!_GenericArrayFormatter.get_result©  s%   € Ø×)Ò)Ñ+Ô+ˆ
Ý  ¨T¬\Ñ:Ô:Ð:rl   c                óò  ‡ ‡‡— ‰ j         €&t          d¦  «        }|€t          d¦  «        Šˆfd„}n‰ j         }‰ j        �‰ j        ŠnD‰ j        �‰ j        Šn5‰ j        d uo‰ j        t
          k    }t          t          j        d|¬¦  «        Šˆˆ fd„}‰ j	        }t          |t          j        ¦  «        st          d¦  «        ‚t          j        |t           ¦  «        }|t          j        t%          |¦  «        t'          t)          dt+          |j        ¦  «        ¦  «        ¦  «        ¬	¦  «        z  }‰ j        }|€|                     ¦   «         }g }t3          |¦  «        D ]š\  }	}
||	         r‰ j        �$|r"|                     d
 ||
¦  «        › �¦  «         Œ8||	         r|                      ||
¦  «        ¦  «         Œ_|du rd}nd}|                     |                      ||
¦  «        ¬¦  «        ¦  «         Œ›|S )Nrd   rÏ  c                ó0   •— t          | d‰d›d�›¦  «        S )Nz .ÚdrÄ  )Ú_trim_zeros_single_float)r=  Ú	precisions    €rj   ú<lambda>z8_GenericArrayFormatter._format_strings.<locals>.<lambda>²  s)   ø€ Õ)AØÐ+˜IÐ+Ð+Ð+Ð+Ð+ñ*ô *€ rl   rz   )r~   Úquote_stringsc                ó.  •— ‰j         �®t          | ¦  «        rŸt          | ¦  «        r�| €dS | t          u rt	          t          ¦  «        S t          j        | ¦  «        r#t          j        | ¦  «        rt	          | ¦  «        S | t          u s&t          | t          j        t          j        f¦  «        rdS ‰j         S t          | t          ¦  «        rt	          | ¦  «        S t          | t          ¦  «        rt          | ¦  «        S t	           ‰| ¦  «        ¦  «        S )Nrb   r   )rU   r    r$   r   r^   r   r   r/  Úisinfr   r€   Ú
datetime64Útimedelta64r+   r*   Úrepr)r=  rP  ri   s    €€rj   Ú_formatz7_GenericArrayFormatter._format_strings.<locals>._formatÄ  sê   ø€ ØŒ{Ð&­9°Q©<¬<Ð&½DÀ¹G¼GÐ&Ø�9Ø!˜6Ø�"�W�WÝ�r™7œ7�NÝ”\ !‘_”_ð !­¬°!©¬ð !õ ˜q™6œ6�MØ�#�X�X¥¨Aµ´½r¼~Ð/NÑ!OÔ!O�XØ ˜5Ø”{Ð"Ý˜A�|Ñ,Ô,ð )Ý˜1‘v”v�Ý˜A�{Ñ+Ô+ð )Ý˜A‘w”w�õ ˜9˜9 Q™<œ<Ñ(Ô(Ð(rl   z=ExtensionArray formatting should use _ExtensionArrayFormatterrn   r(  rZ  Fz{v}z {v})rn  )rW   r   rP  rÈ  r¦  r	   r   r5   rƒ   rÅ  r€   r/  ÚndarrayrÃ  r   Ú	map_inferr   rú   r%   r+  Úrangerp   ÚshaperŽ   rf  r@  rD  Úformat)ri   rW   rç  rí  ÚvalsÚinferredÚis_float_typerŽ   r§   rG  rn  ÚtplrP  rå  s   `           @@rj   rà  z&_GenericArrayFormatter._format_strings­  sH  øøø€ ØÔÐ$Ý%Ð&<Ñ=Ô=ˆLØÐ#Ý&Ð':Ñ;Ô;�	ð ð  ð  ð  �øð  Ô,ˆLàŒ>Ð%ØœˆIˆIØÔ$Ð0ØÔ/ˆIˆIà œL°Ð4ÐS¸¼ÍÒ9SˆMÝÝÔ%Ø/Ø+ðñ ô ˆIð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð* Œ{ˆÝ˜$¥¤
Ñ+Ô+ð 	ÝØOñô ð õ ”= ¥xÑ0Ô0ˆàåŒf•U˜4‘[”[¥u­U°1µc¸$¼*±o´oÑ-FÔ-FÑ'GÔ'GÐHÑHÔHñIð 	ð
 Ô*ˆØÐ Ø)×-Ò-Ñ/Ô/ˆMàˆ
Ý˜d‘O”Oð 	<ð 	<‰DˆAˆqØ! !Ô$ð <¨¬Ð(BÈÐ(BØ×!Ò!Ð"2 g g¨a¡j¤jÐ"2Ð"2Ñ3Ô3Ð3Ð3Ø˜qÔ!ð 	<Ø×!Ò! , ,¨q¡/¤/Ñ2Ô2Ð2Ð2à  EÐ)Ð)ð  �C�Cà �CØ×!Ò! #§*¢*¨w¨w°q©z¬z *Ñ":Ô":Ñ;Ô;Ð;Ð;àÐrl   )rÜ  NrQ   rÎ  NrF   rÉ   NTTN)rÅ  r6   rÆ  rq   rP  rR  rU   r^   rN  rQ  rW   rÒ   rH   r^   rÕ   r^   r¦  r`   rÝ  r]   rŽ   rÓ   rÈ  rR  ra   rb   r¯   )r�   r°   r±   rk   rØ  rà  r³   rl   rj   r×  r×  Œ  s~   € € € € € ð Ø%)ØØØ/3ØØØ"Ø Ø%)Ø.2ð5ð 5ð 5ð 5ð 5ð8;ð ;ð ;ð ;ðJð Jð Jð Jð Jð Jrl   r×  c                  ó>   ‡ — e Zd Zdˆ fd„Z	 	 ddd
„Zdd„Zdd„Zˆ xZS )rÕ  ra   rb   c                ó¾   •—  t          ¦   «         j        |i |¤Ž | j        �7| j        €2d| _        t          | j        ¦  «        r| j        | _        d | _        d S d S d S d S ©NF)Úsuperrk   rW   rP  rÝ  Úcallable)ri   ÚargsÚkwargsÚ	__class__s      €rj   rk   zFloatArrayFormatter.__init__û  s|   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ð ÔÐ(¨T¬^Ð-Cà$ˆDÔÝ˜Ô)Ñ*Ô*ð )Ø!%Ô!2�”Ø$(�Ô!Ð!Ð!ð )Ð(Ð-CÐ-Cð)ð )rl   NrW   rÒ   Ú	thresholdúfloat | Noner   c                ó|   ‡ ‡‡‡‡— ‰€‰ j         Š‰rˆˆ fd„Šnˆ fd„Š‰ j        dk    rˆˆ fd„Šn‰Š‰€‰S ˆˆ ˆfd„}|S )z;Returns a function to be applied on each value to format itNc                óP   •— ‰€J ‚t          | ¦  «        r ‰| ¬¦  «        n‰j        S )N)Úvalue)r%   rU   )rn  rW   ri   s    €€rj   Úbase_formatterz<FloatArrayFormatter._value_formatter.<locals>.base_formatter  s;   ø€ Ø#Ð/Ð/Ð/õ ˜Q‘x”xð%�L�L qÐ)Ñ)Ô)Ð)àœðrl   c                óN   •— t          | ¦  «        rt          | ¦  «        n‰j        S rÙ   )r%   r^   rU   )rn  ri   s    €rj   r  z<FloatArrayFormatter._value_formatter.<locals>.base_formatter&  s    ø€ Ý!& q¡¤Ð:•s˜1‘v”v�v¨t¬{Ð:rl   rÉ   c                óN   •—  ‰| ¦  «                              d‰j        d¦  «        S )NrÉ   rn   )ÚreplacerÕ   )rn  r  ri   s    €€rj   Údecimal_formatterz?FloatArrayFormatter._value_formatter.<locals>.decimal_formatter+  s'   ø€ Ø%�~ aÑ(Ô(×0Ò0°°d´lÀAÑFÔFÐFrl   c                ó‚   •— t          | ¦  «        r)t          | ¦  «        ‰k    r ‰| ¦  «        S  ‰d¦  «        S ‰j        S )Ng        )r%   ÚabsrU   )r  r  ri   rÿ  s    €€€rj   rP  z7FloatArrayFormatter._value_formatter.<locals>.formatter4  sL   ø€ Ý�U‰|Œ|ð #Ý�u‘:”: 	Ò)Ð)Ø,Ð,¨UÑ3Ô3Ð3à,Ð,¨SÑ1Ô1Ð1à”{Ð"rl   )rW   rÕ   )ri   rW   rÿ  rP  r  r  s   ``` @@rj   Ú_value_formatterz$FloatArrayFormatter._value_formatter  sÕ   øøøøø€ ð ÐØÔ,ˆLð ð 	;ð	ð 	ð 	ð 	ð 	ð 	ð 	ð;ð ;ð ;ð ;ð ;ð Œ<˜3ÒÐðGð Gð Gð Gð Gð Gð Gð !/ÐàÐØ$Ð$ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð Ðrl   ú
np.ndarrayc                óø  ‡ ‡
‡‡— dd„Šdd„Š
‰ j         � ‰‰ j        ‰ j         ‰ j        ¦  «        S ‰ j        rt	          d
¦  «        Šnd	Šˆ
ˆˆ ˆfd„}‰ j        €9‰ j        r*‰ j        du rd}nd}t          |j        ‰ j	        ¬¦  «        }n‰ j        }nˆ fd„} ||¦  «        }‰ j        s|S t          |¦  «        dk    r(t          d„ |D ¦   «         ¦  «        }|‰ j	        dz   k    }nd}t          j        ‰ j        ¦  «        }|dk                         ¦   «         }|d‰ j	         z  k     |dk    z                       ¦   «         }	|	s|r6|r4‰ j        du rd}nd}t          |j        ‰ j	        ¬¦  «        } ||¦  «        }|S )zˆ
        Returns the float values converted into strings using
        the parameters given at initialisation, as a numpy array
        rÅ  r6   rP  r   rU   r^   c                óþ   ‡‡— t          | ¦  «        }t          j        ˆˆfd„t          |                      ¦   «         |                     ¦   «         ¦  «        D ¦   «         ¦  «                             | j        ¦  «        }|S )Nc                ó4   •— g | ]\  }}|s ‰|¦  «        n‰‘ŒS r³   r³   )r  ÚvalrË  rP  rU   s      €€rj   r9  zWFloatArrayFormatter.get_result_as_array.<locals>.format_with_na_rep.<locals>.<listcomp>H  s>   ø€ ð ð ð á˜˜Qð +,Ð7�I�I˜c‘N”N�N°ðð ð rl   )r$   r/  Úarrayr  ÚravelÚreshaperñ  )rÅ  rP  rU   ÚmaskÚ	formatteds    ``  rj   Úformat_with_na_repzCFloatArrayFormatter.get_result_as_array.<locals>.format_with_na_repE  s�   øø€ Ý˜‘<”<ˆDÝœðð ð ð ð å"% f§l¢l¡n¤n°d·j²j±l´lÑ"CÔ"Cðñ ô ñô ÷
 Šg�f”lÑ#Ô#ð ð Ðrl   c                ó.  — t          j        | ¦  «                             ¦   «         }t          j        | ¦  «                             ¦   «         }t	          |¦  «        t	          |¦  «        }}g }t          |                      ¦   «         ||||¦  «        D ]Ø\  }}	}
}}|s!|s|                      ||¦  «        ¦  «         Œ+|s%|                      ||	¦  «        › d|› d�¦  «         ŒR|si ||
¦  «                             ¦   «         }|                     d¦  «        r|                     |› |› d�¦  «         Œ¡|                     |› d|› d�¦  «         Œ½|                     |› d|› d�¦  «         ŒÙt          j	        |¦  «         
                    | j        ¦  «        S )Nú+Újú-)r/  Úrealr  Úimagr$   r  rD  ÚstripÚ
startswithr  r  rñ  )rÅ  rP  rU   Úreal_valuesÚimag_valuesÚ	real_maskÚ	imag_maskÚformatted_lstr  Úreal_valÚimag_valÚre_isnaÚim_isnaÚimag_formatteds                 rj   Úformat_complex_with_na_repzKFloatArrayFormatter.get_result_as_array.<locals>.format_complex_with_na_repO  sÎ  € õ œ' &™/œ/×/Ò/Ñ1Ô1ˆKÝœ' &™/œ/×/Ò/Ñ1Ô1ˆKÝ#'¨Ñ#4Ô#4µd¸;Ñ6GÔ6G�yˆIØˆMÝ=@Ø—’‘”ØØØØñ>ô >ð @ð @Ñ9��X˜x¨°'ð ð @ wð @Ø!×(Ò(¨¨°3©¬Ñ8Ô8Ð8Ð8Ø ð 
@Ø!×(Ò(¨I¨I°hÑ,?Ô,?Ð)KÐ)KÀ&Ð)KÐ)KÐ)KÑLÔLÐLÐLØ ð @à%. Y¨xÑ%8Ô%8×%>Ò%>Ñ%@Ô%@�NØ%×0Ò0°Ñ5Ô5ð LØ%×,Ò,°Ð-I¸Ð-IÐ-IÐ-IÑJÔJÐJÐJà%×,Ò,°Ð-JÐ-J¸Ð-JÐ-JÐ-JÑKÔKÐKÐKà!×(Ò(¨FÐ)>Ð)>°VÐ)>Ð)>Ð)>Ñ?Ô?Ð?Ð?Ý”8˜MÑ*Ô*×2Ò2°6´<Ñ@Ô@Ð@rl   Nzdisplay.chop_thresholdc                óf  •— ‰                      | ‰	¦  «        }‰j        dk    r
d‰j        z   n‰j        }‰j        }t	          |¦  «        }|r ‰|||¦  «        }n ‰|||¦  «        }‰j        rC|rt          |‰j        ¦  «        }nt          |‰j        ¦  «        }t          j
        |d¬¦  «        S |S )NrE   rZ  Úobject©rX   )r  rH   rU   rÅ  r   rÝ  Ú_trim_zeros_complexrÕ   Ú_trim_zeros_floatr/  Úasarray)
rW   rP  rU   rÅ  Ú
is_complexr«   r)  r  ri   rÿ  s
         €€€€rj   Úformat_values_withzCFloatArrayFormatter.get_result_as_array.<locals>.format_values_withu  sÖ   ø€ Ø×-Ò-¨l¸IÑFÔFˆIð +/¬,¸&Ò*@Ð*@�S˜4œ;Ñ&Ð&ÀdÄkˆFð ”[ˆFÝ)¨&Ñ1Ô1ˆJð ð GØ3Ð3°F¸IÀvÑNÔN��à+Ð+¨F°I¸vÑFÔF�àÔð :Øð EÝ0°¸¼ÑFÔF�F�Få.¨v°t´|ÑDÔD�FÝ”z &°Ð9Ñ9Ô9Ð9àˆMrl   Tz{value: .{digits:d}f}z{value:.{digits:d}f})rÆ  c                ó   •— ‰j         | z  S rÙ   )rW   )r  ri   s    €rj   ræ  z9FloatArrayFormatter.get_result_as_array.<locals>.<lambda>�  s   ø€ ¨Ô):¸UÑ)B€ rl   r   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rÙ   ©rp   rb  s     rj   r>  z:FloatArrayFormatter.get_result_as_array.<locals>.<genexpr>©  s(   è è € Ð:Ð: A�˜Q™œÐ:Ð:Ð:Ð:Ð:Ð:rl   é   Fg    €„.Aé
   z{value: .{digits:d}e}z{value:.{digits:d}e})rÅ  r6   rP  r   rU   r^   )rP  rÅ  rU   rÝ  r   rW   rŽ   r   rò  rÆ  rp   rF  r/  r
  rf  )ri   r1  Úfmt_strrW   Úformatted_valuesÚmaxlenÚtoo_longÚabs_valsÚhas_large_valuesÚhas_small_valuesr)  r  rÿ  s   `         @@@rj   Úget_result_as_arrayz'FloatArrayFormatter.get_result_as_array?  s  øøøø€ ð	ð 	ð 	ð 	ð	Að 	Að 	Að 	Að: Œ>Ð%Ø%Ð% d¤k°4´>À4Ä;ÑOÔOÐOàÔð 	Ý"Ð#;Ñ<Ô<ˆIˆIàˆIð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð< ÔÐ$ØÔð 1ØÔ%¨Ð-Ð-Ø5�G�Gà4�GÝ& w¤~¸d¼kÐJÑJÔJ��à#Ô0��àBÐBÐBÐBˆLà-Ð-¨lÑ;Ô;ÐàÔð 	$Ø#Ð#õ ÐÑ Ô  1Ò$Ð$ÝÐ:Ð:Ð)9Ð:Ñ:Ô:Ñ:Ô:ˆFØ ¤¨a¡Ò/ˆHˆHàˆHå”6˜$œ+Ñ&Ô&ˆð % sšN×/Ò/Ñ1Ô1ÐØ%¨°´¨|Ñ(<Ò<ÀÈAÂÑN×SÒSÑUÔUÐàð 	@ ð 	@Ð-=ð 	@ØÔ! TÐ)Ð)Ø1��à0�Ý" 7¤>¸$¼+ÐFÑFÔFˆLØ1Ð1°,Ñ?Ô?ÐàÐrl   rŒ   c                óD   — t          |                      ¦   «         ¦  «        S rÙ   )r*  r>  r�   s    rj   rà  z#FloatArrayFormatter._format_strings¿  s   € Ý�D×,Ò,Ñ.Ô.Ñ/Ô/Ð/rl   r­   ©NN)rW   rÒ   rÿ  r   ra   r   )ra   r  r¯   )r�   r°   r±   rk   r  r>  rà  Ú__classcell__©rþ  s   @rj   rÕ  rÕ  ú  sŒ   ø€ € € € € ð
)ð 
)ð 
)ð 
)ð 
)ð 
)ð 04Ø"&ð6ð 6ð 6ð 6ð 6ðp~ ð ~ ð ~ ð ~ ð@0ð 0ð 0ð 0ð 0ð 0ð 0ð 0rl   rÕ  c                  ó   — e Zd Zdd„ZdS )rÖ  ra   rŒ   c                ó`   ‡— | j         du rd„ }nd„ }| j        p|Šˆfd„| j        D ¦   «         }|S )NFc                ó2   — | d›                      | ¬¦  «        S )Nrã  ©r=  ©rò  rF  s    rj   ræ  z4_IntArrayFormatter._format_strings.<locals>.<lambda>Æ  s   € ¨ h h§o¢o¸ oÑ&:Ô&:€ rl   c                ó2   — | d›                      | ¬¦  «        S )Nz drF  rG  rF  s    rj   ræ  z4_IntArrayFormatter._format_strings.<locals>.<lambda>È  s   € ¨ i i×&6Ò&6¸Ð&6Ñ&;Ô&;€ rl   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r³   r³   ©r  r=  rP  s     €rj   r9  z6_IntArrayFormatter._format_strings.<locals>.<listcomp>Ê  s!   ø€ Ð8Ð8Ð8 q�i�i ‘l”lÐ8Ð8Ð8rl   )rŽ   rP  rÅ  )ri   Úformatter_strr§   rP  s      @rj   rà  z"_IntArrayFormatter._format_stringsÄ  sP   ø€ ØÔ Ð&Ð&Ø:Ð:ˆMˆMà;Ð;ˆMØ”NÐ3 mˆ	Ø8Ð8Ð8Ð8¨D¬KÐ8Ñ8Ô8ˆ
ØÐrl   Nr¯   )r�   r°   r±   rà  r³   rl   rj   rÖ  rÖ  Ã  s(   € € € € € ðð ð ð ð ð rl   rÖ  c                  ó:   ‡ — e Zd ZU ded<   	 	 ddˆ fd
„Zdd„Zˆ xZS )rÑ  r'   rÅ  r   NÚnat_repr^   rª  rb   ra   c                óX   •—  t          ¦   «         j        |fi |¤Ž || _        || _        d S rÙ   )rú  rk   rM  rª  )ri   rÅ  rM  rª  rý  rþ  s        €rj   rk   z_Datetime64Formatter.__init__Ñ  s9   ø€ ð 	�‰ŒÔ˜Ð*Ð* 6Ð*Ð*Ð*ØˆŒØ&ˆÔÐÐrl   rŒ   c                ó¦   ‡ — ‰ j         }‰ j        �ˆ fd„|D ¦   «         S |                     ‰ j        ‰ j        ¬¦  «        }|                     ¦   «         S )z&we by definition have DO NOT have a TZNc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r³   )rP  r<  s     €rj   r9  z8_Datetime64Formatter._format_strings.<locals>.<listcomp>á  s%   ø€ Ð6Ð6Ð6¨!�D—N’N 1Ñ%Ô%Ð6Ð6Ð6rl   )rU   rª  )rÅ  rP  Ú_format_native_typesrM  rª  Útolist)ri   rÅ  r§   s   `  rj   rà  z$_Datetime64Formatter._format_stringsÜ  sd   ø€ à”ˆàŒ>Ð%Ø6Ð6Ð6Ð6¨vÐ6Ñ6Ô6Ð6à×0Ò0Ø”<¨TÔ-=ð 1ñ 
ô 
ˆ
ð × Ò Ñ"Ô"Ð"rl   ©r   N)rÅ  r'   rM  r^   rª  rb   ra   rb   r¯   ©r�   r°   r±   Ú__annotations__rk   rà  rA  rB  s   @rj   rÑ  rÑ  Î  sl   ø€ € € € € € ØÐÐÑð
 Ø ð		'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð
#ð 
#ð 
#ð 
#ð 
#ð 
#ð 
#ð 
#rl   rÑ  c                  ó"   — e Zd ZU ded<   dd„ZdS )rÔ  r(   rÅ  ra   rŒ   c                ód  — | j         }| j        }d }|€|                     d¬¦  «        }t          |t          ¦  «        r|                     ¦   «         }nt          j        |t          ¬¦  «        }t          ||| j
        | j        | j        | j        | j        | j        | j        | j        |¬¦  «        }|S )NT)Úboxedr,  )	rW   rU   rÆ  rN  rH   rÕ   rŽ   r¦  rÈ  )rÅ  rP  Ú
_formatterr€   r&   Ú_internal_get_valuesr/  r/  r+  r�   rW   rU   rÆ  rN  rH   rÕ   rŽ   r¦  )ri   rÅ  rP  rÈ  r  r§   s         rj   rà  z(_ExtensionArrayFormatter._format_stringsì  s»   € Ø”ˆà”Nˆ	Ø!ÐØÐØ!'×!2Ò!2¸Ð!2Ñ!>Ô!>Ðå�f�kÑ*Ô*ð 	5à×/Ò/Ñ1Ô1ˆEˆEå”J˜v­VÐ4Ñ4Ô4ˆEå!ØØØÔ*Ø”;Ø”;Ø”*Ø”LØ”LØÔ,Ø”LØ1ð
ñ 
ô 
ˆ
ð Ðrl   Nr¯   ©r�   r°   r±   rU  rà  r³   rl   rj   rÔ  rÔ  é  s6   € € € € € € ØÐÐÑðð ð ð ð ð rl   rÔ  Úpercentilesúnp.ndarray | Sequence[float]c                ó„  — t          j        | ¦  «        } t          | ¦  «        r0t          j        | dk    ¦  «        rt          j        | dk    ¦  «        st	          d¦  «        ‚d| z  } t          | ¦  «        }|                      |¦  «                             t          ¦  «        }t          j	        || ¦  «        }t          j        |¦  «        r&|                     t          ¦  «        }d„ |D ¦   «         S t          j        | ¦  «        }t          |¦  «        }t          j        | t          ¬¦  «        }| |                              ¦   «                              t          ¦  «                             t          ¦  «        ||<   | |                               |¦  «                             t          ¦  «        || <   d„ |D ¦   «         S )a  
    Outputs rounded and formatted percentiles.

    Parameters
    ----------
    percentiles : list-like, containing floats from interval [0,1]

    Returns
    -------
    formatted : list of strings

    Notes
    -----
    Rounding precision is chosen so that: (1) if any two elements of
    ``percentiles`` differ, they remain different after rounding
    (2) no entry is *rounded* to 0% or 100%.
    Any non-integer is always rounded to at least 1 decimal place.

    Examples
    --------
    Keeps all entries different after rounding:

    >>> format_percentiles([0.01999, 0.02001, 0.5, 0.666666, 0.9999])
    ['1.999%', '2.001%', '50%', '66.667%', '99.99%']

    No element is rounded to 0% or 100% (unless already equal to it).
    Duplicates are allowed:

    >>> format_percentiles([0, 0.5, 0.02001, 0.5, 0.666666, 0.9999])
    ['0%', '50%', '2.0%', '50%', '66.67%', '99.99%']
    r   rn   z/percentiles should all be in the interval [0,1]éd   c                ó   — g | ]}|d z   ‘ŒS ©ú%r³   ©r  rG  s     rj   r9  z&format_percentiles.<locals>.<listcomp>>  s   € Ð%Ð%Ð%˜A��C‘Ð%Ð%Ð%rl   r,  c                ó   — g | ]}|d z   ‘ŒS ra  r³   rc  s     rj   r9  z&format_percentiles.<locals>.<listcomp>F  s   € Ð!Ð!Ð!˜ˆA�‰GÐ!Ð!Ð!rl   )r/  r/  r   rú   r  Úget_precisionÚroundÚastyperq   Úiscloser^   ÚuniqueÚ
empty_liker+  )r\  ÚprecÚpercentiles_round_typeÚint_idxÚoutÚunique_pctss         rj   Úformat_percentilesrp  
  s”  € õD ”*˜[Ñ)Ô)€Kõ ˜[Ñ)Ô)ðLåŒv�k QÒ&Ñ'Ô'ðLõ Œv�k QÒ&Ñ'Ô'ðLõ
 ÐJÑKÔKÐKà˜Ñ#€KÝ˜Ñ%Ô%€DØ(×.Ò.¨tÑ4Ô4×;Ò;½CÑ@Ô@ÐåŒjÐ/°Ñ=Ô=€Gå	„vˆg�„ð &Ø$×+Ò+­CÑ0Ô0ˆØ%Ð% Ð%Ñ%Ô%Ð%å”)˜KÑ(Ô(€KÝ˜Ñ%Ô%€DÝ
Œ-˜­6Ð
2Ñ
2Ô
2€CØ˜wÔ'×-Ò-Ñ/Ô/×6Ò6µsÑ;Ô;×BÒBÅ3ÑGÔG€Cˆ�Là  Ô)×/Ò/°Ñ5Ô5×<Ò<½SÑAÔA€Cˆˆ�MØ!Ð!˜SÐ!Ñ!Ô!Ð!rl   r  rq   c                ór  — | d         dk    r| d         nd }| d         dk     rd| d         z
  nd }t          j        | ||¬¦  «        }t          |¦  «        }t          j        t          j        t          j        |¦  «        ¦  «        ¦  «                             t          ¦  «         }t          d|¦  «        }|S )Nr   éÿÿÿÿr_  )Úto_beginÚto_endrn   )	r/  Úediff1dr
  ÚfloorÚlog10rr   rg  rq   rF  )r  rs  rt  Údiffrk  s        rj   re  re  I  s�   € Ø  œ8 aš<˜<ˆu�QŒxˆx¨T€HØ % b¤	¨C¢ ˆS�5˜”9‰_ˆ_°T€FÝŒ:�e h°vÐ>Ñ>Ô>€DÝˆt‰9Œ9€DÝŒH•R”X�bœf T™lœlÑ+Ô+Ñ,Ô,×3Ò3µCÑ8Ô8Ð8€DÝˆq�$‰<Œ<€DØ€Krl   r   r=  úNaTType | TimestamprM  c                ó6   — | t           u r|S t          | ¦  «        S rÙ   )r   r^   ©r=  rM  s     rj   Ú_format_datetime64r|  S  s   € Ø�C€x€xØˆõ ˆq‰6Œ6€Mrl   rª  c                ól   — t          | t          ¦  «        r|S |r|                      |¦  «        S | j        S rÙ   )r€   r   ÚstrftimeÚ
_date_repr)r=  rM  rª  s      rj   Ú_format_datetime64_dateonlyr€  \  s?   € õ
 �!•WÑÔð Øˆàð Ø�zŠz˜+Ñ&Ô&Ð&ð Œ|Ðrl   Úis_dates_onlyr]   r   c                ó    ‡‡— | rˆˆfd„S ˆfd„S )z]Return a formatter callable taking a datetime64 as input and providing
    a string as outputc                ó(   •— t          | ‰‰¬¦  «        S )N)rM  rª  )r€  )r=  rª  rM  s    €€rj   ræ  z'get_format_datetime64.<locals>.<lambda>r  s   ø€ Õ4Ø�w¨Kð
ñ 
ô 
€ rl   c                ó&   •— t          | ‰¬¦  «        S )N)rM  )r|  r{  s    €rj   ræ  z'get_format_datetime64.<locals>.<lambda>v  s   ø€ Õ+¨A°wÐ?Ñ?Ô?€ rl   r³   )r�  rM  rª  s    ``rj   Úget_format_datetime64r…  k  s?   øø€ ð ð @ð
ð 
ð 
ð 
ð 
ð 	
ð @Ð?Ð?Ð?Ð?rl   c                  ó"   — e Zd ZU ded<   dd„ZdS )rÒ  r'   rÅ  ra   rŒ   c                ó´   ‡— | j         j        }| j                              t          ¦  «        }| j        pt          || j        ¬¦  «        Šˆfd„|D ¦   «         }|S )zwe by definition have a TZ)rª  c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r³   r³   rJ  s     €rj   r9  z:_Datetime64TZFormatter._format_strings.<locals>.<listcomp>ƒ  s!   ø€ Ð3Ð3Ð3 q�i�i ‘l”lÐ3Ð3Ð3rl   )rÅ  Ú_is_dates_onlyrg  r+  rP  r…  rª  )ri   ÚidorÅ  r§   rP  s       @rj   rà  z&_Datetime64TZFormatter._format_strings|  si   ø€ àŒkÔ(ˆØ”×#Ò#¥FÑ+Ô+ˆØ”Nð 
Õ&;Ø˜TÔ-ð'
ñ '
ô '
ˆ	ð 4Ð3Ð3Ð3¨FÐ3Ñ3Ô3ˆ
àÐrl   Nr¯   r[  r³   rl   rj   rÒ  rÒ  y  s6   € € € € € € ØÐÐÑð	ð 	ð 	ð 	ð 	ð 	rl   rÒ  c                  ó8   ‡ — e Zd ZU ded<   	 ddˆ fd„Zdd
„Zˆ xZS )rÓ  r)   rÅ  r   rM  r^   ra   rb   c                óJ   •—  t          ¦   «         j        |fi |¤Ž || _        d S rÙ   )rú  rk   rM  )ri   rÅ  rM  rý  rþ  s       €rj   rk   z_Timedelta64Formatter.__init__‹  s/   ø€ ð 	�‰ŒÔ˜Ð*Ð* 6Ð*Ð*Ð*ØˆŒˆˆrl   rŒ   c                óp   ‡— | j         pt          | j        | j        d¬¦  «        Šˆfd„| j        D ¦   «         S )NF)rM  Úboxc                ó&   •— g | ]} ‰|¦  «        ‘ŒS r³   r³   rJ  s     €rj   r9  z9_Timedelta64Formatter._format_strings.<locals>.<listcomp>™  s!   ø€ Ð2Ð2Ð2 �	�	˜!‘”Ð2Ð2Ð2rl   )rP  Úget_format_timedelta64rÅ  rM  )ri   rP  s    @rj   rà  z%_Timedelta64Formatter._format_strings•  sJ   ø€ Ø”Nð 
Õ&<ØŒK ¤°5ð'
ñ '
ô '
ˆ	ð 3Ð2Ð2Ð2 d¤kÐ2Ñ2Ô2Ð2rl   ©r   )rÅ  r)   rM  r^   ra   rb   r¯   rT  rB  s   @rj   rÓ  rÓ  ˆ  si   ø€ € € € € € ØÐÐÑð
 ðð ð ð ð ð ð ð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3rl   rÓ  Fr)   ústr | floatrŽ  c                ó6   ‡‡‡— | j         }|rdŠndŠˆˆˆfd„}|S )z�
    Return a formatter function for a range of timedeltas.
    These will all have the same format argument

    If box, then show the return in quotes
    NÚlongc                óÐ   •— | �t          | ¦  «        rt          | ¦  «        r‰S t          | t          ¦  «        st          | ¦  «        } |                      ‰¬¦  «        }‰rd|› d�}|S )NrG  ú')r    r$   r€   r   Ú
_repr_base)r=  r«   rŽ  rò  rM  s     €€€rj   rY  z*get_format_timedelta64.<locals>._formatter®  sm   ø€ Øˆ9� 1™œˆ9­$¨q©'¬'ˆ9ØˆNå˜!�YÑ'Ô'ð 	Ý˜!‘”ˆAð —’ V�Ñ,Ô,ˆØð 	#Ø"˜�]�]�]ˆFØˆrl   )r‰  )rÅ  rM  rŽ  Ú	even_daysrY  rò  s    ``  @rj   r�  r�  œ  sN   øøø€ ð Ô%€Iàð Øˆˆàˆðð ð ð ð ð ð ð Ðrl   r5  r6  rg   úprinting._TextAdjustment | Nonec                ó\  ‡‡‡‡— t          | ¦  «        dk    s|dk    r| S |€t          j        ¦   «         Šn|Št          ˆfd„| D ¦   «         ¦  «        Š|�t          |‰¦  «        Št	          d¦  «        Š‰�‰‰k    r‰Šdˆˆˆfd„Šˆfd	„| D ¦   «         } ‰                     | ‰|¬
¦  «        }|S )Nr   rú   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rÙ   r4  )r  r=  Ú
adjustments     €rj   r>  z$_make_fixed_width.<locals>.<genexpr>Ì  s/   øè è € Ð5Ð5¨�*—.’. Ñ#Ô#Ð5Ð5Ð5Ð5Ð5Ð5rl   r¹   r=  r^   ra   c                ól   •— ‰�0‰dk    ‰                      | ¦  «        ‰k    z  r| d ‰dz
  …         dz   } | S )Nr˜   r™   r4  )r=  rœ  Úconf_maxrL  s    €€€rj   Újustz_make_fixed_width.<locals>.justÕ  sG   ø€ ØÐØ˜1’ §¢°Ñ!2Ô!2°WÒ!<Ñ=ð -Ø�m˜ !™�mÔ$ uÑ,�Øˆrl   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r³   r³   )r  r=  rŸ  s     €rj   r9  z%_make_fixed_width.<locals>.<listcomp>Û  s!   ø€ Ð(Ð(Ð(˜1ˆtˆt�A‰wŒwÐ(Ð(Ð(rl   rš   )r=  r^   ra   r^   )rp   r5   rf   rF  r   rH   )	r5  rH   r6  rg   r«   rœ  rž  rŸ  rL  s	        @@@@rj   rB  rB  ¾  sþ   øøøø€ õ ˆ7�|„|�qÒÐ˜G uÒ,Ð,Øˆà
€{ÝÔ,Ñ.Ô.ˆ
ˆ
àˆ
åÐ5Ð5Ð5Ð5¨WÐ5Ñ5Ô5Ñ5Ô5€GàÐÝ�g˜wÑ'Ô'ˆåÐ0Ñ1Ô1€HØÐ ¨(Ò 2Ð 2Øˆðð ð ð ð ð ð ð ð )Ð(Ð(Ð( Ð(Ñ(Ô(€GØ×Ò ¨°wÐÑ?Ô?€FØ€Mrl   Ústr_complexesc                ó  ‡	— g g }}| D ]w}t          j        d|¦  «        }|                     d                     |dd…         ¦  «        ¦  «         |                     d                     |dd…         ¦  «        ¦  «         Œxt	          | ¦  «        }t          ||z   |¦  «        }t	          |¦  «        dk    rg S t          d„ |D ¦   «         ¦  «        dz
  Š	ˆ	fd	„t          |d|…         ||d…         ¦  «        D ¦   «         }|S )
z‰
    Separates the real and imaginary parts from the complex number, and
    executes the _trim_zeros_float method on each of those.
    z([j+-])ry   Néüÿÿÿéþÿÿÿr   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rÙ   r4  )r  Úparts     rj   r>  z&_trim_zeros_complex.<locals>.<genexpr>ö  s(   è è € Ð;Ð; d�˜D™	œ	Ð;Ð;Ð;Ð;Ð;Ð;rl   rn   c                óR   •— g | ]#\  }}||d          z   |dd…         d‰› �›z   dz   ‘Œ$S )r   rn   Nú>r  r³   )r  Úreal_ptÚimag_ptÚpadded_lengths      €rj   r9  z'_trim_zeros_complex.<locals>.<listcomp>÷  sc   ø€ ð ð ð ñ
 ˆG�Wð	 	Ø
�!Œ*ñ	à�Q�R�RŒ[Ð
+˜=Ð
+Ð
+Ð
+ñ	,ð ñ	ðð ð rl   )Úrer¡   rD  r¤   rp   r.  rF  r  )
r¡  rÕ   Ú	real_partÚ	imag_partr=  ÚtrimmedÚnÚpadded_partsÚpaddedr«  s
            @rj   r-  r-  à  s,  ø€ ð
 ˜rˆy€IØð 2ð 2ˆõ
 ”(˜: qÑ)Ô)ˆØ×Ò˜Ÿš ¨¨"¨¤Ñ.Ô.Ñ/Ô/Ð/Ø×Ò˜Ÿš ¨¨B¨¤Ñ0Ô0Ñ1Ô1Ð1Ð1õ
 	ˆMÑÔ€AÝ$ Y°Ñ%:¸GÑDÔD€LÝ
ˆ<ÑÔ˜AÒÐØˆ	ÝÐ;Ð;¨lÐ;Ñ;Ô;Ñ;Ô;¸aÑ?€Mðð ð ð õ
 !$ L°°!°Ô$4°lÀ1À2À2Ô6FÑ GÔ Gðñ ô €Fð €Mrl   Ú	str_floatc                ód   — |                       d¦  «        } |                      d¦  «        r| dz  } | S )zX
    Trims trailing zeros after a decimal point,
    leaving just one if necessary.
    Ú0rÉ   )ÚrstripÚendswith)r³  s    rj   rä  rä    s=   € ð
 × Ò  Ñ%Ô%€IØ×Ò˜#ÑÔð Ø�SÑˆ	àÐrl   Ú
str_floatsúArrayLike | list[str]c                ó¾   ‡‡‡— | }t          j        d‰› d�¦  «        Šdˆfd„Šdˆfd„} ||¦  «        rˆfd	„|D ¦   «         } ||¦  «        °ˆˆfd
„|D ¦   «         }|S )z‰
    Trims the maximum number of trailing zeros equally from
    all numbers containing decimals, leaving just one if
    necessary.
    z^\s*[\+-]?[0-9]+\z[0-9]*$ra   r]   c                ó2   •— t          j        ‰| ¦  «        d uS rÙ   )r¬  Úmatch)r=  Únumber_regexs    €rj   Úis_number_with_decimalz1_trim_zeros_float.<locals>.is_number_with_decimal  s   ø€ ÝŒx˜ aÑ(Ô(°Ð4Ð4rl   rÅ  r¹  c                óx   •— ˆfd„| D ¦   «         }t          |¦  «        dk    ot          d„ |D ¦   «         ¦  «        S )zñ
        Determine if an array of strings should be trimmed.

        Returns True if all numbers containing decimals (defined by the
        above regular expression) within the array end in a zero, otherwise
        returns False.
        c                ó*   •— g | ]} ‰|¦  «        ¯|‘ŒS r³   r³   ©r  r=  r¾  s     €rj   r9  z:_trim_zeros_float.<locals>.should_trim.<locals>.<listcomp>#  s*   ø€ ÐBÐBÐB˜Ð(>Ð(>¸qÑ(AÔ(AÐB�1ÐBÐBÐBrl   r   c              3  ó@   K  — | ]}|                      d ¦  «        V — ŒdS )rµ  N©r·  rb  s     rj   r>  z9_trim_zeros_float.<locals>.should_trim.<locals>.<genexpr>$  s,   è è € Ð'IÐ'I¸A¨¯
ª
°3©¬Ð'IÐ'IÐ'IÐ'IÐ'IÐ'Irl   )rp   rú   )rÅ  Únumbersr¾  s     €rj   Úshould_trimz&_trim_zeros_float.<locals>.should_trim  sL   ø€ ð CÐBÐBÐB˜fÐBÑBÔBˆÝ�7‰|Œ|˜aÒÐI¥CÐ'IÐ'IÀÐ'IÑ'IÔ'IÑ$IÔ$IÐIrl   c                ó>   •— g | ]} ‰|¦  «        r
|d d…         n|‘ŒS )Nrr  r³   rÁ  s     €rj   r9  z%_trim_zeros_float.<locals>.<listcomp>'  s6   ø€ ÐOÐOÐOÀ!Ð3Ð3°AÑ6Ô6Ð=�1�S�b�S”6�6¸AÐOÐOÐOrl   c                ó^   •— g | ])} ‰|¦  «        r|                      ‰¦  «        r|d z   n|‘Œ*S )rµ  rÃ  )r  r=  rÕ   r¾  s     €€rj   r9  z%_trim_zeros_float.<locals>.<listcomp>*  sR   ø€ ð ð ð àð *Ð)¨!Ñ,Ô,ÐK°·²¸GÑ1DÔ1DÐKˆˆC‰ˆÈ!ðð ð rl   r~  )rÅ  r¹  ra   r]   )r¬  Úcompile)r¸  rÕ   r¯  rÅ  r«   r¾  r½  s    `   @@rj   r.  r.    sà   øøø€ ð €GÝ”:ÐC°7ÐCÐCÐCÑDÔD€Lð5ð 5ð 5ð 5ð 5ð 5ð	Jð 	Jð 	Jð 	Jð 	Jð 	Jð ˆ+�gÑ
Ô
ð PØOÐOÐOÐOÀwÐOÑOÔOˆð ˆ+�gÑ
Ô
ð Pðð ð ð ð àðñ ô €Fð €Mrl   rT   r,   c                ód   — t          | t          ¦  «        rt          j        | j        Ž S | j        d uS rÙ   )r€   r-   ÚcomÚany_not_noner}  rV   )rT   s    rj   rž   rž   1  s1   € Ý�%�Ñ$Ô$ð &ÝÔ ¤Ð-Ð-àŒz Ð%Ð%rl   c                  ó�   — e Zd ZdZi dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“Z	 d1d2d,„Zd3d0„Zd$S )4ÚEngFormatterzl
    Formats float values according to engineering format.

    Based on matplotlib.ticker.EngFormatter
    ièÿÿÿr[  iëÿÿÿÚziîÿÿÿÚaiñÿÿÿrÄ  iôÿÿÿÚpi÷ÿÿÿr°  iúÿÿÿÚuéýÿÿÿrË  r   ry   r˜   rm  r5  rÊ  é	   ÚGrÎ  ÚTé   ÚPé   ÚEé   ÚZé   ÚYNFÚaccuracyr`   Úuse_eng_prefixr]   ra   rb   c                ó"   — || _         || _        d S rÙ   ©rÞ  rß  )ri   rÞ  rß  s      rj   rk   zEngFormatter.__init__T  s   € ð !ˆŒØ,ˆÔÐÐrl   ÚnumÚfloatr^   c                ó,  — t          t          |¦  «        ¦  «        }t          j        |¦  «        rdS t          j        |¦  «        rdS d}|dk     rd}| }|dk    rGt          t	          t          j        |                     ¦   «         dz  ¦  «        dz  ¦  «        ¦  «        }nt          d¦  «        }|                     t          | j
                             ¦   «         ¦  «        ¦  «        }| 	                    t          | j
                             ¦   «         ¦  «        ¦  «        }t	          |¦  «        }| j        r| j
        |         }n|dk     rd| d›�}nd	|d›�}||z  d
|z  z  }| j        €d}nd| j        d›d�}|                     ||¬¦  «        }	|	S )añ  
        Formats a number in engineering notation, appending a letter
        representing the power of 1000 of the original number. Some examples:
        >>> format_eng = EngFormatter(accuracy=0, use_eng_prefix=True)
        >>> format_eng(0)
        ' 0'
        >>> format_eng = EngFormatter(accuracy=1, use_eng_prefix=True)
        >>> format_eng(1_000_000)
        ' 1.0M'
        >>> format_eng = EngFormatter(accuracy=2, use_eng_prefix=False)
        >>> format_eng("-1e-6")
        '-1.00E-06'

        @param num: the value to represent
        @type num: either a numeric value or a string that can be converted to
                   a numeric value (as per decimal.Decimal constructor)

        @return: engineering formatted string
        rQ   Úinfrn   r   rr  r˜   zE-Ú02dzE+r6  Nz{mant: g}{prefix}z{mant: .rã  z
f}{prefix})ÚmantÚprefix)r
   r^   Úis_nanÚis_infiniterq   Úmathrv  rw  rr   rF  ÚENG_PREFIXESr  rß  rÞ  rò  )
ri   râ  ÚdnumÚsignÚpow10Ú	int_pow10rè  rç  Ú
format_strr  s
             rj   Ú__call__zEngFormatter.__call__Z  s�  € õ( •s˜3‘x”xÑ Ô ˆåŒ>˜$ÑÔð 	Ø�5åÔ˜tÑ$Ô$ð 	Ø�5àˆà�!Š8ˆ8ØˆDØ�5ˆDà�1Š9ˆ9Ý�C¥¤
¨4¯:ª:©<¬<¸!Ñ+;Ñ <Ô <¸qÑ @ÑAÔAÑBÔBˆEˆEå˜A‘J”JˆEà—	’	�#˜dÔ/×4Ò4Ñ6Ô6Ñ7Ô7Ñ8Ô8ˆØ—	’	�#˜dÔ/×4Ò4Ñ6Ô6Ñ7Ô7Ñ8Ô8ˆÝ˜‘J”Jˆ	àÔð 	*ØÔ& yÔ1ˆFˆFØ˜Š]ˆ]Ø*˜9˜*Ð*Ð*Ð*ˆFˆFà)˜)Ð)Ð)Ð)ˆFà�d‰{˜b %™iÑ(ˆàŒ=Ð Ø,ˆJˆJàC T¤]ÐCÐCÐCÐCˆJà×%Ò%¨4¸Ð%Ñ?Ô?ˆ	àÐrl   rù  )rÞ  r`   rß  r]   ra   rb   )râ  rã  ra   r^   )r�   r°   r±   r²   rì  rk   rò  r³   rl   rj   rÍ  rÍ  8  s!  € € € € € ðð ðØˆSðàˆSðð 	ˆSðð 	ˆSð	ð
 	ˆSðð 	ˆCðð 	ˆCðð 	ˆCðð 	
ˆ2ðð 	
ˆ3ðð 	
ˆ3ðð 	
ˆ3ðð 	ˆCðð 	ˆCðð 	ˆCðð  	ˆCð!ð" 	ˆCð#€Lð* CHð-ð -ð -ð -ð -ð;ð ;ð ;ð ;ð ;ð ;rl   rÍ  r˜   rÞ  rß  rb   c                óB   — t          dt          | |¦  «        ¦  «         dS )a  
    Format float representation in DataFrame with SI notation.

    Parameters
    ----------
    accuracy : int, default 3
        Number of decimal digits after the floating point.
    use_eng_prefix : bool, default False
        Whether to represent a value with SI prefixes.

    Returns
    -------
    None

    Examples
    --------
    >>> df = pd.DataFrame([1e-9, 1e-3, 1, 1e3, 1e6])
    >>> df
                  0
    0  1.000000e-09
    1  1.000000e-03
    2  1.000000e+00
    3  1.000000e+03
    4  1.000000e+06

    >>> pd.set_eng_float_format(accuracy=1)
    >>> df
             0
    0  1.0E-09
    1  1.0E-03
    2  1.0E+00
    3  1.0E+03
    4  1.0E+06

    >>> pd.set_eng_float_format(use_eng_prefix=True)
    >>> df
            0
    0  1.000n
    1  1.000m
    2   1.000
    3  1.000k
    4  1.000M

    >>> pd.set_eng_float_format(accuracy=1, use_eng_prefix=True)
    >>> df
          0
    0  1.0n
    1  1.0m
    2   1.0
    3  1.0k
    4  1.0M

    >>> pd.set_option("display.float_format", None)  # unset option
    rd   N)r   rÍ  rá  s     rj   Úset_eng_float_formatrô  ˜  s&   € õn Ð%¥|°H¸nÑ'MÔ'MÑNÔNÐNÐNÐNrl   ry   rg  r   Úsentinelúbool | object | strúlist[dict[int, int]]c                ó2  — t          | ¦  «        dk    rg S dgt          | d         ¦  «        z  }g }| D ]c}d}i }t          |¦  «        D ]#\  }}||         r||k    rŒd||<   ||z
  ||<   |}Œ$t          |¦  «        |z
  ||<   |                     |¦  «         Œd|S )a�  
    For each index in each level the function returns lengths of indexes.

    Parameters
    ----------
    levels : list of lists
        List of values on for level.
    sentinel : string, optional
        Value which states that no new index starts on there.

    Returns
    -------
    Returns list of maps. For each level returns map of indexes (key is index
    in row and value is length of index).
    r   TF)rp   r@  rD  )	rg  rõ  Úcontrolr«   rX  Ú
last_indexÚlengthsrG  Úkeys	            rj   Úget_level_lengthsrý  Ò  sÍ   € õ$ ˆ6�{„{�aÒÐØˆ	àˆf•s˜6 !œ9‘~”~Ñ%€Gà€FØð ð ˆØˆ
àˆÝ Ñ&Ô&ð 	ð 	‰FˆAˆsØ�qŒzð ˜c Xšo˜oØà"�˜‘
Ø&'¨*¡n�˜
Ñ#Ø�
�
å! %™jœj¨:Ñ5ˆ�
Ñà�Š�gÑÔÐÐà€Mrl   úWriteBuffer[str]Úlinesc                ó    — t          d„ |D ¦   «         ¦  «        rd„ |D ¦   «         }|                      d                     |¦  «        ¦  «         dS )z‘
    Appends lines to a buffer.

    Parameters
    ----------
    buf
        The buffer to write to
    lines
        The lines to append.
    c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S rÙ   )r€   r^   rb  s     rj   r>  z#buffer_put_lines.<locals>.<genexpr>  s,   è è € Ð
-Ð
- !�:�a�ÑÔÐ
-Ð
-Ð
-Ð
-Ð
-Ð
-rl   c                ó,   — g | ]}t          |¦  «        ‘ŒS r³   rr  rb  s     rj   r9  z$buffer_put_lines.<locals>.<listcomp>	  s   € Ð'Ð'Ð'˜A•�Q‘”Ð'Ð'Ð'rl   r}   N)rf  r¼  r¤   )re   rÿ  s     rj   Úbuffer_put_linesr  ý  sZ   € õ Ð
-Ð
- uÐ
-Ñ
-Ô
-Ñ-Ô-ð (Ø'Ð' Ð'Ñ'Ô'ˆØ‡I‚Iˆd�iŠi˜ÑÔÑÔÐÐÐrl   )ra   r´   r@  )r”  r^   re   rƒ  r„  r_   ra   r_   rÙ   )re   rƒ  r„  r_   ra   r¾  )	NrQ   NNrF   rÉ   TNN)rÅ  r6   rP  rR  rW   rÒ   rU   r^   rÆ  r`   rN  rÇ  rH   r^   rÕ   r^   rŽ   rÓ   r¦  r`   rÈ  rR  ra   rŒ   )r\  r]  ra   rŒ   )r  r]  ra   rq   r‘  )r=  ry  rM  r^   ra   r^   rS  )r=  ry  rM  r^   rª  r_   ra   r^   )r�  r]   rM  r^   rª  r_   ra   r   )r   F)rÅ  r)   rM  r’  rŽ  r]   ra   r   )rF   NN)
r5  rŒ   rH   r^   r6  r`   rg   r™  ra   rŒ   )rÉ   )r¡  r6   rÕ   r^   ra   rŒ   )r³  r^   ra   r^   )r¸  r¹  rÕ   r^   ra   rŒ   )rT   r,   ra   r]   )r˜   F)rÞ  rq   rß  r]   ra   rb   )ry   )rg  r   rõ  rö  ra   r÷  )re   rþ  rÿ  rŒ   ra   rb   )ˆr²   Ú
__future__r   Úcollections.abcr   r   r   r   Ú
contextlibr   Úcsvr	   rÕ   r
   Ú	functoolsr   Úior   rë  r¬  Úshutilr   Útypingr   r   r   r   r   Únumpyr/  Úpandas._config.configr   r   Úpandas._libsr   Úpandas._libs.missingr   Úpandas._libs.tslibsr   r   r   Úpandas._libs.tslibs.nattyper   Úpandas.core.dtypes.commonr   r   r   r   r   r    Úpandas.core.dtypes.dtypesr!   r"   r#   Úpandas.core.dtypes.missingr$   r%   Úpandas.core.arraysr&   r'   r(   r)   Úpandas.core.arrays.string_r*   Úpandas.core.baser+   Úpandas.core.commonÚcoreÚcommonrÊ  Úpandas.core.indexes.apir,   r-   r.   r/   Úpandas.core.indexes.datetimesr0   Úpandas.core.indexes.timedeltasr1   Úpandas.core.reshape.concatr2   Úpandas.io.commonr3   r4   r¿   r5   Úpandas._typingr6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   ÚpandasrB   rC   rD   rU  ÚVALID_JUSTIFY_PARAMETERSrN   rP   rÂ   rÆ   rÈ   r�  r‘  r»  r�   r×  rÕ  rÖ  rÑ  rÔ  rp  re  r|  r€  r…  rÒ  rÓ  r�  rB  r-  rä  r.  rž   rÍ  rô  rý  r  r³   rl   rj   ú<module>r#     sá  ððð ð ð #Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð &Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð ðð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð
 0Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð 'Ð &Ð &Ð &Ð &Ð &àð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð6Ð ð 6ð 6ð 6ñ 6ðpÐ ðÐ ð ð ð ñ ð_$ð _$ð _$ð _$ð _$ñ _$ô _$ð _$ðDð ð ð ðBð ð ð ð>Bð Bð Bð Bð Bñ Bô Bð BðJZð Zð Zð Zð Zñ Zô Zð Zð~ /3Øðð ð ð ð ð  àDHðMð Mð Mð Mñ „ðMðP ,0ØØØ"ØØØ!%ØØ*.ðR ð R ð R ð R ð R ðjkð kð kð kð kñ kô kð kð\F0ð F0ð F0ð F0ð F0Ð0ñ F0ô F0ð F0ðRð ð ð ð Ð/ñ ô ð ð#ð #ð #ð #ð #Ð1ñ #ô #ð #ð6ð ð ð ð Ð5ñ ô ð ðB<"ð <"ð <"ð <"ð~ð ð ð ðð ð ð ð ð Ø"ðð ð ð ð ð  JNð@ð @ð @ð @ð @ðð ð ð ð Ð1ñ ô ð ð3ð 3ð 3ð 3ð 3Ð2ñ 3ô 3ð 3ð, !Øðð ð ð ð ðH ØØ+/ð	ð ð ð ð ðDð ð ð ð ðB	ð 	ð 	ð 	ð 7:ð!ð !ð !ð !ð !ðH&ð &ð &ð &ð]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð@7Oð 7Oð 7Oð 7Oð 7Oðv 24ð(ð (ð (ð (ð (ðV ð  ð  ð  ð  ð  rl   