§
    dŠtj6Ã  ã                   ó  — d dl Z d dlZd dlZd dlZd dl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Zd dlmZ 	 d dlZn# e$ r	 esd dlZY nw xY wd dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZm Z   ej!        d¦  «        Z" G d„ de#¦  «        Z$d„ Z%d„ Z&d„ Z' G d„ dej(        j)        ¦  «        Z* G d„ dej(        j+        ¦  «        Z,d„ Z- G d„ dej(        j.        ¦  «        Z/ G d„ de¦  «        Z0 G d„ de¦  «        Z1dS )é    N)Ú	lru_cache)Úchain)ÚTYPE_CHECKINGÚLiteral)ÚAbstractBufferedFile)ÚAsyncFileSystem)ÚDEFAULT_CALLBACK)Ú
filesystemÚopenÚsplit_protocol)ÚAsyncFileSystemWrapper)Ú
isfilelikeÚmerge_offset_rangesÚother_pathszfsspec.referencec                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚReferenceNotReachablec                 óP   •—  t          ¦   «         j        |Ž  || _        || _        d S ©N)ÚsuperÚ__init__Ú	referenceÚtarget)Úselfr   r   ÚargsÚ	__class__s       €ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/fsspec/implementations/reference.pyr   zReferenceNotReachable.__init__#   s)   ø€ Ø�‰ŒÔ˜$ÐÐØ"ˆŒØˆŒˆˆó    c                 ó&   — d| j         › d| j        › �S )NzReference "z" failed to fetch target )r   r   ©r   s    r   Ú__str__zReferenceNotReachable.__str__(   s   € ØS˜Tœ^ÐSÐSÀdÄkÐSÐSÐSr   )Ú__name__Ú
__module__Ú__qualname__r   r    Ú__classcell__©r   s   @r   r   r   "   sN   ø€ € € € € ðð ð ð ð ð
Tð Tð Tð Tð Tð Tð Tr   r   c                 ó^   — t          t          |                      ¦   «         ¦  «        ¦  «        S r   )ÚnextÚiterÚvalues)Úds    r   Ú_firstr+   ,   s    € Ý•�Q—X’X‘Z”ZÑ Ô Ñ!Ô!Ð!r   c                 óø   — |                      | ¦  «        }t          |t          t          f¦  «        rFt          |d         t          ¦  «        r-|d         rt          |d         ¦  «        d         n|d         S d S d S ©Nr   )ÚgetÚ
isinstanceÚlistÚtupleÚstrr   )ÚpathÚ
referencesÚrefs      r   Ú_prot_in_referencesr6   0   s{   € Ø
�.Š.˜Ñ
Ô
€CÝ�#��e�}Ñ%Ô%ð ?­*°S¸´V½SÑ*AÔ*Að ?Ø,/°¬FÐ>�~˜c !œfÑ%Ô% aÔ(Ð(¸¸A¼Ð>ð?ð ?ð ?ð ?r   c                 óÖ   — t          | t          ¦  «        rt          | |¦  «        | giS i }| D ];}t          ||¦  «        }|                     |g ¦  «                             |¦  «         Œ<|S r   )r/   r2   r6   Ú
setdefaultÚappend)Úpathsr4   Úoutr3   Úprotocols        r   Ú_protocol_groupsr=   6   sy   € Ý�%�ÑÔð AÝ# E¨:Ñ6Ô6¸¸Ð@Ð@Ø
€CØð 2ð 2ˆÝ& t¨ZÑ8Ô8ˆØ�Š�x Ñ$Ô$×+Ò+¨DÑ1Ô1Ð1Ð1Ø€Jr   c                   ó   — e Zd Zd„ ZdS )ÚRefsValuesViewc              #   óÜ  K  — | j         j                             ¦   «         D ]*}t          j        |¦  «                             ¦   «         V — Œ+| j         j                             ¦   «         E d {V —† | j                              ¦   «         D ]b}| j                              |¦  «        }t          |¦  «        dk    r| j         |dz            V — ŒB| j          
                    |¦  «        E d {V —† Œcd S )Nr   ú/0)Ú_mappingÚ	zmetadatar)   ÚjsonÚdumpsÚencodeÚ_itemsÚlistdirÚ_get_chunk_sizesÚlenÚ_generate_all_records)r   ÚvalÚfieldÚchunk_sizess       r   Ú__iter__zRefsValuesView.__iter__A   s
  è è € Ø”=Ô*×1Ò1Ñ3Ô3ð 	+ð 	+ˆCÝ”*˜S‘/”/×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ø”=Ô'×.Ò.Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø”]×*Ò*Ñ,Ô,ð 	Bð 	BˆEØœ-×8Ò8¸Ñ?Ô?ˆKÝ�;ÑÔ 1Ò$Ð$Ø”m E¨D¡LÔ1Ð1Ð1Ð1ØØ”}×:Ò:¸5ÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAð	Bð 	Br   N©r!   r"   r#   rO   © r   r   r?   r?   @   s(   € € € € € ð	Bð 	Bð 	Bð 	Bð 	Br   r?   c                   ó   — e Zd Zd„ ZdS )ÚRefsItemsViewc                 ó~   — t          | j                             ¦   «         | j                             ¦   «         ¦  «        S r   )ÚziprB   Úkeysr)   r   s    r   rO   zRefsItemsView.__iter__N   s.   € Ý�4”=×%Ò%Ñ'Ô'¨¬×)=Ò)=Ñ)?Ô)?Ñ@Ô@Ð@r   NrP   rQ   r   r   rS   rS   M   s(   € € € € € ðAð Að Að Að Ar   rS   c                 óx   — d}d}t          | d d d…         |d d d…         ¦  «        D ]\  }}|||z  z  }||z  }Œ|S )Nr   é   éÿÿÿÿ)rU   )ÚidxÚsizesrL   ÚmultÚiÚss         r   Úravel_multi_indexr_   R   sZ   € Ø
€CØ€DÝ�C˜˜˜"˜”I˜u T T r Tœ{Ñ+Ô+ð ð ‰ˆˆ1Øˆq�4‰x‰ˆØ�‰	ˆˆØ€Jr   c                   ó  — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Z	 	 	 	 	 d%ded	         fd
„Zd„ Z	d„ Z
ed&d„¦   «         Zd„ Zd'd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd(d„Zd(d „Zd!„ Zd"„ Zd#„ Zd$„ Z dS ))ÚLazyReferenceMapperao  This interface can be used to read/write references from Parquet stores.
    It is not intended for other types of references.
    It can be used with Kerchunk's MultiZarrToZarr method to combine
    references into a parquet store.
    Examples of this use-case can be found here:
    https://fsspec.github.io/kerchunk/advanced.html?highlight=parquet#parquet-storagec                 ó   — dd l }|S r-   )Únumpy)r   Únps     r   rd   zLazyReferenceMapper.npd   s   € àÐÐÐàˆ	r   c                 ó   — dd l }|S r-   )Úpandas)r   Úpds     r   rg   zLazyReferenceMapper.pdj   s   € àÐÐÐàˆ	r   Né€   é
   ÚfastparquetÚengine)rj   Úpyarrowc                 óÎ  — || _         i | _        || _        || _        || _        | j         dz   | _        |€t          j        d¦  «        n|| _        | j         	                    |p| j         ¦  «        | _
        ddlm} | j        dk    r |d¦  «        €t          d¦  «        ‚ t          ¦   «         | j        ¦  «        | _         t          d¬	¦  «        | j        ¦  «        | _        dS )
aà  

        This instance will be writable, storing changes in memory until full partitions
        are accumulated or .flush() is called.

        To create an empty lazy store, use .create()

        Parameters
        ----------
        root : str
            Root of parquet store
        fs : fsspec.AbstractFileSystem
            fsspec filesystem object, default is local filesystem.
        cache_size : int, default=128
            Maximum size of LRU cache, where cache_size*record_size denotes
            the total number of references that can be loaded in memory at once.
        categorical_threshold : int
            Encode urls as pandas.Categorical to reduce memory footprint if the ratio
            of the number of unique urls to total number of refs for each variable
            is greater than or equal to this number. (default 10)
        engine: Literal["fastparquet","pyarrow"]
            Engine choice for reading parquet files. (default is "fastparquet")
        z/{field}/refs.{record}.parqNÚfiler   )Ú	find_specrl   z)engine choice `pyarrow` is not installed.i   ©Úmaxsize)ÚrootrN   Ú
cat_threshrk   Ú
cache_sizeÚurlÚfsspecr
   ÚfsÚunstrip_protocolÚout_rootÚimportlib.utilro   ÚImportErrorr   rH   Ú_key_to_record)r   rr   rw   ry   rt   Úcategorical_thresholdrk   ro   s           r   r   zLazyReferenceMapper.__init__p   sí   € ðB ˆŒ	ØˆÔØ/ˆŒØˆŒØ$ˆŒØ”9Ð<Ñ<ˆŒà/1¨z•&Ô# FÑ+Ô+Ð+¸rˆŒØœ×0Ò0°Ð1F¸T¼YÑGÔGˆŒà,Ð,Ð,Ð,Ð,Ð,àŒ;˜)Ò#Ð#¨	¨	°)Ñ(<Ô(<Ð(DÝÐIÑJÔJÐJð #•y‘{”{ 4¤<Ñ0Ô0ˆŒØ5�i°Ð5Ñ5Ô5°dÔ6IÑJÔJˆÔÐÐr   c                 ój   — |dv r!|                       ¦   «          | j        |         S t          |¦  «        ‚)N)rG   Úrecord_sizerC   )ÚsetupÚ__dict__ÚAttributeError©r   Úitems     r   Ú__getattr__zLazyReferenceMapper.__getattr__§   s6   € ØÐ9Ð9Ð9Ø�JŠJ‰LŒLˆLà”= Ô&Ð&Ý˜TÑ"Ô"Ð"r   c                 óN  ‡ — i ‰ _         ‰ j                             d                     ‰ j        dg¦  «        ¦  «        ‰ j         d<   t          j        ‰ j         d         ¦  «        }|d         ‰ _        |d         ‰ _        t          ‰ j
        ¬¦  «        ˆ fd„¦   «         }|‰ _        d S )Nú/ú
.zmetadatar   Úmetadatarp   c                 ó*  •‡— ‰j                              | |¬¦  «        }t          j        ‰j                             |¦  «        ¦  «        }	 ‰j                             |‰j        ¬¦  «        Šˆfd„‰j	        D ¦   «         }n# t          $ r d}Y nw xY w|S )zcached parquet file loader)rM   Úrecord)rk   c                 óJ   •— i | ]}|‰|                               d ¬¦  «        “Œ S )T©Úcopy)Úto_numpy)Ú.0ÚcÚdfs     €r   ú
<dictcomp>z@LazyReferenceMapper.setup.<locals>.open_refs.<locals>.<dictcomp>¿   s-   ø€ ÐIÐIÐI¸˜˜2˜aœ5Ÿ>š>¨t˜>Ñ4Ô4ÐIÐIÐIr   N)ru   ÚformatÚioÚBytesIOrw   Úcat_filerg   Úread_parquetrk   ÚcolumnsÚOSError)rM   r‹   r3   ÚdataÚrefsr’   r   s        @€r   Ú	open_refsz,LazyReferenceMapper.setup.<locals>.open_refs¸   s£   øø€ ð ”8—?’?¨°v�?Ñ>Ô>ˆDÝ”:˜dœg×.Ò.¨tÑ4Ô4Ñ5Ô5ˆDðØ”W×)Ò)¨$°t´{Ð)ÑCÔC�ØIÐIÐIÐI¸b¼jÐIÑIÔI��øÝð ð ð Ø���ðøøøàˆKs   Á4B ÂBÂB)rG   rw   r—   Újoinrr   rD   Úloadsr   rC   r   rt   r�   )r   Úmetr�   s   `  r   r€   zLazyReferenceMapper.setup®   s®   ø€ ØˆŒØ$(¤G×$4Ò$4Ø�HŠH�d”i Ð.Ñ/Ô/ñ%
ô %
ˆŒ�LÑ!õ Œj˜œ \Ô2Ñ3Ô3ˆØ˜}Ô-ˆÔØ˜ZœˆŒõ 
˜4œ?Ð	+Ñ	+Ô	+ð		ð 		ð 		ð 		ñ 
,Ô	+ð		ð #ˆŒˆˆr   é'  c                 óˆ  — i |dœ}|€t          j        j        | fi |pi ¤Ž\  }} |                     | ¦  «        r|                     | d¬¦  «         |                     | d¬¦  «         |                     d                     | dg¦  «        t          j	        |¦  «         
                    ¦   «         ¦  «         t          | |fi |¤ŽS )aJ  Make empty parquet reference set

        First deletes the contents of the given directory, if it exists.

        Parameters
        ----------
        root: str
            Directory to contain the output; will be created
        storage_options: dict | None
            For making the filesystem to use for writing is fs is None
        fs: FileSystem | None
            Filesystem for writing
        record_size: int
            Number of references per parquet file
        kwargs: passed to __init__

        Returns
        -------
        LazyReferenceMapper instance
        ©r‰   r   NT©Ú	recursive©Úexist_okr‡   rˆ   )rv   ÚcoreÚ	url_to_fsÚexistsÚrmÚmakedirsÚpiperž   rD   rE   rF   ra   )rr   Ústorage_optionsrw   r   Úkwargsr    s         r   ÚcreatezLazyReferenceMapper.createÆ   sÈ   € ð, ¨kÐ:Ð:ˆØˆ:Ý”{Ô,¨TÐMÐM°oÐ6KÈÐMÐM‰HˆB�Ø�9Š9�T‰?Œ?ð 	(Ø�EŠE�$ $ˆEÑ'Ô'Ð'Ø
�Š�D 4ˆÑ(Ô(Ð(Ø
�Š�—’˜$ Ð-Ñ.Ô.µ´
¸3±´×0FÒ0FÑ0HÔ0HÑIÔIÐIÝ" 4¨Ð6Ð6¨vÐ6Ð6Ð6r   c                 óB   — d„ | j         D ¦   «         }t          |¦  «        S )zList top-level directoriesc              3   óx   K  — | ]5}|                      d ¦  «        °|                     dd¦  «        d         V — Œ6dS )ú.zr‡   rX   r   N)Ú
startswithÚrsplit©r�   Úps     r   ú	<genexpr>z.LazyReferenceMapper.listdir.<locals>.<genexpr>ç   sG   è è € ÐVÐV¨À1Ç<Â<ÐPTÑCUÔCUÐV�—’˜˜aÑ Ô  Ô#ÐVÐVÐVÐVÐVÐVr   )rC   Úset)r   Údirss     r   rH   zLazyReferenceMapper.listdirå   s#   € àVÐV¨T¬^ÐVÑVÔVˆÝ�4‰yŒyÐr   Ú Tc                 ó  ‡ ‡‡— ‰                      d¦  «        Š‰r‰dz   ndŠ‰                      ¦   «         }ˆfd„|D ¦   «         }|r“ˆfd„t          dgd„ ‰ j        D ¦   «         d„ ‰ j        D ¦   «         ¦  «        D ¦   «         }|du r$|                     |¦  «         t          |¦  «        S d	„ |D ¦   «         }ˆ fd
„|D ¦   «         }t          ||z   d„ ¬¦  «        S ‰}t          ˆfd„‰ j        D ¦   «         ˆfd„‰ j        D ¦   «         z   ¦  «        }ˆ fd„|D ¦   «         }‰                      |¦  «        }	|du rt          |¦  «        t          |	¦  «        z   S ‰  
                    |¦  «        }
d„ t          |	|
¦  «        D ¦   «         }||z   S )zShortcut file listingsr‡   r»   c                 ól   •— g | ]0}|                      ‰¦  «        rd |                     ‰¦  «        v¯.|‘Œ1S ©r‡   ©r´   Úlstrip)r�   r*   Úpathdashs     €r   ú
<listcomp>z*LazyReferenceMapper.ls.<locals>.<listcomp>ï   sP   ø€ ð 
ð 
ð 
àØ�|Š|˜HÑ%Ô%ð
ð +.°Q·X²X¸hÑ5GÔ5GÐ*GÐ*Gð à*GÐ*GÐ*Gr   c                 ól   •— h | ]0}|                      ‰¦  «        rd |                     ‰¦  «        v¯.|’Œ1S r¾   r¿   )r�   ÚfrÁ   s     €r   ú	<setcomp>z)LazyReferenceMapper.ls.<locals>.<setcomp>õ   sU   ø€ ð ð ð àð
 —<’< Ñ)Ô)ðð /2¸¿ºÀ(Ñ9KÔ9KÐ.KÐ.Kð ð /LÐ.KÐ.Kr   rˆ   c              3   ó   K  — | ]}|V — Œd S r   rQ   ©r�   Únames     r   r¸   z)LazyReferenceMapper.ls.<locals>.<genexpr>ù   s"   è è € Ð5Ð5˜d�TÐ5Ð5Ð5Ð5Ð5Ð5r   c              3   ó   K  — | ]}|V — Œd S r   rQ   rÇ   s     r   r¸   z)LazyReferenceMapper.ls.<locals>.<genexpr>ú   s"   è è € Ð2Ð2˜d�TÐ2Ð2Ð2Ð2Ð2Ð2r   Fc                 ó   — g | ]}|d ddœ‘Œ	S )Ú	directoryr   ©rÈ   ÚtypeÚsizerQ   rÇ   s     r   rÂ   z*LazyReferenceMapper.ls.<locals>.<listcomp>  s"   € ÐWÐWÐWÈ$ ¨kÀ1ÐEÐEÐWÐWÐWr   c           
      óœ   •— g | ]H}|d t          |‰j        v rt          j        ‰j        |         ¦  «        n‰j        |         ¦  «        dœ‘ŒIS ©rn   rÌ   ©rJ   rC   rD   rE   rG   ©r�   rÈ   r   s     €r   rÂ   z*LazyReferenceMapper.ls.<locals>.<listcomp>  su   ø€ ð ð ð ð ð !Ø"Ýà 4¤>Ð1Ð1õ œ
 4¤>°$Ô#7Ñ8Ô8Ð8à!œ[¨Ô.ñô ðð ðð ð r   c                 ó   — | d         S )NrÈ   rQ   )r^   s    r   ú<lambda>z(LazyReferenceMapper.ls.<locals>.<lambda>  s
   € ¸A¸f¼I€ r   ©Úkeyc                 óD   •— g | ]}|                      ‰› d �¦  «        ¯|‘ŒS r¾   ©r´   ©r�   rÈ   r3   s     €r   rÂ   z*LazyReferenceMapper.ls.<locals>.<listcomp>  s0   ø€ ÐLÐLÐL�d°·²À4À
À
À
Ñ0KÔ0KÐLˆTÐLÐLÐLr   c                 óD   •— g | ]}|                      ‰› d �¦  «        ¯|‘ŒS r¾   rØ   rÙ   s     €r   rÂ   z*LazyReferenceMapper.ls.<locals>.<listcomp>  s0   ø€ ÐKÐKÐK˜¨t¯ªÀ$¸z¸z¸zÑ/JÔ/JÐKˆtÐKÐKÐKr   c           
      óœ   •— g | ]H}|d t          |‰j        v rt          j        ‰j        |         ¦  «        n‰j        |         ¦  «        dœ‘ŒIS rÐ   rÑ   rÒ   s     €r   rÂ   z*LazyReferenceMapper.ls.<locals>.<listcomp>  su   ø€ ð 
ð 
ð 
ð ð ØÝà˜tœ~Ð-Ð-õ ”J˜tœ~¨dÔ3Ñ4Ô4Ð4àœ TÔ*ñô ðð ð
ð 
ð 
r   c                 ó<   — g | ]\  }}|d          ¯|d|d         dœ‘ŒS )r   rn   rY   rÌ   rQ   )r�   rÈ   Úrecs      r   rÂ   z*LazyReferenceMapper.ls.<locals>.<listcomp>%  sD   € ð 
ð 
ð 
á��cØ�1Œvð
Ø 6°3°r´7Ð;Ð;ð
ð 
ð 
r   )ÚrstriprH   r   rC   rG   ÚupdateÚsortedr¹   Ú_keys_in_fieldr0   rK   rU   )r   r3   ÚdetailÚdirnamesrº   ÚothersÚdirinfoÚfileinforM   rV   ÚrecsÚrecinforÁ   s   ``          @r   ÚlszLazyReferenceMapper.lsê   s;  øøø€ à�{Š{˜3ÑÔˆØ!%Ð-�4˜#‘:�:¨2ˆØ—<’<‘>”>ˆð
ð 
ð 
ð 
àð
ñ 
ô 
ˆð
 ð 	Gðð ð ð åØ!�NØ5Ð5 d¤nÐ5Ñ5Ô5Ø2Ð2 d¤kÐ2Ñ2Ô2ñô ðñ ô ˆFð ˜ˆˆØ—’˜dÑ#Ô#Ð#Ý˜f‘~”~Ð%ØWÐWÐRVÐWÑWÔWˆGðð ð ð ð #ðñ ô ˆHõ ˜' HÑ,Ð2EÐ2EÐFÑFÔFÐFØˆÝØLÐLÐLÐL˜dœnÐLÑLÔLØKÐKÐKÐK ¤ÐKÑKÔKñLñ
ô 
ˆð
ð 
ð 
ð 
ð ð
ñ 
ô 
ˆð ×"Ò" 5Ñ)Ô)ˆà�Uˆ?ˆ?Ý˜‘<”<¥$ t¡*¤*Ñ,Ð,Ø×)Ò)¨%Ñ0Ô0ˆð
ð 
å   t™_œ_ð
ñ 
ô 
ˆð
 ˜'Ñ!Ð!r   c                 ó(  ‡‡— || j         v r| j         |         S || j        v r1t          j        | j        |         ¦  «                             ¦   «         S d|vs|                      |¦  «        rt          |¦  «        ‚|                     dd¦  «        \  }}|                      |¦  «        \  }Š}| j          	                    ||fi ¦  «         	                    ‰d¦  «        }|€t          ‚|r|S |dk    rdS 	 |  
                    ||¦  «        Šn/# t          t          t          f$ r}t          |¦  «        |‚d}~ww xY wg d¢}ˆˆfd„|D ¦   «         }	|	d	         }
|
�|
S |	d         €t          d
¦  «        ‚|	dd…         ddgk    r
|	dd…         S |	dd…         S )zfGet the reference for one key

        Returns bytes, one-element list or three-element list.
        r‡   rX   FNr   r   ©r3   ÚoffsetrÎ   Úrawc                 ó8   •— g | ]}|‰v r‰|         ‰         nd ‘ŒS r   rQ   )r�   r‘   rœ   Úris     €€r   rÂ   z5LazyReferenceMapper._load_one_key.<locals>.<listcomp>H  s-   ø€ ÐIÐIÐI¸A A¨ I I�T˜!”W˜R”[�[°4ÐIÐIÐIr   rY   z1This reference does not exist or has been deletedé   )rG   rC   rD   rE   rF   Ú_is_metaÚKeyErrorrµ   r|   r.   r�   Ú
ValueErrorÚ	TypeErrorÚFileNotFoundError)r   rÖ   rM   Ú_r‹   Ú
chunk_sizeÚmaybeÚexcr™   Ú	selectionrí   rœ   rï   s              @@r   Ú_load_one_keyz!LazyReferenceMapper._load_one_key,  sÉ  øø€ ð
 �$”+ÐÐØ”;˜sÔ#Ð#Ø�D”NÐ"Ð"Ý”:˜dœn¨SÔ1Ñ2Ô2×9Ò9Ñ;Ô;Ð;Ø˜ˆ^ˆ^˜tŸ}š}¨SÑ1Ô1ˆ^Ý˜3‘-”-ÐØ—:’:˜c 1Ñ%Ô%‰ˆˆqØ!%×!4Ò!4°SÑ!9Ô!9Ñˆ��JØ”—’ ¨ °Ñ4Ô4×8Ò8¸¸UÑCÔCˆØˆ=åˆNØð 	ØˆLØ˜1Š_ˆ_Ø�3ð	)Ø—>’> %¨Ñ0Ô0ˆDˆDøÝ�IÕ'8Ð9ð 	)ð 	)ð 	)Ý˜3‘-”- SÐ(øøøøð	)øøøà3Ð3Ð3ˆØIÐIÐIÐIÐIÀÐIÑIÔIˆ	Ø˜ŒmˆØˆ?ØˆJØ�QŒ<ÐÝÐNÑOÔOÐOØ�Q�q�SŒ>˜a ˜VÒ#Ð#à˜R˜a˜R”=Ð à˜˜!˜Œ}Ðs   Ã4D ÄD7Ä"D2Ä2D7c                 ó2  — |                      dd¦  «        \  }}|                      |¦  «        }t          |¦  «        dk    rdS d„ |                     d¦  «        D ¦   «         }t	          ||¦  «        }|| j        z  }|| j        z  }||t          |¦  «        fS )z3Details needed to construct a reference for one keyr‡   rX   r   )r   r   r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rQ   )Úint©r�   r‘   s     r   rÂ   z6LazyReferenceMapper._key_to_record.<locals>.<listcomp>Z  s   € Ð6Ð6Ð6 •S˜‘V”VÐ6Ð6Ð6r   ú.)rµ   rI   rJ   Úsplitr_   r   )	r   rÖ   rM   ÚchunkrN   Ú	chunk_idxÚchunk_numberr‹   rï   s	            r   r|   z"LazyReferenceMapper._key_to_recordT  s¡   € à—z’z # qÑ)Ô)‰ˆˆuØ×+Ò+¨EÑ2Ô2ˆÝˆ{ÑÔ˜qÒ Ð Ø�7Ø6Ð6 U§[¢[°Ñ%5Ô%5Ð6Ñ6Ô6ˆ	Ý(¨°KÑ@Ô@ˆØ Ô!1Ñ1ˆØ˜DÔ,Ñ,ˆØ�r�3˜{Ñ+Ô+Ð+Ð+r   c                 ó´   — || j         vrC| j        |› d�         }d„ t          |d         |d         ¦  «        D ¦   «         }|pdg| j         |<   | j         |         S )z6The number of chunks along each axis for a given fieldz/.zarrayc                 óB   — g | ]\  }}t          j        ||z  ¦  «        ‘ŒS rQ   )ÚmathÚceil)r�   r^   r‘   s      r   rÂ   z8LazyReferenceMapper._get_chunk_sizes.<locals>.<listcomp>d  s7   € ð ð ð Ù%) Q¨•”	˜!˜a™%Ñ Ô ðð ð r   ÚshapeÚchunksrX   )rN   rC   rU   )r   rM   ÚzarrayÚ
size_ratios       r   rI   z$LazyReferenceMapper._get_chunk_sizes`  sz   € à˜Ô(Ð(Ð(Ø”^ uÐ$6Ð$6Ð$6Ô7ˆFðð Ý-0°¸´À&ÈÔBRÑ-SÔ-Sðñ ô ˆJð '1Ð&7°Q°CˆDÔ˜UÑ#ØÔ Ô&Ð&r   c                 ó
  — |                       ||¦  «        }t          t          |                     ¦   «         Ž ¦  «        }t	          |¦  «        dk    rd„ |D ¦   «         S t	          |¦  «        dk    r|d         S d„ |D ¦   «         S )z8The references for a given parquet file of a given fieldrð   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   ©r0   ©r�   Úts     r   r¸   z7LazyReferenceMapper._generate_record.<locals>.<genexpr>p  s(   è è € Ð(Ð( •D˜‘G”GÐ(Ð(Ð(Ð(Ð(Ð(r   rX   rí   c              3   ód   K  — | ]+}|d          st          |dd …         ¦  «        n|d          V — Œ,dS )rð   Nr  r  s     r   r¸   z7LazyReferenceMapper._generate_record.<locals>.<genexpr>v  sA   è è € ÐBÐB¸! q¨¤tÐ5•D˜˜2˜A˜2œ‘K”K�K°°1´ÐBÐBÐBÐBÐBÐBr   )r�   r(   rU   r)   rJ   )r   rM   r‹   rœ   Úits        r   Ú_generate_recordz$LazyReferenceMapper._generate_recordj  s‚   € à�~Š~˜e VÑ,Ô,ˆÝ•#�t—{’{‘}”}Ð%Ñ&Ô&ˆÝˆt‰9Œ9˜Š>ˆ>à(Ð( RÐ(Ñ(Ô(Ð(Ý�‰YŒY˜!Š^ˆ^à˜”;Ðð CÐB¸rÐBÑBÔBÐBr   c              #   óÜ   K  — d}|                       |¦  «        D ]}||z  }Œt          j        || j        z  ¦  «        }t	          |¦  «        D ]}|                      ||¦  «        E d{V —† ŒdS )zJLoad all the references within a field by iterating over the parquet filesrX   N)rI   r  r  r   Úranger  )r   rM   ÚnrecÚchr‹   s        r   rK   z)LazyReferenceMapper._generate_all_recordsx  s”   è è € àˆØ×'Ò'¨Ñ.Ô.ð 	ð 	ˆBØ�B‰JˆDˆDÝŒy˜ Ô 0Ñ0Ñ1Ô1ˆÝ˜D‘k”kð 	<ð 	<ˆFØ×,Ò,¨U°FÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð	<ð 	<r   c                 ó    — t          | ¦  «        S r   )r?   r   s    r   r)   zLazyReferenceMapper.values�  s   € Ý˜dÑ#Ô#Ð#r   c                 ó    — t          | ¦  «        S r   )rS   r   s    r   ÚitemszLazyReferenceMapper.items„  s   € Ý˜TÑ"Ô"Ð"r   c                 ó    — t          | ¦  «        S r   )Úidr   s    r   Ú__hash__zLazyReferenceMapper.__hash__‡  s   € Ý�$‰xŒxˆr   c                 ó,   — |                       |¦  «        S r   )rû   )r   rÖ   s     r   Ú__getitem__zLazyReferenceMapper.__getitem__Š  s   € Ø×!Ò! #Ñ&Ô&Ð&r   c                 ó”  — d|v r›|                       |¦  «        s†|                     dd¦  «        \  }}|                      |¦  «        \  }}}| j                             ||fi ¦  «        }|||<   t          |¦  «        | j        k    r|                      ||¦  «         d S d S t          |d¦  «        r'| 	                    ¦   «          
                    ¦   «         }	n,t          |t          ¦  «        r| 
                    ¦   «         }	n|}	|	| j        |<   t          j        |	¦  «        }
