§
     �’jƒë ã                   ó:  — d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZ d dlmZ d dlZd dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dl m!Z! d dl"m#Z# d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z@mAZA d dlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZTmUZU d dlVmWZWmXZX d dlYmZZZ d dl[m\Z\ d dl]m^Z^m_Z_m`Z` d dlambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZm dZndZodedefd„Z G d„ d ¦  «        Zpd!ejq        dz  d"erejs                 dejq        fd#„Ztd!ejq        dz  d$erejs                 dejq        fd%„Zud&ejv        dej#        fd'„Zwd(ejx        erejx                 z  d)eyddfd*„ZzdS )+é    N)ÚOrderedDictÚdefaultdict)ÚAnyÚCallableÚMappingÚSequenceÚget_args)Údeepcopy)Úgrpc)Úshow_warning_once)Ú	constructÚto_jsonable_python)Úcommon_types)Úget_args_subscribed)Ú
GrpcToRest)Úmodels)ÚScoredPoint)ÚDistanceÚExtendedPointIdÚSparseVectorÚ
OrderValue)Úevaluate_expressionÚraise_non_finite_error)Úreciprocal_rank_fusionÚdistribution_based_score_fusion)ÚContextPairÚContextQueryÚDenseQueryVectorÚDiscoveryQueryÚDistanceOrderÚ	RecoQueryÚcalculate_context_scoresÚcalculate_discovery_scoresÚcalculate_distanceÚcalculate_recommend_best_scoresÚdistance_to_orderÚcalculate_recommend_sum_scoresÚcalculate_distance_coreÚcalculate_naive_feedback_queryÚNaiveFeedbackQueryÚFeedbackItemÚNaiveFeedbackCoefficients)ÚMultiQueryVectorÚMultiRecoQueryÚMultiDiscoveryQueryÚMultiContextQueryÚMultiContextPairÚcalculate_multi_distanceÚ%calculate_multi_recommend_best_scoresÚ calculate_multi_discovery_scoresÚcalculate_multi_context_scoresÚ$calculate_multi_recommend_sum_scoresÚcalculate_multi_distance_core)ÚJsonPathItemÚparse_json_path)Úto_order_value)Úcalculate_payload_maskÚcheck_filter)Úvalue_by_keyÚ
parse_uuid)Úset_value_by_key)ÚCollectionPersistence)Úempty_sparse_vectorÚsort_sparse_vectorÚvalidate_sparse_vector)ÚSparseContextPairÚSparseContextQueryÚSparseDiscoveryQueryÚSparseQueryVectorÚSparseRecoQueryÚcalculate_distance_sparseÚcalculate_sparse_context_scoresÚ!calculate_sparse_discovery_scoresÚ&calculate_sparse_recommend_best_scoresÚmerge_positive_and_negative_avgÚ
sparse_avgÚ%calculate_sparse_recommend_sum_scoresÚ gýô  €>ÚxÚreturnc                 óÐ   — 	 t          j        t          j        | d¬¦  «        ¦  «        S # t          $ r1 t          j        t          j        | dt          ¬¦  «        ¦  «        cY S w xY w)NT)Ú	allow_nan)rT   Údefault)ÚjsonÚloadsÚdumpsÚ	ExceptionÚ_to_jsonable_python©rQ   s    úRC:\Projects\DSCons\.venv\Lib\site-packages\qdrant_client\local\local_collection.pyr   r   [   sn   € ðVÝŒz�$œ* Q°$Ð7Ñ7Ô7Ñ8Ô8Ð8øÝð Vð Vð VÝŒz�$œ* Q°$Õ@SÐTÑTÔTÑUÔUÐUÐUÐUðVøøøs   ‚'* ª8A%Á$A%c            !       ó !  — e Zd ZdZdZ	 	 d�dej        dedz  deddfd	„Z	e
d
eeej        f         deeeej        f         eeej        f         f         fd„¦   «         Zdžd„Zdededdfd„Zdededdfd„Ze
dej        dz  dej        dz  fd„¦   «         Zedededefd„¦   «         Zdedee         dej        deeef         fd„Z	 dŸdededej        dz  defd„Zdžd„Z ede!e         eee!e         f         z  e!e!e                  z  eee!e!e                  f         z  e"z  eee"f         z  eee#f         z  e$z  eee$f         z  ej%        z  deee"e#z  e$z  ej%        z  f         fd„¦   «         Z&dedej        fd„Z'ed ed!edefd"„¦   «         Z(ed ed!edefd#„¦   «         Z)e	 d d%e*d&e+egef         d'ede*fd(„¦   «         Z,e	 d¡d%ed*eee         z  ej-        z  dedz  fd+„¦   «         Z.	 	 d¢d,ed*eee         z  ej-        z  d-edej/        fd.„Z0	 d£d,ed/eee         z  dz  dej1        dz  fd0„Z2	 dŸd1ej        dz  dedz  dej        fd2„Z3d3edeeef         fd4„Z4	 	 	 	 	 	 	 d¤de!e         eee!e         f         z  e!e!e                  z  eee!e!e                  f         z  e"z  eee"f         z  e#z  eee#f         z  e$z  eee$f         z  ej%        z  d6ej        dz  d7ed8edz  d*eee         z  ej-        z  d/eee         z  d9edz  dej        dz  de!ej5                 fd:„Z6	 	 	 	 	 	 	 	 	 	 d¥d<ej7        dz  d=e!ej8                 dz  d6ej        dz  d7ed8ed*eee         z  ej-        z  d/eee         z  d9edz  d>edz  dej        dz  d?e*dej9        fd@„Z:d=ej8        de!ej5                 fdA„Z;	 	 	 	 	 	 d¦dBe!e!ej5                          d<ej7        d7ed8ed>edz  d6ej        dz  d9edz  d*eee         z  ej-        z  d/eee         z  dej        dz  de!ej5                 fdC„Z<	 	 	 	 	 	 	 	 	 d§d<ej7        dz  d>edz  d6ej        dz  d7edz  d8edz  d*eee         z  ej-        z  d/eee         z  d9edz  dej        dz  de!ej5                 fdD„Z=	 	 	 	 	 	 	 	 	 	 	 d¨dFed<ej>        e!e         z  e!e!e                  z  ej        z  ej7        z  ej%        z  ej?        z  ej@        z  ejA        z  dz  d>edz  d=ej8        e!ej8                 z  dz  d6ej        dz  d7edGed*eee         z  ej-        z  d/eee         z  d9edz  dHejB        dz  dIdJdejC        fdK„ZD	 	 	 	 	 	 	 	 d©dee         e!e!e                  z  eeejE        eFz  eGz  eHz  ej%        z  f         z  eFz  eGz  eHz  ej%        z  dFed6ej        dz  d7edGed*eee         z  ej-        z  d/eee         z  d9edz  dHejB        dz  dIdJdejC        fdM„ZI	 	 dªd!edNej        dz  d7edejJ        fdO„ZK	 	 d«dPeej>                 d*eee         z  ej-        z  d/eee         z  de!ejL                 fdQ„ZM	 	 	 	 	 	 	 d¬dReejN                 dz  dSeejN                 dz  dTejO        dz  d6ej        dz  d>edz  dUdJdVedz  dee!e!e                  e!e!e                  e!ej                 e!ej                 e!e!e!e                           e!e!e!e                           ej        f         fdW„ZPe
dXe!e!e                  dYe!e!e                  dej%        fdZ„¦   «         ZQe
dXe!ej                 dYe!ej                 dej        fd[„¦   «         ZRe
dXe!e!e!e                           dYe!e!e!e                           de!e!e                  fd\„¦   «         ZS	 	 	 	 	 	 	 d¬dReejN                 dz  dSeejN                 dz  d6ej        dz  d>edz  dUdJdVedz  dTejO        dz  deeFeGz  eHz  ej        z  ej%        z  ej        f         fd]„ZT	 	 	 	 	 	 	 	 	 	 	 	 	 d­dReejN                 dz  dSeejN                 dz  d6ej        dz  d7ed8ed*eee         z  ej-        z  d/eee         z  d9edz  d>edz  dUdJdVedz  dTejO        dz  dej        dz  de!ej5                 fd^„ZU	 	 	 	 	 	 	 	 	 	 	 	 	 	 d®dFedReejN                 dz  dSeejN                 dz  d6ej        dz  d7edGed9edz  d*eee         z  ej-        z  d/eee         z  d>edz  dUdJdVedz  dHejB        dz  dIdJdTejO        dz  dejC        f d_„ZV	 	 	 	 d¯d6ej        dz  d7ed`ed>edz  dejW        f
da„ZX	 	 	 	 d¯d6ej        dz  d7ed`ed>edz  dejY        f
db„ZZ	 	 	 	 d¯d6ej        dz  d7ed`ed>edz  dee!e[         e!e!e5                  f         f
dc„Z\e
ddejN        dz  ded dedeejE        ej>        dz  f         fdf„¦   «         Z]dge!ej^                 ded dedee!e^         e!e_         e!e`         e!ej>                 f         fdh„Za	 	 	 	 	 	 d°ddejN        dz  dgeej^                 dz  d6ej        dz  d>edz  dUdJdVedz  deejE        dz  e!e^         e!e_         e!e`         ej        f         fdi„Zb	 	 	 	 	 	 	 	 	 	 	 	 d±ddejN        dz  dgeej^                 dz  d6ej        dz  d7ed8ed*eee         z  ej-        z  d/eee         z  d>edz  dUdJdVedz  d9edz  dej        dz  de!ej5                 fdj„Zcedkej[        deeef         fdl„¦   «         Zd	 	 	 	 	 	 d²dmej        dz  d7edneje        dz  d8ej>        dz  d*eee         z  ej-        z  d/eee         z  dee!ejL                 ej>        dz  f         fdo„ZfdŸdpej        dz  dejg        fdq„Zh	 	 	 	 	 d³dmej        dz  d7ed8ej>        dz  d*eee         z  ej-        z  d/eee         z  dee!ejL                 ej>        dz  f         fdr„Zi	 	 	 	 d´dneje        dmej        dz  d7ed*eee         z  ej-        z  d/eee         z  dee!ejL                 ej>        dz  f         fds„Zj	 	 d«d7ed6ej        dz  d*eee         z  ej-        z  d/eee         z  de!ej5                 f
dt„Zk	 	 	 	 	 	 	 d¤de!e         ez  e!e!e                  z  duejl        d>edz  d6ej        dz  d7ed8edz  d*eee         z  ej-        z  d/eee         z  d9edz  dej        dz  de!ej5                 fdv„Zmdwe!ej5                 de!e         ez  e!e!e                  z  d>edxed7ede!ej5                 fdy„Znd<ejo        dze!e!ej5                          d7ed*eee         z  ej-        z  d/eee         z  de!ej5                 fd{„Zp	 	 	 	 	 	 	 d¤d|ejq        d>edz  d6ej        dz  d7ed8edz  d*eee         z  ej-        z  d/eee         z  d9edz  dej        dz  de!ej5                 fd}„Zrd~ejs        ddfd„Ztd~ejs        ddfd€„Zu	 	 dµd~ejs        d�ej        dz  d‚ejv        dz  ddfdƒ„Zw	 	 dµd„eejs                 ejx        z  d�ej        dz  d‚ejv        dz  ddfd…„Zyd,ed
eee!e         ez  e!e!e                  z  f         ddfd†„Zz	 dŸd„eej{                 d�ej        dz  ddfd‡„Z|d
ee         dˆej        e!ej[                 z  ej}        z  ej~        z  ddfd‰„ZdPe!ej>                 ddfdŠ„Z€d‹ej        de!ej[                 fdŒ„Z�dˆej        e!ej[                 z  ej}        z  ej~        z  de!ej[                 fd�„Z‚dˆej        e!ej[                 z  ej}        z  ej~        z  ddfdŽ„Zƒdkej[        ddfd�„Z„	 dŸd%ej/        dˆej        e!ej[                 z  ej}        z  ej~        z  d!edz  ddfd�„Z…d%ej/        dˆej        e!ej[                 z  ej}        z  ej~        z  ddfd‘„Z†d’ee         dˆej        e!ej[                 z  ej}        z  ej~        z  ddfd“„Z‡dˆej        e!ej[                 z  ej}        z  ej~        z  ddfd”„Zˆd•eej‰                 ddfd–„ZŠded—ej‹        ddfd˜„ZŒdedej�        ddfd™„ZŽdedej�        ddfdš„Z�deddfd›„Z‘dej’        fdœ„Z“dS )¶ÚLocalCollectionzb
    LocalCollection is a class that represents a collection of vectors in the local storage.
    é N  NFÚconfigÚlocationÚforce_disable_check_same_threadrR   c                 óF  — |                       |j        ¦  «        \  | _        | _        |j        }d„ | j                             ¦   «         D ¦   «         | _        |�d„ |                     ¦   «         D ¦   «         ni | _        i | _        d„ | j        D ¦   «         | _        g | _        t          j
        dt          ¬¦  «        | _        t          | j                             ¦   «         ¦  «        t          | j                             ¦   «         ¦  «        z   t          | j                             ¦   «         ¦  «        z   | _        d„ | j        D ¦   «         | _        i | _        g | _        |du| _        d| _        || _        |�t-          ||¦  «        | _        |                      ¦   «          dS )a2  
        Create or load a collection from the local storage.
        Args:
            location: path to the collection directory. If None, the collection will be created in memory.
            force_disable_check_same_thread: force disable check_same_thread for sqlite3 connection. default: False
        c                 ód   — i | ]-\  }}|t          j        d |j        ft           j        ¬¦  «        “Œ.S ©r   ©Údtype)ÚnpÚzerosÚsizeÚfloat32©Ú.0ÚnameÚparamss      r\   ú
<dictcomp>z,LocalCollection.__init__.<locals>.<dictcomp>y   sF   € ð 5
ð 5
ð 5
á��fð •"”(˜A˜vœ{Ð+µ2´:Ð>Ñ>Ô>ð5
ð 5
ð 5
ó    Nc                 ó   — i | ]\  }}|g “Œ	S © rs   rl   s      r\   rp   z,LocalCollection.__init__.<locals>.<dictcomp>~   s   € ÐHÐHÐH™,˜$ ˆT�2ÐHÐHÐHrq   c                 ó   — i | ]}|g “ŒS rs   rs   ©rm   rn   s     r\   rp   z,LocalCollection.__init__.<locals>.<dictcomp>…   s-   € ð @
ð @
ð @
ØˆD�"ð@
ð @
ð @
rq   r   rf   c                 óF   — i | ]}|t          j        d t          ¬¦  «        “ŒS re   )rh   ri   Úboolru   s     r\   rp   z,LocalCollection.__init__.<locals>.<dictcomp>�   s<   € ð @
ð @
ð @
Ø.2ˆD•"”(˜1¥DÐ)Ñ)Ô)ð@
ð @
ð @
rq   )Ú_resolve_vectors_configÚvectorsÚvectors_configÚmultivectors_configÚsparse_vectorsÚitemsÚsparse_vectors_idfÚmultivectorsÚpayloadrh   ri   rw   ÚdeletedÚlistÚkeysÚ_all_vectors_keysÚdeleted_per_vectorÚidsÚids_invÚ
persistentÚstorager`   r@   Úload_vectors)Úselfr`   ra   rb   Úsparse_vectors_configs        r\   Ú__init__zLocalCollection.__init__i   sÑ  € ð 9=×8TÒ8TØŒNñ9
ô 9
Ñ5ˆÔ˜TÔ5ð !'Ô 5Ðð5
ð 5
à $Ô 3× 9Ò 9Ñ ;Ô ;ð5
ñ 5
ô 5
ˆŒð %Ð0ð IÐHÐ*?×*EÒ*EÑ*GÔ*GÐHÑHÔHÐHàð 	Ôð ð 	Ôð@
ð @
Ø!%Ô!9ð@
ñ @
ô @
ˆÔð .0ˆŒÝ)+¬°!½4Ð)@Ñ)@Ô)@ˆŒå�”×"Ò"Ñ$Ô$Ñ%Ô%Ý�4Ô&×+Ò+Ñ-Ô-Ñ.Ô.ñ/å�4Ô$×)Ò)Ñ+Ô+Ñ,Ô,ñ-ð 	Ôð
@
ð @
Ø6:Ô6Lð@
ñ @
ô @
ˆÔð 79ˆŒØ57ˆŒØ"¨$Ð.ˆŒØˆŒØˆŒØÐÝ0°Ð;ZÑ[Ô[ˆDŒLØ×ÒÑÔÐÐÐrq   ry   c                 óÚ   — i }i }t          | t          j        ¦  «        r| j        �
t          | i}n	t          | i}||fS |                      ¦   «         D ]\  }}|j        �|||<   Œ|||<   Œ||fS ©N)Ú
isinstancer   ÚVectorParamsÚmultivector_configÚDEFAULT_VECTOR_NAMEr}   )ry   rz   r{   rn   ro   s        r\   rx   z'LocalCollection._resolve_vectors_config›   sœ   € ð ˆØ ÐÝ�g�vÔ2Ñ3Ô3ð 	7ØÔ)Ð5Ý':¸GÐ&DÐ#Ð#å"5°wÐ!?�Ø!Ð#6Ð6Ð6à#ŸMšM™OœOð 	.ð 	.‰LˆD�&ØÔ(Ð4Ø,2Ð# DÑ)Ð)à'-�˜tÑ$Ð$àÐ2Ð2Ð2rq   c                 óJ   — | j         �| j                              ¦   «          d S d S r�   )r‰   Úclose©r‹   s    r\   r•   zLocalCollection.close°   s,   € ØŒ<Ð#ØŒL×ÒÑ Ô Ð Ð Ð ð $Ð#rq   ÚvectorÚvector_namec                 óš   — || j         vrt          t          ¦  «        | j         |<   |j        D ]}| j         |         |xx         dz  cc<   Œd S ©Né   )r~   r   ÚintÚindices©r‹   r—   r˜   Úidxs       r\   Ú_update_idf_appendz"LocalCollection._update_idf_append´   sg   € Ø˜dÔ5Ð5Ð5Ý3>½sÑ3CÔ3CˆDÔ# KÑ0Ø”>ð 	;ð 	;ˆCØÔ# KÔ0°Ð5Ð5Ô5¸Ñ:Ð5Ð5Ñ5Ð5ð	;ð 	;rq   c                 óP   — |j         D ]}| j        |         |xx         dz  cc<   Œd S rš   )r�   r~   rž   s       r\   Ú_update_idf_removez"LocalCollection._update_idf_removeº   sD   € Ø”>ð 	;ð 	;ˆCØÔ# KÔ0°Ð5Ð5Ô5¸Ñ:Ð5Ð5Ñ5Ð5ð	;ð 	;rq   Úsearch_paramsc                 ód   — | €dS t          | j        t          j        ¦  «        r| j        j        S dS )z×Corpus filter scoping IDF statistics, if `search_params` asks for a narrowed scope.

        `IdfScope.GLOBAL` (and no `idf` at all) means collection-wide statistics, which is
        represented by `None`.
        N)r�   Úidfr   ÚIdfCorpusParamsÚcorpus)r£   s    r\   Ú_idf_corpus_ofzLocalCollection._idf_corpus_of¾   s8   € ð Ð Ø�4Ý�mÔ'­Ô)?Ñ@Ô@ð 	,Ø Ô$Ô+Ð+Øˆtrq   ÚdfÚnc                 óH   — t          j        ||z
  dz   |dz   z  dz   ¦  «        S )Nç      à?r›   )ÚmathÚlog)Úclsr©   rª   s      r\   Ú_compute_idfzLocalCollection._compute_idfË   s*   € õ Œx˜˜R™ #™¨"¨s©(Ñ3°aÑ7Ñ8Ô8Ð8rq   r�   Úmaskc                 ó  — d„ |D ¦   «         }t                                |d¦  «        }| j        |         }t          j        |¦  «        d         D ]:}|t          |¦  «        k    rŒ||         j        D ]}||v r||xx         dz  cc<   ŒŒ;|S )zLDocument frequency of each of `indices` among the points selected by `mask`.c                 ó,   — h | ]}t          |¦  «        ’ŒS rs   )rœ   )rm   rŸ   s     r\   ú	<setcomp>z?LocalCollection._corpus_document_frequencies.<locals>.<setcomp>Ô   s   € Ð.Ð.Ð.˜s•#�c‘(”(Ð.Ð.Ð.rq   r   r›   )ÚdictÚfromkeysr|   rh   ÚnonzeroÚlenr�   )	r‹   r˜   r�   r±   ÚwantedÚfrequenciesry   Úinternal_idrŸ   s	            r\   Ú_corpus_document_frequenciesz,LocalCollection._corpus_document_frequenciesÐ   s³   € ð /Ð. gÐ.Ñ.Ô.ˆÝ—m’m F¨AÑ.Ô.ˆàÔ% kÔ2ˆÝœ: dÑ+Ô+¨AÔ.ð 	*ð 	*ˆKØ�c '™lœlÒ*Ð*ØØ˜{Ô+Ô3ð *ð *�Ø˜&�=�=Ø Ð$Ð$Ô$¨Ñ)Ð$Ð$Ñ$øð*ð Ðrq   Ú
idf_corpusc                 óæ  — | j                              |¦  «        }|€|S |                      ||¬¦  «        }t          t	          j        |¦  «        ¦  «        }|€|n|                      ||j        |¦  «        }g }t          |j        |j	        ¦  «        D ]I\  }	}
|                     |	d¦  «        }|  
                    ||¦  «        }|                     |
|z  ¦  «         ŒJt          |j        |¬¦  «        S )N©r˜   r   )r�   Úvalues)r~   ÚgetÚ_payload_and_non_deleted_maskrœ   rh   Úcount_nonzeror¼   r�   ÚziprÀ   r°   Úappendr   )r‹   r—   r˜   r½   Ú	idf_storer±   Únum_docsÚdocument_frequenciesÚ
new_valuesrŸ   ÚvalueÚdocument_frequencyr¥   s                r\   Ú_rescore_idfzLocalCollection._rescore_idfá   s  € ð Ô+×/Ò/°Ñ<Ô<ˆ	ØÐØˆMð ×1Ò1°*È+Ð1ÑVÔVˆÝ•rÔ'¨Ñ-Ô-Ñ.Ô.ˆð Ð!ð ˆIà×2Ò2°;ÀÄÐPTÑUÔUð 	ð ˆ
Ý˜fœn¨f¬mÑ<Ô<ð 	+ð 	+‰JˆC�Ø!5×!9Ò!9¸#¸qÑ!AÔ!AÐØ×#Ò#Ð$6¸ÑAÔAˆCØ×Ò˜e c™kÑ*Ô*Ð*Ð*å F¤N¸:ÐFÑFÔFÐFrq   c                 ó	  — | j         ���t          t          ¦  «        }t          t          ¦  «        }t          t          ¦  «        }g }t          | j                              ¦   «         ¦  «        D �]�\  }}|| j        |j        <   | j                             |j        ¦  «         | j	                             t          |j	        ¦  «        pi ¦  «         |j        }t          |j        t          ¦  «        rt          |j        i}t          | j                             ¦   «         ¦  «        }|D ]•}	|                     |	¦  «        }
|
�||	                              |
¦  «         Œ5||	                              t#          j        | j        |	         j        t"          j        ¬¦  «        ¦  «         |                     ||	f¦  «         Œ–t          | j                             ¦   «         ¦  «        }|D ]s}	|                     |	¦  «        }
|
�||	                              |
¦  «         Œ5||	                              t/          ¦   «         ¦  «         |                     ||	f¦  «         Œtt          | j                             ¦   «         ¦  «        }|D ]y}	|                     |	¦  «        }
|
�||	                              |
¦  «         Œ5||	                              t#          j        g ¦  «        ¦  «         |                     ||	f¦  «         Œz�Œ�|                     ¦   «         D ]V\  }	}t#          j        |¦  «        | j        |	<   t#          j        t9          | j	        ¦  «        t:          ¬¦  «        | j        |	<   ŒW|                     ¦   «         D ]_\  }	}|| j        |	<   t#          j        t9          | j	        ¦  «        t:          ¬¦  «        | j        |	<   |D ]}|                      ||	¦  «         ŒŒ`|                     ¦   «         D ]N\  }	}d„ |D ¦   «         | j        |	<   t#          j        t9          | j	        ¦  «        t:          ¬¦  «        | j        |	<   ŒO|D ]\  }}	d| j        |	         |<   Œt#          j        t9          | j	        ¦  «        t:          ¬¦  «        | _         d S d S )Nrf   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rs   ©rh   Úarray)rm   r—   s     r\   ú
<listcomp>z0LocalCollection.load_vectors.<locals>.<listcomp>C  s"   € Ð*XÐ*XÐ*XÀ­2¬8°FÑ+;Ô+;Ð*XÐ*XÐ*Xrq   r›   )!r‰   r   r‚   Ú	enumerateÚloadr†   Úidr‡   rÅ   r€   r   r—   r�   r“   ry   rƒ   rÁ   rh   Úonesrz   rj   rk   r|   rA   r   rÐ   r}   ri   r¸   rw   r…   r    r�   )r‹   ry   r|   r   Údeleted_idsrŸ   ÚpointÚloaded_vectorÚall_dense_vector_namesrn   ÚvÚall_sparse_vector_namesÚall_multivector_namesÚnamed_vectorsr—   s                  r\   rŠ   zLocalCollection.load_vectorsþ   st  € ØŒ<Ñ#Ý!¥$Ñ'Ô'ˆGÝ(­Ñ.Ô.ˆNÝ&¥tÑ,Ô,ˆLØˆKå'¨¬×(9Ò(9Ñ(;Ô(;Ñ<Ô<ð .8ñ .8‘
��Uà%(�”˜œÑ"à”×#Ò# E¤HÑ-Ô-Ð-ð ”×#Ò#Õ$6°u´}Ñ$EÔ$EÐ$KÈÑLÔLÐLð !&¤�õ ˜eœl­DÑ1Ô1ð HÝ%8¸%¼,Ð$G�Mõ *.¨d¬l×.?Ò.?Ñ.AÔ.AÑ)BÔ)BÐ&Ø2ð 8ð 8�DØ%×)Ò)¨$Ñ/Ô/�AØ�}Ø œ×,Ò,¨QÑ/Ô/Ð/Ð/à œ×,Ò,ÝœG DÔ$7¸Ô$=Ô$BÍ"Ì*ÐUÑUÔUñô ð ð $×*Ò*¨C°¨;Ñ7Ô7Ð7Ð7õ +/¨tÔ/B×/GÒ/GÑ/IÔ/IÑ*JÔ*JÐ'Ø3ð 8ð 8�DØ%×)Ò)¨$Ñ/Ô/�AØ�}Ø& tÔ,×3Ò3°AÑ6Ô6Ð6Ð6à& tÔ,×3Ò3Õ4GÑ4IÔ4IÑJÔJÐJØ#×*Ò*¨C°¨;Ñ7Ô7Ð7Ð7õ )-¨TÔ->×-CÒ-CÑ-EÔ-EÑ(FÔ(FÐ%Ø1ð 8ð 8�DØ%×)Ò)¨$Ñ/Ô/�AØ�}Ø$ TÔ*×1Ò1°!Ñ4Ô4Ð4Ð4à$ TÔ*×1Ò1µ"´(¸2±,´,Ñ?Ô?Ð?Ø#×*Ò*¨C°¨;Ñ7Ô7Ð7Ð7ñ8ð (/§}¢}¡¤ð Xð XÑ#��mÝ%'¤X¨mÑ%<Ô%<�”˜TÑ"Ý02´½¸T¼\Ñ9JÔ9JÕRVÐ0WÑ0WÔ0W�Ô'¨Ñ-Ð-ð (6×';Ò';Ñ'=Ô'=ð :ð :Ñ#��mØ,9�Ô# DÑ)Ý02´½¸T¼\Ñ9JÔ9JÕRVÐ0WÑ0WÔ0W�Ô'¨Ñ-Ø+ð :ð :�FØ×+Ò+¨F°DÑ9Ô9Ð9Ð9ð:ð (4×'9Ò'9Ñ';Ô';ð Xð XÑ#��mØ*XÐ*XÈ-Ð*XÑ*XÔ*X�Ô! $Ñ'Ý02´½¸T¼\Ñ9JÔ9JÕRVÐ0WÑ0WÔ0W�Ô'¨Ñ-Ð-ð )ð 7ð 7‘	��TØ56�Ô'¨Ô-¨cÑ2Ð2åœ8¥C¨¬Ñ$5Ô$5½TÐBÑBÔBˆDŒLˆLˆLðW $Ð#rq   Úquery_vectorc                 ó0  — t          |t          ¦  «        r2|\  }}t          |t          ¦  «        rt          j        |¦  «        }nÏ|}nÌt          |t          j        ¦  «        r
t          }|}n¨t          |t          ¦  «        rt          }t          j        |¦  «        }nwt          |t          t          ¦  «        ¦  «        r
t          }|}nKt          |t          t          ¦  «        ¦  «        r
t          }|}nt          dt          |¦  «        › �¦  «        ‚||fS )NzUnsupported vector type )r�   Útupler‚   rh   rÐ   Úndarrayr“   r	   r   r-   Ú
ValueErrorÚtype)r¯   rÞ   rn   Úqueryr—   s        r\   Ú_resolve_query_vector_namez*LocalCollection._resolve_query_vector_nameL  s  € õ& �l¥EÑ*Ô*ð 	NØ&‰KˆD�%Ý˜%¥Ñ&Ô&ð Ýœ %™œ��à��Ý˜¥b¤jÑ1Ô1ð 	NÝ&ˆDØ!ˆFˆFÝ˜¥dÑ+Ô+ð 
	NÝ&ˆDÝ”X˜lÑ+Ô+ˆFˆFÝ˜¥hÕ/?Ñ&@Ô&@ÑAÔAð 	NÝ&ˆDØ!ˆFˆFÝ˜¥hÕ/?Ñ&@Ô&@ÑAÔAð 	NÝ&ˆDØ!ˆFˆFåÐL½¸\Ñ8JÔ8JÐLÐLÑMÔMÐMà�Vˆ|Ðrq   rn   c                 óz  — t          | j        j        t          ¦  «        r3|| j        j        v r| j        j        |         S t	          d|› d�¦  «        ‚t          | j        j        t
          j        ¦  «        r*|t          k    rt	          d|› d�¦  «        ‚| j        j        S t	          d| j        j        › �¦  «        ‚)NúVector ú is not found in the collectionzMalformed config.vectors: )r�   r`   ry   rµ   râ   r   r‘   r“   )r‹   rn   s     r\   Úget_vector_paramsz!LocalCollection.get_vector_paramsv  s»   € Ý�d”kÔ)­4Ñ0Ô0ð 	RØ�t”{Ô*Ð*Ð*Ø”{Ô*¨4Ô0Ð0å Ð!P¨4Ð!PÐ!PÐ!PÑQÔQÐQå�d”kÔ)­6Ô+>Ñ?Ô?ð 	'ØÕ*Ò*Ð*Ý Ð!P¨4Ð!PÐ!PÐ!PÑQÔQÐQà”;Ô&Ð&åÐK°d´kÔ6IÐKÐKÑLÔLÐLrq   ÚpatternÚkeyc                 óô   — |                      dd¦  «                             d¦  «        }|                      dd¦  «                             d¦  «        }t          d„ t          ||¦  «        D ¦   «         ¦  «        S )a  
        >>> LocalCollection._check_include_pattern('a', 'a')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'b')
        False
        >>> LocalCollection._check_include_pattern('a.b', 'a.b')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'a.b.c')
        True
        >>> LocalCollection._check_include_pattern('a.b[]', 'a.b[].c')
        True
        >>> LocalCollection._check_include_pattern('a.b[]', 'a.b.c')
        False
        >>> LocalCollection._check_include_pattern('a', 'a.b')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'a')
        True
        >>> LocalCollection._check_include_pattern('a', 'aa.b.c')
        False
        >>> LocalCollection._check_include_pattern('a_b', 'a')
        False
        ú.ú[.ú[c              3   ó(   K  — | ]\  }}||k    V — Œd S r�   rs   ©rm   ÚprÚ   s      r\   ú	<genexpr>z9LocalCollection._check_include_pattern.<locals>.<genexpr>Ÿ  ó*   è è € ÐDÐD™d˜a �1˜’6ÐDÐDÐDÐDÐDÐDrq   )ÚreplaceÚsplitÚallrÄ   ©r¯   rê   rë   Úpattern_partsÚ	key_partss        r\   Ú_check_include_patternz&LocalCollection._check_include_pattern…  sm   € ð0  Ÿš¨¨TÑ2Ô2×8Ò8¸Ñ=Ô=ˆØ—K’K  TÑ*Ô*×0Ò0°Ñ5Ô5ˆ	ÝÐDÐD¥c¨-¸Ñ&CÔ&CÐDÑDÔDÑDÔDÐDrq   c                 ó8  — t          |¦  «        t          |¦  «        k    rdS |                     dd¦  «                             d¦  «        }|                     dd¦  «                             d¦  «        }t          d„ t	          ||¦  «        D ¦   «         ¦  «        S )NFrí   rî   rï   c              3   ó(   K  — | ]\  }}||k    V — Œd S r�   rs   rñ   s      r\   ró   z9LocalCollection._check_exclude_pattern.<locals>.<genexpr>§  rô   rq   )r¸   rõ   rö   r÷   rÄ   rø   s        r\   Ú_check_exclude_patternz&LocalCollection._check_exclude_pattern¡  s‡   € åˆw‰<Œ<�#˜c™(œ(Ò"Ð"Ø�5ØŸš¨¨TÑ2Ô2×8Ò8¸Ñ=Ô=ˆØ—K’K  TÑ*Ô*×0Ò0°Ñ5Ô5ˆ	ÝÐDÐD¥c¨-¸Ñ&CÔ&CÐDÑDÔDÑDÔDÐDrq   rP   r€   Ú	predicateÚpathc                 ó®  — t          |t          ¦  «        rWi }|dk    r|dz   }n|}|                     ¦   «         D ]0\  }} |||z   ¦  «        r|                      ||||z   ¦  «        ||<   Œ1|S t          |t          ¦  «        rSg }|dz   }t          |¦  «        D ]:\  }	} ||¦  «        r*|                     |                      |||¦  «        ¦  «         Œ;|S |S )NrP   rí   z[])r�   rµ   r}   Ú_filter_payloadr‚   rÒ   rÅ   )
r¯   r€   rÿ   r   ÚresÚnew_pathrë   rÊ   Ú	res_arrayrŸ   s
             r\   r  zLocalCollection._filter_payload©  s  € õ �g�tÑ$Ô$ð 	ØˆCØ�rŠzˆzØ #™:��à�à%Ÿmšm™oœoð Uð U‘
��UØ�9˜X¨™^Ñ,Ô,ð UØ"×2Ò2°5¸)ÀXÐPSÁ^ÑTÔT�C˜‘HøØˆJÝ˜¥Ñ&Ô&ð 	ØˆIØ˜$‘;ˆDÝ'¨Ñ0Ô0ð Rð R‘
��UØ�9˜T‘?”?ð RØ×$Ò$ S×%8Ò%8¸À	È4Ñ%PÔ%PÑQÔQÐQøØÐàˆNrq   TÚwith_payloadc                 ón  ‡ ‡— ‰sd S t          ‰t          ¦  «        r|S t          ‰t          ¦  «        r‰                      |ˆ ˆfd„¦  «        S t          ‰t          j        ¦  «        r‰                      |ˆ ˆfd„¦  «        S t          ‰t          j        ¦  «        r‰                      |ˆ ˆfd„¦  «        S |S )Nc                 óH   •‡ — t          t          ˆˆ fd„‰¦  «        ¦  «        S )Nc                 ó0   •— ‰                      | ‰¦  «        S r�   ©rû   ©rê   r¯   rë   s    €€r\   ú<lambda>zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>Ò  ó   ø€ ¨×(BÒ(BÀ7ÈCÑ(PÔ(P€ rq   )ÚanyÚmap©rë   r¯   r  s   `€€r\   r  z2LocalCollection._process_payload.<locals>.<lambda>Ñ  s-   øø€ �CÝÐPÐPÐPÐPÐPÐR^Ñ_Ô_ñô € rq   c                 óR   •‡ — t          t          ˆˆ fd„‰j        ¦  «        ¦  «        S )Nc                 ó0   •— ‰                      | ‰¦  «        S r�   r
  r  s    €€r\   r  zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>Û  r  rq   )r  r  Úincluder  s   `€€r\   r  z2LocalCollection._process_payload.<locals>.<lambda>Ù  s4   øø€ �CÝØPÐPÐPÐPÐPØ$Ô,ñô ñô € rq   c                 óR   •‡ — t          t          ˆˆ fd„‰j        ¦  «        ¦  «        S )Nc                 ó2   •— ‰                      | ‰¦  «         S r�   )rþ   r  s    €€r\   r  zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>æ  s   ø€ ¨C×,FÒ,FÀwÐPSÑ,TÔ,TÐ(T€ rq   )r÷   r  Úexcluder  s   `€€r\   r  z2LocalCollection._process_payload.<locals>.<lambda>ä  s4   øø€ �CÝØTÐTÐTÐTÐTØ$Ô,ñô ñô € rq   )r�   rw   r‚   r  r   ÚPayloadSelectorIncludeÚPayloadSelectorExclude)r¯   r€   r  s   ` `r\   Ú_process_payloadz LocalCollection._process_payloadÂ  s  øø€ ð ð 	Ø�4å�l¥DÑ)Ô)ð 	ØˆNå�l¥DÑ)Ô)ð 	Ø×&Ò&Øðð ð ð ð ñô ð õ �l¥FÔ$AÑBÔBð 		Ø×&Ò&Øðð ð ð ð ñô ð õ �l¥FÔ$AÑBÔBð 		Ø×&Ò&Øðð ð ð ð ñô ð ð ˆrq   rŸ   Úreturn_copyc                 ón   — | j         |         }|                      ||¦  «        }|rt          |¦  «        n|S r�   )r€   r  r
   )r‹   rŸ   r  r  r€   Úprocessed_payloads         r\   Ú_get_payloadzLocalCollection._get_payloadî  s@   € ð ”,˜sÔ#ˆØ ×1Ò1°'¸<ÑHÔHÐØ.9ÐP�xÐ)Ñ*Ô*Ð*Ð?PÐPrq   Úwith_vectorsc                 ó<  ‡ ‡‡— |du s|€d S ˆˆ fd„‰ j         D ¦   «         }ˆˆ fd„‰ j        D ¦   «         }ˆˆ fd„‰ j        D ¦   «         }i |¥|¥|¥Št          |t          ¦  «        rˆfd„|D ¦   «         Št          ‰¦  «        dk    rt          ‰v r‰t                   S ‰S )NFc                 ó‚   •— i | ];}‰j         |         ‰         °|‰j        |         ‰                              ¦   «         “Œ<S rs   )r…   ry   Útolist©rm   rn   rŸ   r‹   s     €€r\   rp   z0LocalCollection._get_vectors.<locals>.<dictcomp>þ  sV   ø€ ð 
