/**
 * @license
 * Copyright 2012 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// WeakMap Polyfill, doesn't implement the full interface, just the parts
// that FOAM uses.
// TODO: Use defineProperty to make hidden property
if ( ! window.WeakMap ) {
  function WeakMap() {
    var id = '__WEAK_MAP__' + this.$UID;

    function del(key) { delete key[id]; }
    function get(key) { return key[id]; }
    function set(key, value) { key[id] = value; }
    function has(key) { return !!key[id]; }

    return {
      __proto__: this,
      "delete": del,
      get: get,
      set: set,
      has: has
    };
  }
}

@@ -795,16 +795,114 @@
 ap ) %7B%0A 
+ Object.defineProperty(window, 'WeakMap', %7B%0A    configurable: true,%0A    writable: true,%0A    value:
  functio
@@ -919,16 +919,18 @@
 ) %7B%0A    
+  
 var id =
@@ -959,16 +959,18 @@
 .$UID;%0A%0A
+  
     func
@@ -999,32 +999,34 @@
  key%5Bid%5D; %7D%0A    
+  
 function get(key
@@ -1043,24 +1043,26 @@
  key%5Bid%5D; %7D%0A
+  
     function
@@ -1099,24 +1099,26 @@
 alue; %7D%0A    
+  
 function has
@@ -1150,16 +1150,18 @@
  %7D%0A%0A    
+  
 return %7B
@@ -1161,16 +1161,18 @@
 eturn %7B%0A
+  
       __
@@ -1186,16 +1186,18 @@
 : this,%0A
+  
       %22d
@@ -1215,16 +1215,18 @@
 ,%0A      
+  
 get: get
@@ -1223,24 +1223,26 @@
   get: get,%0A
+  
       set: s
@@ -1251,16 +1251,18 @@
 ,%0A      
+  
 has: has
@@ -1262,16 +1262,18 @@
 as: has%0A
+  
     %7D;%0A 
@@ -1273,12 +1273,20 @@
    %7D;%0A  
-%7D
+  %7D%0A  %7D);
 %0A%7D%0A

Make the WeakMap polyfill configurable so that other polyfils can override it.