var t=Array.prototype.slice,n=Object.prototype.toString,o=function(o){var r=this;if("function"!=typeof r||"[object Function]"!==n.call(r))throw new TypeError("Function.prototype.bind called on incompatible "+r);for(var e,p=t.call(arguments,1),i=Math.max(0,r.length-p.length),c=[],a=0;a