i | j                             |i ¦  «        ¥|
¥| j        |<   d S )Nr‡   rX   Úto_bytes)rñ   rµ   r|   rG   r8   rJ   r   ÚwriteÚhasattrr"  Údecoder/   ÚbytesrD   rŸ   rC   r.   )r   rÖ   ÚvaluerM   r  r‹   r]   rö   ÚsubdictrL   Ú	new_values              r   Ú__setitem__zLazyReferenceMapper.__setitem__�  sC  € Ø�#ˆ:ˆ:˜dŸmšm¨CÑ0Ô0ˆ:ØŸ:š: c¨1Ñ-Ô-‰LˆE�5Ø×.Ò.¨sÑ3Ô3‰LˆF�A�qØ”k×,Ò,¨e°V¨_¸bÑAÔAˆGØˆG�A‰JÝ�7‰|Œ|˜tÔ/Ò/Ð/Ø—
’
˜5 &Ñ)Ô)Ð)Ð)Ð)ð 0Ð/õ �u˜jÑ)Ô)ð Ø—n’nÑ&Ô&×-Ò-Ñ/Ô/��Ý˜E¥5Ñ)Ô)ð Ø—l’l‘n”n��à�Ø"ˆDŒK˜ÑÝœ
 3™œˆIØ"N T¤^×%7Ò%7¸¸RÑ%@Ô%@Ð"NÀIÐ"NˆDŒN˜3ÑÐÐr   c                 ó4   — |                       d¦  «        pd| v S )Nr³   z/.zrØ   rÕ   s    r   rñ   zLazyReferenceMapper._is_meta¡  s   € à�~Š~˜dÑ#Ô#Ð3 u° |Ð3r   c                 ó¤  — || j         v r
| j         |= d S || j        v r
| j        |= d S d|v r›|                      |¦  «        s†|                     dd¦  «        \  }}|                      |¦  «        \  }}}| j                              ||fi ¦  «        }d ||<   t          |¦  «        | j        k    r|                      ||¦  «         d S d S d | j         |<   d S )Nr‡   rX   )	rG   rC   rñ   rµ   r|   r8   rJ   r   r#  )r   rÖ   rM   rö   r‹   r]   r(  s          r   Ú__delitem__zLazyReferenceMapper.__delitem__¥  só   € Ø�$”+ÐÐØ”˜CÐ Ð Ð Ø�D”NÐ"Ð"Ø”˜sÐ#Ð#Ð#à�cˆzˆz $§-¢-°Ñ"4Ô"4ˆzØŸ:š: c¨1Ñ-Ô-‘��qØ#×2Ò2°3Ñ7Ô7‘�˜˜1Øœ+×0Ò0°%¸°À"ÑEÔE�Ø!�˜‘
Ý�w‘<”< 4Ô#3Ò3Ð3Ø—J’J˜u fÑ-Ô-Ð-Ð-Ð-ð 4Ð3ð $(�”˜CÑ Ð Ð r   c           	      ó`  — dd l }dd l}dd l}| j        ||f         }d}	t	          |¦  «        | j        k     r(	 |                      ||¦  «        }	n# t          $ r Y nw xY w|	r!|	d         }
|	d         }|	d         }|	d         }n||                     | j        |j	        d¬¦  «        }
| 
                    | j        d	¬¦  «        }| 
                    | j        d	¬¦  «        }|                     | j        |j	        d¬¦  «        }|                     ¦   «         D ]Ê\  }}t          |t          ¦  «        r|t          |
j        ¦  «        d
k    r/|d         |
j        j        vr|
                     |d         ¦  «        }
|d         |
|<   t	          |¦  «        dk    r|d         ||<   |d         ||<   Œ–|€d |
|<   d||<   d||<   d ||<   Œ­|j                             |¦  «        ||<   ŒË|                     |
|||dœd¬¦  «        }|j                             ¦   «         |j                             ¦   «         pdz  | j        k    r|d                              d
¦  «        |d<   dddœ}ddg}|p| j        › d|› d|› d�}| j                             |p| j        › d|› �d¬¦  «         | j        dk    rddi}n)| j        dk    rd||dœ}nt=          | j        › d�¦  «        ‚ |j        |f| j        |ptA          | j        dd ¦  «        dddœ|¤Ž | !                    ¦   «          | j         "                    ||f¦  «         d S )Nr   Fr3   rì   rÎ   rí   ÚO)ÚdtypeÚint64ÚcategoryrX   é   rë   r�   r&  Úutf8)rí   r3   r‡   z/refs.z.parqTr¦   rl   Úwrite_statisticsrj   )ÚstatsÚobject_encodingÚ	has_nullsz not supportedr®   Úzstd)rk   r®   ÚcompressionÚindex)#Úkerchunk.dfrc   rf   rG   rJ   r   r�   rš   ÚfullÚnanÚzerosr  r/   r0   r2   r0  Ú
categoriesÚadd_categoriesr’   Ú	_proc_rawÚ	DataFramer3   ÚcountÚnuniquers   Úastypery   rw   Úmkdirsrk   ÚNotImplementedErrorÚ
to_parquetÚgetattrÚclearÚpop)r   rM   r‹   Úbase_urlr®   Úkerchunkrd   rg   Ú	partitionÚoriginalr:   Úoffsetsr[   ÚrawsÚjr›   r’   r7  r8  ÚfnÚdf_backend_kwargss                        r   r#  zLazyReferenceMapper.write¶  sÖ  € àÐÐÐØÐÐÐØÐÐÐà”K ¨ Ô0ˆ	ØˆÝˆy‰>Œ>˜DÔ,Ò,Ð,ðØŸ>š>¨%°Ñ8Ô8��øÝð ð ð Ø�ðøøøð ð 		@Ø˜VÔ$ˆEØ˜xÔ(ˆGØ˜VÔ$ˆEØ˜E”?ˆDˆDà—G’G˜DÔ,¨b¬f¸C�GÑ@Ô@ˆEØ—h’h˜tÔ/°w�hÑ?Ô?ˆGØ—H’H˜TÔ-°W�HÑ=Ô=ˆEØ—7’7˜4Ô+¨R¬V¸3�7Ñ?Ô?ˆDØ —’Ñ(Ô(ð 	6ð 	6‰GˆAˆtÝ˜$¥Ñ%Ô%ð 6å˜œÑ$Ô$¨
Ò2Ð2Ø˜Qœ u¤{Ô'=Ð=Ð=à!×0Ò0°°a´Ñ9Ô9�EØ œ7��a‘Ý�t‘9”9˜q’=�=Ø!% a¤�G˜A‘JØ# Aœw�E˜!‘HøØ�à��a‘Ø�˜‘
Ø��a‘Ø��Q‘�ð #œ+×/Ò/°Ñ5Ô5��Q‘�à�\Š\àØ!ØØð	ð ð ð ñ 
ô 
ˆð Œ7�=Š=‰?Œ?˜bœgŸošoÑ/Ô/Ð4°1Ñ5¸¼ÒGÐGØ˜Fœ×*Ò*¨:Ñ6Ô6ˆBˆv‰JØ")°6Ð:Ð:ˆØ˜U�Oˆ	àÐ)˜DœMÐFÐF¨EÐFÐF¸ÐFÐFÐFˆØŒ�Š˜(Ð3 d¤mÐ=Ð=°eÐ=Ð=ÈˆÑMÔMÐMàŒ;˜)Ò#Ð#Ø!3°UÐ ;ÐÐØŒ[˜MÒ)Ð)àØ#2Ø&ð!ð !ÐÐõ &¨¬Ð&DÐ&DÐ&DÑEÔEÐEØˆŒØð	
à”;Ø+ð 9Ý�t”wÐ 1°4Ñ8Ô8ØØð	
ð 	
ð  ð	
ð 	
ð 	
ð 	�ŠÑÔÐØŒ�Š˜ ˜Ñ(Ô(Ð(Ð(Ð(s   ·A Á
AÁAc                 ó¦  — t          | j        ¦  «        D ]5}t          |t          ¦  «        r|\  }}|                      ||||¬¦  «         Œ6t          | j        ¦  «        D ]@}|dk    r8d|v r4t          j        | j                             |¦  «        ¦  «        | j        |<   ŒA| j        | j	        dœ}| j         
                    ¦   «          t          j        |¦  «                             ¦   «         | j        d<   | j                             d                     |p| j        dg¦  «        | j        d         ¦  «         | j                             ¦   «          dS )zŒOutput any modified or deleted keys

        Parameters
        ----------
        base_url: str
            Location of the output
        )rM  r®   rˆ   r³   r£   r‡   N)r0   rG   r/   r1   r#  rD   rŸ   rL  rC   r   rK  rE   rF   rw   r­   rž   ry   r�   Úcache_clear)r   rM  r®   ÚthingrM   r‹   Úkr    s           r   ÚflushzLazyReferenceMapper.flush  sT  € õ ˜$œ+Ñ&Ô&ð 	ð 	ˆEÝ˜%¥Ñ'Ô'ð Ø %‘��vØ—
