Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
§

iµµhIãó¦—dZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
mZmZm
Z
mZddlmZddlmZmZmZmZddlmZdd	lmZdd
lmZmZmZddlmZm Z m!Z!m"Z"m#Z#ej$e%¦«Z&dZ'd
Z(dZ)dZ*gd¢Z+d6d„Z,d6de
e-de.fd„Z/de.fd„Z0defd„Z1d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:Gd „d!¦«Z;Gd"„d#¦«Z<d$„Z=Gd%„d&¦«Z>Gd'„d(¦«Z?Gd)„d*¦«Z@Gd+„d,¦«ZAd-„ZBGd.„d/e¦«ZCGd0„d1e¦«ZDGd2„d3e¦«ZEejFfd4„ZGe%d5kreG¦«dSdS)7zDHTTP server for dulwich that implements the git smart HTTP protocol.éN)ÚBytesIO)ÚCallableÚClassVarÚDictÚIteratorÚListÚOptionalÚTuple)Úparse_qs)Ú
ServerHandlerÚWSGIRequestHandlerÚ
WSGIServerÚmake_server)Ú	log_utilsé)ÚReceivableProtocol)ÚBaseRepoÚNotGitRepositoryÚRepo)ÚDEFAULT_HANDLERSÚBackendÚDictBackendÚgenerate_info_refsÚgenerate_objects_info_packsz200 OKz
404 Not Foundz
403 Forbiddenz500 Internal Server Error))ÚExpireszFri, 01 Jan 1980 00:00:00 GMT)ÚPragmazno-cache)ú
Cache-Controlz$no-cache, max-age=0, must-revalidatecóx—|€tj¦«}dt|¦«fdt|dz¦«fdgS)NÚDateri€3á)rzpublic, max-age=31536000)ÚtimeÚdate_time_string)Únows ú6/usr/local/lib/python3.11/site-packages/dulwich/web.pyÚcache_forever_headersr$CsE€Ø
€{ÝŒi‰kŒkˆà	Õ! #Ñ&Ô&Ð'Ø	Õ$ S¨8¡^Ñ4Ô4Ð5Ø5ððóÚ	timestampÚreturncó´—gd¢}gd¢}|€tj¦«}tj|¦«dd…\}}}}}}}	d||	|||||||fzS)N)ÚMonÚTueÚWedÚThuÚFriÚSatÚSun)
NÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecéz#%s, %02d %3s %4d %02d:%02d:%02d GMD)r Úgmtime)
r&ÚweekdaysÚmonthsÚyearÚmonthÚdayÚhhÚmmÚssÚwds
          r#r!r!MsŠ€ðAÐ@Ð@€Hððð€FðÐÝ”I‘K”Kˆ	Ý'+¤{°9Ñ'=Ô'=¸b¸q¸bÔ'AÑ$€Dˆ%b˜"˜b "Ø0ؐŒØØˆuŒ
ØØ
Ø
Ø
ð4ñðr%cóp—d|jd| ¦«… d¦«zS)aExtract the URL prefix from a regex match.

    Args:
      mat: A regex match object.
    Returns: The URL prefix, defined as the text before the match in the
        original string. Normalized to start with one leading slash and end
        with zero.
    ú/N)ÚstringÚstartÚstrip)Úmats r#Ú
url_prefixrMrs0€ð”˜M˜cŸiši™kœk˜MÔ*×0Ò0°Ñ5Ô5Ñ5Ð5r%cóF—| t|¦«¦«S)z>Get a Repo instance for the given backend and URL regex match.)Úopen_repositoryrM)ÚbackendrLs  r#Úget_reporQ~s€à×"Ò"¥:¨c¡?¤?Ñ3Ô3Ð3r%c#ó^K—|€| d¦«V—dS	| t|¦«	| d¦«}|sn|V—Œn'#t$r| d¦«V—YnwxYw| ¦«dS#| ¦«wxYw)a!Send a file-like object to the request output.

    Args:
      req: The HTTPGitRequest object to send output to.
      f: An open file-like object to send; will be closed.
      content_type: The MIME type for the file.
    Returns: Iterator over the contents of the file, as chunks.
    NzFile not foundTi(zError reading file)Ú	not_foundÚrespondÚHTTP_OKÚreadÚOSErrorÚerrorÚclose)ÚreqÚfÚcontent_typeÚdatas    r#Ú	send_filer^ƒsÕèè€ð	€y؏mŠmÐ,Ñ-Ô-Ð-Ð-Ð-؈ð
