ó
    T=ŒjIK  ã                  óê  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJrJr  S SKJrJrJrJr  S SKJr  S SKJrJrJrJrJrJrJr  \R>                  R@                  r \R>                  RB                  r!\RD                  " \#5      r$\RJ                  " S	5      r&\RJ                  " S
5      r'\RJ                  " S\RP                  5      r)SS jr* " S S\5      r+\RX                  " \+5        g)é    )ÚannotationsN)Úreplace)ÚAny)Ú
BadCommandÚInstallationError)Ú
HiddenTextÚdisplay_pathÚhide_urlÚ	strtobool)Úmake_command)ÚAuthInfoÚRemoteNotFoundErrorÚRemoteNotValidErrorÚ
RevOptionsÚVersionControlÚ(find_path_to_project_root_from_repo_rootÚvcsz(^git version (\d+)\.(\d+)(?:\.(\d+))?.*$z^[a-fA-F0-9]{40}$a/  ^
    # Optional user, e.g. 'git@'
    (\w+@)?
    # Server, e.g. 'github.com'.
    ([^/:]+):
    # The server-side path. e.g. 'user/project.git'. Must start with an
    # alphanumeric character so as not to be confusable with a Windows paths
    # like 'C:/foo/bar' or 'C:\foo\bar'.
    (\w[^:]*)
    $c                ó>   • [        [        R                  U 5      5      $ ©N)ÚboolÚ
HASH_REGEXÚmatch)Úshas    ÚY/Users/stevendouglas/BidBrain/.venv/lib/python3.13/site-packages/pip/_internal/vcs/git.pyÚlooks_like_hashr   9   s   € Ü”
× Ñ  Ó%Ó&Ð&ó    c                  ó  ^ • \ rS rSrSrSrSrSrSrSr	\
SS j5       r\SU 4S	 jj5       rS S
 jrS!S jr\S"S j5       r\S#S j5       r\S$S j5       r\        S%S j5       r\S&S j5       r          S'S jr S(         S'S jjr S(         S'S jjr\S)S j5       r\
S*S j5       r\S+S j5       r\S,S-S jj5       r\S"S j5       r\S.U 4S jj5       r\S(S/S jj5       r\S"U 4S jj5       r\
S0S j5       r Sr!U =r"$ )1ÚGité=   Úgitz.gitÚclone)zgit+httpz	git+httpszgit+sshzgit+gitzgit+file)ÚGIT_DIRÚGIT_WORK_TREEÚHEADc                ó   • U /$ r   © ©Úrevs    r   Úget_base_rev_argsÚGit.get_base_rev_argsM   s	   € àˆuˆr   c                ó¬   >• [         R                  R                  S5      (       a   UR                  S0 5      nSUS'   SUS'   X2S'   [        TU ]  " U0 UD6$ )NÚPIP_NO_INPUTÚextra_environÚ0ÚGIT_TERMINAL_PROMPTzssh -oBatchMode=yesÚGIT_SSH_COMMAND)ÚosÚenvironÚgetÚsuperÚrun_command)ÚclsÚargsÚkwargsr-   Ú	__class__s       €r   r5   ÚGit.run_commandQ   sY   ø€ ä�:‰:�>‰>˜.×)Ñ)Ø"ŸJ™J ¸Ó;ˆMØ36ˆMÐ/Ñ0Ø/DˆMÐ+Ñ,Ø&3�?Ñ#Ü‰wÒ" DÐ3¨FÑ3Ð3r   c                óü   • U R                  [        U5      5      u  p4UR                  (       d  gU R                  X$R                  5      (       d  g[	        U R                  X$R                  5      S   5      nU(       + $ )NFr   )Úget_url_rev_optionsr
   r(   Úis_commit_id_equalr   Úget_revision_sha)ÚselfÚurlÚdestÚ_Úrev_optionsÚis_tag_or_branchs         r   Úis_immutable_rev_checkoutÚGit.is_immutable_rev_checkoutZ   sf   € Ø×1Ñ1´(¸3³-Ó@‰ˆØ��ØØ×&Ñ& t¯_©_×=Ñ=ð ô   × 5Ñ 5°d¿O¹OÓ LÈQÑ OÓPÐØ#Ô#Ð#r   c                óö   • U R                  S/SSSS9n[        R                  U5      nU(       d  [        R	                  SU5        g[        UR                  S5      5      [        UR                  S	5      5      4$ )
NÚversionzgit versionFT)Úcommand_descÚshow_stdoutÚstdout_onlyzCan't parse git version: %sr&   é   é   )r5   ÚGIT_VERSION_REGEXr   ÚloggerÚwarningÚintÚgroup)r?   rH   r   s      r   Úget_git_versionÚGit.get_git_versionh   sq   € Ø×"Ñ"ØˆKØ&ØØð	 #ð 
ˆô "×'Ñ'¨Ó0ˆÞÜ�N‰NÐ8¸'ÔBØÜ�E—K‘K “NÓ#¤S¨¯©°Q«Ó%8Ð9Ð9r   c                óš   • / SQnU R                  USSSUS9nUR                  5       nUR                  S5      (       a  U[        S5      S $ g)zT
Return the current branch, or None if HEAD isn't at a branch
(e.g. detached HEAD).
)zsymbolic-refú-qr$   ©rL   FT©Úextra_ok_returncodesrJ   rK   Úcwdzrefs/heads/N)r5   ÚstripÚ
startswithÚlen)r6   Úlocationr7   ÚoutputÚrefs        r   Úget_current_branchÚGit.get_current_branchu   s]   € ò .ˆØ—‘ØØ!%ØØØð !ð 
ˆð �l‰l‹nˆà�>‰>˜-×(Ñ(Ø”s˜=Ó)Ð+Ð,Ð,àr   c                ó†  • U R                  SU/USSSS9n0 nUR                  5       R                  S5       H4  nUR                  S5      nU(       d  M   UR                  SS	S
9u  pgXdU'   M6     SU 3nSU 3n	UR                  U5      n
U
b  U
S4$ UR                  U	5      n
U
S4$ ! [         a    [	        SU< 35      ef = f)zÆ
Return (sha_or_none, is_branch), where sha_or_none is a commit hash
if the revision names a remote branch or tag, otherwise None.

Args:
  dest: the repository directory.
  rev: the revision name.
zshow-refFTÚignore)rZ   rJ   rK   Úon_returncodeÚ
ÚÚ rM   )Úmaxsplitzunexpected show-ref line: zrefs/remotes/origin/z
refs/tags/)r5   r[   ÚsplitÚrstripÚ
ValueErrorr3   )r6   rA   r(   r_   ÚrefsÚlineÚref_shaÚref_nameÚ
branch_refÚtag_refr   s              r   r>   ÚGit.get_revision_shaŽ   sþ   € ð —‘Ø˜ÐØØØØ"ð !ð 
ˆð ˆð —L‘L“N×(Ñ(¨Ö.ˆDØ—;‘;˜tÓ$ˆDÞÙðHØ$(§J¡J¨s¸Q JÐ$?Ñ!�ð %�‹Nñ /ð ,¨C¨5Ð1ˆ
Ø˜s˜eÐ$ˆà�h‰h�zÓ"ˆØ‰?Ø˜�;Ðà�h‰h�wÓˆà�Uˆ|Ðøô! ó Hô !Ð#=¸d¹XÐ!FÓGÐGðHús   ÁB&Â&C c                ó‚   • UR                  S5      (       a  g[        U5      (       d  gU R                  X5      (       a  gg)zü
Return true if rev is a ref or is a commit that we don't have locally.

Branches and tags are not considered in this method because they are
assumed to be always available locally (which is a normal outcome of
``git clone`` and ``git fetch --tags``).
zrefs/TF)r\   r   Ú
has_commit)r6   rA   r(   s      r   Ú_should_fetchÚGit._should_fetch¼   s9   € ð �>‰>˜'×"Ñ"àä˜s×#Ñ#àà�>‰>˜$×$Ñ$ààr   c           	     ó®  • UR                   nUc   eU R                  X5      u  pVUb%  UR                  U5      n[        X6(       a  UOSS9nU$ [	        U5      (       d  [
        R                  SU5        U R                  X5      (       d  U$ U R                  [        SSX#R                  5       5      US9  U R                  USS9nUR                  U5      nU$ )	z�
Resolve a revision to a new RevOptions object with the SHA1 of the
branch, tag, or ref if found.

Args:
  rev_options: a RevOptions object.
N)Úbranch_namez:Did not find branch or tag '%s', assuming revision or ref.ÚfetchrV   ©rZ   Ú
FETCH_HEADr'   )Úarg_revr>   Úmake_newr   r   rO   Úinforv   r5   r   Úto_argsÚget_revision)r6   rA   r@   rC   r(   r   Ú	is_branchs          r   Úresolve_revisionÚGit.resolve_revisionÓ   sé   € ð ×!Ñ!ˆð ‰Ðˆà×-Ñ-¨dÓ8‰ˆà‰?Ø%×.Ñ.¨sÓ3ˆKÜ! +Å9¹CÐRVÑXˆKàÐô ˜s×#Ñ#Ü�K‰KØLØôð
 × Ñ  ×+Ñ+ØÐð 	�‰Ü˜ $¨×-@Ñ-@Ó-BÓCØð 	ñ 	
ð
 ×Ñ˜t¨ÐÐ6ˆØ!×*Ñ*¨3Ó/ˆàÐr   c                ó:   • U(       d  gU R                  U5      U:H  $ )z
Return whether the current commit hash equals the given name.

Args:
  dest: the repository directory.
  name: a string name.
F)r�   )r6   rA   Únames      r   r=   ÚGit.is_commit_id_equal  s    € ö àà×Ñ Ó%¨Ñ-Ð-r   c                ó¼  • UR                  5       n[        R                  SX%[        U5      5        US::  a  SnOUS:X  a  SnOSnU R	                  5       S:¼  aO  [        [        R                  R                  SS	5      5      (       d!  U R                  [        S
S/UQUPUP76 5        OU R                  [        S
/UQUPUP76 5        UR                  (       a´  U R                  XU5      n[        USS 5      n[        R                  SX75        UcK  U R                  XR                  5      (       d*  [        SSUR!                  5       5      nU R                  X�S9  OSU R#                  U5      U:w  a  SU 3n	SSUSU	/nU R                  X�S9  O"U R%                  U5      n
UR'                  U
5      n[        R                  SX#R                  5        U R)                  XS9  g )NzCloning %s%s to %sr   )z--quietrL   r&   )z	--verbosez
--progress)rM   é   Ú*PIP_NO_PARTIAL_CLONE_FOR_BROKEN_GIT_SERVERÚnor!   z--filter=blob:nonery   zRev options %s, branch_name %sÚcheckoutrV   r{   zorigin/z-bz--trackzResolved %s to commit %s©Ú	verbosity)Ú
to_displayrO   r   r	   rS   r   r1   r2   r3   r5   r   r(   rƒ   ÚgetattrÚdebugr=   r€   ra   r�   r~   Úupdate_submodules)r?   rA   r@   rC   rŽ   Úrev_displayÚflagsry   Úcmd_argsÚtrack_branchr   s              r   Ú	fetch_newÚGit.fetch_new  sé  € ð "×,Ñ,Ó.ˆÜ�‰Ð(¨#¼LÈÓ<NÔOØ˜‹>Ø%1‰EØ˜!‹^Ø‰Eà/ˆEØ×ÑÓ! WÓ,´YÜ�J‰J�N‰NÐGÈÓN÷6
ñ 6
ð ×ÑÜØØ(ðð ðð ð	ð
 òõð ×Ñœ\¨'ÐE°EÐE¸3ÐEÀÒEÔFà�?�?à×/Ñ/°¸;ÓGˆKÜ! +¨}¸dÓCˆKÜ�L‰LÐ9¸;ÔTØÑ"ð ×.Ñ.¨t·_±_×EÑEÜ+Ø"ØØ#×+Ñ+Ó-ó �Hð
 ×$Ñ$ XÐ$Ñ8øØ×(Ñ(¨Ó.°+Ó=ð ")¨¨Ð6�àØØØØ ð�ð × Ñ  Ð Ñ4øà×#Ñ# DÓ)ˆCØ%×.Ñ.¨sÓ3ˆKä�‰Ð.°·_±_ÔEð 	×Ñ˜tÐÒ9r   c                óà   • U R                  [        SSU5      US9  / nUS::  a  UR                  S5        [        S/UQUR                  5       P76 nU R                  XaS9  U R	                  XS9  g )NÚconfigzremote.origin.urlr{   r   rV   rŒ   r�   )r5   r   Úappendr€   r’   ©r?   rA   r@   rC   rŽ   Úextra_flagsr•   s          r   ÚswitchÚ
Git.switchQ  s‚   € ð 	×ÑÜ˜Ð#6¸Ó<Øð 	ñ 	
ð
 ˆà˜‹>Ø×Ñ˜tÔ$ä 
ÐP¨[ÐP¸+×:MÑ:MÓ:OÒPˆØ×Ñ˜ÐÑ,à×Ñ˜tÐÒ9r   c                óH  • / nUS::  a  UR                  S5        U R                  5       S:¼  a  U R                  SS/UQUS9  OU R                  S/UQUS9  U R                  XU5      n[	        SS/UQUR                  5       P76 nU R                  XaS9  U R                  XS	9  g )
Nr   rV   )rL   é	   rz   z--tagsr{   Úresetz--hardr�   )r›   rS   r5   rƒ   r   r€   r’   rœ   s          r   ÚupdateÚ
Git.updateg  sÌ   € ð ˆà˜‹>Ø×Ñ˜tÔ$ð ×ÑÓ! VÓ+à×Ñ˜g xÐ>°+Ð>ÀDÐÒIà×Ñ˜gÐ4¨Ð4¸$ÐÑ?à×+Ñ+¨D°{ÓCˆÜØØð
ð ð
ð ×ÑÓ!ò	
ˆð 	×Ñ˜ÐÑ,à×Ñ˜tÐÒ9r   c                ó,  • U R                  / SQSSSUS9nUR                  5       n US   nU H  nUR	                  S5      (       d  M  Un  O   UR                  S5      S	   nU R                  UR                  5       5      $ ! [         a    [        ef = f)
z‚
Return URL of the first remote encountered.

Raises RemoteNotFoundError if the repository does not have a remote
url configured.
)rš   z--get-regexpzremote\..*\.urlrW   FTrX   r   zremote.origin.url rh   rL   )r5   Ú
splitlinesÚ
IndexErrorr   r\   rj   Ú_git_remote_to_pip_urlr[   )r6   r^   ÚstdoutÚremotesÚfound_remoteÚremoter@   s          r   Úget_remote_urlÚGit.get_remote_url…  s¯   € ð —‘Ú:Ø!%ØØØð !ð 
ˆð ×#Ñ#Ó%ˆð	&Ø" 1™:ˆLó ˆFØ× Ñ Ð!5×6Ó6Ø%�Ùñ ð × Ñ  Ó% aÑ(ˆØ×)Ñ)¨#¯)©)«+Ó6Ð6øô ó 	&Ü%Ð%ð	&ús   §B ÂBc                ó>  • [         R                  " SU 5      (       a  U $ [        R                  R	                  U 5      (       a$  [
        R                  " U 5      R                  5       $ [        R                  U 5      nU(       a  UR                  S5      $ [        U 5      e)aè  
Convert a remote url from what git uses to what pip accepts.

There are 3 legal forms **url** may take:

    1. A fully qualified url: ssh://git@example.com/foo/bar.git
    2. A local project.git folder: /path/to/bare/repository.git
    3. SCP shorthand for form 1: git@example.com:foo/bar.git

Form 1 is output as-is. Form 2 must be converted to URI and form 3 must
be converted to form 1.

See the corresponding test test_git_remote_url_to_pip() for examples of
sample inputs/outputs.
z\w+://zssh://\1\2/\3)Úrer   r1   ÚpathÚexistsÚpathlibÚPathÚas_uriÚ	SCP_REGEXÚexpandr   )r@   Ú	scp_matchs     r   r¨   ÚGit._git_remote_to_pip_url£  su   € ô" �8Š8�I˜s×#Ñ#àˆJÜ�7‰7�>‰>˜#×Ñô —<’< Ó$×+Ñ+Ó-Ð-Ü—O‘O CÓ(ˆ	Þà×#Ñ#Ð$4Ó5Ð5ä! #Ó&Ð&r   c                óV   •  U R                  SSSUS-   /USS9  g! [         a     gf = f)zE
Check if rev is a commit that is available in the local repository.
ú	rev-parserV   z--verifyz	^{commit}F)rZ   Úlog_failed_cmdT)r5   r   )r6   r^   r(   s      r   ru   ÚGit.has_commitÂ  sH   € ð
		Ø�O‰OØ˜d J°°kÑ0AÐBØØ$ð ñ ð øô !ó 	Ùð	ús   ‚ ›
(§(c                óT   • Uc  SnU R                  SU/SSUS9nUR                  5       $ )Nr$   r»   FT©rJ   rK   rZ   )r5   r[   )r6   r^   r(   Úcurrent_revs       r   r�   ÚGit.get_revisionÒ  sA   € à‰;ØˆCØ—o‘oØ˜#ÐØØØð	 &ð 
ˆð × Ñ Ó"Ð"r   c                ó\  • U R                  SS/SSUS9R                  5       n[        R                  R	                  U5      (       d  [        R                  R                  X5      n[        R                  R                  [        R                  R                  US5      5      n[        X5      $ )zy
Return the path to Python project root, relative to the repo root.
Return None if the project root is in the repo root.
r»   z	--git-dirFTr¿   z..)r5   r[   r1   r±   ÚisabsÚjoinÚabspathr   )r6   r^   Úgit_dirÚ	repo_roots       r   Úget_subdirectoryÚGit.get_subdirectoryÞ  s‡   € ð —/‘/Ø˜+Ð&ØØØð	 "ð 
÷
 ‰%‹'ð 	ô �w‰w�}‰}˜W×%Ñ%Ü—g‘g—l‘l 8Ó5ˆGÜ—G‘G—O‘O¤B§G¡G§L¡L°¸$Ó$?Ó@ˆ	Ü7¸ÓLÐLr   c                ó  >• SSK n[        U5      u  p4pVnUR                  S5      (       a„  US[        UR	                  S5      5      *  nX‚R
                  R                  U5      R                  SS5      R	                  S5      -   n	UR                  S5      S-   n
USU
 [        X:S XIXg45      -   nSU;  a?  S	U;  d   eUR                  S
S5      n[        TU ]-  U5      u  pnUR                  SS5      nO[        TU ]-  U5      u  pnXU4$ )a  
Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'.
That's required because although they use SSH they sometimes don't
work with a ssh:// scheme (e.g. GitHub). But we need a scheme for
parsing. Hence we remove it again afterwards and return it as a stub.
r   NÚfileÚ/Ú\Ú+rL   z://zfile:zgit+z
git+ssh://zssh://Ú )Úurllib.requestÚurlsplitÚendswithr]   ÚlstripÚrequestÚurl2pathnamer   ÚfindÚ
urlunsplitr4   Úget_url_rev_and_auth)r6   r@   ÚurllibÚschemeÚnetlocr±   ÚqueryÚfragmentÚinitial_slashesÚnewpathÚ
after_plusr(   Ú	user_passr9   s                €r   rØ   ÚGit.get_url_rev_and_authð  s   ø€ ó 	ô 19¸³Ñ-ˆ˜ XØ�?‰?˜6×"Ñ"Ø"Ð#;¤c¨$¯+©+°cÓ*:Ó&;Ð%;Ð<ˆOØ%¯©×(CÑ(CÀDÓ(I×(QÑ(QØ�có)ç‰f�S‹kñˆGð  Ÿ™ SÓ)¨AÑ-ˆJØ˜˜*Ð%¬
Ø˜Ð$ f°uÐGó)ñ ˆCð ˜ÓØ #Ó%Ð%Ð%Ø—+‘+˜f lÓ3ˆCÜ"'¡'Ñ">¸sÓ"CÑˆC�iØ—+‘+˜h¨Ó+‰Cä"'¡'Ñ">¸sÓ"CÑˆC�ià˜Ð"Ð"r   c                óà   • / SQnUS::  a  UR                  S5        [        R                  R                  [        R                  R	                  US5      5      (       d  g U R                  UUS9  g )N)Ú	submoduler£   z--initz--recursiver   rV   z.gitmodulesr{   )r›   r1   r±   r²   rÄ   r5   )r6   r^   rŽ   Úargvs       r   r’   ÚGit.update_submodules  sV   € â?ˆà˜‹>Ø�K‰K˜Ôä�w‰w�~‰~œbŸg™gŸl™l¨8°]ÓC×DÑDØØ�‰ØØð 	ò 	
r   c           	     ó   >• [         TU ]  U5      nU(       a  U$  U R                  SS/USSSSS9n[        R                  R                  UR                  S5      5      $ ! [         a    [        R                  SU5         g [         a     g f = f)	Nr»   z--show-toplevelFTÚraise)rZ   rJ   rK   re   r¼   zKcould not determine if %s is under git control because git is not availablez
)r4   Úget_repository_rootr5   r   rO   r‘   r   r1   r±   Únormpathrk   )r6   r^   ÚlocÚrr9   s       €r   ré   ÚGit.get_repository_root  sŸ   ø€ ä‰gÑ)¨(Ó3ˆÞØˆJð	Ø—‘ØÐ/Ð0ØØ!Ø Ø%Ø$ð  ð ˆAô" �w‰w×Ñ §¡¨Ó 0Ó1Ð1øô ó 	Ü�L‰Lð/àôñ
 Ü ó 	Ùð	ús   ›A Á BÂ	BÂBc                ó   • g)zEIn either https or ssh form, requirements must be prefixed with git+.Tr&   )Úrepo_urls    r   Úshould_add_vcs_url_prefixÚGit.should_add_vcs_url_prefix8  s   € ð r   r&   )r(   ÚstrÚreturnz	list[str])r7   r   r8   r   ró   rò   )r@   rò   rA   rò   ró   r   )ró   ztuple[int, ...])r^   rò   ró   ú
str | None)rA   rò   r(   rò   ró   ztuple[str | None, bool])rA   rò   r(   rò   ró   r   )rA   rò   r@   r   rC   r   ró   r   )rA   rò   r†   rô   ró   r   )
rA   rò   r@   r   rC   r   rŽ   rQ   ró   ÚNone)r   )r^   rò   ró   rò   )r@   rò   ró   rò   )r^   rò   r(   rò   ró   r   r   )r^   rò   r(   rô   ró   rò   )r@   rò   ró   z tuple[str, str | None, AuthInfo])r^   rò   rŽ   rQ   ró   rõ   )rï   rò   ró   r   )#Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r†   ÚdirnameÚ	repo_nameÚschemesÚunset_environÚdefault_arg_revÚstaticmethodr)   Úclassmethodr5   rE   rS   ra   r>   rv   rƒ   r=   r—   rž   r£   r­   r¨   ru   r�   rÈ   rØ   r’   ré   rð   Ú__static_attributes__Ú__classcell__)r9   s   @r   r   r   =   s4  ø† Ø€DØ€GØ€Ið€Gð 1€MØ€Oàóó ðð ö4ó ð4ô$ô:ð óó ðð0 ó+ó ð+ðZ óó ðð, ð+Øð+Ø'ð+Ø6@ð+à	ó+ó ð+ðZ ó.ó ð.ð?:Øð?:Ø(ð?:Ø7Að?:ØNQð?:à	ô?:ðL ð:àð:ð ð:ð  ð	:ð
 ð:ð 
õ:ð6 ð:àð:ð ð:ð  ð	:ð
 ð:ð 
õ:ð< ó7ó ð7ð: ó'ó ð'ð< óó ðð õ	#ó ð	#ð óMó ðMð" ö#ó ð#ð@ õ
ó ð
ð ö2ó ð2ð0 óó ör   r   )r   rò   ró   r   )-Ú
__future__r   ÚloggingÚos.pathr1   r³   r°   Úurllib.parserÙ   Údataclassesr   Útypingr   Úpip._internal.exceptionsr   r   Úpip._internal.utils.miscr   r	   r
   r   Úpip._internal.utils.subprocessr   Ú pip._internal.vcs.versioncontrolr   r   r   r   r   r   r   ÚparserÑ   r×   Ú	getLoggerrö   rO   ÚcompilerN   r   ÚVERBOSEr¶   r   r   Úregisterr&   r   r   Ú<module>r     sÑ   ðÝ "ã Û Û Û 	Û Ý Ý ç Bß RÓ RÝ 7÷÷ ñ ð �<‰<× Ñ €Ø�\‰\×$Ñ$€
ð 
×	Ò	˜8Ó	$€ð —J’JðóÐ ð �ZŠZÐ+Ó,€
ð �JŠJð		ð ‡J�Jó€	ô'ô~ˆ.ô ~ðB ‡‚ˆSÕ r   