Ë
    hKêjjN  ã                   ó
  — d dl mZ d dlmZ d dlmZ dZ	 dFd„Z e«       Z e«       Zd„ Z	d„ Z
d„ Zd	„ Ze
Ze
Zej                  d
«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d«      d„ «       Zej                  d «      d!„ «       Zej                  d"«      d#„ «       Zej                  d$«      d%„ «       Zej                  d
«      d&„ «       Zej                  d«      d'„ «       Zej                  d«      d(„ «       Z ej                  d$«      d)„ «       Z!ej                  d«      d*„ «       Z"ej                  d«      d+„ «       Z#ej                  ddd«      d,„ «       Z$ej                  d-«      d.„ «       Z%ej                  d «      d/„ «       Z&ej                  d0«      d1„ «       Z'ej                  d2«      d3„ «       Z(ej                  d4«      d5„ «       Z)ej                  d6«      d7„ «       Z*ej                  d8«      d9„ «       Z+d:e,d;e,fd<„Z-ej                  d=«      d>e,d;e,fd?„«       Z.ej                  d@«      dA„ «       Z/dB„ Z0dCe,d;e,fdD„Z1yE)Gé    )Ú
PackageURL)ÚNoRouteAvailable)ÚRouterz$https://repo.maven.apache.org/maven2c                 ó¢   — |dvrt        d«      ‚d|› d|› d|› d|› �d|› d|› d|› d|› �d	|› d|› d
|› d|› d|› d|› �dœ}|j                  | «      S )z_
    Return the download URL for a hosted git repository given a package type
    or None.
    )Úzipútar.gzz,Only zip and tar.gz extensions are supportedúhttps://github.com/ú/ú	/archive/ú.úhttps://bitbucket.org/z/get/úhttps://gitlab.com/z/-/archive/ú-)ÚgithubÚ	bitbucketÚgitlab)Ú
ValueErrorÚget)ÚtypeÚ	namespaceÚnameÚversionÚarchive_extensionÚdownload_url_by_types         ú`/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/packageurl/contrib/purl2url.pyÚ%get_repo_download_url_by_package_typer   "   s    € ð Ð 1Ñ1ÜÐGÓHÐHð (¨	 {°!°D°6¸À7À)È1ÐM^ÐL_Ð`Ø-¨i¨[¸¸$¸¸uÀWÀIÈQÐO`ÐNaÐbØ'¨	 {°!°D°6¸ÀWÀIÈQÈtÈfÐTUÐV]ÐU^Ð^_Ð`qÐ_rÐsñÐð
  ×#Ñ# DÓ)Ð)ó    c                 óJ   — |r	 | j                  |«      S y # t        $ r Y y w xY w)N)Úprocessr   )ÚrouterÚpurls     r   Ú_get_url_from_routerr"   8   s2   € Ùð	Ø—>‘> $Ó'Ð'ð øô  ò 	Ùð	ús   „ –	"¡"c                 ó"   — t        t        | «      S )zB
    Return a repository URL inferred from the `purl` string.
    )r"   Úrepo_router©r!   s    r   Úget_repo_urlr&   @   s   € ô  ¤¨TÓ2Ð2r   c                 óŒ   — t        t        | «      }|r|S t        j                  | «      }|j                  j                  dd«      S )z@
    Return a download URL inferred from the `purl` string.
    Údownload_urlN)r"   Údownload_routerr   Úfrom_stringÚ
qualifiersr   )r!   r(   Ú	purl_datas      r   Úget_download_urlr-   G   sD   € ô (¬¸Ó>€LÙØÐô ×&Ñ& tÓ,€IØ×Ñ×#Ñ# N°DÓ9Ð9r   c                 óh   — t         t        f}g }|D ]  } || «      }|sŒ|j                  |«       Œ  |S )zK
    Return all inferred URLs (repo, download) from the `purl` string.
    )r&   r-   Úappend)r!   Úurl_functionsÚinferred_urlsÚurl_funcÚurls        r   Úget_inferred_urlsr4   T   sI   € ô
 	Üð€Mð
 €MØ!ò &ˆÙ�t‹nˆÚØ× Ñ  Õ%ð&ð
 Ðr   zpkg:cargo/.*c                 ó„   — t        j                  | «      }|j                  }|j                  }|r
