diff --git a/autobuild.xml b/autobuild.xml
index 072dfa678a156deeb004d42aebb5d023b0deb4a7..1c04fb85febdd24e6c7b04a9a50a18867f44b5e9 100755
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1465,6 +1465,58 @@
         <key>version</key>
         <string>0.0.1</string>
       </map>
+      <key>llbase</key>
+      <map>
+        <key>copyright</key>
+        <string>Copyright (c) 2010, Linden Research, Inc.</string>
+        <key>license</key>
+        <string>mit</string>
+        <key>license_file</key>
+        <string>LICENSES/llbase-license.txt</string>
+        <key>name</key>
+        <string>llbase</string>
+        <key>platforms</key>
+        <map>
+          <key>darwin</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>313f5c8edd328e05c59cbe980512f84c</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llbase/rev/317790/arch/Darwin/installer/llbase-0.8.6.317790-darwin-317790.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin</string>
+          </map>
+          <key>linux</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>e85171c70b57dd086b956ba36e6f2306</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llbase/rev/317790/arch/Linux/installer/llbase-0.8.6.317790-linux-317790.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux</string>
+          </map>
+          <key>windows</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>07b0d64d812cfaf3025b799cea5fe446</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llbase/rev/317790/arch/CYGWIN/installer/llbase-0.8.6.0-windows-317790.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows</string>
+          </map>
+        </map>
+        <key>version</key>
+        <string>0.8.6.317790</string>
+      </map>
       <key>llceflib</key>
       <map>
         <key>copyright</key>
diff --git a/indra/cmake/LLBase.cmake b/indra/cmake/LLBase.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..76e3c688a3a0bf941d2f250c53f1d1f07375b08b
--- /dev/null
+++ b/indra/cmake/LLBase.cmake
@@ -0,0 +1,4 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+use_prebuilt_binary(llbase)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 132b57eb448d92927fc1bdee66cda3b1a199e8d7..31e37115690d9f4458c48b335eee50e9f6d7b8d3 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -17,6 +17,7 @@ include(GooglePerfTools)
 include(Hunspell)
 include(JsonCpp)
 include(LLAppearance)
+include(LLBase)
 include(LLAudio)
 include(LLCharacter)
 include(LLCommon)
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index ac9b8d8ebe8adddc2310b7d8f4c6d88bffe52034..d3ab05b9bd693d68646345062aad6364fbe4ef86 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -715,8 +715,6 @@ def construct(self):
                 #this copies over the python wrapper script and associated utilities, see SL-321, SL-322 and SL-323
                 self.path2basename("../viewer_components/manager","SL_Launcher")
                 self.path2basename("../viewer_components/manager","*.py")
-                self.path2basename("../viewer_components/manager/base","*py")
-                self.path2basename("../viewer_components/manager/util","*py")
                 self.end_prefix()
 
             # most everything goes in the Resources directory
