ó
    Ñ]jÉX ã                  óP  • S SK Jr  S SKJrJrJr  S SKrS SKJrJ	r	J
r
JrJrJrJr  S SKrS SKrS SKJr  S SKJrJrJr  S SKJrJr  S SKJr  S S	KJ r J!r!  S S
K"J#r#  S SK$J%r%  S SK&J'r'  S SK(J)r)J*r*J+r+  S SK,J-r-J.r.J/r/  S SK0J1r1J2r2J3r3J4r4  S SK5J6r6J7r7  S SK8J9r9J:r:  S SK;J<s  J=r  S SK>J?r?  S SK@JArA  S SKBJCrC  S SKDJErEJFrF  S SKGJHrH  S SKIJJrJJKrKJLrL  S SKMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrU  S SKVJWrWJXrX  \(       a  S SKJYrY  S SKZJ[r[J\r\J]r]J^r^J_r_J`r`  S SKaJbrb  S0S jrcS1S jrd " S S \C5      re " S! S"\RÌ                  \e5      rf " S# S$\e5      rg  S2         S3S% jjrh          S4S& jri S5         S6S' jjrjS7S( jrkS8S) jrlS9S* jrmS:S+ jrnS;S, jro        S<S- jrp      S=S. jrqS>S/ jrrg)?é    )Úannotations)ÚCallableÚHashableÚSequenceN)ÚTYPE_CHECKINGÚAnyÚLiteralÚNoReturnÚSelfÚcastÚfinal)Ú
get_option)ÚalgosÚ	internalsÚlib)ÚBlockPlacementÚBlockValuesRefs)Ú	Timestamp)ÚAbstractMethodErrorÚPerformanceWarning)Úcache_readonly)Úfind_stack_level)Úvalidate_bool_kwarg)Úfind_common_typeÚinfer_dtype_from_scalarÚnp_can_hold_element)Úensure_platform_intÚis_1d_only_ea_dtypeÚis_list_like)ÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtypeÚSparseDtype)ÚABCDataFrameÚ	ABCSeries)Úarray_equalsÚisna)ÚDatetimeArray)ÚNDArrayBackedExtensionArray)ÚPandasObject)Úensure_wrapped_if_datetimelikeÚextract_array)Úmaybe_convert_indices)ÚIndexÚdefault_indexÚensure_index)ÚBlockÚ
NumpyBlockÚensure_block_shapeÚextend_blocksÚget_block_typeÚmaybe_coerce_valuesÚ	new_blockÚnew_block_2d)Úblockwise_allÚoperate_blockwise)Ú	Generator)Ú	ArrayLikeÚAxisIntÚDtypeObjÚQuantileInterpolationÚShapeÚnpt)ÚExtensionArrayc                ó:   • [        U 5      (       d  g[        U 5      $ )z¼
Find the common dtype for `blocks`.

Parameters
----------
blocks : List[DtypeObj]

Returns
-------
dtype : np.dtype, ExtensionDtype, or None
    None is returned when `blocks` is empty.
N)Úlenr   )Údtypess    Ú[/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/core/internals/managers.pyÚinterleaved_dtyperG   o   s   € ô ˆv�;‰;Øä˜FÓ#Ð#ó    c                óB  • [        U [        5      (       a(  U R                  n [        [        R
                  U 5      n U $ [        U [        5      (       a  [        R
                  " S5      n U $ U [        R
                  " [        5      :X  a  [        R
                  " S5      n U $ )NÚobject)Ú
isinstancer#   Úsubtyper   ÚnpÚdtyper"   Ústr©rN   s    rF   Úensure_np_dtyperQ   ‚   sz   € ô �%œ×%Ñ%Ø—‘ˆÜ”R—X‘X˜uÓ%ˆð
 €Lô	 
�Eœ>×	*Ñ	*Ü—’˜Ó"ˆð €Lð 
”"—(’(œ3“-Ó	Ü—’˜Ó"ˆØ€LrH   c                  ój  • \ rS rSr% SrSrS\S'   S\S'   S\S'   S	\S
'   \SNS j5       rS\S'   S\S'   SOSPS jjr	\
SNS j5       r\SQS j5       r\SRS j5       r\SSS j5       r\SSS j5       rSTSUS jjrSVS jrSWS jr\
SWS j5       r\SVS j5       r\SXS j5       rSYS jrSZS jrS[S jrS\S jrS]S  jrS]S! jr\S^S" j5       rS_S# jrS`S$ jr\
SaS% j5       r  ST   SbS& jjr!\
SUS' j5       r"\
ScS( j5       r#\
SdS) j5       r$\
SOSdS* jj5       r%\
SeS+ j5       r&\
SfS, j5       r'\
SUS- j5       r(\
  Sg         ShS/ jj5       r)SfS0 jr*SfS1 jr+SiS2 jr,SUS3 jr-SjS4 jr.SkSlS5 jjr/SUS6 jr0S7 r1S8SS9.   SmS: jjr2\SVS; j5       r3\SVS< j5       r4SnS= jr5SoS> jr6SUS? jr7SUS@ jr8STSpSA jjr9\SNSB j5       r:SqSC jr;SVSD jr<SUSE jr=SrSF jr>\
  Ss       StSG jj5       r?   SuS.SH.             SvSI jjjr@\AR„                  S.4S.S.SJ.         SwSK jjjrC Ss     SxSL jjrD  Sy       SzSM jjrESrFg){ÚBaseBlockManageré�   a  
Core internal data structure to implement DataFrame, Series, etc.

Manage a bunch of labeled 2D mixed-type ndarrays. Essentially it's a
lightweight blocked set of labeled data to be manipulated by the DataFrame
public API class

Attributes
----------
shape
ndim
axes
values
items

Methods
-------
set_axis(axis, new_labels)
copy(deep=True)

get_dtypes

apply(func, axes, block_filter_fn)

get_bool_data
get_numeric_data

get_slice(slice_like, axis)
get(label)
iget(loc)

take(indexer, axis)
reindex_axis(new_labels, axis)
reindex_indexer(new_labels, indexer, axis)

delete(label)
insert(loc, label, value)
set(label, value)

Parameters
----------
blocks: Sequence of Block
axes: Sequence of Index
verify_integrity: bool, default True

Notes
-----
This is *not* a public API class
© únpt.NDArray[np.intp]Ú_blknosÚ_blklocsútuple[Block, ...]Úblocksúlist[Index]Úaxesc                ó   • [         e©N©ÚNotImplementedError©Úselfs    rF   ÚndimÚBaseBlockManager.ndimÉ   ó   € ä!Ð!rH   ÚboolÚ_known_consolidatedÚ_is_consolidatedc                ó   • [         er^   r_   )rb   rZ   r\   Úverify_integritys       rF   Ú__init__ÚBaseBlockManager.__init__Ð   s   € Ü!Ð!rH   c                ó,   • [        U R                  5      $ r^   )rD   Úitemsra   s    rF   Ú__len__ÚBaseBlockManager.__len__Ó   s   € ä�4—:‘:‹ÐrH   c                ó:   • [        S U R                   5       5      $ )Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr^   ©rD   ©Ú.0Úaxs     rF   Ú	<genexpr>Ú)BaseBlockManager.shape.<locals>.<genexpr>Ù   s   é € Ð1¢y ”S˜—W�W¢yùó   ‚)Útupler\   ra   s    rF   ÚshapeÚBaseBlockManager.shape×   s   € äÑ1 t§y¢yÓ1Ó1Ð1rH   c                ó   • [         er^   r_   ©ÚclsrZ   r\   s      rF   Úfrom_blocksÚBaseBlockManager.from_blocksÛ   re   rH   c                óT   • U R                   c  U R                  5         U R                   $ )zâ
Suppose we want to find the array corresponding to our i'th column.

blknos[i] identifies the block from self.blocks that contains this column.

blklocs[i] identifies the column of interest within
self.blocks[self.blknos[i]]
)rW   Ú_rebuild_blknos_and_blklocsra   s    rF   ÚblknosÚBaseBlockManager.blknosß   s$   € ð �<‰<Ñà×,Ñ,Ô.à�|‰|ÐrH   c                óT   • U R                   c  U R                  5         U R                   $ )z
See blknos.__doc__
)rX   rƒ   ra   s    rF   ÚblklocsÚBaseBlockManager.blklocsï   s$   € ð
 �=‰=Ñ à×,Ñ,Ô.à�}‰}ÐrH   Nc                óP  • Uc  [        S5      /U R                  SS QnU R                  S:X  a]  [        U [        5      (       d   eU R
                  S   nUR                  SS n[        [        SS5      5      nUR                  X4S9nU/nO/ n[        U 5      R                  Xa5      $ )z9return an empty BlockManager with the items axis of len 0Nr   é   ©Ú	placement)r/   r\   rc   rK   ÚSingleBlockManagerrZ   Úvaluesr   ÚsliceÚmake_block_same_classÚtyper€   )rb   r\   ÚblkÚarrÚbpÚnbrZ   s          rF   Ú
make_emptyÚBaseBlockManager.make_emptyú   s¤   € à‰<ä! !Ó$Ð5 t§y¡y°° }Ð5ˆDð �9‰9˜‹>Ü˜dÔ$6×7Ñ7Ð7Ð7Ø—+‘+˜a‘.ˆCØ—*‘*˜R˜a�.ˆCÜ¤ a¨£Ó,ˆBØ×*Ñ*¨3Ð*Ð=ˆBØ�T‰FàˆFÜ�D‹z×%Ñ% fÓ3Ð3rH   c                ó   • g©NTrU   ra   s    rF   Ú__bool__ÚBaseBlockManager.__bool__  ó   € ØrH   c                óB   • U R                  X5        X R                  U'   g r^   )Ú_validate_set_axisr\   )rb   ÚaxisÚ
new_labelss      rF   Úset_axisÚBaseBlockManager.set_axis  s   € à×Ñ Ô1Ø$�	‰	�$ŠrH   c                ó¸   • [        U R                  U   5      n[        U5      nUS:X  a  [        U R                  5      S:X  a  g XC:w  a  [        SU SU S35      eg )NrŠ   r   z#Length mismatch: Expected axis has z elements, new values have z	 elements)rD   r\   rn   Ú
ValueError)rb   rŸ   r    Úold_lenÚnew_lens        rF   rž   Ú#BaseBlockManager._validate_set_axis  sj   € ô �d—i‘i ‘oÓ&ˆÜ�j“/ˆà�1‹9œ˜TŸZ™Z›¨AÓ-ð àÓÜØ5°g°Yð ?Ø&˜i yð2óð ð  rH   c                ó2   • [        U R                  5      S:H  $ ©NrŠ   ©rD   rZ   ra   s    rF   Úis_single_blockÚ BaseBlockManager.is_single_block%  s   € ô �4—;‘;Ó 1Ñ$Ð$rH   c                ó    • U R                   S   $ ©Nr   ©r\   ra   s    rF   rn   ÚBaseBlockManager.items*  ó   € à�y‰y˜‰|ÐrH   c                óB   • U R                   U   nU R                  U5      $ )úž
Check for column `i` if it has references.
(whether it references another array or is itself being referenced)
Returns True if the column has no references.
)r„   Ú_has_no_reference_block)rb   ÚiÚblknos      rF   Ú_has_no_referenceÚ"BaseBlockManager._has_no_reference.  s"   € ð —‘˜A‘ˆØ×+Ñ+¨EÓ2Ð2rH   c                óZ   • U R                   U   R                  R                  5       (       + $ )zœ
Check for block `i` if it has references.
(whether it references another array or is itself being referenced)
Returns True if the block has no references.
©rZ   ÚrefsÚhas_reference)rb   r¶   s     rF   r´   Ú(BaseBlockManager._has_no_reference_block7  s%   € ð —;‘;˜uÑ%×*Ñ*×8Ñ8Ó:Ô:Ð:rH   c                ó  • [        U R                  5      [        UR                  5      :w  a  g[        U R                  5       H>  u  p#UR                  U   R                  Ul        UR                  R	                  U5        M@     g)zn
Adds the references from one manager to another. We assume that both
managers have the same block structure.
N)rD   rZ   Ú	enumerater»   Úadd_reference)rb   Úmgrrµ   r’   s       rF   Úadd_referencesÚBaseBlockManager.add_references?  s\   € ô
 ˆt�{‰{Óœs 3§:¡:›Ó.àÜ §¡Ö,‰FˆAØ—z‘z !‘}×)Ñ)ˆCŒHØ�H‰H×"Ñ" 3Ö'ò -rH   c                óŽ   ^• U R                   U   m[        U4S jUR                   U   R                  R                   5       5      $ )z^
Checks if two blocks from two different block managers reference the
same underlying values.
c              3  ó6   >#   • U  H  nTU" 5       L v •  M     g 7fr^   rU   )ru   Úrefr’   s     €rF   rw   Ú:BaseBlockManager.references_same_values.<locals>.<genexpr>Q  s   øé € ÐTÒ+S C�3™#›%•<Ò+Sùs   ƒ)rZ   Úanyr»   Úreferenced_blocks)rb   rÁ   r¶   r’   s      @rF   Úreferences_same_valuesÚ'BaseBlockManager.references_same_valuesK  s9   ø€ ð
 �k‰k˜%Ñ ˆÜÔT¨3¯:©:°eÑ+<×+AÑ+A×+SÒ+SÓTÓTÐTrH   c                ó®   • [         R                  " [        R                  " U R                   Vs/ s H  oR
                  PM     sn[        S95      $ s  snf ©NrP   )r   ÚuniquerM   ÚarrayrZ   rN   rJ   ©rb   r’   s     rF   Úget_unique_dtypesÚ"BaseBlockManager.get_unique_dtypesS  s4   € Ü�|Š|œBŸHšH¸4¿;º;Ó%Gº;°C§i¤i¹;Ñ%GÌvÑVÓWÐWùÒ%Gs   ¯Ac                ó¼   • [         R                  " U R                   Vs/ s H  oR                  PM     sn[        S9nUR                  U R                  5      $ s  snf rÍ   )rM   rÏ   rZ   rN   rJ   Útaker„   ©rb   r’   rE   s      rF   Ú
get_dtypesÚBaseBlockManager.get_dtypesV  s?   € Ü—’°·²Ó<²¨Ÿ9œ9±Ñ<ÄFÑKˆØ�{‰{˜4Ÿ;™;Ó'Ð'ùò =s   ŸAc                óX   • U R                    Vs/ s H  oR                  PM     sn$ s  snf )a}  
Quick access to the backing arrays of the Blocks.

Only for compatibility with ArrayManager for testing convenience.
Not to be used in actual code, and return value is not the same as the
ArrayManager method (list of 1D arrays vs iterator of 2D ndarrays / 1D EAs).

Warning! The returned arrays don't handle Copy-on-Write, so this should
be used with caution (only in read-mode).
©rZ   rŽ   rÐ   s     rF   ÚarraysÚBaseBlockManager.arraysZ  s"   € ð '+§k¢kÓ2¢k˜s—
”
¡kÑ2Ð2ùÒ2s   �'c                óØ   • [        U 5      R                  n[        U R                  5       H   u  p#US:X  a
  USU 3-  nM  USU SU 3-  nM"     U R                   H  nUSU 3-  nM     U$ )Nr   z
Items: z
Axis z: Ú
)r‘   Ú__name__r¿   r\   rZ   )rb   Úoutputrµ   rv   Úblocks        rF   Ú__repr__ÚBaseBlockManager.__repr__j  sz   € Ü�d“×$Ñ$ˆÜ˜tŸy™yÖ)‰EˆAØ�A‹vØ˜I b TÐ*Ñ*’à˜G A 3 b¨¨Ð-Ñ-’ñ	 *ð —[”[ˆEØ˜˜5˜'�lÑ"ŠFñ !àˆrH   c                ó   • [        U 5      e)zy
To be implemented by the subclasses. Only check the column values
assuming shape and indexes have already been checked.
)r   ©rb   Úothers     rF   Ú_equal_valuesÚBaseBlockManager._equal_valuesv  s   € ô
 " $Ó'Ð'rH   c           	     óú   • [        U[        U 5      5      (       d  gU R                  UR                  p2[        U5      [        U5      :w  a  g[	        S [        X#SS9 5       5      (       d  gU R                  U5      $ )z%
Implementation for DataFrame.equals
Fc              3  óH   #   • U  H  u  pUR                  U5      v •  M     g 7fr^   )Úequals)ru   Úax1Úax2s      rF   rw   Ú*BaseBlockManager.equals.<locals>.<genexpr>ˆ  s    é € ð 
Ú,S¡ ˆC�J‰J�s�OˆOÒ,Sùs   ‚ "T©Ústrict)rK   r‘   r\   rD   ÚallÚzipræ   )rb   rå   Ú	self_axesÚ
other_axess       rF   rê   ÚBaseBlockManager.equals}  sq   € ô
 ˜%¤ d£×,Ñ,Øà $§	¡	¨5¯:©:�:Üˆy‹>œS ›_Ó,ØÜñ 