’
ØØØ%Ø$3ð	 ñ ô ð øõ �d”kÑ"Ô"ð 	Cð 	CˆAØ�LÒ Ð  T¨Q Y YÝ$(¤J¨t¬{¯ª¸qÑ/AÔ/AÑ$BÔ$B�”˜qÑ!øØœ>¸$Ô:JÐKÐKˆØŒ×ÒÑÔÐÝ$(¤J¨s¡O¤O×$:Ò$:Ñ$<Ô$<ˆŒ�LÑ!ØŒ�ŠØ�HŠH�hÐ/ $¤-°Ð>Ñ?Ô?ØŒK˜Ô%ñ	
ô 	
ð 	
ð 	Œ×"Ò"Ñ$Ô$Ð$Ð$Ð$r   c                 ó2  — d}|                       ¦   «         D ]G}|                     d¦  «        r|dz  }Œ|t          j        |                      |¦  «        ¦  «        z  }ŒH|t          | j        ¦  «        z  }|t          d„ | j        D ¦   «         ¦  «        z  }|S )Nr   r   rX   c              3   óD   K  — | ]}t          |t          ¦  «        °d V — ŒdS )rX   N)r/   r1   )r�   rö   s     r   r¸   z.LazyReferenceMapper.__len__.<locals>.<genexpr>8  s1   è è € ÐHÐH˜1µ:¸aÅÑ3GÔ3GÐH�QÐHÐHÐHÐHÐHÐHr   )	rH   r´   r  ÚprodrI   rJ   rC   ÚsumrG   )r   rD  rM   s      r   Ú__len__zLazyReferenceMapper.__len__.  s¢   € àˆØ—\’\‘^”^ð 	Að 	AˆEØ×Ò Ñ$Ô$ð AØ˜‘
��à�œ 4×#8Ò#8¸Ñ#?Ô#?Ñ@Ô@Ñ@��Ø•�T”^Ñ$Ô$Ñ$ˆà•ÐHÐH ¤ÐHÑHÔHÑHÔHÑHˆØˆr   c              #   ó  K  — t          | j        ¦  «        }|                     | j        ¦  «         |D ]}t	          |t
          ¦  «        r|V — Œ|                      ¦   «         D ]"}|                      |¦  «        D ]
}|| v r|V — ŒŒ#d S r   )r¹   rC   rß   rG   r/   r2   rH   rá   )r   ÚmetasÚbitrM   rY  s        r   rO   zLazyReferenceMapper.__iter__;  s¬   è è € õ �D”NÑ#Ô#ˆØ�Š�T”[Ñ!Ô!Ð!Øð 	ð 	ˆCÝ˜#�sÑ#Ô#ð Ø�	�	�	øØ—\’\‘^”^ð 	ð 	ˆEØ×(Ò(¨Ñ/Ô/ð ð �Ø˜�9�9Ø�G�G�Gøðð	ð 	r   c                 óT   — 	 |                       |¦  «         dS # t          $ r Y dS w xY w)NTF)rû   rò   rƒ   s     r   Ú__contains__z LazyReferenceMapper.__contains__H  sB   € ð	Ø×Ò˜tÑ$Ô$Ð$Ø�4øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ™
'¦'c              #   óô   K  — |                       |¦  «        }t          |¦  «        dk    r	|dz   V — dS t          j        d„ |D ¦   «         Ž }|D ])}|dz   d                     d„ |D ¦   «         ¦  «        z   V — Œ*dS )z|List key names in given field

        Produces strings like "field/x.y" appropriate from the chunking of the array
        r   rA   Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   )r  )r�   r]   s     r   r¸   z5LazyReferenceMapper._keys_in_field.<locals>.<genexpr>X  s(   è è € Ð"AÐ"A°¥5¨¡8¤8Ð"AÐ"AÐ"AÐ"AÐ"AÐ"Ar   r‡   r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rQ   )r2   rÿ   s     r   rÂ   z6LazyReferenceMapper._keys_in_field.<locals>.<listcomp>Z  s   € Ð)>Ð)>Ð)>°Q­#¨a©&¬&Ð)>Ð)>Ð)>r   )rI   rJ   Ú	itertoolsÚproductrž   )r   rM   rN   ÚindsÚinds        r   rá   z"LazyReferenceMapper._keys_in_fieldO  s¯   è è € ð
 ×+Ò+¨EÑ2Ô2ˆÝˆ{ÑÔ˜qÒ Ð Ø˜$‘,ÐÐÐØˆFÝÔ Ð"AÐ"A°[Ð"AÑ"AÔ"AÐBˆØð 	@ð 	@ˆCØ˜#‘+ §¢Ð)>Ð)>¸#Ð)>Ñ)>Ô)>Ñ ?Ô ?Ñ?Ð?Ð?Ð?Ð?ð	@ð 	@r   )NNrh   ri   rj   )NNr¡   )r»   T©NN)!r!   r"   r#   Ú__doc__Úpropertyrd   rg   r   r   r…   r€   Ústaticmethodr°   rH   ré   rû   r|   rI   r  rK   r)   r  r  r   r*  rñ   r-  r#  rZ  r_  rO   rd  rá   rQ   r   r   ra   ra   [   s3  € € € € € ðYð Yð ðð ñ „Xðð
 ðð ñ „Xðð ØØØ Ø4Að5Kð 5Kð Ð0Ô1ð5Kð 5Kð 5Kð 5Kðn#ð #ð #ð#ð #ð #ð0 ð7ð 7ð 7ñ „\ð7ð<ð ð ð
@"ð @"ð @"ð @"ðD&ð &ð &ðP
,ð 
,ð 
,ð'ð 'ð 'ðCð Cð Cð<ð <ð <ð$ð $ð $ð#ð #ð #ðð ð ð'ð 'ð 'ðOð Oð Oð( ð4ð 4ñ „\ð4ð(ð (ð (ð"S)ð S)ð S)ð S)ðj!%ð !%ð !%ð !%ðFð ð ðð ð ðð ð ð@ð @ð @ð @ð @r   ra   c                   ó  ‡ — e Zd ZdZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 d(ˆ fd	„	Zd)d
„Zd)d„Zd)d„Z	d„ Z
d„ Zefd„Zd*d„Zd+d„Zd,d„Zd„ Zd,d„Zd„ Zd„ Zd„ Zd-d„Zd.d„Zd„ Zd„ Zd„ Zd.d„Zd/ˆ fd „	Zd!„ Zd"„ Zd#„ Zd0d%„Z d0d&„Z!d'„ Z"ˆ xZ#S )1ÚReferenceFileSystemaC  View byte ranges of some other file as a file system
    Initial version: single file system target, which must support
    async, and must allow start and end args in _cat_file. Later versions
    may allow multiple arbitrary URLs for the targets.
    This FileSystem is read-only. It is designed to be used with async
    targets (for now). We do not get original file details from the target FS.
    Configuration is by passing a dict of references at init, or a URL to
    a JSON file containing the same; this dict
    can also contain concrete data for some set of paths.
    Reference dict format:
    {path0: bytes_data, path1: (target_url, offset, size)}
    https://github.com/fsspec/kerchunk/blob/main/README.md

    simple_references: if True (default), no jinja interpreting is done,
        which is the safe option.
    r   FNTé ú  é @Brh   c                 ó¤  •—  t          ¦   «         j        di |¤Ž || _        |	| _        |
| _        i | _        i | _        i | _        || _        || _	        t          |t          ¦  «        �r t          di |p|pi ¤d|i¤Ž}t          j        j        |fi |¤Ž\  }}d|vr]|                     d¦  «        s|                     |¦  «        r3t$                               d|¦  «         t)          |||¬¦  «        | _        n‡t          j        |dfi |¤Ž5 }t$                               d|¦  «         t/          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |                      ||	¦  «         n|                      ||	¦  «         t          |t          ¦  «        rEd	„ |                     ¦   «         D ¦   «         | _        d| j        vrt7          d
¦  «        | j        d<   dS |�8t          |j        t:          ¦  «        r|j        d         n|j        }|| j        |<   |€{| j                             ¦   «         D ]a}t?          |¦  «        r
 |¦   «         }t          j                              |¦  «        \  }}|r"|| j        vrt7          |fi |pi ¤Ž}|| j        |<   Œb|€ž| j                             ¦   «         D ]„}t?          |¦  «        r
 |¦   «         }t          |tB          ¦  «        rT|d         rLt          j                              |d         ¦  «        \  }}|| j        vrt7          |fi |pi ¤Ž}|| j        |<    nŒ…|r"|| j        vrt7          |fi |pi ¤Ž}|| j        |<   |pt7          d