ð 
ð 
àØÔ*¨4Ô0°Ô5ð
Ø�$”,˜tÔ$ SÔ)×0Ò0Ñ2Ô2ð
ð 
ð 
rq   c                 ó^   •— i | ])}‰j         |         ‰         °|‰j        |         ‰         “Œ*S rs   )r…   r|   r"  s     €€r\   rp   z0LocalCollection._get_vectors.<locals>.<dictcomp>  sK   ø€ ð 
ð 
ð 
àØÔ*¨4Ô0°Ô5ð
Ø�$Ô% dÔ+¨CÔ0ð
ð 
ð 
rq   c                 ó‚   •— i | ];}‰j         |         ‰         °|‰j        |         ‰                              ¦   «         “Œ<S rs   )r…   r   r!  r"  s     €€r\   rp   z0LocalCollection._get_vectors.<locals>.<dictcomp>
  sW   ø€ ð 
ð 
ð 
àØÔ*¨4Ô0°Ô5ð
Ø�$Ô# DÔ)¨#Ô.×5Ò5Ñ7Ô7ð
ð 
ð 
rq   c                 ó*   •— i | ]}|‰v ¯|‰|         “ŒS rs   rs   )rm   rn   Úall_vectorss     €r\   rp   z0LocalCollection._get_vectors.<locals>.<dictcomp>  s+   ø€ ÐcÐcÐc°tÈtÐWbÐObÐOb˜4 ¨TÔ!2ÐObÐObÐObrq   r›   )ry   r|   r   r�   r‚   r¸   r“   )r‹   rŸ   r  Údense_vectorsr|   r   r&  s   ``    @r\   Ú_get_vectorszLocalCollection._get_vectorsø  s  øøø€ ð ˜5Ð Ð  LÐ$8Ø�4ð
ð 
ð 
ð 
ð 
àœð
ñ 
ô 
ˆð
ð 
ð 
ð 
ð 
àÔ+ð
ñ 
ô 
ˆð
ð 
ð 
ð 
ð 
àÔ)ð
ñ 
ô 
ˆð J˜ÐI¨.ÐI¸LÐIˆå�l¥DÑ)Ô)ð 	dØcÐcÐcÐc¸|ÐcÑcÔcˆKåˆ{ÑÔ˜qÒ Ð Õ%8¸KÐ%GÐ%GØÕ2Ô3Ð3àÐrq   Úpayload_filterc                 ó†   — t          | j        || j        | j        ¬¦  «        }|| j         z  }|�|| j        |          z  }|S )zo
        Calculate mask for filtered payload and non-deleted points. True - accepted, False - rejected
        )Úpayloadsr)  r‡   r…   )r;   r€   r‡   r…   r�   )r‹   r)  r˜   Úpayload_maskr±   s        r\   rÂ   z-LocalCollection._payload_and_non_deleted_mask  s[   € õ .Ø”\Ø)Ø”LØ#Ô6ð	
ñ 
ô 
ˆð ˜tœ|˜mÑ+ˆàÐ"à˜4Ô2°;Ô?Ð?Ñ?ˆDàˆrq   r»   c                 ób   — i }| j                              ¦   «         D ]\  }}||         sd||<   Œ|S ©NT)r…   r}   )r‹   r»   Ú
has_vectorr˜   r�   s        r\   Ú_calculate_has_vectorz%LocalCollection._calculate_has_vector5  sH   € Ø&(ˆ
Ø$(Ô$;×$AÒ$AÑ$CÔ$Cð 	/ð 	/Ñ ˆK˜Ø˜;Ô'ð /Ø*.�
˜;Ñ'øàÐrq   é
   Úquery_filterÚlimitÚoffsetÚscore_thresholdc	                 óâ  ‡ ‡‡— ‰                       |¦  «        \  Š}g }	d}
d}t          |t          t          ¦  «        ¦  «        rd‰‰ j        vrt          d‰› d�¦  «        ‚‰ j        ‰         }‰ j        j        ‰         j        t          j	        j
        k    rd}t          j        }d}
