úÎWÄS    splitEvery n l is equivalent to :map (take n) (takeWhile (not . null) (iterate (drop n) l)), so  splitEvery n [x1,x2,..,xm] = [[x1,x2,..,x(n-1)],[xn,x(n+1),..,x(2n-1)] ,..,[..xm]]It is a good producer in the fold/build5 sense, but not a good consumer; the author believes  this is unavoidable.    is equivalent to floor . logBase 2<, but uses heavy bit manipulation to achieve maximum speed.  is equivalent to ceiling . logBase 2<, but uses heavy bit manipulation to achieve maximum speed.  is equivalent to  bit . intLog. # is (unsurprisingly) equivalent to (2*). 1 uses bit shifting to quickly find a power of 2. a   b is equivalent to  ceiling (a / b)", but uses integer division only. !a ! b is equivalent to  let m = a " b in if m == 0 then b else m.  ! !#(f # g) x y is equivalent to  f (g x) (g y). $onPair f (x, y) is equivalent to  (f x, f y). % (f .: g) x y is equivalent to  f (g x y). & switch x y p is equivalent to if p then x else y. '#$%&'#$%&' (7A handy shorthand for a frequently occurring function. )comparing f (x y) is equivalent to compare (f x) (f y). *orderPairBy cmp (x, y) is equivalent to (if cmp x y == GT then (y, x) else (x, y). +orderPairBy cmp (x, y) is equivalent to if x <= y then (y, x) else (x, y). , minBy cmp x y returns the smaller of x and y by the specified comparator. - maxBy cmp x y returns the larger of x and y by the specified comparator. .lexCompare cmp1 cmp2; gives a comparator that lexicographically orders first by cmp1 then by cmp2. /0123 45()*+,-./12 ()*+,-./12 678IasPureArray is a simple syntax to force an ambiguous array to a standard 9. : listToArray- converts a list to an arbitrary array type. A list of arbitrary elements. DA zero-indexed array containing precisely the elements of the list. ;$Shorthand for the size of an array. <<A lookup function that also forces its array argument to an 9. =&An unsafe lookup function on standard 9/ types that does not range-check its argument. >A memoization function. K unsafeMemoize :: (Int -> e) -- ^ An arbitrary function on integer values.  -> Int -- ^ n 2 -> (Int -> e) -- ^ A function on integers from 0 to n-1 that memoizes its values. & unsafeMemoize f (n+1) = unsafeMemoize' f n 'A memoization function that indexes to n inclusive. )An arbitrary function on integer values. n A function on integers from 0 to n that memoizes its values. ?@ABeGiven a list and its length, memoizes lookups on the list. An attempt to process a list longer than / the specified size will result in a segfault. 8<>B8<>B#CDEFGHIWThe type of a range-min function. Takes as an argument a range of indices and returns ? the position and value of the smallest element in that range. JKLMNOPQRSTUVWXYbGiven a comparator, an index range and a list of elements in index order, returns a function that q takes two indices and returns the index and the value at the minimum value between those two indices inclusive. #A comparator function on elements.  Index range. !List of elements in index order. LGiven a subrange, returns the index and value at the minimum in that range.  A version of * on elements with their default ordering.  Index range. !List of elements in index order. LGiven a subrange, returns the index and value at the minimum in that range. [Given a comparator and an array, returns a function that takes a subrange of the array and ? returns the index and value at the minimum in that subrange. NOT necessarily faster than , T primarily because most of the algorithms used are based upon careful list folding. #A comparator function on elements. An array of elements. LGiven a subrange, returns the index and value at the minimum in that range.  A version of * on elements with their default ordering. ZSGiven an indexing function on node labels, returns a function that takes two node ? labels and returns the label of their lowest common ancestor. =An index on tree labels so they can be indexed on an array. : Need not account for every node label, hence the Maybe. "Bounds on indices of tree labels. 8The tree to provide lowest-common-ancestor service for. JGiven two node labels, returns the label of their lowest common ancestor. ‚Given an indexing function on node labels, returns a function that takes two indices and returns the label of the associated nodes' lowest common ancestor. =An index on tree labels, so they can be indexed in an array. 9 Need not account for every node label, hence the Maybe. "Bounds on indices of tree labels. 8The tree to provide lowest-common-ancestor service for. ;Given two indices, return the label of the associated nodes' lowest common ancestor. Q The behavior of this method is not specified if these indices do not correspond  to any trees. qGiven a tree of indexed nodes, returns a function that takes two nodes and returns their lowest common ancestor. Bounds on node labels. 8The tree to provide lowest-common-ancestor service for. ]A function that takes two node labels and returns the label of their lowest common ancestor.      [      !"#$%&'()*+,-./0123456789:;)<=)<>?@A)BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcrangemin-1.0.5 Data.RangeMin Data.RangeMin.Internal.HandyList#Data.RangeMin.Internal.HandyNumeric"Data.RangeMin.Internal.Combinators$Data.RangeMin.Internal.HandyOrdering!Data.RangeMin.Internal.HandyArray ComparatorRangeMin rangeMinBy' rangeMin' rangeMinByrangeMin rangeMinByM rangeMinMlowestCommonAncestorBylowestCommonAncestorBy'lowestCommonAncestor BlockAccumBA splitEvery splitEvery' unfoldrFBscanlFBtailerFBscanl1FBmebbescanrFBscanr1FB mapAccumLFB mapAccumRFB flattenFB unckdEFIntFB unckdEFDIntFBintLogceilLog floor2Powdoublepow2divCeilmodCeilbaseGHC.RealmodononPair.:switchboth comparing orderPairBy orderPairminBymaxBy lexCompare lexComparingminimax listRangeBy listRange listRangeWith Data.List minimumBy maximumByAccA asPureArrayGHC.ArrArray listToArray arraySize pureLookuppureUnsafeLookupunsafeMemoize#memoizerlistLookerUpperstInit listLookup'IntAccumIA IntAccum1IA1 RangeMinValoffset rangeSizeindexassocs'blockifyrangeMin3CommonrangeMin3InternalrangeMin2CommonrangeMin2Internal rangeMin2By'blockedRangeMinrangeMin1CommonrangeMin1Internal rangeMinFuncinternalRangeMinByinternalRangeMin lcaTraversal