+
    ˜qgjŠm  ã                   ó–  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
HtHtHt ^ RIHtHtHt ^ RIHtHtHtHtHtHtHt ^ RIHt ]P8                  ! ]4      t. ROt. ROt . ROt!R R lt"R	 R
 lt#RR R llt$R R lt%]PL                  ! R4      R R l4       t'R R lt(R R lt) ! R R]PT                  4      t*R R lt+R# )é    N)Úsuppress)ÚAnyÚDictÚListÚMappingÚOptional)ÚperformanceÚsubpÚutil)ÚParserErrorÚis_ipv4_addressÚis_ipv4_networkÚis_ipv6_addressÚis_ipv6_networkÚrendererÚsubnet_is_ipv6)ÚNetworkStatec          	      ó^   € V ^8„  d   QhR\         R\         R\        R\        \        ,          /# )é   ÚifaceÚsubnetÚis_ipv6Úreturn©ÚdictÚboolr   Ústr)Úformats   "Ú3/usr/lib/python3/dist-packages/cloudinit/net/eni.pyÚ__annotate__r    J   s2   € ÷ ^ñ ^œTð ^¬4ð ^¼$ð ^Ä4ÌÅ9ñ ^ó    c           
      ó„  € . p. ROpVP                  4        EF›  w  rVVR8X  d   K  VR 8X  d   VR ,          : RVR,          : 2pV'       g   K7  WT9   g   K?  \        V\        4      '       Ed"   VR8X  d9   \        \        \        P
                  ! \        VR7      V4      4      pV. 8X  d   K•  VR8X  dÊ   \        VP                  R4      \        4      '       dE   \        \        \        P
                  ! \        VR7      VP                  R. 4      4      4      . 8X  g^   \        VP                  R4      \        4      '       d<   VP                  R4      R8X  g#   \        VP                  RR4      V4      '       g   EKe  RP                  V4      pMëVR8X  d   \        Wb4      '       g   EK’  VR8X  dÊ   \        VP                  R4      \        4      '       dE   \        \        \        P
                  ! \        VR7      VP                  R. 4      4      4      . 8X  g^   \        VP                  R4      \        4      '       d<   VP                  R4      R8X  g#   \        VP                  RR4      V4      '       g   EKb  R	V9   d   VP                  R	R