nÛt          |t          t          ¦  «        ¦  «        s2t          |t          j        ¦  «        r\t!          |j        ¦  «        dk    rD‰‰ j        vrt          d‰› d�¦  «        ‚‰ j        ‰         }‰                      ‰¦  «        j        }nC‰‰ j        vrt          d‰› d�¦  «        ‚‰ j        ‰         }‰                      ‰¦  «        j        }|d t!          ‰ j        ¦  «        …         }t          |t          j        ¦  «        r>t!          |j        ¦  «        dk    rt/          |||¦  «        }�n†t1          |||¦  «        }�nst          |t2          ¦  «        rq|j        t          j        j        k    rt;          |||¦  «        }�n1|j        t          j        j        k    rt?          |||¦  «        }�ntA          d	|j        › �¦  «        ‚t          |tB          ¦  «        r‹|r| "                    ˆˆˆ fd
„¦  «        }|j        t          j        j        k    rtG          ||¦  «        }�n�|j        t          j        j        k    rtI          ||¦  «        }�ndtA          d	|j        › �¦  «        ‚t          |tJ          ¦  «        rq|j        t          j        j        k    rtM          |||¦  «        }�n|j        t          j        j        k    rtO          |||¦  «        }�nÞtA          d	|j        › �¦  «        ‚t          |tP          ¦  «        rtS          |||¦  «        }�nŸt          |tT          ¦  «        r.|r| "                    ˆˆˆ fd„¦  «        }tW          ||¦  «        }�n\t          |tX          ¦  «        rt[          |||¦  «        }�n4t          |t\          ¦  «        rt_          |||¦  «        }�nt          |t`          ¦  «        r-|r| "                    ˆˆˆ fd„¦  «        }tc          ||¦  «        }nÊt          |td          ¦  «        rtg          |||¦  «        }n£t          |th          ¦  «        rHtk          |¦  «         |r‰  6                    |‰‰¦  «        }to          |¦  «        }tq          ||¦  «        }nFt          |tr          ¦  «        rtu          |||¦  «        }nt          dtw          |¦  «        › �¦  «        ‚‰  <                    |‰¬¦  «        }t{          |¦  «        }|t|          j?        k    s4t          |tP          t\          t2          tX          td          tJ          f¦  «        rt          j@        |¦  «        d d d…         }nt          j@        |¦  «        }|�|nd}|D ]Ø}t!          |	¦  «        ||z   k    r n¿||         sŒ#||         }|
r|t          jA         k    rŒ?‰ jB        |         }|�!|t|          j?        k    r	||k     r nsn||k    r njt‡          t          jD        |t‹          |¦  «        d‰  F                    ||¦  «        ‰  G                    ||¦  «        ¬¦  «        }|	 H                    |¦  «         ŒÙ|	|d …         S )NFzSparse vector rè   Té   zMultivector zDense vector r›   zKRecommend strategy is expected to be either BEST_SCORE or SUM_SCORES, got: c                 ó2   •— ‰                      | ‰‰¦  «        S r�   ©rÌ   ©rQ   r½   rn   r‹   s    €€€r\   r  z(LocalCollection.search.<locals>.<lambda>ƒ  ó   ø€ ˜d×/Ò/°°4¸ÑDÔD€ rq   c                 ó2   •— ‰                      | ‰‰¦  «        S r�   r9  r:  s    €€€r\   r  z(LocalCollection.search.<locals>.<lambda>�  r;  rq   c                 ó2   •— ‰                      | ‰‰¦  «        S r�   r9  r:  s    €€€r\   r  z(LocalCollection.search.<locals>.<lambda>§  r;  rq   zUnsupported query vector type r¿   éÿÿÿÿr   ©rÔ   ÚscoreÚversionr€   r—   )Irå   r�   r	   rG   r|   râ   r`   Úmodifierr   ÚModifierÚIDFr   ÚDOTr-   rh   rá   r¸   Úshaper   ré   Údistancery   r€   r$   r2   r!   ÚstrategyÚRecommendStrategyÚ
BEST_SCOREr%   Ú
SUM_SCORESr'   Ú	TypeErrorrH   Útransform_sparserL   rO   r.   r3   r6   r   r#   rF   rK   r/   r4   r   r"   rE   rJ   r0   r5   r   rC   rÌ   rB   rI   r*   r)   rã   rÂ   r&   r    ÚBIGGER_IS_BETTERÚargsortÚinfr‡   r   r   Úfloatr  r(  rÅ   )r‹   rÞ   r2  r3  r4  r  r  r5  r½   ÚresultÚsparse_scoringÚrescore_idfry   rG  Úscoresr±   Úrequired_orderÚorderrŸ   r@  Úpoint_idÚscored_pointrn   s   `       `             @r\   ÚsearchzLocalCollection.search=  si  øøø€ ð. "×<Ò<¸\ÑJÔJÑˆˆlØ+-ˆØˆØˆõ �l¥HÕ->Ñ$?Ô$?Ñ@Ô@ð 	=Ø˜4Ô.Ð.Ð.Ý Ð!W°$Ð!WÐ!WÐ!WÑXÔXÐXØÔ)¨$Ô/ˆGØŒ{Ô)¨$Ô/Ô8½F¼OÔ<OÒOÐOØ"�Ý”|ˆHØ!ˆNˆNÝ˜¥hÕ/?Ñ&@Ô&@ÑAÔAð 	=Ý�|¥R¤ZÑ0Ô0ð	=Ý58¸Ô9KÑ5LÔ5LÐPQÒ5QÐ5Qà˜4Ô,Ð,Ð,Ý Ð!U°Ð!UÐ!UÐ!UÑVÔVÐVØÔ'¨Ô-ˆGØ×-Ò-¨dÑ3Ô3Ô<ˆHˆHà˜4œ<Ð'Ð'Ý Ð!V°Ð!VÐ!VÐ!VÑWÔWÐWØ”l 4Ô(ˆGØ×-Ò-¨dÑ3Ô3Ô<ˆHàÐ-�C ¤Ñ-Ô-Ð-Ô.ˆå�l¥B¤JÑ/Ô/ð E	VÝ�<Ô%Ñ&Ô&¨!Ò+Ð+Ý+¨L¸'À8ÑLÔL�‘å1°,ÀÈÑRÔR�‘Ý˜¥iÑ0Ô0ð @	VØÔ$­Ô(@Ô(KÒKÐKÝ8¸ÀwÐPXÑYÔY�‘ØÔ&­&Ô*BÔ*MÒMÐMÝ7¸ÀgÈxÑXÔX�‘åðNØ6BÔ6KðNð Nñô ð õ ˜¥oÑ6Ô6ð 6	VØð Ø+×<Ò<ØDÐDÐDÐDÐDÐDñ ô  �ð Ô$­Ô(@Ô(KÒKÐKÝ?ÀÈgÑVÔV�‘ØÔ&­&Ô*BÔ*MÒMÐMÝ>¸|ÈWÑUÔU�‘åðNØ6BÔ6KðNð Nñô ð õ ˜¥nÑ5Ô5ð (	VØÔ$­Ô(@Ô(KÒKÐKÝ>¸|ÈWÐV^Ñ_Ô_�‘ØÔ&­&Ô*BÔ*MÒMÐMÝ=¸lÈGÐU]Ñ^Ô^�‘åðNØ6BÔ6KðNð Nñô ð õ ˜¥nÑ5Ô5ð 	VÝ/°¸gÀxÑPÔPˆF‰FÝ˜Õ&:Ñ;Ô;ð 	VØð Ø+×<Ò<ØDÐDÐDÐDÐDÐDñ ô  �õ 7°|ÀWÑMÔMˆF‰FÝ˜Õ&9Ñ:Ô:ð 	VÝ5°lÀGÈXÑVÔVˆF‰FÝ˜¥lÑ3Ô3ð 	VÝ-¨l¸GÀXÑNÔNˆF‰FÝ˜Õ&8Ñ9Ô9ð 	VØð Ø+×<Ò<ØDÐDÐDÐDÐDÐDñ ô  �õ 5°\À7ÑKÔKˆFˆFÝ˜Õ&7Ñ8Ô8ð 	VÝ3°LÀ'È8ÑTÔTˆFˆFÝ˜¥lÑ3Ô3ð 
	VÝ" <Ñ0Ô0Ð0Øð QØ#×0Ò0°¸tÀZÑPÔP�å-¨lÑ;Ô;ˆLÝ.¨|¸WÑEÔEˆFˆFÝ˜Õ&8Ñ9Ô9ð 	VÝ3°LÀ'È8ÑTÔTˆFˆFåÐS½tÀLÑ?QÔ?QÐSÐSÑTÔTÐUà×1Ò1°,ÈDÐ1ÑQÔQˆå*¨8Ñ4Ô4ˆà�]Ô;Ò;Ð;½zØåÝÝÝ#Ý!Ýðñ
@
ô 
@
Ð;õ ”J˜vÑ&Ô& t t¨ tÔ,ˆEˆEå”J˜vÑ&Ô&ˆEà!Ð-��°1ˆØð 	(ð 	(ˆCÝ�6‰{Œ{˜e f™nÒ,Ð,Ø�à˜”9ð Øà˜3”KˆEàð  %­B¬F¨7Ò"2Ð"2ØØ”| CÔ(ˆHàÐ*Ø!¥]Ô%CÒCÐCØ˜Ò.Ð.Ø˜ð /ð ˜Ò.Ð.Ø˜å$ÝÔ"ØÝ˜E‘l”lØØ×)Ò)¨#¨|Ñ<Ô<Ø×(Ò(¨¨lÑ;Ô;ðñ ô ˆLð �MŠM˜,Ñ'Ô'Ð'Ð'à�f�g�gŒÐrq   r   rä   ÚprefetchÚusingÚkwargsc                 ó–  ‡ — g }|�t          |t          ¦  «        r|n|g}t          |¦  «        dk    rRˆ fd„|D ¦   «         }|€t          d¦  «        ‚‰                      |||||	||||‰                      |
¦  «        ¬¦
  «
        }n1‰                      ||	||||||‰                      |
¦  «        ¬¦	  «	        }t          j        |¬¦  «        S )z³
        Queries points in the local collection, resolving any prefetches first.

        Assumes all vectors have been homogenized so that there are no ids in the inputs
        Nr   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rs   ©Ú	_prefetch)rm   r[  r‹   s     €r\   rÑ   z0LocalCollection.query_points.<locals>.<listcomp>  s%   ø€ ÐKÐKÐK°H�t—~’~ hÑ/Ô/ÐKÐKÐKrq   ú(Query is required for merging prefetches©
Úsourcesrä   r3  r4  r\  r2  r  r  r5  r½   ©	rä   r\  r2  r3  r4  r  r  r5  r½   )Úpoints)	r�   r‚   r¸   râ   Ú_merge_sourcesr¨   Ú_query_collectionÚtypesÚQueryResponse)r‹   rä   r[  r2  r3  r4  r  r  r5  r\  r£   r]  Ú
prefetchesrd  Úscored_pointss   `              r\   Úquery_pointszLocalCollection.query_pointsî  s  ø€ ð( ˆ
ØÐÝ%/°½$Ñ%?Ô%?ÐO˜˜ÀhÀZˆJåˆz‰?Œ?˜QÒÐàKÐKÐKÐKÀ
ÐKÑKÔKˆGàˆ}Ý Ð!KÑLÔLÐLð !×/Ò/ØØØØØØ)Ø)Ø)Ø /Ø×.Ò.¨}Ñ=Ô=ð 0ñ ô ˆMˆMð !×2Ò2ØØØ)ØØØ)Ø)Ø /Ø×.Ò.¨}Ñ=Ô=ð 3ñ 
ô 
ˆMõ Ô"¨-Ð8Ñ8Ô8Ð8rq   c                 ó&  ‡ — g }|j         �)t          |j         t          ¦  «        r|j         n|j         g}t          |¦  «        dk    r}ˆ fd„|D ¦   «         }|j        €t          d¦  «        ‚‰                      ||j        |j        �|j        ndd|j        |j	        dd|j
        ‰                      |j        ¦  «        ¬¦
  «
        S ‰                      |j        |j        |j	        |j        ddd|j
        ‰                      |j        ¦  «        ¬¦	  «	        S )Nr   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rs   r`  )rm   Úinner_prefetchr‹   s     €r\   rÑ   z-LocalCollection._prefetch.<locals>.<listcomp>2  s%   ø€ Ð]Ð]Ð]¸.�t—~’~ nÑ5Ô5Ð]Ð]Ð]rq   rb  r1  Frc  re  )r[  r�   r‚   r¸   rä   râ   rg  r3  r\  Úfilterr5  r¨   ro   rh  )r‹   r[  Úinner_prefetchesrd  s   `   r\   ra  zLocalCollection._prefetch*  s9  ø€ ØÐØÔÐ(å%/°Ô0AÅ4Ñ%HÔ%HÐa�Ô!Ð!ÈxÔO`ÐNað õ ÐÑ Ô  1Ò$Ð$Ø]Ð]Ð]Ð]ÐL\Ð]Ñ]Ô]ˆGàŒ~Ð%Ý Ð!KÑLÔLÐLð ×&Ò&ØØ”nØ(0¬Ð(B�h”n�nÈØØ”nØ%œ_Ø"Ø"Ø (Ô 8Ø×.Ò.¨x¬Ñ?Ô?ð 'ñ ô ð ð ×)Ò)Ø”nØ”nØ%œ_Ø”nØØ"Ø"Ø (Ô 8Ø×.Ò.¨x¬Ñ?Ô?ð *ñ 
ô 
ð 
rq   rd  c                 óB  ‡— t          |t          j        t          j        f¦  «        �r't          |t          j        ¦  «        r+t	          |||z   |j        j        |j        j        ¬¦  «        }nv|j        t          j	        j
        k    rt	          |||z   ¬¦  «        }nG|j        t          j	        j        k    rt          |||z   ¬¦  «        }nt          d|j        › d�¦  «        ‚‰�ˆfd„|D ¦   «         }d„ |D ¦   «         }|                      |||	¬¦  «        }t          ||¦  «        D ]\  }}|j        |_        |j        |_        Œ||d …         S t          |t          j        ¦  «        r5|                      ||||z   ||	¬¦  «        }ˆfd	„|D ¦   «         }||d …         S t)          ¦   «         }|D ]!}|D ]}|                     |j        ¦  «         ŒŒ"t/          |¦  «        d
k    rg S t1          |t3          |¦  «        ¦  «        }|                      |||||||	‰|
¬¦	  «	        S )N)Ú	responsesr3  Úranking_constant_kÚweights)rt  r3  zFusion method z does not existc                 ó*   •— g | ]}|j         ‰k    ¯|‘ŒS rs   ©r@  )rm   rò   r5  s     €r\   rÑ   z2LocalCollection._merge_sources.<locals>.<listcomp>v  s%   ø€ ÐHÐHÐH˜q¨Q¬W¸Ò-GÐ-G˜Ð-GÐ-GÐ-Grq   c                 ó   — g | ]	}|j         ‘Œ
S rs   ©rÔ   ©rm   r×   s     r\   rÑ   z2LocalCollection._merge_sources.<locals>.<listcomp>y  s   € Ð/Ð/Ð/ �5”8Ð/Ð/Ð/rq   )r  r  )rä   Úprefetches_resultsr3  r  r  c                 ó.   •— g | ]}‰�|j         ‰k    ¯|‘ŒS r�   rx  )rm   r×   r5  s     €r\   rÑ   z2LocalCollection._merge_sources.<locals>.<listcomp>�  s5   ø€ ð ð ð àØ"Ð*¨e¬k¸_Ò.LÐ.Lð à.LÐ.LÐ.Lrq   r   re  )r�   r   ÚFusionQueryÚRrfQueryr   ÚrrfÚkrv  ÚfusionÚFusionÚRRFÚDBSFr   râ   ÚretrieverÄ   r€   r—   ÚFormulaQueryÚ_rescore_with_formulaÚsetÚaddrÔ   r¸   Ú_include_ids_in_filterr‚   rh  )r‹   rd  rä   r3  r4  r\  r2  r5  r  r  r½   Úfusedr†   Úfetched_pointsÚfetchedÚscoredÚrescoredÚsources_idsÚsourcer×   Úfilter_with_sourcess          `             r\   rg  zLocalCollection._merge_sourcesR  s£  ø€ õ �e�fÔ0µ&´/ÐBÑCÔCñ K	å˜%¥¤Ñ1Ô1ð UÝ.Ø%Ø &™.Ø',¤y¤{Ø!œIÔ-ð	ñ ô ��ð ”<¥6¤=Ô#4Ò4Ð4å2¸WÈEÐTZÉNÐ[Ñ[Ô[�E�EØ”\¥V¤]Ô%7Ò7Ð7å;Ø")°¸±ðñ ô �E�Eõ %Ð%S°e´lÐ%SÐ%SÐ%SÑTÔTÐTð Ð*ØHÐHÐHÐH EÐHÑHÔH�ð 0Ð/¨Ð/Ñ/Ô/ˆCØ!Ÿ]š]Ø ,¸\ð +ñ ô ˆNõ $' ~°uÑ#=Ô#=ð /ð /‘�˜Ø!(¤�”Ø '¤�”�à˜˜˜”>Ð!å˜�vÔ2Ñ3Ô3ð '	à×1Ò1ØØ#*Ø˜f‘nØ)Ø)ð 2ñ ô ˆHðð ð ð à%ðñ ô ˆHð ˜F˜G˜GÔ$Ð$õ ™%œ%ˆKØ!ð .ð .�Ø#ð .ð .�EØ—O’O E¤HÑ-Ô-Ð-Ð-ð.õ �;ÑÔ 1Ò$Ð$à�	å&<¸\Í4ÐP[ÑK\ÔK\Ñ&]Ô&]Ð#Ø×-Ò-ØØØ!4ØØ!Ø!-Ø!-Ø$3Ø)ð .ñ 
ô 
ð 
rq   c
                 óJ  — |pt           }|pd}|pd}|€3|                      |||z   ||¬¦  «        \  }
}d„ |
|d…         D ¦   «         S t          |t          j        ¦  «        rT|j        �)|                      |j        |j        ||||||||	¬¦
  «
        S |                      ||j        f|||||||	¬¦  «        S t          |t          j	        ¦  «        r>|  
                    |j
        j        |j
        j        |j
        j        ||||||||	¬¦  «        S t          |t          j        ¦  «        r3|                      |j        j        |j        j        ||||||||	¬	¦
  «
        S t          |t          j        ¦  «        r#|                      |j        ||||||||	¬
¦	  «	        S t          |t          j        ¦  «        r9|                      ||j        ||z   ||¬¦  «        \  }
}d„ |
|d…         D ¦   «         S t          |t          j        ¦  «        rJ|j        t          j        j        k    r|                      ||||¬¦  «        S t5          d|j        › �¦  «        ‚t          |t          j        ¦  «        rt5          d¦  «        ‚t          |t          j        ¦  «        rt5          d¦  «        ‚t          |t          j        ¦  «        rt5          d¦  «        ‚t          |t          j        ¦  «        r#|                      |j         ||||||||	¬¦	  «	        S |                      ||f|||||||	¬¦  «        S )z_
        Performs the query on the collection, assuming it didn't have any prefetches.
        r1  r   N)Úscroll_filterr3  r  r  c                 ó,   — g | ]}t          |¦  «        ‘ŒS rs   ©Úrecord_to_scored_point©rm   Úrecords     r\   rÑ   z5LocalCollection._query_collection.<locals>.<listcomp>Ç  ó!   € ÐRÐRÐR°vÕ*¨6Ñ2Ô2ÐRÐRÐRrq   )
rÞ   Úmmrr2  r3  r4  r\  r  r  r5  r½   ©rÞ   r2  r3  r4  r  r  r5  r½   )ÚpositiveÚnegativerH  r\  r2  r3  r4  r  r  r5  r½   )
ÚtargetÚcontextr\  r2  r3  r4  r  r  r5  r½   )	r¡  r\  r2  r3  r4  r  r  r5  r½   )r•  Úorder_byr3  r  r  c                 ó,   — g | ]}t          |¦  «        ‘ŒS rs   r—  r™  s     r\   rÑ   z5LocalCollection._query_collection.<locals>.<listcomp>  r›  rq   )r3  r2  r  r  zUnknown Sample variant: z(Cannot perform fusion without prefetchesz)Cannot perform formula without prefetchesz+Cannot perform RRF query without prefetches)	Úrelevance_feedbackr\  r2  r3  r4  r  r  r5  r½   )!r“   Úscrollr�   r   ÚNearestQueryrœ  Ú_search_with_mmrÚnearestrZ  ÚRecommendQueryÚ	recommendrž  rŸ  rH  ÚDiscoverQueryÚdiscoverr   r¡  r   ÚOrderByQueryr¢  ÚSampleQueryÚsampleÚSampleÚRANDOMÚ_sample_randomlyrâ   r~  r‡  r  ÚRelevanceFeedbackQueryÚ_relevance_feedbackr¤  )r‹   rä   r\  r2  r3  r4  r  r  r5  r½   ÚrecordsÚ_s               r\   rh  z!LocalCollection._query_collection¬  sß  € ð  Ð,Õ,ˆØ�˜ˆØ�˜1ˆàˆ=ØŸšØ*Ø˜f‘nØ)Ø)ð	 %ñ ô ‰JˆG�Qð SÐRÀÈÈÈÔAQÐRÑRÔRÐRÝ˜�vÔ2Ñ3Ô3ð p	ØŒyÐ$Ø×,Ò,Ø!&¤Øœ	Ø!-ØØ!ØØ!-Ø!-Ø$3Ø)ð -ñ ô ð ð —;’;Ø# U¤]Ð3Ø)ØØØ)Ø)Ø /Ø%ð ñ 	ô 	ð 	õ ˜�vÔ4Ñ5Ô5ð W	Ø—>’>ØœÔ1ØœÔ1ØœÔ1ØØ)ØØØ)Ø)Ø /Ø%ð "ñ ô ð õ ˜�vÔ3Ñ4Ô4ð I	Ø—=’=Ø”~Ô,ØœÔ.ØØ)ØØØ)Ø)Ø /Ø%ð !ñ ô ð õ ˜�vÔ2Ñ3Ô3ð <	Ø—=’=ØœØØ)ØØØ)Ø)Ø /Ø%ð !ñ 
ô 
ð 
õ ˜�vÔ2Ñ3Ô3ð 0	ØŸšØ*ØœØ˜f‘nØ)Ø)ð %ñ ô ‰JˆG�Qð SÐRÀÈÈÈÔAQÐRÑRÔRÐRÝ˜�vÔ1Ñ2Ô2ð '	ØŒ|�vœ}Ô3Ò3Ð3Ø×,Ò,ØØ!-Ø!-Ø!-ð	 -ñ ô ð õ !Ð!J¸E¼LÐ!JÐ!JÑKÔKÐKÝ˜�vÔ1Ñ2Ô2ð 	ÝÐGÑHÔHÐHÝ˜�vÔ2Ñ3Ô3ð 	ÝÐHÑIÔIÐIÝ˜�vœÑ/Ô/ð 	ÝÐJÑKÔKÐKÝ˜�vÔ<Ñ=Ô=ð 	Ø×+Ò+Ø#(Ô#;ØØ)ØØØ)Ø)Ø /Ø%ð ,ñ 
ô 
ð 
ð —;’;Ø# U˜^Ø)ØØØ)Ø)Ø /Ø%ð ñ 	ô 	ð 	rq   é   Úgroup_byÚ
group_sizeÚwith_lookupÚwith_lookup_collectionzLocalCollection | Nonec           
      ó(  — t          | j        ¦  «        }|�t          |¦  «        }t          ||¦  «         |                      ||||t          | j        ¦  «        d|	|
¬¦  «        }t          ¦   «         }|j        D ]Ü}t          |j        t          ¦  «        sŒt          |j        |¦  «        }|€Œ5t          t          d„ |D ¦   «         ¦  «        ¦  «        }|                      |j        |¦  «        |_        |D ]^}||vrt          j        |g ¬¦  «        ||<   t          ||         j        ¦  «        |k    rŒ>||         j                             |¦  «         Œ_ŒÝt          |                     ¦   «         ¦  «        d |…         }t          |t&          ¦  «        rt          j        |d d ¬¦  «        }|�Q|�O|D ]L}|                     |j        g|j        |j        ¬¦  «        }t3          t5          |¦  «        d ¦  «        |_        ŒMt          j        |¬¦  «        S )NT)rä   r2  r[  r\  r3  r  r  r5  c              3   óR   K  — | ]"}t          |t          t          f¦  «        ¯|V — Œ#d S r�   ©r�   Ústrrœ   ©rm   rÚ   s     r\   ró   z/LocalCollection.query_groups.<locals>.<genexpr>r  ó6   è è € Ð#YÐ#Y¨!½zÈ!ÍcÕSVÈZÑ?XÔ?XÐ#Y AÐ#YÐ#YÐ#YÐ#YÐ#YÐ#Yrq   ©rÔ   Úhits©Ú
collectionr  r  ©r†   r  r  ©Úgroups)r¸   r‡   r
   Úset_prefetch_limit_iterativelyrm  r   rf  r�   r€   rµ   r=   r‚   r‰  r  r   Ú
PointGrouprÃ  rÅ   rÀ   r¿  Ú
WithLookupr†  rÔ   r  r  ÚnextÚiterÚlookupÚGroupsResult)r‹   r¸  rä   r\  r[  r2  r3  r¹  r  r  r5  rº  r»  Ú	max_limitrf  rÈ  r×   Úgroup_valuesÚgroup_valueÚgroups_resultÚgrouprÎ  s                         r\   Úquery_groupszLocalCollection.query_groups:  sE  € õ4 ˜œÑ%Ô%ˆ	àÐÝØñô ˆHõ +¨8°YÑ?Ô?Ð?à×"Ò"ØØ%ØØÝ�d”lÑ#Ô#ØØ%Ø+ð #ñ 	
ô 	
ˆõ ‘”ˆà”]ð 	7ð 	7ˆEÝ˜eœm­TÑ2Ô2ð Øå'¨¬°xÑ@Ô@ˆLØÐ#Øå¥Ð#YÐ#Y¨|Ð#YÑ#YÔ#YÑ YÔ YÑZÔZˆLà ×1Ò1°%´-ÀÑNÔNˆEŒMà+ð 7ð 7�Ø fÐ,Ð,Ý*0Ô*;¸{ÐQSÐ*TÑ*TÔ*T�F˜;Ñ'å�v˜kÔ*Ô/Ñ0Ô0°JÒ>Ð>Øà�{Ô#Ô(×/Ò/°Ñ6Ô6Ð6Ð6ð7õ 26°f·m²m±o´oÑ1FÔ1FÀvÈÀvÔ1Nˆå�k¥3Ñ'Ô'ð 	Ý Ô+Ø&Ø!Ø!ðñ ô ˆKð Ð"Ð'=Ð'IØ&ð 8ð 8�Ø/×8Ò8Øœ˜
Ø!,Ô!9Ø!,Ô!9ð 9ñ ô �õ
  $¥D¨¡L¤L°$Ñ7Ô7�”�åÔ"¨-Ð8Ñ8Ô8Ð8rq   r›   c                 ó°  — |                       ||t          | j        ¦  «        d||¬¦  «        }t          ¦   «         }|D ]Ü}t	          |j        t          ¦  «        sŒt          |j        |¦  «        }|€Œ5t          t          d„ |D ¦   «         ¦  «        ¦  «        }|  
                    |j        |¦  «        |_        |D ]^}||vrt          j        |g ¬¦  «        ||<   t          ||         j        ¦  «        |k    rŒ>||         j                             |¦  «         Œ_ŒÝt          |                     ¦   «         ¦  «        d |…         }t	          |	t           ¦  «        rt          j        |	d d ¬¦  «        }	|	�Q|
�O|D ]L}|
                     |j        g|	j        |	j        ¬¦  «        }t-          t/          |¦  «        d ¦  «        |_        ŒMt          j        |¬¦  «        S )NT)rÞ   r2  r3  r  r  r5  c              3   óR   K  — | ]"}t          |t          t          f¦  «        ¯|V — Œ#d S r�   r¾  rÀ  s     r\   ró   z0LocalCollection.search_groups.<locals>.<genexpr>»  rÁ  rq   rÂ  rÄ  rÆ  rÇ  )rZ  r¸   r‡   r   r�   r€   rµ   r=   r‚   r‰  r  r   rÊ  rÃ  rÅ   rÀ   r¿  rË  r†  rÔ   r  r  rÌ  rÍ  rÎ  rÏ  )r‹   rÞ   r¸  r2  r3  r¹  r  r  r5  rº  r»  rf  rÈ  r×   rÑ  rÒ  rÓ  rÔ  rÎ  s                      r\   Úsearch_groupszLocalCollection.search_groups“  s  € ð* —’Ø%Ø%Ý�d”lÑ#Ô#ØØ%Ø+ð ñ 
