+
    4i              
       J   R t ^ RItRt ^ RIt]P                  '       g	   ]! R4      h]P                   ]P                   ^ RIHt
HtH	t	 Rt^ RIHt ^ RIHtHtHtHtHtHtHtHt H!t" ^t#^t$Rt%]	t&R	t'^t(^t)^]#,          ^,
          t*]#]$,          t+^]$,          ^,
          t,]-! ].! ^ ]#^,           4       U u. uF"  q ]*^]#V ,
          ,          ^,
          ,          3NK$  	  up 4      t/]-! ].! ^ ]#^,           4       U u. uF#  p ]*^]#V ,
          ,          ^,
          ,          V 3NK%  	  up 4      t0]-! ].! ^ ]#^,           4       U u. uF  q ^]#V ,
          ,          ^,
          3NK  	  up 4      t1]-! ].! ^ ]#^,           4       U u. uF  p ^]#V ,
          ,          ^,
          V 3NK  	  up 4      t2 ! R
 R]34      t4 ! R R]44      t5 ! R R]44      t6RR lt7RR lt8R R lt9R t:R t;R t<R tR!R ltR tR tR tR R ltR tR tR t!R#   ] d    ^ RIHt
HtH	t	  ELi ; iu up i u up i u up i u up i )"z
IPv6 address logic.
NFzIPv6 disabled)	inet_pton	inet_ntopAF_INET6T)AddrFormatError)	valid_wordsint_to_wordswords_to_int
valid_bitsbits_to_intint_to_bits	valid_bin
int_to_bin
bin_to_int:IPv6c                   "    ] tR t^XtRtRtRtRtR# )ipv6_compactz%An IPv6 dialect class - compact form.z%xT N__name__
__module____qualname____firstlineno____doc__word_fmtcompact__static_attributes__r       7/usr/lib/python3/dist-packages/netaddr/strategy/ipv6.pyr   r   X   s    / H Gr   r   c                       ] tR t^btRtRtRtR# )	ipv6_fullz*An IPv6 dialect class - 'all zeroes' form.Fr   N)r   r   r   r   r   r   r   r   r   r   r    r    b   s    4 Gr   r    c                   "    ] tR t^itRtRtRtRtR# )ipv6_verbosez5An IPv6 dialect class - extra wide 'all zeroes' form.z%.4xFr   Nr   r   r   r   r"   r"   i   s    ? H Gr   r"   c                    \        V \        4      '       g   \        R\        V 4      ,          4      h \	        \
        V 4       R#   \         d     R# i ; i)aq  
:param addr: An IPv6 address in presentation (string) format.

:param flags: decides which rules are applied to the interpretation of the
    addr value. Future use - currently has no effect.

:return: ``True`` if IPv6 address is valid, ``False`` otherwise.

.. versionchanged:: 1.0.0
    Returns ``False`` instead of raising :exc:`AddrFormatError` for empty strings.
zInvalid type: %sFT)
isinstancestr	TypeErrortype
_inet_ptonr   OSError)addrflagss   &&r   	valid_strr,   s   sN     dC  *T$Z7888T"   s   A AAc                v     \        \        V 4      p\	        T4      #   \         d    \        T : R24      hi ; i)z
:param addr: An IPv6 address in string form.

:param flags: decides which rules are applied to the interpretation of the
    addr value. Future use - currently has no effect.

:return: The equivalent unsigned integer for a given IPv6 address.
z$ is not a valid IPv6 address string!)r(   r   r)   r   packed_to_int)r*   r+   
packed_ints   && r   
str_to_intr0      sB    R$/
 $$  R$PQQRs    8c                r   Vf   \         pRp \        V 4      pVP                  '       d   \        \        V4      pV# \        \        P                  ! RV4      4      pV Uu. uF  qQP                  V,          NK  	  pp\        P                  V4      p V# u upi   \         d    \        T : R24      hi ; i)z
:param int_val: An unsigned integer.

:param dialect: (optional) a Python class defining formatting options.

:return: The IPv6 presentation (string) format address equivalent to the
    unsigned integer provided.