ØŠ•G˜\Ñ*Ô*Ð*ð	Ø—6’6˜%‘=”=ˆDØð
ØØˆJˆJˆJð		ðøåð.ð.ð.؏iŠiÐ,Ñ-Ô-Ð-Ð-Ð-Ð-Ð-ð.øøøð	
Š‰	Œ	ˆ	ˆ	ˆ	øˆŠ‰	Œ	ˆ	ˆ	øøøs)Ÿ9AÁBÁ!A=Á:BÁ<A=Á=BÂB,cóL—| dtjj¦«S)NrH)ÚreplaceÚosÚpathÚsep)Úurls r#Ú_url_to_pathreœs€Ø;Š;sBœGœKÑ(Ô(Ð(r%có—| ¦«t| ¦«¦«}t d|¦«t|t
||¦« |¦«d¦«S)NzSending plain text file %sú
text/plain)ÚnocachereÚgroupÚloggerÚinfor^rQÚget_named_file©rZrPrLrbs    r#Ú
get_text_filern sc€Ø‡K‚KM„M€MݘŸ	š	™œÑ$Ô$€DÝ
‡K‚KÐ,¨dÑ3Ô3Ð3ݐS( 7¨CÑ0Ô0×?Ò?ÀÑEÔEÀ|ÑTÔTÐTr%c#ó0K—| d¦«| d¦«z d¦«}t d|¦«t	||¦«j}| |¦«s| d¦«V—dS	|| ¦«}n(#t$r| 
d¦«V—YdSwxYw| ¦«| td¦«|V—dS)NréÚasciizSending loose object %szObject not foundzError reading objectzapplication/x-git-loose-object)riÚencoderjrkrQÚobject_storeÚcontains_looserSÚas_legacy_objectrWrXÚ
cache_foreverrTrU)rZrPrLÚsharsr]s      r#Úget_loose_objectrx§sèè€Ø9Š9Q‰<Œ<˜#Ÿ)š) A™,œ,Ñ&×
.Ò
.¨wÑ
7Ô
7€CÝ
‡K‚KÐ)¨3Ñ/Ô/Ð/ݘG SÑ)Ô)Ô6€LØ×&Ò& sÑ+Ô+ð؏mŠmÐ.Ñ/Ô/Ð/Ð/Ð/؈ðؘCÔ ×1Ò1Ñ3Ô3ˆˆøÝððð؏iŠiÐ.Ñ/Ô/Ð/Ð/Ð/؈ˆðøøøð×ÒÑÔÐØ‡K‚K•Ð9Ñ:Ô:Ð:Ø
€J€J€J€J€Js B;Â;!C ÃC có—| ¦«t| ¦«¦«}t d|¦«t|t
||¦« |¦«d¦«S)NúSending pack file %sz application/x-git-packed-objects©rvrerirjrkr^rQrlrms    r#Ú
get_pack_filer|¸sq€Ø×ÒÑÔÐݘŸ	š	™œÑ$Ô$€DÝ
‡K‚KÐ&¨Ñ-Ô-Ð-ÝØÝ˜#ÑÔ×-Ò-¨dÑ3Ô3Ø*ñôðr%có—| ¦«t| ¦«¦«}t d|¦«t|t
||¦« |¦«d¦«S)Nrzz$application/x-git-packed-objects-tocr{rms    r#Úget_idx_filer~Ãsq€Ø×ÒÑÔÐݘŸ	š	™œÑ$Ô$€DÝ
‡K‚KÐ&¨Ñ-Ô-Ð-ÝØÝ˜#ÑÔ×-Ò-¨dÑ3Ô3Ø.ñôðr%c#ó K—t|jd¦«}| ddg¦«d}	t||¦«}n<#t$r/}| t
|¦«¦«V—Yd}~dSd}~wwxYw|r%|js|j | 	d¦«d¦«}|€| 
d¦«V—dS| ¦«| td|z¦«}tt¦«j|¦«}	||t#|¦«g|	dd¬¦«}
|
j d	| 	d¦«zd
z¦«|
j d¦«|
 ¦«dS| ¦«| td¦«t* d¦«t/|¦«Ed{V—†dS)
