+
    üÐjµ  ã                   óÂ   € R t ^ RIHt  ! R R]4      t ! R R]4      t ! R R]4      t ! R R	]4      t ! R
 R4      t ! R R4      t	 ! R R]4      t
 ! R R]4      tR# )z
Parser for inetd.conf files
)ÚOptionalc                   ó   € ] tR t^tRtRtR# )ÚInvalidConfErrorz
Invalid configuration file
© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú:/usr/lib/python3/dist-packages/twisted/runner/inetdconf.pyr   r      ó   † õr   r   c                   ó   € ] tR t^tRtRtR# )ÚInvalidInetdConfErrorz
Invalid inetd.conf file
r   Nr   r   r   r   r   r      r   r   r   c                   ó   € ] tR t^tRtRtR# )ÚInvalidServicesConfErrorz
Invalid services file
r   Nr   r   r   r   r   r      r   r   r   c                   ó   € ] tR t^tRtRtR# )ÚUnknownServicez
Unknown service name
r   Nr   r   r   r   r   r      r   r   r   c                   óN   a € ] tR t^%t o RtRtRtR	R ltR tR t	V 3R lt
RtV tR# )
ÚSimpleConfFilez¾
Simple configuration file parser superclass.

Filters out comments and empty lines (which includes lines that only
contain comments).

To use this class, override parseLine or parseFields.
Ú#Nc                ó¨  € RpVf*   V P                   '       d   \        V P                   4      pRp VP                  4        FU  pVP                  V P                  4      pVR8w  d   VRV pVP                  4       pV'       g   KD  V P                  V4       KW  	  V'       d   VP                  4        R# R#   T'       d   TP                  4        i i ; i)zw
Parse a configuration file

If file is None and self.defaultFilename is set, it will open
defaultFilename and use it.
FNTéÿÿÿÿ)ÚdefaultFilenameÚopenÚ	readlinesÚfindÚcommentCharÚstripÚ	parseLineÚclose)ÚselfÚfiler"   ÚlineÚcomments   &&   r   Ú	parseFileÚSimpleConfFile.parseFile2   s°   € ð ˆØŠ<˜D×0×0Ð0Ü˜×,Ñ,Ó-ˆDØˆEð	ØŸ™Ö(�àŸ)™) D×$4Ñ$4Ó5�Ø˜b”=Ø  ˜>�Dð —z‘z“|�÷ Ùà—‘˜tÖ$ñ )÷ Ø—
‘
–ñ ø�uØ—
‘
•ð ús   ±AB6 ÂB6 Â6Cc                ó˜   €  V P                   ! VP                  4       !   R#   \         d    \        R\	        T4      ,           4      hi ; i)zu
Override this.

By default, this will split the line on whitespace and call
self.parseFields (catching any errors).
zInvalid line: N)ÚparseFieldsÚsplitÚ
ValueErrorr   Úrepr)r#   r%   s   &&r   r!   ÚSimpleConfFile.parseLineQ   sB   € ð	GØ×Ò˜dŸj™j›lÔ+øÜô 	GÜ'Ð(8¼4À»:Õ(EÓFÐFð	Gús	   ‚" ¢'A	c                ó   € R# )z
Override this.
Nr   )r#   Úfieldss   &*r   r*   ÚSimpleConfFile.parseFields]   s   ‚ r   c                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # )é   r   )r   Ústr)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚSimpleConfFile.__annotate__%   s   ø‡ ‚ ñ ™c•]Ñ)ò r   r   ©N)r   r   r	   r
   r   r   r   r'   r!   r*   Ú__annotate_func__r   Ú__classdictcell__©r6   s   @r   r   r   %   s.   ø‡ € ñð €KØ%)€Oôò>
