Ë
    Q^(h	A  ã                   ó(  — d 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
 ddlmZ ddlmZmZmZmZmZmZmZmZ ddlmZ dd	lmZ d
dlmZmZmZmZmZm Z m!Z!m"Z" d
dl#m$Z$ d
dl%m&Z&m'Z' d
dl(m)Z) erd
dl*m+Z+  e jX                  e-«      Z. ej^                  d«      Z0dZ1dddœZ2e G d„ d«      «       Z3e"	 	 	 d:dee3   dee4   de4de4dee4   dee4   deee4e4f      deee5   ee5   f   fd„«       Z6 G d„ d e«      Z7 G d!„ d"e«      Z8	 	 	 d:d#d$d%edee4   deee4e4f      dee4   ddfd&„Z9d'e5fd(„Z:d)e5fd*„Z;d+e5fd,„Z<d#d$d-e4ddfd.„Z=d#d$d/ed0e>d-e4ddf
d1„Z?d/ed2e3d0e>dee4   fd3„Z@d4ee   d5e4de8fd6„ZAd#d$d7ee4   d0e>dee   fd8„ZBd#d$d7ee4   d0e>dee   fd9„ZCy);z.Git LFS related type definitions and utilitiesé    N)Ú	dataclass)Úceil)Úgetsize)ÚPath)ÚTYPE_CHECKINGÚBinaryIOÚDictÚIterableÚListÚOptionalÚTupleÚ	TypedDict)Úunquote)Ú	constantsé   )Úbuild_hf_headersÚfix_hf_endpoint_in_urlÚget_sessionÚhf_raise_for_statusÚhttp_backoffÚloggingÚtqdmÚvalidate_hf_hub_args)ÚSliceFileObj)Úsha256Úsha_fileobj)Úis_tqdm_disabled)ÚCommitOperationAddz^[0-9a-f]{40}$zlfs-multipart-uploadzapplication/vnd.git-lfs+json)ÚAcceptzContent-Typec                   ór   — e Zd ZU dZeed<   eed<   eed<   edefd„«       Z	edefd„«       Z
ed	efd
„«       Zy)Ú
UploadInfoad  
    Dataclass holding required information to determine whether a blob
    should be uploaded to the hub using the LFS protocol or the regular protocol

    Args:
        sha256 (`bytes`):
            SHA256 hash of the blob
        size (`int`):
            Size in bytes of the blob
        sample (`bytes`):
            First 512 bytes of the blob
    r   ÚsizeÚsampleÚpathc                 óÂ   — t        |«      }t        j                  |d«      5 }|j                  d«      d d }t	        |«      }d d d «        | |¬«      S # 1 sw Y   ŒxY w)NÚrbé   ©r"   r   r#   )r   ÚioÚopenÚpeekr   )Úclsr$   r"   Úfiler#   Úshas         úQ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/huggingface_hub/lfs.pyÚ	from_pathzUploadInfo.from_pathO   s_   € ä�t‹}ˆÜ�W‰W�T˜4Ó ð 	$ DØ—Y‘Y˜s“^ D SÐ)ˆFÜ˜dÓ#ˆC÷	$ñ ˜ S°Ô8Ð8÷	$ð 	$ús   ¢ AÁAÚdatac                 ób   — t        |«      j                  «       } | t        |«      |d d |¬«      S )Nr'   )r"   r#   r   )r   ÚdigestÚlen)r,   r1   r.   s      r/   Ú
from_byteszUploadInfo.from_bytesW   s-   € ä�T‹l×!Ñ!Ó#ˆÙœ˜D›	¨$¨t°¨*¸SÔAÐAó    Úfileobjc                 óð   — |j                  d«      }|j                  dt        j                  «       t	        |«      }|j                  «       }|j                  dt        j                  «        | |||¬«      S )Nr'   r   r(   )ÚreadÚseekr)   ÚSEEK_SETr   Útell)r,   r7   r#   r.   r"   s        r/   Úfrom_fileobjzUploadInfo.from_fileobj\   sX   € à—‘˜cÓ"ˆØ�‰�QœŸ™Ô$Ü˜'Ó"ˆØ�|‰|‹~ˆØ�‰�QœŸ™Ô$Ù˜ S°Ô8Ð8r6   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚbytesÚ__annotations__ÚintÚclassmethodÚstrr0   r5   r   r=   © r6   r/   r!   r!   <   sj   … ñð ƒMØ
ƒIØƒMàð9˜Sò 9ó ð9ð ðB˜eò Bó ðBð ð9 8ò 9ó ñ9r6   r!   Úupload_infosÚtokenÚ	repo_typeÚrepo_idÚrevisionÚendpointÚheadersÚreturnc                 óº  — |�|nt         j                  }d}|t         j                  v rt         j                  |   }|› d|› |› d�}dddg| D �	cg c])  }	|	j                  j	                  «       |	j
                  dœ‘Œ+ c}	d	d
