+
    4iG<                     &   ^ RI t ^ RIt^ RIt^ RIt^ RIHtHtHtHtH	t	H
t
HtHt R t]P                  P                  R;R]! R4      ]! R4      ]! R4      R]! R4      ]! R4      ^3R]! R	4      ]! R	4      ]! R4      ]! R
4      ]! R4      ]! R4      R3R]! R4      ]! R4      ]! R4      ]! R4      ]! R4      ]! R4      R3.4      R 4       tR tR t]P                  P                  . R<O. R=O. R>O. R?O. R@O. RAO. RBO. RCO. RDO. REO.	4      R 4       tR tR tR tR tR tR tR  tR! tR" tR# tR$ tR% tR& t R' t!]P                  P                  R(. RFO4      R) 4       t"R* t#R+ t$R, t%R- t&R. t'R/ t(R0 t)R1 t*R2 t+R3 t,R4 t-R5 t.R6 t/R7 t0R8 t1R9 t2R: t3R# )G    N)	IPAddress	IPNetwork	INET_ATON	INET_PTONspanning_cidrAddrFormatErrorZEROFILLNOHOSTc                     \        R 4      p V P                  ^8X  g   Q h\        V 4      R8X  g   Q h\        V 4      R 8X  g   Q hV P	                  4       R 8X  g   Q h\        V 4      R8X  g   Q h\        V 4      R8X  g   Q h\        V 4      R8X  g   Q hV P                  R8X  g   Q hV P                  4       R8X  g   Q hV P                  R8X  g   Q hR# )		192.0.2.1zIPAddress('192.0.2.1')      
0xc0000201s    "0b11000000000000000000001000000001z#11000000.00000000.00000010.00000001N)   r         )r   versionreprstrformatinthexbytesbinbitswordsips    =/usr/lib/python3/dist-packages/netaddr/tests/ip/test_ip_v4.pytest_ipaddress_v4r       s    	;	B::??8////r7k!!!99;+%%%r7j   r7l"""9++++669999779====88~%%%    r   z192.0.2.1/32255.255.255.2550.0.0.0192.0.2.0/24	192.0.2.0192.0.2.255255.255.255.0z	0.0.0.255   z192.0.3.112/22z192.0.3.112	192.0.0.0z192.0.0.0/22z192.0.3.255z255.255.252.0z	0.0.3.255i   c                 &   \        V 4      pVP                  V8X  g   Q hVP                  V8X  g   Q hVP                  V8X  g   Q hVP                  V8X  g   Q hVP
                  V8X  g   Q hVP                  V8X  g   Q hVP                  V8X  g   Q hR # )N)r   r   networkcidr	broadcastnetmaskhostmasksize)	valueipaddrr+   r,   r-   r.   r/   r0   nets	   &&&&&&&& r   test_ipnetwork_v4r4   !   s    H E
