@coolon/angular-ui-powerups 0.0.90 → 0.0.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +468 -396
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.d.ts +19 -18
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +18 -17
  8. package/esm2015/lib/directives/command.directive.js +28 -5
  9. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -7
  10. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +3 -8
  11. package/esm2015/lib/interaction/interaction-context.js +70 -14
  12. package/esm2015/lib/interaction/services/dialog-interaction.service.js +11 -19
  13. package/esm2015/lib/place/navigation-session.js +182 -39
  14. package/esm2015/lib/place/place-component.js +4 -19
  15. package/esm2015/lib/place/place-router.js +65 -31
  16. package/esm2015/lib/place/route/guards/enter-place-guard.service.js +2 -2
  17. package/esm2015/lib/place/route/guards/leave-place.guard.js +7 -177
  18. package/esm5/coolon-angular-ui-powerups.js +18 -17
  19. package/esm5/lib/directives/command.directive.js +32 -5
  20. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -11
  21. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +3 -12
  22. package/esm5/lib/interaction/interaction-context.js +89 -27
  23. package/esm5/lib/interaction/services/dialog-interaction.service.js +11 -22
  24. package/esm5/lib/place/navigation-session.js +225 -54
  25. package/esm5/lib/place/place-component.js +4 -35
  26. package/esm5/lib/place/place-router.js +75 -37
  27. package/esm5/lib/place/route/guards/enter-place-guard.service.js +2 -2
  28. package/esm5/lib/place/route/guards/leave-place.guard.js +7 -176
  29. package/fesm2015/coolon-angular-ui-powerups.js +353 -299
  30. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  31. package/fesm5/coolon-angular-ui-powerups.js +430 -359
  32. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  33. package/lib/directives/command.directive.d.ts +2 -0
  34. package/lib/interaction/components/activity-container/activity-container.component.d.ts +1 -2
  35. package/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.d.ts +3 -4
  36. package/lib/interaction/interaction-context.d.ts +6 -3
  37. package/lib/interaction/services/dialog-interaction.service.d.ts +3 -5
  38. package/lib/place/navigation-session.d.ts +26 -9
  39. package/lib/place/place-component.d.ts +4 -9
  40. package/lib/place/place-router.d.ts +6 -3
  41. package/lib/place/route/guards/leave-place.guard.d.ts +2 -10
  42. package/package.json +1 -1
@@ -13,19 +13,22 @@ import { PlaceHistory } from './place-history';
13
13
  import { Visit } from './visit';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "@angular/router";
