@coolon/angular-ui-powerups 0.0.96 → 0.0.98

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 (93) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +2960 -2288
  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 +17 -20
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +17 -20
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +16 -52
  10. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +16 -47
  11. package/esm2015/lib/interaction/index.js +4 -2
  12. package/esm2015/lib/interaction/interaction-context-base.js +158 -0
  13. package/esm2015/lib/interaction/interaction-context.js +58 -78
  14. package/esm2015/lib/interaction/interaction.module.js +1 -1
  15. package/esm2015/lib/interaction/services/dialog-interaction-context.js +163 -0
  16. package/esm2015/lib/interaction/services/dialog-interaction.service.js +68 -181
  17. package/esm2015/lib/interaction/services/modal-interaction.service.js +109 -0
  18. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +9 -43
  19. package/esm2015/lib/place/guards/abstract-place.guard.js +165 -0
  20. package/esm2015/lib/place/guards/consolidated-param-map.js +133 -0
  21. package/esm2015/lib/place/guards/interaction.guard.js +113 -0
  22. package/esm2015/lib/place/guards/navigation-state.js +613 -0
  23. package/esm2015/lib/place/guards/place-component-deactivation-handler.js +87 -0
  24. package/esm2015/lib/place/index.js +7 -5
  25. package/esm2015/lib/place/place-component.js +1 -1
  26. package/esm2015/lib/place/place-router.js +162 -236
  27. package/esm2015/lib/place/place.module.js +2 -4
  28. package/esm2015/lib/place/route/visit-sanitiser.js +2 -2
  29. package/esm2015/lib/place/url-snapshot.js +96 -0
  30. package/esm2015/public_api.js +3 -3
  31. package/esm5/coolon-angular-ui-powerups.js +17 -20
  32. package/esm5/index.js +2 -2
  33. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +23 -74
  34. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +26 -76
  35. package/esm5/lib/interaction/index.js +4 -2
  36. package/esm5/lib/interaction/interaction-context-base.js +211 -0
  37. package/esm5/lib/interaction/interaction-context.js +72 -94
  38. package/esm5/lib/interaction/interaction.module.js +1 -1
  39. package/esm5/lib/interaction/services/dialog-interaction-context.js +188 -0
  40. package/esm5/lib/interaction/services/dialog-interaction.service.js +83 -232
  41. package/esm5/lib/interaction/services/modal-interaction.service.js +153 -0
  42. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +9 -43
  43. package/esm5/lib/place/guards/abstract-place.guard.js +212 -0
  44. package/esm5/lib/place/guards/consolidated-param-map.js +161 -0
  45. package/esm5/lib/place/guards/interaction.guard.js +125 -0
  46. package/esm5/lib/place/guards/navigation-state.js +764 -0
  47. package/esm5/lib/place/guards/place-component-deactivation-handler.js +104 -0
  48. package/esm5/lib/place/index.js +7 -5
  49. package/esm5/lib/place/place-component.js +1 -1
  50. package/esm5/lib/place/place-router.js +191 -294
  51. package/esm5/lib/place/place.module.js +2 -4
  52. package/esm5/lib/place/route/visit-sanitiser.js +2 -2
  53. package/esm5/lib/place/url-snapshot.js +120 -0
  54. package/esm5/public_api.js +3 -3
  55. package/fesm2015/coolon-angular-ui-powerups.js +2135 -1587
  56. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  57. package/fesm5/coolon-angular-ui-powerups.js +3083 -2412
  58. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  59. package/lib/interaction/components/activity-container/activity-container.component.d.ts +6 -11
  60. package/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.d.ts +4 -9
  61. package/lib/interaction/index.d.ts +3 -1
  62. package/lib/interaction/interaction-context-base.d.ts +27 -0
  63. package/lib/interaction/interaction-context.d.ts +18 -15
  64. package/lib/interaction/services/dialog-interaction-context.d.ts +18 -0
  65. package/lib/interaction/services/dialog-interaction.service.d.ts +14 -23
  66. package/lib/interaction/services/modal-interaction.service.d.ts +15 -0
  67. package/lib/place/components/place-outlet/place-outlet.component.d.ts +1 -4
  68. package/lib/place/guards/abstract-place.guard.d.ts +19 -0
  69. package/lib/place/guards/consolidated-param-map.d.ts +14 -0
  70. package/lib/{interaction/guards/interaction-guard.service.d.ts → place/guards/interaction.guard.d.ts} +8 -4
  71. package/lib/place/guards/navigation-state.d.ts +96 -0
  72. package/lib/place/guards/place-component-deactivation-handler.d.ts +12 -0
  73. package/lib/place/index.d.ts +6 -4
  74. package/lib/place/place-component.d.ts +1 -1
  75. package/lib/place/place-router.d.ts +25 -33
  76. package/lib/place/url-snapshot.d.ts +16 -0
  77. package/package.json +1 -1
  78. package/schematics/place-routes/place-def.js +2 -2
  79. package/schematics/place-routes/templates/place-routes.ts.template +9 -16
  80. package/esm2015/lib/interaction/guards/interaction-guard.service.js +0 -85
  81. package/esm2015/lib/place/guards/abstract-enter-place.guard.js +0 -315
  82. package/esm2015/lib/place/guards/leave-place.guard.js +0 -47
  83. package/esm2015/lib/place/navigation-session.js +0 -279
  84. package/esm2015/lib/place/places/noop-gateway-place.component.js +0 -58
  85. package/esm5/lib/interaction/guards/interaction-guard.service.js +0 -94
  86. package/esm5/lib/place/guards/abstract-enter-place.guard.js +0 -387
  87. package/esm5/lib/place/guards/leave-place.guard.js +0 -55
  88. package/esm5/lib/place/navigation-session.js +0 -353
  89. package/esm5/lib/place/places/noop-gateway-place.component.js +0 -61
  90. package/lib/place/guards/abstract-enter-place.guard.d.ts +0 -33
  91. package/lib/place/guards/leave-place.guard.d.ts +0 -8
  92. package/lib/place/navigation-session.d.ts +0 -43
  93. package/lib/place/places/noop-gateway-place.component.d.ts +0 -10
@@ -10,7 +10,6 @@ import * as _ from 'lodash';
10
10
  import { DisposableComponent } from '../../../components/disposable-component';
11
11
  import { AUP_PLACE_CONFIG } from '../../place-config';
12
12
  import { PlaceRouter } from '../../place-router';
13
- import { NoopGatewayPlace } from '../../places/noop-gateway-place.component';
14
13
  import { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';
15
14
  /**
16
15
  * @record
@@ -38,7 +37,6 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
38
37
  _this.placeConfig = placeConfig;
39
38
  _this.placeChanged = new EventEmitter();
40
39
  _this._activePlace = new MutableValueModel();
41
- _this._previousPlace = new MutableValueModel();
42
40
  _this._activePlaceVisitModel = new DelegatingValueModel();
43
41
  _this._inOutletActivation = new Guard();
44
42
  _this._inOutletDeactivation = new Guard();
@@ -60,32 +58,12 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
60
58
  .pluck('placeDefinition')
61
59
  .pluckList('children')
62
60
  .pluck('component');
63
- // TODO: This is a hack to prevent animation during the NoopGatewayPlace
64
61
  /** @type {?} */
65
- var activePlaceType = chain(_this._activePlace).map((/**
66
- * @param {?} p
67
- * @return {?}
68
- */
69
- function (p) {
70
- return (/** @type {?} */ (p.constructor));
71
- }), {
72
- postponeWhile: chain(_this.activePlaceModel).isNil()
73
- });
74
- /** @type {?} */
75
- var previousPlaceType = chain(_this._previousPlace).map((/**
62
+ var activatePlaceType = chain(_this.activePlaceModel).map((/**
76
63
  * @param {?} p
77
64
  * @return {?}
78
65
  */
79
66
  function (p) { return (/** @type {?} */ (p.constructor)); }));
80
- _this.ready = chain.reduce(activePlaceType, previousPlaceType, (/**
81
- * @param {?} current
82
- * @param {?} previous
83
- * @return {?}
84
- */
85
- function (current, previous) {
86
- return !!current && current !== NoopGatewayPlace && previous !== NoopGatewayPlace;
87
- }));
88
- _this.enableAnimation = valueOf.all(_this.ready, _this.animateModel).areTruthy();
89
67
  _this.placeAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
90
68
  .otherwise(defaultPlaceAnimationOrder)
91
69
  .reduce((/**
@@ -95,14 +73,14 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
95
73
  function (placesInOrder) {
96
74
  /** @type {?} */
97
75
  var placeIndex = 0;
98
- if (activePlaceType.value) {
99
- placeIndex = placesInOrder.indexOf(activePlaceType.value);
100
- if (_.isNil(_this.initialPlaceIndex && placeIndex >= 0)) {
76
+ if (activatePlaceType.value) {
77
+ placeIndex = placesInOrder.indexOf(activatePlaceType.value);
78
+ if (_.isNil(_this.initialPlaceIndex)) {
101
79
  _this.initialPlaceIndex = placeIndex;
102
80
  }
103
81
  }
104
82
  return _.isNil(_this.initialPlaceIndex) ? 0 : placeIndex - _this.initialPlaceIndex;
105
- }), { dependsOn: activePlaceType });
83
+ }), { dependsOn: activatePlaceType });
106
84
  // Push incoming changes into the component
