+
    ¾¾jã,  ã                   ó@  € R t ^ RIt^ RIHt ^ RIHtHt ^ RIHtH	t	H
t
Ht ^ RIHtHtHt ]P                   ! R4      t]P                   ! R4      tRt]P                   ! R	4      t]P                   ! R
4      tRR R llt ! R R]4      t ! R R]],          4      tRR.tR# )z'parsing and generation of content linesN)Ú
Parameters)Úunescape_backslashÚunescape_list_or_string)Ú_escape_stringÚ	_foldlineÚ_unescape_stringÚvalidate_token)ÚDEFAULT_ENCODINGÚ	ICAL_TYPEÚ
to_unicodez,(?:(?<!\n)\r\n|(?<![\r\n])\n)(?:\r?\n)*[ \t]z\r?\nz 	z(?<![ \t])[ \t]+([;=])z([;=])[ \t]+c                ó<   € V ^8„  d   QhR\         R\         R\         /# )é   ÚstÚ
delimitersÚreturn)Ústr)Úformats   "Ú\/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/parser/content_line.pyÚ__annotate__r      s&   € ÷ S ñ S ¤Sð S ´cð S ÄSñ S ó    c                ó  aaa€ V '       g   V # RV 9  d
   RV 9  d   V # VR8X  dI   RV 9  dB   RV 9  d;   \         P                  RV 4      p \        P                  RV 4      P                  4       # . o. oRpRpRoR VVV3R	 llpV  EF9  pV'       d   V! 4        SP	                  V4       RpRoK*  VR8X  d'   V'       g   V! 4        SP	                  V4       R
pRoKW  VR8X  d,   V'       g$   V'       * pV! 4        SP	                  V4       RoK‰  V'       g'   V'       g   V\
        9   d   SP	                  V4       K·  V'       ga   V'       gY   WQ9   dS   SP                  4        S'       d%   SR,          \
        9   d   SP                  4        K,  SP	                  V4       R
oEK  V! 4        SP	                  V4       RoEK<  	  S'       d   S'       g   SP                  S4       RP                  S4      P                  4       # )a*  Strip optional whitespace around delimiters outside of quoted sections,
respecting backslash escapes so that escaped delimiters are not treated as
separators.

This is a lenient parsing helper (used when strict=False) to support
iCalendar content lines that contain extra whitespace around tokens.
Ú Ú	ú;=Ú"Ú\z\1Fc                ó   € V ^8„  d   QhRR/# )r   r   N© )r   s   "r   r   Ú2_strip_ows_around_delimiters.<locals>.__annotate__;   s   € ÷ ñ ˜4ñ r   c                  ón   <€ S'       g   R # S '       g   SP                  S4       SP                  4        R # ©N)ÚextendÚclear)Úlast_was_delimiterÚoutÚ
pending_wss   €€€r   Úflush_pendingÚ3_strip_ows_around_delimiters.<locals>.flush_pending;   s$   ø€ çÙß!Ø�J‰J�zÔ"Ø×ÑÖr   TÚ éÿÿÿÿ)
ÚOWS_BEFORE_DELIMITER_REÚsubÚOWS_AFTER_DELIMITER_REÚstripÚappendÚOWSr"   Úpopr!   Újoin)	r   r   Ú	in_quotesÚescapedr&   Úchr#   r$   r%   s	   &&    @@@r   Ú_strip_ows_around_delimitersr5      s¯  ú€ ÷ Øˆ	ð �"„}˜ RœØˆ	ð �TÔ˜c¨œm°¸B´Ü$×(Ñ(¨°Ó3ˆÜ%×)Ñ)¨%°Ó4×:Ñ:Ó<Ð<à€CØ€JØ€IØ€GàÐ÷ò ô ˆçÙŒOØ�J‰J�rŒNØˆGØ!&ÐÙð �Œ:ŸiÙŒOØ�J‰J�rŒNØˆGØ!&ÐÙð �Œ9ŸWØ%œˆIÙŒOØ�J‰J�rŒNØ!&ÐÙ÷ §¨R´3¬YØ×Ñ˜bÔ!Ù÷ §¨RÔ-=Ø×ÑÔß˜#˜b�'¤Sœ.Ø—‘–	Ø�J‰J�rŒNØ!%ÐÚñ 	ŒØ�
‰
�2ŒØ"ÓñU ÷X ×,Ø�
‰
�:Ôà�7‰7�3‹<×ÑÓÐr   c                   ó²   a a€ ] tR t^ut oRtRtR]3V 3R llt]RV3R lR ll4       t	V3R lR lt
V3R lR	 ltV3R
 lR lt]RR l4       tR tRtVtV ;t# )ÚContentlinezOA content line is basically a string that can be folded and parsed into
