�`^c@stdZddd�ZeZddd�ZeZddd�Zddd�ZyddlTWne k
ronXdS( sBisection algorithms.icCs�|dkrtd��n|dkr6t|�}nxA||kry||d}|||krl|}q9|d}q9W|j||�dS(s�Insert item x in list a, and keep it sorted assuming a is sorted.
If x is already in a, insert it to the right of the rightmost x.
Optional args lo (default 0) and hi (default len(a)) bound the
slice of a to be searched.
islo must be non-negativeiiN(t
ValueErrortNonetlentinsert(tatxtlothitmid((s/sys/lib/python2.7/bisect.pytinsort_rights cCs~|dkrtd��n|dkr6t|�}nxA||kry||d}|||krl|}q9|d}q9W|S(s�Return the index where to insert item x in list a, assuming a is sorted.
The return value i is such that all e in a[:i] have e <= x, and all e in
a[i:] have e > x. So if x already appears in the list, a.insert(x) will
insert just after the rightmost x already there.
Optional args lo (default 0) and hi (default len(a)) bound the
slice of a to be searched.
islo must be non-negativeiiN(RRR(RRRRR((s/sys/lib/python2.7/bisect.pytbisect_rights cCs�|dkrtd��n|dkr6t|�}nxA||kry||d}|||krp|d}q9|}q9W|j||�dS(s�Insert item x in list a, and keep it sorted assuming a is sorted.
If x is already in a, insert it to the left of the leftmost x.
Optional args lo (default 0) and hi (default len(a)) bound the
slice of a to be searched.
islo must be non-negativeiiN(RRRR(RRRRR((s/sys/lib/python2.7/bisect.pytinsort_left/s
cCs~|dkrtd��n|dkr6t|�}nxA||kry||d}|||krp|d}q9|}q9W|S(s�Return the index where to insert item x in list a, assuming a is sorted.
The return value i is such that all e in a[:i] have e < x, and all e in
a[i:] have e >= x. So if x already appears in the list, a.insert(x) will
insert just before the leftmost x already there.
Optional args lo (default 0) and hi (default len(a)) bound the
slice of a to be searched.
islo must be non-negativeiiN(RRR(RRRRR((s/sys/lib/python2.7/bisect.pytbisect_leftCs
i�(t*N(
t__doc__RR tinsortR
tbisectRRt_bisecttImportError(((s/sys/lib/python2.7/bisect.pyt<module>s
|