4      pVP                  RP                  WV4      4       EKž  	  \        V4      # )ÚaddressÚnetmaskÚ
dns_searchÚdns_nameserversÚ/Úprefix)r   Ú Ú Ú_Ú-ú    {0} {1})
r#   r$   Ú	broadcastÚmetricÚgatewayÚpointopointÚmtuÚscoper%   r&   )ÚitemsÚ
isinstanceÚlistÚfilterÚ	functoolsÚpartialÚhas_same_ip_versionÚgetr   ÚjoinÚreplaceÚappendr   Úsorted)r   r   r   ÚcontentÚ	valid_mapÚkeyÚvalues   &&&    r   Ú_iface_add_subnetrD   J   s_  € Ø€Gò€Ið —l‘l—n‰
ˆØ�)ÔÙØ�)ÔØ% i×0Ð0°&¸×2BÐCˆEß‰5�SÖ%Ü˜%¤×&Ó&ØÐ+Ô+Ü ÜÜ%×-Ò-Ü 3¸Wôð "ó	ó�Eð  ”{Ù Ø˜,Ô&ä" 6§:¡:Ð.?Ó#@Ä$×GÒGÜ Ü"Ü )× 1Ò 1Ü$7Àô!"ð !'§
¡
Ð+<¸bÓ Aó	óð ôô # 6§:¡:Ð.?Ó#@Ä#×FÒFà"ŸJ™JÐ'8Ó9¸RÔ?Ü#6Ø &§
¡
Ð+<¸bÓ AÀ7÷$ò $ò !àŸ™ ›‘àÐ+Ô+Ô4GØ÷5ò 5ò Ø˜,Ô&ä" 6§:¡:Ð.?Ó#@Ä$×GÒGÜ Ü"Ü )× 1Ò 1Ü$7Àô!"ð !'§
¡
Ð+<¸bÓ Aó	óð ôô # 6§:¡:Ð.?Ó#@Ä#×FÒFà"ŸJ™JÐ'8Ó9¸RÔ?Ü#6Ø &§
¡
Ð+<¸bÓ AÀ7÷$ò $ò !à�cŒzØ—k‘k # sÓ+�Ø�N‰N˜=×/Ñ/°Ó;×<ñ] %ô` �'‹?Ðr!   c          	      ót   € V ^8„  d   QhR\         R\        R\        \        ,          R\        \        ,          /# )r   r   ÚindexÚipv4_subnet_mtur   )r   Úintr   r   r   )r   s   "r   r    r    ¬   s4   € ÷ ?ñ ?Üð?Üð?Ü.6´s­mð?ä	Œ#…Yñ?r!   c                 óÚ  € V^ 8w  d   . # . p. ROp. ROpRR/pV R,          R9  d   VP                  R4       V P                  4        EF  w  rxVP                  Ww4      p	RV	9   d   V	P                  RR4      p	\	        V\
        4      '       d   W,          '       d   RMRpV'       d   Wt9   d   Kh  VR	8X  d0   V'       d(   W‚8w  d    \        P                  R
V R,          VV4       Kž  Wu9   d,   V F#  p
VP                  RP                  Wš4      4       K%  	  KÏ  \	        V\        4      '       d   RP                  V4      pVP                  RP                  W˜4      4       EK  	  \        V4      # )r   ÚnameÚtypeÚmac_addressÚ	hwaddressr+   r,   ÚonÚoffr2   zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.r-   r*   )
ÚcontrolÚ	device_idÚdnsÚdriverrF   ÚinetÚmoderJ   ÚsubnetsrK   )Úbridge_pathcostÚbridge_portprioÚbridge_waitport)ÚbondÚbridgeÚ
infinibandÚvlan)r>   r4   r;   r=   r5   r   ÚLOGÚwarningr   r6   r<   r?   )r   rF   rG   r@   Ú
ignore_mapÚmultiline_keysÚrenamesrB   rC   Ú	key_writeÚvs   &&&        r   Ú_iface_add_attrsre   ¬   sB  € ð �„zØˆ	Ø€Gò€Jò€Nð ˜kÐ*€GØˆV…}ÐDÔDØ×Ñ˜-Ô(à—k‘k—m‰
ˆØ—K‘K Ó)ˆ	Ø�)ÔØ!×)Ñ)¨#¨sÓ3ˆIä�eœT×"Ò"Ø!ŸJœJ‘D¨EˆEß˜Ô)ÙØ�%Œ<ŸOØÔ'Ü—‘ð:à˜&•MØØ#ôñ ØÔ Û�Ø—‘˜}×3Ñ3°IÓAÖBñ áÜ�eœT×"Ò"Ø—H‘H˜U“OˆEØ�‰�}×+Ñ+¨IÓ=×>ñ3 $ô6 �'‹?Ðr!   c                óR   € V ^8„  d   QhR\         R\        R\        \        ,          /# ©r   r   Úrender_hwaddressr   r   )r   s   "r   r    r    î   s(   € ÷ ñ ÜðÜ*.ðä	Œ#…Yñr!   c                 ó„  € V R ,          pV R,          pVR8X  d   RpMVR9   d   RV,           pM	RV,           pV P                  4       pVP                  RVRV/4       RP                  ! R/ VB RP                  ! R/ VB .pV'       d9   V P                  R	4      '       d"   VP	                  R
P                  ! R/ VB 4       V# )rJ   rP   Úautozallow-z
# control-ÚfullnameÚcverbz{cverb} {fullname}ziface {fullname} {inet} {mode}rL   z    hwaddress {mac_address})Úhotplug© )ÚcopyÚupdater   r;   r>   )r   rF   rh   rk   rP   rl   ÚsubstÚliness   &&&     r   Ú_iface_start_entryrs   î   s¾   € ð �V�}€Hà�IÕ€GØ�&ÔØ‰Ø	�LÔ	 Ø˜7Õ"‰à˜wÕ&ˆà�J‰J‹L€EØ	‡L�L�*˜h¨°Ð7Ô8ð 	×#Ò#Ñ, eÑ,Ø(×/Ò/Ñ8°%Ñ8ð€E÷ ˜EŸI™I m×4Ò4Ø�‰Ð2×9Ò9ÑB¸EÑBÔCà€Lr!   c          
      óL   € V ^8„  d   QhR\         R\        R\        R\        RR/# )r   ÚifacesÚcontentsÚsrc_dirÚsrc_pathr   N)r   r   )r   s   "r   r    r      s;   € ÷ C*ñ C*ÜðC*ÜðC*Ü*-ðC*Ü9<ðC*à	ñC*r!   c                ó²  € RpVP                  4        EFó  pVP                  4       pVP                  R4      '       d   K-  VP                  R4      pV^ ,          pVR8X  Ed{   V^,          pVP                  R4      '       g    \        P
                  P                  W(4      p\        P                  ! V4       EF  p	\        P                  ! V	4      p
V
 Uu. uF�  p\        P
                  P                  \        P
                  P                  W›4      4      '       g   KG  \        P                  ! RV4      f   Kb  \        P
                  P                  W›4      NKƒ  	  p
pV
 Fp  p\        P                  ! V4      P                  4       p\        P
                  P                  V4      p\        W\        P
                  P!                  V4      V4       Kr  	  EK   	  EKÉ  VR8X  då   V^,          pVP                  R4      '       g    \        P
                  P                  W/4      p\        P                  ! V4       Fˆ  p	\#        V	R4      ;_uu_ 4       pVP%                  4       P                  4       pRRR4       \        P
                  P                  V	4      p\        V X\        P
                  P!                  V4      V4       KŠ  	  EK´  VR	8X  d.   VR
,           F  pVV 9  d   RV/V V&   RV V,          R	&   K  	  EKè  VR8X  d\   VR,          w  pppVV 9  d	   RV/V V&   M"RV V,          9   d   \'        RV: RV: R24      hVV V,          R&   VV V,          R&   TpEKJ  VR8X  d0   V^,          R8X  d   V^,          pM	V^,          pVW,          R&   EK€  V\(        9   d   V^,          W,          V&   EK   V\*        9   dP   WpV,          9  d   . W,          V&   W,          V,          P-                  RP                  VR
,          4      4       EKú  VP                  R4      '       d¾   RW,          9  d   / W,          R&   VR8X  dK   . W,          R,          R&   VR
,           F(  pW,          R,          R,          P-                  V4       K*  	  EKz  VR8X  dK   . W,          R,          R&   VR
,           F(  pW,          R,          R,          P-                  V4       K*  	  EKË  EKÎ  VP                  R4      '       Ed°   RW,          9  d   / W,          R&   V\.        9   d0   VP1                  RR^4      pV^,          W,          R,          V&   EK8  VR8X  dK   . W,          R,          R &   VR
,           F(  pW,          R,          R ,          P-                  V4       K*  	  EK‰  VR!8X  dU   V^,          P3                  4       R"8X  d   V^,          W,          R,          R"&   EKÈ  V^,          W,          R,          R"&   EKä  VR#8X  dQ   R$W,          R,          9  d   / W,          R,          R$&   V^,          W,          R,          R$,          V^,          &   EK;  VR%8X  dQ   R&W,          R,          9  d   / W,          R,          R&&   V^,          W,          R,          R&,          V^,          &   EK’  EK•  VP                  R'4      '       g   EK¯  R(W,          9  d   / W,          R(&   VP1                  R'R^4      pV^,          W,          R(,          V&   EKö  	  V P5                  4        F  pR	V V,          9  g   K  R)V V,          R	&   K!  	  R# u upi   + '       g   i     ELà; i)*ab  Parses the file contents, placing result into ifaces.

'_source_path' is added to every dictionary entry to define which file
the configuration information came from.

:param ifaces: interface dictionary
:param contents: contents of interfaces file
:param src_dir: directory interfaces file was located
:param src_path: file path the `contents` was read
NÚ#r*   zsource-directoryr'   z^[a-zA-Z0-9_-]+$ÚsourceÚrrj   :é   NNÚ_source_pathTr   :r}   é   NÚfamilyz
Interface z* can only be defined once. Re-defined in 'z'.ÚmethodrM   Úetherzdns-rR   z
dns-searchÚsearchzdns-nameserversÚnameserversÚbridge_r[   r)   Úbridge_portsÚportsÚ	bridge_hwÚmacrW   ÚpathcostrX   Úportpriozbond-rZ   F)Ú
splitlinesÚstripÚ
startswithÚsplitÚosÚpathr<   ÚglobÚlistdirÚisfileÚreÚmatchr   Úload_text_fileÚabspathÚ_parse_deb_config_dataÚdirnameÚopenÚreadr   ÚNET_CONFIG_OPTIONSÚNET_CONFIG_COMMANDSr>   ÚNET_CONFIG_BRIDGE_OPTIONSr=   ÚlowerÚkeys)ru   rv   rw   rx   ÚcurrifÚliner�   ÚoptionÚparsed_src_dirÚexpanded_pathÚdir_contentsr‘   ÚentryÚsrc_dataÚ	abs_entryÚnew_src_pathÚfpÚabs_pathr   r€   r�   ÚvalÚdomainÚserverÚbridge_optionÚbond_options   &&&&                      r   r™   r™     s   € ð €FØ×#Ñ#×%ˆØ�z‰z‹|ˆØ�?‰?˜3×ÒÙØ—
‘
˜3“ˆØ�q•ˆØÐ'Õ'Ø" 1�XˆNØ!×,Ñ,¨S×1Ò1Ü!#§¡§¡¨gÓ!F�Ü!%§¢¨>×!:�Ü!Ÿzšz¨-Ó8�ñ !-ó á ,˜äŸ™Ÿ™¤r§w¡w§|¡|°MÓ'H×Iô 6ô ŸHšHÐ%7¸Ó>ô	 6”B—G‘G—L‘L Ö5Ù ,ð ð  ó *�EÜ#×2Ò2°5Ó9×?Ñ?ÓA�HÜ "§¡§¡°Ó 6�IÜ*Ø¬"¯'©'¯/©/¸)Ó*DÀiöô *ô ";ð  �xÔØ  �8ˆLØ×*Ñ*¨3×/Ò/Ü!Ÿw™wŸ|™|¨GÓB�Ü!%§¢¨<Ö!8�Ü˜-¨×-Ô-°Ø!Ÿw™w›yŸ™Ó0�H÷ .äŸ7™7Ÿ?™?¨=Ó9�Ü&Ø˜H¤b§g¡g§o¡o°hÓ&?Àöô	 "9ð �vÔØ˜rŸ˜�Ø Ô&ð '¨ð%�F˜5‘Mð )-��u•˜fÓ%ô #ð �wÔØ$)¨#¥JÑ!ˆE�6˜6Ø˜FÔ"ð # Hð!��u’ð ˜V E�]Ô*Ý!ã-2³Hð>óð ð '-ˆF�5�M˜(Ñ#Ø&,ˆF�5�M˜(Ñ#Ø‹FØ�{Ô"Ø�Q�x˜7Ô"Ø˜A•h‘à˜A•h�Ø*-ˆF�N˜;Ô'ØÔ)Ô)Ø%*¨1¥XˆF�N˜6Ô"ØÔ*Ô*Ø F�^Ô+Ø)+�•˜vÑ&Ø�N˜6Õ"×)Ñ)¨#¯(©(°5¸µ9Ó*=×>Ø×Ñ˜v×&Ò&Ø˜F�NÔ*Ø(*�•˜uÑ%Ø˜Ô%Ø24�•˜uÕ% hÑ/Ø# BŸi˜i�FØ•N 5Õ)¨(Õ3×:Ñ:¸6ÖBô (àÐ,Ô,Ø79�•˜uÕ% mÑ4Ø# BŸi˜i�FØ•N 5Õ)¨-Õ8×?Ñ?ÀÖGô (ò -ð ×Ñ˜y×)Ó)Ø˜v�~Ô-Ø+-�•˜xÑ(ØÔ2Ô2Ø &§¡¨y¸"¸aÓ @�Ø:?À½(�•˜xÕ(¨Ô7Ø˜>Ô)Ø46�•˜xÕ(¨Ñ1Ø" 2ŸY˜Y�EØ•N 8Õ,¨WÕ5×<Ñ<¸UÖCô 'à˜;Ô&ð
 ˜•8—>‘>Ó# uÔ,Ø6;¸Aµh�F•N 8Õ,¨UÔ3à6;¸Aµh�F•N 8Õ,¨UÔ3ØÐ,Ô,Ø V¥^°HÕ%=Ô=Ø;=�F•N 8Õ,¨ZÑ8ØAFÀqÅ�•˜xÕ(¨Õ4°U¸1µXÔ>ØÐ,Ô,Ø V¥^°HÕ%=Ô=Ø;=�F•N 8Õ,¨ZÑ8ØAFÀqÅ�•˜xÕ(¨Õ4°U¸1µXÔ>ò -ð ×Ñ˜w×'Õ'Ø˜V�^Ô+Ø)+�•˜vÑ&Ø Ÿ.™.¨°"°aÓ8ˆKØ27¸µ(ˆF�N˜6Õ" ;Ô/ñe &ðf —‘–ˆØ˜ �Ö&Ø$)ˆF�5�M˜&Ó!ó ùòO ÷& .×-Ð-ús   ÃA] Ä] Ä9#] É]	Ý]zConverting eni datac                ó0   € V ^8„  d   QhR\         R\        /# )r   Úeni_datar   )r   r   )r   s   "r   r    r    �  s   € ÷ .ñ .œsð .¤tñ .r!   c                ó8   € / p\        WRRR7       \        V4      # )z=Return a network config representation of what is in eni_dataÚNone)rw   rx   )r™   Ú_ifaces_to_net_config_data)r´   ru   s   & r   Úconvert_eni_datar¸   Ž  s    € ð €FÜ˜6°VÀfÕMÜ% fÓ-Ð-r!   c                ó0   € V ^8„  d   QhR\         R\         /# )r   ru   r   )r   )r   s   "r   r    r    –  s   € ÷ &Eñ &E¤tð &E´ñ &Er!   c                óà  € / pV P                  4        EF.  w  r#VP                  R4      ^ ,          pWA9  d0   VR8X  d   RpMRpRVRVR. /W&   RV9   d   VR,          W,          R	&   R
VRVR,          /pVP                  R4      '       d   RVR&   MRVR&   VP                  R4      R8X  d   VR,          VR&   R F  pWs9   g   K  W7,          Wg&   K  	  RV9   dK   R FD  pWƒR,          9   g   K  VR,          V,          '       g   K*  VR,          V,          VRV,           &   KF  	  W,          R,          P                  V4       EK1  	  R^R\	        V4       U	u. uF  q‘V	,          NK  	  up	/# u up	i )z¶Return network config that represents the ifaces data provided.
ifaces = _parse_deb_config_data(...)
config = ifaces_to_net_config_data(ifaces)
state = parse_net_config_data(config).Ú:ÚloÚloopbackÚphysicalrK   rJ   rV   rM   rL   Ú_orig_eni_namer�   rj   rP   ÚmanualÚstaticr#   rR   Údns_ÚversionÚconfig)r$   r0   r.   )r„   rƒ   )r4   Ú	partitionr;   r>   r?   )
ru   ÚdevsrJ   ÚdataÚdevnameÚdtyper   Úcopy_keyÚnÚds
   &         r   r·   r·   –  sd  € ð
 €DØ—l‘l—n‰
ˆà—.‘. Ó% aÕ(ˆØÔØ˜$ŒØ"‘à"�Ø# U¨F°G¸YÈÐKˆD‰Mð ˜dÔ"Ø/3°KÕ/@�•˜mÑ,Ø" D¨&°$°xµ.ÐAˆØ�8‰8�F×ÒØ &ˆF�9Òà (ˆF�9Ñà�8‰8�HÓ Ô)Ø $ Y¥ˆF�9Ñã;ˆHØÖØ#'¥>�Ó ñ <ð �DŒ=Û.�Ø˜U�Ö#¨¨U­°A¯®Ø)-¨e­°Q­�F˜6 A�:Ó&ñ /ð 	��iÕ ×'Ñ'¨×/ñ= %ð@ �q˜(´f¸T´lÓ$C±l°¨!§W W±lÑ$CÐDÐDùÒ$Cs   ÅE+
c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   Úaddr_or_netr   r   )r   r   )r   s   "r   r    r    ¿  s&   € ÷ Hñ H¤Sð H´4ð H¼Dñ Hr!   c                 óŠ   € V'       g   \        V 4      ;'       g    \        V 4      # \        V 4      ;'       g    \        V 4      # ©N)r   r   r   r   )rÎ   r   s   &&r   r:   r:   ¿  s5   € ßÜ˜{Ó+×KÐK¬¸{Ó/KÐKÜ˜;Ó'×GÐG¬?¸;Ó+GÐGr!   c                   ó’   a € ] tR tRt o RtRV 3R lR lltRV 3R lR lltRV 3R lR	 lltRV 3R
 lR lltRV 3R lR llt	Rt
V tR# )ÚRendereriÅ  z@Renders network information in a /etc/network/interfaces format.Nc                óF   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          /# )r   rÄ   )r   r   r   r   )r   Ú__classdict__s   "€r   r    ÚRenderer.__annotate__È  s"   ø€ ÷ 
ñ 
™x©±±S°Õ(9Õ:ñ 
r!   c                ó¤   € V'       g   / pVP                  R R4      V n        VP                  RR4      V n        VP                  RR4      V n        R# )Úeni_pathzetc/network/interfacesÚ
eni_headerNÚnetrules_pathz(etc/udev/rules.d/70-persistent-net.rules)r;   r×   rØ   rÙ   )ÚselfrÄ   s   &&r   Ú__init__ÚRenderer.__init__È  sF   € ßØˆFØŸ
™
 :Ð/GÓHˆŒØ Ÿ*™* \°4Ó8ˆŒØ#ŸZ™ZØÐGó
ˆÖr!   c                ó<   <€ V ^8„  d   QhRS[ RS[RS[S[,          /# )r   ÚrouteÚindentr   )r   r   r   )r   rÔ   s   "€r   r    rÕ   Ñ  s+   ø€ ÷ Oñ O¡4ð O±ð O¹dÁ3½iñ Or!   c                ó|  € . p\         P                  ! R4      '       d   RpMRpV'       d   VR,           pVR,           pRRRR/pMVR	,           pVR
,           pRRRR/pRpRp	VR,          R8X  d,   VR,          R8X  d   V'       d   VR,          pVR,          pRp	M;VR,          R8X  d.   VR,          ^ 8X  d    V'       d   VR,          pVR,          pRp	MRp	Rp
R EF"  pV	'       d
   VR8X  d   K  VR8X  d"   W©: RW{,          : RW,          : 2,          p
K=  W±9   g   KE  VR8X  dº   V'       d=   \        W,          4      '       d   VR,          pVR,          pVR,          pVR,          pMJ\        W,          4      '       d   V
R,          p
M)VP                  R4      ^ 8X  d   V
R,          p
M	V
R,          p
RV9   d"   V
RW,          : RVR,          : 2,          p
EK  EK  V
RW{,          : RW,          : 2,          p
EK%  	  VP	                  WZ,           V,           4       VP	                  Wj,           V,           4       V# ) af  When rendering routes for an iface, in some cases applying a route
may result in the route command returning non-zero which produces
some confusing output for users manually using ifup/ifdown[1].  To
that end, we will optionally include an '|| true' postfix to each
route line allowing users to work with ifup/ifdown without using
--force option.

We may at somepoint not want to emit this additional postfix, and
add a 'strict' flag to this function.  When called with strict=True,
then we will not append the postfix.

1. http://askubuntu.com/questions/168033/
         how-to-set-static-routes-in-ubuntu-server
ÚipTFz
post-up ipzpre-down ipr0   Úviar/   zpost-up route addzpre-down route delÚgwz || truer)   Únetworkz0.0.0.0r$   z
 route addz
 route delz defaultz::r(   z -family inet6 route addz -family inet6 route delz -A inet6 defaultr*   z -family inet6z	 -A inet6z -hostz -netr'   )rä   r0   r/   )r
   Úwhichr   r;   r>   )rÚ   rÞ   rß   r@   Ú
use_ip_cmdÚupÚdownÚmappingÚor_trueÚ
default_gwÚ
route_lineÚks   &&&         r   Ú_render_routeÚRenderer._render_routeÑ  s  € ð ˆÜ�:Š:�d×ÒØ‰JàˆJçØ˜,Õ&ˆBØ˜MÕ)ˆDà˜5Ø˜(ð‰Gð
 Ð-Õ-ˆBØÐ0Õ0ˆDà˜4Ø˜(ðˆGð ˆàˆ
Ø�Õ˜yÔ(¨U°9Õ-=ÀÔ-JßØ�lÕ"�Ø˜Õ$�Ø#‰JØ�9Õ Ô%¨%°­/¸QÔ*>ßØÐ0Õ0�ØÐ2Õ2�Ø'‘
à0�
àˆ
Ü1ˆAß˜a 9œnÙØ�IŒ~ØªJ¸¿
¸
ÀEÇHÐMÕM’
Ø–Ø˜	”>ß!Ü*¨5­8×4Ò4ØÐ"2Õ2˜BØ Ð$4Õ4˜DØ˜lÕ*˜Ø Õ,™ä*¨5­8×4Ò4Ø&¨+Õ5™JØ"ŸY™Y xÓ0°BÔ6Ø&¨(Õ2™Jà&¨'Õ1˜Jà 5Ô(Ù"°%·(°(¸EÀ(¿OÐ&LÕL›
ò )ñ ¨g¯j¨j¸%¿(Ð"CÕC“Jñ1 2ð2 	�‰�r•¨Õ0Ô1Ø�‰�tÕ(¨7Õ2Ô3Øˆr!   c                óL   <€ V ^8„  d   QhRS[ RS[RS[S[S[,          ,          /# rg   r   )r   rÔ   s   "€r   r    rÕ   "  s2   ø€ ÷ Bñ BÙðBÙ-1ðBá	‰d‘3�i�ñBr!   c           	     óÌ  a€ \         P                  ! V4      p\        \        4      ;_uu_ 4        VP	                  R 4       RRR4       . pVP                  R/ 4      pVP	                  RR4      pVP	                  RR4      pV'       d   RVR&   V'       Ed5   Rp. p\        V4       EF‚  w  p	oRp
W‘R&   SR,          VR	&   SP                  R
R4      VR
&   Rp\        S4      '       d   RpVR,          pMRpSP                  R4      p
W±R&   SR,          R8X  g   SR,          R8X  g   SR,          R8X  d   RVR	&   Ve   V'       d   RMRVR&   M[SR,          R8X  d   RVR	&   RVR&   MBSR,          R8X  d   RVR	&   RVR&   M)\        S4      '       d   RVR	&   Ve   V'       d   RMRVR&   RV Uu. uF  pRVR,          ,          V9   NK  	  up9   d   RVR
&   RS9   ;'       g    RS9   pVf   V'       d   \        V3R  lR- 4       4      pVe   V'       g   / SCVCo\        \        WVR!7      \        VSV4      ,           \        WV
4      ,           4      pSP                  R". 4       Fc  p\        VP                  R#R$4      4      pV'       d   V'       g   VP                  V4       KA  VP                  V P!                  VR%R&7      4       Ke  	  V'       dD   V'       d<   V F%  pVP                  V P!                  VR%R&7      4       K'  	  VP#                  4        VP                  V4       EK…  	  V'       d•   RVR,          R
VR
,          R	RRR'/pRRR"V/oVe   / SCVCo\        \        VR.VR!7      \        VSR4      ,           4      pSR",           F%  pVP                  V P!                  VR%R&7      4       K'  	  VP                  V4       V# . pR(V9   g   R)V9   d"   VP                  R*P$                  ! R// VB 4       VP                  R+P$                  ! R// VB 4       VP                  \        V^ RR,7      4       VP                  V4       V#   + '       g   i     EL; iu upi )0Ú	config_idNrV   z	accept-raÚ	wakeonlanÚgzethernet-wolrF   rK   rU   rP   rj   rT   TÚ6Fr2   Údhcp4Údhcp6zipv6_dhcpv6-statefulÚdhcpÚ1Ú0Ú	accept_razipv6_dhcpv6-statelessÚ
ipv6_slaacrÁ   zauto %srJ   Úaliasr%   r&   c              3   óJ   <"  € T F  pVSP                  V4      3x € K  	  R # 5irÐ   )r;   )Ú.0rí   r   s   & €r   Ú	<genexpr>Ú)Renderer._render_iface.<locals>.<genexpr>i  s%   øé € ð á!B˜Að ˜FŸJ™J q›MÕ*Û!Bùs   ƒ #©rh   Úroutesrä   r)   z    )rß   Úinet6zbond-masterzbond-slaveszauto {name}ziface {name} {inet} {mode})rF   rG   )r%   r&   éÿÿÿÿrn   )ro   Údeepcopyr   ÚKeyErrorÚpopr;   Ú	enumerater   r   r6   rs   rD   re   r   r>   Úextendrî   Úclearr   )rÚ   r   rh   ÚsectionsrV   rû   Úethernet_wolrR   Úroutes6rF   rG   Úsubnet_inetr   r£   Údns_presentrr   rÞ   Úipv6_networkr   s   &&&               @r   Ú_render_ifaceÚRenderer._render_iface"  s[  ø€ ô —’˜eÓ$ˆô ”h×ÕØ�I‰I�kÔ"÷  à$&ˆØ—)‘)˜I rÓ*ˆØ—I‘I˜k¨4Ó0ˆ	Ø—y‘y ¨dÓ3ˆßà$'ˆE�.Ñ!ßˆ7ØˆCØˆGÜ!*¨7×!3‘��vØ"&�Ø!&�g‘Ø & v¥��f‘Ø#)§:¡:¨i¸Ó#@��iÑ Ø$�Ü! &×)Ò)Ø"�GØ 3Õ&‘Kà#�GØ&,§j¡j°Ó&7�OØ +�f‘à˜6•N gÔ-Ø˜f•~¨Ô0Ø˜f•~Ð)?Ô?ð %+�E˜&‘MØ Ò,ç4=©SÀ3˜˜kÑ*øØ˜F•^Ð'>Ô>à$*�E˜&‘Mà$'�E˜&’MØ˜F•^ |Ô3à$*�E˜&‘Mà$'�E˜&’MÜ# F×+Ò+à$,�E˜&‘MØ Ò,ç4=©SÀ3˜˜kÑ*ð ÙDLóÙDL¸D�I  v¥Õ/°4Ô7ÁHñô ð (/�E˜)Ñ$ð
 ! FÑ*×IÐIÐ.?À6Ñ.Ið ð ’;§;Üô á!Bóó �Cð ’?¯;Ø. Ð.¨#Ð.�FäÜ&ØÐ7Gôô (¨¨v°wÓ?õ@ô ' u°_ÓEõ	Fó�ð $ŸZ™Z¨°"Ö5�EÜ#2°5·9±9¸YÈÓ3KÓ#L�Lß#¯GØŸ™ uÔ-Ù Ø—L‘L ×!3Ñ!3°EÀ&Ð!3Ó!IÖJñ 6÷ ŸwÛ!(˜ØŸ™ T×%7Ñ%7¸ÀfÐ%7Ó%MÖNñ ")à—M‘M”Oà—‘ ×&ñ_ "4÷b ð ˜E &�MØ˜u YÕ/Ø˜HØ˜Gð	�ð ! (¨H°gÐ>�Ø’?Ø. Ð.¨#Ð.�FÜÜ&Ø˜rÐ4Dôô (¨¨v°tÓ<õ=ó�ð $ H×-Ð-�EØ—L‘L ×!3Ñ!3°EÀ&Ð!3Ó!IÖJñ .à—‘ Ô&ð ˆð ˆEØ Ô%¨¸%Ô)?Ø—‘˜]×1Ò1Ñ:°EÑ:Ô;Ø�L‰LÐ5×<Ò<ÑE¸uÑEÔFØ�L‰LÜ  ¨aÀÔFôð �O‰O˜EÔ"Øˆ÷y  ×Ðüòls   ¯QÆ-Q!ÑQ	c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   Únetwork_staterh   r   )r   r   r   )r   rÔ   s   "€r   r    rÕ   ¦  s*   ø€ ÷ 4Dñ 4DÙ)ð4DÙ=Að4Dá	ñ4Dr!   c                óH  a
€ RRRRRRRRRRR	/./pVP                  4        F1  pVP                  R4      R8X  g   K  \        P                  ! V4      pK3  	  VP                  pV'       d   WSR,          ^ ,          R
&   VP
                  pV'       d   WcR,          ^ ,          R&   R^ R^R^R^R^R^/o
. pVP                  V P                  V4      4       \        VP                  4       V
3R lR7       F<  pVP                  R4      R8X  d   K  VP                  V P                  WBR7      4       K>  	  VP                  4        F#  pVP                  V P                  V4      4       K%  	  RP                  V U	u. uF  p	RP                  V	4      NK  	  up	4      R,           # u up	i )z1Given state, emit etc/network/interfaces content.rJ   r¼   rK   r¾   rT   rV   r½   rP   rj   r&   r%   r\   rZ   r[   r]   c                 ó6   <€ SV R ,          ,          V R,          3# )rK   rJ   rn   )rí   Úorders   &€r   Ú<lambda>Ú-Renderer._render_interfaces.<locals>.<lambda>Î  s   ø€ ˜5  6¥Õ+¨Q¨v­YÑ7r!   )rB   r  z

Ú
)Úiter_interfacesr;   ro   r  r&   Údns_searchdomainsr
  r  r?   Úiter_routesr>   rî   r<   )rÚ   r  rh   r¼   r   r„   Úsearchdomainsr  rÞ   Úsr  s   &&&       @r   Ú_render_interfacesÚRenderer._render_interfaces¦  s“  ø€ ð �DØ�JØ�FØ˜ ¨Y¸Ð?Ð@ð	
ˆð #×2Ñ2Ö4ˆEØ�y‰y˜Ó  DÖ(Ü—]’] 5Ó)’ñ 5ð $×3Ñ3ˆßØ2=ˆy�M˜!ÕÐ.Ñ/à%×7Ñ7ˆßØ-:ˆy�M˜!Õ˜\Ñ*ð
 ˜Ø˜Ø˜!Ø�AØ�aØ�Að
ˆð ˆØ�‰˜×*Ñ*¨2Ó.Ô/ÜØ×)Ñ)Ó+Ü7÷
ˆEð
 �y‰y˜Ó  DÔ(ÙØ�O‰OØ×"Ñ" 5Ð"ÓLöñ
ð #×.Ñ.Ö0ˆEØ�O‰O˜D×.Ñ.¨uÓ5Ö6ñ 1ð �{‰{±(Ó;±(¨Q˜DŸI™I ažL±(Ñ;Ó<¸tÕCÐCùÒ;s   Å7Fc                óP   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          RR/# )r   r  Ú	templatesÚtargetr   N)r   r   r   r   )r   rÔ   s   "€r   r    rÕ   Ü  s;   ø€ ÷ ñ á#ðñ ™D•>ðñ ™•ð	ð
 
ñr!   c                ób  € \         P                  ! W0P                  4      p\        P                  ! \
        P                  P                  V4      4       V P                  '       d   V P                  MR p\        P                  ! WEV P                  V4      ,           4       V P                  '       d~   \         P                  ! W0P                  4      p\        P                  ! \
        P                  P                  V4      4       \        P                  ! VV P                  V4      RR7       R# R# )r)   T)r@   Úpreserve_modeN)r
   Útarget_pathr×   r   Ú
ensure_dirr�   r‘   rš   rØ   Ú
write_filer!  rÙ   Ú_render_persistent_net)rÚ   r  r$  r%  ÚfpeniÚheaderÚnetruless   &&&&   r   Úrender_network_stateÚRenderer.render_network_stateÜ  sÀ   € ô × Ò  ¯©Ó7ˆÜ�ŠœŸ™Ÿ™¨Ó.Ô/Ø$(§O§O O�—’¸ˆÜ�Š˜¨×(?Ñ(?ÀÓ(NÕNÔOà××ÐÜ×'Ò'¨×0BÑ0BÓCˆHÜ�OŠOœBŸG™GŸO™O¨HÓ5Ô6Ü�OŠOØØ×3Ñ3°MÓBØ"÷ñ r!   )rØ   r×   rÙ   rÐ   )r)   ©F)NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rÛ   rî   r  r!  r/  Ú__static_attributes__Ú__classdictcell__)rÔ   s   @r   rÒ   rÒ   Å  sH   ø‡ € ÙJ÷
ò 
÷Oò O÷bBò B÷H4Dò 4D÷l÷ ð r!   rÒ   c                ó$   € V ^8„  d   QhR\         /# )r   r   )r   )r   s   "r   r    r    ñ  s   € ÷ 
ñ 
”4ñ 
r!   c                  óº   € . ROp RR.pV  F#  p\         P                  ! W!R7      '       d   K"   R# 	  Rp\        P                  P	                  V4      '       g   R# R# )Úifqueryz/sbinz	/usr/sbin)rƒ   Fz/etc/network/interfacesT)r;  ÚifupÚifdown)r
   rå   r�   r‘   r”   )Úexpectedrƒ   ÚpÚenis       r   Ú	availablerA  ñ  sM   € Ú,€HØ�{Ð#€FÛˆÜ�zŠz˜!×+Õ+Úñ ð $€CÜ�7‰7�>‰>˜#×ÒÙár!   )zpre-uprç   zpost-uprè   zpre-downz	post-down)Úbridge_ageingÚbridge_bridgeprioÚ	bridge_fdÚbridge_gcinitÚbridge_helloÚbridge_maxageÚbridge_maxwaitÚ
bridge_stp)r#   r$   r.   rä   r/   r0   ÚpointtopointÚmediar2   ÚhostnameÚ
leasehoursÚ	leasetimeÚvendorÚclientÚbootfiler°   ÚhwaddrÚproviderÚframeÚnetnumÚendpointÚlocalÚttlr1  ),ro   r8   r’   Úloggingr�   r•   Ú
contextlibr   Útypingr   r   r   r   r   Ú	cloudinitr	   r
   r   Úcloudinit.netr   r   r   r   r   r   r   Úcloudinit.net.network_stater   Ú	getLoggerr2  r^   rž   rŸ   r�   rD   re   rs   r™   Útimedr¸   r·   r:   rÒ   rA  rn   r!   r   Ú<module>ra     sÄ   ðó Û Û Û Û 	Û 	Ý ß 5Õ 5ç -Ñ -÷÷ ñ õ 5à×Ò˜Ó!€òÐ ò	Ð òÐ õ8^õD?÷Dõ4C*ðL ×ÒÐ(Ó)ô.ó *ð.õ&EõRHôiˆx× Ñ ô i÷X	
r!   