diff --git a/indra/viewer_components/manager/base/llsd.py b/indra/viewer_components/manager/base/llsd.py
deleted file mode 100755
index 4527b115f9ad07b6a2f9180090466c2f562112a1..0000000000000000000000000000000000000000
--- a/indra/viewer_components/manager/base/llsd.py
+++ /dev/null
@@ -1,1052 +0,0 @@
-"""\
-@file llsd.py
-@brief Types as well as parsing and formatting functions for handling LLSD.
-
-$LicenseInfo:firstyear=2006&license=mit$
-
-Copyright (c) 2006-2009, Linden Research, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-$/LicenseInfo$
-"""
-
-import datetime
-import base64
-import string
-import struct
-import time
-import types
-import re
-
-from indra.util.fastest_elementtree import ElementTreeError, fromstring
-from indra.base import lluuid
-
-# cllsd.c in server/server-1.25 has memory leaks,
-#   so disabling cllsd for now
-#try:
-#    import cllsd
-#except ImportError:
-#    cllsd = None
-cllsd = None
-
-int_regex = re.compile(r"[-+]?\d+")
-real_regex = re.compile(r"[-+]?(\d+(\.\d*)?|\d*\.\d+)([eE][-+]?\d+)?")
-alpha_regex = re.compile(r"[a-zA-Z]+")
-date_regex = re.compile(r"(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})T"
-                        r"(?P<hour>\d{2}):(?P<minute>\d{2}):(?P<second>\d{2})"
-                        r"(?P<second_float>(\.\d+)?)Z")
-#date: d"YYYY-MM-DDTHH:MM:SS.FFFFFFZ"
-
-class LLSDParseError(Exception):
-    pass
-
-class LLSDSerializationError(TypeError):
-    pass
-
-
-class binary(str):
-    pass
-
-class uri(str):
-    pass
-
-
-BOOL_TRUE = ('1', '1.0', 'true')
-BOOL_FALSE = ('0', '0.0', 'false', '')
-
-
-def format_datestr(v):
-    """ Formats a datetime or date object into the string format shared by xml and notation serializations."""
-    if hasattr(v, 'microsecond'):
-        return v.isoformat() + 'Z'
-    else:
-        return v.strftime('%Y-%m-%dT%H:%M:%SZ')
-
-def parse_datestr(datestr):
-    """Parses a datetime object from the string format shared by xml and notation serializations."""
-    if datestr == "":
-        return datetime.datetime(1970, 1, 1)
-    
-    match = re.match(date_regex, datestr)
-    if not match:
-        raise LLSDParseError("invalid date string '%s'." % datestr)
-    
-    year = int(match.group('year'))
-    month = int(match.group('month'))
-    day = int(match.group('day'))
-    hour = int(match.group('hour'))
-    minute = int(match.group('minute'))
-    second = int(match.group('second'))
-    seconds_float = match.group('second_float')
-    microsecond = 0
-    if seconds_float:
-        microsecond = int(float('0' + seconds_float) * 1e6)
-    return datetime.datetime(year, month, day, hour, minute, second, microsecond)
-
-
-def bool_to_python(node):
-    val = node.text or ''
-    if val in BOOL_TRUE:
-        return True
-    else:
-        return False
-
-def int_to_python(node):
-    val = node.text or ''
-    if not val.strip():
-        return 0
-    return int(val)
-
-def real_to_python(node):
-    val = node.text or ''
-    if not val.strip():
-        return 0.0
-    return float(val)
-
-def uuid_to_python(node):
-    return lluuid.UUID(node.text)
-
-def str_to_python(node):
-    return node.text or ''
-
-def bin_to_python(node):
-    return binary(base64.decodestring(node.text or ''))
-
-def date_to_python(node):
-    val = node.text or ''
-    if not val:
-        val = "1970-01-01T00:00:00Z"
-    return parse_datestr(val)
-    
-
-def uri_to_python(node):
-    val = node.text or ''
-    if not val:
-        return None
-    return uri(val)
-
-def map_to_python(node):
-    result = {}
-    for index in range(len(node))[::2]:
-        result[node[index].text] = to_python(node[index+1])
-    return result
-
-def array_to_python(node):
-    return [to_python(child) for child in node]
-
-
-NODE_HANDLERS = dict(
-    undef=lambda x: None,
-    boolean=bool_to_python,
-    integer=int_to_python,
-    real=real_to_python,
-    uuid=uuid_to_python,
-    string=str_to_python,
-    binary=bin_to_python,
-    date=date_to_python,
-    uri=uri_to_python,
-    map=map_to_python,
-    array=array_to_python,
-    )
-
-def to_python(node):
-    return NODE_HANDLERS[node.tag](node)
-
-class Nothing(object):
-    pass
-
-
-class LLSDXMLFormatter(object):
-    def __init__(self):
-        self.type_map = {
-            type(None) : self.UNDEF,
-            bool : self.BOOLEAN,
-            int : self.INTEGER,
-            long : self.INTEGER,
-            float : self.REAL,
-            lluuid.UUID : self.UUID,
-            binary : self.BINARY,
-            str : self.STRING,
-            unicode : self.STRING,
-            uri : self.URI,
-            datetime.datetime : self.DATE,
-            datetime.date : self.DATE,
-            list : self.ARRAY,
-            tuple : self.ARRAY,
-            types.GeneratorType : self.ARRAY,
-            dict : self.MAP,
-            LLSD : self.LLSD
-        }
-
-    def elt(self, name, contents=None):
-        if(contents is None or contents is ''):
-            return "<%s />" % (name,)
-        else:
-            if type(contents) is unicode:
-                contents = contents.encode('utf-8')
-            return "<%s>%s</%s>" % (name, contents, name)
-
-    def xml_esc(self, v):
-        if type(v) is unicode:
-            v = v.encode('utf-8')
-        return v.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')
-
-    def LLSD(self, v):
-        return self.generate(v.thing)
-    def UNDEF(self, v):
-        return self.elt('undef')
-    def BOOLEAN(self, v):
-        if v:
-            return self.elt('boolean', 'true')
-        else:
-            return self.elt('boolean', 'false')
-    def INTEGER(self, v):
-        return self.elt('integer', v)
-    def REAL(self, v):
-        return self.elt('real', v)
-    def UUID(self, v):
-        if(v.isNull()):
-            return self.elt('uuid')
-        else:
-            return self.elt('uuid', v)
-    def BINARY(self, v):
-        return self.elt('binary', base64.encodestring(v))
-    def STRING(self, v):
-        return self.elt('string', self.xml_esc(v))
-    def URI(self, v):
-        return self.elt('uri', self.xml_esc(str(v)))
-    def DATE(self, v):
-        return self.elt('date', format_datestr(v))
-    def ARRAY(self, v):
-        return self.elt('array', ''.join([self.generate(item) for item in v]))
-    def MAP(self, v):
-        return self.elt(
-            'map',
-            ''.join(["%s%s" % (self.elt('key', self.xml_esc(str(key))), self.generate(value))
-             for key, value in v.items()]))
-
-    typeof = type
-    def generate(self, something):
-        t = self.typeof(something)
-        if self.type_map.has_key(t):
-            return self.type_map[t](something)
-        else:
-            raise LLSDSerializationError("Cannot serialize unknown type: %s (%s)" % (
-                t, something))
-
-    def _format(self, something):
-        return '<?xml version="1.0" ?>' + self.elt("llsd", self.generate(something))
-
-    def format(self, something):
-        if cllsd:
-            return cllsd.llsd_to_xml(something)
-        return self._format(something)
-
-_g_xml_formatter = None
-def format_xml(something):
-    global _g_xml_formatter
-    if _g_xml_formatter is None:
-        _g_xml_formatter = LLSDXMLFormatter()
-    return _g_xml_formatter.format(something)
-
-class LLSDXMLPrettyFormatter(LLSDXMLFormatter):
-    def __init__(self, indent_atom = None):
-        # Call the super class constructor so that we have the type map
-        super(LLSDXMLPrettyFormatter, self).__init__()
-
-        # Override the type map to use our specialized formatters to
-        # emit the pretty output.
-        self.type_map[list] = self.PRETTY_ARRAY
-        self.type_map[tuple] = self.PRETTY_ARRAY
-        self.type_map[types.GeneratorType] = self.PRETTY_ARRAY,
-        self.type_map[dict] = self.PRETTY_MAP
-
-        # Private data used for indentation.
-        self._indent_level = 1
-        if indent_atom is None:
-            self._indent_atom = '  '
-        else:
-            self._indent_atom = indent_atom
-
-    def _indent(self):
-        "Return an indentation based on the atom and indentation level."
-        return self._indent_atom * self._indent_level
-
-    def PRETTY_ARRAY(self, v):
-        rv = []
-        rv.append('<array>\n')
-        self._indent_level = self._indent_level + 1
-        rv.extend(["%s%s\n" %
-                   (self._indent(),
-                    self.generate(item))
-                   for item in v])
-        self._indent_level = self._indent_level - 1
-        rv.append(self._indent())
-        rv.append('</array>')
-        return ''.join(rv)
-
-    def PRETTY_MAP(self, v):
-        rv = []
-        rv.append('<map>\n')
-        self._indent_level = self._indent_level + 1
-        keys = v.keys()
-        keys.sort()
-        rv.extend(["%s%s\n%s%s\n" %
-                   (self._indent(),
-                    self.elt('key', key),
-                    self._indent(),
-                    self.generate(v[key]))
-                   for key in keys])
-        self._indent_level = self._indent_level - 1
-        rv.append(self._indent())
-        rv.append('</map>')
-        return ''.join(rv)
-
-    def format(self, something):
-        data = []
-        data.append('<?xml version="1.0" ?>\n<llsd>')
-        data.append(self.generate(something))
-        data.append('</llsd>\n')
-        return '\n'.join(data)
-
-def format_pretty_xml(something):
-    """@brief Serialize a python object as 'pretty' llsd xml.
-
-    The output conforms to the LLSD DTD, unlike the output from the
-    standard python xml.dom DOM::toprettyxml() method which does not
-    preserve significant whitespace. 
-    This function is not necessarily suited for serializing very large
-    objects. It is not optimized by the cllsd module, and sorts on
-    dict (llsd map) keys alphabetically to ease human reading.
-    """
-    return LLSDXMLPrettyFormatter().format(something)
-
-class LLSDNotationFormatter(object):
-    def __init__(self):
-        self.type_map = {
-            type(None) : self.UNDEF,
-            bool : self.BOOLEAN,
-            int : self.INTEGER,
-            long : self.INTEGER,
-            float : self.REAL,
-            lluuid.UUID : self.UUID,
-            binary : self.BINARY,
-            str : self.STRING,
-            unicode : self.STRING,
-            uri : self.URI,
-            datetime.datetime : self.DATE,
-            datetime.date : self.DATE,
-            list : self.ARRAY,
-            tuple : self.ARRAY,
-            types.GeneratorType : self.ARRAY,
-            dict : self.MAP,
-            LLSD : self.LLSD
-        }
-
-    def LLSD(self, v):
-        return self.generate(v.thing)
-    def UNDEF(self, v):
-        return '!'
-    def BOOLEAN(self, v):
-        if v:
-            return 'true'
-        else:
-            return 'false'
-    def INTEGER(self, v):
-        return "i%s" % v
-    def REAL(self, v):
-        return "r%s" % v
-    def UUID(self, v):
-        return "u%s" % v
-    def BINARY(self, v):
-        return 'b64"' + base64.encodestring(v) + '"'
-    def STRING(self, v):
-        if isinstance(v, unicode):
-            v = v.encode('utf-8')
-        return "'%s'" % v.replace("\\", "\\\\").replace("'", "\\'")
-    def URI(self, v):
-        return 'l"%s"' % str(v).replace("\\", "\\\\").replace('"', '\\"')
-    def DATE(self, v):
-        return 'd"%s"' % format_datestr(v)
-    def ARRAY(self, v):
-        return "[%s]" % ','.join([self.generate(item) for item in v])
-    def MAP(self, v):
-        def fix(key):
-            if isinstance(key, unicode):
-                return key.encode('utf-8')
-            return key
-        return "{%s}" % ','.join(["'%s':%s" % (fix(key).replace("\\", "\\\\").replace("'", "\\'"), self.generate(value))
-             for key, value in v.items()])
-
-    def generate(self, something):
-        t = type(something)
-        handler = self.type_map.get(t)
-        if handler:
-            return handler(something)
-        else:
-            try:
-                return self.ARRAY(iter(something))
-            except TypeError:
-                raise LLSDSerializationError(
-                    "Cannot serialize unknown type: %s (%s)" % (t, something))
-
-    def format(self, something):
-        return self.generate(something)
-
-def format_notation(something):
-    return LLSDNotationFormatter().format(something)
-
-def _hex_as_nybble(hex):
-    if (hex >= '0') and (hex <= '9'):
-        return ord(hex) - ord('0')
-    elif (hex >= 'a') and (hex <='f'):
-        return 10 + ord(hex) - ord('a')
-    elif (hex >= 'A') and (hex <='F'):
-        return 10 + ord(hex) - ord('A');
-
-class LLSDBinaryParser(object):
-    def __init__(self):
-        pass
-
-    def parse(self, buffer, ignore_binary = False):
-        """
-        This is the basic public interface for parsing.
-
-        @param buffer the binary data to parse in an indexable sequence.
-        @param ignore_binary parser throws away data in llsd binary nodes.
-        @return returns a python object.
-        """
-        self._buffer = buffer
-        self._index = 0
-        self._keep_binary = not ignore_binary
-        return self._parse()
-
-    def _parse(self):
-        cc = self._buffer[self._index]
-        self._index += 1
-        if cc == '{':
-            return self._parse_map()
-        elif cc == '[':
-            return self._parse_array()
-        elif cc == '!':
-            return None
-        elif cc == '0':
-            return False
-        elif cc == '1':
-            return True
-        elif cc == 'i':
-            # 'i' = integer
-            idx = self._index
-            self._index += 4
-            return struct.unpack("!i", self._buffer[idx:idx+4])[0]
-        elif cc == ('r'):
-            # 'r' = real number
-            idx = self._index
-            self._index += 8
-            return struct.unpack("!d", self._buffer[idx:idx+8])[0]
-        elif cc == 'u':
-            # 'u' = uuid
-            idx = self._index
-            self._index += 16
-            return lluuid.uuid_bits_to_uuid(self._buffer[idx:idx+16])
-        elif cc == 's':
-            # 's' = string
-            return self._parse_string()
-        elif cc in ("'", '"'):
-            # delimited/escaped string
-            return self._parse_string_delim(cc)
-        elif cc == 'l':
-            # 'l' = uri
-            return uri(self._parse_string())
-        elif cc == ('d'):
-            # 'd' = date in seconds since epoch
-            idx = self._index
-            self._index += 8
-            seconds = struct.unpack("!d", self._buffer[idx:idx+8])[0]
-            return datetime.datetime.fromtimestamp(seconds)
-        elif cc == 'b':
-            binary = self._parse_string()
-            if self._keep_binary:
-                return binary
-            # *NOTE: maybe have a binary placeholder which has the
-            # length.
-            return None
-        else:
-            raise LLSDParseError("invalid binary token at byte %d: %d" % (
-                self._index - 1, ord(cc)))
-
-    def _parse_map(self):
-        rv = {}
-        size = struct.unpack("!i", self._buffer[self._index:self._index+4])[0]
-        self._index += 4
-        count = 0
-        cc = self._buffer[self._index]
-        self._index += 1
-        key = ''
-        while (cc != '}') and (count < size):
-            if cc == 'k':
-                key = self._parse_string()
-            elif cc in ("'", '"'):
-                key = self._parse_string_delim(cc)
-            else:
-                raise LLSDParseError("invalid map key at byte %d." % (
-                    self._index - 1,))
-            value = self._parse()
-            rv[key] = value
-            count += 1
-            cc = self._buffer[self._index]
-            self._index += 1
-        if cc != '}':
-            raise LLSDParseError("invalid map close token at byte %d." % (
-                self._index,))
-        return rv
-
-    def _parse_array(self):
-        rv = []
-        size = struct.unpack("!i", self._buffer[self._index:self._index+4])[0]
-        self._index += 4
-        count = 0
-        cc = self._buffer[self._index]
-        while (cc != ']') and (count < size):
-            rv.append(self._parse())
-            count += 1
-            cc = self._buffer[self._index]
-        if cc != ']':
-            raise LLSDParseError("invalid array close token at byte %d." % (
-                self._index,))
-        self._index += 1
-        return rv
-
-    def _parse_string(self):
-        size = struct.unpack("!i", self._buffer[self._index:self._index+4])[0]
-        self._index += 4
-        rv = self._buffer[self._index:self._index+size]
-        self._index += size
-        return rv
-
-    def _parse_string_delim(self, delim):
-        list = []
-        found_escape = False
-        found_hex = False
-        found_digit = False
-        byte = 0
-        while True:
-            cc = self._buffer[self._index]
-            self._index += 1
-            if found_escape:
-                if found_hex:
-                    if found_digit:
-                        found_escape = False
-                        found_hex = False
-                        found_digit = False
-                        byte <<= 4
-                        byte |= _hex_as_nybble(cc)
-                        list.append(chr(byte))
-                        byte = 0
-                    else:
-                        found_digit = True
-                        byte = _hex_as_nybble(cc)
-                elif cc == 'x':
-                    found_hex = True
-                else:
-                    if cc == 'a':
-                        list.append('\a')
-                    elif cc == 'b':
-                        list.append('\b')
-                    elif cc == 'f':
-                        list.append('\f')
-                    elif cc == 'n':
-                        list.append('\n')
-                    elif cc == 'r':
-                        list.append('\r')
-                    elif cc == 't':
-                        list.append('\t')
-                    elif cc == 'v':
-                        list.append('\v')
-                    else:
-                        list.append(cc)
-                    found_escape = False
-            elif cc == '\\':
-                found_escape = True
-            elif cc == delim:
-                break
-            else:
-                list.append(cc)
-        return ''.join(list)
-
-class LLSDNotationParser(object):
-    """ Parse LLSD notation:
-    map: { string:object, string:object }
-    array: [ object, object, object ]
-    undef: !
-    boolean: true | false | 1 | 0 | T | F | t | f | TRUE | FALSE
-    integer: i####
-    real: r####
-    uuid: u####
-    string: "g\'day" | 'have a "nice" day' | s(size)"raw data"
-    uri: l"escaped"
-    date: d"YYYY-MM-DDTHH:MM:SS.FFZ"
-    binary: b##"ff3120ab1" | b(size)"raw data"
-    """
-    def __init__(self):
-        pass
-
-    def parse(self, buffer, ignore_binary = False):
-        """
-        This is the basic public interface for parsing.
-
-        @param buffer the notation string to parse.
-        @param ignore_binary parser throws away data in llsd binary nodes.
-        @return returns a python object.
-        """
-        if buffer == "":
-            return False
-
-        self._buffer = buffer
-        self._index = 0
-        return self._parse()
-
-    def _parse(self):
-        cc = self._buffer[self._index]
-        self._index += 1
-        if cc == '{':
-            return self._parse_map()
-        elif cc == '[':
-            return self._parse_array()
-        elif cc == '!':
-            return None
-        elif cc == '0':
-            return False
-        elif cc == '1':
-            return True
-        elif cc in ('F', 'f'):
-            self._skip_alpha()
-            return False
-        elif cc in ('T', 't'):
-            self._skip_alpha()
-            return True
-        elif cc == 'i':
-            # 'i' = integer
-            return self._parse_integer()
-        elif cc == ('r'):
-            # 'r' = real number
-            return self._parse_real()
-        elif cc == 'u':
-            # 'u' = uuid
-            return self._parse_uuid()
-        elif cc in ("'", '"', 's'):
-            return self._parse_string(cc)
-        elif cc == 'l':
-            # 'l' = uri
-            delim = self._buffer[self._index]
-            self._index += 1
-            val = uri(self._parse_string(delim))
-            if len(val) == 0:
-                return None
-            return val
-        elif cc == ('d'):
-            # 'd' = date in seconds since epoch
-            return self._parse_date()
-        elif cc == 'b':
-            return self._parse_binary()
-        else:
-            raise LLSDParseError("invalid token at index %d: %d" % (
-                self._index - 1, ord(cc)))
-
-    def _parse_binary(self):
-        i = self._index
-        if self._buffer[i:i+2] == '64':
-            q = self._buffer[i+2]
-            e = self._buffer.find(q, i+3)
-            try:
-                return base64.decodestring(self._buffer[i+3:e])
-            finally:
-                self._index = e + 1
-        else:
-            raise LLSDParseError('random horrible binary format not supported')
-
-    def _parse_map(self):
-        """ map: { string:object, string:object } """
-        rv = {}
-        cc = self._buffer[self._index]
-        self._index += 1
-        key = ''
-        found_key = False
-        while (cc != '}'):
-            if not found_key:
-                if cc in ("'", '"', 's'):
-                    key = self._parse_string(cc)
-                    found_key = True
-                elif cc.isspace() or cc == ',':
-                    cc = self._buffer[self._index]
-                    self._index += 1
-                else:
-                    raise LLSDParseError("invalid map key at byte %d." % (
-                                        self._index - 1,))
-            elif cc.isspace() or cc == ':':
-                cc = self._buffer[self._index]
-                self._index += 1
-                continue
-            else:
-                self._index += 1
-                value = self._parse()
-                rv[key] = value
-                found_key = False
-                cc = self._buffer[self._index]
-                self._index += 1
-
-        return rv
-
-    def _parse_array(self):
-        """ array: [ object, object, object ] """
-        rv = []
-        cc = self._buffer[self._index]
-        while (cc != ']'):
-            if cc.isspace() or cc == ',':
-                self._index += 1
-                cc = self._buffer[self._index]
-                continue
-            rv.append(self._parse())
-            cc = self._buffer[self._index]
-
-        if cc != ']':
-            raise LLSDParseError("invalid array close token at index %d." % (
-                self._index,))
-        self._index += 1
-        return rv
-
-    def _parse_uuid(self):
-        match = re.match(lluuid.UUID.uuid_regex, self._buffer[self._index:])
-        if not match:
-            raise LLSDParseError("invalid uuid token at index %d." % self._index)
-
-        (start, end) = match.span()
-        start += self._index
-        end += self._index
-        self._index = end
-        return lluuid.UUID(self._buffer[start:end])
-
-    def _skip_alpha(self):
-        match = re.match(alpha_regex, self._buffer[self._index:])
-        if match:
-            self._index += match.end()
-            
-    def _parse_date(self):
-        delim = self._buffer[self._index]
-        self._index += 1
-        datestr = self._parse_string(delim)
-        return parse_datestr(datestr)
-
-    def _parse_real(self):
-        match = re.match(real_regex, self._buffer[self._index:])
-        if not match:
-            raise LLSDParseError("invalid real token at index %d." % self._index)
-
-        (start, end) = match.span()
-        start += self._index
-        end += self._index
-        self._index = end
-        return float( self._buffer[start:end] )
-
-    def _parse_integer(self):
-        match = re.match(int_regex, self._buffer[self._index:])
-        if not match:
-            raise LLSDParseError("invalid integer token at index %d." % self._index)
-
-        (start, end) = match.span()
-        start += self._index
-        end += self._index
-        self._index = end
-        return int( self._buffer[start:end] )
-
-    def _parse_string(self, delim):
-        """ string: "g\'day" | 'have a "nice" day' | s(size)"raw data" """
-        rv = ""
-
-        if delim in ("'", '"'):
-            rv = self._parse_string_delim(delim)
-        elif delim == 's':
-            rv = self._parse_string_raw()
-        else:
-            raise LLSDParseError("invalid string token at index %d." % self._index)
-
-        return rv
-
-
-    def _parse_string_delim(self, delim):
-        """ string: "g'day 'un" | 'have a "nice" day' """
-        list = []
-        found_escape = False
-        found_hex = False
-        found_digit = False
-        byte = 0
-        while True:
-            cc = self._buffer[self._index]
-            self._index += 1
-            if found_escape:
-                if found_hex:
-                    if found_digit:
-                        found_escape = False
-                        found_hex = False
-                        found_digit = False
-                        byte <<= 4
-                        byte |= _hex_as_nybble(cc)
-                        list.append(chr(byte))
-                        byte = 0
-                    else:
-                        found_digit = True
-                        byte = _hex_as_nybble(cc)
-                elif cc == 'x':
-                    found_hex = True
-                else:
-                    if cc == 'a':
-                        list.append('\a')
-                    elif cc == 'b':
-                        list.append('\b')
-                    elif cc == 'f':
-                        list.append('\f')
-                    elif cc == 'n':
-                        list.append('\n')
-                    elif cc == 'r':
-                        list.append('\r')
-                    elif cc == 't':
-                        list.append('\t')
-                    elif cc == 'v':
-                        list.append('\v')
-                    else:
-                        list.append(cc)
-                    found_escape = False
-            elif cc == '\\':
-                found_escape = True
-            elif cc == delim:
-                break
-            else:
-                list.append(cc)
-        return ''.join(list)
-
-    def _parse_string_raw(self):
-        """ string: s(size)"raw data" """
-        # Read the (size) portion.
-        cc = self._buffer[self._index]
-        self._index += 1
-        if cc != '(':
-            raise LLSDParseError("invalid string token at index %d." % self._index)
-
-        rparen = self._buffer.find(')', self._index)
-        if rparen == -1:
-            raise LLSDParseError("invalid string token at index %d." % self._index)
-
-        size = int(self._buffer[self._index:rparen])
-
-        self._index = rparen + 1
-        delim = self._buffer[self._index]
-        self._index += 1
-        if delim not in ("'", '"'):
-            raise LLSDParseError("invalid string token at index %d." % self._index)
-
-        rv = self._buffer[self._index:(self._index + size)]
-        self._index += size
-        cc = self._buffer[self._index]
-        self._index += 1
-        if cc != delim:
-            raise LLSDParseError("invalid string token at index %d." % self._index)
-
-        return rv
-        
-def format_binary(something):
-    return '<?llsd/binary?>\n' + _format_binary_recurse(something)
-
-def _format_binary_recurse(something):
-    def _format_list(something):
-        array_builder = []
-        array_builder.append('[' + struct.pack('!i', len(something)))
-        for item in something:
-            array_builder.append(_format_binary_recurse(item))
-        array_builder.append(']')
-        return ''.join(array_builder)
-
-    if something is None:
-        return '!'
-    elif isinstance(something, LLSD):
-        return _format_binary_recurse(something.thing)
-    elif isinstance(something, bool):
-        if something:
-            return '1'
-        else:
-            return '0'
-    elif isinstance(something, (int, long)):
-        return 'i' + struct.pack('!i', something)
-    elif isinstance(something, float):
-        return 'r' + struct.pack('!d', something)
-    elif isinstance(something, lluuid.UUID):
-        return 'u' + something._bits
-    elif isinstance(something, binary):
-        return 'b' + struct.pack('!i', len(something)) + something
-    elif isinstance(something, str):
-        return 's' + struct.pack('!i', len(something)) + something
-    elif isinstance(something, unicode):
-        something = something.encode('utf-8')
-        return 's' + struct.pack('!i', len(something)) + something
-    elif isinstance(something, uri):
-        return 'l' + struct.pack('!i', len(something)) + something
-    elif isinstance(something, datetime.datetime):
-        seconds_since_epoch = time.mktime(something.timetuple())
-        return 'd' + struct.pack('!d', seconds_since_epoch)
-    elif isinstance(something, (list, tuple)):
-        return _format_list(something)
-    elif isinstance(something, dict):
-        map_builder = []
-        map_builder.append('{' + struct.pack('!i', len(something)))
-        for key, value in something.items():
-            if isinstance(key, unicode):
-                key = key.encode('utf-8')
-            map_builder.append('k' + struct.pack('!i', len(key)) + key)
-            map_builder.append(_format_binary_recurse(value))
-        map_builder.append('}')
-        return ''.join(map_builder)
-    else:
-        try:
-            return _format_list(list(something))
-        except TypeError:
-            raise LLSDSerializationError(
-                "Cannot serialize unknown type: %s (%s)" %
-                (type(something), something))
-
-
-def parse_binary(binary):
-    if binary.startswith('<?llsd/binary?>'):
-        just_binary = binary.split('\n', 1)[1]
-    else:
-        just_binary = binary
-    return LLSDBinaryParser().parse(just_binary)
-
-def parse_xml(something):
-    try:
-        return to_python(fromstring(something)[0])
-    except ElementTreeError, err:
-        raise LLSDParseError(*err.args)
-
-def parse_notation(something):
-    return LLSDNotationParser().parse(something)
-
-def parse(something):
-    try:
-        something = string.lstrip(something)   #remove any pre-trailing whitespace
-        if something.startswith('<?llsd/binary?>'):
-            return parse_binary(something)
-        # This should be better.
-        elif something.startswith('<'):
-            return parse_xml(something)
-        else:
-            return parse_notation(something)
-    except KeyError, e:
-        raise Exception('LLSD could not be parsed: %s' % (e,))
-
-class LLSD(object):
-    def __init__(self, thing=None):
-        self.thing = thing
-
-    def __str__(self):
-        return self.toXML(self.thing)
-
-    parse = staticmethod(parse)
-    toXML = staticmethod(format_xml)
-    toPrettyXML = staticmethod(format_pretty_xml)
-    toBinary = staticmethod(format_binary)
-    toNotation = staticmethod(format_notation)
-
-
-undef = LLSD(None)
-
-XML_MIME_TYPE = 'application/llsd+xml'
-BINARY_MIME_TYPE = 'application/llsd+binary'
-
-# register converters for llsd in mulib, if it is available
-try:
-    from mulib import stacked, mu
-    stacked.NoProducer()  # just to exercise stacked
-    mu.safe_load(None)    # just to exercise mu
-except:
-    # mulib not available, don't print an error message since this is normal
-    pass
-else:
-    mu.add_parser(parse, XML_MIME_TYPE)
-    mu.add_parser(parse, 'application/llsd+binary')
-
-    def llsd_convert_xml(llsd_stuff, request):
-        request.write(format_xml(llsd_stuff))
-
-    def llsd_convert_binary(llsd_stuff, request):
-        request.write(format_binary(llsd_stuff))
-
-    for typ in [LLSD, dict, list, tuple, str, int, long, float, bool, unicode, type(None)]:
-        stacked.add_producer(typ, llsd_convert_xml, XML_MIME_TYPE)
-        stacked.add_producer(typ, llsd_convert_xml, 'application/xml')
-        stacked.add_producer(typ, llsd_convert_xml, 'text/xml')
-
-        stacked.add_producer(typ, llsd_convert_binary, 'application/llsd+binary')
-
-    stacked.add_producer(LLSD, llsd_convert_xml, '*/*')
-
-    # in case someone is using the legacy mu.xml wrapper, we need to
-    # tell mu to produce application/xml or application/llsd+xml
-    # (based on the accept header) from raw xml. Phoenix 2008-07-21
-    stacked.add_producer(mu.xml, mu.produce_raw, XML_MIME_TYPE)
-    stacked.add_producer(mu.xml, mu.produce_raw, 'application/xml')
-
-
-
-# mulib wsgi stuff
-# try:
-#     from mulib import mu, adapters
-#
-#     # try some known attributes from mulib to be ultra-sure we've imported it
-#     mu.get_current
-#     adapters.handlers
-# except:
-#     # mulib not available, don't print an error message since this is normal
-#     pass
-# else:
-#     def llsd_xml_handler(content_type):
-#         def handle_llsd_xml(env, start_response):
-#             llsd_stuff, _ = mu.get_current(env)
-#             result = format_xml(llsd_stuff)
-#             start_response("200 OK", [('Content-Type', content_type)])
-#             env['mu.negotiated_type'] = content_type
-#             yield result
-#         return handle_llsd_xml
-#    
-#     def llsd_binary_handler(content_type):
-#         def handle_llsd_binary(env, start_response):
-#             llsd_stuff, _ = mu.get_current(env)
-#             result = format_binary(llsd_stuff)
-#             start_response("200 OK", [('Content-Type', content_type)])
-#             env['mu.negotiated_type'] = content_type
-#             yield result
-#         return handle_llsd_binary
-#
-#     adapters.DEFAULT_PARSERS[XML_MIME_TYPE] = parse
-    
-#     for typ in [LLSD, dict, list, tuple, str, int, float, bool, unicode, type(None)]:
-#         for content_type in (XML_MIME_TYPE, 'application/xml'):
-#             adapters.handlers.set_handler(typ, llsd_xml_handler(content_type), content_type)
-#
-#         adapters.handlers.set_handler(typ, llsd_binary_handler(BINARY_MIME_TYPE), BINARY_MIME_TYPE)
-#
-#     adapters.handlers.set_handler(LLSD, llsd_xml_handler(XML_MIME_TYPE), '*/*')
diff --git a/indra/viewer_components/manager/base/lluuid.py b/indra/viewer_components/manager/base/lluuid.py
deleted file mode 100755
index 7413ffe10d151b62bd86d462e841bab0309a42d9..0000000000000000000000000000000000000000
--- a/indra/viewer_components/manager/base/lluuid.py
+++ /dev/null
@@ -1,319 +0,0 @@
-"""\
-@file lluuid.py
-@brief UUID parser/generator.
-
-$LicenseInfo:firstyear=2004&license=mit$
-
-Copyright (c) 2004-2009, Linden Research, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-$/LicenseInfo$
-"""
-
-import random, socket, string, time, re
-import uuid
-try:
-    # Python 2.6
-    from hashlib import md5
-except ImportError:
-    # Python 2.5 and earlier
-    from md5 import new as md5
-
-def _int2binstr(i,l):
-    s=''
-    for a in range(l):
-        s=chr(i&0xFF)+s
-        i>>=8
-    return s
-
-def _binstr2int(s):
-    i = long(0)
-    for c in s:
-        i = (i<<8) + ord(c)
-    return i
-
-class UUID(object):
-    """
-    A class which represents a 16 byte integer. Stored as a 16 byte 8
-    bit character string.
-
-    The string version is to be of the form:
-    AAAAAAAA-AAAA-BBBB-BBBB-BBBBBBCCCCCC  (a 128-bit number in hex)
-    where A=network address, B=timestamp, C=random.
-    """
-
-    NULL_STR = "00000000-0000-0000-0000-000000000000"
-
-    # the UUIDREGEX_STRING is helpful for parsing UUID's in text
-    hex_wildcard = r"[0-9a-fA-F]"
-    word = hex_wildcard + r"{4,4}-"
-    long_word = hex_wildcard + r"{8,8}-"
-    very_long_word = hex_wildcard + r"{12,12}"
-    UUID_REGEX_STRING = long_word + word + word + word + very_long_word
-    uuid_regex = re.compile(UUID_REGEX_STRING)
-
-    rand = random.Random()
-    ip = ''
-    try:
-        ip = socket.gethostbyname(socket.gethostname())
-    except(socket.gaierror, socket.error):
-        # no ip address, so just default to somewhere in 10.x.x.x
-        ip = '10'
-        for i in range(3):
-            ip += '.' + str(rand.randrange(1,254))
-    hexip = ''.join(["%04x" % long(i) for i in ip.split('.')])
-    lastid = ''
-
-    def __init__(self, possible_uuid=None):
-        """
-        Initialize to first valid UUID in argument (if a string),
-        or to null UUID if none found or argument is not supplied.
-
-        If the argument is a UUID, the constructed object will be a copy of it.
-        """
-        self._bits = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-        if possible_uuid is None:
-            return
-
-        if isinstance(possible_uuid, type(self)):
-            self.set(possible_uuid)
-            return
-
-        uuid_match = UUID.uuid_regex.search(possible_uuid)
-        if uuid_match:
-            uuid_string = uuid_match.group()
-            s = string.replace(uuid_string, '-', '')
-            self._bits = _int2binstr(string.atol(s[:8],16),4) + \
-                         _int2binstr(string.atol(s[8:16],16),4) + \
-                         _int2binstr(string.atol(s[16:24],16),4) + \
-                         _int2binstr(string.atol(s[24:],16),4) 
-
-    def __len__(self):
-        """
-        Used by the len() builtin.
-        """
-        return 36
-
-    def __nonzero__(self):
-        return self._bits != "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-
-    def __str__(self):
-        uuid_string = self.toString()
-        return uuid_string
-
-    __repr__ = __str__
-
-    def __getitem__(self, index):
-        return str(self)[index]
-
-    def __eq__(self, other):
-        if isinstance(other, (str, unicode)):
-            return other == str(self)
-        return self._bits == getattr(other, '_bits', '')
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-    def __le__(self, other):
-        return self._bits <= other._bits
-
-    def __ge__(self, other):
-        return self._bits >= other._bits
-
-    def __lt__(self, other):
-        return self._bits < other._bits
-
-    def __gt__(self, other):
-        return self._bits > other._bits
-
-    def __hash__(self):
-        return hash(self._bits)
-
-    def set(self, uuid):
-        self._bits = uuid._bits
-
-    def setFromString(self, uuid_string):
-        """
-        Given a string version of a uuid, set self bits
-        appropriately. Returns self.
-        """
-        s = string.replace(uuid_string, '-', '')
-        self._bits = _int2binstr(string.atol(s[:8],16),4) + \
-                     _int2binstr(string.atol(s[8:16],16),4) + \
-                     _int2binstr(string.atol(s[16:24],16),4) + \
-                     _int2binstr(string.atol(s[24:],16),4) 
-        return self
-
-    def setFromMemoryDump(self, gdb_string):
-        """
-        We expect to get gdb_string as four hex units. eg:
-        0x147d54db      0xc34b3f1b      0x714f989b      0x0a892fd2
-        Which will be translated to:
-        db547d14-1b3f4bc3-9b984f71-d22f890a
-        Returns self.
-        """
-        s = string.replace(gdb_string, '0x', '')
-        s = string.replace(s, ' ', '')
-        t = ''
-        for i in range(8,40,8):
-            for j in range(0,8,2):
-                t = t + s[i-j-2:i-j]
-        self.setFromString(t)
-
-    def toString(self):
-        """
-        Return as a string matching the LL standard
-        AAAAAAAA-AAAA-BBBB-BBBB-BBBBBBCCCCCC  (a 128-bit number in hex)
-        where A=network address, B=timestamp, C=random.
-        """
-        return uuid_bits_to_string(self._bits)
-
-    def getAsString(self):
-        """
-        Return a different string representation of the form
-        AAAAAAAA-AAAABBBB-BBBBBBBB-BBCCCCCC  (a 128-bit number in hex)
-        where A=network address, B=timestamp, C=random.
-        """
-        i1 = _binstr2int(self._bits[0:4])
-        i2 = _binstr2int(self._bits[4:8])
-        i3 = _binstr2int(self._bits[8:12])
-        i4 = _binstr2int(self._bits[12:16])
-        return '%08lx-%08lx-%08lx-%08lx' % (i1,i2,i3,i4)
-
-    def generate(self):
-        """
-        Generate a new uuid. This algorithm is slightly different
-        from c++ implementation for portability reasons.
-        Returns self.
-        """
-        m = md5()
-        m.update(uuid.uuid1().bytes)
-        self._bits = m.digest()
-        return self
-
-    def isNull(self):
-        """
-        Returns 1 if the uuid is null - ie, equal to default uuid.
-        """
-        return (self._bits == "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
-
-    def xor(self, rhs):
-        """
-        xors self with rhs.
-        """
-        v1 = _binstr2int(self._bits[0:4]) ^ _binstr2int(rhs._bits[0:4])
-        v2 = _binstr2int(self._bits[4:8]) ^ _binstr2int(rhs._bits[4:8])
-        v3 = _binstr2int(self._bits[8:12]) ^ _binstr2int(rhs._bits[8:12])
-        v4 = _binstr2int(self._bits[12:16]) ^ _binstr2int(rhs._bits[12:16])
-        self._bits = _int2binstr(v1,4) + \
-                     _int2binstr(v2,4) + \
-                     _int2binstr(v3,4) + \
-                     _int2binstr(v4,4) 
-
-
-# module-level null constant
-NULL = UUID()
-
-def printTranslatedMemory(four_hex_uints):
-    """
-    We expect to get the string as four hex units. eg:
-    0x147d54db      0xc34b3f1b      0x714f989b      0x0a892fd2
-    Which will be translated to:
-    db547d14-1b3f4bc3-9b984f71-d22f890a
-    """
-    uuid = UUID()
-    uuid.setFromMemoryDump(four_hex_uints)
-    print uuid.toString()
-
-def isUUID(id_str):
-    """
-    This function returns:
-    - 1 if the string passed is a UUID
-    - 0 is the string passed is not a UUID
-    - None if it neither of the if's below is satisfied
-    """
-    if not id_str or len(id_str) <  5 or len(id_str) > 36:
-        return 0
-
-    if isinstance(id_str, UUID) or UUID.uuid_regex.match(id_str):
-        return 1
-
-    return None
-
-def isPossiblyID(id_str):
-    """
-    This function returns 1 if the string passed has some uuid-like
-    characteristics. Otherwise returns 0.
-    """
-
-    is_uuid = isUUID(id_str)
-    if is_uuid is not None:
-        return is_uuid
-
-    # build a string which matches every character.
-    hex_wildcard = r"[0-9a-fA-F]"
-    chars = len(id_str)
-    next = min(chars, 8)
-    matcher = hex_wildcard+"{"+str(next)+","+str(next)+"}"
-    chars = chars - next
-    if chars > 0:
-        matcher = matcher + "-"
-        chars = chars - 1
-    for block in range(3):
-        next = max(min(chars, 4), 0)
-        if next:
-            matcher = matcher + hex_wildcard+"{"+str(next)+","+str(next)+"}"
-            chars = chars - next
-        if chars > 0:
-            matcher = matcher + "-"
-            chars = chars - 1
-    if chars > 0:
-        next = min(chars, 12)
-        matcher = matcher + hex_wildcard+"{"+str(next)+","+str(next)+"}"
-    #print matcher
-    uuid_matcher = re.compile(matcher)
-    if uuid_matcher.match(id_str):
-        return 1
-    return 0
-
-def uuid_bits_to_string(bits):
-    i1 = _binstr2int(bits[0:4])
-    i2 = _binstr2int(bits[4:6])
-    i3 = _binstr2int(bits[6:8])
-    i4 = _binstr2int(bits[8:10])
-    i5 = _binstr2int(bits[10:12])
-    i6 = _binstr2int(bits[12:16])
-    return '%08lx-%04lx-%04lx-%04lx-%04lx%08lx' % (i1,i2,i3,i4,i5,i6)
-
-def uuid_bits_to_uuid(bits):
-    return UUID(uuid_bits_to_string(bits))
-
-
-try:
-    from mulib import stacked
-    stacked.NoProducer()  # just to exercise stacked
-except:
-    #print "Couldn't import mulib.stacked, not registering UUID converter"
-    pass
-else:
-    def convertUUID(uuid, req):
-        req.write(str(uuid))
-
-    stacked.add_producer(UUID, convertUUID, "*/*")
-    stacked.add_producer(UUID, convertUUID, "text/html")
diff --git a/indra/viewer_components/manager/util/fastest_elementtree.py b/indra/viewer_components/manager/util/fastest_elementtree.py
deleted file mode 100755
index 4fcf662dd90946ac48b9167cd9eb0e48bca97e2f..0000000000000000000000000000000000000000
--- a/indra/viewer_components/manager/util/fastest_elementtree.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""\
-@file fastest_elementtree.py
-@brief Concealing some gnarly import logic in here.  This should export the interface of elementtree.
-
-$LicenseInfo:firstyear=2008&license=mit$
-
-Copyright (c) 2008-2009, Linden Research, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-$/LicenseInfo$
-"""
-
-# The parsing exception raised by the underlying library depends
-# on the ElementTree implementation we're using, so we provide an
-# alias here.
-#
-# Use ElementTreeError as the exception type for catching parsing
-# errors.
-
-
-# Using cElementTree might cause some unforeseen problems, so here's a
-# convenient off switch.
-use_celementree = True
-
-try:
-    if not use_celementree:
-        raise ImportError()
-    # Python 2.3 and 2.4.
-    from cElementTree import *
-    ElementTreeError = SyntaxError
-except ImportError:
-    try:
-        if not use_celementree:
-            raise ImportError()
-        # Python 2.5 and above.
-        from xml.etree.cElementTree import *
-        ElementTreeError = SyntaxError
-    except ImportError:
-        # Pure Python code.
-        try:
-            # Python 2.3 and 2.4.
-            from elementtree.ElementTree import *
-        except ImportError:
-            # Python 2.5 and above.
-            from xml.etree.ElementTree import *
-
-        # The pure Python ElementTree module uses Expat for parsing.
-        from xml.parsers.expat import ExpatError as ElementTreeError