ô 
ˆõ ‘”ˆàð 	7ð 	7ˆEÝ˜eœm­TÑ2Ô2ð Øå'¨¬°xÑ@Ô@ˆLØÐ#Øå¥Ð#YÐ#Y¨|Ð#YÑ#YÔ#YÑ YÔ YÑZÔZˆLà ×1Ò1°%´-ÀÑNÔNˆEŒMà+ð 7ð 7�Ø fÐ,Ð,Ý*0Ô*;¸{ÐQSÐ*TÑ*TÔ*T�F˜;Ñ'å�v˜kÔ*Ô/Ñ0Ô0°JÒ>Ð>Øà�{Ô#Ô(×/Ò/°Ñ6Ô6Ð6Ð6ð7õ 26°f·m²m±o´oÑ1FÔ1FÀvÈÀvÔ1Nˆå�k¥3Ñ'Ô'ð 	Ý Ô+Ø&Ø!Ø!ðñ ô ˆKð Ð"Ð'=Ð'IØ&ð 8ð 8�Ø/×8Ò8Øœ˜
Ø!,Ô!9Ø!,Ô!9ð 9ñ ô �õ
  $¥D¨¡L¤L°$Ñ7Ô7�”�åÔ"¨-Ð8Ñ8Ô8Ð8rq   Úfacet_filterc                 óŽ  — t          t          ¦  «        }|                      |¦  «        }t          | j        ¦  «        D ]½\  }}||         sŒt          |t          ¦  «        sŒ$t          ||¦  «        }|€Œ7t          ¦   «         }	|D ]`}
t          |
¦  «        t          t          j        ¦  «        vrŒ+t          |
¦  «        }|rt          |¦  «        }
|	                     |
¦  «         Œa|	D ]}
||
xx         dz  cc<   ŒŒ¾d„ t!          |                     ¦   «         d„ ¬¦  «        d |…         D ¦   «         }t          j        |¬¦  «        S )Nr›   c                 ó@   — g | ]\  }}t          j        ||¬ ¦  «        ‘ŒS ))rÊ   Úcount)r   ÚFacetValueHit)rm   rÊ   rÜ  s      r\   rÑ   z)LocalCollection.facet.<locals>.<listcomp>  s<   € ð 
ð 
ð 
á��uõ Ô  u°EÐ:Ñ:Ô:ð
ð 
ð 
rq   c                 ó$   — | d          | d         fS )Nr›   r   rs   r[   s    r\   r  z'LocalCollection.facet.<locals>.<lambda>	  s   €   !¤˜u a¨¤d˜m€ rq   ©rë   )rÃ  )r   rœ   rÂ   rÒ   r€   r�   rµ   r=   r‰  rã   r   ri  Ú
FacetValuer>   r¿  rŠ  Úsortedr}   ÚFacetResponse)r‹   rë   rÙ  r3  Ú
facet_hitsr±   rŸ   r€   rÀ   Ú
values_setrÚ   Úas_uuidrÃ  s                r\   ÚfacetzLocalCollection.facetÜ  s  € õ 3>½cÑ2BÔ2Bˆ
à×1Ò1°,Ñ?Ô?ˆå% d¤lÑ3Ô3ð 	#ð 	#‰LˆC�Ø˜”9ð Øå˜g¥tÑ,Ô,ð Øå! '¨3Ñ/Ô/ˆFàˆ~Øõ 14±´ˆJð ð 	"ð 	"�Ý˜‘7”7Õ"5µeÔ6FÑ"GÔ"GÐGÐGØõ % Q™-œ-�Øð %Ý˜G™œ�Aà—’˜qÑ!Ô!Ð!Ð!àð #ð #�Ø˜1��” Ñ"��‘�ð#ð
ð 
å &Ø× Ò Ñ"Ô"à+Ð+ð!ñ !ô !ð ˆuˆfô	!ð
ñ 
ô 
ˆõ Ô"¨Ð-Ñ-Ô-Ð-rq   r†   c                 ó"  — g }d„ |D ¦   «         }|D ]}}|| j         vrŒ| j         |         }| j        |         dk    rŒ+|                     t          j        ||                      ||¦  «        |                      ||¦  «        ¬¦  «        ¦  «         Œ~|S )Nc                 ód   — g | ]-}t          |t          j        ¦  «        rt          |¦  «        n|‘Œ.S rs   ©r�   ÚuuidÚUUIDr¿  ©rm   Úid_s     r\   rÑ   z,LocalCollection.retrieve.<locals>.<listcomp>  s3   € ÐNÐNÐNÀ3�: c­4¬9Ñ5Ô5Ð>�s�3‰xŒxˆx¸3ÐNÐNÐNrq   r›   ©rÔ   r€   r—   )r†   r�   rÅ   r   ÚRecordr  r(  )r‹   r†   r  r  rR  rX  rŸ   s          r\   r†  zLocalCollection.retrieve  s»   € ð ˆØNÐNÈ#ÐNÑNÔNˆØð 	ð 	ˆHØ˜tœxÐ'Ð'Øà”(˜8Ô$ˆCØŒ|˜CÔ  AÒ%Ð%Øà�MŠMÝ”ØØ ×-Ò-¨c°<Ñ@Ô@Ø×,Ò,¨S°,Ñ?Ô?ðñ ô ñô ð ð ð ˆrq   rž  rŸ  rH  Úlookup_from_collectionÚlookup_from_vector_namec                 óº  ‡ ‡‡‡‡— dt           t          j                 dt          t          t                            t          t          j                 z  t          t          t          t                                     z  dd fˆˆˆˆ ˆfd„}|�|n‰ Š|�|nt          }	|�|n|	Š|�|ng }|�|ng }|t          j        j	        k    r#t          |¦  «        dk    rt          d¦  «        ‚n_|t          j        j        k    s|t          j        j        k    r5t          |¦  «        dk    r"t          |¦  «        dk    rt          d¦  «        ‚g }
g }g }g }g }g }g Š‰‰j        v }‰‰j        v }|r ‰j        Š |||¦  «          |||¦  «         nA|r ‰j        Š |||¦  «          |||¦  «         n‰j        Š |||
¦  «          |||¦  «         t#          |‰¦  «        }|
||||||fS )NÚexamplesÚaccrR   c                 ó¶  •— | D ]Ô}t          |t          t          j        ¦  «        ¦  «        r–|‰j        vrt          d|› d�¦  «        ‚‰j        |         }‰‰	         |         }t          |t          j        ¦  «        r|                     ¦   «         }| 	                    |¦  «         ‰‰k    r‰ 	                    |¦  «         Œ¿| 	                    |¦  «         ŒÕd S ©NúPoint rè   )
r�   r	   ri  ÚPointIdr†   râ   rh   rá   r!  rÅ   )
ró  rô  ÚexamplerŸ   ÚvecrÅ  Úcollection_vectorsÚmentioned_idsr‹   r˜   s
        €€€€€r\   Úexamples_into_vectorszJLocalCollection._preprocess_recommend_input.<locals>.examples_into_vectors;  sá   ø€ ð $ð (ð (�Ý˜g¥xµ´Ñ'>Ô'>Ñ?Ô?ð (Ø j¤nÐ4Ð4Ý(Ð)Z°'Ð)ZÐ)ZÐ)ZÑ[Ô[Ð[à$œ.¨Ô1�CØ,¨[Ô9¸#Ô>�Cå! #¥r¤zÑ2Ô2ð +Ø!Ÿjšj™lœl˜Ø—J’J˜s‘O”O�OØ! TÒ)Ð)Ø%×,Ò,¨WÑ5Ô5Ð5øà—J’J˜wÑ'Ô'Ð'Ð'ð(ð (rq   r   zPositive list is emptyz&No positive or negative examples given)r   r   ÚVectorInputr‚   rQ  r   r“   ri  rI  ÚAVERAGE_VECTORr¸   râ   rJ  rK  r|   r   ry   Úignore_mentioned_ids_filter)r‹   rž  rŸ  rH  r2  r\  rð  rñ  rý  Úsearch_in_vector_nameÚpositive_vectorsÚnegative_vectorsÚsparse_positive_vectorsÚsparse_negative_vectorsÚpositive_multivectorsÚnegative_multivectorsÚsparseÚmultirÅ  rû  rü  r˜   s   `                 @@@@r\   Ú_preprocess_recommend_inputz+LocalCollection._preprocess_recommend_input)  s‹  øøøøø€ ð$	(Ý�vÔ1Ô2ð	(å•d�5”kÔ"¥T­&Ô*=Ô%>Ñ>ÅÅdÍ4ÕPUÌ;ÔFWÔAXÑXð	(ð ð	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð( 0FÐ/QÐ+Ð+ÐW[ˆ
Ø).Ð):  Õ@SÐð 'Ð2ð $Ð#à&ð 	ð  (Ð3�8�8¸ˆØ'Ð3�8�8¸ˆð •uÔ.Ô=Ò=Ð=Ý�8‰}Œ} Ò!Ð!Ý Ð!9Ñ:Ô:Ð:ð "ð �Ô/Ô:Ò:Ð:Ø�5Ô2Ô=Ò=Ð=å�8‰}Œ} Ò!Ð!¥c¨(¡m¤m°qÒ&8Ð&8Ý Ð!IÑJÔJÐJð /1ÐØ.0ÐØ=?ÐØ=?ÐØ9;ÐØ9;ÐØ/1ˆà 
Ô 9Ð9ˆØ˜zÔ6Ð6ˆØð 	>Ø!+Ô!:ÐØ!Ð! (Ð,CÑDÔDÐDØ!Ð! (Ð,CÑDÔDÐDÐDØð 	>Ø!+Ô!8ÐØ!Ð! (Ð,AÑBÔBÐBØ!Ð! (Ð,AÑBÔBÐBÐBà!+Ô!3ÐØ!Ð! (Ð,<Ñ=Ô=Ð=Ø!Ð! (Ð,<Ñ=Ô=Ð=õ 3°<ÀÑOÔOˆð ØØ#Ø#Ø!Ø!Øð
ð 	
rq   r  r  c                 óî   — t          j        | ¦  «        }t          |¦  «        dk    rt          j        |¦  «        nd }t          j        |d¬¦  «        }|�||z   t          j        |d¬¦  «        z
  }n|}|S )Nr   ©Úaxis)rh   Ústackr¸   Úmean)r  r  Úpositive_vectors_npÚnegative_vectors_npÚmean_positive_vectorr—   s         r\   Ú_recommend_average_densez(LocalCollection._recommend_average_denseŠ  sŽ   € õ !œhÐ'7Ñ8Ô8ÐÝ<?Ð@PÑ<QÔ<QÐTUÒ<UÐ<U�bœhÐ'7Ñ8Ô8Ð8Ð[_Ðå!œwÐ':ÀÐCÑCÔCÐàÐ*à$Ð';Ñ;½b¼gÐFYÐ`aÐ>bÑ>bÔ>bÑbð ˆFð *ˆFØˆrq   c                 óD  — t          | ¦  «        D ]&\  }}t          |¦  «         t          |¦  «        | |<   Œ't          |¦  «        D ]&\  }}t          |¦  «         t          |¦  «        ||<   Œ't          | ¦  «        }|r t          |¦  «        }t	          ||¦  «        }n|}|S r�   )rÒ   rC   rB   rN   rM   )r  r  Úir—   r  Úmean_negative_vectors         r\   Ú_recommend_average_sparsez)LocalCollection._recommend_average_sparse›  sÇ   € õ
 #Ð#3Ñ4Ô4ð 	=ð 	=‰IˆAˆvÝ" 6Ñ*Ô*Ð*Ý"4°VÑ"<Ô"<Ð˜QÑÐå"Ð#3Ñ4Ô4ð 	=ð 	=‰IˆAˆvÝ" 6Ñ*Ô*Ð*Ý"4°VÑ"<Ô"<Ð˜QÑÐå)Ð*:Ñ;Ô;Ðàð 	*Ý#-Ð.>Ñ#?Ô#?Ð Ý4Ð5IÐK_Ñ`Ô`ˆFˆFà)ˆFØˆrq   c                 ó–   — d„ | D ¦   «         }t          |¦  «        dk    r)|D ]&}|D ]!}|                     d„ |D ¦   «         ¦  «         Œ"Œ'|S )Nc                 ó   — g | ]	}|D ]}|‘ŒŒ
S rs   rs   )rm   Úmulti_vectorr—   s      r\   rÑ   z<LocalCollection._recommend_average_multi.<locals>.<listcomp>µ  s&   € ÐcÐcÐc |ÐVbÐcÐcÈF˜FÐcÐcÐcÐcrq   r   c                 ó   — g | ]}| ‘ŒS rs   rs   )rm   rÊ   s     r\   rÑ   z<LocalCollection._recommend_average_multi.<locals>.<listcomp>¹  s   € Ð,HÐ,HÐ,H¸¨e¨VÐ,HÐ,HÐ,Hrq   )r¸   rÅ   )r  r  Úrecommend_vectorr  r—   s        r\   Ú_recommend_average_multiz(LocalCollection._recommend_average_multi±  s„   € ð dÐcÐ7GÐcÑcÔcÐÝÐÑ Ô  1Ò$Ð$Ø 0ð Jð J�Ø*ð Jð J�FØ$×+Ò+Ð,HÐ,HÀÐ,HÑ,HÔ,HÑIÔIÐIÐIðJð  Ðrq   c           	      óš  — |�|nt           j        j        }|                      |||||||¦  «        \  }}	}
}}}}|t           j        j        k    rZ|r|                      ||	¦  «        }nâ|
r|                      |
|¦  «        }nÉ|r|                      ||¦  «        }n°t          d¦  «        ‚|t           j        j        k    s|t           j        j	        k    rX|s|	rt          ||	|¬¦  «        }n`|
s|rt          |
||¬¦  «        }nI|s|rt          |||¬¦  «        }n2t          d|› d�¦  «        ‚t          d|› dt           j        › �¦  «        ‚||fS )Nz9No positive examples given with 'average_vector' strategy)rž  rŸ  rH  z-No positive or negative examples given with 'z
' strategyz
strategy `z+` is not a valid strategy, choose one from )ri  rI  rÿ  r
  r  r  r  râ   rJ  rK  r!   rH   r.   )r‹   rž  rŸ  r2  r\  rð  rñ  rH  r  r  r  r  Úmulti_positive_vectorsÚmulti_negative_vectorsÚedited_query_filterrÞ   s                   r\   Ú_construct_recommend_queryz*LocalCollection._construct_recommend_query½  s  € ð  (Ð3�8�8½Ô9PÔ9_ˆð ×,Ò,ØØØØØØ"Ø#ñ
ô 
ñ	
ØØØ#Ø#Ø"Ø"Øð •uÔ.Ô=Ò=Ð=àð ^Ø#×<Ò<Ø$Ø$ñ ô  ��ð )ð 
^Ø#×=Ò=Ø+Ø+ñ ô  ��ð (ð ^Ø#×<Ò<Ø*Ð,Bñ ô  ��õ !Ð!\Ñ]Ô]Ð]ð �Ô/Ô:Ò:Ð:Ø�5Ô2Ô=Ò=Ð=àð Ð#3ð Ý(Ø-Ø-Ø%ð ñ  ô  ��ð
 )ð Ð,Cð Ý.Ø4Ø4Ø%ð ñ  ô  ��ð
 (ð 	Ð+Að 	Ý-Ø3Ø3Ø%ð ñ  ô  ��õ !ØXÀHÐXÐXÐXñô ð õ Øk˜XÐkÐkÕRWÔRiÐkÐkñô ð ð Ð0Ð0Ð0rq   c           
      ó’   — |                       ||||	|
||¦  «        \  }}|	�|	nt          }|                      ||f|||||||¬¦  «        S )Nr�  )r"  r“   rZ  )r‹   rž  rŸ  r2  r3  r4  r  r  r5  r\  rð  rñ  rH  r½   rÞ   r!  r  s                    r\   rª  zLocalCollection.recommend  s~   € ð  -1×,KÒ,KØØØØØ"Ø#Øñ-
ô -
Ñ)ˆÐ)ð */Ð):  Õ@SÐà�{Š{Ø/°Ð>Ø,ØØØ%Ø%Ø+Ø!ð ñ 	
ô 	
ð 		
rq   c                 óÀ   — |�|nt           j        j        }|                      ||||
|||¦  «        \  }}|
�|
nt          }|                      ||f||||||	|||¬¦
  «
        S )N)
rÞ   r2  r¸  r¹  r3  r  r  r5  rº  r»  )ri  rI  rÿ  r"  r“   rØ  )r‹   r¸  rž  rŸ  r2  r3  r¹  r5  r  r  r\  rð  rñ  rº  r»  rH  rÞ   r!  r  s                      r\   Úrecommend_groupsz LocalCollection.recommend_groups7  sš   € ð$  (Ð3�8�8½Ô9PÔ9_ˆà,0×,KÒ,KØØØØØ"Ø#Øñ-
ô -
Ñ)ˆÐ)ð */Ð):  Õ@SÐà×!Ò!Ø/°Ð>Ø,ØØ!ØØ%Ø%Ø+Ø#Ø#9ð "ñ 
ô 
ð 	
rq   r¯  c                 óŽ  — |                       ||||¬¦  «        \  }}g }g }d„ t          |¦  «        D ¦   «         }	t          |¦  «        D ]?\  }
}|D ]7}|                     |
¦  «         |                     |	|j                 ¦  «         Œ8Œ@g }|D ]!}|D ]}|                     |j        ¦  «         ŒŒ"t          j        ||||¬¦  «        S )N©r2  r3  r¯  r\  c                 ó   — i | ]\  }}||“Œ	S rs   rs   )rm   rŸ   rX  s      r\   rp   z9LocalCollection.search_matrix_offsets.<locals>.<dictcomp>r  s   € ÐJÐJÐJ©-¨#¨x˜ #ÐJÐJÐJrq   )Úoffsets_rowÚoffsets_colrU  r†   )Ú_search_distance_matrixrÒ   rÅ   rÔ   r@  ri  ÚSearchMatrixOffsetsResponse)r‹   r2  r3  r¯  r\  r†   Ú
all_scoresr)  r*  Úoffset_by_idÚ
row_offsetrl  rY  rU  Úsample_scoresr@  s                   r\   Úsearch_matrix_offsetsz%LocalCollection.search_matrix_offsetsd  s   € ð ×6Ò6Ø%¨U¸6Èð 7ñ 
ô 
‰ˆˆZð ˆØˆàJÐJ½9ÀS¹>¼>ÐJÑJÔJˆå)2°:Ñ)>Ô)>ð 	Bð 	BÑ%ˆJ˜Ø -ð Bð B�Ø×"Ò" :Ñ.Ô.Ð.Ø×"Ò" <°´Ô#@ÑAÔAÐAÐAðBð
 ˆØ'ð 	+ð 	+ˆMØ&ð +ð +�Ø—’˜eœkÑ*Ô*Ð*Ð*ð+õ Ô0Ø#Ø#ØØð	
ñ 
ô 
ð 	
rq   c           	      ó   — |                       ||||¬¦  «        \  }}g }t          t          ||¦  «        ¦  «        D ]>\  }}	|	D ]6}
|                     t	          j        ||
j        |
j        ¬¦  «        ¦  «         Œ7Œ?t	          j        |¬¦  «        S )Nr'  )ÚaÚbr@  )Úpairs)	r+  r‚   rÄ   rÅ   ri  ÚSearchMatrixPairrÔ   r@  ÚSearchMatrixPairsResponse)r‹   r2  r3  r¯  r\  r†   r-  r5  Ú	sample_idr0  Úsample_scores              r\   Úsearch_matrix_pairsz#LocalCollection.search_matrix_pairs†  sÇ   € ð ×6Ò6Ø%¨U¸6Èð 7ñ 
ô 
‰ˆˆZð ˆÝ(,­S°°jÑ-AÔ-AÑ(BÔ(Bð 	ð 	Ñ$ˆI�}Ø -ð ð �Ø—’ÝÔ*Ø# |¤¸lÔ>Pðñ ô ñô ð ð ðõ Ô.Øð
ñ 
ô 
ð 	
rq   c                 ó  ‡— |�|nt           }t          j        |¬¦  «        }|€t          j        |g¬¦  «        }nbt	          |¦  «        }|j        €	|g|_        nCt          |j        t          ¦  «        r|j                             |¦  «         n|j        |g|_        |  	                    ||d|¦  «        }t          |¦  «        dk     rg g fS t          |d„ ¬¦  «        }d„ |D ¦   «         }	g }
t          |¦  «        D ]‡\  Š}ˆfd„t          |	¦  «        D ¦   «         }t          ||¦  «        }|j        }t          |t          ¦  «        r||         n|}|                      ||f||dd¬	¦  «        }|
                     |¦  «         Œˆ|	|
fS )
N)r/  ©ÚmustFr7  c                 ó   — | j         S r�   rz  r[   s    r\   r  z9LocalCollection._search_distance_matrix.<locals>.<lambda>·  s   € °´€ rq   rß  c                 ó   — g | ]	}|j         ‘Œ
S rs   rz  )rm   r¯  s     r\   rÑ   z;LocalCollection._search_distance_matrix.<locals>.<listcomp>¹  s   € Ð/Ð/Ð/˜VˆvŒyÐ/Ð/Ð/rq   c                 ó&   •— g | ]\  }}|‰k    ¯|‘ŒS rs   rs   )rm   r  rQ   Úsampled_id_indexs      €r\   rÑ   z;LocalCollection._search_distance_matrix.<locals>.<listcomp>¾  s(   ø€ ÐWÐWÐW¡V a¨ÀÐFVÒAVÐAV˜qÐAVÐAVÐAVrq   )rÞ   r2  r3  r  r  )r“   r   ÚHasVectorConditionÚFilterr
   r=  r�   r‚   rÅ   r²  r¸   rá  rÒ   r‹  r—   rµ   rZ  )r‹   r2  r3  r¯  r\  r  r/  Úsearch_filterÚsamplesr†   rU  ÚsampledÚids_to_includesÚsampling_filterÚsampled_vectorÚsearch_vectorÚsamples_scoresrA  s                    @r\   r+  z'LocalCollection._search_distance_matrix�  sÖ  ø€ ð */Ð):  Õ@SÐÝÔ.Ð:OÐPÑPÔPˆ
ØÐÝ"œM°
¨|Ð<Ñ<Ô<ˆMˆMå$ \Ñ2Ô2ˆMØÔ!Ð)Ø&0 \�Ô"Ð"Ý˜MÔ.µÑ5Ô5ð FØÔ"×)Ò)¨*Ñ5Ô5Ð5Ð5à&3Ô&8¸*Ð%E�Ô"Ø×'Ò'¨°¸uÐF[Ñ\Ô\ˆõ ˆw‰<Œ<˜!ÒÐØ�r�6ˆMõ ˜ n nÐ5Ñ5Ô5ˆà/Ð/ wÐ/Ñ/Ô/ˆØ*,ˆõ *3°7Ñ);Ô);ð 	*ð 	*Ñ%Ð˜gØWÐWÐWÐW­y¸©~¬~ÐWÑWÔWˆOÝ4°\À?ÑSÔSˆOØ$œ^ˆNõ ˜n­dÑ3Ô3ð$�Ð4Ô5Ð5à#ð ð
 "Ÿ[š[Ø3°]ÐCØ,ØØ"Ø"ð )ñ ô ˆNð �MŠM˜.Ñ)Ô)Ð)Ð)à�Fˆ{Ðrq   r   rÅ  c                 ó”  — t          | t          t          j        ¦  «        ¦  «        rž| |j        vrt          d| › d�¦  «        ‚|j        |          }||j        v r&|j        |         |                              ¦   «         }nB||j        v r|j        |         |         }n%|j	        |         |                              ¦   «         }|| fS | d fS rö  )
r�   r	   ri  rø  r†   râ   ry   r!  r|   r   )r   rÅ  r˜   rŸ   Útarget_vectors        r\   Ú_preprocess_vector_inputz(LocalCollection._preprocess_vector_inputÑ  sÖ   € õ �f�h¥u¤}Ñ5Ô5Ñ6Ô6ð 	)Ø˜Zœ^Ð+Ð+Ý Ð!Q¨&Ð!QÐ!QÐ!QÑRÔRÐRà”. Ô(ˆCØ˜jÔ0Ð0Ð0Ø *Ô 2°;Ô ?ÀÔ D× KÒ KÑ MÔ M��Ø 
Ô 9Ð9Ð9Ø *Ô 9¸+Ô FÀsÔ K��à *Ô 7¸Ô DÀSÔ I× PÒ PÑ RÔ R�à  &Ð(Ð(à�tˆ|Ðrq   r¡  c                 óB  — g }g }g }g }|D �]Â}g }	|j         |j        fD �]
}
t          |
t          t          j        ¦  «        ¦  «        rË|
|j        vrt          d|
› d�¦  «        ‚|j        |
         }||j        v r&|j        |         |          	                    ¦   «         }nB||j
        v r|j
        |         |         }n%|j        |         |          	                    ¦   «         }|	                     |¦  «         || k    r|                     |
¦  «         Œõ|	                     |
¦  «         �Œt          |	d         t          ¦  «        rMt          |	d         t          ¦  «        r2|                     t          |	d         |	d         ¬¦  «        ¦  «         �Œ‡t          |	d         t          ¦  «        �rt          |	d         t          ¦  «        r÷t          |	d         d         t           ¦  «        rSt          |	d         d         t           ¦  «        r2|                     t#          |	d         |	d         ¬¦  «        ¦  «         �Œ2t          |	d         d         t          ¦  «        rSt          |	d         d         t          ¦  «        r2|                     t%          |	d         |	d         ¬¦  «        ¦  «         �Œ¦t          d¦  «        ‚t          d¦  «        ‚t'          t)          |¦  «        t)          |¦  «        t)          |¦  «        g¦  «        dk    rt          d¦  «        ‚||||fS )Nr÷  rè   r   r›   )rž  rŸ  zMContext example pair must be of the same type: dense, sparse or multi vectorszIAll context example pairs must be either dense or sparse or multi vectors)rž  rŸ  r�   r	   ri  rø  r†   râ   ry   r!  r|   r   rÅ   r   rD   r‚   rQ  r   r1   Úsumrw   )r‹   r¡  rÅ  r˜   rü  Údense_context_vectorsÚsparse_context_vectorsÚmulti_context_vectorsÚpairÚpair_vectorsrù  rŸ   r—   s                r\   Ú_preprocess_contextz#LocalCollection._preprocess_contextå  sc  € ð
 ˆØ "ÐØ!#ÐØ "Ðàð +	ñ +	ˆDØˆLØ œM¨4¬=Ð9ð 1ñ 1�Ý˜g¥xµ´Ñ'>Ô'>Ñ?Ô?ð 1Ø j¤nÐ4Ð4Ý(Ð)Z°'Ð)ZÐ)ZÐ)ZÑ[Ô[Ð[à$œ.¨Ô1�CØ" jÔ&8Ð8Ð8Ø!+Ô!3°KÔ!@ÀÔ!E×!LÒ!LÑ!NÔ!N˜˜Ø$¨