NÚQUERY_STRINGÚservicerrqúUnsupported servicezapplication/x-%s-advertisementT)Ú
stateless_rpcÚadvertise_refss
# service=ó
rgzEmulating dumb info/refs)rÚenvironÚgetrQrrSÚstrÚdumbÚhandlersrrÚ	forbiddenrhrTrUrrrVrMÚprotoÚwrite_pkt_lineÚhandlerjrkr)rZrPrLÚparamsrÚrepoÚeÚhandler_clsÚwriterŒÚhandlers           r#Ú
get_info_refsr•Îs
èè€Ý
c”k .Ô1Ñ
2Ô
2€F؏jŠj˜ T FÑ+Ô+¨AÔ.€Gðݘ Ñ%Ô%ˆˆøÝððð؏mŠmC ™FœFÑ#Ô#Ð#Ð#Ð#؈ˆˆˆˆøøøøðøøøðñ,s”xñ,Ø”l×&Ò& w§~¢~°gÑ'>Ô'>ÀÑEÔEˆØÐØ—-’-Ð 5Ñ6Ô6Ð6Ð6Ð6ØˆFØŠ‰
Œ
ˆ
Ø—’GÐ%EÈÑ%OÑPÔPˆÝ"¥7¡9¤9¤>°5Ñ9Ô9ˆØ+ØÝ
˜‰_Œ_ÐØØØð
ñ
ô
ˆð	Œ
×$Ò$ ]°W·^²^ÀGÑ5LÔ5LÑ%LÈuÑ%TÑUÔUÐUØŒ
×$Ò$ TÑ*Ô*Ð*؏ŠÑÔÐÐÐð	Š‰
Œ
ˆ
ØŠ•G˜\Ñ*Ô*Ð*ݏŠÐ.Ñ/Ô/Ð/Ý% dÑ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+s»AÁ
BÁ$BÂBcóΗ| ¦«| td¦«t d¦«tt
||¦«¦«S)NrgzEmulating dumb info/packs)rhrTrUrjrkrrQ)rZrPrLs   r#Úget_info_packsr—ñsN€Ø‡K‚KM„M€M؇K‚K•˜Ñ&Ô&Ð&Ý
‡K‚KÐ+Ñ,Ô,Ð,Ý&¥x°¸Ñ'=Ô'=Ñ>Ô>Ð>r%c#óÎK—	| ¦«}t| ¦«d¦«}| |dz¦«}|dkrdS|dd…V—Œc)NTérpréþÿÿÿ)ÚreadlineÚintÚrstriprV)r[ÚlineÚlengthÚchunks    r#Ú_chunk_iterr¡øskèè€ð؏zŠz‰|Œ|ˆÝT—[’[‘]”] BÑ'Ô'ˆØ—’v ‘zÑ"Ô"ˆØQŠ;ˆ;ØˆEؐCRCŒjÐÐÐð
r%có—eZdZdd„Zd„ZdS)ÚChunkReaderr'Ncó<—t|¦«|_g|_dS©N)r¡Ú_iterÚ_buffer)Úselfr[s  r#Ú__init__zChunkReader.__init__s€Ý  ‘^”^ˆŒ
Ø$&ˆŒˆˆr%có–—ttt|j¦«¦«|kri	|j t|j¦«¦«n#t$rYn/wxYwttt|j¦«¦«|k°id |j¦«}|d|…}||d…g|_|S)Nr%)	ÚsumÚmapÚlenr§ÚappendÚnextr¦Ú
StopIterationÚjoin)r¨Únr[Úrets    r#rVzChunkReader.reads€Ý•#•c˜4œ<Ñ(Ô(Ñ)Ô)¨AÒ-Ð-ð
Ø”×#Ò#¥D¨¬Ñ$4Ô$4Ñ5Ô5Ð5Ð5øÝ ð
ð
ð
ؐð
øøøõ•#•c˜4œ<Ñ(Ô(Ñ)Ô)¨AÒ-Ð-ð

HŠHT”\Ñ"Ô"ˆØŒeˆØ˜!˜"˜"œwˆŒ؈
s­,AÁ
A'Á&A'©r'N)Ú__name__Ú
__module__Ú__qualname__r©rV©r%r#r£r£s7€€€€€ð'ð'ð'ð'ð	ð	ð	ð	ð	r%r£có"—eZdZdZdd„Zdd„ZdS)	Ú_LengthLimitedFileaWrapper class to limit the length of reads from a file-like object.

    This is used to ensure EOF is read from the wsgi.input object once
    Content-Length bytes are read. This behavior is required by the WSGI spec
    but not implemented in wsgiref as of 2.5.
    r'Ncó"—||_||_dSr¥)Ú_inputÚ_bytes_avail)r¨ÚinputÚ	max_bytess   r#r©z_LengthLimitedFile.__init__s€ØˆŒØ%ˆÔÐÐr%éÿÿÿÿcó —|jdkrdS|dks||jkr|j}|xj|zc_|j |¦«S)Nrr%rÀ)r½r¼rV)r¨Úsizes  r#rVz_LengthLimitedFile.reads]€ØÔ Ò!Ð!ؐ3ؐ2Š:ˆ:˜ Ô 1Ò1Ð1ØÔ$ˆDØÐÔ˜TÑ!ÐÔØŒ{×Ò Ñ%Ô%Ð%r%r´)rÀ)rµr¶r·Ú__doc__r©rVr¸r%r#rºrºsF€€€€€ððð&ð&ð&ð&ð&ð&ð&ð&ð&ð&r%rºc#óBK—| ¦« d¦«}t d|¦«|j | d¦«d¦«}|€| d¦«V—dS	t||¦«n<#t$r/}| 
t|¦«¦«V—Yd}~dSd}~wwxYw| ¦«| 
td|z¦«}|j d¦«dkr t!|jd¦«j}n|jdj}t%||¦«}||t'|¦«g|d	¬
¦«}	|	 ¦«dS)NrHzHandling service request for %srqr‚zapplication/x-%s-resultÚHTTP_TRANSFER_ENCODINGÚchunkedú
wsgi.inputT)rƒ)riÚlstriprjrkrŠr‡rrr‹rQrrSrˆrhrTrUr†r£rVrrMrŽ)
rZrPrLrr’r‘r“rVrŒr”s
          r#Úhandle_service_requestrÉ*s‘èè€ØiŠi‰kŒk× Ò  Ñ%Ô%€GÝ