¦  «        | j        d<   | j                             ¦   «         D ]I\  }}|j"        stG          || j$        ¬¦  «        | j        |<   Œ+| j$        |j$        z  rtK          d¦  «        ‚ŒJdS )a  
        Parameters
        ----------
        fo : dict or str
            The set of references to use for this instance, with a structure as above.
            If str referencing a JSON file, will use fsspec.open, in conjunction
            with target_options and target_protocol to open and parse JSON at this
            location. If a directory, then assume references are a set of parquet
            files to be loaded lazily.
        target : str
            For any references having target_url as None, this is the default file
            target to use
        ref_storage_args : dict
            If references is a str, use these kwargs for loading the JSON file.
            Deprecated: use target_options instead.
        target_protocol : str
            Used for loading the reference file, if it is a path. If None, protocol
            will be derived from the given path
        target_options : dict
            Extra FS options for loading the reference file ``fo``, if given as a path
        remote_protocol : str
            The protocol of the filesystem on which the references will be evaluated
            (unless fs is provided). If not given, will be derived from the first
            URL that has a protocol in the templates or in the references, in that
            order.
        remote_options : dict
            kwargs to go with remote_protocol
        fs : AbstractFileSystem | dict(str, (AbstractFileSystem | dict))
            Directly provide a file system(s):
                - a single filesystem instance
                - a dict of protocol:filesystem, where each value is either a filesystem
                  instance, or a dict of kwargs that can be used to create in
                  instance for the given protocol

            If this is given, remote_options and remote_protocol are ignored.
        template_overrides : dict
            Swap out any templates in the references file with these - useful for
            testing.
        simple_templates: bool
            Whether templates can be processed with simple replace (True) or if
            jinja  is needed (False, much slower). All reference sets produced by
            ``kerchunk`` are simple in this sense, but the spec allows for complex.
        max_gap, max_block: int
            For merging multiple concurrent requests to the same remote file.
            Neighboring byte ranges will only be merged when their
            inter-range gap is <= ``max_gap``. Default is 64KB. Set to 0
            to only merge when it requires no extra bytes. Pass a negative
            number to disable merging, appropriate for local target files.
            Neighboring byte ranges will only be merged when the size of
            the aggregated range is <= ``max_block``. Default is 256MB.
        cache_size : int
            Maximum size of LRU cache, where cache_size*record_size denotes
            the total number of references that can be loaded in memory at once.
            Only used for lazily loaded references.
        kwargs : passed to parent class
        r<   z.json)ÚparqÚparquetr‡   z$Open lazy reference dict from URL %s)rw   rt   ÚrbzRead reference from URL %sNc           	      óœ   — i | ]I\  }}|t          |t          ¦  «        r,t          j        |                     d d¦  «        d         fi |¤Žn|“ŒJS )ú:rX   r   )r/   Údictrv   r
   r  )r�   rY  Úoptss      r   r“   z0ReferenceFileSystem.__init__.<locals>.<dictcomp>Ý  sl   € ð ð ð ñ �A�tð å! $­Ñ-Ô-ð•FÔ% a§g¢g¨c°1¡o¤o°aÔ&8ÐAÐA¸DÐAÐAÐAàð	ð ð r   rn   r   )ÚasynchronouszEReference-FS's target filesystem must have same value of asynchronousrQ   )&r   r   r   Útemplate_overridesÚsimple_templatesÚ	templatesÚfssÚ	_dircacheÚmax_gapÚ	max_blockr/   r2   rz  rv   r¨   r©   ÚendswithÚisdirÚloggerÚinfora   r4   r   rD   ÚloadÚ_process_referencesr  r
   r<   r1   r)   Úcallabler   r0   Ú
async_implr   r|  ró   )r   Úfor   Úref_storage_argsÚtarget_protocolÚtarget_optionsÚremote_protocolÚremote_optionsrw   r}  r~  r‚  rƒ  rt   r¯   ÚdicÚref_fsÚfo2rÄ   Útextr5   r<   rö   rY  r   s                           €r   r   zReferenceFileSystem.__init__r  s¦  ø€ ðR 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒØ"4ˆÔØ 0ˆÔØˆŒØˆŒØˆŒØˆŒØ"ˆŒÝ�b�#ÑÔñ 	=Ýð ð Ø#Ð; ~Ð;¸ðð ØGVðð ð ˆCõ !œ+Ô/°Ð:Ð:°cÐ:Ð:‰KˆF�CØ˜cÐ!Ð!Ø—’Ð4Ñ5Ô5ð "Ø9?¿ºÀcÑ9JÔ9Jð "õ —’ÐBÀBÑGÔGÐGÝ"5ØØØ)ð#ñ #ô #�”�õ ”[  TÐ1Ð1¨SÐ1Ð1ð (°QÝ—K’KÐ <¸bÑAÔAÐAÝœ9 Q™<œ<�Dð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð ×(Ò(¨Ð/AÑBÔBÐBÐBð ×$Ò$ RÐ);Ñ<Ô<Ð<Ý�b�$ÑÔð 	ðð ð  "Ÿxšx™zœzðñ ô ˆDŒHð ˜4œ8Ð#Ð#Ý!+¨FÑ!3Ô!3�”˜‘ØˆFØˆ>õ #-¨R¬[½%Ñ"@Ô"@ÐQ�”˜A”�ÀbÄkð ð )+ˆDŒH�_Ñ%àÐ"à”~×,Ò,Ñ.Ô.ð ,ð ,�Ý˜C‘=”=ð  Ø˜#™%œ%�CÝ$œk×8Ò8¸Ñ=Ô=‘�˜!Øð , °´Ð 8Ð 8Ý# HÐGÐG°Ð1EÀ2ÐGÐG�BØ)+�D”H˜XÑ&øØÐ"ð ”×-Ò-Ñ/Ô/ð 	ð 	�Ý˜C‘=”=ð  Ø˜#™%œ%�CÝ˜c¥4Ñ(Ô(ð ¨S°¬Vð Ý"(¤+×"<Ò"<¸SÀ¼VÑ"DÔ"D‘K�H˜aØ t¤xÐ/Ð/Ý'¨ÐKÐK°^Ð5IÀrÐKÐK˜Ø-/˜œ Ñ*à˜øàð 	+˜°d´hÐ>Ð>Ý˜OÐFÐF°Ð0DÀ"ÐFÐFˆBØ(*ˆDŒH�_Ñ%àÐ1�z¨&Ñ1Ô1ˆŒ�‰à”H—N’NÑ$Ô$ð 	ð 	‰DˆAˆqØ”<ð Ý4°QÀTÔEVÐWÑWÔW�”˜‘�ØÔ" Q¤^Ñ3ð Ý ð&ñô ð ðð	ð 	s   Ä0EÅEÅEc           
      óŠ  — |                       |¦  «        }t                               d|› �¦  «         	 | j        |         }n"# t          $ r}t          |¦  «        |‚d }~ww xY wt          |t          ¦  «        r|                     ¦   «         }t          |d¦  «        r| 
                    ¦   «         }t          |t          ¦  «        rTt                               d|› d�¦  «         |                     d¦  «        rt          j        |dd …         ¦  «        }|d d fS t          |¦  «        dk    r-t                               d|› d|› �¦  «         |d	         }||}}n]|\  }}	}
t                               d|› d
|› d|	› d|
› �¦  «         |	|
z   }|�|d	k    r|	|z   }n||z   }n|	}|�|d	k    r|	|z   }n||z   }n|}|€| j        }|||fS )Nzcat: r"  zReference: z, type bytesó   base64:é   rX   z, whole file => r   z => z	, offset z, size )Ú_strip_protocolr†  Údebugr4   rò   rõ   r/   r2   rF   r$  r"  r&  r´   Úbase64Ú	b64decoderJ   r   )r   r3   ÚstartÚendÚpartrù   ru   Ústart1Úend1Ústart0rÎ   Úend0s               r   Ú_cat_commonzReferenceFileSystem._cat_common  s  € Ø×#Ò# DÑ)Ô)ˆÝ�Š�^˜T�^�^Ñ$Ô$Ð$ð	3Ø”? 4Ô(ˆDˆDøÝð 	3ð 	3ð 	3Ý# DÑ)Ô)¨sÐ2øøøøð	3øøøå�d�CÑ Ô ð 	!Ø—;’;‘=”=ˆDÝ�4˜Ñ$Ô$ð 	#Ø—=’=‘?”?ˆDÝ�d�EÑ"Ô"ð 	$Ý�LŠLÐ9 tÐ9Ð9Ð9Ñ:Ô:Ð:Ø�Š˜zÑ*Ô*ð 2ÝÔ'¨¨Q¨R¨R¬Ñ1Ô1�Ø˜˜tÐ#Ð#åˆt‰9Œ9˜Š>ˆ>Ý�LŠLÐC tÐCÐC¸TÐCÐCÑDÔDÐDØ�q”'ˆCØ  #�DˆFˆFà $ÑˆC�˜Ý�LŠLÐT tÐTÐT°ÐTÐT¸vÐTÐTÈdÐTÐTÑUÔUÐUØ˜D‘=ˆDàÐ Ø˜A’:�:Ø# e™^�F�Fà! E™\�F�Fà�ØˆØ˜!’8�8Ø! C™<�D�Dà #™:�D�Dà�Øˆ;Ø”+ˆCØ�F˜DÐ Ð s   ´A Á
A!ÁAÁA!c              ‹   ó:  K  — |                       |||¬¦  «        \  }}}t          |t          ¦  «        r
|||…         S t          |¦  «        \  }}		 | j        |                              |||¬¦  «        ƒ d {V —†S # t          $ r}
t          ||¦  «        |
‚d }
~
ww xY w©N)r�  rž  )r¤  r/   r&  r   r€  Ú	_cat_fileÚ	Exceptionr   ©r   r3   r�  rž  r¯   Úpart_or_urlr¢  r£  r<   rö   Úes              r   r§  zReferenceFileSystem._cat_fileA  sß   è è € Ø$(×$4Ò$4°TÀÈCÐ$4Ñ$PÔ$PÑ!ˆ�V˜TÝ�k¥5Ñ)Ô)ð 	*Ø˜u S˜yÔ)Ð)Ý$ [Ñ1Ô1‰ˆ�!ð	BØœ (Ô+×5Ò5Ø 6¨tð 6ñ ô ð ð ð ð ð ð ð øõ ð 	Bð 	Bð 	BÝ'¨¨kÑ:Ô:ÀÐAøøøøð	Bøøøs   Á(A: Á:
BÂBÂBc                 ó*  — |                       |||¬¦  «        \  }}}t          |t          ¦  «        r
|||…         S t          |¦  «        \  }}		 | j        |                              |||¬¦  «        S # t          $ r}
t          ||¦  «        |
‚d }
~
ww xY wr¦  )r¤  r/   r&  r   r€  r—   r¨  r   r©  s              r   r—   zReferenceFileSystem.cat_fileM  s²   € Ø$(×$4Ò$4°TÀÈCÐ$4Ñ$PÔ$PÑ!ˆ�V˜TÝ�k¥5Ñ)Ô)ð 	*Ø˜u S˜yÔ)Ð)Ý$ [Ñ1Ô1‰ˆ�!ð	BØ”8˜HÔ%×.Ò.¨{À&ÈdÐ.ÑSÔSÐSøÝð 	Bð 	Bð 	BÝ'¨¨kÑ:Ô:ÀÐAøøøøð	Bøøøs   Á"A2 Á2
BÁ<BÂBc                 ó   — || j         |<   dS )z2Temporarily add binary data or reference as a fileN©r4   )r   r3   r'  rö   s       r   Ú	pipe_filezReferenceFileSystem.pipe_fileW  s   € à %ˆŒ˜ÑÐÐr   c              ‹   ó  K  — |                       |¦  «        rt          j        |d¬¦  «        S |                      |¦  «        ƒ d {V —†}t	          |d¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©NTr¦   Úwb)r…  Úosr¬   r§  r   r#  )r   ÚrpathÚlpathr¯   r›   rÄ   s         r   Ú	_get_filezReferenceFileSystem._get_file[  sÒ   è è € Ø�:Š:�eÑÔð 	5Ý”;˜u¨tÐ4Ñ4Ô4Ð4Ø—^’^ EÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*ˆÝ�%˜ÑÔð 	 !Ø�GŠG�D‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁA<Á<B ÂB c                 óÄ  — |                       |¦  «        rt          j        |d¬¦  «        S  | j        |fi |¤Ž}|                     t          |¦  «        ¦  «         t          |¦  «        r|                     |¦  «         n=t          |d¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   | 	                    t          |¦  «        ¦  «         d S r±  )
r…  r³  r¬   r—   Úset_sizerJ   r   r#  r   Úabsolute_update)r   r´  rµ  Úcallbackr¯   r›   rÄ   s          r   Úget_filezReferenceFileSystem.get_fileb  s  € Ø�:Š:�eÑÔð 	5Ý”;˜u¨tÐ4Ñ4Ô4Ð4ØˆtŒ}˜UÐ-Ð- fÐ-Ð-ˆØ×Ò�#˜d™)œ)Ñ$Ô$Ð$Ý�eÑÔð 	Ø�KŠK˜ÑÔÐÐå�e˜TÑ"Ô"ð  aØ—’˜‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à× Ò ¥ T¡¤Ñ+Ô+Ð+Ð+Ð+s   ÂB3Â3B7Â:B7c                 óŽ  ‡ — |r‰                       d¦  «         ‰                      ||¬¦  «        }t          j        dd¬¦  «        }t	          ||¦  «        }|r"‰                      ˆ fd„|D ¦   «         ¦  «        }n‰                      |¦  «        }t          ||¦  «        D ]%\  }}	||v r|                     |	||         ¦  «         Œ&d S )Nr»   r¤   rn   T)Ú
auto_mkdirc                 ó>   •— g | ]}‰                      |¦  «        °|‘ŒS rQ   )r…  )r�   Úrr   s     €r   rÂ   z+ReferenceFileSystem.get.<locals>.<listcomp>v  s(   ø€ ÐCÐCÐC 1°T·Z²ZÀ±]´]ÐC˜QÐCÐCÐCr   )ré   Úexpand_pathrv   r
   r   ÚcatrU   r¯  )