Ô(AÐAÐAØ!+Ô!:¸;Ô!GÈÔ!L˜˜à!+Ô!8¸Ô!EÀcÔ!J×!QÒ!QÑ!SÔ!S˜à ×'Ò'¨Ñ/Ô/Ð/Ø! TÒ)Ð)Ø%×,Ò,¨WÑ5Ô5Ð5øà ×'Ò'¨Ñ0Ô0Ð0Ñ0å˜, qœ/­<Ñ8Ô8ð ½ZØ˜Q”¥ñ>ô >ð ð '×-Ò-Ý%¨|¸A¬ÈÐVWÌÐYÑYÔYñô ð ñ õ ˜L¨œO­TÑ2Ô2ñ µzÀ,ÈqÄ/ÕSWÑ7XÔ7Xð Ý˜l¨1œo¨aÔ0µ%Ñ8Ô8ð ½ZÈÐUVÌÐXYÔHZÕ\aÑ=bÔ=bð Ø)×0Ò0Ý#¨\¸!¬_À|ÐTUÄÐWÑWÔWñô ð ñ õ   ¨Q¤°Ô 2µDÑ9Ô9ð ½jÈÐVWÌÐYZÔI[Õ]aÑ>bÔ>bð Ø)×0Ò0Ý(°,¸q´/ÈLÐYZÌOÐ\Ñ\Ô\ñô ð ñ õ %Øgñô ð õ !Øcñô ð õ
 åÐ/Ñ0Ô0ÝÐ.Ñ/Ô/ÝÐ.Ñ/Ô/ðñô ð òð õ Ø[ñô ð ð %Ð&<Ð>SÐUbÐbÐbrq   c                 óP  — |€|st          d¦  «        ‚|�|n| }|�|nt          }|�|n|}	|                      |||	¦  «        \  }
}|�t          |¦  «        ng }|                      |||	¦  «        \  }}}}|�|| k    r|                     |¦  «         t          ||¦  «        }|
||||fS )NúNo target or context given)râ   r“   rN  r‚   rV  rÅ   r   )r‹   r   r¡  r2  r\  rð  rñ  rÅ  r  r˜   rM  Ú	target_idrQ  rR  rS  rü  s                   r\   Ú_preprocess_discoverz$LocalCollection._preprocess_discover+  s  € ð ˆ> 'ˆ>ÝÐ9Ñ:Ô:Ð:à/EÐ/QÐ+Ð+ÐW[ˆ
Ø).Ð):  Õ@SÐð 'Ð2ð $Ð#à&ð 	ð $(×#@Ò#@ÀÈÐU`Ñ#aÔ#aÑ ˆ�yØ#*Ð#6•$�w‘-”-�-¸Bˆð ×$Ò$ W¨j¸+ÑFÔFñ 	\ÐÐ5Ð7LÈmð Ð  Z°4Ò%7Ð%7Ø× Ò  Ñ+Ô+Ð+õ 3°<ÀÑOÔOˆð Ø!Ø"Ø!Øð
ð 	
rq   c           
      ó>  — |                       |||||	|
¦  «        \  }}}}}|�‡t          |t          ¦  «        r=t          |d         t          ¦  «        rt	          ||¦  «        }n‘t          ||¦  «        }n€t          |t          ¦  «        rt          ||¦  «        }nZt          d¦  «        ‚|€|rt          |¦  «        }n7|€|rt          |¦  «        }n#|€|rt          |¦  «        }nt          d¦  «        ‚|�|nt          }|                      ||f|||||||¬¦  «        S )Nr   zUnsupported target vector typerX  r�  )rZ  r�   r‚   rQ  r   r/   r   rF   râ   r   rE   r0   r“   rZ  )r‹   r   r¡  r2  r3  r4  r  r  r\  rð  rñ  r5  r½   rM  rQ  rR  rS  r!  rÞ   r  s                       r\   r¬  zLocalCollection.discoverZ  su  € ð* ×%Ò%ØØØØØ"Ø#ñ
ô 
ñ	
ØØ!Ø"Ø!Øð Ð$Ý˜-­Ñ.Ô.ð CÝ˜m¨AÔ.µÑ6Ô6ð ]Ý#1°-ÐAVÑ#WÔ#W�L�Lå#6°}ÐF[Ñ#\Ô#\�L�LÝ˜M­<Ñ8Ô8ð CÝ3°MÐCYÑZÔZ��å Ð!AÑBÔBÐBð Ð"Ð'<Ð"Ý'Ð(=Ñ>Ô>ˆLˆLØÐ"Ð'=Ð"Ý-Ð.DÑEÔEˆLˆLØÐ"Ð'<Ð"Ý,Ð-BÑCÔCˆLˆLåÐ9Ñ:Ô:Ð:à).Ð):  Õ@SÐØ�{Š{Ø/°Ð>Ø,ØØØ%Ø%Ø+Ø!ð ñ 	
ô 	
ð 		
rq   rX  c                 ó¤   — t          |t          ¦  «        r|dfS t          |t          ¦  «        rd|fS t          dt	          |¦  «        › �¦  «        ‚)Nr   rP   zIncompatible point id type: )r�   r¿  rœ   rL  rã   )r¯   rX  s     r\   Ú_universal_idzLocalCollection._universal_idœ  sW   € å�h¥Ñ$Ô$ð 	 Ø˜Q�;ÐÝ˜¥#Ñ&Ô&ð 	 Ø�x�<ÐÝÐGµt¸H±~´~ÐGÐGÑHÔHÐHrq   r•  r¢  c                 óÈ   — t          | j        ¦  «        dk    rg d fS |€|                      |||||¬¦  «        S |�t          d¦  «        ‚|                      |||||¬¦  «        S )Nr   )r•  r3  r4  r  r  zGOffset is not supported in conjunction with `order_by` scroll parameter)r¢  r•  r3  r  r  )r¸   r†   Ú_scroll_by_idrâ   Ú_scroll_by_value)r‹   r•  r3  r¢  r4  r  r  s          r\   r¥  zLocalCollection.scroll¤  s�   € õ ˆtŒx‰=Œ=˜AÒÐØ�t�8ˆOàÐà×%Ò%Ø+ØØØ)Ø)ð &ñ ô ð ð ÐÝØYñô ð ð ×$Ò$ØØ'ØØ%Ø%ð %ñ 
ô 
ð 	
rq   Úcount_filterc                 óz   — |                       |¦  «        }t          j        t          j        |¦  «        ¬¦  «        S )N)rÜ  )rÂ   r   ÚCountResultrh   rÃ   )r‹   ra  r±   s      r\   rÜ  zLocalCollection.countÈ  s4   € Ø×1Ò1°,Ñ?Ô?ˆåÔ!­Ô(8¸Ñ(>Ô(>Ð?Ñ?Ô?Ð?rq   c                 ó8  ‡ — t          ‰ j                             ¦   «         ˆ fd„¬¦  «        }g }‰                      |¦  «        }|D ]§\  }	}
|�-‰                      |	¦  «        ‰                      |¦  «        k     rŒ4t          |¦  «        |dz   k    r n\||
         sŒU|                     t          j        |	‰  	                    |
|¦  «        ‰  
                    |
|¦  «        ¬¦  «        ¦  «         Œ¨t          |¦  «        |k    r|d |…         ||         j        fS |d fS )Nc                 ó:   •— ‰                      | d         ¦  «        S ©Nr   )r]  )rQ   r‹   s    €r\   r  z/LocalCollection._scroll_by_id.<locals>.<lambda>Õ  s   ø€ ¸D×<NÒ<NÈqÐQRÌtÑ<TÔ<T€ rq   rß  r›   rî  )rá  r†   r}   rÂ   r]  r¸   rÅ   r   rï  r  r(  rÔ   )r‹   r•  r3  r4  r  r  Ú
sorted_idsrR  r±   rX  rŸ   s   `          r\   r_  zLocalCollection._scroll_by_idÍ  s@  ø€ õ ˜DœHŸNšNÑ,Ô,Ð2TÐ2TÐ2TÐ2TÐUÑUÔUˆ
à%'ˆà×1Ò1°-Ñ@Ô@ˆà'ð 	ð 	‰MˆH�cØÐ! d×&8Ò&8¸Ñ&BÔ&BÀT×EWÒEWÐX^ÑE_ÔE_Ò&_Ð&_Øå�6‰{Œ{˜e a™iÒ'Ð'Ø�à˜”9ð Øà�MŠMÝ”ØØ ×-Ò-¨c°<Ñ@Ô@Ø×,Ò,¨S°,Ñ?Ô?ðñ ô ñô ð ð õ ˆv‰;Œ;˜ÒÐØ˜&˜5˜&”> 6¨%¤=Ô#3Ð3Ð3à˜4�<Ðrq   c                 óN  — t          |t          j        ¦  «        rt          j        |¦  «        }t          |t
          ¦  «        rt          j        |¬¦  «        }g }| j                             ¦   «         D ]V\  }}t          | j
        |         |j        ¦  «        }	|	€Œ(|	D ]+}
t          |
¦  «        }|�|                     |||f¦  «         Œ,ŒW|j        �|j        nt          j        j        }|t          j        j        k    }|                     d„ |¬¦  «         |                      |¦  «        }g }t          |j        ¦  «        }t+          ¦   «         }|D ]Ð\  }
}}|�9|t          j        j        k    r|
|k     rŒ$n|t          j        j        k    r|
|k    rŒAt-          |¦  «        |k    r n{||         sŒ_|
|f|v rŒf|                     |
|f¦  «         |                     t          j        ||                      ||¦  «        |                      ||¦  «        |
¬¦  «        ¦  «         ŒÑ|d fS )Nrß  c                 ó   — | d         S rf  rs   r[   s    r\   r  z2LocalCollection._scroll_by_value.<locals>.<lambda>  s
   € ¨¨1¬€ rq   ©rë   Úreverse)rÔ   r€   r—   Úorder_value)r�   r   ÚOrderByr   Úconvert_order_byr¿  r   r†   r}   r=   r€   rë   r:   rÅ   Ú	directionÚ	DirectionÚASCÚDESCÚsortrÂ   Ú
start_fromr‰  r¸   rŠ  rï  r  r(  )r‹   r¢  r•  r3  r  r  Úvalue_and_idsÚexternal_idr»   Úpayload_valuesrÊ   Úordering_valuero  Úshould_reverser±   rR  rt  Úseen_tupless                     r\   r`  z LocalCollection._scroll_by_valueò  sq  € õ �h¥¤Ñ-Ô-ð 	=Ý!Ô2°8Ñ<Ô<ˆHÝ�h¥Ñ$Ô$ð 	4Ý”~¨(Ð3Ñ3Ô3ˆHàGIˆà(,¬¯ªÑ(8Ô(8ð 
	Uð 
	UÑ$ˆK˜å)¨$¬,°{Ô*CÀXÄ\ÑRÔRˆNØÐ%Øð (ð Uð U�Ý!/°Ñ!6Ô!6�Ø!Ð-Ø!×(Ò(¨.¸+À{Ð)SÑTÔTÐTøðUð
 +3Ô*<Ð*H�HÔ&Ð&ÍfÔN^ÔNbˆ	à"¥fÔ&6Ô&;Ò;ˆð 	×Ò˜~˜~°~ÐÑFÔFÐFà×1Ò1°-Ñ@Ô@ˆà%'ˆå# HÔ$7Ñ8Ô8ˆ
õ @C¹u¼uˆà/<ð 	ð 	Ñ+ˆE�; ØÐ%Ø¥Ô 0Ô 4Ò4Ð4Ø˜zÒ)Ð)Ø ð *à¥&Ô"2Ô"7Ò7Ð7Ø˜zÒ)Ð)Ø å�6‰{Œ{˜eÒ#Ð#Ø�à˜Ô$ð Øà�{Ð# {Ð2Ð2Øà�OŠO˜U KÐ0Ñ1Ô1Ð1à�MŠMÝ”Ø"Ø ×-Ò-¨k¸<ÑHÔHØ×,Ò,¨[¸,ÑGÔGØ %ð	ñ ô ñô ð ð ð �tˆ|Ðrq   c                 óð  — |                       |¦  «        }t          j                             t	          | j        ¦  «        ¦  «        }t          j        |¦  «        }g }|D ]–}	t	          |¦  «        |k    r n€||	         sŒ | j        |	         }
t          t          j
        |
t          d¦  «        d|                      |	|¦  «        |                      |	|¦  «        ¬¦  «        }|                     |¦  «         Œ—|S )Nç      ð?r   r?  )rÂ   rh   ÚrandomÚrandr¸   r†   rO  r‡   r   r   r   rQ  r  r(  rÅ   )r‹   r3  r2  r  r  r±   Úrandom_scoresÚrandom_orderrR  rŸ   rX  rY  s               r\   r²  z LocalCollection._sample_randomly<  sñ   € ð ×1Ò1°,Ñ?Ô?ˆåœ	Ÿš¥s¨4¬8¡}¤}Ñ5Ô5ˆÝ”z -Ñ0Ô0ˆà*,ˆØð 	(ð 	(ˆCÝ�6‰{Œ{˜eÒ#Ð#Ø�à˜”9ð Øà”| CÔ(ˆHå$ÝÔ"ØÝ˜C‘j”jØØ×)Ò)¨#¨|Ñ<Ô<Ø×(Ò(¨¨lÑ;Ô;ðñ ô ˆLð �MŠM˜,Ñ'Ô'Ð'Ð'àˆrq   rœ  c           
      óÎ   — |j         �|j         n|}|pt          }|                      ||f||||||	|
¬¦  «        }|j        �|j        nd}d|z
  }|                      |||||¦  «        S )Nr�  r¬   r|  )Úcandidates_limitr“   rZ  Ú	diversityÚ_mmr)r‹   rÞ   rœ  r\  r2  r3  r4  r  r  r5  r½   Úsearch_limitÚsearch_resultsrƒ  Úlambda_s                  r\   r§  z LocalCollection._search_with_mmr_  s‘   € ð 03Ô/CÐ/O�sÔ+Ð+ÐUZˆØÐ,Õ,ˆØŸšØ Ð.Ø%ØØØ%Ø%Ø+Ø!ð %ñ 	
ô 	
ˆð &)¤]Ð%>�C”M�MÀCˆ	Ø˜	‘/ˆà�yŠy˜¨°u¸gÀuÑMÔMÐMrq   r†  r‡  c                 ó	  ‡— |dk     s|dk    rt          d¦  «        ‚|sg S i }g }g }g }	|D ]™}
| j        |
j                 }|                      ||g¦  «        }t	          |t
          ¦  «        r|                     |¦  «        }|                     |¦  «         |                     |
j        ¦  «         |	                     |
¦  «         Œši }d„ |D ¦   «         Š|| j        vr|  	                    |¦  «        j
        nd }t	          |t          ¦  «        st          j        |¦  «        nt          |¦  «        }t          ||¦  «        D �]\  }}t	          |t           ¦  «        rÁt	          |d         t"          ¦  «        r¦t          j        |¦  «        }t	          |t          j        ¦  «        st          j        |¦  «        }t'          |||¦  «                             ¦   «         }t'          ||t          j        d d …f         |¦  «                             ¦   «         d         ||<   nøt	          |t          ¦  «        rSt-          ||d¬¦  «                             ¦   «         }t-          ||gd¬¦  «                             ¦   «         d         ||<   n�t          j        |¦  «        }t	          |d         t          j        ¦  «        sd„ |D ¦   «         }t/          |||¦  «                             ¦   «         }t/          ||g|¦  «                             ¦   «         d         ||<   t1          t3          |¦  «        ¦  «        D ]}||         ||||         f<   Œ�Œ|d         g}|d	d …         }t3          |¦  «        |k     �rt3          |¦  «        dk    róg }|D ]`}||         }g }|D ]}|                     |||f         ¦  «         Œ t5          |¦  «        }||z  d|z
  |z  z
  }|                     |¦  «         Œat7          d
„ |D ¦   «         ¦  «        rntt          j        |¦  «                             ¦   «         }|                     |                     |¦  «        ¦  «         t3          |¦  «        |k     rt3          |¦  «        dk    °óˆfd„|D ¦   «         S )Nç        r|  z&MMR lambda must be between 0.0 and 1.0c                 ó   — i | ]
}|j         |“ŒS rs   rz  r{  s     r\   rp   z(LocalCollection._mmr.<locals>.<dictcomp>¡  s   € ÐCÐCÐC¨5�u”x ÐCÐCÐCrq   r   T)Úempty_is_zeroc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rs   rÏ   )rm   Úmultivecs     r\   rÑ   z(LocalCollection._mmr.<locals>.<listcomp>Å  s"   € Ð(^Ð(^Ð(^À­¬°(Ñ);Ô);Ð(^Ð(^Ð(^rq   r›   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rs   )rh   Úisneginf)rm   Úsims     r\   rÑ   z(LocalCollection._mmr.<locals>.<listcomp>å  s"   € Ð8Ð8Ð8 c•”˜SÑ!Ô!Ð8Ð8Ð8rq   c                 ó    •— g | ]
}‰|         ‘ŒS rs   rs   )rm   Úcandidate_idÚid_to_points     €r\   rÑ   z(LocalCollection._mmr.<locals>.<listcomp>ë  s   ø€ ÐGÐGÐG¨l�˜LÔ)ÐGÐGÐGrq   )râ   r†   rÔ   r(  r�   rµ   rÁ   rÅ   r|   ré   rG  r   rh   rÐ   rB   rÄ   r‚   rQ  rá   r(   r!  ÚnewaxisrI   r7   Úranger¸   Úmaxr÷   ÚargmaxÚitemÚpop)r‹   r†  rÞ   r\  r‡  r3  Úcandidate_distance_matrixÚcandidate_vectorsÚcandidate_idsÚ
candidatesr×   rŸ   Úcandidate_vectorÚquery_raw_similaritiesrG  r’  Úcandidate_vector_npÚnearest_candidatesr  ÚselectedÚpendingÚ
mmr_scoresÚ
pending_idÚrelevance_scoreÚsimilarities_to_selectedÚselected_idÚmax_similarity_to_selectedÚ	mmr_scoreÚbest_candidate_indexr“  s                                @r\   r„  zLocalCollection._mmr~  s:  ø€ ð �SŠ=ˆ=˜G cšM˜MÝÐEÑFÔFÐFàð 	ØˆIð
 ð 	"ð ÐØˆØ/1ˆ
ð $ð 	%ð 	%ˆEØ”(˜5œ8Ô$ˆCØ#×0Ò0°°u°gÑ>Ô>ÐÝÐ*­DÑ1Ô1ð ?Ø#3×#7Ò#7¸Ñ#>Ô#>Ð à×$Ò$Ð%5Ñ6Ô6Ð6Ø× Ò  ¤Ñ*Ô*Ð*Ø×Ò˜eÑ$Ô$Ð$Ð$àFHÐØCÐC°NÐCÑCÔCˆð 7<À4ÔCVÐ6VÐ6VˆD×"Ò" 5Ñ)Ô)Ô2Ð2Ð\`ð 	õ
 ˜l­LÑ9Ô9ð2�BŒH�\Ñ"Ô"Ð"å# LÑ1Ô1ð 	õ /2°-ÐARÑ.SÔ.Sð $	dñ $	dÑ*ˆLÐ*ÝÐ*­DÑ1Ô1ð  µjÐAQÐRSÔATÕV[Ñ6\Ô6\ð  Ý&(¤hÐ/?Ñ&@Ô&@Ð#Ý!Ð"3µR´ZÑ@Ô@ð DÝ(*¬Ð1BÑ(CÔ(CÐ%Ý%<Ø'Ð):¸Hñ&ô &ç’&‘(”(ð #õ 8OØ Ð"5µb´jÀ!À!À!°mÔ"DÀhñ8ô 8ç’&‘(”(˜1ô8Ð& |Ñ4Ð4õ Ð,­lÑ;Ô;ð Ý%>Ø$Ø%Ø"&ð&ñ &ô &÷ ’&‘(”(ð	 #õ
 8QØ Ø%Ð&Ø"&ð8ñ 8ô 8÷ ’&‘(”(˜1ô	8Ð& |Ñ4Ð4õ ')¤hÐ/?Ñ&@Ô&@Ð#Ý!Ð"3°AÔ"6½¼
ÑCÔCð _Ø(^Ð(^ÐL]Ð(^Ñ(^Ô(^Ð%Ý%BØ'Ø%Øñ&ô &÷ ’&‘(”(ð	 #õ
 8UØ Ð#6Ð"7¸ñ8ô 8ç’&‘(”(˜1ô8Ð& |Ñ4õ �3˜}Ñ-Ô-Ñ.Ô.ð dð d�ØN`ÐabÔNcÐ)¨<¸ÀqÔ9IÐ*JÑKÐKñdð " !Ô$Ð%ˆØ   Ô#ˆÝ�(‰mŒm˜eÒ#Ñ#­¨G©¬°qÒ(8Ð(8ØˆJà%ð -ð -�
Ø"8¸Ô"D�Ø+-Ð(Ø#+ð ð �KØ,×3Ò3Ø1°:¸{Ð2KÔLñô ð ð õ .1Ð1IÑ-JÔ-JÐ*à˜oÑ-°°w±ÐB\Ñ0\Ñ\ð ð ×!Ò! )Ñ,Ô,Ð,Ð,åØ8Ð8¨ZÐ8Ñ8Ô8ñô ð ð Ý#%¤9¨ZÑ#8Ô#8×#=Ò#=Ñ#?Ô#?Ð Ø�OŠO˜GŸKšKÐ(<Ñ=Ô=Ñ>Ô>Ð>õ+ �(‰mŒm˜eÒ#Ð#­¨G©¬°qÒ(8Ð(8ð. HÐGÐGÐG¸hÐGÑGÔGÐGrq   r|  c                 óV  — d„ |D ¦   «         }|j         pi }t          ¦   «         }|D ]!}	|	D ]}
|                     |
j        ¦  «         ŒŒ"g }|D �];}| j        |         }|                      |d¦  «        pi }|                      |¦  «        }t          |j        |||||¬¦  «        }t          j
        ¦   «         5  t          j        d¦  «         t          j        |¦  «        }t          j        |¦  «        st          |› d|› �¦  «         d d d ¦  «         n# 1 swxY w Y   t!          t"          j        |t'          |¦  «        d|                      ||¦  «        |                      ||¦  «        ¬¦  «        }
|                     |
¦  «         �Œ=|                     d„ d¬	¦  «         |d |…         S )
Nc                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c              3   ó2   K  — | ]}|j         |j        fV — Œd S r�   )rÔ   r@  r{  s     r\   ró   zCLocalCollection._rescore_with_formula.<locals>.<listcomp>.<genexpr>÷  s+   è è € Ð?Ð?¨U�%”(˜EœKÐ(Ð?Ð?Ð?Ð?Ð?Ð?rq   )rµ   )rm   r[  s     r\   rÑ   z9LocalCollection._rescore_with_formula.<locals>.<listcomp>ö  s<   € ð 
ð 
ð 
ØDL�DÐ?Ð?°hÐ?Ñ?Ô?Ñ?Ô?ð
ð 
ð 
rq   T)Ú
expressionrX  rU  r€   r/  ÚdefaultsÚignorez
 as f32 = r   r?  c                 ó   — | j         S r�   rx  r[   s    r\   r  z7LocalCollection._rescore_with_formula.<locals>.<lambda>	  s   €  A¤G€ rq   rj  )r°  r‰  rŠ  rÔ   r†   r  r0  r   ÚformulaÚwarningsÚcatch_warningsÚsimplefilterrh   rk   Úisfiniter   r   r   r   rQ  r(  rÅ   rs  )r‹   rä   r|  r3  r  r  Úprefetches_scoresr°  Úpoints_to_rescorer[  r×   r�  rX  r»   r€   r/  r@  Ú	score_f32s                     r\   rˆ  z%LocalCollection._rescore_with_formulaí  sE  € ð
ð 
ØPbð
ñ 
ô 
Ðð ”>Ð' Rˆå9<¹¼ÐØ*ð 	0ð 	0ˆHØ!ð 0ð 0�Ø!×%Ò% e¤hÑ/Ô/Ð/Ð/ð0ð .0ˆØ)ð 	#ñ 	#ˆHØœ( 8Ô,ˆKØ×'Ò'¨°TÑ:Ô:Ð@¸bˆGØ×3Ò3°KÑ@Ô@ˆJÝ'Ø œ=Ø!Ø(ØØ%Ø!ðñ ô ˆEõ Ô(Ñ*Ô*ð Lð LÝÔ% hÑ/Ô/Ð/ÝœJ uÑ-Ô-�	Ý”{ 9Ñ-Ô-ð LÝ*¨eÐ+JÐ+J¸yÐ+JÐ+JÑKÔKÐKð	Lð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lõ
 ÝÔ"ØÝ˜IÑ&Ô&ØØ×)Ò)¨+°|ÑDÔDØ×(Ò(¨°lÑCÔCðñ ô ˆEð �OŠO˜EÑ"Ô"Ð"Ñ"à�ŠÐ+Ð+°TˆÑ:Ô:Ð:à˜˜˜ÔÐs   Â6ADÄD	ÄD	r¤  c
           
      ó–  — |�|nt           }
|                      |j        | |
¦  «        \  }}g }|�|                     |¦  «         g }|j        D ]a}|                      |j        | |
¦  «        \  }}|�|                     |¦  «         |                     t          ||j        ¬¦  «        ¦  «         Œbt          ||¦  «        }|j	        }t          |t          j        ¦  «        rY|j        }t          |j        |j        |j        ¬¦  «        }t%          |||¬¦  «        }|                      |
|f|||||||	¬¦  «        S t)          d|› �¦  «        ‚)N)r—   r@  )r3  r4  Úc)r   ÚfeedbackÚcoefficientsr�  zUnsupported feedback strategy: )r“   rN  r   rÅ   r½  rù  ÚDistFeedbackItemr@  r   rH  r�   r   ÚNaiveFeedbackStrategyÚnaiver,   r3  r4  r¼  r*   rZ  râ   )r‹   r¤  r\  r2  r3  r4  r  r  r5  r½   r˜   rM  rY  rü  Úfeedback_itemsr˜  Úexample_vectorÚ
example_idrH  ro   r¾  Únaive_querys                         r\   r´  z#LocalCollection._relevance_feedback#	  s—  € ð  %Ð0�e�eÕ6Iˆà#'×#@Ò#@ØÔ% t¨[ñ$
ô $
Ñ ˆ�yð 02ˆØÐ Ø× Ò  Ñ+Ô+Ð+à13ˆØ&Ô/ð 	]ð 	]ˆDØ)-×)FÒ)FØ”˜d Kñ*ô *Ñ&ˆN˜Jð Ð%Ø×$Ò$ ZÑ0Ô0Ð0Ø×!Ò!Õ"2¸.ÐPTÔPZÐ"[Ñ"[Ô"[Ñ\Ô\Ð\Ð\å2°<ÀÑOÔOˆà%Ô.ˆÝ�h¥Ô <Ñ=Ô=ð 	KØ”^ˆFÝ4°v´xÀ6Ä8ÈvÌxÐXÑXÔXˆLÝ,Ø$Ø'Ø)ðñ ô ˆKð
 —;’;Ø)¨;Ð7Ø)ØØØ)Ø)Ø /Ø%ð ñ 	ô 	ð 	õ ÐI¸xÐIÐIÑJÔJÐJrq   r×   c                 ó^  — t          |j        t          j        ¦  «        rt	          |j        ¦  «        |_        | j        |j                 }t          |j        �t          |j        ¦  «        ni ¦  «        | j        |<   t          |j	        t          ¦  «        rt          |j	        i}n|j	        }| j                             ¦   «         D ]ï\  }}|                     |¦  «        }|�Ã|                      |¦  «        }t!          j        |¦  «                             ¦   «         r
