Socket
Socket
Sign inDemoInstall

zone.js

Package Overview
Dependencies
Maintainers
3
Versions
124
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zone.js - npm Package Compare versions

Comparing version 0.8.5 to 0.8.6

dist/zone_externs.js

30

CHANGELOG.md

@@ -0,1 +1,31 @@

<a name="0.8.6"></a>
## [0.8.6](https://github.com/angular/zone.js/compare/v0.8.5...0.8.6) (2017-04-21)
### Bug Fixes
* **doc:** fix typo in document, fix a typescript warning in test ([#732](https://github.com/angular/zone.js/issues/732)) ([55cf064](https://github.com/angular/zone.js/commit/55cf064))
* **error:** fix [#706](https://github.com/angular/zone.js/issues/706), handleError when onHasTask throw error ([#709](https://github.com/angular/zone.js/issues/709)) ([06d1ac0](https://github.com/angular/zone.js/commit/06d1ac0))
* **error:** remove throw in Error constructor to improve performance in IE11 ([#704](https://github.com/angular/zone.js/issues/704)) ([88d1a49](https://github.com/angular/zone.js/commit/88d1a49)), closes [#698](https://github.com/angular/zone.js/issues/698)
* **listener:** fix [#616](https://github.com/angular/zone.js/issues/616), webdriver removeEventListener throw permission denied error ([#699](https://github.com/angular/zone.js/issues/699)) ([e02960d](https://github.com/angular/zone.js/commit/e02960d))
* **patch:** fix [#707](https://github.com/angular/zone.js/issues/707), should not try to patch non configurable property ([#717](https://github.com/angular/zone.js/issues/717)) ([e422fb1](https://github.com/angular/zone.js/commit/e422fb1))
* **patch:** fix [#708](https://github.com/angular/zone.js/issues/708), modify the canPatchDescriptor logic when browser don't provide onreadystatechange ([#711](https://github.com/angular/zone.js/issues/711)) ([7d4d07f](https://github.com/angular/zone.js/commit/7d4d07f))
* **patch:** fix [#719](https://github.com/angular/zone.js/issues/719), window onproperty callback this is undefined ([#723](https://github.com/angular/zone.js/issues/723)) ([160531b](https://github.com/angular/zone.js/commit/160531b))
* **task:** fix [#705](https://github.com/angular/zone.js/issues/705), don't json task.data to prevent cyclic error ([#712](https://github.com/angular/zone.js/issues/712)) ([92a39e2](https://github.com/angular/zone.js/commit/92a39e2))
* **test:** fix [#718](https://github.com/angular/zone.js/issues/718), use async test to do unhandle promise rejection test ([#726](https://github.com/angular/zone.js/issues/726)) ([0a06874](https://github.com/angular/zone.js/commit/0a06874))
* **test:** fix websocket test server will crash when test in chrome ([#733](https://github.com/angular/zone.js/issues/733)) ([5090cf9](https://github.com/angular/zone.js/commit/5090cf9))
* **toString:** fix [#666](https://github.com/angular/zone.js/issues/666), Zone patched method toString should like before patched ([#686](https://github.com/angular/zone.js/issues/686)) ([0d0ee53](https://github.com/angular/zone.js/commit/0d0ee53))
* resolve errors with closure ([#722](https://github.com/angular/zone.js/issues/722)) ([51e7ffe](https://github.com/angular/zone.js/commit/51e7ffe))
* **typo:** fix typo, remove extra semicolons, unify api doc ([#697](https://github.com/angular/zone.js/issues/697)) ([967a991](https://github.com/angular/zone.js/commit/967a991))
### Features
* **closure:** fix [#727](https://github.com/angular/zone.js/issues/727), add zone_externs.js for closure compiler ([#731](https://github.com/angular/zone.js/issues/731)) ([b60e9e6](https://github.com/angular/zone.js/commit/b60e9e6))
* **error:** Remove all Zone frames from stack ([#693](https://github.com/angular/zone.js/issues/693)) ([681a017](https://github.com/angular/zone.js/commit/681a017))
* **EventListenerOptions:** fix [#737](https://github.com/angular/zone.js/issues/737), add support to EventListenerOptions ([#738](https://github.com/angular/zone.js/issues/738)) ([a89830d](https://github.com/angular/zone.js/commit/a89830d))
* **patch:** fix [#499](https://github.com/angular/zone.js/issues/499), let promise instance toString active like native ([#734](https://github.com/angular/zone.js/issues/734)) ([2f11e67](https://github.com/angular/zone.js/commit/2f11e67))
<a name="0.8.5"></a>

@@ -2,0 +32,0 @@ ## [0.8.5](https://github.com/angular/zone.js/compare/v0.8.4...0.8.5) (2017-03-21)

2

dist/jasmine-patch.js

@@ -57,3 +57,3 @@ /**

// - In it() try to do fakeAsync(). The issue is that because the beforeEach forked the
// zone outside of fakeAsync it will be able to escope the fakeAsync rules.
// zone outside of fakeAsync it will be able to escape the fakeAsync rules.
// - Because ProxyZone is parent fo `childZone` fakeAsync can retroactively add

@@ -60,0 +60,0 @@ // fakeAsync behavior to the childZone.

@@ -70,3 +70,3 @@ /**

function renderLongStackTrace(frames, stack) {
var longTrace = [stack.trim()];
var longTrace = [stack ? stack.trim() : ''];
if (frames) {

@@ -103,22 +103,34 @@ var timestamp = new Date().getTime();

onScheduleTask: function (parentZoneDelegate, currentZone, targetZone, task) {
var currentTask = Zone.currentTask;
var trace = currentTask && currentTask.data && currentTask.data[creationTrace] || [];
trace = [new LongStackTrace()].concat(trace);
if (trace.length > this.longStackTraceLimit) {
trace.length = this.longStackTraceLimit;
if (Error.stackTraceLimit > 0) {
// if Error.stackTraceLimit is 0, means stack trace
// is disabled, so we don't need to generate long stack trace
// this will improve performance in some test(some test will
// set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698
var currentTask = Zone.currentTask;
var trace = currentTask && currentTask.data && currentTask.data[creationTrace] || [];
trace = [new LongStackTrace()].concat(trace);
if (trace.length > this.longStackTraceLimit) {
trace.length = this.longStackTraceLimit;
}
if (!task.data)
task.data = {};
task.data[creationTrace] = trace;
}
if (!task.data)
task.data = {};
task.data[creationTrace] = trace;
return parentZoneDelegate.scheduleTask(targetZone, task);
},
onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) {
var parentTask = Zone.currentTask || error.task;
if (error instanceof Error && parentTask) {
var longStack = renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);
try {
error.stack = error.longStack = longStack;
if (Error.stackTraceLimit > 0) {
// if Error.stackTraceLimit is 0, means stack trace
// is disabled, so we don't need to generate long stack trace
// this will improve performance in some test(some test will
// set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698
var parentTask = Zone.currentTask || error.task;
if (error instanceof Error && parentTask) {
var longStack = renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);
try {
error.stack = error.longStack = longStack;
}
catch (err) {
}
}
catch (err) {
}
}

@@ -135,2 +147,5 @@ return parentZoneDelegate.handleError(targetZone, error);

function computeIgnoreFrames() {
if (Error.stackTraceLimit <= 0) {
return;
}
var frames = [];

@@ -137,0 +152,0 @@ captureStackTraces(frames, 2);

@@ -1,1 +0,1 @@

!function(t,a){"object"==typeof exports&&"undefined"!=typeof module?a():"function"==typeof define&&define.amd?define(a):a()}(this,function(){"use strict";function t(){return new Error(u)}function a(){try{throw t()}catch(a){return a}}function e(t){return t.stack?t.stack.split(i):[]}function n(t,a){for(var n=e(a),r=0;r<n.length;r++){var c=n[r];s.hasOwnProperty(c)||t.push(n[r])}}function r(t,a){var e=[a.trim()];if(t)for(var r=(new Date).getTime(),c=0;c<t.length;c++){var o=t[c],s=o.timestamp,f="____________________Elapsed "+(r-s.getTime())+" ms; At: "+s;f=f.replace(/[^\w\d]/g,"_"),e.push(h.replace(_,f)),n(e,o.error),r=s.getTime()}return e.join(i)}function c(t,a){a>0&&(t.push(e((new l).error)),c(t,a-1))}function o(){var t=[];c(t,2);for(var a=t[0],e=t[1],n=0;n<a.length;n++){var r=a[n];if(r.indexOf(u)==-1){var o=r.match(/^\s*at\s+/);if(o){h=o[0]+_+" (http://localhost)";break}}}for(var n=0;n<a.length;n++){var r=a[n],i=e[n];if(r!==i)break;s[r]=!0}}var i="\n",s={},f="__creationTrace__",u="STACKTRACE TRACKING",_="__SEP_TAG__",h=_+"@[native]",l=function(){function t(){this.error=g(),this.timestamp=new Date}return t}(),d=t(),k=a(),g=d.stack?t:k.stack?a:t;Zone.longStackTraceZoneSpec={name:"long-stack-trace",longStackTraceLimit:10,getLongStackTrace:function(t){if(t){var a=t[Zone.__symbol__("currentTask")],e=a&&a.data&&a.data[f];return e?r(e,t.stack):t.stack}},onScheduleTask:function(t,a,e,n){var r=Zone.currentTask,c=r&&r.data&&r.data[f]||[];return c=[new l].concat(c),c.length>this.longStackTraceLimit&&(c.length=this.longStackTraceLimit),n.data||(n.data={}),n.data[f]=c,t.scheduleTask(e,n)},onHandleError:function(t,a,e,n){var c=Zone.currentTask||n.task;if(n instanceof Error&&c){var o=r(c.data&&c.data[f],n.stack);try{n.stack=n.longStack=o}catch(i){}}return t.handleError(e,n)}},o()});
!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r():"function"==typeof define&&define.amd?define(r):r()}(this,function(){"use strict";function t(){return new Error(u)}function r(){try{throw t()}catch(r){return r}}function a(t){return t.stack?t.stack.split(o):[]}function e(t,r){for(var e=a(r),n=0;n<e.length;n++){var c=e[n];s.hasOwnProperty(c)||t.push(e[n])}}function n(t,r){var a=[r?r.trim():""];if(t)for(var n=(new Date).getTime(),c=0;c<t.length;c++){var i=t[c],s=i.timestamp,f="____________________Elapsed "+(n-s.getTime())+" ms; At: "+s;f=f.replace(/[^\w\d]/g,"_"),a.push(k.replace(_,f)),e(a,i.error),n=s.getTime()}return a.join(o)}function c(t,r){r>0&&(t.push(a((new h).error)),c(t,r-1))}function i(){if(!(Error.stackTraceLimit<=0)){var t=[];c(t,2);for(var r=t[0],a=t[1],e=0;e<r.length;e++){var n=r[e];if(n.indexOf(u)==-1){var i=n.match(/^\s*at\s+/);if(i){k=i[0]+_+" (http://localhost)";break}}}for(var e=0;e<r.length;e++){var n=r[e],o=a[e];if(n!==o)break;s[n]=!0}}}var o="\n",s={},f="__creationTrace__",u="STACKTRACE TRACKING",_="__SEP_TAG__",k=_+"@[native]",h=function(){function t(){this.error=T(),this.timestamp=new Date}return t}(),l=t(),d=r(),T=l.stack?t:d.stack?r:t;Zone.longStackTraceZoneSpec={name:"long-stack-trace",longStackTraceLimit:10,getLongStackTrace:function(t){if(t){var r=t[Zone.__symbol__("currentTask")],a=r&&r.data&&r.data[f];return a?n(a,t.stack):t.stack}},onScheduleTask:function(t,r,a,e){if(Error.stackTraceLimit>0){var n=Zone.currentTask,c=n&&n.data&&n.data[f]||[];c=[new h].concat(c),c.length>this.longStackTraceLimit&&(c.length=this.longStackTraceLimit),e.data||(e.data={}),e.data[f]=c}return t.scheduleTask(a,e)},onHandleError:function(t,r,a,e){if(Error.stackTraceLimit>0){var c=Zone.currentTask||e.task;if(e instanceof Error&&c){var i=n(c.data&&c.data[f],e.stack);try{e.stack=e.longStack=i}catch(o){}}}return t.handleError(a,e)}},i()});

@@ -21,3 +21,3 @@ /**

*/
(function (_global) {
(function () {
var __symbol__ = Zone.__symbol__;

@@ -34,4 +34,4 @@ // TODO: @JiaLiPassion, we can automatically patch bluebird

};
})(typeof window === 'object' && window || typeof self === 'object' && self || global);
})();
})));

@@ -1,1 +0,1 @@

!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o():"function"==typeof define&&define.amd?define(o):o()}(this,function(){"use strict";!function(e){var o=Zone.__symbol__;Zone[o("bluebird")]=function(e){e.setScheduler(function(e){Zone.current.scheduleMicroTask("bluebird",e)})}}("object"==typeof window&&window||"object"==typeof self&&self||global)});
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(this,function(){"use strict";!function(){var e=Zone.__symbol__;Zone[e("bluebird")]=function(e){e.setScheduler(function(e){Zone.current.scheduleMicroTask("bluebird",e)})}}()});

@@ -182,3 +182,3 @@ /**

*
* The invocation of `callback` can be intercepted be declaring [ZoneSpec.onInvoke].
* The invocation of `callback` can be intercepted by declaring [ZoneSpec.onInvoke].
*

@@ -197,3 +197,3 @@ * @param callback The function to invoke.

*
* The invocation of `callback` can be intercepted be declaring [ZoneSpec.onInvoke]. The
* The invocation of `callback` can be intercepted by declaring [ZoneSpec.onInvoke]. The
* handling of exceptions can intercepted by declaring [ZoneSpec.handleError].

@@ -211,3 +211,3 @@ *

*
* @param callback
* @param task to run
* @param applyThis

@@ -293,7 +293,7 @@ * @param applyArgs

/**
* The name of the zone. Usefull when debugging Zones.
* The name of the zone. Useful when debugging Zones.
*/
name: string;
/**
* A set of properties to be associated with Zone. Use [Zone.get] to retrive them.
* A set of properties to be associated with Zone. Use [Zone.get] to retrieve them.
*/

@@ -309,3 +309,3 @@ properties?: {

* @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation.
* @param currentZone The current [Zone] where the current interceptor has beed declared.
* @param currentZone The current [Zone] where the current interceptor has been declared.
* @param targetZone The [Zone] which originally received the request.

@@ -319,3 +319,3 @@ * @param zoneSpec The argument passed into the `fork` method.

* @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation.
* @param currentZone The current [Zone] where the current interceptor has beed declared.
* @param currentZone The current [Zone] where the current interceptor has been declared.
* @param targetZone The [Zone] which originally received the request.

@@ -330,3 +330,3 @@ * @param delegate The argument passed into the `warp` method.

* @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation.
* @param currentZone The current [Zone] where the current interceptor has beed declared.
* @param currentZone The current [Zone] where the current interceptor has been declared.
* @param targetZone The [Zone] which originally received the request.

@@ -343,3 +343,3 @@ * @param delegate The argument passed into the `run` method.

* @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation.
* @param currentZone The current [Zone] where the current interceptor has beed declared.
* @param currentZone The current [Zone] where the current interceptor has been declared.
* @param targetZone The [Zone] which originally received the request.

@@ -353,3 +353,3 @@ * @param error The argument passed into the `handleError` method.

* @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation.
* @param currentZone The current [Zone] where the current interceptor has beed declared.
* @param currentZone The current [Zone] where the current interceptor has been declared.
* @param targetZone The [Zone] which originally received the request.

@@ -361,6 +361,6 @@ * @param task The argument passed into the `scheduleTask` method.

/**
* Allows interception of task cancelation.
* Allows interception of task cancellation.
*
* @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation.
* @param currentZone The current [Zone] where the current interceptor has beed declared.
* @param currentZone The current [Zone] where the current interceptor has been declared.
* @param targetZone The [Zone] which originally received the request.

@@ -374,7 +374,7 @@ * @param task The argument passed into the `cancelTask` method.

* @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation.
* @param currentZone The current [Zone] where the current interceptor has beed declared.
* @param currentZone The current [Zone] where the current interceptor has been declared.
* @param targetZone The [Zone] which originally received the request.
* @param isEmpty
* @param hasTaskState
*/
onHasTask?: (delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: HasTaskState) => void;
onHasTask?: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, hasTaskState: HasTaskState) => void;
}

@@ -521,3 +521,3 @@ /**

* Cancel the scheduling request. This method can be called from `ZoneSpec.onScheduleTask` to
* cancel the current scheduling interception. Once canceled the task can be discarted or
* cancel the current scheduling interception. Once canceled the task can be discarded or
* rescheduled using `Zone.scheduleTask` on a different zone.

@@ -545,3 +545,3 @@ */

/**
* Original stack trace with no modiffications
* Original stack trace with no modifications
*/

@@ -548,0 +548,0 @@ originalStack?: string;

@@ -1,1 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";function e(e,t){for(var n=e.length-1;n>=0;n--)"function"==typeof e[n]&&(e[n]=Zone.current.wrap(e[n],t+"_"+n));return e}function t(t,n){for(var r=t.constructor.name,o=function(o){var a=n[o],i=t[a];i&&(t[a]=function(t){return function(){return t.apply(this,e(arguments,r+"."+a))}}(i))},a=0;a<n.length;a++)o(a)}function n(e,t){var n=Object.getOwnPropertyDescriptor(e,t)||{enumerable:!0,configurable:!0},r=Object.getOwnPropertyDescriptor(e,"original"+t);!r&&n.get&&Object.defineProperty(e,"original"+t,{enumerable:!1,configurable:!0,get:n.get}),delete n.writable,delete n.value;var o=t.substr(2),a=O("_"+t);n.set=function(e){if(this[a]&&this.removeEventListener(o,this[a]),"function"==typeof e){var t=function(t){var n;return n=e.apply(this,arguments),void 0==n||n||t.preventDefault(),n};this[a]=t,this.addEventListener(o,t,!1)}else this[a]=null},n.get=function(){var e=this[a]||null;return null===e&&r&&r.get&&(e=r.get.apply(this,arguments),e&&(n.set.apply(this,[e]),"function"==typeof this.removeAttribute&&this.removeAttribute(t))),this[a]||null},Object.defineProperty(e,t,n)}function r(e,t){var r=[];for(var o in e)"on"==o.substr(0,2)&&r.push(o);for(var a=0;a<r.length;a++)n(e,r[a]);if(t)for(var i=0;i<t.length;i++)n(e,"on"+t[i])}function o(e,t,n,r,o){var a=e[I];if(a)for(var i=0;i<a.length;i++){var s=a[i],c=s.data,u=c.handler;if((c.handler===t||u.listener===t)&&c.useCapturing===r&&c.eventName===n)return o&&a.splice(i,1),s}return null}function a(e,t,n){var r=e[I];r||(r=e[I]=[]),n?r.unshift(t):r.push(t)}function i(e,t,n,r,i,s){function c(e){var t=e.data;return a(t.target,e,i),t.invokeAddFunc(l,e)}function u(e){var t=e.data;return o(t.target,e.invoke,t.eventName,t.useCapturing,!0),t.invokeRemoveFunc(h,e)}void 0===n&&(n=!0),void 0===r&&(r=!1),void 0===i&&(i=!1),void 0===s&&(s=F);var l=O(e),h=O(t),f=!n&&void 0;return function(t,n){var a=s(t,n);a.useCapturing=a.useCapturing||f;var i=null;"function"==typeof a.handler?i=a.handler:a.handler&&a.handler.handleEvent&&(i=function(e){return a.handler.handleEvent(e)});var h=!1;try{h=a.handler&&"[object FunctionWrapper]"===a.handler.toString()}catch(p){return}if(!i||h)return a.invokeAddFunc(l,a.handler);if(!r){var d=o(a.target,a.handler,a.eventName,a.useCapturing,!1);if(d)return a.invokeAddFunc(l,d)}var v=Zone.current,k=a.target.constructor.name+"."+e+":"+a.eventName;v.scheduleEventTask(k,i,a,c,u)}}function s(e,t,n){void 0===t&&(t=!0),void 0===n&&(n=F);var r=O(e),a=!t&&void 0;return function(e,t){var i=n(e,t);i.useCapturing=i.useCapturing||a;var s=o(i.target,i.handler,i.eventName,i.useCapturing,!0);s?s.zone.cancelTask(s):i.invokeRemoveFunc(r,i.handler)}}function c(e,t,n,r){return void 0===t&&(t=L),void 0===n&&(n=M),void 0===r&&(r=F),!(!e||!e[t])&&(h(e,t,function(){return i(t,n,!0,!1,!1,r)}),h(e,n,function(){return s(n,!0,r)}),!0)}function u(t){var n=Z[t];if(n){Z[t]=function(){var r=e(arguments,t);switch(r.length){case 0:this[H]=new n;break;case 1:this[H]=new n(r[0]);break;case 2:this[H]=new n(r[0],r[1]);break;case 3:this[H]=new n(r[0],r[1],r[2]);break;case 4:this[H]=new n(r[0],r[1],r[2],r[3]);break;default:throw new Error("Arg list too long.")}};var r,o=new n(function(){});for(r in o)"XMLHttpRequest"===t&&"responseBlob"===r||!function(e){"function"==typeof o[e]?Z[t].prototype[e]=function(){return this[H][e].apply(this[H],arguments)}:Object.defineProperty(Z[t].prototype,e,{set:function(n){"function"==typeof n?this[H][e]=Zone.current.wrap(n,t+"."+e):this[H][e]=n},get:function(){return this[H][e]}})}(r);for(r in n)"prototype"!==r&&n.hasOwnProperty(r)&&(Z[t][r]=n[r])}}function l(e,t){try{return Function("f","return function "+e+"(){return f(this, arguments)}")(t)}catch(n){return function(){return t(this,arguments)}}}function h(e,t,n){for(var r=e;r&&Object.getOwnPropertyNames(r).indexOf(t)===-1;)r=Object.getPrototypeOf(r);!r&&e[t]&&(r=e);var o,a=O(t);return r&&!(o=r[a])&&(o=r[a]=r[t],r[t]=l(t,n(o,a,t))),o}function f(e,t){var n=e[O("eventTasks")],r=[];if(n)for(var o=0;o<n.length;o++){var a=n[o],i=a.data,s=i&&i.eventName;s===t&&r.push(a)}return r}function p(e,t,n,r){function o(t){function n(){try{t.invoke.apply(this,arguments)}finally{delete c[r.handleId]}}var r=t.data;return r.args[0]=n,r.handleId=i.apply(e,r.args),c[r.handleId]=t,t}function a(e){return delete c[e.data.handleId],s(e.data.handleId)}var i=null,s=null;t+=r,n+=r;var c={};i=h(e,t,function(n){return function(i,s){if("function"==typeof s[0]){var c=Zone.current,u={handleId:null,isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?s[1]||0:null,args:s},l=c.scheduleMacroTask(t,s[0],u,o,a);if(!l)return l;var h=l.data.handleId;return h&&h.ref&&h.unref&&"function"==typeof h.ref&&"function"==typeof h.unref&&(l.ref=h.ref.bind(h),l.unref=h.unref.bind(h)),l}return n.apply(e,s)}}),s=h(e,n,function(t){return function(n,r){var o="number"==typeof r[0]?c[r[0]]:r[0];o&&"string"==typeof o.type?"notScheduled"!==o.state&&(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&o.zone.cancelTask(o):t.apply(e,r)}})}function d(){Object.defineProperty=function(e,t,n){if(k(e,t))throw new TypeError("Cannot assign to read only property '"+t+"' of "+e);var r=n.configurable;return"prototype"!==t&&(n=g(e,t,n)),y(e,t,n,r)},Object.defineProperties=function(e,t){return Object.keys(t).forEach(function(n){Object.defineProperty(e,n,t[n])}),e},Object.create=function(e,t){return"object"!=typeof t||Object.isFrozen(t)||Object.keys(t).forEach(function(n){t[n]=g(e,n,t[n])}),x(e,t)},Object.getOwnPropertyDescriptor=function(e,t){var n=q(e,t);return k(e,t)&&(n.configurable=!1),n}}function v(e,t,n){var r=n.configurable;return n=g(e,t,n),y(e,t,n,r)}function k(e,t){return e&&e[A]&&e[A][t]}function g(e,t,n){return n.configurable=!0,n.configurable||(e[A]||R(e,A,{writable:!0,value:{}}),e[A][t]=!0),n}function y(e,t,n,r){try{return R(e,t,n)}catch(o){if(!n.configurable)throw o;"undefined"==typeof r?delete n.configurable:n.configurable=r;try{return R(e,t,n)}catch(o){var a=null;try{a=JSON.stringify(n)}catch(o){a=a.toString()}console.log("Attempting to configure '"+t+"' with descriptor '"+a+"' on object '"+e+"' and got error, giving up: "+o)}}}function T(e){var t=[],n=e.wtf;n?t=B.split(",").map(function(e){return"HTML"+e+"Element"}).concat(N):e[X]?t.push(X):t=N;for(var r=0;r<t.length;r++){var o=e[t[r]];c(o&&o.prototype)}}function m(e){var t=e.WebSocket;e.EventTarget||c(t.prototype),e.WebSocket=function(e,n){var o,a=arguments.length>1?new t(e,n):new t(e),i=Object.getOwnPropertyDescriptor(a,"onmessage");return i&&i.configurable===!1?(o=Object.create(a),["addEventListener","removeEventListener","send","close"].forEach(function(e){o[e]=function(){return a[e].apply(a,arguments)}})):o=a,r(o,["close","error","message","open"]),o};for(var n in t)e.WebSocket[n]=t[n]}function _(e){if(!C||j){var t="undefined"!=typeof WebSocket;b()?(P&&(r(window,W),r(Document.prototype,W),"undefined"!=typeof SVGElement&&r(SVGElement.prototype,W),r(HTMLElement.prototype,W)),r(XMLHttpRequest.prototype,null),"undefined"!=typeof IDBIndex&&(r(IDBIndex.prototype,null),r(IDBRequest.prototype,null),r(IDBOpenDBRequest.prototype,null),r(IDBDatabase.prototype,null),r(IDBTransaction.prototype,null),r(IDBCursor.prototype,null)),t&&r(WebSocket.prototype,null)):(w(),u("XMLHttpRequest"),t&&m(e))}}function b(){if((P||j)&&!Object.getOwnPropertyDescriptor(HTMLElement.prototype,"onclick")&&"undefined"!=typeof Element){var e=Object.getOwnPropertyDescriptor(Element.prototype,"onclick");if(e&&!e.configurable)return!1}var t=Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype,"onreadystatechange");Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return!0}});var n=new XMLHttpRequest,r=!!n.onreadystatechange;return Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",t||{}),r}function w(){for(var e=function(e){var t=W[e],n="on"+t;self.addEventListener(t,function(e){var t,r,o=e.target;for(r=o?o.constructor.name+"."+n:"unknown."+n;o;)o[n]&&!o[n][G]&&(t=Zone.current.wrap(o[n],r),t[G]=o[n],o[n]=t),o=o.parentElement},!0)},t=0;t<W.length;t++)e(t)}function S(e){if((P||j)&&"registerElement"in e.document){var t=document.registerElement,n=["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"];document.registerElement=function(e,r){return r&&r.prototype&&n.forEach(function(e){var t="Document.registerElement::"+e;if(r.prototype.hasOwnProperty(e)){var n=Object.getOwnPropertyDescriptor(r.prototype,e);n&&n.value?(n.value=Zone.current.wrap(n.value,t),v(r.prototype,e,n)):r.prototype[e]=Zone.current.wrap(r.prototype[e],t)}else r.prototype[e]&&(r.prototype[e]=Zone.current.wrap(r.prototype[e],t))}),t.apply(document,[e,r])}}}function E(e){function t(e){var t=e[ee];return t}function n(e){XMLHttpRequest[re]=!1;var t=e.data,n=t.target[ne];n&&t.target.removeEventListener("readystatechange",n);var r=t.target[ne]=function(){t.target.readyState===t.target.DONE&&!t.aborted&&XMLHttpRequest[re]&&"scheduled"===e.state&&e.invoke()};t.target.addEventListener("readystatechange",r);var o=t.target[ee];return o||(t.target[ee]=e),i.apply(t.target,t.args),XMLHttpRequest[re]=!0,e}function r(){}function o(e){var t=e.data;return t.aborted=!0,s.apply(t.target,t.args)}var a=h(e.XMLHttpRequest.prototype,"open",function(){return function(e,t){return e[te]=0==t[2],a.apply(e,t)}}),i=h(e.XMLHttpRequest.prototype,"send",function(){return function(e,t){var a=Zone.current;if(e[te])return i.apply(e,t);var s={target:e,isPeriodic:!1,delay:null,args:t,aborted:!1};return a.scheduleMacroTask("XMLHttpRequest.send",r,s,n,o)}}),s=h(e.XMLHttpRequest.prototype,"abort",function(e){return function(e,n){var r=t(e);if(r&&"string"==typeof r.type){if(null==r.cancelFn||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}}})}function D(e){return function(t){var n=f(J,e);n.forEach(function(n){var r=J.PromiseRejectionEvent;if(r){var o=new r(e,{promise:t.promise,reason:t.rejection});n.invoke(o)}})}}var O=(function(e){function t(e){return"__zone_symbol__"+e}function n(){0===x&&0===H.length&&(e[I]?e[I].resolve(0)[L](i):e[j](i,0))}function r(e){n(),H.push(e)}function o(e){if(!O[t("ignoreConsoleErrorUncaughtError")]){var n=e&&e.rejection;n&&console.error("Unhandled Promise rejection:",n instanceof Error?n.message:n,"; Zone:",e.zone.name,"; Task:",e.task&&e.task.source,"; Value:",n,n instanceof Error?n.stack:void 0),console.error(e)}}function a(e){o(e);try{var n=O[t("unhandledPromiseRejectionHandler")];n&&"function"==typeof n&&n.apply(this,[e])}catch(r){}}function i(){if(!R){for(R=!0;H.length;){var e=H;H=[];for(var t=0;t<e.length;t++){var n=e[t];try{n.zone.runTask(n,null,null)}catch(r){o(r)}}}for(;q.length;)for(var i=function(){var e=q.shift();try{e.zone.runGuarded(function(){throw e})}catch(t){a(t)}};q.length;)i();R=!1}}function s(e){return e&&e.then}function c(e){return e}function u(e){return K.reject(e)}function l(e,t){return function(n){try{h(e,t,n)}catch(r){h(e,!1,r)}}}function h(e,r,o){var a=V();if(e===o)throw new TypeError("Promise resolved with itself");if(e[A]===X){var i=null;try{"object"!=typeof o&&"function"!=typeof o||(i=o&&o.then)}catch(s){return a(function(){h(e,!1,s)})(),e}if(r!==G&&o instanceof K&&o.hasOwnProperty(A)&&o.hasOwnProperty(B)&&o[A]!==X)f(o),h(e,o[A],o[B]);else if(r!==G&&"function"==typeof i)try{i.apply(o,[a(l(e,r)),a(l(e,!1))])}catch(s){a(function(){h(e,!1,s)})()}else{e[A]=r;var c=e[B];e[B]=o,r===G&&o instanceof Error&&(o[t("currentTask")]=O.currentTask);for(var u=0;u<c.length;)p(e,c[u++],c[u++],c[u++],c[u++]);if(0==c.length&&r==G){e[A]=U;try{throw new Error("Uncaught (in promise): "+o+(o&&o.stack?"\n"+o.stack:""))}catch(s){var d=s;d.rejection=o,d.promise=e,d.zone=O.current,d.task=O.currentTask,q.push(d),n()}}}}return e}function f(e){if(e[A]===U){try{var n=O[t("rejectionHandledHandler")];n&&"function"==typeof n&&n.apply(this,[{rejection:e[B],promise:e}])}catch(r){}e[A]=G;for(var o=0;o<q.length;o++)e===q[o].promise&&q.splice(o,1)}}function p(e,t,n,r,o){f(e);var a=e[A]?"function"==typeof r?r:c:"function"==typeof o?o:u;t.scheduleMicroTask(N,function(){try{h(n,!0,t.run(a,void 0,[e[B]]))}catch(r){h(n,!1,r)}})}function d(e){var t=e.prototype,n=t.then;t[L]=n,e.prototype.then=function(e,t){var r=this,o=new K(function(e,t){n.call(r,e,t)});return o.then(e,t)},e[Q]=!0}function v(e){return function(){var t=e.apply(this,arguments);if(t instanceof K)return t;var n=t.constructor;return n[Q]||d(n),t}}function k(){var e=this,t=ne.apply(this,arguments);if(!t.stack)try{throw t}catch(n){t=n}var r=t.originalStack=t.stack;if(k[oe]&&r){for(var o=r.split("\n"),a=M,i=0;o[i]!==$&&o[i]!==ee&&i<o.length;)i++;for(;i<o.length&&a;i++){var s=o[i];if(s.trim())switch(re[s]){case 0:o.splice(i,1),i--;break;case 1:a.parent?(o[i]+=" ["+a.parent.zone.name+" => "+a.zone.name+"]",a=a.parent):a=null;break;default:o[i]+=" ["+a.zone.name+"]"}}try{t.stack=t.zoneAwareStack=o.join("\n")}catch(c){}}return this instanceof ne&&this.constructor!=ne?(Object.keys(t).concat("stack","message").forEach(function(n){if(void 0!==t[n])try{e[n]=t[n]}catch(r){}}),this):t}if(e.Zone)throw new Error("Zone already loaded.");var g={name:"NO ZONE"},y="notScheduled",T="scheduling",m="scheduled",_="running",b="canceling",w="unknown",S="microTask",E="macroTask",D="eventTask",O=function(){function t(e,t){this._properties=null,this._parent=e,this._name=t?t.name||"unnamed":"<root>",this._properties=t&&t.properties||{},this._zoneDelegate=new z(this,this._parent&&this._parent._zoneDelegate,t)}return t.assertZonePatched=function(){if(e.Promise!==K)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(t,"root",{get:function(){for(var e=t.current;e.parent;)e=e.parent;return e},enumerable:!0,configurable:!0}),Object.defineProperty(t,"current",{get:function(){return M.zone},enumerable:!0,configurable:!0}),Object.defineProperty(t,"currentTask",{get:function(){return F},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),t.prototype.get=function(e){var t=this.getZoneWith(e);if(t)return t._properties[e]},t.prototype.getZoneWith=function(e){for(var t=this;t;){if(t._properties.hasOwnProperty(e))return t;t=t._parent}return null},t.prototype.fork=function(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)},t.prototype.wrap=function(e,t){if("function"!=typeof e)throw new Error("Expecting function got: "+e);var n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}},t.prototype.run=function(e,t,n,r){void 0===t&&(t=void 0),void 0===n&&(n=null),void 0===r&&(r=null),M=new P(M,this);try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{M=M.parent}},t.prototype.runGuarded=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null),M=new P(M,this);try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{M=M.parent}},t.prototype.runTask=function(e,t,n){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||g).name+"; Execution: "+this.name+")");var r=e.state!=_;r&&e._transitionTo(_,m),e.runCount++;var o=F;F=e,M=new P(M,this);try{e.type==E&&e.data&&!e.data.isPeriodic&&(e.cancelFn=null);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(a){if(this._zoneDelegate.handleError(this,a))throw a}}finally{e.state!==y&&e.state!==w&&(e.type==D||e.data&&e.data.isPeriodic?r&&e._transitionTo(m,_):(e.runCount=0,this._updateTaskCount(e,-1),r&&e._transitionTo(y,_,y))),M=M.parent,F=o}},t.prototype.scheduleTask=function(e){if(e.zone&&e.zone!==this)for(var t=this;t;){if(t===e.zone)throw Error("can not reschedule task to "+this.name+" which is descendants of the original zone "+e.zone.name);t=t.parent}e._transitionTo(T,y);var n=[];e._zoneDelegates=n,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(r){throw e._transitionTo(w,T,y),this._zoneDelegate.handleError(this,r),r}return e._zoneDelegates===n&&this._updateTaskCount(e,1),e.state==T&&e._transitionTo(m,T),e},t.prototype.scheduleMicroTask=function(e,t,n,r){return this.scheduleTask(new C(S,e,t,n,r,null))},t.prototype.scheduleMacroTask=function(e,t,n,r,o){return this.scheduleTask(new C(E,e,t,n,r,o))},t.prototype.scheduleEventTask=function(e,t,n,r,o){return this.scheduleTask(new C(D,e,t,n,r,o))},t.prototype.cancelTask=function(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||g).name+"; Execution: "+this.name+")");e._transitionTo(b,m,_);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(w,b),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(y,b),e.runCount=0,e},t.prototype._updateTaskCount=function(e,t){var n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(var r=0;r<n.length;r++)n[r]._updateTaskCount(e.type,t)},t}();O.__symbol__=t;var Z={name:"",onHasTask:function(e,t,n,r){return e.hasTask(n,r)},onScheduleTask:function(e,t,n,r){return e.scheduleTask(n,r)},onInvokeTask:function(e,t,n,r,o,a){return e.invokeTask(n,r,o,a)},onCancelTask:function(e,t,n,r){return e.cancelTask(n,r)}},z=function(){function e(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:t.zone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:t.zone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:t.zone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:t.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:t.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:t.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:t.zone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;var r=n&&n.onHasTask,o=t&&t._hasTaskZS;(r||o)&&(this._hasTaskZS=r?n:Z,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=e,n.onScheduleTask||(this._scheduleTaskZS=Z,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=Z,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=Z,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}return e.prototype.fork=function(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new O(e,t)},e.prototype.intercept=function(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t},e.prototype.invoke=function(e,t,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,o):t.apply(n,r)},e.prototype.handleError=function(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)},e.prototype.scheduleTask=function(e,t){var n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||(n=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=S)throw new Error("Task is missing scheduleFn.");r(t)}return n},e.prototype.invokeTask=function(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)},e.prototype.cancelTask=function(e,t){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");n=t.cancelFn(t)}return n},e.prototype.hasTask=function(e,t){try{return this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(n){}},e.prototype._updateTaskCount=function(e,t){var n=this._taskCounts,r=n[e],o=n[e]=r+t;if(o<0)throw new Error("More tasks executed then were scheduled.");if(0==r||0==o){var a={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this.zone,a)}},e}(),C=function(){function e(e,t,n,r,o,a){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=e,this.source=t,this.data=r,this.scheduleFn=o,this.cancelFn=a,this.callback=n;var s=this;this.invoke=function(){x++;try{return s.runCount++,s.zone.runTask(s,this,arguments)}finally{1==x&&i(),x--}}}return Object.defineProperty(e.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.prototype.cancelScheduleRequest=function(){this._transitionTo(y,T)},e.prototype._transitionTo=function(e,t,n){if(this._state!==t&&this._state!==n)throw new Error(this.type+" '"+this.source+"': can not transition to '"+e+"', expecting state '"+t+"'"+(n?" or '"+n+"'":"")+", was '"+this._state+"'.");this._state=e,e==y&&(this._zoneDelegates=null)},e.prototype.toString=function(){return this.data&&"undefined"!=typeof this.data.handleId?this.data.handleId:Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,data:this.data,zone:this.zone.name,invoke:this.invoke,scheduleFn:this.scheduleFn,cancelFn:this.cancelFn,runCount:this.runCount,callback:this.callback}},e}(),P=function(){function e(e,t){this.parent=e,this.zone=t}return e}(),j=t("setTimeout"),I=t("Promise"),L=t("then"),M=new P(null,new O(null,null)),F=null,H=[],R=!1,q=[],x=0,A=t("state"),B=t("value"),N="Promise.then",X=null,W=!0,G=!1,U=0,V=function(){var e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},K=function(){function e(t){var n=this;if(!(n instanceof e))throw new Error("Must be an instanceof Promise.");n[A]=X,n[B]=[];try{t&&t(l(n,W),l(n,G))}catch(r){h(n,!1,r)}}return e.toString=function(){return"function ZoneAwarePromise() { [native code] }"},e.resolve=function(e){return h(new this(null),W,e)},e.reject=function(e){return h(new this(null),G,e)},e.race=function(e){function t(e){a&&(a=r(e))}function n(e){a&&(a=o(e))}for(var r,o,a=new this(function(e,t){n=[e,t],r=n[0],o=n[1];var n}),i=0,c=e;i<c.length;i++){var u=c[i];s(u)||(u=this.resolve(u)),u.then(t,n)}return a},e.all=function(e){for(var t,n,r=new this(function(e,r){t=e,n=r}),o=0,a=[],i=0,c=e;i<c.length;i++){var u=c[i];s(u)||(u=this.resolve(u)),u.then(function(e){return function(n){a[e]=n,o--,o||t(a)}}(o),n),o++}return o||t(a),r},e.prototype.then=function(e,t){var n=new this.constructor(null),r=O.current;return this[A]==X?this[B].push(r,n,e,t):p(this,r,n,e,t),n},e.prototype["catch"]=function(e){return this.then(null,e)},e}();K.resolve=K.resolve,K.reject=K.reject,K.race=K.race,K.all=K.all;var J=e[I]=e.Promise;e.Promise=K;var Q=t("thenPatched");if(J){d(J);var Y=e.fetch;"function"==typeof Y&&(e.fetch=v(Y))}Promise[O.__symbol__("uncaughtPromiseErrors")]=q;var $,ee,te=O.__symbol__("blacklistedStackFrames"),ne=e[t("Error")]=e.Error,re={};e.Error=k;var oe="stackRewrite";k.prototype=ne.prototype,k[te]=re,k[oe]=!1;var ae=["stackTraceLimit","captureStackTrace","prepareStackTrace"],ie=Object.keys(ne);ie&&ie.forEach(function(e){0===ae.filter(function(t){return t===e}).length&&Object.defineProperty(k,e,{get:function(){return ne[e]},set:function(t){ne[e]=t}})}),ne.hasOwnProperty("stackTraceLimit")&&(ne.stackTraceLimit=Math.max(ne.stackTraceLimit,15),Object.defineProperty(k,"stackTraceLimit",{get:function(){return ne.stackTraceLimit},set:function(e){return ne.stackTraceLimit=e}})),ne.hasOwnProperty("captureStackTrace")&&Object.defineProperty(k,"captureStackTrace",{value:function(e,t){ne.captureStackTrace(e,t)}}),Object.defineProperty(k,"prepareStackTrace",{get:function(){return ne.prepareStackTrace},set:function(e){return e&&"function"==typeof e?ne.prepareStackTrace=function(t,n){if(n)for(var r=0;r<n.length;r++){var o=n[r];if("zoneCaptureStackTrace"===o.getFunctionName()){n.splice(r,1);break}}return e.apply(this,[t,n])}:ne.prepareStackTrace=e}});var se=O.current.fork({name:"detect",onInvoke:function(e,t,n,r,o,a,i){return e.invoke(n,r,o,a,i)},onHandleError:function(e,t,n,r){if(r.originalStack&&Error===k)for(var o=r.originalStack.split(/\n/),a=!1,i=!1,s=!1;o.length;){var c=o.shift();if(/:\d+:\d+/.test(c)){var u=c.split("(")[0].split("@")[0],l=1;if(u.indexOf("ZoneAwareError")!==-1&&($=c,ee=c.replace("Error.",""),re[ee]=0),u.indexOf("runGuarded")!==-1?i=!0:u.indexOf("runTask")!==-1?s=!0:u.indexOf("run")!==-1?a=!0:l=0,re[c]=l,a&&i&&s){k[oe]=!0;break}}}return!1}}),ce=function(){se.run(function(){se.runGuarded(function(){throw new k(k,ne)})})};return se.runTask(se.scheduleMacroTask("detect",ce,null,function(){return null},null)),e.Zone=O}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global),function(e){return"__zone_symbol__"+e}),Z="object"==typeof window&&window||"object"==typeof self&&self||global,z="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,C=!("nw"in Z)&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),P=!C&&!z&&!("undefined"==typeof window||!window.HTMLElement),j="undefined"!=typeof process&&"[object process]"==={}.toString.call(process)&&!z&&!("undefined"==typeof window||!window.HTMLElement),I=O("eventTasks"),L="addEventListener",M="removeEventListener",F=function(e,t){return{useCapturing:t[2],eventName:t[0],handler:t[1],target:e||Z,name:t[0],invokeAddFunc:function(e,t){return t&&t.invoke?this.target[e](this.eventName,t.invoke,this.useCapturing):this.target[e](this.eventName,t,this.useCapturing)},invokeRemoveFunc:function(e,t){return t&&t.invoke?this.target[e](this.eventName,t.invoke,this.useCapturing):this.target[e](this.eventName,t,this.useCapturing)}}},H=(i(L,M),s(M),O("originalInstance"));Zone[O("patchEventTargetMethods")]=c,Zone[O("patchOnProperties")]=r;var R=Object[O("defineProperty")]=Object.defineProperty,q=Object[O("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,x=Object.create,A=O("unconfigurables"),B="Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video",N="ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket".split(","),X="EventTarget",W="copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror".split(" "),G=O("unbound"),U="set",V="clear",K=["alert","prompt","confirm"],J="undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global;p(J,U,V,"Timeout"),p(J,U,V,"Interval"),p(J,U,V,"Immediate"),p(J,"request","cancel","AnimationFrame"),p(J,"mozRequest","mozCancel","AnimationFrame"),p(J,"webkitRequest","webkitCancel","AnimationFrame");for(var Q=0;Q<K.length;Q++){var Y=K[Q];h(J,Y,function(e,t,n){return function(t,r){return Zone.current.run(e,J,r,n)}})}T(J);var $=J.XMLHttpRequestEventTarget;$&&$.prototype&&c($.prototype),_(J),u("MutationObserver"),u("WebKitMutationObserver"),u("FileReader"),d(),S(J),E(J);var ee=O("xhrTask"),te=O("xhrSync"),ne=O("xhrListener"),re=O("xhrScheduled");J.navigator&&J.navigator.geolocation&&t(J.navigator.geolocation,["getCurrentPosition","watchPosition"]),J.PromiseRejectionEvent&&(Zone[O("unhandledPromiseRejectionHandler")]=D("unhandledrejection"),Zone[O("rejectionHandledHandler")]=D("rejectionhandled"))});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";function e(e,t){for(var n=e.length-1;n>=0;n--)"function"==typeof e[n]&&(e[n]=Zone.current.wrap(e[n],t+"_"+n));return e}function t(t,n){for(var r=t.constructor.name,o=function(o){var a=n[o],i=t[a];i&&(t[a]=function(t){var n=function(){return t.apply(this,e(arguments,r+"."+a))};return d(n,t),n}(i))},a=0;a<n.length;a++)o(a)}function n(e,t){var n=Object.getOwnPropertyDescriptor(e,t)||{enumerable:!0,configurable:!0};if(n.configurable){var r=Object.getOwnPropertyDescriptor(e,"original"+t);!r&&n.get&&Object.defineProperty(e,"original"+t,{enumerable:!1,configurable:!0,get:n.get}),delete n.writable,delete n.value;var o=t.substr(2),a=P("_"+t);n.set=function(t){var n=this;if(n||e!==L||(n=L),n){if(n[a]&&n.removeEventListener(o,n[a]),"string"==typeof t){var r=t;t=new Function(r),t[C]=r}if("function"==typeof t){var i=function(e){var n;return n=t.apply(this,arguments),void 0==n||n||e.preventDefault(),n};n[a]=i,n.addEventListener(o,i,!1)}else n[a]=null}},n.get=function(){var o=this;if(o||e!==L||(o=L),!o)return null;var i=o[a]||null;null===i&&r&&r.get&&(i=r.get.apply(this,arguments),i&&(n.set.apply(this,[i]),"function"==typeof o.removeAttribute&&o.removeAttribute(t)));var s=o[a]||null;return s&&s.hasOwnProperty(C)?s[s]:s},Object.defineProperty(e,t,n)}}function r(e,t){if(t)for(var r=0;r<t.length;r++)n(e,"on"+t[r]);else{var o=[];for(var a in e)"on"==a.substr(0,2)&&o.push(a);for(var i=0;i<o.length;i++)n(e,o[i])}}function o(e,t){var n="boolean"==typeof e?e:"object"==typeof e&&(e&&e.capture),r="boolean"==typeof t?t:"object"==typeof t&&(t&&t.capture);return!!n==!!r}function a(e,t,n,r,a){var i=e[R];if(i)for(var s=0;s<i.length;s++){var c=i[s],u=c.data,l=u.handler;if((u.handler===t||l.listener===t)&&o(u.options,r)&&u.eventName===n)return a&&i.splice(s,1),c}return null}function i(e,t,n){var r=e[R];r||(r=e[R]=[]),n?r.unshift(t):r.push(t)}function s(e,t,n,r,o,s){function c(e){var t=e.data;return i(t.target,e,o),t.invokeAddFunc(l,e)}function u(e){var t=e.data;return a(t.target,e.invoke,t.eventName,t.options,!0),t.invokeRemoveFunc(h,e)}void 0===n&&(n=!0),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===s&&(s=A);var l=P(e),h=P(t),f=!n&&void 0;return function(t,n){var o=s(t,n);o.options=o.options||f;var i=null;"function"==typeof o.handler?i=o.handler:o.handler&&o.handler.handleEvent&&(i=function(e){return o.handler.handleEvent(e)});var h=!1;try{h=o.handler&&"[object FunctionWrapper]"===o.handler.toString()}catch(p){return o.crossContext=!0,o.invokeAddFunc(l,o.handler)}if(!i||h)return o.invokeAddFunc(l,o.handler);if(!r){var d=a(o.target,o.handler,o.eventName,o.options,!1);if(d)return o.invokeAddFunc(l,d)}var v=Zone.current,k=o.target.constructor.name+"."+e+":"+o.eventName;v.scheduleEventTask(k,i,o,c,u)}}function c(e,t,n){void 0===t&&(t=!0),void 0===n&&(n=A);var r=P(e),o=!t&&void 0;return function(e,t){var i=n(e,t);i.options=i.options||o;var s=null;"function"==typeof i.handler?s=i.handler:i.handler&&i.handler.handleEvent&&(s=function(e){return i.handler.handleEvent(e)});var c=!1;try{c=i.handler&&"[object FunctionWrapper]"===i.handler.toString()}catch(u){return i.crossContext=!0,i.invokeRemoveFunc(r,i.handler)}if(!s||c)return i.invokeRemoveFunc(r,i.handler);var l=a(i.target,i.handler,i.eventName,i.options,!0);l?l.zone.cancelTask(l):i.invokeRemoveFunc(r,i.handler)}}function u(e,t,n,r){return void 0===t&&(t=x),void 0===n&&(n=q),void 0===r&&(r=A),!(!e||!e[t])&&(f(e,t,function(){return s(t,n,!0,!1,!1,r)}),f(e,n,function(){return c(n,!0,r)}),!0)}function l(t){var n=L[t];if(n){L[P(t)]=n,L[t]=function(){var r=e(arguments,t);switch(r.length){case 0:this[N]=new n;break;case 1:this[N]=new n(r[0]);break;case 2:this[N]=new n(r[0],r[1]);break;case 3:this[N]=new n(r[0],r[1],r[2]);break;case 4:this[N]=new n(r[0],r[1],r[2],r[3]);break;default:throw new Error("Arg list too long.")}},d(L[t],n);var r,o=new n(function(){});for(r in o)"XMLHttpRequest"===t&&"responseBlob"===r||!function(e){"function"==typeof o[e]?L[t].prototype[e]=function(){return this[N][e].apply(this[N],arguments)}:Object.defineProperty(L[t].prototype,e,{set:function(n){"function"==typeof n?(this[N][e]=Zone.current.wrap(n,t+"."+e),d(this[N][e],n)):this[N][e]=n},get:function(){return this[N][e]}})}(r);for(r in n)"prototype"!==r&&n.hasOwnProperty(r)&&(L[t][r]=n[r])}}function h(e,t){try{return Function("f","return function "+e+"(){return f(this, arguments)}")(t)}catch(n){return function(){return t(this,arguments)}}}function f(e,t,n){for(var r=e;r&&Object.getOwnPropertyNames(r).indexOf(t)===-1;)r=Object.getPrototypeOf(r);!r&&e[t]&&(r=e);var o,a=P(t);return r&&!(o=r[a])&&(o=r[a]=r[t],r[t]=h(t,n(o,a,t)),d(r[t],o)),o}function p(e,t){var n=e[P("eventTasks")],r=[];if(n)for(var o=0;o<n.length;o++){var a=n[o],i=a.data,s=i&&i.eventName;s===t&&r.push(a)}return r}function d(e,t){e[P("OriginalDelegate")]=t}function v(e,t,n,r){function o(t){function n(){try{t.invoke.apply(this,arguments)}finally{delete c[r.handleId]}}var r=t.data;return r.args[0]=n,r.handleId=i.apply(e,r.args),c[r.handleId]=t,t}function a(e){return delete c[e.data.handleId],s(e.data.handleId)}var i=null,s=null;t+=r,n+=r;var c={};i=f(e,t,function(n){return function(i,s){if("function"==typeof s[0]){var c=Zone.current,u={handleId:null,isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?s[1]||0:null,args:s},l=c.scheduleMacroTask(t,s[0],u,o,a);if(!l)return l;var h=l.data.handleId;return h&&h.ref&&h.unref&&"function"==typeof h.ref&&"function"==typeof h.unref&&(l.ref=h.ref.bind(h),l.unref=h.unref.bind(h)),l}return n.apply(e,s)}}),s=f(e,n,function(t){return function(n,r){var o="number"==typeof r[0]?c[r[0]]:r[0];o&&"string"==typeof o.type?"notScheduled"!==o.state&&(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&o.zone.cancelTask(o):t.apply(e,r)}})}function k(){var e=Function.prototype.toString,t="undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global;Function.prototype.toString=function(){if("function"==typeof this){if(this[P("OriginalDelegate")])return e.apply(this[P("OriginalDelegate")],arguments);if(this===Promise){var n=t[P("Promise")];if(n)return e.apply(n,arguments)}if(this===Error){var r=t[P("Error")];if(r)return e.apply(r,arguments)}}return e.apply(this,arguments)}}function y(){var e=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":e.apply(this,arguments)}}function g(){Object.defineProperty=function(e,t,n){if(m(e,t))throw new TypeError("Cannot assign to read only property '"+t+"' of "+e);var r=n.configurable;return"prototype"!==t&&(n=b(e,t,n)),_(e,t,n,r)},Object.defineProperties=function(e,t){return Object.keys(t).forEach(function(n){Object.defineProperty(e,n,t[n])}),e},Object.create=function(e,t){return"object"!=typeof t||Object.isFrozen(t)||Object.keys(t).forEach(function(n){t[n]=b(e,n,t[n])}),W(e,t)},Object.getOwnPropertyDescriptor=function(e,t){var n=X(e,t);return m(e,t)&&(n.configurable=!1),n}}function T(e,t,n){var r=n.configurable;return n=b(e,t,n),_(e,t,n,r)}function m(e,t){return e&&e[G]&&e[G][t]}function b(e,t,n){return n.configurable=!0,n.configurable||(e[G]||B(e,G,{writable:!0,value:{}}),e[G][t]=!0),n}function _(e,t,n,r){try{return B(e,t,n)}catch(o){if(!n.configurable)throw o;"undefined"==typeof r?delete n.configurable:n.configurable=r;try{return B(e,t,n)}catch(o){var a=null;try{a=JSON.stringify(n)}catch(o){a=a.toString()}console.log("Attempting to configure '"+t+"' with descriptor '"+a+"' on object '"+e+"' and got error, giving up: "+o)}}}function w(e){var t=[],n=e.wtf;n?t=U.split(",").map(function(e){return"HTML"+e+"Element"}).concat(V):e[K]?t.push(K):t=V;for(var r=0;r<t.length;r++){var o=e[t[r]];u(o&&o.prototype)}}function E(e){var t=e.WebSocket;e.EventTarget||u(t.prototype),e.WebSocket=function(e,n){var o,a=arguments.length>1?new t(e,n):new t(e),i=Object.getOwnPropertyDescriptor(a,"onmessage");return i&&i.configurable===!1?(o=Object.create(a),["addEventListener","removeEventListener","send","close"].forEach(function(e){o[e]=function(){return a[e].apply(a,arguments)}})):o=a,r(o,["close","error","message","open"]),o};for(var n in t)e.WebSocket[n]=t[n]}function S(e){if(!F||H){var t="undefined"!=typeof WebSocket;O()?(M&&(r(window,J),r(Document.prototype,J),"undefined"!=typeof window.SVGElement&&r(window.SVGElement.prototype,J),r(HTMLElement.prototype,J)),r(XMLHttpRequest.prototype,null),"undefined"!=typeof IDBIndex&&(r(IDBIndex.prototype,null),r(IDBRequest.prototype,null),r(IDBOpenDBRequest.prototype,null),r(IDBDatabase.prototype,null),r(IDBTransaction.prototype,null),r(IDBCursor.prototype,null)),t&&r(WebSocket.prototype,null)):(D(),l("XMLHttpRequest"),t&&E(e))}}function O(){if((M||H)&&!Object.getOwnPropertyDescriptor(HTMLElement.prototype,"onclick")&&"undefined"!=typeof Element){var e=Object.getOwnPropertyDescriptor(Element.prototype,"onclick");if(e&&!e.configurable)return!1}var t=Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype,"onreadystatechange");if(t){Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return!0}});var n=new XMLHttpRequest,r=!!n.onreadystatechange;return Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",t||{}),r}Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return this[P("fakeonreadystatechange")]},set:function(e){this[P("fakeonreadystatechange")]=e}});var n=new XMLHttpRequest,o=function(){};n.onreadystatechange=o;var r=n[P("fakeonreadystatechange")]===o;return n.onreadystatechange=null,r}function D(){for(var e=function(e){var t=J[e],n="on"+t;self.addEventListener(t,function(e){var t,r,o=e.target;for(r=o?o.constructor.name+"."+n:"unknown."+n;o;)o[n]&&!o[n][Q]&&(t=Zone.current.wrap(o[n],r),t[Q]=o[n],o[n]=t),o=o.parentElement},!0)},t=0;t<J.length;t++)e(t)}function Z(e){if((M||H)&&"registerElement"in e.document){var t=document.registerElement,n=["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"];document.registerElement=function(e,r){return r&&r.prototype&&n.forEach(function(e){var t="Document.registerElement::"+e;if(r.prototype.hasOwnProperty(e)){var n=Object.getOwnPropertyDescriptor(r.prototype,e);n&&n.value?(n.value=Zone.current.wrap(n.value,t),T(r.prototype,e,n)):r.prototype[e]=Zone.current.wrap(r.prototype[e],t)}else r.prototype[e]&&(r.prototype[e]=Zone.current.wrap(r.prototype[e],t))}),t.apply(document,[e,r])},d(document.registerElement,t)}}function j(e){function t(e){var t=e[ae];return t}function n(e){XMLHttpRequest[ce]=!1;var t=e.data,n=t.target[se];n&&t.target.removeEventListener("readystatechange",n);var r=t.target[se]=function(){t.target.readyState===t.target.DONE&&!t.aborted&&XMLHttpRequest[ce]&&"scheduled"===e.state&&e.invoke()};t.target.addEventListener("readystatechange",r);var o=t.target[ae];return o||(t.target[ae]=e),i.apply(t.target,t.args),XMLHttpRequest[ce]=!0,e}function r(){}function o(e){var t=e.data;return t.aborted=!0,s.apply(t.target,t.args)}var a=f(e.XMLHttpRequest.prototype,"open",function(){return function(e,t){return e[ie]=0==t[2],a.apply(e,t)}}),i=f(e.XMLHttpRequest.prototype,"send",function(){return function(e,t){var a=Zone.current;if(e[ie])return i.apply(e,t);var s={target:e,isPeriodic:!1,delay:null,args:t,aborted:!1};return a.scheduleMacroTask("XMLHttpRequest.send",r,s,n,o)}}),s=f(e.XMLHttpRequest.prototype,"abort",function(e){return function(e,n){var r=t(e);if(r&&"string"==typeof r.type){if(null==r.cancelFn||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}}})}function z(e){return function(t){var n=p(te,e);n.forEach(function(n){var r=te.PromiseRejectionEvent;if(r){var o=new r(e,{promise:t.promise,reason:t.rejection});n.invoke(o)}})}}var P=(function(e){function t(e){return"__zone_symbol__"+e}function n(){0===q&&0===H.length&&(e[L]?e[L].resolve(0)[I](i):e[C](i,0))}function r(e){n(),H.push(e)}function o(e){if(!D[t("ignoreConsoleErrorUncaughtError")]){var n=e&&e.rejection;n&&console.error("Unhandled Promise rejection:",n instanceof Error?n.message:n,"; Zone:",e.zone.name,"; Task:",e.task&&e.task.source,"; Value:",n,n instanceof Error?n.stack:void 0),console.error(e)}}function a(e){o(e);try{var n=D[t("unhandledPromiseRejectionHandler")];n&&"function"==typeof n&&n.apply(this,[e])}catch(r){}}function i(){if(!R){for(R=!0;H.length;){var e=H;H=[];for(var t=0;t<e.length;t++){var n=e[t];try{n.zone.runTask(n,null,null)}catch(r){o(r)}}}for(;x.length;)for(var i=function(){var e=x.shift();try{e.zone.runGuarded(function(){throw e})}catch(t){a(t)}};x.length;)i();R=!1}}function s(e){return e&&e.then}function c(e){return e}function u(e){return K.reject(e)}function l(e,t){return function(n){try{h(e,t,n)}catch(r){h(e,!1,r)}}}function h(e,r,o){var a=V();if(e===o)throw new TypeError("Promise resolved with itself");if(e[A]===X){var i=null;try{"object"!=typeof o&&"function"!=typeof o||(i=o&&o.then)}catch(s){return a(function(){h(e,!1,s)})(),e}if(r!==G&&o instanceof K&&o.hasOwnProperty(A)&&o.hasOwnProperty(N)&&o[A]!==X)f(o),h(e,o[A],o[N]);else if(r!==G&&"function"==typeof i)try{i.apply(o,[a(l(e,r)),a(l(e,!1))])}catch(s){a(function(){h(e,!1,s)})()}else{e[A]=r;var c=e[N];e[N]=o,r===G&&o instanceof Error&&(o[t("currentTask")]=D.currentTask);for(var u=0;u<c.length;)p(e,c[u++],c[u++],c[u++],c[u++]);if(0==c.length&&r==G){e[A]=U;try{throw new Error("Uncaught (in promise): "+o+(o&&o.stack?"\n"+o.stack:""))}catch(s){var d=s;d.rejection=o,d.promise=e,d.zone=D.current,d.task=D.currentTask,x.push(d),n()}}}}return e}function f(e){if(e[A]===U){try{var n=D[t("rejectionHandledHandler")];n&&"function"==typeof n&&n.apply(this,[{rejection:e[N],promise:e}])}catch(r){}e[A]=G;for(var o=0;o<x.length;o++)e===x[o].promise&&x.splice(o,1)}}function p(e,t,n,r,o){f(e);var a=e[A]?"function"==typeof r?r:c:"function"==typeof o?o:u;t.scheduleMicroTask(B,function(){try{h(n,!0,t.run(a,void 0,[e[N]]))}catch(r){h(n,!1,r)}})}function d(e){var t=e.prototype,n=t.then;t[I]=n,e.prototype.then=function(e,t){var r=this,o=new K(function(e,t){n.call(r,e,t)});return o.then(e,t)},e[Q]=!0}function v(e){return function(){var t=e.apply(this,arguments);if(t instanceof K)return t;var n=t.constructor;return n[Q]||d(n),t}}function k(){var e=this,t=ne.apply(this,arguments),n=t.originalStack=t.stack;if(k[oe]&&n){for(var r=n.split("\n"),o=F,a=0;r[a]!==$&&r[a]!==ee&&a<r.length;)a++;for(;a<r.length&&o;a++){var i=r[a];if(i.trim())switch(re[i]){case 0:r.splice(a,1),a--;break;case 1:o=o.parent?o.parent:null,r.splice(a,1),a--;break;default:r[a]+=" ["+o.zone.name+"]"}}try{t.stack=t.zoneAwareStack=r.join("\n")}catch(s){}}return this instanceof ne&&this.constructor!=ne?(Object.keys(t).concat("stack","message").forEach(function(n){if(void 0!==t[n])try{e[n]=t[n]}catch(r){}}),this):t}if(e.Zone)throw new Error("Zone already loaded.");var y={name:"NO ZONE"},g="notScheduled",T="scheduling",m="scheduled",b="running",_="canceling",w="unknown",E="microTask",S="macroTask",O="eventTask",D=function(){function t(e,t){this._properties=null,this._parent=e,this._name=t?t.name||"unnamed":"<root>",this._properties=t&&t.properties||{},this._zoneDelegate=new j(this,this._parent&&this._parent._zoneDelegate,t)}return t.assertZonePatched=function(){if(e.Promise!==K)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(t,"root",{get:function(){for(var e=t.current;e.parent;)e=e.parent;return e},enumerable:!0,configurable:!0}),Object.defineProperty(t,"current",{get:function(){return F.zone},enumerable:!0,configurable:!0}),Object.defineProperty(t,"currentTask",{get:function(){return M},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),t.prototype.get=function(e){var t=this.getZoneWith(e);if(t)return t._properties[e]},t.prototype.getZoneWith=function(e){for(var t=this;t;){if(t._properties.hasOwnProperty(e))return t;t=t._parent}return null},t.prototype.fork=function(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)},t.prototype.wrap=function(e,t){if("function"!=typeof e)throw new Error("Expecting function got: "+e);var n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}},t.prototype.run=function(e,t,n,r){void 0===t&&(t=void 0),void 0===n&&(n=null),void 0===r&&(r=null),F=new P(F,this);try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{F=F.parent}},t.prototype.runGuarded=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null),F=new P(F,this);try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{F=F.parent}},t.prototype.runTask=function(e,t,n){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||y).name+"; Execution: "+this.name+")");var r=e.state!=b;r&&e._transitionTo(b,m),e.runCount++;var o=M;M=e,F=new P(F,this);try{e.type==S&&e.data&&!e.data.isPeriodic&&(e.cancelFn=null);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(a){if(this._zoneDelegate.handleError(this,a))throw a}}finally{e.state!==g&&e.state!==w&&(e.type==O||e.data&&e.data.isPeriodic?r&&e._transitionTo(m,b):(e.runCount=0,this._updateTaskCount(e,-1),r&&e._transitionTo(g,b,g))),F=F.parent,M=o}},t.prototype.scheduleTask=function(e){if(e.zone&&e.zone!==this)for(var t=this;t;){if(t===e.zone)throw Error("can not reschedule task to "+this.name+" which is descendants of the original zone "+e.zone.name);t=t.parent}e._transitionTo(T,g);var n=[];e._zoneDelegates=n,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(r){throw e._transitionTo(w,T,g),this._zoneDelegate.handleError(this,r),r}return e._zoneDelegates===n&&this._updateTaskCount(e,1),e.state==T&&e._transitionTo(m,T),e},t.prototype.scheduleMicroTask=function(e,t,n,r){return this.scheduleTask(new z(E,e,t,n,r,null))},t.prototype.scheduleMacroTask=function(e,t,n,r,o){return this.scheduleTask(new z(S,e,t,n,r,o))},t.prototype.scheduleEventTask=function(e,t,n,r,o){return this.scheduleTask(new z(O,e,t,n,r,o))},t.prototype.cancelTask=function(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||y).name+"; Execution: "+this.name+")");e._transitionTo(_,m,b);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(w,_),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(g,_),e.runCount=0,e},t.prototype._updateTaskCount=function(e,t){var n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(var r=0;r<n.length;r++)n[r]._updateTaskCount(e.type,t)},t}();D.__symbol__=t;var Z={name:"",onHasTask:function(e,t,n,r){return e.hasTask(n,r)},onScheduleTask:function(e,t,n,r){return e.scheduleTask(n,r)},onInvokeTask:function(e,t,n,r,o,a){return e.invokeTask(n,r,o,a)},onCancelTask:function(e,t,n,r){return e.cancelTask(n,r)}},j=function(){function e(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:t.zone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:t.zone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:t.zone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:t.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:t.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:t.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:t.zone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;var r=n&&n.onHasTask,o=t&&t._hasTaskZS;(r||o)&&(this._hasTaskZS=r?n:Z,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=e,n.onScheduleTask||(this._scheduleTaskZS=Z,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=Z,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=Z,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}return e.prototype.fork=function(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new D(e,t)},e.prototype.intercept=function(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t},e.prototype.invoke=function(e,t,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,o):t.apply(n,r)},e.prototype.handleError=function(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)},e.prototype.scheduleTask=function(e,t){var n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||(n=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=E)throw new Error("Task is missing scheduleFn.");r(t)}return n},e.prototype.invokeTask=function(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)},e.prototype.cancelTask=function(e,t){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");n=t.cancelFn(t)}return n},e.prototype.hasTask=function(e,t){try{return this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(n){this.handleError(e,n)}},e.prototype._updateTaskCount=function(e,t){var n=this._taskCounts,r=n[e],o=n[e]=r+t;if(o<0)throw new Error("More tasks executed then were scheduled.");if(0==r||0==o){var a={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this.zone,a)}},e}(),z=function(){function e(e,t,n,r,o,a){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=e,this.source=t,this.data=r,this.scheduleFn=o,this.cancelFn=a,this.callback=n;var s=this;this.invoke=function(){q++;try{return s.runCount++,s.zone.runTask(s,this,arguments)}finally{1==q&&i(),q--}}}return Object.defineProperty(e.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.prototype.cancelScheduleRequest=function(){this._transitionTo(g,T)},e.prototype._transitionTo=function(e,t,n){if(this._state!==t&&this._state!==n)throw new Error(this.type+" '"+this.source+"': can not transition to '"+e+"', expecting state '"+t+"'"+(n?" or '"+n+"'":"")+", was '"+this._state+"'.");this._state=e,e==g&&(this._zoneDelegates=null)},e.prototype.toString=function(){return this.data&&"undefined"!=typeof this.data.handleId?this.data.handleId:Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,invoke:this.invoke,scheduleFn:this.scheduleFn,cancelFn:this.cancelFn,runCount:this.runCount,callback:this.callback}},e}(),P=function(){function e(e,t){this.parent=e,this.zone=t}return e}(),C=t("setTimeout"),L=t("Promise"),I=t("then"),F=new P(null,new D(null,null)),M=null,H=[],R=!1,x=[],q=0,A=t("state"),N=t("value"),B="Promise.then",X=null,W=!0,G=!1,U=0,V=function(){var e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},K=function(){function e(t){var n=this;if(!(n instanceof e))throw new Error("Must be an instanceof Promise.");n[A]=X,n[N]=[];try{t&&t(l(n,W),l(n,G))}catch(r){h(n,!1,r)}}return e.toString=function(){return"function ZoneAwarePromise() { [native code] }"},e.resolve=function(e){return h(new this(null),W,e)},e.reject=function(e){return h(new this(null),G,e)},e.race=function(e){function t(e){a&&(a=r(e))}function n(e){a&&(a=o(e))}for(var r,o,a=new this(function(e,t){n=[e,t],r=n[0],o=n[1];var n}),i=0,c=e;i<c.length;i++){var u=c[i];s(u)||(u=this.resolve(u)),u.then(t,n)}return a},e.all=function(e){for(var t,n,r=new this(function(e,r){t=e,n=r}),o=0,a=[],i=0,c=e;i<c.length;i++){var u=c[i];s(u)||(u=this.resolve(u)),u.then(function(e){return function(n){a[e]=n,o--,o||t(a)}}(o),n),o++}return o||t(a),r},e.prototype.then=function(e,t){var n=new this.constructor(null),r=D.current;return this[A]==X?this[N].push(r,n,e,t):p(this,r,n,e,t),n},e.prototype["catch"]=function(e){return this.then(null,e)},e}();K.resolve=K.resolve,K.reject=K.reject,K.race=K.race,K.all=K.all;var J=e[L]=e.Promise;e.Promise=K;var Q=t("thenPatched");if(J){d(J);var Y=e.fetch;"function"==typeof Y&&(e.fetch=v(Y))}Promise[D.__symbol__("uncaughtPromiseErrors")]=x;var $,ee,te=D.__symbol__("blacklistedStackFrames"),ne=e[t("Error")]=e.Error,re={};e.Error=k;var oe="stackRewrite";k.prototype=ne.prototype,k[te]=re,k[oe]=!1;var ae=["stackTraceLimit","captureStackTrace","prepareStackTrace"],ie=Object.keys(ne);ie&&ie.forEach(function(e){0===ae.filter(function(t){return t===e}).length&&Object.defineProperty(k,e,{get:function(){return ne[e]},set:function(t){ne[e]=t}})}),ne.hasOwnProperty("stackTraceLimit")&&(ne.stackTraceLimit=Math.max(ne.stackTraceLimit,15),Object.defineProperty(k,"stackTraceLimit",{get:function(){return ne.stackTraceLimit},set:function(e){return ne.stackTraceLimit=e}})),ne.hasOwnProperty("captureStackTrace")&&Object.defineProperty(k,"captureStackTrace",{value:function(e,t){ne.captureStackTrace(e,t)}}),Object.defineProperty(k,"prepareStackTrace",{get:function(){return ne.prepareStackTrace},set:function(e){return e&&"function"==typeof e?ne.prepareStackTrace=function(t,n){if(n)for(var r=0;r<n.length;r++){var o=n[r];if("zoneCaptureStackTrace"===o.getFunctionName()){n.splice(r,1);break}}return e.apply(this,[t,n])}:ne.prepareStackTrace=e}});var se=D.current.fork({name:"detect",onHandleError:function(e,t,n,r){if(r.originalStack&&Error===k)for(var o=r.originalStack.split(/\n/),a=!1,i=!1,s=!1;o.length;){var c=o.shift();if(/:\d+:\d+/.test(c)){var u=c.split("(")[0].split("@")[0],l=1;if(u.indexOf("ZoneAwareError")!==-1&&($=c,ee=c.replace("Error.",""),re[ee]=0),u.indexOf("runGuarded")!==-1?i=!0:u.indexOf("runTask")!==-1?s=!0:u.indexOf("run")!==-1?a=!0:l=0,re[c]=l,a&&i&&s){k[oe]=!0;break}}}return!1}}),ce=se.fork({name:"child",onScheduleTask:function(e,t,n,r){return e.scheduleTask(n,r)},onInvokeTask:function(e,t,n,r,o,a){return e.invokeTask(n,r,o,a)},onCancelTask:function(e,t,n,r){return e.cancelTask(n,r)},onInvoke:function(e,t,n,r,o,a,i){return e.invoke(n,r,o,a,i)}}),ue=Error.stackTraceLimit;return Error.stackTraceLimit=100,ce.run(function(){ce.runGuarded(function(){var e=function(e,t,n){};ce.scheduleEventTask(te,function(){ce.scheduleMacroTask(te,function(){ce.scheduleMicroTask(te,function(){throw new k(k,ne)},null,function(t){t._transitionTo=e,t.invoke()})},null,function(t){t._transitionTo=e,t.invoke()},function(){})},null,function(t){t._transitionTo=e,t.invoke()},function(){})})}),Error.stackTraceLimit=ue,e.Zone=D}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global),function(e){return"__zone_symbol__"+e}),C=P("value"),L="object"==typeof window&&window||"object"==typeof self&&self||global,I="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,F=!("nw"in L)&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),M=!F&&!I&&!("undefined"==typeof window||!window.HTMLElement),H="undefined"!=typeof process&&"[object process]"==={}.toString.call(process)&&!I&&!("undefined"==typeof window||!window.HTMLElement),R=P("eventTasks"),x="addEventListener",q="removeEventListener",A=function(e,t){return{options:t[2],eventName:t[0],handler:t[1],target:e||L,name:t[0],crossContext:!1,invokeAddFunc:function(e,t){if(!this.crossContext)return t&&t.invoke?this.target[e](this.eventName,t.invoke,this.options):this.target[e](this.eventName,t,this.options);try{return this.target[e](this.eventName,t,this.options)}catch(n){}},invokeRemoveFunc:function(e,t){if(!this.crossContext)return t&&t.invoke?this.target[e](this.eventName,t.invoke,this.options):this.target[e](this.eventName,t,this.options);try{return this.target[e](this.eventName,t,this.options)}catch(n){}}}},N=P("originalInstance");Zone[P("patchEventTargetMethods")]=u,Zone[P("patchOnProperties")]=r;var B=Object[P("defineProperty")]=Object.defineProperty,X=Object[P("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,W=Object.create,G=P("unconfigurables"),U="Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video",V="ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket".split(","),K="EventTarget",J="copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror".split(" "),Q=P("unbound"),Y="set",$="clear",ee=["alert","prompt","confirm"],te="undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global;v(te,Y,$,"Timeout"),v(te,Y,$,"Interval"),v(te,Y,$,"Immediate"),v(te,"request","cancel","AnimationFrame"),v(te,"mozRequest","mozCancel","AnimationFrame"),v(te,"webkitRequest","webkitCancel","AnimationFrame");for(var ne=0;ne<ee.length;ne++){var re=ee[ne];f(te,re,function(e,t,n){return function(t,r){return Zone.current.run(e,te,r,n)}})}w(te);var oe=te.XMLHttpRequestEventTarget;oe&&oe.prototype&&u(oe.prototype),S(te),l("MutationObserver"),l("WebKitMutationObserver"),l("FileReader"),g(),Z(te),j(te);var ae=P("xhrTask"),ie=P("xhrSync"),se=P("xhrListener"),ce=P("xhrScheduled");te.navigator&&te.navigator.geolocation&&t(te.navigator.geolocation,["getCurrentPosition","watchPosition"]),k(),y(),te.PromiseRejectionEvent&&(Zone[P("unhandledPromiseRejectionHandler")]=z("unhandledrejection"),Zone[P("rejectionHandledHandler")]=z("rejectionhandled"));
});

@@ -10,2 +10,3 @@ /**

import {patchTimer} from '../common/timers';
import {patchFuncToString, patchObjectToString} from '../common/to-string';
import {findEventTask, patchClass, patchEventTargetMethods, patchMethod, patchPrototype, zoneSymbol} from '../common/utils';

@@ -155,2 +156,7 @@

// patch Func.prototype.toString to let them look like native
patchFuncToString();
// patch Object.prototype.toString to let them look like native
patchObjectToString();
// handle unhandled promise rejection

@@ -157,0 +163,0 @@ function findPromiseRejectionHandler(evtName: string) {

@@ -56,3 +56,3 @@ /**

};
};
}

@@ -63,3 +63,3 @@ export function _redefineProperty(obj: any, prop: string, desc: any) {

return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);
};
}

@@ -66,0 +66,0 @@ function isUnconfigurable(obj: any, prop: any) {

@@ -28,4 +28,4 @@ /**

patchOnProperties(Document.prototype, eventNames);
if (typeof SVGElement !== 'undefined') {
patchOnProperties(SVGElement.prototype, eventNames);
if (typeof(<any>window)['SVGElement'] !== 'undefined') {
patchOnProperties((<any>window)['SVGElement'].prototype, eventNames);
}

@@ -71,14 +71,35 @@ patchOnProperties(HTMLElement.prototype, eventNames);

// non-configurable
Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', {
enumerable: true,
configurable: true,
get: function() {
return true;
}
});
const req = new XMLHttpRequest();
const result = !!req.onreadystatechange;
// restore original desc
Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', xhrDesc || {});
return result;
// and if XMLHttpRequest.prototype.onreadystatechange is undefined,
// we should set a real desc instead a fake one
if (xhrDesc) {
Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', {
enumerable: true,
configurable: true,
get: function() {
return true;
}
});
const req = new XMLHttpRequest();
const result = !!req.onreadystatechange;
// restore original desc
Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', xhrDesc || {});
return result;
} else {
Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', {
enumerable: true,
configurable: true,
get: function() {
return this[zoneSymbol('fakeonreadystatechange')];
},
set: function(value) {
this[zoneSymbol('fakeonreadystatechange')] = value;
}
});
const req = new XMLHttpRequest();
const detectFunc = () => {};
req.onreadystatechange = detectFunc;
const result = (req as any)[zoneSymbol('fakeonreadystatechange')] === detectFunc;
req.onreadystatechange = null;
return result;
}
};

@@ -111,3 +132,3 @@

}, true);
};
};
}
}

@@ -9,3 +9,3 @@ /**

import {isBrowser, isMix} from '../common/utils';
import {attachOriginToPatched, isBrowser, isMix} from '../common/utils';

@@ -43,2 +43,4 @@ import {_redefineProperty} from './define-property';

};
attachOriginToPatched((<any>document).registerElement, _registerElement);
}

@@ -32,3 +32,3 @@ /**

}
};
}
data.args[0] = timer;

@@ -35,0 +35,0 @@ data.handleId = setNative.apply(window, data.args);

@@ -18,2 +18,3 @@ /**

export const zoneSymbol: (name: string) => string = (n) => `__zone_symbol__${n}`;
const VALUE = zoneSymbol('value');
const _global: any =

@@ -38,5 +39,7 @@ typeof window === 'object' && window || typeof self === 'object' && self || global;

prototype[name] = ((delegate: Function) => {
return function() {
const patched: any = function() {
return delegate.apply(this, bindArguments(<any>arguments, source + '.' + name));
};
attachOriginToPatched(patched, delegate);
return patched;
})(delegate);

@@ -64,2 +67,7 @@ }

const desc = Object.getOwnPropertyDescriptor(obj, prop) || {enumerable: true, configurable: true};
// if the descriptor is not configurable
// just return
if (!desc.configurable) {
return;
}

@@ -85,6 +93,21 @@ const originalDesc = Object.getOwnPropertyDescriptor(obj, 'original' + prop);

desc.set = function(fn) {
if (this[_prop]) {
this.removeEventListener(eventName, this[_prop]);
// in some of windows's onproperty callback, this is undefined
// so we need to check it
let target = this;
if (!target && obj === _global) {
target = _global;
}
if (!target) {
return;
}
if (target[_prop]) {
target.removeEventListener(eventName, target[_prop]);
}
if (typeof fn === 'string') {
const src: string = fn;
fn = new Function(src);
fn[VALUE] = src;
}
if (typeof fn === 'function') {

@@ -101,6 +124,6 @@ const wrapFn = function(event: Event) {

this[_prop] = wrapFn;
this.addEventListener(eventName, wrapFn, false);
target[_prop] = wrapFn;
target.addEventListener(eventName, wrapFn, false);
} else {
this[_prop] = null;
target[_prop] = null;
}

@@ -112,3 +135,12 @@ };

desc.get = function() {
let r = this[_prop] || null;
// in some of windows's onproperty callback, this is undefined
// so we need to check it
let target = this;
if (!target && obj === _global) {
target = _global;
}
if (!target) {
return null;
}
let r = target[_prop] || null;
// result will be null when use inline event attribute,

@@ -125,4 +157,4 @@ // such as <button onclick="func();">OK</button>

desc.set.apply(this, [r]);
if (typeof this['removeAttribute'] === 'function') {
this.removeAttribute(prop);
if (typeof target['removeAttribute'] === 'function') {
target.removeAttribute(prop);
}

@@ -132,18 +164,10 @@ }

}
return this[_prop] || null;
const value = target[_prop] || null;
return value && value.hasOwnProperty(VALUE) ? value[value] : value;
};
Object.defineProperty(obj, prop, desc);
};
}
export function patchOnProperties(obj: any, properties: string[]) {
const onProperties = [];
for (const prop in obj) {
if (prop.substr(0, 2) == 'on') {
onProperties.push(prop);
}
}
for (let j = 0; j < onProperties.length; j++) {
patchProperty(obj, onProperties[j]);
}
if (properties) {

@@ -153,4 +177,14 @@ for (let i = 0; i < properties.length; i++) {

}
} else {
const onProperties = [];
for (const prop in obj) {
if (prop.substr(0, 2) == 'on') {
onProperties.push(prop);
}
}
for (let j = 0; j < onProperties.length; j++) {
patchProperty(obj, onProperties[j]);
}
}
};
}

@@ -168,4 +202,14 @@ const EVENT_TASKS = zoneSymbol('eventTasks');

export interface EventListenerOptions { capture?: boolean; }
export interface AddEventListenerOptions extends EventListenerOptions {
passive?: boolean;
once?: boolean;
}
export declare type EventListenerOptionsOrCapture =
EventListenerOptions | AddEventListenerOptions | boolean;
export interface ListenerTaskMeta extends TaskData {
useCapturing: boolean;
options: EventListenerOptionsOrCapture;
eventName: string;

@@ -175,2 +219,3 @@ handler: NestedEventListenerOrEventListenerObject;

name: string;
crossContext: boolean;
invokeAddFunc: (addFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) => any;

@@ -181,4 +226,19 @@ invokeRemoveFunc:

// compare the EventListenerOptionsOrCapture
// 1. if the options is usCapture: boolean, compare the useCpature values directly
// 2. if the options is EventListerOptions, only compare the capture
function compareEventListenerOptions(
left: EventListenerOptionsOrCapture, right: EventListenerOptionsOrCapture): boolean {
const leftCapture: any = (typeof left === 'boolean') ?
left :
((typeof left === 'object') ? (left && left.capture) : false);
const rightCapture: any = (typeof right === 'boolean') ?
right :
((typeof right === 'object') ? (right && right.capture) : false);
return !!leftCapture === !!rightCapture;
}
function findExistingRegisteredTask(
target: any, handler: any, name: string, capture: boolean, remove: boolean): Task {
target: any, handler: any, name: string, options: EventListenerOptionsOrCapture,
remove: boolean): Task {
const eventTasks: Task[] = target[EVENT_TASKS];

@@ -191,3 +251,3 @@ if (eventTasks) {

if ((data.handler === handler || listener.listener === handler) &&
data.useCapturing === capture && data.eventName === name) {
compareEventListenerOptions(data.options, options) && data.eventName === name) {
if (remove) {

@@ -203,4 +263,3 @@ eventTasks.splice(i, 1);

function findAllExistingRegisteredTasks(
target: any, name: string, capture: boolean, remove: boolean): Task[] {
function findAllExistingRegisteredTasks(target: any, name: string, remove: boolean): Task[] {
const eventTasks: Task[] = target[EVENT_TASKS];

@@ -212,3 +271,3 @@ if (eventTasks) {

const data = <ListenerTaskMeta>eventTask.data;
if (data.eventName === name && data.useCapturing === capture) {
if (data.eventName === name) {
result.push(eventTask);

@@ -239,3 +298,3 @@ if (remove) {

return {
useCapturing: args[2],
options: args[2],
eventName: args[0],

@@ -245,8 +304,21 @@ handler: args[1],

name: args[0],
crossContext: false,
invokeAddFunc: function(
addFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) {
if (delegate && (<Task>delegate).invoke) {
return this.target[addFnSymbol](this.eventName, (<Task>delegate).invoke, this.useCapturing);
// check if the data is cross site context, if it is, fallback to
// remove the delegate directly and try catch error
if (!this.crossContext) {
if (delegate && (<Task>delegate).invoke) {
return this.target[addFnSymbol](this.eventName, (<Task>delegate).invoke, this.options);
} else {
return this.target[addFnSymbol](this.eventName, delegate, this.options);
}
} else {
return this.target[addFnSymbol](this.eventName, delegate, this.useCapturing);
// add a if/else branch here for performance concern, for most times
// cross site context is false, so we don't need to try/catch
try {
return this.target[addFnSymbol](this.eventName, delegate, this.options);
} catch (err) {
// do nothing here is fine, because objects in a cross-site context are unusable
}
}

@@ -256,7 +328,18 @@ },

removeFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) {
if (delegate && (<Task>delegate).invoke) {
return this.target[removeFnSymbol](
this.eventName, (<Task>delegate).invoke, this.useCapturing);
// check if the data is cross site context, if it is, fallback to
// remove the delegate directly and try catch error
if (!this.crossContext) {
if (delegate && (<Task>delegate).invoke) {
return this.target[removeFnSymbol](this.eventName, (<Task>delegate).invoke, this.options);
} else {
return this.target[removeFnSymbol](this.eventName, delegate, this.options);
}
} else {
return this.target[removeFnSymbol](this.eventName, delegate, this.useCapturing);
// add a if/else branch here for performance concern, for most times
// cross site context is false, so we don't need to try/catch
try {
return this.target[removeFnSymbol](this.eventName, delegate, this.options);
} catch (err) {
// do nothing here is fine, because objects in a cross-site context are unusable
}
}

@@ -283,4 +366,3 @@ }

const meta = <ListenerTaskMeta>eventTask.data;
findExistingRegisteredTask(
meta.target, eventTask.invoke, meta.eventName, meta.useCapturing, true);
findExistingRegisteredTask(meta.target, eventTask.invoke, meta.eventName, meta.options, true);
return meta.invokeRemoveFunc(removeFnSymbol, eventTask);

@@ -292,3 +374,3 @@ }

data.useCapturing = data.useCapturing || defaultUseCapturing;
data.options = data.options || defaultUseCapturing;
// - Inside a Web Worker, `this` is undefined, the context is `global`

@@ -310,4 +392,5 @@ // - When `addEventListener` is called on the global context in strict mode, `this` is undefined

} catch (error) {
// Returning nothing here is fine, because objects in a cross-site context are unusable
return;
// we can still try to add the data.handler even we are in cross site context
data.crossContext = true;
return data.invokeAddFunc(addFnSymbol, data.handler);
}

@@ -322,3 +405,3 @@ // Ignore special listeners of IE11 & Edge dev tools, see

const eventTask: Task = findExistingRegisteredTask(
data.target, data.handler, data.eventName, data.useCapturing, false);
data.target, data.handler, data.eventName, data.options, false);
if (eventTask) {

@@ -345,8 +428,30 @@ // we already registered, so this will have noop.

const data = metaCreator(self, args);
data.useCapturing = data.useCapturing || defaultUseCapturing;
data.options = data.options || defaultUseCapturing;
// - Inside a Web Worker, `this` is undefined, the context is `global`
// - When `addEventListener` is called on the global context in strict mode, `this` is undefined
// see https://github.com/angular/zone.js/issues/190
const eventTask = findExistingRegisteredTask(
data.target, data.handler, data.eventName, data.useCapturing, true);
let delegate: EventListener = null;
if (typeof data.handler == 'function') {
delegate = <EventListener>data.handler;
} else if (data.handler && (<EventListenerObject>data.handler).handleEvent) {
delegate = (event) => (<EventListenerObject>data.handler).handleEvent(event);
}
let validZoneHandler = false;
try {
// In cross site contexts (such as WebDriver frameworks like Selenium),
// accessing the handler object here will cause an exception to be thrown which
// will fail tests prematurely.
validZoneHandler = data.handler && data.handler.toString() === '[object FunctionWrapper]';
} catch (error) {
data.crossContext = true;
return data.invokeRemoveFunc(symbol, data.handler);
}
// Ignore special listeners of IE11 & Edge dev tools, see
// https://github.com/angular/zone.js/issues/150
if (!delegate || validZoneHandler) {
return data.invokeRemoveFunc(symbol, data.handler);
}
const eventTask =
findExistingRegisteredTask(data.target, data.handler, data.eventName, data.options, true);
if (eventTask) {

@@ -360,5 +465,4 @@ eventTask.zone.cancelTask(eventTask);

export function makeZoneAwareRemoveAllListeners(fnName: string, useCapturingParam: boolean = true) {
export function makeZoneAwareRemoveAllListeners(fnName: string) {
const symbol = zoneSymbol(fnName);
const defaultUseCapturing = useCapturingParam ? false : undefined;

@@ -376,5 +480,3 @@ return function zoneAwareRemoveAllListener(self: any, args: any[]) {

const eventName = args[0];
const useCapturing = args[1] || defaultUseCapturing;
// call this function just remove the related eventTask from target[EVENT_TASKS]
findAllExistingRegisteredTasks(target, eventName, useCapturing, true);
// we don't need useCapturing here because useCapturing is just for DOM, and

@@ -384,2 +486,3 @@ // removeAllListeners should only be called by node eventEmitter

// will do remove listener(cancelTask) for us
findAllExistingRegisteredTasks(target, eventName, true);
target[symbol](eventName);

@@ -390,4 +493,2 @@ };

export function makeZoneAwareListeners(fnName: string) {
const symbol = zoneSymbol(fnName);
return function zoneAwareEventListeners(self: any, args: any[]) {

@@ -405,6 +506,2 @@ const eventName: string = args[0];

const zoneAwareAddEventListener =
makeZoneAwareAddListener(ADD_EVENT_LISTENER, REMOVE_EVENT_LISTENER);
const zoneAwareRemoveEventListener = makeZoneAwareRemoveListener(REMOVE_EVENT_LISTENER);
export function patchEventTargetMethods(

@@ -432,2 +529,4 @@ obj: any, addFnName: string = ADD_EVENT_LISTENER, removeFnName: string = REMOVE_EVENT_LISTENER,

if (!OriginalClass) return;
// keep original class in global
_global[zoneSymbol(className)] = OriginalClass;

@@ -457,2 +556,5 @@ _global[className] = function() {

// attach original delegate to patched function
attachOriginToPatched(_global[className], OriginalClass);
const instance = new OriginalClass(function() {});

@@ -474,2 +576,6 @@

this[originalInstanceKey][prop] = Zone.current.wrap(fn, className + '.' + prop);
// keep callback in wrapped function so we can
// use it in Function.prototype.toString to return
// the native one.
attachOriginToPatched(this[originalInstanceKey][prop], fn);
} else {

@@ -492,3 +598,3 @@ this[originalInstanceKey][prop] = fn;

}
};
}

@@ -523,2 +629,3 @@ export function createNamedFn(name: string, delegate: (self: any, args: any[]) => any): Function {

proto[name] = createNamedFn(name, patchFn(delegate, delegateName, name));
attachOriginToPatched(proto[name], delegate);
}

@@ -611,3 +718,7 @@ return delegate;

export function attachOriginToPatched(patched: Function, original: any) {
(patched as any)[zoneSymbol('OriginalDelegate')] = original;
}
(Zone as any)[zoneSymbol('patchEventTargetMethods')] = patchEventTargetMethods;
(Zone as any)[zoneSymbol('patchOnProperties')] = patchOnProperties;

@@ -8,3 +8,3 @@ /**

*/
((_global: any) => {
(() => {
const __symbol__ = (Zone as any).__symbol__;

@@ -21,2 +21,2 @@ // TODO: @JiaLiPassion, we can automatically patch bluebird

};
})(typeof window === 'object' && window || typeof self === 'object' && self || global);
})();

@@ -44,3 +44,3 @@ /**

// - In it() try to do fakeAsync(). The issue is that because the beforeEach forked the
// zone outside of fakeAsync it will be able to escope the fakeAsync rules.
// zone outside of fakeAsync it will be able to escape the fakeAsync rules.
// - Because ProxyZone is parent fo `childZone` fakeAsync can retroactively add

@@ -47,0 +47,0 @@ // fakeAsync behavior to the childZone.

@@ -33,3 +33,3 @@ /**

const zoneAwareRemoveAllListeners =
callAndReturnFirstParam(makeZoneAwareRemoveAllListeners(EE_REMOVE_ALL_LISTENER, false));
callAndReturnFirstParam(makeZoneAwareRemoveAllListeners(EE_REMOVE_ALL_LISTENER));
const zoneAwareListeners = makeZoneAwareListeners(EE_LISTENERS);

@@ -36,0 +36,0 @@

@@ -14,2 +14,3 @@ /**

import {patchTimer} from '../common/timers';
import {patchFuncToString, patchObjectToString} from '../common/to-string';
import {findEventTask, patchMacroTask, patchMicroTask, zoneSymbol} from '../common/utils';

@@ -39,2 +40,7 @@

// patch Function.prototyp.toString
patchFuncToString();
// patch Object.prototyp.toString
patchObjectToString();
// Crypto

@@ -41,0 +47,0 @@ let crypto: any;

@@ -61,3 +61,3 @@ /**

function renderLongStackTrace(frames: LongStackTrace[], stack: string): string {
const longTrace: string[] = [stack.trim()];
const longTrace: string[] = [stack ? stack.trim() : ''];

@@ -101,10 +101,16 @@ if (frames) {

parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): any {
const currentTask = Zone.currentTask;
let trace = currentTask && currentTask.data && (currentTask.data as any)[creationTrace] || [];
trace = [new LongStackTrace()].concat(trace);
if (trace.length > this.longStackTraceLimit) {
trace.length = this.longStackTraceLimit;
if (Error.stackTraceLimit > 0) {
// if Error.stackTraceLimit is 0, means stack trace
// is disabled, so we don't need to generate long stack trace
// this will improve performance in some test(some test will
// set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698
const currentTask = Zone.currentTask;
let trace = currentTask && currentTask.data && (currentTask.data as any)[creationTrace] || [];
trace = [new LongStackTrace()].concat(trace);
if (trace.length > this.longStackTraceLimit) {
trace.length = this.longStackTraceLimit;
}
if (!task.data) task.data = {};
(task.data as any)[creationTrace] = trace;
}
if (!task.data) task.data = {};
(task.data as any)[creationTrace] = trace;
return parentZoneDelegate.scheduleTask(targetZone, task);

@@ -115,9 +121,15 @@ },

parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, error: any): boolean {
const parentTask = Zone.currentTask || error.task;
if (error instanceof Error && parentTask) {
const longStack =
renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);
try {
error.stack = (error as any).longStack = longStack;
} catch (err) {
if (Error.stackTraceLimit > 0) {
// if Error.stackTraceLimit is 0, means stack trace
// is disabled, so we don't need to generate long stack trace
// this will improve performance in some test(some test will
// set stackTraceLimit to 0, https://github.com/angular/zone.js/issues/698
const parentTask = Zone.currentTask || error.task;
if (error instanceof Error && parentTask) {
const longStack =
renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);
try {
error.stack = (error as any).longStack = longStack;
} catch (err) {
}
}

@@ -137,2 +149,5 @@ }

function computeIgnoreFrames() {
if (Error.stackTraceLimit <= 0) {
return;
}
const frames: string[][] = [];

@@ -139,0 +154,0 @@ captureStackTraces(frames, 2);

{
"name": "zone.js",
"version": "0.8.5",
"version": "0.8.6",
"description": "Zones for JavaScript",

@@ -19,2 +19,3 @@ "main": "dist/zone-node.js",

"ci": "npm run lint && npm run format && npm run promisetest && npm run test:single && npm run test-node",
"closure:test": "scripts/closure/closure_compiler.sh",
"format": "gulp format:enforce",

@@ -56,2 +57,3 @@ "karma-jasmine": "karma start karma-build-jasmine.conf.js",

"es6-promise": "^3.0.2",
"google-closure-compiler": "^20170409.0.0",
"gulp": "^3.8.11",

@@ -58,0 +60,0 @@ "gulp-clang-format": "^1.0.23",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc