§
    {Øj®R  ã                  óô  — d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
Z
d dl
mZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d d	lmZmZmZmZmZmZmZ d d
l m!Z! d dl"m#Z# er€d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/Z0d dl1Z2d dl
m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlmAZA d dlBmCZC d dlmDZD d dlEmFZF d dlGmHZH d dlImJZK d dlLmMZMmNZNmOZO  G d„ ded          e¦  «        ZPdS )!é    )Úannotations)Úreduce)Úand_)ÚTYPE_CHECKINGÚAnyÚLiteralN)ÚStarExpression)	ÚDeferredTimeZoneÚFÚcatch_duckdb_exceptionÚcolÚevaluate_exprs_and_aliasesÚjoin_column_namesÚlitÚnative_to_narwhals_dtypeÚwindow_expression)ÚSQLLazyFrame)ÚImplementationÚValidateBackendVersionÚVersionÚextend_boolÚgenerate_temporary_column_nameÚparse_columns_to_dropÚrequires©Ú
get_duckdb)ÚInvalidOperationError)ÚIterableÚIteratorÚMappingÚSequence)ÚBytesIO)ÚPath)Ú
ModuleType)Ú
Expression)ÚSelfÚTypeIs)ÚCompliantDataFrameAny)Ú
DuckDBExpr©ÚDuckDBGroupBy©ÚDuckDBNamespace©ÚDuckDBInterchangeSeries)Úduckdb_dtypes)Ú_EagerAllowedImpl)Ú_LimitedContext)Ú	LazyFrame)ÚDType©Ú	DataFrame)ÚAsofJoinStrategyÚJoinStrategyÚUniqueKeepStrategyc                  óØ  — e Zd Zej        Zddœdzd„Zed{d„¦   «         Ze	d|d„¦   «         Z
ed}d„¦   «         Zd~d„Zdd„Zdd„Zd€d„Zd�d!„Zd‚d%„Zdƒd'„Zd„d,„Zd…d/„Zd†d1„Zd‡d4„Zd‡d5„Zdˆd9„Zd‰dŠd<„Zd‡d=„Zd‹d?„ZedŒdA„¦   «         Zed�dC„¦   «         ZdŽdE„Zd�dG„Z d�dH„Z!d‘dI„Z"d’dN„Z#d“dQ„Z$d”dY„Z%d•d^„Z&dŒd_„Z'd–dd„Z(d—di„Z)d˜dm„Z*d™dn„Z+dšdo„Z,d›dt„Z- e.j/        du¦  «        dœdv„¦   «         Z0d�dy„Z1d:S )žÚDuckDBLazyFrameF)Úvalidate_backend_versionÚdfúduckdb.DuckDBPyRelationÚversionr   r<   ÚboolÚreturnÚNonec               ón   — || _         || _        d | _        d | _        |r|                      ¦   «          d S d S ©N)Ú_native_frameÚ_versionÚ_cached_native_schemaÚ_cached_columnsÚ_validate_backend_version)Úselfr=   r?   r<   s       ú�/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/narwhals/_duckdb/dataframe.pyÚ__init__zDuckDBLazyFrame.__init__E   sM   € ð 79ˆÔØˆŒØSWˆÔ"Ø15ˆÔØ#ð 	-Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-ó    útuple[int, ...]c                ó4   — | j                              ¦   «         S rD   )Ú_implementationÚ_backend_version©rJ   s    rK   rQ   z DuckDBLazyFrame._backend_versionS   s   € àÔ#×4Ò4Ñ6Ô6Ð6rM   Úobjúduckdb.DuckDBPyRelation | AnyúTypeIs[duckdb.DuckDBPyRelation]c                ó6   — t          | t          j        ¦  «        S rD   )Ú
isinstanceÚduckdbÚDuckDBPyRelation)rS   s    rK   Ú
_is_nativezDuckDBLazyFrame._is_nativeW   s   € å˜#�vÔ6Ñ7Ô7Ð7rM   ÚdataÚcontextr2   r&   c              ó&   —  | ||j         ¬¦  «        S ©N©r?   )rF   )Úclsr[   r\   s      rK   Úfrom_nativezDuckDBLazyFrame.from_native[   s   € ð ˆs�4 Ô!1Ð2Ñ2Ô2Ð2rM   Úargsr   ÚkwdsúILazyFrame[duckdb.DuckDBPyRelation] | DataFrameV1[duckdb.DuckDBPyRelation]c                ó†   — | j         t          j        u rddlm}  || d¬¦  «        S | j                              | d¬¦  «        S )Nr   r5   Úinterchange)ÚlevelÚlazy)rF   r   ÚV1Únarwhals.stable.v1r6   Ú	lazyframe)rJ   rb   rc   ÚDataFrameV1s       rK   Úto_narwhalszDuckDBLazyFrame.to_narwhalsa   sU   € ð Œ=�GœJÐ&Ð&ØCÐCÐCÐCÐCÐCà�;˜t¨=Ð9Ñ9Ô9Ð9ØŒ}×&Ò& t°6Ð&Ñ:Ô:Ð:rM   c                óN   — | j         t          j        urd}t          |¦  «        ‚| S )Nz=__narwhals_dataframe__ is not implemented for DuckDBLazyFrame)rF   r   ri   ÚAttributeError)rJ   Úmsgs     rK   Ú__narwhals_dataframe__z&DuckDBLazyFrame.__narwhals_dataframe__j   s)   € àŒ=¥¤
Ð*Ð*ØQˆCÝ  Ñ%Ô%Ð%ØˆrM   c                ó   — | S rD   © rR   s    rK   Ú__narwhals_lazyframe__z&DuckDBLazyFrame.__narwhals_lazyframe__q   s   € ØˆrM   r$   c                ó   — t          ¦   «         S rD   r   rR   s    rK   Ú__native_namespace__z$DuckDBLazyFrame.__native_namespace__t   s   € Ý‰|Œ|ÐrM   r-   c                ó0   — ddl m}  || j        ¬¦  «        S )Nr   r,   r_   )Únarwhals._duckdb.namespacer-   rF   )rJ   r-   s     rK   Ú__narwhals_namespace__z&DuckDBLazyFrame.__narwhals_namespace__w   s)   € Ø>Ð>Ð>Ð>Ð>Ð>àˆ t¤}Ð5Ñ5Ô5Ð5rM   ÚnameÚstrr/   c                ób   — ddl m}  || j                             |¦  «        | j        ¬¦  «        S )Nr   r.   r_   )Únarwhals._duckdb.seriesr/   ÚnativeÚselectrF   )rJ   rz   r/   s      rK   Ú
get_columnzDuckDBLazyFrame.get_column|   s<   € ØCÐCÐCÐCÐCÐCà&Ð& t¤{×'9Ò'9¸$Ñ'?Ô'?ÈÌÐWÑWÔWÐWrM   úIterator[Expression]c              #  ó@   K  — | j         D ]}t          |¦  «        V — Œd S rD   )Úcolumnsr   )rJ   rz   s     rK   Ú_iter_columnszDuckDBLazyFrame._iter_columns�   s2   è è € Ø”Lð 	ð 	ˆDÝ�d‘)”)ˆOˆOˆOˆOð	ð 	rM   Úbackendú_EagerAllowedImpl | NoneÚkwargsr(   c                ó  — |�|t           j        u rWddlm} | j        dk    r| j                             ¦   «         n| j                             ¦   «         } ||d| j        d¬¦  «        S |t           j	        u r<ddl
m}  || j                             ¦   «         t           j	        d| j        d¬¦  «        S |t           j        u r0ddlm}  || j                             ¦   «         d| j        ¬	¦  «        S d
|› �}t#          |¦  «        ‚)Nr   )ÚArrowDataFrame)é   é   T)r<   r?   Úvalidate_column_names)ÚPandasLikeDataFrame)Úimplementationr<   r?   rŒ   )ÚPolarsDataFrame)r<   r?   zUnsupported `backend` value: )r   ÚPYARROWÚnarwhals._arrow.dataframer‰   rQ   r~   Úto_arrow_tableÚfetch_arrow_tablerF   ÚPANDASÚnarwhals._pandas_like.dataframer�   r=   ÚPOLARSÚnarwhals._polars.dataframer�   ÚplÚ
ValueError)rJ   r…   r‡   r‰   Ú
res_nativer�   r�   rp   s           rK   ÚcollectzDuckDBLazyFrame.collect…   sT  € ð ˆ?˜g­Ô)?Ð?Ð?Ø@Ð@Ð@Ð@Ð@Ð@ð Ô(¨FÒ2Ð2ð ”×*Ò*Ñ,Ô,Ð,à”[×2Ò2Ñ4Ô4ð ð
 "�>ØØ)-ØœØ&*ð	ñ ô ð ð •nÔ+Ð+Ð+ØKÐKÐKÐKÐKÐKà&Ð&Ø”—’Ñ Ô Ý-Ô4Ø)-ØœØ&*ðñ ô ð ð •nÔ+Ð+Ð+ØBÐBÐBÐBÐBÐBà"�?Ø”—’Ñ Ô ¸4ÈÌðñ ô ð ð 8¨gÐ7Ð7ˆÝ˜‰oŒoÐrM   ÚnÚintc                ó\   — |                       | j                             |¦  «        ¦  «        S rD   )Ú_with_nativer~   Úlimit)rJ   rœ   s     rK   ÚheadzDuckDBLazyFrame.head¬   s&   € Ø× Ò  ¤×!2Ò!2°1Ñ!5Ô!5Ñ6Ô6Ð6rM   Úcolumn_namesc                ól   — |                        | j        j        t          t          |¦  «        Ž ¦  «        S rD   )rŸ   r~   r   Úmapr   )rJ   r¢   s     rK   Úsimple_selectzDuckDBLazyFrame.simple_select¯   s-   € Ø× Ò Ð!3 ¤Ô!3µS½¸lÑ5KÔ5KÐ!LÑMÔMÐMrM   Úexprsr)   c                óÒ   — d„ t          | g|¢R Ž D ¦   «         }	 |                      | j                             |¦  «        ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc                ó>   — g | ]\  }}|                      |¦  «        ‘ŒS rs   ©Úalias©Ú.0rz   Úvals      rK   ú