J d¦   «         ‚|j        t(          j        j        k    rCt           j                             |¦  «        }|t2          k    rt!          j        |¦  «        |z  n|}|| j        |         |<   d| j        |         |<   Œßd| j        |         |<   Œð| j                             ¦   «         D ]¡\  }}|                     |¦  «        }| j        |         |         }	|	s)| j        |         |         }
|                      |
|¦  «         |�7|| j        |         |<   d| j        |         |<   |                      ||¦  «         Œ‘d| j        |         |<   Œ¢| j                             ¦   «         D �]\  }}|                     |¦  «        }|�ê|                      |¦  «        }t!          j        |¦  «                             ¦   «         r
J d¦   «         ‚|j        t(          j        j        k    rWt           j                             |d¬¦  «        d d …t           j         f         }|t!          j!        |dk    |t2          ¦  «        z  }t!          j        |¦  «        | j        |         |<   d| j        |         |<   �Œd| j        |         |<   �Œd| j"        |<   d S )NúVector contains NaN valuesr   r›   r>  r  r‰  )#r�   rÔ   rê  rë  r¿  r†   r
   r€   r   r—   r‚   r“   ry   r}   rÁ   ré   rh   Úisnanr  rG  r   r   ÚCOSINEÚlinalgÚnormÚEPSILONrÐ   r…   r|   r¢   r    r   r”  Úwherer�   )r‹   r×   rŸ   ry   r˜   Ú_named_vectorsr—   ro   rË  Úwas_deletedÚprevious_vectorÚ_named_vectorÚvector_norms                r\   Ú_update_pointzLocalCollection._update_pointZ	  sƒ  € Ý�e”h¥¤	Ñ*Ô*ð 	%Ý˜5œ8‘}”}ˆEŒHØŒh�u”xÔ ˆÝ$Ø16´Ð1JÕ˜uœ}Ñ-Ô-Ð-ÐPRñ
ô 
ˆŒ�SÑõ �e”l¥DÑ)Ô)ð 	#Ý*¨E¬LÐ9ˆGˆGà”lˆGð ,0¬<×+=Ò+=Ñ+?Ô+?ð 	>ð 	>Ñ'ˆK˜Ø—[’[ Ñ-Ô-ˆFØÐ!Ø×/Ò/°Ñ<Ô<�Ýœ8 FÑ+Ô+×/Ò/Ñ1Ô1ÐOÐOÐ3OÑOÔOÐ1Ø”?¥f¤oÔ&<Ò<Ð<Ýœ9Ÿ>š>¨&Ñ1Ô1�DØ8<½wº¸�RœX fÑ-Ô-°Ñ4Ð4ÈF�FØ17�”˜[Ô)¨#Ñ.Ø<=�Ô'¨Ô4°SÑ9Ð9à<=�Ô'¨Ô4°SÑ9Ð9ð ,0Ô+>×+DÒ+DÑ+FÔ+Fð 	>ð 	>Ñ'ˆK˜Ø—[’[ Ñ-Ô-ˆFØÔ1°+Ô>¸sÔCˆKØð FØ"&Ô"5°kÔ"BÀ3Ô"G�Ø×'Ò'¨¸ÑEÔEÐEàÐ!Ø8>�Ô# KÔ0°Ñ5Ø<=�Ô'¨Ô4°SÑ9Ø×'Ò'¨°Ñ<Ô<Ð<Ð<à<=�Ô'¨Ô4°SÑ9Ð9ð +/Ô*;×*AÒ*AÑ*CÔ*Cð 	>ñ 	>Ñ&ˆK˜Ø—[’[ Ñ-Ô-ˆFØÐ!Ø×/Ò/°Ñ<Ô<�Ýœ8 FÑ+Ô+×/Ò/Ñ1Ô1ÐOÐOÐ3OÑOÔOÐ1à”?¥f¤oÔ&<Ò<Ð<Ý"$¤)§.¢.°¸b .Ñ"AÔ"AÀ!À!À!ÅRÄZÀ-Ô"P�KØ�bœh {°cÒ'9¸;ÍÑPÔPÑP�FÝ68´h¸vÑ6FÔ6F�Ô! +Ô.¨sÑ3Ø<=�Ô'¨Ô4°SÑ9Ñ9à<=�Ô'¨Ô4°SÑ9Ñ9àˆŒ�SÑÐÐrq   c                 óÔ  — t          | j        ¦  «        }t          |j        t          j        ¦  «        rt          |j        ¦  «        |_        || j        |j        <   | j                             |j        ¦  «         | j	                             t          |j	        �t          |j	        ¦  «        ni ¦  «        ¦  «         t          | j	        ¦  «        t          | j        ¦  «        k    s
J d¦   «         ‚t          j        | j        d¦  «        | _        t          |j        t          ¦  «        rt           |j        i}n|j        }| j                             ¦   «         D �]Š\  }}|                     |¦  «        }|j        d         |k    r(t          j        ||dz  dz   |j        d         f¦  «        }|€Mt          j        |j        d         ¦  «        }|||<   t          j        | j        |         d¦  «        | j        |<   nÝt          j        |t          j        ¬¦  «        }t          j        |¦  «                             ¦   «         r
J d¦   «         ‚|                      |¦  «        }	|	j        t<          j        j         k    r1t          j!         "                    |¦  «        }
|
tF          k    r||
z  n|}|||<   t          j        | j        |         d¦  «        | j        |<   || j        |<   �ŒŒ| j$                             ¦   «         D �]\  }}|                     |¦  «        }t          |¦  «        |k    rH|t          |¦  «        z
  dz   }tK          |¦  «        D ]#}|                     tM          ¦   «         ¦  «         Œ$|€<tM          ¦   «         }|||<   t          j        | j        |         d¦  «        | j        |<   nC|||<   |  '                    ||¦  «         t          j        | j        |         d¦  «        | j        |<   || j$        |<   �Œ| j(                             ¦   «         D �]Ì\  }}|                     |¦  «        }t          |¦  «        |k    rN|t          |¦  «        z
  dz   }tK          |¦  «        D ])}|                     t          j        g ¦  «        ¦  «         Œ*|€At          j        g ¦  «        ||<   t          j        | j        |         d¦  «        | j        |<   �nt          j        |t          j        ¬¦  «        }t          j        |¦  «                             ¦   «         r
J d¦   «         ‚|                      |¦  «        }	|	j        t<          j        j         k    rWt          j!         "                    |d¬¦  «        d d …t          j)        f         }|t          j*        |d	k    |tF          ¦  «        z  }|||<   t          j        | j        |         d¦  «        | j        |<   || j(        |<   �ŒÎd S )
Nz)Payload and ids_inv must be the same sizer   r7  r›   rf   rÇ  r>  r  r‰  )+r¸   r†   r�   rÔ   rê  rë  r¿  r‡   rÅ   r€   r
   r   rh   r�   r—   r‚   r“   ry   r}   rÁ   rF  ÚresizerÕ   r…   rÐ   rk   rÈ  r  ré   rG  r   r   rÉ  rÊ  rË  rÌ  r|   r•  rA   r    r   r”  rÍ  )r‹   r×   rŸ   ry   r˜   rÝ   r—   Úfake_vectorÚ	vector_npro   rË  Údiffr¶  rÒ  s                 r\   Ú
_add_pointzLocalCollection._add_point•	  s“  € Ý�$”(‰mŒmˆÝ�e”h¥¤	Ñ*Ô*ð 	%Ý˜5œ8‘}”}ˆEŒHà ˆŒ�”ÑØŒ×Ò˜EœHÑ%Ô%Ð%àŒ×ÒÝ¸%¼-Ð:SÕ'¨¬Ñ6Ô6Ð6ÐY[Ñ\Ô\ñ	
ô 	
ð 	
õ �4”<Ñ Ô ¥C¨¬Ñ$5Ô$5Ò5Ð5Ð5Ð7bÑ5Ô5Ð5Ý”y ¤¨qÑ1Ô1ˆŒå�e”l¥DÑ)Ô)ð 	#Ý*¨E¬LÐ9ˆGˆGà”lˆGð +/¬,×*<Ò*<Ñ*>Ô*>ð 	6ñ 	6Ñ&ˆK˜Ø—[’[ Ñ-Ô-ˆFàÔ" 1Ô%¨Ò,Ð,Ý "¤	¨-¸#À¹'ÀA¹+À}ÔGZÐ[\ÔG]Ð9^Ñ _Ô _�àˆ~å œg mÔ&9¸!Ô&<Ñ=Ô=�Ø%0�˜cÑ"Ý79´yØÔ+¨KÔ8¸!ñ8ô 8�Ô'¨Ñ4Ð4õ œH Vµ2´:Ð>Ñ>Ô>�	Ýœ8 IÑ.Ô.×2Ò2Ñ4Ô4ÐRÐRÐ6RÑRÔRÐ4Ø×/Ò/°Ñ<Ô<�Ø”?¥f¤oÔ&<Ò<Ð<Ýœ9Ÿ>š>¨)Ñ4Ô4�DØ48½7²N°N 	¨DÑ 0Ð 0È	�IØ%.�˜cÑ"Ý79´yØÔ+¨KÔ8¸!ñ8ô 8�Ô'¨Ñ4ð )6ˆDŒL˜Ñ%Ñ%ð +/Ô*=×*CÒ*CÑ*EÔ*Eð 	=ñ 	=Ñ&ˆK˜Ø—[’[ Ñ-Ô-ˆFÝ�=Ñ!Ô! SÒ(Ð(Ø�S Ñ/Ô/Ñ/°!Ñ3�Ý˜t™œð @ð @�AØ!×(Ò(Õ)<Ñ)>Ô)>Ñ?Ô?Ð?Ð?àˆ~å1Ñ3Ô3�Ø%0�˜cÑ"Ý79´yØÔ+¨KÔ8¸!ñ8ô 8�Ô'¨Ñ4Ð4ð &,�˜cÑ"Ø×'Ò'¨°Ñ<Ô<Ð<Ý79´yØÔ+¨KÔ8¸!ñ8ô 8�Ô'¨Ñ4ð 0=ˆDÔ Ñ,Ñ,ð +/Ô*;×*AÒ*AÑ*CÔ*Cð 	;ñ 	;Ñ&ˆK˜Ø—[’[ Ñ-Ô-ˆFÝ�=Ñ!Ô! SÒ(Ð(Ø�S Ñ/Ô/Ñ/°!Ñ3�Ý˜t™œð 7ð 7�AØ!×(Ò(­¬°"©¬Ñ6Ô6Ð6Ð6àˆ~å%'¤X¨b¡\¤\�˜cÑ"Ý79´yØÔ+¨KÔ8¸!ñ8ô 8�Ô'¨Ñ4Ñ4õ œH Vµ2´:Ð>Ñ>Ô>�	Ýœ8 IÑ.Ô.×2Ò2Ñ4Ô4ÐRÐRÐ6RÑRÔRÐ4Ø×/Ò/°Ñ<Ô<�Ø”?¥f¤oÔ&<Ò<Ð<Ý"$¤)§.¢.°À .Ñ"DÔ"DÀQÀQÀQÍÌ
À]Ô"S�KØ¥¤¨+¸Ò*<¸kÍ7Ñ!SÔ!SÑS�IØ%.�˜cÑ"Ý79´yØÔ+¨KÔ8¸!ñ8ô 8�Ô'¨Ñ4ð .;ˆDÔ˜kÑ*Ñ*ð3	;ð 	;rq   Úupdate_filterÚupdate_modec                 óª  — t          |j        t          ¦  «        rF	 t          j        |j        ¦  «        }n+# t
          $ r}t          d|j        › d�¦  «        |‚d }~ww xY wt          |j        t          ¦  «        r�i }|j                             ¦   «         D ]V\  }}|| j	        vrt          d|› �¦  «        ‚t          |t          ¦  «        r!t          |¦  «         t          |¦  «        ||<   ŒW|j                             |¦  «         n�t          | j                             ¦   «         ¦  «        }	t          | j                             ¦   «         ¦  «        }
|	r|	dgk    s	|
r|
dgk    rt          d|	› d|
› �¦  «        ‚| j        s| j        st          d¦  «        ‚t          |j        t          j        ¦  «        rt          |j        ¦  «        |_        |j        | j        v r¦|t&          j        j        k    rd S | j        |j                 }| j        |         sZ|�Xi }| j                             ¦   «         D ]\  }}||         sd||<   Œt1          || j        |         | j        |         |¦  «        sd S |                      |¦  «         n,|t&          j        j        k    rd S |                      |¦  «         | j        �| j                             |¦  «         d S d S )	Nz	Point id z is not a valid UUIDú-Wrong input: Not existing vector name error: rP   zbWrong input: Unnamed vectors are not allowed when a collection has named vectors or multivectors: z, z+Wrong input: Not existing vector name errorT) r�   rÔ   r¿  rê  rë  râ   r—   rµ   r}   r„   r   rC   rB   Úupdater‚   ry   rƒ   r   r†   r   Ú
UpdateModeÚINSERT_ONLYr�   r…   r<   r€   r‡   rÓ  ÚUPDATE_ONLYrÙ  r‰   Úpersist)r‹   r×   rÚ  rÛ  Ú_uuidÚeÚupdated_sparse_vectorsr˜   r—   Úvector_namesÚmultivector_namesrŸ   r/  r�   s                 r\   Ú_upsert_pointzLocalCollection._upsert_pointø	  s)  € õ �e”h¥Ñ$Ô$ð 	TðTÝœ	 %¤(Ñ+Ô+��øÝð Tð Tð TÝ Ð!K¨U¬XÐ!KÐ!KÐ!KÑLÔLÐRSÐSøøøøðTøøøõ �e”l¥DÑ)Ô)ð 	PØ%'Ð"Ø',¤|×'9Ò'9Ñ';Ô';ð Uð UÑ#�˜VØ dÔ&<Ð<Ð<Ý$Ð%bÐU`Ð%bÐ%bÑcÔcÐcÝ˜f¥lÑ3Ô3ð Uå*¨6Ñ2Ô2Ð2å:LÈVÑ:TÔ:TÐ*¨;Ñ7øàŒL×ÒÐ 6Ñ7Ô7Ð7Ð7å ¤× 1Ò 1Ñ 3Ô 3Ñ4Ô4ˆLÝ $ TÔ%6×%;Ò%;Ñ%=Ô%=Ñ >Ô >ÐØð  °"°Ò!5Ð!5Ø!ð "6Ø&7¸B¸4Ò&?Ð&?å ð;Ø#ð;ð ;Ø'8ð;ð ;ñô ð ð ”<ð P¨Ô(9ð PÝ Ð!NÑOÔOÐOå�e”h¥¤	Ñ*Ô*ð 	%Ý˜5œ8‘}”}ˆEŒHàŒ8�t”xÐÐØ�fÔ/Ô;Ò;Ð;Ø�tØ”(˜5œ8Ô$ˆCØ”< Ô$ð  ¨Ð)BØ�
Ø,0Ô,C×,IÒ,IÑ,KÔ,Kð 7ð 7Ñ(�K Ø" 3œ<ð 7Ø26˜
 ;Ñ/øÝ#Ø! 4¤<°Ô#4°d´lÀ3Ô6GÈñô ð  ð  ˜4Ø×Ò˜uÑ%Ô%Ð%Ð%à�fÔ/Ô;Ò;Ð;Ø�tØ�OŠO˜EÑ"Ô"Ð"àŒ<Ð#ØŒL× Ò  Ñ'Ô'Ð'Ð'Ð'ð $Ð#s   œ6 ¶
AÁ AÁArf  c                 óì  ‡
— t          |t          ¦  «        r|D ]}|                      |||¬¦  «         Œnét          |t          j        ¦  «        r°|}t          |j        t          ¦  «        rt          |j        i}n|j        }t          |j        ¦  «        D ]h\  Š
}d }|j	        �|j	        ‰
         }ˆ
fd„| 
                    ¦   «         D ¦   «         }	|                      t          j        |||	¬¦  «        ||¬¦  «         Œint          dt          |¦  «        › �¦  «        ‚t          | j        ¦  «        | j        k    r9t!          d| j        d›dt          | j        ¦  «        › d�t"          d	d
¬¦  «         d S d S )N)rÚ  rÛ  c                 ó(   •— i | ]\  }}||‰         “ŒS rs   rs   )rm   rn   rÚ   rŸ   s      €r\   rp   z*LocalCollection.upsert.<locals>.<dictcomp>L
  s#   ø€ ÐFÐFÐF©7¨4°˜$  #¤ÐFÐFÐFrq   rî  zUnsupported type: z=Local mode is not recommended for collections with more than ú,z% points. Current collection contains zd points. Consider using Qdrant in Docker or Qdrant Cloud for better performance with large datasets.zlarge-local-collectioné   )ÚcategoryrŸ   Ú
stacklevel)r�   r‚   rè  r   ÚBatchry   r“   rÒ   r†   r+  r}   ÚPointStructrâ   rã   r¸   ÚLARGE_DATA_THRESHOLDr   ÚUserWarning)r‹   rf  rÚ  rÛ  r×   Úbatchry   rX  r€   r—   rŸ   s             @r\   ÚupsertzLocalCollection.upsert7
  sÖ  ø€ õ �f�dÑ#Ô#ð 	BØð `ð `�Ø×"Ò" 5¸ÐS^Ð"Ñ_Ô_Ð_Ð_ð`å˜¥¤Ñ-Ô-ð 	BØˆEÝ˜%œ-­Ñ.Ô.ð (Ý.°´Ð>��àœ-�å!*¨5¬9Ñ!5Ô!5ð ð ‘��XØ�Ø”>Ð-Ø#œn¨SÔ1�GàFÐFÐFÐF°g·m²m±o´oÐFÑFÔF�à×"Ò"ÝÔ&Ø#Ø 'Ø%ðñ ô ð
 #0Ø +ð #ñ ô ð ð ðõ" Ð@µ$°v±,´,Ð@Ð@ÑAÔAÐAåˆtŒx‰=Œ=˜4Ô4Ò4Ð4ÝðnÐPTÔPiÐnð nð nÝ7:¸4¼8±}´}ðnð nð nõ %Ø,Øðñ ô ð ð ð ð 5Ð4rq   c                 ó2  — |                      ¦   «         D �] \  }}|| j        vrt          d|› �¦  «        ‚d| j        |         |<   t	          |t
          ¦  «        rnt          |¦  «         | j        |         |         }|                      ||¦  «         t          |¦  «        }|| j        |         |<   |  
                    ||¦  «         Œ´t          j        |t          j        ¬¦  «        }t          j        |¦  «                             ¦   «         r
J d¦   «         ‚|                      |¦  «        }|| j        v r]|j        t&          j        j        k    r1t          j                             |¦  «        }	|	t0          k    r||	z  n|}|| j        |         |<   �Œ|j        t&          j        j        k    rWt          j                             |d¬¦  «        d d …t          j        f         }
|t          j        |
dk    |
t0          ¦  «        z  }|| j        |         |<   �Œd S )NrÝ  r   rf   rÇ  r>  r  r‰  )r}   r„   râ   r…   r�   r   rC   r|   r¢   rB   r    rh   rÐ   rk   rÈ  r  ré   ry   rG  r   r   rÉ  rÊ  rË  rÌ  r”  rÍ  r   )r‹   rŸ   ry   r˜   r—   Ú
old_vectorÚ
new_vectorr×  ro   rË  rÒ  s              r\   Ú_update_named_vectorsz%LocalCollection._update_named_vectorsd
  s  € ð $+§=¢=¡?¤?ð 	@ñ 	@ÑˆK˜Ø $Ô"8Ð8Ð8Ý Ð!^ÐQ\Ð!^Ð!^Ñ_Ô_Ð_à89ˆDÔ# KÔ0°Ñ5å˜&¥,Ñ/Ô/ð Ý& vÑ.Ô.Ð.Ø!Ô0°Ô=¸cÔB�
Ø×'Ò'¨
°KÑ@Ô@Ð@Ý/°Ñ7Ô7�
Ø8B�Ô# KÔ0°Ñ5Ø×'Ò'¨
°KÑ@Ô@Ð@Øåœ ­r¬zÐ:Ñ:Ô:ˆIÝ”x 	Ñ*Ô*×.Ò.Ñ0Ô0ÐNÐNÐ2NÑNÔNÐ0Ø×+Ò+¨KÑ8Ô8ˆFØ˜dœlÐ*Ð*Ø”?¥f¤oÔ&<Ò<Ð<Ýœ9Ÿ>š>¨)Ñ4Ô4�DØ48½7²N°N 	¨DÑ 0Ð 0È	�IØ1:�”˜[Ô)¨#Ñ.Ñ.à”?¥f¤oÔ&<Ò<Ð<Ý"$¤)§.¢.°À .Ñ"DÔ"DÀQÀQÀQÍÌ
À]Ô"S�KØ¥¤¨+¸Ò*<¸kÍ7Ñ!SÔ!SÑS�IØ6?�Ô! +Ô.¨sÑ3Ñ3ð7	@ð 	@rq   c                 ó  — |D �]}t          |j        t          j        ¦  «        rt	          |j        ¦  «        n|j        }| j        |         }|j        }t          |t          ¦  «        r
t          |i}n|}| j	        |         sY|�Wi }| j
                             ¦   «         D ]\  }	}