‡K‚KÐ1°7Ñ;Ô;Ð;Ø”,×"Ò" 7§>¢>°'Ñ#:Ô#:¸DÑAÔA€KØÐ؏mŠmÐ1Ñ2Ô2Ð2Ð2Ð2؈ðݐ˜#ÑÔÐÐøÝððð؏mŠmC ™FœFÑ#Ô#Ð#Ð#Ð#؈ˆˆˆˆøøøøðøøøð‡K‚KM„M€MØKŠKÐ!:¸WÑ!DÑEÔE€EØ
„{‡‚Ð/Ñ0Ô0°IÒ=Ð=ݘ3œ; |Ô4Ñ5Ô5Ô:ˆˆàŒ{˜<Ô(Ô-ˆÝ˜t UÑ+Ô+€Eðˆk˜'¥J¨s¡O¤OÐ#4°eÈ4ÐPÑPÔP€G؇N‚NÑÔÐÐÐsÂB  
CÂ*$CÃCcó¼—eZdZdZ	ddeddfd„Zd„Zeddfded	e	ed
e	e
eeeffd„Zdede
fd
„Zdede
fd„Zdede
fd„Zdd„Zdd„ZdS)ÚHTTPGitRequestz†Class encapsulating the state of a single git HTTP request.

    Attributes:
      environ: the WSGI environment for the request.
    FNr‰r'cóZ—||_||_||_||_g|_g|_dSr¥)r†r‰rŠÚ_start_responseÚ_cache_headersÚ_headers)r¨r†Ústart_responser‰rŠs     r#r©zHTTPGitRequest.__init__Js4€ðˆŒ؈Œ	Ø ˆŒ
Ø-ˆÔØ57ˆÔØ/1ˆŒ
ˆ
ˆ
r%có>—|j ||f¦«dS)zAdd a header to the response.N)rÏr®)r¨ÚnameÚvalues   r#Ú
add_headerzHTTPGitRequest.add_headerTs"€àŒ
×Ò˜d E˜]Ñ+Ô+Ð+Ð+Ð+r%Ústatusr\Úheaderscóê—|r|j |¦«|r|j d|f¦«|j |j¦«| ||j¦«S)z9Begin a response with the given status and other headers.zContent-Type)rÏÚextendr®rÎrÍ)r¨rÕr\rÖs    r#rTzHTTPGitRequest.respondXsw€ðð	*ØŒM× Ò  Ñ)Ô)Ð)Øð	AØŒM× Ò  .°,Ð!?Ñ@Ô@Ð@ØŒ
×Ò˜TÔ0Ñ1Ô1Ð1à×#Ò# F¨D¬MÑ:Ô:Ð:r%Úmessagecó¦—g|_t d|¦«| td¦«| d¦«S)z;Begin a HTTP 404 response and return the text of a message.z
Not found: %srgrq)rÎrjrkrTÚHTTP_NOT_FOUNDrr©r¨rÙs  r#rSzHTTPGitRequest.not_foundgóD€à ˆÔÝŠO WÑ-Ô-Ð-ØŠ•^ \Ñ2Ô2Ð2؏~Š~˜gÑ&Ô&Ð&r%có¦—g|_t d|¦«| td¦«| d¦«S)z;Begin a HTTP 403 response and return the text of a message.z
Forbidden: %srgrq)rÎrjrkrTÚHTTP_FORBIDDENrrrÜs  r#r‹zHTTPGitRequest.forbiddennrÝr%có¦—g|_t d|¦«| td¦«| d¦«S)z;Begin a HTTP 500 response and return the text of a message.z	Error: %srgrq)rÎrjrXrTÚ
HTTP_ERRORrrrÜs  r#rXzHTTPGitRequest.errorusD€à ˆÔݏŠ[ 'Ñ*Ô*Ð*ØŠ•Z Ñ.Ô.Ð.؏~Š~˜gÑ&Ô&Ð&r%có—t|_dS)z2Set the response to never be cached by the client.N)ÚNO_CACHE_HEADERSrΩr¨s r#rhzHTTPGitRequest.nocache|s€å.ˆÔÐÐr%có,—t¦«|_dS)z4Set the response to be cached forever by the client.N)r$rÎräs r#rvzHTTPGitRequest.cache_forever€s€å3Ñ5Ô5ˆÔÐÐr%)FNr´)rµr¶r·rÃÚboolr©rÔrUrˆr	rr
rTÚbytesrSr‹rXrhrvr¸r%r#rËrËCsA€€€€€ðððEIð2ð2Ø-1ð2à	
ð2ð2ð2ð2ð,ð,ð,ðØ&*Ø37ð	
;ð
;àð
;ð˜s”mð
;ð˜$˜u S¨# XœÔ/Ô0ð	
;ð
;ð
;ð
;ð' ð'¨ð'ð'ð'ð'ð' ð'¨ð'ð'ð'ð'ð'˜Sð' Uð'ð'ð'ð'ð/ð/ð/ð/ð6ð6ð6ð6ð6ð6r%rËcó—eZdZUdZdejd¦«fedejd¦«fedejd¦«fedejd¦«fedejd¦«fedejd¦«fe	dejd	¦«fe
dejd
¦«fedejd¦«fedejd
¦«fei
Z
eeeeejfeeeejgeeffed<	ddeddfd„Zd„ZdS)ÚHTTPGitApplicationz‰Class encapsulating the state of a git WSGI application.

    Attributes:
      backend: the Backend object backing this application
    ÚGETz/HEAD$z/info/refs$z/objects/info/alternates$z/objects/info/http-alternates$z/objects/info/packs$z&/objects/([0-9a-f]{2})/([0-9a-f]{38})$z(/objects/pack/pack-([0-9a-f]{40})\.pack$z'/objects/pack/pack-([0-9a-f]{40})\.idx$ÚPOSTz/git-upload-pack$z/git-receive-pack$ÚservicesFNr‰r'cóž—||_||_tt¦«|_||_||j |¦«dSdSr¥)rPr‰ÚdictrrŠÚfallback_appÚupdate)r¨rPr‰rŠrïs     r#r©zHTTPGitApplication.__init__§sT€ðˆŒ؈Œ	ÝÕ-Ñ.Ô.ˆŒ