œ}
|�dt        |«      i|
d<   i t        ¥t        |¬«      ¥|xs i ¥}t        «       j                  |||
¬«      }t        |«       |j                  «       }|j                  dd«      }t        |t        «      st!        d«      ‚|D �cg c]  }d|vsŒt#        |«      ‘Œ c}|D �cg c]  }d|v sŒt%        |«      ‘Œ c}fS c c}	w c c}w c c}w )aÝ  
    Requests the LFS batch endpoint to retrieve upload instructions

    Learn more: https://github.com/git-lfs/git-lfs/blob/main/docs/api/batch.md

    Args:
        upload_infos (`Iterable` of `UploadInfo`):
            `UploadInfo` for the files that are being uploaded, typically obtained
            from `CommitOperationAdd.upload_info`
        repo_type (`str`):
            Type of the repo to upload to: `"model"`, `"dataset"` or `"space"`.
        repo_id (`str`):
            A namespace (user or an organization) and a repo name separated
            by a `/`.
        revision (`str`, *optional*):
            The git revision to upload to.
        headers (`dict`, *optional*):
            Additional headers to include in the request

    Returns:
        `LfsBatchInfo`: 2-tuple:
            - First element is the list of upload instructions from the server
            - Second element is an list of errors, if any

    Raises:
        [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError)
            If an argument is invalid or the server response is malformed.
        [`HTTPError`](https://requests.readthedocs.io/en/latest/api/#requests.HTTPError)
            If the server returned an error.
    NÚ ú/z.git/info/lfs/objects/batchÚuploadÚbasicÚ	multipart©Úoidr"   r   )Ú	operationÚ	transfersÚobjectsÚ	hash_algoÚnameÚref)rI   ©rN   ÚjsonrZ   zMalformed response from serverÚerror)r   ÚENDPOINTÚREPO_TYPES_URL_PREFIXESr   Úhexr"   r   ÚLFS_HEADERSr   r   Úpostr   r_   ÚgetÚ
isinstanceÚlistÚ
ValueErrorÚ_validate_batch_actionsÚ_validate_batch_error)rH   rI   rJ   rK   rL   rM   rN   Ú
url_prefixÚ	batch_urlrS   ÚpayloadÚrespÚ
batch_inforZ   Úobjs                  r/   Úpost_lfs_batch_inforr   f   sƒ  € ðP $Ð/‰x´Y×5GÑ5G€HØ€JØ”I×5Ñ5Ñ5Ü×6Ñ6°yÑAˆ
Ø�*˜A˜j˜\¨'¨Ð2MÐN€IàØ˜{Ð+ð 'ö
ð
 ð —}‘}×(Ñ(Ó*ØŸ™óò
ð ñ€Gð ÐØ ¤'¨(Ó"3Ð4ˆ�‰ðÜ
ðä
 Ô
'ðð Š=�bð€Gô
 ‹=×Ñ˜i°¸wÐÓG€DÜ˜ÔØ—‘“€Jà�n‰n˜Y¨Ó-€GÜ�gœtÔ$ÜÐ9Ó:Ð:ð 29ÖO¨#¸GÈ3Ò<NÔ	  Õ	%ÒOØ/6ÖI¨¸'ÀSº.Ô	˜sÕ	#ÒIðð ùò3
ùò4 	PùÚIs   Á.EÄ	EÄ EÄ3	EÄ=Ec                   ó"   — e Zd ZU eed<   eed<   y)ÚPayloadPartTÚ
partNumberÚetagN)r>   r?   r@   rD   rC   rF   rG   r6   r/   rt   rt   µ   s   … ØƒOØ
„Ir6   rt   c                   ó,   — e Zd ZU dZeed<   ee   ed<   y)ÚCompletionPayloadTz?Payload that will be sent to the Hub when uploading multi-part.rW   ÚpartsN)r>   r?   r@   rA   rF   rC   r   rt   rG   r6   r/   rx   rx   º   s   … ÙIà	ƒHØ�ÑÔr6   rx   rX   r   Úlfs_batch_actionc                 óB  — t        |«       |j                  d«      }|€$t        j                  d| j                  › d�«       y|d   d   }t        |«       |d   j                  d«      }|�t        |«       |j                  di «      }|j                  d«      }	t        |d	   |¬
«      }
|	�	 t        |	«      }	t        | ||	|
¬«       nt        | |
¬«       |�…t        |«       t        |d	   |«      }t        «       j                  |t        ||¬«      | j                  j                   j#                  «       | j                  j$                  dœ¬«      }t'        |«       t        j                  | j                  › d�«       y# t        t        f$ r t        d|	› d�«      ‚w xY w)aw  
    Handles uploading a given object to the Hub with the LFS protocol.

    Can be a No-op if the content of the file is already present on the hub large file storage.

    Args:
        operation (`CommitOperationAdd`):
            The add operation triggering this upload.
        lfs_batch_action (`dict`):
            Upload instructions from the LFS batch endpoint for this object. See [`~utils.lfs.post_lfs_batch_info`] for
            more details.
        headers (`dict`, *optional*):
            Headers to include in the request, including authentication and user agent headers.

    Raises:
        [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError)
            If `lfs_batch_action` is improperly formatted
        [`HTTPError`](https://requests.readthedocs.io/en/latest/api/#requests.HTTPError)
            If the upload resulted in an error
    ÚactionsNzContent of file z. is already present upstream - skipping uploadrS   ÚverifyÚheaderÚ
chunk_sizeÚhref)rM   zTMalformed response from LFS batch endpoint: `chunk_size` should be an integer. Got 'z'.)rX   r~   r   Ú
upload_url)rX   r�   )rI   rN   rV   r^   z: Upload successful)rj   rf   ÚloggerÚdebugÚpath_in_repoÚ_validate_lfs_actionr   rD   ri   Ú	TypeErrorÚ_upload_multi_partÚ_upload_single_partr   re   r   Úupload_infor   rc   r"   r   )rX   rz   rI   rN   rM   r|   Úupload_actionÚverify_actionr~   r   r�   Ú
verify_urlÚverify_resps                r/   Ú
lfs_uploadrŽ   Á   s¦  € ô8 Ð,Ô-Ø×"Ñ" 9Ó-€GØ€ä�‰Ð'¨	×(>Ñ(>Ð'?Ð?mÐnÔoØð % YÑ/°Ñ9€MÜ˜Ô'Ø$ YÑ/×3Ñ3°HÓ=€MØÐ Ü˜]Ô+ð ×Ñ˜x¨Ó,€FØ—‘˜LÓ)€JÜ'¨°fÑ(=ÈÔQ€JØÐð	Ü˜Z›ˆJô
 	 Y°vÈ*ÐakÖlä i¸JÕGð Ð Ü˜]Ô+Ü+¨M¸&Ñ,AÀ8ÓLˆ
