(function () { var random_count = 0; var random_count_threshold = 25; var random_seed = 0.462; Math.random = function() { random_count++; if (random_count > random_count_threshold){ random_seed += 0.1; random_count = 1; } return (random_seed % 1); }; if (typeof(crypto) == 'object' && typeof(crypto.getRandomValues) == 'function') { crypto.getRandomValues = function(arr) { var scale = Math.pow(256, arr.BYTES_PER_ELEMENT); for (var i = 0; i < arr.length; i++) { arr[i] = Math.floor(Math.random() * scale); } return arr; }; } })(); (function () { var date_count = 0; var date_count_threshold = 25; var orig_date = Date; var time_seed = 1204251968254; Date = function() { if (this instanceof Date) { date_count++; if (date_count > date_count_threshold){ time_seed += 50; date_count = 1; } switch (arguments.length) { case 0: return new orig_date(time_seed); case 1: return new orig_date(arguments[0]); default: return new orig_date(arguments[0], arguments[1], arguments.length >= 3 ? arguments[2] : 1, arguments.length >= 4 ? arguments[3] : 0, arguments.length >= 5 ? arguments[4] : 0, arguments.length >= 6 ? arguments[5] : 0, arguments.length >= 7 ? arguments[6] : 0); } } return new Date().toString(); }; Date.__proto__ = orig_date; Date.prototype = orig_date.prototype; Date.prototype.constructor = Date; orig_date.now = function() { return new Date().getTime(); }; orig_date.prototype.getTimezoneOffset = function() { var dst2010Start = 1268560800000; var dst2010End = 1289120400000; if (this.getTime() >= dst2010Start && this.getTime() < dst2010End) return 420; return 480; }; })();