C66V;;'!!!88t==I%%%;;'!!!<<8###88tr!   c                  ,   \        R 4      p \        V 4      ^8X  g   Q h\        V 4      p\        V4      ^8X  g   Q hV\        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      .8X  g   Q hR	# )
192.0.2.16/29
192.0.2.16
192.0.2.17z
192.0.2.18z
192.0.2.19z
192.0.2.20z
192.0.2.21z
192.0.2.22
192.0.2.23N)r   lenlistr   )r   ip_lists     r   !test_ipnetwork_list_operations_v4r=   O   s    	?	#Br7a<<2hGw<1,,,,,,,,	 	 	 	r!   c                      \        R 4      p V ^ ,          \        R4      8X  g   Q hV ^,          \        R4      8X  g   Q hV R,          \        R4      8X  g   Q hR# )r6   r7   r8   r9   N)r   r   r   s    r   "test_ipnetwork_index_operations_v4r@   b   sQ    	?	#Ba5Il++++a5Il++++b6Y|,,,,r!   c                     \        R 4      pW0W1,          p\        V\        P                  4      '       g   Q h\	        V4      \	        V4      WV1,          8X  g   Q hR# )r6   N)r   
isinstancetypesGeneratorTyper;   )startstopstepr   results   &&&  r   "test_ipnetwork_slice_operations_v4rI   i   sR     
?	#Bd Ffe112222<48EtO4444r!   c                     \        \        R 4      4      p \        P                  ! V 4       \	        V 4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R	4      \        R
4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      .8X  g   Q hR# )192.0.2.128/28z192.0.2.128z192.0.2.129192.0.2.130z192.0.2.131z192.0.2.132z192.0.2.133z192.0.2.134z192.0.2.135z192.0.2.136z192.0.2.137z192.0.2.138z192.0.2.139z192.0.2.140z192.0.2.141z192.0.2.142z192.0.2.143N)r;   r   randomshufflesortedr   r<   s    r   test_ipnetwork_sort_orderrQ   ~   s    9-./G
NN7'?- - - - - - - - - - - - - - - - !   r!   c            
         \        R 4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      .p \        P                  ! V 4       V P	                  4        V \        R4      \        R4      \        R4      \        R 4      \        R4      \        R4      \        R4      .8X  g   Q hR# )rL   rK   z::z192.0.3.0/24r$   z	fe80::/6410.0.0.1N)r   r   rM   rN   sortrP   s    r   <test_ipaddress_and_ipnetwork_canonical_sort_order_by_versionrU      s    - "#$.!.!+*G NN7LLN*.!"#- .!$+   r!   c                  <    \        R 4      \        R4      8X  g   Q hR# )z192.168.0.15z192.168.0.15/32Nr    r!   r   test_ipnetwork_v4_constructorrY      s    ^$	2C(DDDDr!   c                  |   \        R 4      ^,           \        R4      8X  g   Q h^\        R 4      ,           \        R4      8X  g   Q h\        R4      ^,
          \        R 4      8X  g   Q h\        R4      \        R4      ,           \        R4      8X  g   Q h\        R4      \        R4      ,
          \        R4      8X  g   Q h\        P                  ! \        4      ;_uu_ 4        ^\        R4      ,
           RRR4       \        R4      p V ^,          p V \        R4      8X  g   Q hV ^,          p V \        R4      8X  g   Q hV \        R4      ,          p V \        R4      8X  g   Q hV \        R	4      ,          p V \        R
4      8X  g   Q h\        R4      p \        P                  ! \        4      ;_uu_ 4        V R,          p RRR4       \        R4      p \        P                  ! \        4      ;_uu_ 4        V R,          p RRR4       R#   + '       g   i     EL; i  + '       g   i     Le; i  + '       g   i     R# ; i)r%   r   r)   z0.0.0.42z
192.0.0.42NrS   10.0.0.2z	10.0.0.43z0.0.0.43z10.0.0.0r#   r"   r?   )r   pytestraises
IndexErrorr   s    r   $test_ipaddress_integer_operations_v4r_      s   [!A%;)????y%%;)????[!A%;)????[!Ij$99Y|=TTTT\"Yz%::i>TTTT	z	"	"	Ik"" 
# 
:	B!GB:&&&&!GB:&&&&)J
B;'''')J
B:&&&& 
9	B	z	"	"
b 
# 
$	%B	z	"	"
b 
#	"- 
#	"	"$ 
#	" 
#	"	"s$   H0
H/
H*H	H'	*H;	c                  ^   \        R 4      \        R4      ,          \        R4      8X  g   Q h\        R4      \        R4      ,          \        R4      8X  g   Q h\        R4      \        R4      ,          \        R4      8X  g   Q h\        R4      P                  R	P                  R
4      8X  g   Q hR# )z
192.0.2.15r'   r%   255.255.0.0z0.0.255.255r"   	255.0.0.0z	0.255.0.0z1.2.3.4zasciiN)r   packedencoderX   r!   r   #test_ipaddress_binary_operations_v4rf      s    \"Y%??9[CYYYY]#i&>>)L]B^^^^]#i&<<	+@VVVVY&&*<*C*CG*LLLLr!   c            	         \        \        R 4      P                  4       4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      .8X  g   Q h\        \        R4      4      \        R4      \        R	4      .8X  g   Q h\        \        R4      P                  4       4      \        R4      \        R	4      .8X  g   Q h\        \        R
4      P                  4       4      \        R4      .8X  g   Q hR# )z192.0.2.0/29r   z	192.0.2.2z	192.0.2.3z	192.0.2.4z	192.0.2.5z	192.0.2.6z192.168.0.0/31192.168.0.0z192.168.0.1z192.168.0.0/32N)r;   r   
iter_hostsr   rX   r!   r   test_iterhosts_v4rj      s    	.)4467++++++<    	*+,- - 1   
 	*+6689- - >    	*+6689i>V=WWWWr!   c                      \        \        R 4      4      '       d   Q h\        \        R4      4      '       g   Q h\        \        R4      4      '       g   Q hR# )r#   0.0.0.1r"   N)boolr   rX   r!   r   $test_ipaddress_boolean_evaluation_v4rn      sE    Ii())))	)$%%%%	+,----r!   c                  >    \        \        R 4      4      '       g   Q hR# )z	0.0.0.0/0N)rm   r   rX   r!   r   $test_ipnetwork_boolean_evaluation_v4rp      s    	+&''''r!   c                     \        R 4      \        R4      8X  g   Q h\        R4      \        R4      8X  g   Q h\        R4      \        R4      8X  g   Q h\        R4      \        R4      8w  g   Q h\        R4      \        R4      8w  g   Q hR# )z192.0.2.0/255.255.254.0192.0.2.0/23z192.0.2.65/255.255.254.0z192.0.2.65/23z192.0.2.65/255.255.255.0z192.0.2.65/24NrW   rX   r!   r   test_ipnetwork_equality_v4rs      s    ./9^3LLLL/0In4MMMM/0Io4NNNN/0In4MMMM/0Io4NNNNr!   c                  6   \        R 4      \        R4      R3\        R4      \        R4      R3\        R4      \        R4      R3\        R4      \        R4      R3\        R4      \        R4      R33 F$  w  rpW9   VJ g   Q h\        V 4      V9   VJ d   K$  Q h	  R# )r   r$   Tr&   rr   FN)r   r   r   )whatr+   rH   s      r   test_ip_network_membership_v4rv     s    	;	>!:DA	=	!9^#<dC	>	"In$=tD	>	"In$=tD	>	"In$=uE"v F***D	W$///"r!   c                      \        R 4      \        R 4      8X  g   Q h\        R 4      \        R 4      Jg   Q h\        R 4      \        R 4      8w  d   Q h\        R 4      \        R 4      J d   Q hR# )r$   NrW   rX   r!   r   test_ip_network_equality_v4rx     se    ^$	.(AAAA^$In,EEEE(In,EEEE(In,EEEEEr!   c                      \        ^4      \        R4      8X  g   Q h\        ^^4      \        R4      8X  g   Q h\        ^^4      \        R4      8X  g   Q h\        ^