|rd|› d|› �S |rd|› �S y)z9
    Return a cargo repo URL from the `purl` string.
    zhttps://crates.io/crates/r
   N©r   r*   r   r   ©r!   r,   r   r   s       r   Úbuild_cargo_repo_urlr8   k   sU   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø*¨4¨&°°'°Ð;Ð;Ù	Ø*¨4¨&Ð1Ð1ð 
r   zpkg:bitbucket/.*c                 óx   — t        j                  | «      }|j                  }|j                  }|r|rd|› d|› �S yy)z=
    Return a bitbucket repo URL from the `purl` string.
    r   r
   N©r   r*   r   r   ©r!   r,   r   r   s       r   Úbuild_bitbucket_repo_urlr<   {   sG   € ô
 ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€Dá‘	Ø'¨	 {°!°D°6Ð:Ð:ð €tr   zpkg:github/.*c                 óä   — t        j                  | «      }|j                  }|j                  }|j                  }|j
                  }|r|syd|› d|› �}|r|j                  dd«      }|› d|› |› �}|S )z:
    Return a github repo URL from the `purl` string.
    Nr	   r
   Úversion_prefixÚ z/tree/)r   r*   r   r   r   r+   r   )r!   r,   r   r   r   r+   Úrepo_urlr>   s           r   Úbuild_github_repo_urlrA   ‰   s†   € ô
 ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€DØ×Ñ€GØ×%Ñ%€Já‘YØà$ Y K¨q°°Ð7€HáØ#Ÿ™Ð(8¸"Ó=ˆØ�Z˜v nÐ%5°g°YÐ?ˆà€Or   zpkg:gitlab/.*c                 óx   — t        j                  | «      }|j                  }|j                  }|r|rd|› d|› �S yy)z:
    Return a gitlab repo URL from the `purl` string.
    r   r
   Nr:   r;   s       r   Úbuild_gitlab_repo_urlrC   ¡   sG   € ô
 ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€Dá‘	Ø$ Y K¨q°°Ð7Ð7ð €tr   zpkg:(gem|rubygems)/.*c                 ó„   — t        j                  | «      }|j                  }|j                  }|r
|rd|› d|› �S |rd|› �S y)z<
    Return a rubygems repo URL from the `purl` string.
    zhttps://rubygems.org/gems/z
/versions/Nr6   r7   s       r   Úbuild_rubygems_repo_urlrE   ¯   sU   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø+¨D¨6°¸G¸9ÐEÐEÙ	Ø+¨D¨6Ð2Ð2ð 
r   zpkg:cran/.*c                 ón   — t        j                  | «      }|j                  }|j                  }d|› d|› d�S )z8
    Return a cran repo URL from the `purl` string.
    z'https://cran.r-project.org/src/contrib/Ú_ú.tar.gzr6   r7   s       r   Úbuild_cran_repo_urlrI   ¿   s=   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gà4°T°F¸!¸G¸9ÀGÐLÐLr   z
pkg:npm/.*c                 ó°   — t        j                  | «      }|j                  }|j                  }|j                  }d}|r||› d�z  }||› z  }|r|d|› �z  }|S )z7
    Return a npm repo URL from the `purl` string.
    zhttps://www.npmjs.com/package/r
   z/v/©r   r*   r   r   r   )r!   r,   r   r   r   r@   s         r   Úbuild_npm_repo_urlrL   Ì   so   € ô
 ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€DØ×Ñ€Gà/€HÙØ�y�k �OÑ#ˆà�4�&Ñ€HáØ�c˜'˜�OÑ#ˆà€Or   zpkg:pypi/.*c                 ó°   — t        j                  | «      }|j                  xs dj                  dd«      }|j                  }|r|r	d|› d|› d�S |rd|› d�S y)z8
    Return a pypi repo URL from the `purl` string.
    r?   rG   r   zhttps://pypi.org/project/r
   N)r   r*   r   Úreplacer   r7   s       r   Úbuild_pypi_repo_urlrO   ã   sk   € ô
 ×&Ñ& tÓ,€Ià�N‰NÒ ˜b×)Ñ)¨#¨sÓ3€DØ×Ñ€Gá‘Ø*¨4¨&°°'°¸!Ð<Ð<Ù	Ø*¨4¨&°Ð2Ð2ð 