<listcomp>z-DuckDBLazyFrame.aggregate.<locals>.<listcomp>³   s3   € ð 
ð 
ð 
Ù )  cˆC�IŠI�d‰OŒOð
ð 
ð 
rM   )r   rŸ   r~   Ú	aggregateÚ	Exceptionr   ©rJ   r¦   Ú	selectionÚes       rK   r¯   zDuckDBLazyFrame.aggregate²   sŠ   € ð
ð 
Ý-GÈÐ-UÈuÐ-UÐ-UÐ-Uð
ñ 
ô 
ˆ	ð	<Ø×$Ò$ T¤[×%:Ò%:¸9Ñ%EÔ%EÑFÔFÐFøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   ™,A Á
A&ÁA!Á!A&c                ó¼   — d„ t          | g|¢R Ž D ¦   «         }	 |                       | j        j        |Ž ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc              3  óF   K  — | ]\  }}|                      |¦  «        V — Œd S rD   r©   r«   s      rK   ú	<genexpr>z)DuckDBLazyFrame.select.<locals>.<genexpr>¼   sA   è è € ð 
ð 
Ù )  cˆC�IŠI�d‰OŒOð
ð 
ð 
ð 
ð 
ð 
rM   )r   rŸ   r~   r   r°   r   r±   s       rK   r   zDuckDBLazyFrame.select»   s‡   € ð
ð 
Ý-GÈÐ-UÈuÐ-UÐ-UÐ-Uð
ñ 
ô 
ˆ	ð	<Ø×$Ò$Ð%7 T¤[Ô%7¸Ð%CÑDÔDÐDøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   ™!; »
AÁAÁArƒ   úSequence[str]Ústrictc               ó’   ‡— t          | ||¬¦  «        Šˆfd„| j        D ¦   «         }|                       | j        j        |Ž ¦  «        S )N©r¸   c                ó6   •— g | ]}|‰v¯t          |¦  «        ‘ŒS rs   ©r   )r¬   rz   Úcolumns_to_drops     €rK   r®   z(DuckDBLazyFrame.drop.<locals>.<listcomp>Æ   s)   ø€ ÐWÐWÐW 4¸4ÀÐ;VÐ;V•S˜‘Y”YÐ;VÐ;VÐ;VrM   )r   rƒ   rŸ   r~   r   )rJ   rƒ   r¸   r²   r½   s       @rK   ÚdropzDuckDBLazyFrame.dropÄ   sS   ø€ Ý/°°gÀfÐMÑMÔMˆØWÐWÐWÐW¨4¬<ÐWÑWÔWˆ	Ø× Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rM   NÚ_c                ó,   — |�d}t          |¦  «        ‚| S )Nz.`backend` argument is not supported for DuckDB)r™   )rJ   r…   r¿   rp   s       rK   rh   zDuckDBLazyFrame.lazyÉ   s    € ð
 ÐØBˆCÝ˜S‘/”/Ð!ØˆrM   c                óL  ‡— t          t          | g|¢R Ž ¦  «        Šˆfd„| j        D ¦   «         }|                     d„ ‰                     ¦   «         D ¦   «         ¦  «         	 |                       | j        j        |Ž ¦  «        S # t          $ r}t          || ¦  «        d ‚d }~ww xY w)Nc                ó†   •— g | ]=}|‰v r(‰                      |¦  «                             |¦  «        nt          |¦  «        ‘Œ>S rs   )Úpoprª   r   )r¬   rz   Únew_columns_maps     €rK   r®   z0DuckDBLazyFrame.with_columns.<locals>.<listcomp>Õ   s`   ø€ ð 