Ü!“m×(Ñ(ØÜ$¨5¸'ÔBØ"×.Ñ.×5Ñ5×9Ñ9Ó;ÀY×EZÑEZ×E_ÑE_Ñ`ð )ó 
ˆô
 	˜KÔ(Ü
‡L�L�I×*Ñ*Ð+Ð+>Ð?Õ@øô% œIÐ&ò 	ÜØfÐgqÐfrÐrtÐuóð ð	ús   Â-E? Å?FÚ
lfs_actionc                 óº   — t        | j                  d«      t        «      r0| j                  d«      �*t        | j                  d«      t        «      st	        d«      ‚| S )ú.validates response from the LFS batch endpointr€   r~   z"lfs_action is improperly formatted)rg   rf   rF   Údictri   )r�   s    r/   r…   r…     sK   € ô 	�:—>‘> &Ó)¬3Ô/Ø�^‰^˜HÓ%Ð-´¸J¿N¹NÈ8Ó<TÔVZÔ1[äÐ=Ó>Ð>ØÐr6   Úlfs_batch_actionsc                 óP  — t        | j                  d«      t        «      rt        | j                  d«      t        «      st	        d«      ‚| j                  di «      j                  d«      }| j                  di «      j                  d«      }|�t        |«       |�t        |«       | S )r‘   rW   r"   z)lfs_batch_actions is improperly formattedr|   rS   r}   )rg   rf   rF   rD   ri   r…   )r“   rŠ   r‹   s      r/   rj   rj     s—   € äÐ(×,Ñ,¨UÓ3´SÔ9¼jÐIZ×I^ÑI^Ð_eÓIfÔhkÔ>lÜÐDÓEÐEà%×)Ñ)¨)°RÓ8×<Ñ<¸XÓF€MØ%×)Ñ)¨)°RÓ8×<Ñ<¸XÓF€MØÐ Ü˜]Ô+ØÐ Ü˜]Ô+ØÐr6   Úlfs_batch_errorc                 ól  — t        | j                  d«      t        «      rt        | j                  d«      t        «      st	        d«      ‚| j                  d«      }t        |t
        «      r>t        |j                  d«      t        «      rt        |j                  d«      t        «      st	        d«      ‚| S )r‘   rW   r"   z'lfs_batch_error is improperly formattedr`   ÚmessageÚcode)rg   rf   rF   rD   ri   r’   )r•   Ú