r   zpkg:composer/.*c                 ó¨   — t        j                  | «      }|j                  }|j                  }|j                  }|r|rd|› d|› d|› �S |rd|› d|› �S y)z<
    Return a composer repo URL from the `purl` string.
    zhttps://packagist.org/packages/r
   ú#N©r   r*   r   r   r   ©r!   r,   r   r   r   s        r   Úbuild_composer_repo_urlrT   ó   sl   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€GØ×#Ñ#€Iá‘Ø0°°¸1¸T¸FÀ!ÀGÀ9ÐMÐMÙ	Ø0°°¸1¸T¸FÐCÐCð 
r   zpkg:nuget/.*c                 ó„   — t        j                  | «      }|j                  }|j                  }|r
|rd|› d|› �S |rd|› �S y)z9
    Return a nuget repo URL from the `purl` string.
    zhttps://www.nuget.org/packages/r
   Nr6   r7   s       r   Úbuild_nuget_repo_urlrV     sU   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø0°°°a¸°yÐAÐAÙ	Ø0°°Ð7Ð7ð 
r   zpkg:hackage/.*c                 ó„   — t        j                  | «      }|j                  }|j                  }|r
|rd|› d|› �S |rd|› �S y)z;
    Return a hackage repo URL from the `purl` string.
    ú$https://hackage.haskell.org/package/r   Nr6   r7   s       r   Úbuild_hackage_repo_urlrY     sU   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø5°d°V¸1¸W¸IÐFÐFÙ	Ø5°d°VÐ<Ð<ð 
r   zpkg:golang/.*c                 ó¨   — t        j                  | «      }|j                  }|j                  }|j                  }|r|rd|› d|› d|› �S |rd|› d|› �S y)z:
    Return a golang repo URL from the `purl` string.
    zhttps://pkg.go.dev/r
   ú@NrK   )r!   r,   r   r   r   s        r   Úbuild_golang_repo_urlr\   $  sl   € ô
 ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€DØ×Ñ€Gá‘Ø$ Y K¨q°°°a¸°yÐAÐAÙ	Ø$ Y K¨q°°Ð7Ð7ð 
r   zpkg:cocoapods/.*c                 óV   — t        j                  | «      }|j                  }|xr d|› �S )z=
    Return a CocoaPods repo URL from the `purl` string.
    zhttps://cocoapods.org/pods/)r   r*   r   )r!   r,   r   s      r   Úbuild_cocoapods_repo_urlr^   5  s0   € ô
 ×&Ñ& tÓ,€IØ�>‰>€DØÒ8Ð1°$°Ð8Ð8r   zpkg:maven/.*c                 ó  — t        j                  | «      }|j                  }|j                  }|j                  }|j
                  }|j                  dt        «      }|r%|r"|r|j                  dd«      }|› d|› d|› d|› �S yyy)z9
    Return a Maven repo URL from the `purl` string.
    Úrepository_urlr   r
   N©	r   r*   r   r   r   r+   r   ÚDEFAULT_MAVEN_REPOSITORYrN   )r!   r,   r   r   r   r+   Úbase_urls          r   Úbuild_maven_repo_urlrd   ?  s�   € ô
 ×&Ñ& tÓ,€IØ×#Ñ#€IØ�>‰>€DØ×Ñ€GØ×%Ñ%€Jà�~‰~Ð.Ô0HÓI€Há‘T™gØ×%Ñ% c¨3Ó/ˆ	Ø�˜1˜Y˜K q¨¨¨a°¨yÐ9Ð9ð &�T€yr   c                 óz   — t        j                  | «      }|j                  }|j                  }|r|r	d|› d|› d�S yy)z=
    Return a cargo download URL from the `purl` string.
    z https://crates.io/api/v1/crates/r
   z	/downloadNr6   r7   s       r   Úbuild_cargo_download_urlrf   T  sI   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø1°$°°q¸¸	ÀÐKÐKð €tr   c                 óz   — t        j                  | «      }|j                  }|j                  }|r|r	d|› d|› d�S yy)z@
    Return a rubygems download URL from the `purl` string.
    zhttps://rubygems.org/downloads/r   z.gemNr6   r7   s       r   Úbuild_rubygems_download_urlrh   b  sI   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø0°°°a¸°yÀÐEÐEð €tr   c                 ó´   — t        j                  | «      }|j                  }|j                  }|j                  }d}|r|d|› �z  }|r|r|› d|› d|› d|› d�S yy)z;
    Return a npm download URL from the `purl` string.
    zhttps://registry.npmjs.orgr
   z/-/r   z.tgzNrK   )r!   r,   r   r   r   rc   s         r   Úbuild_npm_download_urlrj   p  sv   € ô
 ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€DØ×Ñ€Gà+€HáØ�a˜	�{�OÑ#ˆá‘Ø�˜1˜T˜F # d V¨1¨W¨I°TÐ:Ð:ð €tr   c                 óv  — t        j                  | «      }|j                  }|j                  }|j                  }|j
                  }|j                  dt        «      }|j                  dd«      }|j                  d«      }|r9|r6|r3|j                  dd«      }|rd|› �nd}|› d|› d|› d|› d|› d|› |› d|› �S y	y	y	)
