£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
bW]                 @   s6   d Z ddlZddlZddlmZ G dd dejZdS )zDNS name dictionary    N   )xrangec               @   sb   e Zd ZdZdddgZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )NameDicta  A dictionary whose keys are dns.name.Name objects.
    @ivar max_depth: the maximum depth of the keys that have ever been
    added to the dictionary.
    @type max_depth: int
    @ivar max_depth_items: the number of items of maximum depth
    @type max_depth_items: int
    	max_depthmax_depth_itemsZ__storec             O   s(   t  | _d| _d| _| jt || d S )Nr   )dict_NameDict__storer   r   update)selfargskwargs r   /usr/lib/python3.6/namedict.py__init__-   s    zNameDict.__init__c             C   s>   t || jkr| jd | _nt || jkr:t || _d| _d S )Nr   )lenr   r   )r
   keyr   r   r   Z__update_max_depth3   s
    
zNameDict.__update_max_depthc             C   s
   | j | S )N)r   )r
   r   r   r   r   __getitem__:   s    zNameDict.__getitem__c             C   s.   t |tjjstd|| j|< | j| d S )NzNameDict key must be a name)
isinstancednsnameName
ValueErrorr   _NameDict__update_max_depth)r
   r   valuer   r   r   __setitem__=   s    
zNameDict.__setitem__c             C   sT   | j j|}t|| jkr&| jd | _| jdkrPd| _x| j D ]}| j| q>W d S )Nr   r   )r   popr   r   r   r   )r
   r   r   kr   r   r   __delitem__C   s    
zNameDict.__delitem__c             C   s
   t | jS )N)iterr   )r
   r   r   r   __iter__L   s    zNameDict.__iter__c             C   s
   t | jS )N)r   r   )r
   r   r   r   __len__O   s    zNameDict.__len__c             C   s
   || j kS )N)r   )r
   r   r   r   r   has_keyR   s    zNameDict.has_keyc             C   sn   t |}|| jkr| j}x<t| dD ],}tjj||d }|| kr&|| | fS q&W | tjj }tjj|fS )a  Find the deepest match to I{name} in the dictionary.

        The deepest match is the longest name in the dictionary which is
        a superdomain of I{name}.

        @param name: the name
        @type name: dns.name.Name object
        @rtype: (key, value) tuple
        r   N)r   r   r   r   r   r   empty)r
   r   depthinvr   r   r   get_deepest_matchU   s    
zNameDict.get_deepest_matchN)__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r    r!   r'   r   r   r   r   r   !   s   
	r   )r+   collectionsZdns.namer   Z_compatr   MutableMappingr   r   r   r   r   <module>   s   