+
    ˜qgj:  ã                   ó  € ^ RI t ^ RIt^ RIt^ RIt^ RIHtHt ^ RIHt ^ RI	H
t
 ^ RI	Ht ^ RI	Ht ^ RIHt ]P                   ! ]4      tRt ! R	 R
]4      t ! R R]4      t]
P,                  ! R4      R 4       tR tR tRR ltR tRR ltR# )é    N)ÚDebugUndefinedÚTemplateSyntaxError)ÚSandboxedEnvironment)Úperformance)Ú
type_utils)Úutil)Ú
write_filezCI_MISSING_JINJA_VAR/c                   óh   a a€ ] tR t^ t oV3R lV 3R lltR t]RV3R lR ll4       tRtRt	Vt
V ;t# )	ÚJinjaSyntaxParsingExceptionc                ó$   <€ V ^8„  d   QhRS[ RR/# )é   ÚerrorÚreturnN)r   )ÚformatÚ__classdict__s   "€Ú5/usr/lib/python3/dist-packages/cloudinit/templater.pyÚ__annotate__Ú(JinjaSyntaxParsingException.__annotate__!   s   ø€ ÷ 
#ñ 
#á"ð
#ð 
ñ
#ó    c                ó²   <€ \         ST `  VP                  ;'       g    R VP                  VP                  VP
                  4       VP                  V n        R# )zunknown syntax errorN)ÚsuperÚ__init__ÚmessageÚlinenoÚnameÚfilenameÚsource)Úselfr   Ú	__class__s   &&€r   r   Ú$JinjaSyntaxParsingException.__init__!   sD   ø€ ô 	‰ÑØ�M‰M×3Ð3Ð3Ø�L‰LØ�J‰JØ�N‰Nô		
ð —l‘lˆŽr   c                óÎ   € V P                  V P                  V P                  V P                  P	                  4       V P                  ^,
          ,          P                  4       R7      # )ú;Avoid jinja2.TemplateSyntaxError multi-line __str__ format.©Úsyntax_errorÚline_numberÚline_content)Úformat_error_messager   r   r   Ú
splitlinesÚstrip©r   s   &r   Ú__str__Ú#JinjaSyntaxParsingException.__str__-   sN   € à×(Ñ(ØŸ™ØŸ™ØŸ™×/Ñ/Ó1°$·+±+Àµ/ÕB×HÑHÓJð )ó 
ð 	
r   c                ó2   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ /# )r   r$   r%   r&   r   )Ústr)r   r   s   "€r   r   r   6   s1   ø€ ÷ 
ñ 
Ùð
áð
ñ ð
ñ 
ñ	
r   c                ód   € V'       d   RV 2MRp\         P                  P                  V VVR7      # )r"   z: Ú r#   )r   Úmessage_templater   r#   s   &&&r   r'   Ú0JinjaSyntaxParsingException.format_error_message5   s<   € ÷ /;˜˜L˜>Ñ*ÀˆÜ*×;Ñ;×BÑBØ%Ø#Ø%ð Có 
ð 	
r   zfUnable to parse Jinja template due to syntax error: {syntax_error} on line {line_number}{line_content})r   )r0   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r+   Ústaticmethodr'   r1   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   r   s   @@r   r   r       s:   ù‡ € ÷
#ó 
#ò
ð ÷
ñ 
ó ð
ð	=÷ Ðr   r   c                   ó0   a € ] tR t^Kt o RtR tR tRtV tR# )ÚUndefinedJinjaVariablez>Class used to represent any undefined jinja template variable.c                ó.   € \         : V P                  : 2# ©N)ÚMISSING_JINJA_PREFIXÚ_undefined_namer*   s   &r   r+   ÚUndefinedJinjaVariable.__str__N   s   € Þ-¨t×/CÓ/CÐDÐDr   c                óŒ   € \        V4      P                  \        R 4      p\        RP	                  V P
                  VR7      4      h)r0   zhUndefined jinja variable: "{this}-{other}". Jinja tried subtraction. Perhaps you meant "{this}_{other}"?)ÚthisÚother)r.   Úreplacer?   Ú	TypeErrorr   r@   )r   rD   s   &&r   Ú__sub__ÚUndefinedJinjaVariable.__sub__Q   sI   € Ü�E“