|
|         sd||	<   Œt          || j        |         | j        |         |¦  «        sŒØ|                      ||¦  «         |                      |¦  «         �Œd S r.  )r�   rÔ   rê  rë  r¿  r†   r—   r‚   r“   r�   r…   r}   r<   r€   r‡   rø  Ú_persist_by_id)r‹   rf  rÚ  r×   rX  rŸ   Úvector_structÚfixed_vectorsr/  r˜   r�   s              r\   Úupdate_vectorszLocalCollection.update_vectors„
  s'  € ð ð 	*ñ 	*ˆEÝ(2°5´8½T¼YÑ(GÔ(GÐU•s˜5œ8‘}”}�}ÈUÌXˆHØ”(˜8Ô$ˆCØ!œLˆMÝ˜-­Ñ.Ô.ð .Ý!4°mÐ D��à -�à”< Ô$ð ¨Ð)BØ�
Ø,0Ô,C×,IÒ,IÑ,KÔ,Kð 7ð 7Ñ(�K Ø" 3œ<ð 7Ø26˜
 ;Ñ/øÝ#Ø! 4¤<°Ô#4°d´lÀ3Ô6GÈñô ð ð Ø×&Ò& s¨MÑ:Ô:Ð:Ø×Ò Ñ)Ô)Ð)Ñ)ð'	*ð 	*rq   Úselectorc                 ó¨   — |                       |¦  «        }|D ]9}| j        |         }|D ]}d| j        |         |<   Œ|                      |¦  «         Œ:d S rš   )Ú_selector_to_idsr†   r…   rú  )r‹   ry   rþ  r†   rX  rŸ   r˜   s          r\   Údelete_vectorszLocalCollection.delete_vectorsœ
  sw   € ð ×#Ò# HÑ-Ô-ˆØð 	*ð 	*ˆHØ”(˜8Ô$ˆCØ&ð >ð >�Ø<=�Ô'¨Ô4°SÑ9Ð9Ø×Ò Ñ)Ô)Ð)Ð)ð		*ð 	*rq   c                 ó²   — |D ]"}|| j         v r| j         |         }d| j        |<   Œ#| j        �(|D ]'}|| j         v r| j                             |¦  «         Œ&d S d S rš   )r†   r�   r‰   Údelete)r‹   r†   rX  rŸ   s       r\   Ú_delete_idszLocalCollection._delete_ids­
  s„   € Øð 	&ð 	&ˆHØ˜4œ8Ð#Ð#Ø”h˜xÔ(�Ø$%�”˜SÑ!øàŒ<Ð#Øð 2ð 2�Ø˜tœxÐ'Ð'Ø”L×'Ò'¨Ñ1Ô1Ð1øð $Ð#ð2ð 2rq   Údelete_filterc                 ó|   ‡— |                       |¦  «        Šˆfd„| j                             ¦   «         D ¦   «         }|S )Nc                 ó*   •— g | ]\  }}‰|         ¯|‘ŒS rs   rs   )rm   rX  rŸ   r±   s      €r\   rÑ   z2LocalCollection._filter_to_ids.<locals>.<listcomp>º
  s&   ø€ ÐKÐKÐK™M˜H cÀÀcÄÐKˆxÐKÐKÐKrq   )rÂ   r†   r}   )r‹   r  r†   r±   s      @r\   Ú_filter_to_idszLocalCollection._filter_to_ids¸
  s@   ø€ Ø×1Ò1°-Ñ@Ô@ˆØKÐKÐKÐK¨T¬X¯^ª^Ñ-=Ô-=ÐKÑKÔKˆØˆ
rq   c                 óž  — t          |t          ¦  «        rd„ |D ¦   «         S t          |t          j        ¦  «        r|                      |¦  «        S t          |t          j        ¦  «        rd„ |j        D ¦   «         S t          |t          j        ¦  «        r|                      |j        ¦  «        S t          dt          |¦  «        › �¦  «        ‚)Nc                 ód   — g | ]-}t          |t          j        ¦  «        rt          |¦  «        n|‘Œ.S rs   ré  rì  s     r\   rÑ   z4LocalCollection._selector_to_ids.<locals>.<listcomp>Ç
  s3   € ÐXÐXÐXÈ¥
¨3µ´	Ñ :Ô :ÐC•C˜‘H”H�HÀÐXÐXÐXrq   c                 ód   — g | ]-}t          |t          j        ¦  «        rt          |¦  «        n|‘Œ.S rs   ré  rì  s     r\   rÑ   z4LocalCollection._selector_to_ids.<locals>.<listcomp>Ë
  s3   € Ð_Ð_Ð_È¥
¨3µ´	Ñ :Ô :ÐC•C˜‘H”H�HÀÐ_Ð_Ð_rq   zUnsupported selector type: )r�   r‚   r   rC  r  ÚPointIdsListrf  ÚFilterSelectorrq  râ   rã   )r‹   rþ  s     r\   r   z LocalCollection._selector_to_ids½
  sÉ   € õ �h¥Ñ%Ô%ð 		MØXÐXÈxÐXÑXÔXÐXÝ˜¥&¤-Ñ0Ô0ð 	MØ×&Ò& xÑ0Ô0Ð0Ý˜¥&Ô"5Ñ6Ô6ð 	MØ_Ð_ÈxÌÐ_Ñ_Ô_Ð_Ý˜¥&Ô"7Ñ8Ô8ð 	MØ×&Ò& x¤Ñ7Ô7Ð7åÐK½4À¹>¼>ÐKÐKÑLÔLÐLrq   c                 óZ   — |                       |¦  «        }|                      |¦  «         d S r�   )r   r  )r‹   rþ  r†   s      r\   r  zLocalCollection.deleteÑ
  s1   € ð ×#Ò# HÑ-Ô-ˆØ×Ò˜ÑÔÐÐÐrq   c                 óê   — | j         �k| j        |         }t          j        ||                      |dd¬¦  «        |                      |d¬¦  «        ¬¦  «        }| j                              |¦  «         d S d S )NTF)r  r  )r  rî  )r‰   r†   r   rð  r  r(  râ  )r‹   rX  rŸ   r×   s       r\   rú  zLocalCollection._persist_by_idÝ
  s„   € ØŒ<Ð#Ø”(˜8Ô$ˆCÝÔ&ØØ×)Ò)¨#¸DÈeÐ)ÑTÔTØ×(Ò(¨¸4Ð(Ñ@Ô@ðñ ô ˆEð
 ŒL× Ò  Ñ'Ô'Ð'Ð'Ð'ð $Ð#rq   c                 ól  — |                       |¦  «        }t          |¦  «        }|�t          |¦  «        nd }|D ]y}| j        |         }t	          |¦  «        }	|€i | j        |         ¥|	¥| j        |<   n*| j        |         �t          | j        |         |	|¬¦  «         |                      |¦  «         Œzd S )N)r€   rÊ   rƒ   )r   r   r9   r†   r
   r€   r?   rú  )
r‹   r€   rþ  rë   r†   Úbase_payloadrƒ   rX  rŸ   Újsonable_payloads
             r\   Úset_payloadzLocalCollection.set_payloadç
  sØ   € ð ×#Ò# HÑ-Ô-ˆÝ)¨'Ñ2Ô2ˆàBEÀ/­/¸#Ñ*>Ô*>Ð*>ÐW[ˆàð 	*ð 	*ˆHØ”(˜8Ô$ˆCõ  (¨Ñ5Ô5ÐØˆ|Ø$M t¤|°CÔ'8Ð$MÐ<LÐ$M�”˜SÑ!Ð!à”< Ô$Ð0Ý$¨T¬\¸#Ô->ÐFVÐ]aÐbÑbÔbÐbà×Ò Ñ)Ô)Ð)Ð)ð	*ð 	*rq   c                 óÊ   — |                       |¦  «        }|D ]J}| j        |         }t          t          |¦  «        ¦  «        pi | j        |<   |                      |¦  «         ŒKd S r�   )r   r†   r
   r   r€   rú  )r‹   r€   rþ  r†   rX  rŸ   s         r\   Úoverwrite_payloadz!LocalCollection.overwrite_payload  su   € ð ×#Ò# HÑ-Ô-ˆØð 	*ð 	*ˆHØ”(˜8Ô$ˆCÝ (Õ);¸GÑ)DÔ)DÑ EÔ EÐ KÈˆDŒL˜ÑØ×Ò Ñ)Ô)Ð)Ð)ð	*ð 	*rq   rƒ   c                 óæ   — |                       |¦  «        }|D ]X}| j        |         }|D ]1}|| j        |         v r | j        |                              |¦  «         Œ2|                      |¦  «         ŒYd S r�   )r   r†   r€   r™  rú  )r‹   rƒ   rþ  r†   rX  rŸ   rë   s          r\   Údelete_payloadzLocalCollection.delete_payload  s�   € ð ×#Ò# HÑ-Ô-ˆØð 	*ð 	*ˆHØ”(˜8Ô$ˆCØð /ð /�Ø˜$œ, sÔ+Ð+Ð+Ø”L Ô%×)Ò)¨#Ñ.Ô.Ð.øØ×Ò Ñ)Ô)Ð)Ð)ð	*ð 	*rq   c                 ó’   — |                       |¦  «        }|D ].}| j        |         }i | j        |<   |                      |¦  «         Œ/d S r�   )r   r†   r€   rú  )r‹   rþ  r†   rX  rŸ   s        r\   Úclear_payloadzLocalCollection.clear_payload'  s_   € ð ×#Ò# HÑ-Ô-ˆØð 	*ð 	*ˆHØ”(˜8Ô$ˆCØ "ˆDŒL˜ÑØ×Ò Ñ)Ô)Ð)Ð)ð	*ð 	*rq   Úupdate_operationsc                 óÜ  — |D �]ç}t          |t          j        ¦  «        r£|j        }t          |t          j        ¦  «        r"|                      |j        |j        ¬¦  «         Œ`t          |t          j        ¦  «        r"|                      |j        |j        ¬¦  «         Œœt          dt          |j        ¦  «        › �¦  «        ‚t          |t          j        ¦  «        r|                      |j        ¦  «         Œõt          |t          j        ¦  «        rE|j        j        p|j        j        }|                      |j        j        ||j        j        ¦  «         �ŒTt          |t          j        ¦  «        r:|j        j        p|j        j        }|                      |j        j        |¦  «         �Œ¨t          |t          j        ¦  «        r:|j        j        p|j        j        }|                      |j        j        |¦  «         �Œüt          |t          j        ¦  «        r|                      |j        ¦  «         �Œ2t          |t          j        ¦  «        r*|j        }|                      |j        |j        ¬¦  «         �Œvt          |t          j        ¦  «        r:|j        j        p|j        j        }|                      |j        j        |¦  «         �ŒÊt          dt          |¦  «        › �¦  «        ‚d S )N)rÚ  zUnsupported upsert type: zUnsupported update operation: )r�   r   ÚUpsertOperationrô  ÚPointsBatchró  rÚ  Ú
PointsListrf  râ   rã   ÚDeleteOperationr  ÚSetPayloadOperationr  rq  r€   rë   ÚOverwritePayloadOperationr  ÚDeletePayloadOperationr  rƒ   ÚClearPayloadOperationr  ÚUpdateVectorsOperationrý  ÚDeleteVectorsOperationr  r—   )r‹   r  Ú	update_opÚupsert_structÚpoints_selectorrý  s         r\   Úbatch_update_pointsz#LocalCollection.batch_update_points6  sâ  € ð +ð '	Uñ '	UˆIÝ˜)¥VÔ%;Ñ<Ô<ð &UØ )Ô 0�Ý˜m­VÔ-?Ñ@Ô@ð [Ø—K’K Ô 3À=ÔC^�KÑ_Ô_Ð_Ð_Ý ­vÔ/@ÑAÔAð [Ø—K’K Ô 4ÀMÔD_�KÑ`Ô`Ð`Ð`å$Ð%YÅÀiÔFVÑAWÔAWÐ%YÐ%YÑZÔZÐZÝ˜I¥vÔ'=Ñ>Ô>ð UØ—’˜IÔ,Ñ-Ô-Ð-Ð-Ý˜I¥vÔ'AÑBÔBð UØ"+Ô"7Ô">Ð"^À)ÔBWÔB^�Ø× Ò ØÔ)Ô1°?ÀIÔDYÔD]ñô ð ñ õ ˜I¥vÔ'GÑHÔHð UàÔ/Ô6Ð\¸)Ô:UÔ:\ð  ð ×&Ò& yÔ'BÔ'JÈOÑ\Ô\Ð\Ñ\Ý˜I¥vÔ'DÑEÔEð UàÔ,Ô3ÐV°yÔ7OÔ7Vð  ð ×#Ò# IÔ$<Ô$AÀ?ÑSÔSÐSÑSÝ˜I¥vÔ'CÑDÔDð UØ×"Ò" 9Ô#:Ñ;Ô;Ð;Ñ;Ý˜I¥vÔ'DÑEÔEð UØ!*Ô!9�Ø×#Ò#Ø"Ô)¸Ô9Uð $ñ ô ð ñ õ ˜I¥vÔ'DÑEÔEð UàÔ,Ô3ÐV°yÔ7OÔ7Vð  ð ×#Ò# IÔ$<Ô$CÀ_ÑUÔUÐUÑUå Ð!SÅ$ÀyÁ/Ä/Ð!SÐ!SÑTÔTÐTðO'	Uð '	Urq   Ú
new_configc                 ó\   — || j         vrt          d|› d�¦  «        ‚|| j        j         |<   d S )Nrç   ú! does not exist in the collection)r|   râ   r`   )r‹   r˜   r*  s      r\   Úupdate_sparse_vectors_configz,LocalCollection.update_sparse_vectors_configc  sA   € ð ˜dÔ1Ð1Ð1ÝÐU {ÐUÐUÐUÑVÔVÐVà2<ˆŒÔ" ;Ñ/Ð/Ð/rq   c                 óÔ  — || j         v rt          d|› d�¦  «        ‚t          j        |j        |j        |j        ¬¦  «        }t          | j        ¦  «        }|j        �,|| j	        |<   d„ t          |¦  «        D ¦   «         | j        |<   n9|| j        |<   t          j        ||j        ft          j        ¬¦  «        | j        |<   t          j        |t$          ¬¦  «        | j        |<   | j                              |¦  «         | j        j        €i | j        _        t-          | j        j        t          j        ¦  «        rt.          | j        j        i| j        _        || j        j        |<   d S )Nrç   ú! already exists in the collection)rj   rG  r’   c                 ó6   — g | ]}t          j        g ¦  «        ‘ŒS rs   rÏ   ©rm   r¶  s     r\   rÑ   z<LocalCollection.create_dense_vector_name.<locals>.<listcomp>y  s    € Ð-VÐ-VÐ-V¸q­b¬h°r©l¬lÐ-VÐ-VÐ-Vrq   rf   )r„   râ   r   r‘   rj   rG  r’   r¸   r‡   r{   r•  r   rz   rh   ri   rk   ry   rÕ   rw   r…   rÅ   r`   r�   r“   ©r‹   r˜   r`   ro   Ú
num_pointss        r\   Úcreate_dense_vector_namez(LocalCollection.create_dense_vector_namek  s]  € Ø˜$Ô0Ð0Ð0ÝÐU {ÐUÐUÐUÑVÔVÐVåÔ$Ø”Ø”_Ø%Ô8ð
ñ 
ô 
ˆõ ˜œÑ&Ô&ˆ
àÔ$Ð0Ø4:ˆDÔ$ [Ñ1Ø-VÐ-VÅEÈ*ÑDUÔDUÐ-VÑ-VÔ-VˆDÔ˜kÑ*Ð*à/5ˆDÔ Ñ,Ý(*¬°*¸f¼kÐ1JÕRTÔR\Ð(]Ñ(]Ô(]ˆDŒL˜Ñ%å/1¬w°zÍÐ/NÑ/NÔ/NˆÔ Ñ,ØÔ×%Ò% kÑ2Ô2Ð2àŒ;ÔÐ&Ø"$ˆDŒKÔÝ�d”kÔ)­6Ô+>Ñ?Ô?ð 	MÝ#6¸¼Ô8KÐ"LˆDŒKÔØ+1ˆŒÔ˜KÑ(Ð(Ð(rq   c                 ó¤  — || j         v rt          d|› d�¦  «        ‚t          j        |j        ¬¦  «        }t          | j        ¦  «        }d„ t          |¦  «        D ¦   «         | j        |<   t          j
        |t          ¬¦  «        | j        |<   | j                              |¦  «         | j        j        €i | j        _        || j        j        |<   d S )Nrç   r/  )rB  c                 ó*   — g | ]}t          ¦   «         ‘ŒS rs   )rA   r1  s     r\   rÑ   z=LocalCollection.create_sparse_vector_name.<locals>.<listcomp>“  s   € Ð+]Ð+]Ð+]ÀaÕ,?Ñ,AÔ,AÐ+]Ð+]Ð+]rq   rf   )r„   râ   r   ÚSparseVectorParamsrB  r¸   r‡   r•  r|   rh   rÕ   rw   r…   rÅ   r`   r2  s        r\   Úcreate_sparse_vector_namez)LocalCollection.create_sparse_vector_name‡  sÚ   € ð ˜$Ô0Ð0Ð0ÝÐU {ÐUÐUÐUÑVÔVÐVåÔ*Ø”_ð
ñ 
ô 
ˆõ ˜œÑ&Ô&ˆ
à+]Ð+]Í5ÐQ[ÑK\ÔK\Ð+]Ñ+]Ô+]ˆÔ˜KÑ(Ý/1¬w°zÍÐ/NÑ/NÔ/NˆÔ Ñ,ØÔ×%Ò% kÑ2Ô2Ð2àŒ;Ô%Ð-Ø)+ˆDŒKÔ&Ø28ˆŒÔ" ;Ñ/Ð/Ð/rq   c                 ó  — || j         vrt          d|› d�¦  «        ‚t          | j        j        t
          j        ¦  «        rt          d¦  «        ‚| j                             |t          j
        dt          ¬¦  «        ¦  «         }| j                              |¦  «         | j                             |d ¦  «         || j        v rP| j        |= | j        |= t          | j        j        t          ¦  «        r | j        j                             |d ¦  «         n§|| j        v rF|| j        v r| j        |= | j        |= | j        j        � | j        j                             |d ¦  «         nX|| j        v rO| j        |= | j        |= t          | j        j        t          ¦  «        r | j        j                             |d ¦  «         | j        �Dt+          | j        ¦  «        D ]1\  }}||         r"| j        |         s|                      |¦  «         Œ0d S d S )Nrç   r,  zSCannot delete the unnamed vector when it is the only dense vector in the collectionr   rf   )r„   râ   r�   r`   ry   r   r‘   r…   rÁ   rh   rÕ   rw   Úremover™  rz   rµ   r|   r~   r   r{   r‰   rÒ   r‡   r�   rú  )r‹   r˜   Úaffected_maskrŸ   rX  s        r\   Údelete_vector_namez"LocalCollection.delete_vector_name›  s!  € Ø˜dÔ4Ð4Ð4ÝÐU {ÐUÐUÐUÑVÔVÐVå�d”kÔ)­6Ô+>Ñ?Ô?ð 	ÝØeñô ð ð Ô0×4Ò4°[Å"Ä'È!ÕSWÐBXÑBXÔBXÑYÔYÐYˆàÔ×%Ò% kÑ2Ô2Ð2ØÔ×#Ò# K°Ñ6Ô6Ð6à˜$œ,Ð&Ð&Ø”˜[Ð)ØÔ# KÐ0Ý˜$œ+Ô-­tÑ4Ô4ð ;Ø”Ô#×'Ò'¨°TÑ:Ô:Ð:øØ˜DÔ/Ð/Ð/Ø˜dÔ5Ð5Ð5ØÔ+¨KÐ8ØÔ# KÐ0ØŒ{Ô)Ð5Ø”Ô*×.Ò.¨{¸DÑAÔAÐAøØ˜DÔ-Ð-Ð-ØÔ! +Ð.ØÔ(¨Ð5Ý˜$œ+Ô-­tÑ4Ô4ð ;Ø”Ô#×'Ò'¨°TÑ:Ô:Ð:àŒ<Ð#Ý!*¨4¬<Ñ!8Ô!8ð 2ð 2‘��XØ  Ô%ð 2¨d¬l¸3Ô.?ð 2Ø×'Ò'¨Ñ1Ô1Ð1øð $Ð#ð2ð 2rq   c                 ó  — t          j        t           j        j        t           j        j        d|                      ¦   «         j        di t          j        t          j        | j	        j
        | j	        j        | j	        j        | j	        j        | j	        j        | j	        j        ¬¦  «        t          j        ddd¬¦  «        t          j        dd¬	¦  «        t          j        d
ddddd¬¦  «        d | j	        j        ¬¦  «        ¬¦  «        S )Nr   r›   )ry   Úshard_numberÚreplication_factorÚwrite_consistency_factorÚon_disk_payloadr|   é   éd   i'  )ÚmÚef_constructÚfull_scan_thresholdé    )Úwal_capacity_mbÚwal_segments_aheadgš™™™™™É?iè  r_   é   )Údeleted_thresholdÚvacuum_min_vector_numberÚdefault_segment_numberÚindexing_thresholdÚflush_interval_secÚmax_optimization_threads)ro   Úhnsw_configÚ
wal_configÚoptimizer_configÚquantization_configÚmetadata)ÚstatusÚoptimizer_statusÚindexed_vectors_countÚpoints_countÚsegments_countÚpayload_schemar`   )r   ÚCollectionInfoÚCollectionStatusÚGREENÚOptimizersStatusOneOfÚOKrÜ  ÚCollectionConfigÚCollectionParamsr`   ry   r>  r?  r@  rA  r|   Ú
HnswConfigÚ	WalConfigÚOptimizersConfigrU  r–   s    r\   ÚinfozLocalCollection.info¿  s  € ÝÔ$ÝÔ*Ô0Ý#Ô9Ô<Ø"#ØŸš™œÔ+ØØÝÔ*ÝÔ.Ø œKÔ/Ø!%¤Ô!9Ø'+¤{Ô'EØ-1¬[Ô-QØ$(¤KÔ$?Ø#'¤;Ô#=ðñ ô õ #Ô-ØØ!$Ø(-ðñ ô õ
 "Ô+Ø$&Ø'(ðñ ô õ "(Ô!8Ø&)Ø-1Ø+,Ø',Ø'(Ø-.ð"ñ "ô "ð %)ØœÔ-ð7ñ ô ð$
ñ $
ô $
ð $	
rq   )NF)rR   Nr�   )rP   )T)TT)F)Nr1  NTFNN)
NNNr1  r   TFNNN)NNNTFN)	NNNNNFFNN)NNNNr1  r·  TFNNN)Nr1  r›   TFNNN)Nr1  )TF)NNNNNNN)NNNr1  r   TFNNNNNN)NNNr1  r›   NTFNNNNNN)Nr·  r1  N)NNNNNN)NNNr1  r   TFNNNNN)Nr1  NNTF)Nr1  NTF)Nr1  TF)NN)”Ú__name__Ú
__module__Ú__qualname__Ú__doc__rñ  r   ÚCreateCollectionr¿  rw   r�   Ústaticmethodrµ   r‘   rà   rx   r•   r   r    r¢   ri  ÚSearchParamsrC  r¨   Úclassmethodrœ   rQ  r°   r   rh   rá   r¼   rÌ   rŠ   r‚   r   rG   r-   Ú
NumpyArrayrå   ré   rû   rþ   r   r   r  ÚPayloadSelectorr  ÚPayloadr  ÚVectorStructr(  rÂ   r0  r   rZ  ÚQueryÚPrefetchrj  rm  ra  rg  rh  rø  ÚDocumentÚImageÚInferenceObjectÚWithLookupInterfacerÏ  rÕ  ÚVectorr!   rH   r.   rØ  râ  ræ  rï  r†  rþ  rI  r
  r  r  r  r"  rª  r%  r,  r1  r7  r:  r   r+  rN  r   rD   r1   rV  rZ  r¬  r]  rm  r¥  rc  rÜ  r_  r`  r²  ÚMmrr§  r„  r‡  rˆ  ÚRelevanceFeedbackInputr´  rð  rÓ  rÙ  rß  rè  rï  rô  rø  ÚPointVectorsrý  r  r  r  r  r  r   r  rú  r  r  r  r  ÚUpdateOperationr)  r7  r-  ÚDenseVectorConfigr4  ÚSparseVectorConfigr8  r<  r\  rf  rs   rq   r\   r^   r^   b   s#  € € € € € ðð ð "Ðð
  $Ø05ð	0ð 0àÔ'ð0ð ˜‘*ð0ð *.ð	0ð
 
ð0ð 0ð 0ð 0ðd ð3Ø�c˜6Ô.Ð.Ô/ð3à	ˆt�C˜Ô,Ð,Ô-¨t°C¸Ô9LÐ4LÔ/MÐMÔ	Nð3ð 3ð 3ñ „\ð3ð(!ð !ð !ð !ð;¨ð ;ÀCð ;ÈDð ;ð ;ð ;ð ;ð;¨ð ;ÀCð ;ÈDð ;ð ;ð ;ð ;ð ð
 eÔ&8¸4Ñ&?ð 
ÀEÄLÐSWÑDWð 
ð 
ð 
ñ „\ð
ð ð9˜cð 9 cð 9¨eð 9ð 9ð 9ñ „[ð9ðØðØ)1°#¬ðØ>@¼jðà	ˆc�3ˆhŒðð ð ð ð* +/ð	Gð GàðGð ðGð ”L 4Ñ'ð	Gð
 
ðGð Gð Gð Gð:LCð LCð LCð LCð\ ð'ð �ŒKØ�C˜˜eœÐ$Ô%ñ&à�4˜”;Ôñ ð �C˜˜d 5œkÔ*Ð*Ô+ñ,ð ñ	ð
 �CÐ)Ð)Ô*ñ+ð �CÐ*Ð*Ô+ñ,ð ñð �CÐ)Ð)Ô*ñ+ð Ôñ	ð'ð 
