diff --git a/.hgignore b/.hgignore
index 1b7a9019a265cfc9fb6ba03a1e7a9d6aa8ee2120..0d672e6ebc35bdc7399b31425ae4bc65feb5a0b2 100755
--- a/.hgignore
+++ b/.hgignore
@@ -17,6 +17,8 @@ build-darwin-*
 build-vc80/
 build-vc100/
 build-vc120/
+build-vc120-32/
+build-vc120-64/
 indra/build-vc[0-9]*
 indra/CMakeFiles
 indra/lib/mono/1.0/*.dll
diff --git a/BuildParams b/BuildParams
index 09cc06e83a8e1f8c91fd102f6cf2f60b380f5ae4..a991781c580b9f99df87acc904578cb93524ef7c 100755
--- a/BuildParams
+++ b/BuildParams
@@ -3,36 +3,19 @@
 # Please refer to:
 #  https://wiki.secondlife.com/wiki/Automated_Build_System
 
-
-# Global setting for now....
-Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2"
-CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2"
-Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2"
+# Variants (NOTE: 'Release' must be last for uploads to work correctly)
+variants = "RelWithDebInfo Release"
 
 # Use Public Upload Locations
 public_build = true
 build_docs = true
 
-# disable all Debug builds (RelWithDebInfo is sufficient)
-build_CYGWIN_Debug = false
-build_Linux_Debug = false
-build_Darwin_Debug = false
-build_Debug = false
-
 # enable Doxygen building on Linux for TeamCity (it can be done manually on any platform)
 build_Linux_Doxygen = true
 
-# Update Public Inworld Build Status Indicators (setting should mirror "public_build")
-email_status_this_is_os = true
-
-# Limit extent of codeticket updates to revisions after...
-codeticket_since = 3.3.0-release
-
-# Override build system default toolchain
-# Note that this will only affect automated builds.
-Linux.distcc_version = 
-Linux.gcc_version = /usr/bin/gcc-4.6
-Linux.cxx_version = /usr/bin/g++-4.6
+# Need viewer-build-variables as well as other shared repositories
+buildscripts_shared_more_NAMEs="build_variables"
+build_variables_repostory_url = "https://bitbucket.org/lindenlab/viewer-build-variables"
 
 ################################################################
 ####      Examples of how to set the viewer_channel         ####
@@ -88,5 +71,9 @@ EDU_viewer_channel_suffix = "edu"
 # Notifications - to configure email notices use the TeamCity parameter
 # setting screen for your project or build configuration to set the
 # environment variable 'email' to a space-separated list of email addresses
+email=""
 
-
+# Global setting for now....
+Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2"
+CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2"
+Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2"
diff --git a/autobuild.xml b/autobuild.xml
index f485aa0cb7d29461f22bd76649874f0ade38cb60..0dbe7199079fc567a00ffe57cd9bed968db0c70d 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -29,6 +29,18 @@
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>7ea2df03bfc35c06acf23dd9e734adac</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1103/2554/SDL-1.2.15-linux64-501092.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
         </map>
         <key>version</key>
         <string>1.2.15</string>
@@ -59,33 +71,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>ae733dd8f2c83055030ea6e08c623306</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/745/1534/apr_suite-1.4.5.500735-darwin64-500735.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>402552cf158e2fe953b7224f4615a957</string>
+              <string>1aa2e5355bb9df09f9196d14a72b6705</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/apr_3p-update-apr/rev/297252/arch/Linux/installer/apr_suite-1.4.5.297252-linux-297252.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-apr/rev/314241/arch/Linux/installer/apr_suite-1.4.5.314241-linux-314241.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>bc8855c8253b8293c7e61af7b1ed0f05</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/744/1545/apr_suite-1.4.5.500735-linux64-500735.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>8f865b509bb5011caf3dd95a22a4589d</string>
+              <string>7d97a3788ea4f89eccb7789e4f015bb3</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/apr_3p-update-apr/rev/297252/arch/CYGWIN/installer/apr_suite-1.4.5.297252-windows-297252.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/747/1540/apr_suite-1.4.5.500735-windows-500735.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>8820c4df1079a9af53f52485f50ff179</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/746/1537/apr_suite-1.4.5.500735-windows64-500735.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.4.5.297252</string>
+        <string>1.4.5.500735</string>
       </map>
       <key>boost</key>
       <map>
@@ -113,30 +161,66 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>d318c25353e41215f1f523d58cacfd44</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/893/1984/boost-1.57-darwin64-500883.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>fb1537f7ad0b490fcb4f096c15dce9cd</string>
+              <string>f1fdb548fd6c09a083c86f3a23d7f041</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/boost_3p-update-boost/rev/297445/arch/Linux/installer/boost-1.57-linux-297445.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-boost/rev/317807/arch/Linux/installer/boost-1.57-linux-317807.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>8e7ee97c3083f44385b09420655ebd04</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/892/1989/boost-1.57-linux64-500883.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>76a607d8a625062b9a63a88b62819894</string>
+              <string>80b1963d635e883cb5ed223e94406adb</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/boost_3p-update-boost/rev/297445/arch/CYGWIN/installer/boost-1.57-windows-297445.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/894/1976/boost-1.57-windows-500883.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>3d6a6373ed0daa490cdb4f92db45de52</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/895/1979/boost-1.57-windows64-500883.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
         <string>1.57</string>
@@ -165,33 +249,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>fa93a9a10fa379091e3e7b85665690d9</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/913/2026/colladadom-2.3.500902-darwin64-500902.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>d627c2a679f3afb8d3e090d42f53cd2e</string>
+              <string>78b9a6506fb7d53da166f7a65f2278f4</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/297450/arch/Linux/installer/colladadom-2.3.297450-linux-297450.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-colladadom/rev/317826/arch/Linux/installer/colladadom-2.3.317826-linux-317826.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>868127582794d6fd32fa69c9be4e83e4</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/912/2031/colladadom-2.3.500902-linux64-500902.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>220897a1893a188aa9d31efb48909878</string>
+              <string>5bd7875e16e7f88e21f4c44fe7c6433f</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/297450/arch/CYGWIN/installer/colladadom-2.3.297450-windows-297450.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/915/2035/colladadom-2.3.500902-windows-500902.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>8a647129a0a0a31594557785ea85f840</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/914/2034/colladadom-2.3.500902-windows64-500902.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>2.3.297450</string>
+        <string>2.3.500902</string>
       </map>
       <key>curl</key>
       <map>
@@ -219,35 +339,71 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>99fbc15f514be77c36280f300d257d5a</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1077/2495/curl-7.47.0.501064-darwin64-501064.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>f49d4ed203b03852a3f6b01b18319f7a</string>
+              <string>9430c08954c00736117099046694e1b1</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/312763/arch/Linux/installer/curl-7.47.0.312763-linux-312763.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-curl/rev/314230/arch/Linux/installer/curl-7.47.0.314230-linux-314230.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>e5d1b0439235f5f3829662a45e566743</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1075/2484/curl-7.47.0.501064-linux64-501064.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>5e0d4f4a5a5bbcba610aafbb91c30b2b</string>
+              <string>bda9f237d3e8238440bc5bedc2657547</string>
               <key>hash_algorithm</key>
               <string>md5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/312763/arch/CYGWIN/installer/curl-7.47.0.312763-windows-312763.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1078/2487/curl-7.47.0.501064-windows-501064.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>f7fa42c7157cd5007283ae7a5d97393d</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1079/2490/curl-7.47.0.501064-windows64-501064.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>7.47.0.312763</string>
+        <string>7.47.0.501064</string>
       </map>
       <key>db</key>
       <map>
@@ -298,13 +454,25 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c11ff7e2e0bd59e6e59628f24902bbcd</string>
+              <string>6d676abd9ad8d2883b855dbe397d9034</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/dbus-glib_3p-update-dbus-glib/rev/297768/arch/Linux/installer/dbus_glib-0.76-linux-297768.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-dbus-glib/rev/314266/arch/Linux/installer/dbus_glib-0.76-linux-314266.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>7ee7b9aed3c0c8c09e7bf26bba7af8e1</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-dbus-glib/rev/314266/arch/Linux/installer/dbus_glib-0.76-linux64-314266.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
         </map>
         <key>version</key>
         <string>0.76</string>
@@ -328,16 +496,16 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a62723a6deea8187702a2f926e98a35f</string>
+              <string>2fa9e9e89a81ed2ed686a170681f6bbc</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/dictionaries_3p-update-dictionaries/rev/297347/arch/Linux/installer/dictionaries-1.297347-common-297347.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/571/1225/dictionaries-1.500564-common-500564.tar.bz2</string>
             </map>
             <key>name</key>
             <string>common</string>
           </map>
         </map>
         <key>version</key>
-        <string>1.297347</string>
+        <string>1.500564</string>
       </map>
       <key>elfio</key>
       <map>
@@ -389,33 +557,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>fd182ab5bed66c94899dec3035310945</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/384/954/expat-2.1.1.500375-darwin64-500375.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>f546615d76bc0f9e8bc2b9ef89f0ca86</string>
+              <string>387c90b9bb5ec412587fbe7a56261dd1</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/expat_3p-update-expat/rev/297014/arch/Linux/installer/expat-2.0.1.297014-linux-297014.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-expat/rev/314211/arch/Linux/installer/expat-2.1.1.314211-linux-314211.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>5e1f025d1cebd12db542080aa755257f</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/380/943/expat-2.1.1.500375-linux64-500375.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c70c72a8a0a1e508691a9b35739b373f</string>
+              <string>09ece3f04ec0bd21dd0d401235aa20f7</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/expat_3p-update-expat/rev/297014/arch/CYGWIN/installer/expat-2.0.1.297014-windows-297014.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/383/949/expat-2.1.1.500375-windows-500375.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>5c82a3482799fe22b3c8fcb317f87bbb</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/382/946/expat-2.1.1.500375-windows64-500375.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>2.0.1.297014</string>
+        <string>2.1.1.500375</string>
       </map>
       <key>fmodex</key>
       <map>
@@ -441,33 +645,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>5fe125f2341501bc64848645d31b58ef</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/356/893/fmodex-4.44.61.500350-darwin64-500350.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>dd0135d53706a4040d65974f7e804d6f</string>
+              <string>b847ec838da1ad1dd646df9d74e9b395</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/fmodex_3p-update-fmodex/rev/297261/arch/Linux/installer/fmodex-4.44.31.297261-linux-297261.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/p64_3p-fmodex/rev/314207/arch/Linux/installer/fmodex-4.44.61.314207-linux-314207.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>270c3eddbe2960d5edb8d316db063d07</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/355/888/fmodex-4.44.61.500350-linux64-500350.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>5aa7b826e7c1cf95e9cd3ef77e314f35</string>
+              <string>ad5bb66f2aaa12636b5a69a020ea9f18</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/fmodex_3p-update-fmodex/rev/297261/arch/CYGWIN/installer/fmodex-4.44.31.297261-windows-297261.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1191/2796/fmodex-4.44.61.501175-windows-501175.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>6722f0efc2b55542bd71514b9a09e377</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1190/2791/fmodex-4.44.61.501175-windows64-501175.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>4.44.31.297261</string>
+        <string>4.44.61.501175</string>
       </map>
       <key>fontconfig</key>
       <map>
@@ -488,46 +728,28 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>864f9361661748ecf0e2cec7110d70b3</string>
+              <string>a20a3d0ab7fc3401bc2ca81e9309f630</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/fontconfig_3p-update-fontconfig/rev/297551/arch/Linux/installer/fontconfig-2.11.0-linux-297551.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-fontconfig/rev/314281/arch/Linux/installer/fontconfig-2.11.0-linux-314281.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
-        </map>
-        <key>version</key>
-        <string>2.11.0</string>
-      </map>
-      <key>freeglut</key>
-      <map>
-        <key>copyright</key>
-        <string>Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.</string>
-        <key>description</key>
-        <string>freeglut is a completely OpenSourced alternative to the OpenGL Utility Toolkit (GLUT) library.</string>
-        <key>license</key>
-        <string>freeglut</string>
-        <key>license_file</key>
-        <string>LICENSES/freeglut.txt</string>
-        <key>name</key>
-        <string>freeglut</string>
-        <key>platforms</key>
-        <map>
-          <key>windows</key>
+          <key>linux64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>58e328a8b2f3788f932c57ad77e3e117</string>
+              <string>e2419d56960c160670051fbb055fb729</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/freeglut_3p-update-freeglut/rev/295926/arch/CYGWIN/installer/freeglut-2.6.0.295926-windows-295926.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-fontconfig/rev/314281/arch/Linux/installer/fontconfig-2.11.0-linux64-314281.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>windows</string>
+            <string>linux64</string>
           </map>
         </map>
         <key>version</key>
-        <string>2.6.0.295926</string>
+        <string>2.11.0</string>
       </map>
       <key>freetype</key>
       <map>
@@ -555,33 +777,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>3f0698d53acf14b3f0a11dba889d67f3</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/875/1919/freetype-2.4.4.500865-darwin64-500865.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>1ac3152b440287c58509d8af0a50326d</string>
+              <string>1b401394106cedc86926bd488f5aa45e</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/freetype_3p-update-freetype/rev/297053/arch/Linux/installer/freetype-2.4.4.297053-linux-297053.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-freetype/rev/314215/arch/Linux/installer/freetype-2.4.4.314215-linux-314215.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>94cf61dfdbc86aae5bbaf0b5cb8a366c</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/874/1914/freetype-2.4.4.500865-linux64-500865.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>207aa1a29bfe4ba63edbca38170970a1</string>
+              <string>b7a8df22cfc910180c66bb1c1ed89cd4</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/freetype_3p-update-freetype/rev/297053/arch/CYGWIN/installer/freetype-2.4.4.297053-windows-297053.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/876/1922/freetype-2.4.4.500865-windows-500865.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>ff72a895012ed603935083496b0a7bc9</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/877/1925/freetype-2.4.4.500865-windows64-500865.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>2.4.4.297053</string>
+        <string>2.4.4.500865</string>
       </map>
       <key>glext</key>
       <map>
@@ -602,30 +860,54 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>4bf4f9e65168138eebbc769e9e12230b</string>
+              <string>baf1fd13e1fe6aef586200fc87a70f53</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glext_3p-update-glext/rev/296893/arch/Linux/installer/glext-68-linux-296893.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/Linux/installer/glext-68-linux-314200.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>5f3c9d61b620f949b199ebd8885218ed</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/Linux/installer/glext-68-linux64-314200.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6eb51c6f17e717a5617b112858d41c80</string>
+              <string>731d4adecfcbd9f7d20c4bbd2c183962</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glext_3p-update-glext/rev/296893/arch/CYGWIN/installer/glext-68-windows-296893.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/CYGWIN/installer/glext-68-windows-314200.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>9635e7e6fded468dfc0874a2ead54123</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/CYGWIN/installer/glext-68-windows64-314200.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
         <string>68</string>
       </map>
-      <key>glh-linear</key>
+      <key>glh_linear</key>
       <map>
         <key>copyright</key>
         <string>Copyright (c) 2000 Cass Everitt</string>
@@ -636,7 +918,7 @@
         <key>license_file</key>
         <string>LICENSES/glh-linear.txt</string>
         <key>name</key>
-        <string>glh-linear</string>
+        <string>glh_linear</string>
         <key>platforms</key>
         <map>
           <key>common</key>
@@ -644,9 +926,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>44c596c659d32a86972ac9c6f206cb68</string>
+              <string>fa41756977ad8b9fd2d1465dadd4f956</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glh-linear_3p-glh-linear/rev/303446/arch/Linux/installer/glh_linear-0.0.0-common-303446.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/529/1139/glh_linear-0.0.0-common-500522.tar.bz2</string>
             </map>
             <key>name</key>
             <string>common</string>
@@ -681,91 +963,73 @@
             <key>name</key>
             <string>darwin</string>
           </map>
-          <key>linux</key>
+          <key>darwin64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>fffd130f17cbbe2b93cc241b27262647</string>
-              <key>hash_algorithm</key>
-              <string>md5</string>
+              <string>047ce52d5fe3e9ac70763de0098cf530</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glod_3p-update-glod/rev/296895/arch/Linux/installer/glod-1.0pre4.296895-linux-296895.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/719/1462/glod-1.0pre3.500710-darwin64-500710.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>linux</string>
+            <string>darwin64</string>
           </map>
-          <key>windows</key>
+          <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b0b32155319c6441997c034bdae28a22</string>
+              <string>58113bcbbacbaeb2d278f745867ae6f0</string>
               <key>hash_algorithm</key>
               <string>md5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glod_3p-update-glod/rev/296895/arch/CYGWIN/installer/glod-1.0pre4.296895-windows-296895.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glod/rev/314201/arch/Linux/installer/glod-1.0pre4.314201-linux-314201.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>windows</string>
+            <string>linux</string>
           </map>
-        </map>
-        <key>version</key>
-        <string>1.0pre4.296895</string>
-      </map>
-      <key>glui</key>
-      <map>
-        <key>copyright</key>
-        <string>Copyright 2006 Paul Rademacher</string>
-        <key>description</key>
-        <string>GLUI is a GLUT-based C++ user interface library which provides controls such as buttons, checkboxes, radio buttons, and spinners to OpenGL applications.</string>
-        <key>license</key>
-        <string>ZLIB</string>
-        <key>license_file</key>
-        <string>LICENSES/glui.txt</string>
-        <key>name</key>
-        <string>glui</string>
-        <key>platforms</key>
-        <map>
-          <key>darwin</key>
+          <key>linux64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9b7e2ab9b208b3001803294f83d2b610</string>
+              <string>8cb665230ec24048aa3b733f2b1c3b00</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glui_3p-update-glui/rev/297273/arch/Darwin/installer/glui-2.36.297273-darwin-297273.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glod/rev/314201/arch/Linux/installer/glod-1.0pre4.314201-linux64-314201.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>darwin</string>
+            <string>linux64</string>
           </map>
-          <key>linux</key>
+          <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>f330b3acd03526d827030eefeeb06240</string>
+              <string>511d066e35bbc14dd512c831b53a2fad</string>
+              <key>hash_algorithm</key>
+              <string>md5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glui_3p-update-glui/rev/297273/arch/Linux/installer/glui-2.36.297273-linux-297273.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/720/1465/glod-1.0pre3.500710-windows-500710.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>linux</string>
+            <string>windows</string>
           </map>
-          <key>windows</key>
+          <key>windows64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>75b16a5a606c78aaeb2f8e6046310a58</string>
+              <string>7fa6f187fc5e4175a13d3e0d4b6658a4</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glui_3p-update-glui/rev/297273/arch/CYGWIN/installer/glui-2.36.297273-windows-297273.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/721/1468/glod-1.0pre3.500710-windows64-500710.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>windows</string>
+            <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>2.36.297273</string>
+        <string>1.0pre3.500710</string>
       </map>
       <key>google_breakpad</key>
       <map>
@@ -793,33 +1057,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>0b76c9551ae3ef1ede9a9abee865f55b</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/568/1209/google_breakpad-1413.500560-darwin64-500560.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>0bf69fbc829d964820b798a0494278c9</string>
+              <string>352e673897e8f36f8470150b8ace6ce9</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-breakpad_3p-update-google-breakpad/rev/298033/arch/Linux/installer/google_breakpad-1413.298033-linux-298033.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-google-breakpad/rev/314225/arch/Linux/installer/google_breakpad-1413.314225-linux-314225.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
-          <key>windows</key>
+          <key>linux64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c73a7c9aa53a4e266df2d5230a650fbf</string>
+              <string>066ce05521a0e1cff2da8aeecfefd7f1</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-breakpad_3p-update-google-breakpad/rev/298127/arch/CYGWIN/installer/google_breakpad-1413.298127-windows-298127.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/567/1217/google_breakpad-1413.500560-linux64-500560.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>windows</string>
+            <string>linux64</string>
           </map>
-        </map>
-        <key>version</key>
-        <string>1413.298127</string>
+          <key>windows</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>c6a4497fbf3af4e06f74d529f4f084b0</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/570/1220/google_breakpad-1413.500560-windows-500560.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows</string>
+          </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>46409efe7425f637a7757c3a578e7baa</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/569/1212/google_breakpad-1413.500560-windows64-500560.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
+        </map>
+        <key>version</key>
+        <string>1413.500560</string>
       </map>
       <key>googlemock</key>
       <map>
@@ -847,87 +1147,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
-          <key>linux</key>
+          <key>darwin64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>e08b0e9e269b80b549f6044c4e608fb5</string>
+              <string>1a8081953bdf1bbbc9b8a8e6e062c02d</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/googlemock_3p-update-googlemock/rev/297460/arch/Linux/installer/googlemock-1.7.0.297460-linux-297460.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/919/2048/googlemock-1.7.0.500908-darwin64-500908.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>linux</string>
+            <string>darwin64</string>
           </map>
-          <key>windows</key>
+          <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>f30de5bf36e8ca8681883fe8fd8e0092</string>
+              <string>ad51f68702f25ba245fff312c50c8876</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/googlemock_3p-update-googlemock/rev/297460/arch/CYGWIN/installer/googlemock-1.7.0.297460-windows-297460.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-googlemock/rev/317828/arch/Linux/installer/googlemock-1.7.0.317828-linux-317828.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>windows</string>
+            <string>linux</string>
           </map>
-        </map>
-        <key>version</key>
-        <string>1.7.0.297460</string>
-      </map>
-      <key>gperftools</key>
-      <map>
-        <key>copyright</key>
-        <string>Copyright (c) 2005, Google Inc.</string>
-        <key>description</key>
-        <string>Fast, multi-threaded malloc() and nifty performance analysis tools</string>
-        <key>license</key>
-        <string>BSD</string>
-        <key>license_file</key>
-        <string>LICENSES/gperftools.txt</string>
-        <key>name</key>
-        <string>gperftools</string>
-        <key>platforms</key>
-        <map>
-          <key>darwin</key>
+          <key>linux64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>0137e450bf24cff7e78634bb9a1c85e4</string>
+              <string>0f606bf01f933f00edeb9bf9a2530930</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-perftools_3p-update-google-perftools/rev/297263/arch/Darwin/installer/gperftools-2.0.297263-darwin-297263.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/918/2056/googlemock-1.7.0.500908-linux64-500908.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>darwin</string>
+            <string>linux64</string>
           </map>
-          <key>linux</key>
+          <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>0c252bcaa1cb852f5c4e46a13ed459c5</string>
+              <string>d01c9b12be6c5bb0749441495d45cba3</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-perftools_3p-update-google-perftools/rev/297263/arch/Linux/installer/gperftools-2.0.297263-linux-297263.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/920/2051/googlemock-1.7.0.500908-windows-500908.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>linux</string>
+            <string>windows</string>
           </map>
-          <key>windows</key>
+          <key>windows64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>2946f9bbf227dee8881af43856ebb3a1</string>
+              <string>e508a2ac7900853cc551666d0cf06541</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-perftools_3p-update-google-perftools/rev/297263/arch/CYGWIN/installer/gperftools-2.0.297263-windows-297263.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/921/2059/googlemock-1.7.0.500908-windows64-500908.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>windows</string>
+            <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>2.0.297263</string>
+        <string>1.7.0.500908</string>
       </map>
       <key>gstreamer</key>
       <map>
@@ -946,16 +1228,28 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>fb1479533a7699b44d34e3a550037eb7</string>
+              <string>5017b3e95d2c6f47bb111c3f9c075522</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/gstreamer_3p-update-gstreamer/rev/294903/arch/Linux/installer/gstreamer-0.10.6.294903-linux-294903.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gstreamer/rev/314267/arch/Linux/installer/gstreamer-0.10.6.314267-linux-314267.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>7c9d7cc88add7831a6afeedc20cad2fe</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gstreamer/rev/314267/arch/Linux/installer/gstreamer-0.10.6.314267-linux64-314267.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>0.10.6.294903</string>
+        <string>0.10.6.314267</string>
       </map>
       <key>gtk-atk-pango-glib</key>
       <map>
@@ -974,16 +1268,28 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>15af375116f5c943ea6f4190bc764224</string>
+              <string>a6431df705526501684d9050e04bfa5b</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/gtk_3p-gtk-atk-pango-glib/rev/294804/arch/Linux/installer/gtk_atk_pango_glib-0.1-linux-294804.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gtk-atk-pango-glib/rev/314220/arch/Linux/installer/gtk_atk_pango_glib-0.1-linux-314220.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>de7bba8fd2275a11b077b124413065d0</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gtk-atk-pango-glib/rev/314220/arch/Linux/installer/gtk_atk_pango_glib-0.1-linux64-314220.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>0.0</string>
+        <string>0.1</string>
       </map>
       <key>havok-source</key>
       <map>
@@ -1011,33 +1317,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>cbaa7619050123c3fd2a88959f88bd47</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/749/1553/havok_source-2012.1-2-darwin64-500739.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6b0f41ddddfa60d8424d8a2e0bc2077d</string>
+              <string>03c1c5f7c3e93e905f635ca22b607494</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/296959/arch/Linux/installer/havok_source-2012.1-linux-296959.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/p64_3p-havok-source/rev/314226/arch/Linux/installer/havok_source-2012.1-2-linux-314226.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>00d0333936a67059a43a6ec8ac38d564</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/748/1563/havok_source-2012.1-2-linux64-500739.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>ab30ae74a665950d73ea559f019ff358</string>
+              <string>dab55cc0555d7126fda925e20af851ea</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/297566/arch/CYGWIN/installer/havok_source-2012.1-windows-297566.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1194/2807/havok_source-2012.1-2-windows-501181.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>7bbc1c3512a5665b7576b4b0357a9eb7</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1195/2816/havok_source-2012.1-2-windows64-501181.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>2012.1</string>
+        <string>2012.1-2</string>
       </map>
       <key>jpeglib</key>
       <map>
@@ -1065,33 +1407,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>2a33d85c5afa07612e8c4f314ab29545</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/478/1016/jpeglib-8c.500387-darwin64-500387.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>0a6641f030e173a7bc0dc8a3087b6c7d</string>
+              <string>32560d3200da72fea2922371fcef25f5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jpeglib_3p-update-jpeglib/rev/296854/arch/Linux/installer/jpeglib-8c.296854-linux-296854.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-jpeglib/rev/314202/arch/Linux/installer/jpeglib-8c.314202-linux-314202.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>7d699142394f54a334b4fd203b4c9eea</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/457/970/jpeglib-8c.500387-linux64-500387.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>98d3dc8d107d04b572fe47bd43a56e74</string>
+              <string>543e25c3819399f37e0453db5eea558a</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jpeglib_3p-update-jpeglib/rev/296854/arch/CYGWIN/installer/jpeglib-8c.296854-windows-296854.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/497/1062/jpeglib-8c.500387-windows-500387.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>dbc2baf28f83d1646d7e2f66ead2a1a4</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/494/1049/jpeglib-8c.500387-windows64-500387.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>8c.296854</string>
+        <string>8c.500387</string>
       </map>
       <key>jsoncpp</key>
       <map>
@@ -1119,33 +1497,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>ba30bc3d67ef22700b534b15505bf976</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/606/1275/jsoncpp-0.5.0.500597-darwin64-500597.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>5b3b5dbf0c82c1046482a74ce9e11c38</string>
+              <string>9d5d9fec28cbbb1651b95728173f8af7</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jsoncpp_3p-update-jsoncpp/rev/297281/arch/Linux/installer/jsoncpp-0.5.0.297281-linux-297281.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-jsoncpp/rev/314229/arch/Linux/installer/jsoncpp-0.5.0.314229-linux-314229.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>a88378cb3019a47f3249243384d3c5da</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/605/1270/jsoncpp-0.5.0.500597-linux64-500597.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>e5a832cffe307a1e814ca0664be30b10</string>
+              <string>483ba51ff4060d02900adf8b7ca12e32</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jsoncpp_3p-update-jsoncpp/rev/297580/arch/CYGWIN/installer/jsoncpp-0.5.0.297580-windows-297580.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/608/1281/jsoncpp-0.5.0.500597-windows-500597.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>25694d8f71efba5479e0475cd1bf3c2f</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/607/1278/jsoncpp-0.5.0.500597-windows64-500597.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>0.5.0.297580</string>
+        <string>0.5.0.500597</string>
       </map>
       <key>kdu</key>
       <map>
@@ -1166,13 +1580,25 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>e62f2fc1ee9ab791d603c5b717b46119</string>
+              <string>c2a8811ab2ff1e60a8afc6268c5b44c1</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/kdu_3p-update-kdu/rev/296932/arch/Darwin/installer/kdu-7.2.296932-darwin-296932.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1119/2596/kdu-7.8.501106-darwin-501106.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>a13540f797be940fc9fd6d9299633a1a</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1118/2591/kdu-7.8.501106-darwin64-501106.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
@@ -1185,21 +1611,45 @@
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>c4e560a31c009ad3e62b79daf2cc8628</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/958/2200/kdu-7.8.500948-linux64-500948.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a0e5c050a4975c81611d9f1862ac57fb</string>
+              <string>f25f1b6e36c571d5ddb5625ac5fe1633</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/kdu_3p-update-kdu/rev/296932/arch/CYGWIN/installer/kdu-7.2.296932-windows-296932.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1123/2612/kdu-7.8.501106-windows-501106.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>fc706eaebd1a81b8f6e95acb6e06cc28</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1122/2609/kdu-7.8.501106-windows64-501106.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>7.2.296932</string>
+        <string>7.8.501106</string>
       </map>
       <key>libhunspell</key>
       <map>
@@ -1227,33 +1677,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>4b238300cf9c405cdcab18030372832f</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/534/1149/libhunspell-1.3.2.500526-darwin64-500526.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>988deae5c63ec638ad222b400a431f5b</string>
+              <string>0d8009c3b6c1eb510593476dd1d821b5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/hunspell_3p-update-hunspell/rev/296916/arch/Linux/installer/libhunspell-1.3.2.296916-linux-296916.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-hunspell/rev/314217/arch/Linux/installer/libhunspell-1.3.2.314217-linux-314217.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>ffbdd109356d66ddfefd8a5d57f63f1f</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/533/1144/libhunspell-1.3.2.500526-linux64-500526.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>ada0ad726842d902c09ab20a7ad5ac8f</string>
+              <string>a2025f748a6311ab390f89068b22c702</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/hunspell_3p-update-hunspell/rev/296916/arch/CYGWIN/installer/libhunspell-1.3.2.296916-windows-296916.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/535/1152/libhunspell-1.3.2.500526-windows-500526.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>233d86906ef88fa331263162a53e29f2</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/536/1155/libhunspell-1.3.2.500526-windows64-500526.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.3.2.296916</string>
+        <string>1.3.2.500526</string>
       </map>
       <key>libndofdev</key>
       <map>
@@ -1281,21 +1767,45 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>840bb6219f63a789749f5f6583c44eee</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/704/1420/libndofdev-0.1.500695-darwin64-500695.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>1c40c22fb7b84ccccefbf797e2478ec4</string>
+              <string>fdbebbbde3b289d93c0c8c294cf859cb</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libndofdev_3p-update-libndofdev/rev/297264/arch/CYGWIN/installer/libndofdev-0.1.297264-windows-297264.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/708/1426/libndofdev-0.1.500695-windows-500695.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>15cef2cec6c8d1980011e26249bd4e90</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/707/1423/libndofdev-0.1.500695-windows64-500695.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>0.1.297264</string>
+        <string>0.1.500695</string>
       </map>
       <key>libpng</key>
       <map>
@@ -1323,33 +1833,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>537b59a75709bd9abe0abe0c7309add4</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/883/1951/libpng-1.6.8.500873-darwin64-500873.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6dec32fc2527f8cafd616f9271ff3478</string>
+              <string>0758f3cb4c02ebab61854b811b0894e9</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/297051/arch/Linux/installer/libpng-1.6.8.297051-linux-297051.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libpng/rev/314214/arch/Linux/installer/libpng-1.6.8.314214-linux-314214.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>13de93ea11544051b69f238eeb644fd3</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/882/1946/libpng-1.6.8.500873-linux64-500873.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>09eb65e66e0230ab01e57e643647a4f1</string>
+              <string>9c2950f9d16566979dcd6ca6336778b3</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/297708/arch/CYGWIN/installer/libpng-1.6.8.297708-windows-297708.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/885/1957/libpng-1.6.8.500873-windows-500873.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>18fe233471e91d5d3ac6d08a296b79ba</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/884/1954/libpng-1.6.8.500873-windows64-500873.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.6.8.297708</string>
+        <string>1.6.8.500873</string>
       </map>
       <key>libuuid</key>
       <map>
@@ -1370,13 +1916,25 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>f231b6ec8bc2f050cfb1ee20bd83190d</string>
+              <string>a2eaf9515cd129f3e21a08e92689006b</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libuuid_3p-update-libuuid/rev/295209/arch/Linux/installer/libuuid-1.6.2-linux-295209.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libuuid/rev/314269/arch/Linux/installer/libuuid-1.6.2-linux-314269.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>fb89f1281dd54d8b99b339fc5b712b27</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libuuid/rev/314269/arch/Linux/installer/libuuid-1.6.2-linux64-314269.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
         </map>
         <key>version</key>
         <string>1.6.2</string>
@@ -1407,33 +1965,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>89a71a652a5ecd7cf6142ff56f40f018</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/891/1973/libxml2-2.9.4.500877-darwin64-500877.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b8b584853dc1344bb3571c13b06ec39e</string>
+              <string>6954173a141d928f2614076577d952de</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libxml_3p-update-libxml/rev/297050/arch/Linux/installer/libxml2-2.9.1.297050-linux-297050.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libxml/rev/314197/arch/Linux/installer/libxml2-2.9.1.314197-linux-314197.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>740fc93f195c77b3a0c0800b31878ecb</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/890/1968/libxml2-2.9.4.500877-linux64-500877.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>37fa0e86e54f5f283aa653d770fc8ed5</string>
+              <string>c2461ba7629c4cef5af623464aded3c6</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libxml_3p-update-libxml/rev/297050/arch/CYGWIN/installer/libxml2-2.9.1.297050-windows-297050.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/888/1960/libxml2-2.9.4.500877-windows-500877.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>8ec25000f5d72e26c2e7555c73898fbb</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/889/1963/libxml2-2.9.4.500877-windows64-500877.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>2.9.1.297050</string>
+        <string>2.9.4.500877</string>
       </map>
       <key>llappearance_utility</key>
       <map>
@@ -1498,18 +2092,30 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>1156121b4ccbb4aa29bc01f15c589f98</string>
+              <string>640cd808de734d9a6ca564475d951980</string>
               <key>hash_algorithm</key>
               <string>md5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/321153/arch/CYGWIN/installer/llceflib-1.5.3.321153-windows-321153.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1121/2604/llceflib-1.5.3.501109-windows-501109.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>f4b75f37ba344db3efeddfafff10f5f9</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1120/2601/llceflib-1.5.3.501109-windows64-501109.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.5.3.317959</string>
+        <string>1.5.3.501109</string>
       </map>
       <key>llphysicsextensions_source</key>
       <map>
@@ -1537,33 +2143,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>8d66b068425d2cbc65949c83d7f37d23</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/486/1031/llphysicsextensions_source-1.0.500392-darwin64-500392.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c94dc7ab6efe59c0d5d04fc447257c57</string>
+              <string>18ebea18be4cf0d3da4a6bb73787395c</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/Linux/installer/llphysicsextensions_source-1.0.313564-linux-313564.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/p64_llphysicsextensions/rev/314244/arch/Linux/installer/llphysicsextensions_source-1.0.314244-linux-314244.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>20279e8be7f8971c59f0b8f6aa513098</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/463/980/llphysicsextensions_source-1.0.500392-linux64-500392.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>e760be34addeb0cd6e2ec43394834bac</string>
+              <string>0ac91b8fadeebb767d8c7a4ab5272319</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/CYGWIN/installer/llphysicsextensions_source-1.0.313564-windows-313564.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/508/1090/llphysicsextensions_source-1.0.500392-windows-500392.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>ec95c627af598b6db5be99cff5559699</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/507/1087/llphysicsextensions_source-1.0.500392-windows64-500392.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.0.313564</string>
+        <string>1.0.500392</string>
       </map>
       <key>llphysicsextensions_stub</key>
       <map>
@@ -1582,42 +2224,78 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c8c6e5867d1ead7ad452a3359b22cf44</string>
-              <key>hash_algorithm</key>
-              <string>md5</string>
+              <string>c8c6e5867d1ead7ad452a3359b22cf44</string>
+              <key>hash_algorithm</key>
+              <string>md5</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions/rev/313563/arch/Darwin/installer/llphysicsextensions_stub-1.0.313563-darwin-313563.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin</string>
+          </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>c7676595a2b49e41aa3e32bf99e5cf2f</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions/rev/313563/arch/Darwin/installer/llphysicsextensions_stub-1.0.313563-darwin-313563.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1081/2505/llphysicsextensions_stub-1.0.501069-darwin64-501069.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>darwin</string>
+            <string>darwin64</string>
           </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>e99afb25a4fd5b08c5cd3060ae9c1d59</string>
+              <string>f7dc825d13dec920a36641823f87dd94</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions/rev/313563/arch/Linux/installer/llphysicsextensions_stub-1.0.313563-linux-313563.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_llphysicsextensions/rev/314246/arch/Linux/installer/llphysicsextensions_stub-1.0.314246-linux-314246.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>430a1c16c2a0f999742411389e6bb50f</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1080/2500/llphysicsextensions_stub-1.0.501069-linux64-501069.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6f4307a35c692e44b872125d7932df8e</string>
+              <string>72b163adfc692d4930fa391043329c88</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions/rev/313563/arch/CYGWIN/installer/llphysicsextensions_stub-1.0.313563-windows-313563.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1083/2511/llphysicsextensions_stub-1.0.501069-windows-501069.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>b0a066c3fcee095843d9077ccbc8a75b</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1082/2508/llphysicsextensions_stub-1.0.501069-windows64-501069.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.0.313563</string>
+        <string>1.0.501069</string>
       </map>
       <key>mesa</key>
       <map>
@@ -1664,16 +2342,28 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9e30c9e228d6a825b6774b97ff052973</string>
+              <string>22c7be12c1d2ee87b059be903d7f2fbd</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/nvapi_3p-update-nvapi/rev/295118/arch/CYGWIN/installer/nvapi-304-windows-295118.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-nvapi/rev/314405/arch/CYGWIN/installer/nvapi-352.314405-windows-314405.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>90e32843a0e21037001dc88240008e1f</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-nvapi/rev/314405/arch/CYGWIN/installer/nvapi-352.314405-windows64-314405.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>304</string>
+        <string>352.314405</string>
       </map>
       <key>ogg_vorbis</key>
       <map>
@@ -1701,33 +2391,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>bb8bed08fd5973a040c509ef8b545ec8</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/490/1046/ogg_vorbis-1.2.2-1.3.2.500397-darwin64-500397.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b0cd31d5b07a9fc25c4d69ba2f95eace</string>
+              <string>5c9d94dce4551b19790057766ff939ea</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/oggvorbis_3p-update-oggvorbis/rev/296878/arch/Linux/installer/ogg_vorbis-1.2.2-1.3.2.296878-linux-296878.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-oggvorbis/rev/314224/arch/Linux/installer/ogg_vorbis-1.2.2-1.3.2.314224-linux-314224.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>45ebd074053dc9cae8c5c74b52085d4b</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/465/990/ogg_vorbis-1.2.2-1.3.2.500397-linux64-500397.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>f358717739c288ec7401d6d1936ef878</string>
+              <string>f7edf86dcf2d9be7bee98c91256fa569</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/oggvorbis_3p-update-oggvorbis/rev/296878/arch/CYGWIN/installer/ogg_vorbis-1.2.2-1.3.2.296878-windows-296878.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/512/1108/ogg_vorbis-1.2.2-1.3.2.500397-windows-500397.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>497ec6ac26c2e136ee65acbed86cb2ef</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/511/1105/ogg_vorbis-1.2.2-1.3.2.500397-windows64-500397.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.2.2-1.3.2.296878</string>
+        <string>1.2.2-1.3.2.500397</string>
       </map>
       <key>open-libndofdev</key>
       <map>
@@ -1778,37 +2504,61 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>15ebe611213c9577691ffbade081549d</string>
+              <string>24b91eda3831a51c7774644016c4cb09</string>
               <key>hash_algorithm</key>
               <string>md5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openal_3p-update-openal/rev/297677/arch/Linux/installer/openal-1.12.854-1.1.0.297677-linux-297677.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/Linux/installer/openal-1.12.854-1.1.0.314223-linux-314223.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>7530fab3979312da75a903d87b73e3a9</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/Linux/installer/openal-1.12.854-1.1.0.314223-linux64-314223.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3bf6e26aeec71f36c8b6e20c6b883fe9</string>
+              <string>d9c86f79a6bb56a670e2801c33fd2dd1</string>
               <key>hash_algorithm</key>
               <string>md5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openal_3p-update-openal/rev/297677/arch/CYGWIN/installer/openal-1.12.854-1.1.0.297677-windows-297677.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/CYGWIN/installer/openal-1.12.854-1.1.0.314223-windows-314223.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>e0fdd9394a8cd8c6360b922f6f237e57</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/CYGWIN/installer/openal-1.12.854-1.1.0.314223-windows64-314223.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.12.854-1.1.0.297677</string>
+        <string>1.12.854-1.1.0.314223</string>
       </map>
       <key>openjpeg</key>
       <map>
         <key>copyright</key>
-        <string>Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium, Copyright (c) 2002-2007, Professor Benoit Macq, Copyright (c) 2001-2003, David Janssens, Copyright (c) 2002-2003, Yannick Verschueren, Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe, Copyright (c) 2005, Herve Drolon, FreeImage Team</string>
+        <string>Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium; Copyright (c) 2002-2007, Professor Benoit Macq; Copyright (c) 2001-2003, David Janssens; Copyright (c) 2002-2003, Yannick Verschueren; Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe; Copyright (c) 2005, Herve Drolon, FreeImage Team; Copyright (c) 2006-2007, Parvatha Elangovan; Copyright (c) 2008, Jerome Fimes, Communications &amp; Systemes &lt;jerome.fimes@c-s.fr&gt;; Copyright (c) 2010-2011, Kaori Hagihara; Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France; Copyright (c) 2012, CS Systemes d'Information, France;</string>
         <key>description</key>
         <string>The OpenJPEG library is an open-source JPEG 2000 codec written in C language.</string>
         <key>license</key>
@@ -1831,33 +2581,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>f7013e1f0b6a877090622fd73ec72cbc</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1114/2576/openjpeg-1.5.1.501102-darwin64-501102.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>675c283030879d3d9c49082bfa2192eb</string>
+              <string>e82317482647559d46a818ba48e9423a</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openjpeg_3p-update-openjpeg/rev/297018/arch/Linux/installer/openjpeg-1.4.297018-linux-297018.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openjpeg/rev/314205/arch/Linux/installer/openjpeg-2.0.0.314205-linux-314205.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>ac66f3197010b1549a5e4467aebbc27d</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1113/2571/openjpeg-1.5.1.501102-linux64-501102.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b35adcf74d22c128045aa87aade74736</string>
+              <string>8a7f0be5647e07235d205ac00805fb78</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openjpeg_3p-update-openjpeg/rev/297018/arch/CYGWIN/installer/openjpeg-1.4.297018-windows-297018.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1116/2586/openjpeg-1.5.1.501102-windows-501102.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>398544058036bc27097fcff208934d11</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1115/2581/openjpeg-1.5.1.501102-windows64-501102.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.4.297018</string>
+        <string>1.5.1.501102</string>
       </map>
       <key>openssl</key>
       <map>
@@ -1885,33 +2671,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>7011482b07b32b375ecc3e891c37f469</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1063/2462/openssl-1.0.1u.501051-darwin64-501051.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c310ba9971cbd796b303c3be67fb11c6</string>
+              <string>f46a601d60b7dbcfde32afc0cb64453e</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openssl_3p-update-openssl/rev/297168/arch/Linux/installer/openssl-1.0.1h.297168-linux-297168.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openssl/rev/314227/arch/Linux/installer/openssl-1.0.1h.314227-linux-314227.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>50bb9aca605a599cb1a46da3c45f78ac</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1062/2473/openssl-1.0.1u.501051-linux64-501051.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>398743f47578cbb44f5504128780369f</string>
+              <string>7d9801f9ce049ffd30fbe06b6bac4c91</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openssl_3p-update-openssl/rev/297168/arch/CYGWIN/installer/openssl-1.0.1h.297168-windows-297168.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1064/2465/openssl-1.0.1u.501051-windows-501051.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>c3e404a9cc51d64c71ec13dbd44b8409</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1065/2468/openssl-1.0.1u.501051-windows64-501051.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.0.1h.297168</string>
+        <string>1.0.1u.501051</string>
       </map>
       <key>pcre</key>
       <map>
@@ -1939,63 +2761,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>addfbc0635b0ea65d7a151dd7ec5ef85</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/909/2015/pcre-8.35.500898-darwin64-500898.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b82817bcc2f63094d9c915d018d0b036</string>
+              <string>24a119b18e63017ad932ad54df8161bc</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/pcre_3p-update-pcre/rev/297155/arch/Linux/installer/pcre-8.35.-linux-297155.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-pcre/rev/314136/arch/Linux/installer/pcre-8.35.314136-linux-314136.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>0f058ca2176e7d02d51e54c66a96f336</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/908/2010/pcre-8.35.500898-linux64-500898.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>96ed836c89a99dfc22f9c16a0d7272d3</string>
+              <string>150220f39f0aa5a8d9e609b450a9b147</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/pcre_3p-update-pcre/rev/297155/arch/CYGWIN/installer/pcre-8.35.-windows-297155.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/911/2021/pcre-8.35.500898-windows-500898.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
-        </map>
-        <key>version</key>
-        <string>8.35.</string>
-      </map>
-      <key>quicktime</key>
-      <map>
-        <key>copyright</key>
-        <string>2010 Apple</string>
-        <key>description</key>
-        <string>QuickTime 7.3 SDK for Windows</string>
-        <key>license</key>
-        <string>unknown</string>
-        <key>license_file</key>
-        <string>LICENSES/quicktime.txt</string>
-        <key>name</key>
-        <string>quicktime</string>
-        <key>platforms</key>
-        <map>
-          <key>windows</key>
+          <key>windows64</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>78650a79bda6435e623a940ad425a593</string>
+              <string>eaebfb4a96a6306ee8e0b18434d125f9</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/quicktime_3p-update-quicktime/rev/300073/arch/CYGWIN/installer/quicktime-7.3-windows-300073.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/910/2018/pcre-8.35.500898-windows64-500898.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>windows</string>
+            <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>7.3</string>
+        <string>8.35.500898</string>
       </map>
       <key>slvoice</key>
       <map>
@@ -2016,40 +2844,76 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3dd9bf4185bf2df413d890ca9eeab76c</string>
+              <string>8c2f921001a8ee29b826a45181465735</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/vivox_3p-slvoice/rev/302004/arch/Darwin/installer/slvoice-4.6.0017.22050.302004-darwin-302004.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-slvoice/rev/314209/arch/Darwin/installer/slvoice-4.6.0017.21209.314209-darwin-314209.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>c9b0d816cf14bebba138ea6f9f463553</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/614/1294/slvoice-4.6.0017.21209.500605-darwin64-500605.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>06c3a9b1005249f0c94a8b9f3775f3d3</string>
+              <string>e5832a68562c3409a56a3583d101864b</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/vivox_3p-slvoice/rev/302004/arch/Linux/installer/slvoice-3.2.0002.10426.302004-linux-302004.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-slvoice/rev/314209/arch/Linux/installer/slvoice-3.2.0002.10426.314209-linux-314209.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>92b0ae08832bd0e99c34ef8f3e6346ad</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/613/1289/slvoice-3.2.0002.10426.500605-linux64-500605.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>47a3316dae47cc4e7c1ea7b74ba8dd1e</string>
+              <string>3ce62e3696f26a1e09e0c769280e5608</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/vivox_3p-slvoice/rev/302004/arch/CYGWIN/installer/slvoice-4.6.0017.22050.302004-windows-302004.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/616/1300/slvoice-4.6.0017.21209.500605-windows-500605.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>61c41dd565e2caa38bd0056970094749</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/615/1297/slvoice-4.6.0017.21209.500605-windows64-500605.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>3.2.0002.10426.302004</string>
+        <string>4.6.0017.21209.500605</string>
       </map>
       <key>tut</key>
       <map>
@@ -2070,9 +2934,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>2f32faa00e600911f838a7d82da5a8db</string>
+              <string>722563bd6e2ae0c7e53c027d267154f7</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/tut_3p-update-tut/rev/297257/arch/Linux/installer/tut-2008.11.30-common-297257.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/496/1054/tut-2008.11.30-common-500403.tar.bz2</string>
             </map>
             <key>name</key>
             <string>common</string>
@@ -2107,6 +2971,18 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>5b9cd1d6fac519aad59f6d53a54229c5</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/347/872/uriparser-0.8.0.1-darwin64-500342.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
@@ -2119,18 +2995,42 @@
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>087375378f104cdac0cb0fe0ca43dd4d</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/346/880/uriparser-0.8.0.1-linux64-500342.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>e4520158dda88453e46942eab6f9c0a8</string>
+              <string>1becd11c19dd1763f0322ba4d1a5ee06</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/uriparser_3p-update-uriparser/rev/299435/arch/CYGWIN/installer/uriparser-0.8.0.1-windows-299435.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/521/1129/uriparser-0.8.0.1-windows-500342.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>587db55a2a3ce57628374b5e27b3272e</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/349/875/uriparser-0.8.0.1-windows64-500342.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
         <string>0.8.0.1</string>
@@ -2164,16 +3064,28 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>04cff37070a5f65f3652b4ddcec7183f</string>
+              <string>dc37f7cc77a62891bb9ae46c9e19f95e</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-vlc-bin/rev/317935/arch/CYGWIN/installer/vlc_bin-2.2.4.317935-windows-317935.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1219/2834/vlc_bin-2.2.4.501207-windows-501207.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>148ee599afeba9794de14ca433389504</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1218/2829/vlc_bin-2.2.4.501207-windows64-501207.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>2.2.4.317935</string>
+        <string>2.2.4.501207</string>
       </map>
       <key>xmlrpc-epi</key>
       <map>
@@ -2201,33 +3113,69 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>b2d31df56a10c634657eed856c8d7895</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/728/1494/xmlrpc_epi-0.54.1.500719-darwin64-500719.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>30bb26d6cc78c16047fc85a63f48fcdb</string>
+              <string>b63f828e798287d475991134cdcfbca3</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/xmlrpc-emi_3p-update-xmlrpc-epi/rev/297075/arch/Linux/installer/xmlrpc_epi-0.54.1.297075-linux-297075.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-xmlrpc-epi/rev/314240/arch/Linux/installer/xmlrpc_epi-0.54.1.314240-linux-314240.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>35df17c3eb673030dea4bde9191aa506</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/727/1489/xmlrpc_epi-0.54.1.500719-linux64-500719.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a7e1a8369a5afd52e1b6fc1f14155033</string>
+              <string>6c16f020bf01155e6746487af0b26173</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/xmlrpc-emi_3p-update-xmlrpc-epi/rev/297075/arch/CYGWIN/installer/xmlrpc_epi-0.54.1.297075-windows-297075.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/729/1497/xmlrpc_epi-0.54.1.500719-windows-500719.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>a9dda7caa8835c52b3735711cfee4eb9</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/730/1500/xmlrpc_epi-0.54.1.500719-windows64-500719.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>0.54.1.297075</string>
+        <string>0.54.1.500719</string>
       </map>
       <key>zlib</key>
       <map>
@@ -2255,35 +3203,71 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>e204dee29902549f50af1af2bb098df5</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/867/1903/zlib-1.2.8.500857-darwin64-500857.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
           <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>2eb8e59b6464222dcf4435016ad5f618</string>
+              <string>98a8c775c581ca80bb559e8b4e8eaae7</string>
               <key>hash_algorithm</key>
               <string>md5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/zlib_3p-update-zlib/rev/296881/arch/Linux/installer/zlib-1.2.8.296881-linux-296881.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-zlib/rev/314131/arch/Linux/installer/zlib-1.2.8.314131-linux-314131.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
           </map>
+          <key>linux64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>dab6be8b0596c1e3354f2b6d41335131</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/866/1898/zlib-1.2.8.500857-linux64-500857.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux64</string>
+          </map>
           <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>ae420ec6d30411c07aac2502d7bbc0f3</string>
+              <string>f92cbb0ab5e5d20789bf6102f9a27aa6</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/zlib_3p-update-zlib/rev/296881/arch/CYGWIN/installer/zlib-1.2.8.296881-windows-296881.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/868/1906/zlib-1.2.8.500857-windows-500857.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>windows64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>70a56767f6a109af412838875d0b5f1b</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/869/1909/zlib-1.2.8.500857-windows64-500857.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows64</string>
+          </map>
         </map>
         <key>version</key>
-        <string>1.2.8.296881</string>
+        <string>1.2.8.500857</string>
       </map>
     </map>
     <key>package_description</key>
@@ -2316,7 +3300,7 @@
                 <key>options</key>
                 <array>
                   <string>-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo</string>
-                  <string>-DWORD_SIZE:STRING=32</string>
+                  <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>
                   <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>
                   <string>-DINSTALL_PROPRIETARY=TRUE</string>
                 </array>
@@ -2337,7 +3321,7 @@
                 <key>options</key>
                 <array>
                   <string>-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo</string>
-                  <string>-DWORD_SIZE:STRING=32</string>
+                  <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>
                   <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>
                   <string>-DINSTALL_PROPRIETARY=FALSE</string>
                 </array>
@@ -2357,7 +3341,7 @@
                 <key>options</key>
                 <array>
                   <string>-DCMAKE_BUILD_TYPE:STRING=Release</string>
-                  <string>-DWORD_SIZE:STRING=32</string>
+                  <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>
                   <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>
                   <string>-DINSTALL_PROPRIETARY=TRUE</string>
                 </array>
@@ -2378,7 +3362,7 @@
                 <key>options</key>
                 <array>
                   <string>-DCMAKE_BUILD_TYPE:STRING=Release</string>
-                  <string>-DWORD_SIZE:STRING=32</string>
+                  <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>
                   <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>
                   <string>-DINSTALL_PROPRIETARY=FALSE</string>
                 </array>
@@ -2390,7 +3374,7 @@
           <key>name</key>
           <string>common</string>
         </map>
-        <key>darwin</key>
+        <key>darwin64</key>
         <map>
           <key>build_directory</key>
           <string>build-darwin-i386</string>
@@ -2408,8 +3392,10 @@
                 </array>
                 <key>options</key>
                 <array>
-                  <string>-configuration RelWithDebInfo</string>
-                  <string>-project SecondLife.xcodeproj</string>
+                  <string>-configuration</string>
+                  <string>RelWithDebInfo</string>
+                  <string>-project</string>
+                  <string>SecondLife.xcodeproj</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2421,7 +3407,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>'Xcode'</string>
+                  <string>Xcode</string>
                 </array>
               </map>
               <key>default</key>
@@ -2437,8 +3423,10 @@
                 <string>xcodebuild</string>
                 <key>options</key>
                 <array>
-                  <string>-configuration RelWithDebInfo</string>
-                  <string>-project SecondLife.xcodeproj</string>
+                  <string>-configuration</string>
+                  <string>RelWithDebInfo</string>
+                  <string>-project</string>
+                  <string>SecondLife.xcodeproj</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2446,7 +3434,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>'Xcode'</string>
+                  <string>Xcode</string>
                 </array>
               </map>
               <key>name</key>
@@ -2464,10 +3452,12 @@
                 </array>
                 <key>options</key>
                 <array>
-                  <string>-configuration Release</string>
-                  <string>-project SecondLife.xcodeproj</string>
+                  <string>-configuration</string>
+                  <string>Release</string>
+                  <string>-project</string>
+                  <string>SecondLife.xcodeproj</string>
                   <string>-DENABLE_SIGNING:BOOL=YES</string>
-                  <string>-DSIGNING_IDENTITY:STRING="Developer ID Application: Linden Research, Inc."</string>
+                  <string>-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2479,7 +3469,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>'Xcode'</string>
+                  <string>Xcode</string>
                 </array>
               </map>
               <key>name</key>
@@ -2496,7 +3486,7 @@
                   <string>-configuration Release</string>
                   <string>-project SecondLife.xcodeproj</string>
                   <string>-DENABLE_SIGNING:BOOL=YES</string>
-                  <string>-DSIGNING_IDENTITY:STRING="Developer ID Application: Linden Research, Inc."</string>
+                  <string>-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2504,7 +3494,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>'Xcode'</string>
+                  <string>Xcode</string>
                 </array>
               </map>
               <key>name</key>
@@ -2512,7 +3502,7 @@
             </map>
           </map>
           <key>name</key>
-          <string>darwin</string>
+          <string>darwin64</string>
         </map>
         <key>linux</key>
         <map>
@@ -2528,7 +3518,8 @@
                 <string>make</string>
                 <key>options</key>
                 <array>
-                  <string>-j 12</string>
+                  <string>-j</string>
+                  <string>12</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2540,7 +3531,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>'Unix Makefiles'</string>
+                  <string>Unix Makefiles</string>
                 </array>
               </map>
               <key>default</key>
@@ -2556,7 +3547,8 @@
                 <string>make</string>
                 <key>options</key>
                 <array>
-                  <string>-j 7</string>
+                  <string>-j</string>
+                  <string>7</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2564,7 +3556,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>'Unix Makefiles'</string>
+                  <string>Unix Makefiles</string>
                 </array>
               </map>
               <key>name</key>
@@ -2578,7 +3570,8 @@
                 <string>make</string>
                 <key>options</key>
                 <array>
-                  <string>-j 12</string>
+                  <string>-j</string>
+                  <string>12</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2590,7 +3583,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>'Unix Makefiles'</string>
+                  <string>Unix Makefiles</string>
                 </array>
               </map>
               <key>name</key>
@@ -2604,7 +3597,8 @@
                 <string>make</string>
                 <key>options</key>
                 <array>
-                  <string>-j 7</string>
+                  <string>-j</string>
+                  <string>7</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2612,7 +3606,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>'Unix Makefiles'</string>
+                  <string>Unix Makefiles</string>
                 </array>
               </map>
               <key>name</key>
@@ -2633,7 +3627,7 @@
         <key>windows</key>
         <map>
           <key>build_directory</key>
-          <string>build-vc120</string>
+          <string>build-vc120-$AUTOBUILD_ADDRSIZE</string>
           <key>configurations</key>
           <map>
             <key>RelWithDebInfo</key>
@@ -2649,7 +3643,7 @@
                 <key>options</key>
                 <array>
                   <string>/build</string>
-                  <string>"RelWithDebInfo|Win32"</string>
+                  <string>RelWithDebInfo|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2661,7 +3655,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>"Visual Studio 12"</string>
+                  <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>
                 </array>
               </map>
               <key>default</key>
@@ -2682,12 +3676,12 @@
                 <key>options</key>
                 <array>
                   <string>/p:Configuration=RelWithDebInfo</string>
-                  <string>/p:Platform=Win32</string>
+                  <string>/p:Platform=${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>
                   <string>/t:Build</string>
                   <string>/p:useenv=true</string>
                   <string>/verbosity:minimal</string>
                   <string>/toolsversion:4.0</string>
-                  <string>/p:"VCBuildAdditionalOptions= /incremental"</string>
+                  <string>/p:VCBuildAdditionalOptions= /incremental</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2699,7 +3693,8 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>"Visual Studio 12"</string>
+                  <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>
+                  <string>-DUNATTENDED:BOOL=ON</string>
                   <string>-DINSTALL_PROPRIETARY=FALSE</string>
                   <string>-DUSE_KDU=FALSE</string>
                 </array>
@@ -2720,7 +3715,7 @@
                 <key>options</key>
                 <array>
                   <string>/build</string>
-                  <string>"Release|Win32"</string>
+                  <string>Release|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2732,7 +3727,7 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>"Visual Studio 12"</string>
+                  <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>
                 </array>
               </map>
               <key>name</key>
@@ -2751,12 +3746,12 @@
                 <key>options</key>
                 <array>
                   <string>/p:Configuration=Release</string>
-                  <string>/p:Platform=Win32</string>
+                  <string>/p:Platform=${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>
                   <string>/t:Build</string>
                   <string>/p:useenv=true</string>
                   <string>/verbosity:minimal</string>
                   <string>/toolsversion:4.0</string>
-                  <string>/p:"VCBuildAdditionalOptions= /incremental"</string>
+                  <string>/p:VCBuildAdditionalOptions= /incremental</string>
                 </array>
               </map>
               <key>configure</key>
@@ -2768,7 +3763,8 @@
                 <key>options</key>
                 <array>
                   <string>-G</string>
-                  <string>"Visual Studio 12"</string>
+                  <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>
+                  <string>-DUNATTENDED:BOOL=ON</string>
                   <string>-DINSTALL_PROPRIETARY=FALSE</string>
                   <string>-DUSE_KDU=FALSE</string>
                 </array>
diff --git a/build.sh b/build.sh
index ab7a1faa37fe89a07627ed51ffa7677576b32d2b..e191794ba08d4cd791ff1d91f312d3cae403796d 100755
--- a/build.sh
+++ b/build.sh
@@ -142,10 +142,14 @@ build()
   local variant="$1"
   if $build_viewer
   then
+    begin_section "autobuild $variant"
     "$autobuild" build --no-configure -c $variant || fatal "failed building $variant"
+    echo true >"$build_dir"/build_ok
+    end_section "autobuild $variant"
     
+    begin_section "extensions $variant"
     # Run build extensions
-    if [ $build_ok -eq 0 -a -d ${build_dir}/packages/build-extensions ]
+    if [ -d ${build_dir}/packages/build-extensions ]
     then
         for extension in ${build_dir}/packages/build-extensions/*.sh
         do
@@ -157,10 +161,10 @@ build()
 
     # *TODO: Make this a build extension.
     package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages"
+    end_section "extensions $variant"
 
-    echo true >"$build_dir"/build_ok
   else
-      echo "Skipping build due to configuration build_viewer=${build_viewer}"
+      record_event "Skipping build due to configuration build_viewer=${build_viewer}"
       echo true >"$build_dir"/build_ok
   fi
 }
@@ -176,13 +180,9 @@ then
     exit 1
 fi
 
-# Check to see if we're skipping the platform
-if ! eval '$build_'"$arch"
-then
-    record_event "building on architecture $arch is disabled"
-    pass
-fi
+initialize_build # provided by master buildscripts build.sh
 
+begin_section "autobuild initialize"
 # ensure AUTOBUILD is in native path form for child processes
 AUTOBUILD="$(native_path "$AUTOBUILD")"
 # set "$autobuild" to cygwin path form for use locally in this script
@@ -194,7 +194,16 @@ then
 fi
 
 # load autobuild provided shell functions and variables
-eval "$("$autobuild" --quiet source_environment)"
+"$autobuild" --quiet source_environment > "$build_log_dir/source_environment"
+begin_section "dump source environment commands"
+cat "$build_log_dir/source_environment"
+end_section "dump source environment commands"
+
+begin_section "execute source environment commands"
+. "$build_log_dir/source_environment"
+end_section "execute source environment commands"
+
+end_section "autobuild initialize"
 
 # something about the additional_packages mechanism messes up buildscripts results.py on Linux
 # since we don't care about those packages on Linux, just zero it out, yes - a HACK
@@ -203,10 +212,9 @@ then
     export additional_packages=
 fi
 
-# dump environment variables for debugging
-begin_section "Environment"
-env|sort
-end_section "Environment"
+python_cmd "$helpers/codeticket.py" addinput "Viewer Channel" "${viewer_channel}"
+
+initialize_version # provided by buildscripts build.sh; sets version id
 
 # Now run the build
 succeeded=true
@@ -214,9 +222,6 @@ build_processes=
 last_built_variant=
 for variant in $variants
 do
-  eval '$build_'"$variant" || continue
-  eval '$build_'"$arch"_"$variant" || continue
-
   # Only the last built arch is available for upload
   last_built_variant="$variant"
 
@@ -232,6 +237,9 @@ do
   then
       begin_section "Build $variant"
       build "$variant" "$build_dir"
+      end_section "Build $variant"
+
+      begin_section "post-build $variant"
       if `cat "$build_dir/build_ok"`
       then
           case "$variant" in
@@ -239,10 +247,10 @@ do
               if [ -r "$build_dir/autobuild-package.xml" ]
               then
                   begin_section "Autobuild metadata"
-                  upload_item docs "$build_dir/autobuild-package.xml" text/xml
+                  python_cmd "$helpers/codeticket.py" addoutput "Autobuild Metadata" "$build_dir/autobuild-package.xml" --mimetype text/xml
                   if [ "$arch" != "Linux" ]
                   then
-                      record_dependencies_graph # defined in buildscripts/hg/bin/build.sh
+                      record_dependencies_graph "$build_dir/autobuild-package.xml" # defined in buildscripts/hg/bin/build.sh
                   else
                       record_event "TBD - no dependency graph for linux (probable python version dependency)"
                   fi
@@ -255,12 +263,12 @@ do
               if [ -r "$build_dir/doxygen_warnings.log" ]
               then
                   record_event "Doxygen warnings generated; see doxygen_warnings.log"
-                  upload_item log "$build_dir/doxygen_warnings.log" text/plain
+                  python_cmd "$helpers/codeticket.py" addoutput "Doxygen Log" "$build_dir/doxygen_warnings.log" --mimetype text/plain ## TBD
               fi
               if [ -d "$build_dir/doxygen/html" ]
               then
                   tar -c -f "$build_dir/viewer-doxygen.tar.bz2" --strip-components 3  "$build_dir/doxygen/html"
-                  upload_item docs "$build_dir/viewer-doxygen.tar.bz2" binary/octet-stream
+                  python_cmd "$helpers/codeticket.py" addoutput "Doxygen Tarball" "$build_dir/viewer-doxygen.tar.bz2"
               fi
               ;;
             *)
@@ -270,7 +278,8 @@ do
       else
           record_failure "Build of \"$variant\" failed."
       fi
-      end_section "Build $variant"
+      end_section "post-build $variant"
+
   else
       record_event "configure for $variant failed: build skipped"
   fi
@@ -290,7 +299,7 @@ then
     if $build_viewer_deb && [ "$last_built_variant" == "Release" ]
     then
       begin_section "Build Viewer Debian Package"
-      have_private_repo=false
+
       # mangle the changelog
       dch --force-bad-version \
           --distribution unstable \
@@ -320,11 +329,12 @@ then
       # upload debian package and create repository
       begin_section "Upload Debian Repository"
       for deb_file in `/bin/ls ../packages_public/*.deb ../*.deb 2>/dev/null`; do
-        upload_item debian $deb_file binary/octet-stream
+        deb_pkg=$(basename "$deb_file" | sed 's,_.*,,')
+        python_cmd "$helpers/codeticket.py" addoutput "Debian $deb_pkg" $deb_file
       done
       for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do
-        upload_item debian_private $deb_file binary/octet-stream
-        have_private_repo=true
+        deb_pkg=$(basename "$deb_file" | sed 's,_.*,,')
+        python_cmd "$helpers/codeticket.py" addoutput "Debian $deb_pkg" "$deb_file" --private
       done
 
       create_deb_repo
@@ -336,14 +346,6 @@ then
           mv $build_log_dir/$debian_repo_type $build_log_dir/${debian_repo_type}_pushed
         fi
       done
-
-      if [ $have_private_repo = true ]; then
-        eval "$python_command \"$redirect\" '\${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html'"\
-            >"$build_log_dir/private.html" || fatal generating redirect
-        upload_item global_redirect "$build_log_dir/private.html" text/html
-        
-      fi
-
       end_section "Upload Debian Repository"
       
     else
@@ -359,7 +361,7 @@ if $succeeded
 then
   if $build_viewer
   then
-    begin_section Upload Installer
+    begin_section "Uploads"
     # Upload installer
     package=$(installer_$arch)
     if [ x"$package" = x ] || test -d "$package"
@@ -368,9 +370,7 @@ then
       succeeded=$build_coverity
     else
       # Upload base package.
-      upload_item installer "$package" binary/octet-stream
-      upload_item quicklink "$package" binary/octet-stream
-      [ -f $build_dir/summary.json ] && upload_item installer $build_dir/summary.json text/plain
+      python_cmd "$helpers/codeticket.py" addoutput Installer --output "$package" 
 
       # Upload additional packages.
       for package_id in $additional_packages
@@ -378,8 +378,7 @@ then
         package=$(installer_$arch "$package_id")
         if [ x"$package" != x ]
         then
-          upload_item installer "$package" binary/octet-stream
-          upload_item quicklink "$package" binary/octet-stream
+          python_cmd "$helpers/codeticket.py" addoutput "Installer $package_id" "$package"
         else
           record_failure "Failed to find additional package for '$package_id'."
         fi
@@ -390,7 +389,7 @@ then
         # Upload crash reporter files
         for symbolfile in $symbolfiles
         do
-          upload_item symbolfile "$build_dir/$symbolfile" binary/octet-stream
+          python_cmd "$helpers/codeticket.py" addoutput "Symbolfile $(basename "$build_dir/$symbolfile")" "$build_dir/$symbolfile"
         done
 
         # Upload the llphysicsextensions_tpv package, if one was produced
@@ -398,7 +397,7 @@ then
         if [ -r "$build_dir/llphysicsextensions_package" ]
         then
             llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package)
-            upload_item private_artifact "$llphysicsextensions_package" binary/octet-stream
+            python_cmd "$helpers/codeticket.py" addoutput "Physics Extensions Package" "$llphysicsextensions_package" --private
         fi
         ;;
       *)
@@ -414,7 +413,7 @@ then
           done
       fi
     fi
-    end_section Upload Installer
+    end_section "Uploads"
   else
     record_event "skipping upload of installer"
   fi
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index adc134c48cc787495471cdc9ccd20688794ad784..6734f9585c81b0065d101e3deef5ebf11c32366c 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -2,16 +2,28 @@
 #
 # Compilation options shared by all Second Life components.
 
+#*****************************************************************************
+#   It's important to realize that CMake implicitly concatenates
+#   CMAKE_CXX_FLAGS with (e.g.) CMAKE_CXX_FLAGS_RELEASE for Release builds. So
+#   set switches in CMAKE_CXX_FLAGS that should affect all builds, but in
+#   CMAKE_CXX_FLAGS_RELEASE or CMAKE_CXX_FLAGS_RELWITHDEBINFO for switches
+#   that should affect only that build variant.
+#
+#   Also realize that CMAKE_CXX_FLAGS may already be partially populated on
+#   entry to this file.
+#*****************************************************************************
+
 if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
 set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
 
 include(Variables)
 
 # Portable compilation flags.
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DADDRESS_SIZE=${ADDRESS_SIZE}")
+
 set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -DLL_DEBUG=1")
 set(CMAKE_CXX_FLAGS_RELEASE
     "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG") 
-
 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO 
     "-DLL_RELEASE=1 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1")
 
@@ -55,7 +67,7 @@ if (WINDOWS)
       "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /Zo /MD /MP /Ob2 -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0"
       CACHE STRING "C++ compiler release options" FORCE)
   # zlib has assembly-language object files incompatible with SAFESEH
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE /SAFESEH:NO /NODEFAULTLIB:LIBCMT")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE /SAFESEH:NO /NODEFAULTLIB:LIBCMT /IGNORE:4099")
 
   set(CMAKE_CXX_STANDARD_LIBRARIES "")
   set(CMAKE_C_STANDARD_LIBRARIES "")
@@ -74,9 +86,14 @@ if (WINDOWS)
       /nologo
       /Oy-
       /Zc:wchar_t-
-      /arch:SSE2
+#      /arch:SSE2
       /fp:fast
       )
+
+  # Nicky: x64 implies SSE2
+  if( ADDRESS_SIZE EQUAL 32 )
+    add_definitions( /arch:SSE2 )
+  endif()
      
   # Are we using the crummy Visual Studio KDU build workaround?
   if (NOT VS_DISABLE_FATAL_WARNINGS)
@@ -133,13 +150,6 @@ if (LINUX)
   # Let's actually get a numerical version of gxx's version
   STRING(REGEX REPLACE ".* ([0-9])\\.([0-9])\\.([0-9]).*" "\\1\\2\\3" CXX_VERSION_NUMBER ${CXX_VERSION})
 
-  # Hacks to work around gcc 4.1 TC build pool machines which can't process pragma warning disables
-  # This is pure rubbish; I wish there was another way.
-  #
-  if(${CXX_VERSION_NUMBER} LESS 420)
-    set(CMAKE_CXX_FLAGS "-Wno-deprecated -Wno-uninitialized -Wno-unused-variable -Wno-unused-function ${CMAKE_CXX_FLAGS}")
-  endif (${CXX_VERSION_NUMBER} LESS 420)
-
   if(${CXX_VERSION_NUMBER} GREATER 459)
     set(CMAKE_CXX_FLAGS "-Wno-deprecated -Wno-unused-but-set-variable -Wno-unused-variable ${CMAKE_CXX_FLAGS}")
   endif (${CXX_VERSION_NUMBER} GREATER 459)
@@ -173,9 +183,9 @@ if (LINUX)
   add_definitions(-fvisibility=hidden)
   # don't catch SIGCHLD in our base application class for the viewer - some of our 3rd party libs may need their *own* SIGCHLD handler to work.  Sigh!  The viewer doesn't need to catch SIGCHLD anyway.
   add_definitions(-DLL_IGNORE_SIGCHLD)
-  if (WORD_SIZE EQUAL 32)
+  if (ADDRESS_SIZE EQUAL 32)
     add_definitions(-march=pentium4)
-  endif (WORD_SIZE EQUAL 32)
+  endif (ADDRESS_SIZE EQUAL 32)
   add_definitions(-mfpmath=sse)
   #add_definitions(-ftree-vectorize) # THIS CRASHES GCC 3.1-3.2
   if (NOT USESYSTEMLIBS)
@@ -201,8 +211,9 @@ if (DARWIN)
   # NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
   set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
-  set(ENABLE_SIGNING TRUE)
-  set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.")
+## Really?? On developer machines too?
+##set(ENABLE_SIGNING TRUE)
+##set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.")
 endif (DARWIN)
 
 
@@ -226,22 +237,17 @@ if (LINUX OR DARWIN)
   set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}")
   set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}")
 
-  if (WORD_SIZE EQUAL 32)
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
-  elseif (WORD_SIZE EQUAL 64)
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
-  endif (WORD_SIZE EQUAL 32)
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m${ADDRESS_SIZE}")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m${ADDRESS_SIZE}")
 endif (LINUX OR DARWIN)
 
 
 if (USESYSTEMLIBS)
   add_definitions(-DLL_USESYSTEMLIBS=1)
 
-  if (LINUX AND ${ARCH} STREQUAL "i686")
+  if (LINUX AND ADDRESS_SIZE EQUAL 32)
     add_definitions(-march=pentiumpro)
-  endif (LINUX AND ${ARCH} STREQUAL "i686")
+  endif (LINUX AND ADDRESS_SIZE EQUAL 32)
 
 else (USESYSTEMLIBS)
   set(${ARCH}_linux_INCLUDES
diff --git a/indra/cmake/BuildPackagesInfo.cmake b/indra/cmake/BuildPackagesInfo.cmake
index 0f574ee39a17b08da618b5ed84169ec4b5744039..133ee9797ad2c74411e8740e788e1f680db07573 100644
--- a/indra/cmake/BuildPackagesInfo.cmake
+++ b/indra/cmake/BuildPackagesInfo.cmake
@@ -2,9 +2,17 @@
 # Construct the version and copyright information based on package data.
 include(Python)
 
+# packages-formatter.py runs autobuild install --versions, which needs to know
+# the build_directory, which (on Windows) depends on AUTOBUILD_ADDRSIZE.
+# Within an autobuild build, AUTOBUILD_ADDRSIZE is already set. But when
+# building in an IDE, it probably isn't. Set it explicitly using
+# run_build_test.py.
 add_custom_command(OUTPUT packages-info.txt
   COMMENT Generating packages-info.txt for the about box
   MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/../autobuild.xml
   DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py
-  COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py > packages-info.txt
+  COMMAND ${PYTHON_EXECUTABLE}
+          ${CMAKE_SOURCE_DIR}/cmake/run_build_test.py -DAUTOBUILD_ADDRSIZE=${ADDRESS_SIZE}
+          ${PYTHON_EXECUTABLE}
+          ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > packages-info.txt
   )
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 13a31cbce7d02c488e6a782e1f6a04ce58db798d..100645611e13c215d7f1559ef3ac7b7a4b5ee285 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -30,7 +30,6 @@ set(cmake_SOURCE_FILES
     FindFMODEX.cmake
     FindGLH.cmake
     FindGoogleBreakpad.cmake
-    FindGooglePerfTools.cmake
     FindHUNSPELL.cmake
     FindJsonCpp.cmake
     FindNDOF.cmake
@@ -46,11 +45,8 @@ set(cmake_SOURCE_FILES
     GLOD.cmake
 ##  GStreamer010Plugin.cmake
     GetPrerequisites_2_8.cmake
-##  Glui.cmake
-    Glut.cmake
     GoogleBreakpad.cmake
     GoogleMock.cmake
-    GooglePerfTools.cmake
     Havok.cmake
     Hunspell.cmake
     JPEG.cmake
@@ -90,7 +86,6 @@ set(cmake_SOURCE_FILES
     Prebuilt.cmake
     PulseAudio.cmake
     Python.cmake
-    QuickTimePlugin.cmake
     TemplateCheck.cmake
     Tut.cmake
     UI.cmake
diff --git a/indra/cmake/ConfigurePkgConfig.cmake b/indra/cmake/ConfigurePkgConfig.cmake
index 82ee3e7a5b54d107e852ea17bab037c76c3d9c16..55d865392e37b294459166116c8bdf71d0fdc121 100644
--- a/indra/cmake/ConfigurePkgConfig.cmake
+++ b/indra/cmake/ConfigurePkgConfig.cmake
@@ -6,17 +6,17 @@ SET(DEBUG_PKG_CONFIG "YES")
 IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
 
   # Guess at architecture-specific system library paths.
-  if (WORD_SIZE EQUAL 32)
+  if (ADDRESS_SIZE EQUAL 32)
     SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib32 /usr/lib)
     SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib32 /usr/local/lib)
     SET(PKG_CONFIG_MULTI_GUESS /usr/lib/i386-linux-gnu)
     SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/i386-linux-gnu)
-  else (WORD_SIZE EQUAL 32)
+  else (ADDRESS_SIZE EQUAL 32)
     SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib64 /usr/lib)
     SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib64 /usr/local/lib)
     SET(PKG_CONFIG_MULTI_GUESS /usr/local/lib/x86_64-linux-gnu)
     SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/x86_64-linux-gnu)
-  endif (WORD_SIZE EQUAL 32)
+  endif (ADDRESS_SIZE EQUAL 32)
   
   # Use DPKG architecture, if available.
   IF (${DPKG_ARCH})
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index 70d85b864ca4edac22ef1be9c7347acab354a337..4630246d0663711045d338aa2f4bc9f55b26a74e 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -30,18 +30,6 @@ if(WINDOWS)
     #*******************************
     # Misc shared libs 
 
-    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
-    set(debug_files
-        openjpegd.dll
-        libapr-1.dll
-        libaprutil-1.dll
-        libapriconv-1.dll
-        ssleay32.dll
-        libeay32.dll
-        glod.dll    
-        libhunspell.dll
-        )
-
     set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
     set(release_files
         openjpeg.dll
@@ -54,14 +42,13 @@ if(WINDOWS)
         libhunspell.dll
         )
 
-    if(USE_TCMALLOC)
-      set(debug_files ${debug_files} libtcmalloc_minimal-debug.dll)
-      set(release_files ${release_files} libtcmalloc_minimal.dll)
-    endif(USE_TCMALLOC)
-
     if (FMODEX)
-      set(debug_files ${debug_files} fmodexL.dll)
-      set(release_files ${release_files} fmodex.dll)
+
+        if(ADDRESS_SIZE EQUAL 32)
+            set(release_files ${release_files} fmodex.dll)
+        else(ADDRESS_SIZE EQUAL 32)
+            set(release_files ${release_files} fmodex64.dll)
+        endif(ADDRESS_SIZE EQUAL 32)
     endif (FMODEX)
 
     #*******************************
@@ -234,10 +221,6 @@ elseif(LINUX)
         libfontconfig.so.1
        )
 
-    if (USE_TCMALLOC)
-      set(release_files ${release_files} "libtcmalloc_minimal.so")
-    endif (USE_TCMALLOC)
-
     if (FMODEX)
       set(debug_files ${debug_files} "libfmodexL.so")
       set(release_files ${release_files} "libfmodex.so")
@@ -294,13 +277,13 @@ set(third_party_targets ${third_party_targets} ${out_targets})
 
 
 
-copy_if_different(
-    ${debug_src_dir}
-    "${SHARED_LIB_STAGING_DIR_DEBUG}"
-    out_targets
-    ${debug_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
+#copy_if_different(
+#    ${debug_src_dir}
+#    "${SHARED_LIB_STAGING_DIR_DEBUG}"
+#    out_targets
+#    ${debug_files}
+#    )
+#set(third_party_targets ${third_party_targets} ${out_targets})
 
 copy_if_different(
     ${release_src_dir}
diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake
index 2a08c8fbaeb5890f50ca288d29ee6bd68852ab72..9fd3923bfd9b2448a4edd171a7cf299b43d24127 100644
--- a/indra/cmake/GLEXT.cmake
+++ b/indra/cmake/GLEXT.cmake
@@ -5,6 +5,6 @@ if (NOT USESYSTEMLIBS)
   if (WINDOWS OR LINUX)
     use_prebuilt_binary(glext)
   endif (WINDOWS OR LINUX)
-  use_prebuilt_binary(glh-linear)
+  use_prebuilt_binary(glh_linear)
   set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
 endif (NOT USESYSTEMLIBS)
diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake
index d0992f57b8217ef3eb12a8908705eb7995a5e768..d5262f2efa79acafca6fa6661a2bd81d6dcbbdd1 100644
--- a/indra/cmake/GLH.cmake
+++ b/indra/cmake/GLH.cmake
@@ -7,5 +7,5 @@ set(GLH_FIND_QUIETLY TRUE)
 if (USESYSTEMLIBS)
   include(FindGLH)
 else (USESYSTEMLIBS)
-  use_prebuilt_binary(glh-linear)
+  use_prebuilt_binary(glh_linear)
 endif (USESYSTEMLIBS)
diff --git a/indra/cmake/Glui.cmake b/indra/cmake/Glui.cmake
deleted file mode 100644
index db353a91ecaa9d85d1c3c0a1920980c26c16d756..0000000000000000000000000000000000000000
--- a/indra/cmake/Glui.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- cmake -*-
-include(Linking)
-include(Prebuilt)
-
-if (USESYSTEMLIBS)
-    set(GLUI OFF CACHE BOOL
-        "GLUI support for the llplugin/llmedia test apps.")
-else (USESYSTEMLIBS)
-    use_prebuilt_binary(glui)
-    set(GLUI ON CACHE BOOL
-        "GLUI support for the llplugin/llmedia test apps.")
-endif (USESYSTEMLIBS)
-
-if (LINUX)
-    set(GLUI ON CACHE BOOL
-        "llplugin media apps HACK for Linux.")
-endif (LINUX)
-
-if (DARWIN OR LINUX)
-    set(GLUI_LIBRARY
-        glui)
-endif (DARWIN OR LINUX)
-
-if (WINDOWS)
-    set(GLUI_LIBRARY
-        debug glui32.lib
-        optimized glui32.lib)
-endif (WINDOWS)
diff --git a/indra/cmake/Glut.cmake b/indra/cmake/Glut.cmake
deleted file mode 100644
index 314da30652d2da78807112d6b48050b5792f37bd..0000000000000000000000000000000000000000
--- a/indra/cmake/Glut.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- cmake -*-
-include(Linking)
-include(Prebuilt)
-
-if (WINDOWS)
-    use_prebuilt_binary(freeglut)
-    set(GLUT_LIBRARY
-        debug freeglut_static.lib
-        optimized freeglut_static.lib)
-endif (WINDOWS)
-
-if (LINUX)
-  FIND_LIBRARY(GLUT_LIBRARY glut)
-endif (LINUX)
-
-if (DARWIN)
-  include(CMakeFindFrameworks)
-  find_library(GLUT_LIBRARY GLUT)
-endif (DARWIN)
diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake
deleted file mode 100644
index c1faeb9325241f4f54298fb6b97d9ddc3cd68b97..0000000000000000000000000000000000000000
--- a/indra/cmake/GooglePerfTools.cmake
+++ /dev/null
@@ -1,61 +0,0 @@
-# -*- cmake -*-
-include(Prebuilt)
-
-# If you want to enable or disable TCMALLOC in viewer builds, this is the place.
-# set ON or OFF as desired.
-set (USE_TCMALLOC OFF)
-
-if (USESYSTEMLIBS)
-  include(FindGooglePerfTools)
-else (USESYSTEMLIBS)
-  if (WINDOWS)
-    if (USE_TCMALLOC)
-       use_prebuilt_binary(gperftools)
-       set(TCMALLOC_LIBRARIES 
-         debug libtcmalloc_minimal-debug
-         optimized libtcmalloc_minimal)
-       set(TCMALLOC_LINK_FLAGS  "/INCLUDE:__tcmalloc")
-    else (USE_TCMALLOC)
-      set(TCMALLOC_LIBRARIES)
-      set(TCMALLOC_LINK_FLAGS)
-    endif (USE_TCMALLOC)
-    set(GOOGLE_PERFTOOLS_FOUND "YES")
-  endif (WINDOWS)
-  if (LINUX)
-    if (USE_TCMALLOC)
-      use_prebuilt_binary(gperftools)
-      set(TCMALLOC_LIBRARIES 
-        tcmalloc)
-    else (USE_TCMALLOC)
-      set(TCMALLOC_LIBRARIES)
-    endif (USE_TCMALLOC)
-    set(PROFILER_LIBRARIES profiler)
-    set(GOOGLE_PERFTOOLS_INCLUDE_DIR
-        ${LIBS_PREBUILT_DIR}/include)
-    set(GOOGLE_PERFTOOLS_FOUND "YES")
-  endif (LINUX)
-endif (USESYSTEMLIBS)
-
-if (GOOGLE_PERFTOOLS_FOUND)
-  # XXX Disable temporarily, until we have compilation issues on 64-bit
-  # Etch sorted.
-  set(USE_GOOGLE_PERFTOOLS OFF CACHE BOOL "Build with Google PerfTools support.")
-endif (GOOGLE_PERFTOOLS_FOUND)
-
-if (WINDOWS)
-   set(USE_GOOGLE_PERFTOOLS ON)
-endif (WINDOWS)
-
-if (USE_GOOGLE_PERFTOOLS)
-  if (USE_TCMALLOC)
-    set(TCMALLOC_FLAG -DLL_USE_TCMALLOC=1)
-  else (USE_TCMALLOC)
-    set(TCMALLOC_FLAG -ULL_USE_TCMALLOC)
-  endif (USE_TCMALLOC)
-endif (USE_GOOGLE_PERFTOOLS)
-
-if (USE_GOOGLE_PERFTOOLS)
-  include_directories(${GOOGLE_PERFTOOLS_INCLUDE_DIR})
-  set(GOOGLE_PERFTOOLS_LIBRARIES ${TCMALLOC_LIBRARIES} ${STACKTRACE_LIBRARIES} ${PROFILER_LIBRARIES})
-else (USE_GOOGLE_PERFTOOLS)
-endif (USE_GOOGLE_PERFTOOLS)
diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake
index b50b4bcdb223cac4201492764c01a52b4af5f808..3e29297c580435e215ea5bc8ee4bcb634fd6bde9 100644
--- a/indra/cmake/LLCommon.cmake
+++ b/indra/cmake/LLCommon.cmake
@@ -4,7 +4,6 @@ include(APR)
 include(Boost)
 include(EXPAT)
 include(ZLIB)
-include(GooglePerfTools)
 
 set(LLCOMMON_INCLUDE_DIRS
     ${LIBS_OPEN_DIR}/llcommon
@@ -34,8 +33,6 @@ else (LINUX)
         ${BOOST_SYSTEM_LIBRARY} )
 endif (LINUX)
 
-# add_definitions(${TCMALLOC_FLAG})
-
 set(LLCOMMON_LINK_SHARED OFF CACHE BOOL "Build the llcommon target as a static library.")
 if(LLCOMMON_LINK_SHARED)
   add_definitions(-DLL_COMMON_LINK_SHARED=1)
diff --git a/indra/cmake/QuickTimePlugin.cmake b/indra/cmake/QuickTimePlugin.cmake
deleted file mode 100644
index c08e153ee3900f9313c1c8c46cf3aac06568e2c6..0000000000000000000000000000000000000000
--- a/indra/cmake/QuickTimePlugin.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- cmake -*-
-
-if(INSTALL_PROPRIETARY)
-  include(Prebuilt)
-  if (WINDOWS)
-    use_prebuilt_binary(quicktime)
-  endif (WINDOWS)
-endif(INSTALL_PROPRIETARY)
-
-if (DARWIN)
-  include(CMakeFindFrameworks)
-  find_library(QUICKTIME_LIBRARY QuickTime)
-elseif (WINDOWS)
-  set(QUICKTIME_SDK_DIR "$ENV{PROGRAMFILES}/QuickTime SDK"
-      CACHE PATH "Location of the QuickTime SDK.")
-
-  find_library(DEBUG_QUICKTIME_LIBRARY qtmlclient.lib
-               PATHS
-               ${ARCH_PREBUILT_DIRS_DEBUG}
-               "${QUICKTIME_SDK_DIR}\\libraries"
-               )
-
-  find_library(RELEASE_QUICKTIME_LIBRARY qtmlclient.lib
-               PATHS
-               ${ARCH_PREBUILT_DIRS_RELEASE}
-               "${QUICKTIME_SDK_DIR}\\libraries"
-               )
-
-  if (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY)
-    set(QUICKTIME_LIBRARY 
-        optimized ${RELEASE_QUICKTIME_LIBRARY}
-        debug ${DEBUG_QUICKTIME_LIBRARY}
-        )
-        
-  endif (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY)
-  
-  include_directories(
-    ${LIBS_PREBUILT_DIR}/include/quicktime
-    "${QUICKTIME_SDK_DIR}\\CIncludes"
-    )
-endif (DARWIN)
-
-mark_as_advanced(QUICKTIME_LIBRARY)
-
-if (QUICKTIME_LIBRARY)
-  set(QUICKTIME ON CACHE BOOL "Build with QuickTime streaming media support.")
-endif (QUICKTIME_LIBRARY)
-
diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake
index 31174209a313aae3e3dadeea75d9d7aacf9fb891..77fd505df361c70c3e47c9d880cafb44a268828c 100644
--- a/indra/cmake/UI.cmake
+++ b/indra/cmake/UI.cmake
@@ -32,9 +32,9 @@ if (USESYSTEMLIBS)
     add_definitions(${${pkg}_CFLAGS_OTHERS})
   endforeach(pkg)
 else (USESYSTEMLIBS)
-  if (LINUX OR WINDOWS)
+  if (LINUX)
     use_prebuilt_binary(gtk-atk-pango-glib)
-  endif (LINUX OR WINDOWS)
+  endif (LINUX)
 
   if (LINUX)
     set(UI_LIBRARIES
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 63e296b556d243085c40d2c4ceb59522a60b1d4b..3d0cb0a3c92f1cbbca88e5e833b9b7bd21fccf99 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -60,46 +60,55 @@ if (NOT CMAKE_BUILD_TYPE)
       "Build type.  One of: Debug Release RelWithDebInfo" FORCE)
 endif (NOT CMAKE_BUILD_TYPE)
 
+# If someone has specified an address size, use that to determine the
+# architecture.  Otherwise, let the architecture specify the address size.
+if (ADDRESS_SIZE EQUAL 32)
+  #message(STATUS "ADDRESS_SIZE is 32")
+  set(ARCH i686)
+elseif (ADDRESS_SIZE EQUAL 64)
+  #message(STATUS "ADDRESS_SIZE is 64")
+  set(ARCH x86_64)
+else (ADDRESS_SIZE EQUAL 32)
+  #message(STATUS "ADDRESS_SIZE is UNRECOGNIZED: '${ADDRESS_SIZE}'")
+  # Use Python's platform.machine() since uname -m isn't available everywhere.
+  # Even if you can assume cygwin uname -m, the answer depends on whether
+  # you're running 32-bit cygwin or 64-bit cygwin! But even 32-bit Python will
+  # report a 64-bit processor.
+  execute_process(COMMAND
+                  "${PYTHON_EXECUTABLE}" "-c"
+                  "import platform; print platform.machine()"
+                  OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
+  # We expect values of the form i386, i686, x86_64, AMD64.
+  # In CMake, expressing ARCH.endswith('64') is awkward:
+  string(LENGTH "${ARCH}" ARCH_LENGTH)
+  math(EXPR ARCH_LEN_2 "${ARCH_LENGTH} - 2")
+  string(SUBSTRING "${ARCH}" ${ARCH_LEN_2} 2 ARCH_LAST_2)
+  if (ARCH_LAST_2 STREQUAL 64)
+    #message(STATUS "ARCH is detected as 64; ARCH is ${ARCH}")
+    set(ADDRESS_SIZE 64)
+  else ()
+    #message(STATUS "ARCH is detected as 32; ARCH is ${ARCH}")
+    set(ADDRESS_SIZE 32)
+  endif ()
+endif (ADDRESS_SIZE EQUAL 32)
+
 if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
   set(WINDOWS ON BOOL FORCE)
-  set(ARCH i686)
   set(LL_ARCH ${ARCH}_win32)
   set(LL_ARCH_DIR ${ARCH}-win32)
-  set(WORD_SIZE 32)
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
 
 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   set(LINUX ON BOOl FORCE)
 
-  # If someone has specified a word size, use that to determine the
-  # architecture.  Otherwise, let the architecture specify the word size.
-  if (WORD_SIZE EQUAL 32)
-    #message(STATUS "WORD_SIZE is 32")
-    set(ARCH i686)
-  elseif (WORD_SIZE EQUAL 64)
-    #message(STATUS "WORD_SIZE is 64")
-    set(ARCH x86_64)
-  else (WORD_SIZE EQUAL 32)
-    #message(STATUS "WORD_SIZE is UNDEFINED")
-    execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/
-                    OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if (ARCH STREQUAL x86_64)
-      #message(STATUS "ARCH is detected as 64; ARCH is ${ARCH}")
-      set(WORD_SIZE 64)
-    else (ARCH STREQUAL x86_64)
-      #message(STATUS "ARCH is detected as 32; ARCH is ${ARCH}")
-      set(WORD_SIZE 32)
-    endif (ARCH STREQUAL x86_64)
-  endif (WORD_SIZE EQUAL 32)
-
-  if (WORD_SIZE EQUAL 32)
+  if (ADDRESS_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE i386)
     set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
     set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib32 ${CMAKE_SYSTEM_LIBRARY_PATH})
-  else (WORD_SIZE EQUAL 32)
+  else (ADDRESS_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE amd64)
     set(FIND_LIBRARY_USE_LIB64_PATHS ON)
-  endif (WORD_SIZE EQUAL 32)
+  endif (ADDRESS_SIZE EQUAL 32)
 
   execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH 
       RESULT_VARIABLE DPKG_RESULT
@@ -140,18 +149,15 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
   set(CMAKE_XCODE_ATTRIBUTE_GCC_STRICT_ALIASING NO)
   set(CMAKE_XCODE_ATTRIBUTE_GCC_FAST_MATH NO)
   set(CMAKE_XCODE_ATTRIBUTE_CLANG_X86_VECTOR_INSTRUCTIONS ssse3)
-  set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++")
+  set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
   set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym)
 
-  # Build only for i386 by default, system default on MacOSX 10.6+ is x86_64
-  if (NOT CMAKE_OSX_ARCHITECTURES)
-    set(CMAKE_OSX_ARCHITECTURES "i386")
-  endif (NOT CMAKE_OSX_ARCHITECTURES)
+  set(CMAKE_OSX_ARCHITECTURES "${ARCH}")
+  string(REPLACE "i686"  "i386"   CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
+  string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
 
-  set(ARCH ${CMAKE_OSX_ARCHITECTURES})
   set(LL_ARCH ${ARCH}_darwin)
   set(LL_ARCH_DIR universal-darwin)
-  set(WORD_SIZE 32)
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
 # Default deploy grid
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 5bce2b88099fa1242c08776733f2c88d84c76ff7..622ff6f1a43b0d511cb0268c4b89e11f460b87da 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -10,7 +10,6 @@ include(Boost)
 include(LLSharedLibs)
 include(JsonCpp)
 include(GoogleBreakpad)
-include(GooglePerfTools)
 include(Copy3rdPartyLibs)
 include(ZLIB)
 include(URIPARSER)
@@ -250,13 +249,13 @@ list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})
 
 if(LLCOMMON_LINK_SHARED)
   add_library (llcommon SHARED ${llcommon_SOURCE_FILES})
-  if(NOT WORD_SIZE EQUAL 32)
+  if(NOT ADDRESS_SIZE EQUAL 32)
     if(WINDOWS)
-      add_definitions(/FIXED:NO)
+      ##add_definitions(/FIXED:NO)
     else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
       add_definitions(-fPIC)
     endif(WINDOWS)
-  endif(NOT WORD_SIZE EQUAL 32)
+  endif(NOT ADDRESS_SIZE EQUAL 32)
   if(WINDOWS)
     # always generate llcommon.pdb, even for "Release" builds
     set_target_properties(llcommon PROPERTIES LINK_FLAGS "/DEBUG")
@@ -339,8 +338,4 @@ if (LL_TESTS)
 ## throwing and catching exceptions.
 ##LL_ADD_INTEGRATION_TEST(llexception "" "${test_libs}")
 
-  # *TODO - reenable these once tcmalloc libs no longer break the build.
-  #ADD_BUILD_TEST(llallocator llcommon)
-  #ADD_BUILD_TEST(llallocator_heap_profile llcommon)
-  #ADD_BUILD_TEST(llmemtype llcommon)
 endif (LL_TESTS)
diff --git a/indra/llcommon/llallocator.cpp b/indra/llcommon/llallocator.cpp
index 34fc28d8cc4699349cefd235b31c44706c322cc1..ac97fb71dd11c5f8018056a5efa9f852a8add9d0 100644
--- a/indra/llcommon/llallocator.cpp
+++ b/indra/llcommon/llallocator.cpp
@@ -27,47 +27,6 @@
 #include "linden_common.h"
 #include "llallocator.h"
 
-#if (LL_USE_TCMALLOC && LL_USE_HEAP_PROFILER)
-
-#include "google/heap-profiler.h"
-#include "google/commandlineflags_public.h"
-
-DECLARE_bool(heap_profile_use_stack_trace);
-//DECLARE_double(tcmalloc_release_rate);
-
-void LLAllocator::setProfilingEnabled(bool should_enable)
-{
-    // NULL disables dumping to disk
-    static char const * const PREFIX = NULL;
-    if(should_enable)
-    {
-		HeapProfilerSetUseStackTrace(false);
-        HeapProfilerStart(PREFIX);
-    }
-    else
-    {
-        HeapProfilerStop();
-    }
-}
-
-// static
-bool LLAllocator::isProfiling()
-{
-    return IsHeapProfilerRunning();
-}
-
-std::string LLAllocator::getRawProfile()
-{
-    // *TODO - fix google-perftools to accept an buffer to avoid this
-    // malloc-copy-free cycle.
-    char * buffer = GetHeapProfile();
-    std::string ret = buffer;
-    free(buffer);
-    return ret;
-}
-
-#else // LL_USE_TCMALLOC
-
 //
 // stub implementations for when tcmalloc is disabled
 //
@@ -87,8 +46,6 @@ std::string LLAllocator::getRawProfile()
     return std::string();
 }
 
-#endif // LL_USE_TCMALLOC
-
 LLAllocatorHeapProfile const & LLAllocator::getProfile()
 {
     mProf.mLines.clear();
diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp
index 8e516d8beb9395429bafb58d6eeb27c7c2a82fa0..bc72faca5dc2c29db354fdb91c49f5f4588db12c 100644
--- a/indra/llcommon/llcoros.cpp
+++ b/indra/llcommon/llcoros.cpp
@@ -101,7 +101,11 @@ LLCoros::LLCoros():
     // Previously we used
     // boost::context::guarded_stack_allocator::default_stacksize();
     // empirically this is 64KB on Windows and Linux. Try quadrupling.
+#if ADDRESS_SIZE == 64
+    mStackSize(512*1024)
+#else
     mStackSize(256*1024)
+#endif
 {
     // Register our cleanup() method for "mainloop" ticks
     LLEventPumps::instance().obtain("mainloop").listen(
diff --git a/indra/llcommon/lldependencies.h b/indra/llcommon/lldependencies.h
index 125bd6a835ce501ef35d5ffe3c3e420dcdc2633b..db2bbab8b040269e04bec4638b70bea4dd6fa4e4 100644
--- a/indra/llcommon/lldependencies.h
+++ b/indra/llcommon/lldependencies.h
@@ -124,8 +124,8 @@ class LL_COMMON_API LLDependenciesBase
     virtual std::string describe(bool full=true) const;
 
 protected:
-    typedef std::vector< std::pair<int, int> > EdgeList;
-    typedef std::vector<int> VertexList;
+    typedef std::vector< std::pair<std::size_t, std::size_t> > EdgeList;
+    typedef std::vector<std::size_t> VertexList;
     VertexList topo_sort(int vertices, const EdgeList& edges) const;
 
     /**
@@ -508,7 +508,7 @@ class LLDependencies: public LLDependenciesBase
             // been explicitly added. Rely on std::map rejecting a second attempt
             // to insert the same key. Use the map's size() as the vertex number
             // to get a distinct value for each successful insertion.
-            typedef std::map<KEY, int> VertexMap;
+            typedef std::map<KEY, std::size_t> VertexMap;
             VertexMap vmap;
             // Nest each of these loops because !@#$%? MSVC warns us that its
             // former broken behavior has finally been fixed -- and our builds
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index f56e5596f5496fd862ff3b39bf9ad21123ca5494..2024d707da5d3a0bbfe1e2a89a6dffe5b69cafdc 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -90,33 +90,15 @@ class BlockTimer
 #if LL_FASTTIMER_USE_RDTSC
 	static U32 getCPUClockCount32()
 	{
-		U32 ret_val;
-		__asm
-		{
-			_emit   0x0f
-				_emit   0x31
-				shr eax,8
-				shl edx,24
-				or eax, edx
-				mov dword ptr [ret_val], eax
-		}
-		return ret_val;
+		unsigned __int64 val = __rdtsc();
+		val = val >> 8;
+		return static_cast<U32>(val);
 	}
 
 	// return full timer value, *not* shifted by 8 bits
 	static U64 getCPUClockCount64()
 	{
-		U64 ret_val;
-		__asm
-		{
-			_emit   0x0f
-				_emit   0x31
-				mov eax,eax
-				mov edx,edx
-				mov dword ptr [ret_val+4], edx
-				mov dword ptr [ret_val], eax
-		}
-		return ret_val;
+		return static_cast<U64>( __rdtsc() );
 	}
 
 #else
@@ -173,16 +155,16 @@ class BlockTimer
 	// Mac+Linux+Solaris FAST x86 implementation of CPU clock
 	static U32 getCPUClockCount32()
 	{
-		U64 x;
-		__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
-		return (U32)(x >> 8);
+		U32 low(0),high(0);
+		__asm__ volatile (".byte 0x0f, 0x31": "=a"(low), "=d"(high) );
+		return (low>>8) | (high<<24);
 	}
 
 	static U64 getCPUClockCount64()
 	{
-		U64 x;
-		__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
-		return x;
+		U32 low(0),high(0);
+		__asm__ volatile (".byte 0x0f, 0x31": "=a"(low), "=d"(high) );
+		return (U64)low | ( ((U64)high) << 32);
 	}
 
 #endif
diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h
index 3e25228aeb31bb47e1220503c13ba2954b920b30..315e18e4f2495d21ed90f90868caec5d16440011 100644
--- a/indra/llcommon/llfile.h
+++ b/indra/llcommon/llfile.h
@@ -45,7 +45,7 @@ typedef FILE	LLFILE;
 typedef struct _stat	llstat;
 #else
 typedef struct stat		llstat;
-#include <bits/postypes.h>
+#include <sys/types.h>
 #endif
 
 #ifndef S_ISREG
diff --git a/indra/llcommon/llmake.h b/indra/llcommon/llmake.h
index 9a662a06408a3af5a9805bb409c8ac6b3f593e78..08744f90fb532f7ec0c3d314adf8fe7066778458 100644
--- a/indra/llcommon/llmake.h
+++ b/indra/llcommon/llmake.h
@@ -12,12 +12,10 @@
  * 
  *         also relevant:
  *
- *         Template parameter deduction for constructors
- *         http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0091r0.html
- *
- *         https://github.com/viboes/std-make
- *
- *         but obviously we're not there yet.
+ *         Template argument deduction for class templates
+ *         http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0091r3.html
+ *         was apparently adopted in June 2016? Unclear when compilers will
+ *         portably support this, but there is hope.
  *
  * $LicenseInfo:firstyear=2015&license=viewerlgpl$
  * Copyright (c) 2015, Linden Research, Inc.
diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp
index 3a8eabac09af4d6d1ce6485a19159b6a03d35fc5..1e04044269ff6cc6a1bc41935261b6dc1a60ef19 100644
--- a/indra/llcommon/llmemory.cpp
+++ b/indra/llcommon/llmemory.cpp
@@ -591,7 +591,7 @@ char* LLPrivateMemoryPool::LLMemoryBlock::allocate()
 void  LLPrivateMemoryPool::LLMemoryBlock::freeMem(void* addr) 
 {
 	//bit index
-	U32 idx = ((U32)addr - (U32)mBuffer - mDummySize) / mSlotSize ;
+	uintptr_t idx = ((uintptr_t)addr - (uintptr_t)mBuffer - mDummySize) / mSlotSize ;
 
 	U32* bits = &mUsageBits ;
 	if(idx >= 32)
@@ -773,7 +773,7 @@ char* LLPrivateMemoryPool::LLMemoryChunk::allocate(U32 size)
 
 void LLPrivateMemoryPool::LLMemoryChunk::freeMem(void* addr)
 {	
-	U32 blk_idx = getPageIndex((U32)addr) ;
+	U32 blk_idx = getPageIndex((uintptr_t)addr) ;
 	LLMemoryBlock* blk = (LLMemoryBlock*)(mMetaBuffer + blk_idx * sizeof(LLMemoryBlock)) ;
 	blk = blk->mSelf ;
 
@@ -798,7 +798,7 @@ bool LLPrivateMemoryPool::LLMemoryChunk::empty()
 
 bool LLPrivateMemoryPool::LLMemoryChunk::containsAddress(const char* addr) const
 {
-	return (U32)mBuffer <= (U32)addr && (U32)mBuffer + mBufferSize > (U32)addr ;
+	return (uintptr_t)mBuffer <= (uintptr_t)addr && (uintptr_t)mBuffer + mBufferSize > (uintptr_t)addr ;
 }
 
 //debug use
@@ -831,13 +831,13 @@ void LLPrivateMemoryPool::LLMemoryChunk::dump()
 	for(U32 i = 1 ; i < blk_list.size(); i++)
 	{
 		total_size += blk_list[i]->getBufferSize() ;
-		if((U32)blk_list[i]->getBuffer() < (U32)blk_list[i-1]->getBuffer() + blk_list[i-1]->getBufferSize())
+		if((uintptr_t)blk_list[i]->getBuffer() < (uintptr_t)blk_list[i-1]->getBuffer() + blk_list[i-1]->getBufferSize())
 		{
 			LL_ERRS() << "buffer corrupted." << LL_ENDL ;
 		}
 	}
 
-	llassert_always(total_size + mMinBlockSize >= mBufferSize - ((U32)mDataBuffer - (U32)mBuffer)) ;
+	llassert_always(total_size + mMinBlockSize >= mBufferSize - ((uintptr_t)mDataBuffer - (uintptr_t)mBuffer)) ;
 
 	U32 blk_num = (mBufferSize - (mDataBuffer - mBuffer)) / mMinBlockSize ;
 	for(U32 i = 0 ; i < blk_num ; )
@@ -860,7 +860,7 @@ void LLPrivateMemoryPool::LLMemoryChunk::dump()
 #endif
 #if 0
 	LL_INFOS() << "---------------------------" << LL_ENDL ;
-	LL_INFOS() << "Chunk buffer: " << (U32)getBuffer() << " size: " << getBufferSize() << LL_ENDL ;
+	LL_INFOS() << "Chunk buffer: " << (uintptr_t)getBuffer() << " size: " << getBufferSize() << LL_ENDL ;
 
 	LL_INFOS() << "available blocks ... " << LL_ENDL ;
 	for(S32 i = 0 ; i < mBlockLevels ; i++)
@@ -868,7 +868,7 @@ void LLPrivateMemoryPool::LLMemoryChunk::dump()
 		LLMemoryBlock* blk = mAvailBlockList[i] ;
 		while(blk)
 		{
-			LL_INFOS() << "blk buffer " << (U32)blk->getBuffer() << " size: " << blk->getBufferSize() << LL_ENDL ;
+			LL_INFOS() << "blk buffer " << (uintptr_t)blk->getBuffer() << " size: " << blk->getBufferSize() << LL_ENDL ;
 			blk = blk->mNext ;
 		}
 	}
@@ -879,7 +879,7 @@ void LLPrivateMemoryPool::LLMemoryChunk::dump()
 		LLMemoryBlock* blk = mFreeSpaceList[i] ;
 		while(blk)
 		{
-			LL_INFOS() << "blk buffer " << (U32)blk->getBuffer() << " size: " << blk->getBufferSize() << LL_ENDL ;
+			LL_INFOS() << "blk buffer " << (uintptr_t)blk->getBuffer() << " size: " << blk->getBufferSize() << LL_ENDL ;
 			blk = blk->mNext ;
 		}
 	}
@@ -1155,9 +1155,9 @@ void LLPrivateMemoryPool::LLMemoryChunk::addToAvailBlockList(LLMemoryBlock* blk)
 	return ;
 }
 
-U32 LLPrivateMemoryPool::LLMemoryChunk::getPageIndex(U32 addr)
+U32 LLPrivateMemoryPool::LLMemoryChunk::getPageIndex(uintptr_t addr)
 {
-	return (addr - (U32)mDataBuffer) / mMinBlockSize ;
+	return (addr - (uintptr_t)mDataBuffer) / mMinBlockSize ;
 }
 
 //for mAvailBlockList
@@ -1495,7 +1495,7 @@ void LLPrivateMemoryPool::removeChunk(LLMemoryChunk* chunk)
 
 U16 LLPrivateMemoryPool::findHashKey(const char* addr)
 {
-	return (((U32)addr) / CHUNK_SIZE) % mHashFactor ;
+	return (((uintptr_t)addr) / CHUNK_SIZE) % mHashFactor ;
 }
 
 LLPrivateMemoryPool::LLMemoryChunk* LLPrivateMemoryPool::findChunk(const char* addr)
@@ -1720,7 +1720,7 @@ LLPrivateMemoryPoolManager::~LLPrivateMemoryPoolManager()
 		S32 k = 0 ;
 		for(mem_allocation_info_t::iterator iter = sMemAllocationTracker.begin() ; iter != sMemAllocationTracker.end() ; ++iter)
 		{
-			LL_INFOS() << k++ << ", " << (U32)iter->first << " : " << iter->second << LL_ENDL ;
+			LL_INFOS() << k++ << ", " << (uintptr_t)iter->first << " : " << iter->second << LL_ENDL ;
 		}
 		sMemAllocationTracker.clear() ;
 	}
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
index 575edddc43c9500bd4142458d8faea6ad38b01ac..5a3c9bd762f45d8521044b3da09b5a9edf0aed87 100644
--- a/indra/llcommon/llmemory.h
+++ b/indra/llcommon/llmemory.h
@@ -138,7 +138,6 @@ template <typename T> T* LL_NEXT_ALIGNED_ADDRESS_64(T* address)
 //------------------------------------------------------------------------------------------------
 //------------------------------------------------------------------------------------------------
 
-#if !LL_USE_TCMALLOC
 inline void* ll_aligned_malloc_16(size_t size) // returned hunk MUST be freed with ll_aligned_free_16().
 {
 #if defined(LL_WINDOWS)
@@ -187,13 +186,6 @@ inline void* ll_aligned_realloc_16(void* ptr, size_t size, size_t old_size) // r
 #endif
 }
 
-#else // USE_TCMALLOC
-// ll_aligned_foo_16 are not needed with tcmalloc
-#define ll_aligned_malloc_16 malloc
-#define ll_aligned_realloc_16(a,b,c) realloc(a,b)
-#define ll_aligned_free_16 free
-#endif // USE_TCMALLOC
-
 inline void* ll_aligned_malloc_32(size_t size) // returned hunk MUST be freed with ll_aligned_free_32().
 {
 #if defined(LL_WINDOWS)
@@ -423,7 +415,7 @@ class LL_COMMON_API LLPrivateMemoryPool
 		{
 			bool operator()(const LLMemoryBlock* const& lhs, const LLMemoryBlock* const& rhs)
 			{
-				return (U32)lhs->getBuffer() < (U32)rhs->getBuffer();
+				return (uintptr_t)lhs->getBuffer() < (uintptr_t)rhs->getBuffer();
 			}
 		};
 	};
@@ -454,7 +446,7 @@ class LL_COMMON_API LLPrivateMemoryPool
 		void dump() ;
 
 	private:
-		U32 getPageIndex(U32 addr) ;
+		U32 getPageIndex(uintptr_t addr) ;
 		U32 getBlockLevel(U32 size) ;
 		U16 getPageLevel(U32 size) ;
 		LLMemoryBlock* addBlock(U32 blk_idx) ;
diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
index 2c4bcc91f6e96ec41c8e6b588de038025a3fc807..3698d9db4420b5c5b0e0ac64e3b551c91e024935 100644
--- a/indra/llcommon/llpreprocessor.h
+++ b/indra/llcommon/llpreprocessor.h
@@ -138,6 +138,12 @@
 #pragma warning( 3      :  4266 )	// 'function' : no override available for virtual member function from base 'type'; function is hidden
 #pragma warning (disable : 4180)	// qualifier applied to function type has no meaning; ignored
 //#pragma warning( disable : 4284 )	// silly MS warning deep inside their <map> include file
+
+#if ADDRESS_SIZE == 64
+// That one is all over the place for x64 builds.
+#pragma warning( disable : 4267 )   // 'var' : conversion from 'size_t' to 'type', possible loss of data)
+#endif
+
 #pragma warning( disable : 4503 )	// 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation.
 #pragma warning( disable : 4800 )	// 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
 #pragma warning( disable : 4996 )	// warning: deprecated
diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
index e3e1d0c3918c8cdf1c61d2b98305c46d105a2dc8..65b4507e2d7cb4d8b1683db9e92e2f647f67b830 100644
--- a/indra/llcommon/llprocessor.cpp
+++ b/indra/llcommon/llprocessor.cpp
@@ -398,7 +398,7 @@ static F64 calculate_cpu_frequency(U32 measure_msecs)
 	HANDLE hThread = GetCurrentThread();
 	unsigned long dwCurPriorityClass = GetPriorityClass(hProcess);
 	int iCurThreadPriority = GetThreadPriority(hThread);
-	unsigned long dwProcessMask, dwSystemMask, dwNewMask = 1;
+	DWORD_PTR dwProcessMask, dwSystemMask, dwNewMask = 1;
 	GetProcessAffinityMask(hProcess, &dwProcessMask, &dwSystemMask);
 
 	SetPriorityClass(hProcess, REALTIME_PRIORITY_CLASS);
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index c3f235c6ee3c78d80e19a38f1093653dcee40721..52255bfaeb58b8eb401193543ba28ecc354a37a8 100644
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -63,7 +63,7 @@ void set_thread_name( DWORD dwThreadID, const char* threadName)
 
 	__try
 	{
-		::RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info );
+		::RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(DWORD), (ULONG_PTR*)&info );
 	}
 	__except(EXCEPTION_CONTINUE_EXECUTION)
 	{
diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt
index 0bb0348d26b9f9a8112e104ba91fde2f1ea89fad..6f362df921120d22055e11058ec06c3afd490f97 100644
--- a/indra/llcorehttp/CMakeLists.txt
+++ b/indra/llcorehttp/CMakeLists.txt
@@ -213,7 +213,7 @@ endif (DARWIN)
     # The following come from LLAddBuildTest.cmake's INTEGRATION_TEST_xxxx target.
     set_target_properties(http_texture_load
                           PROPERTIES
-                          LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:CONSOLE ${TCMALLOC_LINK_FLAGS}"
+                          LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:CONSOLE"
                           LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
                           LINK_FLAGS_RELEASE ""
                           )
diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py
index 493143641b04cdbb979c7dd932e4144c4010e50c..b2af8a6c9c330267f15f4065727dd0e8eb773d74 100755
--- a/indra/llcorehttp/tests/test_llcorehttp_peer.py
+++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py
@@ -283,10 +283,16 @@ class Server(HTTPServer):
     # default behavior which *shouldn't* cause the program to return
     # a failure status.
     def handle_error(self, request, client_address):
-        print '-'*40
-        print 'Ignoring exception during processing of request from',
-        print client_address
-        print '-'*40
+        print >>sys.stderr, '-'*40
+        print >>sys.stderr, 'Ignoring exception during processing of request from', client_address
+        print >>sys.stderr, '-'*40
+
+    def shutdown_request(self, *args, **kwds):
+        try:
+            # just forward to base-class method, but wrap in try/except
+            HTTPServer.shutdown_request(self, *args, **kwds)
+        except Exception as err:
+            print >>sys.stderr, "Once more ignoring: %s" % err
 
 if __name__ == "__main__":
     do_valgrind = False
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index f71607096c8e7c51d6f6a6622c8b72c42644edec..a6cbcc131ec657d586e52c02dd584f64c0441eb3 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -1218,9 +1218,10 @@ void LLImageRaw::fill( const LLColor4U& color )
 	if( 4 == getComponents() )
 	{
 		U32* data = (U32*) getData();
+		U32 rgbaColor = color.asRGBA();
 		for( S32 i = 0; i < pixels; i++ )
 		{
-			data[i] = color.mAll;
+			data[ i ] = rgbaColor;
 		}
 	}
 	else
diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
index 3bb1778d9d13e5912ceff5db5f0ba024a205e304..925da5674bfc5591faa941221c035a4aea8da1da 100644
--- a/indra/llimagej2coj/llimagej2coj.cpp
+++ b/indra/llimagej2coj/llimagej2coj.cpp
@@ -41,8 +41,12 @@ LLImageJ2CImpl* fallbackCreateLLImageJ2CImpl()
 
 std::string LLImageJ2COJ::getEngineInfo() const
 {
+#ifdef OPENJPEG_VERSION
 	return std::string("OpenJPEG: " OPENJPEG_VERSION ", Runtime: ")
 		+ opj_version();
+#else
+	return std::string("OpenJPEG runtime: ") + opj_version();
+#endif
 }
 
 // Return string from message, eliminating final \n if present
diff --git a/indra/llkdu/CMakeLists.txt b/indra/llkdu/CMakeLists.txt
index b8f8b420c329cc8bc0c448c900f4d3ca34bfed41..cb0e204e91a6f2eb26c839727cd6b8d20e08380d 100644
--- a/indra/llkdu/CMakeLists.txt
+++ b/indra/llkdu/CMakeLists.txt
@@ -40,6 +40,14 @@ set_source_files_properties(${llkdu_HEADER_FILES}
 
 list(APPEND llkdu_SOURCE_FILES ${llkdu_HEADER_FILES})
 
+# Our KDU package is built with KDU_X86_INTRINSICS in its .vcxproj file.
+# Unless that macro is also set for every consumer build, KDU freaks out,
+# spamming the viewer log with alignment FUD.
+set_source_files_properties(${llkdu_SOURCE_FILES}
+                            PROPERTIES
+                            COMPILE_DEFINITIONS
+                            "KDU_X86_INTRINSICS")
+
 if (USE_KDU)
   add_library (llkdu ${llkdu_SOURCE_FILES})
 
diff --git a/indra/llkdu/include_kdu_xxxx.h b/indra/llkdu/include_kdu_xxxx.h
new file mode 100644
index 0000000000000000000000000000000000000000..a1dbced60b27b128dab55bdaeff52158f74dd03e
--- /dev/null
+++ b/indra/llkdu/include_kdu_xxxx.h
@@ -0,0 +1,40 @@
+/**
+ * @file   include_kdu_xxxx.h
+ * @author Nat Goodspeed
+ * @date   2016-04-25
+ * @brief  
+ * 
+ * $LicenseInfo:firstyear=2016&license=viewerlgpl$
+ * Copyright (c) 2016, Linden Research, Inc.
+ * $/LicenseInfo$
+ */
+
+// This file specifically omits #include guards of its own: it's sort of an
+// #include macro used to wrap KDU #includes with proper incantations. Usage:
+
+// #define kdu_xxxx "kdu_compressed.h" // or whichever KDU header
+// #include "include_kdu_xxxx.h"
+// // kdu_xxxx #undef'ed by include_kdu_xxxx.h
+
+#if LL_DARWIN
+// don't *really* want to rebuild KDU so turn off specific warnings for this header
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wself-assign-field"
+#pragma clang diagnostic ignored "-Wunused-private-field"
+#include kdu_xxxx
+#pragma clang diagnostic pop
+#elif LL_WINDOWS
+// With warnings-as-errors in effect, strange relationship between
+// jp2_output_box and its subclass jp2_target in kdu_compressed.h
+// causes build failures. Specifically:
+// warning C4263: 'void kdu_supp::jp2_target::open(kdu_supp::jp2_family_tgt *)' : member function does not override any base class virtual member function
+// warning C4264: 'void kdu_supp::jp2_output_box::open(kdu_core::kdu_uint32)' : no override available for virtual member function from base 'kdu_supp::jp2_output_box'; function is hidden
+#pragma warning(push)
+#pragma warning(disable : 4263 4264)
+#include kdu_xxxx
+#pragma warning(pop)
+#else // some other platform
+#include kdu_xxxx
+#endif
+
+#undef kdu_xxxx
diff --git a/indra/llkdu/llimagej2ckdu.cpp b/indra/llkdu/llimagej2ckdu.cpp
index aa405362e8c0fc22c8cf04bded5aa12d89d86983..cb29da8f5fe8d8674229c5d046895f7637d8198d 100644
--- a/indra/llkdu/llimagej2ckdu.cpp
+++ b/indra/llkdu/llimagej2ckdu.cpp
@@ -25,21 +25,37 @@
  */
 
 #include "linden_common.h"
+
 #include "llimagej2ckdu.h"
 
 #include "lltimer.h"
 #include "llpointer.h"
 #include "llmath.h"
 #include "llkdumem.h"
-#include "stringize.h"
 
-#include "kdu_block_coding.h"
+#define kdu_xxxx "kdu_block_coding.h"
+#include "include_kdu_xxxx.h"
+
+// Avoid ubiquitous necessity of kdu_core:: qualification
+using namespace kdu_core;
 
 #include "llexception.h"
 #include <boost/exception/diagnostic_information.hpp>
 #include <sstream>
 #include <iomanip>
 
+// stream kdu_dims to std::ostream
+// Turns out this must NOT be in the anonymous namespace!
+// It must also precede #include "stringize.h".
+inline
+std::ostream& operator<<(std::ostream& out, const kdu_dims& dims)
+{
+	return out << "(" << dims.pos.x << "," << dims.pos.y << "),"
+				  "[" << dims.size.x << "x" << dims.size.y << "]";
+}
+
+#include "stringize.h"
+
 namespace {
 // Failure to load an image shouldn't crash the whole viewer.
 struct KDUError: public LLContinueError
@@ -82,19 +98,10 @@ std::string report_kdu_exception(kdu_exception mb)
 }
 } // anonymous namespace
 
-// stream kdu_dims to std::ostream
-// Turns out this must NOT be in the anonymous namespace!
-inline
-std::ostream& operator<<(std::ostream& out, const kdu_dims& dims)
-{
-	return out << "(" << dims.pos.x << "," << dims.pos.y << "),"
-				  "[" << dims.size.x << "x" << dims.size.y << "]";
-}
-
 class kdc_flow_control {
 	
 public:
-	kdc_flow_control(kdu_image_in_base *img_in, kdu_codestream codestream);
+	kdc_flow_control(kdu_supp::kdu_image_in_base *img_in, kdu_codestream codestream);
 	~kdc_flow_control();
 	bool advance_components();
 	void process_components();
@@ -103,7 +110,7 @@ class kdc_flow_control {
 	
 	struct kdc_component_flow_control {
 	public:
-		kdu_image_in_base *reader;
+		kdu_supp::kdu_image_in_base *reader;
 		int vert_subsampling;
 		int ratio_counter;  /*  Initialized to 0, decremented by `count_delta';
                                 when < 0, a new line must be processed, after
@@ -143,7 +150,8 @@ std::string LLImageJ2CKDU::getEngineInfo() const
 class LLKDUDecodeState
 {
 public:
-	LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap);
+	LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap,
+					 kdu_codestream* codestreamp);
 	~LLKDUDecodeState();
 	bool processTileDecode(F32 decode_time, bool limit_time = true);
 
@@ -345,9 +353,9 @@ void LLImageJ2CKDU::setupCodeStream(LLImageJ2C &base, bool keep_codestream, ECod
 			// This method is only called from methods that catch KDUError.
 			// We want to fail the image load, not crash the viewer.
 			LLTHROW(KDUError(STRINGIZE("Component " << idx << " dimensions "
-									 << other_dims
-									 << " do not match component 0 dimensions "
-									 << dims << "!")));
+									   << stringize(other_dims)
+									   << " do not match component 0 dimensions "
+									   << stringize(dims) << "!")));
 		}
 	}
 
@@ -559,7 +567,8 @@ bool LLImageJ2CKDU::decodeImpl(LLImageJ2C &base, LLImageRaw &raw_image, F32 deco
 					kdu_coords offset = tile_dims.pos - dims.pos;
 					int row_gap = channels*dims.size.x; // inter-row separation
 					kdu_byte *buf = buffer + offset.y*row_gap + offset.x*channels;
-					mDecodeState.reset(new LLKDUDecodeState(tile, buf, row_gap));
+					mDecodeState.reset(new LLKDUDecodeState(tile, buf, row_gap,
+															mCodeStreamp.get()));
 				}
 				// Do the actual processing
 				F32 remaining_time = decode_time - decode_timer.getElapsedTimeF32();
@@ -1247,7 +1256,8 @@ all necessary level shifting, type conversion, rounding and truncation. */
 	}
 }
 
-LLKDUDecodeState::LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap)
+LLKDUDecodeState::LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap,
+								   kdu_codestream* codestreamp)
 {
 	S32 c;
 
@@ -1293,7 +1303,7 @@ LLKDUDecodeState::LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap)
 			mEngines[c] = kdu_synthesis(res,&mAllocator,use_shorts);
 		}
 	}
-	mAllocator.finalize(); // Actually creates buffering resources
+	mAllocator.finalize(*codestreamp); // Actually creates buffering resources
 	for (c = 0; c < mNumComponents; c++)
 	{
 		mLines[c].create(); // Grabs resources from the allocator.
@@ -1351,7 +1361,7 @@ separation between consecutive rows in the real buffer. */
 
 // kdc_flow_control 
 
-kdc_flow_control::kdc_flow_control (kdu_image_in_base *img_in, kdu_codestream codestream)
+kdc_flow_control::kdc_flow_control (kdu_supp::kdu_image_in_base *img_in, kdu_codestream codestream)
 {
 	int n;
 	
diff --git a/indra/llkdu/llimagej2ckdu.h b/indra/llkdu/llimagej2ckdu.h
index 7d234435a48058ff75777fe9e65881180be89dd5..b57e4cc40e51519fae5eab0b9b08caaedb89d4de 100644
--- a/indra/llkdu/llimagej2ckdu.h
+++ b/indra/llkdu/llimagej2ckdu.h
@@ -37,15 +37,8 @@
 #include "kdu_messaging.h"
 #include "kdu_params.h"
 
-// don't *really* want to rebuild KDU so turn off specific warnings for this header
-#if LL_DARWIN
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunused-private-field"
-#include "kdu_compressed.h"
-#pragma clang diagnostic pop
-#else
-#include "kdu_compressed.h"
-#endif
+#define kdu_xxxx "kdu_compressed.h"
+#include "include_kdu_xxxx.h"
 
 #include "kdu_sample_processing.h"
 #include <boost/scoped_ptr.hpp>
@@ -111,17 +104,19 @@ class LLImageJ2CKDU : public LLImageJ2CImpl
 			}
 		}
 
-		kdu_codestream* operator->() { return &mCodeStream; }
+		// for those few times when you need a raw kdu_codestream*
+		kdu_core::kdu_codestream* get() { return &mCodeStream; }
+		kdu_core::kdu_codestream* operator->() { return &mCodeStream; }
 
 	private:
-		kdu_codestream mCodeStream;
+		kdu_core::kdu_codestream mCodeStream;
 	};
 
 	// Encode variable
 	boost::scoped_ptr<LLKDUMemSource> mInputp;
 	CodeStreamHolder mCodeStreamp;
-	boost::scoped_ptr<kdu_coords> mTPosp; // tile position
-	boost::scoped_ptr<kdu_dims> mTileIndicesp;
+	boost::scoped_ptr<kdu_core::kdu_coords> mTPosp; // tile position
+	boost::scoped_ptr<kdu_core::kdu_dims> mTileIndicesp;
 	int mBlocksSize;
 	int mPrecinctsSize;
 	int mLevels;
diff --git a/indra/llkdu/llkdumem.cpp b/indra/llkdu/llkdumem.cpp
index 0347475559d8844c2530c0ce63905c31ba9cf566..96e9da25d8a614163a8d5981d9adb4224176fa06 100644
--- a/indra/llkdu/llkdumem.cpp
+++ b/indra/llkdu/llkdumem.cpp
@@ -28,6 +28,9 @@
 #include "llkdumem.h"
 #include "llerror.h"
 
+using namespace kdu_core;
+using kd_supp_image_local::image_line_buf;
+
 #if defined(LL_WINDOWS)
 # pragma warning(disable: 4702) // unreachable code
 #endif
diff --git a/indra/llkdu/llkdumem.h b/indra/llkdu/llkdumem.h
index fab913d93b7af6ab12d5ea3a333f8ce88f1e0474..09d81f38dec92cd87af57a7a28cec7078c526892 100644
--- a/indra/llkdu/llkdumem.h
+++ b/indra/llkdu/llkdumem.h
@@ -29,26 +29,22 @@
 
 // Support classes for reading and writing from memory buffers in KDU
 #define KDU_NO_THREADS
-// don't *really* want to rebuild KDU so turn off specific warnings for this header
-#if LL_DARWIN
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wself-assign-field"
-#pragma clang diagnostic ignored "-Wunused-private-field"
-#include "kdu_image.h"
-#pragma clang diagnostic pop
-#else
-#include "kdu_image.h"
-#endif
+
+#define kdu_xxxx "kdu_image.h"
+#include "include_kdu_xxxx.h"
 
 #include "kdu_elementary.h"
 #include "kdu_messaging.h"
 #include "kdu_params.h"
-#include "kdu_compressed.h"
+
+#define kdu_xxxx "kdu_compressed.h"
+#include "include_kdu_xxxx.h"
+
 #include "kdu_sample_processing.h"
 #include "image_local.h"
 #include "stdtypes.h"
 
-class LLKDUMemSource: public kdu_compressed_source
+class LLKDUMemSource: public kdu_core::kdu_compressed_source
 {
 public:
 	LLKDUMemSource(U8 *input_buffer, U32 size)
@@ -62,7 +58,7 @@ class LLKDUMemSource: public kdu_compressed_source
 	{
 	}
 
-	int read(kdu_byte *buf, int num_bytes)
+	int read(kdu_core::kdu_byte *buf, int num_bytes)
 	{
 		U32 num_out;
 		num_out = num_bytes;
@@ -87,7 +83,7 @@ class LLKDUMemSource: public kdu_compressed_source
 	U32 mCurPos;
 };
 
-class LLKDUMemTarget: public kdu_compressed_target
+class LLKDUMemTarget: public kdu_core::kdu_compressed_target
 {
 public:
 	LLKDUMemTarget(U8 *output_buffer, U32 &output_size, const U32 buffer_size)
@@ -102,7 +98,7 @@ class LLKDUMemTarget: public kdu_compressed_target
 	{
 	}
 
-	bool write(const kdu_byte *buf, int num_bytes)
+	bool write(const kdu_core::kdu_byte *buf, int num_bytes)
 	{
 		U32 num_out;
 		num_out = num_bytes;
@@ -126,7 +122,7 @@ class LLKDUMemTarget: public kdu_compressed_target
 	U32 *mOutputSize;
 };
 
-class LLKDUMemIn : public kdu_image_in_base
+class LLKDUMemIn : public kdu_supp::kdu_image_in_base
 {
 public:
 	LLKDUMemIn(const U8 *data,
@@ -134,10 +130,10 @@ class LLKDUMemIn : public kdu_image_in_base
 				const U16 rows,
 				const U16 cols,
 				U8 in_num_components,
-				siz_params *siz);
+				kdu_core::siz_params *siz);
 	~LLKDUMemIn();
 
-	bool get(int comp_idx, kdu_line_buf &line, int x_tnum);
+	bool get(int comp_idx, kdu_core::kdu_line_buf &line, int x_tnum);
 
 private:
 	const U8 *mData;
@@ -146,8 +142,8 @@ class LLKDUMemIn : public kdu_image_in_base
 	int rows, cols;
 	int alignment_bytes; // Number of 0's at end of each line.
 	int precision[3];
-	image_line_buf *incomplete_lines; // Each "sample" represents a full pixel
-	image_line_buf *free_lines;
+	kd_supp_image_local::image_line_buf *incomplete_lines; // Each "sample" represents a full pixel
+	kd_supp_image_local::image_line_buf *free_lines;
 	int num_unread_rows;
 
 	U32 mCurPos;
diff --git a/indra/llkdu/tests/llimagej2ckdu_test.cpp b/indra/llkdu/tests/llimagej2ckdu_test.cpp
index e8b550baa66eeedc2ed6ae81cf7b597fee8c84b1..e386a9f71b4ac5bc53144f944a10ada914f839fb 100644
--- a/indra/llkdu/tests/llimagej2ckdu_test.cpp
+++ b/indra/llkdu/tests/llimagej2ckdu_test.cpp
@@ -30,6 +30,7 @@
 #include "llimagej2ckdu.h"
 
 #if LL_DARWIN
+// For this source, it's true that private fields in llkdumem.h are unused.
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wunused-private-field"
 #include "llkdumem.h"
@@ -37,7 +38,6 @@
 #else
 #include "llkdumem.h"
 #endif
-
 #include "kdu_block_coding.h"
 // Tut header
 #include "lltut.h"
@@ -113,17 +113,19 @@ void LLImageJ2C::setLastError(const std::string&, const std::string&) { }
 bool LLImageJ2C::updateData() { return false; }
 void LLImageJ2C::updateRawDiscardLevel() { }
 
-LLKDUMemIn::LLKDUMemIn(const U8*, const U32, const U16, const U16, const U8, siz_params*) { }
+LLKDUMemIn::LLKDUMemIn(const U8*, const U32, const U16, const U16, const U8, kdu_core::siz_params*) { }
 LLKDUMemIn::~LLKDUMemIn() { }
-bool LLKDUMemIn::get(int, kdu_line_buf&, int) { return false; }
+bool LLKDUMemIn::get(int, kdu_core::kdu_line_buf&, int) { return false; }
 
 // Stub Kakadu Library calls
+// they're all namespaced now
+namespace kdu_core {
 kdu_tile_comp kdu_tile::access_component(int ) { kdu_tile_comp a; return a; }
 kdu_block_encoder::kdu_block_encoder() { }
 kdu_block_decoder::kdu_block_decoder() { }
 void kdu_block::set_max_passes(int , bool ) { }
 void kdu_block::set_max_bytes(int , bool ) { }
-void kdu_tile::close(kdu_thread_env* ) { }
+void kdu_tile::close(kdu_thread_env *, bool) {}
 int kdu_tile::get_num_components() { return 0; }
 bool kdu_tile::get_ycc() { return false; }
 void kdu_tile::set_components_of_interest(int , const int* ) { }
@@ -156,14 +158,14 @@ void kdu_codestream::set_fussy() { }
 void kdu_codestream::get_dims(int, kdu_dims&, bool ) { }
 int kdu_codestream::get_min_dwt_levels() { return 5; }
 int kdu_codestream::get_max_tile_layers() { return 1; }
-void kdu_codestream::change_appearance(bool, bool, bool) { }
+void kdu_codestream::change_appearance(bool, bool, bool, kdu_thread_env *) {}
 void kdu_codestream::get_tile_dims(kdu_coords, int, kdu_dims&, bool ) { }
 void kdu_codestream::destroy() { }
 void kdu_codestream::collect_timing_stats(int ) { }
 void kdu_codestream::set_max_bytes(kdu_long, bool, bool ) { }
 void kdu_codestream::get_valid_tiles(kdu_dims& ) { }
 void kdu_codestream::create(kdu_compressed_source*, kdu_thread_env*) { }
-void kdu_codestream::apply_input_restrictions( int, int, int, int, kdu_dims*, kdu_component_access_mode ) { }
+void kdu_codestream::apply_input_restrictions(int, int, int, int, kdu_dims const *, kdu_component_access_mode, kdu_thread_env *, kdu_quality_limiter const *) {}
 void kdu_codestream::get_subsampling(int , kdu_coords&, bool ) { }
 void kdu_codestream::flush(kdu_long *, int, kdu_uint16 *, bool, bool, double, kdu_thread_env*, int) { }
 void kdu_codestream::set_resilient(bool ) { }
@@ -178,13 +180,15 @@ siz_params* kdu_codestream::access_siz() { return NULL; }
 kdu_tile kdu_codestream::open_tile(kdu_coords , kdu_thread_env* ) { kdu_tile a; return a; }
 kdu_codestream_comment kdu_codestream::add_comment() { kdu_codestream_comment a; return a; }
 void kdu_subband::close_block(kdu_block*, kdu_thread_env*) { }
-void kdu_subband::get_valid_blocks(kdu_dims &indices) { }
-kdu_block* kdu_subband::open_block(kdu_coords, int*, kdu_thread_env*) { return NULL; }
+void kdu_subband::get_valid_blocks(kdu_dims &indices) const { }
+kdu_block * kdu_subband::open_block(kdu_coords, int *, kdu_thread_env *, int, bool) { return NULL; }
 bool kdu_codestream_comment::put_text(const char*) { return false; }
 void kdu_customize_warnings(kdu_message*) { }
 void kdu_customize_errors(kdu_message*) { }
-kdu_long kdu_multi_analysis::create(kdu_codestream, kdu_tile, kdu_thread_env*, kdu_thread_queue*, int, kdu_roi_image*, int) { kdu_long a = 0; return a; }
+kdu_long kdu_multi_analysis::create(kdu_codestream, kdu_tile, kdu_thread_env *,kdu_thread_queue *, int, kdu_roi_image *, int, kdu_sample_allocator *, kdu_push_pull_params const *) { return kdu_long(0); }
+void kdu_multi_analysis::destroy(kdu_thread_env *) {}
 siz_params::siz_params() : kdu_params(NULL, false, false, false, false, false) { }
+siz_params::~siz_params() {}
 void siz_params::finalize(bool ) { }
 void siz_params::copy_with_xforms(kdu_params*, int, int, bool, bool, bool) { }
 int siz_params::write_marker_segment(kdu_output*, kdu_params*, int) { return 0; }
@@ -193,10 +197,15 @@ bool siz_params::read_marker_segment(kdu_uint16, int, kdu_byte a[], int) { retur
 
 kdu_decoder::kdu_decoder(kdu_subband , kdu_sample_allocator*, bool , float, int, kdu_thread_env*, kdu_thread_queue*, int) { }
 void kdu_codestream::create(siz_params*, kdu_compressed_target*, kdu_dims*, int, kdu_long, kdu_thread_env* ) { }
+kdu_sample_allocator::~kdu_sample_allocator() {}
+void kdu_sample_allocator::do_finalize(kdu_codestream) {}
 void (*kdu_convert_ycc_to_rgb_rev16)(kdu_int16*,kdu_int16*,kdu_int16*,int);
 void (*kdu_convert_ycc_to_rgb_irrev16)(kdu_int16*,kdu_int16*,kdu_int16*,int);
 void (*kdu_convert_ycc_to_rgb_rev32)(kdu_int32*,kdu_int32*,kdu_int32*,int);
 void (*kdu_convert_ycc_to_rgb_irrev32)(float*,float*,float*,int);
+bool kdu_core_sample_alignment_checker(int, int, int, int, bool, bool) { return false; }
+void kdu_pull_ifc::destroy() {}
+} // namespace kdu_core
 
 // -------------------------------------------------------------------------------------------
 // TUT
diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h
index 93b9f22b25fa9cfc722697d8d96800b4314e7adf..92a48df53c78483bb6ccffe1fc19944e75a3db0a 100644
--- a/indra/llmath/llmath.h
+++ b/indra/llmath/llmath.h
@@ -153,7 +153,7 @@ inline F64 llabs(const F64 a)
 
 inline S32 lltrunc( F32 f )
 {
-#if LL_WINDOWS && !defined( __INTEL_COMPILER )
+#if LL_WINDOWS && !defined( __INTEL_COMPILER ) && (ADDRESS_SIZE == 32)
 		// Avoids changing the floating point control word.
 		// Add or subtract 0.5 - epsilon and then round
 		const static U32 zpfp[] = { 0xBEFFFFFF, 0x3EFFFFFF };
@@ -179,7 +179,7 @@ inline S32 lltrunc( F64 f )
 
 inline S32 llfloor( F32 f )
 {
-#if LL_WINDOWS && !defined( __INTEL_COMPILER )
+#if LL_WINDOWS && !defined( __INTEL_COMPILER ) && (ADDRESS_SIZE == 32)
 		// Avoids changing the floating point control word.
 		// Accurate (unlike Stereopsis version) for all values between S32_MIN and S32_MAX and slightly faster than Stereopsis version.
 		// Add -(0.5 - epsilon) and then round
diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h
index cebd2ace7d8cee33699da11846de43f1930bc21a..54a275633f5cd5248d1fd8af5fce55c145a04044 100644
--- a/indra/llmath/llsimdmath.h
+++ b/indra/llmath/llsimdmath.h
@@ -31,7 +31,7 @@
 #error "Please include llmath.h before this file."
 #endif
 
-#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 ) )
+#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 && ADDRESS_SIZE == 32 ) )
 #error SSE2 not enabled. LLVector4a and related class will not compile.
 #endif
 
diff --git a/indra/llmath/v4coloru.h b/indra/llmath/v4coloru.h
index fddad349789139a076f86a1e72285245359151d0..704ce852d92717478fbff45fe5bc880779eb5607 100644
--- a/indra/llmath/v4coloru.h
+++ b/indra/llmath/v4coloru.h
@@ -47,14 +47,7 @@ class LLColor4U
 {
 public:
 
-	union
-	{
-		U8         mV[LENGTHOFCOLOR4U];
-		U32        mAll;
-		LLColor4*  mSources;
-		LLColor4U* mSourcesU;
-	};
-
+	U8 mV[LENGTHOFCOLOR4U];
 
 	LLColor4U();						// Initializes LLColor4U to (0, 0, 0, 1)
 	LLColor4U(U8 r, U8 g, U8 b);		// Initializes LLColor4U to (r, g, b, 1)
@@ -132,6 +125,9 @@ class LLColor4U
 		return LLColor4(*this);
 	}
 
+	U32 asRGBA() const;
+	void fromRGBA( U32 aVal );
+
 	static LLColor4U white;
 	static LLColor4U black;
 	static LLColor4U red;
@@ -565,6 +561,26 @@ void LLColor4U::setVecScaleClamp(const LLColor3& color)
 	mV[3] = 255;
 }
 
+inline U32 LLColor4U::asRGBA() const
+{
+	// Little endian: values are swapped in memory. The original code access the array like a U32, so we need to swap here
+
+	return (mV[3] << 24) | (mV[2] << 16) | (mV[1] << 8) | mV[0];
+}
+
+inline void LLColor4U::fromRGBA( U32 aVal )
+{
+	// Little endian: values are swapped in memory. The original code access the array like a U32, so we need to swap here
+
+	mV[ 0 ] = aVal & 0xFF;
+	aVal >>= 8;
+	mV[ 1 ] = aVal & 0xFF;
+	aVal >>= 8;
+	mV[ 2 ] = aVal & 0xFF;
+	aVal >>= 8;
+	mV[ 3 ] = aVal & 0xFF;
+}
+
 
 #endif
 
diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt
index 84667f1b826f5a38ed400bd038cac0b912479687..2cdea67723b135368a02362e0560a4bbb74866ee 100644
--- a/indra/llplugin/CMakeLists.txt
+++ b/indra/llplugin/CMakeLists.txt
@@ -56,13 +56,13 @@ set(llplugin_HEADER_FILES
 set_source_files_properties(${llplugin_HEADER_FILES}
                             PROPERTIES HEADER_FILE_ONLY TRUE)
 
-if(NOT WORD_SIZE EQUAL 32)
+if(NOT ADDRESS_SIZE EQUAL 32)
   if(WINDOWS)
-    add_definitions(/FIXED:NO)
+    ##add_definitions(/FIXED:NO)
   else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
     add_definitions(-fPIC)
   endif(WINDOWS)
-endif(NOT WORD_SIZE EQUAL 32)
+endif(NOT ADDRESS_SIZE EQUAL 32)
 
 list(APPEND llplugin_SOURCE_FILES ${llplugin_HEADER_FILES})
 
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 69420dd0bb338b07539a62847916ddfdc443743b..0e242a20f697c3d23d590eab9086939ae7a55ab0 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -2039,7 +2039,8 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)
 		}
 	}
 
-	mVerticesp[mCount] = mVerticesp[mCount-1];
+	if( mCount > 0 ) // ND: Guard against crashes if mCount is zero, yes it can happen
+		mVerticesp[mCount] = mVerticesp[mCount-1];
 }
 
 void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 vert_count)
diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index d00d9ab47ea1caa2d0a8347f4fbefc13ba4ebe64..0d1a47408bb6e6bd9a47043dee4cf9c26cbf3f42 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -113,7 +113,7 @@ class LLDragDropWin32Target:
 					PVOID data = GlobalLock( stgmed.hGlobal );
 					mDropUrl = std::string( (char*)data );
 					// XXX MAJOR MAJOR HACK!
-					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( mAppWindowHandle, GWLP_USERDATA );
 					if (NULL != window_imp)
 					{
 						LLCoordGL gl_coord( 0, 0 );
@@ -168,7 +168,7 @@ class LLDragDropWin32Target:
 			if ( mAllowDrop )
 			{
 				// XXX MAJOR MAJOR HACK!
-				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( mAppWindowHandle, GWLP_USERDATA );
 				if (NULL != window_imp)
 				{
 					LLCoordGL gl_coord( 0, 0 );
@@ -215,7 +215,7 @@ class LLDragDropWin32Target:
 		HRESULT __stdcall DragLeave( void )
 		{
 			// XXX MAJOR MAJOR HACK!
-			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( mAppWindowHandle, GWLP_USERDATA );
 			if (NULL != window_imp)
 			{
 				LLCoordGL gl_coord( 0, 0 );
@@ -232,7 +232,7 @@ class LLDragDropWin32Target:
 			if ( mAllowDrop )
 			{
 				// window impl stored in Window data (neat!)
-				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA );
+				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( mAppWindowHandle, GWLP_USERDATA );
 				if ( NULL != window_imp )
 				{
 					POINT pt_client;
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 4086db8e524069ef53c1ed4557934ac85fc31e6a..55e68283b76d544f793a77fe3e23792107ebecc6 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -785,7 +785,7 @@ void LLWindowWin32::close()
 	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL;
 	
 	// Don't process events in our mainWindowProc any longer.
-	SetWindowLong(mWindowHandle, GWL_USERDATA, NULL);
+	SetWindowLongPtr(mWindowHandle, GWLP_USERDATA, NULL);
 
 	// Make sure we don't leave a blank toolbar button.
 	ShowWindow(mWindowHandle, SW_HIDE);
@@ -1564,7 +1564,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 		LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL;
 	}
 
-	SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this);
+	SetWindowLongPtr(mWindowHandle, GWLP_USERDATA, (LONG_PTR)this);
 
 	// register this window as handling drag/drop events from the OS
 	DragAcceptFiles( mWindowHandle, TRUE );
@@ -1876,7 +1876,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 	// This is to avoid triggering double click teleport after returning focus (see MAINT-3786).
 	static bool sHandleDoubleClick = true;
 
-	LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA);
+	LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( h_wnd, GWLP_USERDATA );
 
 
 	if (NULL != window_imp)
diff --git a/indra/media_plugins/CMakeLists.txt b/indra/media_plugins/CMakeLists.txt
index 9055e0111a37f5b06f902fd733af87178007af57..f654c151833543227385641ee2ab1a607fe23b6f 100644
--- a/indra/media_plugins/CMakeLists.txt
+++ b/indra/media_plugins/CMakeLists.txt
@@ -8,14 +8,10 @@ if (LINUX)
 endif (LINUX)
 
 if (DARWIN)
-    add_subdirectory(quicktime)
     add_subdirectory(cef)
 endif (DARWIN)
 
 if (WINDOWS)
     add_subdirectory(cef)
-    add_subdirectory(winmmshim)
     add_subdirectory(libvlc)
 endif (WINDOWS)
-
-### add_subdirectory(example)
diff --git a/indra/media_plugins/base/CMakeLists.txt b/indra/media_plugins/base/CMakeLists.txt
index 7367b9e5e654911c75a0bf8a9fca789a1c260378..70c81d40236562776d3ff3893ce68897724e1d2f 100644
--- a/indra/media_plugins/base/CMakeLists.txt
+++ b/indra/media_plugins/base/CMakeLists.txt
@@ -28,13 +28,13 @@ include_directories(SYSTEM
 
 ### media_plugin_base
 
-if(NOT WORD_SIZE EQUAL 32)
+if(NOT ADDRESS_SIZE EQUAL 32)
   if(WINDOWS)
-    add_definitions(/FIXED:NO)
+    ##add_definitions(/FIXED:NO)
   else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
     add_definitions(-fPIC)
   endif(WINDOWS)
-endif(NOT WORD_SIZE EQUAL 32)
+endif(NOT ADDRESS_SIZE EQUAL 32)
 
 set(media_plugin_base_SOURCE_FILES
     media_plugin_base.cpp
diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt
index db471c7906c9900b9a4e77e06c475126d6fc7243..711e870ee400997786e6a8654a180bb91751592d 100644
--- a/indra/media_plugins/cef/CMakeLists.txt
+++ b/indra/media_plugins/cef/CMakeLists.txt
@@ -34,13 +34,13 @@ include_directories(SYSTEM
 
 ### media_plugin_cef
 
-if(NOT WORD_SIZE EQUAL 32)
+if(NOT ADDRESS_SIZE EQUAL 32)
   if(WINDOWS)
-    add_definitions(/FIXED:NO)
+    ##add_definitions(/FIXED:NO)
   else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
     add_definitions(-fPIC)
   endif(WINDOWS)
-endif(NOT WORD_SIZE EQUAL 32)
+endif(NOT ADDRESS_SIZE EQUAL 32)
 
 set(media_plugin_cef_SOURCE_FILES
     media_plugin_cef.cpp
@@ -97,8 +97,8 @@ if (WINDOWS)
   set_target_properties(
     media_plugin_cef
     PROPERTIES
-    LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /LTCG /NODEFAULTLIB:LIBCMT"
-    LINK_FLAGS_DEBUG "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMTD"
+    LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /LTCG /NODEFAULTLIB:LIBCMT /IGNORE:4099"
+    LINK_FLAGS_DEBUG "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMTD /IGNORE:4099"
     )
 endif (WINDOWS)
 
diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp
index 4eb29c98f9aa6ea4cd96ecd991c22c6967b91d9f..d04bc16d4fd9393e83a2d28f2ae93bc2164a667f 100644
--- a/indra/media_plugins/cef/media_plugin_cef.cpp
+++ b/indra/media_plugins/cef/media_plugin_cef.cpp
@@ -501,7 +501,10 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				LLCEFLib::LLCEFLibSettings settings;
 				settings.initial_width = 1024;
 				settings.initial_height = 1024;
-				settings.page_zoom_factor = message_in.getValueReal("factor");
+				// The LLCEFLibSettings struct in the Windows 32-bit
+				// llceflib's build 500907 does not have a page_zoom_factor
+				// member. Set below.
+				//settings.page_zoom_factor = message_in.getValueReal("factor");
 				settings.plugins_enabled = mPluginsEnabled;
 				settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granualrity/query UI
 				settings.javascript_enabled = mJavascriptEnabled;
@@ -518,6 +521,9 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 					// if this fails, the media system in viewer will put up a message
 				}
 
+				// now we can set page zoom factor
+				mLLCEFLib->setPageZoom(message_in.getValueReal("factor"));
+
 				// Plugin gets to decide the texture parameters to use.
 				mDepth = 4;
 				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "texture_params");
diff --git a/indra/media_plugins/cef/windows_volume_catcher.cpp b/indra/media_plugins/cef/windows_volume_catcher.cpp
index 0cfb810906b578e4ae3466b32ca0a8c808dd9132..3b52941e96ad90cfeac735f3497aaee5e7cfb8d6 100644
--- a/indra/media_plugins/cef/windows_volume_catcher.cpp
+++ b/indra/media_plugins/cef/windows_volume_catcher.cpp
@@ -42,44 +42,15 @@ friend LLSingleton<VolumeCatcherImpl>;
 	VolumeCatcherImpl();
 	~VolumeCatcherImpl();
 
-	typedef void (WINAPI *set_volume_func_t)(F32);
-	typedef void (WINAPI *set_mute_func_t)(bool);
-
-	set_volume_func_t mSetVolumeFunc;
-	set_mute_func_t mSetMuteFunc;
-
-	// tests if running on Vista, 7, 8 + once in CTOR
-	bool isWindowsVistaOrHigher();
-
 	F32 	mVolume;
 	F32 	mPan;
 	bool mSystemIsVistaOrHigher;
 };
 
-bool VolumeCatcherImpl::isWindowsVistaOrHigher()
-{
-	OSVERSIONINFO osvi;
-	ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
-	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-	GetVersionEx(&osvi);
-	return osvi.dwMajorVersion >= 6;
-}
-
 VolumeCatcherImpl::VolumeCatcherImpl()
 :	mVolume(1.0f),			// default volume is max
 	mPan(0.f)				// default pan is centered
 {
-	mSystemIsVistaOrHigher = isWindowsVistaOrHigher();
-
-	if ( ! mSystemIsVistaOrHigher )
-	{
-		HMODULE handle = ::LoadLibrary(L"winmm.dll");
-		if(handle)
-		{
-			mSetVolumeFunc = (set_volume_func_t)::GetProcAddress(handle, "setPluginVolume");
-			mSetMuteFunc = (set_mute_func_t)::GetProcAddress(handle, "setPluginMute");
-		}
-	}
 }
 
 VolumeCatcherImpl::~VolumeCatcherImpl()
@@ -90,26 +61,12 @@ void VolumeCatcherImpl::setVolume(F32 volume)
 {
 	mVolume = volume;
 
-	if ( mSystemIsVistaOrHigher )
-	{
-		// set both left/right to same volume
-		// TODO: use pan value to set independently
-		DWORD left_channel  = (DWORD)(mVolume * 65535.0f);
-		DWORD right_channel =  (DWORD)(mVolume * 65535.0f);
-		DWORD hw_volume = left_channel << 16 | right_channel;
-		::waveOutSetVolume(NULL, hw_volume);
-	}
-	else
-	{
-		if (mSetMuteFunc)
-		{
-			mSetMuteFunc(volume == 0.f);
-		}
-		if (mSetVolumeFunc)
-		{
-			mSetVolumeFunc(mVolume);
-		}
-	}
+	// set both left/right to same volume
+	// TODO: use pan value to set independently
+	DWORD left_channel = (DWORD)(mVolume * 65535.0f);
+	DWORD right_channel = (DWORD)(mVolume * 65535.0f);
+	DWORD hw_volume = left_channel << 16 | right_channel;
+	::waveOutSetVolume(NULL, hw_volume);
 }
 
 void VolumeCatcherImpl::setPan(F32 pan)
diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt
index 171645ef0467e068197fd9df71dde2745235971e..d2a17b1d76727eb1a5950367ac54c0a08ce3c18b 100644
--- a/indra/media_plugins/example/CMakeLists.txt
+++ b/indra/media_plugins/example/CMakeLists.txt
@@ -32,13 +32,13 @@ include_directories(SYSTEM
 
 ### media_plugin_example
 
-if(NOT WORD_SIZE EQUAL 32)
+if(NOT ADDRESS_SIZE EQUAL 32)
   if(WINDOWS)
-    add_definitions(/FIXED:NO)
+    ##add_definitions(/FIXED:NO)
   else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
     add_definitions(-fPIC)
   endif(WINDOWS)
-endif(NOT WORD_SIZE EQUAL 32)
+endif(NOT ADDRESS_SIZE EQUAL 32)
 
 set(media_plugin_example_SOURCE_FILES
     media_plugin_example.cpp
diff --git a/indra/media_plugins/gstreamer010/CMakeLists.txt b/indra/media_plugins/gstreamer010/CMakeLists.txt
index 447f6e06895ec7d5cbf69ab85bd03513664e178d..6d18814b1e8a44fe828ea5b3f6416867da8deb43 100644
--- a/indra/media_plugins/gstreamer010/CMakeLists.txt
+++ b/indra/media_plugins/gstreamer010/CMakeLists.txt
@@ -33,13 +33,13 @@ include_directories(SYSTEM
 
 ### media_plugin_gstreamer010
 
-if(NOT WORD_SIZE EQUAL 32)
+if(NOT ADDRESS_SIZE EQUAL 32)
   if(WINDOWS)
-    add_definitions(/FIXED:NO)
+    ##add_definitions(/FIXED:NO)
   else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
     add_definitions(-fPIC)
   endif(WINDOWS)
-endif(NOT WORD_SIZE EQUAL 32)
+endif(NOT ADDRESS_SIZE EQUAL 32)
 
 set(media_plugin_gstreamer010_SOURCE_FILES
     media_plugin_gstreamer010.cpp
diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt
index 535d29125b763a2d51c0c9c38f92b82dc8989e93..72159f9f69dc7b6fabd4fa2edfd05da094c19a48 100644
--- a/indra/media_plugins/libvlc/CMakeLists.txt
+++ b/indra/media_plugins/libvlc/CMakeLists.txt
@@ -33,13 +33,13 @@ include_directories(SYSTEM
 
 ### media_plugin_libvlc
 
-if(NOT WORD_SIZE EQUAL 32)
+if(NOT ADDRESS_SIZE EQUAL 32)
   if(WINDOWS)
-    add_definitions(/FIXED:NO)
+    ##add_definitions(/FIXED:NO)
   else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
     add_definitions(-fPIC)
   endif(WINDOWS)
-endif(NOT WORD_SIZE EQUAL 32)
+endif(NOT ADDRESS_SIZE EQUAL 32)
 
 set(media_plugin_libvlc_SOURCE_FILES
     media_plugin_libvlc.cpp
@@ -61,7 +61,17 @@ target_link_libraries(media_plugin_libvlc
 add_dependencies(media_plugin_libvlc
   ${LLPLUGIN_LIBRARIES}
   ${MEDIA_PLUGIN_BASE_LIBRARIES}
-  ${LLCOMMON_LIBRARIES}
+##${LLCOMMON_LIBRARIES}
+  # Just say 'llcommon' here. LLCOMMON_LIBRARIES is specified for use in
+  # target_link_libraries: it includes several Boost libraries, which are
+  # absolutely NOT dependencies in the sense intended here. Those Boost
+  # library macros, in turn, specify 'debug' and 'optimized' and a different
+  # library name for each, producing several wordy errors:
+  # Policy CMP0046 is not set: Error on non-existent dependency in
+  # add_dependencies.
+  # Really, the only dependency we should mention from LLCOMMON_LIBRARIES is
+  # llcommon itself.
+  llcommon
 )
 
 if (WINDOWS)
diff --git a/indra/media_plugins/quicktime/CMakeLists.txt b/indra/media_plugins/quicktime/CMakeLists.txt
deleted file mode 100755
index 58391007fff486a814a3ffe9fee3da1cd98e8489..0000000000000000000000000000000000000000
--- a/indra/media_plugins/quicktime/CMakeLists.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-# -*- cmake -*-
-
-project(media_plugin_quicktime)
-
-include(00-Common)
-include(LLCommon)
-include(LLImage)
-include(LLPlugin)
-include(LLMath)
-include(LLRender)
-include(LLWindow)
-include(Linking)
-include(PluginAPI)
-include(MediaPluginBase)
-include(OpenGL)
-include(QuickTimePlugin)
-
-include_directories(
-    ${LLPLUGIN_INCLUDE_DIRS}
-    ${MEDIA_PLUGIN_BASE_INCLUDE_DIRS}
-    ${LLCOMMON_INCLUDE_DIRS}
-    ${LLMATH_INCLUDE_DIRS}
-    ${LLIMAGE_INCLUDE_DIRS}
-    ${LLRENDER_INCLUDE_DIRS}
-    ${LLWINDOW_INCLUDE_DIRS}
-)
-include_directories(SYSTEM
-    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
-    )
-
-if (DARWIN)
-    include(CMakeFindFrameworks)
-    find_library(CARBON_LIBRARY Carbon)
-endif (DARWIN)
-
-
-### media_plugin_quicktime
-
-set(media_plugin_quicktime_SOURCE_FILES
-    media_plugin_quicktime.cpp
-    )
-
-add_library(media_plugin_quicktime
-    SHARED
-    ${media_plugin_quicktime_SOURCE_FILES}
-)
-
-target_link_libraries(media_plugin_quicktime
-  ${LLPLUGIN_LIBRARIES}
-  ${MEDIA_PLUGIN_BASE_LIBRARIES}
-  ${LLCOMMON_LIBRARIES}
-  ${QUICKTIME_LIBRARY}
-  ${PLUGIN_API_WINDOWS_LIBRARIES}
-)
-
-add_dependencies(media_plugin_quicktime
-  ${LLPLUGIN_LIBRARIES}
-  ${MEDIA_PLUGIN_BASE_LIBRARIES}
-  ${LLCOMMON_LIBRARIES}
-)
-
-if (WINDOWS)
-  set_target_properties(
-    media_plugin_quicktime
-    PROPERTIES
-    LINK_FLAGS "/MANIFEST:NO"
-    )
-endif (WINDOWS)
-
-if (QUICKTIME)
-
-    add_definitions(-DLL_QUICKTIME_ENABLED=1)
-
-    if (DARWIN)
-      # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name
-      set_target_properties(
-        media_plugin_quicktime
-        PROPERTIES
-        PREFIX ""
-        BUILD_WITH_INSTALL_RPATH 1
-        INSTALL_NAME_DIR "@executable_path"
-        LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
-      )
-
-# We use a bunch of deprecated system APIs.
-    set_source_files_properties(
-        media_plugin_quicktime.cpp PROPERTIES
-        COMPILE_FLAGS -Wno-deprecated-declarations
-        )
-    find_library(CARBON_LIBRARY Carbon)
-    target_link_libraries(media_plugin_quicktime ${CARBON_LIBRARY})
-  endif (DARWIN)
-endif (QUICKTIME)
-
diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
deleted file mode 100755
index b43598e4a55fa3663bacddcde57bbbbb5f6e42b8..0000000000000000000000000000000000000000
--- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
+++ /dev/null
@@ -1,1085 +0,0 @@
-/**
- * @file media_plugin_quicktime.cpp
- * @brief QuickTime plugin for LLMedia API plugin system
- *
- * @cond
- * $LicenseInfo:firstyear=2008&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- * @endcond
- */
-
-#include "linden_common.h"
-
-#include "llgl.h"
- 
-#include "llplugininstance.h"
-#include "llpluginmessage.h"
-#include "llpluginmessageclasses.h"
-#include "media_plugin_base.h"
- 
-#if LL_QUICKTIME_ENABLED
- 
-#if defined(LL_DARWIN)
-#include <QuickTime/QuickTime.h>
-#elif defined(LL_WINDOWS)
-#include "llwin32headers.h"
-#include "MacTypes.h"
-#include "QTML.h"
-#include "Movies.h"
-#include "QDoffscreen.h"
-#include "FixMath.h"
-#include "QTLoadLibraryUtils.h"
-#endif
-
-
-
-// TODO: Make sure that the only symbol exported from this library is LLPluginInitEntryPoint
-////////////////////////////////////////////////////////////////////////////////
-//
-class MediaPluginQuickTime : public MediaPluginBase
-{
-public:
-	MediaPluginQuickTime(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data);
-	~MediaPluginQuickTime();
-
-	/* virtual */ void receiveMessage(const char *message_string);
-
-private:
-
-	int mNaturalWidth;
-	int mNaturalHeight;
-	Movie mMovieHandle;
-	GWorldPtr mGWorldHandle;
-	ComponentInstance mMovieController;
-	int mCurVolume;
-	bool mMediaSizeChanging;
-	bool mIsLooping;
-	std::string mMovieTitle;
-	bool mReceivedTitle;
-	const int mMinWidth;
-	const int mMaxWidth;
-	const int mMinHeight;
-	const int mMaxHeight;
-	F64 mPlayRate;
-	std::string mNavigateURL;
-
-	enum ECommand {
-		COMMAND_NONE,
-		COMMAND_STOP,
-		COMMAND_PLAY,
-		COMMAND_FAST_FORWARD,
-		COMMAND_FAST_REWIND,
-		COMMAND_PAUSE,
-		COMMAND_SEEK,
-	};
-	ECommand mCommand;
-
-	// Override this to add current time and duration to the message
-	/*virtual*/ void setDirty(int left, int top, int right, int bottom)
-	{
-		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "updated");
-
-		message.setValueS32("left", left);
-		message.setValueS32("top", top);
-		message.setValueS32("right", right);
-		message.setValueS32("bottom", bottom);
-
-		if(mMovieHandle)
-		{
-			message.setValueReal("current_time", getCurrentTime());
-			message.setValueReal("duration", getDuration());
-			message.setValueReal("current_rate", Fix2X(GetMovieRate(mMovieHandle)));
-		}
-
-		sendMessage(message);
-	}
-
-
-	static Rect rectFromSize(int width, int height)
-	{
-		Rect result;
-
-
-		result.left = 0;
-		result.top = 0;
-		result.right = width;
-		result.bottom = height;
-
-		return result;
-	}
-
-	Fixed getPlayRate(void)
-	{
-		Fixed result;
-		if(mPlayRate == 0.0f)
-		{
-			// Default to the movie's preferred rate
-			result = GetMoviePreferredRate(mMovieHandle);
-			if(result == 0)
-			{
-				// Don't return a 0 play rate, ever.
-				std::cerr << "Movie's preferred rate is 0, forcing to 1.0." << std::endl;
-				result = X2Fix(1.0f);
-			}
-		}
-		else
-		{
-			result = X2Fix(mPlayRate);
-		}
-
-		return result;
-	}
-
-	void load( const std::string url )
-	{
-
-		if ( url.empty() )
-			return;
-
-		// Stop and unload any existing movie before starting another one.
-		unload();
-
-		setStatus(STATUS_LOADING);
-
-		//In case std::string::c_str() makes a copy of the url data,
-		//make sure there is memory to hold it before allocating memory for handle.
-		//if fails, NewHandleClear(...) should return NULL.
-		const char* url_string = url.c_str() ;
-		Handle handle = NewHandleClear( ( Size )( url.length() + 1 ) );
-
-		if ( NULL == handle || noErr != MemError() || NULL == *handle )
-		{
-			setStatus(STATUS_ERROR);
-			return;
-		}
-
-		BlockMove( url_string, *handle, ( Size )( url.length() + 1 ) );
-
-		OSErr err = NewMovieFromDataRef( &mMovieHandle, newMovieActive | newMovieDontInteractWithUser | newMovieAsyncOK | newMovieIdleImportOK, nil, handle, URLDataHandlerSubType );
-		DisposeHandle( handle );
-		if ( noErr != err )
-		{
-			setStatus(STATUS_ERROR);
-			return;
-		};
-		
-		mNavigateURL = url;
-		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_begin");
-		message.setValue("uri", mNavigateURL);
-		sendMessage(message);
-
-		// do pre-roll actions (typically fired for streaming movies but not always)
-		PrePrerollMovie( mMovieHandle, 0, getPlayRate(), moviePrePrerollCompleteCallback, ( void * )this );
-
-		Rect movie_rect = rectFromSize(mWidth, mHeight);
-
-		// make a new movie controller
-		mMovieController = NewMovieController( mMovieHandle, &movie_rect, mcNotVisible | mcTopLeftMovie );
-
-		// movie controller
-		MCSetActionFilterWithRefCon( mMovieController, mcActionFilterCallBack, ( long )this );
-
-		SetMoviePlayHints( mMovieHandle, hintsAllowDynamicResize, hintsAllowDynamicResize );
-
-		// function that gets called when a frame is drawn
-		SetMovieDrawingCompleteProc( mMovieHandle, movieDrawingCallWhenChanged, movieDrawingCompleteCallback, ( long )this );
-
-		setStatus(STATUS_LOADED);
-
-		sizeChanged();
-	};
-
-	bool unload()
-	{
-		// new movie and have to get title again
-		mReceivedTitle = false;
-
-		if ( mMovieHandle )
-		{
-			StopMovie( mMovieHandle );
-			if ( mMovieController )
-			{
-				MCMovieChanged( mMovieController, mMovieHandle );
-			};
-		};
-
-		if ( mMovieController )
-		{
-			MCSetActionFilterWithRefCon( mMovieController, NULL, (long)this );
-			DisposeMovieController( mMovieController );
-			mMovieController = NULL;
-		};
-
-		if ( mMovieHandle )
-		{
-			SetMovieDrawingCompleteProc( mMovieHandle, movieDrawingCallWhenChanged, nil, ( long )this );
-			DisposeMovie( mMovieHandle );
-			mMovieHandle = NULL;
-		};
-
-        mGWorldHandle = NULL;
-        
-		setStatus(STATUS_NONE);
-
-		return true;
-	}
-
-	bool navigateTo( const std::string url )
-	{
-		unload();
-		load( url );
-
-		return true;
-	};
-
-	bool sizeChanged()
-	{
-		if ( ! mMovieHandle )
-			return false;
-
-		// Check to see whether the movie's natural size has updated
-		{
-			int width, height;
-			getMovieNaturalSize(&width, &height);
-			if((width != 0) && (height != 0) && ((width != mNaturalWidth) || (height != mNaturalHeight)))
-			{
-				mNaturalWidth = width;
-				mNaturalHeight = height;
-
-				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_request");
-				message.setValue("name", mTextureSegmentName);
-				message.setValueS32("width", width);
-				message.setValueS32("height", height);
-				sendMessage(message);
-				//std::cerr << "<--- Sending size change request to application with name: " << mTextureSegmentName << " - size is " << width << " x " << height << std::endl;
-			}
-		}
-        
-
-		// sanitize destination size
-		Rect dest_rect = rectFromSize(mWidth, mHeight);
-
-		// media depth won't change
-		int depth_bits = mDepth * 8;
-		long rowbytes = mDepth * mTextureWidth;
-
-		if(mPixels != NULL)
-		{
-			// We have pixels.  Set up a GWorld pointing at the texture.
-			OSErr result = QTNewGWorldFromPtr( &mGWorldHandle, depth_bits, &dest_rect, NULL, NULL, 0, (Ptr)mPixels, rowbytes);
-			if ( noErr != result )
-			{
-				// TODO: unrecoverable??  throw exception?  return something?
-				return false;
-			}
-		}
-		else
-		{
-			// We don't have pixels. Create a fake GWorld we can point the movie at when it's not safe to render normally.
-			Rect tempRect = rectFromSize(1, 1);
-			OSErr result = QTNewGWorld( &mGWorldHandle, depth_bits, &tempRect, NULL, NULL, 0);
-			if ( noErr != result )
-			{
-				// TODO: unrecoverable??  throw exception?  return something?
-				return false;
-			}
-		}
-
-		SetMovieGWorld( mMovieHandle, mGWorldHandle, NULL );
-        
-		// Set up the movie display matrix
-		{
-			// scale movie to fit rect and invert vertically to match opengl image format
-			MatrixRecord transform;
-			SetIdentityMatrix( &transform );	// transforms are additive so start from identify matrix
-			double scaleX = (double) mWidth / mNaturalWidth;
-			double scaleY = -1.0 * (double) mHeight / mNaturalHeight;
-			double centerX = mWidth / 2.0;
-			double centerY = mHeight / 2.0;
-			ScaleMatrix( &transform, X2Fix( scaleX ), X2Fix( scaleY ), X2Fix( centerX ), X2Fix( centerY ) );
-			SetMovieMatrix( mMovieHandle, &transform );
-		}
-
-		// update movie controller
-		if ( mMovieController )
-		{
-			MCSetControllerPort( mMovieController, mGWorldHandle );
-			MCPositionController( mMovieController, &dest_rect, &dest_rect,
-								  mcTopLeftMovie | mcPositionDontInvalidate );
-			MCMovieChanged( mMovieController, mMovieHandle );
-		}
-
-
-		// Emit event with size change so the calling app knows about it too
-		// TODO:
-		//LLMediaEvent event( this );
-		//mEventEmitter.update( &LLMediaObserver::onMediaSizeChange, event );
-
-		return true;
-	}
-	static Boolean mcActionFilterCallBack( MovieController mc, short action, void *params, long ref )
-	{
-		Boolean result = false;
-
-		MediaPluginQuickTime* self = ( MediaPluginQuickTime* )ref;
-
-		switch( action )
-		{
-			// handle window resizing
-			case mcActionControllerSizeChanged:
-				// Ensure that the movie draws correctly at the new size
-				self->sizeChanged();
-				break;
-
-			// Block any movie controller actions that open URLs.
-			case mcActionLinkToURL:
-			case mcActionGetNextURL:
-			case mcActionLinkToURLExtended:
-				// Prevent the movie controller from handling the message
-				result = true;
-				break;
-
-			default:
-				break;
-		};
-
-		return result;
-	};
-
-	static OSErr movieDrawingCompleteCallback( Movie call_back_movie, long ref )
-	{
-		MediaPluginQuickTime* self = ( MediaPluginQuickTime* )ref;
-
-		// IMPORTANT: typically, a consumer who is observing this event will set a flag
-		// when this event is fired then render later. Be aware that the media stream
-		// can change during this period - dimensions, depth, format etc.
-		//LLMediaEvent event( self );
-//		self->updateQuickTime();
-		// TODO ^^^
-
-
-		if ( self->mWidth > 0 && self->mHeight > 0 )
-			self->setDirty( 0, 0, self->mWidth, self->mHeight );
-
-		return noErr;
-	};
-
-	static void moviePrePrerollCompleteCallback( Movie movie, OSErr preroll_err, void *ref )
-	{
-		MediaPluginQuickTime* self = ( MediaPluginQuickTime* )ref;
-
-		// TODO:
-		//LLMediaEvent event( self );
-		//self->mEventEmitter.update( &LLMediaObserver::onMediaPreroll, event );
-		
-		// Send a "navigate complete" event.
-		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete");
-		message.setValue("uri", self->mNavigateURL);
-		message.setValueS32("result_code", 200);
-		message.setValue("result_string", "OK");
-		self->sendMessage(message);
-	};
-
-
-	void rewind()
-	{
-		GoToBeginningOfMovie( mMovieHandle );
-		MCMovieChanged( mMovieController, mMovieHandle );
-	};
-
-	bool processState()
-	{
-		if ( mCommand == COMMAND_PLAY )
-		{
-			if ( mStatus == STATUS_LOADED || mStatus == STATUS_PAUSED || mStatus == STATUS_PLAYING || mStatus == STATUS_DONE )
-			{
-				long state = GetMovieLoadState( mMovieHandle );
-
-				if ( state >= kMovieLoadStatePlaythroughOK )
-				{
-					// if the movie is at the end (generally because it reached it naturally)
-					// and we play is requested, jump back to the start of the movie.
-					// note: this is different from having loop flag set.
-					if ( IsMovieDone( mMovieHandle ) )
-					{
-						Fixed rate = X2Fix( 0.0 );
-						MCDoAction( mMovieController, mcActionPlay, (void*)rate );
-						rewind();
-					};
-
-					MCDoAction( mMovieController, mcActionPrerollAndPlay, (void*)getPlayRate() );
-					MCDoAction( mMovieController, mcActionSetVolume, (void*)mCurVolume );
-					setStatus(STATUS_PLAYING);
-					mCommand = COMMAND_NONE;
-				};
-			};
-		}
-		else
-		if ( mCommand == COMMAND_STOP )
-		{
-			if ( mStatus == STATUS_PLAYING || mStatus == STATUS_PAUSED || mStatus == STATUS_DONE )
-			{
-				if ( GetMovieLoadState( mMovieHandle ) >= kMovieLoadStatePlaythroughOK )
-				{
-					Fixed rate = X2Fix( 0.0 );
-					MCDoAction( mMovieController, mcActionPlay, (void*)rate );
-					rewind();
-
-					setStatus(STATUS_LOADED);
-					mCommand = COMMAND_NONE;
-				};
-			};
-		}
-		else
-		if ( mCommand == COMMAND_PAUSE )
-		{
-			if ( mStatus == STATUS_PLAYING )
-			{
-				if ( GetMovieLoadState( mMovieHandle ) >= kMovieLoadStatePlaythroughOK )
-				{
-					Fixed rate = X2Fix( 0.0 );
-					MCDoAction( mMovieController, mcActionPlay, (void*)rate );
-					setStatus(STATUS_PAUSED);
-					mCommand = COMMAND_NONE;
-				};
-			};
-		};
-
-		return true;
-	};
-
-	void play(F64 rate)
-	{
-		mPlayRate = rate;
-		mCommand = COMMAND_PLAY;
-	};
-
-	void stop()
-	{
-		mCommand = COMMAND_STOP;
-	};
-
-	void pause()
-	{
-		mCommand = COMMAND_PAUSE;
-	};
-
-	void getMovieNaturalSize(int *movie_width, int *movie_height)
-	{
-		Rect rect;
-
-		GetMovieNaturalBoundsRect( mMovieHandle, &rect );
-
-		int width  = ( rect.right - rect.left );
-		int height = ( rect.bottom - rect.top );
-
-		// make sure width and height fall in valid range
-		if ( width < mMinWidth )
-			width = mMinWidth;
-
-		if ( width > mMaxWidth )
-			width = mMaxWidth;
-
-		if ( height < mMinHeight )
-			height = mMinHeight;
-
-		if ( height > mMaxHeight )
-			height = mMaxHeight;
-
-		// return the new rect
-		*movie_width = width;
-		*movie_height = height;
-	}
-
-	void updateQuickTime(int milliseconds)
-	{
-		if ( ! mMovieHandle )
-			return;
-
-		if ( ! mMovieController )
-			return;
-
-		// this wasn't required in 1.xx viewer but we have to manually 
-		// work the Windows message pump now
-		#if defined( LL_WINDOWS )
-		MSG msg;
-		while ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) 
-		{
-			GetMessage( &msg, NULL, 0, 0 );
-			TranslateMessage( &msg );
-			DispatchMessage( &msg );
-		};
-		#endif
-
-		MCIdle( mMovieController );
-
-		if ( ! mGWorldHandle )
-			return;
-
-		if ( mMediaSizeChanging )
-			return;
-
-		// update state machine
-		processState();
-
-		// see if title arrived and if so, update member variable with contents
-		checkTitle();
-		
-		// QT call to see if we are at the end - can't do with controller
-		if ( IsMovieDone( mMovieHandle ) )
-		{
-			// special code for looping - need to rewind at the end of the movie
-			if ( mIsLooping )
-			{
-				// go back to start
-				rewind();
-
-				if ( mMovieController )
-				{
-					// kick off new play
-					MCDoAction( mMovieController, mcActionPrerollAndPlay, (void*)getPlayRate() );
-
-					// set the volume
-					MCDoAction( mMovieController, mcActionSetVolume, (void*)mCurVolume );
-				};
-			}
-			else
-			{
-				if(mStatus == STATUS_PLAYING)
-				{
-					setStatus(STATUS_DONE);
-				}
-			}
-		}
-
-	};
-    
-	void seek( F64 time )
-	{
-		if ( mMovieController )
-		{
-			TimeRecord when;
-			when.scale = GetMovieTimeScale( mMovieHandle );
-			when.base = 0;
-
-			// 'time' is in (floating point) seconds.  The timebase time will be in 'units', where
-			// there are 'scale' units per second.
-			SInt64 raw_time = ( SInt64 )( time * (double)( when.scale ) );
-
-			when.value.hi = ( SInt32 )( raw_time >> 32 );
-			when.value.lo = ( SInt32 )( ( raw_time & 0x00000000FFFFFFFF ) );
-
-			MCDoAction( mMovieController, mcActionGoToTime, &when );
-		};
-	};
-
-	F64 getLoadedDuration() 	  	 
-	{ 	  	 
-		TimeValue duration; 	  	 
-		if(GetMaxLoadedTimeInMovie( mMovieHandle, &duration ) != noErr) 	  	 
-		{ 	  	 
-			// If GetMaxLoadedTimeInMovie returns an error, return the full duration of the movie. 	  	 
-			duration = GetMovieDuration( mMovieHandle ); 	  	 
-		} 	  	 
-		TimeValue scale = GetMovieTimeScale( mMovieHandle ); 	  	 
-
-		return (F64)duration / (F64)scale; 	  	 
-	}; 	  	 
-
-	F64 getDuration()
-	{
-		TimeValue duration = GetMovieDuration( mMovieHandle );
-		TimeValue scale = GetMovieTimeScale( mMovieHandle );
-
-		return (F64)duration / (F64)scale;
-	};
-
-	F64 getCurrentTime()
-	{
-		TimeValue curr_time = GetMovieTime( mMovieHandle, 0 );
-		TimeValue scale = GetMovieTimeScale( mMovieHandle );
-
-		return (F64)curr_time / (F64)scale;
-	};
-
-	void setVolume( F64 volume )
-	{
-		mCurVolume = (short)(volume * ( double ) 0x100 );
-
-		if ( mMovieController )
-		{
-			MCDoAction( mMovieController, mcActionSetVolume, (void*)mCurVolume );
-		};
-	};
-
-	////////////////////////////////////////////////////////////////////////////////
-	//
-	void update(int milliseconds = 0)
-	{
-		updateQuickTime(milliseconds);
-	};
-
-	////////////////////////////////////////////////////////////////////////////////
-	//
-	void mouseDown( int x, int y )
-	{
-	};
-
-	////////////////////////////////////////////////////////////////////////////////
-	//
-	void mouseUp( int x, int y )
-	{
-	};
-
-	////////////////////////////////////////////////////////////////////////////////
-	//
-	void mouseMove( int x, int y )
-	{
-	};
-
-	////////////////////////////////////////////////////////////////////////////////
-	//
-	void keyPress( unsigned char key )
-	{
-	};
-
-	////////////////////////////////////////////////////////////////////////////////
-	// Grab movie title into mMovieTitle - should be called repeatedly
-	// until it returns true since movie title takes a while to become 
-	// available.
-	const bool getMovieTitle()
-	{
-		// grab meta data from movie
-		QTMetaDataRef media_data_ref;
-		OSErr result = QTCopyMovieMetaData( mMovieHandle, &media_data_ref );
-		if ( noErr != result ) 
-			return false;
-
-		// look up "Display Name" in meta data
-		OSType meta_data_key = kQTMetaDataCommonKeyDisplayName;
-		QTMetaDataItem item = kQTMetaDataItemUninitialized;
-		result = (OSErr)QTMetaDataGetNextItem( media_data_ref, kQTMetaDataStorageFormatWildcard, 
-										0, kQTMetaDataKeyFormatCommon, 
-										(const UInt8 *)&meta_data_key, 
-										sizeof( meta_data_key ), &item );
-		if ( noErr != result ) 
-			return false;
-
-		// find the size of the title
-		ByteCount size;
-		result = (OSErr)QTMetaDataGetItemValue( media_data_ref, item, NULL, 0, &size );
-		if ( noErr != result || size <= 0 /*|| size > 1024  FIXME: arbitrary limit */ ) 
-			return false;
-
-		// allocate some space and grab it
-		UInt8* item_data = new UInt8[ size + 1 ];
-		memset( item_data, 0, ( size + 1 ) * sizeof( UInt8 ) );
-		result = (OSErr)QTMetaDataGetItemValue( media_data_ref, item, item_data, size, NULL );
-		if ( noErr != result ) 
-		{
-			delete [] item_data;
-			return false;
-		};
-
-		// save it
-		if ( strlen( (char*)item_data ) )
-			mMovieTitle = std::string( (char* )item_data );
-		else
-			mMovieTitle = "";
-
-		// clean up
-		delete [] item_data;
-
-		return true;
-	};
-
-	// called regularly to see if title changed
-	void checkTitle()
-	{
-		// we did already receive title so keep checking
-		if ( ! mReceivedTitle )
-		{
-			// grab title from movie meta data
-			if ( getMovieTitle() )
-			{
-				// pass back to host application
-				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "name_text");
-				message.setValue("name", mMovieTitle );
-				sendMessage( message );
-
-				// stop looking once we find a title for this movie.
-				// TODO: this may to be reset if movie title changes
-				// during playback but this is okay for now
-				mReceivedTitle = true;
-			};
-		};
-	};
-};
-
-MediaPluginQuickTime::MediaPluginQuickTime(
-	LLPluginInstance::sendMessageFunction host_send_func,
-	void *host_user_data ) :
-	MediaPluginBase(host_send_func, host_user_data),
-	mMinWidth( 0 ),
-	mMaxWidth( 2048 ),
-	mMinHeight( 0 ),
-	mMaxHeight( 2048 )
-{
-//	std::cerr << "MediaPluginQuickTime constructor" << std::endl;
-
-	mNaturalWidth = -1;
-	mNaturalHeight = -1;
-	mMovieHandle = 0;
-	mGWorldHandle = 0;
-	mMovieController = 0;
-	mCurVolume = 0x99;
-	mMediaSizeChanging = false;
-	mIsLooping = false;
-	mMovieTitle = std::string();
-	mReceivedTitle = false;
-	mCommand = COMMAND_NONE;
-	mPlayRate = 0.0f;
-	mStatus = STATUS_NONE;
-}
-
-MediaPluginQuickTime::~MediaPluginQuickTime()
-{
-//	std::cerr << "MediaPluginQuickTime destructor" << std::endl;
-
-	ExitMovies();
-
-#ifdef LL_WINDOWS
-	TerminateQTML();
-//		std::cerr << "QuickTime closing down" << std::endl;
-#endif
-}
-
-
-void MediaPluginQuickTime::receiveMessage(const char *message_string)
-{
-//	std::cerr << "MediaPluginQuickTime::receiveMessage: received message: \"" << message_string << "\"" << std::endl;
-	LLPluginMessage message_in;
-
-	if(message_in.parse(message_string) >= 0)
-	{
-		std::string message_class = message_in.getClass();
-		std::string message_name = message_in.getName();
-		if(message_class == LLPLUGIN_MESSAGE_CLASS_BASE)
-		{
-			if(message_name == "init")
-			{
-				LLPluginMessage message("base", "init_response");
-				LLSD versions = LLSD::emptyMap();
-				versions[LLPLUGIN_MESSAGE_CLASS_BASE] = LLPLUGIN_MESSAGE_CLASS_BASE_VERSION;
-				versions[LLPLUGIN_MESSAGE_CLASS_MEDIA] = LLPLUGIN_MESSAGE_CLASS_MEDIA_VERSION;
-				// Normally a plugin would only specify one of these two subclasses, but this is a demo...
-				versions[LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME] = LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME_VERSION;
-				message.setValueLLSD("versions", versions);
-
-				#ifdef LL_WINDOWS
-
-				// QuickTime 7.6.4 has an issue (that was not present in 7.6.2) with initializing QuickTime
-				// according to this article: http://lists.apple.com/archives/QuickTime-API/2009/Sep/msg00097.html
-				// The solution presented there appears to work.
-				QTLoadLibrary("qtcf.dll");
-
-				// main initialization for QuickTime - only required on Windows
-				OSErr result = InitializeQTML( 0L );
-				if ( result != noErr )
-				{
-					//TODO: If no QT on Windows, this fails - respond accordingly.
-				}
-				else
-				{
-					//std::cerr << "QuickTime initialized" << std::endl;
-				};
-				#endif
-
-				// required for both Windows and Mac
-				EnterMovies();
-
-				std::string plugin_version = "QuickTime media plugin, QuickTime version ";
-
-				long version = 0;
-				Gestalt( gestaltQuickTimeVersion, &version );
-				std::ostringstream codec( "" );
-				codec << std::hex << version << std::dec;
-				plugin_version += codec.str();
-				message.setValue("plugin_version", plugin_version);
-				sendMessage(message);
-			}
-			else if(message_name == "idle")
-			{
-				// no response is necessary here.
-				F64 time = message_in.getValueReal("time");
-
-				// Convert time to milliseconds for update()
-				update((int)(time * 1000.0f));
-			}
-			else if(message_name == "cleanup")
-			{
-				// TODO: clean up here
-			}
-			else if(message_name == "shm_added")
-			{
-				SharedSegmentInfo info;
-				info.mAddress = message_in.getValuePointer("address");
-				info.mSize = (size_t)message_in.getValueS32("size");
-				std::string name = message_in.getValue("name");
-//				std::cerr << "MediaPluginQuickTime::receiveMessage: shared memory added, name: " << name
-//					<< ", size: " << info.mSize
-//					<< ", address: " << info.mAddress
-//					<< std::endl;
-
-				mSharedSegments.insert(SharedSegmentMap::value_type(name, info));
-
-			}
-			else if(message_name == "shm_remove")
-			{
-				std::string name = message_in.getValue("name");
-
-//				std::cerr << "MediaPluginQuickTime::receiveMessage: shared memory remove, name = " << name << std::endl;
-
-				SharedSegmentMap::iterator iter = mSharedSegments.find(name);
-				if(iter != mSharedSegments.end())
-				{
-					if(mPixels == iter->second.mAddress)
-					{
-						// This is the currently active pixel buffer.  Make sure we stop drawing to it.
-						mPixels = NULL;
-						mTextureSegmentName.clear();
-
-						// Make sure the movie GWorld is no longer pointed at the shared segment.
-						sizeChanged();
-					}
-					mSharedSegments.erase(iter);
-				}
-				else
-				{
-//					std::cerr << "MediaPluginQuickTime::receiveMessage: unknown shared memory region!" << std::endl;
-				}
-
-				// Send the response so it can be cleaned up.
-				LLPluginMessage message("base", "shm_remove_response");
-				message.setValue("name", name);
-				sendMessage(message);
-			}
-			else
-			{
-//				std::cerr << "MediaPluginQuickTime::receiveMessage: unknown base message: " << message_name << std::endl;
-			}
-		}
-		else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA)
-		{
-			if(message_name == "init")
-			{
-				// This is the media init message -- all necessary data for initialization should have been received.
-
-				// Plugin gets to decide the texture parameters to use.
-				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "texture_params");
-				#if defined(LL_WINDOWS)
-					// Values for Windows
-					mDepth = 3;
-					message.setValueU32("format", GL_RGB);
-					message.setValueU32("type", GL_UNSIGNED_BYTE);
-
-					// We really want to pad the texture width to a multiple of 32 bytes, but since we're using 3-byte pixels, it doesn't come out even.
-					// Padding to a multiple of 3*32 guarantees it'll divide out properly.
-					message.setValueU32("padding", 32 * 3);
-				#else
-					// Values for Mac
-					mDepth = 4;
-					message.setValueU32("format", GL_BGRA_EXT);
-					#ifdef __BIG_ENDIAN__
-						message.setValueU32("type", GL_UNSIGNED_INT_8_8_8_8_REV );
-					#else
-						message.setValueU32("type", GL_UNSIGNED_INT_8_8_8_8);
-					#endif
-
-					// Pad texture width to a multiple of 32 bytes, to line up with cache lines.
-					message.setValueU32("padding", 32);
-				#endif
-				message.setValueS32("depth", mDepth);
-				message.setValueU32("internalformat", GL_RGB);
-
-                // note this apparently only has an effect when media is opened in 2D browser. 
-                // see https://jira.secondlife.com/browse/BUG-18252 - media flipped in 2D so flipping it back.
-				message.setValueBoolean("coords_opengl", true);	// true == use OpenGL-style coordinates, false == (0,0) is upper left.
-				message.setValueBoolean("allow_downsample", true);
-				sendMessage(message);
-			}
-			else if(message_name == "size_change")
-			{
-				std::string name = message_in.getValue("name");
-				S32 width = message_in.getValueS32("width");
-				S32 height = message_in.getValueS32("height");
-				S32 texture_width = message_in.getValueS32("texture_width");
-				S32 texture_height = message_in.getValueS32("texture_height");
-
-				//std::cerr << "---->Got size change instruction from application with name: " << name << " - size is " << width << " x " << height << std::endl;
-
-				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response");
-				message.setValue("name", name);
-				message.setValueS32("width", width);
-				message.setValueS32("height", height);
-				message.setValueS32("texture_width", texture_width);
-				message.setValueS32("texture_height", texture_height);
-				sendMessage(message);
-
-				if(!name.empty())
-				{
-					// Find the shared memory region with this name
-					SharedSegmentMap::iterator iter = mSharedSegments.find(name);
-					if(iter != mSharedSegments.end())
-					{
-//						std::cerr << "%%% Got size change, new size is " << width << " by " << height << std::endl;
-//						std::cerr << "%%%%  texture size is " << texture_width << " by " << texture_height << std::endl;
-
-						mPixels = (unsigned char*)iter->second.mAddress;
-						mTextureSegmentName = name;
-						mWidth = width;
-						mHeight = height;
-
-						mTextureWidth = texture_width;
-						mTextureHeight = texture_height;
-
-						mMediaSizeChanging = false;
-
-						sizeChanged();
-
-						update();
-					};
-				};
-			}
-			else if(message_name == "load_uri")
-			{
-				std::string uri = message_in.getValue("uri");
-				load( uri );
-				sendStatus();
-			}
-			else if(message_name == "mouse_event")
-			{
-				std::string event = message_in.getValue("event");
-				S32 x = message_in.getValueS32("x");
-				S32 y = message_in.getValueS32("y");
-
-				if(event == "down")
-				{
-					mouseDown(x, y);
-				}
-				else if(event == "up")
-				{
-					mouseUp(x, y);
-				}
-				else if(event == "move")
-				{
-					mouseMove(x, y);
-				};
-			};
-		}
-		else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME)
-		{
-			if(message_name == "stop")
-			{
-				stop();
-			}
-			else if(message_name == "start")
-			{
-				F64 rate = 0.0;
-				if(message_in.hasValue("rate"))
-				{
-					rate = message_in.getValueReal("rate");
-				}
-				play(rate);
-			}
-			else if(message_name == "pause")
-			{
-				pause();
-			}
-			else if(message_name == "seek")
-			{
-				F64 time = message_in.getValueReal("time");
-				seek(time);
-			}
-			else if(message_name == "set_loop")
-			{
-				bool loop = message_in.getValueBoolean("loop");
-				mIsLooping = loop;
-			}
-			else if(message_name == "set_volume")
-			{
-				F64 volume = message_in.getValueReal("volume");
-				setVolume(volume);
-			}
-		}
-		else
-		{
-//			std::cerr << "MediaPluginQuickTime::receiveMessage: unknown message class: " << message_class << std::endl;
-		};
-	};
-}
-
-int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data)
-{
-	MediaPluginQuickTime *self = new MediaPluginQuickTime(host_send_func, host_user_data);
-	*plugin_send_func = MediaPluginQuickTime::staticReceiveMessage;
-	*plugin_user_data = (void*)self;
-
-	return 0;
-}
-
-#else // LL_QUICKTIME_ENABLED
-
-// Stubbed-out class with constructor/destructor (necessary or windows linker
-// will just think its dead code and optimize it all out)
-class MediaPluginQuickTime : public MediaPluginBase
-{
-public:
-	MediaPluginQuickTime(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data);
-	~MediaPluginQuickTime();
-	/* virtual */ void receiveMessage(const char *message_string);
-};
-
-MediaPluginQuickTime::MediaPluginQuickTime(
-	LLPluginInstance::sendMessageFunction host_send_func,
-	void *host_user_data ) :
-	MediaPluginBase(host_send_func, host_user_data)
-{
-    // no-op
-}
-
-MediaPluginQuickTime::~MediaPluginQuickTime()
-{
-    // no-op
-}
-
-void MediaPluginQuickTime::receiveMessage(const char *message_string)
-{
-    // no-op
-}
-
-// We're building without quicktime enabled.  Just refuse to initialize.
-int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data)
-{
-    return -1;
-}
-
-#endif // LL_QUICKTIME_ENABLED
diff --git a/indra/media_plugins/winmmshim/CMakeLists.txt b/indra/media_plugins/winmmshim/CMakeLists.txt
deleted file mode 100644
index 6890589892eef183a14b709242dcbff815010bb5..0000000000000000000000000000000000000000
--- a/indra/media_plugins/winmmshim/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- cmake -*-
-
-project(winmm_shim)
-
-### winmm_shim
-# *HACK - override msvcrt implementation (intialized on 00-Common) to be
-# statically linked for winmm.dll this relies on vc taking the last flag on
-# the command line
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
-
-set(winmm_shim_SOURCE_FILES
-    forwarding_api.cpp
-    winmm_shim.cpp
-    )
-
-set(winmm_shim_HEADER_FILES
-    forwarding_api.h
-    winmm.def
-    )
-
-list(APPEND winmm_shim_SOURCE_FILES ${winmm_shim_HEADER_FILES})
-
-add_library(winmm_shim
-    SHARED
-    ${winmm_shim_SOURCE_FILES}
-)
-
-if (WINDOWS)
-  set_target_properties(
-    winmm_shim
-    PROPERTIES
-    LINK_FLAGS "/MANIFEST:NO"
-    OUTPUT_NAME "winmm"
-    )
-endif (WINDOWS)
diff --git a/indra/media_plugins/winmmshim/forwarding_api.cpp b/indra/media_plugins/winmmshim/forwarding_api.cpp
deleted file mode 100644
index 33f0675028188bc924f7a75eef849c7740fac549..0000000000000000000000000000000000000000
--- a/indra/media_plugins/winmmshim/forwarding_api.cpp
+++ /dev/null
@@ -1,1627 +0,0 @@
-/** 
- * @file forwarding_api.cpp
- * @brief forwards winmm API calls to real winmm.dll
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include "forwarding_api.h"
-
-CloseDriver_type CloseDriver_orig;
-OpenDriver_type OpenDriver_orig;
-SendDriverMessage_type SendDriverMessage_orig;
-DrvGetModuleHandle_type DrvGetModuleHandle_orig;
-GetDriverModuleHandle_type GetDriverModuleHandle_orig;
-DefDriverProc_type DefDriverProc_orig;
-DriverCallback_type DriverCallback_orig;
-mmsystemGetVersion_type mmsystemGetVersion_orig;
-sndPlaySoundA_type sndPlaySoundA_orig;
-sndPlaySoundW_type sndPlaySoundW_orig;
-PlaySoundA_type PlaySoundA_orig;
-PlaySoundW_type PlaySoundW_orig;
-waveOutGetNumDevs_type waveOutGetNumDevs_orig;
-waveOutGetDevCapsA_type waveOutGetDevCapsA_orig;
-waveOutGetDevCapsW_type waveOutGetDevCapsW_orig;
-waveOutGetVolume_type waveOutGetVolume_orig;
-waveOutSetVolume_type waveOutSetVolume_orig;
-waveOutGetErrorTextA_type waveOutGetErrorTextA_orig;
-waveOutGetErrorTextW_type waveOutGetErrorTextW_orig;
-waveOutOpen_type waveOutOpen_orig;
-waveOutClose_type waveOutClose_orig;
-waveOutPrepareHeader_type waveOutPrepareHeader_orig;
-waveOutUnprepareHeader_type waveOutUnprepareHeader_orig;
-waveOutWrite_type waveOutWrite_orig;
-waveOutPause_type waveOutPause_orig;
-waveOutRestart_type waveOutRestart_orig;
-waveOutReset_type waveOutReset_orig;
-waveOutBreakLoop_type waveOutBreakLoop_orig;
-waveOutGetPosition_type waveOutGetPosition_orig;
-waveOutGetPitch_type waveOutGetPitch_orig;
-waveOutSetPitch_type waveOutSetPitch_orig;
-waveOutGetPlaybackRate_type waveOutGetPlaybackRate_orig;
-waveOutSetPlaybackRate_type waveOutSetPlaybackRate_orig;
-waveOutGetID_type waveOutGetID_orig;
-waveOutMessage_type waveOutMessage_orig;
-waveInGetNumDevs_type waveInGetNumDevs_orig;
-waveInGetDevCapsA_type waveInGetDevCapsA_orig;
-waveInGetDevCapsW_type waveInGetDevCapsW_orig;
-waveInGetErrorTextA_type waveInGetErrorTextA_orig;
-waveInGetErrorTextW_type waveInGetErrorTextW_orig;
-waveInOpen_type waveInOpen_orig;
-waveInClose_type waveInClose_orig;
-waveInPrepareHeader_type waveInPrepareHeader_orig;
-waveInUnprepareHeader_type waveInUnprepareHeader_orig;
-waveInAddBuffer_type waveInAddBuffer_orig;
-waveInStart_type waveInStart_orig;
-waveInStop_type waveInStop_orig;
-waveInReset_type waveInReset_orig;
-waveInGetPosition_type waveInGetPosition_orig;
-waveInGetID_type waveInGetID_orig;
-waveInMessage_type waveInMessage_orig;
-midiOutGetNumDevs_type midiOutGetNumDevs_orig;
-midiStreamOpen_type midiStreamOpen_orig;
-midiStreamClose_type midiStreamClose_orig;
-midiStreamProperty_type midiStreamProperty_orig;
-midiStreamPosition_type midiStreamPosition_orig;
-midiStreamOut_type midiStreamOut_orig;
-midiStreamPause_type midiStreamPause_orig;
-midiStreamRestart_type midiStreamRestart_orig;
-midiStreamStop_type midiStreamStop_orig;
-midiConnect_type midiConnect_orig;
-midiDisconnect_type midiDisconnect_orig;
-midiOutGetDevCapsA_type midiOutGetDevCapsA_orig;
-midiOutGetDevCapsW_type midiOutGetDevCapsW_orig;
-midiOutGetVolume_type midiOutGetVolume_orig;
-midiOutSetVolume_type midiOutSetVolume_orig;
-midiOutGetErrorTextA_type midiOutGetErrorTextA_orig;
-midiOutGetErrorTextW_type midiOutGetErrorTextW_orig;
-midiOutOpen_type midiOutOpen_orig;
-midiOutClose_type midiOutClose_orig;
-midiOutPrepareHeader_type midiOutPrepareHeader_orig;
-midiOutUnprepareHeader_type midiOutUnprepareHeader_orig;
-midiOutShortMsg_type midiOutShortMsg_orig;
-midiOutLongMsg_type midiOutLongMsg_orig;
-midiOutReset_type midiOutReset_orig;
-midiOutCachePatches_type midiOutCachePatches_orig;
-midiOutCacheDrumPatches_type midiOutCacheDrumPatches_orig;
-midiOutGetID_type midiOutGetID_orig;
-midiOutMessage_type midiOutMessage_orig;
-midiInGetNumDevs_type midiInGetNumDevs_orig;
-midiInGetDevCapsA_type midiInGetDevCapsA_orig;
-midiInGetDevCapsW_type midiInGetDevCapsW_orig;
-midiInGetErrorTextA_type midiInGetErrorTextA_orig;
-midiInGetErrorTextW_type midiInGetErrorTextW_orig;
-midiInOpen_type midiInOpen_orig;
-midiInClose_type midiInClose_orig;
-midiInPrepareHeader_type midiInPrepareHeader_orig;
-midiInUnprepareHeader_type midiInUnprepareHeader_orig;
-midiInAddBuffer_type midiInAddBuffer_orig;
-midiInStart_type midiInStart_orig;
-midiInStop_type midiInStop_orig;
-midiInReset_type midiInReset_orig;
-midiInGetID_type midiInGetID_orig;
-midiInMessage_type midiInMessage_orig;
-auxGetNumDevs_type auxGetNumDevs_orig;
-auxGetDevCapsA_type auxGetDevCapsA_orig;
-auxGetDevCapsW_type auxGetDevCapsW_orig;
-auxSetVolume_type auxSetVolume_orig;
-auxGetVolume_type auxGetVolume_orig;
-auxOutMessage_type auxOutMessage_orig;
-mixerGetNumDevs_type mixerGetNumDevs_orig;
-mixerGetDevCapsA_type mixerGetDevCapsA_orig;
-mixerGetDevCapsW_type mixerGetDevCapsW_orig;
-mixerOpen_type mixerOpen_orig;
-mixerClose_type mixerClose_orig;
-mixerMessage_type mixerMessage_orig;
-mixerGetLineInfoA_type mixerGetLineInfoA_orig;
-mixerGetLineInfoW_type mixerGetLineInfoW_orig;
-mixerGetID_type mixerGetID_orig;
-mixerGetLineControlsA_type mixerGetLineControlsA_orig;
-mixerGetLineControlsW_type mixerGetLineControlsW_orig;
-mixerGetControlDetailsA_type mixerGetControlDetailsA_orig;
-mixerGetControlDetailsW_type mixerGetControlDetailsW_orig;
-mixerSetControlDetails_type mixerSetControlDetails_orig;
-mmGetCurrentTask_type mmGetCurrentTask_orig;
-mmTaskBlock_type mmTaskBlock_orig;
-mmTaskCreate_type mmTaskCreate_orig;
-mmTaskSignal_type mmTaskSignal_orig;
-mmTaskYield_type mmTaskYield_orig;
-timeGetSystemTime_type timeGetSystemTime_orig;
-timeGetTime_type timeGetTime_orig;
-timeSetEvent_type timeSetEvent_orig;
-timeKillEvent_type timeKillEvent_orig;
-timeGetDevCaps_type timeGetDevCaps_orig;
-timeBeginPeriod_type timeBeginPeriod_orig;
-timeEndPeriod_type timeEndPeriod_orig;
-joyGetNumDevs_type joyGetNumDevs_orig;
-joyConfigChanged_type joyConfigChanged_orig;
-joyGetDevCapsA_type joyGetDevCapsA_orig;
-joyGetDevCapsW_type joyGetDevCapsW_orig;
-joyGetPos_type joyGetPos_orig;
-joyGetPosEx_type joyGetPosEx_orig;
-joyGetThreshold_type joyGetThreshold_orig;
-joyReleaseCapture_type joyReleaseCapture_orig;
-joySetCapture_type joySetCapture_orig;
-joySetThreshold_type joySetThreshold_orig;
-mmioStringToFOURCCA_type mmioStringToFOURCCA_orig;
-mmioStringToFOURCCW_type mmioStringToFOURCCW_orig;
-mmioInstallIOProcA_type mmioInstallIOProcA_orig;
-mmioInstallIOProcW_type mmioInstallIOProcW_orig;
-mmioOpenA_type mmioOpenA_orig;
-mmioOpenW_type mmioOpenW_orig;
-mmioRenameA_type mmioRenameA_orig;
-mmioRenameW_type mmioRenameW_orig;
-mmioClose_type mmioClose_orig;
-mmioRead_type mmioRead_orig;
-mmioWrite_type mmioWrite_orig;
-mmioSeek_type mmioSeek_orig;
-mmioGetInfo_type mmioGetInfo_orig;
-mmioSetInfo_type mmioSetInfo_orig;
-mmioSetBuffer_type mmioSetBuffer_orig;
-mmioFlush_type mmioFlush_orig;
-mmioAdvance_type mmioAdvance_orig;
-mmioSendMessage_type mmioSendMessage_orig;
-mmioDescend_type mmioDescend_orig;
-mmioAscend_type mmioAscend_orig;
-mmioCreateChunk_type mmioCreateChunk_orig;
-mciSendCommandA_type mciSendCommandA_orig;
-mciSendCommandW_type mciSendCommandW_orig;
-mciSendStringA_type mciSendStringA_orig;
-mciSendStringW_type mciSendStringW_orig;
-mciGetDeviceIDA_type mciGetDeviceIDA_orig;
-mciGetDeviceIDW_type mciGetDeviceIDW_orig;
-mciGetDeviceIDFromElementIDA_type mciGetDeviceIDFromElementIDA_orig;
-mciGetDeviceIDFromElementIDW_type mciGetDeviceIDFromElementIDW_orig;
-mciGetDriverData_type mciGetDriverData_orig;
-mciGetErrorStringA_type mciGetErrorStringA_orig;
-mciGetErrorStringW_type mciGetErrorStringW_orig;
-mciSetDriverData_type mciSetDriverData_orig;
-mciDriverNotify_type mciDriverNotify_orig;
-mciDriverYield_type mciDriverYield_orig;
-mciSetYieldProc_type mciSetYieldProc_orig;
-mciFreeCommandResource_type mciFreeCommandResource_orig;
-mciGetCreatorTask_type mciGetCreatorTask_orig;
-mciGetYieldProc_type mciGetYieldProc_orig;
-mciLoadCommandResource_type mciLoadCommandResource_orig;
-mciExecute_type mciExecute_orig;
-
-// grab pointers to function calls in the real DLL
-void init_function_pointers(HMODULE winmm_handle)
-{	
-	CloseDriver_orig = (CloseDriver_type)::GetProcAddress(winmm_handle, "CloseDriver");
-	OpenDriver_orig = (OpenDriver_type)::GetProcAddress(winmm_handle, "OpenDriver");
-	SendDriverMessage_orig = (SendDriverMessage_type)::GetProcAddress(winmm_handle, "SendDriverMessage");
-	DrvGetModuleHandle_orig = (DrvGetModuleHandle_type)::GetProcAddress(winmm_handle, "DrvGetModuleHandle");
-	GetDriverModuleHandle_orig = (GetDriverModuleHandle_type)::GetProcAddress(winmm_handle, "GetDriverModuleHandle");
-	DefDriverProc_orig = (DefDriverProc_type)::GetProcAddress(winmm_handle, "DefDriverProc");
-	DriverCallback_orig = (DriverCallback_type)::GetProcAddress(winmm_handle, "DriverCallback");
-	mmsystemGetVersion_orig = (mmsystemGetVersion_type)::GetProcAddress(winmm_handle, "mmsystemGetVersion");
-	sndPlaySoundA_orig = (sndPlaySoundA_type)::GetProcAddress(winmm_handle, "sndPlaySoundA");
-	sndPlaySoundW_orig = (sndPlaySoundW_type)::GetProcAddress(winmm_handle, "sndPlaySoundW");
-	PlaySoundA_orig = (PlaySoundA_type)::GetProcAddress(winmm_handle, "PlaySoundA");
-	PlaySoundW_orig = (PlaySoundW_type)::GetProcAddress(winmm_handle, "PlaySoundW");
-	waveOutGetNumDevs_orig = (waveOutGetNumDevs_type)::GetProcAddress(winmm_handle, "waveOutGetNumDevs");
-	waveOutGetDevCapsA_orig = (waveOutGetDevCapsA_type)::GetProcAddress(winmm_handle, "waveOutGetDevCapsA");
-	waveOutGetDevCapsW_orig = (waveOutGetDevCapsW_type)::GetProcAddress(winmm_handle, "waveOutGetDevCapsW");
-	waveOutGetVolume_orig = (waveOutGetVolume_type)::GetProcAddress(winmm_handle, "waveOutGetVolume");
-	waveOutSetVolume_orig = (waveOutSetVolume_type)::GetProcAddress(winmm_handle, "waveOutSetVolume");
-	waveOutGetErrorTextA_orig = (waveOutGetErrorTextA_type)::GetProcAddress(winmm_handle, "waveOutGetErrorTextA");
-	waveOutGetErrorTextW_orig = (waveOutGetErrorTextW_type)::GetProcAddress(winmm_handle, "waveOutGetErrorTextW");
-	waveOutOpen_orig = (waveOutOpen_type)::GetProcAddress(winmm_handle, "waveOutOpen");
-	waveOutClose_orig = (waveOutClose_type)::GetProcAddress(winmm_handle, "waveOutClose");
-	waveOutPrepareHeader_orig = (waveOutPrepareHeader_type)::GetProcAddress(winmm_handle, "waveOutPrepareHeader");
-	waveOutUnprepareHeader_orig = (waveOutUnprepareHeader_type)::GetProcAddress(winmm_handle, "waveOutUnprepareHeader");
-	waveOutWrite_orig = (waveOutWrite_type)::GetProcAddress(winmm_handle, "waveOutWrite");
-	waveOutPause_orig = (waveOutPause_type)::GetProcAddress(winmm_handle, "waveOutPause");
-	waveOutRestart_orig = (waveOutRestart_type)::GetProcAddress(winmm_handle, "waveOutRestart");
-	waveOutReset_orig = (waveOutReset_type)::GetProcAddress(winmm_handle, "waveOutReset");
-	waveOutBreakLoop_orig = (waveOutBreakLoop_type)::GetProcAddress(winmm_handle, "waveOutBreakLoop");
-	waveOutGetPosition_orig = (waveOutGetPosition_type)::GetProcAddress(winmm_handle, "waveOutGetPosition");
-	waveOutGetPitch_orig = (waveOutGetPitch_type)::GetProcAddress(winmm_handle, "waveOutGetPitch");
-	waveOutSetPitch_orig = (waveOutSetPitch_type)::GetProcAddress(winmm_handle, "waveOutSetPitch");
-	waveOutGetPlaybackRate_orig = (waveOutGetPlaybackRate_type)::GetProcAddress(winmm_handle, "waveOutGetPlaybackRate");
-	waveOutSetPlaybackRate_orig = (waveOutSetPlaybackRate_type)::GetProcAddress(winmm_handle, "waveOutSetPlaybackRate");
-	waveOutGetID_orig = (waveOutGetID_type)::GetProcAddress(winmm_handle, "waveOutGetID");
-	waveOutMessage_orig = (waveOutMessage_type)::GetProcAddress(winmm_handle, "waveOutMessage");
-	waveInGetNumDevs_orig = (waveInGetNumDevs_type)::GetProcAddress(winmm_handle, "waveInGetNumDevs");
-	waveInGetDevCapsA_orig = (waveInGetDevCapsA_type)::GetProcAddress(winmm_handle, "waveInGetDevCapsA");
-	waveInGetDevCapsW_orig = (waveInGetDevCapsW_type)::GetProcAddress(winmm_handle, "waveInGetDevCapsW");
-	waveInGetErrorTextA_orig = (waveInGetErrorTextA_type)::GetProcAddress(winmm_handle, "waveInGetErrorTextA");
-	waveInGetErrorTextW_orig = (waveInGetErrorTextW_type)::GetProcAddress(winmm_handle, "waveInGetErrorTextW");
-	waveInOpen_orig = (waveInOpen_type)::GetProcAddress(winmm_handle, "waveInOpen");
-	waveInClose_orig = (waveInClose_type)::GetProcAddress(winmm_handle, "waveInClose");
-	waveInPrepareHeader_orig = (waveInPrepareHeader_type)::GetProcAddress(winmm_handle, "waveInPrepareHeader");
-	waveInUnprepareHeader_orig = (waveInUnprepareHeader_type)::GetProcAddress(winmm_handle, "waveInUnprepareHeader");
-	waveInAddBuffer_orig = (waveInAddBuffer_type)::GetProcAddress(winmm_handle, "waveInAddBuffer");
-	waveInStart_orig = (waveInStart_type)::GetProcAddress(winmm_handle, "waveInStart");
-	waveInStop_orig = (waveInStop_type)::GetProcAddress(winmm_handle, "waveInStop");
-	waveInReset_orig = (waveInReset_type)::GetProcAddress(winmm_handle, "waveInReset");
-	waveInGetPosition_orig = (waveInGetPosition_type)::GetProcAddress(winmm_handle, "waveInGetPosition");
-	waveInGetID_orig = (waveInGetID_type)::GetProcAddress(winmm_handle, "waveInGetID");
-	waveInMessage_orig = (waveInMessage_type)::GetProcAddress(winmm_handle, "waveInMessage");
-	midiOutGetNumDevs_orig = (midiOutGetNumDevs_type)::GetProcAddress(winmm_handle, "midiOutGetNumDevs");
-	midiStreamOpen_orig = (midiStreamOpen_type)::GetProcAddress(winmm_handle, "midiStreamOpen");
-	midiStreamClose_orig = (midiStreamClose_type)::GetProcAddress(winmm_handle, "midiStreamClose");
-	midiStreamProperty_orig = (midiStreamProperty_type)::GetProcAddress(winmm_handle, "midiStreamProperty");
-	midiStreamPosition_orig = (midiStreamPosition_type)::GetProcAddress(winmm_handle, "midiStreamPosition");
-	midiStreamOut_orig = (midiStreamOut_type)::GetProcAddress(winmm_handle, "midiStreamOut");
-	midiStreamPause_orig = (midiStreamPause_type)::GetProcAddress(winmm_handle, "midiStreamPause");
-	midiStreamRestart_orig = (midiStreamRestart_type)::GetProcAddress(winmm_handle, "midiStreamRestart");
-	midiStreamStop_orig = (midiStreamStop_type)::GetProcAddress(winmm_handle, "midiStreamStop");
-	midiConnect_orig = (midiConnect_type)::GetProcAddress(winmm_handle, "midiConnect");
-	midiDisconnect_orig = (midiDisconnect_type)::GetProcAddress(winmm_handle, "midiDisconnect");
-	midiOutGetDevCapsA_orig = (midiOutGetDevCapsA_type)::GetProcAddress(winmm_handle, "midiOutGetDevCapsA");
-	midiOutGetDevCapsW_orig = (midiOutGetDevCapsW_type)::GetProcAddress(winmm_handle, "midiOutGetDevCapsW");
-	midiOutGetVolume_orig = (midiOutGetVolume_type)::GetProcAddress(winmm_handle, "midiOutGetVolume");
-	midiOutSetVolume_orig = (midiOutSetVolume_type)::GetProcAddress(winmm_handle, "midiOutSetVolume");
-	midiOutGetErrorTextA_orig = (midiOutGetErrorTextA_type)::GetProcAddress(winmm_handle, "midiOutGetErrorTextA");
-	midiOutGetErrorTextW_orig = (midiOutGetErrorTextW_type)::GetProcAddress(winmm_handle, "midiOutGetErrorTextW");
-	midiOutOpen_orig = (midiOutOpen_type)::GetProcAddress(winmm_handle, "midiOutOpen");
-	midiOutClose_orig = (midiOutClose_type)::GetProcAddress(winmm_handle, "midiOutClose");
-	midiOutPrepareHeader_orig = (midiOutPrepareHeader_type)::GetProcAddress(winmm_handle, "midiOutPrepareHeader");
-	midiOutUnprepareHeader_orig = (midiOutUnprepareHeader_type)::GetProcAddress(winmm_handle, "midiOutUnprepareHeader");
-	midiOutShortMsg_orig = (midiOutShortMsg_type)::GetProcAddress(winmm_handle, "midiOutShortMsg");
-	midiOutLongMsg_orig = (midiOutLongMsg_type)::GetProcAddress(winmm_handle, "midiOutLongMsg");
-	midiOutReset_orig = (midiOutReset_type)::GetProcAddress(winmm_handle, "midiOutReset");
-	midiOutCachePatches_orig = (midiOutCachePatches_type)::GetProcAddress(winmm_handle, "midiOutCachePatches");
-	midiOutCacheDrumPatches_orig = (midiOutCacheDrumPatches_type)::GetProcAddress(winmm_handle, "midiOutCacheDrumPatches");
-	midiOutGetID_orig = (midiOutGetID_type)::GetProcAddress(winmm_handle, "midiOutGetID");
-	midiOutMessage_orig = (midiOutMessage_type)::GetProcAddress(winmm_handle, "midiOutMessage");
-	midiInGetNumDevs_orig = (midiInGetNumDevs_type)::GetProcAddress(winmm_handle, "midiInGetNumDevs");
-	midiInGetDevCapsA_orig = (midiInGetDevCapsA_type)::GetProcAddress(winmm_handle, "midiInGetDevCapsA");
-	midiInGetDevCapsW_orig = (midiInGetDevCapsW_type)::GetProcAddress(winmm_handle, "midiInGetDevCapsW");
-	midiInGetErrorTextA_orig = (midiInGetErrorTextA_type)::GetProcAddress(winmm_handle, "midiInGetErrorTextA");
-	midiInGetErrorTextW_orig = (midiInGetErrorTextW_type)::GetProcAddress(winmm_handle, "midiInGetErrorTextW");
-	midiInOpen_orig = (midiInOpen_type)::GetProcAddress(winmm_handle, "midiInOpen");
-	midiInClose_orig = (midiInClose_type)::GetProcAddress(winmm_handle, "midiInClose");
-	midiInPrepareHeader_orig = (midiInPrepareHeader_type)::GetProcAddress(winmm_handle, "midiInPrepareHeader");
-	midiInUnprepareHeader_orig = (midiInUnprepareHeader_type)::GetProcAddress(winmm_handle, "midiInUnprepareHeader");
-	midiInAddBuffer_orig = (midiInAddBuffer_type)::GetProcAddress(winmm_handle, "midiInAddBuffer");
-	midiInStart_orig = (midiInStart_type)::GetProcAddress(winmm_handle, "midiInStart");
-	midiInStop_orig = (midiInStop_type)::GetProcAddress(winmm_handle, "midiInStop");
-	midiInReset_orig = (midiInReset_type)::GetProcAddress(winmm_handle, "midiInReset");
-	midiInGetID_orig = (midiInGetID_type)::GetProcAddress(winmm_handle, "midiInGetID");
-	midiInMessage_orig = (midiInMessage_type)::GetProcAddress(winmm_handle, "midiInMessage");
-	auxGetNumDevs_orig = (auxGetNumDevs_type)::GetProcAddress(winmm_handle, "auxGetNumDevs");
-	auxGetDevCapsA_orig = (auxGetDevCapsA_type)::GetProcAddress(winmm_handle, "auxGetDevCapsA");
-	auxGetDevCapsW_orig = (auxGetDevCapsW_type)::GetProcAddress(winmm_handle, "auxGetDevCapsW");
-	auxSetVolume_orig = (auxSetVolume_type)::GetProcAddress(winmm_handle, "auxSetVolume");
-	auxGetVolume_orig = (auxGetVolume_type)::GetProcAddress(winmm_handle, "auxGetVolume");
-	auxOutMessage_orig = (auxOutMessage_type)::GetProcAddress(winmm_handle, "auxOutMessage");
-	mixerGetNumDevs_orig = (mixerGetNumDevs_type)::GetProcAddress(winmm_handle, "mixerGetNumDevs");
-	mixerGetDevCapsA_orig = (mixerGetDevCapsA_type)::GetProcAddress(winmm_handle, "mixerGetDevCapsA");
-	mixerGetDevCapsW_orig = (mixerGetDevCapsW_type)::GetProcAddress(winmm_handle, "mixerGetDevCapsW");
-	mixerOpen_orig = (mixerOpen_type)::GetProcAddress(winmm_handle, "mixerOpen");
-	mixerClose_orig = (mixerClose_type)::GetProcAddress(winmm_handle, "mixerClose");
-	mixerMessage_orig = (mixerMessage_type)::GetProcAddress(winmm_handle, "mixerMessage");
-	mixerGetLineInfoA_orig = (mixerGetLineInfoA_type)::GetProcAddress(winmm_handle, "mixerGetLineInfoA");
-	mixerGetLineInfoW_orig = (mixerGetLineInfoW_type)::GetProcAddress(winmm_handle, "mixerGetLineInfoW");
-	mixerGetID_orig = (mixerGetID_type)::GetProcAddress(winmm_handle, "mixerGetID");
-	mixerGetLineControlsA_orig = (mixerGetLineControlsA_type)::GetProcAddress(winmm_handle, "mixerGetLineControlsA");
-	mixerGetLineControlsW_orig = (mixerGetLineControlsW_type)::GetProcAddress(winmm_handle, "mixerGetLineControlsW");
-	mixerGetControlDetailsA_orig = (mixerGetControlDetailsA_type)::GetProcAddress(winmm_handle, "mixerGetControlDetailsA");
-	mixerGetControlDetailsW_orig = (mixerGetControlDetailsW_type)::GetProcAddress(winmm_handle, "mixerGetControlDetailsW");
-	mixerSetControlDetails_orig = (mixerSetControlDetails_type)::GetProcAddress(winmm_handle, "mixerSetControlDetails");
-	mmGetCurrentTask_orig = (mmGetCurrentTask_type)::GetProcAddress(winmm_handle, "mmGetCurrentTask");
-	mmTaskBlock_orig = (mmTaskBlock_type)::GetProcAddress(winmm_handle, "mmTaskBlock");
-	mmTaskCreate_orig = (mmTaskCreate_type)::GetProcAddress(winmm_handle, "mmTaskCreate");
-	mmTaskSignal_orig = (mmTaskSignal_type)::GetProcAddress(winmm_handle, "mmTaskSignal");
-	mmTaskYield_orig = (mmTaskYield_type)::GetProcAddress(winmm_handle, "mmTaskYield");
-	timeGetSystemTime_orig = (timeGetSystemTime_type)::GetProcAddress(winmm_handle, "timeGetSystemTime");
-	timeGetTime_orig = (timeGetTime_type)::GetProcAddress(winmm_handle, "timeGetTime");
-	timeSetEvent_orig = (timeSetEvent_type)::GetProcAddress(winmm_handle, "timeSetEvent");
-	timeKillEvent_orig = (timeKillEvent_type)::GetProcAddress(winmm_handle, "timeKillEvent");
-	timeGetDevCaps_orig = (timeGetDevCaps_type)::GetProcAddress(winmm_handle, "timeGetDevCaps");
-	timeBeginPeriod_orig = (timeBeginPeriod_type)::GetProcAddress(winmm_handle, "timeBeginPeriod");
-	timeEndPeriod_orig = (timeEndPeriod_type)::GetProcAddress(winmm_handle, "timeEndPeriod");
-	joyGetNumDevs_orig = (joyGetNumDevs_type)::GetProcAddress(winmm_handle, "joyGetNumDevs");
-	joyConfigChanged_orig = (joyConfigChanged_type)::GetProcAddress(winmm_handle, "joyConfigChanged");
-	joyGetDevCapsA_orig = (joyGetDevCapsA_type)::GetProcAddress(winmm_handle, "joyGetDevCapsA");
-	joyGetDevCapsW_orig = (joyGetDevCapsW_type)::GetProcAddress(winmm_handle, "joyGetDevCapsW");
-	joyGetPos_orig = (joyGetPos_type)::GetProcAddress(winmm_handle, "joyGetPos");
-	joyGetPosEx_orig = (joyGetPosEx_type)::GetProcAddress(winmm_handle, "joyGetPosEx");
-	joyGetThreshold_orig = (joyGetThreshold_type)::GetProcAddress(winmm_handle, "joyGetThreshold");
-	joyReleaseCapture_orig = (joyReleaseCapture_type)::GetProcAddress(winmm_handle, "joyReleaseCapture");
-	joySetCapture_orig = (joySetCapture_type)::GetProcAddress(winmm_handle, "joySetCapture");
-	joySetThreshold_orig = (joySetThreshold_type)::GetProcAddress(winmm_handle, "joySetThreshold");
-	mciDriverNotify_orig = (mciDriverNotify_type)::GetProcAddress(winmm_handle, "mciDriverNotify");
-	mciDriverYield_orig = (mciDriverYield_type)::GetProcAddress(winmm_handle, "mciDriverYield");
-	mmioStringToFOURCCA_orig = (mmioStringToFOURCCA_type)::GetProcAddress(winmm_handle, "mmioStringToFOURCCA");
-	mmioStringToFOURCCW_orig = (mmioStringToFOURCCW_type)::GetProcAddress(winmm_handle, "mmioStringToFOURCCW");
-	mmioInstallIOProcA_orig = (mmioInstallIOProcA_type)::GetProcAddress(winmm_handle, "mmioInstallIOProcA");
-	mmioInstallIOProcW_orig = (mmioInstallIOProcW_type)::GetProcAddress(winmm_handle, "mmioInstallIOProcW");
-	mmioOpenA_orig = (mmioOpenA_type)::GetProcAddress(winmm_handle, "mmioOpenA");
-	mmioOpenW_orig = (mmioOpenW_type)::GetProcAddress(winmm_handle, "mmioOpenW");
-	mmioRenameA_orig = (mmioRenameA_type)::GetProcAddress(winmm_handle, "mmioRenameA");
-	mmioRenameW_orig = (mmioRenameW_type)::GetProcAddress(winmm_handle, "mmioRenameW");
-	mmioClose_orig = (mmioClose_type)::GetProcAddress(winmm_handle, "mmioClose");
-	mmioRead_orig = (mmioRead_type)::GetProcAddress(winmm_handle, "mmioRead");
-	mmioWrite_orig = (mmioWrite_type)::GetProcAddress(winmm_handle, "mmioWrite");
-	mmioSeek_orig = (mmioSeek_type)::GetProcAddress(winmm_handle, "mmioSeek");
-	mmioGetInfo_orig = (mmioGetInfo_type)::GetProcAddress(winmm_handle, "mmioGetInfo");
-	mmioSetInfo_orig = (mmioSetInfo_type)::GetProcAddress(winmm_handle, "mmioSetInfo");
-	mmioSetBuffer_orig = (mmioSetBuffer_type)::GetProcAddress(winmm_handle, "mmioSetBuffer");
-	mmioFlush_orig = (mmioFlush_type)::GetProcAddress(winmm_handle, "mmioFlush");
-	mmioAdvance_orig = (mmioAdvance_type)::GetProcAddress(winmm_handle, "mmioAdvance");
-	mmioSendMessage_orig = (mmioSendMessage_type)::GetProcAddress(winmm_handle, "mmioSendMessage");
-	mmioDescend_orig = (mmioDescend_type)::GetProcAddress(winmm_handle, "mmioDescend");
-	mmioAscend_orig = (mmioAscend_type)::GetProcAddress(winmm_handle, "mmioAscend");
-	mmioCreateChunk_orig = (mmioCreateChunk_type)::GetProcAddress(winmm_handle, "mmioCreateChunk");
-	mciSendCommandA_orig = (mciSendCommandA_type)::GetProcAddress(winmm_handle, "mciSendCommandA");
-	mciSendCommandW_orig = (mciSendCommandW_type)::GetProcAddress(winmm_handle, "mciSendCommandW");
-	mciSendStringA_orig = (mciSendStringA_type)::GetProcAddress(winmm_handle, "mciSendStringA");
-	mciSendStringW_orig = (mciSendStringW_type)::GetProcAddress(winmm_handle, "mciSendStringW");
-	mciGetDeviceIDA_orig = (mciGetDeviceIDA_type)::GetProcAddress(winmm_handle, "mciGetDeviceIDA");
-	mciGetDeviceIDW_orig = (mciGetDeviceIDW_type)::GetProcAddress(winmm_handle, "mciGetDeviceIDW");
-	mciGetDeviceIDFromElementIDA_orig = (mciGetDeviceIDFromElementIDA_type)::GetProcAddress(winmm_handle, "mciGetDeviceIDFromElementIDA");
-	mciGetDeviceIDFromElementIDW_orig = (mciGetDeviceIDFromElementIDW_type)::GetProcAddress(winmm_handle, "mciGetDeviceIDFromElementIDW");
-	mciGetDriverData_orig = (mciGetDriverData_type)::GetProcAddress(winmm_handle, "mciGetDriverData");
-	mciGetErrorStringA_orig = (mciGetErrorStringA_type)::GetProcAddress(winmm_handle, "mciGetErrorStringA");
-	mciGetErrorStringW_orig = (mciGetErrorStringW_type)::GetProcAddress(winmm_handle, "mciGetErrorStringW");
-	mciSetDriverData_orig = (mciSetDriverData_type)::GetProcAddress(winmm_handle, "mciSetDriverData");
-	mciSetYieldProc_orig = (mciSetYieldProc_type)::GetProcAddress(winmm_handle, "mciSetYieldProc");
-	mciFreeCommandResource_orig = (mciFreeCommandResource_type)::GetProcAddress(winmm_handle, "mciFreeCommandResource");
-	mciGetCreatorTask_orig = (mciGetCreatorTask_type)::GetProcAddress(winmm_handle, "mciGetCreatorTask");
-	mciGetYieldProc_orig = (mciGetYieldProc_type)::GetProcAddress(winmm_handle, "mciGetYieldProc");
-	mciLoadCommandResource_orig = (mciLoadCommandResource_type)::GetProcAddress(winmm_handle, "mciLoadCommandResource");
-	mciExecute_orig = (mciExecute_type)::GetProcAddress(winmm_handle, "mciExecute");
-}
-
-extern "C" {
-	LRESULT   WINAPI CloseDriver( HDRVR hDriver, LPARAM lParam1, LPARAM lParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"CloseDriver\n");
-		return CloseDriver_orig( hDriver, lParam1, lParam2);
-	}
-
-	HDRVR     WINAPI OpenDriver( LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"OpenDriver\n");
-		return OpenDriver_orig( szDriverName, szSectionName, lParam2);
-	}
-
-	LRESULT   WINAPI SendDriverMessage( HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"SendDriverMessage\n");
-		return SendDriverMessage_orig( hDriver, message, lParam1, lParam2);
-	}
-
-	HMODULE   WINAPI DrvGetModuleHandle( HDRVR hDriver)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"DrvGetModuleHandle\n");
-		return DrvGetModuleHandle_orig( hDriver);
-	}
-
-	HMODULE   WINAPI GetDriverModuleHandle( HDRVR hDriver)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"GetDriverModuleHandle\n");
-		return GetDriverModuleHandle_orig( hDriver);
-	}
-
-	LRESULT   WINAPI DefDriverProc( DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"DefDriverProc\n");
-		return DefDriverProc_orig( dwDriverIdentifier, hdrvr, uMsg, lParam1, lParam2);
-	}
-
-	BOOL WINAPI DriverCallback( DWORD dwCallBack, DWORD dwFlags, HDRVR hdrvr, DWORD msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"DriverCallback\n");
-		return DriverCallback_orig(dwCallBack, dwFlags, hdrvr, msg, dwUser, dwParam1, dwParam2);
-	}
-
-	UINT WINAPI mmsystemGetVersion(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmsystemGetVersion\n");
-		return mmsystemGetVersion_orig();
-	}
-
-	BOOL WINAPI sndPlaySoundA( LPCSTR pszSound, UINT fuSound)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"sndPlaySoundA\n");
-		return sndPlaySoundA_orig( pszSound, fuSound);
-	}
-
-	BOOL WINAPI sndPlaySoundW( LPCWSTR pszSound, UINT fuSound)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"sndPlaySoundW\n");
-		return sndPlaySoundW_orig( pszSound, fuSound);
-	}
-
-	BOOL WINAPI PlaySoundA( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"PlaySoundA\n");
-		return PlaySoundA_orig( pszSound, hmod, fdwSound);
-	}
-
-	BOOL WINAPI PlaySoundW( LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"PlaySoundW\n");
-		return PlaySoundW_orig( pszSound, hmod, fdwSound);
-	}
-
-	UINT WINAPI waveOutGetNumDevs(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetNumDevs\n");
-		return waveOutGetNumDevs_orig();
-	}
-
-	MMRESULT WINAPI waveOutGetDevCapsA( UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetDevCapsA\n");
-		return waveOutGetDevCapsA_orig( uDeviceID, pwoc, cbwoc);
-	}
-
-	MMRESULT WINAPI waveOutGetDevCapsW( UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetDevCapsW\n");
-		return waveOutGetDevCapsW_orig( uDeviceID, pwoc, cbwoc);
-	}
-
-
-	MMRESULT WINAPI waveOutGetVolume( HWAVEOUT hwo, LPDWORD pdwVolume)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetVolume\n");
-		return waveOutGetVolume_orig( hwo, pdwVolume);
-	}
-
-	MMRESULT WINAPI waveOutSetVolume( HWAVEOUT hwo, DWORD dwVolume)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutSetVolume\n");
-		return waveOutSetVolume_orig( hwo, dwVolume);
-	}
-
-	MMRESULT WINAPI waveOutGetErrorTextA( MMRESULT mmrError, LPSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetErrorTextA\n");
-		return waveOutGetErrorTextA_orig( mmrError, pszText, cchText);
-	}
-
-	MMRESULT WINAPI waveOutGetErrorTextW( MMRESULT mmrError, LPWSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetErrorTextW\n");
-		return waveOutGetErrorTextW_orig( mmrError, pszText, cchText);
-	}
-
-	//MMRESULT WINAPI waveOutOpen( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
-	//{
-	//	//OutputDebugString(L"waveOutGetErrorTextW\n");
-	//	return waveOutOpen_orig( phwo, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen);
-	//}
-
-	//MMRESULT WINAPI waveOutClose( HWAVEOUT hwo)
-	//{
-	//	//OutputDebugString(L"waveOutGetErrorTextW\n");
-	//	return waveOutClose_orig( hwo );
-	//}
-
-	MMRESULT WINAPI waveOutPrepareHeader( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutPrepareHeader\n");
-		return waveOutPrepareHeader_orig( hwo, pwh, cbwh);
-	}
-
-	MMRESULT WINAPI waveOutUnprepareHeader( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutUnprepareHeader\n");
-		return waveOutUnprepareHeader_orig( hwo, pwh, cbwh);
-	}
-
-
-	//MMRESULT WINAPI waveOutWrite( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)
-	//{
-	//	//OutputDebugString(L"waveOutUnprepareHeader\n");
-	//	return waveOutWrite_orig( hwo, pwh, cbwh);
-	//}
-
-	MMRESULT WINAPI waveOutPause( HWAVEOUT hwo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutPause\n");
-		return waveOutPause_orig( hwo);
-	}
-
-	MMRESULT WINAPI waveOutRestart( HWAVEOUT hwo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutRestart\n");
-		return waveOutRestart_orig( hwo);
-	}
-
-	MMRESULT WINAPI waveOutReset( HWAVEOUT hwo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutReset\n");
-		return waveOutReset_orig( hwo);
-	}
-
-	MMRESULT WINAPI waveOutBreakLoop( HWAVEOUT hwo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutBreakLoop\n");
-		return waveOutBreakLoop_orig( hwo);
-	}
-
-	MMRESULT WINAPI waveOutGetPosition( HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetPosition\n");
-		return waveOutGetPosition_orig( hwo, pmmt, cbmmt);
-	}
-
-	MMRESULT WINAPI waveOutGetPitch( HWAVEOUT hwo, LPDWORD pdwPitch)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetPitch\n");
-		return waveOutGetPitch_orig( hwo, pdwPitch);
-	}
-
-	MMRESULT WINAPI waveOutSetPitch( HWAVEOUT hwo, DWORD dwPitch)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutSetPitch\n");
-		return waveOutSetPitch_orig( hwo, dwPitch);
-	}
-
-	MMRESULT WINAPI waveOutGetPlaybackRate( HWAVEOUT hwo, LPDWORD pdwRate)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetPlaybackRate\n");
-		return waveOutGetPlaybackRate_orig( hwo, pdwRate);
-	}
-
-	MMRESULT WINAPI waveOutSetPlaybackRate( HWAVEOUT hwo, DWORD dwRate)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutSetPlaybackRate\n");
-		return waveOutSetPlaybackRate_orig( hwo, dwRate);
-	}
-
-	MMRESULT WINAPI waveOutGetID( HWAVEOUT hwo, LPUINT puDeviceID)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutGetID\n");
-		return waveOutGetID_orig( hwo, puDeviceID);
-	}
-
-	MMRESULT WINAPI waveOutMessage( HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveOutMessage\n");
-		return waveOutMessage_orig( hwo, uMsg, dw1, dw2);
-	}
-
-	UINT WINAPI waveInGetNumDevs(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInGetNumDevs\n");
-		return waveInGetNumDevs_orig();
-	}
-
-	MMRESULT WINAPI waveInGetDevCapsA( UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInGetDevCapsA\n");
-		return waveInGetDevCapsA_orig( uDeviceID, pwic, cbwic);
-	}
-
-	MMRESULT WINAPI waveInGetDevCapsW( UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInGetDevCapsW\n");
-		return waveInGetDevCapsW_orig( uDeviceID, pwic, cbwic);
-	}
-
-	MMRESULT WINAPI waveInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInGetErrorTextA\n");
-		return waveInGetErrorTextA_orig(mmrError, pszText, cchText);
-	}
-
-	MMRESULT WINAPI waveInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInGetErrorTextW\n");
-		return waveInGetErrorTextW_orig(mmrError, pszText, cchText);
-	}
-
-	MMRESULT WINAPI waveInOpen( LPHWAVEIN phwi, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInOpen\n");
-		return waveInOpen_orig(phwi, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen);
-	}
-
-	MMRESULT WINAPI waveInClose( HWAVEIN hwi)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInClose\n");
-		return waveInClose_orig( hwi);
-	}
-
-	MMRESULT WINAPI waveInPrepareHeader( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInPrepareHeader\n");
-		return waveInPrepareHeader_orig( hwi, pwh, cbwh);
-	}
-
-	MMRESULT WINAPI waveInUnprepareHeader( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInUnprepareHeader\n");
-		return waveInUnprepareHeader_orig( hwi, pwh, cbwh);
-	}
-
-	MMRESULT WINAPI waveInAddBuffer( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInAddBuffer\n");
-		return waveInAddBuffer_orig( hwi, pwh, cbwh);
-	}
-
-	MMRESULT WINAPI waveInStart( HWAVEIN hwi)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInStart\n");
-		return waveInStart_orig( hwi);
-	}
-
-	MMRESULT WINAPI waveInStop( HWAVEIN hwi)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInStop\n");
-		return waveInStop_orig(hwi);
-	}
-
-	MMRESULT WINAPI waveInReset( HWAVEIN hwi)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInReset\n");
-		return waveInReset_orig(hwi);
-	}
-
-	MMRESULT WINAPI waveInGetPosition( HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInGetPosition\n");
-		return waveInGetPosition_orig( hwi, pmmt, cbmmt);
-	}
-
-	MMRESULT WINAPI waveInGetID( HWAVEIN hwi, LPUINT puDeviceID)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInGetID\n");
-		return waveInGetID_orig( hwi, puDeviceID);
-	}
-
-	MMRESULT WINAPI waveInMessage( HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"waveInMessage\n");
-		return waveInMessage_orig( hwi, uMsg, dw1, dw2);
-	}
-
-	UINT WINAPI midiOutGetNumDevs(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutGetNumDevs\n");
-		return midiOutGetNumDevs_orig();
-	}
-
-	MMRESULT WINAPI midiStreamOpen( LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiStreamOpen\n");
-		return midiStreamOpen_orig( phms, puDeviceID, cMidi, dwCallback, dwInstance, fdwOpen);
-	}
-
-	MMRESULT WINAPI midiStreamClose( HMIDISTRM hms)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiStreamClose\n");
-		return midiStreamClose_orig( hms);
-	}
-
-	MMRESULT WINAPI midiStreamProperty( HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiStreamProperty\n");
-		return midiStreamProperty_orig( hms, lppropdata, dwProperty);
-	}
-
-	MMRESULT WINAPI midiStreamPosition( HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiStreamPosition\n");
-		return midiStreamPosition_orig( hms, lpmmt, cbmmt);
-	}
-
-	MMRESULT WINAPI midiStreamOut( HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiStreamOut\n");
-		return midiStreamOut_orig( hms, pmh, cbmh);
-	}
-
-	MMRESULT WINAPI midiStreamPause( HMIDISTRM hms)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiStreamPause\n");
-		return midiStreamPause_orig( hms);
-	}
-
-	MMRESULT WINAPI midiStreamRestart( HMIDISTRM hms)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiStreamRestart\n");
-		return midiStreamRestart_orig( hms);
-	}
-
-	MMRESULT WINAPI midiStreamStop( HMIDISTRM hms)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiStreamStop\n");
-		return midiStreamStop_orig( hms);
-	}
-
-	MMRESULT WINAPI midiConnect( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiConnect\n");
-		return midiConnect_orig( hmi, hmo, pReserved);
-	}
-
-	MMRESULT WINAPI midiDisconnect( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiDisconnect\n");
-		return midiDisconnect_orig( hmi, hmo, pReserved);
-	}
-
-	MMRESULT WINAPI midiOutGetDevCapsA( UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutGetDevCapsA\n");
-		return midiOutGetDevCapsA_orig( uDeviceID, pmoc, cbmoc);
-	}
-
-	MMRESULT WINAPI midiOutGetDevCapsW( UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutGetDevCapsW\n");
-		return midiOutGetDevCapsW_orig( uDeviceID, pmoc, cbmoc);
-	}
-
-	MMRESULT WINAPI midiOutGetVolume( HMIDIOUT hmo, LPDWORD pdwVolume)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutGetVolume\n");
-		return midiOutGetVolume_orig( hmo, pdwVolume);
-	}
-
-	MMRESULT WINAPI midiOutSetVolume( HMIDIOUT hmo, DWORD dwVolume)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutSetVolume\n");
-		return midiOutSetVolume_orig( hmo, dwVolume);
-	}
-
-	MMRESULT WINAPI midiOutGetErrorTextA( MMRESULT mmrError, LPSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutGetErrorTextA\n");
-		return midiOutGetErrorTextA_orig( mmrError, pszText, cchText);
-	}
-
-	MMRESULT WINAPI midiOutGetErrorTextW( MMRESULT mmrError, LPWSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutGetErrorTextW\n");
-		return midiOutGetErrorTextW_orig( mmrError, pszText, cchText);
-	}
-
-	MMRESULT WINAPI midiOutOpen( LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutOpen\n");
-		return midiOutOpen_orig(phmo, uDeviceID, dwCallback, dwInstance, fdwOpen);
-	}
-
-	MMRESULT WINAPI midiOutClose( HMIDIOUT hmo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutClose\n");
-		return midiOutClose_orig( hmo);
-	}
-
-	MMRESULT WINAPI midiOutPrepareHeader( HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutPrepareHeader\n");
-		return midiOutPrepareHeader_orig( hmo, pmh, cbmh);
-	}
-
-	MMRESULT WINAPI midiOutUnprepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutUnprepareHeader\n");
-		return midiOutUnprepareHeader_orig(hmo, pmh, cbmh);
-	}
-
-	MMRESULT WINAPI midiOutShortMsg( HMIDIOUT hmo, DWORD dwMsg)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutShortMsg\n");
-		return midiOutShortMsg_orig( hmo, dwMsg);
-	}
-
-	MMRESULT WINAPI midiOutLongMsg(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutLongMsg\n");
-		return midiOutLongMsg_orig(hmo, pmh, cbmh);
-	}
-
-	MMRESULT WINAPI midiOutReset( HMIDIOUT hmo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutReset\n");
-		return midiOutReset_orig( hmo);
-	}
-
-	MMRESULT WINAPI midiOutCachePatches( HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutCachePatches\n");
-		return midiOutCachePatches_orig( hmo, uBank, pwpa, fuCache);
-	}
-
-	MMRESULT WINAPI midiOutCacheDrumPatches( HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutCacheDrumPatches\n");
-		return midiOutCacheDrumPatches_orig( hmo, uPatch, pwkya, fuCache);
-	}
-
-	MMRESULT WINAPI midiOutGetID( HMIDIOUT hmo, LPUINT puDeviceID)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutGetID\n");
-		return midiOutGetID_orig( hmo, puDeviceID);
-	}
-
-	MMRESULT WINAPI midiOutMessage( HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiOutMessage\n");
-		return midiOutMessage_orig( hmo, uMsg, dw1, dw2);
-	}
-
-	UINT WINAPI midiInGetNumDevs(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInGetNumDevs\n");
-		return midiInGetNumDevs_orig();
-	}
-
-	MMRESULT WINAPI midiInGetDevCapsA( UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInGetDevCapsA\n");
-		return midiInGetDevCapsA_orig( uDeviceID, pmic, cbmic);
-	}
-
-	MMRESULT WINAPI midiInGetDevCapsW( UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInGetDevCapsW\n");
-		return midiInGetDevCapsW_orig( uDeviceID, pmic, cbmic);
-	}
-
-	MMRESULT WINAPI midiInGetErrorTextA( MMRESULT mmrError, LPSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInGetErrorTextA\n");
-		return midiInGetErrorTextA_orig( mmrError, pszText, cchText);
-	}
-
-	MMRESULT WINAPI midiInGetErrorTextW( MMRESULT mmrError, LPWSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInGetErrorTextW\n");
-		return midiInGetErrorTextW_orig( mmrError, pszText, cchText);
-	}
-
-	MMRESULT WINAPI midiInOpen( LPHMIDIIN phmi, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInOpen\n");
-		return midiInOpen_orig(phmi, uDeviceID, dwCallback, dwInstance, fdwOpen);
-	}
-
-	MMRESULT WINAPI midiInClose( HMIDIIN hmi)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInClose\n");
-		return midiInClose_orig( hmi);
-	}
-
-	MMRESULT WINAPI midiInPrepareHeader( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInPrepareHeader\n");
-		return midiInPrepareHeader_orig( hmi, pmh, cbmh);
-	}
-
-	MMRESULT WINAPI midiInUnprepareHeader( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInUnprepareHeader\n");
-		return midiInUnprepareHeader_orig( hmi, pmh, cbmh);
-	}
-
-	MMRESULT WINAPI midiInAddBuffer( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInAddBuffer\n");
-		return midiInAddBuffer_orig( hmi, pmh, cbmh);
-	}
-
-	MMRESULT WINAPI midiInStart( HMIDIIN hmi)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInStart\n");
-		return midiInStart_orig( hmi);
-	}
-
-	MMRESULT WINAPI midiInStop( HMIDIIN hmi)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInStop\n");
-		return midiInStop_orig(hmi);
-	}
-
-	MMRESULT WINAPI midiInReset( HMIDIIN hmi)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInReset\n");
-		return midiInReset_orig( hmi);
-	}
-
-	MMRESULT WINAPI midiInGetID( HMIDIIN hmi, LPUINT puDeviceID)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInGetID\n");
-		return midiInGetID_orig( hmi, puDeviceID);
-	}
-
-	MMRESULT WINAPI midiInMessage( HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"midiInMessage\n");
-		return midiInMessage_orig( hmi, uMsg, dw1, dw2);
-	}
-
-	UINT WINAPI auxGetNumDevs(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"auxGetNumDevs\n");
-		return auxGetNumDevs_orig();
-	}
-
-	MMRESULT WINAPI auxGetDevCapsA( UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"auxGetDevCapsA\n");
-		return auxGetDevCapsA_orig( uDeviceID, pac, cbac);
-	}
-
-	MMRESULT WINAPI auxGetDevCapsW( UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"auxGetDevCapsW\n");
-		return auxGetDevCapsW_orig( uDeviceID, pac, cbac);
-	}
-
-	MMRESULT WINAPI auxSetVolume( UINT uDeviceID, DWORD dwVolume)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"auxSetVolume\n");
-		return auxSetVolume_orig( uDeviceID, dwVolume);
-	}
-
-	MMRESULT WINAPI auxGetVolume( UINT uDeviceID, LPDWORD pdwVolume)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"auxGetVolume\n");
-		return auxGetVolume_orig( uDeviceID, pdwVolume);
-	}
-
-	MMRESULT WINAPI auxOutMessage( UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"auxOutMessage\n");
-		return auxOutMessage_orig( uDeviceID, uMsg, dw1, dw2);
-	}
-
-	UINT WINAPI mixerGetNumDevs(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetNumDevs\n");
-		return mixerGetNumDevs_orig();
-	}
-
-	MMRESULT WINAPI mixerGetDevCapsA( UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetDevCapsA\n");
-		return mixerGetDevCapsA_orig( uMxId, pmxcaps, cbmxcaps);
-	}
-
-	MMRESULT WINAPI mixerGetDevCapsW( UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetDevCapsW\n");
-		return mixerGetDevCapsW_orig( uMxId, pmxcaps, cbmxcaps);
-	}
-
-	MMRESULT WINAPI mixerOpen( LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerOpen\n");
-		return mixerOpen_orig( phmx, uMxId, dwCallback, dwInstance, fdwOpen);
-	}
-
-	MMRESULT WINAPI mixerClose( HMIXER hmx)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerClose\n");
-		return mixerClose_orig( hmx);
-	}
-
-	DWORD WINAPI mixerMessage( HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerMessage\n");
-		return mixerMessage_orig( hmx, uMsg, dwParam1, dwParam2);
-	}
-
-	MMRESULT WINAPI mixerGetLineInfoA( HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetLineInfoA\n");
-		return mixerGetLineInfoA_orig( hmxobj, pmxl, fdwInfo);
-	}
-
-	MMRESULT WINAPI mixerGetLineInfoW( HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetLineInfoW\n");
-		return mixerGetLineInfoW_orig( hmxobj, pmxl, fdwInfo);
-	}
-
-	MMRESULT WINAPI mixerGetID( HMIXEROBJ hmxobj, UINT FAR *puMxId, DWORD fdwId)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetID\n");
-		return mixerGetID_orig( hmxobj, puMxId, fdwId);
-	}
-
-	MMRESULT WINAPI mixerGetLineControlsA( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetLineControlsA\n");
-		return mixerGetLineControlsA_orig( hmxobj, pmxlc, fdwControls);
-	}
-
-	MMRESULT WINAPI mixerGetLineControlsW( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetLineControlsW\n");
-		return mixerGetLineControlsW_orig( hmxobj, pmxlc, fdwControls);
-	}
-
-	MMRESULT WINAPI mixerGetControlDetailsA( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetControlDetailsA\n");
-		return mixerGetControlDetailsA_orig( hmxobj, pmxcd, fdwDetails);
-	}
-
-	MMRESULT WINAPI mixerGetControlDetailsW( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerGetControlDetailsW\n");
-		return mixerGetControlDetailsW_orig( hmxobj, pmxcd, fdwDetails);
-	}
-
-	MMRESULT WINAPI mixerSetControlDetails( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mixerSetControlDetails\n");
-		return mixerSetControlDetails_orig( hmxobj, pmxcd, fdwDetails);
-	}
-
-	DWORD    WINAPI mmGetCurrentTask(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmGetCurrentTask\n");
-		return mmGetCurrentTask_orig();
-	}
-
-	void WINAPI mmTaskBlock(DWORD val)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmTaskBlock\n");
-		return mmTaskBlock_orig(val);
-	}
-
-	UINT WINAPI mmTaskCreate(LPTASKCALLBACK a, HANDLE* b, DWORD_PTR c)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmTaskCreate\n");
-		return mmTaskCreate_orig(a, b, c);
-	}
-
-	BOOL WINAPI mmTaskSignal(DWORD a)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmTaskSignal\n");
-		return mmTaskSignal_orig(a);
-	}
-
-	VOID WINAPI mmTaskYield()
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmTaskYield\n");
-		mmTaskYield_orig();
-	}
-
-	MMRESULT WINAPI timeGetSystemTime( LPMMTIME pmmt, UINT cbmmt)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"timeGetSystemTime\n");
-		return timeGetSystemTime_orig( pmmt, cbmmt);
-	}
-
-	DWORD WINAPI timeGetTime(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"timeGetTime\n");
-		return timeGetTime_orig();
-	}
-
-	MMRESULT WINAPI timeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"timeSetEvent\n");
-		return timeSetEvent_orig(uDelay, uResolution, fptc, dwUser, fuEvent);
-	}
-
-	MMRESULT WINAPI timeKillEvent( UINT uTimerID)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"timeKillEvent\n");
-		return timeKillEvent_orig( uTimerID);
-	}
-
-	MMRESULT WINAPI timeGetDevCaps( LPTIMECAPS ptc, UINT cbtc)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"timeGetDevCaps\n");
-		return timeGetDevCaps_orig( ptc, cbtc);
-	}
-
-	MMRESULT WINAPI timeBeginPeriod( UINT uPeriod)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"timeBeginPeriod\n");
-		return timeBeginPeriod_orig( uPeriod);
-	}
-
-	MMRESULT WINAPI timeEndPeriod( UINT uPeriod)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"timeEndPeriod\n");
-		return timeEndPeriod_orig( uPeriod);
-	}
-
-	UINT WINAPI joyGetNumDevs(void)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joyGetNumDevs\n");
-		return joyGetNumDevs_orig();
-	}
-
-	MMRESULT WINAPI joyConfigChanged(DWORD dwFlags)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joyConfigChanged\n");
-		return joyConfigChanged_orig(dwFlags);
-	}
-
-	MMRESULT WINAPI joyGetDevCapsA( UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joyGetDevCapsA\n");
-		return joyGetDevCapsA_orig( uJoyID, pjc, cbjc);
-	}
-
-	MMRESULT WINAPI joyGetDevCapsW( UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joyGetDevCapsW\n");
-		return joyGetDevCapsW_orig( uJoyID, pjc, cbjc);
-	}
-
-	MMRESULT WINAPI joyGetPos( UINT uJoyID, LPJOYINFO pji)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joyGetPos\n");
-		return joyGetPos_orig( uJoyID, pji);
-	}
-
-	MMRESULT WINAPI joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joyGetPosEx\n");
-		return joyGetPosEx_orig( uJoyID, pji);
-	}
-
-	MMRESULT WINAPI joyGetThreshold( UINT uJoyID, LPUINT puThreshold)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joyGetThreshold\n");
-		return joyGetThreshold_orig( uJoyID, puThreshold);
-	}
-
-	MMRESULT WINAPI joyReleaseCapture( UINT uJoyID)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joyReleaseCapture\n");
-		return joyReleaseCapture_orig( uJoyID);
-	}
-
-	MMRESULT WINAPI joySetCapture( HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joySetCapture\n");
-		return joySetCapture_orig(hwnd, uJoyID, uPeriod, fChanged);
-	}
-
-	MMRESULT WINAPI joySetThreshold( UINT uJoyID, UINT uThreshold)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"joySetThreshold\n");
-		return joySetThreshold_orig( uJoyID, uThreshold);
-	}
-
-	BOOL WINAPI mciDriverNotify(HANDLE hwndCallback, MCIDEVICEID uDeviceID, UINT uStatus)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciDriverNotify\n");
-		return mciDriverNotify_orig(hwndCallback, uDeviceID, uStatus);
-	}
-
-	UINT WINAPI  mciDriverYield(UINT uDeviceID)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciDriverYield\n");
-		return mciDriverYield_orig(uDeviceID);
-	}	
-
-	FOURCC WINAPI mmioStringToFOURCCA( LPCSTR sz, UINT uFlags)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioStringToFOURCCA\n");
-		return mmioStringToFOURCCA_orig( sz, uFlags);
-	}
-
-	FOURCC WINAPI mmioStringToFOURCCW( LPCWSTR sz, UINT uFlags)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioStringToFOURCCW\n");
-		return mmioStringToFOURCCW_orig( sz, uFlags);
-	}
-
-	LPMMIOPROC WINAPI mmioInstallIOProcA( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioInstallIOProcA\n");
-		return mmioInstallIOProcA_orig( fccIOProc, pIOProc, dwFlags);
-	}
-
-	LPMMIOPROC WINAPI mmioInstallIOProcW( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioInstallIOProcW\n");
-		return mmioInstallIOProcW_orig( fccIOProc, pIOProc, dwFlags);
-	}
-
-	HMMIO WINAPI mmioOpenA( LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioOpenA\n");
-		return mmioOpenA_orig( pszFileName, pmmioinfo, fdwOpen);
-	}
-
-	HMMIO WINAPI mmioOpenW( LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioOpenW\n");
-		return mmioOpenW_orig( pszFileName, pmmioinfo, fdwOpen);
-	}
-
-	MMRESULT WINAPI mmioRenameA( LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioRenameA\n");
-		return mmioRenameA_orig( pszFileName, pszNewFileName, pmmioinfo, fdwRename);
-	}
-
-	MMRESULT WINAPI mmioRenameW( LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioRenameW\n");
-		return mmioRenameW_orig( pszFileName, pszNewFileName, pmmioinfo, fdwRename);
-	}
-
-	MMRESULT WINAPI mmioClose( HMMIO hmmio, UINT fuClose)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioClose\n");
-		return mmioClose_orig( hmmio, fuClose);
-	}
-
-	LONG WINAPI mmioRead( HMMIO hmmio, HPSTR pch, LONG cch)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioRead\n");
-		return mmioRead_orig( hmmio, pch, cch);
-	}
-
-	LONG WINAPI mmioWrite( HMMIO hmmio, const char _huge* pch, LONG cch)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioWrite\n");
-		return mmioWrite_orig( hmmio, pch, cch);
-	}
-
-	LONG WINAPI mmioSeek( HMMIO hmmio, LONG lOffset, int iOrigin)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioSeek\n");
-		return mmioSeek_orig(hmmio, lOffset, iOrigin);
-	}
-
-	MMRESULT WINAPI mmioGetInfo( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioGetInfo\n");
-		return mmioGetInfo_orig( hmmio, pmmioinfo, fuInfo);
-	}
-
-	MMRESULT WINAPI mmioSetInfo( HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioSetInfo\n");
-		return mmioSetInfo_orig( hmmio, pmmioinfo, fuInfo);
-	}
-
-	MMRESULT WINAPI mmioSetBuffer( HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT fuBuffer)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioSetBuffer\n");
-		return mmioSetBuffer_orig(hmmio, pchBuffer, cchBuffer, fuBuffer);
-	}
-
-	MMRESULT WINAPI mmioFlush( HMMIO hmmio, UINT fuFlush)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioFlush\n");
-		return mmioFlush_orig( hmmio, fuFlush);
-	}
-
-	MMRESULT WINAPI mmioAdvance( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioAdvance\n");
-		return mmioAdvance_orig( hmmio, pmmioinfo, fuAdvance);
-	}
-
-	LRESULT WINAPI mmioSendMessage( HMMIO hmmio, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioSendMessage\n");
-		return mmioSendMessage_orig(hmmio, uMsg, lParam1, lParam2);
-	}
-
-	MMRESULT WINAPI mmioDescend( HMMIO hmmio, LPMMCKINFO pmmcki, const MMCKINFO FAR* pmmckiParent, UINT fuDescend)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioDescend\n");
-		return mmioDescend_orig(hmmio, pmmcki, pmmckiParent, fuDescend);
-	}
-
-	MMRESULT WINAPI mmioAscend( HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioAscend\n");
-		return mmioAscend_orig( hmmio, pmmcki, fuAscend);
-	}
-
-	MMRESULT WINAPI mmioCreateChunk(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mmioCreateChunk\n");
-		return mmioCreateChunk_orig(hmmio, pmmcki, fuCreate);
-	}
-
-	MCIERROR WINAPI mciSendCommandA( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciSendCommandA\n");
-		return mciSendCommandA_orig( mciId, uMsg, dwParam1, dwParam2);
-	}
-
-	MCIERROR WINAPI mciSendCommandW( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciSendCommandW\n");
-		return mciSendCommandW_orig( mciId, uMsg, dwParam1, dwParam2);
-	}
-
-	MCIERROR  WINAPI mciSendStringA( LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciSendStringA\n");
-		return mciSendStringA_orig( lpstrCommand, lpstrReturnString, uReturnLength, hwndCallback);
-	}
-
-	MCIERROR  WINAPI mciSendStringW( LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciSendStringW\n");
-		return mciSendStringW_orig( lpstrCommand, lpstrReturnString, uReturnLength, hwndCallback);
-	}
-
-	MCIDEVICEID WINAPI mciGetDeviceIDA( LPCSTR pszDevice)
-	{
-		//OutputDebugString(L"mciGetDeviceIDA\n");
-		return mciGetDeviceIDA_orig( pszDevice);
-	}
-
-	MCIDEVICEID WINAPI mciGetDeviceIDW( LPCWSTR pszDevice)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciGetDeviceIDW\n");
-		return mciGetDeviceIDW_orig( pszDevice);
-	}
-
-	MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDA( DWORD dwElementID, LPCSTR lpstrType )
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciGetDeviceIDFromElementIDA\n");
-		return mciGetDeviceIDFromElementIDA_orig( dwElementID, lpstrType );
-	}
-
-	MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDW( DWORD dwElementID, LPCWSTR lpstrType )
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciGetDeviceIDFromElementIDW\n");
-		return mciGetDeviceIDFromElementIDW_orig( dwElementID, lpstrType );
-	}
-
-	DWORD_PTR WINAPI  mciGetDriverData(UINT uDeviceID)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciGetDriverData\n");
-		return mciGetDriverData_orig(uDeviceID);
-	}
-
-	BOOL WINAPI mciGetErrorStringA( MCIERROR mcierr, LPSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciGetErrorStringA\n");
-		return mciGetErrorStringA_orig( mcierr, pszText, cchText);
-	}
-
-	BOOL WINAPI mciGetErrorStringW( MCIERROR mcierr, LPWSTR pszText, UINT cchText)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciGetErrorStringW\n");
-		return mciGetErrorStringW_orig( mcierr, pszText, cchText);
-	}
-
-	BOOL WINAPI  mciSetDriverData(UINT uDeviceID, DWORD_PTR dwData)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciSetDriverData_type\n");
-		return mciSetDriverData_orig( uDeviceID, dwData );
-	}
-
-	BOOL WINAPI mciSetYieldProc( MCIDEVICEID mciId, YIELDPROC fpYieldProc, DWORD dwYieldData)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciSetYieldProc\n");
-		return mciSetYieldProc_orig(mciId, fpYieldProc, dwYieldData);
-	}
-
-	BOOL WINAPI  mciFreeCommandResource(UINT uTable)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciFreeCommandResource\n");
-		return mciFreeCommandResource_orig(uTable);
-	}
-
-	HTASK WINAPI mciGetCreatorTask( MCIDEVICEID mciId)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciGetCreatorTask\n");
-		return mciGetCreatorTask_orig( mciId);
-	}
-
-	YIELDPROC WINAPI mciGetYieldProc( MCIDEVICEID mciId, LPDWORD pdwYieldData)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciGetYieldProc\n");
-		return mciGetYieldProc_orig( mciId, pdwYieldData);
-	}
-
-	UINT WINAPI mciLoadCommandResource(HANDLE hInstance, LPCWSTR lpResName, UINT uType)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciLoadCommandResource");
-		return mciLoadCommandResource_orig(hInstance, lpResName, uType);
-	}
-	
-
-	BOOL WINAPI mciExecute(LPCSTR pszCommand)
-	{
-		ll_winmm_shim_initialize();
-		//OutputDebugString(L"mciExecute\n");
-		return mciExecute_orig(pszCommand);
-	}
-}
diff --git a/indra/media_plugins/winmmshim/forwarding_api.h b/indra/media_plugins/winmmshim/forwarding_api.h
deleted file mode 100644
index 1418fc9e1da2c4a639f8244d03d68a1878eb1db2..0000000000000000000000000000000000000000
--- a/indra/media_plugins/winmmshim/forwarding_api.h
+++ /dev/null
@@ -1,390 +0,0 @@
-/** 
- * @file forwarding_api.h
- * @brief forwards winmm API calls to real winmm.dll
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-// this turns off __declspec(dllimport) for the functions declared in mmsystem.h
-#define _WINMM_
-#include <windows.h>
-#include <mmsystem.h>
-
-void init_function_pointers(HMODULE winmm_handle);
-void ll_winmm_shim_initialize();
-
-typedef VOID (*LPTASKCALLBACK)(DWORD_PTR dwInst);
-
-typedef LRESULT   (WINAPI *CloseDriver_type)( HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
-extern CloseDriver_type CloseDriver_orig;
-typedef HDRVR     (WINAPI *OpenDriver_type)( LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2);
-extern OpenDriver_type OpenDriver_orig;
-typedef LRESULT   (WINAPI *SendDriverMessage_type)( HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2);
-extern SendDriverMessage_type SendDriverMessage_orig;
-typedef HMODULE   (WINAPI *DrvGetModuleHandle_type)( HDRVR hDriver);
-extern DrvGetModuleHandle_type DrvGetModuleHandle_orig;
-typedef HMODULE   (WINAPI *GetDriverModuleHandle_type)( HDRVR hDriver);
-extern GetDriverModuleHandle_type GetDriverModuleHandle_orig;
-typedef LRESULT   (WINAPI *DefDriverProc_type)( DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
-extern DefDriverProc_type DefDriverProc_orig;
-typedef BOOL (WINAPI *DriverCallback_type)(DWORD dwCallBack, DWORD dwFlags, HDRVR hdrvr, DWORD msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
-extern DriverCallback_type DriverCallback_orig;
-typedef UINT (WINAPI *mmsystemGetVersion_type)(void);
-extern mmsystemGetVersion_type mmsystemGetVersion_orig;
-typedef BOOL (WINAPI *sndPlaySoundA_type)( LPCSTR pszSound, UINT fuSound);
-extern sndPlaySoundA_type sndPlaySoundA_orig;
-typedef BOOL (WINAPI *sndPlaySoundW_type)( LPCWSTR pszSound, UINT fuSound);
-extern sndPlaySoundW_type sndPlaySoundW_orig;
-typedef BOOL (WINAPI *PlaySoundA_type)( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
-extern PlaySoundA_type PlaySoundA_orig;
-typedef BOOL (WINAPI *PlaySoundW_type)( LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
-extern PlaySoundW_type PlaySoundW_orig;
-typedef UINT (WINAPI *waveOutGetNumDevs_type)(void);
-extern waveOutGetNumDevs_type waveOutGetNumDevs_orig;
-typedef MMRESULT (WINAPI *waveOutGetDevCapsA_type)( UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc);
-extern waveOutGetDevCapsA_type waveOutGetDevCapsA_orig;
-typedef MMRESULT (WINAPI *waveOutGetDevCapsW_type)( UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc);
-extern waveOutGetDevCapsW_type waveOutGetDevCapsW_orig;
-typedef MMRESULT (WINAPI *waveOutGetVolume_type)( HWAVEOUT hwo, LPDWORD pdwVolume);
-extern waveOutGetVolume_type waveOutGetVolume_orig;
-typedef MMRESULT (WINAPI *waveOutSetVolume_type)( HWAVEOUT hwo, DWORD dwVolume);
-extern waveOutSetVolume_type waveOutSetVolume_orig;
-typedef MMRESULT (WINAPI *waveOutGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText);
-extern waveOutGetErrorTextA_type waveOutGetErrorTextA_orig;
-typedef MMRESULT (WINAPI *waveOutGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText);
-extern waveOutGetErrorTextW_type waveOutGetErrorTextW_orig;
-typedef MMRESULT (WINAPI *waveOutOpen_type)( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
-extern waveOutOpen_type waveOutOpen_orig;
-typedef MMRESULT (WINAPI *waveOutClose_type)( HWAVEOUT hwo);
-extern waveOutClose_type waveOutClose_orig;
-typedef MMRESULT (WINAPI *waveOutPrepareHeader_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
-extern waveOutPrepareHeader_type waveOutPrepareHeader_orig;
-typedef MMRESULT (WINAPI *waveOutUnprepareHeader_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
-extern waveOutUnprepareHeader_type waveOutUnprepareHeader_orig;
-typedef MMRESULT (WINAPI *waveOutWrite_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
-extern waveOutWrite_type waveOutWrite_orig;
-typedef MMRESULT (WINAPI *waveOutPause_type)( HWAVEOUT hwo);
-extern waveOutPause_type waveOutPause_orig;
-typedef MMRESULT (WINAPI *waveOutRestart_type)( HWAVEOUT hwo);
-extern waveOutRestart_type waveOutRestart_orig;
-typedef MMRESULT (WINAPI *waveOutReset_type)( HWAVEOUT hwo);
-extern waveOutReset_type waveOutReset_orig;
-typedef MMRESULT (WINAPI *waveOutBreakLoop_type)( HWAVEOUT hwo);
-extern waveOutBreakLoop_type waveOutBreakLoop_orig;
-typedef MMRESULT (WINAPI *waveOutGetPosition_type)( HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt);
-extern waveOutGetPosition_type waveOutGetPosition_orig;
-typedef MMRESULT (WINAPI *waveOutGetPitch_type)( HWAVEOUT hwo, LPDWORD pdwPitch);
-extern waveOutGetPitch_type waveOutGetPitch_orig;
-typedef MMRESULT (WINAPI *waveOutSetPitch_type)( HWAVEOUT hwo, DWORD dwPitch);
-extern waveOutSetPitch_type waveOutSetPitch_orig;
-typedef MMRESULT (WINAPI *waveOutGetPlaybackRate_type)( HWAVEOUT hwo, LPDWORD pdwRate);
-extern waveOutGetPlaybackRate_type waveOutGetPlaybackRate_orig;
-typedef MMRESULT (WINAPI *waveOutSetPlaybackRate_type)( HWAVEOUT hwo, DWORD dwRate);
-extern waveOutSetPlaybackRate_type waveOutSetPlaybackRate_orig;
-typedef MMRESULT (WINAPI *waveOutGetID_type)( HWAVEOUT hwo, LPUINT puDeviceID);
-extern waveOutGetID_type waveOutGetID_orig;
-typedef MMRESULT (WINAPI *waveOutMessage_type)( HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-extern waveOutMessage_type waveOutMessage_orig;
-typedef UINT (WINAPI *waveInGetNumDevs_type)(void);
-extern waveInGetNumDevs_type waveInGetNumDevs_orig;
-typedef MMRESULT (WINAPI *waveInGetDevCapsA_type)( UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic);
-extern waveInGetDevCapsA_type waveInGetDevCapsA_orig;
-typedef MMRESULT (WINAPI *waveInGetDevCapsW_type)( UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic);
-extern waveInGetDevCapsW_type waveInGetDevCapsW_orig;
-typedef MMRESULT (WINAPI *waveInGetErrorTextA_type)(MMRESULT mmrError, LPSTR pszText, UINT cchText);
-extern waveInGetErrorTextA_type waveInGetErrorTextA_orig;
-typedef MMRESULT (WINAPI *waveInGetErrorTextW_type)(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
-extern waveInGetErrorTextW_type waveInGetErrorTextW_orig;
-typedef MMRESULT (WINAPI *waveInOpen_type)( LPHWAVEIN phwi, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
-extern waveInOpen_type waveInOpen_orig;
-typedef MMRESULT (WINAPI *waveInClose_type)( HWAVEIN hwi);
-extern waveInClose_type waveInClose_orig;
-typedef MMRESULT (WINAPI *waveInPrepareHeader_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
-extern waveInPrepareHeader_type waveInPrepareHeader_orig;
-typedef MMRESULT (WINAPI *waveInUnprepareHeader_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
-extern waveInUnprepareHeader_type waveInUnprepareHeader_orig;
-typedef MMRESULT (WINAPI *waveInAddBuffer_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
-extern waveInAddBuffer_type waveInAddBuffer_orig;
-typedef MMRESULT (WINAPI *waveInStart_type)( HWAVEIN hwi);
-extern waveInStart_type waveInStart_orig;
-typedef MMRESULT (WINAPI *waveInStop_type)( HWAVEIN hwi);
-extern waveInStop_type waveInStop_orig;
-typedef MMRESULT (WINAPI *waveInReset_type)( HWAVEIN hwi);
-extern waveInReset_type waveInReset_orig;
-typedef MMRESULT (WINAPI *waveInGetPosition_type)( HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt);
-extern waveInGetPosition_type waveInGetPosition_orig;
-typedef MMRESULT (WINAPI *waveInGetID_type)( HWAVEIN hwi, LPUINT puDeviceID);
-extern waveInGetID_type waveInGetID_orig;
-typedef MMRESULT (WINAPI *waveInMessage_type)( HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-extern waveInMessage_type waveInMessage_orig;
-typedef UINT (WINAPI *midiOutGetNumDevs_type)(void);
-extern midiOutGetNumDevs_type midiOutGetNumDevs_orig;
-typedef MMRESULT (WINAPI *midiStreamOpen_type)( LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
-extern midiStreamOpen_type midiStreamOpen_orig;
-typedef MMRESULT (WINAPI *midiStreamClose_type)( HMIDISTRM hms);
-extern midiStreamClose_type midiStreamClose_orig;
-typedef MMRESULT (WINAPI *midiStreamProperty_type)( HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty);
-extern midiStreamProperty_type midiStreamProperty_orig;
-typedef MMRESULT (WINAPI *midiStreamPosition_type)( HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt);
-extern midiStreamPosition_type midiStreamPosition_orig;
-typedef MMRESULT (WINAPI *midiStreamOut_type)( HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh);
-extern midiStreamOut_type midiStreamOut_orig;
-typedef MMRESULT (WINAPI *midiStreamPause_type)( HMIDISTRM hms);
-extern midiStreamPause_type midiStreamPause_orig;
-typedef MMRESULT (WINAPI *midiStreamRestart_type)( HMIDISTRM hms);
-extern midiStreamRestart_type midiStreamRestart_orig;
-typedef MMRESULT (WINAPI *midiStreamStop_type)( HMIDISTRM hms);
-extern midiStreamStop_type midiStreamStop_orig;
-typedef MMRESULT (WINAPI *midiConnect_type)( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved);
-extern midiConnect_type midiConnect_orig;
-typedef MMRESULT (WINAPI *midiDisconnect_type)( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved);
-extern midiDisconnect_type midiDisconnect_orig;
-typedef MMRESULT (WINAPI *midiOutGetDevCapsA_type)( UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc);
-extern midiOutGetDevCapsA_type midiOutGetDevCapsA_orig;
-typedef MMRESULT (WINAPI *midiOutGetDevCapsW_type)( UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc);
-extern midiOutGetDevCapsW_type midiOutGetDevCapsW_orig;
-typedef MMRESULT (WINAPI *midiOutGetVolume_type)( HMIDIOUT hmo, LPDWORD pdwVolume);
-extern midiOutGetVolume_type midiOutGetVolume_orig;
-typedef MMRESULT (WINAPI *midiOutSetVolume_type)( HMIDIOUT hmo, DWORD dwVolume);
-extern midiOutSetVolume_type midiOutSetVolume_orig;
-typedef MMRESULT (WINAPI *midiOutGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText);
-extern midiOutGetErrorTextA_type midiOutGetErrorTextA_orig;
-typedef MMRESULT (WINAPI *midiOutGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText);
-extern midiOutGetErrorTextW_type midiOutGetErrorTextW_orig;
-typedef MMRESULT (WINAPI *midiOutOpen_type)( LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
-extern midiOutOpen_type midiOutOpen_orig;
-typedef MMRESULT (WINAPI *midiOutClose_type)( HMIDIOUT hmo);
-extern midiOutClose_type midiOutClose_orig;
-typedef MMRESULT (WINAPI *midiOutPrepareHeader_type)( HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
-extern midiOutPrepareHeader_type midiOutPrepareHeader_orig;
-typedef MMRESULT (WINAPI *midiOutUnprepareHeader_type)(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
-extern midiOutUnprepareHeader_type midiOutUnprepareHeader_orig;
-typedef MMRESULT (WINAPI *midiOutShortMsg_type)( HMIDIOUT hmo, DWORD dwMsg);
-extern midiOutShortMsg_type midiOutShortMsg_orig;
-typedef MMRESULT (WINAPI *midiOutLongMsg_type)(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
-extern midiOutLongMsg_type midiOutLongMsg_orig;
-typedef MMRESULT (WINAPI *midiOutReset_type)( HMIDIOUT hmo);
-extern midiOutReset_type midiOutReset_orig;
-typedef MMRESULT (WINAPI *midiOutCachePatches_type)( HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache);
-extern midiOutCachePatches_type midiOutCachePatches_orig;
-typedef MMRESULT (WINAPI *midiOutCacheDrumPatches_type)( HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache);
-extern midiOutCacheDrumPatches_type midiOutCacheDrumPatches_orig;
-typedef MMRESULT (WINAPI *midiOutGetID_type)( HMIDIOUT hmo, LPUINT puDeviceID);
-extern midiOutGetID_type midiOutGetID_orig;
-typedef MMRESULT (WINAPI *midiOutMessage_type)( HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-extern midiOutMessage_type midiOutMessage_orig;
-typedef UINT (WINAPI *midiInGetNumDevs_type)(void);
-extern midiInGetNumDevs_type midiInGetNumDevs_orig;
-typedef MMRESULT (WINAPI *midiInGetDevCapsA_type)( UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic);
-extern midiInGetDevCapsA_type midiInGetDevCapsA_orig;
-typedef MMRESULT (WINAPI *midiInGetDevCapsW_type)( UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic);
-extern midiInGetDevCapsW_type midiInGetDevCapsW_orig;
-typedef MMRESULT (WINAPI *midiInGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText);
-extern midiInGetErrorTextA_type midiInGetErrorTextA_orig;
-typedef MMRESULT (WINAPI *midiInGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText);
-extern midiInGetErrorTextW_type midiInGetErrorTextW_orig;
-typedef MMRESULT (WINAPI *midiInOpen_type)( LPHMIDIIN phmi, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
-extern midiInOpen_type midiInOpen_orig;
-typedef MMRESULT (WINAPI *midiInClose_type)( HMIDIIN hmi);
-extern midiInClose_type midiInClose_orig;
-typedef MMRESULT (WINAPI *midiInPrepareHeader_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
-extern midiInPrepareHeader_type midiInPrepareHeader_orig;
-typedef MMRESULT (WINAPI *midiInUnprepareHeader_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
-extern midiInUnprepareHeader_type midiInUnprepareHeader_orig;
-typedef MMRESULT (WINAPI *midiInAddBuffer_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
-extern midiInAddBuffer_type midiInAddBuffer_orig;
-typedef MMRESULT (WINAPI *midiInStart_type)( HMIDIIN hmi);
-extern midiInStart_type midiInStart_orig;
-typedef MMRESULT (WINAPI *midiInStop_type)( HMIDIIN hmi);
-extern midiInStop_type midiInStop_orig;
-typedef MMRESULT (WINAPI *midiInReset_type)( HMIDIIN hmi);
-extern midiInReset_type midiInReset_orig;
-typedef MMRESULT (WINAPI *midiInGetID_type)( HMIDIIN hmi, LPUINT puDeviceID);
-extern midiInGetID_type midiInGetID_orig;
-typedef MMRESULT (WINAPI *midiInMessage_type)( HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-extern midiInMessage_type midiInMessage_orig;
-typedef UINT (WINAPI *auxGetNumDevs_type)(void);
-extern auxGetNumDevs_type auxGetNumDevs_orig;
-typedef MMRESULT (WINAPI *auxGetDevCapsA_type)( UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac);
-extern auxGetDevCapsA_type auxGetDevCapsA_orig;
-typedef MMRESULT (WINAPI *auxGetDevCapsW_type)( UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac);
-extern auxGetDevCapsW_type auxGetDevCapsW_orig;
-typedef MMRESULT (WINAPI *auxSetVolume_type)( UINT uDeviceID, DWORD dwVolume);
-extern auxSetVolume_type auxSetVolume_orig;
-typedef MMRESULT (WINAPI *auxGetVolume_type)( UINT uDeviceID, LPDWORD pdwVolume);
-extern auxGetVolume_type auxGetVolume_orig;
-typedef MMRESULT (WINAPI *auxOutMessage_type)( UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-extern auxOutMessage_type auxOutMessage_orig;
-typedef UINT (WINAPI *mixerGetNumDevs_type)(void);
-extern mixerGetNumDevs_type mixerGetNumDevs_orig;
-typedef MMRESULT (WINAPI *mixerGetDevCapsA_type)( UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps);
-extern mixerGetDevCapsA_type mixerGetDevCapsA_orig;
-typedef MMRESULT (WINAPI *mixerGetDevCapsW_type)( UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps);
-extern mixerGetDevCapsW_type mixerGetDevCapsW_orig;
-typedef MMRESULT (WINAPI *mixerOpen_type)( LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
-extern mixerOpen_type mixerOpen_orig;
-typedef MMRESULT (WINAPI *mixerClose_type)( HMIXER hmx);
-extern mixerClose_type mixerClose_orig;
-typedef DWORD (WINAPI *mixerMessage_type)( HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
-extern mixerMessage_type mixerMessage_orig;
-typedef MMRESULT (WINAPI *mixerGetLineInfoA_type)( HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo);
-extern mixerGetLineInfoA_type mixerGetLineInfoA_orig;
-typedef MMRESULT (WINAPI *mixerGetLineInfoW_type)( HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo);
-extern mixerGetLineInfoW_type mixerGetLineInfoW_orig;
-typedef MMRESULT (WINAPI *mixerGetID_type)( HMIXEROBJ hmxobj, UINT FAR *puMxId, DWORD fdwId);
-extern mixerGetID_type mixerGetID_orig;
-typedef MMRESULT (WINAPI *mixerGetLineControlsA_type)( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls);
-extern mixerGetLineControlsA_type mixerGetLineControlsA_orig;
-typedef MMRESULT (WINAPI *mixerGetLineControlsW_type)( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls);
-extern mixerGetLineControlsW_type mixerGetLineControlsW_orig;
-typedef MMRESULT (WINAPI *mixerGetControlDetailsA_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
-extern mixerGetControlDetailsA_type mixerGetControlDetailsA_orig;
-typedef MMRESULT (WINAPI *mixerGetControlDetailsW_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
-extern mixerGetControlDetailsW_type mixerGetControlDetailsW_orig;
-typedef MMRESULT (WINAPI *mixerSetControlDetails_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
-extern mixerSetControlDetails_type mixerSetControlDetails_orig;
-typedef DWORD    (WINAPI *mmGetCurrentTask_type)(void);
-extern mmGetCurrentTask_type mmGetCurrentTask_orig;
-typedef void (WINAPI *mmTaskBlock_type)(DWORD);
-extern mmTaskBlock_type mmTaskBlock_orig;
-typedef UINT (WINAPI *mmTaskCreate_type)(LPTASKCALLBACK, HANDLE*, DWORD_PTR);
-extern mmTaskCreate_type mmTaskCreate_orig;
-typedef BOOL (WINAPI *mmTaskSignal_type)(DWORD);
-extern mmTaskSignal_type mmTaskSignal_orig;
-typedef VOID (WINAPI *mmTaskYield_type)(VOID);
-extern mmTaskYield_type mmTaskYield_orig;
-typedef MMRESULT (WINAPI *timeGetSystemTime_type)( LPMMTIME pmmt, UINT cbmmt);
-extern timeGetSystemTime_type timeGetSystemTime_orig;
-typedef DWORD (WINAPI *timeGetTime_type)(void);
-extern timeGetTime_type timeGetTime_orig;
-typedef MMRESULT (WINAPI *timeSetEvent_type)( UINT uDelay, UINT uResolution, LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent);
-extern timeSetEvent_type timeSetEvent_orig;
-typedef MMRESULT (WINAPI *timeKillEvent_type)( UINT uTimerID);
-extern timeKillEvent_type timeKillEvent_orig;
-typedef MMRESULT (WINAPI *timeGetDevCaps_type)( LPTIMECAPS ptc, UINT cbtc);
-extern timeGetDevCaps_type timeGetDevCaps_orig;
-typedef MMRESULT (WINAPI *timeBeginPeriod_type)( UINT uPeriod);
-extern timeBeginPeriod_type timeBeginPeriod_orig;
-typedef MMRESULT (WINAPI *timeEndPeriod_type)( UINT uPeriod);
-extern timeEndPeriod_type timeEndPeriod_orig;
-typedef UINT (WINAPI *joyGetNumDevs_type)(void);
-extern joyGetNumDevs_type joyGetNumDevs_orig;
-typedef MMRESULT (WINAPI *joyConfigChanged_type)(DWORD dwFlags);
-extern joyConfigChanged_type joyConfigChanged_orig;
-typedef MMRESULT (WINAPI *joyGetDevCapsA_type)( UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc);
-extern joyGetDevCapsA_type joyGetDevCapsA_orig;
-typedef MMRESULT (WINAPI *joyGetDevCapsW_type)( UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc);
-extern joyGetDevCapsW_type joyGetDevCapsW_orig;
-typedef MMRESULT (WINAPI *joyGetPos_type)( UINT uJoyID, LPJOYINFO pji);
-extern joyGetPos_type joyGetPos_orig;
-typedef MMRESULT (WINAPI *joyGetPosEx_type)( UINT uJoyID, LPJOYINFOEX pji);
-extern joyGetPosEx_type joyGetPosEx_orig;
-typedef MMRESULT (WINAPI *joyGetThreshold_type)( UINT uJoyID, LPUINT puThreshold);
-extern joyGetThreshold_type joyGetThreshold_orig;
-typedef MMRESULT (WINAPI *joyReleaseCapture_type)( UINT uJoyID);
-extern joyReleaseCapture_type joyReleaseCapture_orig;
-typedef MMRESULT (WINAPI *joySetCapture_type)( HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged);
-extern joySetCapture_type joySetCapture_orig;
-typedef MMRESULT (WINAPI *joySetThreshold_type)( UINT uJoyID, UINT uThreshold);
-extern joySetThreshold_type joySetThreshold_orig;
-typedef BOOL(WINAPI  *mciDriverNotify_type)(HANDLE hwndCallback, MCIDEVICEID uDeviceID, UINT uStatus);
-extern mciDriverNotify_type mciDriverNotify_orig;
-typedef UINT (WINAPI  *mciDriverYield_type)(UINT uDeviceID);
-extern mciDriverYield_type mciDriverYield_orig;
-typedef FOURCC (WINAPI *mmioStringToFOURCCA_type)( LPCSTR sz, UINT uFlags);
-extern mmioStringToFOURCCA_type mmioStringToFOURCCA_orig;
-typedef FOURCC (WINAPI *mmioStringToFOURCCW_type)( LPCWSTR sz, UINT uFlags);
-extern mmioStringToFOURCCW_type mmioStringToFOURCCW_orig;
-typedef LPMMIOPROC (WINAPI *mmioInstallIOProcA_type)( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
-extern mmioInstallIOProcA_type mmioInstallIOProcA_orig;
-typedef LPMMIOPROC (WINAPI *mmioInstallIOProcW_type)( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
-extern mmioInstallIOProcW_type mmioInstallIOProcW_orig;
-typedef HMMIO (WINAPI *mmioOpenA_type)( LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
-extern mmioOpenA_type mmioOpenA_orig;
-typedef HMMIO (WINAPI *mmioOpenW_type)( LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
-extern mmioOpenW_type mmioOpenW_orig;
-typedef MMRESULT (WINAPI *mmioRenameA_type)( LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
-extern mmioRenameA_type mmioRenameA_orig;
-typedef MMRESULT (WINAPI *mmioRenameW_type)( LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
-extern mmioRenameW_type mmioRenameW_orig;
-typedef MMRESULT (WINAPI *mmioClose_type)( HMMIO hmmio, UINT fuClose);
-extern mmioClose_type mmioClose_orig;
-typedef LONG (WINAPI *mmioRead_type)( HMMIO hmmio, HPSTR pch, LONG cch);
-extern mmioRead_type mmioRead_orig;
-typedef LONG (WINAPI *mmioWrite_type)( HMMIO hmmio, const char _huge* pch, LONG cch);
-extern mmioWrite_type mmioWrite_orig;
-typedef LONG (WINAPI *mmioSeek_type)( HMMIO hmmio, LONG lOffset, int iOrigin);
-extern mmioSeek_type mmioSeek_orig;
-typedef MMRESULT (WINAPI *mmioGetInfo_type)( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo);
-extern mmioGetInfo_type mmioGetInfo_orig;
-typedef MMRESULT (WINAPI *mmioSetInfo_type)( HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo);
-extern mmioSetInfo_type mmioSetInfo_orig;
-typedef MMRESULT (WINAPI *mmioSetBuffer_type)( HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT fuBuffer);
-extern mmioSetBuffer_type mmioSetBuffer_orig;
-typedef MMRESULT (WINAPI *mmioFlush_type)( HMMIO hmmio, UINT fuFlush);
-extern mmioFlush_type mmioFlush_orig;
-typedef MMRESULT (WINAPI *mmioAdvance_type)( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance);
-extern mmioAdvance_type mmioAdvance_orig;
-typedef LRESULT (WINAPI *mmioSendMessage_type)( HMMIO hmmio, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
-extern mmioSendMessage_type mmioSendMessage_orig;
-typedef MMRESULT (WINAPI *mmioDescend_type)( HMMIO hmmio, LPMMCKINFO pmmcki, const MMCKINFO FAR* pmmckiParent, UINT fuDescend);
-extern mmioDescend_type mmioDescend_orig;
-typedef MMRESULT (WINAPI *mmioAscend_type)( HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend);
-extern mmioAscend_type mmioAscend_orig;
-typedef MMRESULT (WINAPI *mmioCreateChunk_type)(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate);
-extern mmioCreateChunk_type mmioCreateChunk_orig;
-typedef MCIERROR (WINAPI *mciSendCommandA_type)( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
-extern mciSendCommandA_type mciSendCommandA_orig;
-typedef MCIERROR (WINAPI *mciSendCommandW_type)( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
-extern mciSendCommandW_type mciSendCommandW_orig;
-typedef MCIERROR  (WINAPI *mciSendStringA_type)( LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
-extern mciSendStringA_type mciSendStringA_orig;
-typedef MCIERROR  (WINAPI *mciSendStringW_type)( LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
-extern mciSendStringW_type mciSendStringW_orig;
-typedef MCIDEVICEID (WINAPI *mciGetDeviceIDA_type)( LPCSTR pszDevice);
-extern mciGetDeviceIDA_type mciGetDeviceIDA_orig;
-typedef MCIDEVICEID (WINAPI *mciGetDeviceIDW_type)( LPCWSTR pszDevice);
-extern mciGetDeviceIDW_type mciGetDeviceIDW_orig;
-typedef MCIDEVICEID (WINAPI *mciGetDeviceIDFromElementIDA_type)( DWORD dwElementID, LPCSTR lpstrType );
-extern mciGetDeviceIDFromElementIDA_type mciGetDeviceIDFromElementIDA_orig;
-typedef MCIDEVICEID (WINAPI *mciGetDeviceIDFromElementIDW_type)( DWORD dwElementID, LPCWSTR lpstrType );
-extern mciGetDeviceIDFromElementIDW_type mciGetDeviceIDFromElementIDW_orig;
-typedef DWORD_PTR (WINAPI  *mciGetDriverData_type)(UINT uDeviceID);
-extern mciGetDriverData_type mciGetDriverData_orig;
-typedef BOOL (WINAPI *mciGetErrorStringA_type)( MCIERROR mcierr, LPSTR pszText, UINT cchText);
-extern mciGetErrorStringA_type mciGetErrorStringA_orig;
-typedef BOOL (WINAPI *mciGetErrorStringW_type)( MCIERROR mcierr, LPWSTR pszText, UINT cchText);
-extern mciGetErrorStringW_type mciGetErrorStringW_orig;
-typedef BOOL (WINAPI  *mciSetDriverData_type)(UINT uDeviceID, DWORD_PTR dwData);
-extern mciSetDriverData_type mciSetDriverData_orig;
-typedef BOOL (WINAPI *mciSetYieldProc_type)( MCIDEVICEID mciId, YIELDPROC fpYieldProc, DWORD dwYieldData);
-extern mciSetYieldProc_type mciSetYieldProc_orig;
-typedef BOOL (WINAPI  *mciFreeCommandResource_type)(UINT uTable);
-extern mciFreeCommandResource_type mciFreeCommandResource_orig;
-typedef HTASK (WINAPI *mciGetCreatorTask_type)( MCIDEVICEID mciId);
-extern mciGetCreatorTask_type mciGetCreatorTask_orig;
-typedef YIELDPROC (WINAPI *mciGetYieldProc_type)( MCIDEVICEID mciId, LPDWORD pdwYieldData);
-extern mciGetYieldProc_type mciGetYieldProc_orig;
-typedef UINT (WINAPI *mciLoadCommandResource_type)(HANDLE hInstance, LPCWSTR lpResName, UINT uType);
-extern mciLoadCommandResource_type mciLoadCommandResource_orig;
-typedef BOOL (WINAPI *mciExecute_type)(LPCSTR pszCommand);
-extern mciExecute_type mciExecute_orig;
diff --git a/indra/media_plugins/winmmshim/winmm.def b/indra/media_plugins/winmmshim/winmm.def
deleted file mode 100755
index c55a2845f8b50aa0e4a9e7a059ff9666f9df980c..0000000000000000000000000000000000000000
--- a/indra/media_plugins/winmmshim/winmm.def
+++ /dev/null
@@ -1,218 +0,0 @@
-; 
-;   winmm.def
-;
-;   Exports for WINMM DLL
-;
-
-LIBRARY WINMM
-EXPORTS
-CloseDriver
-DefDriverProc
-DriverCallback
-DrvGetModuleHandle
-GetDriverModuleHandle
-;MigrateAllDrivers
-;MigrateSoundEvents
-;NotifyCallbackData
-OpenDriver
-;PlaySound
-PlaySoundA
-PlaySoundW
-SendDriverMessage
-;WOW32DriverCallback
-;WOW32ResolveMultiMediaHandle
-;WOWAppExit
-;WinmmLogoff
-;WinmmLogon
-;aux32Message
-auxGetDevCapsA
-auxGetDevCapsW
-auxGetNumDevs
-auxGetVolume
-auxOutMessage
-auxSetVolume
-;gfxAddGfx
-;gfxBatchChange
-;gfxCreateGfxFactoriesList
-;gfxCreateZoneFactoriesList
-;gfxDestroyDeviceInterfaceList
-;gfxEnumerateGfxs
-;gfxLogoff
-;gfxLogon
-;gfxModifyGfx
-;gfxOpenGfx
-;gfxRemoveGfx
-;joy32Message
-joyConfigChanged
-joyGetDevCapsA
-joyGetDevCapsW
-joyGetNumDevs
-joyGetPos
-joyGetPosEx
-joyGetThreshold
-joyReleaseCapture
-joySetCapture
-joySetThreshold
-;mci32Message
-mciDriverNotify
-mciDriverYield
-mciExecute
-mciFreeCommandResource
-mciGetCreatorTask
-mciGetDeviceIDA
-mciGetDeviceIDFromElementIDA
-mciGetDeviceIDFromElementIDW
-mciGetDeviceIDW
-mciGetDriverData
-mciGetErrorStringA
-mciGetErrorStringW
-mciGetYieldProc
-mciLoadCommandResource
-mciSendCommandA
-mciSendCommandW
-mciSendStringA
-mciSendStringW
-mciSetDriverData
-mciSetYieldProc
-;mid32Message
-midiConnect
-midiDisconnect
-midiInAddBuffer
-midiInClose
-midiInGetDevCapsA
-midiInGetDevCapsW
-midiInGetErrorTextA
-midiInGetErrorTextW
-midiInGetID
-midiInGetNumDevs
-midiInMessage
-midiInOpen
-midiInPrepareHeader
-midiInReset
-midiInStart
-midiInStop
-midiInUnprepareHeader
-midiOutCacheDrumPatches
-midiOutCachePatches
-midiOutClose
-midiOutGetDevCapsA
-midiOutGetDevCapsW
-midiOutGetErrorTextA
-midiOutGetErrorTextW
-midiOutGetID
-midiOutGetNumDevs
-midiOutGetVolume
-midiOutLongMsg
-midiOutMessage
-midiOutOpen
-midiOutPrepareHeader
-midiOutReset
-midiOutSetVolume
-midiOutShortMsg
-midiOutUnprepareHeader
-midiStreamClose
-midiStreamOpen
-midiStreamOut
-midiStreamPause
-midiStreamPosition
-midiStreamProperty
-midiStreamRestart
-midiStreamStop
-mixerClose
-mixerGetControlDetailsA
-mixerGetControlDetailsW
-mixerGetDevCapsA
-mixerGetDevCapsW
-mixerGetID
-mixerGetLineControlsA
-mixerGetLineControlsW
-mixerGetLineInfoA
-mixerGetLineInfoW
-mixerGetNumDevs
-mixerMessage
-mixerOpen
-mixerSetControlDetails
-;mmDrvInstall
-mmGetCurrentTask
-mmTaskBlock
-mmTaskCreate
-mmTaskSignal
-mmTaskYield
-mmioAdvance
-mmioAscend
-mmioClose
-mmioCreateChunk
-mmioDescend
-mmioFlush
-mmioGetInfo
-mmioInstallIOProcA
-mmioInstallIOProcW
-mmioOpenA
-mmioOpenW
-mmioRead
-mmioRenameA
-mmioRenameW
-mmioSeek
-mmioSendMessage
-mmioSetBuffer
-mmioSetInfo
-mmioStringToFOURCCA
-mmioStringToFOURCCW
-mmioWrite
-mmsystemGetVersion
-;mod32Message
-;mxd32Message
-sndPlaySoundA
-sndPlaySoundW
-;tid32Message
-timeBeginPeriod
-timeEndPeriod
-timeGetDevCaps
-timeGetSystemTime
-timeGetTime
-timeKillEvent
-timeSetEvent
-waveInAddBuffer
-waveInClose
-waveInGetDevCapsA
-waveInGetDevCapsW
-waveInGetErrorTextA
-waveInGetErrorTextW
-waveInGetID
-waveInGetNumDevs
-waveInGetPosition
-waveInMessage
-waveInOpen
-waveInPrepareHeader
-waveInReset
-waveInStart
-waveInStop
-waveInUnprepareHeader
-waveOutBreakLoop
-waveOutClose
-waveOutGetDevCapsA
-waveOutGetDevCapsW
-waveOutGetErrorTextA
-waveOutGetErrorTextW
-waveOutGetID
-waveOutGetNumDevs
-waveOutGetPitch
-waveOutGetPlaybackRate
-waveOutGetPosition
-waveOutGetVolume
-waveOutMessage
-waveOutOpen
-waveOutPause
-waveOutPrepareHeader
-waveOutReset
-waveOutRestart
-waveOutSetPitch
-waveOutSetPlaybackRate
-waveOutSetVolume
-waveOutUnprepareHeader
-waveOutWrite
-;wid32Message
-;winmmSetDebugLevel
-;wod32Message
-setPluginVolume
-setPluginMute
\ No newline at end of file
diff --git a/indra/media_plugins/winmmshim/winmm_shim.cpp b/indra/media_plugins/winmmshim/winmm_shim.cpp
deleted file mode 100644
index 78f7a9b0dab5797a21b7a3c6a294540c0efb500f..0000000000000000000000000000000000000000
--- a/indra/media_plugins/winmmshim/winmm_shim.cpp
+++ /dev/null
@@ -1,219 +0,0 @@
-/** 
- * @file winmmshim.cpp
- * @brief controls volume level of process by intercepting calls to winmm.dll
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010-2014, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-#include "forwarding_api.h"
-#include <xmmintrin.h>
-#include <map>
-#include <math.h>
-
-using std::wstring;
-
-static float sVolumeLevel = 1.f;		// Could be covered by critical section,
-static bool sMute = false;				// not needed with atomicity and alignment.
-static CRITICAL_SECTION sCriticalSection;
-
-BOOL APIENTRY DllMain( HMODULE hModule,
-                       DWORD  ul_reason_for_call,
-                       LPVOID lpReserved
-					 )
-{
-	if (ul_reason_for_call == DLL_PROCESS_ATTACH)
-	{
-		InitializeCriticalSection(&sCriticalSection);
-	}
-	return TRUE;
-}
-
-void ll_winmm_shim_initialize(){
-	static volatile bool initialized = false;
-
-	// do this only once using double-check locking
-	if (!initialized)
-	{
-		EnterCriticalSection(&sCriticalSection);
-		if (!initialized)
-		{	// bind to original winmm.dll
-			TCHAR system_path[MAX_PATH];
-			TCHAR dll_path[MAX_PATH];
-			::GetSystemDirectory(system_path, MAX_PATH);
-
-			// grab winmm.dll from system path, where it should live
-			wsprintf(dll_path, "%s\\winmm.dll", system_path);
-			HMODULE winmm_handle = ::LoadLibrary(dll_path);
-
-			if (winmm_handle != NULL)
-			{	// we have a dll, let's get out pointers!
-				init_function_pointers(winmm_handle);
-				::OutputDebugStringA("WINMM_SHIM.DLL: real winmm.dll initialized successfully\n");
-				initialized = true;		// Last thing after completing setup
-			}
-			else
-			{
-				// failed to initialize real winmm.dll
-				::OutputDebugStringA("WINMM_SHIM.DLL: Failed to initialize real winmm.dll\n");
-			}
-		}
-		LeaveCriticalSection(&sCriticalSection);
-	}
-}
-
-
-extern "C" 
-{
-	// tracks the requested format for a given waveout buffer
-	struct WaveOutFormat
-	{
-		WaveOutFormat(int bits_per_sample)
-		:	mBitsPerSample(bits_per_sample)
-		{}
-		int	mBitsPerSample;
-	};
-	typedef std::map<HWAVEOUT, WaveOutFormat*> wave_out_map_t;
-	static wave_out_map_t sWaveOuts;						// Covered by sCriticalSection
-
-	MMRESULT WINAPI waveOutOpen( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
-	{
-		ll_winmm_shim_initialize();
-		if (pwfx->wFormatTag != WAVE_FORMAT_PCM
-			|| (pwfx->wBitsPerSample != 8 && pwfx->wBitsPerSample != 16))
-		{ // uncompressed 8 and 16 bit sound are the only types we support
-			return WAVERR_BADFORMAT;
-		}
-
-		MMRESULT result = waveOutOpen_orig(phwo, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen);
-		if (result == MMSYSERR_NOERROR 
-			&& ((fdwOpen & WAVE_FORMAT_QUERY) == 0)) // not just querying for format support
-		{	// remember the requested bits per sample, and associate with the given handle
-			WaveOutFormat* wave_outp = new WaveOutFormat(pwfx->wBitsPerSample);
-			EnterCriticalSection(&sCriticalSection);
-			sWaveOuts.insert(std::make_pair(*phwo, wave_outp));
-			LeaveCriticalSection(&sCriticalSection);
-		}
-		return result;
-	}
-
-	MMRESULT WINAPI waveOutClose( HWAVEOUT hwo)
-	{
-		ll_winmm_shim_initialize();
-		EnterCriticalSection(&sCriticalSection);
-		wave_out_map_t::iterator found_it = sWaveOuts.find(hwo);
-		if (found_it != sWaveOuts.end())
-		{	// forget what we know about this handle
-			delete found_it->second;
-			sWaveOuts.erase(found_it);
-		}
-		LeaveCriticalSection(&sCriticalSection);
-		return waveOutClose_orig(hwo);
-	}
-
-	MMRESULT WINAPI waveOutWrite( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)
-	{
-		ll_winmm_shim_initialize();
-		MMRESULT result = MMSYSERR_NOERROR;
-
-		if (sMute)
-		{ // zero out the audio buffer when muted
-			memset(pwh->lpData, 0, pwh->dwBufferLength);
-		}
-		else if (sVolumeLevel != 1.f) 
-		{ // need to apply volume level
-			int bits_per_sample(0);
-			
-			EnterCriticalSection(&sCriticalSection);
-			wave_out_map_t::iterator found_it = sWaveOuts.find(hwo);
-			if (found_it != sWaveOuts.end())
-			{
-				bits_per_sample = found_it->second->mBitsPerSample;
-			}
-			LeaveCriticalSection(&sCriticalSection);
-			if (bits_per_sample)
-			{
-				switch (bits_per_sample)
-				{
-				case 8:
-					{
-						char volume = (char)(sVolumeLevel * 127.f);
-						for (unsigned int i = 0; i < pwh->dwBufferLength; i++)
-						{
-							// unsigned multiply doesn't use most significant bit, so shift by 7 bits
-							// to get resulting value back into 8 bits
-							pwh->lpData[i] = (pwh->lpData[i] * volume) >> 7;
-						}
-						break;
-					}
-				case 16:
-					{
-						short volume_16 = (short)(sVolumeLevel * 32767.f);
-
-						// copy volume level 4 times into 64 bit MMX register
-						__m64 volume_64 = _mm_set_pi16(volume_16, volume_16, volume_16, volume_16);
-						__m64* sample_64;
-						__m64* last_sample_64 =  (__m64*)(pwh->lpData + pwh->dwBufferLength - sizeof(__m64));
-						// for everything that can be addressed in 64 bit multiples...
-						for (sample_64 = (__m64*)pwh->lpData;
-							sample_64 <= last_sample_64;
-							++sample_64)
-						{
-							//...multiply the samples by the volume...
-							__m64 scaled_sample = _mm_mulhi_pi16(*sample_64, volume_64);
-							// ...and shift left 1 bit since an unsigned multiple loses the most significant bit
-							// 0x7FFF * 0x7FFF = 0x3fff0001
-							// 0x3fff0001 << 1 = 0x7ffe0002
-							// notice that the LSB is always 0...should consider dithering
-							*sample_64 =  _mm_slli_pi16(scaled_sample, 1); 
-						}
-
-						// the captain has turned off the MMX sign, you are now free to use floating point registers
-						_mm_empty();
-
-						// finish remaining samples that didn't fit into 64 bit register
-						for (short* sample_16 = (short*)sample_64;
-							sample_16 < (short*)(pwh->lpData + pwh->dwBufferLength);
-							++sample_16)
-						{	
-							*sample_16 = (*sample_16 * volume_16) >> 15;
-						}
-
-						break;
-					}
-				default:
-					// don't do anything
-					break;
-				}
-			}
-		}
-		return waveOutWrite_orig( hwo, pwh, cbwh);
-	}
-
-	void WINAPI setPluginVolume(float volume)
-	{
-		sVolumeLevel = volume;
-	}
-
-	void WINAPI setPluginMute(bool mute)
-	{
-		sMute = mute;
-	}
-}
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index d6d7d2c563d77d515454db1a7e61135319466635..45ba8d6eb715d51f41771c026e3110f8fc6f6238 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -13,7 +13,6 @@ include(DragDrop)
 include(EXPAT)
 include(FMODEX)
 include(GLOD)
-include(GooglePerfTools)
 include(Hunspell)
 include(JsonCpp)
 include(LLAppearance)
@@ -1682,7 +1681,7 @@ if (WINDOWS)
     set_target_properties(${VIEWER_BINARY_NAME}
         PROPERTIES
         # *TODO -reenable this once we get server usage sorted out
-        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS ${TCMALLOC_LINK_FLAGS} /LARGEADDRESSAWARE"
+        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /LARGEADDRESSAWARE"
         LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO /LARGEADDRESSAWARE"
         LINK_FLAGS_RELEASE "/FORCE:MULTIPLE /MAP\"secondlife-bin.MAP\" /OPT:REF /LARGEADDRESSAWARE"
         )
@@ -1702,20 +1701,8 @@ if (WINDOWS)
     # In the meantime, if you have any ideas on how to easily maintain one list, either here or in viewer_manifest.py
     # and have the build deps get tracked *please* tell me about it.
 
-    if(USE_TCMALLOC)
-      # Configure a var for tcmalloc location, if used.
-      # Note the need to specify multiple names explicitly.
-      set(GOOGLE_PERF_TOOLS_SOURCE
-        ${SHARED_LIB_STAGING_DIR}/Release/libtcmalloc_minimal.dll
-        ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libtcmalloc_minimal.dll
-        ${SHARED_LIB_STAGING_DIR}/Debug/libtcmalloc_minimal-debug.dll
-        )
-     endif(USE_TCMALLOC)
-
-
     set(COPY_INPUT_DEPENDENCIES
       # The following commented dependencies are determined at variably at build time. Can't do this here.
-      #${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libtcmalloc_minimal.dll => None ... Skipping libtcmalloc_minimal.dll
       ${CMAKE_SOURCE_DIR}/../etc/message.xml
       ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg
       ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/llcommon.dll
@@ -1957,7 +1944,6 @@ target_link_libraries(${VIEWER_BINARY_NAME}
     ${LLLOGIN_LIBRARIES}
     ${LLPHYSICS_LIBRARIES}
     ${LLPHYSICSEXTENSIONS_LIBRARIES}
-    ${TCMALLOC_LIBRARIES}
     ${LLAPPEARANCE_LIBRARIES}
     )
 
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 6621b9e269f6a2f0fcb937f4886de22e6dbe4570..fa39dd6c651fe5b01ced2dffabd2d6eb82a5c89d 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -6354,17 +6354,6 @@
       <key>Value</key>
       <integer>512</integer>
     </map>
-    <key>MemProfiling</key>
-    <map>
-      <key>Comment</key>
-      <string>You want to use tcmalloc's memory profiling options.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>MenuAccessKeyTime</key>
     <map>
       <key>Comment</key>
@@ -10046,28 +10035,28 @@
     <key>Value</key>
     <integer>0</integer>
   </map>
-  <key>RenderUseFarClip</key>
-  <map>
-    <key>Comment</key>
-    <string>If false, frustum culling will ignore far clip plane.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>Boolean</string>
-    <key>Value</key>
-    <integer>1</integer>
-  </map>
-  <key>RenderUseImpostors</key>
-  <map>
-    <key>Comment</key>
+    <key>RenderUseFarClip</key>
+    <map>
+      <key>Comment</key>
+      <string>If false, frustum culling will ignore far clip plane.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
+    <key>RenderUseImpostors</key>
+    <map>
+      <key>Comment</key>
     <string>OBSOLETE and UNUSED. See RenderAvatarMaxNonImpostors and RenderAvatarMaxComplexity.</string>
-    <key>Persist</key>
+      <key>Persist</key>
     <integer>0</integer>
-    <key>Type</key>
-    <string>Boolean</string>
-    <key>Value</key>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
     <integer>0</integer>
-  </map>
+    </map>
   <key>RenderAutoMuteByteLimit</key>
   <map>
     <key>Comment</key>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index a0ebae119e57f864dccd7a92e40f81c9046c1af5..c125924fa706bc4455bea3d21aa86b77a4b5169f 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -3284,6 +3284,7 @@ LLSD LLAppViewer::getViewerInfo() const
     if (build_config != "Release")
     {
         info["BUILD_CONFIG"] = build_config;
+        info["ADDRESS_SIZE"] = ADDRESS_SIZE;
     }
 
 	// return a URL to the release notes for this viewer, such as:
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 3d5e2d356ea955a23dcb40a43200c3617e2bb5c1..50a4925c37f8e5fc6841bc52b4edb555d63457ca 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -2133,7 +2133,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 			LLVector4a src;
 
 			U32 vec[4];
-			vec[0] = vec[1] = vec[2] = vec[3] = color.mAll;
+			vec[0] = vec[1] = vec[2] = vec[3] = color.asRGBA();
 		
 			src.loadua((F32*) vec);
 
@@ -2169,7 +2169,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		
 			LLColor4U glow4u = LLColor4U(0,0,0,glow);
 
-			U32 glow32 = glow4u.mAll;
+			U32 glow32 = glow4u.asRGBA();
 
 			U32 vec[4];
 			vec[0] = vec[1] = vec[2] = vec[3] = glow32;
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index 5fc73c67d1bfbbf4c17c1f0464bdfbe096274a51..72faa5a9e747342ce2381b8e39961c7b31fee66b 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -735,7 +735,7 @@ void LLNetMap::renderPoint(const LLVector3 &pos_local, const LLColor4U &color,
 				continue;
 			}
 			S32 offset = px + py * image_width;
-			((U32*)datap)[offset] = color.mAll;
+			((U32*)datap)[offset] = color.asRGBA();
 		}
 
 		// top line
@@ -748,7 +748,7 @@ void LLNetMap::renderPoint(const LLVector3 &pos_local, const LLColor4U &color,
 				continue;
 			}
 			S32 offset = px + py * image_width;
-			((U32*)datap)[offset] = color.mAll;
+			((U32*)datap)[offset] = color.asRGBA();
 		}
 	}
 	else
@@ -770,7 +770,7 @@ void LLNetMap::renderPoint(const LLVector3 &pos_local, const LLColor4U &color,
 					continue;
 				}
 				S32 offset = p_x + p_y * image_width;
-				((U32*)datap)[offset] = color.mAll;
+				((U32*)datap)[offset] = color.asRGBA();
 			}
 		}
 	}
diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp
index a0ca91672aa357f9743dba9cc0f58a4d58f06a11..375dce485d71b2eec8c332f686a689ecb4bb4b9d 100644
--- a/indra/newview/llversioninfo.cpp
+++ b/indra/newview/llversioninfo.cpp
@@ -99,10 +99,16 @@ const std::string &LLVersionInfo::getShortVersion()
 
 namespace
 {
+	// LL_VIEWER_CHANNEL is a macro defined on the compiler command line. The
+	// macro expands to the string name of the channel, but without quotes. We
+	// need to turn it into a quoted string. This macro trick does that.
+#define stringize_inner(x) #x
+#define stringize_outer(x) stringize_inner(x)
+
 	/// Storage of the channel name the viewer is using.
 	//  The channel name is set by hardcoded constant, 
 	//  or by calling LLVersionInfo::resetChannel()
-	std::string sWorkingChannelName(LL_VIEWER_CHANNEL);
+	std::string sWorkingChannelName(stringize_outer(LL_VIEWER_CHANNEL));
 
 	// Storage for the "version and channel" string.
 	// This will get reset too.
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 4dab213fa0e8d16837edc650343a2e000d953ba6..6b4a450e6fe202537a3f4c79495ae488700de155 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -283,7 +283,7 @@ void LLSkyTex::create(const F32 brightness)
 			S32 offset = basic_offset * sComponents;
 			U32* pix = (U32*)(data + offset);
 			LLColor4U temp = LLColor4U(mSkyData[basic_offset]);
-			*pix = temp.mAll;
+			*pix = temp.asRGBA();
 		}
 	}
 	createGLImage(sCurrent);
diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h
index ee8e91fb71d3a869f6e844777665345e5c8d5678..9cfb9773bd8ccb16486e77d3aac7497b851db688 100644
--- a/indra/newview/llvosky.h
+++ b/indra/newview/llvosky.h
@@ -171,7 +171,7 @@ class LLSkyTex
 	{
 		S32 offset = (i * sResolution + j) * sComponents;
 		U32* pix = (U32*) &(mImageRaw[sCurrent]->getData()[offset]);
-		*pix = col.mAll;
+		*pix = col.asRGBA();
 	}
 
 	LLColor4U getPixel(const S32 i, const S32 j)
@@ -179,7 +179,7 @@ class LLSkyTex
 		LLColor4U col;
 		S32 offset = (i * sResolution + j) * sComponents;
 		U32* pix = (U32*) &(mImageRaw[sCurrent]->getData()[offset]);
-		col.mAll = *pix;
+		col.fromRGBA( *pix );
 		return col;
 	}
 
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index dcb259f2bbe8c4babdb27517e0641fa30f66282c..a45c697ddb8384b19203a5083772c6d82887d179 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -25,7 +25,7 @@
 [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL])
 [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
 	</string>
-    <string name="BuildConfig">Build Configuration [BUILD_CONFIG]</string>
+    <string name="BuildConfig">Build Configuration [BUILD_CONFIG] [ADDRESS_SIZE] bits</string>
 
 	<string name="AboutPosition">
 You are at [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] located at &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp
index 6b0be29c2d284ab96b19ff4f8a2bff750196c8b9..f1f69f33f19b7ba2da08e56499e77434dce1e995 100644
--- a/indra/newview/tests/llversioninfo_test.cpp
+++ b/indra/newview/tests/llversioninfo_test.cpp
@@ -29,6 +29,13 @@
 
 #include "../llversioninfo.h"
 
+// LL_VIEWER_CHANNEL is a macro defined on the compiler command line. The
+// macro expands to the string name of the channel, but without quotes. We
+// need to turn it into a quoted string. This macro trick does that.
+#define stringize_inner(x) #x
+#define stringize_outer(x) stringize_inner(x)
+#define ll_viewer_channel stringize_outer(LL_VIEWER_CHANNEL)
+
 namespace tut
 {
     struct versioninfo
@@ -50,7 +57,7 @@ namespace tut
 			mShortVersion = stream.str();
 			stream.str("");
 
-			stream << LL_VIEWER_CHANNEL
+			stream << ll_viewer_channel
 				   << " "
 				   << mVersion;
 			mVersionAndChannel = stream.str();
@@ -89,7 +96,7 @@ namespace tut
 					  LL_VIEWER_VERSION_BUILD);
 		ensure_equals("Channel version", 
 					  LLVersionInfo::getChannel(), 
-					  LL_VIEWER_CHANNEL);
+					  ll_viewer_channel);
 		ensure_equals("Version String", 
 					  LLVersionInfo::getVersion(), 
 					  mVersion);
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 66d730d1aca8d0391944147c6328ed9e5ecc2513..814eee202d75b401d32f214ae1962058010c9c71 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -287,7 +287,8 @@ def extract_names(self,src):
         random.shuffle(names)
         return ', '.join(names)
 
-class Windows_i686_Manifest(ViewerManifest):
+
+class WindowsManifest(ViewerManifest):
     def final_exe(self):
         return self.app_name_oneword()+".exe"
 
@@ -338,7 +339,7 @@ def test_for_no_msvcrt_manifest_and_copy_action(self, src, dst):
             print "Doesn't exist:", src
         
     def construct(self):
-        super(Windows_i686_Manifest, self).construct()
+        super(WindowsManifest, self).construct()
 
         pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')
         relpkgdir = os.path.join(pkgdir, "lib", "release")
@@ -378,18 +379,15 @@ def construct(self):
 
             # Get fmodex dll, continue if missing
             try:
-                if self.args['configuration'].lower() == 'debug':
-                    self.path("fmodexL.dll")
+                if(self.args['arch'].lower() == 'x86_64'):
+                    self.path("fmodex64.dll")
                 else:
                     self.path("fmodex.dll")
             except:
                 print "Skipping fmodex audio library(assuming other audio engine)"
 
             # For textures
-            if self.args['configuration'].lower() == 'debug':
-                self.path("openjpegd.dll")
-            else:
-                self.path("openjpeg.dll")
+            self.path("openjpeg.dll")
 
             # These need to be installed as a SxS assembly, currently a 'private' assembly.
             # See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx
@@ -434,11 +432,6 @@ def construct(self):
         self.path("featuretable.txt")
         self.path("featuretable_xp.txt")
 
-        # Media plugins - QuickTime
-        if self.prefix(src='../media_plugins/quicktime/%s' % self.args['configuration'], dst="llplugin"):
-            self.path("media_plugin_quicktime.dll")
-            self.end_prefix()
-
         # Media plugins - CEF
         if self.prefix(src='../media_plugins/cef/%s' % self.args['configuration'], dst="llplugin"):
             self.path("media_plugin_cef.dll")
@@ -449,11 +442,6 @@ def construct(self):
             self.path("media_plugin_libvlc.dll")
             self.end_prefix()
 
-        # winmm.dll shim
-        if self.prefix(src='../media_plugins/winmmshim/%s' % self.args['configuration'], dst=""):
-            self.path("winmm.dll")
-            self.end_prefix()
-
         # CEF runtime files - debug
         if self.args['configuration'].lower() == 'debug':
             if self.prefix(src=os.path.join(os.pardir, 'packages', 'bin', 'debug'), dst="llplugin"):
@@ -671,7 +659,7 @@ def package_finish(self):
         while (not installer_created) and (nsis_attempts > 0):
             try:
                 nsis_attempts-=1;
-                self.run_command('"' + NSIS_path + '" ' + self.dst_path_of(tempfile))
+                self.run_command('"' + NSIS_path + '" /V2 ' + self.dst_path_of(tempfile))
                 installer_created=True # if no exception was raised, the codesign worked
             except ManifestError, err:
                 if nsis_attempts:
@@ -699,7 +687,17 @@ def package_finish(self):
         self.package_file = installer_file
 
 
-class Darwin_i386_Manifest(ViewerManifest):
+class Windows_i686_Manifest(WindowsManifest):
+    # specialize when we must
+    pass
+
+
+class Windows_x86_64_Manifest(WindowsManifest):
+    # specialize when we must
+    pass
+
+
+class DarwinManifest(ViewerManifest):
     def is_packaging_viewer(self):
         # darwin requires full app bundle packaging even for debugging.
         return True
@@ -725,7 +723,7 @@ def construct(self):
 
             # most everything goes in the Resources directory
             if self.prefix(src="", dst="Resources"):
-                super(Darwin_i386_Manifest, self).construct()
+                super(DarwinManifest, self).construct()
 
                 if self.prefix("cursors_mac"):
                     self.path("*.tif")
@@ -1052,6 +1050,20 @@ def package_finish(self):
         self.package_file = finalname
         self.remove(sparsename)
 
+
+class Darwin_i386_Manifest(DarwinManifest):
+    pass
+
+
+class Darwin_i686_Manifest(DarwinManifest):
+    """alias in case arch is passed as i686 instead of i386"""
+    pass
+
+
+class Darwin_x86_64_Manifest(DarwinManifest):
+    pass
+
+
 class LinuxManifest(ViewerManifest):
     def construct(self):
         super(LinuxManifest, self).construct()
diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt
index 55442b252160c55cff63a5b3f517a170b07f5f4a..8344cead57c32a8f80a01bea1a3f284b2fb11c52 100644
--- a/indra/test/CMakeLists.txt
+++ b/indra/test/CMakeLists.txt
@@ -102,7 +102,6 @@ target_link_libraries(lltest
     ${BOOST_CONTEXT_LIBRARY}
     ${BOOST_SYSTEM_LIBRARY}
     ${DL_LIBRARY}
-    ${GOOGLE_PERFTOOLS_LIBRARIES}
     )
 
 if (WINDOWS)
diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt
deleted file mode 100644
index e682eacccaecf1098532be9ef707645014b4019e..0000000000000000000000000000000000000000
--- a/indra/test_apps/llplugintest/CMakeLists.txt
+++ /dev/null
@@ -1,336 +0,0 @@
-# -*- cmake -*-
-project(llplugintest)
-
-include(00-Common)
-include(OpenGL)
-include(LLCommon)
-include(LLPlugin)
-include(Linking)
-include(LLSharedLibs)
-include(PluginAPI)
-include(LLImage)
-include(LLMath)
-include(LLMessage)
-include(LLRender)
-include(LLWindow)
-include(Glut)
-include(Glui)
-
-include_directories(
-    ${LLPLUGIN_INCLUDE_DIRS}
-    ${LLCOMMON_INCLUDE_DIRS}
-    ${LLIMAGE_INCLUDE_DIRS}
-    ${LLMATH_INCLUDE_DIRS}
-    ${LLMESSAGE_INCLUDE_DIRS}
-    ${LLRENDER_INCLUDE_DIRS}
-    ${LLWINDOW_INCLUDE_DIRS}
-)
-include_directories(SYSTEM
-    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
-    )
-
-if (DARWIN)
-    include(CMakeFindFrameworks)
-    find_library(COREFOUNDATION_LIBRARY CoreFoundation)
-endif (DARWIN)
-
-### demo_plugin
-
-#set(demo_plugin_SOURCE_FILES
-#    demo_plugin.cpp
-#    )
-#
-#add_library(demo_plugin
-#    SHARED
-#    ${demo_plugin_SOURCE_FILES}
-#)
-#
-#target_link_libraries(demo_plugin
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#  ${PLUGIN_API_WINDOWS_LIBRARIES}
-#)
-#
-#add_dependencies(demo_plugin
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#)
-#
-#if (DARWIN)
-#  # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name
-#  set_target_properties(
-#    demo_plugin
-#    PROPERTIES
-#    PREFIX ""
-#    BUILD_WITH_INSTALL_RPATH 1
-#    INSTALL_NAME_DIR "@executable_path"
-#  )
-#endif (DARWIN)
-
-### plugin_host
-
-#set(plugin_host_SOURCE_FILES
-#    plugin_host.cpp
-#    )
-#
-#add_executable(plugin_host
-#    WIN32
-#    ${plugin_host_SOURCE_FILES}
-#)
-#
-#set_target_properties(plugin_host
-#    PROPERTIES
-#    WIN32_EXECUTABLE
-#    FALSE
-#)
-#
-#target_link_libraries(plugin_host
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#  ${PLUGIN_API_WINDOWS_LIBRARIES}
-#)
-#
-#add_dependencies(plugin_host
-#  demo_plugin
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#)
-
-### plugin_process_launcher
-
-#set(plugin_process_launcher_SOURCE_FILES
-#    plugin_process_launcher.cpp
-#    )
-#
-#add_executable(plugin_process_launcher
-#    WIN32
-#    ${plugin_process_launcher_SOURCE_FILES}
-#)
-#
-#set_target_properties(plugin_process_launcher
-#    PROPERTIES
-#    WIN32_EXECUTABLE
-#    FALSE
-#)
-#
-#target_link_libraries(plugin_process_launcher
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLMESSAGE_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#  ${PLUGIN_API_WINDOWS_LIBRARIES}
-#)
-#
-#add_dependencies(plugin_process_launcher
-#  SLPlugin
-#  demo_plugin
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLMESSAGE_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#)
-
-### media_simple_test
-
-#set(media_simple_test_SOURCE_FILES
-#    media_simple_test.cpp
-#    )
-#
-#add_executable(media_simple_test
-#    WIN32
-#    ${media_simple_test_SOURCE_FILES}
-#)
-#
-#add_dependencies(media_simple_test stage_third_party_libs)
-#
-#set_target_properties(media_simple_test
-#    PROPERTIES
-#    WIN32_EXECUTABLE
-#    FALSE
-#)
-#
-#target_link_libraries(media_simple_test
-#  ${GLUT_LIBRARY}
-#  ${OPENGL_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#)
-
-### media_plugin_test
-
-#set(media_plugin_test_SOURCE_FILES
-#    media_plugin_test.cpp
-#    )
-#
-#add_executable(media_plugin_test
-#    WIN32
-#    ${media_plugin_test_SOURCE_FILES}
-#)
-#
-#set_target_properties(media_plugin_test
-#    PROPERTIES
-#    WIN32_EXECUTABLE
-#    FALSE
-#)
-#
-#target_link_libraries(media_plugin_test
-#  ${GLUT_LIBRARY}
-#  ${OPENGL_LIBRARIES}
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLMESSAGE_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#  ${PLUGIN_API_WINDOWS_LIBRARIES}
-#)
-#
-#add_dependencies(media_plugin_test
-#  stage_third_party_libs
-#  SLPlugin
-#  demo_media_plugin
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLMESSAGE_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#)
-
-### demo_media_plugin
-
-#set(demo_media_plugin_SOURCE_FILES
-#    demo_media_plugin.cpp
-#    )
-#
-#add_library(demo_media_plugin
-#    SHARED
-#    ${demo_media_plugin_SOURCE_FILES}
-#)
-#
-#target_link_libraries(demo_media_plugin
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#  ${PLUGIN_API_WINDOWS_LIBRARIES}
-#)
-#
-#add_dependencies(demo_media_plugin
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#)
-#
-#if (DARWIN)
-#  # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name
-#  set_target_properties(
-#    demo_media_plugin
-#    PROPERTIES
-#    PREFIX ""
-#    BUILD_WITH_INSTALL_RPATH 1
-#    INSTALL_NAME_DIR "@executable_path"
-#  )
-#endif (DARWIN)
-
-### demo_media_plugin_2
-
-#set(demo_media_plugin_2_SOURCE_FILES
-#    demo_media_plugin_2.cpp
-#    )
-#
-#add_library(demo_media_plugin_2
-#    SHARED
-#    ${demo_media_plugin_2_SOURCE_FILES}
-#)
-#
-#target_link_libraries(demo_media_plugin_2
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#  ${PLUGIN_API_WINDOWS_LIBRARIES}
-#)
-#
-#add_dependencies(demo_media_plugin_2
-#  ${LLPLUGIN_LIBRARIES}
-#  ${LLCOMMON_LIBRARIES}
-#)
-#
-#if (DARWIN)
-#  # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name
-#  set_target_properties(
-#    demo_media_plugin_2
-#    PROPERTIES
-#    PREFIX ""
-#    BUILD_WITH_INSTALL_RPATH 1
-#    INSTALL_NAME_DIR "@executable_path"
-#  )
-#endif (DARWIN)
-
-# Gather build products of the various dependencies into the build directory for the testbed.
-
-if(WINDOWS)
-  #********************
-  # Plugin test library deploy
-  #
-  # Debug config runtime files required for the plugin test mule
-  set(plugintest_debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
-  set(plugintest_debug_files
-    libeay32.dll
-    libglib-2.0-0.dll
-    libgmodule-2.0-0.dll
-    libgobject-2.0-0.dll
-    libgthread-2.0-0.dll
-    ssleay32.dll
-    )
-  copy_if_different(
-    ${plugintest_debug_src_dir}
-    "${CMAKE_CURRENT_BINARY_DIR}/Debug"
-    out_targets
-    ${plugintest_debug_files}
-    )
-  set(plugin_test_targets ${plugin_test_targets} ${out_targets})
-  
-  # Release & ReleaseDebInfo config runtime files required for the plugin test mule
-  set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-  set(plugintest_release_files
-    libeay32.dll
-    libglib-2.0-0.dll
-    libgmodule-2.0-0.dll
-    libgobject-2.0-0.dll
-    libgthread-2.0-0.dll
-    ssleay32.dll
-    )
-  copy_if_different(
-    ${plugintest_release_src_dir}
-    "${CMAKE_CURRENT_BINARY_DIR}/Release"
-    out_targets
-    ${plugintest_release_files}
-    )
-  set(plugin_test_targets ${plugin_test_targets} ${out_targets})
-
-  copy_if_different(
-    ${plugintest_release_src_dir}
-    "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo"
-    out_targets
-    ${plugintest_release_files}
-    )
-  set(plugin_test_targets ${plugin_test_targets} ${out_targets})
-
-   add_custom_target(copy_plugintest_libs ALL
-     DEPENDS 
-     ${plugin_test_targets}
-     )
-
-endif(WINDOWS)
-
-if (DARWIN)
-  set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-  set(plugintest_release_files
-    libexception_handler.dylib
-    libaprutil-1.0.dylib
-    libapr-1.0.dylib
-    libexpat.1.5.2.dylib
-    )
-  copy_if_different(
-    ${plugintest_release_src_dir}
-    "${PLUGINS_DESTINATION_DIR}"
-    out_targets
-    ${plugintest_release_files}
-    )
-  set(plugin_test_targets ${plugin_test_targets} ${out_targets})
-
-  add_custom_target(copy_plugintest_libs ALL
-    DEPENDS 
-    ${plugin_test_targets}
-    )
-
-endif (DARWIN)
-
diff --git a/indra/test_apps/llplugintest/README.Linden b/indra/test_apps/llplugintest/README.Linden
deleted file mode 100644
index 4a9f223c21f183528bc1edac3d1ba1f5592e84ae..0000000000000000000000000000000000000000
--- a/indra/test_apps/llplugintest/README.Linden
+++ /dev/null
@@ -1,21 +0,0 @@
-
-1.  Description
-
-    Exercises SLPlugin.  Demonstrates mediakit plugin reuse and
-    switchover as MIME type changes (web, quicktime, flash).
-
-
-2.  Running
-
-  2.1  Mac
-
-    Make certain '.' is included in PATH.  E.g.:
-
-       PATH=.:"$PATH" open build-darwin-i386/test_apps/llmediaplugintest/RelWithDebInfo/llmediaplugintest.app
-
-    Otherwise the program won't find SLPlugin and will timeout and
-    fail after 30 seconds and give you little information as to why.
-
-    Running 'dtruss' on plugin test applications will give you a great
-    deal of insight into why they aren't activating.
-
diff --git a/indra/test_apps/llplugintest/bookmarks.txt b/indra/test_apps/llplugintest/bookmarks.txt
deleted file mode 100644
index 2ff64f217f57aa331aee5b21c465c50b30e73d34..0000000000000000000000000000000000000000
--- a/indra/test_apps/llplugintest/bookmarks.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-# format is description, url (don't put ',' chars in description :)
-# if no ',' found, whole line is used for both description and url
-(WK) Google Home Page,http://www.google.com
-(WK) BBC News Home Page,http://news.bbc.co.uk
-(WK) Second Life,http://secondlife.com
-(WK) WebKit Home ,http://www.webkit.org
-(WK) Yahoo News,http://news.yahoo.com
-(WK) Canvas Paint (DHTML version of MS Paint),http://www.canvaspaint.org
-(WK) DHTML Lemmings!,http://www.elizium.nu/scripts/lemmings/
-(WK) DHTML graphics demos,http://www.dhteumeuleu.com/
-(WK) Shared paint app,http://colorillo.com/ac79?1l0q6cp
-(Flash) YouTube,http://youtube.com
-(Flash) Vimeo,http://www.vimeo.com/1778399
-(Flash) Simple whiteboard,http://www.imaginationcubed.com/
-(Flash) Dabble Board,http://www.dabbleboard.com/draw
-(Flash) Bubble Shooter game,http://www.wiicade.com/playGame.aspx?gameID=72&gameName=Bubble%20Shooter 
-(Flash) Pixlr photo editor,http://pixlr.com/editor/
-(Flash) Scribd,http://www.scribd.com/doc/14427744/Second-Life-Quickstart-Guide
-(Flash) MAME,http://yvern.com/fMAME/fMAME.html
-(QT) Local sample,file:///C|/Program Files/QuickTime/Sample.mov
-(QT) Movie - Watchmen Trailer,http://trailers.apple.com/movies/wb/watchmen/watchmen-tlr2_480p.mov
-(QT) Movie - Transformers - Revenge of the Fallen,http://trailers.apple.com/movies/paramount/transformers2/transformersrevengeofthefallen-tlr1_h.320.mov
-(QT) Movie - Terminator Salvation,http://trailers.apple.com/movies/wb/terminatorsalvation/terminatorsalvation-tlr3_h.320.mov
-(QT) Movie - Angels and Demons,http://trailers.apple.com/movies/sony_pictures/angelsanddemons/angelsanddemons-video_h.320.mov
-(QT) Movie - Sin City Trailer,http://trailers.apple.com/movies/miramax/sin_city/sin_city_480.mov
-(QT) Movie - The Incredibles Trailer,http://trailers.apple.com/movies/disney/the_incredibles/the_incredibles-tlr_a480.mov
-(QT) Movie - Streaming Apple Event,http://stream.qtv.apple.com/events/mar/0903lajkszg/m_090374535329zdwg_650_ref.mov
-(QT) Movie - MPEG-4 from Amazon S3,http://s3.amazonaws.com/callum-linden/flashdemo/interactive_flash_demo.mp4
-(QT) Movie - Star Trek,http://trailers.apple.com/movies/paramount/star_trek/startrek-tlr3_h.320.mov
-(QT) Movie - Ice Age 3,http://trailers.apple.com/movies/fox/ice_age_iii/iceage3-tlrd_h.320.mov
-(QT) Movie - AstroBoy,http://trailers.apple.com/movies/summit/astroboy/astroboy-tsr_h.320.mov
-(QT) Movie - Ante Up,http://trailers.apple.com/movies/independent/anteup/anteup_h.320.mov
-(QT) Movie - Every Little Step,http://trailers.apple.com/movies/sony/everylittlestep/everylittlestep-clip_h.320.mov
-(QT) Movie - The Informers,http://trailers.apple.com/movies/independent/theinformers/theinformers_h.320.mov
-(QT) Animated GIF,http://upload.wikimedia.org/wikipedia/commons/4/44/Optical.greysquares.arp-animated.gif
-(QT) Apple Text Descriptors,http://ubrowser.com/tmp/apple_text.txt
-(EX) Example Plugin,example://blah
diff --git a/scripts/packages-formatter.py b/scripts/packages-formatter.py
index 928d340b69b3976e04d65f8b55df77c20483bcc2..f91f5819b790417b47a2601afc27906c50231902 100755
--- a/scripts/packages-formatter.py
+++ b/scripts/packages-formatter.py
@@ -29,6 +29,12 @@
 import errno
 import re
 import subprocess
+import argparse
+
+parser = argparse.ArgumentParser(description='Format dependency version and copyright information for the viewer About box content')
+parser.add_argument('channel', help='viewer channel name')
+parser.add_argument('version', help='viewer version number')
+args = parser.parse_args()
 
 _autobuild=os.getenv('AUTOBUILD', 'autobuild')
 
@@ -50,9 +56,8 @@ def autobuild(*args):
             # Don't attempt to interpret anything but ENOENT
             raise
         # Here it's ENOENT: subprocess can't find the autobuild executable.
-        print >>sys.stderr, "packages-formatter on %s: can't run autobuild:\n%s\n%s" % \
-              (sys.platform, ' '.join(command), err)
-        sys.exit(1)
+        sys.exit("packages-formatter on %s: can't run autobuild:\n%s\n%s" % \
+                 (sys.platform, ' '.join(command), err))
 
     # no exceptions yet, let caller read stdout
     return child.stdout
@@ -84,6 +89,7 @@ def autobuild(*args):
     else:
         sys.exit("Unrecognized --copyrights output: %s" % line)
 
+print "%s %s" % (args.channel, args.version)
 print viewer_copyright
 for pkg in sorted(version):
     print ': '.join([pkg, version[pkg]])