+
    ‰4i  ã                   óh   € R t ^ RItR t]! 4       tR tR tR tRR ltRR lt	RR lt
R	 tR
 tR tR# )z)
Shared logic for various address types.
Nc                 óä   € . p \        ^RR4      p\        R4       FQ  p^R.,          pV F  pRV^,          ,          W4&   V^,          pK   	  V P                  RP                  V4      4       KS  	  V # )z„
:return: A 256 element list containing 8-bit binary digit strings. The
    list index value is equivalent to its bit string value.
é   NÚ01Ú éÿÿÿÿ)ÚrangeÚappendÚjoin)ÚlookupÚbits_per_byteÚnumÚbitsÚis        Ú;/usr/lib/python3/dist-packages/netaddr/strategy/__init__.pyÚbytes_to_bitsr      so   € ð
 €FÜ˜!˜R Ó$€MÜ�SŽzˆØ�D�6�zˆÛˆAØ˜3 �7•mˆD‰GØ�A�IŠCñ ð 	�‰�b—g‘g˜d“mÖ$ñ ð €Mó    c                ó²   € \        V R4      '       g   R# \        V 4      V8w  d   R# ^V,          ^,
          pV  F  p^ Tu;8:  d   V8:  d   K    R#   R# 	  R# )a  
:param words: A sequence of unsigned integer word values.

:param word_size: Width (in bits) of each unsigned integer word value.

:param num_words: Number of unsigned integer words expected.

:return: ``True`` if word sequence is valid for this address type,
    ``False`` otherwise.
Ú__iter__FT)ÚhasattrÚlen)ÚwordsÚ	word_sizeÚ	num_wordsÚmax_wordr   s   &&&  r   Úvalid_wordsr       sX   € ô �5˜*×%Ò%Ùä
ˆ5ƒz�YÔÙà�)�|˜aÕ€HãˆØ�AÖ!˜×!Úð "Úñ ñ r   c                óJ  € ^W!,          ,          ^,
          p^ T u;8:  d   V8:  g   M \        R\        V 4      ,          4      h^V,          ^,
          p. p\        V4       F-  pW,          pVP                  \	        V4      4       W,          p K/  	  \        \        V4      4      # )a2  
:param int_val: Unsigned integer to be divided into words of equal size.

:param word_size: Width (in bits) of each unsigned integer word value.

:param num_words: Number of unsigned integer words expected.

:return: A tuple contain unsigned integer word values split according
    to provided arguments.
zinteger out of bounds: %r!)Ú
IndexErrorÚhexr   r   ÚintÚtupleÚreversed)Úint_valr   r   Úmax_intr   r   Ú_Úwords   &&&     r   Úint_to_wordsr%   :   s‹   € ð �IÕ)Õ*¨QÕ.€Gà�Ö"˜7Ö"ÜÐ5¼¸G»ÕDÓEÐEà�)�|˜aÕ€Hà€EÜ�9ÖˆØÕ!ˆØ�‰”S˜“YÔØÕŠñ ô
 ”˜%“Ó!Ð!r   c                óº   € \        WV4      '       g   \        RV : R24      h^ p\        \        V 4      4       F  w  rETpWaV,          ,          pW6,          pK   	  V# )a  
:param words: A sequence of unsigned integer word values.

:param word_size: Width (in bits) of each unsigned integer word value.

:param num_words: Number of unsigned integer words expected.

:return: An unsigned integer that is equivalent to value represented
    by word sequence.
zinvalid integer word sequence: Ú!)r   Ú
ValueErrorÚ	enumerater    )r   r   r   r!   r   r   r$   s   &&&    r   Úwords_to_intr*   U   sX   € ô �u¨×3Ò3ÝÃÐHÓIÐIà€GÜœH U›OÖ,‰ˆØˆØ 1•}Õ$ˆØ•.Šñ -ð
 €Nr   c                ó  € \        V \        4      '       g   R# VR8w  d   V P                  VR4      p \        V 4      V8w  d   R# ^V,          ^,
          p ^ \	        V ^4      u;8:  d
   V8:  d    R#  R#  R#   \
         d     R# i ; i)aP  
:param bits: A network address in a delimited binary string format.

:param width: Maximum width (in bits) of a network address (excluding
    delimiters).

:param word_sep: (optional) character or string used to delimit word
    groups (default: '', no separator).