ð 
ð 
ð ð �Ð&Ð&ð ×Ò Ñ%Ô%×+Ò+¨DÑ1Ô1Ð1å�T‘”ð
ð 
ð 
rM   c              3  óF   K  — | ]\  }}|                      |¦  «        V — Œd S rD   r©   )r¬   rz   Úvalues      rK   r¶   z/DuckDBLazyFrame.with_columns.<locals>.<genexpr>Û   s2   è è € ÐSÐS©K¨D°%�e—k’k $Ñ'Ô'ÐSÐSÐSÐSÐSÐSrM   )
Údictr   rƒ   ÚextendÚitemsrŸ   r~   r   r°   r   )rJ   r¦   Úresultr³   rÄ   s       @rK   Úwith_columnszDuckDBLazyFrame.with_columnsÓ   sÓ   ø€ ÝÕ9¸$ÐGÀÐGÐGÐGÑHÔHˆð
ð 
ð 
ð 
ð œð	
ñ 
ô 
ˆð 	�ŠÐSÐS¸?×;PÒ;PÑ;RÔ;RÐSÑSÔSÑSÔSÐSð	<Ø×$Ò$Ð%7 T¤[Ô%7¸Ð%@ÑAÔAÐAøÝð 	<ð 	<ð 	<Ý(¨¨DÑ1Ô1°tÐ;øøøøð	<øøøs   Á!!B Â
B#ÂBÂB#Ú	predicatec                óÆ   —  || ¦  «        d         }	 |                       | j                             |¦  «        ¦  «        S # t          $ r}t	          || ¦  «        |‚d }~ww xY w)Nr   )rŸ   r~   Úfilterr°   r   )rJ   rÌ   Úmaskr³   s       rK   Ú_filterzDuckDBLazyFrame._filterá   sn   € àˆy˜‰Œ˜qÔ!ˆð	9Ø×$Ò$ T¤[×%7Ò%7¸Ñ%=Ô%=Ñ>Ô>Ð>øÝð 	9ð 	9ð 	9Ý(¨¨DÑ1Ô1°qÐ8øøøøð	9øøøs   “,A  Á 
A Á
AÁA údict[str, DType]c                óî   ‡ ‡— ‰ j         €3t          t          ‰ j        ‰ j        j        d¬¦  «        ¦  «        ‰ _         t          ‰ j        ¦  «        Šˆˆ fd„‰ j                              ¦   «         D ¦   «         S )NTrº   c                óD   •— i | ]\  }}|t          |‰j        ‰¦  «        “ŒS rs   )r   rF   )r¬   Úcolumn_nameÚduckdb_dtypeÚdeferred_time_zonerJ   s      €€rK   ú
<dictcomp>z*DuckDBLazyFrame.schema.<locals>.<dictcomp>ó   sF   ø€ ð 
ð 
ð 
ñ *�˜\ð Õ1Ø˜dœmÐ-?ñô ð
ð 
ð 
rM   )rG   rÇ   Úziprƒ   r~   Útypesr
   rÉ   )rJ   rÖ   s   `@rK   ÚschemazDuckDBLazyFrame.schemaé   s�   øø€ àÔ%Ð-õ *.Ý�D”L $¤+Ô"3¸DÐAÑAÔAñ*ô *ˆDÔ&õ .¨d¬kÑ:Ô:Ðð
ð 
ð 
ð 
ð 
ð .2Ô-G×-MÒ-MÑ-OÔ-Oð	
ñ 
ô 
ð 	
rM   ú	list[str]c                óv   — | j         €,| j        �t          | j        ¦  «        n| j        j        | _         | j         S rD   )rH   rG   ÚlistrÚ   r~   rƒ   rR   s    rK   rƒ   zDuckDBLazyFrame.columnsú   sC   € àÔÐ'ð Ô-Ð9õ �T”[Ñ!Ô!Ð!à”[Ô(ð Ô ð
 Ô#Ð#rM   úpd.DataFramec                ó4   — | j                              ¦   «         S rD   )r~   r=   rR   s    rK   Ú	to_pandaszDuckDBLazyFrame.to_pandas  s   € àŒ{�~Š~ÑÔÐrM   úpa.Tablec                ón   — |                       ¦   «                              t          j        ¦  «        j        S rD   )rh   r›   r   r�   r~   rR   s    rK   Úto_arrowzDuckDBLazyFrame.to_arrow  s$   € à�yŠy‰{Œ{×"Ò"¥>Ô#9Ñ:Ô:ÔAÐArM   c                ó:   — |                       | j        |¬¦  «        S r^   )Ú	__class__r~   )rJ   r?   s     rK   Ú_with_versionzDuckDBLazyFrame._with_version  s   € Ø�~Š~˜dœk°7ˆ~Ñ;Ô;Ð;rM   c                ó:   — |                       || j        ¬¦  «        S r^   )rå   rF   )rJ   r=   s     rK   rŸ   zDuckDBLazyFrame._with_native  s   € Ø�~Š~˜b¨$¬-ˆ~Ñ8Ô8Ð8rM   Úkeysú$Sequence[str] | Sequence[DuckDBExpr]Údrop_null_keysr+   c               ó*   — ddl m}  || ||¬¦  «        S )Nr   r*   )rê   )Únarwhals._duckdb.group_byr+   )rJ   rè   rê   r+   s       rK   Úgroup_byzDuckDBLazyFrame.group_by  s-   € ð 	<Ð;Ð;Ð;Ð;Ð;àˆ}˜T 4¸ÐGÑGÔGÐGrM   ÚmappingúMapping[str, str]c                ó|   ‡— | j         }ˆfd„|j        D ¦   «         }|                       | j         j        |Ž ¦  «        S )Nc              3  óŽ   •K  — | ]?}|‰v r(t          |¦  «                             ‰|         ¦  «        nt          |¦  «        V — Œ@d S rD   ©r   rª   )r¬   rz   rî   s     €rK   r¶   z)DuckDBLazyFrame.rename.<locals>.<genexpr>  s`   øè è € ð 