r   r´  rµ  r¥   r¯   rw   Útargetsr›   ÚremoteÚlocals
   `         r   r.   zReferenceFileSystem.getn  sÞ   ø€ Øð 	à�GŠG�B‰KŒKˆKØ× Ò  °)Ð Ñ<Ô<ˆÝÔ˜v°$Ð7Ñ7Ô7ˆÝ˜e UÑ+Ô+ˆØð 	#Ø—8’8ÐCÐCÐCÐC¨ÐCÑCÔCÑDÔDˆDˆDà—8’8˜E‘?”?ˆDÝ  ¨Ñ0Ô0ð 	2ð 	2‰MˆF�EØ˜ˆ~ˆ~Ø—’˜U D¨¤LÑ1Ô1Ð1øð	2ð 	2r   Úraisec           	      ó°  — t          |t          ¦  «        r	|rt          ‚t          |t          ¦  «        r"|st	          d„ |D ¦   «         ¦  «        rt          ‚t          || j        ¦  «        }i }|                     ¦   «         D �]\  }}| j        |         }	g g g g f\  }
}}}|D ]·}	 |  	                    |¦  «        \  }}}t          |t          t          f¦  «        sŒ9	 |
                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         Œ�# t          $ r}|dk    r‚ |dk    r|||<   Y d }~Œ°d }~ww xY wg }g }g }g }t          ¦   «         }t          |
|||¦  «        D ]�\  }}}}t          |t          ¦  «        r|||<   Œ"|€i|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         ŒŽt          |
|||¦  «        D ]a\  }}}}|�X||vrT|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         Œbt!          t          |¦  «        t          |¦  «        t          |¦  «        d| j        | j        ¬¦  «        \  }}}|	                     |||¦  «        }t          |
|||¦  «        D ]›\  }}}}||v rŒt          ||||¦  «        D ]|\  }}}}||k    r-|�|€)t          |t(          ¦  «        r|||<   Œ,|||…         ||<   Œ:||k    r<||k    r6||k    r0t          |t(          ¦  «        r|||<   Œg|||z
  ||z
  pd …         ||<   Œ}Œœ�Œ|                     ¦   «                              ¦   «         D ]`\  } }!t          |!t(          ¦  «        rF| | j        v r=||          }"t-          | | j        |          ¦  «        }#|"|#_        |dk    r|#‚|dk    r|#|| <   Œat1          |¦  «        dk    r(t          |t          ¦  «        rd|vrt3          |¦  «        S |S )Nc              3   ó   K  — | ]}d |v V — Œ	dS )Ú*NrQ   r¶   s     r   r¸   z*ReferenceFileSystem.cat.<locals>.<genexpr>€  s&   è è € Ð7OÐ7OÀQ¸¸q¸Ð7OÐ7OÐ7OÐ7OÐ7OÐ7Or   rÅ  ÚomitT)Úsortr‚  rƒ  rX   rÈ  )r/   r2   rH  r0   Úanyr=   r4   r  r€  r¤  r&  r9   rõ   r¹   rU   Úaddr   r‚  rƒ  Ú
cat_rangesr¨  rŽ   r   Ú	__cause__rJ   r+   )$r   r3   r¥   Úon_errorr¯   Ú
proto_dictr;   Úprotor:   rw   ÚurlsÚstartsÚendsÚvalid_pathsr·   Úur^   r«  ÚerrÚurls2Ústarts2Úends2Úpaths2Úwhole_filesÚ	new_pathsÚ
new_startsÚnew_endsÚ	bytes_outrd   ÚnsÚneÚbrY  ÚvÚexÚnew_exs$                                       r   rÁ  zReferenceFileSystem.cat}  sï  € Ý�d�CÑ Ô ð 	& Yð 	&Ý%Ð%Ý�d�DÑ!Ô!ð 	& yð 	&µCÐ7OÐ7OÈ$Ð7OÑ7OÔ7OÑ4OÔ4Oð 	&Ý%Ð%å% d¨D¬OÑ<Ô<ˆ
ØˆØ&×,Ò,Ñ.Ô.ð I	Bñ I	B‰LˆE�5Ø”˜%”ˆBØ.0°"°b¸"¨nÑ+ˆD�&˜$ Øð *ð *�ð*Ø"×.Ò.¨qÑ1Ô1‘G�A�q˜!Ý% a­%µ¨Ñ6Ô6ð !à ð!ð —K’K ‘N”N�NØ—M’M !Ñ$Ô$Ð$Ø—K’K ‘N”N�NØ×&Ò& qÑ)Ô)Ð)Ð)øõ )ð %ð %ð %Ø 7Ò*Ð*ØØ 6Ò)Ð)Ø!$˜˜A™øøøøøøøøøð	%øøøð ˆEØˆGØˆEØˆFÝ™%œ%ˆKÝ! $¨°°kÑBÔBð %ð %‘
��1�a˜Ý˜a¥Ñ'Ô'ð 
%à�C˜‘F�FØ�Yð  —O’O AÑ&Ô&Ð&Ø—L’L ‘O”O�OØ—N’N 1Ñ%Ô%Ð%Ø—L’L ‘O”O�OØ—M’M !Ñ$Ô$Ð$øÝ! $¨°°kÑBÔBð %ð %‘
��1�a˜à�= Q¨kÐ%9Ð%9Ø—L’L ‘O”O�OØ—N’N 1Ñ%Ô%Ð%Ø—L’L ‘O”O�OØ—M’M !Ñ$Ô$Ð$øõ /BÝ�U‘”Ý�W‘”Ý�U‘”ØØœØœ.ð/ñ /ô /Ñ+ˆI�z 8ð Ÿš i°¸XÑFÔFˆIõ " $¨°°kÑBÔBð Bð B‘
��1�a˜Ø˜�8�8ØÝ%(¨°JÀÈ)Ñ%TÔ%Tð 
Bð 
B‘M�B˜˜B Ø˜Q’w�w B J°"°*Ý% a­Ñ3Ô3ð ,Ø%&˜C ™F˜Fà%& q¨ s¤V˜C ™F˜FØ˜qš˜ Q¨"¢W W°°b²°Ý% a­Ñ3Ô3ð BØ%&˜C ™F˜Fà%& q¨2¡v°°R±Ð0@¸DÐ'@Ô%A˜C ™Føð
BñBð —H’H‘J”J×$Ò$Ñ&Ô&ð 		$ð 		$‰DˆAˆqå˜!�YÑ'Ô'ð $¨A°´Ð,@Ð,@Ø˜”V�Ý.¨q°$´/À!Ô2DÑEÔE�Ø#%�Ô Ø˜wÒ&Ð&Ø �LØ Ò'Ð'Ø#�C˜‘Føåˆs‰8Œ8�qŠ=ˆ=�Z¨­cÑ2Ô2ˆ=°sÀ$°°Ý˜#‘;”;ÐØˆ
s   Â$5D0Ä0
EÄ:EÅEc                 óÂ   — |                      dd ¦  «        }|€|                      |¦  «         d S |dk    r|                      ||¬¦  «         d S t          d|› �¦  «        ‚)NÚversionrX   )r}  z Unknown reference spec version: )r.   Ú_process_references0Ú_process_references1ró   )r   r4   r}  Úverss       r   r‰  z'ReferenceFileSystem._process_referencesß  st   € Ø�~Š~˜i¨Ñ.Ô.ˆØˆ<Ø×%Ò% jÑ1Ô1Ð1Ð1Ð1Ø�QŠYˆYØ×%Ò% jÐEWÐ%ÑXÔXÐXÐXÐXåÐFÀÐFÐFÑGÔGÐGr   c                 óz   — t          |t          ¦  «        rd„ |                     ¦   «         D ¦   «         }|| _        dS )z&Make reference dict for Spec Version 0c                 ól   — i | ]1\  }}|t          |t          ¦  «        rt          j        |¦  «        n|“Œ2S rQ   )r/   rz  rD   rE   )r�   rÖ   rL   s      r   r“   z<ReferenceFileSystem._process_references0.<locals>.<dictcomp>ï  sI   € ð ð ð á�C˜ð ­
°3½Ñ(=Ô(=ÐF•T”Z ‘_”_�_À3ðð ð r   N)r/   rz  r  r4   )r   r4   s     r   ré  z(ReferenceFileSystem._process_references0ê  sK   € å�j¥$Ñ'Ô'ð 	ðð à *× 0Ò 0Ñ 2Ô 2ðñ ô ˆJð %ˆŒˆˆr   c                 óò  ‡ ‡— ‰ j         r‰ j        rdd lŠi ‰ _        ‰                      |                     di ¦  «        ¦  «         t          d¦  «        ˆˆ fd„¦   «         }|                     di ¦  «                             ¦   «         D �],\  }}t          |t          ¦  «        rD| 
                    d¦  «        r$t          j        |dd …         ¦  «        ‰ j        |<   |‰ j        |<   Œ_t          |t          ¦  «        rt          j        |¦  «        ‰ j        |<   Œ‘‰ j        rŠ|d         }d|v rM‰ j         r; |                     dd	¦  «                             d
d¦  «        j        di ‰ j        ¤Ž}n ||¦  «        }t%          |¦  «        dk    r|gn||d         |d         g‰ j        |<   �Œ"|‰ j        |<   �Œ.‰ j                             ‰                      |                     dg ¦  «        ¦  «        ¦  «         d S )Nr   r  iè  c                 ó|   •—  ‰j                              ¦   «                              | ¦  «        j        di ‰j        ¤ŽS ©NrQ   )ÚsandboxÚSandboxedEnvironmentÚfrom_stringÚrenderr  )rÖ  Újinja2r   s    €€r   Ú_render_jinjaz?ReferenceFileSystem._process_references1.<locals>._render_jinjaû  sD   ø€ ð�”×3Ò3Ñ5Ô5ß’˜Q‘”Üð*ð *àœ.ð*ð *ðr   rœ   zbase64:r˜  ú{{Ú{z}}Ú}rX   r3  ÚgenrQ   )r~  r  Újinja2.sandboxr4   Ú_process_templatesr.   r   r  r/   r2   r´   r›  rœ  rz  rD   rE   Úreplacer”   rJ   rß   Ú_process_gen)r   r4   r}  rö  rY  rä  rÖ  rõ  s   `      @r   rê  z(ReferenceFileSystem._process_references1õ  s  øø€ ØÔ$ð 	"¨¬ð 	"Ø!Ð!Ð!Ð!ØˆŒØ×Ò 
§¢¨{¸BÑ ?Ô ?Ñ@Ô@Ð@å	�4‰Œð	ð 	ð 	ð 	ð 	ñ 
Œð	ð —N’N 6¨2Ñ.Ô.×4Ò4Ñ6Ô6ð 	'ñ 	'‰DˆAˆqÝ˜!�SÑ!Ô!ð 'Ø—<’< 	Ñ*Ô*ð AÝ)/Ô)9¸!¸A¸B¸B¼%Ñ)@Ô)@�D”O AÑ&Ø%&�” Ñ"Ð"Ý˜A�tÑ$Ô$ð 'Ý%)¤Z°¡]¤]�” Ñ"Ð"Ø”ð 'Ø�a”D�Ø˜1�9�9ØÔ,ð -ð$˜AŸIšI d¨CÑ0Ô0ß$šW T¨3Ñ/Ô/Ü#ð6ð 6à&*¤nð6ð 6ð ˜ð *˜M¨!Ñ,Ô,˜Ý,/°©F¬F°aªK¨K a S S¸aÀÀ1ÄÀqÈÄt¸_�” Ñ"Ñ"à%&�” Ñ"Ñ"ØŒ×Ò˜t×0Ò0°·²ÀÀrÑ1JÔ1JÑKÔKÑLÔLÐLÐLÐLr   c                 óÐ   ‡— i | _         | j        �|                     | j        ¦  «         |                     ¦   «         D ]'\  }}d|v rdd lŠ|fˆfd„	| j         |<   Œ|| j         |<   Œ(d S )Nr÷  r   c                 ór   •—  ‰j                              ¦   «                              | ¦  «        j        di |¤ŽS rð  )rñ  rò  ró  rô  )Útempr¯   rõ  s     €r   rÔ   z8ReferenceFileSystem._process_templates.<locals>.<lambda>#  sA   ø€ ð .¨V¬^×-PÒ-PÑ-RÔ-Rß ’[ Ñ&Ô&Üð.&ð .&à$ð.&ð .&€ r   )r  r}  rß   r  rû  )r   ÚtmprY  rä  rõ  s       @r   rü  z&ReferenceFileSystem._process_templates  s    ø€ ØˆŒØÔ"Ð.Ø�JŠJ�tÔ.Ñ/Ô/Ð/Ø—I’I‘K”Kð 
	&ð 
	&‰DˆAˆqØ�qˆyˆyØ%Ð%Ð%Ð%ð !"ð &ð &ð &ð &ð &ð ”˜qÑ!Ð!ð %&�”˜qÑ!Ð!ð
	&ð 
	&r   c           	      ó–  ‡— i }| j         r|S |D �]¸}d„ |d                              ¦   «         D ¦   «         Šˆfd„t          j        ‰                     ¦   «         Ž D ¦   «         }|D �]a}dd l} |j                             ¦   «                              |d         ¦  «        j	        d