Nz>8Hz) is not a valid 128-bit unsigned integer!)r   int_to_packedr   
_inet_ntopr   list_structunpackr   word_sepjoin	Exception
ValueError)int_valdialectr*   r/   wordswordtokenss   &&     r   
int_to_strr@      s     DU"7+
???h
3D K z:;E:?@%$&&--%F@==(D K A U'STTUs"   -B $B !B<B B B6c                    \        V \        4      p\        VP                  RR4      4      pVP	                  4        V. RO,           pRP                  V4      # )z
:param int_val: An unsigned integer.

:return: The reverse DNS lookup for an IPv6 address in network byte
    order integer form.
r    .)ip6arparB   )r@   r"   r4   replacereverser8   )r;   r*   r?   s   &  r   int_to_arparH      sI     g|,D$,,sB'(F
NN))F88Fr   c                L    \        V ^^ 4      p\        P                  ! R.VO5!  # )z
:param int_val: the integer to be packed.

:return: a packed string that is equivalent to value represented by an
unsigned integer.
>4I)r   r5   pack)r;   r=   s   & r   r2   r2      s&     !R(E<<&&&r   c                    \        \        P                  ! RV 4      4      p^ p\        \	        V4      4       F  w  r4TpV^ V,          ,          pW%,          pK!  	  V# )z
:param packed_int: a packed string containing an unsigned integer.
    It is assumed that string is packed in network byte order.

:return: An unsigned integer equivalent to value of network address
    represented by packed binary string.
rJ   )r4   r5   r6   	enumeratereversed)r/   r=   r;   inumr>   s   &     r   r.   r.      sS     z23EGHUO,rAv~. -
 Nr   c                 ,    \        V \        \        4      # N)_valid_words	word_size	num_wordsr=   s   &r   r   r      s    y)44r   c                 n    Vf   \        4       R,          pVf   \        4       R,          p\        WV4      # )NrU   rT   )globals_int_to_words)r;   rU   rT   s   &&&r   r   r      s3    Ik*	Ik*	Y77r   c                 ,    \        V \        \        4      # rR   )_words_to_intrT   rU   rV   s   &r   r   r      s    	955r   c                 ,    \        V \        \        4      # rR   )_valid_bitswidthr7   bitss   &r   r	   r	      s    tUH--r   c                 ,    \        V \        \        4      # rR   )_bits_to_intr^   r7   r_   s   &r   r
   r
      s    eX..r   c                 X    Vf   \        4       R,          p\        V \        \        V4      # )Nr7   )rX   _int_to_bitsrT   rU   )r;   r7   s   &&r   r   r      s%    9Z(Ix@@r   c                 "    \        V \        4      # rR   )
_valid_binr^   bin_vals   &r   r   r     s    gu%%r   c                 "    \        V \        4      # rR   )_int_to_binr^   )r;   s   &r   r   r         w&&r   c                 "    \        V \        4      # rR   )_bin_to_intr^   rg   s   &r   r   r   	  rk   r   )    rR   )NN)=r   structr5   OPT_IMPORTSsocket_sockethas_ipv6r9   r   r   r(   r   r3   netaddr.fbsocketnetaddr.corer   netaddr.strategyr   rS   r   rY   r   r[   r	   r]   r
   rb   r   rd   r   rf   r   rj   r   rm   r^   rT   r7   familyfamily_nameversion	word_basemax_intrU   max_worddictrangeprefix_to_netmasknetmask_to_prefixprefix_to_hostmaskhostmask_to_prefixobjectr   r    r"   r,   r0   r@   rH   r2   r.   )rO   s   0r   <module>r      sc   \ ((RRK )
 
 
 	 	  
   	 U(Q, Y	 i<! qRWZ[R[I\]I\Aguqy)9A)=>?I\]^  qRWZ[R[I\]I\A7aEAI&6&:;Q?I\]^  aQR@ST@S1eai 01 46@STU  aQR@ST@S1Q519-1A6@STU 6  < *% <'&586./A&''a  \[[\^ ^ ^ U Us.   G9 ,G9 3(H6)H:!H6"H 9HH