Ë
     æ^é  ã                   ó.   — d dl mZmZmZ  G d„ de«      Zy)é    )Ú	IPNetworkÚcidr_excludeÚ
cidr_mergec                   ó*   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zy)ÚSubnetSplitterzù
    A handy utility class that takes a single (large) subnet and allows
    smaller subnet within its range to be extracted by CIDR prefix. Any
    leaving address space is available for subsequent extractions until
    all space is exhausted.
    c                 ó8   — t        t        |«      g«      | _        y)zœ
        Constructor.

        :param base_cidr: an IPv4 or IPv6 address with a CIDR prefix.
            (see IPNetwork.__init__ for full details).
        N)Úsetr   Ú_subnets)ÚselfÚ	base_cidrs     úA/usr/lib/python3/dist-packages/netaddr/contrib/subnet_splitter.pyÚ__init__zSubnetSplitter.__init__   s   € ô œY yÓ1Ð2Ó3ˆ�ó    Nc                 ó  — | j                  «       D ]t  }t        |j                  ||¬«      «      }|sŒ"| j                  |«       | j                  j                  t        t        |t        |«      d   «      «      «      | _        |c S  g S )z;Extract 1 or more subnets of size specified by CIDR prefix.)Úcountr   )	Úavailable_subnetsÚlistÚsubnetÚremove_subnetr
   Úunionr	   r   r   )r   Úprefixr   ÚcidrÚsubnetss        r   Úextract_subnetzSubnetSplitter.extract_subnet   s…   € à×*Ñ*Ó,ò 
	ˆDÜ˜4Ÿ;™; v°U˜;Ó;Ó<ˆGÙØØ×Ñ˜tÔ$Ø ŸM™M×/Ñ/ÜÜ  ¤z°'Ó':¸1Ñ'=Ó>óóˆDŒMð
 ŠNð
	ð ˆ	r   c                 ó4   — t        | j                  d„ d¬«      S )z2Returns a list of the currently available subnets.c                 ó   — | j                   S ©N)Ú	prefixlen)Úxs    r   ú<lambda>z2SubnetSplitter.available_subnets.<locals>.<lambda>*   s
   € °1·;±;€ r   T)ÚkeyÚreverse)Úsortedr
   )r   s    r   r   z SubnetSplitter.available_subnets(   s   € ä�d—m‘mÑ)>ÈÔMÐMr   c                 ó:   — | j                   j                  |«       y)z:Remove a specified IPNetwork from available address space.N)r
   Úremove)r   Ú
ip_networks     r   r   zSubnetSplitter.remove_subnet,   s   € à�‰×Ñ˜ZÕ(r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   © r   r   r   r   	   s   „ ñò4óòNó)r   r   N)Ú
netaddr.ipr   r   r   Úobjectr   r+   r   r   ú<module>r.      s   ð÷ ;Ñ :ô%)�Võ %)r   