ˆsÐ$Ð'8Ñ8Ð;KÑKÈeÔN^Ñ^Ð^Ô	_ð'ð 'ð 'ñ „[ð'ðRM cð M¨fÔ.Að Mð Mð Mð Mð ðE¨Sð E°sð E¸tð Eð Eð Eñ „[ðEð6 ðE¨Sð E°sð E¸tð Eð Eð Eñ „[ðEð àIKðð ØðØ&.°¨u°d¨{Ô&;ðØCFðà	ðð ð ñ „[ðð0 ð FJð)ð )àð)ð ˜X cœ]Ñ*¨UÔ-BÑBð)ð 
�‰ð	)ð )ð )ñ „[ð)ð\ FJØ ð	Qð QàðQð ˜X cœ]Ñ*¨UÔ-BÑBðQð ð	Qð
 
ŒðQð Qð Qð Qð EJð!ð !Øð!Ø&*¨X°c¬]Ñ&:¸TÑ&Að!à	Ô	˜tÑ	#ð!ð !ð !ð !ðL #'ðð àœ¨Ñ,ðð ˜4‘Zðð 
Œð	ð ð ð ð4°ð ¸¸cÀ4¸i¼ð ð ð ð ð. -1ØØ!ØEIØ-2Ø(,Ø*.ð+oð oð �ŒKØ�C˜˜eœÐ$Ô%ñ&à�4˜”;Ôñ ð �C˜˜d 5œkÔ*Ð*Ô+ñ,ð ñ	ð
 �CÐ)Ð)Ô*ñ+ð  ñ ð �CÐ*Ð*Ô+ñ,ð ñð �CÐ)Ð)Ô*ñ	+ð Ôñ
ðoð ”l TÑ)ðoð  ð!oð" �d‘
ð#oð$ ˜X cœ]Ñ*¨UÔ-BÑBð%oð& ˜X cœ]Ñ*ð'oð(  ™ð)oð* ”L 4Ñ'ð+oð, 
ˆfÔ Ô	!ð-oð oð oð oðf %)Ø04Ø,0ØØØEIØ-2Ø(,Ø Ø37ð:9ð :9àŒ{˜TÑ!ð:9ð �u”~Ô&¨Ñ-ð:9ð ”l TÑ)ð	:9ð
 ð:9ð ð:9ð ˜X cœ]Ñ*¨UÔ-BÑBð:9ð ˜X cœ]Ñ*ð:9ð  ™ð:9ð �T‰zð:9ð Ô)¨DÑ0ð:9ð ð:9ð 
Ô	ð:9ð :9ð :9ð :9ðx& %¤.ð &°T¸%Ô:KÔ5Lð &ð &ð &ð &ð\ !Ø,0Ø(,ØEIØ-2Ø*.ðXð Xà�d˜5Ô,Ô-Ô.ðXð Œ{ðXð ð	Xð
 ðXð �T‰zðXð ”l TÑ)ðXð  ™ðXð ˜X cœ]Ñ*¨UÔ-BÑBðXð ˜X cœ]Ñ*ðXð ”L 4Ñ'ðXð 
ˆeÔÔ	 ðXð Xð Xð Xðx %)Ø Ø,0Ø Ø!ØEJØ-2Ø(,Ø*.ðLð LàŒ{˜TÑ!ðLð �T‰zðLð ”l TÑ)ð	Lð
 �T‰zðLð �d‘
ðLð ˜X cœ]Ñ*¨UÔ-BÑBðLð ˜X cœ]Ñ*ðLð  ™ðLð ”L 4Ñ'ðLð 
ˆeÔÔ	 ðLð Lð Lð Lðx Ø ØAEØ,0ØØØEIØ-2Ø(,Ø8<Ø;?ð1W9ð W9àðW9ð ŒMØ�5Œkñà�4˜”;Ôñ ð Ô ñ!ð Œkñ	ð
 Ôñð Œnñð Œkñð Ô#ñ$ð ñ	ð	W9ð �T‰zðW9ð  ”. 4¨¬Ô#7Ñ7¸$Ñ>ð!W9ð" ”l TÑ)ð#W9ð$ ð%W9ð& ð'W9ð( ˜X cœ]Ñ*¨UÔ-BÑBð)W9ð* ˜X cœ]Ñ*ð+W9ð,  ™ð-W9ð. Ô.°Ñ5ð/W9ð0 !9ð1W9ð2 
Ô	ð3W9ð W9ð W9ð W9ðJ .2ØØØFJØ-2Ø(,Ø8<Ø;?ð'G9ð G9à˜u”oØ
ˆt�EŒ{Ô
ñà
Ø�” Ñ*¨_Ñ<¸~ÑMÐPUÔP`Ñ`Ð`ô
ñ
ð
 ñð ñð ñð Ô
ñðG9ð ðG9ð ”m dÑ*ðG9ð ðG9ð ðG9ð ˜X cœ]Ñ*¨VÔ-CÑCðG9ð  ˜X cœ]Ñ*ð!G9ð"  ™ð#G9ð$ Ô.°Ñ5ð%G9ð& !9ð'G9ð( 
Ô	ð)G9ð G9ð G9ð G9ðX -1Øð	1.ð 1.àð1.ð ”l TÑ)ð1.ð ð	1.ð
 
Ô	ð1.ð 1.ð 1.ð 1.ðl FJØ-2ð	ð à�e”mÔ$ðð ˜X cœ]Ñ*¨UÔ-BÑBðð ˜X cœ]Ñ*ð	ð
 
ˆfŒmÔ	ðð ð ð ð8 9=Ø8<Ø37Ø,0Ø Ø;?Ø.2ð_
ð _
à˜6Ô-Ô.°Ñ5ð_
ð ˜6Ô-Ô.°Ñ5ð_
ð Ô)¨DÑ0ð	_
ð
 ”l TÑ)ð_
ð �T‰zð_
ð !9ð_
ð "% t¡ð_
ð 
ØˆT�%Œ[ÔØˆT�%Œ[ÔØˆVÔ Ô!ØˆVÔ Ô!ØˆT�$�u”+ÔÔØˆT�$�u”+ÔÔØŒð	ô
ð_
ð _
ð _
ð _
ðB ðØ˜t Eœ{Ô+ðØ?CÀDÈÄKÔ?Pðà	Ô	ðð ð ñ „\ðð  ðØ˜vÔ2Ô3ðà˜vÔ2Ô3ðð 
Ô	ðð ð ñ „\ðð* ð	 Ø˜t D¨¤KÔ0Ô1ð	 ØEIÈ$ÈtÐTYÌ{ÔJ[ÔE\ð	 à	ˆd�5ŒkÔ	ð	 ð 	 ð 	 ñ „\ð	 ð 9=Ø8<Ø,0Ø Ø;?Ø.2Ø37ðR1ð R1à˜6Ô-Ô.°Ñ5ðR1ð ˜6Ô-Ô.°Ñ5ðR1ð ”l TÑ)ð	R1ð
 �T‰zðR1ð !9ðR1ð "% t¡ðR1ð Ô)¨DÑ0ðR1ð 
Ø�OÑ# nÑ4°vÔ7JÑJÈUÔM]Ñ]ØŒð	ô
ðR1ð R1ð R1ð R1ðl 9=Ø8<Ø,0ØØØEIØ-2Ø(,Ø Ø;?Ø.2Ø37Ø*.ð$
ð $
à˜6Ô-Ô.°Ñ5ð$
ð ˜6Ô-Ô.°Ñ5ð$
ð ”l TÑ)ð	$
ð
 ð$
ð ð$
ð ˜X cœ]Ñ*¨UÔ-BÑBð$
ð ˜X cœ]Ñ*ð$
ð  ™ð$
ð �T‰zð$
ð !9ð$
ð "% t¡ð$
ð Ô)¨DÑ0ð$
ð ”L 4Ñ'ð$
ð 
ˆfÔ Ô	!ð$
ð $
ð $
ð $
ðR 9=Ø8<Ø-1ØØØ(,ØFJØ-2Ø Ø;?Ø.2Ø8<Ø;?Ø37ð!+
ð +
àð+
ð ˜6Ô-Ô.°Ñ5ð+
ð ˜6Ô-Ô.°Ñ5ð	+
ð
 ”m dÑ*ð+
ð ð+
ð ð+
ð  ™ð+
ð ˜X cœ]Ñ*¨VÔ-CÑCð+
ð ˜X cœ]Ñ*ð+
ð �T‰zð+
ð !9ð+
ð "% t¡ð+
ð Ô.°Ñ5ð+
ð !9ð+
ð  Ô)¨DÑ0ð!+
ð" 
Ô	ð#+
ð +
ð +
ð +
ð^ -1ØØØ ð 
ð  
à”l TÑ)ð 
ð ð 
ð ð	 
ð
 �T‰zð 
ð 
Ô	*ð 
ð  
ð  
ð  
ðH -1ØØØ ð
ð 
à”l TÑ)ð
ð ð
ð ð	
ð
 �T‰zð
ð 
Ô	(ð
ð 
ð 
ð 
ð2 -1ØØØ ð2ð 2à”l TÑ)ð2ð ð2ð ð	2ð
 �T‰zð2ð 
ˆt�OÔ$ d¨4°Ô+<Ô&=Ð=Ô	>ð2ð 2ð 2ð 2ðh ðØÔ" TÑ)ðØ7HðØWZðà	ˆvŒ}˜eœm¨dÑ2Ð2Ô	3ðð ð ñ „\ðð&DcØ˜FÔ.Ô/ðDcØ=NðDcØ]`ðDcà	Øˆ[Ô˜4Ð 1Ô2°DÐ9IÔ4JÈDÐQVÔQ^ÔL_Ð_ô
ðDcð Dcð Dcð DcðP -1Ø7;Ø,0Ø Ø;?Ø.2ð-
ð -
àÔ" TÑ)ð-
ð ˜&Ô,Ô-°Ñ4ð-
ð ”l TÑ)ð	-
ð
 �T‰zð-
ð !9ð-
ð "% t¡ð-
ð 
ØŒ˜ÑØˆ[ÔØÐÔØÐÔØŒð		ô
ð-
ð -
ð -
ð -
ðb -1Ø7;Ø,0ØØØEIØ-2Ø Ø;?Ø.2Ø(,Ø*.ð@
ð @
àÔ" TÑ)ð@
ð ˜&Ô,Ô-°Ñ4ð@
ð ”l TÑ)ð	@
ð
 ð@
ð ð@
ð ˜X cœ]Ñ*¨UÔ-BÑBð@
ð ˜X cœ]Ñ*ð@
ð �T‰zð@
ð !9ð@
ð "% t¡ð@
ð  ™ð@
ð ”L 4Ñ'ð@
ð 
ˆfÔ Ô	!ð@
ð @
ð @
ð @
ðD ðI VÔ%;ð IÀÀcÈ3ÀhÄð Ið Ið Iñ „[ðIð .2ØØ)-Ø'+ØEIØ-2ð"
ð "
à”| dÑ*ð"
ð ð"
ð ”- $Ñ&ð	"
ð
 ” Ñ$ð"
ð ˜X cœ]Ñ*¨UÔ-BÑBð"
ð ˜X cœ]Ñ*ð"
ð 
ˆt�E”LÔ! 5¤=°4Ñ#7Ð7Ô	8ð"
ð "
ð "
ð "
ðH@ð @ %¤,°Ñ"5ð @ÀÔASð @ð @ð @ð @ð .2ØØ'+ØEIØ-2ð# ð # à”| dÑ*ð# ð ð# ð ” Ñ$ð	# ð
 ˜X cœ]Ñ*¨UÔ-BÑBð# ð ˜X cœ]Ñ*ð# ð 
ˆt�E”LÔ! 5¤=°4Ñ#7Ð7Ô	8ð# ð # ð # ð # ðP .2ØØEIØ-2ðHð Hà”-ðHð ”| dÑ*ðHð ð	Hð
 ˜X cœ]Ñ*¨UÔ-BÑBðHð ˜X cœ]Ñ*ðHð 
ˆt�E”LÔ! 5¤=°4Ñ#7Ð7Ô	8ðHð Hð Hð Hð\ FJØ-2ð!ð !àð!ð ”l TÑ)ð!ð ˜X cœ]Ñ*¨UÔ-BÑBð	!ð
 ˜X cœ]Ñ*ð!ð 
ˆeÔÔ	 ð!ð !ð !ð !ðP -1ØØ!ØEIØ-2Ø(,Ø*.ðNð Nà˜E”{ \Ñ1°D¸¸e¼Ô4EÑEðNð ŒYðNð �T‰zð	Nð
 ”l TÑ)ðNð ðNð �d‘
ðNð ˜X cœ]Ñ*¨UÔ-BÑBðNð ˜X cœ]Ñ*ðNð  ™ðNð ”L 4Ñ'ðNð 
ˆfÔ Ô	!ðNð Nð Nð Nð>mHà˜VÔ/Ô0ðmHð ˜5”k LÑ0°4¸¸U¼Ô3DÑDðmHð ð	mHð
 ðmHð ðmHð 
ˆfÔ Ô	!ðmHð mHð mHð mHð^4 àÔ"ð4 ð !  fÔ&8Ô!9Ô:ð4 ð ð	4 ð
 ˜X cœ]Ñ*¨UÔ-BÑBð4 ð ˜X cœ]Ñ*ð4 ð 
ˆfÔ Ô	!ð4 ð 4 ð 4 ð 4 ðt -1ØØ!ØEIØ-2Ø(,Ø*.ð5Kð 5Kà"Ô9ð5Kð �T‰zð5Kð ”l TÑ)ð	5Kð
 ð5Kð �d‘
ð5Kð ˜X cœ]Ñ*¨UÔ-BÑBð5Kð ˜X cœ]Ñ*ð5Kð  ™ð5Kð ”L 4Ñ'ð5Kð 
ˆfÔ Ô	!ð5Kð 5Kð 5Kð 5Kðn9 6Ô#5ð 9¸$ð 9ð 9ð 9ð 9ðva; Ô 2ð a;°tð a;ð a;ð a;ð a;ðL .2Ø/3ð	=(ð =(àÔ!ð=(ð ”| dÑ*ð=(ð Ô%¨Ñ,ð	=(ð
 
ð=(ð =(ð =(ð =(ðD .2Ø/3ð	+ð +à˜Ô+Ô,¨v¬|Ñ;ð+ð ”| dÑ*ð+ð Ô%¨Ñ,ð	+ð
 
ð+ð +ð +ð +ðZ@Øð@Ø!% c¨4°¬;¸Ñ+EÈÈTÐRWÌ[ÔHYÑ+YÐ&YÔ!Zð@à	ð@ð @ð @ð @ðB Z^ð*ð *Ø˜uÔ1Ô2ð*ØCHÄ<ÐRVÑCVð*à	ð*ð *ð *ð *ð0*à˜#”ð*ð ŒMØ�6Ô)Ô*ñ+àÔ#ñ$ð Ô!ñ"ð	*ð 
ð*ð *ð *ð *ð"	2˜t E¤MÔ2ð 	2°tð 	2ð 	2ð 	2ð 	2ð¨E¬Lð ¸TÀ&ÔBXÔ=Yð ð ð ð ð
Mð ŒMØ�6Ô)Ô*ñ+àÔ#ñ$ð Ô!ñ"ðMð 
ˆfÔ$Ô	%ðMð Mð Mð Mð(
ð ŒMØ�6Ô)Ô*ñ+àÔ#ñ$ð Ô!ñ"ð
ð 
ð
ð 
ð 
ð 
ð( vÔ'=ð (À$ð (ð (ð (ð (ð& ð*ð *à”ð*ð ŒMØ�6Ô)Ô*ñ+àÔ#ñ$ð Ô!ñ"ð	*ð �4‰Zð*ð 
ð*ð *ð *ð *ð<*à”ð*ð ŒMØ�6Ô)Ô*ñ+àÔ#ñ$ð Ô!ñ"ð	*ð 
ð*ð *ð *ð *ð *à�sŒmð*ð ŒMØ�6Ô)Ô*ñ+àÔ#ñ$ð Ô!ñ"ð	*ð 
ð*ð *ð *ð *ð$*ð ŒMØ�6Ô)Ô*ñ+àÔ#ñ$ð Ô!ñ"ð*ð 
ð*ð *ð *ð *ð+Uà# EÔ$9Ô:ð+Uð 
ð+Uð +Uð +Uð +UðZ=Øð=Ø,2Ô,Eð=à	ð=ð =ð =ð =ð2°Cð 2ÀÔAYð 2Ð^bð 2ð 2ð 2ð 2ð89Øð9Ø(.Ô(Að9à	ð9ð 9ð 9ð 9ð("2¨cð "2°dð "2ð "2ð "2ð "2ðH%
�fÔ+ð %
ð %
ð %
ð %
ð %
ð %
rq   r^   r2  rü  c                 óX  — t          |¦  «        dk    r| S t          j        |¬¦  «        }| €t          j        |g¬¦  «        } nft	          | ¦  «        } | €J ‚| j        €	|g| _        nCt          | j        t          ¦  «        r| j                             |¦  «         n| j        |g| _        | S )Nr   ©Úhas_id)Úmust_not)	r¸   r   ÚHasIdConditionrC  r
   rƒ  r�   r‚   rÅ   )r2  rü  Úignore_mentioned_idss      r\   r   r   ç  sÉ   € õ ˆ=ÑÔ˜QÒÐØÐå!Ô0¸ÐFÑFÔFÐàÐÝ”}Ð/CÐ.DÐEÑEÔEˆˆõ   Ñ-Ô-ˆØÐ'Ð'Ð'ØÔ Ð(Ø%9Ð$:ˆLÔ!Ð!Ý˜Ô-­tÑ4Ô4ð 	RØÔ!×(Ò(Ð)=Ñ>Ô>Ð>Ð>à%1Ô%:Ð<PÐ$QˆLÔ!àÐrq   r†   c                 óX  — t          |¦  «        dk    r| S t          j        |¬¦  «        }| €t          j        |g¬¦  «        } nft	          | ¦  «        } | €J ‚| j        €	|g| _        nCt          | j        t          ¦  «        r| j                             |¦  «         n| j        |g| _        | S )Nr   r�  r<  )	r¸   r   r„  rC  r
   r=  r�   r‚   rÅ   )r2  r†   Úinclude_idss      r\   r‹  r‹  ÿ  s¿   € õ ˆ3�x„x�1‚}€}ØÐåÔ'¨sÐ3Ñ3Ô3€KàÐÝ”}¨;¨-Ð8Ñ8Ô8ˆˆõ   Ñ-Ô-ˆØÐ'Ð'Ð'ØÔÐ$Ø!, ˆLÔÐÝ˜Ô)­4Ñ0Ô0ð 	AØÔ×$Ò$ [Ñ1Ô1Ð1Ð1à!-Ô!2°KÐ @ˆLÔàÐrq   rš  c                 ó^   — t          j        | j        dd| j        | j        | j        ¬¦  «        S )Nr   r|  )rÔ   rA  r@  r€   r—   rl  )ri  r   rÔ   r€   r—   rl  )rš  s    r\   r˜  r˜    s7   € ÝÔØŒ9ØØØ”ØŒ}ØÔ&ðñ ô ð rq   r[  r3  c                 ól  — | g}|r®|                      ¦   «         }t          |t          ¦  «        r|                     |¦  «         ŒA||_        |j        }|€ŒRt          |t          ¦  «        r|                     |¦  «         n/t          |t          j        ¦  «        r|                     |¦  «         |°¬dS dS )z<Set .limit on all nested Prefetch objects without recursion.N)	r™  r�   r‚   Úextendr3  r[  ri  rt  rÅ   )r[  r3  r  ÚcurrentÚnesteds        r\   rÉ  rÉ  "  sÎ   € ð ;C¸€Eà
ð !Ø—)’)‘+”+ˆå�g�tÑ$Ô$ð 	à�LŠL˜Ñ!Ô!Ð!Øð ˆŒð Ô!ˆØˆ>Øå�f�dÑ#Ô#ð 	!Ø�LŠL˜Ñ Ô Ð Ð Ý˜¥¤Ñ/Ô/ð 	!Ø�LŠL˜Ñ Ô Ð ð' ð !ð !ð !ð !ð !rq   ){rV   r­   rê  Úcollectionsr   r   Útypingr   r   r   r   r	   Úcopyr
   r´  Únumpyrh   Úqdrant_clientr   Ú$qdrant_client.common.client_warningsr   Úqdrant_client._pydantic_compatr   r   rZ   Úqdrant_client.conversionsr   ri  Ú&qdrant_client.conversions.common_typesr   Ú$qdrant_client.conversions.conversionr   Úqdrant_client.httpr   Úqdrant_client.http.modelsr   Ú qdrant_client.http.models.modelsr   r   r   r   Úqdrant_client.hybrid.formular   r   Úqdrant_client.hybrid.fusionr   r   Úqdrant_client.local.distancesr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r¿  r,   Ú#qdrant_client.local.multi_distancesr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Ú$qdrant_client.local.json_path_parserr8   r9   Úqdrant_client.local.order_byr:   Ú#qdrant_client.local.payload_filtersr;   r<   Ú+qdrant_client.local.payload_value_extractorr=   r>   Ú(qdrant_client.local.payload_value_setterr?   Úqdrant_client.local.persistencer@   Úqdrant_client.local.sparserA   rB   rC   Ú$qdrant_client.local.sparse_distancesrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r“   rÌ  r^   rC  r‚   rø  r   r‹  rï  r˜  rt  rœ   rÉ  rs   rq   r\   ú<module>r¦     sZ  ðØ €€€Ø €€€Ø €€€Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø BÐ BÐ BÐ BÐ BÐ BØ _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø FÐ FÐ FÐ FÐ FÐ FØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø %Ð %Ð %Ð %Ð %Ð %Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ _Ð _Ð _Ð _Ð _Ð _Ð _Ð _ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð&ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð OÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ EÐ EÐ EÐ EÐ EÐ EØ AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ø
€ðV˜#ð V #ð Vð Vð Vð VðB.
ð B.
ð B.
ð B.
ð B.
ñ B.
ô B.
ð B.
ðJ\Ø”, Ñ%ðØ6:¸5¼=Ô6Iðà
„\ðð ð ð ð0Ø”, Ñ%ðØ,0°´Ô,?ðà
„\ðð ð ð ð0 5¤<ð °EÔ4Eð ð ð ð ð!ØŒn˜t E¤NÔ3Ñ3ð!Ø<?ð!à	ð!ð !ð !ð !ð !ð !rq   