403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Python315/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Python315/Lib/test/__pycache__/test_ipaddress.cpython-315.opt-1.pyc
R
>lqj�c�V�Qs]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PH s]QH$G
s
]QH,GsG
s
QQ\O2sQQ2sQQ\2sQ	Q
\2sQQ\\2sQ
Q\\2sQQ\2sQQ\\2sQQ\\2sQQ\2sQQ\\2sQQ\\2sQQ\2sQQ\O2sQQ \O2sQ!Q"\O2s\Q#6Xc\O@2P!P!)$zUnittest for ipaddress module.)�Iterator)�LARGEST�SMALLESTc�h`�\sQs]sn\Q2s\OQ2sQs	Qs
QsQsUs
P!)�BaseTestCasec��[g�N)�NotImplementedError��selfs&�(C:\Python315\\Lib\test\test_ipaddress.py�factory�BaseTestCase.factory&s��!�!�c'�& �U%c	V#*oUOV2oU9^tt^2oUw�PPP2WOOd(UOUOO2P!P!)%fhKQ9h3h)zc
Ensure exception does not display a context by default

Wraps unittest.TestCase.assertRaisesRegex
)�assertRaisesRegex�	exception�__context__�
assertTrue�__suppress_context__)r
�exc_type�details�args�cm�excs&&&*  r�assertCleanError�BaseTestCase.assertCleanError*sf�����n�G�
�
#�
#�H�
6��
�R�3��I���=�=�$�$�0��O�O�C�M�M�>�>�?�1��R�s,�	B�#B�A>�B�)B�>B	�B	�	Bc�L�UO[OU,UN3!)z Ensure a clean AddressValueError)r�	ipaddress�AddressValueError�r
rrs&&*r�assertAddressError�BaseTestCase.assertAddressError:�(���$�$�Y�%@�%@�%,�5�/3�5�	5rc�L�UO[OU,UN3!)z Ensure a clean NetmaskValueError)rr�NetmaskValueErrorrs&&*r�assertNetmaskError�BaseTestCase.assertNetmaskError?r"rc�h�UOUOU2UOU22P!)z8Check constructor arguments produce equivalent instances)�assertEqualr�r
�lhs�rhss&&&r�assertInstancesEqual�!BaseTestCase.assertInstancesEqualDs$��������c�*�D�L�L��,=�>r�)�__name__�
__module__�__qualname__�__firstlineno__�propertyr�
contextlib�contextmanagerrr r%r,�__static_attributes__�__classdictcell__��
__classdict__s@rrrsI����&�"��"����
@��
@�5�
5�
?�?rrc�:`�\sQs]IsnQsQsQsQsQsUs	P!)�CommonTestMixinc��UOQ29^tt^2UOP2PPP2P!)%fhP!9h)�Address cannot be empty�r rr	s&r�test_empty_address�"CommonTestMixin.test_empty_addressKs0��
�
$�
$�%>�
?�
?��L�L���@�
?�
?�
?�s�7�A	�A	c���UO[O[Q2229^tt^2UO	Q2PPP2P!)%fhP!9h)z1.0g�?)r �re�escape�reprrr	s&r�test_floats_rejected�$CommonTestMixin.test_floats_rejectedOs;��
�
$�
$�R�Y�Y�t�E�{�%;�
<�
<��L�L���=�
<�
<�
<���A�A%	�A%	c��UO[[OUO	]22UO[[
UO	]22UO[[UO	]22P!��)�assertRaises�	TypeError�operator�indexr�hex�bytesr	s&r�test_not_an_index_issue15559�,CommonTestMixin.test_not_an_index_issue15559SsV��	
���)�X�^�^�T�\�\�!�_�E����)�S�$�,�,�q�/�:����)�U�D�L�L��O�<rc
�^�[[O]*2FDroUOUQ59^tt^2UO	U2o[O
[OV222oUOVC2PPP2Jt	P!)%fhJ�9h)rJ)�proto)�range�pickle�HIGHEST_PROTOCOL�subTestr�loads�dumpsr()r
�addrrT�x�ys&&   r�pickle_test�CommonTestMixin.pickle_testZsr���6�2�2�Q�6�7�E����E��*�*��L�L��&���L�L����a�!7�8��� � ��&�+�*�8�*�*�*�s�A
B	�B,
�$B,
r.)
r/r0r1r2r?rErQr^r6r7r8s@rr;r;Is������=�'�'rr;c�F`�\sQs]bsnQsQsQsQsQsQs	Qs
UsP!)�CommonTestMixin_v4c�"�Qo,QNoSFDYoUOUQ59^tt^2UOU29^tt^2UOU2PPP2PPP2J[	P!)%fhK9h)%fhJ�9h)z(Leading zeros are not permitted in '\d+'��address)z000.000.000.000z192.168.000.001z016.016.016.016z001.000.008.016z	01.2.3.40z	1.02.3.40z	1.2.03.40z	1.2.3.040)rXr r)r
�msg�	addressesrds&   r�test_leading_zeros�%CommonTestMixin_v4.test_leading_zerosdsh��9��	
�	�!�G����g��.�.��,�,�S�1�1��L�L��)�2�/�.�!�1�1��/�.�.�s/�A=	�A*
�A=	�*A:�3A:�5A=	�=B
�B
c�P�UO]Q2UOQQ2P!)��0.0.0.0�P�192.168.0.1�r,r	s&r�test_int�CommonTestMixin_v4.test_intvs"���!�!�!�Y�/��!�!�*�m�<rc��UO[OQ2Q2UO[OQ2Q2P!)�00000000rk�c0a80001rm)r,rP�fromhexr	s&r�test_packed�CommonTestMixin_v4.test_packedzs4���!�!�%�-�-�
�";�Y�G��!�!�%�-�-�
�";�]�Krc���QoUO[OU229^tt^2UOP2PPP2P!)%fhP!9h)z,-1 (< 0) is not permitted as an IPv4 address�r rBrCr�r
res& r�test_negative_ints_rejected�.CommonTestMixin_v4.test_negative_ints_rejected~�;��<��
�
$�
$�R�Y�Y�s�^�
4�
4��L�L���5�
4�
4�
4���A
�
A	�A	c���QoUO[OUQ*229^tt^2UOQ2PPP2P!)%fhP!9h)z1%d (>= 2**32) is not permitted as an IPv4 addresslrxrys& r�test_large_ints_rejected�+CommonTestMixin_v4.test_large_ints_rejected�s@��A��
�
$�
$�R�Y�Y�s�U�{�%;�
<�
<��L�L���=�
<�
<�
<�rGc�6`�U1QkoU]2U]2P!)c��:�QU*oQoRO[OV!U1*229^tt^2ROU2PPP2P!)%fhP!9h)�z4%r (len %d != 4) is not permitted as an IPv4 addressrx��lengthr[rer
s&  �r�assertBadLength�BCommonTestMixin_v4.test_bad_packed_length.<locals>.assertBadLength�sN����6�>�D�H�C��(�(����3���3G�)H�I�I����T�"�J�I�I�I�s�A�A0	�(A0	r.�r
r�sf r�test_bad_packed_length�)CommonTestMixin_v4.test_bad_packed_length�s���	#�	�����rr.)r/r0r1r2rgrorurzrr�r6r7r8s@rrarabs)����*�$=�L��
 �
�rrac�R`�\sQs]�snQsQsQsQsQsQs	Qs
QsQ	sUs
P!)
�CommonTestMixin_v6c�P�UOQQ2UOQQ2P!)z
0000::0000�::z000::c0a8:0001�::c0a8:1rnr	s&rrg�%CommonTestMixin_v6.test_leading_zeros�s#���!�!�,��5��!�!�"2�J�?rc�P�UO]Q2UOQQ2P!)rjr�rlr�rnr	s&rro�CommonTestMixin_v6.test_int�s"���!�!�!�T�*��!�!�*�j�9rc��Q[OQ2*oUOUQ2Q[OQ2*oUOUQ2[OQ2Q*oUOUQ2P!)r�rrr�rsr�zc0a8:1::s)rPrtr,�r
r[s& rru�CommonTestMixin_v6.test_packed�sk���%�-�-�
�3�3���!�!�$��-��%�-�-�
�3�3���!�!�$�
�3��}�}�Z�(�8�3���!�!�$�
�3rc���QoUO[OU229^tt^2UOP2PPP2P!)%fhP!9h)z,-1 (< 0) is not permitted as an IPv6 addressrxrys& rrz�.CommonTestMixin_v6.test_negative_ints_rejected�r|r}c���QoUO[OU]]�**229^tt^2UO]]�*2PPP2P!)%fhP!9h)z2%d (>= 2**128) is not permitted as an IPv6 addressrxrys& rr�+CommonTestMixin_v6.test_large_ints_rejected�sH��B��
�
$�
$�R�Y�Y�s�Q��V�|�%<�
=�
=��L�L��C�� �>�
=�
=�
=�s�A"�"A3	�+A3	c�6`�U1QkoU]2U]2P!)c�:�QU*oQoRO[OV!U1*229^tt^2ROU2ROU2PPP2P!)%fhP!9h)r�z5%r (len %d != 16) is not permitted as an IPv6 addressrxr�s&  �rr��BCommonTestMixin_v6.test_bad_packed_length.<locals>.assertBadLength�sZ����6�>�D�I�C��(�(����3���3G�)H�I�I����T�"����T�"�J�I�I�I�s�#A0�0B	�9B	r.r�sf rr��)CommonTestMixin_v6.test_bad_packed_length�s���	#�	�����rc��QoUOQU29^tt^2UOU2PPP2P!)%fhP!9h)z::1%�Invalid IPv6 address: "%r"r>�r
rds& r�test_blank_scope_id�&CommonTestMixin_v6.test_blank_scope_id�s7����
�
$�
$�%A�7�
K�
K��L�L��!�L�
K�
K�
K���:�A	�A	c��QoUOQU29^tt^2UOU2PPP2P!)%fhP!9h)z
::1%scope%r�r>r�s& r�"test_invalid_scope_id_with_percent�5CommonTestMixin_v6.test_invalid_scope_id_with_percent�s7����
�
$�
$�%A�7�
K�
K��L�L��!�L�
K�
K�
K�r�r.)r/r0r1r2rgrorurzrr�r�r�r6r7r8s@rr�r��s3����@�:�4��
!�
	�"�
"�"rr�c�v`�\sQs]�sn\O
sQsQsQs	Qs
QsQsQs
QsQ	sQ
sQsUsP!)�AddressTestCase_v4c	��[OQ2o,QNoSFD vq4UOU[V22J"	P!)�1.2.3.42))�b� 00000001000000100000001100101010)�nr�)r\�0102032a)�X�0102032A)�_b�'0000_0001_0000_0010_0000_0011_0010_1010)�_nr�)�_x�	0102_032a)�_X�	0102_032A)�#b�"0b00000001000000100000001100101010)�#nr�)�#x�
0x0102032a)�#X�
0X0102032A)�#_b�)0b0000_0001_0000_0010_0000_0011_0010_1010)�#_nr�)�#_x�0x0102_032a)�#_X�0X0102_032A)�sr�)�r�)r�IPv4Addressr(�format)r
�v4�v4_pairs�fmt�txts&    r�test_format�AddressTestCase_v4.test_format�s;��
�
"�
"�:�
.��
��(#�J�S����S�&��/�2�#rc��QoUOQU29^tt^2[OU2PPP2P!)%fhP!9h)z127.0.0.1/24�Unexpected '/' in %r�r rr�r�s& r�test_network_passed_as_address�1AddressTestCase_v4.test_network_passed_as_address�s9����
�
$�
$�%;�T�
B�
B��!�!�$�'�C�
B�
B�
B���?�A	�A	c�`�U1QkoUQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ	2UQ
2UQ2UQ2UQ
2UQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2P!)c�:�ROQU29^tt^2[OU2PPP2P!)%fhP!9h)zExpected 4 octets in %rr��r[r
s&�r�assertBadSplit�AAddressTestCase_v4.test_bad_address_split.<locals>.assertBadSplit�s5����(�(�)B�D�I�I��%�%�d�+�J�I�I�I���>�A	�A	z127.0.1z42.42.42.42.42z42.42.42z42.42�42z42..42.42.42z42.42.42.42.z42.42.42.42...z.42.42.42.42z...42.42.42.42z016.016.016z016.016�016�000z0x0a.0x0a.0x0az	0x0a.0x0a�0x0a�.�bogusz	bogus.com�1000�1000000000000000z192.168.0.1.comr.�r
r�sf r�test_bad_address_split�)AddressTestCase_v4.test_bad_address_split�s����	,�	�y�!��'�(��z�"��w���t���~�&��~�&��'�(��~�&��'�(��}�%��y�!��u���u���'�(��{�#��v���s���w���{�#��v���)�*��(�)rc�6`�U1QkoUQ2UQ2P!)c�:�ROQU29^tt^2[OU2PPP2P!)%fhP!9h)zEmpty octet not permitted in %rr�r�s&�r�assertBadOctet�;AddressTestCase_v4.test_empty_octet.<locals>.assertBadOctets?����(�(�)J�)-�/�/��%�%�d�+�/�/�/�/�r�z	42..42.42z...r.�r
r�sf r�test_empty_octet�#AddressTestCase_v4.test_empty_octets���	,�
	�{�#��u�rc�`�U1QkoUQQ2UQQ2UQQ2UQQ2UQ	Q
2UQQ2UQ
Q2UQQ2UQQ2P!)c��:�QU8QU80oRO[OU229^tt^2[OU2PPP2P!)%fhP!9h)z!Only decimal digits permitted in � in �r rBrCrr��r[�octetrer
s&& �rr��BAddressTestCase_v4.test_invalid_characters.<locals>.assertBadOctetsC���AF��M�C��(�(����3��8�8��%�%�d�+�9�8�8�8���A�A,	�$A,	z0x0a.0x0a.0x0a.0x0ar�z0xa.0x0a.0x0a.0x0a�0xaz42.42.42.-0�-0z42.42.42.+0�+0z42.42.42.-42z-42z
+1.+2.+3.4�+1z	1.2.3.4e0�4e0�	1.2.3.4::z4::�1.a.2.3�ar.r�sf r�test_invalid_characters�*AddressTestCase_v4.test_invalid_characterssf���	,�
	�,�f�5��+�U�3��}�d�+��}�d�+��~�u�-��|�T�*��{�E�*��{�E�*��y�#�&rc�:`�U1QkoUQQ2UQQ2P!)c��:�QoRO[OV!U1*229^tt^2[OU2PPP2P!)%fhP!9h)z*At most 3 characters permitted in %r in %rr�r�s&& �rr��<AddressTestCase_v4.test_octet_length.<locals>.assertBadOctetsG���>�C��(�(����3���3F�)G�H�H��%�%�d�+�I�H�H�H�r�z0000.000.000.000�0000z12345.67899.-54321.-98765�12345r.r�sf r�test_octet_length�$AddressTestCase_v4.test_octet_lengths ���	,�
	�)�6�2��2�G�<rc�:`�U1QkoUQQ2UQQ2P!)c��:�QV1*oRO[OU229^tt^2[OU2PPP2P!)%fhP!9h)z$Octet %d (> 255) not permitted in %rr�r�s&& �rr��;AddressTestCase_v4.test_octet_limit.<locals>.assertBadOctet%sE���8�E�=�H�C��(�(����3��8�8��%�%�d�+�9�8�8�8�r�z	257.0.0.0�z
192.168.0.999��r.r�sf r�test_octet_limit�#AddressTestCase_v4.test_octet_limit$s���	,�
	�{�C�(����,rc�*�UOQ2P!��	192.0.2.1�r^r	s&r�test_pickle�AddressTestCase_v4.test_pickle-s������%rc�R�[OUOQ22P!r��weakref�refrr	s&r�test_weakref�AddressTestCase_v4.test_weakref0s�����D�L�L��-�.rc��UO[OQ2O[OQ22UO[OQ2O[OQ22UO[OQ2OO
[OQ22P!)�192.168.1.1�::ffff:192.168.1.1�::ffff:c0a8:101)r(rr��ipv6_mapped�IPv6Address�ipv4_mappedr	s&r�test_ipv6_mapped�#AddressTestCase_v4.test_ipv6_mapped3s�������.�.�}�=�I�I�"�.�.�/C�D�	F�����.�.�}�=�I�I�"�.�.�/@�A�	C�����.�.�}�=�I�I�U�U�"�.�.�}�=�	?rr.)r/r0r1r2rr�rr�r�r�r�r�rrrrr!r6r7r8s@rr�r��sG�����#�#�G�3�2(�
*�:�'� =�-�&�/�?�?rr�c�`�\sQsQsn\O
sQsQsQs	Qs
QsQsQs
Q	sQ
sQsQsQ
sQsQsQsQsQsUsP!)�AddressTestCase_v6�<c	��[OQ2o,QNoSFD vq4UOU[V22J"	P!)z
::1.2.3.42))r�ڀ00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100000001100101010)r�� 0000000000000000000000000102032a)r\r()r�� 0000000000000000000000000102032A)r�ڟ0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001_0000_0010_0000_0011_0010_1010)r��'0000_0000_0000_0000_0000_0000_0102_032a)r�r+)r��'0000_0000_0000_0000_0000_0000_0102_032A)r�ڂ0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100000001100101010)r��"0x0000000000000000000000000102032a)r�r.)r��"0X0000000000000000000000000102032A)r�ڡ0b0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001_0000_0010_0000_0011_0010_1010)r��)0x0000_0000_0000_0000_0000_0000_0102_032a)r�r1)r��)0X0000_0000_0000_0000_0000_0000_0102_032A)r��	::102:32a)r�r3)rrr(r�)r
�v6�v6_pairsr�r�s&    rr��AddressTestCase_v6.test_format?s<��
�
"�
"�<�
0��!
��F#�J�S����S�&��/�2�#rc�6`�U1QkoUQ2UQ2P!)c�:�QoROV29^tt^2[OU2PPP2P!)%fhP!9h)r�)r rr�r[rer
s& �rr��IAddressTestCase_v6.test_network_passed_as_address.<locals>.assertBadSplitis6���(�C��(�(��3�3��%�%�d�+�4�3�3�3�r�z::1/24z::1%scope_id/24r.r�sf rr��1AddressTestCase_v6.test_network_passed_as_addresshs���	,�	�x� ��(�)rc�v`�U1QkoUQ2UQ2UQ2UQ2UQ2UQ2P!)c��:�QoROVOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)zAt least 3 parts expected in %r�%�r �splitrrr9s& �rr��UAddressTestCase_v6.test_bad_address_split_v6_not_enough_parts.<locals>.assertBadSplitqsD���3�C��(�(��j�j��o�a�.@�A�A��%�%�d�+�B�A�A�A���A�A&	�A&	�:z:1z	FEDC:9878z:%scopez:1%scopezFEDC:9878%scoper.r�sf r�*test_bad_address_split_v6_not_enough_parts�=AddressTestCase_v6.test_bad_address_split_v6_not_enough_partsps;���	,�
	�s���t���{�#��y�!��z�"��(�)rc�`�U1QkoUQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ	2UQ
2P!)c��:�QoROVOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)z At most 8 colons permitted in %rr>r?r9s& �rr��TAddressTestCase_v6.test_bad_address_split_v6_too_many_colons.<locals>.assertBadSplit~�D���4�C��(�(��j�j��o�a�.@�A�A��%�%�d�+�B�A�A�A�rBz9:8:7:6:5:4:3::2:1z10:9:8:7:6:5:4:3:2:1z::8:7:6:5:4:3:2:1z8:7:6:5:4:3:2:1::z10:9:8:7:6:5:4:3:42.42.42.42z9:8:7:6:5:4:3::2:1%scopez10:9:8:7:6:5:4:3:2:1%scopez::8:7:6:5:4:3:2:1%scopez8:7:6:5:4:3:2:1::%scopez"10:9:8:7:6:5:4:3:42.42.42.42%scoper.r�sf r�)test_bad_address_split_v6_too_many_colons�<AddressTestCase_v6.test_bad_address_split_v6_too_many_colons}sd���	,�
	�+�,��-�.��*�+��*�+��5�6��1�2��3�4��0�1��0�1��;�<rc�`�U1QkoQQ*Q*oUU2UUQ*2UUQ*2UUQ*2P!)c��:�QoROU[OUQ*229^tt^2[OU2PPP2P!)%fhP!9h)z%At most 45 characters expected in '%s:N�-N)r rBrCrrr9s& �rr��MAddressTestCase_v6.test_bad_address_split_v6_too_long.<locals>.assertBadSplit�sF���:�C��(�(��b�i�i��S�	�.B�C�C��%�%�d�+�D�C�C�C�r�z0:i'�0z%zoneidz:255.255.255.255z:ffff:255.255.255.255r.)r
r��	long_addrsf  r�"test_bad_address_split_v6_too_long�5AddressTestCase_v6.test_bad_address_split_v6_too_long�sI���	,��E�\�S�(�	��y�!��y�9�,�-��y�#5�5�6��y�#:�:�;rc�`�U1QkoUQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ	2UQ
2P!)c��:�QoROVOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)z+Exactly 8 parts expected without '::' in %rr>r?r9s& �rr��SAddressTestCase_v6.test_bad_address_split_v6_too_many_parts.<locals>.assertBadSplit�sD���?�C��(�(��j�j��o�a�.@�A�A��%�%�d�+�B�A�A�A�rBz3ffe:0:0:0:0:0:0:0:1z9:8:7:6:5:4:3:2:1z
7:6:5:4:3:2:1z9:8:7:6:5:4:3:42.42.42.42z7:6:5:4:3:42.42.42.42z3ffe:0:0:0:0:0:0:0:1%scopez9:8:7:6:5:4:3:2:1%scopez7:6:5:4:3:2:1%scopez9:8:7:6:5:4:3:42.42.42.42%scopez7:6:5:4:3:42.42.42.42%scoper.r�sf r�(test_bad_address_split_v6_too_many_parts�;AddressTestCase_v6.test_bad_address_split_v6_too_many_parts�sc���	,�
	�-�.��*�+���'��2�3��.�/��3�4��0�1��,�-��8�9��4�5rc�6`�U1QkoUQ2UQ2P!)c��:�QoROVOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)z.Expected at most 7 other parts with '::' in %rr>r?r9s& �rr��eAddressTestCase_v6.test_bad_address_split_v6_too_many_parts_with_double_colon.<locals>.assertBadSplit�sD���B�C��(�(��j�j��o�a�.@�A�A��%�%�d�+�B�A�A�A�rBz1:2:3:4::5:6:7:8z1:2:3:4::5:6:7:8%scoper.r�sf r�:test_bad_address_split_v6_too_many_parts_with_double_colon�MAddressTestCase_v6.test_bad_address_split_v6_too_many_parts_with_double_colon�s���	,�
	�)�*��/�0rc�V`�U1QkoUQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ	2UQ
2UQ2UQ2UQ
2UQ2UQ2UQ2UQ2UQ2UQ2UQ2P!)c��:�QoROVOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)z At most one '::' permitted in %rr>r?r9s& �rr��ZAddressTestCase_v6.test_bad_address_split_v6_repeated_double_colon.<locals>.assertBadSplit�rIrBz
3ffe::1::1z1::2::3::4:5z2001::db:::1z	3ffe::1::z	::3ffe::1z:3ffe::1::1z3ffe::1::1:z:3ffe::1::1:z:::z2001:db8:::1z3ffe::1::1%scopez1::2::3::4:5%scopez2001::db:::1%scopez3ffe::1::%scopez::3ffe::1%scopez:3ffe::1::1%scopez3ffe::1::1:%scopez:3ffe::1::1:%scopez	:::%scopez2001:db8:::1%scoper.r�sf r�/test_bad_address_split_v6_repeated_double_colon�BAddressTestCase_v6.test_bad_address_split_v6_repeated_double_colon�s����	,�
	�|�$��~�&��~�&��{�#��{�#��}�%��}�%��~�&��u���~�&��)�*��+�,��+�,��(�)��(�)��*�+��*�+��+�,��{�#��+�,rc�`�U1QkoUQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2P!)	c��:�QoROVOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)z0Leading ':' only permitted as part of '::' in %rr>r?r9s& �rr��RAddressTestCase_v6.test_bad_address_split_v6_leading_colon.<locals>.assertBadSplit�sD���D�C��(�(��j�j��o�a�.@�A�A��%�%�d�+�B�A�A�A�rBz:2001:db8::1z:1:2:3:4:5:6:7z
:1:2:3:4:5:6:z:6:5:4:3:2:1::z:2001:db8::1%scopez:1:2:3:4:5:6:7%scopez:1:2:3:4:5:6:%scopez:6:5:4:3:2:1::%scoper.r�sf r�'test_bad_address_split_v6_leading_colon�:AddressTestCase_v6.test_bad_address_split_v6_leading_colon�sP���	,�
	�~�&��'�(���'��'�(��+�,��-�.��,�-��-�.rc�`�U1QkoUQ2UQ2UQ2UQ2UQ2UQ2UQ2UQ2P!)	c��:�QoROVOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)z1Trailing ':' only permitted as part of '::' in %rr>r?r9s& �rr��SAddressTestCase_v6.test_bad_address_split_v6_trailing_colon.<locals>.assertBadSplit�sD���E�C��(�(��j�j��o�a�.@�A�A��%�%�d�+�B�A�A�A�rBz2001:db8::1:z1:2:3:4:5:6:7:z
::1.2.3.4:z::7:6:5:4:3:2:z2001:db8::1:%scopez1:2:3:4:5:6:7:%scopez::1.2.3.4:%scopez::7:6:5:4:3:2:%scoper.r�sf r�(test_bad_address_split_v6_trailing_colon�;AddressTestCase_v6.test_bad_address_split_v6_trailing_colon�sP���	,�
	�~�&��'�(��|�$��'�(��+�,��-�.��)�*��-�.rc��`�U1QkoUQQ2UQQ2UQQ2UQQ2UQ	Q
2UQQ2UQQ2UQ
Q2UQQ2UQQ
2P!)c��:�ROQVOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)z%s in %rr>r?)r[�v4_errorr
s&&�r�assertBadAddressPart�DAddressTestCase_v6.test_bad_v4_part_in.<locals>.assertBadAddressPart�sA����(�(��X�z�z�#��q�?Q�R�R��%�%�d�+�S�R�R�R�s�A�A%	�A%	z3ffe::1.netzExpected 4 octets in '1.net'z
3ffe::127.0.1zExpected 4 octets in '127.0.1'z::1.2.3zExpected 4 octets in '1.2.3'z::1.2.3.4.5z Expected 4 octets in '1.2.3.4.5'z3ffe::1.1.1.netz5Only decimal digits permitted in 'net' in '1.1.1.net'z3ffe::1.net%scopez3ffe::127.0.1%scopez
::1.2.3%scopez::1.2.3.4.5%scopez3ffe::1.1.1.net%scoper.)r
rpsf r�test_bad_v4_part_in�&AddressTestCase_v6.test_bad_v4_part_in�s����	,�	�]�,J�K��_�=�	?��Y�;�	=��]�?�	A��.�.�	/�	�0�2P�Q��2�=�	?��_�;�	=��0�?�	A��4�.�	/rc��`�U1QkoUQQ2UQQ2UQQ2UQQ2UQ	Q
2UQQ2UQ
Q2UQQ2UQQ2UQQ2UQQ
2UQQ2P!)c�
:�QU8QUOQ2]*80oRO[OU229^tt^2[O
U2PPP2P!)%fhP!9h)zOnly hex digits permitted in r�r>)r@r rBrCrr�r[�partrer
s&& �r�
assertBadPart�AAddressTestCase_v6.test_invalid_characters.<locals>.assertBadPartsQ���=A�4�:�:�c�?�ST�CU�V�C��(�(����3��8�8��%�%�d�+�9�8�8�8�s�A1�1B	�:B	z
3ffe::goog�googz3ffe::-0r�z3ffe::+0r�z3ffe::-1�-1r��1.2.3.4�1234:axy::b�axyz3ffe::goog%scopez3ffe::-0%scopez3ffe::+0%scopez3ffe::-1%scopez1.2.3.4::%scope�1234:axy::b%scoper.�r
rxsf rr��*AddressTestCase_v6.test_invalid_characterss����	,�
	�l�F�+��j�$�'��j�$�'��j�$�'��k�9�-��m�U�+��(�&�1��&��-��&��-��&��-��'��3��)�5�1rc�`�U1QkoUQQ2UQQ2UQQ2UQQ2UQ	Q2UQ
Q2UQQ2UQQ2P!)
c��:�QoROV!UOQ2]*29^tt^2[OU2PPP2P!)%fhP!9h)z*At most 4 characters permitted in %r in %rr>r?rvs&& �rrx�:AddressTestCase_v6.test_part_length.<locals>.assertBadPart'sF���>�C��(�(��D�J�J�s�O�A�4F�G�G��%�%�d�+�H�G�G�G�s�A�A'	�A'	z::00000�00000z3ffe::10000�10000z02001:db8::�02001z2001:888888::1�888888z
::00000%scopez3ffe::10000%scopez02001:db8::%scopez2001:888888::1%scoper.r�sf r�test_part_length�#AddressTestCase_v6.test_part_length&s^���	,�
	�i��)��m�W�-��m�W�-��&��1��o�w�/��)�7�3��)�7�3��,�h�7rc�L�UOQ2UOQ2P!��
2001:db8::�2001:db8::%scoperr	s&rr�AddressTestCase_v6.test_pickle6s������&����+�,rc��[OUOQ22[OUOQ22P!r�rr	s&rr�AddressTestCase_v6.test_weakref:s-�����D�L�L��.�/����D�L�L�!3�4�5rc���UOQ2oUOU[OU22UOU[OU22P!)r�)rr(�copy�deepcopyr�s& r�	test_copy�AddressTestCase_v6.test_copy>sB���|�|�.�/������t�y�y���/�����t�}�}�T�2�3rr.)r/r0r1r2rrrr�r�rDrJrRrWr\rarfrkrrr�r�rrr�r6r7r8s@rr$r$<sf�����#�#�G�'3�R*�*�=�(<�6�(1�-�8/� /� /�62�(8� -�6�4�4rr$c�P`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sUs
P!)�NetmaskTestMixin_v4�D�;Input validation on interfaces and networks is very similarc��QFDyoUOU2oUO[U2Q2UO[UO2Q2UO[UO2Q2J{	P!)r|�
1.2.3.4/32�255.255.255.255rk)r|���rr(�str�netmask�hostmask)r
rd�nets&  r�test_no_mask� NetmaskTestMixin_v4.test_no_maskGsb��C�G��,�,�w�'�C����S��X�|�4����S����-�/@�A����S����.�	�:�	Drc��QoUOQU*29^tt^2UOU2PPP2P!)%fhP!9h)z
1.2.3.4/32/24�Only one '/' permitted in %rr>r�s& r�test_split_netmask�&NetmaskTestMixin_v4.test_split_netmaskPs:����
�
$�
$�%C�d�%J�
K�
K��L�L���L�
K�
K�
K�s�A�A	�	A	c�`�U1QkoUQQ2UQQ2UQQ2UQQ2UQQ2UQQ	2UQ
[OQ22P!)c�:�ROU29^tt^2ROU2PPP2P!)%fhP!9hrr>�r[rr
s&&�r�assertBadAddress�ANetmaskTestMixin_v4.test_address_errors.<locals>.assertBadAddressV�/����(�(��1�1����T�"�2�1�1�1���8�A		�A		�/r=�/8r�zExpected 4 octets�
google.com�10/8�	::1.2.3.4zOnly decimal digitsz	1.2.3.256z256 (> 255))rBrC�r
r�sf r�test_address_errors�'NetmaskTestMixin_v4.test_address_errorsUs_���	#�	��7�8���8�9���"5�6���':�;���!4�5���&;�<���b�i�i�
�&>�?rc
�f�UO[UOQ22Q2UO[UOQ22Q2UO[UOQ22Q2UO[UOQ22Q2[]]!2FD�oQU*oUOU2oUO[U2U2UO[UOQUO*22U2UO[UOQU*22U2UQ	7cQ] U*
*oUO[UOQUO
*22U2J�	P!)
�	192.0.2.0�192.0.2.0/24z192.0.2.0/255.255.255.0z
0.0.0.0/%dz
0.0.0.0/%sz0.0.0.0/0%d�r��)r��24�r��
255.255.255.0)� rj)r(r�rrUr�r�)r
�i�net_strr�s&   r�test_valid_netmask�&NetmaskTestMixin_v4.test_valid_netmaskbsR������T�\�\�*;�<�=�~�N�����T�\�\�*=�>�?��P�����T�\�\�*H�I�J�'�	)�����T�\�\�*C�D�E�'�	)��q�"��A�"�Q�&�G��,�,�w�'�C����S��X�w�/�����D�L�L�����!;�<�=�w�
H�
���S����m�a�.?�!@�A�7�K��G�|�&�"�q�&�1������D�L�L�����!<�=�>��
I�rc�`�U1QkoUQP2UQQ2UQQ2UQQ2UQQ2UQQ2UQQ2UQQ2UQ	Q
2UQ	Q2UQ	Q2UQ	Q
2UQ	Q2UQ	Q2P!)c��:�QU*oRO[OU229^tt^2ROU8QU802PPP2P!)%fhP!9h��%r is not a valid netmaskr��r%rBrCr�r[r�rer
s&& �r�assertBadNetmask�ANetmaskTestMixin_v4.test_netmask_errors.<locals>.assertBadNetmask{�F���-��7�C��(�(����3��8�8�����g�6�7�9�8�8�8���A�A-	�%A-	r|r{r�� 1 �0x1�33z254.254.255.256r��1.1.1.1z254.xyz.2.3z240.255.0.0z
255.254.128.0z0.1.127.255�puddingr�r.�r
r�sf r�test_netmask_errors�'NetmaskTestMixin_v4.test_netmask_errorszs����	8�
	��B�'���D�)���D�)���E�*���E�*���D�)���$5�6���I�.���M�2���M�2���O�4���M�2���I�.���D�)rc�:`�U1QkoUQP2UQ]!2P!)c��:�QU*oRO[OU229^tt^2ROV12PPP2P!)%fhP!9h�r�r�r�s&& �rr��JNetmaskTestMixin_v4.test_netmask_in_tuple_errors.<locals>.assertBadNetmask��C���-��7�C��(�(����3��8�8����d�_�-�9�8�8�8���A�A'	�A'	r�r.r�sf r�test_netmask_in_tuple_errors�0NetmaskTestMixin_v4.test_netmask_in_tuple_errors�s���	.�	��B�'���B�'rc�n�UOQ2UOQ2UOQ2P!)z192.0.2.0/27z192.0.2.0/31r�rr	s&rr�NetmaskTestMixin_v4.test_pickle�s,������(�����(�����%rr.�r/r0r1r2�__doc__r�r�r�r�r�r�rr6r7r8s@rr�r�Ds2����E�;��
@�I�0*�*(�&�&rr�c�0�\sQsQs\O
sQsP!)�InterfaceTestCase_v4�r.)r/r0r1r2r�
IPv4Interfacerr6r.rrr�r���
���%�%�Grr�c�L`�\sQsQsn\O
sQsQsQs	Qs
UsP!)�NetworkTestCase_v4�c��UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222P!��10.0.0.0/30z10.0.1.0/24z10.0.0.0/24��assertFalser�	subnet_ofrr	s&r�test_subnet_of�!NetworkTestCase_v4.test_subnet_of�s�������L�L��'�1�1����]�+�
-�	.�	
����L�L��'�1�1����]�+�
-�	.�	
����L�L��'�1�1����]�+�
-�	.�	
����L�L��'�1�1����]�+�
-�	.rc��UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222P!r��r�r�supernet_ofrr	s&r�test_supernet_of�#NetworkTestCase_v4.test_supernet_of�s�������L�L��'�3�3����]�+�
-�	.�	
����L�L��'�3�3����]�+�
-�	.�	
����L�L��'�3�3����]�+�
-�	.�	
����L�L��'�3�3����]�+�
-�	.rc��UO[29^tt^2[OQ2O	[O
Q22PPP2UO[29^tt^2[O
Q2O	[OQ22PPP2UO[29^tt^2[OQ2O
[O
Q22PPP2UO[29^tt^2[O
Q2O
[OQ22PPP2P!)%fhCK09h)%fhK�9h)%fhK�9h)%fhP!9h)r��::1/128)rKrLr�IPv4Networkr��IPv6Networkr�r	s&r�test_subnet_of_mixed_types�-NetworkTestCase_v4.test_subnet_of_mixed_types�s)��
�
�
�y�
)�
)��!�!�-�0�<�<��%�%�i�0�
2�*��
�
�y�
)�
)��!�!�)�,�8�8��%�%�m�4�
6�*��
�
�y�
)�
)��!�!�-�0�:�:��%�%�i�0�
2�*��
�
�y�
)�
)��!�!�)�,�6�6��%�%�m�4�
6�*�
)�*�
)�
)��*�
)��*�
)��*�
)�
)�sG�:F�>:F�:F'�<:F:�F	�	F	�F$	�F$	�'F7	�0F7	�:G	�G	r.)r/r0r1r2rr�rr�r�r�r6r7r8s@rr�r��s$�����#�#�G�.�$.�$6�6rr�c�P`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sUs
P!)�NetmaskTestMixin_v6��r�c���QFDyoUOU2oUO[U2Q2UO[UO2Q2UO[UO2Q2J{	UOQ2oUO[U2Q2UO[UO2Q2UO[UO2Q2P!)�::1r�z'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffffr��	::1%scope�
::1%scope/128)rrJsr�)r
rdr��
scoped_nets&   rr�� NetmaskTestMixin_v6.test_no_mask�s���7�G��,�,�w�'�C����S��X�y�1����S����-�/X�Y����S����.��5�	8��\�\�+�.�
�����Z��/�:�����Z�/�/�0�2[�\�����Z�0�0�1�4�8rc�F�QoUOQU*29^tt^2UOU2PPP2QoUOQU*29^tt^2UOU2PPP2P!)%fhKN9h)%fhP!9h)zcafe:cafe::/128/190r�zcafe:cafe::%scope/128/190r>)r
r[�scoped_addrs&  rr��&NetmaskTestMixin_v6.test_split_netmask�sz��$��
�
$�
$�%C�d�%J�
K�
K��L�L���L�2��
�
$�
$�%C�k�%Q�
R�
R��L�L��%�S�
R�	L�
K��S�
R�
R�s#�A<� B�<B	�B	�B 	�B 	c��`�U1QkoUQQ2UQQ2UQQ2UQQ2UQQ2UQQ	2UQ
Q2UQQ2UQQ2UQ
Q2UQQ2UQQ	2P!)c�:�ROU29^tt^2ROU2PPP2P!)%fhP!9hrr>r�s&&�rr��ANetmaskTestMixin_v6.test_address_errors.<locals>.assertBadAddress�r�r�r�r=r�r�zAt least 3 partsr|r�r}zOnly hex digitsz/%scopez/%scope8zgoogle.com%scopez
1.2.3.4%scopez
10%scope/8rr.r�sf rr��'NetmaskTestMixin_v6.test_address_errors�s����	#�	��7�8���8�9���'9�:���$6�7���!3�4���(9�:���$=�>���%>�?��+�-?�@���*<�=���'9�:��,�.?�@rc
�8�UO[UOQ22Q2UO[UOQ22Q2UO[UOQ22Q2[]]�2FDgoQU*oUO[UOU22U2UO[UOQU*22U2Ji	UO[UOQ22Q2[]]�2FDgoQU*oUO[UOU22U2UO[UOQU*22U2Ji	P!)r��
2001:db8::/32z::/%dz::/0%dz2001:db8::%scope/32)r�r�)r��32)r(r�rrU)r
r�r�s&  rr��&NetmaskTestMixin_v6.test_valid_netmasks:��	
����T�\�\�*<�=�>�(�	*�����T�\�\�*>�?�@�(�	*�����T�\�\�/�:�;�_�M��q�#��A���k�G����S����g�!6�7��A����S����h��l�!;�<�g�F��	
����T�\�\�*?�@�A�CX�Y��q�#��A���k�G����S����g�!6�7��A����S����h��l�!;�<�g�F�rc��`�U1QkoUQP2UQQ2UQQ2UQQ2UQQ2UQQ2UQQ2UQQ2UQQ2UQQ	2UQ
Q
2UQQ	2P!)c��:�QU*oRO[OU229^tt^2ROU8QU802PPP2P!)%fhP!9hr�r�r�s&& �rr��ANetmaskTestMixin_v6.test_netmask_errors.<locals>.assertBadNetmaskr�r�r�1::r{r�r�r��129r|r�r�rr.r�sf rr��'NetmaskTestMixin_v6.test_netmask_errorss����	8�
	���#����&����&����%����%����&����&����&���	�*���	�*���t�$���i�0rc�L`�U1QkoUQP2UQ]�2UQ]�2P!)c��:�QU*oRO[OU229^tt^2ROV12PPP2P!)%fhP!9hr�r�r�s&& �rr��JNetmaskTestMixin_v6.test_netmask_in_tuple_errors.<locals>.assertBadNetmask0r�r�rrr.r�sf rr��0NetmaskTestMixin_v6.test_netmask_in_tuple_errors/s(���	.�	���#����$���c�*rc��UOQ2UOQ2UOQ2UOQ2P!)z2001:db8::1000/124z2001:db8::1000/127z2001:db8::1000z2001:db8::1000%scoperr	s&rr�NetmaskTestMixin_v6.test_pickle8s>�����-�.����-�.����)�*����/�0rr.r�r8s@rrr�s2����E�9�&�A�&G�.1�(+�1�1rrc�0�\sQsQs\O
sQsP!)�InterfaceTestCase_v6�@r.)r/r0r1r2r�
IPv6Interfacerr6r.rrr!r!@r�rr!c�F`�\sQsQsn\O
sQsQsQs	Us
P!)�NetworkTestCase_v6�Dc���UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222P!)�
2000:999::/56�
2000:aaa::/48�
2000:aaa::/56�
2000:bbb::/56z2000:999::%scope/56z2000:aaa::%scope/48z2000:aaa::%scope/56r�r	s&rr��!NetworkTestCase_v6.test_subnet_ofGs2������L�L��)�3�3����_�-�
/�	0�	
����L�L��)�3�3����_�-�
/�	0�	
����L�L��)�3�3����_�-�
/�	0�	
����L�L��)�3�3����_�-�
/�	0�	
����L�L�.�/�9�9����2�3�
5�	6�	
����L�L�.�/�9�9����2�3�
5�	6rc��UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222UOUOQ2OUOQ222P!)r(r)r*r+r�r	s&rr��#NetworkTestCase_v6.test_supernet_of`s�������L�L��)�5�5����_�-�
/�	0�	
����L�L��)�5�5����_�-�
/�	0�	
����L�L��)�5�5����_�-�
/�	0�	
����L�L��)�5�5����_�-�
/�	0rr.)r/r0r1r2rr�rr�r�r6r7r8s@rr%r%Ds�����#�#�G�6�20�0rr%c�:`�\sQsQsnQsQsQsQsQsUs	P!)�FactoryFunctionErrors�sc��QoQoUO[VCU29^tt^2UU2PPP2P!)%fhP!9h)z3Ensure a clean ValueError with the expected message�camelotz+%r does not appear to be an IPv4 or IPv6 %s)r�
ValueError)r
r�kindr[res&&&  r�assertFactoryError�(FactoryFunctionErrors.assertFactoryErrorus8����;��
�
"�
"�:�s�$�
?�
?��D�M�@�
?�
?�
?�s�	8�A		�A		c�H�UO[OQ2P!rc)r6r�
ip_addressr	s&r�test_ip_address�%FactoryFunctionErrors.test_ip_address|������	� 4� 4�i�@rc�H�UO[OQ2P!)�	interface)r6r�ip_interfacer	s&r�test_ip_interface�'FactoryFunctionErrors.test_ip_interfaces�����	� 6� 6��Drc�H�UO[OQ2P!)�network)r6r�
ip_networkr	s&r�test_ip_network�%FactoryFunctionErrors.test_ip_network�r<rr.)
r/r0r1r2r6r:r@rEr6r7r8s@rr0r0ss"�����A�E�A�Arr0c�d`�\sQsQsn\O
]2s\O]2s\O]2s
\O]2s\O]2s\O]2s\OQ2s\OQ2s\OQ2s\\
,s\\,*s\\,s\\,*s\\,s\\,*s\\*s\\*s\O
]2s\O]2s\O]2s\O]2s\O]2s \O]2s!\OQ2s"\OQ2s#\OQ2s$Qs%Qs&Qs'Qs(Qs)Q	s*Q
s+Qs,Qs-Q
s.Qs/Qs0Us1P!)�ComparisonTests�r�	::2%scopec� �[2oUOFDqoUOV!2UOV!6H2UO	UOU2[2UO	UOU2[2Js	P!r)�object�objects_with_scoped�assertNotEqualr�r(�__eq__�NotImplemented�__ne__�r
�other�objs&  r�test_foreign_type_equality�*ComparisonTests.test_foreign_type_equality�si������+�+�C�����+����S�\�*����S�Z�Z��.��?����S�Z�Z��.��?�	,rc��UOFD/oUOFDoVIcJ
UOV2J	J1	P!r)�objectsrNr)s&  r�test_mixed_type_equality�(ComparisonTests.test_mixed_type_equality�s6���<�<�C��|�|���:���#�#�C�-�$� rc�~�[UOUO2FDvqUOV2J	P!r)�zip�
v6_objects�v6_scoped_objectsrNr)s&  r�test_scoped_ipv6_equality�)ComparisonTests.test_scoped_ipv6_equality�s.���D�O�O�T�-C�-C�D�H�C�����)�Erc�z�UOFD(oUOFDoUOV2J	J*	P!r)�
v4_objectsr^rNr)s&  r�test_v4_with_v6_scoped_equality�/ComparisonTests.test_v4_with_v6_scoped_equality�s.���?�?�C��-�-���#�#�C�-�.�#rc��UOFD6oUOV2UOV2UOV2J8	P!r)rMr(�assertLessEqual�assertGreaterEqual�r
rTs& r�test_same_type_equality�'ComparisonTests.test_same_type_equality�s<���+�+�C����S�&�� � ��*��#�#�C�-�,rc
��UOUO1UOUO1UOUO
1UOUO1UOUO1UOUO1UOUO1UOUO1UO UO"11	FD�vqUO%V2UO'V2UO)V2UO+V!2UO-V!2UO/V6�2UO/V!62UO/V6�2UO/V!6*2J�	P!r)�v4addr�v4addr2�v4net�v4net2�v4intf�v4intf2�v6addr�v6addr2�v6net�v6net2�v6intf�v6intf2�
v6addr_scoped�v6addr2_scoped�v6net_scoped�
v6net2_scoped�
v6intf_scoped�v6intf2_scopedrN�
assertLessrf�
assertGreaterrgr�r)s&  r�test_same_type_ordering�'ComparisonTests.test_same_type_ordering�s2��
�[�[�$�,�,�'�
�Z�Z����%�
�[�[�$�,�,�'�
�[�[�$�,�,�'�
�Z�Z����%�
�[�[�$�,�,�'�
�
�
��!4�!4�5�
�
�
�� 2� 2�3�
�
�
��!4�!4�5�

�H�C�
����)��O�O�C�%�� � ��*����s�(��#�#�C�-����S�Y�'����S�Y�'����S�Z�(����S�Z�(�'

rc�:�UOFDoUOVO2J 	UOUO*FDoUOVO
2J 	UOUO*FDoUOVO2J 	UOUO
UO,*FDoUOVO
2J 	UOUO
UO,*FDoUOVO2J 	UOUO*UO,*FDoUOVO2J 	P!r)�v4_addresses�assertInrn�v6_addresses�v6_scoped_addressesrtrzrb�assertNotInr]r^rhs& r�test_containment� ComparisonTests.test_containment�s0���$�$�C��M�M�#�z�z�*�%��$�$�t�'?�'?�?�?�C��M�M�#�z�z�*�@��$�$�t�'?�'?�?�?�C��M�M�#�0�0�1�@��?�?�d�j�j�$�2C�2C�%D�D�D�C����S�*�*�-�E��?�?�d�j�j�$�2C�2C�%D�D�D�C����S�"3�"3�4�E��?�?�T�%;�%;�;�t�z�z�l�J�J�C����S�*�*�-�Krc
�``�UOFD�nUOFD�n[R[R22%f[R[R22%cJ;UO[UU1Qk2UO[UU1Qk2UO[UU1Qk2UO[UU1Qk2J�	J�	P!)c�:�RR6!rr.�r*r+s��r�<lambda>�:ComparisonTests.test_mixed_type_ordering.<locals>.<lambda>��	���S�3�Yrc�:�RR6�!rr.r�s��rr�r��r�rc�:�RR6*!rr.r�s��rr�r���	���S�C�Zrc�:�RR6�!rr.r�s��rr�r��r�r)rM�
isinstance�typerKrLr)s&@@r�test_mixed_type_ordering�(ComparisonTests.test_mixed_type_ordering�s�����+�+�C��/�/���c�4��9�-�-��C��c��1K�1K���!�!�)�->�?��!�!�)�->�?��!�!�)�-?�@��!�!�)�-?�@�
0�,rc	��[2oUOFCDloUO[29^tt^2V!6PPP2UO[29^tt^2V!6�PPP2UO[29^tt^2V!6*PPP2UO[29^tt^2V!6�PPP2UO	U[
62UO
U[
6�2UO	U[
6*2UO
U[
6�2UO
U[62UO	U[6�2UO
U[6*2UO	U[6�2CJo	P!)%fhCKV9h)%fhCK@9h)%fhCK*9h)%fhCK9hr)rLrMrKrLrrr�rrRs&  r�test_foreign_type_ordering�*ComparisonTests.test_foreign_type_ordering�s5������+�+�C��"�"�9�-�-���.��"�"�9�-�-���.��"�"�9�-�-���.��"�"�9�-�-���.��O�O�C�'�M�*����S�7�]�+��O�O�C�7�N�+����S�G�^�,����S�8�^�,��O�O�C�(�N�+����S�H�_�-��O�O�C�8�O�,�!,�-�-�-��-�-�-��-�-�-��-�-�-�sG�F	�$F 	�F4	�8G	�F
�F
� F1
�)F1
�4G
�=G
�G
�G
c��UOUOUO,oUOUOUO
,oUOUOUO,oUOU[UO[OQ52UOU[UO[OQ52UOU[UO[OQ52UOV*[UOUO*[OQ52UO[ [O["22P!))�key)rlrnrprrrtrvrxrzr|r(�sortedrbr�get_mixed_type_keyr]r^rPrL)r
�
v4_ordered�
v6_ordered�v6_scoped_ordereds&   r�test_mixed_type_key�#ComparisonTests.test_mixed_type_key
s)���k�k�4�:�:�t�{�{�;�
��k�k�4�:�:�t�{�{�;�
�!�/�/��1B�1B�D�DV�DV�W����������$-�$@�$@�B�	C�	
��������$-�$@�$@�B�	C�	
���*��� 6� 6�$-�$@�$@�B�	C�	
����7�����$�2H�2H� H�$-�$@�$@�B�	C�	
�����)E�)E�f�)M�Nrc�0�[OQ2o[OQ2o[OQ2o[OQ2o[OQ2o[OQ2oUO[UO
U2UO[UOU2UO[UO
U2UO[UOU2UO[UO
U2UO[UOU2UO[UO
U2UO[UOU2UO[UO
U2UO[UOU2UO[UO
U2UO[UOU2UO[UO
U2UO[UOU2UO[UO
U2UO[UOU2P!)r�rr)rr9rDrKrL�__lt__�__gt__)r
rlrnrrrtrxrzs&      r�test_incompatible_versions�*ComparisonTests.test_incompatible_versionss����%�%�i�0���$�$�Y�/���%�%�e�,���$�$�U�+��!�,�,�[�9�
� �+�+�K�8�����)�V�]�]�F�;����)�V�]�]�F�;����)�U�\�\�5�9����)�U�\�\�5�9����)�V�]�]�F�;����)�V�]�]�F�;����)�U�\�\�5�9����)�U�\�\�5�9����)�V�]�]�M�B����)�V�]�]�M�B����)�U�\�\�<�@����)�U�\�\�<�@����)�]�%9�%9�6�B����)�]�%9�%9�6�B����)�\�%8�%8�%�@����)�\�%8�%8�%�@rr.)2r/r0r1r2rr�rlr�rnr�rprrrr�rtr#rvrxrzr|r�rbr�r]r�r^rXrMrmrorqrsrurwryr{r}rUrYr_rcrir�r�r�r�r�r�r6r7r8s@rrHrH�s�����
�
"�
"�1�
%�F��!�!�!�$�E�
�
$�
$�Q�
'�F�
�
"�
"�1�
%�F��!�!�!�$�E�
�
$�
$�Q�
'�F��)�)�+�6�M��(�(��5�L��+�+�K�8�M��F�#�L����'�J��F�#�L����'�J�(�-�8��+�|�n�<���:�%�G�!�$5�5���#�#�A�&�G�
�
"�
"�1�
%�F��%�%�a�(�G��#�#�A�&�G�
�
"�
"�1�
%�F��%�%�a�(�G��*�*�;�7�N��)�)�+�6�M��,�,�[�9�N�@�.�*�.�
.�)�,
.�A�-�(O�&A�ArrHc�`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQs Qs!Q s"Q!s#Q"s$Q#s%Q$s&Q%s'Q&s(Q's)Q(s*Q)s+Q*s,Q+s-Q,s.Q-s/Q.s0Q/s1Q0s2Q1s3Q2s4Q3s5Q4s6Q5s7Q6s8Q7s9Q8s:Q9s;Q:s<Q;s=Q<s>Q=s?Q>s@Q?sAQ@sBQAsCQBsDQCsEQDsFQEsGQFsHQGsIQHsJQIsKQJsLQKsMQLsNQMsOQNsPQOsQQPsRQQsSUsTP!)R�IpaddrUnitTesti;c�$�[OQ2Um[OQ2Um[O
Q2Um[OQ2Um[OQ2Um	[OQ2Um[OQ2Um[OQ2Um
[OQ2Um[OQ	2UmP!)
r|�
1.2.3.4/24�
1.2.3.0/24�2001:658:22a:cafe:200:0:0:1z2001:658:22a:cafe:200:0:0:1/64�2001:658:22a:cafe::/64�!2001:658:22a:cafe:200:0:0:1%scopez$2001:658:22a:cafe:200:0:0:1%scope/64z2001:658:22a:cafe::%scope/64r�)rr��ipv4_addressr��ipv4_interfacer��ipv4_networkr#�ipv6_address�ipv6_interfacer��ipv6_network�ipv6_scoped_address�ipv6_scoped_interface�ipv6_scoped_network�ipv6_with_ipv4_partr	s&r�setUp�IpaddrUnitTest.setUp=s���%�1�1�)�<���'�5�5�l�C���%�1�1�,�?���%�3�3�)�+���'�5�5�,�.���%�1�1�2J�K���#,�#:�#:�/�$1�� �%.�%<�%<�2�&4��"�#,�#8�#8�9W�#X�� �#,�#:�#:�;�#G�� rc�"�UOQ[[OQ222UOQ[[OQ222UOQ[[OQ222P!)zIPv4Interface('1.2.3.4/32')r|zIPv6Interface('::1/128')rzIPv6Interface('::1%scope/128')r)r(rDrr�r#r	s&r�testRepr�IpaddrUnitTest.testReprNsp�����6��i�5�5�i�@�A�	C����3��i�5�5�e�<�=�	?����9��i�5�5�k�B�C�	Erc�Z�[OQ2o[OQ2oUO[OQ2U2UO[OU] 12U2UO[OQ	2U2UO[OQ
2U2UO[OUQ12U2UO[OQ2U2UO	[
29^tt^2[OQ2PPP2UO	[
29^tt^2[OU]12PPP2UO	[
29^tt^2[OQ
2PPP2UO	[
29^tt^2[OQ2PPP2UO	[
29^tt^2[OUQ12PPP2UO	[
29^tt^2[OQ2PPP2[OQ2oUO[OQP
Q5U2UO[OU]1P
Q5U2UO[OQ
P
Q5U2UO[OQP
Q5U2UO[OUQ1P
Q5U2UO[OQP
Q5U2[OQ2o[OQ2oUO[OQ2U2UO[OUQ12U2UO[OQ2U2UO[OQ2U2UO[OU]12U2UO[OQ2U2UO[OQ2[OQ22UO[OQ
2[OQ22UO	[
29^tt^2[OQ2PPP2UO	[
29^tt^2[OQ2PPP2P!)%fhCKM9h)%fhCK#9h)%fhCK�9h)%fhCK�9h)%fhCK�9h)%fhCK�9h)%fhK�9h)%fhP!9h)rz192.0.2.1/32r�r�r���strictr�z192.0.2.1/24)rr�)�r�)rr�)r�r�)rr�)r�r�)rr�)r�r�r�)�r�r�)r�r�)rz255.255.255.255.0)rr�r�r(rKr4r�rD)r
�ipr�s&  r�
testIPv4Tuple�IpaddrUnitTest.testIPv4TupleWs���
�
"�
"�;�
/���#�#�N�3������.�.�/@�A�3�G�����.�.��B�x�8�#�>�����.�.�/?�@�#�F�����.�.�0C�D�EH�	J�����.�.��0A�0C�D�EH�	J�����.�.�0C�D�EH�	J��
�
�z�
*�
*��!�!�"3�4�+�
�
�
�z�
*�
*��!�!�2�r�(�+�+�
�
�
�z�
*�
*��!�!�"2�3�+�
�
�
�z�
*�
*��!�!�"@�A�+�
�
�
�z�
*�
*��!�!�2��"7�8�+�
�
�
�z�
*�
*��!�!�"?�@�+��#�#�N�3������.�.�/@�6;�=�>A�	C�����.�.��B�x�6;�=�>A�	C�����.�.�/?�6;�=�>A�	C�����.�.�0A�6;�=�>A�	C�	
����.�.��0?�0A�6;�=�>A�	C�	
����.�.�0A�6;�=�>A�	C�
�
"�
"�;�
/���#�#�N�3������.�.�0A�B�CF�	H�����.�.��0?�0A�B�CF�	H�����.�.�0A�B�CF�	H�����.�.�/@�A�3�G�����.�.��B�x�8�#�>�����.�.�/?�@�#�F�����0�0�1B�C�"�0�0��@�	B�����0�0�1A�B�"�0�0��@�	B��
�
�z�
*�
*��!�!�"D�E�+��
�
�z�
*�
*�� � �!C�D�+�
*�k+�
*�
*��
*�
*�
*��
*�
*�
*��
*�
*�
*��
*�
*�
*��
*�
*�
*��N+�
*��+�
*�
*�s��3V�/V"�-V6�)W
�%W�#W2�1X�-X�V	�V	�"V3	�+V3	�6W	�?W	�
W	�W	�W/	�'W/	�2X	�;X	�X	�X	�X*	�"X*	c�x	�[OQ2o[OQ2oUO[OQ
2U2UO[OQ2U2UO[OUQ12U2[OQ2o[OQ2oUO[OQ2U2UO[OQ
2U2UO[OUQ12U2[OQ2o[OQ2oUO	[
29^tt^2[OQ2PPP2UO	[
29^tt^2[OQ2PPP2UO	[
29^tt^2[OU]`12PPP2[OQ2oUO[OQP
Q5U2UO[OQP
Q5U2UO[OU]`1P
Q5U2UO[OQ2[OQ22UO[OQ2[OQ22[OQ	2oUO	[
29^tt^2[OQ2PPP2UO	[
29^tt^2[OU]`12PPP2UO	[
29^tt^2[OQ2PPP2UO	[
29^tt^2[OQ2PPP2P!)%fhCK�9h)%fhCKq9h)%fhCKG9h)%fhCK9h)%fhK�9h)%fhK�9h)%fhP!9h)r�z2001:db8::/128�128z
2001:db8::/96�96r��2001:db8::1r�z2001:db8::1/96�2001:db8::1%scope)r�r�)�	n� �)r�r�)r��`)r�r�)�	n� r�)r�r�)r�r�)r�r�)r�r�)rrr�r(rKr4r#rD)r
r�r��	ip_scopeds&   r�
testIPv6Tuple�IpaddrUnitTest.testIPv6Tuple�s���
�
"�
"�<�
0���#�#�$4�5������.�.�/D�E��	�����.�.�=�?��	�	
����.�.��E�{�;��	�
�
"�
"�<�
0���#�#�O�4������.�.�/C�D��	�����.�.�<�>��	�	
����.�.��D�z�:��	��)�)�*<�=�	��
"�
"�=�
1��
�
�
�z�
*�
*��!�!�"5�6�+�
�
�
�z�
*�
*��!�!�#<�
=�+��
�
�z�
*�
*��!�!�2�r�(�+�+��#�#�O�4������.�.�/B�6;�=��	�	
����.�.�I�$)�+��	�	
����.�.��B�x��F��	�	
����0�0�1F�G�"�0�0�1A�B�	D�����0�0�>�@�"�0�0�1A�B�	D��)�)�*=�>�	�
�
�
�z�
*�
*��!�!�";�<�+�
�
�
�z�
*�
*��!�!�9�b�/�2�+�
�
�
�z�
*�
*��!�!�"B�C�+��
�
�z�
*�
*�� � �!A�B�+�
*�M+�
*�
*��
*�
*�
*��+�
*�
*��,+�
*�
*��
*�
*��
+�
*��+�
*�
*�s~�P2�Q�Q�Q.�R�R�R(�2Q	�;Q	�Q	�Q	�Q+	�#Q+	�.Q?	�7Q?	�R	�R	�R%	�R%	�(R9	�1R9	c��UO[OQ2]�*[OQ22UO[OQ2Q*
[OQ22UO[OQ2Q*[OQ22UO[OQ2Q*
[OQ22UO	[OQ2Q*[OQ22UO	[OQ2Q*
[OQ22P!)	r�z1.1.2.0�z1.1.0.1rz::ffffrz::ffff%scopei��)r(rr�rrNr	s&r�testAddressIntMath�!IpaddrUnitTest.testAddressIntMath�s������.�.�y�9�C�?�"�.�.�y�9�	;�����.�.�y�9�C�?�"�.�.�y�9�	;�����.�.�u�5��C�"�.�.�x�8�	:�����.�.�x�8�I�F�"�.�.�u�5�	7����I�1�1�+�>�)�L�%�1�1�.�A�	C����I�1�1�.�A�Y�O�%�1�1�+�>�	@rc��UO[[OP2UO[[O][O*2UO[[O
P2UO[[O
][O*2P!rI)rKr4r�v4_int_to_packed�
IPV4LENGTH�v6_int_to_packed�
IPV6LENGTHr	s&r�testInvalidIntToBytes�$IpaddrUnitTest.testInvalidIntToBytes�s~�����*�i�&@�&@�"�E����*�i�&@�&@��y�3�3�3�	5����*�i�&@�&@�"�E����*�i�&@�&@��y�3�3�3�	5rc	�V�[OQ2o[OQ2o[OQ2oUO[[OU,22V1,2UO[[OV,22V1V31,2UO[[OVU,22V1,2UO]�[O
]]�22UOQ[
UO22P!)z10.10.10.10z10.10.10.11z10.10.10.12zIPv4Network('1.2.3.0/24'))rr�r(�list�_find_address_range�_count_righthand_zero_bitsrDr�)r
�ip1�ip2�ip3s&   r�
testInternals�IpaddrUnitTest.testInternals�s����#�#�M�2���#�#�M�2���#�#�M�2������i�;�;�S�E�B�C��*��	'�����i�;�;�S�J�G�H��*�s�j�1�	3�����i�;�;�S�s�O�L�M��*��	'�����i�B�B�1�c�J�K����4�d�4�;L�;L�6M�Nrc��UO[UOO2Q2UO[	UOO2Q2UO[UO
O2Q2UO[	UO
O2Q2UO[	UO
O2Q2UO[UOO2Q2UO[	UOO2Q2UO[	UOO2Q2P!)i�1.2.3.0l	�/YE� �2001:658:22a:cafe::�::ffff:ffff:ffff:ffffz2001:658:22a:cafe::%scope)r(�intr��network_addressr�r�r�r�r	s&r�testGetNetwork�IpaddrUnitTest.testGetNetworks������T�.�.�>�>�?��J�����T�.�.�>�>�?��K�����T�.�.�>�>�?�?�	A�����T�.�.�>�>�?�.�	0�����T�.�.�7�7�8�0�	2�����T�5�5�E�E�F�?�	A�����T�5�5�E�E�F�4�	6�����T�5�5�>�>�?�0�	2rc��UOUOO[OQ2O2[O
Q2o[O
Q2o[O
Q2oUOU[O
[
UO222UOU[O
[
UO222UOU[O
[
UO222QoUOUOO[OU2O2UOUOO[OU2O2UO[O
UOO2O]2UO[O
UOO2O]2UO[O
UOO2O]2P!)r�r|r�r��	�/YE� )r(r��_iprr�rDr�r�rNr�r#r�r��versionr�r�)r
�ipv4�ipv6�ipv6_scoped�v6_ints&    r�
testIpFromInt�IpaddrUnitTest.testIpFromInts�������,�,�0�0�"�0�0��:�>�>�	@��#�#�I�.���#�#�$A�B���*�*�+N�O������y�3�3�C��8L�8L�4M�N�O�����y�3�3�C��8L�8L�4M�N�O����K��)=�)=�c�+�B]�B]�>^�)_�`�7������,�,�0�0�"�0�0��8�<�<�	>�����3�3�7�7�"�0�0��8�<�<�	>�	
����-�-�d�.?�.?�.C�.C�D�L�L��	�����-�-�d�.?�.?�.C�.C�D�L�L��	�����-�-�d�.F�.F�.J�.J�K�S�S��	rc���[OoUOUOO[O
Q2O2UOUQ2UQ22UOUOO[O
Q2O2UOUQ2UQ22UOUQ2UQ22P!)r��255.254.253.252������ X*��ffff:2:3:4:ffff::r������s)rr9r(r�r�r?r�r�r�s& r�testIpFromPacked�IpaddrUnitTest.testIpFromPacked-s����&�&������,�,�0�0�"�/�/�0C�D�H�H�	J�����!2�3� �!4�5�	7�����,�,�/�/�"�/�/�8�9�9;��	=�	
����!4�5� �"6�7�	8�	
������ ��.�	0rc�<�UO[UOO2Q2UO[	UOO2Q2UO[UO
O2Q2UO[	UO
O2Q2UO[UOO2Q2UO[	UOO2Q2P!)r�r|r��2001:658:22a:cafe:200::1)r(r�r�r�r�r�r�r	s&r�	testGetIp�IpaddrUnitTest.testGetIp=s�������T�0�0�3�3�4�h�?�����T�0�0�3�3�4�i�@�����T�0�0�3�3�4�?�	A�����T�0�0�3�3�4�3�	5�����T�7�7�:�:�;�?�	A�����T�7�7�:�:�;�3�	5rc�@�QoQoQoV#*o[OU2o[OU2oUO[	U2U2UOUO
V*2UO[	UO2U2P!)z0000:0000:0000:0000:0000:ffff:�::ffff:r|)rrr#r(r��explodedr�)r
�long_prefix�short_prefixr��
ipv6_ipv4_str�ipv6_ipv4_addr�ipv6_ipv4_ifaces&      r�&testIPv6IPv4MappedStringRepresentation�5IpaddrUnitTest.testIPv6IPv4MappedStringRepresentationJs���6�� ����$�+�
�"�.�.�}�=��#�1�1�-�@������^�,�m�<�����0�0�+�2D�E�����_�/�/�0�-�@rc�.�UOUOOP2UO[UOO2Q2UOUO
OP2UO[UOO2Q2UOUOOOP2UO[UOOO2Q2P!)N�scope)
r(r��scope_idr�r�r�r�r�r�r�r	s&r�testGetScopeId�IpaddrUnitTest.testGetScopeIdUs�������*�*�3�3��	�����T�5�5�>�>�?� �	"�����,�,�5�5��	�����T�7�7�@�@�A� �	"�����*�*�:�:�C�C��	�����T�5�5�E�E�N�N�O� �	"rc��UO[UOO2Q2UO[	UOO2Q2UO[UO
O2Q2UOUO
O]@2UO[UOO2Q2UOUOO]@2P!)l�r�l	�����)r(r�r�r�r�r��	prefixlenr�r	s&r�testGetNetmask�IpaddrUnitTest.testGetNetmaskcs�������T�.�.�6�6�7��D�����T�.�.�6�6�7��I�����T�.�.�6�6�7�@�	B�����*�*�4�4�b�9�����T�5�5�=�=�>�@�	B�����1�1�;�;�R�@rc�l�[OQ2oUO[UOO
2]2UOUO
Q2]2[OQ2oUO[UOO
2]2UOUO
Q2]2[OQ2oUO[UOO
2]2UOUO
Q2]2P!)�	1.2.3.4/0rPz::1/0z::1%scope/0)rr�r(r�rCr��_prefix_from_prefix_stringr#)r
�ipv4_zero_netmask�ipv6_zero_netmask�ipv6_scoped_zero_netmasks&   r�testZeroNetmask�IpaddrUnitTest.testZeroNetmaskms���%�3�3�K�@������.�6�6�>�>�?��C����*�E�E�c�J�A�N�%�3�3�G�<������.�6�6�>�>�?��C����*�E�E�c�J�A�N�#,�#:�#:�=�#I� �����5�=�=�E�E�F��J����1�L�L�S�Q�ST�Urc�l�[OQ2oUOUO]2P!)z127.0.0.0/0.0.0.255)rr�r(r�r
r�s& r�testIPv4Net�IpaddrUnitTest.testIPv4Netzs'���#�#�$9�:���������+rc�<�UO[UOO2Q2UO[	UOO2Q2UO[UO
O2Q2UO[	UO
O2Q2UO[UOO2Q2UO[	UOO2Q2P!)i��	1.2.3.255l	�����/YE� �%2001:658:22a:cafe:ffff:ffff:ffff:ffff)r(r�r��broadcast_addressr�r�r�r	s&r�testGetBroadcast�IpaddrUnitTest.testGetBroadcast~s�������T�.�.�@�@�A�8�L�����T�.�.�@�@�A�;�O�����T�.�.�@�@�A�?�	A�����T�.�.�@�@�A�@�	B�	
����T�5�5�G�G�H�?�	A�����T�5�5�G�G�H�@�	Brc�(�UOUOOO]2UOUOOO]@2UOUO
OO]@2P!)r�)r(r�rCrr�r�r	s&r�testGetPrefixlen�IpaddrUnitTest.testGetPrefixlen�sh������,�,�4�4�>�>��C�����,�,�4�4�>�>��C�����3�3�;�;�E�E�r�Jrc��UOUOO2O]2UO[	UOO2O
2Q2UO[OQ2OO2[OQ22UOUOO2O]?2UO[	UOO2O
2Q2UO[OQ2OO2[OQ22UOUOO2O]?2UO[	UOO2O
2Q2P!)�z1.2.2.0�	0.0.0.0/0r�z::0/0)r(r��supernetrr�r�rr�rCr�r�r#r�r�r	s&r�testGetSupernet�IpaddrUnitTest.testGetSupernet�sk������*�*�3�3�5�?�?��D�����T�.�.�7�7�9�I�I�J�"�	$�����#�#�K�0�8�8�A�A�C��!�!�+�.�	0�	
����*�*�3�3�5�?�?��D�����T�.�.�7�7�9�I�I�J�.�	0�����0�0��9�A�A�J�J�L�"�.�.�w�7�	9�����1�1�:�:�<�F�F��K�����T�5�5�>�>�@�P�P�Q�.�	0rc��UOUOO]2O]2UO[	UOO]2O
2Q2UOUOO]2O]=2UO[	UOO]2O
2Q2UOUOO]2O]=2UO[	UOO]2O
2Q2P!)�z1.2.0.0z2001:658:22a:caf8::)r(r�r1rr�r�r�r�r	s&r�testGetSupernet3�IpaddrUnitTest.testGetSupernet3�s������*�*�3�3�A�6�@�@�"�E�����T�.�.�7�7��:�J�J�K�"�	$�	
����*�*�3�3�A�6�@�@�"�E�����T�.�.�7�7��:�J�J�K�.�	0�����1�1�:�:�1�=�G�G��L�����T�5�5�>�>�q�A�Q�Q�R�.�	0rc���UO[UOO]]Q5UO[UOO]Q5UO	UOO]Q5UOO]Q52UO[UO
O]]Q5UO[UO
O]AQ5UO	UO
O]Q5UO
O]>Q52UO[UOO]]Q5UO[UOO]AQ5UO	UOO]Q5UOO]>Q52P!)���prefixlen_diff�
new_prefix�r<�r;)rKr4r�r1r(r�r�r	s&r�testGetSupernet4�IpaddrUnitTest.testGetSupernet4�s������*�d�&7�&7�&@�&@�)*�q�	�	:����*�d�&7�&7�&@�&@�%'�	�	)�����*�*�3�3�1�3�E��*�*�3�3�r�3�B�	D�	
���*�d�&7�&7�&@�&@�)*�q�	�	:����*�d�&7�&7�&@�&@�%'�	�	)�����*�*�3�3�1�3�E��*�*�3�3�r�3�B�	D����*�d�&>�&>�&G�&G�)*�q�	�	:����*�d�&>�&>�&G�&G�%'�	�	)�����1�1�:�:�!�:�L��1�1�:�:�b�:�I�	Krc���UOO2oUOU[2UO	[
OQ2[U22[UOO22oUO	]�[U22UO	[
OQ2U]*2UO	[
OQ2UP*2[
OQ2oUO2oUOU[2UO	[
OQ2[U22[UO22oUO	]�[U22UO	[
OQ2U]*2UO	[
OQ2UP*2[
OQ2oUO2oUOU[2UO	[
OQ2[U22[UO22oUO	]�[U22UO	[
OQ2U]*2UO	[
OQ2UP*2[
OQ2[
OQ2,oQoQo[
OU2O2oUOU[2UO	[U2U]*2[
OU2O2oUOU[2UO	[U2U]*2UO	U[[
OU2O222UO	U[[
OU2O222UO	[[
OU2O22[[
OU2O222[
OQ	2,oQ
oQo[
OU2O2oUOU[2UO	[U2U]*2[
OU2O2oUOU[2UO	[U2U]*2UO	U[[
OU2O222UO	U[[
OU2O222UO	[[
OU2O22[[
OU2O222[
OQ2[
OQ2,oQoQo[
OU2O2oUOU[2UO	[U2U]*2[
OU2O2oUOU[2UO	[U2U]*2UO	U[[
OU2O222UO	U[[
OU2O222UO	[[
OU2O22[[
OU2O222[
OQ2,oQ
oQo[
OU2O2oUOU[2UO	[U2U]*2[
OU2O2oUOU[2UO	[U2U]*2UO	U[[
OU2O222UO	U[[
OU2O222UO	[[
OU2O22[[
OU2O222P!)z1.2.3.1z	1.2.3.254�2001:658:22a:cafe::/120�2001:658:22a:cafe::1z2001:658:22a:cafe::ffz2001:658:22a:cafe::%scope/120�2.0.0.0z2.0.0.1z
2.0.0.0/31r|r�r�z2001:658:22a:cafe::/127�2001:658:22a:cafe::1/128)rD�)r|r�)r��)rCr�)
r��hosts�assertIsInstancerr(rr��nextr��lenr�rrD)r
rHr�r��addrs�str_args�tpl_argss&      r�	testHosts�IpaddrUnitTest.testHosts�s&���!�!�'�'�)�����e�X�.�����.�.�y�9�4��;�G��T�&�&�,�,�.�/������c�%�j�)�����.�.�y�9�5��8�D�����.�.�{�;�U�2�Y�G� �,�,�-F�G���"�"�$�����e�X�.�����.�.�/E�F��U��T��\�'�'�)�*������c�%�j�)�����.�.�/E�F��a��Q�����.�.�/F�G��r��S�'�3�3�4S�T��#�)�)�+�����e�X�.����)�/�/�0F�G�$�u�+�V��(�.�.�0�1������c�%�j�)�����.�.�/E�F��a��Q�����.�.�/F�G��r��S��&�&�y�1��&�&�y�1�3����"���$�$�X�.�4�4�6�����e�X�.�����e��e�A�h�/��$�$�X�.�4�4�6�����e�X�.�����e��e�A�h�/������Y�%9�%9�(�%C�%I�%I�%K� L�M������Y�%9�%9�(�%C�%I�%I�%K� L�M�����i�2�2�8�<�B�B�D�E��i�2�2�8�<�B�B�D�E�	G��&�&�y�1�2����"���$�$�X�.�4�4�6�����e�X�.�����e��e�A�h�/��$�$�X�.�4�4�6�����e�X�.�����e��e�A�h�/������Y�%9�%9�(�%C�%I�%I�%K� L�M������Y�%9�%9�(�%C�%I�%I�%K� L�M�����i�2�2�8�<�B�B�D�E��i�2�2�8�<�B�B�D�E�	G��&�&�'<�=��&�&�'=�>�@��,��/���$�$�X�.�4�4�6�����e�X�.�����e��e�A�h�/��$�$�X�.�4�4�6�����e�X�.�����e��e�A�h�/������Y�%9�%9�(�%C�%I�%I�%K� L�M������Y�%9�%9�(�%C�%I�%I�%K� L�M�����i�2�2�8�<�B�B�D�E��i�2�2�8�<�B�B�D�E�	G��&�&�'=�>�A��-��0���$�$�X�.�4�4�6�����e�X�.�����e��e�A�h�/��$�$�X�.�4�4�6�����e�X�.�����e��e�A�h�/������Y�%9�%9�(�%C�%I�%I�%K� L�M������Y�%9�%9�(�%C�%I�%I�%K� L�M�����i�2�2�8�<�B�B�D�E��i�2�2�8�<�B�B�D�E�	Grc	��UO[UOO]Q52[UOO]Q522UO	[
[UOO]Q52UO	[
[UOO]]Q52UO[UOO]Q52[UOO]DQ522UO	[
[UOO]?Q52UO	[
[UOO]]DQ52UO[UOO]Q52[UOO]DQ522UO	[
[UOO]?Q52UO	[
[UOO]]DQ52P!)r5r>r=r:)	r(r�r��subnetsrKr4r�r�r�r	s&r�testFancySubnetting�"IpaddrUnitTest.testFancySubnettings�������� 1� 1� 9� 9�� 9� K�L��� 1� 1� 9� 9�R� 9� H�I�	K����*�d��+�+�3�3�r�3�B�	D����*�d��+�+�3�3�1�>@�4�B�	C�	
����� 1� 1� 9� 9�� 9� K�L��� 1� 1� 9� 9�R� 9� H�I�	K����*�d��+�+�3�3�r�3�B�	D����*�d��+�+�3�3�1�>@�4�B�	C�	
����� 8� 8� @� @�PQ� @� R�S��� 8� 8� @� @�B� @� O�P�	R����*�d��2�2�:�:�b�:�I�	K����*�d��2�2�:�:�!�FH�;�J�	Krc���UO[UOO22]*O]2UO[[UOO22]*O2Q2UO[[UOO22]*O2Q2UO[UOO22]*O]A2UO[UOO22]*O]A2P!)rjr�z	1.2.3.128)	r(r�r�rRrr�r�r�r�r	s&r�testGetSubnets�IpaddrUnitTest.testGetSubnets1s������d�/�/�7�7�9�:�1�=�G�G��L�����T��%�%�-�-�/�1�12�4�4C�O�E�"�	$�	
����T��%�%�-�-�/�1�12�4�4C�O�E�$�	&�	
����d�/�/�7�7�9�:�1�=�G�G��L�����d�6�6�>�>�@�A�!�D�N�N�PR�Src�6�[OQ2oUO2Tt,tFDo[U2MJ	ooUO]2Tt,tFDo[U2MJ	ooUO	UQ,2UO	V42P!ttohttoh)r�)rr�rRr�r()r
r�r\�subnets1�subnets2s&    r�testGetSubnetForSingle32�'IpaddrUnitTest.testGetSubnetForSingle32=sx��
�
"�
"�<�
0��$&�J�J�L�1�L�q�C��F�L��1�$&�J�J�q�M�2�M�q�C��F�M��2�����L�>�2�����,��2��2s�B�Bc�d�[OQ2oUO2Tt,tFDo[U2MJ	ooUO]2Tt,tFDo[U2MJ	ooUO	UQ,2UO	V42[OQ2oUO2Tt,tFDo[U2MJ	ooUO]2Tt,tFDo[U2MJ	ooUO	UQ,2UO	V42P!ttohttohttohttoh�r�r)rr�rRr�r()r
r�r\rYrZr�s&     r�testGetSubnetForSingle128�(IpaddrUnitTest.testGetSubnetForSingle128Ds���
�
"�
"�9�
-��$&�J�J�L�1�L�q�C��F�L��1�$&�J�J�q�M�2�M�q�C��F�M��2�����I�;�/�����,��)�)�/�:�	�$-�$5�$5�$7�8�$7�q�C��F�$7��8�$-�$5�$5�a�$8�9�$8�q�C��F�$8��9�����O�#4�5�����,��2��2��
9��9s�D�D#�6D(� D-c�<�UOO]2Tt,tFDo[U2MJ	ooUOU,QN2UOO]2Tt,tFDo[U2MJ	ooUOU,QN2P!ttohttoh)r9)z
1.2.3.0/26z1.2.3.64/26z1.2.3.128/26z1.2.3.192/26)�2001:658:22a:cafe::/66z2001:658:22a:cafe:4000::/66z2001:658:22a:cafe:8000::/66z2001:658:22a:cafe:c000::/66)r�rRr�r(r�)r
r\�ips�ipsv6s&   r�testSubnet2�IpaddrUnitTest.testSubnet2Qs���#�0�0�8�8��;�<�;�!�s�1�v�;��<�����I�	K�"&�!2�!2�!:�!:�1�!=�>�!=�A��Q��!=��>�����
,�	-��
=��
?s�B�&Bc�8�UOO]2Tt,tFDo[U2MJ	ooUOUQ*,QN2UOUQP,QN2UO[	U2Q2[
OQ2oUO]2Tt,tFDo[U2MJ	ooUOUQ*,QN2UOUQP,QN2UO[	U2Q2P!ttohttoh)	�:Nr5Nr�rB)z
1.2.3.0/32z
1.2.3.1/32z
1.2.3.2/32���)z1.2.3.253/32z1.2.3.254/32z1.2.3.255/32)z2001:658:22a:cafe::/128rEz2001:658:22a:cafe::2/128)z2001:658:22a:cafe::fd/128z2001:658:22a:cafe::fe/128z2001:658:22a:cafe::ff/128)r�rRr�r(rKrr�)r
r\rRr�s&   r�testGetSubnets3�IpaddrUnitTest.testGetSubnets3_s���#'�#4�#4�#<�#<�Q�#?�@�#?�a�3�q�6�#?��@�������6�	8��������<�	>�����W��s�+� �,�,�-F�G��#/�#7�#7��#:�;�#:�a�3�q�6�#:��;�������
)�	*�	
�������
*�	+�	
����W��s�+��#A��<s�D�+Dc��UO[[UOOO]	22UO[[UOO]	22UO[[UOOO]A22UO[[UOO]A22UO[[UOOO]A22UO[[UOO]A22P!)�	�rKr4r�r�rCrRr�r�r�r�r�r	s&r�testSubnetFailsForLargeCidrDiff�.IpaddrUnitTest.testSubnetFailsForLargeCidrDiffss������*�d��-�-�5�5�=�=�a�@�	B����*�d��+�+�3�3�A�6�	8����*�d��-�-�5�5�=�=�b�A�	C����*�d��+�+�3�3�B�7�	9����*�d��4�4�<�<�D�D�R�H�	J����*�d��2�2�:�:�2�>�	@rc�F�UO[UOOO]2UO[UO
OO]A2UO[UOOO]A2P!)�)rKr4r�rCr1r�r�r	s&r�!testSupernetFailsForLargeCidrDiff�0IpaddrUnitTest.testSupernetFailsForLargeCidrDiff�sz�����*��-�-�5�5�>�>��	D����*��-�-�5�5�>�>��	D����*��4�4�<�<�E�E�r�	Krc��UO[[UOOOP22UO[[UOOP22UO[[UOOOP22UO[[UOOP22UO[[UOOOP22UO[[UOOP22P!rIrnr	s&r�"testSubnetFailsForNegativeCidrDiff�1IpaddrUnitTest.testSubnetFailsForNegativeCidrDiff�s������*�d��-�-�5�5�=�=�b�A�	C����*�d��+�+�3�3�B�7�	9����*�d��-�-�5�5�=�=�b�A�	C����*�d��+�+�3�3�B�7�	9����*�d��4�4�<�<�D�D�R�H�	J����*�d��2�2�:�:�2�>�	@rc��UOUOOQ2UO[UOO	22]*O]�2UOUOO2OQ2UOUOOQ2UO[UOO	22]*OQ2UOUOO2OQ2UOUOOQ2UO[UOO	22]*OQ2UOUOO2OQ2P!)r���ll )r(r��
num_addressesr�rRr1r�r�r	s&r�testGetNum_Addresses�#IpaddrUnitTest.testGetNum_Addresses�sc������*�*�8�8�#�>�����d�/�/�7�7�9�:�1�=�K�K��	�����*�*�3�3�5�C�C�S�I�����*�*�8�8�:N�O�����d�/�/�7�7�9�:�1�=�K�K�,�	.�����*�*�3�3�5�C�C�-�	/�����1�1�?�?�AU�V�����d�6�6�>�>�@�A�!�D�R�R�,�	.�����1�1�:�:�<�J�J�-�	/rc��UO[OQ2UO2UO	[OQ2UO2[O
Q2oUOVO2UO
[OQ2O[OQ222P!)z1.2.3.128/25z
1.2.4.1/24z1.2.3.37z
1.1.0.0/16z
1.0.0.0/15)	r�rr�r�r�r�r�r��__contains__)r
�addr1s& r�testContains�IpaddrUnitTest.testContains�s����
�
�i�-�-�n�=��'�'�	)�����0�0��>��*�*�	,��%�%�j�1���
�
�e�.�.�/�	
����.�.�|�<�I�I��%�%�l�3�5�	6rc��UO[UO]*2Q2UO[UOO
Q2UO[UO]*2Q2UO[UOO
Q2UO[UO]*2Q2UO[UOO
Q2P!)��1.2.3.5r�z2001:658:22a:cafe::5rz)r(r�r�rK�
IndexError�__getitem__r�r�r	s&r�testNth�IpaddrUnitTest.testNth�s�������T�.�.�q�1�2�I�>����*�d�&7�&7�&C�&C�S�I�����T�.�.�q�1�2�/�	1����*�d�&7�&7�&C�&C�W�M�����T�5�5�a�8�9�/�	1����*�d�&>�&>�&J�&J�G�Trc���[OQ2oUO]UO2[	U2oUOQ[U]*22UOQ[U]*22UOQ[UP*22UOQ[UP*22UOUP*UP*2P!)z172.31.255.128/255.255.255.240z172.31.255.128z172.31.255.143)rr�r(rr�r�)r
r[�	addr_lists&  r�testGetitem�IpaddrUnitTest.testGetitem�s����$�$�%E�F������T�^�^�,���J�	����)�3�y��|�+<�=����)�3�t�A�w�<�8����)�3�y��}�+=�>����)�3�t�B�x�=�9�����2���R��1rc�8�UOUO[OQ26H2UO	UO[OQ26H2UO	UO[O
Q26H2UO	UO[O
Q26H2UO	UOP6H2UO	UO,6H2UO	UO]6H2UOUO[O
Q26H2UO	UO[O
Q26H2UO	UO[OQ26H2UO	UOP6H2UO	UO,6H2UO	UO]6H2UOUO[O
Q26H2UOUO[O
Q26H2UO	UO[O
Q26H2UO	UO[O
Q26H2UO	UO[O
Q26H2UO	UO[OQ26H2UO	UOP6H2UO	UO,6H2UO	UO]6H2P!)	r��
1.2.3.4/23�::1.2.3.4/24�::1.2.3.4%scope/24�2001:658:22a:cafe:200::1/64�2001:658:22a:cafe:200::1/63�!2001:658:22a:cafe:200::1%scope/64z'0000:0000:0000:0000:0000:0000:0102:0304�!2001:658:22a:cafe:200::1%scope/63)	rr�rr�r�r#r�r�r�r	s&r�	testEqual�IpaddrUnitTest.testEqual�s
������+�+�!�/�/��=�>�	?�����,�,�"�0�0��>�?�	@�����,�,�"�0�0��@�A�	B�����,�,�"�0�0�1E�F�G�	H�����,�,��2�3�����,�,��2�3�����,�,��1�2�����+�+��#�#�$A�B�C�	D�����,�,��#�#�$A�B�C�	D�����,�,�"�0�0��>�?�	@�����,�,��2�3�����,�,��2�3�����,�,��1�2�����2�2��#�#�$G�H�I�	J�����0�0��#�#�$M�N�O�	P�����3�3��#�#�$G�H�I�	J�����3�3��#�#�$A�B�C�	D�����3�3��#�#�$A�B�C�	D�����3�3�"�0�0��>�?�	@�����3�3�r�9�:�����3�3�r�9�:�����3�3�q�8�9rc�
�UOUO[OQ26g2UO	UO[OQ26g2UO	UO[O
Q26g2UO	UO[O
Q26g2UO	UOP6g2UO	UO,6g2UO	UO]6g2UO	UO[OQ26g2UO	UOP6g2UO	UO,6g2UO	UO]6g2UOUO[O
Q26g2UO	UO[O
Q26g2UO	UO[OQ26g2UO	UOP6g2UO	UO,6g2UO	UO]6g2UO	UO[OQ26g2UO	UOP6g2UO	UO,6g2UO	UO]6g2UOUO[O
Q26g2UO	UO[O
Q	26g2UO	UO[O
Q26g2UO	UO[O
Q26g2UO	UO[OQ26g2UO	UOP6g2UO	UO,6g2UO	UO]6g2UO	UO[OQ26g2UO	UOP6g2UO	UO,6g2UO	UO]6g2P!)
r�r�r�r�r�r�r�r|r�r�)r�r�rr�rr#r�r�r�r�r�r�r	s&r�testNotEqual�IpaddrUnitTest.testNotEqual�s������,�,�"�0�0��>�?�	@�����+�+�!�/�/��=�>�	?�����+�+�!�/�/��?�@�	A�����+�+�!�/�/�0D�E�F�	G�����+�+�r�1�2�����+�+�r�1�2�����+�+�q�0�1�����)�)�"�.�.�y�9�:�	;�����)�)�R�/�0�����)�)�R�/�0�����)�)�Q�.�/�����,�,��#�#�$A�B�C�	D�����+�+��#�#�$A�B�C�	D�����+�+�!�/�/��=�>�	?�����+�+�r�1�2�����+�+�r�1�2�����+�+�q�0�1�����)�)�!�-�-�i�8�9�	:�����)�)�R�/�0�����)�)�R�/�0�����)�)�Q�.�/�����3�3��#�#�$G�H�I�	J�����2�2��#�#�$G�H�I�	J�����2�2��#�#�$A�B�C�	D�����2�2��#�#�$A�B�C�	D�����2�2�!�/�/��=�>�	?�����2�2�b�8�9�����2�2�b�8�9�����2�2�a�7�8�����0�0�!�-�-�i�8�9�	:�����0�0�B�6�7�����0�0�B�6�7�����0�0�A�5�6rc�f�UO[[OQ22Q2P!)z1.2.3.4/255.255.255.255r��r(r�rr�r	s&r�testSlash32Constructor�%IpaddrUnitTest.testSlash32Constructor)s*������Y�4�4�-�/�0�1=�	?rc���UO[[OQ22Q2UO[[OQ22Q2P!r^)r(r�rr#r	s&r�testSlash128Constructor�&IpaddrUnitTest.testSlash128Constructor-sH������Y�4�4�Y�?�@�"+�	-�����Y�4�4�_�E�F�"1�	3rc�f�UO[[OQ22Q2P!)z1.2.3.4/0.0.0.0rr�r	s&r�testSlash0Constructor�$IpaddrUnitTest.testSlash0Constructor3s&������Y�4�4�5F�G�H�%�	'rc�T�[OQ2o[OQ2o[OQ2o[OQ2o[OQ2o[OQ2o[OVV4VV,2oUO[	U2[O
Q2[O
Q2,2[OQ2o[OQ2o[OQ2o[OQ2o[OVV4,2oUO[	U2[O
Q2,2[O
Q2o[O
Q2o[O
Q	2o[O
Q
2o[O
Q2o[O
Q2o[OVV4UU,2oUO[	U2[O
Q2[O
Q2,2[OV,2oUO[	U2[O
Q
2,2[O
Q29q�UO[	[OV�,22U,2[OQ29q�UO[	[OV�,22[OQ2,2[OQ2o[OQ2o[OQ2o[OVU,2oUO[	U2U,2[OQ2o[OQ2o[OQ2o[OVU,2oUO[	U2U,2[OQ2[OQ21[O
Q2[OQ21[O
Q2[OQ21,o
S
FD+vqUO[[OV,2J-	[OQ2[OQ21[O
Q2[OQ21[O
Q2[OQ21,o
S
FD+vqUO[[OV,2J-	P!)�1.1.1.0r��1.1.1.2z1.1.1.3z1.1.1.4z
1.1.1.0/30z
1.1.1.4/32z
1.1.0.0/24�
1.1.1.0/24�
1.1.2.0/24z
1.1.3.0/24z
1.1.4.0/24z
1.1.0.0/22z
1.1.0.0/23z
1.1.1.1/32z
2001::/100z
2001::/120�	2001::/96z2001::%scope/100z2001::%scope/120z2001::%scope/96rz
1.1.0.0/32z
2001::/128rz2001::%scope/128)rr��collapse_addressesr(r�r�rDr�r9rKrL)r
r�r�r��ip4�ip5�ip6�	collapsed�ip_same1�ip_same2�addr_tupless&          r�testCollapsing�IpaddrUnitTest.testCollapsing7s����#�#�I�.���#�#�I�.���#�#�I�.���#�#�I�.���#�#�I�.���#�#�I�.���0�0�
�s��*�,�	�����i���&�&�|�4��&�&�|�4�6�	7�
�#�#�I�.���#�#�I�.���#�#�I�.���#�#�I�.���0�0�#�C�1E�F�	�����i��#�/�/��=�>�	@��#�#�L�1���#�#�L�1���#�#�L�1���#�#�L�1���#�#�L�1���#�#�L�1���0�0�#�C�c�58�2:�;�	�����i��#�/�/��=�#�/�/��=�?�	@�
�0�0�#��<�	�����i��#�/�/��=�>�	@�(�3�3�L�A�A������i�:�:��(�*�+�"��	%�
(�3�3�I�>�>������i�:�:��(�*�+�#�.�.�|�<�=�	?��#�#�L�1���#�#�L�1���#�#�K�0���0�0�#�C��A�	�����i��3�%�0��#�#�$6�7���#�#�$6�7���#�#�$5�6���0�0�#�C��A�	�����i��3�%�0��%�%�i�0��%�%�e�,�.��&�&�|�4��&�&�|�4�6��&�&�|�4��&�&�|�4�6�
��$�H�C����i��)E�)E�"�j�
*�$�
�%�%�i�0��%�%�k�2�4��&�&�|�4��&�&�'9�:�<��&�&�|�4��&�&�'9�:�<�
��$�H�C����i��)E�)E�"�j�
*�$rc
�	�[Oo[OQ2o[OQ2oQQ[O2oUQ2oUQ2oUO	[
[UVV22UO	[[UU[OQ222UO	[[UU[OQ222UO[
UV#22]*[OQ22[OQ2oUO[
UV#22[OQ2[OQ2,2[O]2o[O[OO2oUO[OQ	2,[
UV#222[OQ
2o[OQ2oUO[
UV#22]*[OQ22[OQ
2oUO[
UV#22[OQ2[OQ2,2[OQ2o[OQ2oUO[
UV#22]*[OQ22[OQ2oUO[
UV#22[OQ2[OQ2,2UO	[
[U[OQ2[OQ222UO	[[U[OQ2[OQ222UO	[[U[OQ2[OQ222UO	[[U[OQ2[OQ222P!)r�z	1.1.1.255c�2`�\sQsQsn\Q2sQsUsP!)�3IpaddrUnitTest.testSummarizing.<locals>.IPv7Addressi�c��]!)�r.r	s&rr��;IpaddrUnitTest.testSummarizing.<locals>.IPv7Address.version�s��rr.)r/r0r1r2r3r�r6r7r8s@r�IPv7Addressr��s����
�
��
rr�rrr�z1.1.1.8z
1.1.1.0/29r0rz$1:ffff:ffff:ffff:ffff:ffff:ffff:ffffz1::/16z2::z2::/128z	1::%scopez*1:ffff:ffff:ffff:ffff:ffff:ffff:ffff%scopez	2::%scopez1.1.0.0r�)
r�summarize_address_ranger9rrKr4r�rLr(rDr��	_ALL_ONESr�)r
�	summarizer�r�r��ip_invalid1�ip_invalid2s&      r�testSummarizing�IpaddrUnitTest.testSummarizing�s����5�5�	��"�"�9�-���"�"�;�/��	�)�/�/�	�"�%�(��!�%�(�����*�d�#�K�=�	?�	
���)�T�#�C��)>�)>�u�)E�F�	H����)�T�#�C��)>�)>�{�)K�L�	N�	
����i��1�2�1�5�"�-�-�l�;�	=��"�"�9�-������i��1�2�#�.�.�|�<�#�.�.�y�9�;�	<��#�#�A�&���#�#�I�$9�$9�$C�$C�D�����)�/�/��<�=��i��1�2�	4��"�"�5�)���"�"�#I�J������i��1�2�1�5�"�-�-�h�7�	9��"�"�5�)������i��1�2�#�.�.�x�8�#�.�.�y�9�;�	<��"�"�;�/���"�"�#O�P������i��1�2�1�5�"�-�-�h�7�	9��"�"�;�/������i��1�2�#�.�.�x�8�#�.�.�y�9�;�	<�
	
���*�d�#�I�$8�$8��$C�$-�$8�$8��$C�E�	F�	
���)�T�#�I�$8�$8��$C�$-�$8�$8��$C�E�	F�	
���)�T�#�I�$8�$8��$C�$-�$8�$8��$C�E�	F�	
���)�T�#�I�$8�$8��$>�$-�$8�$8��$C�E�	Frc���UO[OQ2[OQ26*2UO[OQ2[OQ26*2UO[OQ2[OQ26*2UO[OQ2[OQ26*2UO[OQ2[OQ26*2UO[OQ2[OQ26*2P!)r�r�r�::2rrJ)rrr9r	s&r�testAddressComparison�$IpaddrUnitTest.testAddressComparison�s
�����	�,�,�Y�7�!�,�,�Y�7�8�	9����	�,�,�Y�7�!�,�,�Y�7�8�	9����	�,�,�U�3�!�,�,�U�3�4�	5����	�,�,�U�3�!�,�,�U�3�4�	5����	�,�,�[�9�!�,�,�[�9�:�	;����	�,�,�[�9�!�,�,�[�9�:�	;rc�p�UO[OQ2[OQ26H2UO[OQ2[OQ262UO[OQ2[OQ262UO[OQ2[OQ262UO[OQ2[OQ26�2UO[OQ2[OQ26�2UO[OQ2[OQ26�2UO[OQ2[OQ26H2UO[OQ2[OQ262UO[OQ2[OQ262UO[OQ2[OQ262UO[OQ2[OQ26�2UO[OQ2[OQ26�2UO[OQ2[OQ26�2UO[OQ2[OQ26H2UO[OQ2[OQ	262UO[OQ2[OQ
262UO[OQ2[OQ262UO[OQ	2[OQ26�2UO[OQ
2[OQ26�2UO[OQ2[OQ26�2UO[OQ2[OQ26H2UO[OQ2[OQ262UO[OQ2[OQ262UO[OQ2[OQ262UO[OQ	2[OQ26�2UO[OQ
2[OQ26�2UO[OQ2[OQ26�2UO[OQ2[OQ26H2UO[OQ2[OQ	262UO[OQ2[OQ
262UO[OQ2[OQ262UO[OQ2[OQ26�2UO[OQ2[OQ26�2UO[OQ2[OQ26�2P!)z
1.1.1.1/24z
1.1.1.1/16z
1.1.1.2/24z
1.1.1.2/16z::1/64z::1/80z::2/64z::2/48z::1%scope/64z::1%scope/80z::2%scope/64z::2%scope/48)rrr?r�r	s&r�testInterfaceComparison�&IpaddrUnitTest.testInterfaceComparison�s �����	�.�.�|�<�!�.�.�|�<�=�	>����	�.�.�|�<�!�.�.�|�<�=�	>����	�.�.�|�<�!�.�.�|�<�=�	>����	�.�.�|�<�!�.�.�|�<�=�	>����	�.�.�|�<�!�.�.�|�<�=�	>����	�.�.�|�<�!�.�.�|�<�=�	>����	�.�.�|�<�!�.�.�|�<�=�	>�	
���	�.�.�x�8�!�.�.�x�8�9�	:����	�.�.�x�8�!�.�.�x�8�9�	:����	�.�.�x�8�!�.�.�x�8�9�	:����	�.�.�x�8�!�.�.�x�8�9�	:����	�.�.�x�8�!�.�.�x�8�9�	:����	�.�.�x�8�!�.�.�x�8�9�	:����	�.�.�x�8�!�.�.�x�8�9�	:�	
���	�.�.�~�>�!�.�.�~�>�?�	@����	�.�.�~�>�!�.�.�~�>�?�	@����	�.�.�~�>�!�.�.�~�>�?�	@����	�.�.�~�>�!�.�.�~�>�?�	@����	�.�.�~�>�!�.�.�~�>�?�	@����	�.�.�~�>�!�.�.�~�>�?�	@����	�.�.�~�>�!�.�.�~�>�?�	@�	
����/�/��?�!�.�.�x�8�9�	:����	�.�.�~�>�!�.�.�x�8�9�	:����	�.�.�~�>�!�.�.�x�8�9�	:����	�.�.�~�>�!�.�.�x�8�9�	:����	�.�.�~�>�!�.�.�x�8�9�	:����	�.�.�~�>�!�.�.�x�8�9�	:����	�.�.�~�>�!�.�.�x�8�9�	:�	
����/�/��9�!�.�.�~�>�?�	@����	�.�.�x�8�!�.�.�~�>�?�	@����	�.�.�x�8�!�.�.�~�>�?�	@����	�.�.�x�8�!�.�.�~�>�?�	@����	�.�.�x�8�!�.�.�~�>�?�	@����	�.�.�x�8�!�.�.�~�>�?�	@����	�.�.�x�8�!�.�.�~�>�?�	@rc��[OQ2o[OQ2o[OQ2oUOV62UOV26�2UOUO	U2]2UOUO	U2P2UOUO	U2]2UOUO	U2P2UOUO	U2]2UOUO2UO262[OQ2o[OQ2o[OQ2oUOV62UOV26�2UOUO	U2P2UOUO2UO262UO[UOOUO2[OQ2o[OQ2oUO[UOU2UO[UOU2UO[UOU2UO[UOU2[OQ2oUO!V62UO!V6�2[OQ	2oUOV62UO!V!62UO!V6�2UOV!6�2[OQ
2oUOV#62UO!V262UO!V#6�2UOV26�2[OQ2o[OQ2o[OQ
2o[OQ2oVV6,oV&V,oUO#2UOVx2VaV2,oUO#2UOVx2UO%UO&Q22[(2UO%UO&Q22[(2UO[OQ2[OQ26*2UO[OQ2[OQ26*2UO![OQ2[OQ26*2UO[OQ2[OQ26*2UO[OQ2[OQ26*2UO![OQ2[OQ26*2P!)r�z
1.1.1.0/32r�z2001:2000::/96z2001:2001::/96z2001:ffff:2000::/96�::/0r0z
10.1.2.128/25z10.1.3.0/24z10.1.3.0/25z
10.10.10.0/31z
10.10.10.0z
10.10.10.2/31z
10.10.10.2r�r�rr�)rr�rr(�compare_networks�_get_networks_keyr�rKrLr�r�r#r�r�r�rDr��sort�assertIsr9rP)	r
r�r�r�r�r�r�r��unsorteds	&        r�testNetworkComparison�$IpaddrUnitTest.testNetworkComparison=s����#�#�L�1���#�#�L�1���#�#�L�1������	�"�����	�"�����-�-�c�2�A�6�	
����-�-�c�2�B�7�����-�-�c�2�A�6�����-�-�c�2�B�7�����-�-�c�2�A�6�����-�-�/�#�2G�2G�2I�I�J��#�#�$4�5���#�#�$4�5���#�#�$9�:������	�"�����	�"�����-�-�c�2�B�7�����-�-�/�#�2G�2G�2I�I�J�	
���)��+�+�<�<��+�+�	-��&�&�v�.���&�&�{�3�����)�T�[�[�$�7����)�T�[�[�$�7����)�T�[�[�$�7����)�T�[�[�$�7��"�"�?�3�������#������#��"�"�=�1������	�"������#������#�����	�"��"�"�=�1������	�"������#������#�����	�"��"�"�?�3���"�"�<�0���"�"�?�3���"�"�<�0���C�%���c�'���
�
������*��c�'���
�
������*��
�
�c�j�j��!5�!5�l�!C�D�$�	&��
�
�c�j�j��!5�!5�l�!C�D�$�	&�	
���	�,�,�Y�7�!�,�,�Y�7�8�	9����	�,�,�Y�7�!�,�,�Y�7�8�	9�����-�-�i�8�!�,�,�Y�7�8�	9�	
���	�,�,�U�3�!�,�,�U�3�4�	5����	�,�,�U�3�!�,�,�U�3�4�	5�����-�-�e�4�"�-�-�e�4�5�	6rc���UO[[OQ2UO[[OQ2UO[[OQ2P!)z192.168.1.1/24z::1/120z
::1%scope/120)rKr4rrDr	s&r�testStrictNetworks�!IpaddrUnitTest.testStrictNetworks�sK�����*�i�&:�&:�<L�M����*�i�&:�&:�I�F����*�i�&:�&:�O�Lrc�t�[OQ2o[OQ2o[OQ2oUOUOO	U22UOUOO	U22UOUO	U22P!)z
1.2.3.0/30z
1.2.2.0/24z1.2.2.64/26)rr�rr��overlapsr�)r
rS�other2�other3s&   r�testOverlaps�IpaddrUnitTest.testOverlaps�s����%�%�l�3���&�&�|�4���&�&�}�5������)�)�2�2�5�9�:�����*�*�3�3�F�;�<��������/�0rc���Qo[OU2o[OQU*2oUO[	UO
2[	UO
22[OQU*2oUO
UO
UO
2UO[O[OQ2P!)rmz::%sz	::ffff:%sz2001:1.1.1.1:1.1.1.1)	rr�r#r(r�r�rNrKr)r
�ipv4_stringr��
v4compat_ipv6�
v4mapped_ipv6s&    r�testEmbeddedIpv4�IpaddrUnitTest.testEmbeddedIpv4�s���#���&�&�{�3��!�/�/���0D�E�
�����]�-�-�.��D�G�G��=�!�/�/��k�0I�J�
����M�,�,�d�g�g�6����)�5�5�y�7N�7N�0�	2rc�x�UO[OQ2[OQ22UO[OQ2[OQ22UO[OQ2[OQ22UO[OQ2[OQ22UO[OQ2[OQ	22UO[OQ
2[OQ22UO[OQ2[OQ22UO[OQ
2[OQ22UO[OQ2[OQ	22UO[OQ2[OQ22UO[OQ2[OQ
22UO[OQ2[OQ22P!)z::FFFF:192.0.2.1z::FFFF:c000:201zFFFF::192.0.2.1zFFFF::c000:201z-0000:0000:0000:0000:0000:FFFF:192.168.255.255z::ffff:c0a8:ffffz-FFFF:0000:0000:0000:0000:0000:192.168.255.255zffff::c0a8:ffffz::FFFF:192.0.2.1%scopez::FFFF:c000:201%scopezFFFF::192.0.2.1%scopezFFFF::c000:201%scopez30000:0000:0000:0000:0000:FFFF:192.168.255.255%scopez::ffff:c0a8:ffff%scopez3FFFF:0000:0000:0000:0000:0000:192.168.255.255%scopezffff::c0a8:ffff%scope)r(rr9rNr	s&r�testIPv6AddressTooLarge�&IpaddrUnitTest.testIPv6AddressTooLarge�s������-�-�.@�A�#�.�.�/@�A�	C�	
����-�-�.?�@�#�.�.�/?�@�	B�	
����-�-�.]�^�#�.�.�/A�B�	D�����-�-�.]�^�#�.�.�/@�A�	C�	
����-�-�.F�G�#�.�.�/F�G�	I�����-�-�.E�F�#�.�.�/E�F�	H����I�0�0�1I�J�%�0�0�1B�C�	E����I�0�0�1H�I�%�0�0�1A�B�	D����I�0�0�1C�D�#�.�.�/F�G�	I����I�0�0�1B�C�#�.�.�/E�F�	H�����-�-�.c�d�#�.�.�/G�H�	J�����-�-�.c�d�#�.�.�/F�G�	Irc���UO[OO]2UO[OO]2UOUO
O]2UOUOO]2UOUOO]2UOUOO]2P!)�)	r(rr�r�rr�r�r�r�r	s&r�
testIPVersion�IpaddrUnitTest.testIPVersion�s�������.�.�6�6��:�����.�.�6�6��:�����*�*�2�2�A�6�����*�*�2�2�A�6�����1�1�9�9�1�=�����1�1�9�9�1�=rc��UO[OO] 2UO[OO]�2UOUO
O] 2UOUOO]�2UOUOO]�2P!)r�)r(rr��
max_prefixlenrr�r�r�r	s&r�testMaxPrefixLength�"IpaddrUnitTest.testMaxPrefixLength�s�������.�.�<�<�b�A�����.�.�<�<�c�B�����,�,�:�:�B�?�����,�,�:�:�C�@�����3�3�A�A�3�Grc���UOUOOQ2UO[OQ2OQ2UOUO
OQ2UO[OQ2OQ2UO[OQ2OQ	2UOUOOQ2UO[OQ2OQ2UO[OQ2OQ	2P!)
r�r�r�r�r�z::1:0:0:0:0zffff:2:3:4:ffff::%scopez::1:0:0:0:0%scoper�s)r(r��packedrr�r�r#r�r	s&r�
testPacked�IpaddrUnitTest.testPacked�s)������*�*�1�1�,�	.�����0�0�1B�C�J�J�,�	.�����*�*�1�1�=�	>�	
����0�0�1D�E�L�L�*�	+�	
����0�0��?�F�F�@�	B�����1�1�8�8�=�	>�	
����0�0�1J�K�R�R�*�	+�	
����0�0�1D�E�L�L�@�	Brc��[OQ2o[OQ2o[OQ2o[OQ2oUO[O[U22UO[O[U22UO[O[U22UO[O[U22P!)r|r�)	rrDr9r(r�r�r�r�r)r
�ipv4net�ipv4addr�ipv6net�ipv6addrs&    r�
testIpType�IpaddrUnitTest.testIpType�s����&�&�y�1���'�'�	�2���&�&�{�3���'�'��4������.�.��W�
�>�����.�.��X��?�����.�.��W�
�>�����.�.��X��?rc�6�UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O
2UO
[OQ2O2UO[OQ2O2UO[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP
[OQ	2O2UOP
[OQ	2O
2UOP	[OQ
2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ
2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP
[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O
2UOP
[OQ2O
2UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP
[OQ	2O2UOP	[OQ
2O2UOP
[OQ2O2UO[OQ2O2UO
[OQ2O2UO
[OQ2O2UO[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UO
[OQ 2O2UO[OQ!2O2UOP	[OQ"2O2UOP	[OQ#2O2UOP
[OQ2O2UOP	[OQ2O2P!)$Tz224.1.1.1/31z	240.0.0.0z
0.0.0.0/32z
0.0.0.0/31r�z192.168.1.1/17z192.169.0.0z10.255.255.255z11.0.0.0z172.31.255.255z
172.32.0.0z169.254.1.0/24z169.254.100.200/24z169.255.100.200/24z127.100.200.254/32z
127.42.0.0/16z	128.0.0.0z
100.64.0.0/10z192.0.2.128/25z192.0.3.0/24rkz	224.1.1.1z	240.0.0.1z239.255.255.255rz	192.0.0.0z	192.0.0.9z
192.0.0.10z192.0.0.255z169.254.100.200z169.255.100.200z	192.0.7.1z203.0.113.1z127.100.200.254z
127.42.0.0)r(rr?�is_multicastrD�is_reservedr�is_unspecifiedr��
is_private�
is_link_local�is_loopback�	is_globalr9r	s&r�testReservedIpv4�IpaddrUnitTest.testReservedIpv4�s8������y�5�5��  � ,��	.�����	� 4� 4�[� A� N� N�O�����y�3�3�K�@�L�L�M����	�.�.�|�<�K�K�L�����/�/��=�L�L�M�����/�/��=�L�L�M�����y�5�5� � "�",�*�	.�����	� 4� 4�]� C� N� N�O�����y�3�3� � "�",�*�	.�����	� 4� 4�Z� @� K� K�L�����	� 4� 4�Z� @� L� L�M�����y�3�3� � "�",�*�	.�����	� 4� 4�\� B� M� M�N�����"�-�-�.>�?�M�M�	O�	
����#�0�0�2�4�4A�M�	C�	
����#�0�0�2�4�4A�M�	C�	
����#�.�.�2�4�4?�K�	A�	
����y�3�3�� !�!,��	.�����	� 4� 4�[� A� M� M�N�����"�-�-�o�>�I�I�	K�����	� 4� 4�_� E� O� O�P�����"�-�-�.>�?�J�J�	L�����"�-�-�n�=�G�G�	I�	
����y�3�3�I�>�M�M�N�����y�3�3�K�@�M�M�N�����	� 4� 4�[� A� N� N�O�����y�3�3�K�@�L�L�M�����"�-�-�.?�@�L�L�	N�	
����y�3�3�M�B�M�M�N�����	� 4� 4�]� C� N� N�O�����y�3�3� � "�",�*�	.�����	� 4� 4�Z� @� K� K�L�����y�3�3� � "�",�*�	.�����	� 4� 4�\� B� M� M�N�����-�-�k�:�D�D�E����	�,�,�[�9�C�C�D����	�,�,�\�:�D�D�E�����-�-�m�<�F�F�G�����"�-�-�.?�@�N�N�	P�����"�-�-�.?�@�N�N�	P�	
���	�,�,�[�9�C�C�D�����-�-�m�<�F�F�G�����#�.�.�/@�A�M�M�	O�����y�3�3�L�A�M�M�N�����	� 4� 4�[� A� M� M�N�����y�3�3�I�>�M�M�Nrc��
�UOP
[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ	2O2UOP	[OQ
2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ
2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP	[OQ2O2P!)Fr0z	1.0.0.0/8z	0.0.0.0/8�
10.0.0.0/8z127.0.0.0/8z169.254.0.0/16z
172.16.0.0/12z192.0.0.0/29z192.0.0.9/32z192.0.0.170/31r�z192.168.0.0/16z
198.18.0.0/15z198.51.100.0/24z203.0.113.0/24z240.0.0.0/4z255.255.255.255/32r�z::ff/128r��::/128z
::ffff:0:0/96z100::/64z2001:2::/48z2001:3::/48rz2001:10::/28zfc00::/7z	fe80::/10)r(rrDr�r	s&r�testPrivateNetworks�"IpaddrUnitTest.testPrivateNetworksL	s�������	� 4� 4�[� A� L� L�M�����	� 4� 4�[� A� L� L�M�����y�3�3�K�@�K�K�L�����y�3�3�L�A�L�L�M�����y�3�3�M�B�M�M�N�����y�3�3�4D�E�P�P�Q�����y�3�3�O�D�O�O�P�����y�3�3�N�C�N�N�O�����	� 4� 4�^� D� O� O�P�����y�3�3�4D�E�P�P�Q�����y�3�3�N�C�N�N�O�����y�3�3�4D�E�P�P�Q�����y�3�3�O�D�O�O�P�����y�3�3�4E�F�Q�Q�R�����y�3�3�4D�E�P�P�Q�����y�3�3�M�B�M�M�N�����y�3�3�4H�I�T�T�U�����	� 4� 4�V� <� G� G�H�����	� 4� 4�Z� @� K� K�L�����y�3�3�I�>�I�I�J�����y�3�3�H�=�H�H�I�����y�3�3�O�D�O�O�P�����y�3�3�J�?�J�J�K�����y�3�3�M�B�M�M�N�����	� 4� 4�]� C� N� N�O�����y�3�3�O�D�O�O�P�����y�3�3�N�C�N�N�O�����y�3�3�J�?�J�J�K�����y�3�3�K�@�K�K�Lrc�d�UOP	[OQ2O2UOP	[O]]�*]*
2O2UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP
[OQ2O2UOP	[OQ2O
2UOP	[OQ2O
2UOP
[OQ	2O
2UOP
[OQ
2O
2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ
2O2UOP
[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP
[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP
[OQ2O2UOP	[OQ2O
2UOP	[OQ2O2UOP	[OQ2O2UOP	[O]]�*]*
2O2UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP
[OQ2O2UOP	[OQ2O
2UOP	[OQ2O
2UOP
[OQ	2O
2UOP
[OQ
2O
2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ
2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UO[OQ2O2UO[OQ2O2UO[OQ2O2UO[OQ2O2UO[OQ2O2UO[OQ2O2UO[OQ2O2UO[OQ2O2UO[OQ 2O2UO[OQ!2O2UO[OQ"2O2UO[OQ#2O2UO[OQ$2O2UO[OQ%2O2UOP	[OQ&2O2UOP	[OQ'2O2P!)(Tzffff::zff00::zfdff::zfecf::zfeff:ffff:ffff:ffff::z
fbf:ffff::zfc00::zfc00:ffff:ffff:ffff::zfbff:ffff::zfe00::zfea0::zfebf:ffff::zfe7f:ffff::zfec0::z	0:0::0:01z::1/127r�r�z0::0rz::/127z2001::1/128z
200::1/128z64:ff9b:1::z2001::z	2001:1::1z	2001:1::2z2001:2::z2001:3::z2001:4::z2001:4:112::z	2001:10::z	2001:20::z	2001:30::z	2001:40::z2002::z3fff::z100::z4000::1/128)r(rrDr��
is_site_localr�r�r?r�r�r�r9r�rr�r	s&r�testReservedIpv6�IpaddrUnitTest.testReservedIpv6n	s������y�3�3�H�=�J�J�K�����y�3�3�A�s�F�Q�J�?�L�L�M�����y�3�3�H�=�J�J�K�����	� 4� 4�X� >� K� K�L�����y�3�3�H�=�K�K�L�����y�3�3�'� )�)6��	8�����	� 4� 4��!�+�m�	-�����	� 4� 4�X� >� L� L�M�����y�3�3�H�=�H�H�I�����y�3�3�'� )�)3��	5�����	� 4� 4�]� C� N� N�O�����	� 4� 4�X� >� I� I�J�����y�3�3�H�=�K�K�L�����y�3�3�� �,�}�	.�����	� 4� 4��!�,�}�	.�����	� 4� 4�X� >� L� L�M�����y�5�5�k�B�N�N�O�����	� 6� 6�y� A� M� M�N�����	� 4� 4�T� :� F� F�G�����	� 4� 4�U� ;� G� G�H�����y�3�3�F�;�J�J�K�����	� 4� 4�U� ;� J� J�K�����	� 4� 4�X� >� M� M�N�����"�-�-�m�<�G�G�	I�����"�-�-�l�;�E�E�	G�	
����y�3�3�H�=�J�J�K�����y�3�3�A�s�F�Q�J�?�L�L�M�����y�3�3�H�=�J�J�K�����	� 4� 4�X� >� K� K�L�����y�3�3�H�=�K�K�L�����y�3�3�'� )�)6��	8�����	� 4� 4��!�+�m�	-�����	� 4� 4�X� >� L� L�M�����y�3�3�H�=�H�H�I�����y�3�3�'� )�)3��	5�����	� 4� 4�]� C� N� N�O�����	� 4� 4�X� >� I� I�J�����y�3�3�H�=�K�K�L�����y�3�3�� �,�}�	.�����	� 4� 4��!�,�}�	.�����	� 4� 4�X� >� L� L�M�����y�3�3�K�@�L�L�M�����y�3�3�E�:�F�F�G�����	� 4� 4�U� ;� G� G�H�����y�3�3�F�;�J�J�K�����	� 4� 4�U� ;� J� J�K�����-�-�m�<�F�F�G�����-�-�h�7�A�A�B����	�,�,�[�9�C�C�D����	�,�,�[�9�C�C�D�����-�-�j�9�C�C�D����	�,�,�Z�8�B�B�C�����-�-�j�9�C�C�D����	�,�,�^�<�F�F�G�����-�-�k�:�D�D�E����	�,�,�[�9�C�C�D����	�,�,�[�9�C�C�D�����-�-�k�:�D�D�E�����-�-�h�7�A�A�B�����-�-�h�7�A�A�B�	
����y�3�3�G�<�H�H�I�����y�3�3�M�B�N�N�Orc�x�UO[OQ2O[OQ22UO[OQ2OP2UO[OQ2O[OQ22P!)rrz
::c0a8:101r)r(rr9r r	s&r�testIpv4Mapped�IpaddrUnitTest.testIpv4Mapped�	s�������$�$�%9�:�F�F��$�$�]�3�	5�	
����-�-�l�;�G�G��N�����-�-�.?�@�L�L�"�-�-�m�<�	>rc	��QFCD_oUOU29^tt^2[OU2o[OQU02oUO	UO
UO
2UO	UOUO2UO	UOUO2UO	UOUO2UO	UOUO2UO	UOUO2UO	UOUO2PPP2CJb	P!)%fhCJx9h)�178.62.3.251r)rz169.254.169.254�	127.0.0.1z	224.0.0.1rmrkz
100.64.0.1)rXrr�rr(r�r�r�r�r�r�r�)r
�addr4r�r�s&   r�testIpv4MappedProperties�'IpaddrUnitTest.testIpv4MappedProperties�	s��
�E����e�$�$� �,�,�U�3�� �,�,�w�u�g�->�?��� � �������@�� � ����$�/�/�B�� � ��!1�!1�4�3C�3C�D�� � ��!2�!2�D�4E�4E�F�� � ��!4�!4�d�6I�6I�J�� � ��!3�!3�T�5G�5G�H�� � ��!1�!1�4�3C�3C�D�%�$�
�%�$�$�s�D:E+	�+E=
�4E=
c���UOP	[OQ2O2UOP
[OQ2O2P!)Trz::ffff:172.32.0.0)r(rr9r�r	s&r�testIpv4MappedPrivateCheck�)IpaddrUnitTest.testIpv4MappedPrivateCheck�	sN������i�*�*�+?�@�K�K�	M�����y�+�+�,?�@�K�K�	Mrc�H�UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2UOP	[OQ2O2UOP	[OQ2O2UOP
[OQ2O2P!)Tz::ffff:127.100.200.254/128z::ffff:127.42.0.0/112z::ffff:128.0.0.0z::ffff:127.100.200.254z::ffff:127.42.0.0)r(rrDr�r9r	s&r�testIpv4MappedLoopbackCheck�*IpaddrUnitTest.testIpv4MappedLoopbackCheck�	s�������y�3�3�,� .�.9�k�	;�����y�3�3�'� )�)4��	6�����	� 4� 4�"�!$�$/�K�	1�	
����y�3�3�(� *�*5�+�	7�����y�3�3�#� %�%0�[�	2�����	� 4� 4�"�!$�$/�K�	1rc
���[OQ2o[OQ2o[OQ2o[OQ2o[OQ2o[OQ2oUO[	[UO
U222[OQ2[OQ2,2UO[[
UO
U22UO[[
UO
U22UO[[
UO
U22UO[UO
U22,2UO[	[UO
U222[OQ2[OQ	2[OQ
2[OQ2[OQ2[OQ
2[OQ2[OQ2,2P!)�10.1.1.0/24z10.1.1.0/26z10.2.1.0/24�10.1.1.0z2001:db8::0/32z10.1.1.5/32z10.1.1.64/26z
10.1.1.128/25z10.1.1.0/30z10.1.1.4/32z10.1.1.6/31z10.1.1.8/29z10.1.1.16/28z10.1.1.32/27)
rrDr9r(r�r��address_excluderKr4rL�r
r��addr2�addr3r�addr5�addr6s&      r�testAddrExclude�IpaddrUnitTest.testAddrExclude
s����$�$�]�3���$�$�]�3���$�$�]�3���$�$�Z�0���$�$�%5�6���$�$�]�3�������U�%:�%:�5�%A� B�C�#�.�.�~�>�#�.�.��?�A�	B�	
���*�d�E�,A�,A�%�,H�I����)�T�5�+@�+@��+G�H����)�T�5�+@�+@��+G�H�����e�3�3�E�:�;�R�@������U�%:�%:�5�%A� B�C�#�.�.�}�=�#�.�.�}�=�#�.�.�}�=�#�.�.�}�=�#�.�.�~�>�#�.�.�~�>�#�.�.�~�>�#�.�.��?�A�	Brc��UO[[OQ22[[OQ222UO[[OQ22[[OQ222UO[[O
Q22[[O
Q222UO[[O
Q22[[O
[
[O
Q2O2222[O
Q2o[O
Q2o-oPV0O$PV0O$PV1$PV2$UOUOU2UOV#2P!)rrr|r)r(�hashrr?rDr9r�r�r�r�r�)r
r�r��dummys&   r�testHash�IpaddrUnitTest.testHash
s`������i�4�4�]�C�D��i�4�4�]�C�D�	F�����i�2�2�=�A�B��i�2�2�=�A�B�	D�����i�2�2�:�>�?��i�2�2�:�>�?�	A�	
����i�2�2�9�=�>��i�2�2��	�,�,�Y�7�;�;�<�>�?�	@��"�"�:�.���"�"�5�)����#'���� �#'���� ���
���
��
�
�d�'�'��/��
�
�c�!rc���UOoUOQUO2UOoUO	[
UO]]�*]*2P!)r�)r�r(�
compressedr�rKr4�_string_from_ip_intr"s& r�testIPBases�IpaddrUnitTest.testIPBases.
sL����������s�~�~�6��������*�c�&=�&=�q�#�v��z�Jrc��UOoUOQUO2UOQUO2UOQUO2UOQ[U22P!)r�z)2001:658:22a:cafe::/ffff:ffff:ffff:ffff::z)2001:658:22a:cafe::/::ffff:ffff:ffff:ffff)r�r(�with_prefixlen�with_netmask�
with_hostmaskr�r"s& r�testIPv6NetworkHelpers�%IpaddrUnitTest.testIPv6NetworkHelpers4
sm���������1�3�3E�3E�F����D��)�)�	+����D��*�*�	,����1�3�s�8�<rc��UOoUOQUO2UOQUO2UOQUO2UOQ[U22P!)r�z1.2.3.0/255.255.255.0z1.2.3.0/0.0.0.255)r�r(r0r1r2r�r"s& r�testIPv4NetworkHelpers�%IpaddrUnitTest.testIPv4NetworkHelpers=
se����������s�'9�'9�:����0�#�2B�2B�C����,�c�.?�.?�@�����s�3�x�0rc���[OQ2o[OU2o[OQ2o[OU2o[OQ2o[OQ2oUOV2UOV42UOU[OU22UOU[OU22P!)rr�r�r)rrDr?r�rr(rs&      r�testCopyConstructor�"IpaddrUnitTest.testCopyConstructorD
s����$�$�]�3���$�$�U�+���&�&�'D�E���&�&�u�-���%�%�i�0���%�%�&@�A������&�����&�����	� 5� 5�e� <�=�����	� 5� 5�e� <�=rc
�*�-QQaQQaQQaQQaQQ	aQ
QaQQ
aQQaQQaQQaQQaQQaQQaQQaQQaQQaQ Q!aQ"Q#Q$Q%Q&Q'Q(Q)-Ao[UO22FD4vq#UOU[[O
U222J6	P!)*z1:2:3:4:5:6:7:8z1:2:3:4:5:6:7:8/128z2001:0:0:4:0:0:0:8z2001:0:0:4::8/128z2001:0:0:4:5:6:7:8z2001::4:5:6:7:8/128z2001:0:3:4:5:6:7:8z2001:0:3:4:5:6:7:8/128z0:0:3:0:0:0:0:ffffz0:0:3::ffff/128z0:0:0:4:0:0:0:ffffz::4:0:0:0:ffff/128z0:0:0:0:5:0:0:ffffz::5:0:0:ffff/128z1:0:0:4:0:0:7:8z1::4:0:0:7:8/128z0:0:0:0:0:0:0:0rz0:0:0:0:0:0:0:0/0r�z0:0:0:0:0:0:0:1r�z*2001:0658:022a:cafe:0000:0000:0000:0000/66rbr�z
::102:304/128z1:2:3:4:5:ffff:1.2.3.4z1:2:3:4:5:ffff:102:304/128z::7:6:5:4:3:2:1z0:7:6:5:4:3:2:1/128z::7:6:5:4:3:2:0z0:7:6:5:4:3:2:0/128z7:6:5:4:3:2:1::z7:6:5:4:3:2:1:0/128z0:6:5:4:3:2:1::z0:6:5:4:3:2:1:0/128z-0000:0000:0000:0000:0000:0000:255.255.255.255z::ffff:ffff/128z-0000:0000:0000:0000:0000:ffff:255.255.255.255z::ffff:255.255.255.255/128z-ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255z+ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128)r��itemsr(r�rr#)r
�test_addresses�uncompressedr+s&   r�testCompressIPv6Address�&IpaddrUnitTest.testCompressIPv6AddressQ
sB����4�� �"5��
!�"7��
!�":�	�

!�"3��
!�"6�
�
!�"4��
�1��
�x��
 ���
�y��
9�$��
���
%�&B�� 
�4�!�"
�4�#�$
�4�%�&
�4�;�=N�;�=Y�;�=�/��2)-�^�-A�-A�-C�(D�$�L����Z��Y�-D�-D��.�*�
 �)Erc��[OQ2o[OQ2o[OQ2o[OQ2oUOQUO2UOQ[OQ2O2UOQUO2UOQUO2UOQUO2P!)	z2001::1�2001:0:5ef5:79fd:0:59d:a0e5:ba1r�z
192.168.178.1z+2001:0000:0000:0000:0000:0000:0000:0001/128z+0000:0000:0000:0000:0000:0000:0000:0001/128r�z'2001:0000:5ef5:79fd:0000:059d:a0e5:0ba1z*2001:0000:0000:0000:0000:0000:0000:0000/96)rr#rr�r�r(r)r
r�rr rs&    r�testExplodeShortHandIpStr�(IpaddrUnitTest.testExplodeShortHandIpStro
s����'�'�	�2���%�%�&G�H���%�%�k�2���%�%�o�6�����F����	)����F�"�0�0��;�D�D�	F�	
���B����	)����E����	)�����%�.�.�9rc	���QFD[vqUOQUQ59^tt^2[OU2oUOUOU2PPP2J]	QFD[vqBUOQUQ59^tt^2[O
U2oUOUOU2PPP2J]	P!)%fhJ�9h)%fhJ�9h)r�ipv4_reverse_pointer)r[�ipv6_reverse_pointer))rz1.0.0.127.in-addr.arpa)z	10.2.0.52z52.0.2.10.in-addr.arpa))r�zH1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa)z::FFFF:192.168.1.35zH3.2.1.0.8.a.0.c.f.f.f.f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa)z4321:0:1:2:3:4:567:89abzHb.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.ip6.arpa)rXrr�r(�reverse_pointerr)r
�addr_v4�expectedr[�addr_v6s&    r�testReversePointer�!IpaddrUnitTest.testReversePointer
s���"
��G�
���4�7��C�C� �,�,�W�5��� � ��!5�!5�x�@�D�C�"
�"
��G�0���4�7��C�C� �,�,�W�5��� � ��!5�!5�x�@�D�C�1"
�	D�C�C��8D�C�C�s#�3C	�3C	�C
�C
�C-
�%C-
c��UOQ[UO22UOQ[UO22P!)r�r�)r(r�r�r�r	s&r�testIntRepresentation�$IpaddrUnitTest.testIntRepresentation�
s<������3�t�'8�'8�#9�:����?��T�.�.�/�	1rc���UO[O]2O]2UO[O]2O]2P!rI)r(rrDr�r�r	s&r�testForceVersion�IpaddrUnitTest.testForceVersion�
sD������-�-�a�0�8�8�!�<�����.�.�q�1�9�9�1�=rc���UOUOOQ2UOUOOQ2UOUOOQ2UOUO
OQ2UOUO
OQ2UOUO
OQ2P!)r�z1.2.3.4/255.255.255.0z1.2.3.4/0.0.0.255r�z.2001:658:22a:cafe:200::1/ffff:ffff:ffff:ffff::z.2001:658:22a:cafe:200::1/::ffff:ffff:ffff:ffff)r(r�r0r1r2r�r	s&r�testWithStar�IpaddrUnitTest.testWithStar�
s�������,�,�;�;�\�J�����,�,�9�9�0�	2�����,�,�:�:�,�	.�	
����,�,�;�;�6�	8�����,�,�9�9�I�	K�	
����,�,�:�:�I�	Krc��UOQUOO2UOQUOO2UOUOO[
OQ22UOUOO[
OQ22UOQUOO2UOQUOO2UOQUOO2UOQUOO2UOUOO[
OQ22UOUOOO[
OQ22UOUOO[
OQ22UOUOO[
OQ22UOUOOO[
OQ22UOUOOO[
OQ22UOQUOO2UOQUOO2UOQUOOO2UOQUOOO2P!)r(r�r&z	0.0.0.255r�r'r�)r�r��__dict__r(r(rr�r�r�r�r�rr�rCr	s&r�testNetworkElementCaching�(IpaddrUnitTest.testNetworkElementCaching�
s������,�d�.?�.?�.H�.H�I�����T�%6�%6�%?�%?�@�	
����*�*�<�<�"�.�.�{�;�	=�����*�*�3�3�"�.�.�{�;�	=�	
�
�
�)�4�+<�+<�+E�+E�F��
�
�j�$�"3�"3�"<�"<�=�	
���,�d�.?�.?�.H�.H�I�����T�%6�%6�%?�%?�@�	
����*�*�:�:�"�.�.�/D�E�	G�����,�,�4�4�D�D�"�.�.�/D�E�	G�	
������/�/��!�!�"I�J�	L�	
����*�*�3�3�"�.�.�/F�G�	I�������'�'�9�9��!�!�"I�J�	L�	
����,�,�4�4�=�=�"�.�.�/F�G�	I�	
�
�
�)�4�+<�+<�+E�+E�F��
�
�j�$�"3�"3�"<�"<�=��
�
�)�4�+>�+>�+F�+F�+O�+O�P��
�
�j�$�"5�"5�"=�"=�"F�"F�Grc�B�[OQ2o[OQ2oQoUOV1[OU2O2QoUO[OU2O2QoUO[OU2O2[OQ2oUO[OQ2[OQ21UO2P!)z
65.54.227.120z
192.0.2.45z'2001:0000:4136:e378:8000:63bf:3fff:fdd2z#2000::4136:e378:8000:63bf:3fff:fdd2z'2001:0001:4136:e378:8000:63bf:3fff:fdd2rBz94.245.121.253z95.26.244.94)rr�r(r9�teredor�r)r
�server�client�teredo_addr�bad_addrs&    r�
testTeredo�IpaddrUnitTest.testTeredo�
s����&�&��7���&�&�|�4��?�����&�)�"�-�-�k�:�A�A�	C�8������-�-�h�7�>�>�?�<������-�-�h�7�>�>�?� �+�+�,M�N�����)�/�/�0@�A�#�/�/��?�A�$�+�+�	-rc��[OQ2o[OQ2oUO[OQ2UO2UOUO2P!)z2002:ac1d:2d64::1z2000:ac1d:2d64::1z
172.29.45.100)rr9r(r��	sixtofourr�)r
�
sixtofouraddrr`s&  r�
testsixtofour�IpaddrUnitTest.testsixtofour�
s\��!�,�,�-@�A�
��'�'�(;�<������.�.��?�&�0�0�	2�����+�+�,rc��[OQ2o[OQ2oUOUO2UO22P!)r|z2.3.4.5)rr�rN�__hash__)r
�
ipv4_address1�
ipv4_address2s&  r�testV4HashIsNotConstant�&IpaddrUnitTest.testV4HashIsNotConstantsD��!�/�/�	�:�
�!�/�/�	�:�
����M�2�2�4�m�6L�6L�6N�Orc��[OQ2o[OQ2oUOUO2UO22P!)r�z2001:658:22a:cafe:200:0:0:2)rr#rNri)r
�
ipv6_address1�
ipv6_address2s&  r�testV6HashIsNotConstant�&IpaddrUnitTest.testV6HashIsNotConstantsF��!�/�/�0M�N�
�!�/�/�0M�N�
����M�2�2�4�m�6L�6L�6N�Orc��UO[OQ2O2[OQ2O22UO[OQ2O2[OQ2O22UO[OQ2O2[OQ2O22P!)z192.168.1.255/32z192.168.1.0/24z172.24.255.0/24z
172.24.0.0/16z192.168.1.87/32z192.168.1.86/31)rNrr�rir	s&r�testNetworkV4HashCollisions�*IpaddrUnitTest.testNetworkV4HashCollisionss�������!�!�"4�5�>�>�@��!�!�"2�3�<�<�>�	
�	
����!�!�"3�4�=�=�?��!�!�/�2�;�;�=�	
�	
����!�!�"3�4�=�=�?��!�!�"3�4�=�=�?�	
rc�`�UO[OQ2O2[OQ2O22UO[OQ2O2[OQ2O22P!)z	fe80::/64zfe80::ffff:ffff:ffff:0/112rz'ffff:ffff:ffff:ffff:ffff:ffff:aff:0/112)rNrr�rir�r	s&r�testNetworkV6HashCollisions�*IpaddrUnitTest.testNetworkV6HashCollisionss~������!�!�+�.�7�7�9��!�!�">�?�H�H�J�	
�	
����!�!�,�/�8�8�:��!�!�9�
��h�j�		
r)
r�r�r�r�r�r�r�r�r�r�)Ur/r0r1r2r�r�r�r�r�r�r�r�r�rrrrrrr#r)r,r2r6r?rOrSrVr[r_rerjrorsrvr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	rrrrr#r(r-r3r6r9r?rCrLrOrRrUrYrarfrlrqrtrwr6r7r8s@rr�r�;s�����H�"E�DE�N@C�F@�5�O�2�"�00� 5�	A�"�A�V�,�B�K�
0�"
0�K�*UG�nK�.
T�-�-�-�,�(@�K�@�/�"6�	U�	2�%:�N57�n?�3�'�`*�DGF�R;�K@�ZU6�nM�
1�2�I�<>�H�B�,@�OO�b M�D[P�z>�E�0M�1� B�0"�*K�=�1�>� �<:� $A�L1�
>�K� (H�T-�$-�P�P�
�

�

rr�c�(`�\sQsQsnQsQsUsP!)�
TestModulei*c���UO[Q29^tt^2o[[Q2PPP2UO	WO
[2P!)%fhK29h)zA'__version__' is deprecated and slated for removal in Python 3.20�__version__)�assertWarnsRegex�DeprecationWarning�getattrrr(�filename�__file__)r
rs& r�test_deprecated__version__�%TestModule.test_deprecated__version__+sP��
�
"�
"��O�
�
���I�}�-�	
�
	
������h�/�
�
�s�A�A+	�$A+	r.)r/r0r1r2r�r6r7r8s@rrzrz*s����0�0rrz�__main__)!r�r��unittestrBr4rMrVrr�collections.abcr�test.supportrr�TestCaserr;rar�r�r$r�r�r�rr!r%r0rHr�rzr/�mainr.rr�<module>r�sG��%���	���
���$�*�3?�8�$�$�3?�l'�'�2.��.�b/"��/"�bu?��'9�u?�pE4��'9�E4�PV&�,�V&�r&�<�)<�&�36��':�36�lf1�,�f1�R&�<�)<�&�,0��':�,0�^A�L�A�&rA�h�'�'�rA�jl
�X�&�&�l
�^70��"�"�0��z���M�M�O�r

Youez - 2016 - github.com/yon3zu
LinuXploit