×"Ñ"Ô#7¸Ó<ˆÜð@ß@FÁØ×)Ñ)°ð AGó Aó
ð 	
r   © N)	r3   r4   r5   r6   Ú__doc__r+   rG   r8   r9   )r   s   @r   r<   r<   K   s   ø‡ € ÙHòE÷
ð 
r   r<   zRendering basic templatec                ó>   a€ V3R lp\         P                  ! RW 4      # )zÜThis does simple replacement of bash variable like templates.

It identifies patterns like ${a} or $a and can also identify patterns like
${a.b} or $a.b which will look for a key 'b' in the dictionary rooted
by key 'a'.
c           
      óX  <€ V P                  ^4      pVf   V P                  ^4      pVf   \        R4      h\        P                  ! VP	                  R4      4      pSp\        V4      ^8”  d]   VP                  4       p\        V\        4      '       g-   \        RV: R\        P                  ! V4      : RV: R24      hW4,          pKl  VP                  4       p\        V\        4      '       g,   \        RV: RV: R\        P                  ! V4      : 24      h\        W4,          4      # )	é   z,Match encountered but no valid group presentÚ.z&Can not traverse into non-dictionary 'z
' of type z while looking for subkey 'Ú'zCan not extract key 'z' from non-dictionary ')ÚgroupÚRuntimeErrorÚcollectionsÚdequeÚsplitÚlenÚpopleftÚ
isinstanceÚdictrF   ÚtuÚobj_namer.   )Úmatchr   ÚpathÚselected_paramsÚkeyÚparamss   &    €r   ÚreplacerÚbasic_render.<locals>.replacerd   sí   ø€ à�{‰{˜1‹~ˆØŠ<Ø—;‘;˜q“>ˆDØŠ<ÜÐMÓNÐNÜ× Ò  §¡¨C£Ó1ˆØ ˆÜ�$‹i˜!ŒmØ—,‘,“.ˆCÜ˜o¬t×4Ò4Ýó '¬¯ª°OÖ(DÃcðKóð ð .Õ2ŠOØ�l‰l‹nˆÜ˜/¬4×0Ò0Ýã›¬¯ª°_Õ)EðGóð ô �?Õ'Ó(Ð(r   z)\$\{([A-Za-z0-9_.]+)\}|\$([A-Za-z0-9_.]+))ÚreÚsub)Úcontentr_   r`   s   &f r   Úbasic_renderre   [   s    ø€ õ)ô6 �6Š6Ø4°hóð r   c                 óˆ  € R  pV P                  R4      R8w  d   V P                  R^4      w  r#MT pRp\        P                  ! RV\        P                  4      pV'       g
   R\
        V 3# VP                  ^4      P                  4       P                  4       pVR9  d   \        RV,          4      hVR8X  d   RW3# R\
        V3# )	c                 ó¼  € V P                  R 4      '       d   R MRp \        P                  ! R4      ;_uu_ 4        \        \        RR.R7      pVP                  V 4      P                  ! R/ VB V,           uuRRR4       #   + '       g   i     R# ; i  \         d,   pT;P                  ^,          un        \        TR7      ThRp?i\         d   pYUhRp?ii ; i)	Ú
r0   zRendering jinja2 templateTzjinja2.ext.do)Ú	undefinedÚtrim_blocksÚ
extensionsN)r   rI   )Úendswithr   ÚTimedr   r<   Úfrom_stringÚrenderr   r   r   Ú	Exception)rd   r_   ÚaddÚ	jinja_envÚtemplate_syntax_errorÚunknown_errors   &&    r   Újinja_renderÚ%detect_template.<locals>.jinja_render…   s¿   € à×&Ñ& t×,Ò,‰d°"ˆð	3Ü×"Ò"Ð#>×?Õ?Ü0Ü4Ø $Ø /Ð0ô�	ð
 !×,Ñ,¨WÓ5×<Ò<ÑF¸vÑFÈÕL÷ @×?×?Ó?ûô #ô 	)Ø!×(Ò(¨AÕ-Õ(Ü-Ø+ôà(ð)ûô ô 	3ØÐ2ûð	3úsF   �B »;BÁ6
B ÂB	ÂB ÂB ÂCÂ &CÃCÃCÃCÃCrh   r0   z##\s*template:(.*)ÚbasicÚjinjaz.Unknown template rendering type '%s' requestedéÿÿÿÿ)rx   rw   )
ÚfindrT   rb   r[   ÚIre   rP   Úlowerr)   Ú
ValueError)Útextru   ÚidentÚrestÚ
type_matchÚtemplate_types   &     r   Údetect_templaterƒ   „   sÃ   € ò3ð& ‡y�y�ƒ˜"ÔØ—j‘j  qÓ)‰ˆˆtàˆØˆÜ—’Ð/°¼¿¹Ó=€JßØœ tÐ,Ð,à"×(Ñ(¨Ó+×1Ñ1Ó3×9Ñ9Ó;ˆØÐ 2Ô2ÜØ@Øõ óð ð ˜gÔ%Ø˜\Ð0Ð0àœ tÐ,Ð,r   c                 ó–   € V'       g   / p\        \        P                  ! V 4      4      w  r#p\        P	                  R W4       V! WA4      # )z+Rendering content of '%s' using renderer %s)rƒ   r   Úload_text_fileÚLOGÚdebug)Úfnr_   r‚   Úrendererrd   s   &&   r   Úrender_from_filerŠ   ­   s>   € ßØˆÜ'6´t×7JÒ7JÈ2Ó7NÓ'OÑ$€M˜WÜ‡I�IÐ;¸RÔOÙ�GÓ$Ð$r   c                 óL   € \        W4      p\        P                  ! WVR 7       R# ))ÚmodeN)rŠ   r   r	   )rˆ   Úoutfnr_   rŒ   Úcontentss   &&&& r   Úrender_to_filer�   µ   s   € Ü Ó+€HÜ‡O‚O�E¨$×/r   c                óB   € V'       g   / p\        V 4      w  r#p V! W4      # )zRender string)rƒ   )rd   r_   Ú_template_typer‰   s   &&  r   Úrender_stringr’   º   s$   € çØˆÜ(7¸Ó(@Ñ%€N˜gÙ�GÓ$Ð$r   c                 ó\  € \         P                  ! V4      pR V RV/p\        WV4      P                  4       R,           pV'       d3   \         P                  ! VRR7      pV'       g   \        RV,          4      hVR8X  d"   \        P                  P                  V4       R	# \        W%RR7       R	# )
ÚvariantÚprefixrh   T)Údefaultz.Cannot render template file %s - invalid yaml.Ú-Úw)ÚomodeN)
r   r…   r’   ÚrstripÚ	load_yamlrQ   ÚsysÚstdoutÚwriter	   )r”   ÚtemplateÚoutputÚis_yamlr•   rŽ   Ú
tpl_paramsÚouts   &&&&&   r   Úrender_templater¤   Â   sˆ   € Ü×"Ò" 8Ó,€HØ˜W h°Ð7€JÜ˜hÓ3×;Ñ;Ó=ÀÕD€HßÜ�nŠn˜X¨tÔ4ˆßÜØ@À8ÕKóð ð �„}Ü�
‰
×Ñ˜Ö"ä�6¨3×/r   )i¤  r>   )rR   Úloggingrb   rœ   Újinja2r   r   Újinja2.sandboxr   Ú	cloudinitr   r   rY   r   Úcloudinit.atomic_helperr	   Ú	getLoggerr3   r†   r?   r   r<   Útimedre   rƒ   rŠ   r�   r’   r¤   rI   r   r   Ú<module>r¬      s�   ðó Û Û 	Û 
ç 6Ý /å !Ý &Ý Ý .à×Ò˜Ó!€Ø.Ð ô&Ð"5ô &ôV
˜^ô 
ð  ×ÒÐ-Ó.ñ%ó /ð%òP&-òR%ô0ò
%ö0r   