4      \        R4      8X  g   Q hR# )r   rl   z::1z0.0.0.10Nr   rX   r!   r   %test_ipaddress_integer_constructor_v4r{     sb    Q<9Y////Q?i	2222Q?i....R=Ij1111r!   c                      \        R 4      \        R4      8X  g   Q h\        R^4      \        R4      8X  g   Q h\        R 4      \        R4      8X  g   Q h\        ^^,          ^,
          4      \        R4      8X  g   Q hR# )l    z::1:ffff:ffff    z::255.255.255.255z'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffffNrz   rX   r!   r   %test_ipaddress_integer_constructor_v6r~     sn    [!Y%????Z#y1D'EEEE[!Y%????QVaZ I.W$XXXXr!   c                     \        R \        R7      \        R4      8X  g   Q h\        R\        R7      \        R4      8X  g   Q h\        R\        R7      \        R4      8X  g   Q h\        R\        R7      \        R4      8X  g   Q h\        R\        R7      \        R4      8X  g   Q h\        R\        R7      \        R4      8X  g   Q h\        R\        R7      \        R4      8X  g   Q h\        R	\        R7      \        R4      8X  g   Q hR
# )z0x7f.0x1flagsz	127.0.0.1z0x7f.0x0.0x0.0x10177.01	0x7f.0.01127z	0.0.0.127z127.1z127.0.1N)r   r   rX   r!   r   'test_ipaddress_inet_aton_constructor_v4r   $  s    Zy1Y{5KKKK'y9Y{=SSSSYi0Ik4JJJJ[	2i6LLLL U),	+0FFFFU),	+0FFFFWI.)K2HHHHYi0Ik4JJJJr!   addressc                 8   \         P                  ! \        4      ;_uu_ 4        \        V \        R 7       RRR4       \         P                  ! \        4      ;_uu_ 4        \        V 4       RRR4       R#   + '       g   i     LH; i  + '       g   i     R# ; i)r   N)r\   r]   r   r   r   )r   s   &r   =test_ipaddress_inet_pton_constructor_v4_rejects_invalid_inputr   1  sX     
	'	''+ 