ð 
àð /3°g¨o¨o�C�‰IŒI�OŠO˜G DœMÑ*Ô*Ð*Å3ÀtÁ9Ä9ð
ð 
ð 
ð 
ð 
ð 
rM   )r~   rƒ   rŸ   r   )rJ   rî   r=   r²   s    `  rK   ÚrenamezDuckDBLazyFrame.rename  sW   ø€ ØŒ[ˆð
ð 
ð 
ð 
àœ
ð
ñ 
ô 
ˆ	ð × Ò Ð!3 ¤Ô!3°YÐ!?Ñ@Ô@Ð@rM   ÚotherÚhowr8   Úleft_onúSequence[str] | NoneÚright_onÚsuffixc               ól  — |dk    rdn|}|dk    rj| j         dk     rd| j         › �}t          |¦  «        ‚| j                             d¦  «                             |j                             d¦  «        ¦  «        }n�|€J ‚|€J ‚d„ t          ||d	¬
¦  «        D ¦   «         }	t          t          |	¦  «        }
| j                             d¦  «                             |j                             d¦  «        |
|¬¦  «        }|dv rïd„ | j	        D ¦   «         }|j	        D ]®}|| j	        v }|dk    r)|s'| 
                    t          d|› d�¦  «        ¦  «         Œ:|dk    s|rD|�||vr>| 
                    t          d|› d�¦  «                             |› |› �¦  «        ¦  «         Œ†|�||vr"| 
                    t          |¦  «        ¦  «         Œ¯ |j        |Ž                      | j        j        ¦  «        }n2|                     d¦  «                             | j        j        ¦  «        }|                      |¦  «        S )NÚfullÚouterÚcross)rŠ   rŠ   é   z;'duckdb>=1.1.4' is required for cross-join, found version: ÚlhsÚrhsc              3  ól   K  — | ]/\  }}t          d |› d�¦  «        t          d|› d�¦  «        k    V — Œ0dS ©úlhs."ú"úrhs."Nr¼   ©r¬   ÚleftÚrights      rK   r¶   z'DuckDBLazyFrame.join.<locals>.<genexpr>7  sc   è è € ð ð á�D˜%õ �O˜D�O�O�OÑ$Ô$­Ð,<°EÐ,<Ð,<Ð,<Ñ(=Ô(=Ò=ðð ð ð ð ð rM   Trº   )Ú	conditionrõ   >   r  rý   Úinnerrü   c                ó4   — g | ]}t          d |› d�¦  «        ‘ŒS )r  r  r¼   )r¬   Úxs     rK   r®   z(DuckDBLazyFrame.join.<locals>.<listcomp>D  s(   € Ð>Ð>Ð>¨A•c˜, !˜,˜,˜,Ñ'Ô'Ð>Ð>Ð>rM   r  r  úlhs.*)rQ   ÚNotImplementedErrorr~   Ú	set_aliasrý   rØ   r   r   Újoinrƒ   Úappendr   rª   r   rŸ   )rJ   rô   rõ   rö   rø   rù   Ú
native_howrp   ÚrelÚitr	  r   rz   Ú
col_in_lhsÚress                  rK   r  zDuckDBLazyFrame.join!  s|  € ð ˜f’}�}ˆGˆG¨#ð 	ð ˜Ò Ð ØÔ$ yÒ0Ð0ØkÐTXÔTiÐkÐk�Ý)¨#Ñ.Ô.Ð.Ø”+×'Ò'¨Ñ.Ô.×4Ò4°U´\×5KÒ5KÈEÑ5RÔ5RÑSÔSˆCˆCð Ð&Ð&Ð&ØÐ'Ð'Ð'ðð å#& w°ÀÐ#FÑ#FÔ#Fðñ ô ˆBõ %+­4°Ñ$4Ô$4ˆIØ”+×'Ò'¨Ñ.Ô.×3Ò3Ø”×&Ò& uÑ-Ô-à#Øð	 4ñ ô ˆCð Ð<Ð<Ð<Ø>Ð>°´Ð>Ñ>Ô>ˆFØœð 	-ð 	-�Ø#'¨4¬<Ð#7�
Ø Ò(Ð(°Ð(Ø—M’M¥# o¨d o o oÑ"6Ô"6Ñ7Ô7Ð7Ð7Ø  GÒ+Ð+Øð ,Ø$,Ð$4¸ÀHÐ8LÐ8Là—M’M¥# o¨d o o oÑ"6Ô"6×"<Ò"<ÀÐ=NÀfÐ=NÐ=NÑ"OÔ"OÑPÔPÐPÐPØÐ%¨°XÐ)=Ð)=Ø—M’M¥# d¡)¤)Ñ,Ô,Ð,øØ�#”*˜fÐ%×/Ò/°´Ô0AÑBÔBˆCˆCà—*’*˜WÑ%Ô%×/Ò/°´Ô0AÑBÔBˆCà× Ò  Ñ%Ô%Ð%rM   Úby_leftÚby_rightÚstrategyr7   c               ó€  ‡‡‡‡‡‡— | j         Š|j         Šg }|�2‰�0|                     d„ t          |‰d¬¦  «        D ¦   «         ¦  «         ng x}Š|dk    r<|                     t	          d|› d�¦  «        t	          d‰› d�¦  «        k    ¦  «         nS|dk    r<|                     t	          d|› d�¦  «        t	          d‰› d�¦  «        k    ¦  «         nd	}	t          |	¦  «        ‚t          t          |¦  «        }
ˆˆfd
„‰j        D ¦   «         }ˆˆfd„|D ¦   «         Šdg}|                     ˆfd„|D ¦   «         ¦  «         dd 	                    |¦  «        › d|
› d�}t          j        |¦  «        }d„ ‰j        D ¦   «         }|                     ˆˆfd„|D ¦   «         ¦  «         |                       |j        |Ž ¦  «        S )Nc              3  ól   K  — | ]/\  }}t          d |› d�¦  «        t          d|› d�¦  «        k    V — Œ0dS r  r¼   r  s      rK   r¶   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>d  sc   è è € ð ð á�D˜%õ �O˜D�O�O�OÑ$Ô$­Ð,<°EÐ,<Ð,<Ð,<Ñ(=Ô(=Ò=ðð ð ð ð ð rM   Trº   Úbackwardr  r  r  ÚforwardzKOnly 'backward' and 'forward' strategies are currently supported for DuckDBc                ó"   •— g | ]}|‰h‰£v¯	|‘ŒS rs   rs   )r¬   rz   r  rø   s     €€rK   r®   z-DuckDBLazyFrame.join_asof.<locals>.<listcomp>z  s+   ø€ ÐWÐWÐW˜d°TÀ(ÐAVÈXÐAVÐ5VÐ5V�TÐ5VÐ5VÐ5VrM   c                ó`   •— i | ]*}|‰j         v ¯|t          d g ‰j         ¢‰j         ¢¦  «        “Œ+S )é   )rƒ   r   )r¬   rz   rÿ   r   s     €€rK   r×   z-DuckDBLazyFrame.join_asof.<locals>.<dictcomp>{  sL   ø€ ð 
ð 
ð 
àØ�s”{Ð"Ð"ð Õ0°Ð4P°c´kÐ4PÀCÄKÐ4PÑQÔQà"Ð"Ð"rM   r  c              3  óJ   •K  — | ]}|‰v rd |› d‰|         › d�nd |› d�V — ŒdS )r  z" as "r  Nrs   )r¬   rz   Ú	tmp_namess     €rK   r¶   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>�  sk   øè è € ð 
ð 
ð ð �yÐ Ð ð 3�DÐ2Ð2 	¨$¤Ð2Ð2Ð2Ð2à ˜���ð
ð 
ð 
ð 
ð 
ð 
rM   z
            SELECT ú,zD
            FROM lhs
            ASOF LEFT JOIN rhs
            ON ú
            c                ó,   — g | ]}t          |¦  «        ‘ŒS rs   r¼   ©r¬   rz   s     rK   r®   z-DuckDBLazyFrame.join_asof.<locals>.<listcomp>�  s   € Ð4Ð4Ð4 •#�d‘)”)Ð4Ð4Ð4rM   c              3  ó–   •K  — | ]C}|‰v r,t          ‰|         ¦  «                             |› ‰› �¦  «        nt          |¦  «        V — ŒDd S rD   rò   )r¬   rz   rù   r"  s     €€rK   r¶   z,DuckDBLazyFrame.join_asof.<locals>.<genexpr>�  sw   øè è € ð 
ð 
ð ð �yÐ Ð õ �	˜$”Ñ Ô ×&Ò&¨$Ð'8°Ð'8Ð'8Ñ9Ô9Ð9å�T‘”ð
ð 
ð 
ð 
ð 
ð 
rM   )r~   rÈ   rØ   r  r   r  r   r   rƒ   r  rX   ÚsqlrŸ   r   )rJ   rô   rö   rø   r  r  r  rù   Ú
conditionsrp   r	  Ú	keep_colsÚ
rhs_selectÚqueryÚjoinedr   rÿ   r   r"  s      ` ` `        @@@rK   Ú	join_asofzDuckDBLazyFrame.join_asofU  s�  øøøøøø€ ð ŒkˆØŒlˆØ')ˆ
ØÐ 8Ð#7Ø×Òð ð å#& w°ÀÐ#FÑ#FÔ#Fðñ ô ñ ô ð ð ð
 "$Ð#ˆG�hØ�zÒ!Ð!Ø×Ò�cÐ"4¨'Ð"4Ð"4Ð"4Ñ5Ô5½Ð=PÀXÐ=PÐ=PÐ=PÑ9QÔ9QÒQÑRÔRÐRÐRØ˜Ò"Ð"Ø×Ò�cÐ"4¨'Ð"4Ð"4Ð"4Ñ5Ô5½Ð=PÀXÐ=PÐ=PÐ=PÑ9QÔ9QÒQÑRÔRÐRÐRà_ˆCÝ% cÑ*Ô*Ð*Ý &¥t¨ZÑ 8Ô 8ˆ	ð XÐWÐWÐWÐW c¤kÐWÑWÔWˆ	ð
ð 
ð 
ð 
ð 
à!ð
ñ 
ô 
ˆ	ð
 �Yˆ
Ø×Òð 
ð 
ð 
ð 
ð "ð	
ñ 
ô 
ñ 	
ô 	
ð 	
ðØ—H’H˜ZÑ(Ô(ðð ð ð	ð ð ˆõ ”˜EÑ"Ô"ˆà4Ð4¨¬Ð4Ñ4Ô4ˆØ�Šð 
ð 
ð 
ð 
ð 
ð "ð	
ñ 
ô 
ñ 	
ô 	
ð 	
ð × Ò   ¤°Ð!7Ñ8Ô8Ð8rM   c                ó   — | j         S rD   )rÚ   rR   s    rK   Úcollect_schemazDuckDBLazyFrame.collect_schema˜  s
   € ØŒ{ÐrM   ÚsubsetÚkeepr9   Úorder_byc               óž  — |p| j         }|                      |¦  «        x}r|‚t          d| j         d¬¦  «        }|r#|dk    rt          dt	          |¦  «        ¦  «        nd }|dk    r1t          t          dt          ¦   «         ¦  «        ||pd||¬	¦  «        }n#t          t          d
¦  «        ||pd||¬	¦  «        }|                      | j	         
                    t          ¦   «         |                     |¦  «        ¦  «                             t          |¦  «        t          d¦  «        k    ¦  «        ¦  «                             |gd¬¦  «        S )Nr   Ú
row_index_)ÚprefixÚlastTÚnoneÚcountrs   )Ú
descendingÚ
nulls_lastÚ
row_numberrŠ   Frº   )rƒ   Ú_check_columns_existr   r   Úlenr   r   r	   rŸ   r~   r   rª   rÎ   r   r   r¾   )	rJ   r1  r2  r3  Úsubset_ÚerrorÚtmp_nameÚflagsÚexprs	            rK   ÚuniquezDuckDBLazyFrame.unique›  sY  € ð Ð(˜DœLˆØ×-Ò-¨gÑ6Ô6Ð6ˆ5ð 	ØˆKÝ1°!°T´\È,ÐWÑWÔWˆØ4<ÐYÀÈÂÀ•˜D¥# h¡-¤-Ñ0Ô0Ð0ÐUYˆØ�6Š>ˆ>Ý$Ý�'�>Ñ+Ô+Ñ,Ô,ØØ�˜BØ Ø ðñ ô ˆDˆDõ %Ý�,‘”ØØ�˜BØ Ø ðñ ô ˆDð × Ò ØŒK×Ò�~Ñ/Ô/°·²¸HÑ1EÔ1EÑFÔF×MÒMÝ�H‘”¥ Q¡¤Ò'ñô ñ
ô 
÷ Š$�ˆz %ˆ$Ñ
(Ô
(ð		)rM   Úbyr:  úbool | Sequence[bool]r;  c               óö   — t          |t          |¦  «        ¦  «        }|rd„ t          ||d¬¦  «        D ¦   «         }nd„ t          ||d¬¦  «        D ¦   «         }|                       | j        j        |Ž ¦  «        S )Nc              3  óÈ   K  — | ]]\  }}|s!t          |¦  «                             ¦   «         n2t          |¦  «                             ¦   «                              ¦   «         V — Œ^d S rD   )r   r;  Údesc©r¬   rz   rI  s      rK   r¶   z'DuckDBLazyFrame.sort.<locals>.<genexpr>À  sr   è è € ð ð á�D˜$ð /3ÐU•�D‘	”	×$Ò$Ñ&Ô&Ð&½¸D¹	¼	¿ºÑ8HÔ8H×8SÒ8SÑ8UÔ8Uðð ð ð ð ð rM   Trº   c              3  óÈ   K  — | ]]\  }}|s!t          |¦  «                             ¦   «         n2t          |¦  «                             ¦   «                              ¦   «         V — Œ^d S rD   )r   Únulls_firstrI  rJ  s      rK   r¶   z'DuckDBLazyFrame.sort.<locals>.<genexpr>Å  sr   è è € ð ð á�D˜$ð 04ÐW•�D‘	”	×%Ò%Ñ'Ô'Ð'½¸T¹¼¿ºÑ9IÔ9I×9UÒ9UÑ9WÔ9Wðð ð ð ð ð rM   )r   r>  rØ   rŸ   r~   Úsort)rJ   r:  r;  rE  r  s        rK   rM  zDuckDBLazyFrame.sort½  sž   € Ý  ­S°©W¬WÑ5Ô5ˆ
Øð 		ðð å"% b¨*¸TÐ"BÑ"BÔ"Bðñ ô ˆBˆBð
ð å"% b¨*¸TÐ"BÑ"BÔ"Bðñ ô ˆBð × Ò Ð!1 ¤Ô!1°2Ð!6Ñ7Ô7Ð7rM   ÚkúIterable[str]Úreversec               ó¾  — | j         }t          |¦  «        }t          |t          ¦  «        rt	          | t          |¦  «        ¦  «        }nt          d„ |D ¦   «         ¦  «        }t          t          d¦  «        ||t	          dt          |¦  «        ¦  «        ¬¦  «        }|t          |¦  «        k    }d|› d�}|  
                    t          j        |¦  «        ¦  «        S )Nc              3  ó   K  — | ]}| V — Œd S rD   rs   )r¬   Úrevs     rK   r¶   z(DuckDBLazyFrame.top_k.<locals>.<genexpr>Ñ  s$   è è € Ð:Ð:¨3 3˜wÐ:Ð:Ð:Ð:Ð:Ð:rM   r<  T)r3  r:  r;  z@
            SELECT *
            FROM _rel
            QUALIFY z	
        )r~   rÝ   rW   r@   r   r>  Útupler   r   r   rŸ   rX   r(  )	rJ   rN  rE  rP  Ú_relr:  rC  r	  r,  s	            rK   Útop_kzDuckDBLazyFrame.top_kË  sÝ   € ØŒ{ˆÝ�"‰XŒXˆÝ�g�tÑ$Ô$ð 	;Ý$¨ [µ#°b±'´'Ñ:Ô:ˆJˆJåÐ:Ð:°'Ð:Ñ:Ô:Ñ:Ô:ˆJÝ Ýˆl‰OŒOØØ!Ý" 4­¨R©¬Ñ1Ô1ð	
ñ 
ô 
ˆð �C ™FœF’Nˆ	ðð ðð ð ˆð
 × Ò ¥¤¨EÑ!2Ô!2Ñ3Ô3Ð3rM   c                ó°   — |�|n| j         }t          t          d„ |D ¦   «         ¦  «        }|                      | j                             |¦  «        ¦  «        S )Nc              3  óX   K  — | ]%}t          |¦  «                             ¦   «         V — Œ&d S rD   )r   Ú	isnotnullr&  s     rK   r¶   z-DuckDBLazyFrame.drop_nulls.<locals>.<genexpr>â  s4   è è € Ð&QÐ&QÀ¥s¨4¡y¤y×':Ò':Ñ'<Ô'<Ð&QÐ&QÐ&QÐ&QÐ&QÐ&QrM   )rƒ   r   r   rŸ   r~   rÎ   )rJ   r1  r?  Úkeep_conditions       rK   Ú
drop_nullszDuckDBLazyFrame.drop_nullsà  sT   € Ø"Ð.�&�&°D´LˆÝ¥Ð&QÐ&QÈÐ&QÑ&QÔ&QÑRÔRˆØ× Ò  ¤×!3Ò!3°NÑ!CÔ!CÑDÔDÐDrM   c                ó–  ‡‡— | j         j        }|                      ¦   «         }‰D ]*}||         }||j        k    rd|› d�}t	          |¦  «        ‚Œ+t          ‰¦  «        dk    rd}t          |¦  «        ‚t          ‰d         ¦  «        Š| j        }| j	        }t          d¦  «        }	‰                     ¦   «         t          d‰¦  «        z  |	k    }
 |                     |
¦  «        j        ˆˆfd„|D ¦   «         Ž } |                     |
 ¦  «        j        ˆfd„|D ¦   «         Ž }|                      |                     |¦  «        ¦  «        S )	Nz-`explode` operation not supported for dtype `z`, expected List typerŠ   z”Exploding on multiple columns is not supported with DuckDB backend since we cannot guarantee that the exploded columns have matching element counts.r   r>  c              3  ój   •K  — | ]-}|‰v r#t          d ‰¦  «                             |¦  «        n|V — Œ.dS )ÚunnestN)r   rª   )r¬   rz   Úcol_to_exploderƒ   s     €€rK   r¶   z*DuckDBLazyFrame.explode.<locals>.<genexpr>ÿ  s^   øè è € ð ð àð <@À7¸?¸?•�(˜NÑ+Ô+×1Ò1°$Ñ7Ô7Ð7ÐPTðð ð ð ð ð rM   c              3  óh   •K  — | ],}|‰v r"t          d ¦  «                             |¦  «        n|V — Œ-d S rD   )r   rª   )r¬   rz   rƒ   s     €rK   r¶   z*DuckDBLazyFrame.explode.<locals>.<genexpr>  sV   øè è € ð ð àð *.°¨¨•�D‘	”	—’ Ñ%Ô%Ð%¸dðð ð ð ð ð rM   )rF   Údtypesr0  ÚListr   r>  r  r   r~   rƒ   r   rY  r   rÎ   r   rŸ   Úunion)rJ   rƒ   ra  rÚ   rz   Údtyperp   r  Úoriginal_columnsÚzeroÚnot_null_conditionÚnon_null_relÚnull_relr_  s    `           @rK   ÚexplodezDuckDBLazyFrame.explodeå  s¤  øø€ Ø”Ô%ˆØ×$Ò$Ñ&Ô&ˆØð 	1ð 	1ˆDØ˜4”LˆEØ˜œÒ#Ð#ð)ÀEð )ð )ð )ð õ ,¨CÑ0Ô0Ð0ð $õ ˆw‰<Œ<˜1ÒÐð^ð õ & cÑ*Ô*Ð*å˜W QœZ™œˆØŒkˆØœ<Ðå�1‰vŒvˆØ+×5Ò5Ñ7Ô7½!¸EÀ>Ñ:RÔ:RÑRÐUYÒYÐØ<�s—z’zÐ"4Ñ5Ô5Ô<ðð ð ð ð à,ðñ ô ð
ˆð :�3—:’:Ð1Ð1Ñ2Ô2Ô9ðð ð ð à,ðñ ô ð
ˆð × Ò  ×!3Ò!3°HÑ!=Ô!=Ñ>Ô>Ð>rM   ÚonÚindexÚvariable_nameÚ
value_namec                óp  ‡
— |€g n|Š
|€ˆ
fd„| j         D ¦   «         n|}|dk    rd}t          |¦  «        ‚|dk    rd}t          |¦  «        ‚t          |Ž }| j        }d|› dt	          |¦  «        › dt	          |¦  «        › d�}	|                       t          j        |	¦  «        j        g ‰
¢|‘|‘Ž ¦  «        S )	Nc                ó   •— g | ]}|‰v¯|‘Œ	S rs   rs   )r¬   ÚcÚindex_s     €rK   r®   z+DuckDBLazyFrame.unpivot.<locals>.<listcomp>  s   ø€ Ð:Ð:Ð:�Q¨!°6¨/¨/ˆq¨/¨/¨/rM   Ú z:`variable_name` cannot be empty string for duckdb backend.z7`value_name` cannot be empty string for duckdb backend.z)
            unpivot _rel
            on z'
            into
                name z
                value r$  )	rƒ   r  r   r~   r   rŸ   rX   r(  r   )rJ   rk  rl  rm  rn  Úon_rp   Ú
unpivot_onrU  r,  rr  s             @rK   ÚunpivotzDuckDBLazyFrame.unpivot  s
  ø€ ð �}��¨%ˆØ>@¸jÐ:Ð:Ð:Ð:˜$œ,Ð:Ñ:Ô:Ð:Èbˆà˜BÒÐØNˆCÝ% cÑ*Ô*Ð*à˜ÒÐØKˆCÝ% cÑ*Ô*Ð*å&¨Ð,ˆ
ØŒ{ˆðàðð õ ˜-Ñ(Ô(ð	ð õ
 ˜:‘”ðð ð ˆð × Ò Ø$�FŒJ�uÑÔÔ$Ð&J¨Ð&J°Ð&J¸zÐ&JÐKñ
ô 
ð 	
rM   )rŠ   é   c                ó  — |sd}t          |¦  «        ‚t          t          d¦  «        |¬¦  «        t          d¦  «        z
                       |¦  «        }|                      | j                             |t          ¦   «         ¦  «        ¦  «        S )Nz3Must pass `order_by` to `with_row_index` for DuckDBr<  )r3  rŠ   )	Ú	TypeErrorr   r   r   rª   rŸ   r~   r   r	   )rJ   rz   r3  rp   rC  s        rK   Úwith_row_indexzDuckDBLazyFrame.with_row_index/  s   € àð 	!ØGˆCÝ˜C‘.”.Ð Ý!¥! L¡/¤/¸HÐEÑEÔEÍÈAÉÌÑN×UÒUØñ