z=
    Return a maven download URL from the `purl` string.
    r`   r   ÚjarÚ
classifierr   r
   r   r?   Nra   )	r!   r,   r   r   r   r+   rc   Ú
maven_typerm   s	            r   Úbuild_maven_download_urlro   „  sÖ   € ô
 ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€DØ×Ñ€GØ×%Ñ%€Jà�~‰~Ð.Ô0HÓI€HØ—‘ ¨Ó.€JØ—‘ Ó-€Já‘T™gØ×%Ñ% c¨3Ó/ˆ	Ù)3�q˜˜Ñ%¸ˆ
Ø�˜1˜Y˜K q¨¨¨a°¨y¸¸$¸¸qÀÀ	È*ÈÐUVÐWaÐVbÐcÐcð &�T€yr   c           	      ó†   — t        j                  | «      }|j                  }|j                  }|r|rd|› d|› d|› d|› d�	S yy)z?
    Return a hackage download URL from the `purl` string.
    rX   r   r
   rH   Nr6   r7   s       r   Úbuild_hackage_download_urlrq   š  sV   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø5°d°V¸1¸W¸IÀQÀtÀfÈAÈgÈYÐV]Ð^Ð^ð €tr   c                 óx   — t        j                  | «      }|j                  }|j                  }|r|rd|› d|› �S yy)z=
    Return a nuget download URL from the `purl` string.
    z%https://www.nuget.org/api/v2/package/r
   Nr6   r7   s       r   Úbuild_nuget_download_urlrs   ¨  sG   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø6°t°f¸A¸g¸YÐGÐGð €tr   c                 ó   — t        | «      S )z>
    Return a gitlab download URL from the `purl` string.
    )Úget_repo_download_urlr%   s    r   Úbuild_repo_download_urlrv   ¶  s   € ô
 ! Ó&Ð&r   z
pkg:hex/.*c                 óz   — t        j                  | «      }|j                  }|j                  }|r|r	d|› d|› d�S yy)z;
    Return a hex download URL from the `purl` string.
    zhttps://repo.hex.pm/tarballs/r   z.tarNr6   r7   s       r   Úbuild_hex_download_urlrx   ¾  sI   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø.¨t¨f°A°g°Y¸dÐCÐCð €tr   c                 ó  — t        j                  | «      }|j                  }|j                  }|j                  }|sy|r|› d|› �}t        |«      }t        |«      }|j                  d«      sd|z   }|r|r	d|› d|› d�S yy)z>
    Return a golang download URL from the `purl` string.
    Nr
   Úvzhttps://proxy.golang.org/z/@v/ú.zip)r   r*   r   r   r   Úescape_golang_pathÚ
startswith)r!   r,   r   r   r   ÚenameÚeversions          r   Úbuild_golang_download_urlr€   Ì  sš   € ô
 ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€DØ×Ñ€GáØñ Ø�˜A˜d˜VÐ$ˆä˜tÓ$€EÜ! 'Ó*€Hà×Ñ˜sÔ#Ø˜‘>ˆá‘Ø*¨5¨'°°h°Z¸tÐDÐDð €tr   z
pkg:pub/.*c                 óz   — t        j                  | «      }|j                  }|j                  }|r|r	d|› d|› d�S yy)z;
    Return a pub download URL from the `purl` string.
    zhttps://pub.dev/api/archives/r   rH   Nr6   r7   s       r   Úbuild_pub_download_urlr‚   è  sI   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€Gá‘Ø.¨t¨f°A°g°Y¸gÐFÐFð €tr   zpkg:swift/.*c                 óš   — t        j                  | «      }|j                  }|j                  }|j                  }|s|s|syd|› d|› d|› d�S )zE
    Return a Swift Package download URL from the `purl` string.
    Nzhttps://r
   r   r{   rR   rS   s        r   Úbuild_swift_download_urlr„   ö  sX   € ô
 ×&Ñ& tÓ,€Ià�>‰>€DØ×Ñ€GØ×#Ñ#€Iá™¡Øà�i�[  $  y°°	¸Ð>Ð>r   zpkg:luarocks/.*c                 óÂ   — t        j                  | «      }|j                  xs i }|j                  dd«      }|j                  }|j
                  }|r|r|› d|› d|› d�S yy)z@
    Return a LuaRocks download URL from the `purl` string.
    r`   zhttps://luarocks.orgr
   r   z	.src.rockN)r   r*   r+   r   r   r   )r!   r,   r+   r`   r   r   s         r   Úbuild_luarocks_download_urlr†     sp   € ô
 ×&Ñ& tÓ,€Ià×%Ñ%Ò+¨€Jà—^‘^Ð$4Ð6LÓM€Nà�>‰>€DØ×Ñ€Gá‘Ø Ð!  4 &¨¨'¨°)Ð<Ð<ð €tr   zpkg:conda/.*c                 óÀ  — t        j                  | «      }|j                  r|j                  sy|j                  xs i }|j                  }|j                  }|j                  d«      }|j                  d«      xs d}|j                  d«      xs d}|j                  d«      }dt        dt        fd	„}	 |	|«      }
|r|› d
|› d
|› d|› �n	|› d
|› d|› �}|
› d|› d|› �}|S )ag  
    Resolve a Conda PURL to a real downloadable URL

    Supported qualifiers:
      - channel: e.g., main, conda-forge (required for deterministic base)
      - subdir: e.g., linux-64, osx-arm64, win-64, noarch
      - build:  exact build string (optional but recommended)
      - type:   'conda' or 'tar.bz2' (preference; fallback to whichever exists)
    NÚbuildÚchannelÚmainÚsubdirÚnoarchr   Úreturnc                 ó>   — | xs dj                  «       }|dv ryd|› �S )z¨
        Map a conda channel to its base URL.
        - 'main' / 'defaults' -> repo.anaconda.com
        - any other channel    -> conda.anaconda.org/<channel>
        r?   )rŠ   Údefaultsz#https://repo.anaconda.com/pkgs/mainzhttps://conda.anaconda.org/)Úlower)r‰   Úchs     r   Ú_conda_base_for_channelz9build_conda_download_url.<locals>._conda_base_for_channel0  s/   € ð Šm˜×"Ñ"Ó$ˆØÐ%Ñ%Ø8Ø,¨R¨DÐ1Ð1r   r   r   r
   )r   r*   r   r   r+   r   Ústr)r!   ÚpÚqr   r   rˆ   r‰   r‹   Úreq_typer’   ÚbaseÚpackage_identifierr(   s                r   Úbuild_conda_download_urlr™     sú   € ô 	×Ñ˜tÓ$€AØ�6Š6˜ŸšØà	�‰Ò˜€AØ�6‰6€DØ�i‰i€GØ�E‰E�'‹N€EØ�e‰e�IÓÒ( &€GØ�U‰U�8‹_Ò( €FØ�u‰u�V‹}€Hð	2¬ð 	2´ó 	2ñ # 7Ó+€Dñ 38ˆ4ˆ&��'�˜!˜E˜7 ! H :Ñ.À¸vÀQÀwÀiÈqÐQYÐPZÐ=[ð ð �V˜1˜V˜H AÐ&8Ð%9Ð:€LØÐr   zpkg:alpm/.*c                 óÐ   — t        j                  | «      }|j                  }|j                  }|j                  j                  dd«      }|r|sy |d   }d|› d|› d|› d|› d|› d�}|S )NÚarchÚanyr   z'https://archive.archlinux.org/packages/r
   r   z.pkg.tar.zst)r   r*   r   r   r+   r   )Úpurl_strr!   r   r   r›   Úfirst_letterr3   s          r   Úbuild_alpm_download_urlrŸ   E  s|   € ä×!Ñ! (Ó+€DØ�9‰9€DØ�l‰l€GØ�?‰?×Ñ˜v uÓ-€Dá‘wØà˜‘7€LØ3°L°>ÀÀ4À&ÈÈ$ÈÈqÐQXÐPYÐYZÐ[_ÐZ`Ð`lÐ
m€CØ€Jr   r   r�   c                 ó<   — d| v r| j                  dd«      \  }}|S | S )zd
    Remove the epoch (if any) from a Debian version.
    E.g., "1:2.4.47-2" becomes "2.4.47-2"
    ú:é   )Úsplit)r   rG   rz   s      r   Únormalize_versionr¤   T  s)   € ð
 ˆg�~Ø�}‰}˜S !Ó$‰ˆˆ1ØˆØ€Nr   z
pkg:deb/.*r�   c                 óî  — t        j                  | «      }|j                  }|j                  }|j                  }|j
                  xs i }|j                  d«      }|j                  d«      }|r|st        d«      ‚|sd}|r|j                  d«      }n|dk(  rd}n|dk(  rd	}nt        d
|› �«      ‚t        |«      }	|dk(  r	|› d|	› d�}
n|› d|	› d|› d�}
d|d   j                  «       › d|› �}|› |› d|
› �S )z}
    Construct a download URL for a Debian or Ubuntu package PURL.
    Supports optional 'repository_url' in qualifiers.
    r›   r`   z1Both name and version must be present in deb purlÚsourcer
   Údebianzhttps://deb.debian.org/debianÚubuntuz http://archive.ubuntu.com/ubuntuzUnsupported distro namespace: rG   z.dscz.debz/pool/main/r   )r   r*   r   r   r   r+   r   r   ÚrstripÚNotImplementedErrorr¤   r�   )r�   r”   r   r   r   r+   r›   r`   rc   Únorm_versionÚfilenameÚ	pool_paths               r   Úbuild_deb_download_urlr®   _  s!  € ô 	×Ñ˜xÓ(€Aà�6‰6€DØ�i‰i€GØ—‘€IØ—‘Ò# €JØ�>‰>˜&Ó!€DØ—^‘^Ð$4Ó5€Ná‘wÜÐLÓMÐMáØˆáØ!×(Ñ(¨Ó-‰à˜Ò Ø6‰HØ˜(Ò"Ø9‰Hä%Ð(FÀyÀkÐ&RÓSÐSä$ WÓ-€LàˆxÒØ�V˜1˜\˜N¨$Ð/‰à�V˜1˜\˜N¨!¨D¨6°Ð6ˆà˜d 1™gŸm™m›oÐ.¨a°¨vÐ6€IàˆZ˜	�{ ! H :Ð.Ð.r   z
