File: //opt/alt/python35/lib/python3.5/site-packages/idna/__pycache__/intranges.cpython-35.pyc
�'�X� � @ sF d Z d d l Z d d � Z d d � Z d d � Z d d
� Z d S)a
Given a list of integers, made up of (hopefully) a small number of long runs
of consecutive integers, compute a representation of the form
((start1, end1), (start2, end2) ...). Then answer the question "was x present
in the original list?" in time O(log(# runs)).
� Nc C s� t | � } g } d } x� t t | � � D]{ } | d t | � k rf | | | | d d k rf q+ | | d | d � } | j t | d | d d � � | } q+ Wt | � S)a Represent a list of integers as a sequence of ranges:
((start_0, end_0), (start_1, end_1), ...), such that the original
integers are exactly those x such that start_i <= x < end_i for some i.
Ranges are encoded as single integers (start << 32 | end), not as tuples.
� r ���r )�sorted�range�len�append�
_encode_range�tuple)Zlist_Zsorted_list�rangesZ
last_write�iZ
current_range� r �
/intranges.py�intranges_from_list
s "
r c C s | d >| BS)N� r )�start�endr r r
r s r c C s | d ?| d @f S)Nr r l l �� r )�rr r r
�
_decode_range"