parts.
Fc                óf   <€ \        WR 7      pRV9  g   Q R4       h\        SV `	  W4      pW$n        V# ))ÚencodingÚ
z;Content line can not contain unescaped new line characters.)r   ÚsuperÚ__new__Ústrict)ÚclsÚvaluer=   r9   ÚselfÚ	__class__s   &&&& €r   r<   ÚContentline.__new__|   s?   ø€ Ü˜5Ô4ˆØ˜5Ô ð 	
ØIó	
Ð ô ‰w‰˜sÓ*ˆØŒØˆr   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   ÚnameÚparamsÚsorted)r
   r   Úbool)r   Ú__classdict__s   "€r   r   ÚContentline.__annotate__†   s)   ø€ ÷ 'ñ 'áð'ñ ð'ñ
 ñ'r   c                ól  € \        V\        4      '       g   Q h\        VR4      '       d   VP                  4       pM^ RIHp V! V4      P                  4       p\        V4      p\        V4      pV'       d4   \        VP                  VR7      4      pV'       d   V ! V RV RV 24      # V ! V RV 24      # )z!Turn a parts into a content line.Úto_ical)ÚvText)rF   Ú;Ú:)Ú
isinstancer   ÚhasattrrK   Úicalendar.proprL   r   )r>   rD   rE   ÚvaluesrF   rL   s   &&&&& r   Ú
from_partsÚContentline.from_parts…   s¨   € ô ˜&¤*×-Ò-Ð-Ð-Ü�6˜9×%Ò%Ø—^‘^Ó%‰Få,á˜6“]×*Ñ*Ó,ˆFô ˜$ÓˆÜ˜FÓ#ˆßÜ §¡°f Ó =Ó>ˆFßá˜d˜V 1 V H¨A¨f¨XÐ6Ó7Ð7Ù�d�V˜1˜V˜HÐ%Ó&Ð&r   c                ó:   <€ V ^8„  d   QhRS[ S[S[S[3,          /# ©r   r   ©Útupler   r   )r   rH   s   "€r   r   rI   £   s    ø€ ÷ ?&ñ ?&™5¡¡j±#Ð!5Õ6ñ ?&r   c                óV  €  RpRpRpRp\        V 4       F[  w  rVVR8X  d   V'       g	   V'       * pM=VR8X  d   V'       g   RpK/  V'       g#   V'       g   VR9   d   Vf   TpVR8X  d   Vf   TpRpK]  	  V'       g   \        V 4      pV'       d   V RV MT pV P                  '       g'   \        P                  ! RR	VP                  4       4      p\        V4       V'       d   V^,           V8X  d   \        R
4      hW^,           V pV P                  '       g   \        V4      p\        V4      p	\        P                  ! W�P                  R7      p
\        R \        V
P                  4       4       4       4      p
W^,           R pYzT3#   \         d   p\        RT  RT 24      ThRp?ii ; i)uˆ  Split the line into ``name``, ``parameters``, and raw ``values`` parts.

This is :meth:`parts` without the unescaping: the values are returned
verbatim, preserving both backslash sequences and URL encoding. It is
used for :rfc:`7265` ``UNKNOWN`` values, whose real value typeâ€”and
therefore whose escaping rulesâ€”are not known.

See :meth:`parts` for the parts themselves and for examples.
NFr   r   Tz:;rN   z[ \t]+r(   zInvalid content line©r=   c              3   óR   "  € T F  w  r\        V4      \        V4      3x € K  	  R # 5ir    )r   r   )Ú.0Úkeyr?   s   &  r   Ú	<genexpr>Ú(Contentline.raw_parts.<locals>.<genexpr>Ù   s)   é € ð  á"6‘J�Cô " #Ó&Ô(?ÀÓ(FÕGÛ"6ùs   ‚%'z.Content line could not be parsed into parts: 'z': )Ú	enumerateÚlenr=   Úrer+   r-   r   Ú
ValueErrorr5   r   r   Ú	from_icalÚiterÚitems)r@   Ú
name_splitÚvalue_splitr2   r3   Úir4   rD   Úraw_param_strÚ	param_strrE   rR   Úexcs   &            r   Ú	raw_partsÚContentline.raw_parts£   sŽ  € ð4	Ø%)ˆJØ&*ˆKØ#ˆIØ!ˆGä" 4ž‘�Ø˜”9§WØ$-¤‘IØ˜4”Z¯	Ø"�GÙß"¯7à˜T”z jÒ&8Ø%&˜
à˜S”y [Ò%8Ø&'˜à’ñ )÷" ä! $›i�÷ )3�4˜˜Ñ$¸ˆDØ—;—;�;Ü—v’v˜i¨¨T¯Z©Z«\Ó:�Ü˜4Ô ç ¨a¥°;Ô!>ä Ð!7Ó8Ð8ð !¨a¥°+Ð>ˆMØ—;—;�;Ü <¸]Ó K�Ü& }Ó5ˆIÜ×)Ò)¨)¿K¹KÔHˆFÜñ  ä"& v§|¡|£~Ô"6ó ó ˆFð ¨�/Ð+Ð,ˆFð
 ˜fÐ%Ð%øô	 ô 	ÜØ@ÀÀÀcÈ#ÈÐOóàðûð	úsA   ‚&F ©F Á F ÁF Á'F Á<F ÂF Â(CF ÆF(ÆF#Æ#F(c                ó:   <€ V ^8„  d   QhRS[ S[S[S[3,          /# rV   rW   )r   rH   s   "€r   r   rI   ä   s    ø€ ÷ :ñ :‘u™S¡*©cÐ1Õ2ñ :r   c                óB   € V P                  4       w  rpW\        V4      3# )ab  Split the line into ``name``, ``parameters``, and unescaped ``values`` parts.

Properly handles escaping with backslashes and double-quote sections
to avoid corrupting URL-encoded characters in values.

The backslash sequences in the values are unescaped, as for the values
of ``TEXT`` properties, while URL encoding is preserved. Use
:meth:`raw_parts` to get the values verbatim instead.

Examples:

    With parameter:

    ..  code-block:: ics

        DESCRIPTION;ALTREP="cid:part1.0001@example.org":The Fall'98 Wild

    Without parameters:

    ..  code-block:: ics

        DESCRIPTION:The Fall'98 Wild
)rm   r   )r@   rD   rE   rR   s   &   r   ÚpartsÚContentline.partsä   s&   € ð0  $Ÿ~™~Ó/Ñˆ�fØÔ0°Ó8Ð9Ð9r   c                ó    <€ V ^8„  d   QhRS[ /# rV   )Úint)r   rH   s   "€r   r   rI   ÿ   s   ø€ ÷ ñ ¡sñ r   c                ó|   € Rp\        V 4       F*  w  r#VR8X  d
   V'       * pK  VR8X  g   K  V'       d   K(  Vu # 	  R# )a-  Return the index of the colon that separates the value.

This is the first colon that is not inside a quoted parameter section.
A colon inside a quoted parameter value (for example
``ALTREP="http://x"``) is skipped, and a colon that belongs to the
value (``TEXT`` does not escape ``:``) is not mistaken for the
separator. Backslash has no special meaning in the parameter grammar
(:rfc:`5545#section-3.1`), so it is treated as an ordinary character.