error_infos     r/   rk   rk     s‹   € ä�×*Ñ*¨5Ó1´3Ô7¼JÀ×GZÑGZÐ[aÓGbÔdgÔ<hÜÐBÓCÐCØ ×$Ñ$ WÓ-€Jä�:œtÔ$Ü�z—~‘~ iÓ0´#Ô6Ü�z—~‘~ fÓ-¬sÔ3äÐBÓCÐCØÐr6   r�   c                 ó†   — | j                  d¬«      5 }t        d||d¬«      }t        |«       ddd«       y# 1 sw Y   yxY w)a¤  
    Uploads `fileobj` as a single PUT HTTP request (basic LFS transfer protocol)

    Args:
        upload_url (`str`):
            The URL to PUT the file to.
        fileobj:
            The file-like object holding the data to upload.

    Returns: `requests.Response`

    Raises:
     [`HTTPError`](https://requests.readthedocs.io/en/latest/api/#requests.HTTPError)
        If the upload resulted in an error.
    T©Ú	with_tqdmÚPUT©iô  iö  i÷  iø  ©r1   Úretry_on_status_codesN)Úas_filer   r   )rX   r�   r7   Úresponses       r/   rˆ   rˆ   -  sE   € ð  
×	Ñ	 TÐ	Ó	*ð &¨gä  z¸ÐWkÔlˆÜ˜HÔ%÷&÷ &ñ &ús	   “7·A r~   r   c                 óô  — t        || j                  |¬«      }t        j                  }t        j                  rKt	        | j
                  t        «      s1t	        | j
                  t        «      st        j                  d«       d}|rt        | ||¬«      nt        | ||¬«      }t        «       j                  |t        || j                  j                  j!                  «       «      t"        ¬«      }t%        |«       y)z@
    Uploads file using HF multipart LFS transfer protocol.
    )r~   r‰   r   zlhf_transfer is enabled but does not support uploading from bytes or BinaryIO, falling back to regular uploadF)rX   Úsorted_parts_urlsr   )r_   rN   N)Ú_get_sorted_parts_urlsr‰   r   ÚHF_HUB_ENABLE_HF_TRANSFERrg   Úpath_or_fileobjrF   r   ÚwarningsÚwarnÚ_upload_parts_hf_transferÚ_upload_parts_iterativelyr   re   Ú_get_completion_payloadr   rc   rd   r   )rX   r~   r   r�   r¤   Úuse_hf_transferÚresponse_headersÚcompletion_ress           r/   r‡   r‡   C  sÙ   € ô
 /°fÈ)×J_ÑJ_ÐlvÔwÐô  ×9Ñ9€Oä×+Ò+Ü˜9×4Ñ4´cÔ:Ü˜9×4Ñ4´dÔ;ä�‰ðô	