pkg:apk/.*c                 óL  — t        j                  | «      } | j                  }| j                  }| j                  j                  d«      }| j                  j                  d«      }| j                  j                  d«      }|r|r|r|r|st        d«      ‚d|› d|› d|› d|› d|› d�S )	z 
    Return a download URL for a fully qualified Alpine Linux package PURL.

    Example:
    pkg:apk/acct@6.6.4-r0?arch=x86&alpine_version=v3.11&repo=main
    r›   ÚrepoÚalpine_versionzXAll qualifiers (arch, repo, alpine_version) and name/version must be present in apk purlz&https://dl-cdn.alpinelinux.org/alpine/r
   r   z.apk)r   r*   r   r   r+   r   r   )r!   r   r   r›   r°   r±   s         r   Úbuild_apk_download_urlr²   Š  s¯   € ô ×!Ñ! $Ó'€DØ�9‰9€DØ�l‰l€GØ�?‰?×Ñ˜vÓ&€DØ�?‰?×Ñ˜vÓ&€DØ—_‘_×(Ñ(Ð)9Ó:€Ná‘w¡d±$¹nÜØfó
ð 	
ð
 1°Ð0@ÀÀ$ÀÀqÈÈÈaÐPTÈvÐUVÐW^ÐV_Ð_cÐdðr   c                 ó*  — t        j                  | «      }|j                  }|j                  }|j                  }|j
                  }|j                  }|j                  d«      }|r|S |r|r|sy|j                  dd«      }|› |› �}t        ||||¬«      S )z£
    Return ``download_url`` if present in ``purl`` qualifiers or
    if ``namespace``, ``name`` and ``version`` are present in ``purl``
    else return None.
    r(   Nr>   r?   )r   r   r   r   )	r   r*   r   r   r   r   r+   r   r   )	r!   r,   r   r   r   r   r+   r(   r>   s	            r   ru   ru   £  sž   € ô ×&Ñ& tÓ,€Ià×#Ñ#€IØ�>‰>€DØ�>‰>€DØ×Ñ€GØ×%Ñ%€Jà—>‘> .Ó1€LÙØÐá™$¡7Øà—^‘^Ð$4°bÓ9€NØÐ   	Ð*€Gä0Ø˜Y¨T¸7ôð r   Úpathc           	      óœ   — d}| D ]D  }|dk\  r8|dk  r3|dt        t        |«      t        d«      z   t        d«      z
  «      z   z  }Œ@||z  }ŒF |S )aH  
    Return an case-encoded module path or version name.

    This is done by replacing every uppercase letter with an exclamation mark followed by the
    corresponding lower-case letter, in order to avoid ambiguity when serving from case-insensitive
    file systems.

    See https://golang.org/ref/mod#goproxy-protocol.
    r?   ÚAÚZú!Úa)ÚchrÚord)r´   Úescaped_pathÚcs      r   r|   r|   Á  sa   € ð €LØò ˆØ�Š8˜˜Sšà˜C¤#¤c¨!£f¬s°3«xÑ&7¼#¸c»(Ñ&BÓ"CÑCÑC‰Là˜AÑ‰Lðð Ðr   N)r   )2Ú