16
- import * as i2 from "@angular/common";
17
- import * as i3 from "./place-history";
16
+ import * as i2 from "./navigation-session";
17
+ import * as i3 from "@angular/common";
18
+ import * as i4 from "./place-history";
18
19
  export class PlaceRouter extends GarbageCollector {
19
20
  /**
20
21
  * @param {?} router
21
22
  * @param {?} urlSerializer
23
+ * @param {?} navigationSessionFactory
22
24
  * @param {?} angularLocation
23
25
  * @param {?} placeHistory
24
26
  */
25
- constructor(router, urlSerializer, angularLocation, placeHistory) {
27
+ constructor(router, urlSerializer, navigationSessionFactory, angularLocation, placeHistory) {
26
28
  super();
27
29
  this.router = router;
28
30
  this.urlSerializer = urlSerializer;
31
+ this.navigationSessionFactory = navigationSessionFactory;
29
32
  this.angularLocation = angularLocation;
30
33
  this.placeHistory = placeHistory;
31
34
  this.firstRoute = true;
@@ -55,8 +58,11 @@ export class PlaceRouter extends GarbageCollector {
55
58
  if (event instanceof NavigationStart) {
56
59
  this.onAngularRouterStarted(event);
57
60
  }
58
- if (event instanceof NavigationEnd || event instanceof NavigationError) {
59
- this.onAngularRouterFinished();
61
+ if (event instanceof NavigationEnd) {
62
+ this.onAngularRouterFinished(false);
63
+ }
64
+ if (event instanceof NavigationError) {
65
+ this.onAngularRouterFinished(true);
60
66
  }
61
67
  }));
62
68
  this.navigationSessionActive = chain(this.navigationSessionModel).isNotNil();
@@ -132,7 +138,7 @@ export class PlaceRouter extends GarbageCollector {
132
138
  */
133
139
  router => {
134
140
  /** @type {?} */
135
- const commands = this.createUrlManipulator(this.router.routerState.snapshot).createRedirectCommandsFor(next);
141
+ const commands = this.parseUrl(this.router.routerState.snapshot).createRedirectCommandsFor(next);
136
142
  // // we have to to use the definition for route id as our redirection always includes
137
143
  // // the id in the url segements (but leaves it blank when there's no id). I.e. in the
138
144
  // // no id case we're doing the following redirect [<placePath>, ""] -> ["..", <id>]
@@ -155,13 +161,15 @@ export class PlaceRouter extends GarbageCollector {
155
161
  */
156
162
  doNavigation(visit, customNavigation) {
157
163
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
158
- this._navigationSessionModel.value = NavigationSession.createInternal(visit);
164
+ this._navigationSessionModel.value = this.navigationSessionFactory.createInternal(visit);
159
165
  try {
160
166
  yield customNavigation(this.router);
161
167
  }
162
168
  finally {
169
+ // Router has finished (since there was no router change required) so we
170
+ // need to end the navigation session.
163
171
  if (this.navigationSession && !this.router.getCurrentNavigation()) {
164
- this.onAngularRouterFinished();
172
+ this.onAngularRouterFinished(false);
165
173
  }
166
174
  }
167
175
  });
@@ -188,9 +196,9 @@ export class PlaceRouter extends GarbageCollector {
188
196
  if (!this.navigationSession) { // We been activated by an external route rather than placeRouter.go(visit)
189
197
  console.log('navigation started', { firstTime: this.firstRoute });
190
198
  /** @type {?} */
191
- const session = NavigationSession.createExternal(this.firstRoute);
199
+ const session = this.navigationSessionFactory.createExternal(this.firstRoute);
192
200
  if (event.navigationTrigger === 'popstate') {
193
- session.setPopstateReturn(this.router.routerState.snapshot.url);
201
+ session.setPopstateReturnUrl(this.router.routerState.snapshot.url);
194
202
  }
195
203
  this._navigationSessionModel.value = session;
196
204
  }
@@ -199,23 +207,32 @@ export class PlaceRouter extends GarbageCollector {
199
207
  // @Trace()
200
208
  /**
201
209
  * @private
210
+ * @param {?} cancelled
202
211
  * @return {?}
203
212
  */
204
- onAngularRouterFinished() {
213
+ onAngularRouterFinished(cancelled) {
205
214
  /** @type {?} */
206
215
  const session = this._navigationSessionModel.value;
207
- // Update visits before we end the navigation session. This allows the place out let to
208
- // gate ignore changes that occur while the visit is active
209
- /** @type {?} */
210
- const visits = session.getVisits();
211
- visits.forEach((/**
212
- * @param {?} v
213
- * @return {?}
214
- */
215
- v => {
216
- this.placeHistory.add(v);
217
- }));
218
- this._activeVisits.value = visits;
216
+ if (!cancelled) {
217
+ // Update visits before we end the navigation session. This allows the placeOutets to
218
+ // ignore visit changes that occur while the navigation is in progress
219
+ /** @type {?} */
220
+ const visits = session.getVisits();
221
+ visits.forEach((/**
222
+ * @param {?} v
223
+ * @return {?}
224
+ */
225
+ v => this.placeHistory.add(v)));
226
+ this._activeVisits.value = visits;
227
+ }
228
+ else {
229
+ // Angular doesn't preserve the url when a guard cancels the back button.
230
+ // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
231
+ if (session.isPopState) {
232
+ console.log('cancelled during popstate');
233
+ this.angularLocation.go(session.popStateReturnUrl);
234
+ }
235
+ }
219
236
  this._navigationSessionModel.value = null;
220
237
  }
221
238
  /**
@@ -233,8 +250,8 @@ export class PlaceRouter extends GarbageCollector {
233
250
  * @param {?} snapshot
234
251
  * @return {?}
235
252
  */
236
- createUrlManipulator(snapshot) {
237
- return new PlaceRouter.UrlManipulator(this.urlSerializer.parse(snapshot.url));
253
+ parseUrl(snapshot) {
254
+ return new PlaceRouter.UrlHelper(this.urlSerializer.parse(snapshot.url));
238
255
  }
239
256
  }
240
257
  PlaceRouter.decorators = [
@@ -246,10 +263,11 @@ PlaceRouter.decorators = [
246
263
  PlaceRouter.ctorParameters = () => [
247
264
  { type: Router },
248
265
  { type: UrlSerializer },
266
+ { type: NavigationSession.Factory },
249
267
  { type: Location },
250
268
  { type: PlaceHistory }
251
269
  ];
252
- /** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i1.UrlSerializer), i0.ɵɵinject(i2.Location), i0.ɵɵinject(i3.PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
270
+ /** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i1.UrlSerializer), i0.ɵɵinject(i2.NavigationSession.Factory), i0.ɵɵinject(i3.Location), i0.ɵɵinject(i4.PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
253
271
  tslib_1.__decorate([
254
272
  Trace(),
255
273
  tslib_1.__metadata("design:type", Function),
@@ -286,13 +304,18 @@ if (false) {
286
304
  * @private
287
305
  */
288
306
  PlaceRouter.prototype.urlSerializer;
307
+ /**
308
+ * @type {?}
309
+ * @private
310
+ */
311
+ PlaceRouter.prototype.navigationSessionFactory;
289
312
  /** @type {?} */
290
313
  PlaceRouter.prototype.angularLocation;
291
314
  /** @type {?} */
292
315
  PlaceRouter.prototype.placeHistory;
293
316
  }
294
317
  (function (PlaceRouter) {
295
- class UrlManipulator {
318
+ class UrlHelper {
296
319
  /**
297
320
  * @param {?} urlTree
298
321
  */
@@ -366,20 +389,31 @@ if (false) {
366
389
  }));
367
390
  return commands;
368
391
  }
392
+ /**
393
+ * @param {?} placeDef
394
+ * @return {?}
395
+ */
396
+ includesPathOf(placeDef) {
397
+ return this.cloneUrlSegmentList().find((/**
398
+ * @param {?} s
399
+ * @return {?}
400
+ */
401
+ s => s.path === placeDef.path));
402
+ }
369
403
  }
370
404
  tslib_1.__decorate([
371
405
  Trace(),
372
406
  tslib_1.__metadata("design:type", Function),
373
407
  tslib_1.__metadata("design:paramtypes", [Visit]),
374
408
  tslib_1.__metadata("design:returntype", Array)
375
- ], UrlManipulator.prototype, "createRedirectCommandsFor", null);
376
- PlaceRouter.UrlManipulator = UrlManipulator;
409
+ ], UrlHelper.prototype, "createRedirectCommandsFor", null);
410
+ PlaceRouter.UrlHelper = UrlHelper;
377
411
  if (false) {
378
412
  /**
379
413
  * @type {?}
380
414
  * @private
381
415
  */
382
- UrlManipulator.prototype.urlTree;
416
+ UrlHelper.prototype.urlTree;
383
417
  }
384
418
  })(PlaceRouter || (PlaceRouter = {}));
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFHTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEVBRU4sVUFBVSxFQUNWLGFBQWEsRUFFZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFFTCxHQUFHLEVBQ0gsZ0JBQWdCLEVBR2hCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsS0FBSyxFQUVOLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7OztBQU1oQyxNQUFNLE9BQU8sV0FBWSxTQUFRLGdCQUFnQjs7Ozs7OztJQVUvQyxZQUE2QixNQUFjLEVBQ2QsYUFBNEIsRUFDcEMsZUFBeUIsRUFDekIsWUFBMEI7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFKbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUFVO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBWHZDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFVCw0QkFBdUIsR0FBRyxJQUFJLGlCQUFpQixFQUFxQixDQUFDO1FBQ3JFLGtCQUFhLEdBQUcsSUFBSSxnQkFBZ0Is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QVksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQzdCO1lBQ0gsQ0FBQyxFQUFDLENBQUM7WUFDSCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0tBRUY7SUFiQztRQURDLEtBQUssRUFBRTs7aURBQ3lCLEtBQUs7O21FQVdyQztJQW5EVSwwQkFBYyxpQkFxRDFCLENBQUE7Ozs7OztRQW5EYSxpQ0FBd0I7O0FBb0R4QyxDQUFDLEVBekRnQixXQUFXLEtBQVgsV0FBVyxRQXlEM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsU2VnbWVudCxcbiAgVXJsU2VyaWFsaXplcixcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgRHNsLFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBIYXNPbmVJbmRleENoYWluLFxuICBMaXN0TW9kZWwsXG4gIE11dGFibGVMaXN0TW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBUcmFjZSxcbiAgVmFsdWVNb2RlbFxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tICcuL25hdmlnYXRpb24tc2Vzc2lvbic7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuL3BsYWNlLWhpc3RvcnknO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuL3Zpc2l0JztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZVJvdXRlciBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG4gIHByaXZhdGUgZmlyc3RSb3V0ZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvblNlc3Npb25Nb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU2Vzc2lvbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVmlzaXRzID0gbmV3IE11dGFibGVMaXN0TW9kZWw8VmlzaXQ+KCk7XG5cbiAgcmVhZG9ubHkgbmF2aWdhdGlvblNlc3Npb25BY3RpdmU6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHJlYWRvbmx5IGFjdGl2ZVZpc2l0SW5kZXg6IEhhc09uZUluZGV4Q2hhaW48J3BsYWNlRGVmaW5pdGlvbicsIFZpc2l0PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVybFNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXIsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGFuZ3VsYXJMb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgICAgICAgIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5KSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuYWN0aXZlVmlzaXRJbmRleCA9IGNoYWluKHRoaXMuX2FjdGl2ZVZpc2l0cykuaW5kZXhCeSgncGxhY2VEZWZpbml0aW9uJyk7XG5cbiAgICBhbmd1bGFyTG9jYXRpb24ub25VcmxDaGFuZ2UodXJsID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGBsb2NhdGlvbi5vblVybENoYW5nZSAtPiAke3VybH1gKTtcbiAgICB9KTtcblxuICAgIC8vIFRPRE86IG1ha2Ugc2V0dXAgdGhlIGNhbGxiYWNrcyBpbiBkdXJpbmcgbW9kdWxlIGluaXRpYXRpb24gdG8gbWFrZSB0aGlzIHRlc3RhYmxlLlxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgLy8gUm91dGluZyBldmVudCBzZXF1ZW5jZVxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkNhbmNlbCAtLT4gcmVkaXJlY3QsIGdvIGFyb3VuZCBhZ2FpbiBpbiB0aGUgc2FtZSBzZXNzaW9uXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRW5kIC0tPiBuYXZpZ2F0aW9uIGNvbXBsZXRlLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FcnJvciAtLT4gbmF2aWdhdGlvbiBjYW5jZWxlZCwgZW5kIHNlc3Npb24uXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIHRoaXMub25Bbmd1bGFyUm91dGVyU3RhcnRlZChldmVudCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgIHRoaXMub25Bbmd1bGFyUm91dGVyRmluaXNoZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMubmF2aWdhdGlvblNlc3Npb25BY3RpdmUgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwpLmlzTm90TmlsKCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZS5zdWJzY3JpYmUoYWN0aXZlID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCduYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZScsIGFjdGl2ZSk7XG4gICAgfSk7XG4gICAgLy8gY29uc3QgdHhvID0gbmV3IFRyYW5zYWN0aW9uT2JzZXJ2ZXIoKS5vbkV2ZW50KGUgPT4gY29uc29sZS5sb2coZS50b1N0cmluZygpKSk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMubmF2aWdhdGlvblNlc3Npb25Nb2RlbCcsIHRoaXMubmF2aWdhdGlvblNlc3Npb25Nb2RlbCk7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblNlc3Npb24oKTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TZXNzaW9uTW9kZWwoKTogVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU2Vzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVZpc2l0cygpOiBMaXN0TW9kZWw8VmlzaXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmlzaXRzLnJlYWRvbmx5O1xuICB9XG5cbiAgLyoqXG4gICAqICBwbGFjZVJvdXRlci5uYXZpZ2F0ZShwbGFjZURlc3RpbmF0aW9ucy5zb21lUGxhY2UuY3JlYXRlVmlzaXQocm91dGVJZCwgLi4udmlzaXRQYXJhbXMpKTtcbiAgICogQHBhcmFtIHZpc2l0XG4gICAqL1xuICBAVHJhY2UoKVxuICBhc3luYyBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQsIG9wdGlvbnM/OiB7IHJlbGF0aXZlVG86IEFjdGl2YXRlZFJvdXRlIH0pIHtcbiAgICB0aGlzLmRvTmF2aWdhdGlvbih2aXNpdCwgYXN5bmMgcm91dGVyID0+IHtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgICAgICB2aXNpdC5wbGFjZURlZmluaXRpb24ucGF0aCxcbiAgICAgICAgLi4udGhpcy5jcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQpXG4gICAgICBdO1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIHtcbiAgICAgICAgcmVsYXRpdmVUbzogb3B0aW9ucyA/IG9wdGlvbnMucmVsYXRpdmVUbyA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgcHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcmV2aW91czogVmlzaXQsIG5leHQ6IFZpc2l0KSB7XG5cbiAgICAvLyB3ZSBoYXZlIHRvIHB1c2ggdG8gaGlzdG9yeSBzbyBvdXIgcmVtZW1iZXIgc2FuaXRpc2VycyBkb24ndCBwaWNrIHVwIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIC8vIHdoZW4gaXQncyBiZWVuIGNsZWFyZWQgYnkgdGhlIHVzZXIuXG4gICAgdGhpcy5wbGFjZUhpc3RvcnkuYWRkKG5leHQpO1xuXG4gICAgLy8gRklYTUU6IG5vIHJvdXRlIGlkIC0+IHJvdXRlIGlkIGR1cGxpY2F0ZXMgcm91dGUgcGFyYW1ldGVyc1xuICAgIGlmIChuZXh0Lmhhc1JvdXRpbmdDaGFuZ2VkRnJvbShwcmV2aW91cykpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvTmF2aWdhdGlvbihuZXh0LCByb3V0ZXIgPT4ge1xuICAgICAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMuY3JlYXRlVXJsTWFuaXB1bGF0b3IodGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QpLmNyZWF0ZVJlZGlyZWN0Q29tbWFuZHNGb3IobmV4dCk7XG4gICAgICAgIC8vIC8vIHdlIGhhdmUgdG8gdG8gdXNlIHRoZSBkZWZpbml0aW9uIGZvciByb3V0ZSBpZCBhcyBvdXIgcmVkaXJlY3Rpb24gYWx3YXlzIGluY2x1ZGVzXG4gICAgICAgIC8vIC8vIHRoZSBpZCBpbiB0aGUgdXJsIHNlZ2VtZW50cyAoYnV0IGxlYXZlcyBpdCBibGFuayB3aGVuIHRoZXJlJ3Mgbm8gaWQpLiBJLmUuIGluIHRoZVxuICAgICAgICAvLyAvLyBubyBpZCBjYXNlIHdlJ3JlIGRvaW5nIHRoZSBmb2xsb3dpbmcgcmVkaXJlY3QgWzxwbGFjZVBhdGg+LCBcIlwiXSAtPiBbXCIuLlwiLCA8aWQ+XVxuICAgICAgICAvLyBjb25zdCByZWxhdGl2ZVBhdGggPSAhIXByZXZpb3VzLnBsYWNlRGVmaW5pdGlvbi5oYXNSb3V0ZUlkKCkgPyAnLi4nIDogJy4nO1xuICAgICAgICAvLyBjb25zdCBjb21tYW5kcyA9IFtcbiAgICAgICAgLy8gICByZWxhdGl2ZVBhdGgsXG4gICAgICAgIC8vICAgLi4udGhpcy5jcmVhdGVSb3V0ZVBhcmFtZXRlcnMobmV4dCksXG4gICAgICAgIC8vICAgLi4udGhpcy5leHRyYWN0Q2hpbGRQYXRoKGFjdGl2YXRlZFJvdXRlLnNuYXBzaG90KVxuICAgICAgICAvLyBdO1xuICAgICAgICBjb25zb2xlLmxvZygnIyMjIFB1c2ggQ2hhbmdlcyB0byByb3V0ZSBSZWRpcmVjdCcsIHsgY29tbWFuZHMgfSk7XG4gICAgICAgIHJldHVybiByb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZG9OYXZpZ2F0aW9uKHZpc2l0OiBWaXNpdCwgY3VzdG9tTmF2aWdhdGlvbjogKHJvdXRlcjogUm91dGVyKSA9PiBhbnkpIHtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gTmF2aWdhdGlvblNlc3Npb24uY3JlYXRlSW50ZXJuYWwodmlzaXQpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjdXN0b21OYXZpZ2F0aW9uKHRoaXMucm91dGVyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNlc3Npb24gJiYgIXRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkpIHtcbiAgICAgICAgdGhpcy5vbkFuZ3VsYXJSb3V0ZXJGaW5pc2hlZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUm91dGVQYXJhbWV0ZXJzKHZpc2l0OiBWaXNpdCkge1xuICAgIGNvbnN0IGRlZiA9IHZpc2l0LnBsYWNlRGVmaW5pdGlvbjtcbiAgICByZXR1cm4gdmlzaXQuaGFzUm91dGVJZCgpID9cbiAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVJZCh2aXNpdCksIGRlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpXSA6XG4gICAgICBbZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCldO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBvbkFuZ3VsYXJSb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBpZiAoIXRoaXMubmF2aWdhdGlvblNlc3Npb24pIHsgLy8gV2UgYmVlbiBhY3RpdmF0ZWQgYnkgYW4gZXh0ZXJuYWwgcm91dGUgcmF0aGVyIHRoYW4gcGxhY2VSb3V0ZXIuZ28odmlzaXQpXG4gICAgICBjb25zb2xlLmxvZygnbmF2aWdhdGlvbiBzdGFydGVkJywgeyBmaXJzdFRpbWU6IHRoaXMuZmlyc3RSb3V0ZSB9KTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBOYXZpZ2F0aW9uU2Vzc2lvbi5jcmVhdGVFeHRlcm5hbCh0aGlzLmZpcnN0Um91dGUpO1xuICAgICAgaWYgKGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKSB7XG4gICAgICAgIHNlc3Npb24uc2V0UG9wc3RhdGVSZXR1cm4odGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWUgPSBzZXNzaW9uO1xuICAgIH1cbiAgICB0aGlzLmZpcnN0Um91dGUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgb25Bbmd1bGFyUm91dGVyRmluaXNoZWQoKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWU7XG4gICAgLy8gVXBkYXRlIHZpc2l0cyBiZWZvcmUgd2UgZW5kIHRoZSBuYXZpZ2F0aW9uIHNlc3Npb24uICBUaGlzIGFsbG93cyB0aGUgcGxhY2Ugb3V0IGxldCB0b1xuICAgIC8vIGdhdGUgaWdub3JlIGNoYW5nZXMgdGhhdCBvY2N1ciB3aGlsZSB0aGUgdmlzaXQgaXMgYWN0aXZlXG4gICAgY29uc3QgdmlzaXRzID0gc2Vzc2lvbi5nZXRWaXNpdHMoKTtcbiAgICB2aXNpdHMuZm9yRWFjaCh2ID0+IHtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5LmFkZCh2KTtcbiAgICB9KTtcbiAgICB0aGlzLl9hY3RpdmVWaXNpdHMudmFsdWUgPSB2aXNpdHM7XG5cbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIGV4dHJhY3RDaGlsZFBhdGgoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBhbnlbXSB7XG4gICAgcmV0dXJuIF8uZmxhdHRlbihhY3RpdmF0ZWRSb3V0ZS5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gY2hpbGQudXJsKSk7XG4gIH1cblxuICBjcmVhdGVVcmxNYW5pcHVsYXRvcihzbmFwc2hvdDogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFBsYWNlUm91dGVyLlVybE1hbmlwdWxhdG9yIHtcbiAgICByZXR1cm4gbmV3IFBsYWNlUm91dGVyLlVybE1hbmlwdWxhdG9yKHRoaXMudXJsU2VyaWFsaXplci5wYXJzZShzbmFwc2hvdC51cmwpKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGxhY2VSb3V0ZXIge1xuXG5cbiAgZXhwb3J0IGNsYXNzIFVybE1hbmlwdWxhdG9yIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdXJsVHJlZTogVXJsVHJlZSkge1xuICAgICAgY29uc29sZS5sb2coeyBzZWdtZW50czogdGhpcy51cmxUcmVlLnJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50cyB9KTtcbiAgICB9XG5cbiAgICBjbG9uZVVybFNlZ21lbnRMaXN0KCk6IFVybFNlZ21lbnRbXSB7XG4gICAgICByZXR1cm4gWy4uLnRoaXMudXJsVHJlZS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHNdO1xuICAgIH1cblxuICAgIHVwZGF0ZVZpc2l0U2VnbWVudHModmlzaXQ6IFZpc2l0KTogVXJsU2VnbWVudFtdIHtcbiAgICAgIC8vIFVnbHksIGJ1dCBpdCB3b3JrcyBmb3Igbm93LlxuICAgICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLmNsb25lVXJsU2VnbWVudExpc3QoKTtcbiAgICAgIGNvbnN0IHZpc2l0U2VnbWVudHMgPSB0aGlzLmNvbnZlcnRUb1VybFNlZ21lbnRzKHZpc2l0KTtcbiAgICAgIGNvbnN0IHJlcGxhY2VBdCA9IHNlZ21lbnRzLmZpbmRJbmRleChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCA9PT0gdmlzaXRTZWdtZW50c1swXS5wYXRoKTtcbiAgICAgIC8vIGRvIG5vdCB1c2UgdGhlIHJldHVybiB2YWx1ZSwgaXQncyB0aGUgaXRlbXMgdGhhdCB3ZXJlIHJlbW92ZWQhXG4gICAgICBzZWdtZW50cy5zcGxpY2UocmVwbGFjZUF0LCB2aXNpdFNlZ21lbnRzLmxlbmd0aCwgLi4udmlzaXRTZWdtZW50cyk7XG4gICAgICByZXR1cm4gc2VnbWVudHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIHZpc2l0IGludG8gc2VnbWVudHMuICBQbGVhc2Ugbm90IHRoYXQgdGhlc2Ugc2VnbWVudHMgYXJlIG5vdCBlXG4gICAgICogQHBhcmFtIHZpc2l0XG4gICAgICovXG4gICAgY29udmVydFRvVXJsU2VnbWVudHModmlzaXQ6IFZpc2l0KTogVXJsU2VnbWVudFtdIHtcbiAgICAgIHJldHVybiB2aXNpdC5wbGFjZURlZmluaXRpb24uaGFzUm91dGVJZCgpID9cbiAgICAgICAgW1xuICAgICAgICAgIC8vIE5PVEU6XG4gICAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gYXR0YWNoIHRoZSBwYXJhbXMgdG8gdGhlIHJvb3QgcGF0aCBhbmQgbm90IHRoZSBpZC4gIElmIHdlIGF0dGFjaCB0aGVtXG4gICAgICAgICAgLy8gdG8gYW4gZW1wdHkgaWQgdGhlbiB0aGUgYW5ndWxhciByb3V0ZXIgd29uJ3QgbWF0Y2ggdGhlIHBhdHRlcm4uXG4gICAgICAgICAgbmV3IFVybFNlZ21lbnQodmlzaXQucGxhY2VEZWZpbml0aW9uLnBhdGgsIHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpKSxcbiAgICAgICAgICBuZXcgVXJsU2VnbWVudCh2aXNpdC5wbGFjZURlZmluaXRpb24uZ2V0Rm9ybWF0dGVkUm91dGVJZCh2aXNpdCksIHt9KV1cbiAgICAgICAgOlxuICAgICAgICBbXG4gICAgICAgICAgbmV3IFVybFNlZ21lbnQodmlzaXQucGxhY2VEZWZpbml0aW9uLnBhdGgsIHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpKVxuICAgICAgICBdO1xuICAgIH1cblxuXG4gICAgQFRyYWNlKClcbiAgICBjcmVhdGVSZWRpcmVjdENvbW1hbmRzRm9yKHZpc2l0OiBWaXNpdCk6IGFueVtdIHtcblxuICAgICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLnVwZGF0ZVZpc2l0U2VnbWVudHModmlzaXQpO1xuICAgICAgY29uc3QgY29tbWFuZHMgPSBbXTtcbiAgICAgIHNlZ21lbnRzLmZvckVhY2gocyA9PiB7XG4gICAgICAgIGNvbW1hbmRzLnB1c2gocy5wYXRoKTtcbiAgICAgICAgaWYgKHMucGFyYW1ldGVyTWFwLmtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbW1hbmRzLnB1c2gocy5wYXJhbWV0ZXJzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29tbWFuZHM7XG4gICAgfVxuXG4gIH1cbn1cbiJdfQ==
419
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFHTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEVBRU4sVUFBVSxFQUNWLGFBQWEsRUFFZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFFTCxHQUFHLEVBQ0gsZ0JBQWdCLEVBR2hCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsS0FBSyxFQUVOLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7QUFNaEMsTUFBTSxPQUFPLFdBQVksU0FBUSxnQkFBZ0I7Ozs7Ozs7O0lBVS9DLFlBQTZCLE1BQWMsRUFDZCxhQUE0QixFQUM1Qix3QkFBbUQsRUFDM0QsZUFBeUIsRUFDekIsWUFBMEI7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFMbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMkI7UUFDM0Qsb0JBQWUsR0FBZixlQUFlLENBQVU7UUFDekIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFadkMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUVULDRCQUF1QixHQUFHLElBQUks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bmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsU2VnbWVudCxcbiAgVXJsU2VyaWFsaXplcixcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgRHNsLFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBIYXNPbmVJbmRleENoYWluLFxuICBMaXN0TW9kZWwsXG4gIE11dGFibGVMaXN0TW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBUcmFjZSxcbiAgVmFsdWVNb2RlbFxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tICcuL25hdmlnYXRpb24tc2Vzc2lvbic7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VIaXN0b3J5IH0gZnJvbSAnLi9wbGFjZS1oaXN0b3J5JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VSb3V0ZXIgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcml2YXRlIGZpcnN0Um91dGUgPSB0cnVlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25TZXNzaW9uTW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8TmF2aWdhdGlvblNlc3Npb24+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVZpc2l0cyA9IG5ldyBNdXRhYmxlTGlzdE1vZGVsPFZpc2l0PigpO1xuXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25TZXNzaW9uQWN0aXZlOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICByZWFkb25seSBhY3RpdmVWaXNpdEluZGV4OiBIYXNPbmVJbmRleENoYWluPCdwbGFjZURlZmluaXRpb24nLCBWaXNpdD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25TZXNzaW9uRmFjdG9yeTogTmF2aWdhdGlvblNlc3Npb24uRmFjdG9yeSxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgICAgICAgcmVhZG9ubHkgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnkpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5hY3RpdmVWaXNpdEluZGV4ID0gY2hhaW4odGhpcy5fYWN0aXZlVmlzaXRzKS5pbmRleEJ5KCdwbGFjZURlZmluaXRpb24nKTtcblxuICAgIGFuZ3VsYXJMb2NhdGlvbi5vblVybENoYW5nZSh1cmwgPT4ge1xuICAgICAgY29uc29sZS5sb2coYGxvY2F0aW9uLm9uVXJsQ2hhbmdlIC0+ICR7dXJsfWApO1xuICAgIH0pO1xuXG4gICAgLy8gVE9ETzogbWFrZSBzZXR1cCB0aGUgY2FsbGJhY2tzIGluIGR1cmluZyBtb2R1bGUgaW5pdGlhdGlvbiB0byBtYWtlIHRoaXMgdGVzdGFibGUuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAvLyBSb3V0aW5nIGV2ZW50IHNlcXVlbmNlXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uQ2FuY2VsIC0tPiByZWRpcmVjdCwgZ28gYXJvdW5kIGFnYWluIGluIHRoZSBzYW1lIHNlc3Npb25cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FbmQgLS0+IG5hdmlnYXRpb24gY29tcGxldGUsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVycm9yIC0tPiBuYXZpZ2F0aW9uIGNhbmNlbGVkLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vbkFuZ3VsYXJSb3V0ZXJTdGFydGVkKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgdGhpcy5vbkFuZ3VsYXJSb3V0ZXJGaW5pc2hlZChmYWxzZSk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgdGhpcy5vbkFuZ3VsYXJSb3V0ZXJGaW5pc2hlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMubmF2aWdhdGlvblNlc3Npb25BY3RpdmUgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwpLmlzTm90TmlsKCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZS5zdWJzY3JpYmUoYWN0aXZlID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCduYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZScsIGFjdGl2ZSk7XG4gICAgfSk7XG4gICAgLy8gY29uc3QgdHhvID0gbmV3IFRyYW5zYWN0aW9uT2JzZXJ2ZXIoKS5vbkV2ZW50KGUgPT4gY29uc29sZS5sb2coZS50b1N0cmluZygpKSk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMubmF2aWdhdGlvblNlc3Npb25Nb2RlbCcsIHRoaXMubmF2aWdhdGlvblNlc3Npb25Nb2RlbCk7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblNlc3Npb24oKTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TZXNzaW9uTW9kZWwoKTogVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU2Vzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVZpc2l0cygpOiBMaXN0TW9kZWw8VmlzaXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmlzaXRzLnJlYWRvbmx5O1xuICB9XG5cbiAgLyoqXG4gICAqICBwbGFjZVJvdXRlci5uYXZpZ2F0ZShwbGFjZURlc3RpbmF0aW9ucy5zb21lUGxhY2UuY3JlYXRlVmlzaXQocm91dGVJZCwgLi4udmlzaXRQYXJhbXMpKTtcbiAgICogQHBhcmFtIHZpc2l0XG4gICAqL1xuICBAVHJhY2UoKVxuICBhc3luYyBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQsIG9wdGlvbnM/OiB7IHJlbGF0aXZlVG86IEFjdGl2YXRlZFJvdXRlIH0pIHtcbiAgICB0aGlzLmRvTmF2aWdhdGlvbih2aXNpdCwgYXN5bmMgcm91dGVyID0+IHtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgICAgICB2aXNpdC5wbGFjZURlZmluaXRpb24ucGF0aCxcbiAgICAgICAgLi4udGhpcy5jcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQpXG4gICAgICBdO1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIHtcbiAgICAgICAgcmVsYXRpdmVUbzogb3B0aW9ucyA/IG9wdGlvbnMucmVsYXRpdmVUbyA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgcHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcmV2aW91czogVmlzaXQsIG5leHQ6IFZpc2l0KSB7XG5cbiAgICAvLyB3ZSBoYXZlIHRvIHB1c2ggdG8gaGlzdG9yeSBzbyBvdXIgcmVtZW1iZXIgc2FuaXRpc2VycyBkb24ndCBwaWNrIHVwIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIC8vIHdoZW4gaXQncyBiZWVuIGNsZWFyZWQgYnkgdGhlIHVzZXIuXG4gICAgdGhpcy5wbGFjZUhpc3RvcnkuYWRkKG5leHQpO1xuXG4gICAgLy8gRklYTUU6IG5vIHJvdXRlIGlkIC0+IHJvdXRlIGlkIGR1cGxpY2F0ZXMgcm91dGUgcGFyYW1ldGVyc1xuICAgIGlmIChuZXh0Lmhhc1JvdXRpbmdDaGFuZ2VkRnJvbShwcmV2aW91cykpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvTmF2aWdhdGlvbihuZXh0LCByb3V0ZXIgPT4ge1xuICAgICAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMucGFyc2VVcmwodGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QpLmNyZWF0ZVJlZGlyZWN0Q29tbWFuZHNGb3IobmV4dCk7XG4gICAgICAgIC8vIC8vIHdlIGhhdmUgdG8gdG8gdXNlIHRoZSBkZWZpbml0aW9uIGZvciByb3V0ZSBpZCBhcyBvdXIgcmVkaXJlY3Rpb24gYWx3YXlzIGluY2x1ZGVzXG4gICAgICAgIC8vIC8vIHRoZSBpZCBpbiB0aGUgdXJsIHNlZ2VtZW50cyAoYnV0IGxlYXZlcyBpdCBibGFuayB3aGVuIHRoZXJlJ3Mgbm8gaWQpLiBJLmUuIGluIHRoZVxuICAgICAgICAvLyAvLyBubyBpZCBjYXNlIHdlJ3JlIGRvaW5nIHRoZSBmb2xsb3dpbmcgcmVkaXJlY3QgWzxwbGFjZVBhdGg+LCBcIlwiXSAtPiBbXCIuLlwiLCA8aWQ+XVxuICAgICAgICAvLyBjb25zdCByZWxhdGl2ZVBhdGggPSAhIXByZXZpb3VzLnBsYWNlRGVmaW5pdGlvbi5oYXNSb3V0ZUlkKCkgPyAnLi4nIDogJy4nO1xuICAgICAgICAvLyBjb25zdCBjb21tYW5kcyA9IFtcbiAgICAgICAgLy8gICByZWxhdGl2ZVBhdGgsXG4gICAgICAgIC8vICAgLi4udGhpcy5jcmVhdGVSb3V0ZVBhcmFtZXRlcnMobmV4dCksXG4gICAgICAgIC8vICAgLi4udGhpcy5leHRyYWN0Q2hpbGRQYXRoKGFjdGl2YXRlZFJvdXRlLnNuYXBzaG90KVxuICAgICAgICAvLyBdO1xuICAgICAgICBjb25zb2xlLmxvZygnIyMjIFB1c2ggQ2hhbmdlcyB0byByb3V0ZSBSZWRpcmVjdCcsIHsgY29tbWFuZHMgfSk7XG4gICAgICAgIHJldHVybiByb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZG9OYXZpZ2F0aW9uKHZpc2l0OiBWaXNpdCwgY3VzdG9tTmF2aWdhdGlvbjogKHJvdXRlcjogUm91dGVyKSA9PiBhbnkpIHtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbkZhY3RvcnkuY3JlYXRlSW50ZXJuYWwodmlzaXQpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjdXN0b21OYXZpZ2F0aW9uKHRoaXMucm91dGVyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gUm91dGVyIGhhcyBmaW5pc2hlZCAoc2luY2UgdGhlcmUgd2FzIG5vIHJvdXRlciBjaGFuZ2UgcmVxdWlyZWQpIHNvIHdlXG4gICAgICAvLyBuZWVkIHRvIGVuZCB0aGUgbmF2aWdhdGlvbiBzZXNzaW9uLlxuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNlc3Npb24gJiYgIXRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkpIHtcbiAgICAgICAgdGhpcy5vbkFuZ3VsYXJSb3V0ZXJGaW5pc2hlZChmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQ6IFZpc2l0KSB7XG4gICAgY29uc3QgZGVmID0gdmlzaXQucGxhY2VEZWZpbml0aW9uO1xuICAgIHJldHVybiB2aXNpdC5oYXNSb3V0ZUlkKCkgP1xuICAgICAgW2RlZi5nZXRGb3JtYXR0ZWRSb3V0ZUlkKHZpc2l0KSwgZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCldIDpcbiAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHZpc2l0KV07XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcml2YXRlIG9uQW5ndWxhclJvdXRlclN0YXJ0ZWQoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkge1xuICAgIGlmICghdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbikgeyAvLyBXZSBiZWVuIGFjdGl2YXRlZCBieSBhbiBleHRlcm5hbCByb3V0ZSByYXRoZXIgdGhhbiBwbGFjZVJvdXRlci5nbyh2aXNpdClcbiAgICAgIGNvbnNvbGUubG9nKCduYXZpZ2F0aW9uIHN0YXJ0ZWQnLCB7IGZpcnN0VGltZTogdGhpcy5maXJzdFJvdXRlIH0pO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMubmF2aWdhdGlvblNlc3Npb25GYWN0b3J5LmNyZWF0ZUV4dGVybmFsKHRoaXMuZmlyc3RSb3V0ZSk7XG4gICAgICBpZiAoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09ICdwb3BzdGF0ZScpIHtcbiAgICAgICAgc2Vzc2lvbi5zZXRQb3BzdGF0ZVJldHVyblVybCh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Nb2RlbC52YWx1ZSA9IHNlc3Npb247XG4gICAgfVxuICAgIHRoaXMuZmlyc3RSb3V0ZSA9IGZhbHNlO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBvbkFuZ3VsYXJSb3V0ZXJGaW5pc2hlZChjYW5jZWxsZWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Nb2RlbC52YWx1ZTtcbiAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgLy8gVXBkYXRlIHZpc2l0cyBiZWZvcmUgd2UgZW5kIHRoZSBuYXZpZ2F0aW9uIHNlc3Npb24uICBUaGlzIGFsbG93cyB0aGUgcGxhY2VPdXRldHMgdG9cbiAgICAgIC8vIGlnbm9yZSB2aXNpdCBjaGFuZ2VzIHRoYXQgb2NjdXIgd2hpbGUgdGhlIG5hdmlnYXRpb24gaXMgaW4gcHJvZ3Jlc3NcbiAgICAgIGNvbnN0IHZpc2l0cyA9IHNlc3Npb24uZ2V0VmlzaXRzKCk7XG4gICAgICB2aXNpdHMuZm9yRWFjaCh2ID0+IHRoaXMucGxhY2VIaXN0b3J5LmFkZCh2KSk7XG4gICAgICB0aGlzLl9hY3RpdmVWaXNpdHMudmFsdWUgPSB2aXNpdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBwcmVzZXJ2ZSB0aGUgdXJsIHdoZW4gYSBndWFyZCBjYW5jZWxzIHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMzU4NiNpc3N1ZWNvbW1lbnQtNDMyNzk1NzIwXG4gICAgICBpZiAoc2Vzc2lvbi5pc1BvcFN0YXRlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsZWQgZHVyaW5nIHBvcHN0YXRlJyk7XG4gICAgICAgIHRoaXMuYW5ndWxhckxvY2F0aW9uLmdvKHNlc3Npb24ucG9wU3RhdGVSZXR1cm5VcmwpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIGV4dHJhY3RDaGlsZFBhdGgoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBhbnlbXSB7XG4gICAgcmV0dXJuIF8uZmxhdHRlbihhY3RpdmF0ZWRSb3V0ZS5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gY2hpbGQudXJsKSk7XG4gIH1cblxuICBwYXJzZVVybChzbmFwc2hvdDogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFBsYWNlUm91dGVyLlVybEhlbHBlciB7XG4gICAgcmV0dXJuIG5ldyBQbGFjZVJvdXRlci5VcmxIZWxwZXIodGhpcy51cmxTZXJpYWxpemVyLnBhcnNlKHNuYXBzaG90LnVybCkpO1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZVJvdXRlciB7XG5cblxuICBleHBvcnQgY2xhc3MgVXJsSGVscGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdXJsVHJlZTogVXJsVHJlZSkge1xuICAgICAgY29uc29sZS5sb2coeyBzZWdtZW50czogdGhpcy51cmxUcmVlLnJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50cyB9KTtcbiAgICB9XG5cbiAgICBjbG9uZVVybFNlZ21lbnRMaXN0KCk6IFVybFNlZ21lbnRbXSB7XG4gICAgICByZXR1cm4gWy4uLnRoaXMudXJsVHJlZS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHNdO1xuICAgIH1cblxuICAgIHVwZGF0ZVZpc2l0U2VnbWVudHModmlzaXQ6IFZpc2l0KTogVXJsU2VnbWVudFtdIHtcbiAgICAgIC8vIFVnbHksIGJ1dCBpdCB3b3JrcyBmb3Igbm93LlxuICAgICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLmNsb25lVXJsU2VnbWVudExpc3QoKTtcbiAgICAgIGNvbnN0IHZpc2l0U2VnbWVudHMgPSB0aGlzLmNvbnZlcnRUb1VybFNlZ21lbnRzKHZpc2l0KTtcbiAgICAgIGNvbnN0IHJlcGxhY2VBdCA9IHNlZ21lbnRzLmZpbmRJbmRleChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCA9PT0gdmlzaXRTZWdtZW50c1swXS5wYXRoKTtcbiAgICAgIC8vIGRvIG5vdCB1c2UgdGhlIHJldHVybiB2YWx1ZSwgaXQncyB0aGUgaXRlbXMgdGhhdCB3ZXJlIHJlbW92ZWQhXG4gICAgICBzZWdtZW50cy5zcGxpY2UocmVwbGFjZUF0LCB2aXNpdFNlZ21lbnRzLmxlbmd0aCwgLi4udmlzaXRTZWdtZW50cyk7XG4gICAgICByZXR1cm4gc2VnbWVudHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIHZpc2l0IGludG8gc2VnbWVudHMuICBQbGVhc2Ugbm90IHRoYXQgdGhlc2Ugc2VnbWVudHMgYXJlIG5vdCBlXG4gICAgICogQHBhcmFtIHZpc2l0XG4gICAgICovXG4gICAgY29udmVydFRvVXJsU2VnbWVudHModmlzaXQ6IFZpc2l0KTogVXJsU2VnbWVudFtdIHtcbiAgICAgIHJldHVybiB2aXNpdC5wbGFjZURlZmluaXRpb24uaGFzUm91dGVJZCgpID9cbiAgICAgICAgW1xuICAgICAgICAgIC8vIE5PVEU6XG4gICAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gYXR0YWNoIHRoZSBwYXJhbXMgdG8gdGhlIHJvb3QgcGF0aCBhbmQgbm90IHRoZSBpZC4gIElmIHdlIGF0dGFjaCB0aGVtXG4gICAgICAgICAgLy8gdG8gYW4gZW1wdHkgaWQgdGhlbiB0aGUgYW5ndWxhciByb3V0ZXIgd29uJ3QgbWF0Y2ggdGhlIHBhdHRlcm4uXG4gICAgICAgICAgbmV3IFVybFNlZ21lbnQodmlzaXQucGxhY2VEZWZpbml0aW9uLnBhdGgsIHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpKSxcbiAgICAgICAgICBuZXcgVXJsU2VnbWVudCh2aXNpdC5wbGFjZURlZmluaXRpb24uZ2V0Rm9ybWF0dGVkUm91dGVJZCh2aXNpdCksIHt9KV1cbiAgICAgICAgOlxuICAgICAgICBbXG4gICAgICAgICAgbmV3IFVybFNlZ21lbnQodmlzaXQucGxhY2VEZWZpbml0aW9uLnBhdGgsIHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpKVxuICAgICAgICBdO1xuICAgIH1cblxuXG4gICAgQFRyYWNlKClcbiAgICBjcmVhdGVSZWRpcmVjdENvbW1hbmRzRm9yKHZpc2l0OiBWaXNpdCk6IGFueVtdIHtcblxuICAgICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLnVwZGF0ZVZpc2l0U2VnbWVudHModmlzaXQpO1xuICAgICAgY29uc3QgY29tbWFuZHMgPSBbXTtcbiAgICAgIHNlZ21lbnRzLmZvckVhY2gocyA9PiB7XG4gICAgICAgIGNvbW1hbmRzLnB1c2gocy5wYXRoKTtcbiAgICAgICAgaWYgKHMucGFyYW1ldGVyTWFwLmtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbW1hbmRzLnB1c2gocy5wYXJhbWV0ZXJzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29tbWFuZHM7XG4gICAgfVxuXG4gICAgaW5jbHVkZXNQYXRoT2YocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuY2xvbmVVcmxTZWdtZW50TGlzdCgpLmZpbmQocyA9PiBzLnBhdGggPT09IHBsYWNlRGVmLnBhdGgpO1xuICAgIH1cblxuICB9XG59XG4iXX0=
@@ -58,7 +58,7 @@ export class EnterPlaceGuard {
58
58
  if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
59
59
  // Regenerate the url
60
60
  /** @type {?} */
61
- const commands = this.placeRouter.createUrlManipulator(state).createRedirectCommandsFor(sanitisedVisit);
61
+ const commands = this.placeRouter.parseUrl(state).createRedirectCommandsFor(sanitisedVisit);
62
62
  console.log('##### Place Guard Redirect', commands);
63
63
  return this.router.createUrlTree(commands, {
64
64
  replaceUrl: true,
@@ -245,4 +245,4 @@ if (false) {
245
245
  ParamMapAdapter.prototype.params;
246
246
  }
247
247
  })(EnterPlaceGuard || (EnterPlaceGuard = {}));
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50ZXItcGxhY2UtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9ndWFyZHMvZW50ZXItcGxhY2UtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFJTCxNQUFNLEVBR04sYUFBYSxFQUVkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFLcEQsTUFBTSxPQUFPLGVBQWU7Ozs7Ozs7O0lBRTFCLFlBQTZCLE1BQWMsRUFDdkIsYUFBNEIsRUFDbkIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsUUFBa0I7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQy9DLENBQUM7Ozs7Ozs7SUFHSyxXQUFXLENBQUMsY0FBc0MsRUFBRSxLQUEwQjs7WUFDbEYsSUFBSSxjQUFjLENBQUMsMkJB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LElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQzs7OztRQUVELElBQUksSUFBSTtZQUNOLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztLQUVGOzs7Ozs7UUFwQmEsaUNBQWdEOztBQXFCaEUsQ0FBQyxFQTFEZ0IsZUFBZSxLQUFmLGVBQWUsUUEwRC9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIENhbkFjdGl2YXRlLFxuICBQYXJhbU1hcCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBVcmxTZWdtZW50LFxuICBVcmxTZXJpYWxpemVyLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvci9kaXN0L3NyYyc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuLi8uLi9wbGFjZS1oaXN0b3J5JztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vLi4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vLi4vdmlzaXQnO1xuaW1wb3J0IHsgVmlzaXRTYW5pdGlzZXIgfSBmcm9tICcuLi92aXNpdC1zYW5pdGlzZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFbnRlclBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlRGVmaW5pdGlvbiA9IFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24oYWN0aXZhdGVkUm91dGUuY29tcG9uZW50KTtcbiAgICAgIC8vIFBhcnNlIG91ciByb3V0ZSBwYXJhbXMuXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgRW50ZXJQbGFjZUd1YXJkLkNvbnNvbGlkYXRlZFBhcmFtZXRlck1hcChhY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcCwgYWN0aXZhdGVkUm91dGUudXJsKTtcbiAgICAgIGNvbnN0IHBhcnNlZFBhcmFtcyA9IHBsYWNlRGVmaW5pdGlvbi5wYXJzZVJvdXRlUGFyYW1zKHBhcmFtcyk7XG5cbiAgICAgIGNvbnN0IGluaXRpYWxWaXNpdCA9IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uZ2V0VmlzaXRGb3IocGxhY2VEZWZpbml0aW9uKSB8fCBuZXcgVmlzaXQocGxhY2VEZWZpbml0aW9uLCBwYXJzZWRQYXJhbXMpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VyID0gbmV3IFZpc2l0U2FuaXRpc2VyKGFjdGl2YXRlZFJvdXRlLCB0aGlzLnJvdXRlciwgdGhpcy5wbGFjZUhpc3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmlzaXQgPSBhd2FpdCBzYW5pdGlzZXIuc2FuaXRpc2UoaW5pdGlhbFZpc2l0Lm1lcmdlUm91dGVQYXJhbWV0ZXJzKHBhcnNlZFBhcmFtcykpO1xuXG4gICAgICAvLyBTYXZlIHRoZSB2aXNpdCB3aXRoIGFueSB1cGRhdGVkIHBhcmFtZXRlcnMuICBXZSBuZWVkIHRvIHNhdmUgaXQgc28gd2UgcmVtZW1iZXIgYW55IG5vbiByb3V0ZSBwYXJhbWV0ZXJzXG4gICAgICB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLnN0b3JlVmlzaXQoc2FuaXRpc2VkVmlzaXQpO1xuICAgICAgaWYgKGluaXRpYWxWaXNpdC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20oc2FuaXRpc2VkVmlzaXQpKSB7XG4gICAgICAgIC8vIFJlZ2VuZXJhdGUgdGhlIHVybFxuICAgICAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMucGxhY2VSb3V0ZXIuY3JlYXRlVXJsTWFuaXB1bGF0b3Ioc3RhdGUpLmNyZWF0ZVJlZGlyZWN0Q29tbWFuZHNGb3Ioc2FuaXRpc2VkVmlzaXQpO1xuICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgUGxhY2UgR3VhcmQgUmVkaXJlY3QnLCBjb21tYW5kcyk7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKGNvbW1hbmRzLCB7XG4gICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsYW5nLmlsbGVnYWxTdGF0ZShgZXhwZWN0ZWQgY29tcG9uZW50IHRvIGJlIGFuIGluc3RhbmNlIG9mIFBsYWNlQ29tcG9uZW50LCBnb3QgJHthY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnR9YCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRW50ZXJQbGFjZUd1YXJkIHtcbiAgLyoqXG4gICAqIFRoaXMgYSB3b3JrIGFyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCBhbiBhY3RpdmF0ZWQgcm91dGUgd2l0aCBtdWx0aXBsZSBzZWdtZW50cyBkb2Vzbid0XG4gICAqIGluY2x1ZGUgdGhlIHNlZ21lbnQgcGFyYW1zIGluIHRoZSBwYXJhbU1hcCBhcyB3ZWxsIGFzIGVhY2ggc2VnbWVudCByZXR1cm5zIGFuIGVtcHR5XG4gICAqIHBhcmFtIG1hcCBldmVuIHdoZW4gYHBhcmFtZXRlcmBzIGhhcyBjb250ZW50LlxuICAgKi9cbiAgZXhwb3J0IGNsYXNzIENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcCBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcblxuICAgIHByaXZhdGUgcGFyYW1NYXBzOiBQYXJhbU1hcFtdO1xuXG4gICAgY29uc3RydWN0b3IocGFyYW1NYXA6IFBhcmFtTWFwLCB1cmxTZWdtZW50czogVXJsU2VnbWVudFtdKSB7XG4gICAgICB0aGlzLnBhcmFtTWFwcyA9IFtwYXJhbU1hcF0uY29uY2F0KFxuICAgICAgICAodXJsU2VnbWVudHMgfHwgW10pLm1hcChzID0+IG5ldyBQYXJhbU1hcEFkYXB0ZXIocy5wYXJhbWV0ZXJzKSlcbiAgICAgICkuZmlsdGVyKG0gPT4gISFtKTsgLy8gdGhlIGFjdGl2YXRlZCByb3V0ZSBwYXJhbSBtYXAgY2FuIGJlIG51bGxcbiAgICB9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICBjb25zdCBwYXJhbU1hcCA9IHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgICByZXR1cm4gcGFyYW1NYXAuZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIGdldEFsbChuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICBjb25zdCBwYXJhbU1hcCA9IHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgICByZXR1cm4gcGFyYW1NYXAuZ2V0QWxsKG5hbWUpO1xuICAgIH1cblxuICAgIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhIXRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgfVxuXG4gICAgQE1lbW9pemUoKVxuICAgIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtTWFwcy5yZWR1Y2UoKHJlc3VsdCwgcGFyYW1zKSA9PiByZXN1bHQuY29uY2F0KHBhcmFtcy5rZXlzKSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIFBhcmFtTWFwQWRhcHRlciBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbXNbbmFtZV07XG4gICAgfVxuXG4gICAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMua2V5cy5pbmNsdWRlcyhuYW1lKTtcbiAgICB9XG5cbiAgICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpO1xuICAgIH1cblxuICB9XG59XG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50ZXItcGxhY2UtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9ndWFyZHMvZW50ZXItcGxhY2UtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFJTCxNQUFNLEVBR04sYUFBYSxFQUVkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFLcEQsTUFBTSxPQUFPLGVBQWU7Ozs7Ozs7O0lBRTFCLFlBQTZCLE1BQWMsRUFDdkIsYUFBNEIsRUFDbkIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsUUFBa0I7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQy9DLENBQUM7Ozs7Ozs7SUFHSyxXQUFXLENBQUMsY0FBc0MsRUFBRSxLQUEwQjs7WUFDbEYsSUFBSSxjQUFjLENBQUMsMkJB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QUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUM7Ozs7UUFFRCxJQUFJLElBQUk7WUFDTixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7S0FFRjs7Ozs7O1FBcEJhLGlDQUFnRDs7QUFxQmhFLENBQUMsRUExRGdCLGVBQWUsS0FBZixlQUFlLFFBMEQvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBDYW5BY3RpdmF0ZSxcbiAgUGFyYW1NYXAsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsU2VnbWVudCxcbiAgVXJsU2VyaWFsaXplcixcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbGFuZyB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3IvZGlzdC9zcmMnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VIaXN0b3J5IH0gZnJvbSAnLi4vLi4vcGxhY2UtaGlzdG9yeSc7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gJy4uLy4uL3BsYWNlLXJvdXRlcic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uLy4uL3Zpc2l0JztcbmltcG9ydCB7IFZpc2l0U2FuaXRpc2VyIH0gZnJvbSAnLi4vdmlzaXQtc2FuaXRpc2VyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRW50ZXJQbGFjZUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgdXJsU2VyaWFsaXplcjogVXJsU2VyaWFsaXplcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBjYW5BY3RpdmF0ZShhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgaWYgKFBsYWNlQ29tcG9uZW50LmlzUGxhY2VDb21wb25lbnRDb25zdHJ1Y3RvcihhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQpKSB7XG4gICAgICBjb25zdCBwbGFjZURlZmluaXRpb24gPSBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCk7XG4gICAgICAvLyBQYXJzZSBvdXIgcm91dGUgcGFyYW1zLlxuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEVudGVyUGxhY2VHdWFyZC5Db25zb2xpZGF0ZWRQYXJhbWV0ZXJNYXAoYWN0aXZhdGVkUm91dGUucGFyYW1NYXAsIGFjdGl2YXRlZFJvdXRlLnVybCk7XG4gICAgICBjb25zdCBwYXJzZWRQYXJhbXMgPSBwbGFjZURlZmluaXRpb24ucGFyc2VSb3V0ZVBhcmFtcyhwYXJhbXMpO1xuXG4gICAgICBjb25zdCBpbml0aWFsVmlzaXQgPSB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLmdldFZpc2l0Rm9yKHBsYWNlRGVmaW5pdGlvbikgfHwgbmV3IFZpc2l0KHBsYWNlRGVmaW5pdGlvbiwgcGFyc2VkUGFyYW1zKTtcbiAgICAgIGNvbnN0IHNhbml0aXNlciA9IG5ldyBWaXNpdFNhbml0aXNlcihhY3RpdmF0ZWRSb3V0ZSwgdGhpcy5yb3V0ZXIsIHRoaXMucGxhY2VIaXN0b3J5LCB0aGlzLmluamVjdG9yKTtcbiAgICAgIGNvbnN0IHNhbml0aXNlZFZpc2l0ID0gYXdhaXQgc2FuaXRpc2VyLnNhbml0aXNlKGluaXRpYWxWaXNpdC5tZXJnZVJvdXRlUGFyYW1ldGVycyhwYXJzZWRQYXJhbXMpKTtcblxuICAgICAgLy8gU2F2ZSB0aGUgdmlzaXQgd2l0aCBhbnkgdXBkYXRlZCBwYXJhbWV0ZXJzLiAgV2UgbmVlZCB0byBzYXZlIGl0IHNvIHdlIHJlbWVtYmVyIGFueSBub24gcm91dGUgcGFyYW1ldGVyc1xuICAgICAgdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5zdG9yZVZpc2l0KHNhbml0aXNlZFZpc2l0KTtcbiAgICAgIGlmIChpbml0aWFsVmlzaXQuaGFzUm91dGluZ0NoYW5nZWRGcm9tKHNhbml0aXNlZFZpc2l0KSkge1xuICAgICAgICAvLyBSZWdlbmVyYXRlIHRoZSB1cmxcbiAgICAgICAgY29uc3QgY29tbWFuZHMgPSB0aGlzLnBsYWNlUm91dGVyLnBhcnNlVXJsKHN0YXRlKS5jcmVhdGVSZWRpcmVjdENvbW1hbmRzRm9yKHNhbml0aXNlZFZpc2l0KTtcbiAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIFBsYWNlIEd1YXJkIFJlZGlyZWN0JywgY29tbWFuZHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcywge1xuICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYGV4cGVjdGVkIGNvbXBvbmVudCB0byBiZSBhbiBpbnN0YW5jZSBvZiBQbGFjZUNvbXBvbmVudCwgZ290ICR7YWN0aXZhdGVkUm91dGUuY29tcG9uZW50fWApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIEVudGVyUGxhY2VHdWFyZCB7XG4gIC8qKlxuICAgKiBUaGlzIGEgd29yayBhcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgYW4gYWN0aXZhdGVkIHJvdXRlIHdpdGggbXVsdGlwbGUgc2VnbWVudHMgZG9lc24ndFxuICAgKiBpbmNsdWRlIHRoZSBzZWdtZW50IHBhcmFtcyBpbiB0aGUgcGFyYW1NYXAgYXMgd2VsbCBhcyBlYWNoIHNlZ21lbnQgcmV0dXJucyBhbiBlbXB0eVxuICAgKiBwYXJhbSBtYXAgZXZlbiB3aGVuIGBwYXJhbWV0ZXJgcyBoYXMgY29udGVudC5cbiAgICovXG4gIGV4cG9ydCBjbGFzcyBDb25zb2xpZGF0ZWRQYXJhbWV0ZXJNYXAgaW1wbGVtZW50cyBQYXJhbU1hcCB7XG5cbiAgICBwcml2YXRlIHBhcmFtTWFwczogUGFyYW1NYXBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHBhcmFtTWFwOiBQYXJhbU1hcCwgdXJsU2VnbWVudHM6IFVybFNlZ21lbnRbXSkge1xuICAgICAgdGhpcy5wYXJhbU1hcHMgPSBbcGFyYW1NYXBdLmNvbmNhdChcbiAgICAgICAgKHVybFNlZ21lbnRzIHx8IFtdKS5tYXAocyA9PiBuZXcgUGFyYW1NYXBBZGFwdGVyKHMucGFyYW1ldGVycykpXG4gICAgICApLmZpbHRlcihtID0+ICEhbSk7IC8vIHRoZSBhY3RpdmF0ZWQgcm91dGUgcGFyYW0gbWFwIGNhbiBiZSBudWxsXG4gICAgfVxuXG4gICAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgY29uc3QgcGFyYW1NYXAgPSB0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpO1xuICAgICAgcmV0dXJuIHBhcmFtTWFwLmdldChuYW1lKTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgY29uc3QgcGFyYW1NYXAgPSB0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpO1xuICAgICAgcmV0dXJuIHBhcmFtTWFwLmdldEFsbChuYW1lKTtcbiAgICB9XG5cbiAgICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gISF0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpO1xuICAgIH1cblxuICAgIEBNZW1vaXplKClcbiAgICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbU1hcHMucmVkdWNlKChyZXN1bHQsIHBhcmFtcykgPT4gcmVzdWx0LmNvbmNhdChwYXJhbXMua2V5cyksIFtdKTtcbiAgICB9XG4gIH1cblxuICBjbGFzcyBQYXJhbU1hcEFkYXB0ZXIgaW1wbGVtZW50cyBQYXJhbU1hcCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwYXJhbXM6IHsgW3A6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgfVxuXG4gICAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1zW25hbWVdO1xuICAgIH1cblxuICAgIGdldEFsbChuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KG5hbWUpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmtleXMuaW5jbHVkZXMobmFtZSk7XG4gICAgfVxuXG4gICAgZ2V0IGtleXMoKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucGFyYW1zKTtcbiAgICB9XG5cbiAgfVxufVxuIl19
@@ -3,98 +3,16 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
- import { Location } from '@angular/common';
7
- import { Injectable, Injector } from '@angular/core';
8
- import { Router } from '@angular/router';
9
- import { InteractionContext } from '../../../interaction/interaction-context';
6
+ import { Injectable } from '@angular/core';
10
7
  import { PlaceRouter } from '../../place-router';
11
8
  import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/router";
13
- import * as i2 from "../../place-router";
14
- import * as i3 from "../../../interaction/interaction-context";
15
- import * as i4 from "@angular/common";
9
+ import * as i1 from "../../place-router";
16
10
  export class LeavePlaceGuard {
17
11
  /**
18
- * @param {?} router
19
- * @param {?} injector
20
12
  * @param {?} placeRouter
21
- * @param {?} dialogInteractionContext
22
- * @param {?} angularLocation
23
13
  */
24
- constructor(router, injector, placeRouter, dialogInteractionContext, angularLocation) {
25
- this.router = router;
26
- this.injector = injector;
14
+ constructor(placeRouter) {
27
15
  this.placeRouter = placeRouter;
28
- this.dialogInteractionContext = dialogInteractionContext;
29
- this.angularLocation = angularLocation;
30
- }
31
- // @Trace()
32
- /**
33
- * @private
34
- * @param {?} nextState
35
- * @param {?} placeDefinition
36
- * @return {?}
37
- */
38
- isLeavingTheCurrentPlace(nextState, placeDefinition) {
39
- // TODO: this will break with child routes... need to examine the router states properly.
40
- // console.log('canDeactivate', {
41
- // staticPath: placeDefinitionPath,
42
- // currentStateUrl: currentState.url,
43
- // nextStateUrl: nextState.url
44
- // // alreadyDeclined: this._alreadyAccepted
45
- // });
46
- // Example of the above when navigating to a different child route.
47
- // canDeactivate {staticPath: "/hero-details",
48
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-details",
49
- // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats"
50
- // }
51
- // TODO: this will break with child routes... need to examine the router states properly.
52
- // console.log('canDeactivate', {
53
- // staticPath: placeDefinitionPath,
54
- // currentStateUrl: currentState.url,
55
- // nextStateUrl: nextState.url
56
- // // alreadyDeclined: this._alreadyAccepted
57
- // });
58
- // Example of the above when navigating to a different child route.
59
- // canDeactivate {staticPath: "/hero-details",
60
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-details",
61
- // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats"
62
- // }
63
- // Example clicking on router tab of the parent component (de-activates the parent due to route param changes)
64
- // canDeactivate {
65
- // staticPath: "/hero-stats",
66
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
67
- // nextStateUrl: "/route-parameters/"
68
- // }
69
- // canDeactivate {
70
- // staticPath: "/route-parameters",
71
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
72
- // nextStateUrl: "/route-parameters/"
73
- // }
74
- // logger.class.js:54 ParameterSnapshot.sanitise -> {idModel: -1, pv: undefined, pl: Array(0), dv: undefined, dl: Array(0), …}
75
- // parameter-snapshot.ts:20 {name: "idModel", mine: -1, theirs: null}
76
- // place-router.ts:28 redirect path (3) ["route-parameters", "-1", {…}]
77
- // canDeactivate {
78
- // staticPath: "/hero-stats",
79
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
80
- // nextStateUrl: "/route-parameters/-1"
81
- // }
82
- // canDeactivate {
83
- // staticPath: "/route-parameters",
84
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
85
- // nextStateUrl: "/route-parameters/-1"
86
- // }
87
- // logger.class.js:54 ParameterSnapshot.sanitise -> {idModel: -1, pv: undefined, pl: Array(0), dv: "A", dl: Array(3), …}
88
- // parameter-snapshot.ts:20 {name: "dv", mine: "A", theirs: undefined}
89
- // place-router.ts:28 redirect path (3) ["route-parameters", "-1", {…}]
90
- // canDeactivate {
91
- // staticPath: "/hero-stats",
92
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
93
- // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c"
94
- // }
95
- /** @type {?} */
96
- const placeDefinitionPath = `/${placeDefinition.path}`;
97
- return !nextState.url.startsWith(placeDefinitionPath);
98
16
  }
99
17
  /**
100
18
  * @param {?} component
@@ -105,77 +23,7 @@ export class LeavePlaceGuard {
105
23
  */
106
24
  canDeactivate(component, currentRoute, currentState, nextState) {
107
25
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
108
- if (this.placeRouter.navigationSession.alreadyAccepted(component)) {
109
- // We'll get called multiple times if there's any parameter sanitisation so
110
- // we always return true if we accepted on a previous cycle of the current
111
- // navigation session.
112
- return true;
113
- }
114
- else {
115
- /** @type {?} */
116
- const self = this;
117
- /** @type {?} */
118
- let canLeave = true;
119
- if (this.isLeavingTheCurrentPlace(nextState, component.placeDefinition)) {
120
- // we check the dialog interaction first, so that components that don't need to check if they're in an
121
- // interaction during the canDeactivate cycle.
122
- // TODO: Add tests: show dialog -> hit back -> same route
123
- if (this.dialogInteractionContext.isActive()) {
124
- console.log('cancelling', { activity: this.dialogInteractionContext.currentActivity });
125
- this.dialogInteractionContext.currentActivity.cancel(null);
126
- canLeave = false;
127
- }
128
- else {
129
- canLeave = true;
130
- }
131
- if (canLeave) {
132
- // now check if the component has an active interaction. This will handle
133
- // an inplace interaction contexts
134
- if (component.interactionContext && component.interactionContext.isActive()) {
135
- canLeave = false;
136
- console.log('cancelling', { activity: component.interactionContext.currentActivity });
137
- component.interactionContext.currentActivity.cancel(null);
138
- }
139
- }
140
- // No interaction in progress, so ask the component .
141
- // This may start an interaction, hence checking the interaction context above. I.e. if the place pops up the dialog, and
142
- // the user clicks back again, we'll re-enter here and go bang when the component tries to open another
143
- // dialog.
144
- if (canLeave) {
145
- // TODO: Add tests: hit back -> confirm leave dialog -> hit back -> close dialog -> hit back -> confirm leave dialog.
146
- canLeave = yield component.canDeactivate();
147
- }
148
- // We also block back button parameter changes while the dialog is open.
149
- // NOTE: Now that I'm catching parameter changes I could possibly retry using a fragment or
150
- // query parameter to track the dialog being open. Previously I was just checking this on
151
- // path changes... if that worked it'd fix the case where the back button breaks with an activity
152
- // open on the first page: https://coolon.atlassian.net/browse/AUP-33
153
- }
154
- else {
155
- if (this.dialogInteractionContext.isActive()) {
156
- console.log('cancelling', { activity: this.dialogInteractionContext.currentActivity });
157
- this.dialogInteractionContext.currentActivity.cancel(null);
158
- canLeave = false;
159
- }
160
- else {
161
- canLeave = true;
162
- }
163
- }
164
- if (canLeave) {
165
- // We'll get called multiple times if there's any parameter sanitisation so
166
- // we remember the acceptance for the duration of the current navigation session.
167
- self.placeRouter.navigationSession.rememberAcceptanceOf(component);
168
- }
169
- else {
170
- // Angular doesn't preserve the url when a guard cancels the back button.
171
- // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
172
- if (this.placeRouter.navigationSession.isPopState) {
173
- console.log('cancelled during popstate');
174
- this.angularLocation.go(this.placeRouter.navigationSession.popStateReturnUrl);
175
- }
176
- }
177
- return canLeave;
178
- }
26
+ return this.placeRouter.navigationSession.canDeactivate(component, this.placeRouter.parseUrl(nextState));
179
27
  });
180
28
  }
181
29
  }
@@ -186,32 +34,14 @@ LeavePlaceGuard.decorators = [
186
34
  ];
187
35
  /** @nocollapse */
188
36
  LeavePlaceGuard.ctorParameters = () => [
189
- { type: Router },
190
- { type: Injector },
191
- { type: PlaceRouter },
192
- { type: InteractionContext },
193
- { type: Location }
37
+ { type: PlaceRouter }
194
38
  ];
195
- /** @nocollapse */ LeavePlaceGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function LeavePlaceGuard_Factory() { return new LeavePlaceGuard(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.PlaceRouter), i0.ɵɵinject(i3.InteractionContext), i0.ɵɵinject(i4.Location)); }, token: LeavePlaceGuard, providedIn: "root" });
39
+ /** @nocollapse */ LeavePlaceGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function LeavePlaceGuard_Factory() { return new LeavePlaceGuard(i0.ɵɵinject(i1.PlaceRouter)); }, token: LeavePlaceGuard, providedIn: "root" });
196
40
  if (false) {
197
- /**
198
- * @type {?}
199
- * @private
200
- */
201
- LeavePlaceGuard.prototype.router;
202
- /**
203
- * @type {?}
204
- * @private
205
- */
206
- LeavePlaceGuard.prototype.injector;
207
41
  /**
208
42
  * @type {?}
209
43
  * @private
210
44
  */
211
45
  LeavePlaceGuard.prototype.placeRouter;
212
- /** @type {?} */
213
- LeavePlaceGuard.prototype.dialogInteractionContext;
214
- /** @type {?} */
215
- LeavePlaceGuard.prototype.angularLocation;
216
46
  }
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBeUMsTUFBTSxFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBS2pELE1BQU0sT0FBTyxlQUFlOzs7Ozs7OztJQUUxQixZQUFvQixNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsV0FBd0IsRUFDdkIsd0JBQTRDLEVBQzVDLGVBQXlCO1FBSjFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3ZCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBb0I7UUFDNUMsb0JBQWUsR0FBZixlQUFlLENBQVU7SUFDOUMsQ0FBQzs7Ozs7Ozs7SUFHTyx3QkFBd0IsQ0FBQyxTQUE4QixFQUFFLGVBQWdDO1FBQy9GLHlGQUF5RjtRQUN6RixpQ0FBaUM7UUFDakMscUNBQXFDO1FBQ3JDLHVDQUF1QztRQUN2QyxnQ0FBZ0M7UUFDaEMsOENBQThDO1FBQzlDLE1BQU07UUFDTixtRUFBbUU7UUFDbkUsOENBQThDO1FBQzlDLHlGQUF5RjtRQUN6RixtRkFBbUY7UUFDbkYsSUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQWtDRSxtQkFBbUIs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QUFDLDJCQUEyQixDQUFDLENBQUM7d0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztxQkFDL0U7aUJBQ0Y7Z0JBRUQsT0FBTyxRQUFRLENBQUM7YUFDakI7UUFDSCxDQUFDO0tBQUE7OztZQXZJRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFUK0MsTUFBTTtZQURqQyxRQUFRO1lBTXBCLFdBQVc7WUFIWCxrQkFBa0I7WUFKbEIsUUFBUTs7Ozs7Ozs7SUFjSCxpQ0FBc0I7Ozs7O0lBQ3RCLG1DQUEwQjs7Ozs7SUFDMUIsc0NBQWdDOztJQUNoQyxtREFBcUQ7O0lBQ3JELDBDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5EZWFjdGl2YXRlLCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi8uLi9wbGFjZS1yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMZWF2ZVBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPFBsYWNlQ29tcG9uZW50PiB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgICAgICAgICByZWFkb25seSBkaWFsb2dJbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbikge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBpc0xlYXZpbmdUaGVDdXJyZW50UGxhY2UobmV4dFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIC8vIFRPRE86IHRoaXMgd2lsbCBicmVhayB3aXRoIGNoaWxkIHJvdXRlcy4uLiBuZWVkIHRvIGV4YW1pbmUgdGhlIHJvdXRlciBzdGF0ZXMgcHJvcGVybHkuXG4gICAgLy8gY29uc29sZS5sb2coJ2NhbkRlYWN0aXZhdGUnLCB7XG4gICAgLy8gICBzdGF0aWNQYXRoOiBwbGFjZURlZmluaXRpb25QYXRoLFxuICAgIC8vICAgY3VycmVudFN0YXRlVXJsOiBjdXJyZW50U3RhdGUudXJsLFxuICAgIC8vICAgbmV4dFN0YXRlVXJsOiBuZXh0U3RhdGUudXJsXG4gICAgLy8gICAvLyBhbHJlYWR5RGVjbGluZWQ6IHRoaXMuX2FscmVhZHlBY2NlcHRlZFxuICAgIC8vIH0pO1xuICAgIC8vIEV4YW1wbGUgb2YgdGhlIGFib3ZlIHdoZW4gbmF2aWdhdGluZyB0byBhIGRpZmZlcmVudCBjaGlsZCByb3V0ZS5cbiAgICAvLyBjYW5EZWFjdGl2YXRlIHtzdGF0aWNQYXRoOiBcIi9oZXJvLWRldGFpbHNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1kZXRhaWxzXCIsXG4gICAgLy8gICAgbmV4dFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzLy0xO2R2PUE7ZGw9YSxiLGM7cmR2PUE7cmRsPWEsYixjL2hlcm8tc3RhdHNcIlxuICAgIC8vIH1cblxuICAgIC8vIEV4YW1wbGUgY2xpY2tpbmcgb24gcm91dGVyIHRhYiBvZiB0aGUgcGFyZW50IGNvbXBvbmVudCAoZGUtYWN0aXZhdGVzIHRoZSBwYXJlbnQgZHVlIHRvIHJvdXRlIHBhcmFtIGNoYW5nZXMpXG4gICAgLy8gY2FuRGVhY3RpdmF0ZSB7XG4gICAgLy8gICAgc3RhdGljUGF0aDogXCIvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIGN1cnJlbnRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMTtkdj1BO2RsPWEsYixjO3Jkdj1BO3JkbD1hLGIsYy9oZXJvLXN0YXRzXCIsXG4gICAgLy8gICAgbmV4dFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzL1wiXG4gICAgLy8gfVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL3JvdXRlLXBhcmFtZXRlcnNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy9cIlxuICAgIC8vIH1cbiAgICAvLyBsb2dnZXIuY2xhc3MuanM6NTQgUGFyYW1ldGVyU25hcHNob3Quc2FuaXRpc2UgLT4ge2lkTW9kZWw6IC0xLCBwdjogdW5kZWZpbmVkLCBwbDogQXJyYXkoMCksIGR2OiB1bmRlZmluZWQsIGRsOiBBcnJheSgwKSzCoOKApn1cbiAgICAvLyBwYXJhbWV0ZXItc25hcHNob3QudHM6MjAge25hbWU6IFwiaWRNb2RlbFwiLCBtaW5lOiAtMSwgdGhlaXJzOiBudWxsfVxuICAgIC8vIHBsYWNlLXJvdXRlci50czoyOCByZWRpcmVjdCBwYXRoICgzKcKgW1wicm91dGUtcGFyYW1ldGVyc1wiLCBcIi0xXCIsIHvigKZ9XVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL2hlcm8tc3RhdHNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMVwiXG4gICAgLy8gfVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL3JvdXRlLXBhcmFtZXRlcnNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMVwiXG4gICAgLy8gfVxuICAgIC8vIGxvZ2dlci5jbGFzcy5qczo1NCBQYXJhbWV0ZXJTbmFwc2hvdC5zYW5pdGlzZSAtPiB7aWRNb2RlbDogLTEsIHB2OiB1bmRlZmluZWQsIHBsOiBBcnJheSgwKSwgZHY6IFwiQVwiLCBkbDogQXJyYXkoMykswqDigKZ9XG4gICAgLy8gcGFyYW1ldGVyLXNuYXBzaG90LnRzOjIwIHtuYW1lOiBcImR2XCIsIG1pbmU6IFwiQVwiLCB0aGVpcnM6IHVuZGVmaW5lZH1cbiAgICAvLyBwbGFjZS1yb3V0ZXIudHM6MjggcmVkaXJlY3QgcGF0aCAoMynCoFtcInJvdXRlLXBhcmFtZXRlcnNcIiwgXCItMVwiLCB74oCmfV1cbiAgICAvLyBjYW5EZWFjdGl2YXRlIHtcbiAgICAvLyAgICBzdGF0aWNQYXRoOiBcIi9oZXJvLXN0YXRzXCIsXG4gICAgLy8gICAgY3VycmVudFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzLy0xO2R2PUE7ZGw9YSxiLGM7cmR2PUE7cmRsPWEsYixjL2hlcm8tc3RhdHNcIixcbiAgICAvLyAgICBuZXh0U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGNcIlxuICAgIC8vIH1cbiAgICBjb25zdCBwbGFjZURlZmluaXRpb25QYXRoID0gYC8ke3BsYWNlRGVmaW5pdGlvbi5wYXRofWA7XG4gICAgcmV0dXJuICFuZXh0U3RhdGUudXJsLnN0YXJ0c1dpdGgocGxhY2VEZWZpbml0aW9uUGF0aCk7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG5cbiAgICBpZiAodGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5hbHJlYWR5QWNjZXB0ZWQoY29tcG9uZW50KSkge1xuICAgICAgLy8gV2UnbGwgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSdzIGFueSBwYXJhbWV0ZXIgc2FuaXRpc2F0aW9uIHNvXG4gICAgICAvLyB3ZSBhbHdheXMgcmV0dXJuIHRydWUgaWYgd2UgYWNjZXB0ZWQgb24gYSBwcmV2aW91cyBjeWNsZSBvZiB0aGUgY3VycmVudFxuICAgICAgLy8gbmF2aWdhdGlvbiBzZXNzaW9uLlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgbGV0IGNhbkxlYXZlID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuaXNMZWF2aW5nVGhlQ3VycmVudFBsYWNlKG5leHRTdGF0ZSwgY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbikpIHtcbiAgICAgICAgLy8gd2UgY2hlY2sgdGhlIGRpYWxvZyBpbnRlcmFjdGlvbiBmaXJzdCwgc28gdGhhdCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGV5J3JlIGluIGFuXG4gICAgICAgIC8vIGludGVyYWN0aW9uIGR1cmluZyB0aGUgY2FuRGVhY3RpdmF0ZSBjeWNsZS5cbiAgICAgICAgLy8gVE9ETzogQWRkIHRlc3RzOiBzaG93IGRpYWxvZyAtPiBoaXQgYmFjayAtPiBzYW1lIHJvdXRlXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ0ludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2NhbmNlbGxpbmcnLCB7IGFjdGl2aXR5OiB0aGlzLmRpYWxvZ0ludGVyYWN0aW9uQ29udGV4dC5jdXJyZW50QWN0aXZpdHkgfSk7XG4gICAgICAgICAgdGhpcy5kaWFsb2dJbnRlcmFjdGlvbkNvbnRleHQuY3VycmVudEFjdGl2aXR5LmNhbmNlbChudWxsKTtcbiAgICAgICAgICBjYW5MZWF2ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbkxlYXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYW5MZWF2ZSkge1xuICAgICAgICAgIC8vIG5vdyBjaGVjayBpZiB0aGUgY29tcG9uZW50IGhhcyBhbiBhY3RpdmUgaW50ZXJhY3Rpb24uICBUaGlzIHdpbGwgaGFuZGxlXG4gICAgICAgICAgLy8gYW4gaW5wbGFjZSBpbnRlcmFjdGlvbiBjb250ZXh0c1xuICAgICAgICAgIGlmIChjb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0ICYmIGNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgY2FuTGVhdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsaW5nJywgeyBhY3Rpdml0eTogY29tcG9uZW50LmludGVyYWN0aW9uQ29udGV4dC5jdXJyZW50QWN0aXZpdHkgfSk7XG4gICAgICAgICAgICBjb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0LmN1cnJlbnRBY3Rpdml0eS5jYW5jZWwobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm8gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MsIHNvIGFzayB0aGUgY29tcG9uZW50IC5cbiAgICAgICAgLy8gVGhpcyBtYXkgc3RhcnQgYW4gaW50ZXJhY3Rpb24sIGhlbmNlIGNoZWNraW5nIHRoZSBpbnRlcmFjdGlvbiBjb250ZXh0IGFib3ZlLiBJLmUuIGlmIHRoZSBwbGFjZSBwb3BzIHVwIHRoZSBkaWFsb2csIGFuZFxuICAgICAgICAvLyB0aGUgdXNlciBjbGlja3MgYmFjayBhZ2Fpbiwgd2UnbGwgcmUtZW50ZXIgaGVyZSBhbmQgZ28gYmFuZyB3aGVuIHRoZSBjb21wb25lbnQgdHJpZXMgdG8gb3BlbiBhbm90aGVyXG4gICAgICAgIC8vIGRpYWxvZy5cbiAgICAgICAgaWYgKGNhbkxlYXZlKSB7XG4gICAgICAgICAgLy8gVE9ETzogQWRkIHRlc3RzOiBoaXQgYmFjayAtPiBjb25maXJtIGxlYXZlIGRpYWxvZyAtPiBoaXQgYmFjayAtPiBjbG9zZSBkaWFsb2cgLT4gIGhpdCBiYWNrIC0+IGNvbmZpcm0gbGVhdmUgZGlhbG9nLlxuICAgICAgICAgIGNhbkxlYXZlID0gYXdhaXQgY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGFsc28gYmxvY2sgYmFjayBidXR0b24gcGFyYW1ldGVyIGNoYW5nZXMgd2hpbGUgdGhlIGRpYWxvZyBpcyBvcGVuLlxuICAgICAgICAvLyBOT1RFOiBOb3cgdGhhdCBJJ20gY2F0Y2hpbmcgcGFyYW1ldGVyIGNoYW5nZXMgSSBjb3VsZCBwb3NzaWJseSByZXRyeSB1c2luZyBhIGZyYWdtZW50IG9yXG4gICAgICAgIC8vIHF1ZXJ5IHBhcmFtZXRlciB0byB0cmFjayB0aGUgZGlhbG9nIGJlaW5nIG9wZW4uICBQcmV2aW91c2x5IEkgd2FzIGp1c3QgY2hlY2tpbmcgdGhpcyBvblxuICAgICAgICAvLyBwYXRoIGNoYW5nZXMuLi4gaWYgdGhhdCB3b3JrZWQgaXQnZCBmaXggdGhlIGNhc2Ugd2hlcmUgdGhlIGJhY2sgYnV0dG9uIGJyZWFrcyB3aXRoIGFuIGFjdGl2aXR5XG4gICAgICAgIC8vIG9wZW4gb24gdGhlIGZpcnN0IHBhZ2U6IGh0dHBzOi8vY29vbG9uLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0FVUC0zM1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nSW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnY2FuY2VsbGluZycsIHsgYWN0aXZpdHk6IHRoaXMuZGlhbG9nSW50ZXJhY3Rpb25Db250ZXh0LmN1cnJlbnRBY3Rpdml0eSB9KTtcbiAgICAgICAgICB0aGlzLmRpYWxvZ0ludGVyYWN0aW9uQ29udGV4dC5jdXJyZW50QWN0aXZpdHkuY2FuY2VsKG51bGwpO1xuICAgICAgICAgIGNhbkxlYXZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FuTGVhdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5MZWF2ZSkge1xuICAgICAgICAvLyBXZSdsbCBnZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlJ3MgYW55IHBhcmFtZXRlciBzYW5pdGlzYXRpb24gc29cbiAgICAgICAgLy8gd2UgcmVtZW1iZXIgdGhlIGFjY2VwdGFuY2UgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgY3VycmVudCBuYXZpZ2F0aW9uIHNlc3Npb24uXG4gICAgICAgIHNlbGYucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24ucmVtZW1iZXJBY2NlcHRhbmNlT2YoY29tcG9uZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBwcmVzZXJ2ZSB0aGUgdXJsIHdoZW4gYSBndWFyZCBjYW5jZWxzIHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNTg2I2lzc3VlY29tbWVudC00MzI3OTU3MjBcbiAgICAgICAgaWYgKHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uaXNQb3BTdGF0ZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsZWQgZHVyaW5nIHBvcHN0YXRlJyk7XG4gICAgICAgICAgdGhpcy5hbmd1bGFyTG9jYXRpb24uZ28odGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5wb3BTdGF0ZVJldHVyblVybCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbkxlYXZlO1xuICAgIH1cbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUtqRCxNQUFNLE9BQU8sZUFBZTs7OztJQUUxQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUM1QyxDQUFDOzs7Ozs7OztJQUVLLGFBQWEsQ0FBQyxTQUF5QixFQUFFLFlBQW9DLEVBQUUsWUFBaUMsRUFBRSxTQUErQjs7WUFDckosT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMzRyxDQUFDO0tBQUE7OztZQVZGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQUpRLFdBQVc7Ozs7Ozs7O0lBT04sc0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuRGVhY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gJy4uLy4uL3BsYWNlLXJvdXRlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExlYXZlUGxhY2VHdWFyZCBpbXBsZW1lbnRzIENhbkRlYWN0aXZhdGU8UGxhY2VDb21wb25lbnQ+IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcikge1xuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGN1cnJlbnRTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgbmV4dFN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLmNhbkRlYWN0aXZhdGUoY29tcG9uZW50LCB0aGlzLnBsYWNlUm91dGVyLnBhcnNlVXJsKG5leHRTdGF0ZSkpO1xuICB9XG59XG4vLyBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4vLyAgIGNvbnN0IHBsYWNlRGVmaW5pdGlvblBhdGggPSBgLyR7Y29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbi5wYXRofWA7XG4vL1xuLy8gLy8gVE9ETzogQWRkIHRlc3RzXG4vLyBpZiAodGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5hbHJlYWR5QWNjZXB0ZWQoY29tcG9uZW50KSkge1xuLy8gICAvLyBXZSdsbCBnZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlJ3MgYW55IHBhcmFtZXRlciBzYW5pdGlzYXRpb24gc29cbi8vICAgLy8gd2UgYWx3YXlzIHJldHVybiB0cnVlIGlmIHdlIGFjY2VwdGVkIG9uIGEgcHJldmlvdXMgY3ljbGUgb2YgdGhlIGN1cnJlbnRcbi8vICAgLy8gbmF2aWdhdGlvbiBzZXNzaW9uLlxuLy8gICByZXR1cm4gdHJ1ZTtcbi8vIH0gZWxzZSB7XG4vLyAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuLy8gICBsZXQgY2FuTGVhdmUgPSB0cnVlO1xuLy9cbi8vICAgaWYgKHRoaXMuaXNMZWF2aW5nVGhlQ3VycmVudFBsYWNlKG5leHRTdGF0ZSwgY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbikpIHtcbi8vICAgICAvLyB3ZSBjaGVjayB0aGUgaW50ZXJhY3Rpb24gZmlyc3QsIHNvIHRoYXQgY29tcG9uZW50cyB0aGF0IGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhleSdyZSBpbiBhblxuLy8gICAgIC8vIGludGVyYWN0aW9uIGR1cmluZyB0aGUgY2FuRGVhY3RpdmF0ZSBjeWNsZS5cbi8vICAgICAvLyBUT0RPOiBBZGQgdGVzdHM6IHNob3cgZGlhbG9nIC0+IGhpdCBiYWNrIC0+IHNhbWUgcm91dGVcbi8vICAgICBpZiAodGhpcy5pbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKSkge1xuLy8gICAgICAgY2FuTGVhdmUgPSBmYWxzZTtcbi8vICAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsaW5nJywgeyBhY3Rpdml0eTogdGhpcy5pbnRlcmFjdGlvbkNvbnRleHQuY3VycmVudEFjdGl2aXR5IH0pO1xuLy8gICAgICAgdGhpcy5pbnRlcmFjdGlvbkNvbnRleHQuY3VycmVudEFjdGl2aXR5LmNhbmNlbChudWxsKTtcbi8vICAgICB9XG4vLyAgICAgLy8gTm8gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MsIHNvIGFzayB0aGUgY29tcG9uZW50IC5cbi8vICAgICAvLyBUaGlzIG1heSBzdGFydCBhbiBpbnRlcmFjdGlvbiwgaGVuY2UgY2hlY2tpbmcgdGhlIGludGVyYWN0aW9uIGNvbnRleHQgYWJvdmUuIEkuZS4gaWYgdGhlIHBsYWNlIHBvcHMgdXAgdGhlIGRpYWxvZywgYW5kXG4vLyAgICAgLy8gdGhlIHVzZXIgY2xpY2tzIGJhY2sgYWdhaW4sIHdlJ2xsIHJlLWVudGVyIGhlcmUgYW5kIGdvIGJhbmcgd2hlbiB0aGUgY29tcG9uZW50IHRyaWVzIHRvIG9wZW4gYW5vdGhlclxuLy8gICAgIC8vIGRpYWxvZy5cbi8vICAgICBpZiAoY2FuTGVhdmUpIHtcbi8vICAgICAgIC8vIFRPRE86IEFkZCB0ZXN0czogaGl0IGJhY2sgLT4gY29uZmlybSBsZWF2ZSBkaWFsb2cgLT4gaGl0IGJhY2sgLT4gY2xvc2UgZGlhbG9nIC0+ICBoaXQgYmFjayAtPiBjb25maXJtIGxlYXZlIGRpYWxvZy5cbi8vICAgICAgIGNhbkxlYXZlID0gYXdhaXQgY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKTtcbi8vICAgICB9XG4vL1xuLy9cbi8vICAgICAvLyBXZSBhbHNvIGJsb2NrIGJhY2sgYnV0dG9uIHBhcmFtZXRlciBjaGFuZ2VzIHdoaWxlIHRoZSBkaWFsb2cgaXMgb3Blbi5cbi8vICAgICAvLyBOT1RFOiBOb3cgdGhhdCBJJ20gY2F0Y2hpbmcgcGFyYW1ldGVyIGNoYW5nZXMgSSBjb3VsZCBwb3NzaWJseSByZXRyeSB1c2luZyBhIGZyYWdtZW50IG9yXG4vLyAgICAgLy8gcXVlcnkgcGFyYW1ldGVyIHRvIHRyYWNrIHRoZSBkaWFsb2cgYmVpbmcgb3Blbi4gIFByZXZpb3VzbHkgSSB3YXMganVzdCBjaGVja2luZyB0aGlzIG9uXG4vLyAgICAgLy8gcGF0aCBjaGFuZ2VzLi4uIGlmIHRoYXQgd29ya2VkIGl0J2QgZml4IHRoZSBjYXNlIHdoZXJlIHRoZSBiYWNrIGJ1dHRvbiBicmVha3Mgd2l0aCBhbiBhY3Rpdml0eVxuLy8gICAgIC8vIG9wZW4gb24gdGhlIGZpcnN0IHBhZ2U6IGh0dHBzOi8vY29vbG9uLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0FVUC0zM1xuLy8gICB9IGVsc2Uge1xuLy8gICAgIGlmICh0aGlzLmludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4vLyAgICAgICBjb25zb2xlLmxvZygnY2FuY2VsbGluZycsIHsgYWN0aXZpdHk6IHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0LmN1cnJlbnRBY3Rpdml0eSB9KTtcbi8vICAgICAgIHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0LmN1cnJlbnRBY3Rpdml0eS5jYW5jZWwobnVsbCk7XG4vLyAgICAgICBjYW5MZWF2ZSA9IGZhbHNlO1xuLy8gICAgIH0gZWxzZSB7XG4vLyAgICAgICBjYW5MZWF2ZSA9IHRydWU7XG4vLyAgICAgfVxuLy8gICB9XG4vL1xuLy8gICBpZiAoY2FuTGVhdmUpIHtcbi8vICAgICAvLyBXZSdsbCBnZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlJ3MgYW55IHBhcmFtZXRlciBzYW5pdGlzYXRpb24gc29cbi8vICAgICAvLyB3ZSByZW1lbWJlciB0aGUgYWNjZXB0YW5jZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBjdXJyZW50IG5hdmlnYXRpb24gc2Vzc2lvbi5cbi8vICAgICBzZWxmLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLnJlbWVtYmVyQWNjZXB0YW5jZU9mKGNvbXBvbmVudCk7XG4vLyAgIH0gZWxzZSB7XG4vLyAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHByZXNlcnZlIHRoZSB1cmwgd2hlbiBhIGd1YXJkIGNhbmNlbHMgdGhlIGJhY2sgYnV0dG9uLlxuLy8gICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMzU4NiNpc3N1ZWNvbW1lbnQtNDMyNzk1NzIwXG4vLyAgICAgaWYgKHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uaXNQb3BTdGF0ZSkge1xuLy8gICAgICAgY29uc29sZS5sb2coJ2NhbmNlbGxlZCBkdXJpbmcgcG9wc3RhdGUnKTtcbi8vICAgICAgIHRoaXMuYW5ndWxhckxvY2F0aW9uLmdvKHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24ucG9wU3RhdGVSZXR1cm5VcmwpO1xuLy8gICAgIH1cbi8vICAgfVxuLy9cbi8vICAgcmV0dXJuIGNhbkxlYXZlO1xuLy8gfVxuIl19