i |¤| j
        ¤Ž} |j                             ¦   «                              |d         ¦  «        j	        d
i |¤| j
        ¤Ž}d|v r°d|v r¬t           |j                             ¦   «                              |d         ¦  «        j	        d
i |¤| j
        ¤Ž¦  «        }	t           |j                             ¦   «                              |d         ¦  «        j	        d
i |¤| j
        ¤Ž¦  «        }
||	|
g||<   �ŒCd|v d|v z  rt          d	¦  «        ‚|g||<   �Œc�Œº|S )Nc                 óÂ   — i | ]\\  }}|t          |t          ¦  «        r|n>t          |                     d d¦  «        |d         |                     dd¦  «        ¦  «        “Œ]S )r�  r   ÚstopÚsteprX   )r/   r0   r  r.   )r�   rY  rä  s      r   r“   z4ReferenceFileSystem._process_gen.<locals>.<dictcomp>/  st   € ð ð ð ñ �A�qð å! !¥TÑ*Ô*ðO�A�Aå˜qŸušu W¨aÑ0Ô0°!°F´)¸Q¿UºUÀ6È1Ñ=MÔ=MÑNÔNð	ð ð r   Ú
dimensionsc              3   óv   •K  — | ]3}t          t          ‰                     ¦   «         |¦  «        ¦  «        V — Œ4d S r   )rz  rU   rV   )r�   r)   Ú	dimensions     €r   r¸   z3ReferenceFileSystem._process_gen.<locals>.<genexpr>7  sS   øè è € ð ð àõ •S˜ŸšÑ)Ô)¨6Ñ2Ô2Ñ3Ô3ðð ð ð ð ð r   r   rÖ   ru   rì   Úlengthz^Both 'offset' and 'length' are required for a reference generator entry if either is provided.rQ   )r~  r  rh  ri  r)   rû  rñ  rò  ró  rô  r  rþ   ró   )r   Úgensr;   rú  ÚproductsÚprrõ  rÖ   ru   rì   r
  r	  s              @r   rþ  z ReferenceFileSystem._process_gen*  ss  ø€ ØˆØÔ ð 	ØˆJØð ,	%ñ ,	%ˆCðð ð   Ô-×3Ò3Ñ5Ô5ðñ ô ˆIðð ð ð å'Ô/°×1AÒ1AÑ1CÔ1CÐDðñ ô ˆHð ð %ñ %�Ø%Ð%Ð%Ð%ð�F”N×7Ò7Ñ9Ô9ß ’[  U¤Ñ,Ô,Üð4ð 4à ð4à$(¤Nð4ð 4ð ð�F”N×7Ò7Ñ9Ô9ß ’[  U¤Ñ,Ô,Üð4ð 4à ð4à$(¤Nð4ð 4ð ð
  �O�O¨(°c¨/¨/Ý ð ˜œ×;Ò;Ñ=Ô=ß$š S¨¤]Ñ3Ô3Üð8ð 8à"$ð8à(,¬ð8ð 8ñô �Fõ
 !ð ˜œ×;Ò;Ñ=Ô=ß$š S¨¤]Ñ3Ô3Üð8ð 8à"$ð8à(,¬ð8ð 8ñô �Fð
 !$ V¨VÐ4�C˜‘H‘HØ #�o¨(°c¨/Ñ:ð %Ý$ðKñô ð ð
 !$˜u�C˜‘H‘Hñ?%ð@ ˆ
r   c                 ó  — dg i| _         | j                             ¦   «         }|D �]_\  }}t          |t          t
          f¦  «        st          |d¦  «        rt          |¦  «        }nt          |¦  «        dk    rd }n|\  }}}d|v r|                     dd¦  «        d         nd}|}|g}|r>|| j         vr5|  	                    |¦  «        }| 
                    |¦  «         |r	|| j         v°5|                     ¦   «          t          ||dd …         ¦  «        D ]I\  }	}
|
| j         vsJ ‚|	| j         v sJ ‚| j         |	          
                    |
dddœ¦  «         g | j         |
<   ŒJ| j         |          
                    |d|dœ¦  «         �Œad S )	Nr»   r"  rX   r‡   r   rË   rÌ   rn   )Údircacher4   r  r/   r&  r2   r$  rJ   rµ   Ú_parentr9   ÚreverserU   )r   r  r3   rŸ  rÎ   rö   ÚparÚpar0ÚsubdirsÚparentÚchilds              r   Ú_dircache_from_itemsz(ReferenceFileSystem._dircache_from_items]  sÖ  € Ø˜R˜ˆŒØŒ_×"Ò"Ñ$Ô$ˆØð 	Tñ 	T‰JˆD�$Ý˜$¥­ Ñ-Ô-ð "µ¸¸zÑ1JÔ1Jð "Ý˜4‘y”y��Ý�T‘”˜a’�Ø��à!‘
��1�dØ,/°4¨K¨K�$—+’+˜c 1Ñ%Ô% aÔ(Ð(¸RˆCØˆDØ�fˆGØð %˜4 t¤}Ð4Ð4à—|’| DÑ)Ô)�Ø—’˜tÑ$Ô$Ð$ð ð %˜4 t¤}Ð4Ð4ð
 �OŠOÑÔÐÝ!$ W¨g°a°b°b¬kÑ!:Ô!:ð *ð *‘�˜à D¤MÐ1Ð1Ð1Ð1Ø ¤Ð.Ð.Ð.Ð.Ø”˜fÔ%×,Ò,Ø"¨KÀÐCÐCñô ð ð (*�”˜eÑ$Ð$àŒM˜#Ô×%Ò%¨t¸VÈTÐ&RÐ&RÑSÔSÐSÑSð3	Tð 	Tr   rw  c                 ó   — |                       |¦  «        \  }}}t          |t          ¦  «        rt          j        |||…         ¦  «        S t          |¦  «        \  }	}