Ü,/°	ÈdÒ,Só
÷ 
ñ 
ð à×!Ñ! %Ó(Ð(rH   c                ó0  • SU;  d   eU=(       d    / n/ nU Vs0 s H  oUX5   _M	     nnU R                    GH  nU(       aÄ  UR                  5        H°  u  pX[        U[        [        45      (       av  UR
                  S:X  a1  UR                  UR                  R                     R                  X5'   Ma  UR                  SS2UR                  R                  4   R                  X5'   M–  X‡R                  R                     X5'   M²     [        U5      (       a  UR                  " U40 UD6n	O[        Xq5      " S0 UD6n	[        X”5      nGM     [        U 5      R                  X@R                    V
s/ s H  oªR#                  5       PM     sn
5      nU$ s  snf s  sn
f )a  
Iterate over the blocks, collect and create a new BlockManager.

Parameters
----------
f : str or callable
    Name of the Block method to apply.
align_keys: List[str] or None, default None
**kwargs
    Keywords to pass to `f`

Returns
-------
BlockManager
ÚfilterrŠ   NrU   )rZ   rn   rK   r%   r$   rc   ÚilocÚmgr_locsÚindexerÚ_valuesÚcallableÚapplyÚgetattrr4   r‘   r€   r\   Úview)rb   ÚfÚ
align_keysÚkwargsÚresult_blocksÚkÚaligned_argsÚbÚobjÚappliedrv   Úouts               rF   rü   ÚBaseBlockManager.apply�  sQ  € ð* ˜vÓ%Ð%Ð%à×% 2ˆ
Ø%'ˆñ /9Ó9ªj¨˜6™9š©jˆÐ9à—•ˆAÞØ*×0Ñ0Ö2‘F�AÜ! #¬	´<Ð'@×AÑAð Ÿ8™8 q›=Ø(+¯©°·±×1CÑ1CÑ(D×(LÑ(L˜F›Ià(+¯©²°A·J±J×4FÑ4FÐ1FÑ(G×(OÑ(O˜F›Ið %(¯
©
×(:Ñ(:Ñ$;˜›	ñ 3ô ˜�{‰{ØŸ'š' !Ñ. vÑ.‘ä! !œ-Ñ1¨&Ñ1�Ü)¨'ÓA‹Mñ% ô( �4‹j×$Ñ$ ]ÏÊÓ4SÊÀ2·W±W¶YÉÑ4SÓTˆØˆ
ùò/ :ùò, 5Ts   šFÅ,F
c                ó"   • U R                  SUS9$ )Nrü   )Úfunc©rü   )rb   r  s     rF   r'   ÚBaseBlockManager.isnaÃ  s   € à�z‰z˜'¨ˆzÐ-Ð-rH   c                óV   • Ub  [         R                  " S US9nU R                  SUUUS9$ )N)ÚlimitÚfillna)Úvaluer  Úinplace)ÚlibalgosÚvalidate_limitrü   )rb   r  r  r  s       rF   r  ÚBaseBlockManager.fillnaÇ  s<   € àÑä×+Ò+¨D¸Ñ>ˆEà�z‰zØØØØð	 ð 
ð 	
rH   c                óX   • U(       a  SS/nOS/n[        USS9nU R                  SUUUS9$ )Nrå   ÚcondT©Úextract_numpyÚwhere)r   rå   r  ©r,   rü   )rb   rå   r  Úalignr   s        rF   r  ÚBaseBlockManager.whereÔ  sD   € æØ! 6Ð*‰Jà ˜ˆJÜ! %°tÑ<ˆEà�z‰zØØ!ØØð	 ð 
ð 	
rH   c                óX   • U(       a  SS/nOS/n[        USS9nU R                  SUUUS9$ )NÚnewÚmaskTr  Úputmask)r   r   r  r  )rb   r   r  r  r   s        rF   r!  ÚBaseBlockManager.putmaskã  sC   € æØ ˜‰Jà ˜ˆJÜ °4Ñ8ˆCà�z‰zØØ!ØØð	 ð 
ð 	
rH   c                ó"   • U R                  SUS9$ )NÚround)Údecimalsr  )rb   r%  s     rF   r$  ÚBaseBlockManager.roundò  s   € à�z‰z˜'¨HˆzÐ5Ð5rH   c                ó²   • [        US5      n[        R                  " U5      (       a   e[        R                  " U5      (       a   eU R                  SUUUS9$ )Nr  Úreplace)Ú
to_replacer  r  )r   r   r   rü   )rb   r)  r  r  s       rF   r(  ÚBaseBlockManager.replaceö  s^   € ä% g¨yÓ9ˆä×#Ò# J×/Ñ/Ð/Ð/Ü×#Ò# E×*Ñ*Ð*Ð*Ø�z‰zØØ!ØØð	 ð 
ð 	
rH   c                ó&   • U R                   " S0 UD6$ )N)Ú_replace_regexr  ©rb   r  s     rF   Úreplace_regexÚBaseBlockManager.replace_regex  s   € à�zŠzÑ5¨fÑ5Ð5rH   Fc                ód   • [        US5      nU R                  SUUUUS9nUR                  5         U$ )zdo a list replacer  Úreplace_list)Úsrc_listÚ	dest_listr  Úregex)r   rü   Ú_consolidate_inplace)rb   r2  r3  r  r4  Úbms         rF   r1  ÚBaseBlockManager.replace_list  sE   € ô & g¨yÓ9ˆà�Z‰ZØØØØØð ð 
ˆð 	×ÑÔ!Øˆ	rH   c                ó*   • U R                   " SSU0UD6$ )Nr  )Úinterpolater  ©rb   r  r  s      rF   r9  ÚBaseBlockManager.interpolate  s   € Ø�zŠzÑC°ÐC¸FÑCÐCrH   c                ó*   • U R                   " SSU0UD6$ )Nr  )Úpad_or_backfillr  r:  s      rF   r=  Ú BaseBlockManager.pad_or_backfill  s   € Ø�zŠzÑG°WÐGÀÑGÐGrH   c                óL   • U[         R                  L a  S nU R                  SXS9$ )NÚshift)ÚperiodsÚ
fill_value)r   Ú
no_defaultrü   )rb   rA  rB  s      rF   r@  ÚBaseBlockManager.shift"  s&   € ØœŸ™Ò'ØˆJà�z‰z˜'¨7ˆzÐJÐJrH   c                óò  • [        U[        R                  5      (       a2  UR                  U R                  :”  a  [	        SU R                   35      eU R                  S5      (       Gd   U R                  S:X  Gaà  [        U[        5      (       GaÊ  U R                  US      n[        U5      (       a&  UR                  S:X  a  [        R                  " USS9nO[        U5      (       d  U/n[        U5      S:X  a  U R                  SS9$ U R                  S   R                  nUR                  S:X  Ga'  XC   nU R                  SX45        [        U5      n[         R"                  " US   5      (       a  SnO:[        U5      S:”  a  [%        S5      nO[        R&                  " [        U5      5      nXQS'   US   n[        U[        R                  5      (       a%  UR                  S:X  a  [        R                  " USS9n[        U[        R                  5      (       a  [        U5      S:X  a  U $ XaS'   U R                  S   R)                  [        U5      U5        U $ U R                  S	S9n U R+                  S
XS9$ )zQ
Set values with indexer.

For SingleBlockManager, this backs s[indexer] = value
zCannot set values with ndim > r   é   rŠ   ©rŸ   F©ÚdeepNTÚsetitem)rù   r  )rK   rM   Úndarrayrc   r¤   r·   rz   r‡   r   ÚsqueezerD   ÚcopyrZ   rŽ   Ú_iset_split_blockÚlistr   Ú
is_integerr�   ÚarangerJ  rü   )rb   rù   r  Úblk_locrŽ   Úcol_indexerÚrow_indexers          rF   rJ  ÚBaseBlockManager.setitem(  s   € ô �gœrŸz™z×*Ñ*¨w¯|©|¸d¿i¹iÓ/GÜÐ=¸d¿i¹i¸[ÐIÓJÐJà×%Ñ% a×(Ò(ð �y‰y˜AŒ~¤*¨W´e×"<Ò"<ØŸ,™, w¨q¡zÑ2�Ü ×(Ñ(¨W¯\©\¸QÓ->Ü Ÿjšj¨°qÑ9‘GÜ% g×.Ñ.à&˜i�GÜ�w“< 1Ó$ØŸ9™9¨%˜9Ð0Ð0àŸ™ Q™×.Ñ.�Ø—;‘; !Ô#Ø#™_�Fà×*Ñ*Ø˜7ôô # 7›m�Gä—~’~ g¨a¡j×1Ñ1Ø&'™Ü˜W›¨Ó)Ü&+¨D£k™ä&(§i¢i´°G³Ó&=˜Ø!,˜A‘Jà")¨!¡*�KÜ! +¬r¯z©z×:Ñ:¸{×?OÑ?OÐSTÓ?Tä&(§j¢j°À1Ñ&E˜Ü! +¬r¯z©z×:Ñ:¼sÀ;Ó?OÐSTÓ?Tð  $˜Ø!,˜A‘JØ—K‘K ‘N×*Ñ*¬5°«>¸5ÔAØ�Kð —9‘9 $�9Ð'ˆDà�z‰z˜)¨WˆzÐBÐBrH   c                ó"   • U R                  SUS9$ )NÚdiff)Únr  )rb   rX  s     rF   rW  ÚBaseBlockManager.diffa  s   € à�z‰z˜& AˆzÐ&Ð&rH   c                ó"   • U R                  SXS9$ )NÚastype)rN   Úerrorsr  )rb   rN   r\  s      rF   r[  ÚBaseBlockManager.astypee  s   € Ø�z‰z˜(¨%ˆzÐ?Ð?rH   c                ó$   • U R                  S5      $ )NÚconvertr  ra   s    rF   r_  ÚBaseBlockManager.converth  s   € Ø�z‰z˜)Ó$Ð$rH   c                ó&   • U R                   " S0 UD6$ )N)Úconvert_dtypesr  r-  s     rF   rb  ÚBaseBlockManager.convert_dtypesk  s   € Ø�zŠzÑ5¨fÑ5Ð5rH   Únan)Úna_repÚquotingc          	     ó*   • U R                  SUUUUUS9$ )ze
Convert values to native types (strings / python objects) that are used
in formatting (repr / csv).
Úget_values_for_csv)re  rf  Úfloat_formatÚdate_formatÚdecimalr  )rb   ri  rj  rk  re  rf  s         rF   rh  Ú#BaseBlockManager.get_values_for_csvn  s,   € ð �z‰zØ ØØØ%Ø#Øð ð 
ð 	
rH   c                ó:   • [        S U R                   5       5      $ )z>Whether any of the blocks in this manager are extension blocksc              3  ó8   #   • U  H  oR                   v •  M     g 7fr^   ©Úis_extension©ru   rà   s     rF   rw   Ú7BaseBlockManager.any_extension_types.<locals>.<genexpr>�  s   é € Ð?²;¨%×%Ö%²;ùry   )rÈ   rZ   ra   s    rF   Úany_extension_typesÚ$BaseBlockManager.any_extension_types~  s   € ô Ñ?°4·;²;Ó?Ó?Ð?rH   c                óh   • [        U R                  5      S:X  a  U R                  S   R                  $ g)z8return a boolean if we are a single block and are a viewrŠ   r   F)rD   rZ   Úis_viewra   s    rF   rv  ÚBaseBlockManager.is_viewƒ  s.   € ô ˆt�{‰{Ó˜qÓ Ø—;‘;˜q‘>×)Ñ)Ð)ð rH   c                ó–   • U R                    Vs/ s H  o!" UR                  5      (       d  M  UPM     nnU R                  U5      $ s  snf r^   )rZ   rŽ   Ú_combine)rb   Ú	predicater’   rZ   s       rF   Ú_get_data_subsetÚ!BaseBlockManager._get_data_subset’  s:   € Ø!%§¢ÓF¢˜#°	¸#¿*¹*×0E—#¡ˆÐFØ�}‰}˜VÓ$Ð$ùò Gs
   �A­Ac                ó  • U R                    Vs/ s H  o!" UR                  5      (       d  M  UPM     nn[        R                  " [        R                  " U Vs/ s H  oDR
                  R                  PM     sn5      5      nU$ s  snf s  snf r^   )rZ   rŽ   rM   ÚsortÚconcatenaterø   Úas_array)rb   rz  r’   rZ   r  rù   s         rF   Ú_get_data_subset_indicesÚ)BaseBlockManager._get_data_subset_indices–  sa   € Ø!%§¢ÓF¢˜#°	¸#¿*¹*×0E—#¡ˆÐFÜ—'’'œ"Ÿ.š.ÁvÓ)NÂvÀ!¯*©*×*=Ô*=ÁvÑ)NÓOÓPˆØˆùò GùÚ)Ns   �B­BÁB
c                ó  • / nU R                    Hc  nUR                  [        :X  a  UR                  U5        M*  UR                  (       d  M=  UR                  S UR                  5        5       5        Me     U R                  U5      $ )z[
Select blocks that are bool-dtype and columns from object-dtype blocks
that are all-bool.
c              3  óJ   #   • U  H  oR                   (       d  M  Uv •  M     g 7fr^   )Úis_bool©ru   r•   s     rF   rw   Ú1BaseBlockManager.get_bool_data.<locals>.<genexpr>¨  s   é € Ð!Jª|¨¿z½z§"¡"ª|ùs   ‚#š	#)rZ   rN   rf   ÚappendÚ	is_objectÚextendÚ_splitry  )rb   Ú
new_blocksr’   s      rF   Úget_bool_dataÚBaseBlockManager.get_bool_data›  se   € ð ˆ
à—;”;ˆCØ�y‰yœDÓ Ø×!Ñ! #Ö&à——‘Ø×!Ñ!Ñ!J¨s¯z©z¬|Ó!JÖJñ ð �}‰}˜ZÓ(Ð(rH   c                óÒ   • U R                    Vs/ s H  oR                  (       d  M  UPM     nn[        U5      [        U R                   5      :X  a  U $ U R                  U5      $ s  snf r^   )rZ   Ú
is_numericrD   ry  )rb   r’   Únumeric_blockss      rF   Úget_numeric_dataÚ!BaseBlockManager.get_numeric_data¬  sP   € Ø)-¯ªÓGª #¿½Ÿ#©ˆÐGÜˆ~Ó¤# d§k¡kÓ"2Ó2ð ˆKØ�}‰}˜^Ó,Ð,ùò Hs
   �A$§A$c                ó   • [        U5      S:X  ae  U R                  S:X  aE  Ub  U R                  SS U/nOU R                  SS /U R                  SS QnU R	                  U5      $ U R	                  5       $ [
        R                  " [
        R                  " U Vs/ s H  oDR                  R                  PM     sn5      5      n[        R                  " XPR                  S   5      n/ nU HI  nUR                  SS9n[        XhR                  R                     5      Ul        UR!                  U5        MK     [#        U R                  5      nUb  X#S'   U R                  R%                  U5      US'   ['        U 5      R)                  Xs5      $ s  snf )z$return a new manager with the blocksr   rF  NrŠ   FrH  éÿÿÿÿ)rD   rc   rn   r\   r–   rM   r~  r  rø   r€  r   Úget_reverse_indexerr{   rM  r   rù   rˆ  rO  rÔ   r‘   r€   )	rb   rZ   Úindexr\   r  rù   Úinv_indexerrŒ  r•   s	            rF   ry  ÚBaseBlockManager._combine´  sK  € äˆv‹;˜!ÓØ�y‰y˜A‹~àÑ$Ø ŸJ™J r¨˜N¨EÐ2‘Dà ŸJ™J r¨˜NÐ;¨T¯Y©Y°q°r¨]Ð;�DØ—‘ tÓ,Ð,Ø—?‘?Ó$Ð$ô —'’'œ"Ÿ.š.ÁvÓ)NÂvÀ!¯*©*×*=Ô*=ÁvÑ)NÓOÓPˆÜ×-Ò-¨g·z±zÀ!±}ÓEˆà"$ˆ
ÛˆAØ—‘˜U�Ð#ˆBÜ(¨·[±[×5HÑ5HÑ)IÓJˆBŒKØ×Ñ˜bÖ!ñ ô
 �D—I‘I‹ˆàÑØ�‰HØ—*‘*—/‘/ 'Ó*ˆˆQ‰ä�D‹z×%Ñ% jÓ7Ð7ùò *Os   ÂFc                ó,   • [        U R                  5      $ r^   rª   ra   s    rF   ÚnblocksÚBaseBlockManager.nblocksÒ  s   € ä�4—;‘;ÓÐrH   c               ób  • U R                    Vs/ s H  o"R                  5       PM     nnU R                  SUS9nX4l         U R                  S:”  aC  U R                  nUb4  UR                  5       Ul        U R                  R                  5       Ul        U(       a  UR                  5         U$ s  snf )zÁ
Make deep or shallow copy of BlockManager

Parameters
----------
deep : bool, string or None, default True
    If False, return a shallow copy (do not copy data)

Returns
-------
BlockManager
rM  rH  rŠ   )r\   rþ   rü   rc   rW   rM  rX   r5  )rb   rI  rv   Únew_axesÚresr„   s         rF   rM  ÚBaseBlockManager.copyÖ  s‹   € ð )-¯	ª	Ó2ª	 "—G‘G–I©	ˆÐ2à�j‰j˜ dˆjÐ+ˆØŒà�9‰9�q‹=à—\‘\ˆFØÑ!Ø$Ÿk™k›m�”Ø#Ÿ}™}×1Ñ1Ó3�”æØ×$Ñ$Ô&Øˆ
ùò 3s   �B,c                ó   • gr™   rU   ra   s    rF   Úis_consolidatedÚ BaseBlockManager.is_consolidatedô  rœ   rH   c                ó¬   • U R                  5       (       a  U $ [        U 5      " U R                  U R                  SS9nSUl        UR                  5         U$ )zJ
Join together blocks having same dtype

Returns
-------
y : BlockManager
F©rj   )r¢  r‘   rZ   r\   rh   r5  )rb   r6  s     rF   ÚconsolidateÚBaseBlockManager.consolidate÷  sM   € ð ×Ñ×!Ñ!ØˆKô �$ŒZ˜Ÿ™ T§Y¡YÀÑGˆØ#ˆÔØ
×ÑÔ!Øˆ	rH   c                ó   • g r^   rU   ra   s    rF   r5  Ú%BaseBlockManager._consolidate_inplace  s   € ØrH   c                óh   • U R                   U   R                  U5      u  pU R                  UUUUUS9$ )z$
Conform data manager to new index.
)rŸ   rB  Ú
only_slice)r\   ÚreindexÚreindex_indexer)rb   Ú	new_indexrŸ   rB  r«  rù   s         rF   Úreindex_axisÚBaseBlockManager.reindex_axis  sF   € ð "ŸY™Y t™_×4Ñ4°YÓ?Ñˆ	à×#Ñ#ØØØØ!Ø!ð $ð 
ð 	
rH   )Úuse_na_proxyc          	     óš  • UcL  XR                   U   L a  U $ U R                  SS9n[        U R                   5      Ul         XR                   U'   U$ [        U[        R
                  5      (       d   eU(       d  U R                   U   R                  U5        X0R                  :¼  a  [        S5      eUS:X  a  [        U R                  UUUUS95      n	OÌ/ n	U R                   Hº  n
U
R                  [        R                  :X  aj  [        R                  " U
R                  R                  S   [!        U5      4[        R                  S9nU	R#                  [%        XºR&                  SS95        M‹  U	R#                  U
R)                  US	Ub  UOU
R*                  S
95        M¼     [        U R                   5      nXU'   U R                  S:X  a&  U R                   S	U-
     R-                  5       US	U-
  '   [/        U 5      R1                  Xœ5      nUS	:X  a>  U R2                  R                  5       Ul        U R6                  R                  5       Ul        U$ )at  
Parameters
----------
new_axis : Index
indexer : ndarray[intp] or None
axis : int
fill_value : object, default None
allow_dups : bool, default False
only_slice : bool, default False
    Whether to take views, not copies, along columns.
use_na_proxy : bool, default False
    Whether to use an np.void ndarray for newly introduced columns.

pandas-indexer with -1's only.
FrH  ú#Requested axis not found in managerr   )rB  r«  r±  rP   rF  ©rc   rŠ   )rŸ   rB  )r\   rM  rO  rK   rM   rK  Ú_validate_can_reindexrc   Ú
IndexErrorÚ_slice_take_blocks_ax0rZ   rN   ÚvoidÚemptyrŽ   r{   rD   rˆ  r2   rø   Útake_ndrB  rþ   r‘   r€   r„   rW   r‡   rX   )rb   Únew_axisrù   rŸ   rB  Ú
allow_dupsr«  r±  ÚresultrŒ  r’   Úvalsrž  Únew_mgrs                 rF   r­  Ú BaseBlockManager.reindex_indexer   só  € ð4 ‰?ØŸ9™9 T™?Ò*à�à—Y‘Y E�YÐ*ˆFÜ˜tŸy™y›/ˆFŒKØ (�K‰K˜ÑØˆMô ˜'¤2§:¡:×.Ñ.Ð.Ð.ö Ø�I‰I�d‰O×1Ñ1°'Ô:à—9‘9ÓÜÐBÓCÐCà�1‹9ÜØ×+Ñ+ØØ)Ø)Ø!-ð	 ,ð ó‰Jð ˆJØ—{”{�Ø—9‘9¤§¡Ó'ô Ÿ8š8 S§Z¡Z×%5Ñ%5°aÑ%8¼#¸g»,Ð$GÌrÏwÉwÑW�DØ×%Ñ%¤j°·|±|È!Ñ&LÖMà×%Ñ%ØŸ™Ø#Ø!"à.8Ñ.D¡
È#Ï.É.ð	 $ð öñ #ô$ ˜Ÿ	™	“?ˆØ!�‰Ø�9‰9˜‹>Ø!%§¡¨1¨t©8Ñ!4×!9Ñ!9Ó!;ˆH�Q˜‘XÑä�t“*×(Ñ(¨Ó>ˆØ�1‹9à"Ÿk™k×.Ñ.Ó0ˆGŒOØ#Ÿ|™|×0Ñ0Ó2ˆGÔØˆrH   )r±  Úref_inplace_opc          	   #  óä  #   • U[         R                  Ln[        XR                  S   US9u  pxn	U R                  (       aå  U R
                  S   n
US:X  a.  U	S:X  a  g[        [        SU	5      5      nU
R                  X‹S9v •  gU(       a  U R                  S:X  a‹  U(       a  Uc  U
R                  nU(       dD  U(       a=  [        U5       H-  u  pÍU
R                  [        XÝS-   5      [        U5      US9v •  M/     g[        [        SU	5      5      nU
R                  USUUS9v •  gUS:X  a  U R                  U   nU R                  U   nOB[        R                  " U R                  US	US
9n[        R                  " U R                  US	US
9nU(       + n[         R"                  " UUS9 GH½  u  nnUS	:X  aj  [%        U5      u  nn['        U5      (       a+  [)        U5      S:”  a  U Vs/ s H  n[        U5      PM     nnOU/nU H  nU R+                  UUUS9v •  M     Mw  U R
                  U   n
U
R,                  (       dN  U
R.                  (       d=  SnU H3  nU
R1                  US9n[        [        UUS-   5      5      Ul        Uv •  M5     Må  UUR4                     n[7        [)        U5      UR7                  5       S-   5      n[         R8                  " UU5      n[;        U[        5      (       a  U
R                  UUS9nUv •  GM]  U(       aD  [=        UUSS9 H2  u  pÍ[        XÌS-   5      n[        U5      nU
R                  UUS9nUv •  M4     GM¨  U
R                  USUS9nUv •  GMÀ     gs  snf 7f)a<  
Slice/take blocks along axis=0.

Overloaded for SingleBlock

Parameters
----------
slice_or_indexer : slice or np.ndarray[int64]
fill_value : scalar, default lib.no_default
only_slice : bool, default False
    If True, we always return views on existing arrays, never copies.
    This is used when called from ops.blockwise.operate_blockwise.
use_na_proxy : bool, default False
    Whether to use an np.void ndarray for newly introduced columns.
ref_inplace_op: bool, default False
    Don't track refs if True because we operate inplace

Yields
------
Block : New Block
r   )Ú
allow_fillr�   N)Únew_mgr_locsrŠ   )rÄ  rÁ  )rŸ   rÄ  rB  r•  )rB  rÃ  ©Úgroup)rŒ   rB  r±  FrH  Trî   )rŸ   rÄ  )r   rC  Ú_preprocess_slice_or_indexerr{   r«   rZ   r   r�   Úgetitem_block_columnsrc   rB  r¿   rº  r„   r‡   r   ÚlibinternalsÚget_blkno_placementsr   r   rD   Ú_make_na_blockÚ_can_consolidateÚ_validate_ndimrM  rø   rù   ÚmaxÚmaybe_indices_to_slicerK   rñ   )rb   Úslice_or_indexerrB  r«  r±  rÁ  rÃ  Úsl_typeÚslobjÚsllenr’   r”   rµ   Úmlr„   r‡   rÆ  r¶   rø   rN   Ú_Úcol_idxÚ
placementsrŒ   rI  Úmgr_locÚnewblkÚtakerÚmax_lenr•   Úslcs                                  rF   r·  Ú'BaseBlockManager._slice_take_blocks_ax0w  sZ  é € ð<  ¤s§~¡~Ð5ˆ
ä <ØŸj™j¨™m¸
ñ!
Ñˆ˜ð ××Ø—+‘+˜a‘.ˆCà˜'Ó!ð ˜A“:ØÜ#¤E¨!¨U£OÓ4�Ø×/Ñ/°Ð/ÐGÒGØÞ 4§9¡9°£>Þ *Ñ"4Ø!$§¡�Jæ!¦jô "+¨5Ö!1™˜Ø!×7Ñ7Ü! "¨1¡fÓ-Ü)7¸Ó):Ø+9ð 8ð ô ñ "2ð ô (¬¨a°«Ó8�BØŸ+™+ØØØ%'Ø#-ð	 &ð ò ð à�gÓØ—[‘[ Ñ'ˆFØ—l‘l 5Ñ)‰Gä—]’]Ø—‘˜U¨r¸jñˆFô —m’mØ—‘˜e°¸zñˆGð ”ˆÜ+×@Ò@ÀÈuÕU‰OˆE�8Ø˜‹{ô 3°:Ó>‘��qÜ& u×-Ñ-´#°h³-À!Ó2Cñ JRÓ!RÊ¸g¤.°Ö"9É�JÐ!R�Jà"* �Jã!+�IØ×-Ñ-Ø"+Ø#-Ø%1ð .ð ô ó ",ð —k‘k %Ñ(�ð ×+×+°C×4F×4Fð
 !�DÛ#+˜Ø!$§¡¨t Ð!4˜Ü*8¼¸wÈÐRSÉÓ9TÓ*U˜œØ$œó $,ð $ H×$4Ñ$4Ñ5�EÜ!¤# h£-°·±³¸q±ÓA�GÜ×6Ò6°u¸gÓF�Eä! %¬×/Ñ/Ø ×6Ñ6°uÈ8Ð6ÐT˜Ø �Þ#ô &)¨°ÀÔ%F™E˜AÜ"'¨¨q©5£/˜CÜ!/°Ó!3˜BØ!$×!:Ñ!:¸3ÈRÐ!:Ð!P˜Bà"$œHô &Gð !Ÿ[™[¨°QÀX˜[ÐN˜Ø �òm  Vùò "Sùs   ‚G$M0Ç&M+Ç;E5M0c                óh  • U(       aN  Ub   e[        U5      U R                  S   4n[        R                  " U[        R                  S9n[        XQSS9nU$ Ub  U[        R                  L a‡  [        R                  n[        U R                   Vs/ s H  owR                  PM     sn5      nUbE  [        R                  " UR                  [        R                  5      (       a  UR                  U5      n[        U5      U R                  S   4n[        U5      u  p‚[        X„U5      n	[        X‘S9$ s  snf )NrŠ   rP   rF  r´  r‹   )rD   r{   rM   r¹  r¸  r2   rd  rG   rZ   rN   Ú
issubdtyper‘   Úfloatingr   Úmake_na_arrayr8   )
rb   rŒ   rB  r±  r{   r¾  r•   r’   rN   Úblock_valuess
             rF   rË  ÚBaseBlockManager._make_na_block  só   € ö
 ØÑ%Ð%Ð%Ü˜“^ T§Z¡Z°¡]Ð3ˆEÜ—8’8˜E¬¯©Ñ1ˆDÜ˜D°!Ñ4ˆBØˆIàÑ ¬r¯v©vÒ!5ÜŸ™ˆJä%¸D¿KºKÓ&HºK°S§y¤y¹KÑ&HÓIˆEØÑ ¤R§]¢]°5·:±:¼r¿{¹{×%KÑ%KØ"ŸZ™Z¨
Ó3�
ä�Y“ §¡¨A¡Ð/ˆä3°JÓ?ÑˆÜ$ U°:Ó>ˆÜ˜LÑ>Ð>ùò 'Is   ÂD/c                ó”   • U R                   U   n[        XUS9nU R                  U   R                  U5      nU R	                  UUUSS9$ )a  
Take items along any axis.

indexer : np.ndarray[np.intp]
axis : int, default 1
verify : bool, default True
    Check that all entries are between 0 and len(self) - 1, inclusive.
    Pass verify=False if this check has been done by the caller.

Returns
-------
BlockManager
)ÚverifyT)r»  rù   rŸ   r¼  )r{   r-   r\   rÔ   r­  )rb   rù   rŸ   rå  rX  r    s         rF   rÔ   ÚBaseBlockManager.take  sZ   € ð* �J‰J�tÑˆÜ'¨¸6ÑBˆà—Y‘Y˜t‘_×)Ñ)¨'Ó2ˆ
Ø×#Ñ#ØØØØð	 $ð 
ð 	
rH   )ÚreturnÚint©T)rj   rf   rç  ÚNone)rç  r@   ©rZ   úlist[Block]r\   r[   rç  r   )rç  rV   r^   ©rç  r   ©rç  rf   )rŸ   r=   r    r.   rç  rê  ©rç  r.   ©rµ   rè  rç  rf   )r¶   rè  rç  rf   )rÁ   rS   rç  rê  )rÁ   rS   r¶   rè  rç  rf   ©rç  znpt.NDArray[np.object_])rç  úlist[ArrayLike])rç  rO   ©rå   r   rç  rf   )rå   rJ   rç  rf   )r   zlist[str] | Nonerç  r   )r  z
int | Noner  rf   rç  r   )r  rf   rç  r   )r%  rè  rç  r   )r  rf   rç  r   )FF)
r2  ú	list[Any]r3  rô  r  rf   r4  rf   rç  r   )rA  rè  rç  r   )rX  rè  rç  r   )Úraise)r\  rO   rç  r   )re  rO   rç  r   )rz  r   rç  r   )rz  r   rç  ú
np.ndarray)rZ   rì  r—  zIndex | Nonerç  r   )rI  rf   rç  r   ©rç  rê  )NF)r®  r.   rŸ   r=   r«  rf   rç  r   )NFF)r»  r.   rù   znpt.NDArray[np.intp] | NonerŸ   r=   r¼  rf   r«  rf   r±  rf   rç  r   )
rÐ  úslice | np.ndarrayr«  rf   r±  rf   rÁ  rf   rç  zGenerator[Block])rŒ   r   r±  rf   rç  r1   )rŠ   T)rù   rV   rŸ   r=   rå  rf   rç  r   )GrÞ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__Ú__annotations__Úpropertyrc   rk   r   ro   r{   Úclassmethodr€   r„   r‡   r–   rš   r¡   rž   r«   rn   r·   r´   rÂ   rÊ   rÑ   rÖ   rÚ   rá   ræ   rê   rü   r'   r  r  r!  r$  r(  r.  r1  r9  r=  r@  rJ  rW  r[  r_  rb  rh  rs  rv  r{  r�  r�  r’  ry  r›  rM  r¢  r¦  r5  r¯  r­  r   rC  r·  rË  rÔ   Ú__static_attributes__rU   rH   rF   rS   rS   �   sX  ‡ ñ0ðd €Ià!Ó!Ø"Ó"ØÓØ
Óàó"ó ð"ð ÓØÓö"ð óó ðð ó2ó ð2ð ó"ó ð"ð óó ðð óó ðö4ô$ô%ð
 óó ðð  ó%ó ð%ð óó ðô3ô;ô
(ôUôXô(ð ó3ó ð3ô
ô(ð ó)ó ð)ð( (,ð2ð %ð2ð
 
õ2ðh ó.ó ð.ð ó

ó ð

ð ó
ó ð
ð õ
ó ð
ð ó6ó ð6ð ó

ó ð

ð ó6ó ð6ð ð
 Øðàðð ðð ð	ð
 ðð 
ôó ðô(DôHôKô7Côr'ö@ô%ò6ð DIÐRVñ
Ø=@ð
à	õ
ð  ó@ó ð@ð óó ðô%ôô
)ô"-ö8ð< ó ó ð ôô<ôô"ð ð
 Ø ð
àð
ð ð
ð
 ð
ð 
ô
ó ð
ð2 Ø Ø ðUð #ñUàðUð -ðUð ð	Uð ðUð ðUð ðUð 
öUðt —>‘>Ø ð	J!ð #Ø$ñJ!à,ðJ!ð ð	J!ð ðJ!ð ðJ!ð 
öJ!ðZ PUð?Ø'ð?ØHLð?à	õ?ð8 Øð	
à%ð
ð ð
ð ð	
ð
 
÷
ð 
rH   rS   c                  óN  • \ rS rSrSrSr S&       S'S jjrS(S jr\S)S j5       r	S*S jr
S&S+S jjrS,S	 jr\S-S
 j5       r  S.         S/S jjr  S0         S1S jjr S2             S3S jjr S4       S5S jjrS2S6S jjrS(S jrS(S jrS7S jrS8S jrS8S jrS9S jrS:S jrSS.     S;S jjrS7S jrS<S jrSS\R>                  4       S=S jjr S\R>                  4     S>S jjr!S?S  jr"S(S! jr#S(S" jr$\S@S# j5       r%\S@S$ j5       r&S%r'g)AÚBlockManageri=  z(
BaseBlockManager that holds 2D blocks.
rF  c                óÆ   • U(       aZ  U HC  nU R                   UR                   :w  d  M  [        SUR                    SU R                    S35      e   U R                  5         g g )NzNumber of Block dimensions (z) must equal number of axes (Ú))rc   ÚAssertionErrorÚ_verify_integrity)rb   rZ   r\   rj   rà   s        rF   rk   ÚBlockManager.__init__G  sd   € ö ó  �Ø—9‘9 §
¡
Õ*Ü(Ø6°u·z±z°lð C+Ø+/¯9©9¨+°Qð8óð ñ  ð ×"Ñ"Õ$ð rH   c                ój  • U R                   n[        S U R                   5       5      nU R                   H>  nUR                   SS  USS  :w  d  M  [        X#R                   SS  U R                  5        M@     [        U R                  5      U:w  a$  [        S[        U R                  5       SU 35      eg )Nc              3  óL   #   • U  H  n[        UR                  5      v •  M     g 7fr^   )rD   rø   )ru   Úxs     rF   rw   Ú1BlockManager._verify_integrity.<locals>.<genexpr>_  s   é € Ð=²¨Aœ˜AŸJ™JŸ˜²ùó   ‚"$rŠ   zINumber of manager items must equal union of block items
# manager items: z, # tot_items: )r{   ÚsumrZ   Úraise_construction_errorr\   rD   rn   r  )rb   Ú	mgr_shapeÚ	tot_itemsrà   s       rF   r  ÚBlockManager._verify_integrity]  s¤   € Ø—J‘Jˆ	ÜÑ=°·²Ó=Ó=ˆ	Ø—[”[ˆEØ�{‰{˜1˜2ˆ )¨A¨B -Õ/Ü(¨·K±KÀÀ°OÀTÇYÁYÖOñ !ô ˆt�z‰z‹?˜iÓ'Ü ð1Ü14°T·Z±Z³Ð0Að BØ'˜[ð*óð ð (rH   c                ó   • U " XSS9$ )úJ
Constructor for BlockManager and SingleBlockManager with same signature.
Fr¥  rU   r~   s      rF   r€   ÚBlockManager.from_blocksj  s   € ñ
 �6°%Ñ8Ð8rH   c                óL  • [        U R                  5      S:X  a�  U R                  S   R                  [        S5      U45      n[	        [        S[        U5      5      5      n[        UUSU R                  S   R                  S9n[        X@R                  S   R                  5       5      $ [        U R                   Vs/ s H  oUR                  PM     sn5      n[        U 5      n[        U[        5      (       a  [        R                  " U[         S9nO[        R                  " XvS9n[#        U5      nU R                   HÝ  n[%        UR&                  5       HÁ  u  p‰UR                  X�45      n
UR                  R(                  S;   aŒ  [*        R,                  " U
5      (       aq  [/        U
5      (       aa  [        UR                  [0        5      (       aB  UR                  R(                  S:X  a  [         nO[        R2                  nUR5                  U5      nX¢U	'   MÃ     Mß     [        U[        5      (       a  UR7                  5       nUR9                  X&S9n[	        [        S[        U5      5      5      n[        X#SS9n[        X@R                  S   R                  5       5      $ s  snf )	z…
Return the array corresponding to `frame.iloc[loc]`.

Parameters
----------
loc : int

Returns
-------
np.ndarray or ExtensionArray
rŠ   r   N©rŒ   rc   r»   rP   Úiubr  ©rŒ   rc   )rD   rZ   Úigetr�   r   r7   r»   r�   r\   rþ   rG   rN   rK   r"   rM   r¹  rJ   r+   r¿   rø   Úkindr   Úis_floatr'   r    Úfloat64r[  Úconstruct_array_typeÚ_from_sequence)rb   Úlocr½  r”   rà   r’   rN   rX  rµ   ÚrlÚitemÚ	new_dtyper   s                rF   Úfast_xsÚBlockManager.fast_xst  s  € ô ˆt�{‰{Ó˜qÓ ð 37·+±+¸a±.×2EÑ2EÜ�t“˜cÐ"ó3ˆFô  ¤ a¬¨V«Ó 5Ó6ˆBÜØØØØ—[‘[ ‘^×(Ñ(ñ	ˆEô & e¯Y©Y°q©\×->Ñ->Ó-@ÓAÐAä!¸¿ºÓ"Dº°§9¤9¹Ñ"DÓEˆä�‹Iˆä�eœ^×,Ñ,ô
 —X’X˜a¤vÑ.‰Fä—X’X˜aÑ-ˆFÜ3°FÓ;ˆFà—;”;ˆCô # 3§<¡<Ö0‘�Ø—x‘x  Ó)�à—L‘L×%Ñ%¨Ó.ÜŸš T×*Ñ*Ü˜TŸ
™
Ü" 3§9¡9Ô.>×?Ñ?ð —|‘|×(Ñ(¨CÓ/Ü$*™	ä$&§J¡J˜	Ø#Ÿ]™]¨9Ó5�FØ!�r“
ó% 1ñ ô. �eœ^×,Ñ,Ø×,Ñ,Ó.ˆCØ×'Ñ'¨Ð'Ð<ˆFäœE !¤S¨£[Ó1Ó2ˆÜ˜&°QÑ7ˆÜ! %¯©°1©×):Ñ):Ó)<Ó=Ð=ùòW #Es   Â=J!c                óF  • U R                   U R                  U      nUR                  U R                  U   5      n[	        [        S[        U5      5      5      n[        U5      " XESU(       a  UR                  OSS9n[        X`R                  S   R                  5       5      $ )z*
Return the data as a SingleBlockManager.
r   rŠ   Nr  )rZ   r„   r  r‡   r   r�   rD   r‘   r»   r�   r\   rþ   )rb   rµ   Ú	track_refrà   rŽ   r”   r•   s          rF   r  ÚBlockManager.iget½  s‚   € ð —‘˜DŸK™K¨™NÑ+ˆØ—‘˜DŸL™L¨™OÓ,ˆô œE !¤S¨£[Ó1Ó2ˆÜ�%Œ[Ø q¾Y¨u¯zªzÈDñ
ˆô " "§i¡i°¡l×&7Ñ&7Ó&9Ó:Ð:rH   c                óz   • U R                   U R                  U      nUR                  U R                  U   5      nU$ )z·
Return the data for column i as the values (ndarray or ExtensionArray).

Warning! The returned array is a view but doesn't handle Copy-on-Write,
so this should be used with caution.
)rZ   r„   r  r‡   )rb   rµ   rà   rŽ   s       rF   Úiget_valuesÚBlockManager.iget_valuesË  s5   € ð —‘˜DŸK™K¨™NÑ+ˆØ—‘˜DŸL™L¨™OÓ,ˆØˆrH   c                ó  • S/[        U R                  5      -  nU R                   H\  nUR                  nUR                  R                  5       nUR                  S:X  a	  XAUS   '   MB  [        U5       H  u  pVXE   X'   M     M^     U$ )zÿ
Used in the JSON C code to access column arrays.
This optimizes compared to using `iget_values` by converting each

Warning! This doesn't handle Copy-on-Write, so should be used with
caution (current use case of consuming this in the JSON code is fine).
NrŠ   r   )rD   rn   rZ   Ú	_mgr_locsÚarray_valuesÚ_values_for_jsonrc   r¿   )rb   r½  r’   rø   rŽ   rµ   r   s          rF   Úcolumn_arraysÚBlockManager.column_arrays×  s~   € ð ,0¨&´3°t·z±z³?Ñ*Bˆà—;”;ˆCØ—}‘}ˆHØ×%Ñ%×6Ñ6Ó8ˆFØ�{‰{˜aÓà&,�x ‘{Ó#ô (¨Ö1‘F�AØ"(¡)�F“Kó 2ñ ð ˆrH   FNc           	     óR	  ^^^• U R                   c   U R                  S:”  a  U R                  5         [        TR                  5      nU(       dR  TR                  S:X  a  TR
                  mO
[        TSS9mTR                  SS U R                  SS :w  a  [        S5      e[        R                  " U5      (       a^  [        [        U5      nU R                  U   nU R                  U   n[        UR                   5      S:X  a  U R#                  UTUUUTS9$ U/nU(       a  U4S jnOU4S jnU R                  U   n	U R$                  U   R'                  5       n
/ n/ n/ m[(        R*                  " U	S	S
9 GH  u  pÞU R                  U   nX®R,                     nU(       a^  UR/                  T5      (       aH  U R1                  U5      (       d  U R3                  XßU" U5      TS9  Mo  UR5                  Xø" U5      5        Mˆ  UR7                  UR8                  R:                  U   5        UR7                  U5        [        U5      [        UR8                  5      :X  a  TR7                  U5        Mö  U R3                  XßTS9  GM	     T(       aá  [<        R>                  " U R@                  [<        RB                  S9nS	UT'   [<        RD                  " U R@                  [<        RF                  S9nURI                  S5        [<        RJ                  " U R@                  [        T5      -
  5      UU) '   UU RL                     U l&        [O        U4S j[Q        U R                  5       5       5      U l        U(       Ga:  [<        RR                  " U5      n[        U5      n/ nU(       ae  URU                  UU4S jU 5       5        [<        RJ                  " U5      [        U R                  5      -   U RL                  U'   SU R                   U'   O…US   R7                  USS 5      nUR7                  [W        U" U5      [Y        U5      TS95        [        U R                  5      U RL                  U'   [<        RJ                  " U5      U R                   U'   U =R                  [O        U5      -  sl        SU l-        gg)zj
Set new item in-place. Does not consolidate. Adds new Block if not
contained in the current set of items
NrŠ   rF  r´  z9Shape of new values must be compatible with manager shape)r  r¶   r’   r»   c                ó   >• T$ r^   rU   ©rŒ   r  s    €rF   Úvalue_getitemÚ(BlockManager.iset.<locals>.value_getitem,  s   ø€ Ø�rH   c                ó"   >• TU R                      $ r^   )rù   r4  s    €rF   r5  r6  1  s   ø€ Ø˜Y×.Ñ.Ñ/Ð/rH   TrÅ  ©r»   rP   r•  c              3  óN   >#   • U  H  u  pU[        T5      ;  d  M  Uv •  M     g 7fr^   )Úset)ru   rµ   r’   Úremoved_blknoss      €rF   rw   Ú$BlockManager.iset.<locals>.<genexpr>\  s%   øé € ð  Ú"8™˜¸AÄSÈÓEXÑ<X—‘Ò"8ùs   ƒ%œ	%c              3  ód   >#   • U  H%  n[        T[        [        XS -   5      5      TS9v •  M'     g7f)rŠ   ©rŽ   rŒ   r»   N)r8   r   r�   )ru   rØ  r»   r  s     €€rF   rw   r<  i  s8   øé € ð "ò $.˜ô !Ø$Ü"0´°wÈ!ÁÓ1LÓ"MØ!öò
 $.ùs   ƒ-0r   r>  F).rX   rc   rƒ   r   rN   ÚTr3   r{   r  r   rP  r   rè  r„   rZ   rD   r-  Ú_iset_singler‡   rM  rÉ  rÊ  rù   Úshould_storer´   rN  Úset_inplacerˆ  rø   r€  rM   Úzerosr›  Úbool_r¹  ÚintpÚfillrQ  rW   rz   r¿   r  rŠ  r8   r   rg   )rb   r   r  r  r»   Úvalue_is_extension_typer¶   r’   r5  r„   r‡   Úunfit_mgr_locsÚunfit_val_locsÚblkno_lÚval_locsÚblk_locsÚ
is_deletedÚ
new_blknosÚ
unfit_idxrÚunfit_countrŒ  Úunfit_val_itemsr;  s     ` `                 @rF   ÚisetÚBlockManager.isetó  sõ  ú€ ð �=‰=Ñ  T§Y¡Y°£]Ø×,Ñ,Ô.ô #6°e·k±kÓ"BÐÞ&Ø�z‰z˜Q‹ØŸ™‘ä*¨5°qÑ9�à�{‰{˜1˜2ˆ $§*¡*¨Q¨R .Ó0Ü$ØOóð ô �>Š>˜#×Ñô ”s˜C“.ˆCØ—K‘K Ñ$ˆEØ—+‘+˜eÑ$ˆCÜ�3—=‘=Ó! QÓ&Ø×(Ñ(ØØØ#ØØØð )ð ð ð �%ˆCö #öõ
0ð —‘˜SÑ!ˆØ—,‘,˜sÑ#×(Ñ(Ó*ˆàˆØˆØˆÜ!-×!BÒ!BÀ6ÐQUÕ!VÑˆGØ—+‘+˜gÑ&ˆCØ×/Ñ/Ñ0ˆHÞ˜3×+Ñ+¨E×2Ñ2à×3Ñ3°G×<Ñ<Ø×*Ñ*Ø©=¸Ó+BÈð +ó ð —O‘O H¨m¸HÓ.EÔFÙà×%Ñ% c§l¡l×&;Ñ&;¸HÑ&EÔFØ×%Ñ% hÔ/ô �x“=¤C¨¯©Ó$5Ó5Ø"×)Ñ)¨'Ô2Ùð ×*Ñ*¨7À4Ð*ÔHñ- "Wö0 äŸš $§,¡,´b·h±hÑ?ˆJØ)-ˆJ�~Ñ&äŸš $§,¡,´b·g±gÑ>ˆJØ�O‰O˜BÔÜ&(§i¢i°·±¼sÀ>Ó?RÑ0RÓ&SˆJ˜
�{Ñ#Ø% d§l¡lÑ3ˆDŒLÜô  Ü"+¨D¯K©KÔ"8ó ó ˆDŒK÷ ÜŸš¨Ó7ˆJÜ˜j›/ˆKà&(ˆJÞ&ð ×!Ñ!õ "ñ $.ó"ô ô ,.¯9ª9°[Ó+AÄCÈÏÉÓDTÑ+T�—‘˜ZÑ(Ø,-�—‘˜jÒ)ð #1°Ñ"3×":Ñ":¸>È!È"Ð;MÓ"N�à×!Ñ!Ü Ù,¨_Ó=Ü"0°Ó"<Ø!ñôô ,/¨t¯{©{Ó+;�—‘˜ZÑ(Ü,.¯IªI°kÓ,B�—‘˜jÑ)à�KŠKœ5 Ó,Ñ,�Kð (-ˆDÕ$ðO rH   c                ó&  • U R                   U   nU R                  c  U R                  5         [        UR	                  U5      5      nUb.  UR
                  R                  U   n[        U[        U5      US9nOUS   n[        USS 5      n[        U R                   5      n	/ U R                   SU QUPU R                   US-   S QUQ7n
X l         U(       d  Ub  g[        R                  " [        U5      5      U R                  UR
                  R                  '   [        U5       Hj  u  p¼[        R                  " [        U5      5      U R                  UR
                  R                  '   X¹-   U R                  UR
                  R                  '   Ml     g)aï  Removes columns from a block by splitting the block.

Avoids copying the whole block through slicing and updates the manager
after determining the new block structure. Optionally adds a new block,
otherwise has to be done by the caller.

Parameters
----------
blkno_l: The block number to operate on, relevant for updating the manager
blk_locs: The locations of our block that should be deleted.
value: The value to set as a replacement.
refs: The reference tracking object of the value to set.
Nr8  r   rŠ   )rZ   rX   rƒ   rz   Údeleterø   r€  r8   r   rD   rM   rQ  rù   r¿   rW   )rb   rJ  rL  r  r»   r’   Únbs_tupÚlocsÚfirst_nbÚ	nr_blocksÚ
blocks_tuprµ   r•   s                rF   rN  ÚBlockManager._iset_split_block‰  s]  € ð( �k‰k˜'Ñ"ˆà�=‰=Ñ Ø×,Ñ,Ô.ä˜Ÿ
™
 8Ó,Ó-ˆØÑØ—<‘<×(Ñ(¨Ñ2ˆDÜ# E¬>¸$Ó+?ÀdÑK‰Hà˜q‘zˆHÜ˜G A B˜KÓ(ˆGä˜Ÿ™Ó$ˆ	ð
Ø�[‰[˜˜'Ð"ð
àð
ð �[‰[˜ 1™˜Ð'ð
ð ñ	
ˆ
ð !Œæ˜5Ñ,àä35·9²9¼SÀ»]Ó3Kˆ�‰�h×'Ñ'×/Ñ/Ñ0ä˜wÖ'‰EˆAÜ13·²¼3¸r»7Ó1CˆD�M‰M˜"Ÿ+™+×-Ñ-Ñ.Ø01±ˆD�L‰L˜Ÿ™×,Ñ,Ó-ò (rH   c                ó0  • U(       aX  UR                  U5      (       aB  U R                  U5      (       + nU R                  U   nUR                  [	        XˆS-   5      X'S9  g[        X%R                  US9n	U R                  n
/ U
SU QU	PX¤S-   S Q7nX°l        g)zÖ
Fastpath for iset when we are only setting a single position and
the Block currently in that position is itself single-column.

In this case we can swap out the entire Block and blklocs and blknos
are unaffected.
rŠ   )rM  N©rŒ   r»   )rA  r´   r‡   rB  r�   r8   r-  rZ   )rb   r   r  r  r¶   r’   r»   rM  r÷   r•   Ú
old_blocksrŒ  s               rF   r@  ÚBlockManager._iset_single½  s™   € ö$ �s×'Ñ'¨×.Ñ.Ø×3Ñ3°EÓ:Ô:ˆDØ—<‘< Ñ$ˆDØ�O‰OœE $¨q©Ó1°5ˆOÑDØä˜%¯=©=¸tÑDˆØ—[‘[ˆ
ØH�z & 5Ð)ÐH¨2ÐH°
À1¹9¸;Ð0GÑHˆ
Ø ŒØrH   c                óÐ  • U R                  U5      (       dp  U R                  U   nU R                  U   nU R                  U   R                  nUR
                  S:X  a  UR                  5       nOXv/   nU R                  XV/U5        U R                  USS9nU(       a  UR                  X#5        gUR                  U4U5      n	U R                  XR                  R                  SS9  g)zÙ
Set values ("setitem") into a single column (not setting the full column).

This is a method on the BlockManager level, to avoid creating an
intermediate Series at the DataFrame level (`s = df[loc]; s[idx] = value`)
rŠ   F)r'  T)r  N)r·   r„   r‡   rZ   rŽ   rc   rM  rN  r  Úsetitem_inplacerJ  rR  Ú_block)
rb   r   Úidxr  Úinplace_onlyr¶   rR  rŽ   Úcol_mgrr¿  s
             rF   Úcolumn_setitemÚBlockManager.column_setitemÛ  sË   € ð ×%Ñ% c×*Ñ*Ø—K‘K Ñ$ˆEà—l‘l 3Ñ'ˆGà—[‘[ Ñ'×.Ñ.ˆFØ�{‰{˜aÓØŸ™›‘ð   	Ñ*�Ø×"Ñ" 5¨)°VÔ<ð —)‘)˜C¨5�)Ð1ˆÞØ×#Ñ# CÕ/à—o‘o s f¨eÓ4ˆGØ�I‰I�cŸ>™>×0Ñ0¸$ˆIÒ?rH   c                óZ  • U R                   R                  X5      nUR                  S:X  a>  UR                  n[	        U5      S:”  a"  [        SUR                  R                   35      eO[        X0R                  S9n[        [        XS-   5      5      n[        X6US9n[	        U R                  5      (       dS  [        R                  " S/[        R                  S9U l        [        R                  " S/[        R                  S9U l        O"U R#                  U5        U R%                  U5        XPR&                  S'   U =R                  U4-  sl        SU l        [+        S	5      (       aD  [-        S
 U R                   5       5      S:”  a#  [.        R0                  " S[2        [5        5       S9  ggg)z³
Insert item at selected position.

Parameters
----------
loc : int
item : hashable
value : np.ndarray or ExtensionArray
refs : The reference tracking object of the value to set.
rF  rŠ   z-Expected a 1D array, got an array with shape r´  r>  r   rP   FÚperformance_warningsc              3  óB   #   • U  H  oR                   (       + v •  M     g 7fr^   ro  rq  s     rF   rw   Ú&BlockManager.insert.<locals>.<genexpr>#  s   é € ÐDº¨u×*Ñ*×*Ñ*ºùs   ‚éd   a   DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`)Ú
stacklevelN)rn   Úinsertrc   r?  rD   r¤   r{   r3   r   r�   r8   rZ   rM   rÏ   rE  rX   rW   Ú_insert_update_mgr_locsÚ!_insert_update_blklocs_and_blknosr\   rg   r   r  ÚwarningsÚwarnr   r   )rb   r   r"  r  r»   r»  r”   rà   s           rF   rn  ÚBlockManager.insertû  sU  € ð —:‘:×$Ñ$ SÓ/ˆà�:‰:˜‹?Ø—G‘GˆEÜ�5‹z˜A‹~Ü ØCÀEÇGÁGÇMÁMÀ?ÐSóð ð ô
 ' u·9±9Ñ=ˆEäœE #¨Q¡wÓ/Ó0ˆÜ E¸dÑCˆä�4—;‘;×ÑäŸHšH a S´·±Ñ8ˆDŒMÜŸ8š8 Q C¬r¯w©wÑ7ˆD�Là×(Ñ(¨Ô-Ø×2Ñ2°3Ô7à�	‰	�!‰Ø�Š˜�xÑ�à#(ˆÔ ô Ð-×.Ñ.ÜÑD¸¿ºÓDÓDÀsÓJä�MŠMðWô #Ü+Ó-óð Kð /rH   c                óÜ   • [         R                  " U R                  US 5      R                  5       S   nU H2  nU R                  U   nUR
                  R                  U5      Ul        M4     g)zm
When inserting a new Block at location 'loc', we increment
all of the mgr_locs of blocks above that by one.
Nr   )rM   Úbincountr„   ÚnonzerorZ   r-  Úincrement_above)rb   r   r„   r¶   r’   s        rF   ro  Ú$BlockManager._insert_update_mgr_locs.  sY   € ô —’˜TŸ[™[¨¨Ð.Ó/×7Ñ7Ó9¸!Ñ<ˆÛˆEà—+‘+˜eÑ$ˆCØŸM™M×9Ñ9¸#Ó>ˆCŽMò rH   c                ól  • XR                   R                  S   :X  a`  [        R                  " U R                  S5      U l        [        R                  " U R
                  [        U R                  5      5      U l        gUS:X  ad  [        R                  " S/U R                  /5      U l        [        R                  " [        U R                  5      /U R
                  /5      U l        g[        R                  " U R                   U R                  U[        U R                  5      5      u  p#X l        X0l        g)zS
When inserting a new Block at location 'loc', we update our
_blklocs and _blknos.
r   N)r‡   r{   rM   rˆ  rX   rW   rD   rZ   r  rÉ  Úupdate_blklocs_and_blknosr„   )rb   r   Únew_blklocsrN  s       rF   rp  Ú.BlockManager._insert_update_blklocs_and_blknos:  sÎ   € ð —,‘,×$Ñ$ QÑ'Ó'äŸIšI d§m¡m°QÓ7ˆDŒMÜŸ9š9 T§\¡\´3°t·{±{Ó3CÓDˆD�LØ�A‹XäŸNšN¨Q¨C°·±Ð+?Ó@ˆDŒMÜŸ>š>¬C°·±Ó,<Ð+=¸t¿|¹|Ð*LÓMˆD�Lä&2×&LÒ&LØ—‘˜dŸk™k¨3´°D·K±KÓ0@ó'Ñ#ˆKð (ŒMØ%�LrH   c                ó(  • [         R                  " U R                  S   [         R                  S9nSX!'   U) R	                  5       S   nU R                  USSS9nU R                  U)    nXPR                  S   /n[        U 5      " [        U5      USS9$ )z:
Delete selected locations, returning a new BlockManager.
r   rP   T)r«  rÁ  rŠ   Fr¥  )
rM   rC  r{   rD  rv  r·  rn   r\   r‘   rz   )rb   rù   rM  rÚ  ÚnbsÚnew_columnsr\   s          rF   ÚideleteÚBlockManager.ideleteP  sŒ   € ô —X’X˜dŸj™j¨™m´2·8±8Ñ<ˆ
Ø"ˆ
ÑØ�×%Ñ%Ó'¨Ñ*ˆà×)Ñ)¨%¸DÐQUÐ)ÐVˆØ—j‘j * Ñ-ˆØŸY™Y q™\Ð*ˆÜ�DŒzœ% ›* d¸UÑCÐCrH   c                óÐ  • / nU R                    He  nUR                  (       a5  UR                  5        H  nUR                  U5      n[	        XR5      nM!     MI  UR                  U5      n[	        XR5      nMg     [        U5      S:X  a  SnOUS   R                  R                  S   n[        U5      n[        U 5      R                  X R                  S   R                  5       U/5      $ )z¢
Apply grouped reduction function blockwise, returning a new BlockManager.

Parameters
----------
func : grouped reduction function

Returns
-------
BlockManager
r   r•  )rZ   r‰  r‹  rü   r4   rD   rŽ   r{   r/   r‘   r€   r\   rþ   )rb   r  r  r’   Úsbr  Únrowsr—  s           rF   Úgrouped_reduceÚBlockManager.grouped_reduce`  sÆ   € ð &(ˆà—;”;ˆCØ�}�}ð Ÿ*™*ž,�BØ Ÿh™h t›n�GÜ$1°'Ó$I’Mó 'ð Ÿ)™) D›/�Ü -¨gÓ E’ñ ô ˆ}Ó Ó"Ø‰Eà! !Ñ$×+Ñ+×1Ñ1°"Ñ5ˆEÜ˜eÓ$ˆô �D‹z×%Ñ% m·i±iÀ±l×6GÑ6GÓ6IÈ5Ð5QÓRÐRrH   c                óê   • U R                   S:X  d   eU R                   Vs/ s H  o"R                  U5      PM     nn[        S5      n[	        U 5      R                  X0R                  U/5      nU$ s  snf )z™
Apply reduction function blockwise, returning a single-row BlockManager.

Parameters
----------
func : reduction function

Returns
-------
BlockManager
rF  rŠ   )rc   rZ   Úreducer/   r‘   r€   rn   )rb   r  r’   Ú
res_blocksr—  r¿  s         rF   rˆ  ÚBlockManager.reduce‚  sd   € ð �y‰y˜A‹~Ðˆ~à26·+²+Ó>²+¨3—j‘j Ö&±+ˆ
Ð>Ü˜aÓ ˆä�t“*×(Ñ(¨·j±jÀ%Ð5HÓIˆØˆùò	 ?s   ¡A0c                ó   • [        XU5      $ )z?
Apply array_op blockwise with another (aligned) BlockManager.
)r:   )rb   rå   Úarray_ops      rF   r:   ÚBlockManager.operate_blockwise—  s   € ô ! ¨hÓ7Ð7rH   c                ó"   • [        X[        5      $ )ú{
Used in .equals defined in base class. Only check the column values
assuming shape and indexes have already been checked.
)r9   r&   rä   s     rF   ræ   ÚBlockManager._equal_values�  s   € ô
 ˜T¬,Ó7Ð7rH   Úlinear)Úinterpolationc               ó0  • U R                   S:¼  d   e[        U5      (       d   eU R                  S   R                  5       [	        U[
        R                  S9/nU R                   Vs/ s H  oDR                  XS9PM     nn[        U 5      " XS5      $ s  snf )a/  
Iterate over blocks applying quantile reduction.
This routine is intended for reduction type operations and
will do inference on the generated blocks.

Parameters
----------
interpolation : type of interpolation, default 'linear'
qs : list of the quantiles to be computed

Returns
-------
BlockManager
rF  r   rP   )Úqsr’  )
rc   r   r\   rþ   r.   rM   r  rZ   Úquantiler‘   )rb   r”  r’  rž  r’   rZ   s         rF   r•  ÚBlockManager.quantile¤  sŽ   € ð, �y‰y˜A‹~Ðˆ~Ü˜B×ÑÐÐà—I‘I˜a‘L×%Ñ%Ó'¬¨r¼¿¹Ñ)DÐEˆð IMÏÊó
ÚHSÀ�L‰L˜BˆLÓ<Éð 	ð 
ô �DŒz˜&Ó+Ð+ùò	
s   Á(Bc                ó,  • UR                  U R                  5      nUR                  nUR                  (       + nU(       a4  UR                  ) R
                  " UR                  6 nUR                  SS9nO&[        R                  " UR                  S   [        S9n/ n/ n	[        U R                  5      S:X  a  Sn
O=[        U5      [        U R                  5      -  nU[        U5      :X  d   e[        U5      n
U R                   H}  nUR                  nUR                  U
5      nUR!                  UUUUS9u  nnUR#                  U5        U	R#                  U5        UR%                  5       [%        S U 5       5      :X  a  M}   e   X9   n['        XƒU/SS9nU$ )	z×
Return a BlockManager with all blocks unstacked.

Parameters
----------
unstacker : reshape._Unstacker
fill_value : Any
    fill_value for newly introduced missing values.

Returns
-------
unstacked : BlockManager
r   rG  rŠ   rP   )Únew_placementÚneeds_maskingc              3  óL   #   • U  H  n[        UR                  5      v •  M     g 7fr^   )rD   r-  r†  s     rF   rw   Ú'BlockManager.unstack.<locals>.<genexpr>ú  s   é € Ð$HÂ¸2¤S¨¯©×%6Ð%6Âùr  Fr¥  )Úget_new_columnsrn   r®  Úmask_allr   ÚreshapeÚ
full_shaperÈ   rM   rC  rf   rD   rè  rZ   rø   Útile_for_unstackÚ_unstackrŠ  r  r  )rb   Ú	unstackerrB  r  r®  rÃ  Ú
new_mask2Dr™  rŒ  Úcolumns_maskÚfactorÚfacr’   rø   r˜  rZ   r   r6  s                     rF   ÚunstackÚBlockManager.unstackÇ  sv  € ð  ×/Ñ/°·
±
Ó;ˆØ×'Ñ'ˆ	à"×+Ñ+Ô+ˆ
Þð %Ÿ>™>˜/×2Ò2°I×4HÑ4HÐIˆJØ&ŸN™N°˜NÐ2‰MäŸHšH Y×%9Ñ%9¸!Ñ%<ÄDÑIˆMà"$ˆ
Ø)+ˆäˆt�z‰z‹?˜aÓØ‰Fä�kÓ"¤S¨¯©£_Ñ4ˆCØœ#˜c›(“?Ð"�?Ü˜“XˆFà—;”;ˆCØ—|‘|ˆHØ$×5Ñ5°fÓ=ˆMàŸ<™<ØØØ+Ø+ð	 (ð ‰LˆF�Dð ×Ñ˜fÔ%Ø×Ñ Ô%ð —8‘8“:¤Ñ$HÁÓ$HÓ!HÕHÐHÐHñ ð( "Ñ/ˆä˜*°IÐ&>ÐQVÑWˆØˆ	rH   c              #  ó¬   #   • S n[         R                  " [        U R                  US9US9 H"  u  p#X R	                  [        U5      5      4v •  M$     g7f)zm
Yield a tuple of (str(dtype), BlockManager)

Returns
-------
values : a tuple of (str(dtype), BlockManager)
c                ó,   • [        U R                  5      $ r^   )rO   rN   )rà   s    rF   Ú<lambda>Ú+BlockManager.to_iter_dict.<locals>.<lambda>  s   € œC §¡Ô,rH   ©ÚkeyN)Ú	itertoolsÚgroupbyÚsortedrZ   ry  rO  )rb   r®  rN   rZ   s       rF   Úto_iter_dictÚBlockManager.to_iter_dict  sH   é € ñ -ˆÜ&×.Ò.¬v°d·k±kÀsÑ/KÐQTÔU‰MˆEàŸ™¤t¨F£|Ó4Ð4Ô4ò Vùs   ‚AAc                ó�  • [         R                  " U5      =(       a    [        U5      n[        U R                  5      S:X  a3  [
        R                  " U R                  [        S9nUR                  5       $ U R                  (       Ga?  U R                  S   nU[         R                  La0  [         R                  " UR                  S5      (       a  U(       a  OSnUR                  (       a5  UR                  R!                  UUUS9R#                  UR                  5      nOFU(       d   [
        R$                  " UR                  US9nO[
        R&                  " UR                  XS9nU(       a1  UR                  R(                  S;   a  X5[        UR                  5      '   U(       d!  UR+                  5       nSUR,                  l        OU R1                  XS	9nU[         R                  L a   UR                  5       $ UR                  R(                  S:X  a  U(       a   UR                  5       $ X5[        U5      '   UR                  5       $ )
a´  
Convert the blockmanager data into a numpy array.

Parameters
----------
dtype : np.dtype or None, default None
    Data type of the return array.
copy : bool, default False
    If True then guarantee that a copy is returned. A value of
    False does not guarantee that the underlying data is not
    copied.
na_value : object, default lib.no_default
    Value to be used as the missing value sentinel.

Returns
-------
arr : ndarray
r   rP   rÿ   T)rN   Úna_valuerM  )rN   rM  ÚmMF©rN   rµ  )r   r  r'   rD   rZ   rM   r¹  r{   ÚfloatÚ	transposer«   rC  Úis_np_dtyperN   rp  rŽ   Úto_numpyrž  ÚasarrayrÏ   r  rþ   ÚflagsÚ	writeableÚ_interleave)rb   rN   rM  rµ  Ú
passed_nanr“   r’   s          rF   r€  ÚBlockManager.as_array  s­  € ô0 —\’\ (Ó+×>´°X³ˆ
äˆt�{‰{Ó˜qÓ Ü—(’(˜4Ÿ:™:¬UÑ3ˆCØ—=‘=“?Ð"à××ÐØ—+‘+˜a‘.ˆCàœsŸ~™~Ò-ô —?’? 3§9¡9¨c×2Ñ2¶zàà�Dà××ð
 —j‘j×)Ñ)ØØ%Øð *ð ÷ ‘'˜#Ÿ)™)Ó$ñ	 ö
 Ü—j’j §¡°5Ñ9‘ä—h’h˜sŸz™z°ÑB�Þ˜cŸi™iŸn™n°Ó4Ø(0”D˜Ÿ™Ó$Ñ%æØ—h‘h“j�Ø&+�—	‘	Ô#øà×"Ñ"¨Ð"ÐBˆCð ”s—~‘~Ò%Øð �}‰}‹Ðð �Y‰Y�^‰^˜sÓ"¦zØð �}‰}‹Ðð &”�S“	‰Nà�}‰}‹ÐrH   c                óÊ  • U(       d/  [        U R                   Vs/ s H  o3R                  PM     sn5      n[        U5      n[        R
                  " U R                  US9n[        R                  " U R                  S   5      nU[        R                  " S5      :X  aa  U[        R                  L aN  U R                   H<  nUR                  nUR                  U5      nXtUR                  '   SXVR                  '   M>     U$ U R                   H¯  nUR                  nUR                  (       a  UR                  R                  UUS9nOUR                  U5      nXtUR                  '   U[        R                  La4  UR                  R                   S;   a  X$UR                     [#        U5      '   SXVR                  '   M±     UR%                  5       (       d  ['        S5      eU$ s  snf )z\
Return ndarray from blocks with specified item order
Items must be contained in the blocks
rP   r   rJ   rŠ   r·  r¶  z'Some items were not contained in blocks)rG   rZ   rN   rQ   rM   r¹  r{   rC  r   rC  rø   Ú
get_valuesrù   rp  rŽ   r»  r  r'   rð   r  )rb   rN   rµ  r’   r½  Úitemmaskr!  r“   s           rF   r¿  ÚBlockManager._interleave]  s~  € ö ô &Ø&*§k¢kÓ2¢k˜s—”¡kÑ2óˆEô   Ó&ˆÜ—’˜$Ÿ*™*¨EÑ2ˆä—8’8˜DŸJ™J q™MÓ*ˆà”B—H’H˜XÓ&Ó&¨8´s·~±~Ò+Eà—{”{�Ø—\‘\�Ø—n‘n UÓ+�Ø%(�r—z‘zÑ"Ø'(�Ÿ™Ó$ñ	 #ð
 ˆMà—;”;ˆCØ—‘ˆBØ××ð
 —j‘j×)Ñ)ØØ%ð *ð ‘ð
 —n‘n UÓ+�Ø!$�2—:‘:ÑØœsŸ~™~Ò-°#·)±)·.±.ÀDÓ2HØ08�r—z‘zÑ"¤4¨£9Ñ-Ø#$ˆH—Z‘ZÓ ñ! ð$ �|‰|�~‰~Ü Ð!JÓKÐKàˆùòQ 3s   ›G c                ó\   • U R                   (       d  U R                  5         U R                  $ )z8
Return True if more than one block with the same dtype
)rg   Ú_consolidate_checkrh   ra   s    rF   r¢  ÚBlockManager.is_consolidated˜  s%   € ð ×'×'Ø×#Ñ#Ô%Ø×$Ñ$Ð$rH   c                ó&  • [        U R                  5      S:X  a  SU l        SU l        g U R                   Vs/ s H!  oR                  (       d  M  UR
                  PM#     nn[        U5      [        [        U5      5      :H  U l        SU l        g s  snf )NrŠ   T)rD   rZ   rh   rg   rÌ  rN   r:  rÕ   s      rF   rÇ  ÚBlockManager._consolidate_check   sr   € Üˆt�{‰{Ó˜qÓ à$(ˆDÔ!Ø'+ˆDÔ$ØØ'+§{¢{ÓK¢{ ×6JÕ6J“)�#—)”)¡{ˆÐKÜ # F£¬s´3°v³;Ó/?Ñ ?ˆÔØ#'ˆÕ ùò Ls   ·BÁBc                ó    • U R                  5       (       d9  [        U R                  5      U l        SU l        SU l        U R                  5         g g r™   )r¢  Ú_consolidaterZ   rh   rg   rƒ   ra   s    rF   r5  Ú!BlockManager._consolidate_inplaceª  sB   € Ø×#Ñ#×%Ñ%Ü& t§{¡{Ó3ˆDŒKØ$(ˆDÔ!Ø'+ˆDÔ$Ø×,Ñ,Õ.ð	 &rH   c                ó0  • Sn/ nU Hy  nUR                    HN  nUR                  [        S5      5      nUR                  R	                  U5      Ul        UR                  U5        MP     U[        UR                  5      -  nM{     U " [        U5      U5      nU$ )z;
Concatenate uniformly-indexed BlockManagers horizontally.
r   N)	rZ   Úslice_block_columnsr�   r-  Úaddrˆ  rD   rn   rz   )	r   Úmgrsr\   ÚoffsetrZ   rÁ   r’   r•   r¿  s	            rF   Úconcat_horizontalÚBlockManager.concat_horizontal´  s‰   € ð
 ˆØ ˆÛˆCØ—z”z�ð ×,Ñ,¬U°4«[Ó9�Ø!Ÿ|™|×/Ñ/°Ó7�”Ø—‘˜bÖ!ñ "ð ”c˜#Ÿ)™)“nÑ$ŠFñ ñ ”e˜F“m TÓ*ˆØˆrH   c                ó   • [        S5      e)z9
Concatenate uniformly-indexed BlockManagers vertically.
z.This logic lives (for now) in internals.concatr_   )r   rÑ  r\   s      rF   Úconcat_verticalÚBlockManager.concat_verticalÊ  s   € ô
 "Ð"RÓSÐSrH   )rX   rW   rh   rg   rZ   ré  )rZ   zSequence[Block]r\   zSequence[Index]rj   rf   rç  rê  r÷  rë  )r   rè  rç  r�   )rµ   rè  r'  rf   rç  r�   )rµ   rè  rç  r<   )rç  zlist[np.ndarray])FN)
r   úint | slice | np.ndarrayr  r<   r  rf   r»   úBlockValuesRefs | Nonerç  rê  )NN)
rJ  rè  rL  znp.ndarray | list[int]r  zArrayLike | Noner»   rÙ  rç  rê  r^   )r   rè  r  r<   r  rf   r¶   rè  r’   r1   r»   rÙ  rç  rê  ©F)r   rè  rc  rØ  rd  rf   rç  rê  )r   rè  r"  r   r  r<   rç  rê  )rç  r  )r  r   rç  r   )rå   r  rç  r  )rb   r  rå   r  rç  rf   )r”  r.   r’  r?   rç  r   )rç  zGenerator[tuple[str, Self]])rN   únp.dtype | NonerM  rf   rµ  rJ   rç  rö  )rN   rÛ  rµ  rJ   rç  rö  rî  )rÑ  z
list[Self]r\   r[   rç  r   )(rÞ   rù  rú  rû  rü  rc   rk   r  r   r€   r$  r  r*  rÿ  r0  rR  rN  r@  rf  rn  ro  rp  r€  r…  rˆ  r:   ræ   r•  r§  r²  r   rC  r€  r¿  r¢  rÇ  r5  rÓ  rÖ  r  rU   rH   rF   r  r  =  s…  † ñð €Dð "&ð	%àð%ð ð%ð ð	%ð
 
õ%ô,ð ó9ó ð9ôG>öR;ô
ð óó ðð> Ø'+ðT-à%ðT-ð ðT-ð ð	T-ð
 %ðT-ð 
õT-ðt #'Ø'+ð2>àð2>ð )ð2>ð  ð	2>ð
 %ð2>ð 
õ2>ðv (,ðàðð ðð ð	ð
 ðð ðð %ðð 
õð> TYð@Øð@Ø5ð@ØLPð@à	õ@ö@1ôf
?ô&ô,Dô  SôDô*8ô8ð 08ñ	,ð ð,ð -ð	,ð
 
õ,ôF;ôz5ð "&ØØŸ>™>ð	JàðJð ðJð ð	Jð
 
õJð\ "&ØŸ>™>ð6àð6ð ð6ð 
õ	6ôv%ô(ô/ð óó ðð* óTó óTrH   r  c                  óà  • \ rS rSrSr\S$S j5       rSrSrSr	Sr
 S%       S&S jjr\      S'S j5       r\ S(       S)S	 jj5       rS*S
 jrS+S,S jjrS rS-S jrS-S jr\S.S j5       r\\S/S j5       5       r\S-S j5       r\S-S j5       rS0S jrS+S1S jjr\S2S j5       r\S3S j5       rS4S jrS rS r S5S jr!S6S jr"\S7S j5       r#S-S jr$S8S jr%S r&S9S  jr'S:S! jr(S" r)S#r*g);r�   iÒ  zmanage a single block withc                ó   • gr©   rU   ra   s    rF   rc   ÚSingleBlockManager.ndimÕ  s   € àrH   TrU   c                ó$   • U/U l         U4U l        g r^   ©r\   rZ   )rb   rà   rŸ   rj   s       rF   rk   ÚSingleBlockManager.__init__Þ  s   € ð �FˆŒ	Ø�hˆ�rH   c                ób   • [        U5      S:X  d   e[        U5      S:X  d   eU " US   US   SS9$ )r  rŠ   r   Fr¥  rs   r~   s      rF   r€   ÚSingleBlockManager.from_blocksë  s=   € ô �6‹{˜aÓÐÐÜ�4‹y˜A‹~Ðˆ~Ù�6˜!‘9˜d 1™g¸Ñ>Ð>rH   Nc                óz   • [        U5      n[        [        S[        U5      5      5      n[	        XSUS9nU " XR5      $ )z>
Constructor for if we have an array that is not yet a Block.
r   rŠ   r  )r6   r   r�   rD   r7   )r   rÏ   r—  r»   r”   rà   s         rF   Ú
from_arrayÚSingleBlockManager.from_arrayø  s<   € ô $ EÓ*ˆÜœE !¤S¨£ZÓ0Ó1ˆÜ˜%°A¸DÑAˆÙ�5Ó Ð rH   c                óè   • U R                   S   n[        UR                  SS9n[        S5      n[	        U5      " X4SUR
                  S9nXR                  S   R                  5       /n[        U/USS9$ )z%
Manager analogue of Series.to_frame
r   rF  r´  r  F)r\   rj   )	rZ   r3   rŽ   r   r‘   r»   r\   rþ   r  )rb   Úcolumnsr’   r“   r”   Únew_blkr\   s          rF   Ú	to_2d_mgrÚSingleBlockManager.to_2d_mgr  sk   € ð �k‰k˜!‰nˆÜ  §¡°!Ñ4ˆÜ˜AÓˆÜ�s”)˜C°A¸C¿H¹HÑEˆØŸ™ 1™×*Ñ*Ó,Ð-ˆÜ˜W˜I¨DÀ5ÑIÐIrH   c                óZ   • U R                   S   R                  R                  5       (       + $ )r³   r   rº   )rb   rµ   s     rF   r·   Ú$SingleBlockManager._has_no_reference  s$   € ð —;‘;˜q‘>×&Ñ&×4Ñ4Ó6Ô6Ð6rH   c                óš  • U R                    Vs/ s H  oR                  PM     nnU R                    Vs/ s H%  oR                  UR                  R                     PM'     nn[        U R                  5      nSUU R                    Vs/ s H&  nUR                  UR                  R                  S.PM(     snS.0nXBX54$ s  snf s  snf s  snf )Nú0.14.1)rŽ   rø   rà  )rZ   rŽ   rn   rø   rù   rO  r\   )rb   r  râ  Úblock_itemsÚ
axes_arrayÚextra_states         rF   Ú__getstate__ÚSingleBlockManager.__getstate__  s´   € Ø*.¯+ª+Ó6ª+ QŸœ©+ˆÐ6Ø?C¿{º{ÓKº{¸!—z‘z !§*¡*×"4Ñ"4Ô5¹{ˆÐKÜ˜$Ÿ)™)“_ˆ
ð Ø"ð "Ÿ[š[óâ(˜ð  !Ÿx™x°Q·Z±Z×5GÑ5GÔHÙ(ññð
ˆð ¨ÐAÐAùò! 7ùÚKùòs   �B>´,CÂ-Cc                ól  ^^• S	S jm[        U[        5      (       ax  [        U5      S:¼  ai  SUS   ;   a`  US   S   nUS    Vs/ s H  n[        U5      PM     snU l        [        U R                  5      m[        UU4S jUS    5       5      U l        O[        S5      eU R                  5         g s  snf )
Nc                ó€   • [        U SS9n [        U[        5      (       d  [        U5      n[        U 5      n [	        XUS9$ )NTr  r  )r,   rK   r   r6   r7   )rŽ   rø   rc   s      rF   Úunpickle_blockÚ7SingleBlockManager.__setstate__.<locals>.unpickle_block+  s>   € ô # 6¸Ñ>ˆFÜ˜h¬×7Ñ7Ü)¨(Ó3�ä(¨Ó0ˆFÜ˜V¸dÑCÐCrH   é   rï  é   r\   c              3  ó@   >#   • U  H  nT" US    US   TS9v •  M     g7f)rŽ   rø   r´  NrU   )ru   r  rc   r÷  s     €€rF   rw   Ú2SingleBlockManager.__setstate__.<locals>.<genexpr>9  s)   øé € ð  â(�Añ ˜q ™{¨A¨j©MÀÖEÚ(ùs   ƒrZ   z*pre-0.14.1 pickles are no longer supported)rc   rè  rç  r1   )rK   rz   rD   r0   r\   rZ   r`   Ú_post_setstate)rb   Ústaterv   rc   r÷  s      @@rF   Ú__setstate__ÚSingleBlockManager.__setstate__*  s¤   ù€ ô	Dô �eœU×#Ñ#¬¨E«
°a«¸HÈÈaÉÓ<PØ˜!‘H˜XÑ&ˆEØ49¸&²MÓB²M¨bœ bÖ)±MÑBˆDŒIÜ�t—y‘y“>ˆDÜõ  à˜xšó ó ˆD�Kô
 &Ð&RÓSÐSà×ÑÕùò Cs   ÁB1c                ó   • g r^   rU   ra   s    rF   rý  Ú!SingleBlockManager._post_setstateB  s   € ØrH   c                ó    • U R                   S   $ r®   )rZ   ra   s    rF   rb  ÚSingleBlockManager._blockE  s   € à�{‰{˜1‰~ÐrH   c                ó4   • U R                   S   R                  $ )z1
Quick access to the backing array of the Block.
r   rÙ   ra   s    rF   rÏ   ÚSingleBlockManager.arrayI  s   € ð �{‰{˜1‰~×$Ñ$Ð$rH   c                ó   • g©zcompat with BlockManagerNrU   ra   s    rF   rW   ÚSingleBlockManager._blknosR  ó   € ð rH   c                ó   • gr  rU   ra   s    rF   rX   ÚSingleBlockManager._blklocsX  r
  rH   c                ó   • U R                   n[        U5      S:”  a>  UR                  5       (       a)  [        U 5      " UR	                  SS9U R
                  5      $ UR                  U   n[        U[        R                  5      (       a  UR                  R                  S:X  a  S nOUR                  n[        [        S[        U5      5      5      n[        U5      " X5SUS9nU R
                  U   n[        U 5      " Xg5      $ )Nr   FrH  r  rŠ   r  )rb  rD   rð   r‘   rM  r—  rŽ   rK   rM   rK  rN   r  r»   r   r�   )rb   rù   r’   rÏ   r»   r”   rà   Únew_idxs           rF   Úget_rows_with_maskÚ%SingleBlockManager.get_rows_with_mask]  sÅ   € à�k‰kˆÜˆw‹<˜!Ó §¡§¡Ü˜”:˜cŸh™h¨E˜hÐ2°D·J±JÓ?Ð?Ø—
‘
˜7Ñ#ˆä�gœrŸz™z×*Ñ*¨w¯}©}×/AÑ/AÀSÓ/Hà‰Dð —8‘8ˆDäœE !¤S¨£ZÓ0Ó1ˆÜ�S”	˜%°A¸DÑAˆà—*‘*˜WÑ%ˆÜ�DŒz˜%Ó)Ð)rH   c                ó6  • X R                   :¼  a  [        S5      eU R                  nUR                  U   n[	        [        S[        U5      5      5      n[        U5      " XESUR                  S9nU R                  R                  U5      n[        U 5      " Xg5      $ )Nr³  r   rŠ   r  )rc   r¶  rb  rŽ   r   r�   rD   r‘   r»   r—  Ú_getitem_slice)rb   rÒ  rŸ   r’   rÏ   r”   rà   r®  s           rF   Ú	get_sliceÚSingleBlockManager.get_sliceq  s�   € ð —9‘9ÓÜÐBÓCÐCà�k‰kˆØ—
‘
˜5Ñ!ˆÜœE !¤S¨£ZÓ0Ó1ˆô �S”	˜%°A¸C¿H¹HÑEˆØ—J‘J×-Ñ-¨eÓ4ˆ	Ü�DŒz˜%Ó+Ð+rH   c                ó    • U R                   S   $ r®   r¯   ra   s    rF   r—  ÚSingleBlockManager.index€  r±   rH   c                ó.   • U R                   R                  $ r^   )rb  rN   ra   s    rF   rN   ÚSingleBlockManager.dtype„  s   € à�{‰{× Ñ Ð rH   c                ó^   • [         R                  " U R                  R                  /[        S9$ rÍ   )rM   rÏ   rb  rN   rJ   ra   s    rF   rÖ   ÚSingleBlockManager.get_dtypesˆ  s    € Ü�xŠx˜Ÿ™×*Ñ*Ð+´6Ñ:Ð:rH   c                ó6   • U R                   R                  5       $ )z$The array that Series.values returns)rb  Úexternal_valuesra   s    rF   r  Ú"SingleBlockManager.external_values‹  s   € à�{‰{×*Ñ*Ó,Ð,rH   c                ó.   • U R                   R                  $ )z%The array that Series._values returns)rb  rŽ   ra   s    rF   Úinternal_valuesÚ"SingleBlockManager.internal_values�  s   € à�{‰{×!Ñ!Ð!rH   c                ó.   • U R                   R                  $ )z#The array that Series.array returns)rb  r.  ra   s    rF   r.  ÚSingleBlockManager.array_values“  ó   € à�{‰{×'Ñ'Ð'rH   c                óv   • U R                   R                  (       a  U R                  SS9$ U R                  5       $ )NFrH  )rb  r�  rM  r–   ra   s    rF   r’  Ú#SingleBlockManager.get_numeric_data—  s-   € Ø�;‰;×!×!Ø—9‘9 %�9Ð(Ð(Ø�‰Ó Ð rH   c                ó.   • U R                   R                  $ r^   )rb  Ú_can_hold_nara   s    rF   r'  ÚSingleBlockManager._can_hold_naœ  r#  rH   c                óž  • U R                  S5      (       d/  U R                  R                  SS94U l        U R	                  5         U R
                  n[        U[        R                  5      (       a  [        UR                  U5      n[        U[        R                  5      (       a$  UR                  S:X  a  [        U5      S:X  a  US   nX#U'   g)zï
Set values with indexer.

For SingleBlockManager, this backs s[indexer] = value

This is an inplace version of `setitem()`, mutating the manager/values
in place, not returning a new Manager (and Block), and thus never changing
the dtype.
r   TrH  rŠ   )r   .N)r·   rb  rM  rZ   Ú_reset_cacherÏ   rK   rM   rK  r   rN   rc   rD   )rb   rù   r  r“   s       rF   ra  Ú"SingleBlockManager.setitem_inplace   s    € ð ×%Ñ% a×(Ñ(ØŸ;™;×+Ñ+°Ð+Ð6Ð8ˆDŒKØ×ÑÔà�j‰jˆô �cœ2Ÿ:™:×&Ñ&ô (¨¯	©	°5Ó9ˆEä�eœRŸZ™Z×(Ñ(¨U¯Z©Z¸1«_ÄÀUÃÈqÃà˜&‘MˆEàˆGŠrH   c                óÈ   • U R                   R                  U5      S   nU4U l        U R                  S   R                  U5      U R                  S'   U R	                  5         U $ )za
Delete single location from SingleBlockManager.

Ensures that self.blocks doesn't become empty.
r   )rb  rU  rZ   r\   r*  )rb   rù   r•   s      rF   r€  ÚSingleBlockManager.idelete¼  sW   € ð �[‰[×Ñ Ó(¨Ñ+ˆØ�eˆŒØ—y‘y ‘|×*Ñ*¨7Ó3ˆ�	‰	�!‰Ø×ÑÔØˆrH   c                ó   • [        S5      e)zA
fast path for getting a cross-section
return a view of the data
zUse series._values[loc] insteadr_   )rb   r   s     rF   r$  ÚSingleBlockManager.fast_xsÈ  s   € ô
 "Ð"CÓDÐDrH   c                óˆ   • XR                   S   l        [        [        [	        U5      5      5      U R                   S   l        g)zì
Set the values of the single block in place.

Use at your own risk! This does not check if the passed values are
valid for the current Block/SingleBlockManager (length, dtype, etc),
and this does not properly keep track of references.
r   N)rZ   rŽ   r   r�   rD   r-  )rb   rŽ   s     rF   Ú
set_valuesÚSingleBlockManager.set_valuesÏ  s0   € ð !'�‰�A‰ÔÜ#1´%¼¸F»Ó2DÓ#Eˆ�‰�A‰Õ rH   c                óž   • UR                   S:w  a  gU R                  S   R                  nUR                  S   R                  n[        X#5      $ )r�  rŠ   Fr   )rc   rZ   rŽ   r&   )rb   rå   ÚleftÚrights       rF   ræ   Ú SingleBlockManager._equal_valuesÜ  sC   € ð �:‰:˜‹?ØØ�{‰{˜1‰~×$Ñ$ˆØ—‘˜Q‘×&Ñ&ˆÜ˜DÓ(Ð(rH   c                óŠ   • U R                   nU" U5      n[        [        U5      5      n[        U 5      R	                  X45      nU$ r^   )rÏ   r/   rD   r‘   rå  )rb   r  r“   rŸ  r—  rÁ   s         rF   r…  Ú!SingleBlockManager.grouped_reduceè  s;   € Ø�j‰jˆÙ�3‹iˆÜœc #›hÓ'ˆä�4‹j×#Ñ# CÓ/ˆØˆ
rH   rà  )rç  z
Literal[1]rÚ  )rà   r1   rŸ   r.   rj   rf   rç  rê  rë  r^   )rÏ   r<   r—  r.   r»   rÙ  rç  r�   )rè  r.   rç  r  )r   rð  r÷  )rç  r1   )rç  r<   )rù   znpt.NDArray[np.bool_]rç  r   )rÒ  r�   rŸ   r=   rç  r�   rï  )rç  r>   rñ  )rç  rB   rí  rî  )rç  r�   )rŽ   r<   rç  rê  ró  )+rÞ   rù  rú  rû  rü  rÿ  rc   rh   rg   rý  r«   rk   r   r€   rå  rê  r·   ró  rÿ  rý  r   rb  r   rÏ   rW   rX   r  r  r—  rN   rÖ   r  r  r.  r’  r'  ra  r€  r$  r1  ræ   r…  r  rU   rH   rF   r�   r�   Ò  s¸  † Ù$àóó ðð ÐØÐØ€IØ€Oð "'ð	àðð ðð ð	ð
 
õð ð
?àð
?ð ð
?ð 
ó	
?ó ð
?ð àLPð	!Øð	!Ø&+ð	!Ø3Ið	!à	ô	!ó ð	!ô	Jö7òBô&ô0ð óó ðð Øó%ó ó ð%ð óó ðð
 óó ðô*ö(,ð óó ðð ó!ó ð!ô;ò-ò"ô(ô!ð
 ó(ó ð(ôô8
òEôFô
)õrH   r�   c                ó  •  [        XUS9nU(       a  WR                  5         W$ ! [         aY  nU  Vs/ s H  ofR                  PM     Os  snf nn[        S U 5       5      n[	        X‡S   R
                  SS  X5         S nANwS nAff = f)Nr¥  c              3  ó>   #   • U  H  oR                   S    v •  M     g7f)r   N)r{   )ru   r“   s     rF   rw   Ú3create_block_manager_from_blocks.<locals>.<genexpr>	  s   é € Ð7²¨Ÿ	™	 !ž²ùs   ‚r   rŠ   )r  r¤   rŽ   r  r  r{   r5  )	rZ   r\   r¦  rj   rÁ   Úerrr’   rÚ   r  s	            rF   Ú create_block_manager_from_blocksr=  õ  s„   € ðLÜ˜6Ð:JÑKˆö Ø× Ñ Ô"Ø€Jøô ó LÙ(.Ó/ª —*”*ªùÒ/ˆÐ/ÜÑ7±Ó7Ó7ˆ	Ü  °1©I¯O©O¸A¸BÐ,?À×KÑKûðLús   ‚
% ¥
B¯B³A	Á6BÂBc                óÖ   •  [        XU5      n[        XASS9nU(       a  WR                  5         W$ ! [         a-  n[        [	        U 5      U S   R
                  X5         S nANKS nAff = f)NFr¥  r   )Ú_form_blocksr  r¤   r  rD   r{   r5  )rÚ   r\   r¦  r»   rZ   rÁ   Úes          rF   Ú'create_block_manager_from_column_arraysrA  	  se   € ð"HÜ˜f°4Ó8ˆÜ˜6¸%Ñ@ˆö Ø× Ñ Ô"Ø€Jøô	 ó HÜ ¤ V£¨f°Q©i¯o©o¸t×GÑGûðHús   ‚1 ±
A(»#A#Á#A(c                ó  • [        [        [        U /UQ5      5      n[        U5      S::  a  USSS2   n[        S U 5       5      n[        U5      S::  a  USSS2   nXE:X  a  Ub  UeUS   S:X  a  [	        S5      e[	        SU SU 35      e)	z.raise a helpful message about our constructionrF  Nr•  c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr^   rs   rt   s     rF   rw   Ú+raise_construction_error.<locals>.<genexpr>6	  s   é € Ð+¢d ”C˜—G�G¢dùry   r   z)Empty data passed with indices specified.zShape of passed values is z, indices imply )rz   Úmaprè  rD   r¤   )r  Úblock_shaper\   r@  ÚpassedÚimplieds         rF   r  r  *	  s¢   € ô ”3”s˜YÐ5¨Ð5Ó6Ó7€Fä
ˆ6ƒ{�aÓØ™˜"˜‘ˆäÑ+¡dÓ+Ó+€Gä
ˆ7ƒ|�qÓØ™$˜B˜$‘-ˆð Ó˜Q™]ØˆØ�1�~˜ÓÜÐDÓEÐEÜ
Ð1°&°Ð9IÈ'ÈÐSÓ
TÐTrH   c                óf   • U S   R                   n[        U5      (       a  [        U5      nX!4$ SnX!4$ )NrŠ   r   )rN   r   Úid)ÚtuprN   Úseps      rF   Ú_grouping_funcrM  G	  s>   € Ø�‰F�L‰L€Eä˜5×!Ñ!ô �‹iˆð ˆ:Ðð ˆàˆ:ÐrH   c                ó>  • [        U 5      nU(       d  [        X25      $ [        R                  " U[        5      n/ nU GHQ  u  u  pgn[        U5      n	[        U[        R                  5      (       a‘  UR                  S;   n
[        UR                  [        [        45      (       a  [        R                  " [        5      n[        X‡5      u  p¼U
(       a  [!        U5      nU	" U[#        U5      SS9nUR%                  U5        MÄ  ['        U5      (       a;  U Vs/ s H  nU	" US   [#        US   5      SS9PM     nnUR)                  U5        GM  U Vs/ s H$  nU	" [+        US   S5      [#        US   5      SS9PM&     nnUR)                  U5        GMT     U$ s  snf s  snf )Nr¶  rF  r  rŠ   r   )r¿   Ú _tuples_to_blocks_no_consolidater¯  r°  rM  r5   rK   rM   rN   r  Ú
issubclassr‘   rO   ÚbytesrJ   Ú_stack_arraysr+   r   rˆ  r   rŠ  r3   )rÚ   r¦  r»   ÚtuplesÚgrouperr~  rÕ  rN   Ú	tup_blockÚ
block_typeÚ	is_dtlikerŽ   rŒ   r’   r  Údtype_blockss                   rF   r?  r?  T	  s  € Ü�vÓ€FæÜ/°Ó=Ð=ô ×Ò ¬Ó7€Gà€CÜ!(Ñ‰
ˆ�IÜ# EÓ*ˆ
ä�eœRŸX™X×&Ñ&ØŸ
™
 dÑ*ˆIä˜%Ÿ*™*¤s¬E l×3Ñ3ÜŸš¤Ó(�ä -¨iÓ ?ÑˆFÞÜ7¸Ó?�Ù˜V¬~¸iÓ/HÈqÑQˆCØ�J‰J�sŽOä  ×'Ñ'ñ #óâ"�Añ ˜1˜Q™4¬>¸!¸A¹$Ó+?ÀaÔHÙ"ð ð ð �J‰J�|×$ñ #ó	ò #�Añ Ü& q¨¡t¨QÓ/¼>È!ÈAÉ$Ó;OÐVWôñ #ð	 ð ð �J‰J�|×$ñ; ")ð< €Jùòùòs   Ä!FÅ+Fc                óŒ   • [        XSS9 VVVs/ s H$  u  u  p#n[        [        USS9[        U5      US9PM&     snnn$ s  snnnf )NTrî   rF  r´  r]  )rñ   r8   r3   r   )rS  r»   rµ   r“   rÆ   s        rF   rO  rO  ‚	  sR   € ô  # 6¸Ò=õ	ò  >‰O‰Xˆa�sô 	Ü˜s¨Ñ+´~ÀaÓ7HÈsô	
ñ  >ó	ð ùô s   �+?c                ó¶   • [        U SS06u  p#US   n[        U5      /UR                  Q7n[        R                  " XQS9n[        U5       H	  u  pxX†U'   M     Xb4$ )Nrï   Tr   rP   )rñ   rD   r{   rM   r¹  r¿   )	rS  rN   rŒ   rÚ   Úfirstr{   Ústackedrµ   r“   s	            rF   rR  rR  Œ	  sc   € Ü˜VÐ1¨DÑ1Ñ€Ià�1‰I€EÜ�‹[Ð'˜5Ÿ;™;Ñ'€Eä�hŠh�uÑ*€GÜ˜FÖ#‰ˆØ�‹
ñ $ð ÐÐrH   c                óº   • S n[         R                  " [        XS9U5      n/ nU H(  u  u  pEn[        [	        U5      XTS9u  px[        Xs5      nM*     [        U5      $ )zB
Merge blocks having same dtype, exclude non-consolidating blocks
c                ó   • U R                   $ r^   )Ú_consolidate_key)r  s    rF   r«  Ú_consolidate.<locals>.<lambda>ž	  s
   € �Q×'Ò'rH   r­  )rN   Úcan_consolidate)r¯  r°  r±  Ú_merge_blocksrO  r4   rz   )	rZ   ÚgkeyrT  rŒ  rÌ  rN   Úgroup_blocksÚmerged_blocksrÕ  s	            rF   rÌ  rÌ  ™	  sh   € ñ
 (€DÜ×Ò¤ vÑ 8¸$Ó?€Gà €JÛ3:Ñ/Ñ!Ð	 <Ü(Ü�Ó eñ
Ñˆô # =Ó=Š
ñ	 4;ô
 �ÓÐrH   c                ó€  • [        U 5      S:X  a  U S4$ U(       Ga  [        R                  " U  Vs/ s H  o3R                  R                  PM     sn5      n[        U S   R                  [        R                  5      (       a1  [        R                  " U  Vs/ s H  o3R                  PM     sn5      nOEU  Vs/ s H  ofR                  PM     nn[        [        [           U5      nUS   R                  USS9n[        R                  " U5      n	XY   nXI   n[        U5      n
[        XZS9/S4$ U S4$ s  snf s  snf s  snf )NrŠ   Fr   rG  r‹   T)rD   rM   r  rø   r€  rK   rN   ÚvstackrŽ   r   r   r)   Ú_concat_same_typeÚargsortr   r8   )rZ   rN   ra  r  rÄ  Ú
new_valuesr’   ÚbvalsÚbvals2ri  r”   s              rF   rb  rb  ª	  s  € ô ˆ6ƒ{�aÓØ�uˆ}Ðçô —~’~ÁFÓ&KÂF¸q§z¡z×':Ô':ÁFÑ&KÓLˆô �f˜Q‘i—o‘o¤r§x¡x×0Ñ0ô
 Ÿš±fÓ#=²f°§H¤H±fÑ#=Ó>‰Já+1Ó2ª6 C—Z”Z©6ˆEÐ2Üœ(Ô#>Ñ?ÀÓGˆFØ ™×4Ñ4°VÀ!Ð4ÐDˆJä—*’*˜\Ó*ˆØÑ(ˆ
Ø#Ñ,ˆä˜LÓ)ˆÜ˜ZÑ6Ð7¸Ð=Ð=ð �5ˆ=Ðùò/ 'Lùò $>ùâ2s   °D1ÂD6Â7D;c                ój  • [        U [        5      (       a  SU [        R                  " X5      4$ [        U [        R
                  5      (       a  U R                  R                  S:w  a"  [        U SS 5      n[        [        U 5      U5      e[        U 5      nU(       d  [        XA5      nSU[        U5      4$ )Nr�   rµ   rN   Úfancy)rK   r�   rÉ  Ú	slice_lenrM   rK  rN   r  rý   Ú	TypeErrorr‘   r   r-   rD   )rÐ  ÚlengthrÃ  rN   rù   s        rF   rÇ  rÇ  Í	  s¤   € ô Ð"¤E×*Ñ*àØÜ×"Ò"Ð#3Ó<ð
ð 	
ô Ð+¬R¯Z©Z×8Ñ8Ø×%Ñ%×*Ñ*¨cÓ1äÐ,¨g°tÓ<ˆEÜœDÐ!1Ó2°EÓ:Ð:ä%Ð&6Ó7ˆÞÜ+¨GÓ<ˆGØ˜¤ W£Ð-Ð-rH   c                ó$  • [        U [        5      (       aw  [        U5      R                  U R                  5      n[
        R                  " XR                  5      nUR                  SU R                   S35      n[        R                  " XPS9$ [        U 5      (       ay  [        [        U 5      n U R                  5       nUR                  / U S9nUu  p‰US:X  d   U5       eS[
        R                   " U	4[
        R"                  S9-  n
UR%                  U
SUS9$ [        U [        5      (       a%  U R                  5       nUR'                  XS9nX'S S & U$ [
        R(                  " XS9nUR+                  U5        U R,                  S	;   a  [/        U5      nU$ )
NzM8[Ú]rP   rŠ   r•  T)rÃ  rB  )r{   rN   r¶  )rK   r!   r   Úas_unitÚunitrM   ÚfullÚ_valuerþ   r(   Ú_simple_newr   r   r"   r  r  ÚonesrE  rÔ   Ú_emptyr¹  rF  r  r+   )rN   r{   rB  ÚtsÚi8valuesÚ
dt64valuesr   Úmissing_arrÚncolsr„  Ú	empty_arrÚmissing_arr_nps               rF   rá  rá  ä	  s_  € Ü�%œ×)Ñ)ä�zÓ"×*Ñ*¨5¯:©:Ó6ˆÜ—7’7˜5§)¡)Ó,ˆØ—]‘] S¨¯©¨°AÐ#6Ó7ˆ
Ü×(Ò(¨ÑAÐAä	˜U×	#Ñ	#Ü”^ UÓ+ˆØ×(Ñ(Ó*ˆà×(Ñ(¨°5Ð(Ð9ˆØ‰ˆØ˜‹zÐ ˜5Ó ˆzØœŸš % ´·±Ñ9Ñ9ˆ	Ø×Ñ 	°dÀzÐÐRÐRÜ	�Eœ>×	*Ñ	*ð ×(Ñ(Ó*ˆØ—j‘j u�jÐ:ˆØ#‘AˆØÐô Ÿš %Ñ5ˆØ×Ñ˜JÔ'à�:‰:˜ÓÜ;¸NÓKˆNØÐrH   )rE   zlist[DtypeObj]rç  zDtypeObj | None)rN   r>   rç  únp.dtype)TT)
rZ   rì  r\   r[   r¦  rf   rj   rf   rç  r  )
rÚ   rò  r\   r[   r¦  rf   r»   rO  rç  r  r^   )
r  rè  rF  r@   r\   r[   r@  zValueError | Nonerç  r
   )rK  ztuple[int, ArrayLike]rç  ztuple[int, DtypeObj])rÚ   rò  r¦  rf   r»   rO  rç  rì  )rç  rì  )rN   r‚  )rZ   rY   rç  rY   )rZ   rì  rN   r>   ra  rf   rç  ztuple[list[Block], bool])rÐ  rø  rq  rè  rÃ  rf   )rN   r>   r{   r@   rç  r<   )sÚ
__future__r   Úcollections.abcr   r   r   r¯  Útypingr   r   r	   r
   r   r   r   rq  ÚnumpyrM   Úpandas._config.configr   Úpandas._libsr   r  r   rÉ  r   Úpandas._libs.internalsr   r   Úpandas._libs.tslibsr   Úpandas.errorsr   r   Úpandas.util._decoratorsr   Úpandas.util._exceptionsr   Úpandas.util._validatorsr   Úpandas.core.dtypes.castr   r   r   Úpandas.core.dtypes.commonr   r   r   Úpandas.core.dtypes.dtypesr    r!   r"   r#   Úpandas.core.dtypes.genericr$   r%   Úpandas.core.dtypes.missingr&   r'   Úpandas.core.algorithmsÚcoreÚ
algorithmsÚpandas.core.arraysr(   Úpandas.core.arrays._mixinsr)   Úpandas.core.baser*   Úpandas.core.constructionr+   r,   Úpandas.core.indexersr-   Úpandas.core.indexes.apir.   r/   r0   Úpandas.core.internals.blocksr1   r2   r3   r4   r5   r6   r7   r8   Úpandas.core.internals.opsr9   r:   r;   Úpandas._typingr<   r=   r>   r?   r@   rA   Úpandas.api.extensionsrB   rG   rQ   rS   r  r�   r=  rA  r  rM  r?  rO  rR  rÌ  rb  rÇ  rá  rU   rH   rF   Ú<module>r¡     s  ðÝ "÷ñ ó
 ÷÷ ñ ó ã å ,÷ñ ÷
õ *÷õ 3Ý 4Ý 7÷ñ ÷
ñ ÷
ó ÷÷÷
 'Ð &Ý ,Ý BÝ )÷õ 7÷ñ ÷
	÷ 	ó 	÷ö
 Ý)÷÷ õ 5ô$ô&
ôk
�|ô k
ô\RT�<×,Ñ,Ð.>ô RTôj\Ð)ô \ðL	 Ø!ð	Øðà
ðð ðð ð	ð
 õð4Øðà
ðð ðð ð	ð
 ôð>  ð	UØðUàðUð ðUð ð	Uð
 õUô:
ô+ô\ô
ôð" Øð Ø (ð Ø;?ð àô ðF.Ø(ð.Ø25ð.ØCGô.õ. rH   