ð  ˆñ ô 	"¨IÐIZÐgqÕrä&°ÐN_ÐlvÔwð ô !“]×'Ñ'ØÜ$Ð%5°y×7LÑ7L×7SÑ7S×7WÑ7WÓ7YÓZÜð (ó €Nô
 ˜Õ'r6   r‰   c           
      óV  — t        | j                  «       D ��cg c]1  \  }}|j                  «       rt        |«      dkD  rt	        |d«      |f‘Œ3 c}}d„ ¬«      D ��cg c]  \  }}|‘Œ	 }}}t        |«      }|t        |j                  |z  «      k7  rt        d«      ‚|S c c}}w c c}}w )Nr   é
   c                 ó   — | d   S )Nr   rG   )Úts    r/   ú<lambda>z(_get_sorted_parts_urls.<locals>.<lambda>o  s
   € ˜!˜A™$€ r6   )Úkeyz0Invalid server response to upload large LFS file)ÚsortedÚitemsÚisdigitr4   rD   r   r"   ri   )r~   r‰   r   Úpart_numr�   Ú_Úsorted_part_upload_urlsÚ	num_partss           r/   r¥   r¥   f  s¶   € ô $ð -3¯L©L«N÷á(�H˜jØ×#Ñ#Ô%¬#¨h«-¸!Ò*;ô �X˜rÓ" JÒ/óñ
 ô
÷
áˆAˆzò 	ð
Ðñ 
ô Ð+Ó,€IØ”D˜×)Ñ)¨JÑ6Ó7Ò7ÜÐKÓLÐLØ"Ð"ùóùó
s   ™6B
ÁB%r®   rW   c                 ó¼   — g }t        | «      D ]H  \  }}|j                  d«      }|�|dk(  rt        d|› d|dz   › �«      ‚|j                  |dz   |dœ«       ŒJ ||dœS )Nrv   rQ   zInvalid etag (`z`) returned for part r   )ru   rv   )rW   ry   )Ú	enumeraterf   ri   Úappend)r®   rW   ry   Úpart_numberr~   rv   s         r/   r¬   r¬   x  s�   € Ø "€EÜ(Ð)9Ó:ò 	
Ñˆ�VØ�z‰z˜&Ó!ˆØˆ<˜4 2š:Ü˜¨t¨fÐ4IÈ+ÐXYÉ/ÐIZÐ[Ó\Ð\Ø�‰à)¨A™oØñõ	
ð		
ð  Ñ'Ð'r6   r¤   c           	      ó8  — g }| j                  d¬«      5 }t        |«      D ]T  \  }}t        |||z  |¬«      5 }t        d||d¬«      }t	        |«       |j                  |j                  «       d d d «       ŒV 	 d d d «       |S # 1 sw Y   ŒkxY w# 1 sw Y   |S xY w)NTr›   )Ú	seek_fromÚ
read_limitr�   rž   rŸ   )r¡   r¾   r   r   r   r¿   rN   )	rX   r¤   r   rN   r7   Úpart_idxÚpart_upload_urlÚfileobj_sliceÚpart_upload_ress	            r/   r«   r«   ‡  s¹   € ð €GØ	×	Ñ	 TÐ	Ó	*ð 8¨gÜ)2Ð3DÓ)Eò 	8Ñ%ˆH�oÜØØ$ xÑ/Ø%ôð 
8ð ä".Ø˜?°ÐVjô#�ô $ OÔ4Ø—‘˜×6Ñ6Ô7÷
8ð 
8ñ	8÷8ð €N÷
8ð 
8ú÷8ð €Nús"   •#B¸6BÁ.
BÂBÂBÂBc                 ó^  — 	 ddl m} dt	        j
                  |«      j                  v }|st        j                  d«       | j                  j                  }| j                  }t        |«      dkD  rd|dd  › �}t        d	d