107
85
  _this.routerVisit = chain(_this._activePlace).pluck('placeDefinition').findIn(placeRouter.activeVisitIndex);
108
86
  // Our router visit will change when our active is nullified during deactivation, which will push a null visit
@@ -132,8 +110,6 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
132
110
  */
133
111
  function (place) { return _this.placeChanged.emit(place); }));
134
112
  return _this;
135
- // const txo = new TransactionObserver().onEvent(e => console.log(e.toString()));
136
- // txo.observe('inRouteVisitUpdate', inRouteVisitUpdate);
137
113
  }
138
114
  /**
139
115
  * @return {?}
@@ -291,7 +267,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
291
267
  console.error(error);
292
268
  }
293
269
  }));
294
- if (!this.enableAnimation.value) {
270
+ if (!this.animateModel.value) {
295
271
  // we're not animating so trigger any post animation callbacks now.
296
272
  this.animationDone();
297
273
  }
@@ -312,7 +288,6 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
312
288
  * @return {?}
313
289
  */
314
290
  function () {
315
- _this._previousPlace.value = _this._activePlace.value;
316
291
  _this._activePlace.value = null;
317
292
  _this._activatedRouteModel.value = null;
318
293
  _this._placeDefinition.value = null;
@@ -350,7 +325,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
350
325
  PlaceOutletComponent.decorators = [
351
326
  { type: Component, args: [{
352
327
  selector: 'aup-place-outlet',
353
- template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n [@.disabled]=\"!enableAnimation.value\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n</div>\n\n",
328
+ template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n [@.disabled]=\"!animateModel.value\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n</div>\n\n",
354
329
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
355
330
  styles: [":host{display:flex;flex-direction:column;min-height:0;overflow-x:hidden}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
356
331
  }] }
@@ -364,7 +339,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
364
339
  ]; };
365
340
  PlaceOutletComponent.propDecorators = {
366
341
  animate: [{ type: Input }],
367
- animateModel: [{ type: Input, args: ['animateModel',] }],
342
+ animateModel: [{ type: Input }],
368
343
  customPlaceAnimationOrderModel: [{ type: Input, args: ['placeAnimationOrderModel',] }],
369
344
  customPlaceAnimationOrder: [{ type: Input, args: ['placeAnimationOrder',] }],
370
345
  placeChanged: [{ type: Output }],
@@ -407,11 +382,6 @@ if (false) {
407
382
  * @private
408
383
  */
409
384
  PlaceOutletComponent.prototype._activePlace;
410
- /**
411
- * @type {?}
412
- * @private
413
- */
414
- PlaceOutletComponent.prototype._previousPlace;
415
385
  /**
416
386
  * @type {?}
417
387
  * @private
@@ -464,10 +434,6 @@ if (false) {
464
434
  * @private
465
435
  */
466
436
  PlaceOutletComponent.prototype.routerVisit;
467
- /** @type {?} */
468
- PlaceOutletComponent.prototype.ready;
469
- /** @type {?} */
470
- PlaceOutletComponent.prototype.enableAnimation;
471
437
  /**
472
438
  * @type {?}
473
439
  * @private
@@ -481,4 +447,4 @@ if (false) {
481
447
  /** @type {?} */
482
448
  PlaceOutletComponent.prototype.placeConfig;
483
449
  }
484
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUdMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFFbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBR2hFLHVCQU1DOzs7SUFMQyxtQ0FBeUM7Ozs7O0lBRXpDLDZEQUFtRDs7OztJQUVuRCxrREFBcUI7O0FBR3ZCO0lBTTBDLGdEQUFtQjtJQTJDM0QsOEJBQTZCLE1BQWMsRUFDZCxXQUF3QixFQUNNLFdBQXdCLEVBQy9DLFlBQWtDO1FBSHRFLFlB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aURBQXlDOzs7OztJQUN6QywyQ0FBNEM7O0lBQzVDLHFDQUFnRDs7SUFDaEQsK0NBQXdEOzs7OztJQUc1QyxzQ0FBK0I7Ozs7O0lBQy9CLDJDQUF5Qzs7SUFDekMsMkNBQXVFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2tpcFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW4sXG4gIENvbnN0cnVjdGFibGUsXG4gIERlbGVnYXRpbmdWYWx1ZU1vZGVsLFxuICBEc2wsXG4gIEd1YXJkLFxuICBMaXN0TW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBTdG9yZUluTGlzdE1vZGVsLFxuICBTdG9yZUluVmFsdWVNb2RlbCxcbiAgVXNlRGVsZWdhdGUsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBVVBfUExBQ0VfQ09ORklHLCBQbGFjZUNvbmZpZyB9IGZyb20gJy4uLy4uL3BsYWNlLWNvbmZpZyc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuLi8uLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vLi4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IE5vb3BHYXRld2F5UGxhY2UgfSBmcm9tICcuLi8uLi9wbGFjZXMvbm9vcC1nYXRld2F5LXBsYWNlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vLi4vdmlzaXQnO1xuaW1wb3J0IHsgTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT04gfSBmcm9tICcuL3JvdXRlLWFuaW1hdGlvbnMnO1xuXG4vLyBRdWljayBoYWNrIHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCBQbGFjZUNvbXBvbmVudHMuXG5pbnRlcmZhY2UgUGxhY2VSZWYge1xuICByZWFkb25seSBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvblxuXG4gIGluaXRpYWxpc2VCaW5kaW5ncyhwYXJhbTogVmFsdWVNb2RlbDxWaXNpdD4pOiB2b2lkO1xuXG4gIG9uUGxhY2VSZWFkeSgpOiB2b2lkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtcGxhY2Utb3V0bGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLW91dGxldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLW91dGxldC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT05dXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlT3V0bGV0Q29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKCdhbmltYXRlTW9kZWwnKVxuICBhbmltYXRlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnYW5pbWF0ZU1vZGVsJykgQFVzZURlbGVnYXRlKHtkZWZhdWx0VmFsdWU6IHRydWV9KVxuICBhbmltYXRlTW9kZWw6IFZhbHVlTW9kZWw8Ym9vbGVhbj47XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbCcpIEBVc2VEZWxlZ2F0ZSgpXG4gIGN1c3RvbVBsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbDogTGlzdE1vZGVsPENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+PjtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgncGxhY2VBbmltYXRpb25PcmRlcicpIEBTdG9yZUluTGlzdE1vZGVsKCdjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwnKVxuICBjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBwbGFjZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBsYWNlQ29tcG9uZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3JvdXRlT3V0bGV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcm91dGVyT3V0OiBSb3V0ZXJPdXRsZXQ7XG5cblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVQbGFjZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZUNvbXBvbmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJldmlvdXNQbGFjZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZUNvbXBvbmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUGxhY2VWaXNpdE1vZGVsID0gbmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPFZpc2l0PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luT3V0bGV0QWN0aXZhdGlvbiA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldERlYWN0aXZhdGlvbiA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldFVwZGF0ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5Sb3V0ZVZpc2l0VXBkYXRlID0gbmV3IEd1YXJkKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZFJvdXRlTW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8QWN0aXZhdGVkUm91dGU+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGxhY2VEZWZpbml0aW9uID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlRGVmaW5pdGlvbj4oKTtcbiAgcHJpdmF0ZSBwYXJlbnRPdXRsZXRNb2RlbDogTXV0YWJsZVZhbHVlTW9kZWw8UGxhY2VPdXRsZXRDb21wb25lbnQ+O1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhY2VBbmltYXRpb25PcmRlcjogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG5cbiAgcHJpdmF0ZSBpbml0aWFsUGxhY2VJbmRleDogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSByb3V0ZXJWaXNpdDogVmFsdWVNb2RlbENoYWluPFZpc2l0PjtcbiAgcHVibGljIHJlYWRvbmx5IHJlYWR5OiBWYWx1ZU1vZGVsQ2hhaW48Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBlbmFibGVBbmltYXRpb246IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChBVVBfUExBQ0VfQ09ORklHKSByZWFkb25seSBwbGFjZUNvbmZpZzogUGxhY2VDb25maWcsXG4gICAgICAgICAgICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIHBhcmVudE91dGxldDogUGxhY2VPdXRsZXRDb21wb25lbnQpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLnBhcmVudE91dGxldE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsKHBhcmVudE91dGxldCk7XG4gICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnNldERlbGVnYXRlKG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxWaXNpdD4oKSk7XG4gICAgdGhpcy5faW5PdXRsZXRVcGRhdGUgPSB2YWx1ZU9mLmFueSh0aGlzLl9pbk91dGxldERlYWN0aXZhdGlvbiwgdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uKS5hcmVUcnV0aHkoKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQbGFjZUFuaW1hdGlvbk9yZGVyID0gY2hhaW4odGhpcy5wYXJlbnRPdXRsZXRNb2RlbClcbiAgICAgIC5wdWxsVmFsdWVNb2RlbChvID0+IG8uYWN0aXZlUGxhY2VNb2RlbClcbiAgICAgIC5wbHVjaygncGxhY2VEZWZpbml0aW9uJylcbiAgICAgIC5wbHVja0xpc3QoJ2NoaWxkcmVuJylcbiAgICAgIC5wbHVjaygnY29tcG9uZW50Jyk7XG5cblxuICAgIC8vIFRPRE86IFRoaXMgaXMgYSBoYWNrIHRvIHByZXZlbnQgYW5pbWF0aW9uIGR1cmluZyB0aGUgTm9vcEdhdGV3YXlQbGFjZVxuICAgIGNvbnN0IGFjdGl2ZVBsYWNlVHlwZSA9IGNoYWluKHRoaXMuX2FjdGl2ZVBsYWNlKS5tYXAocCA9PiB7XG4gICAgICByZXR1cm4gcC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PjtcbiAgICB9LCB7XG4gICAgICBwb3N0cG9uZVdoaWxlOiBjaGFpbih0aGlzLmFjdGl2ZVBsYWNlTW9kZWwpLmlzTmlsKClcbiAgICB9KTtcbiAgICBjb25zdCBwcmV2aW91c1BsYWNlVHlwZSA9IGNoYWluKHRoaXMuX3ByZXZpb3VzUGxhY2UpLm1hcChwID0+IHAuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICAgIHRoaXMucmVhZHkgPSBjaGFpbi5yZWR1Y2UoYWN0aXZlUGxhY2VUeXBlLCBwcmV2aW91c1BsYWNlVHlwZSwgKGN1cnJlbnQsIHByZXZpb3VzKSA9PiB7XG4gICAgICByZXR1cm4gISFjdXJyZW50ICYmIGN1cnJlbnQgIT09IE5vb3BHYXRld2F5UGxhY2UgJiYgcHJldmlvdXMgIT09IE5vb3BHYXRld2F5UGxhY2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLmVuYWJsZUFuaW1hdGlvbiA9IHZhbHVlT2YuYWxsKHRoaXMucmVhZHksIHRoaXMuYW5pbWF0ZU1vZGVsKS5hcmVUcnV0aHkoKTtcblxuICAgIHRoaXMucGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMuY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsKVxuICAgICAgLm90aGVyd2lzZShkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlcilcbiAgICAgIC5yZWR1Y2UoKHBsYWNlc0luT3JkZXIpID0+IHtcbiAgICAgICAgbGV0IHBsYWNlSW5kZXggPSAwO1xuICAgICAgICBpZiAoYWN0aXZlUGxhY2VUeXBlLnZhbHVlKSB7XG4gICAgICAgICAgcGxhY2VJbmRleCA9IHBsYWNlc0luT3JkZXIuaW5kZXhPZihhY3RpdmVQbGFjZVR5cGUudmFsdWUpO1xuICAgICAgICAgIGlmIChfLmlzTmlsKHRoaXMuaW5pdGlhbFBsYWNlSW5kZXggJiYgcGxhY2VJbmRleCA+PSAwKSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsUGxhY2VJbmRleCA9IHBsYWNlSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfLmlzTmlsKHRoaXMuaW5pdGlhbFBsYWNlSW5kZXgpID8gMCA6IHBsYWNlSW5kZXggLSB0aGlzLmluaXRpYWxQbGFjZUluZGV4O1xuICAgICAgfSwgeyBkZXBlbmRzT246IGFjdGl2ZVBsYWNlVHlwZSB9KTtcblxuICAgIC8vIFB1c2ggaW5jb21pbmcgY2hhbmdlcyBpbnRvIHRoZSBjb21wb25lbnRcbiAgICB0aGlzLnJvdXRlclZpc2l0ID0gY2hhaW4odGhpcy5fYWN0aXZlUGxhY2UpLnBsdWNrKCdwbGFjZURlZmluaXRpb24nKS5maW5kSW4ocGxhY2VSb3V0ZXIuYWN0aXZlVmlzaXRJbmRleCk7XG4gICAgLy8gT3VyIHJvdXRlciB2aXNpdCB3aWxsIGNoYW5nZSB3aGVuIG91ciBhY3RpdmUgaXMgbnVsbGlmaWVkIGR1cmluZyBkZWFjdGl2YXRpb24sIHdoaWNoIHdpbGwgcHVzaCBhIG51bGwgdmlzaXRcbiAgICAvLyB0aGUgdGhlIGRlYWN0aXZhdGVkIGNvbXBvbmVudCwgd2hpY2ggd2lsbCBudWtlIGl0J3MgdmlldyBiZWZvcmUgdGhlIGFuaW1hdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAgICAvLyBUaGUgdmlzaXQgd2lsbCBhbHdheSB1cGRhdGVkIGFmdGVyIHRoZSByb3V0ZXIgc2Vzc2lvbiBpcyBmaW5zaXNlZCAod2hlbiB0aGUgbmV3IHZpc2l0cyBhcmUgcmVnaXN0ZXJlZCkgc29cbiAgICAvLyB3ZSBjYW4gc2FmZWx5IGlnbm9yZSBpdCBkdXJpbmcgb3V0bGV0IGNoYW5nZXMgYXMgdGhlc2UgYWx3YXlzIGhhcHBlbiBiZWZvcmUgdGhlIHJvdXRlciBzZXNzaW9uIGVuZHMuXG4gICAgd2hlbi52YWx1ZU9mKHRoaXMucm91dGVyVmlzaXQpLmNoYW5nZXMoKCkgPT4gdGhpcy5wdXNoUm91dGVDaGFuZ2VzVG9WaXNpdCgpLCB7IHVubGVzczogdGhpcy5faW5PdXRsZXRVcGRhdGUgfSk7XG5cbiAgICAvLyBIYW5kbGUgY29tcG9uZW50IGJhc2VkIGNoYW5nZXNcbiAgICB3aGVuLnZhbHVlT2YodGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsKS5jaGFuZ2VzKChuZXh0LCBwcmV2aW91cykgPT4ge1xuICAgICAgdGhpcy5wdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShuZXh0LCBwcmV2aW91cyk7XG4gICAgfSwge1xuICAgICAgdW5sZXNzOiB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlXG4gICAgfSk7XG5cbiAgICBjaGFpbih0aGlzLl9hY3RpdmVQbGFjZSlcbiAgICAgIC5wb3N0cG9uZVdoaWxlKHBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlKVxuICAgICAgLnN1YnNjcmliZShwbGFjZSA9PiB0aGlzLnBsYWNlQ2hhbmdlZC5lbWl0KHBsYWNlKSk7XG5cbiAgICAvLyBjb25zdCB0eG8gPSBuZXcgVHJhbnNhY3Rpb25PYnNlcnZlcigpLm9uRXZlbnQoZSA9PiBjb25zb2xlLmxvZyhlLnRvU3RyaW5nKCkpKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgnaW5Sb3V0ZVZpc2l0VXBkYXRlJywgaW5Sb3V0ZVZpc2l0VXBkYXRlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0QW5pbWF0aW9uT3JkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VBbmltYXRpb25PcmRlci52YWx1ZTtcbiAgfVxuXG4gIGdldCBhbmltYXRpb25EdXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZUNvbmZpZyAmJiB0aGlzLnBsYWNlQ29uZmlnLmFuaW1hdGlvbkR1cmF0aW9uID8gdGhpcy5wbGFjZUNvbmZpZy5hbmltYXRpb25EdXJhdGlvbiA6ICc1MDBtcyc7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh7IGFjdGl2YXRlZFJvdXRlOiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlIH0pO1xuICAgIHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGUodmlzaXQsIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucGFyZW50T3V0bGV0ID8gdGhpcy5wYXJlbnRPdXRsZXQuYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwYXJlbnRPdXRsZXQoKTogUGxhY2VPdXRsZXRDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE91dGxldE1vZGVsLnZhbHVlO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHVzaFJvdXRlQ2hhbmdlc1RvVmlzaXQoKSB7XG4gICAgY29uc3QgdmlzaXQgPSB0aGlzLnJvdXRlclZpc2l0LnZhbHVlO1xuICAgIC8vIGNvbnNvbGUubG9nKHtcbiAgICAvLyAgIHZpc2l0LFxuICAgIC8vICAgcGxhY2U6IHZpc2l0ID8gdmlzaXQucGxhY2VEZWZpbml0aW9uLmNvbXBvbmVudCA6IG51bGwsXG4gICAgLy8gICBpbk91dGxldEFjdGl2YXRpb246IHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbi52YWx1ZSxcbiAgICAvLyAgIGluUm91dGluZ1Nlc3Npb246IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmUudmFsdWVcbiAgICAvLyB9KTtcbiAgICBpZiAodmlzaXQpIHsgLy8gY2FuIGJlIG51bGwgd2hpbGUgdGhlIHBsYWNlIGFuZCBpbmRleCBzeW5jIHVwXG4gICAgICB0aGlzLl9pblJvdXRlVmlzaXRVcGRhdGUud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnZhbHVlID0gdmlzaXQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShuZXh0OiBWaXNpdCwgcHJldmlvdXM6IFZpc2l0KSB7XG4gICAgY29uc3QgYWN0aXZhdGVkUm91dGUgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlO1xuICAgIHRoaXMucGxhY2VSb3V0ZXIucHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGUsIHByZXZpb3VzLCBuZXh0KTtcbiAgfVxuXG4gIGdldCBhY3RpdmVQbGFjZU1vZGVsKCk6IFZhbHVlTW9kZWw8UGxhY2VDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGxhY2UucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgYWN0aXZhdGVkUm91dGVNb2RlbCgpOiBWYWx1ZU1vZGVsPEFjdGl2YXRlZFJvdXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwucmVhZG9ubHk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbk91dGxldEFjdGl2YXRlZChyb3V0ZXJPdXRsZXQ6IFJvdXRlck91dGxldCwgcGxhY2U6IFBsYWNlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSA9IHBsYWNlO1xuICAgICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlID0gcm91dGVyT3V0bGV0LmFjdGl2YXRlZFJvdXRlO1xuICAgICAgICB0aGlzLl9wbGFjZURlZmluaXRpb24udmFsdWUgPSBwbGFjZS5wbGFjZURlZmluaXRpb247XG4gICAgICAgIGNvbnN0IHZpc2l0TW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8VmlzaXQ+KCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZSh2aXNpdE1vZGVsKTtcbiAgICAgICAgcGxhY2UuaW5pdGlhbGlzZUJpbmRpbmdzKHZpc2l0TW9kZWwpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLmVuYWJsZUFuaW1hdGlvbi52YWx1ZSkge1xuICAgICAgLy8gd2UncmUgbm90IGFuaW1hdGluZyBzbyB0cmlnZ2VyIGFueSBwb3N0IGFuaW1hdGlvbiBjYWxsYmFja3Mgbm93LlxuICAgICAgdGhpcy5hbmltYXRpb25Eb25lKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25PdXRsZXREZWFjdGl2YXRlZCgpIHtcbiAgICB0aGlzLl9pbk91dGxldERlYWN0aXZhdGlvbi53aGlsZVRydWUoKCkgPT4ge1xuICAgICAgdGhpcy5fcHJldmlvdXNQbGFjZS52YWx1ZSA9IHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlO1xuICAgICAgdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9wbGFjZURlZmluaXRpb24udmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnNldERlbGVnYXRlKG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYW5pbWF0aW9uU3RhcnRlZCgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh7IGFjdGl2ZVBsYWNlOiB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFuaW1hdGlvbkRvbmUoKSB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlKSB7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZS5vblBsYWNlUmVhZHkoKTtcbiAgICB9XG4gIH1cblxuXG59XG4iXX0=
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUdMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFFbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR2pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBR2hFLHVCQU1DOzs7SUFMQyxtQ0FBeUM7Ozs7O0lBRXpDLDZEQUFtRDs7OztJQUVuRCxrREFBcUI7O0FBR3ZCO0lBTTBDLGdEQUFtQjtJQXNDM0QsOEJBQTZCLE1BQWMsRUFDZCxXQUF3QixFQUNNLFdBQXdCLEVBQy9DLFlBQWtDO1FBSHRFLFlBSUUsaUJBQU8sU0E4Q1I7UUFsRDRCLFlBQU0sR0FBTixNQUFNLENBQVE7UUFD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QUN3Qjs7Ozs7SUFFeEIsNENBQXdFOzs7OztJQUN4RSxzREFBNEU7Ozs7O0lBRTVFLG1EQUFtRDs7Ozs7SUFDbkQscURBQXFEOzs7OztJQUNyRCwrQ0FBeUQ7Ozs7O0lBQ3pELG1EQUFtRDs7Ozs7SUFDbkQsb0RBQWdGOzs7OztJQUVoRixnREFBNkU7Ozs7O0lBQzdFLGlEQUFtRTs7SUFDbkUsbURBQTZEOzs7OztJQUU3RCxpREFBeUM7Ozs7O0lBQ3pDLDJDQUE0Qzs7Ozs7SUFFaEMsc0NBQStCOzs7OztJQUMvQiwyQ0FBeUM7O0lBQ3pDLDJDQUF1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNraXBTZWxmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWxlZ2F0aW5nVmFsdWVNb2RlbCxcbiAgRHNsLFxuICBHdWFyZCxcbiAgTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgU3RvcmVJbkxpc3RNb2RlbCxcbiAgU3RvcmVJblZhbHVlTW9kZWwsXG4gIFVzZURlbGVnYXRlLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQVVQX1BMQUNFX0NPTkZJRywgUGxhY2VDb25maWcgfSBmcm9tICcuLi8uLi9wbGFjZS1jb25maWcnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gJy4uLy4uL3BsYWNlLXJvdXRlcic7XG5cbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vLi4vdmlzaXQnO1xuaW1wb3J0IHsgTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT04gfSBmcm9tICcuL3JvdXRlLWFuaW1hdGlvbnMnO1xuXG4vLyBRdWljayBoYWNrIHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCBQbGFjZUNvbXBvbmVudHMuXG5pbnRlcmZhY2UgUGxhY2VSZWYge1xuICByZWFkb25seSBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvblxuXG4gIGluaXRpYWxpc2VCaW5kaW5ncyhwYXJhbTogVmFsdWVNb2RlbDxWaXNpdD4pOiB2b2lkO1xuXG4gIG9uUGxhY2VSZWFkeSgpOiB2b2lkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtcGxhY2Utb3V0bGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLW91dGxldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLW91dGxldC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT05dXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlT3V0bGV0Q29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKCdhbmltYXRlTW9kZWwnKVxuICBhbmltYXRlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIEBVc2VEZWxlZ2F0ZSh7IGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuICBhbmltYXRlTW9kZWw6IFZhbHVlTW9kZWw8Ym9vbGVhbj47XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbCcpIEBVc2VEZWxlZ2F0ZSgpXG4gIGN1c3RvbVBsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbDogTGlzdE1vZGVsPENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+PjtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgncGxhY2VBbmltYXRpb25PcmRlcicpIEBTdG9yZUluTGlzdE1vZGVsKCdjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwnKVxuICBjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBwbGFjZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBsYWNlQ29tcG9uZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3JvdXRlT3V0bGV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcm91dGVyT3V0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUGxhY2UgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8UGxhY2VDb21wb25lbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbCA9IG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxWaXNpdD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldEFjdGl2YXRpb24gPSBuZXcgR3VhcmQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5PdXRsZXREZWFjdGl2YXRpb24gPSBuZXcgR3VhcmQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5PdXRsZXRVcGRhdGU6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luUm91dGVWaXNpdFVwZGF0ZSA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZU1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPEFjdGl2YXRlZFJvdXRlPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYWNlRGVmaW5pdGlvbiA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZURlZmluaXRpb24+KCk7XG4gIHByaXZhdGUgcGFyZW50T3V0bGV0TW9kZWw6IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlT3V0bGV0Q29tcG9uZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlQW5pbWF0aW9uT3JkZXI6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuXG4gIHByaXZhdGUgaW5pdGlhbFBsYWNlSW5kZXg6IG51bWJlciA9IG51bGw7XG4gIHByaXZhdGUgcm91dGVyVmlzaXQ6IFZhbHVlTW9kZWxDaGFpbjxWaXNpdD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVVQX1BMQUNFX0NPTkZJRykgcmVhZG9ubHkgcGxhY2VDb25maWc6IFBsYWNlQ29uZmlnLFxuICAgICAgICAgICAgICBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBwYXJlbnRPdXRsZXQ6IFBsYWNlT3V0bGV0Q29tcG9uZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgdGhpcy5wYXJlbnRPdXRsZXRNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbChwYXJlbnRPdXRsZXQpO1xuICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZShuZXcgTXV0YWJsZVZhbHVlTW9kZWw8VmlzaXQ+KCkpO1xuICAgIHRoaXMuX2luT3V0bGV0VXBkYXRlID0gdmFsdWVPZi5hbnkodGhpcy5faW5PdXRsZXREZWFjdGl2YXRpb24sIHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbikuYXJlVHJ1dGh5KCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMucGFyZW50T3V0bGV0TW9kZWwpXG4gICAgICAucHVsbFZhbHVlTW9kZWwobyA9PiBvLmFjdGl2ZVBsYWNlTW9kZWwpXG4gICAgICAucGx1Y2soJ3BsYWNlRGVmaW5pdGlvbicpXG4gICAgICAucGx1Y2tMaXN0KCdjaGlsZHJlbicpXG4gICAgICAucGx1Y2soJ2NvbXBvbmVudCcpO1xuXG4gICAgY29uc3QgYWN0aXZhdGVQbGFjZVR5cGUgPSBjaGFpbih0aGlzLmFjdGl2ZVBsYWNlTW9kZWwpLm1hcChwID0+IHAuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICAgIHRoaXMucGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMuY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsKVxuICAgICAgLm90aGVyd2lzZShkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlcilcbiAgICAgIC5yZWR1Y2UoKHBsYWNlc0luT3JkZXIpID0+IHtcbiAgICAgICAgbGV0IHBsYWNlSW5kZXggPSAwO1xuICAgICAgICBpZiAoYWN0aXZhdGVQbGFjZVR5cGUudmFsdWUpIHtcbiAgICAgICAgICBwbGFjZUluZGV4ID0gcGxhY2VzSW5PcmRlci5pbmRleE9mKGFjdGl2YXRlUGxhY2VUeXBlLnZhbHVlKTtcbiAgICAgICAgICBpZiAoXy5pc05pbCh0aGlzLmluaXRpYWxQbGFjZUluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsUGxhY2VJbmRleCA9IHBsYWNlSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfLmlzTmlsKHRoaXMuaW5pdGlhbFBsYWNlSW5kZXgpID8gMCA6IHBsYWNlSW5kZXggLSB0aGlzLmluaXRpYWxQbGFjZUluZGV4O1xuICAgICAgfSwgeyBkZXBlbmRzT246IGFjdGl2YXRlUGxhY2VUeXBlIH0pO1xuXG4gICAgLy8gUHVzaCBpbmNvbWluZyBjaGFuZ2VzIGludG8gdGhlIGNvbXBvbmVudFxuICAgIHRoaXMucm91dGVyVmlzaXQgPSBjaGFpbih0aGlzLl9hY3RpdmVQbGFjZSkucGx1Y2soJ3BsYWNlRGVmaW5pdGlvbicpLmZpbmRJbihwbGFjZVJvdXRlci5hY3RpdmVWaXNpdEluZGV4KTtcbiAgICAvLyBPdXIgcm91dGVyIHZpc2l0IHdpbGwgY2hhbmdlIHdoZW4gb3VyIGFjdGl2ZSBpcyBudWxsaWZpZWQgZHVyaW5nIGRlYWN0aXZhdGlvbiwgd2hpY2ggd2lsbCBwdXNoIGEgbnVsbCB2aXNpdFxuICAgIC8vIHRoZSB0aGUgZGVhY3RpdmF0ZWQgY29tcG9uZW50LCB3aGljaCB3aWxsIG51a2UgaXQncyB2aWV3IGJlZm9yZSB0aGUgYW5pbWF0aW9ucyBoYXZlIGZpbmlzaGVkLlxuICAgIC8vIFRoZSB2aXNpdCB3aWxsIGFsd2F5IHVwZGF0ZWQgYWZ0ZXIgdGhlIHJvdXRlciBzZXNzaW9uIGlzIGZpbnNpc2VkICh3aGVuIHRoZSBuZXcgdmlzaXRzIGFyZSByZWdpc3RlcmVkKSBzb1xuICAgIC8vIHdlIGNhbiBzYWZlbHkgaWdub3JlIGl0IGR1cmluZyBvdXRsZXQgY2hhbmdlcyBhcyB0aGVzZSBhbHdheXMgaGFwcGVuIGJlZm9yZSB0aGUgcm91dGVyIHNlc3Npb24gZW5kcy5cbiAgICB3aGVuLnZhbHVlT2YodGhpcy5yb3V0ZXJWaXNpdCkuY2hhbmdlcygoKSA9PiB0aGlzLnB1c2hSb3V0ZUNoYW5nZXNUb1Zpc2l0KCksIHsgdW5sZXNzOiB0aGlzLl9pbk91dGxldFVwZGF0ZSB9KTtcblxuICAgIC8vIEhhbmRsZSBjb21wb25lbnQgYmFzZWQgY2hhbmdlc1xuICAgIHdoZW4udmFsdWVPZih0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwpLmNoYW5nZXMoKG5leHQsIHByZXZpb3VzKSA9PiB7XG4gICAgICB0aGlzLnB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKG5leHQsIHByZXZpb3VzKTtcbiAgICB9LCB7XG4gICAgICB1bmxlc3M6IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmVcbiAgICB9KTtcblxuICAgIGNoYWluKHRoaXMuX2FjdGl2ZVBsYWNlKVxuICAgICAgLnBvc3Rwb25lV2hpbGUocGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmUpXG4gICAgICAuc3Vic2NyaWJlKHBsYWNlID0+IHRoaXMucGxhY2VDaGFuZ2VkLmVtaXQocGxhY2UpKTtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBnZXRBbmltYXRpb25PcmRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZUFuaW1hdGlvbk9yZGVyLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGFuaW1hdGlvbkR1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnBsYWNlQ29uZmlnICYmIHRoaXMucGxhY2VDb25maWcuYW5pbWF0aW9uRHVyYXRpb24gPyB0aGlzLnBsYWNlQ29uZmlnLmFuaW1hdGlvbkR1cmF0aW9uIDogJzUwMG1zJztcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG5hdmlnYXRlKHZpc2l0OiBWaXNpdCkge1xuICAgIC8vIGNvbnNvbGUubG9nKHsgYWN0aXZhdGVkUm91dGU6IHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwudmFsdWUgfSk7XG4gICAgdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0ZSh2aXNpdCwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5wYXJlbnRPdXRsZXQgPyB0aGlzLnBhcmVudE91dGxldC5hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlIDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHBhcmVudE91dGxldCgpOiBQbGFjZU91dGxldENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50T3V0bGV0TW9kZWwudmFsdWU7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwdXNoUm91dGVDaGFuZ2VzVG9WaXNpdCgpIHtcbiAgICBjb25zdCB2aXNpdCA9IHRoaXMucm91dGVyVmlzaXQudmFsdWU7XG4gICAgLy8gY29uc29sZS5sb2coe1xuICAgIC8vICAgdmlzaXQsXG4gICAgLy8gICBwbGFjZTogdmlzaXQgPyB2aXNpdC5wbGFjZURlZmluaXRpb24uY29tcG9uZW50IDogbnVsbCxcbiAgICAvLyAgIGluT3V0bGV0QWN0aXZhdGlvbjogdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uLnZhbHVlLFxuICAgIC8vICAgaW5Sb3V0aW5nU2Vzc2lvbjogdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZS52YWx1ZVxuICAgIC8vIH0pO1xuICAgIGlmICh2aXNpdCkgeyAvLyBjYW4gYmUgbnVsbCB3aGlsZSB0aGUgcGxhY2UgYW5kIGluZGV4IHN5bmMgdXBcbiAgICAgIHRoaXMuX2luUm91dGVWaXNpdFVwZGF0ZS53aGlsZVRydWUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwudmFsdWUgPSB2aXNpdDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKG5leHQ6IFZpc2l0LCBwcmV2aW91czogVmlzaXQpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRSb3V0ZSA9IHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwudmFsdWU7XG4gICAgdGhpcy5wbGFjZVJvdXRlci5wdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShhY3RpdmF0ZWRSb3V0ZSwgcHJldmlvdXMsIG5leHQpO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVBsYWNlTW9kZWwoKTogVmFsdWVNb2RlbDxQbGFjZUNvbXBvbmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVQbGFjZS5yZWFkb25seTtcbiAgfVxuXG4gIGdldCBhY3RpdmF0ZWRSb3V0ZU1vZGVsKCk6IFZhbHVlTW9kZWw8QWN0aXZhdGVkUm91dGU+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC5yZWFkb25seTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uT3V0bGV0QWN0aXZhdGVkKHJvdXRlck91dGxldDogUm91dGVyT3V0bGV0LCBwbGFjZTogUGxhY2VDb21wb25lbnQpIHtcbiAgICB0aGlzLl9pbk91dGxldEFjdGl2YXRpb24ud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlID0gcGxhY2U7XG4gICAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwudmFsdWUgPSByb3V0ZXJPdXRsZXQuYWN0aXZhdGVkUm91dGU7XG4gICAgICAgIHRoaXMuX3BsYWNlRGVmaW5pdGlvbi52YWx1ZSA9IHBsYWNlLnBsYWNlRGVmaW5pdGlvbjtcbiAgICAgICAgY29uc3QgdmlzaXRNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxWaXNpdD4oKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnNldERlbGVnYXRlKHZpc2l0TW9kZWwpO1xuICAgICAgICBwbGFjZS5pbml0aWFsaXNlQmluZGluZ3ModmlzaXRNb2RlbCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuYW5pbWF0ZU1vZGVsLnZhbHVlKSB7XG4gICAgICAvLyB3ZSdyZSBub3QgYW5pbWF0aW5nIHNvIHRyaWdnZXIgYW55IHBvc3QgYW5pbWF0aW9uIGNhbGxiYWNrcyBub3cuXG4gICAgICB0aGlzLmFuaW1hdGlvbkRvbmUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbk91dGxldERlYWN0aXZhdGVkKCkge1xuICAgIHRoaXMuX2luT3V0bGV0RGVhY3RpdmF0aW9uLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuX3BsYWNlRGVmaW5pdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZVZpc2l0TW9kZWwuc2V0RGVsZWdhdGUobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhbmltYXRpb25TdGFydGVkKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKHsgYWN0aXZlUGxhY2U6IHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYW5pbWF0aW9uRG9uZSgpIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlUGxhY2UudmFsdWUpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlLm9uUGxhY2VSZWFkeSgpO1xuICAgIH1cbiAgfVxuXG5cbn1cbiJdfQ==
@@ -0,0 +1,212 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
7
+ import { lang, Trace } from '@coolon/pectin';
8
+ import { Observable } from 'rxjs';
9
+ import { PlaceComponent } from '../place-component';
10
+ import { VisitSanitiser } from '../route/visit-sanitiser';
11
+ import { Visit } from '../visit';
12
+ import { ConsolidatedParameterMap } from './consolidated-param-map';
13
+ /**
14
+ * @abstract
15
+ */
16
+ var AbstractPlaceGuard = /** @class */ (function () {
17
+ function AbstractPlaceGuard(router, urlSerializer, placeRouter, placeHistory, injector) {
18
+ this.router = router;
19
+ this.urlSerializer = urlSerializer;
20
+ this.placeRouter = placeRouter;
21
+ this.placeHistory = placeHistory;
22
+ this.injector = injector;
23
+ }
24
+ // @Trace()
25
+ // @Trace()
26
+ /**
27
+ * @param {?} activatedRoute
28
+ * @param {?} state
29
+ * @return {?}
30
+ */
31
+ AbstractPlaceGuard.prototype.canActivate =
32
+ // @Trace()
33
+ /**
34
+ * @param {?} activatedRoute
35
+ * @param {?} state
36
+ * @return {?}
37
+ */
38
+ function (activatedRoute, state) {
39
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
40
+ var _this = this;
41
+ return tslib_1.__generator(this, function (_a) {
42
+ return [2 /*return*/, this.authorisePlaceThen(activatedRoute, state, (/**
43
+ * @param {?} placeDefinition
44
+ * @return {?}
45
+ */
46
+ function (placeDefinition) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
47
+ var params, parsedParams, initialVisit, sanitiser, sanitisedVisit, commands;
48
+ return tslib_1.__generator(this, function (_a) {
49
+ switch (_a.label) {
50
+ case 0:
51
+ // Parse our route params.
52
+ params = new ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
53
+ parsedParams = placeDefinition.parseRouteParams(params);
54
+ initialVisit = this.placeRouter.navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
55
+ sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);
56
+ return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
57
+ case 1:
58
+ sanitisedVisit = _a.sent();
59
+ // Save the visit with any updated parameters. We need to save it so we remember any non route parameters
60
+ this.placeRouter.navigationSession.storeVisit(sanitisedVisit);
61
+ if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
62
+ // Regenerate the url
63
+ commands = this.placeRouter.parseUrl(state).createRedirectCommandsFor(sanitisedVisit);
64
+ console.log('##### Place Guard Redirect', commands);
65
+ return [2 /*return*/, this.router.createUrlTree(commands, {
66
+ replaceUrl: true,
67
+ skipLocationChange: false
68
+ })];
69
+ }
70
+ else {
71
+ return [2 /*return*/, true];
72
+ }
73
+ return [2 /*return*/];
74
+ }
75
+ });
76
+ }); }))];
77
+ });
78
+ });
79
+ };
80
+ /**
81
+ * @param {?} component
82
+ * @param {?} currentRoute
83
+ * @param {?} currentState
84
+ * @param {?=} nextState
85
+ * @return {?}
86
+ */
87
+ AbstractPlaceGuard.prototype.canDeactivate = /**
88
+ * @param {?} component
89
+ * @param {?} currentRoute
90
+ * @param {?} currentState
91
+ * @param {?=} nextState
92
+ * @return {?}
93
+ */
94
+ function (component, currentRoute, currentState, nextState) {
95
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
96
+ return tslib_1.__generator(this, function (_a) {
97
+ return [2 /*return*/, this.placeRouter.navigationSession.canDeactivatePlace(component, this.placeRouter.parseUrl(nextState))];
98
+ });
99
+ });
100
+ };
101
+ // @Trace()
102
+ // @Trace()
103
+ /**
104
+ * @protected
105
+ * @param {?} activatedRoute
106
+ * @param {?} state
107
+ * @param {?} canActivate
108
+ * @return {?}
109
+ */
110
+ AbstractPlaceGuard.prototype.authorisePlaceThen =
111
+ // @Trace()
112
+ /**
113
+ * @protected
114
+ * @param {?} activatedRoute
115
+ * @param {?} state
116
+ * @param {?} canActivate
117
+ * @return {?}
118
+ */
119
+ function (activatedRoute, state, canActivate) {
120
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
121
+ var placeDefinition, authorised, _a;
122
+ return tslib_1.__generator(this, function (_b) {
123
+ switch (_b.label) {
124
+ case 0:
125
+ if (!PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) return [3 /*break*/, 4];
126
+ placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
127
+ if (!placeDefinition.authenticate) return [3 /*break*/, 2];
128
+ return [4 /*yield*/, this.isAuthorised(activatedRoute, state)];
129
+ case 1:
130
+ _a = _b.sent();
131
+ return [3 /*break*/, 3];
132
+ case 2:
133
+ _a = true;
134
+ _b.label = 3;
135
+ case 3:
136
+ authorised = _a;
137
+ if (authorised === true) {
138
+ return [2 /*return*/, canActivate(placeDefinition)];
139
+ }
140
+ else {
141
+ console.log('not authorised result', authorised);
142
+ return [2 /*return*/, authorised];
143
+ }
144
+ return [3 /*break*/, 5];
145
+ case 4: return [2 /*return*/, lang.illegalState("expected component to be an instance of PlaceComponent, got " + activatedRoute.component)];
146
+ case 5: return [2 /*return*/];
147
+ }
148
+ });
149
+ });
150
+ };
151
+ /**
152
+ * @param {?} activatedRoute
153
+ * @param {?} state
154
+ * @return {?}
155
+ */
156
+ AbstractPlaceGuard.prototype.isAuthorised = /**
157
+ * @param {?} activatedRoute
158
+ * @param {?} state
159
+ * @return {?}
160
+ */
161
+ function (activatedRoute, state) {
162
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
163
+ var authorised;
164
+ return tslib_1.__generator(this, function (_a) {
165
+ authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);
166
+ return [2 /*return*/, (authorised instanceof Observable) ? authorised.toPromise() : authorised];
167
+ });
168
+ });
169
+ };
170
+ tslib_1.__decorate([
171
+ Trace(),
172
+ tslib_1.__metadata("design:type", Function),
173
+ tslib_1.__metadata("design:paramtypes", [ActivatedRouteSnapshot, RouterStateSnapshot]),
174
+ tslib_1.__metadata("design:returntype", Promise)
175
+ ], AbstractPlaceGuard.prototype, "isAuthorised", null);
176
+ return AbstractPlaceGuard;
177
+ }());
178
+ export { AbstractPlaceGuard };
179
+ if (false) {
180
+ /**
181
+ * @type {?}
182
+ * @private
183
+ */
184
+ AbstractPlaceGuard.prototype.router;
185
+ /**
186
+ * @type {?}
187
+ * @private
188
+ */
189
+ AbstractPlaceGuard.prototype.urlSerializer;
190
+ /**
191
+ * @type {?}
192
+ * @private
193
+ */
194
+ AbstractPlaceGuard.prototype.placeRouter;
195
+ /**
196
+ * @type {?}
197
+ * @private
198
+ */
199
+ AbstractPlaceGuard.prototype.placeHistory;
200
+ /**
201
+ * @type {?}
202
+ * @private
203
+ */
204
+ AbstractPlaceGuard.prototype.injector;
205
+ /**
206
+ * @abstract
207
+ * @param {?} injector
208
+ * @return {?}
209
+ */
210
+ AbstractPlaceGuard.prototype.getAuthGuard = function (injector) { };
211
+ }
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL2Fic3RyYWN0LXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUNMLHNCQUFzQixFQUd0QixtQkFBbUIsRUFHcEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBR3BFO0lBR0UsNEJBQTZCLE1BQWMsRUFDdkIsYUFBNEIsRUFDbkIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsUUFBa0I7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQy9DLENBQUM7SUFFRCxXQUFXOzs7Ozs7O0lBQ0wsd0NBQVc7Ozs7Ozs7SUFBakIsVUFBa0IsY0FBc0MsRUFBRSxLQUEwQjs7OztnQkFDbEYsc0JBQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxLQUFLOzs7O29CQUFFLFVBQU0sZUFBZTs7Ozs7O29DQUduRSxNQUFNLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxjQUFjLENB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LENBQUMsVUFBVSxZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBQzs7O0tBQ2pGO0lBSEQ7UUFEQyxLQUFLLEVBQUU7O2lEQUMyQixzQkFBc0IsRUFBUyxtQkFBbUI7OzBEQUdwRjtJQUdILHlCQUFDO0NBQUEsQUFqRUQsSUFpRUM7U0FqRXFCLGtCQUFrQjs7Ozs7O0lBRzFCLG9DQUErQjs7Ozs7SUFDL0IsMkNBQW9DOzs7OztJQUNwQyx5Q0FBeUM7Ozs7O0lBQ3pDLDBDQUEyQzs7Ozs7SUFDM0Msc0NBQW1DOzs7Ozs7SUF5RC9DLG9FQUF1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBDYW5BY3RpdmF0ZSwgQ2FuRGVhY3RpdmF0ZSxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBVcmxTZXJpYWxpemVyLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBsYW5nLCBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vZGFsSW50ZXJhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvbW9kYWwtaW50ZXJhY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gJy4uL3BsYWNlLWhpc3RvcnknO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi9wbGFjZS1yb3V0ZXInO1xuaW1wb3J0IHsgVmlzaXRTYW5pdGlzZXIgfSBmcm9tICcuLi9yb3V0ZS92aXNpdC1zYW5pdGlzZXInO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuLi92aXNpdCc7XG5pbXBvcnQgeyBDb25zb2xpZGF0ZWRQYXJhbWV0ZXJNYXAgfSBmcm9tICcuL2NvbnNvbGlkYXRlZC1wYXJhbS1tYXAnO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuRGVhY3RpdmF0ZTxQbGFjZUNvbXBvbmVudD4ge1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRob3Jpc2VQbGFjZVRoZW4oYWN0aXZhdGVkUm91dGUsIHN0YXRlLCBhc3luYyBwbGFjZURlZmluaXRpb24gPT4ge1xuXG4gICAgICAvLyBQYXJzZSBvdXIgcm91dGUgcGFyYW1zLlxuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcChhY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcCwgYWN0aXZhdGVkUm91dGUudXJsKTtcbiAgICAgIGNvbnN0IHBhcnNlZFBhcmFtcyA9IHBsYWNlRGVmaW5pdGlvbi5wYXJzZVJvdXRlUGFyYW1zKHBhcmFtcyk7XG5cbiAgICAgIGNvbnN0IGluaXRpYWxWaXNpdCA9IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uZ2V0VmlzaXRGb3IocGxhY2VEZWZpbml0aW9uKSB8fCBuZXcgVmlzaXQocGxhY2VEZWZpbml0aW9uLCBwYXJzZWRQYXJhbXMpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VyID0gbmV3IFZpc2l0U2FuaXRpc2VyKGFjdGl2YXRlZFJvdXRlLCB0aGlzLnJvdXRlciwgdGhpcy5wbGFjZUhpc3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmlzaXQgPSBhd2FpdCBzYW5pdGlzZXIuc2FuaXRpc2UoaW5pdGlhbFZpc2l0Lm1lcmdlUm91dGVQYXJhbWV0ZXJzKHBhcnNlZFBhcmFtcykpO1xuXG4gICAgICAvLyBTYXZlIHRoZSB2aXNpdCB3aXRoIGFueSB1cGRhdGVkIHBhcmFtZXRlcnMuICBXZSBuZWVkIHRvIHNhdmUgaXQgc28gd2UgcmVtZW1iZXIgYW55IG5vbiByb3V0ZSBwYXJhbWV0ZXJzXG4gICAgICB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLnN0b3JlVmlzaXQoc2FuaXRpc2VkVmlzaXQpO1xuICAgICAgaWYgKGluaXRpYWxWaXNpdC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20oc2FuaXRpc2VkVmlzaXQpKSB7XG4gICAgICAgIC8vIFJlZ2VuZXJhdGUgdGhlIHVybFxuICAgICAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMucGxhY2VSb3V0ZXIucGFyc2VVcmwoc3RhdGUpLmNyZWF0ZVJlZGlyZWN0Q29tbWFuZHNGb3Ioc2FuaXRpc2VkVmlzaXQpO1xuICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgUGxhY2UgR3VhcmQgUmVkaXJlY3QnLCBjb21tYW5kcyk7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKGNvbW1hbmRzLCB7XG4gICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uY2FuRGVhY3RpdmF0ZVBsYWNlKGNvbXBvbmVudCwgdGhpcy5wbGFjZVJvdXRlci5wYXJzZVVybChuZXh0U3RhdGUpKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByb3RlY3RlZCBhc3luYyBhdXRob3Jpc2VQbGFjZVRoZW4oYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBjYW5BY3RpdmF0ZTogKHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uKSA9PiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPikge1xuICAgIGlmIChQbGFjZUNvbXBvbmVudC5pc1BsYWNlQ29tcG9uZW50Q29uc3RydWN0b3IoYWN0aXZhdGVkUm91dGUuY29tcG9uZW50KSkge1xuICAgICAgY29uc3QgcGxhY2VEZWZpbml0aW9uID0gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQpO1xuICAgICAgY29uc3QgYXV0aG9yaXNlZCA9IHBsYWNlRGVmaW5pdGlvbi5hdXRoZW50aWNhdGUgPyBhd2FpdCB0aGlzLmlzQXV0aG9yaXNlZChhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpIDogdHJ1ZTtcbiAgICAgIGlmIChhdXRob3Jpc2VkID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBjYW5BY3RpdmF0ZShwbGFjZURlZmluaXRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coJ25vdCBhdXRob3Jpc2VkIHJlc3VsdCcsIGF1dGhvcmlzZWQpO1xuICAgICAgICByZXR1cm4gYXV0aG9yaXNlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKGBleHBlY3RlZCBjb21wb25lbnQgdG8gYmUgYW4gaW5zdGFuY2Ugb2YgUGxhY2VDb21wb25lbnQsIGdvdCAke2FjdGl2YXRlZFJvdXRlLmNvbXBvbmVudH1gKTtcbiAgICB9XG4gIH1cblxuICBAVHJhY2UoKVxuICBhc3luYyBpc0F1dGhvcmlzZWQoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIGNvbnN0IGF1dGhvcmlzZWQgPSB0aGlzLmdldEF1dGhHdWFyZCh0aGlzLmluamVjdG9yKS5jYW5BY3RpdmF0ZShhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpO1xuICAgIHJldHVybiAoYXV0aG9yaXNlZCBpbnN0YW5jZW9mIE9ic2VydmFibGUpID8gYXV0aG9yaXNlZC50b1Byb21pc2UoKSA6IGF1dGhvcmlzZWQ7XG4gIH1cblxuICBhYnN0cmFjdCBnZXRBdXRoR3VhcmQoaW5qZWN0b3I6IEluamVjdG9yKTogQ2FuQWN0aXZhdGU7XG59XG4iXX0=
@@ -0,0 +1,161 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
7
+ /**
8
+ * This a work around for the fact that an activated route with multiple segments doesn't
9
+ * include the segment params in the paramMap as well as each segment returns an empty
10
+ * param map even when `parameter`s has content.
11
+ */
12
+ var ConsolidatedParameterMap = /** @class */ (function () {
13
+ function ConsolidatedParameterMap(paramMap, urlSegments) {
14
+ this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
15
+ * @param {?} s
16
+ * @return {?}
17
+ */
18
+ function (s) { return new ParamMapAdapter(s.parameters); }))).filter((/**
19
+ * @param {?} m
20
+ * @return {?}
21
+ */
22
+ function (m) { return !!m; })); // the activated route param map can be null
23
+ }
24
+ /**
25
+ * @param {?} name
26
+ * @return {?}
27
+ */
28
+ ConsolidatedParameterMap.prototype.get = /**
29
+ * @param {?} name
30
+ * @return {?}
31
+ */
32
+ function (name) {
33
+ /** @type {?} */
34
+ var paramMap = this.paramMaps.find((/**
35
+ * @param {?} m
36
+ * @return {?}
37
+ */
38
+ function (m) { return m.has(name); }));
39
+ return paramMap.get(name);
40
+ };
41
+ /**
42
+ * @param {?} name
43
+ * @return {?}
44
+ */
45
+ ConsolidatedParameterMap.prototype.getAll = /**
46
+ * @param {?} name
47
+ * @return {?}
48
+ */
49
+ function (name) {
50
+ /** @type {?} */
51
+ var paramMap = this.paramMaps.find((/**
52
+ * @param {?} m
53
+ * @return {?}
54
+ */
55
+ function (m) { return m.has(name); }));
56
+ return paramMap.getAll(name);
57
+ };
58
+ /**
59
+ * @param {?} name
60
+ * @return {?}
61
+ */
62
+ ConsolidatedParameterMap.prototype.has = /**
63
+ * @param {?} name
64
+ * @return {?}
65
+ */
66
+ function (name) {
67
+ return !!this.paramMaps.find((/**
68
+ * @param {?} m
69
+ * @return {?}
70
+ */
71
+ function (m) { return m.has(name); }));
72
+ };
73
+ Object.defineProperty(ConsolidatedParameterMap.prototype, "keys", {
74
+ get: /**
75
+ * @return {?}
76
+ */
77
+ function () {
78
+ return this.paramMaps.reduce((/**
79
+ * @param {?} result
80
+ * @param {?} params
81
+ * @return {?}
82
+ */
83
+ function (result, params) { return result.concat(params.keys); }), []);
84
+ },
85
+ enumerable: true,
86
+ configurable: true
87
+ });
88
+ tslib_1.__decorate([
89
+ Memoize(),
90
+ tslib_1.__metadata("design:type", Array),
91
+ tslib_1.__metadata("design:paramtypes", [])
92
+ ], ConsolidatedParameterMap.prototype, "keys", null);
93
+ return ConsolidatedParameterMap;
94
+ }());
95
+ export { ConsolidatedParameterMap };
96
+ if (false) {
97
+ /**
98
+ * @type {?}
99
+ * @private
100
+ */
101
+ ConsolidatedParameterMap.prototype.paramMaps;
102
+ }
103
+ var ParamMapAdapter = /** @class */ (function () {
104
+ function ParamMapAdapter(params) {
105
+ this.params = params;
106
+ }
107
+ /**
108
+ * @param {?} name
109
+ * @return {?}
110
+ */
111
+ ParamMapAdapter.prototype.get = /**
112
+ * @param {?} name
113
+ * @return {?}
114
+ */
115
+ function (name) {
116
+ return this.params[name];
117
+ };
118
+ /**
119
+ * @param {?} name
120
+ * @return {?}
121
+ */
122
+ ParamMapAdapter.prototype.getAll = /**
123
+ * @param {?} name
124
+ * @return {?}
125
+ */
126
+ function (name) {
127
+ /** @type {?} */
128
+ var value = this.get(name);
129
+ return Array.isArray(value) ? value : [value];
130
+ };
131
+ /**
132
+ * @param {?} name
133
+ * @return {?}
134
+ */
135
+ ParamMapAdapter.prototype.has = /**
136
+ * @param {?} name
137
+ * @return {?}
138
+ */
139
+ function (name) {
140
+ return this.keys.includes(name);
141
+ };
142
+ Object.defineProperty(ParamMapAdapter.prototype, "keys", {
143
+ get: /**
144
+ * @return {?}
145
+ */
146
+ function () {
147
+ return Object.keys(this.params);
148
+ },
149
+ enumerable: true,
150
+ configurable: true
151
+ });
152
+ return ParamMapAdapter;
153
+ }());
154
+ if (false) {
155
+ /**
156
+ * @type {?}
157
+ * @private
158
+ */
159
+ ParamMapAdapter.prototype.params;
160
+ }
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29saWRhdGVkLXBhcmFtLW1hcC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9ndWFyZHMvY29uc29saWRhdGVkLXBhcmFtLW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7O0FBTzNFO0lBSUUsa0NBQVksUUFBa0IsRUFBRSxXQUF5QjtRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUNoQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQWpDLENBQWlDLEVBQUMsQ0FDaEUsQ0FBQyxNQUFNOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsQ0FBQyxFQUFILENBQUcsRUFBQyxDQUFDLENBQUMsNENBQTRDO0lBQ2xFLENBQUM7Ozs7O0lBRUQsc0NBQUc7Ozs7SUFBSCxVQUFJLElBQVk7O1lBQ1IsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSTs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBWCxDQUFXLEVBQUM7UUFDdEQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBRUQseUNBQU07Ozs7SUFBTixVQUFPLElBQVk7O1lBQ1gsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSTs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBWCxDQUFXLEVBQUM7UUFDdEQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7Ozs7O0lBRUQsc0NBQUc7Ozs7SUFBSCxVQUFJLElBQVk7UUFDZCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7Ozs7UUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQVgsQ0FBVyxFQUFDLENBQUM7SUFDakQsQ0FBQztJQUdELHNCQUFJLDBDQUFJOzs7O1FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTs7Ozs7WUFBQyxVQUFDLE1BQU0sRUFBRSxNQUFNLElBQUssT0FBQSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBMUIsQ0FBMEIsR0FBRSxFQUFFLENBQUMsQ0FBQztRQUNuRixDQUFDOzs7T0FBQTtJQUZEO1FBREMsT0FBTyxFQUFFOzs7d0RBR1Q7SUFDSCwrQkFBQztDQUFBLEFBNUJELElBNEJDO1NBNUJZLHdCQUF3Qjs7Ozs7O0lBRW5DLDZDQUE4Qjs7QUE0QmhDO0lBQ0UseUJBQTZCLE1BQStCO1FBQS9CLFdBQU0sR0FBTixNQUFNLENBQXlCO0lBQzVELENBQUM7Ozs7O0lBRUQsNkJBQUc7Ozs7SUFBSCxVQUFJLElBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7Ozs7SUFFRCxnQ0FBTTs7OztJQUFOLFVBQU8sSUFBWTs7WUFDWCxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDNUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7Ozs7SUFFRCw2QkFBRzs7OztJQUFILFVBQUksSUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELHNCQUFJLGlDQUFJOzs7O1FBQVI7WUFDRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7OztPQUFBO0lBRUgsc0JBQUM7QUFBRCxDQUFDLEFBckJELElBcUJDOzs7Ozs7SUFwQmEsaUNBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyYW1NYXAsIFVybFNlZ21lbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvci9kaXN0L3NyYyc7XG5cbi8qKlxuICogVGhpcyBhIHdvcmsgYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IGFuIGFjdGl2YXRlZCByb3V0ZSB3aXRoIG11bHRpcGxlIHNlZ21lbnRzIGRvZXNuJ3RcbiAqIGluY2x1ZGUgdGhlIHNlZ21lbnQgcGFyYW1zIGluIHRoZSBwYXJhbU1hcCBhcyB3ZWxsIGFzIGVhY2ggc2VnbWVudCByZXR1cm5zIGFuIGVtcHR5XG4gKiBwYXJhbSBtYXAgZXZlbiB3aGVuIGBwYXJhbWV0ZXJgcyBoYXMgY29udGVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcCBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcblxuICBwcml2YXRlIHBhcmFtTWFwczogUGFyYW1NYXBbXTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbU1hcDogUGFyYW1NYXAsIHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10pIHtcbiAgICB0aGlzLnBhcmFtTWFwcyA9IFtwYXJhbU1hcF0uY29uY2F0KFxuICAgICAgKHVybFNlZ21lbnRzIHx8IFtdKS5tYXAocyA9PiBuZXcgUGFyYW1NYXBBZGFwdGVyKHMucGFyYW1ldGVycykpXG4gICAgKS5maWx0ZXIobSA9PiAhIW0pOyAvLyB0aGUgYWN0aXZhdGVkIHJvdXRlIHBhcmFtIG1hcCBjYW4gYmUgbnVsbFxuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHBhcmFtTWFwID0gdGhpcy5wYXJhbU1hcHMuZmluZChtID0+IG0uaGFzKG5hbWUpKTtcbiAgICByZXR1cm4gcGFyYW1NYXAuZ2V0KG5hbWUpO1xuICB9XG5cbiAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwYXJhbU1hcCA9IHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgcmV0dXJuIHBhcmFtTWFwLmdldEFsbChuYW1lKTtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLnJlZHVjZSgocmVzdWx0LCBwYXJhbXMpID0+IHJlc3VsdC5jb25jYXQocGFyYW1zLmtleXMpLCBbXSk7XG4gIH1cbn1cblxuY2xhc3MgUGFyYW1NYXBBZGFwdGVyIGltcGxlbWVudHMgUGFyYW1NYXAge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXNbbmFtZV07XG4gIH1cblxuICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmtleXMuaW5jbHVkZXMobmFtZSk7XG4gIH1cblxuICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucGFyYW1zKTtcbiAgfVxuXG59XG4iXX0=