Ø(ˆÔØÐØŒM× Ò  Ñ*Ô*Ð*Ð*Ð*ð Ðr%cóŠ—|d}|d}t|||j|j¬¦«}d}|j ¦«D]4\}}||krŒ| |¦«}	|	r|j||f}nŒ5|€3|j| ||¦«S| d¦«gS|||j|	¦«S)NÚ	PATH_INFOÚREQUEST_METHOD)r‰rŠz#Sorry, that method is not supported)	rËr‰rŠrìÚkeysÚsearchrïrSrP)
r¨r†rÐrbÚmethodrZr”ÚsmethodÚspathrLs
          r#Ú__call__zHTTPGitApplication.__call__±s󀨐{Ô#ˆØÐ)Ô*ˆÝØ^¨$¬)¸d¼mð
ñ
ô
ˆðˆØ"œm×0Ò0Ñ2Ô2ð	ð	‰NˆGUؘ&Ò Ð ØØ—,’,˜tÑ$Ô$ˆCØð
Øœ-¨°¨Ô7Øð
ðˆ?ØÔ Ð,Ø×(Ò(¨°.ÑAÔAÐAàŸ
š
Ð&KÑLÔLÐMÐMàˆws˜DœL¨#Ñ.Ô.Ð.r%)FNN)rµr¶r·rÃÚreÚcompilernr•r—rxr|r~rÉrìrrr
rˆÚPatternrrËrÚMatchrrçÚ__annotations__rær©rùr¸r%r#réré…s¯€€€€€€ððð

”
˜8Ñ$Ô$Ð% }Ø	
”
˜=Ñ)Ô)Ð*¨MØ	
”
Ð6Ñ7Ô7Ð8¸-Ø	
”
Ð;Ñ<Ô<Ð=¸}Ø	
”
Ð1Ñ2Ô2Ð3°^àØˆBŒJÐ?Ñ@Ô@ð	
ðàØˆBŒJÐBÑCÔCð	
ðàØˆBŒJÐAÑBÔBð	
ðØ	”Ð/Ñ0Ô0Ð1Ð3IØ	”Ð0Ñ1Ô1Ð2Ð4Jð'	ð
ˆhØØ#r”z/Ô"Øn g¨r¬xÐ8¸(À5¼/ÐIÔJð
Lô	
ôððñð8HLð+ð+Ø!ð+à	
ð+ð+ð+ð+ð/ð/ð/ð/ð/r%récó —eZdZdZdd„Zd„ZdS)ÚGunzipFilterzkWSGI middleware that unzips gzip-encoded requests before
    passing on to the underlying application.
    r'Ncó—||_dSr¥©Úapp©r¨Úapplications  r#r©zGunzipFilter.__init__Ïó