:return: ``True`` if network address is valid, ``False`` otherwise.
Fr   T)Ú
isinstanceÚstrÚreplacer   r   r(   )r   ÚwidthÚword_sepr"   s   &&& r   Ú
valid_bitsr1   l   s�   € ô �dœC× Ò Ùà�2„~Ø�|‰|˜H bÓ)ˆä
ˆ4ƒy�EÔÙà��h˜�l€GðØ”�D˜!“Ö' Õ'Ùð (ñ
 ð (ñ
 øô ô Øáðús   ÁA7 Á1A7 Á7BÂBc                ó�   € \        WV4      '       g   \        RV : R24      hVR8w  d   V P                  VR4      p \        V ^4      # )a�  
:param bits: A network address in a delimited binary string format.

:param width: Maximum width (in bits) of a network address (excluding
    delimiters).

:param word_sep: (optional) character or string used to delimit word
    groups (default: '', no separator).

:return: An unsigned integer that is equivalent to value represented
    by network address in readable binary form.
z invalid readable binary string: r'   r   )r1   r(   r.   r   )r   r/   r0   s   &&&r   Úbits_to_intr3   Œ   sB   € ô �d 8×,Ò,ÝÃ$ÐHÓIÐIà�2„~Ø�|‰|˜H bÓ)ˆäˆt�Q‹<Ðr   c                óÆ  € . p\        WV4       F’  p. pV'       d/   VP                  \        V^ÿ,          ,          4       V^,          pK6  VP                  4        RP	                  V4      ;'       g
    RV,          pRV,          V,           V) R pVP                  V4       K”  	  VR8w  d'   \        V\        4      '       g   \        RV: R24      hVP	                  V4      # )a�  
:param int_val: An unsigned integer.

:param word_size: Width (in bits) of each unsigned integer word value.

:param num_words: Number of unsigned integer words expected.

:param word_sep: (optional) character or string used to delimit word
    groups (default: '', no separator).

:return: A network address in a delimited binary string format that is
    equivalent in value to unsigned integer.
r   Ú0Nz word separator is not a string: r'   )r%   r   ÚBYTES_TO_BITSÚreverser	   r,   r-   r(   )r!   r   r   r0   Ú	bit_wordsr$   r   Úbit_strs   &&&&    r   Úint_to_bitsr:   ¢   sº   € ð €Iä˜W°Ö;ˆØˆßØ�K‰Kœ d¨S¥jÕ1Ô2Ø�Q�JŠDØ�‰ŒØ—'‘'˜$“-×2Ð2 3¨¥?ˆØ�i• 'Õ)¨I¨:¨;Ð7ˆØ×Ñ˜Öñ <ð �2„~ä˜(¤C×(Ò(ÝÃhÐPÓQÐQà�=‰=˜Ó#Ð#r   c                ó6  € \        V \        4      '       g   R# V P                  R4      '       g   R# V P                  RR4      p \	        V 4      V8”  d   R# ^V,          ^,
          p ^ \        V ^4      u;8:  d
   V8:  d    R#  R#  R#   \         d     R# i ; i)zø
:param bin_val: A network address in Python's binary representation format
    ('0bxxx').

:param width: Maximum width (in bits) of a network address (excluding
    delimiters).

:return: ``True`` if network address is valid, ``False`` otherwise.
FÚ0br   T)r,   r-   Ú
startswithr.   r   r   r(   )Úbin_valr/   r"   s   && r   Ú	valid_binr?   Ä   sš   € ô �gœs×#Ò#Ùà×Ñ˜d×#Ò#Ùà�o‰o˜d BÓ'€Gä
ˆ7ƒ|�eÔÙà��h˜�l€GðØ”�G˜Q“Ö* 7Õ*Ùð +ñ
 ð +ñ
 øô ô Øáðús   Á'B	 ÂB	 Â	BÂBc           	     ó€  € . p \        V 4      p\        VR,          4      V8”  d   \        RV: R24      hV#   \         d{    T pT^ 8”  d1   T^ÿ,          pTP                  \        T,          4       T^,          pK7  TP	                  4        R\
        P                  ! RRRP                  T4      4      ,           p L­i ; i)zÆ
:param int_val: An unsigned integer.

:param width: Maximum allowed width (in bits) of a unsigned integer.

:return: Equivalent string value in Python's binary representation format
    ('0bxxx').
r<   z^[0]+([01]+)$z\1r   :é   NNzbinary string out of bounds: r'   )
ÚbinÚ	NameErrorr   r6   r7   Ú_reÚsubr	   r   r   )r!   r/   Ú
bin_tokensr>   r   r$   s   &&    r   Ú
int_to_binrG   ä   s¯   € ð €JðOä�g“,ˆô ˆ7�2�;Ó˜%ÔÝ»wÐHÓIÐIà€Nøô ô 	OàˆØ�!ŒeØ�t•8ˆDØ×Ñœm¨DÕ1Ô2Ø�!�GŠAà×ÑÔØœŸšÐ!1°5¸"¿'¹'À*Ó:MÓNÕNŠð	Oús   „8 ¸BB=Â<B=c                ó|   € \        W4      '       g   \        RV : R24      h\        V P                  RR4      ^4      # )a!  
:param bin_val: A string containing an unsigned integer in Python's binary
    representation format ('0bxxx').

:param width: Maximum allowed width (in bits) of a unsigned integer.

:return: An unsigned integer that is equivalent to value represented
    by Python binary string format.
z"not a valid Python binary string: r'   r<   r   )r?   r(   r   r.   )r>   r/   s   &&r   Ú
bin_to_intrI     s5   € ô �W×$Ò$ÝÃGÐMÓNÐNäˆw�‰˜t RÓ(¨!Ó,Ð,r   )r   )Ú__doc__ÚrerD   r   r6   r   r%   r*   r1   r3   r:   r?   rG   rI   © r   r   Ú<module>rM      sM   ðñó òñ" “€òò4"ò6ô.ô@ô,$òDò@ô>-r   