packageurlr   Úpackageurl.contrib.router   r   rb   r   r$   r)   r"   r&   r-   r4   Úpurl2urlÚget_urlÚrouter8   r<   rA   rC   rE   rI   rL   rO   rT   rV   rY   r\   r^   rd   rf   rh   rj   ro   rq   rs   rv   rx   r€   r‚   r„   r†   r™   rŸ   r“   r¤   r®   r²   ru   r|   © r   r   ú<module>rÄ      sO  ðõ6 "Ý 5Ý +àAÐ ð 7?ó*ñ$ ‹h€Ù“(€òò3ò
:òð& €Ø
€ð ×Ñ�>Ó"ñ2ó #ð2ð ×ÑÐ%Ó&ñ
;ó 'ð
;ð ×Ñ�?Ó#ñó $ðð. ×Ñ�?Ó#ñ
8ó $ð
8ð ×ÑÐ*Ó+ñ3ó ,ð3ð ×Ñ�=Ó!ñ	Mó "ð	Mð ×Ñ�<Ó ñó !ðð, ×Ñ�=Ó!ñ3ó "ð3ð ×ÑÐ$Ó%ñDó &ðDð  ×Ñ�>Ó"ñ8ó #ð8ð ×ÑÐ#Ó$ñ=ó %ð=ð ×Ñ�?Ó#ñ8ó $ð8ð  ×ÑÐ%Ó&ñ9ó 'ð9ð ×Ñ�>Ó"ñ:ó #ð:ð( ×Ñ�~Ó&ñ
Ló 'ð
Lð ×ÑÐ.Ó/ñ
Fó 0ð
Fð ×Ñ�|Ó$ñ;ó %ð;ð& ×Ñ�~Ó&ñdó 'ðdð* ×ÑÐ'Ó(ñ
_ó )ð
_ð ×Ñ�~Ó&ñ
Hó 'ð
Hð ×Ñ�Ð(:¸OÓLñ'ó Mð'ð ×Ñ�|Ó$ñ
Dó %ð
Dð ×Ñ�Ó'ñEó (ðEð6 ×Ñ�|Ó$ñ
Gó %ð
Gð ×Ñ�~Ó&ñ?ó 'ð?ð  ×ÑÐ(Ó)ñ=ó *ð=ð" ×Ñ�~Ó&ñ(ó 'ð(ðV ×Ñ�}Ó%ñó &ðð˜sð  só ð ×Ñ�|Ó$ð'/ Sð '/¨Sò '/ó %ð'/ðT ×Ñ�|Ó$ñó %ðò0ð<˜Sð  Sô r   