€ØˆŒˆˆr%cóÀ—ddl}| dd¦«dkr+| d|dd¬¦«|d<|d=d|vr|d=| ||¦«S)	NrÚHTTP_CONTENT_ENCODINGÚÚgziprÇÚrb)ÚfilenameÚfileobjÚmodeÚCONTENT_LENGTH)r
r‡ÚGzipFiler)r¨r†rÐr
s    r#rùzGunzipFilter.__call__Òs€Øˆˆˆà;Š;Ð.°Ñ3Ô3°vÒ=Ð=Ø$(§M¢MØ w¨|Ô'<À4ð%2ñ%ô%ˆGLÑ!ðÐ/Ð0Ø 7Ð*Ð*ØÐ,Ð-àxŠx˜ Ñ0Ô0Ð0r%r´©rµr¶r·rÃr©rùr¸r%r#rrÊsA€€€€€ððððððð1ð1ð1ð1ð1r%rcó —eZdZdZdd„Zd„ZdS)ÚLimitedInputFilterzgWSGI middleware that limits the input length of a request to that
    specified in Content-Length.
    r'Ncó—||_dSr¥rrs  r#r©zLimitedInputFilter.__init__årr%cóª—| dd¦«}|r&t|dt|¦«¦«|d<| ||¦«S)Nrr	rÇ)r‡rºrœr)r¨r†rÐÚcontent_lengths    r#rùzLimitedInputFilter.__call__ès\€ð