ô 
ˆð × Ò  ¤×!3Ò!3°D½.Ñ:JÔ:JÑ!KÔ!KÑLÔLÐLrM   Úfileústr | Path | BytesIOc                óT   — | j                              t          |¦  «        ¦  «         d S rD   )r~   Úwrite_parquetr{   )rJ   r{  s     rK   Úsink_parquetzDuckDBLazyFrame.sink_parquet9  s$   € ØŒ×!Ò!¥# d¡)¤)Ñ,Ô,Ð,Ð,Ð,rM   )r=   r>   r?   r   r<   r@   rA   rB   )rA   rN   )rS   rT   rA   rU   )r[   r>   r\   r2   rA   r&   )rb   r   rc   r   rA   rd   )rA   r&   )rA   r$   )rA   r-   )rz   r{   rA   r/   )rA   r�   )r…   r†   r‡   r   rA   r(   )rœ   r�   rA   r&   )r¢   r{   rA   r&   )r¦   r)   rA   r&   )rƒ   r·   r¸   r@   rA   r&   rD   )r…   rB   r¿   rB   rA   r&   )rÌ   r)   rA   r&   )rA   rÑ   )rA   rÛ   )rA   rÞ   )rA   rá   )r?   r   rA   r&   )r=   r>   rA   r&   )rè   ré   rê   r@   rA   r+   )rî   rï   rA   r&   )rô   r&   rõ   r8   rö   r÷   rø   r÷   rù   r{   rA   r&   )rô   r&   rö   r{   rø   r{   r  r÷   r  r÷   r  r7   rù   r{   rA   r&   )r1  r÷   r2  r9   r3  r÷   rA   r&   )rE  r{   r:  rF  r;  r@   rA   r&   )rN  r�   rE  rO  rP  rF  rA   r&   )r1  r÷   rA   r&   )rƒ   r·   rA   r&   )
rk  r÷   rl  r÷   rm  r{   rn  r{   rA   r&   )rz   r{   r3  r·   rA   r&   )r{  r|  rA   rB   )2Ú__name__Ú
__module__Ú__qualname__r   ÚDUCKDBrP   rL   ÚpropertyrQ   ÚstaticmethodrZ   Úclassmethodra   rm   rq   rt   rv   ry   r€   r„   r›   r¡   r¥   r¯   r   r¾   rh   rË   rÐ   rÚ   rƒ   rà   rã   ræ   rŸ   rí   ró   r  r.  r0  rD  rM  rV  r[  rj  rv  r   Úbackend_versionrz  r  rs   rM   rK   r;   r;   ;   s¾  € € € € € ð %Ô+€Oð */ð-ð -ð -ð -ð -ð -ð ð7ð 7ð 7ñ „Xð7ð ð8ð 8ð 8ñ „\ð8ð ð3ð 3ð 3ñ „[ð3ð
;ð ;ð ;ð ;ðð ð ð ðð ð ð ðð ð ð ð6ð 6ð 6ð 6ð
Xð Xð Xð Xð
ð ð ð ð%ð %ð %ð %ðN7ð 7ð 7ð 7ðNð Nð Nð Nð<ð <ð <ð <ð<ð <ð <ð <ðAð Að Að Að
ð ð ð ð ð<ð <ð <ð <ð9ð 9ð 9ð 9ð ð
ð 
ð 
ñ „Xð
ð  ð$ð $ð $ñ „Xð$ð ð  ð  ð  ðBð Bð Bð Bð<ð <ð <ð <ð9ð 9ð 9ð 9ðHð Hð Hð HðAð Að Að Að2&ð 2&ð 2&ð 2&ðhA9ð A9ð A9ð A9ðFð ð ð ð )ð  )ð  )ð  )ðD8ð 8ð 8ð 8ð4ð 4ð 4ð 4ð*Eð Eð Eð Eð
'?ð '?ð '?ð '?ðR
ð 
ð 
ð 
ðB €XÔ˜fÑ%Ô%ðMð Mð Mñ &Ô%ðMð-ð -ð -ð -ð -ð -rM   r;   )r)   r>   rd   )QÚ
__future__r   Ú	functoolsr   Úoperatorr   Útypingr   r   r   rX   r	   Únarwhals._duckdb.utilsr
   r   r   r   r   r   r   r   r   Únarwhals._sql.dataframer   Únarwhals._utilsr   r   r   r   r   r   r   Únarwhals.dependenciesr   Únarwhals.exceptionsr   Úcollections.abcr   r   r    r!   Úior"   Úpathlibr#   rÙ   r$   ÚpandasÚpdÚpyarrowÚpar%   Útyping_extensionsr&   r'   Únarwhals._compliant.typingr(   Únarwhals._duckdb.exprr)   rì   r+   rx   r-   r}   r/   r0   Únarwhals._typingr1   r2   Únarwhals.dataframer3   Únarwhals.dtypesr4   rj   r6   rl   Únarwhals.typingr7   r8   r9   r;   rs   rM   rK   ú<module>rŸ     sN  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø !Ð !Ð !Ð !Ð !Ð !ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 1Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5àð SØEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEØÐÐÐÐÐØÐÐÐÐÐØ Ð Ð Ð Ð Ð àÐÐÐØÐÐÐØ!Ð!Ð!Ð!Ð!Ð!Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.à@Ð@Ð@Ð@Ð@Ð@Ø0Ð0Ð0Ð0Ð0Ð0Ø7Ð7Ð7Ð7Ð7Ð7Ø:Ð:Ð:Ð:Ð:Ð:Ø?Ð?Ð?Ð?Ð?Ð?Ø4Ð4Ð4Ð4Ð4Ð4Ø2Ð2Ð2Ð2Ð2Ð2Ø/Ð/Ð/Ð/Ð/Ð/Ø,Ð,Ð,Ð,Ð,Ð,Ø%Ð%Ð%Ð%Ð%Ð%Ø;Ð;Ð;Ð;Ð;Ð;ØRÐRÐRÐRÐRÐRÐRÐRÐRÐRð-ð -ð -ð -ð -Øð	Uôð
 ñ-ô -ð -ð -ð -rM   