|€|€ | j        |	         j        ||f||dœ|¤ŽS t          | ||f||dœ|¤ŽS )N)Ú
block_sizeÚcache_options)	r¤  r/   r&  r•   r–   r   r€  Ú_openÚReferenceFile)r   r3   Úmoder  r  r¯   rª  r¢  r£  r<   rö   s              r   r  zReferenceFileSystem._open{  sÜ   € Ø$(×$4Ò$4°TÑ$:Ô$:Ñ!ˆ�V˜Tõ �k¥5Ñ)Ô)ð 	8Ý”:˜k¨&°¨+Ô6Ñ7Ô7Ð7å$ [Ñ1Ô1‰ˆ�!Øˆ>˜d˜lØ+�4”8˜HÔ%Ô+ØØðð &Ø+ð	ð ð
 ðð ð õ ØØØð
ð "Ø'ð
ð 
ð ð
ð 
ð 	
r   c                 ó¶  — t                                d|¦  «         |                      |¦  «        }t          | j        t
          ¦  «        r?	 | j                             ||¦  «        S # t          $ r Y nw xY wt          d|› d�¦  «        ‚| j	        s|  
                    ¦   «          |                      |¦  «        }|€t          |¦  «        ‚|r|S d„ |D ¦   «         S )Nzlist %sú'z' is not a known keyc                 ó   — g | ]
}|d          ‘ŒS ©rÈ   rQ   )r�   Úos     r   rÂ   z*ReferenceFileSystem.ls.<locals>.<listcomp>¥  s   € Ð'Ð'Ð'˜a��&”	Ð'Ð'Ð'r   )r†  rš  r™  r/   r4   ra   ré   rò   rõ   r  r  Ú_ls_from_cache)r   r3   râ   r¯   r;   s        r   ré   zReferenceFileSystem.ls•  sù   € Ý�Š�Y Ñ%Ô%Ð%Ø×#Ò# DÑ)Ô)ˆÝ�d”oÕ':Ñ;Ô;ð 	DðØ”×)Ò)¨$°Ñ7Ô7Ð7øÝð ð ð Ø�ðøøøå#Ð$B¨Ð$BÐ$BÐ$BÑCÔCÐCØŒ}ð 	(Ø×%Ò%Ñ'Ô'Ð'Ø×!Ò! $Ñ'Ô'ˆØˆ;Ý# DÑ)Ô)Ð)Øð 	ØˆJØ'Ð' 3Ð'Ñ'Ô'Ð's   ÁA' Á'
A4Á3A4c                 óV   — |                       |¦  «        p|                      |¦  «        S r   )r…  Úisfile©r   r3   r¯   s      r   rª   zReferenceFileSystem.exists§  s%   € Ø�zŠz˜$ÑÔÐ4 4§;¢;¨tÑ#4Ô#4Ð4r   c                 óÎ   ‡— | j         r	‰| j         v S t          | j        t          ¦  «        r‰| j                             ¦   «         v S t          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3   óH   •K  — | ]}|                      ‰› d �¦  «        V — ŒdS )r‡   NrØ   )r�   rö   r3   s     €r   r¸   z,ReferenceFileSystem.isdir.<locals>.<genexpr>²  s5   øè è € ÐIÐI°A�q—|’| t J J JÑ/Ô/ÐIÐIÐIÐIÐIÐIr   )r  r/   r4   ra   rH   rË  ©r   r3   s    `r   r…  zReferenceFileSystem.isdirª  sq   ø€ ØŒ=ð 	JØ˜4œ=Ð(Ð(Ý˜œÕ)<Ñ=Ô=ð 	JØ˜4œ?×2Ò2Ñ4Ô4Ð4Ð4õ ÐIÐIÐIÐI¸¼ÐIÑIÔIÑIÔIÐIr   c                 ó   — || j         v S r   r®  r)  s     r   r%  zReferenceFileSystem.isfile´  s   € Ø�t”Ð&Ð&r   c              ‹   ó$   K  —  | j         ||fi |¤ŽS r   )ré   )r   r3   râ   r¯   s       r   Ú_lszReferenceFileSystem._ls·  s"   è è € ØˆtŒw�t˜VÐ.Ð. vÐ.Ð.Ð.r   c                 ó:  •‡ ‡— |r t          ¦   «         j        ‰f|||dœ|¤ŽS ‰r6‰                      ‰¦  «        Št          ˆfd„‰ j        D ¦   «         ¦  «        }nt          ‰ j        ¦  «        }|r)‰ j        s‰                      ¦   «          ˆ fd„|D ¦   «         S |S )N)ÚmaxdepthÚwithdirsrâ   c              3   óF   •K  — | ]}|                      ‰¦  «        ¯|V — Œd S r   rØ   )r�   rY  r3   s     €r   r¸   z+ReferenceFileSystem.find.<locals>.<genexpr>Á  s4   øè è € ÐHÐH˜Q°Q·\²\À$Ñ5GÔ5GÐH�qÐHÐHÐHÐHÐHÐHr   c                 óH   •— i | ]}|‰                      |¦  «        d          “ŒS )r   )r#  )r�   rY  r   s     €r   r“   z,ReferenceFileSystem.find.<locals>.<dictcomp>Ç  s.   ø€ Ð<Ð<Ð<°Q�A�t×*Ò*¨1Ñ-Ô-¨aÔ0Ð<Ð<Ð<r   )r   Úfindr™  rà   r4   r  r  )r   r3   r.  r/  râ   r¯   r¿  r   s   ``     €r   r2  zReferenceFileSystem.findº  sØ   øøø€ Øð 	Ø•5‘7”7”<ØðØ'°(À6ðð ØMSðð ð ð ð 	(Ø×'Ò'¨Ñ-Ô-ˆDÝÐHÐHÐHÐH $¤/ÐHÑHÔHÑHÔHˆAˆAå�t”Ñ'Ô'ˆAØð 	Ø”=ð ,Ø×)Ò)Ñ+Ô+Ð+Ø<Ð<Ð<Ð<¸!Ð<Ñ<Ô<Ð<àˆHr   c                 ó&  ‡— | j                              ‰¦  «        }|�Vt          |t          t          f¦  «        r‰dt          |¦  «        dœS t          |¦  «        dk    r‰d|d         dœS ‰dd dœg}n,|                      ‰d¦  «        }ˆfd„|D ¦   «         }|s‰dddœS |d         d	         €]t          | j         ‰         d         ¦  «        \  }}| j        |          	                    | j         ‰         d         ¦  «        |d         d	<   |d         S )
Nrn   rÌ   rX   r3  Tc                 ó,   •— g | ]}|d          ‰k    ¯|‘ŒS r!  rQ   )r�   r"  r3   s     €r   rÂ   z,ReferenceFileSystem.info.<locals>.<listcomp>×  s'   ø€ Ð8Ð8Ð8˜! a¨¤i°4Ò&7Ð&7�AÐ&7Ð&7Ð&7r   rË   r   rÎ   )
r4   r.   r/   r2   r&  rJ   ré   r   r€  rÎ   )r   r3   r¯   r;   Úout0Úprotrö   s    `     r   r‡  zReferenceFileSystem.infoË  s'  ø€ ØŒo×!Ò! $Ñ'Ô'ˆØˆ?Ý˜#¥¥U˜|Ñ,Ô,ð Fà $¨f½cÀ#¹h¼hÐGÐGÐGÝ�S‘”˜A’�Ø $¨f¸cÀ!¼fÐEÐEÐEà!%¨v¸tÐDÐDÐE��à—'’'˜$ Ñ%Ô%ˆCØ8Ð8Ð8Ð8˜sÐ8Ñ8Ô8ˆDØð FØ $¨kÀ1ÐEÐEÐEØ�Œ7�6Œ?Ð"å$ T¤_°TÔ%:¸1Ô%=Ñ>Ô>‰GˆD�!Ø"œh tœn×1Ò1°$´/À$Ô2GÈÔ2JÑKÔKˆD�ŒG�F‰OØ�AŒwˆr   c              ‹   ó0   K  — |                       |¦  «        S r   )r‡  r&  s      r   Ú_infozReferenceFileSystem._infoà  s   è è € Ø�yŠy˜‰ŒÐr   c              ‹   ór   K  — | j                              |d ¦  «         | j                             ¦   «          d S r   )r4   rL  r  rK  r&  s      r   Ú_rm_filezReferenceFileSystem._rm_fileã  sA   è è € ØŒ×ÒØ�$ñ	
ô 	
ð 	
ð 	Œ×ÒÑÔÐÐÐr   Ú	overwritec              ‹   ó”   K  — |dk    r|                       |¦  «        rt          ‚|| j        |<   | j                             ¦   «          d S )Nr°   )rª   ÚFileExistsErrorr4   r  rK  )r   r3   r›   r  r¯   s        r   Ú
_pipe_filezReferenceFileSystem._pipe_fileé  sN   è è € Ø�8ÒÐ §¢¨DÑ 1Ô 1ÐÝ!Ð!à $ˆŒ˜ÑØŒ×ÒÑÔÐÐÐr   c              ‹   ó  K  — |dk    r|                       |¦  «        rt          ‚t          |d¦  «        5 }|                     ¦   «         | j        |<   d d d ¦  «         n# 1 swxY w Y   | j                             ¦   «          d S )Nr°   rw  )rª   r=  r   Úreadr4   r  rK  )r   rµ  r´  r  r¯   rÄ   s         r   Ú	_put_filezReferenceFileSystem._put_fileð  s¸   è è € à�8ÒÐ §¢¨EÑ 2Ô 2ÐÝ!Ð!Ý�%˜ÑÔð 	. !Ø%&§V¢V¡X¤XˆDŒO˜EÑ"ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.àŒ×ÒÑÔÐÐÐs   µAÁA"Á%A"c                 óø  — i }| j                              ¦   «         D ]u\  }}t          |t          ¦  «        rV	 |                     d¦  «        ||<   Œ4# t
          $ r/ dt          j        |¦  «        z                        ¦   «         ||<   Y Œlw xY w|||<   Œvt          j	        |dfi |¤Ž5 }| 
                    t          j        d|dœ¦  «                             ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z+Write modified references into new locationÚasciir—  r²  rX   )rè  rœ   N)r4   r  r/   r&  r%  ÚUnicodeDecodeErrorr›  Ú	b64encoderv   r   r#  rD   rE   rF   )r   ru   r®   r;   rY  rä  rÄ   s          r   Ú	save_jsonzReferenceFileSystem.save_jsonø  sj  € àˆØ”O×)Ò)Ñ+Ô+ð 	ð 	‰DˆAˆqÝ˜!�UÑ#Ô#ð ðIØŸXšX gÑ.Ô.�C˜‘F�FøÝ)ð Ið Ið IØ(­6Ô+;¸AÑ+>Ô+>Ñ>×FÒFÑHÔH�C˜‘F�F�FðIøøøð ��A‘�ÝŒ[˜˜dÐ6Ð6 oÐ6Ð6ð 	F¸!Ø�GŠG•D”J¨1°cÐ:Ð:Ñ;Ô;×BÒBÑDÔDÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fs#   ·AÁ6B	ÂB	Â%=C/Ã/C3Ã6C3)NNNNNNNNTrr  rs  rh   rl  )F)FrÅ  r   )rw  NN)T)NFF)r;  )$r!   r"   r#   rm  r<   Úcachabler   r¤  r§  r—   r¯  r¶  r	   r»  r.   rÁ  r‰  ré  rê  rü  rþ  r  r  ré   rª   r…  r%  r,  r2  r‡  r8  r:  r>  rA  rF  r$   r%   s   @r   rq  rq  ]  s�  ø€ € € € € ðð ð" €HØ€Hð
 ØØØØØØØØØØØðað að að að að aðF*!ð *!ð *!ð *!ðX
Bð 
Bð 
Bð 
BðBð Bð Bð Bð&ð &ð &ðð ð ð /?ð 
,ð 
,ð 
,ð 
,ð2ð 2ð 2ð 2ð`ð `ð `ð `ðDHð Hð Hð Hð	%ð 	%ð 	%ð#Mð #Mð #Mð #MðJ&ð &ð &ð 1ð 1ð 1ðfTð Tð Tð<
ð 
ð 
ð 
ð4(ð (ð (ð (ð$5ð 5ð 5ðJð Jð Jð'ð 'ð 'ð/ð /ð /ð /ðð ð ð ð ð ð"ð ð ð*ð ð ðð ð ðð ð ð ðð ð ð ðFð Fð Fð Fð Fð Fð Fr   rq  c                   óR   ‡ — e Zd Z	 	 	 	 	 	 d
ˆ fd„	Zed„ ¦   «         Zˆ fd„Zd	„ Zˆ xZS )r  rw  ÚdefaultTÚ	readaheadNc	           
      ó  •—  t          ¦   «         j        ||f||||||dœ|	¤Ž | j                             | j        ¦  «        \  }
| _        | _        t          |
¦  «        \  }}| j        j        |         | _	        |
| _
        d | _        d S )N)r  r  Ú
autocommitrÎ   Ú
cache_typer  )r   r   rw   r¤  r3   r�  rž  r   r€  Úsrc_fsÚsrc_pathÚ_f)r   rw   r3   r  r  rL  rM  r  rÎ   r¯   rª  r<   rö   r   s                €r   r   zReferenceFile.__init__  s¥   ø€ ð 	�‰ŒÔØØð
	
ð Ø!Ø!ØØ!Ø'ð
	
ð 
	
ð ð
	
ð 
	
ð 
	
ð -1¬G×,?Ò,?ÀÄ	Ñ,JÔ,JÑ)ˆ�T”Z ¤Ý$ [Ñ1Ô1‰ˆ�!Ø”g”k (Ô+ˆŒØ#ˆŒØˆŒˆˆr   c                 ó¢   — | j         �| j         j        r6 | j        j        | j        f| j        | j        | j        ddœ| j        ¤Ž| _         | j         S )NÚnone)r  r  rL  rM  )	rP  ÚclosedrN  r  rO  r  Ú	blocksizerL  r¯   r   s    r   rÄ   zReferenceFile.f%  s_   € àŒ7ˆ?˜dœgœnˆ?Ø'�d”kÔ'Ø”ðà”YØœ>Øœ?Ø!ðð ð ”+ðð ˆDŒGð Œwˆr   c                 ó„   •— | j         �| j                              ¦   «          t          ¦   «                              ¦   «         S r   )rP  Úcloser   )r   r   s    €r   rV  zReferenceFile.close2  s,   ø€ ØŒ7ÐØŒG�MŠM‰OŒOˆOÝ‰wŒw�}Š}‰ŒÐr   c                 ó¾   — || j         z   }t          || j         z   | j        ¦  «        }| j                             |¦  «         | j                             ||z
  ¦  «        S r   )r�  Úminrž  rÄ   Úseekr@  )r   r�  rž  s      r   Ú_fetch_rangezReferenceFile._fetch_range7  sR   € Ø˜œ
Ñ"ˆÝ�#˜œ
Ñ" D¤HÑ-Ô-ˆØŒ�Š�EÑÔÐØŒv�{Š{˜3 ™;Ñ'Ô'Ð'r   )rw  rI  TrJ  NN)	r!   r"   r#   r   rn  rÄ   rV  rZ  r$   r%   s   @r   r  r    s”   ø€ € € € € ð
 ØØØØØðð ð ð ð ð ð: ð
ð 
ñ „Xð
ðð ð ð ð ð
(ð (ð (ð (ð (ð (ð (r   r  )2r›  Úcollectionsr•   rh  Úloggingr  r³  Ú	functoolsr   r   Útypingr   r   Úfsspec.corerv   Úfsspec.specr   ÚujsonrD   r{   Úfsspec.asynr   Úfsspec.callbacksr	   r
   r   r   Ú#fsspec.implementations.asyn_wrapperr   Úfsspec.utilsr   r   r   Ú	getLoggerr†  ÚRuntimeErrorr   r+   r6   r=   ÚabcÚ
ValuesViewr?   Ú	ItemsViewrS   r_   ÚMutableMappingra   rq  r  rQ   r   r   ú<module>rl     s  ðØ €€€Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðØÐÐÐÐøØð ð ð Øð Øˆˆˆøøðøøøð (Ð 'Ð 'Ð 'Ð 'Ð 'Ø -Ð -Ð -Ð -Ð -Ð -Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð ð ð ð ð 
ˆÔ	Ð-Ñ	.Ô	.€ðTð Tð Tð Tð T˜Lñ Tô Tð Tð"ð "ð "ð?ð ?ð ?ðð ð ð
Bð 
Bð 
Bð 
Bð 
B�[”_Ô/ñ 
Bô 
Bð 
BðAð Að Að Að A�K”OÔ-ñ Aô Að Að
ð ð ð@ð @ð @ð @ð @˜+œ/Ô8ñ @ô @ð @ðDg
Fð g
Fð g
Fð g
Fð g
F˜/ñ g
Fô g
Fð g
FðT4(ð 4(ð 4(ð 4(ð 4(Ð(ñ 4(ô 4(ð 4(ð 4(ð 4(s   ¼A ÁAÁA