( 
	'	'' 
(	' 
(	' 
(	'	's   A5B5B	B	c                  H    \        R \        R7      \        R 4      8X  g   Q hR# )rS   r   N)r   r   rX   r!   r   ;test_ipaddress_inet_pton_constructor_v4_accepts_valid_inputr   G  s    Zy1Yz5JJJJr!   c                     \        R \        R7      \        R4      8X  g   Q h\        R \        \        ,          R7      \        R4      8X  g   Q h\        R\        \        ,          R7      \        R4      8X  g   Q h\        P                  ! \
        4      ;_uu_ 4        \        R\        R7      '       g   Q h RRR4       \        P                  ! \
        4      ;_uu_ 4        \        R\        \        ,          R7      '       g   Q h RRR4       \        R \        \        ,          R7      \        R4      8X  g   Q hR#   + '       g   i     L; i  + '       g   i     LQ; i)z010.000.000.001r   z8.0.0.1rS   z010.000.001N)r   r   r	   r\   r]   r   r   rX   r!   r   0test_ipaddress_constructor_zero_filled_octets_v4r   K  s    &i8Ii<PPPP&i(.BCyQ[G\\\\])h*>?9ZCXXXX		'	'h7777 
( 
	'	'i(.BCCCC 
( &i(.BCyQ[G\\\\ 
(	' 
(	's   D=!%E=E	E 	c                  8   \        R 4      \        R 4      8X  g   Q h\        R4      \        R 4      8X  g   Q h\        R4      \        R 4      8X  g   Q h\        \        R 4      4      \        R 4      8X  g   Q h\        \        R 4      4      \        R 4      8X  g   Q hR# )r$   z192.0.2.0/255.255.255.0z192.0.2.0/0.0.0.255NrW   rX   r!   r   test_ipnetwork_constructor_v4r   Y  s    ^$	.(AAAA./9^3LLLL*+y/HHHHY~./9^3LLLLY~./9^3LLLLr!   c                      \         P                  ! \        4      ;_uu_ 4        \        R 4       RRR4       R#   + '       g   i     R# ; i)fooNr\   r]   r   r   rX   r!   r   %test_ipnetwork_bad_string_constructorr   a  s(    		'	'% 
(	'	'	's	   9A
	c                  F   \         P                  ! \        4      ;_uu_ 4        \        R 4       RRR4       \        R RR7      \        R4      8X  g   Q h\        RRR7      \        R4      8X  g   Q h\        RRR7      \        R4      8X  g   Q hR#   + '       g   i     Li; i)	z10/8NT)expand_partialz
10.0.0.0/8z10.20/16z10.20.0.0/16z10.20.30/24z10.20.30.0/24r   rX   r!   r    test_ipnetwork_expand_partial_v4r   f  su    		'	'& 
(VD1Y|5LLLLZ5>9RRRR]48Io<VVVV	 
(	's   BB 	c                     \        R 4      P                  4       ^ 8X  g   Q h\        R4      P                  4       ^8X  g   Q h\        R4      P                  4       ^8X  g   Q h\        R4      P                  4       ^8X  g   Q h\        R4      P                  4       ^8X  g   Q h\        R4      P                  4       ^8X  g   Q h\        R4      P                  4       ^ 8X  g   Q h\        R4      P                  4       ^ 8X  g   Q hR# )	r#   z	128.0.0.0rb   ra   r'   z255.255.255.254r"   z1.1.1.1N)r   netmask_bitsrX   r!   r   test_ipaddress_netmask_v4r   n  s    Y,,.!333[!..0A555[!..0A555]#002b888_%224:::&'446"<<<&'446"<<<Y,,."444r!   c                  r    \        \        ^ 4      4      R8X  g   Q h\        \        R4      4      R8X  g   Q hR# )r   0x0r}   
0xffffffffN)r   r   rX   r!   r   test_ipaddress_hex_formatr   z  s1    y|%%%y$%555r!   c                  r    \        \        R 4      4      R8X  g   Q h\        \        ^ 4      4      R8X  g   Q hR# )r}   0o377777777770o0N)octr   rX   r!   r   test_ipaddress_oct_formatr     s1    y$%888y|%%%r!   c                     \        R 4      p V P                  P                  ^ ,          P                  R8X  g   Q hV P                  P                  ^ ,          P                  R8X  g   Q hV P                  P                  ^ ,          P
                  R8X  g   Q hV P                  P                  ^ ,          P                  R 8X  g   Q hR# )z224.0.1.173	Multicastz224/8ReservedN)r   infoIPv4designationprefixstatusr   r   r   s    r   test_multicast_infor     s    	=	!B77<<?&&+55577<<?!!W,,,77<<?!!Z///77Q''=888r!   c                  *   \        R 4      p V \        R4      8X  g   Q h\        P                  ! V 4      p\        P                  ! V4      pW 8X  g   Q h\	        V4      \	        V 4      8w  g   Q hVP
                  R 8X  g   Q hVP                  ^8X  g   Q hR# )r   r   N)r   pickledumpsloadsidr1   r   )r   bufip2s      r   test_ipaddress_pickling_v4r     s    	:	B;''''
,,r
C
,,s
C99c7bf99
""";;!r!   c                  P   \        R 4      p V \        R 4      8X  g   Q h\        P                  ! V 4      p\        P                  ! V4      pW 8X  g   Q h\	        V4      \	        V 4      8w  g   Q hVP
                  R8X  g   Q hVP                  ^8X  g   Q hVP                  ^8X  g   Q hR# )r$   l       N)r   r   r   r   r   r1   	prefixlenr   )r,   r   cidr2s      r   test_ipnetwork_pickling_v4r     s    ^$D9^,,,,
,,t
CLLE==e94   ;;*$$$??b   ==Ar!   c                      \        R 4      p . p\        ^4       F&  pVP                  \        V 4      4       V ^,          p K(  	  V. RO8X  g   Q hR# )192.0.2.0/28N)r   z192.0.2.16/28z192.0.2.32/28z192.0.2.48/28z192.0.2.64/28z192.0.2.80/28z192.0.2.96/28z192.0.2.112/28rK   z192.0.2.144/28z192.0.2.160/28z192.0.2.176/28z192.0.2.192/28z192.0.2.208/28z192.0.2.224/28z192.0.2.240/28)r   rangeappendr   )r   resultsis      r   "test_ipnetwork_incrementing_by_intr     sQ    	>	"BG2Ys2w
a      r!   c                     \        R 4      P                  \        R4      8X  g   Q h\        R 4      P                  e   Q h\	        \        R 4      P                  4       4      \        R4      \        R4      .8X  g   Q h\        R4      P                  \        R4      8X  g   Q h\        R4      P                  e   Q h\	        \        R4      P                  4       4      \        R4      .8X  g   Q hR# )z192.0.2.0/31r%   Nr   z192.0.2.0/32)r   r+   r   r-   r;   ri   rX   r!   r   test_rfc3021_subnetsr     s    ^$,,	+0FFFF^$..666	.)4467++<    ^$,,	+0FFFF^$..666	.)4467Ik<R;SSSSr!   c                      \        R 4      p V P                  ^8X  g   Q h^V n        V P                  ^8X  g   Q h\        R4      p V P                  ^8X  g   Q h^@V n        V P                  ^@8X  g   Q hR# )192.168.0.0/16dead:beef::/16N)r   r   r   s    r   test_ipnetwork_change_prefixlenr     sn    	#	$B<<2BL<<1	#	$B<<2BL<<2r!   c                      \        R 4      p RV n        V P                  ^8X  g   Q h\        R4      p RV n        V P                  ^@8X  g   Q hR# )r   rb   r   zffff:ffff:ffff:ffff::N)r   r.   r   r   s    r   test_ipnetwork_change_netmaskr     sJ    	#	$BBJ<<1	#	$B(BJ<<2r!   c                      \        R 4      \        R4      RR.p \        V 4      \        R4      8X  g   Q h\        \        V 4      4      \        R4      8X  g   Q hR# )rS   r[   z10.0.0.3z10.0.0.4z10.0.0.0/29N)r   r   r   reversed)	addressess    r   "test_spanning_cidr_handles_stringsr     sX     	**	I #y'????),-=1IIIIr!   c                  n    \        \        R 4      \        R7      P                  \        R4      8X  g   Q hR# )z192.168.0.1/24r   rh   N)r   r
   r   r   rX   r!   r   test_ipnetwork_nohostr     s)    Y/0?BBiP]F^^^^r!   )r1   r2   r+   r,   r-   r.   r/   r0   )rE   rF   rG   )NNr?   )r?   r   )r?   Nr?   )r?   N)r   N   )r   r?   N)r   r   N)r   Nr   )r   r   r   )	r   r   10z10.1z10.0.1z	010.0.0.1z	10.01.0.1z	10.0.00.1z	10.0.1.01)4r   rC   rM   r\   netaddrr   r   r   r   r   r   r	   r
   r    markparametrizer4   r=   r@   rI   rQ   rU   rY   r_   rf   rj   rn   rp   rs   rv   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   r!   r   <module>r      s+      	 	 	& V k"k"n%'(i 		
 k"k"n%m$o&k"		
 m$k"n%m$o&k"		
+"FG"F&- 
55.2EBMX,.(O	0F2Y
K 
K]M
W	56
&
9
6T	
J_r!   