!ŸšÐ%5°rÑ:Ô:ˆØð	Ý$6ؘÔ%¥s¨>Ñ':Ô':ñ%ô%ˆGLÑ!ðxŠx˜ Ñ0Ô0Ð0r%r´rr¸r%r#rràsA€€€€€ððððððð
1ð
1ð
1ð
1ð
1r%rcóV—t|i|¤Ž}tt|¦«¦«}|S)zpFactory function to create an instance of HTTPGitApplication,
    correctly wrapped with needed middleware.
    )rérr)ÚargsÚkwargsrÚwrapped_apps    r#Úmake_wsgi_chainrõs1€õ˜dÐ
- fÐ
-Ð
-€CÝ$¥\°#Ñ%6Ô%6Ñ7Ô7€KØÐr%có$—eZdZdZd„Zd„Zd„ZdS)ÚServerHandlerLoggerz@ServerHandler that uses dulwich's logger for logging exceptions.có>—t d|¬¦«dS©Nz/Exception happened during processing of request)Úexc_info©rjÚ	exception©r¨r s  r#Ú
log_exceptionz!ServerHandlerLogger.log_exceptionó/€Ý×ÒØ=Øð	ñ	
ô	
ð	
ð	
ð	
r%có*—tj|g|¢RŽdSr¥©rjrk©r¨Úformatrs   r#Úlog_messagezServerHandlerLogger.log_messageó €ÝŒFÐ"˜TÐ"Ð"Ð"Ð"Ð"Ð"r%có"—tj|ŽdSr¥©rjrX©r¨rs  r#Ú	log_errorzServerHandlerLogger.log_error
ó€ÝŒdÐÐÐÐr%N)rµr¶r·rÃr$r*r/r¸r%r#rrþsG€€€€€ØJÐJð
ð
ð
ð#ð#ð#ðððððr%rcó*—eZdZdZd„Zd„Zd„Zd„ZdS)ÚWSGIRequestHandlerLoggerzEWSGIRequestHandler that uses dulwich's logger for logging exceptions.có>—t d|¬¦«dSrr!r#s  r#r$z&WSGIRequestHandlerLogger.log_exceptionr%r%có*—tj|g|¢RŽdSr¥r'r(s   r#r*z$WSGIRequestHandlerLogger.log_messager+r%có"—tj|ŽdSr¥r-r.s  r#r/z"WSGIRequestHandlerLogger.log_errorr0r%cóT—|j ¦«|_| ¦«sdSt	|j|j| ¦«| ¦«¦«}||_| 	|j
 ¦«¦«dS)zHandle a single HTTP request.N)Úrfiler›Úraw_requestlineÚ
parse_requestrÚwfileÚ
get_stderrÚget_environÚrequest_handlerÚrunÚserverÚget_app)r¨r”s  r#rŽzWSGIRequestHandlerLogger.handles“€à#œz×2Ò2Ñ4Ô4ˆÔØ×!Ò!Ñ#Ô#ð	ØˆFå%ØŒJ˜œ
 D§O¢OÑ$5Ô$5°t×7GÒ7GÑ7IÔ7Iñ