Gò÷q ƒ r   r   c                   óN   a € ] tR t^ct o RtRtRtRtRtRt	Rt
RtRtRtR tRtV tR# )ÚInetdServicez+
A simple description of an inetd service.
Nc
                ór   € Wn         W n        W0n        W@n        WPn        W`n        Wpn        W€n        W�n        R # r9   )	ÚnameÚportÚ
socketTypeÚprotocolÚwaitÚuserÚgroupÚprogramÚprogramArgs)
r#   r@   rA   rB   rC   rD   rE   rF   rG   rH   s
   &&&&&&&&&&r   Ú__init__ÚInetdService.__init__r   s2   € ð Œ	ØŒ	Ø$ŒØ ŒØŒ	ØŒ	ØŒ
ØŒØ&Ör   )	rF   r@   rA   rG   rH   rC   rB   rE   rD   )r   r   r	   r
   r   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   r   r;   r<   s   @r   r>   r>   c   sC   ø‡ € ñð €DØ€DØ€JØ€HØ€DØ€DØ€EØ€GØ€K÷'ð 'r   r>   c                   ó8   a € ] tR t^€t o RtRtRR ltR tRtV t	R# )Ú	InetdConfz6
Configuration parser for a traditional UNIX inetd(8)
z/etc/inetd.confNc                ó\   € . V n         Vf   \        4       pVP                  4        Wn        R # r9   )ÚservicesÚServicesConfr'   ÚknownServices)r#   rP   s   &&r   rI   ÚInetdConf.__init__‡   s(   € ØˆŒàÒ Ü(›NˆMØ×#Ñ#Ô%Ø*Ör   c                óŒ  € VP                  R4      R.,           R,          w  rXV P                  P                  P                  W3R4      p	V	'       g&   VP	                  R4      '       g    \        V4      p	RpV P                  P                  \        VV	VVVVVVV4	      4       R#   \         d    \        RT RT R24      hi ; i)	z`
Parse an inetd.conf file.

Implemented from the description in the Debian inetd.conf man page.
Ú.N:Nr3   Nzrpc/ÚunknownzUnknown service: z (Ú))
r+   rP   rN   ÚgetÚ
startswithÚintÚBaseExceptionr   Úappendr>   )
r#   ÚserviceNamerB   rC   rD   rE   rG   rH   rF   rA   s
   &&&&&&&*  r   r*   ÚInetdConf.parseFields�   sÐ   € ð —z‘z #“¨$¨Õ/°Õ4‰ˆð ×!Ñ!×*Ñ*×.Ñ.°Ð/FÈÓMˆß˜H×/Ñ/°×7Ò7ðUÜ˜;Ó'�Ø'�ð 	�‰×ÑÜØØØØØØØØØó
ö	
øô !ô UÜ$Ð'8¸¸ÀRÈÀzÐQRÐ%SÓTÐTðUús   Á*B% Â%C)rP   rN   r9   ©
r   r   r	   r
   r   r   rI   r*   r   r;   r<   s   @r   rL   rL   €   s    ø‡ € ñð (€Oô+÷"
ð "
r   rL   c                   ó4   a € ] tR t^´t o RtRtR tR tRtV t	R# )rO   z^
/etc/services parser

@ivar services: dict mapping service names to (port, protocol) tuples.
z/etc/servicesc                ó   € / V n         R # r9   ©rN   )r#   s   &r   rI   ÚServicesConf.__init__½   s	   € ØˆŽr   c                óÞ   €  VP                  R 4      w  rE\        V4      pY@P
                  Y3&   T F  pY@P
                  Ye3&   K  	  R#   \         d    \        R\	        T4       24      hi ; i)Ú/zInvalid port/protocol: N)r+   rX   rY   r   r-   rN   )r#   r@   ÚportAndProtocolÚaliasesrA   rC   Úaliass   &&&*   r   r*   ÚServicesConf.parseFieldsÀ   sz   € ð	Ø,×2Ñ2°3Ó7‰NˆDÜ�t“9ˆDð +/�‰�tÐ&Ñ'ÛˆEØ/3�M‰M˜5Ð+Ó,ó øô ô 	Ü*Ø)¬$¨Ó*?Ð)@ÐAóð ð	ús   ‚A	 Á	#A,r`   Nr]   r<   s   @r   rO   rO   ´   s    ø‡ € ñð &€Oò÷4ð 4r   rO   N)r   Útypingr   Ú	Exceptionr   r   r   r   r   r>   rL   rO   r   r   r   Ú<module>rj      so   ðñ
õ ô�yô ôÐ,ô ôÐ/ô ô�Yô ÷;ñ ;÷|'ñ 'ô:1
�ô 1
ôh4�>ö 4r   