|d|t        t        j!                  «       «      d¬«      5 }	  |d| j"                  ||ddddœ|rd|j$                  ini ¤Ž}|s|j%                  |«       |cd d d «       S # t        $ r t        d«      ‚w xY w# t&        $ r}	t)        d«      |	‚d }	~	ww xY w# 1 sw Y   y xY w)Nr   )Úmultipart_uploadzªFast uploading using 'hf_transfer' is enabled (HF_HUB_ENABLE_HF_TRANSFER=1) but 'hf_transfer' package is not available in your environment. Try `pip install hf_transfer`.Úcallbackz”You are using an outdated version of `hf_transfer`. Consider upgrading to latest version to enable progress bars using `pip install -U hf_transfer`.é(   u   (â€¦)iØÿÿÿÚBTzhuggingface_hub.lfs_upload)ÚunitÚ
unit_scaleÚtotalÚinitialÚdescÚdisabler\   é€   é   é   )Ú	file_pathÚ
parts_urlsr   Ú	max_filesÚparallel_failuresÚmax_retriesz~An error occurred while uploading using `hf_transfer`. Consider disabling HF_HUB_ENABLE_HF_TRANSFER for better error handling.rG   )Úhf_transferrÉ   ÚImportErrorri   ÚinspectÚ	signatureÚ
parametersr¨   r©   r‰   r"   r„   r4   r   r   r‚   ÚgetEffectiveLevelr§   ÚupdateÚ	ExceptionÚRuntimeError)
rX   r¤   r   rÉ   Úsupports_callbackrÏ   rÑ   ÚprogressÚoutputÚes
             r/   rª   rª   ›  sh  € ð
Ý0ð #¤g×&7Ñ&7Ð8HÓ&I×&TÑ&TÐTÐÙÜ�‰ð cô	
ð ×!Ñ!×&Ñ&€EØ×!Ñ!€DÜ
ˆ4ƒy�2‚~Ø�t˜C˜D�z�lÐ#ˆä	ØØØØØÜ ¤×!9Ñ!9Ó!;Ó<Ø)ô
ð ð 
ð	Ù%ð Ø#×3Ñ3Ø,Ø%ØØ"%Øññ 5F�J §¡Ñ0È2ñˆFñ !Ø�O‰O˜EÔ"Ø÷5ñ øô# ò 
ÜðQó
ð 	
ð
ûôH ò 	Üð*óð ðûð	ú÷'ð ús;   ‚C. Â%D#Â')DÃD#Ã.DÄ	D ÄDÄD Ä D#Ä#D,)NNN)DrA   rÝ   r)   Úrer¨   Údataclassesr   Úmathr   Úos.pathr   Úpathlibr   Útypingr   r   r	   r
   r   r   r   r   Úurllib.parser   Úhuggingface_hubr   Úutilsr   r   r   r   r   r   r   r   Ú
utils._lfsr   Ú	utils.shar   r   Ú
utils.tqdmr   Ú_commit_apir   Ú
get_loggerr>   r‚   ÚcompileÚ	OID_REGEXÚLFS_MULTIPART_UPLOAD_COMMANDrd   r!   rF   r’   rr   rt   rx   rŽ   r…   rj   rk   rˆ   rD   r‡   r¥   r¬   r«   rª   rG   r6   r/   ú<module>rù      sÜ  ðñ 5ã Û 	Û 	Û Ý !Ý Ý Ý ß \× \Ó \Ý  å %÷	÷ 	ó 	õ %ß *Ý (ñ Ý/à	ˆ×	Ñ	˜HÓ	%€àˆB�J‰JÐ(Ó)€	à5Ð ð -Ø2ñ€ð ÷&9ð &9ó ð&9ðR ð #Ø"Ø(,ñKØ˜:Ñ&ðKà�C‰=ðKð ðKð ð	Kð
 �s‰mðKð �s‰mðKð �d˜3 ˜8‘nÑ%ðKð ˆ4�‰:�t˜D‘zÐ!Ñ"òKó ðKô\�9ô ô
˜ô ð  Ø(,Ø"ñCAØ#ðCAàðCAð �C‰=ðCAð �d˜3 ˜8‘nÑ%ð	CAð
 �s‰mðCAð 
óCAðL Tó ð¨tó ð¨4ó ð&Ð#7ð &ÀSð &ÈTó &ð, (Ð"6ð  (Àð  (ÐRUð  (Ðcfð  (Ðkoó  (ðF# 4ð #°jð #Ècð #ÐVZÐ[^ÑV_ó #ð$(¨d°4©jð (¸sð (ÐGYó (ðØ#ðØ8<¸S¹	ðØORðà	ˆ$�Zóð(1Ø#ð1Ø8<¸S¹	ð1ØORð1à	ˆ$�Zô1r6   