ô
ˆð#'ˆÔØŠD”K×'Ò'Ñ)Ô)Ñ*Ô*Ð*Ð*Ð*r%N)rµr¶r·rÃr$r*r/rŽr¸r%r#r2r2sV€€€€€ØOÐOð
ð
ð
ð#ð#ð#ðððð
+ð
+ð
+ð
+ð
+r%r2có—eZdZd„ZdS)ÚWSGIServerLoggercóZ—t dt|¦«z¦«dS)zHandle an error.z7Exception happened during processing of request from %sN)rjr"rˆ)r¨ÚrequestÚclient_addresss   r#Úhandle_errorzWSGIServerLogger.handle_error+s7€å×ÒØEݐ.Ñ!Ô!ñ
"ñ	
ô	
ð	
ð	
ð	
r%N)rµr¶r·rFr¸r%r#rBrB*s#€€€€€ð
ð
ð
ð
ð
r%rBcó|—ddl}| ¦«}| ddddd¬¦«| d	d
dtdd
¬¦«| |¦«\}}t|¦«dkr	|d}nt
j¦«}tj	¦«tdt|¦«i¦«}t|¦«}t|j|j|t t"¬¦«}t$ d|j|j¦«| ¦«dS)z,Entry point for starting an HTTP git server.rNz-lz--listen_addressÚlisten_addressÚ	localhostzBinding IP address.)ÚdestÚdefaultÚhelpz-pz--portÚporti@zPort to listen on.)rJÚtyperKrLrrH)Ú
handler_classÚserver_classz'Listening for HTTP connections on %s:%d)ÚoptparseÚOptionParserÚ
add_optionrœÚ
parse_argsr­raÚgetcwdrÚdefault_logging_configrrrrrHrMr2rBrjrkÚ
serve_forever)	ÚargvrQÚparserÚoptionsrÚgitdirrPrr?s	         r#Úmainr\3sS€à€O€O€Oà
×
"Ò
"Ñ
$Ô
$€FØ
×ÒØØØ
ØØ
"ðñôðð×ÒØØØ
Ý
ØØ
!ð
ñôðð×%Ò% dÑ+Ô+M€GˆTå
ˆ4y„y1‚}€}ؐa”ˆˆå”‘”ˆå
Ô$Ñ&Ô&Ð&ݘ3¥ V¡¤Ð-Ñ.Ô.€GÝ
˜'Ñ
"Ô
"€CÝ
ØÔØŒØÝ.Ý%ðñô€Fõ‡K‚KØ1ØÔØŒñôðð
×ÒÑÔÐÐÐr%Ú__main__r¥)HrÃrarúÚsysr ÚiorÚtypingrrrrrr	r
Úurllib.parserÚwsgiref.simple_serverrr
rrÚdulwichrÚprotocolrrrrrr?rrrrrÚ	getLoggerrµrjrUrÛrßrárãr$Úfloatrˆr!rMrQr^rernrxr|r~r•r—r¡r£rºrÉrËrérrrrr2rBrXr\r¸r%r#ú<module>rgsfðð,KÐJà	€	€	€	Ø	€	€	€	Ø
€
€
€
Ø€€€ØÐÐÐÐÐØLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLØ!Ð!Ð!Ð!Ð!Ð!ðððððððððððððÐÐÐÐÐà(Ð(Ð(Ð(Ð(Ð(Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ððððððððððððððð
ˆÔ	˜XÑ	&Ô	&€ð€Ø €Ø €Ø
(€
ðððÐððððð"ð" ¨¤ð"¸3ð"ð"ð"ð"ðJ	6sð	6ð	6ð	6ð	6ð4˜hð4ð4ð4ð4ð
ððð2)ð)ð)ðUðUðUðððð"ðððððð ,ð ,ð ,ðF?ð?ð?ððððððððñôðð"&ð&ð&ð&ð&ñ&ô&ð&ð.ððð2?6ð?6ð?6ð?6ð?6ñ?6ô?6ð?6ðDB/ðB/ðB/ðB/ðB/ñB/ôB/ðB/ðJ1ð1ð1ð1ð1ñ1ô1ð1ð,1ð1ð1ð1ð1ñ1ô1ð1ð*ððð
ð
ð
ð
ð
˜-ñ
ô
ð
ð +ð+ð+ð+ð+Ð1ñ+ô+ð+ð8
ð
ð
ð
ð
zñ
ô
ð
ðŒhð*ð*ð*ð*ðZˆzÒÐØ€DF„F€F€F€FðÐr%