Returns:
    An integer representing the index position of the separator,
    or ``-1`` if there is none.
Fr   rN   r)   )r`   )r@   r2   ri   r4   s   &   r   Úvalue_separator_indexÚ!Contentline.value_separator_indexÿ   s>   € ð ˆ	Ü˜t–_‰EˆAØ�SŒyØ )œM’	Ø�s–§9¡9Ø’ñ	 %ð
 ˆ	r   c                óT   € \        V4      pV ! \        P                  RV4      VR7      # )zAUnfold the content lines in an iCalendar into long content lines.r(   rZ   )r   ÚUFOLDr+   )r>   Úicalr=   s   &&&r   rd   ÚContentline.from_ical  s&   € ô ˜$Óˆá”5—9‘9˜R Ó&¨vÔ6Ð6r   c                ó>   € \        V 4      P                  \        4      # )zHLong content lines are folded so they are less than 75 characters
wide.
)r   Úencoder	   ©r@   s   &r   rK   ÚContentline.to_ical  s   € ô ˜‹×%Ñ%Ô&6Ó7Ð7r   rZ   )T)F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r	   r<   ÚclassmethodrS   rm   rq   rv   rd   rK   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)rA   rH   s   @@r   r7   r7   u   sr   ù‡ € ñð €Ià#(Ð3C÷ ð ÷'ñ 'ó ð'÷:?&ð ?&÷B:ð :÷6ð ð, ó7ó ð7÷8ò 8r   r7   c                   ó:   a € ] tR tRt o RtR t]R 4       tRtV t	R# )ÚContentlinesi#  z¡I assume that iCalendar files generally are a few kilobytes in size.
Then this should be efficient. for Huge files, an iterator should probably
be used instead.
c                ó@   € RP                  R V  4       4      R,           # )zSimply join self.s   
c              3   óT   "  € T F  q'       g   K  VP                  4       x € K   	  R # 5ir    )rK   ©r\   Úlines   & r   r^   Ú'Contentlines.to_ical.<locals>.<genexpr>+  s   é € ÐD±t¨t»tœN˜DŸL™LŸN˜N³tùs   ‚	(�()r1   r~   s   &r   rK   ÚContentlines.to_ical)  s   € à�|‰|ÑD±tÓDÓDÀwÕNÐNr   c                óî   € \        V4      p \        P                  RV4      pV ! R \        P	                  V4       4       4      pVP                  R4       V#   \         d   p\        R4      ThRp?ii ; i)z#Parses a string into content lines.r(   c              3   óJ   "  € T F  q'       g   K  \        V4      x € K  	  R # 5ir    )r7   rŽ   s   & r   r^   Ú)Contentlines.from_ical.<locals>.<genexpr>4  s    é € ÐVÑ6M¨dÓQUÔ)œ D×)Ð)Ó6Mùs   ‚	#�#z&Expected StringType with content linesN)r   ry   r+   ÚNEWLINEÚsplitr.   Ú	Exceptionrc   )r>   r   ÚunfoldedÚlinesÚes   &&   r   rd   ÚContentlines.from_ical-  sq   € ô ˜‹^ˆð	Nä—y‘y  RÓ(ˆHÙÑV´g·m±mÀHÔ6MÓVÓVˆEØ�L‰L˜Ôð ˆøô ô 	NÜÐEÓFÈAÐMûð	Nús   �A	A ÁA4Á#A/Á/A4r   N)
r€   r�   r‚   rƒ   r„   rK   r†   rd   r‡   rˆ   )rH   s   @r   r‹   r‹   #  s$   ø‡ € ñò
Oð ñ
ó ö
r   r‹   )r   )r„   rb   Úicalendar.parser.parameterr   Úicalendar.parser.propertyr   r   Úicalendar.parser.stringr   r   r   r   Úicalendar.parser_toolsr	   r
   r   Úcompilery   r•   r/   r*   r,   r5   r   r7   Úlistr‹   Ú__all__r   r   r   Ú<module>r£      sœ   ðÙ -ã 	å 1ß Q÷ó ÷ KÑ Jð 	�
Š
ÐBÓC€Ø
�*Š*�XÓ
€à€ð Ÿ*š*Ð%>Ó?Ð ØŸš OÓ4Ð ÷S ôlk8�#ô k8ô\�4˜Õ$ô ð0 ˜.Ð
)‚r   