@wavemaker/app-ng-runtime 12.0.0-next.45050 → 12.0.0-next.45055

Sign up to get free protection for your applications and to get access to all the features.
@@ -119,7 +119,8 @@
119
119
  ['show', { value: true, ...i2.PROP_BOOLEAN }],
120
120
  ['statehandler', { value: 'none', ...i2.PROP_STRING }],
121
121
  ['transition', i2.PROP_STRING],
122
- ['type', i2.PROP_STRING]
122
+ ['type', i2.PROP_STRING],
123
+ ['iconposition', i2.PROP_STRING],
123
124
  ]);
124
125
  if (i1.isMobileApp()) {
125
126
  props.set('transition', { value: 'slide', ...i2.PROP_STRING });
@@ -346,11 +347,12 @@
346
347
  i0__namespace.ɵɵelementEnd()();
347
348
  } if (rf & 2) {
348
349
  const pane_r3 = ctx.$implicit;
349
- i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction2(10, _c4, pane_r3.isActive, pane_r3.disabled))("hidden", !pane_r3.show);
350
+ const ctx_r4 = i0__namespace.ɵɵnextContext();
351
+ i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction2(11, _c4, pane_r3.isActive, pane_r3.disabled))("hidden", !pane_r3.show);
350
352
  i0__namespace.ɵɵattribute("data-paneid", pane_r3.widgetId);
351
353
  i0__namespace.ɵɵadvance();
352
354
  i0__namespace.ɵɵproperty("tabindex", pane_r3.isActive ? "0" : "-1");
353
- i0__namespace.ɵɵattribute("aria-label", pane_r3.title)("title", pane_r3.title)("aria-selected", pane_r3.isActive);
355
+ i0__namespace.ɵɵattribute("icon-position", ctx_r4.iconposition)("aria-label", pane_r3.title)("title", pane_r3.title)("aria-selected", pane_r3.isActive);
354
356
  i0__namespace.ɵɵadvance();
355
357
  i0__namespace.ɵɵproperty("ngIf", pane_r3.paneicon);
356
358
  i0__namespace.ɵɵadvance();
@@ -397,6 +399,7 @@
397
399
  // handle to the promise resolver
398
400
  let resolveFn = i1.noop;
399
401
  super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));
402
+ this.iconposition = '';
400
403
  this.transition = _transition;
401
404
  this.tabsposition = _tabsPosition;
402
405
  this.statePersistence = statePersistence;
@@ -733,12 +736,14 @@
733
736
  } if (rf & 2) {
734
737
  let _t;
735
738
  i0__namespace.ɵɵqueryRefresh(_t = i0__namespace.ɵɵloadQuery()) && (ctx.panes = _t);
739
+ } }, hostVars: 1, hostBindings: function TabsComponent_HostBindings(rf, ctx) { if (rf & 2) {
740
+ i0__namespace.ɵɵattribute("icon-position", ctx.iconposition);
736
741
  } }, exportAs: ["wmTabs"], features: [i0__namespace.ɵɵProvidersFeature([
737
742
  i2.provideAsWidgetRef(TabsComponent)
738
743
  ]), i0__namespace.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c2, decls: 4, vars: 7, consts: [["role", "tablist", 1, "nav", "nav-tabs", 3, "ngClass"], ["class", "tab-header", "role", "presentation", 3, "ngClass", "hidden", 4, "ngFor", "ngForOf"], ["class", "tab-content", 3, "ngClass", 4, "ngIf"], ["role", "presentation", 1, "tab-header", 3, "ngClass", "hidden"], ["href", "javascript:void(0);", "role", "tab", 1, "tab-heading", 3, "click", "keydown", "tabindex"], [3, "ngClass", 4, "ngIf"], [3, "textContent"], [3, "class", "textContent", 4, "ngIf"], [3, "ngClass"], [1, "tab-content", 3, "ngClass"], [4, "ngIf"]], template: function TabsComponent_Template(rf, ctx) { if (rf & 1) {
739
744
  i0__namespace.ɵɵprojectionDef(_c1);
740
745
  i0__namespace.ɵɵelementStart(0, "ul", 0);
741
- i0__namespace.ɵɵtemplate(1, TabsComponent_li_1_Template, 5, 13, "li", 1);
746
+ i0__namespace.ɵɵtemplate(1, TabsComponent_li_1_Template, 5, 14, "li", 1);
742
747
  i0__namespace.ɵɵelementEnd();
743
748
  i0__namespace.ɵɵtemplate(2, TabsComponent_div_2_Template, 2, 4, "div", 2)(3, TabsComponent_div_3_Template, 3, 5, "div", 2);
744
749
  } if (rf & 2) {
@@ -755,7 +760,7 @@
755
760
  type: i0.Component,
756
761
  args: [{ selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
757
762
  i2.provideAsWidgetRef(TabsComponent)
758
- ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a class=\"tab-heading\" href=\"javascript:void(0);\" [attr.aria-label]=\"pane.title\" [attr.title]=\"pane.title\" [tabindex]=\"pane.isActive ? '0' : '-1'\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n" }]
763
+ ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a class=\"tab-heading\" href=\"javascript:void(0);\" [attr.icon-position]=\"iconposition\" [attr.aria-label]=\"pane.title\" [attr.title]=\"pane.title\" [tabindex]=\"pane.isActive ? '0' : '-1'\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n" }]
759
764
  }], () => [{ type: i0__namespace.Injector }, { type: i1__namespace.DynamicComponentRefProvider }, { type: undefined, decorators: [{
760
765
  type: i0.Attribute,
761
766
  args: ['transition']
@@ -767,7 +772,10 @@
767
772
  args: ['EXPLICIT_CONTEXT']
768
773
  }, {
769
774
  type: i0.Optional
770
- }] }], { panes: [{
775
+ }] }], { iconposition: [{
776
+ type: i0.HostBinding,
777
+ args: ['attr.icon-position']
778
+ }], panes: [{
771
779
  type: i0.ContentChildren,
772
780
  args: [TabPaneComponent]
773
781
  }] }); })();
@@ -1,4 +1,4 @@
1
- import { Attribute, Component, ContentChildren, Inject, Injector, Optional, QueryList } from '@angular/core';
1
+ import { Attribute, Component, ContentChildren, HostBinding, Inject, Injector, Optional, QueryList } from '@angular/core';
2
2
  import { addClass, appendNode, DynamicComponentRefProvider, noop, removeClass, StatePersistence } from '@wm/core';
3
3
  import { APPLY_STYLES_TYPE, provideAsWidgetRef, styler, StylableComponent, createArrayFrom } from '@wm/components/base';
4
4
  import { TabsAnimator } from './tabs.animator';
@@ -39,11 +39,12 @@ function TabsComponent_li_1_Template(rf, ctx) { if (rf & 1) {
39
39
  i0.ɵɵelementEnd()();
40
40
  } if (rf & 2) {
41
41
  const pane_r3 = ctx.$implicit;
42
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(10, _c4, pane_r3.isActive, pane_r3.disabled))("hidden", !pane_r3.show);
42
+ const ctx_r4 = i0.ɵɵnextContext();
43
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(11, _c4, pane_r3.isActive, pane_r3.disabled))("hidden", !pane_r3.show);
43
44
  i0.ɵɵattribute("data-paneid", pane_r3.widgetId);
44
45
  i0.ɵɵadvance();
45
46
  i0.ɵɵproperty("tabindex", pane_r3.isActive ? "0" : "-1");
46
- i0.ɵɵattribute("aria-label", pane_r3.title)("title", pane_r3.title)("aria-selected", pane_r3.isActive);
47
+ i0.ɵɵattribute("icon-position", ctx_r4.iconposition)("aria-label", pane_r3.title)("title", pane_r3.title)("aria-selected", pane_r3.isActive);
47
48
  i0.ɵɵadvance();
48
49
  i0.ɵɵproperty("ngIf", pane_r3.paneicon);
49
50
  i0.ɵɵadvance();
@@ -90,6 +91,7 @@ export class TabsComponent extends StylableComponent {
90
91
  // handle to the promise resolver
91
92
  let resolveFn = noop;
92
93
  super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));
94
+ this.iconposition = '';
93
95
  this.transition = _transition;
94
96
  this.tabsposition = _tabsPosition;
95
97
  this.statePersistence = statePersistence;
@@ -428,12 +430,14 @@ export class TabsComponent extends StylableComponent {
428
430
  } if (rf & 2) {
429
431
  let _t;
430
432
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panes = _t);
433
+ } }, hostVars: 1, hostBindings: function TabsComponent_HostBindings(rf, ctx) { if (rf & 2) {
434
+ i0.ɵɵattribute("icon-position", ctx.iconposition);
431
435
  } }, exportAs: ["wmTabs"], features: [i0.ɵɵProvidersFeature([
432
436
  provideAsWidgetRef(TabsComponent)
433
437
  ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c2, decls: 4, vars: 7, consts: [["role", "tablist", 1, "nav", "nav-tabs", 3, "ngClass"], ["class", "tab-header", "role", "presentation", 3, "ngClass", "hidden", 4, "ngFor", "ngForOf"], ["class", "tab-content", 3, "ngClass", 4, "ngIf"], ["role", "presentation", 1, "tab-header", 3, "ngClass", "hidden"], ["href", "javascript:void(0);", "role", "tab", 1, "tab-heading", 3, "click", "keydown", "tabindex"], [3, "ngClass", 4, "ngIf"], [3, "textContent"], [3, "class", "textContent", 4, "ngIf"], [3, "ngClass"], [1, "tab-content", 3, "ngClass"], [4, "ngIf"]], template: function TabsComponent_Template(rf, ctx) { if (rf & 1) {
434
438
  i0.ɵɵprojectionDef(_c1);
435
439
  i0.ɵɵelementStart(0, "ul", 0);
436
- i0.ɵɵtemplate(1, TabsComponent_li_1_Template, 5, 13, "li", 1);
440
+ i0.ɵɵtemplate(1, TabsComponent_li_1_Template, 5, 14, "li", 1);
437
441
  i0.ɵɵelementEnd();
438
442
  i0.ɵɵtemplate(2, TabsComponent_div_2_Template, 2, 4, "div", 2)(3, TabsComponent_div_3_Template, 3, 5, "div", 2);
439
443
  } if (rf & 2) {
@@ -450,7 +454,7 @@ export class TabsComponent extends StylableComponent {
450
454
  type: Component,
451
455
  args: [{ selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
452
456
  provideAsWidgetRef(TabsComponent)
453
- ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a class=\"tab-heading\" href=\"javascript:void(0);\" [attr.aria-label]=\"pane.title\" [attr.title]=\"pane.title\" [tabindex]=\"pane.isActive ? '0' : '-1'\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n" }]
457
+ ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a class=\"tab-heading\" href=\"javascript:void(0);\" [attr.icon-position]=\"iconposition\" [attr.aria-label]=\"pane.title\" [attr.title]=\"pane.title\" [tabindex]=\"pane.isActive ? '0' : '-1'\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n" }]
454
458
  }], () => [{ type: i0.Injector }, { type: i1.DynamicComponentRefProvider }, { type: undefined, decorators: [{
455
459
  type: Attribute,
456
460
  args: ['transition']
@@ -462,9 +466,12 @@ export class TabsComponent extends StylableComponent {
462
466
  args: ['EXPLICIT_CONTEXT']
463
467
  }, {
464
468
  type: Optional
465
- }] }], { panes: [{
469
+ }] }], { iconposition: [{
470
+ type: HostBinding,
471
+ args: ['attr.icon-position']
472
+ }], panes: [{
466
473
  type: ContentChildren,
467
474
  args: [TabPaneComponent]
468
475
  }] }); })();
469
476
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TabsComponent, { className: "TabsComponent", filePath: "tabs.component.ts", lineNumber: 51 }); })();
470
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY29udGFpbmVycy90YWJzL3NyYy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3RhYnMvc3JjL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxTQUFTLEVBQ1QsZUFBZSxFQUFFLE1BQU0sRUFDdkIsUUFBUSxFQUVSLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILFFBQVEsRUFDUixVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLElBQUksRUFDSixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ25CLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsZUFBZSxFQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7SUMzQm5FLHVCQUFxRTs7O0lBQWxFLHNFQUF1Qzs7O0lBRTFDLDBCQUE0Rzs7O0lBQTlFLGdFQUFzQztJQUFDLGdEQUErQjs7OztJQUo1RyxBQUZKLDZCQUM4QyxXQUUwRztJQUE5QixBQUFu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a0JBQWtCLGVBQWU7aUJBQ3BDOztzQkErQkksU0FBUzt1QkFBQyxZQUFZOztzQkFDdEIsU0FBUzt1QkFBQyxjQUFjOztzQkFFeEIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBUk4sS0FBSztrQkFBdkMsZUFBZTttQkFBQyxnQkFBZ0I7O2tGQXhCeEIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLCBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBhZGRDbGFzcyxcbiAgICBhcHBlbmROb2RlLFxuICAgIER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBub29wLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIFN0YXRlUGVyc2lzdGVuY2Vcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBUFBMWV9TVFlMRVNfVFlQRSxcbiAgICBJV2lkZ2V0Q29uZmlnLFxuICAgIHByb3ZpZGVBc1dpZGdldFJlZixcbiAgICBzdHlsZXIsXG4gICAgU3R5bGFibGVDb21wb25lbnQsXG4gICAgY3JlYXRlQXJyYXlGcm9tXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQgeyBUYWJzQW5pbWF0b3IgfSBmcm9tICcuL3RhYnMuYW5pbWF0b3InO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vdGFicy5wcm9wcyc7XG5pbXBvcnQgeyBUYWJQYW5lQ29tcG9uZW50IH0gZnJvbSAnLi90YWItcGFuZS90YWItcGFuZS5jb21wb25lbnQnO1xuaW1wb3J0IHtmaW5kLCBmaW5kSW5kZXgsIGZvckVhY2gsIGdldCwgaW5kZXhPZiwgaXNBcnJheSwgaXNFbXB0eX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC10YWJzIGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXRhYnMnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZGl2W3dtVGFic10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBleHBvcnRBczogJ3dtVGFicycsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihUYWJzQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIGRlZmF1bHRwYW5laW5kZXg6IG51bWJlcjtcbiAgICBwdWJsaWMgdHJhbnNpdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpYyB0YWJzcG9zaXRpb246IHN0cmluZztcbiAgICBwdWJsaWMgc3RhdGVoYW5kbGVyOiBhbnk7XG4gICAgcHJpdmF0ZSBzdGF0ZVBlcnNpc3RlbmNlOiBTdGF0ZVBlcnNpc3RlbmNlO1xuXG4gICAgcHVibGljIHZlcnRpY2FsOiBib29sZWFuO1xuICAgIHB1YmxpYyBqdXN0aWZpZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBhY3RpdmVUYWI6IFRhYlBhbmVDb21wb25lbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9taXNlUmVzb2x2ZXJGbjogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSB0YWJzQW5pbWF0b3I6IFRhYnNBbmltYXRvcjtcbiAgICBwcml2YXRlIF9vbGRQYW5lSW5kZXg6IG51bWJlcjtcbiAgICBwcml2YXRlIGlzUGFnZUxvYWRDYWxsOiBib29sZWFuO1xuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFByb3ZpZGVyO1xuICAgIHByaXZhdGUgX2R5bmFtaWNDb250ZXh0O1xuICAgIHByaXZhdGUgZHluYW1pY1BhbmVJbmRleDtcbiAgICBwdWJsaWMgZHluYW1pY1RhYnM7XG4gICAgcHVibGljIGZpZWxkRGVmcztcbiAgICBwdWJsaWMgdHlwZTtcbiAgICBwdWJsaWMgbm9kYXRhbWVzc2FnZTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oVGFiUGFuZUNvbXBvbmVudCkgcGFuZXM6IFF1ZXJ5TGlzdDxUYWJQYW5lQ29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICAgICAgQEF0dHJpYnV0ZSgndHJhbnNpdGlvbicpIF90cmFuc2l0aW9uOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3RhYnNwb3NpdGlvbicpIF90YWJzUG9zaXRpb246IHN0cmluZyxcbiAgICAgICAgc3RhdGVQZXJzaXN0ZW5jZTogU3RhdGVQZXJzaXN0ZW5jZSxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIC8vIGhhbmRsZSB0byB0aGUgcHJvbWlzZSByZXNvbHZlclxuICAgICAgICBsZXQgcmVzb2x2ZUZuOiBGdW5jdGlvbiA9IG5vb3A7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0LCBuZXcgUHJvbWlzZShyZXMgPT4gcmVzb2x2ZUZuID0gcmVzKSk7XG5cbiAgICAgICAgdGhpcy50cmFuc2l0aW9uID0gX3RyYW5zaXRpb247XG4gICAgICAgIHRoaXMudGFic3Bvc2l0aW9uID0gX3RhYnNQb3NpdGlvbjtcbiAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlID0gc3RhdGVQZXJzaXN0ZW5jZTtcbiAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIgPSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhYnMgPSBbXTtcbiAgICAgICAgdGhpcy5keW5hbWljUGFuZUluZGV4ID0gMDtcblxuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuID0gcmVzb2x2ZUZuO1xuXG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLkNPTlRBSU5FUik7XG5cbiAgICB9XG5cbiAgICBhbmltYXRlSW4gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHRhYkhlYWRlciA9ICQoZWxlbWVudCk7XG4gICAgICAgIC8vIHdoZW4gdGhlIGFuaW1hdGlvbiBpcyBub3QgcHJlc2VudCB0b2dnbGUgdGhlIGFjdGl2ZSBjbGFzcy5cbiAgICAgICAgdGFiSGVhZGVyLnNpYmxpbmdzKCcuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICB0YWJIZWFkZXIuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuXG4gICAgICAgIGNvbnN0IHVsID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3VsLm5hdi5uYXYtdGFicycpO1xuXG4gICAgICAgIC8vIG1vdmUgdGhlIHRhYmhlYWRlciBpbnRvIHRoZSB2aWV3cG9ydFxuICAgICAgICBjb25zdCAkcHJldkhlYWRlckVsZSA9IHRhYkhlYWRlci5wcmV2KCk7XG4gICAgICAgIGlmICgkcHJldkhlYWRlckVsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHVsLnNjcm9sbExlZnQgPSAkcHJldkhlYWRlckVsZVswXS5vZmZzZXRMZWZ0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdWwuc2Nyb2xsTGVmdCA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHJlZ2lzdGVyIHRoZSBkeW5hbWljIHBhbmVzLlxuICAgICAqIEFmdGVyIGFsbCBwYW5lcyBhcmUgaW5pdGlhbHplZCwgdXBkYXRlIHRoZSBxdWVyeWxpc3QgbWFudWFsbHkgYmFzZWQgb24gaW5kZXguXG4gICAgICogQHBhcmFtIHBhbmVSZWYgLSByZWZyZW5jZSBvZiB0aGUgdGFicGFuZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlckR5bmFtaWNUYWIocGFuZVJlZikge1xuICAgICAgICB0aGlzLmR5bmFtaWNUYWJzLnB1c2gocGFuZVJlZik7XG4gICAgICAgIGNvbnN0IGlzTGFzdFBhbmUgPSAgdGhpcy5keW5hbWljVGFicy5sZW5ndGggPT09IHRoaXMuZHluYW1pY1BhbmVJbmRleDtcbiAgICAgICAgaWYgKGlzTGFzdFBhbmUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5keW5hbWljVGFicy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BhbmVSZWYgPSBmaW5kKHRoaXMuZHluYW1pY1RhYnMsIHBhbmUgPT4gcGFuZS5keW5hbWljUGFuZUluZGV4ID09PSBpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1BhbmVBbHJlYWR5RXhpc3QgPSBmaW5kKHRoaXMucGFuZXMudG9BcnJheSgpLCBuZXdQYW5lUmVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUGFuZUFscmVhZHlFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVzLnJlc2V0KFsuLi50aGlzLnBhbmVzLnRvQXJyYXkoKSwgbmV3UGFuZVJlZl0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3UGFuZVJlZi5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhbmVSZWYuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAyMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byBhZGQgdGhlIHRhYnBhbmUgZHluYW1pY2FsbHlcbiAgICAgKiBAcGFyYW0gdGFicGFuZXMgLSBsaXN0IG9mIHRhYnBhbmVzXG4gICAgICovXG4gICAgcHVibGljIGFkZFBhbmUodGFicGFuZXMpIHtcbiAgICAgICAgaWYgKCFpc0FycmF5KHRhYnBhbmVzKSkge1xuICAgICAgICAgICAgdGFicGFuZXMgPSBbdGFicGFuZXNdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhbmVOYW1lc0xpc3QgPSBbXTtcbiAgICAgICAgZm9yRWFjaCh0YWJwYW5lcywgKHBhbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1BhbmVBbHJlYWR5Q3JlYXRlZCA9IGZpbmQodGhpcy5wYW5lcy50b0FycmF5KCksIHtuYW1lOiBwYW5lLm5hbWV9KTtcbiAgICAgICAgICAgIGNvbnN0IGlzUGFuZU5hbWVFeGlzdCA9IGluZGV4T2YocGFuZU5hbWVzTGlzdCwgcGFuZS5uYW1lKTtcbiAgICAgICAgICAgIC8vIElmIHVzZXIgdHJpZXMgdG8gYWRkIHRhYnBhbmUgd2l0aCB0aGUgc2FtZSBuYW1lIHdoaWNoIGlzIGFscmVhZHkgZXhpc3RzIHRoZW4gZG8gbm90IGNyZWF0ZSB0aGUgcGFuZVxuICAgICAgICAgICAgaWYgKGlzUGFuZUFscmVhZHlDcmVhdGVkIHx8IGlzUGFuZU5hbWVFeGlzdCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFRoZSB0YWIgcGFuZSB3aXRoIG5hbWUgJHtwYW5lLm5hbWV9IGFscmVhZHkgZXhpc3RzYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFyYW1NYXJrdXAgPSAnJztcbiAgICAgICAgICAgIGxldCBwcm9wc1RtcGwgPSAnJztcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1BhbmVJbmRleCsrO1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHBhbmUubmFtZSA/IHBhbmUubmFtZSA6IGB0YWJwYW5lJHt0aGlzLnBhbmVzLnRvQXJyYXkoKS5sZW5ndGggKyAoaW5kZXggKyAxKX1gO1xuICAgICAgICAgICAgcGFuZU5hbWVzTGlzdC5wdXNoKG5hbWUpO1xuICAgICAgICAgICAgY29uc3QgcGFydGlhbFBhcmFtcyA9IGdldChwYW5lLCAncGFyYW1zJyk7XG5cbiAgICAgICAgICAgIGZvckVhY2gocGFuZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAncGFyYW1zJykge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1RtcGwgPSBgJHtwcm9wc1RtcGx9ICR7a2V5fT1cIiR7dmFsdWV9XCJgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3JFYWNoKHBhcnRpYWxQYXJhbXMsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1NYXJrdXAgPSBgJHtwYXJhbU1hcmt1cH0gPHdtLXBhcmFtIG5hbWU9XCIke2tleX1cIiB2YWx1ZT1cIiR7dmFsdWV9XCI+PC93bS1wYXJhbT5gO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBtYXJrdXAgPSBgPHdtLXRhYnBhbmUgZHluYW1pY1BhbmVJbmRleD1cIiR7dGhpcy5keW5hbWljUGFuZUluZGV4IC0gMX1cIiBpc2R5bmFtaWM9XCJ0cnVlXCIgbmFtZT1cIiR7bmFtZX1cIiAke3Byb3BzVG1wbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJhbU1hcmt1cH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvd20tdGFicGFuZT5gO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2R5bmFtaWNDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRleHQgPSBPYmplY3QuY3JlYXRlKHRoaXMudmlld1BhcmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRleHRbdGhpcy5nZXRBdHRyKCd3bVRhYicpXSA9IHRoaXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudFByb3ZpZGVyLmFkZENvbXBvbmVudCh0aGlzLmdldE5hdGl2ZUVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcudGFiLWNvbnRlbnQnKSwgbWFya3VwLCB0aGlzLl9keW5hbWljQ29udGV4dCwge2luajogdGhpcy5pbmp9KTtcblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhbmVOYW1lc0xpc3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdG8gcmVtb3ZlIHRoZSB0YWJwYW5lXG4gICAgICogQHBhcmFtIHBhbmVJbmRleCAtIGluZGV4IG9mIHRoZSBwYW5lXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVBhbmUocGFuZU5hbWUpIHtcbiAgICAgICAgY29uc3QgcGFuZVJlZiA9IHRoaXMuZ2V0UGFuZVJlZkJ5TmFtZShwYW5lTmFtZSk7XG4gICAgICAgIGlmIChwYW5lUmVmKSB7XG4gICAgICAgICAgICBwYW5lUmVmLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFiUGFuZSBjaGlsZHJlbiBjb21wb25lbnRzIGludm9rZSB0aGlzIG1ldGhvZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwYXJlbnRcbiAgICAgKiBpZiB0aGUgZXZ0IGFyZ3VtZW50IGlzIGRlZmluZWQgb24tY2hhbmdlIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbm90aWZ5Q2hhbmdlKHBhbmVSZWY6IFRhYlBhbmVDb21wb25lbnQsIGV2dDogRXZlbnQsIGlzS2V5Qm9hcmRFdmVudDogYm9vbGVhbikge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RhYmxlVGFiKHBhbmVSZWYpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaGVhZGVyRWxlbWVudDtcbiAgICAgICAgLy8gaW52b2tlIGRlc2VsZWN0IGV2ZW50IGNhbGxiYWNrIG9uIHRoZSBwcmVzZXQgYWN0aXZlIHRhYlxuICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5hY3RpdmVUYWIpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYi5kZXNlbGVjdCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHBhbmVSZWYuZ2V0V2lkZ2V0KCk7XG4gICAgICAgIGNvbnN0IG5ld1BhbmVJbmRleCA9IHRoaXMuZ2V0UGFuZUluZGV4QnlSZWYocGFuZVJlZik7XG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuY29tcHV0ZU1vZGUodGhpcy5zdGF0ZWhhbmRsZXIpO1xuICAgICAgICBpZiAoIXRoaXMuaXNQYWdlTG9hZENhbGwgJiYgbW9kZSAmJiBtb2RlLnRvTG93ZXJDYXNlKCkgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLnNldFdpZGdldFN0YXRlKHRoaXMsIHRoaXMuYWN0aXZlVGFiLm5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0cGFuZWluZGV4ID0gdGhpcy5nZXRQYW5lSW5kZXhCeVJlZihwYW5lUmVmKTtcbiAgICAgICAgICAgIHRoaXMuaXNQYWdlTG9hZENhbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGludm9rZSBzZWxlY3QgY2FsbGJhY2sgb24gdGhlIHNlbGVjdGVkIHRhYlxuICAgICAgICBwYW5lUmVmLmludm9rZU9uU2VsZWN0Q2FsbGJhY2soZXZ0KTtcblxuICAgICAgICAvLyBpbnZva2UgY2hhbmdlIGNhbGxiYWNrIGlmIHRoZSBldnQgaXMgcHJlc2VudCwgc2VsZWN0IGEgdGFiIHByb2dyYW1tYXRpY2FsbHkgd2lsbCBub3QgaGF2ZSB0aGUgZXZlbnRcbiAgICAgICAgaWYgKGV2dCkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjaGFuZ2UnLCB7XG4gICAgICAgICAgICAgICAgJGV2ZW50OiBldnQsXG4gICAgICAgICAgICAgICAgbmV3UGFuZUluZGV4OiBuZXdQYW5lSW5kZXgsXG4gICAgICAgICAgICAgICAgb2xkUGFuZUluZGV4OiB0aGlzLl9vbGRQYW5lSW5kZXggfHwgMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb2xkUGFuZUluZGV4ID0gbmV3UGFuZUluZGV4O1xuXG4gICAgICAgIGlmIChldnQpIHtcbiAgICAgICAgICAgIGhlYWRlckVsZW1lbnQgPSAkKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJ2xpLnRhYi1oZWFkZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWV2dCB8fCAhaGVhZGVyRWxlbWVudCB8fCAhaGVhZGVyRWxlbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGhlYWRlckVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgbGlbZGF0YS1wYW5laWQ9JHtwYW5lUmVmLndpZGdldElkfV1gKTtcbiAgICAgICAgICAgIGNvbnN0IGluc2lkZVRhYnMgPSAhISQoaGVhZGVyRWxlbWVudCkuY2xvc2VzdCgnLmFwcC10YWJzJylcbiAgICAgICAgICAgICAgICAucGFyZW50KCkuY2xvc2VzdCgnLmFwcC10YWJzJykubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKCFpbnNpZGVUYWJzICYmIGlzS2V5Qm9hcmRFdmVudCkge1xuICAgICAgICAgICAgICAgICQoaGVhZGVyRWxlbWVudCkuY2hpbGRyZW4oKS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYW5pbWF0ZUluKGhlYWRlckVsZW1lbnQpO1xuXG4gICAgICAgIC8vIHRoaXMuc2V0VGFic0xlZnRQb3NpdGlvbih0aGlzLmdldFBhbmVJbmRleEJ5UmVmKHRoaXMuYWN0aXZlVGFiKSwgdGhpcy5wYW5lcy5sZW5ndGgpO1xuICAgICAgICBpZiAodGhpcy5jYW5TbGlkZSgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudGFic0FuaW1hdG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJzQW5pbWF0b3IgPSBuZXcgVGFic0FuaW1hdG9yKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFic0FuaW1hdG9yLnNldEdlc3R1cmVzRW5hYmxlZCh0aGlzLmNhblNsaWRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50YWJzQW5pbWF0b3IudHJhbnNpdGlvblRhYkludG9WaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ29Ub1RhYih0YWJJbmRleCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkUGFuZUluZGV4KHRhYkluZGV4IC0gMSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYiA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgodGFiSW5kZXggLSAxKTtcbiAgICAgICAgICAgIHRhYi5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGFuZUluZGV4QnlSZWYocGFuZVJlZjogVGFiUGFuZUNvbXBvbmVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhbmVzLnRvQXJyYXkoKS5pbmRleE9mKHBhbmVSZWYpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgdGhlIGFjdGl2ZSB0YWIgaW5kZXggZnJvbSB0YWJzLlxuICAgIHB1YmxpYyBnZXRBY3RpdmVUYWJJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZmluZEluZGV4KHRoaXMucGFuZXMudG9BcnJheSgpLCB7aXNBY3RpdmU6IHRydWV9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWRQYW5lSW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnBhbmVzLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lUmVmQnlJbmRleChpbmRleDogbnVtYmVyKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhbmVzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lUmVmQnlOYW1lKG5hbWU6IHN0cmluZyk6IFRhYlBhbmVDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gZmluZCh0aGlzLnBhbmVzLnRvQXJyYXkoKSwge25hbWU6IG5hbWV9KTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm5zIGZhbHNlIGlmIHRoZSBwYW5lIGlzIGhpZGRlbiBvciBkaXNhYmxlZFxuICAgIHByaXZhdGUgaXNTZWxlY3RhYmxlVGFiKHBhbmVSZWY6IFRhYlBhbmVDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHBhbmVSZWYuc2hvdyAmJiAhcGFuZVJlZi5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhblNsaWRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uID09PSAnc2xpZGUnICYmICF0aGlzLnZlcnRpY2FsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0YWJsZVRhYkFmdGVySW5kZXgoaW5kZXg6IG51bWJlcik6IFRhYlBhbmVDb21wb25lbnQge1xuICAgICAgICBmb3IgKGxldCBpID0gaW5kZXggKyAxOyBpIDwgdGhpcy5wYW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcGFuZSA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgoaSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFuZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMucGFuZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgcGFuZSA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgoMCk7XG4gICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlVGFiKHBhbmUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhbmU7XG4gICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RhYmxlVGFiQmVmb3JlSW5kZXgoaW5kZXg6IG51bWJlcik6IFRhYlBhbmVDb21wb25lbnQge1xuICAgICAgICBmb3IgKGxldCBpID0gaW5kZXggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgcGFuZSA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgoaSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFuZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhbmUgPSB0aGlzLmdldFBhbmVSZWZCeUluZGV4KHRoaXMucGFuZXMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFuZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNlbGVjdCBuZXh0IHRhYiByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBhY3RpdmUgdGFiXG4gICAgcHVibGljIG5leHQoJGV2ZW50PzogRXZlbnQsIGlzS2V5Qm9hcmRFdmVudD86IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgcGFuZSA9IHRoaXMuZ2V0U2VsZWN0YWJsZVRhYkFmdGVySW5kZXgodGhpcy5nZXRBY3RpdmVUYWJJbmRleCgpKTtcbiAgICAgICAgaWYgKHBhbmUpIHtcbiAgICAgICAgICAgIHBhbmUuc2VsZWN0KCRldmVudCwgaXNLZXlCb2FyZEV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNlbGVjdCBwcmV2IHRhYiByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBhY3RpdmUgdGFiXG4gICAgcHVibGljIHByZXYoJGV2ZW50PzogRXZlbnQsIGlzS2V5Qm9hcmRFdmVudD86IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgcGFuZSA9IHRoaXMuZ2V0U2VsZWN0YWJsZVRhYkJlZm9yZUluZGV4KHRoaXMuZ2V0QWN0aXZlVGFiSW5kZXgoKSk7XG4gICAgICAgIGlmIChwYW5lKSB7XG4gICAgICAgICAgICBwYW5lLnNlbGVjdCgkZXZlbnQsIGlzS2V5Qm9hcmRFdmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGlzIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY29tcG9uZW50IGFuZCBvbiBkZWZhdWx0cGFuZWluZGV4IHByb3BlcnR5IGNoYW5nZSxcbiAgICAgKiBpZiB0aGUgcHJvdmlkZWQgZGVmYXVsdHBhbmVpbmRleCBpcyBub3QgdmFsaWQsIGZpbmQgdGhlIGZpcnN0IHBhbmUgaW5kZXggd2hpY2ggY2FuIGJlIHNob3duIGFuZCBzZWxlY3QgaXRcbiAgICAgKi9cbiAgICBwcml2YXRlIHNlbGVjdERlZmF1bHRQYW5lQnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkUGFuZUluZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhbmVSZWYgPSB0aGlzLmdldFBhbmVSZWZCeUluZGV4KGluZGV4KTtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lUmVmKSkge1xuICAgICAgICAgICAgcGFuZVJlZiA9IHRoaXMuZ2V0U2VsZWN0YWJsZVRhYkFmdGVySW5kZXgoMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhbmVSZWYpIHtcbiAgICAgICAgICAgIHBhbmVSZWYuc2VsZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgdGhlIHBvc3Rpb24gb2YgdGFiIGhlYWRlclxuICAgIHByaXZhdGUgc2V0VGFic1Bvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCB1bCA9IHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXTtcblxuICAgICAgICB0aGlzLnZlcnRpY2FsID0gKHRoaXMudGFic3Bvc2l0aW9uID09PSAnbGVmdCcgfHwgdGhpcy50YWJzcG9zaXRpb24gPT09ICdyaWdodCcpO1xuXG4gICAgICAgIHJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2ludmVydGVkJyk7XG4gICAgICAgIGlmICh0aGlzLnRhYnNwb3NpdGlvbiA9PT0gJ2JvdHRvbScgfHwgdGhpcy50YWJzcG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIGFwcGVuZE5vZGUodWwgYXMgSFRNTEVsZW1lbnQsIHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdpbnZlcnRlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkRhdGFDaGFuZ2UobmV3VmFsKSB7XG4gICAgICAgIHRoaXMuZmllbGREZWZzID0gY3JlYXRlQXJyYXlGcm9tKG5ld1ZhbCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWxlY3REZWZhdWx0UGFuZUJ5SW5kZXgodGhpcy5kZWZhdWx0cGFuZWluZGV4IHx8IDApKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdikge1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdkZWZhdWx0cGFuZWluZGV4Jykge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0cGFuZWluZGV4ID0gbnY7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZGF0YXNldCcpIHtcbiAgICAgICAgICAgIHRoaXMub25EYXRhQ2hhbmdlKG52KTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdzdGF0ZWhhbmRsZXInKSB7XG4gICAgICAgICAgICB0aGlzLmlzUGFnZUxvYWRDYWxsID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHdpZGdldFN0YXRlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmdldFdpZGdldFN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgaWYgKG52ICE9PSAnbm9uZScgJiYgd2lkZ2V0U3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lVG9TZWxlY3Q6IGFueSA9IHRoaXMucGFuZXMuZmlsdGVyKGZ1bmN0aW9uKHBhbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpZGdldFN0YXRlID09PSBwYW5lLm5hbWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYW5lVG9TZWxlY3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVGFiIHBhbmUgbmFtZSAnICsgd2lkZ2V0U3RhdGUgKyAnIGluIFN0YXRlIGlzIGluY29ycmVjdC4gRmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0IHBhbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERlZmF1bHRQYW5lQnlJbmRleCh0aGlzLmRlZmF1bHRwYW5laW5kZXggfHwgMCksIDIwKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0UGFuZUluZGV4QnlSZWYocGFuZVRvU2VsZWN0WzBdKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERlZmF1bHRQYW5lQnlJbmRleChpbmRleCksIDIwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWxlY3REZWZhdWx0UGFuZUJ5SW5kZXgodGhpcy5kZWZhdWx0cGFuZWluZGV4IHx8IDApLCAyMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyVGFic1Njcm9sbCgpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCAkdWwgPSB0aGlzLiRlbGVtZW50LmZpbmQoJz4gdWwnKTtcbiAgICAgICAgICAgIGxldCAkbGlQb3NpdGlvbjtcblxuICAgICAgICAgICAgY29uc3QgICRsaSA9ICR1bC5jaGlsZHJlbigpO1xuICAgICAgICAgICAgJGxpUG9zaXRpb24gPSAkbGkubGFzdCgpLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICBpZiAoJGxpUG9zaXRpb24gJiYgKCRsaVBvc2l0aW9uLmxlZnQgPiAkdWwud2lkdGgoKSkpIHtcbiAgICAgICAgICAgICAgICAkdWwub24oJ21vdXNld2hlZWwnLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gJHVsWzBdLnNjcm9sbExlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBfZGVsdGEgPSAtMSAqIGUub3JpZ2luYWxFdmVudC53aGVlbERlbHRhO1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICR1bC5hbmltYXRlKHtzY3JvbGxMZWZ0OiBsZWZ0ICsgX2RlbHRhfSwgeydkdXJhdGlvbic6IDEwfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbmtleWRvd24oZXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLnByZXYobnVsbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMubmV4dChudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZXJGbigpO1xuICAgICAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcbiAgICAgICAgdGhpcy5zZXRUYWJzUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5wYW5lcy5jaGFuZ2VzLnN1YnNjcmliZSggc2xpZGVzID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KHRoaXMuZGVmYXVsdHBhbmVpbmRleCB8fCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclRhYnNTY3JvbGwoKTtcbiAgICB9XG59XG4iLCI8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiBbbmdDbGFzc109XCJ7J25hdi1zdGFja2VkJzogdmVydGljYWwsICduYXYtanVzdGlmaWVkJzoganVzdGlmaWVkfVwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgPGxpIGNsYXNzPVwidGFiLWhlYWRlclwiICpuZ0Zvcj1cImxldCBwYW5lIG9mIHBhbmVzOyBsZXQgaT1pbmRleDtcIiBbYXR0ci5kYXRhLXBhbmVpZF09XCJwYW5lLndpZGdldElkXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBwYW5lLmlzQWN0aXZlLCAnZGlzYWJsZWQnOiBwYW5lLmRpc2FibGVkfVwiXG4gICAgICAgIFtoaWRkZW5dPVwiIXBhbmUuc2hvd1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0YWItaGVhZGluZ1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJwYW5lLnRpdGxlXCIgW2F0dHIudGl0bGVdPVwicGFuZS50aXRsZVwiIFt0YWJpbmRleF09XCJwYW5lLmlzQWN0aXZlID8gJzAnIDogJy0xJ1wiXG4gICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwicGFuZS5pc0FjdGl2ZVwiIHJvbGU9XCJ0YWJcIiAoY2xpY2spPVwicGFuZS5zZWxlY3QoJGV2ZW50KTsgcGFuZS50YWJwYW5lSGVhZGVyQ2xpY2soJGV2ZW50LCBpKTtcIiAoa2V5ZG93bik9XCJvbmtleWRvd24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIlsnYXBwLWljb24nLCBwYW5lLnBhbmVpY29uXVwiICpuZ0lmPVwicGFuZS5wYW5laWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicGFuZS50aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmUuYmFkZ2V2YWx1ZVwiIGNsYXNzPVwibGFiZWwgbGFiZWwte3twYW5lLmJhZGdldHlwZX19XCIgW3RleHRDb250ZW50XT1cInBhbmUuYmFkZ2V2YWx1ZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG48L3VsPlxuPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgKm5nSWY9XCJ0eXBlICE9PSAnZHluYW1pYydcIiBbbmdDbGFzc109XCJ7J3RhYi1zdGFja2VkJzogdmVydGljYWwsICd0YWItanVzdGlmaWVkJzoganVzdGlmaWVkfVwiPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwiZGl2W3dtVGFiUGFuZV1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwidHlwZSA9PT0gJ2R5bmFtaWMnXCIgW25nQ2xhc3NdPVwieyd0YWItc3RhY2tlZCc6IHZlcnRpY2FsLCAndGFiLWp1c3RpZmllZCc6IGp1c3RpZmllZH1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGREZWZzICYmICFmaWVsZERlZnMubGVuZ3RoXCI+e3tub2RhdGFtZXNzYWdlfX08L2Rpdj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkaXZbd21SZXBlYXRUZW1wbGF0ZV1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY29udGFpbmVycy90YWJzL3NyYy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3RhYnMvc3JjL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxTQUFTLEVBQ1QsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQ3BDLFFBQVEsRUFFUixRQUFRLEVBQ1IsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxRQUFRLEVBQ1IsVUFBVSxFQUNWLDJCQUEyQixFQUMzQixJQUFJLEVBQ0osV0FBVyxFQUNYLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQ0gsaUJBQWlCLEVBRWpCLGtCQUFrQixFQUNsQixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7O0lDM0JuRSx1QkFBcUU7OztJQUFsRSxzRUFBdUM7OztJQUUxQywwQkFBNEc7OztJQUE5RSxnRUFBc0M7SUFBQyxnREFBK0I7Ozs7SUFKNUcsQUFGSiw2QkFDOEMsV0FFMEc7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UnpCLFNBQVM7MkJBQ0ksYUFBYSxZQUViLFFBQVEsYUFDUDtvQkFDUCxrQkFBa0IsZUFBZTtpQkFDcEM7O3NCQWlDSSxTQUFTO3VCQUFDLFlBQVk7O3NCQUN0QixTQUFTO3VCQUFDLGNBQWM7O3NCQUV4QixNQUFNO3VCQUFDLGtCQUFrQjs7c0JBQUcsUUFBUTtxQkFWTixZQUFZO2tCQUE5QyxXQUFXO21CQUFDLG9CQUFvQjtZQUVFLEtBQUs7a0JBQXZDLGVBQWU7bUJBQUMsZ0JBQWdCOztrRkExQnhCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbiwgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIGFkZENsYXNzLFxuICAgIGFwcGVuZE5vZGUsXG4gICAgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIG5vb3AsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgU3RhdGVQZXJzaXN0ZW5jZVxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFQUExZX1NUWUxFU19UWVBFLFxuICAgIElXaWRnZXRDb25maWcsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIHN0eWxlcixcbiAgICBTdHlsYWJsZUNvbXBvbmVudCxcbiAgICBjcmVhdGVBcnJheUZyb21cbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IFRhYnNBbmltYXRvciB9IGZyb20gJy4vdGFicy5hbmltYXRvcic7XG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi90YWJzLnByb3BzJztcbmltcG9ydCB7IFRhYlBhbmVDb21wb25lbnQgfSBmcm9tICcuL3RhYi1wYW5lL3RhYi1wYW5lLmNvbXBvbmVudCc7XG5pbXBvcnQge2ZpbmQsIGZpbmRJbmRleCwgZm9yRWFjaCwgZ2V0LCBpbmRleE9mLCBpc0FycmF5LCBpc0VtcHR5fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLXRhYnMgY2xlYXJmaXgnO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tdGFicycsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbd21UYWJzXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGV4cG9ydEFzOiAnd21UYWJzJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRhYnNDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJzQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgZGVmYXVsdHBhbmVpbmRleDogbnVtYmVyO1xuICAgIHB1YmxpYyB0cmFuc2l0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIHRhYnNwb3NpdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBzdGF0ZWhhbmRsZXI6IGFueTtcbiAgICBwcml2YXRlIHN0YXRlUGVyc2lzdGVuY2U6IFN0YXRlUGVyc2lzdGVuY2U7XG5cbiAgICBwdWJsaWMgdmVydGljYWw6IGJvb2xlYW47XG4gICAgcHVibGljIGp1c3RpZmllZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIGFjdGl2ZVRhYjogVGFiUGFuZUNvbXBvbmVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb21pc2VSZXNvbHZlckZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIHRhYnNBbmltYXRvcjogVGFic0FuaW1hdG9yO1xuICAgIHByaXZhdGUgX29sZFBhbmVJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgaXNQYWdlTG9hZENhbGw6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgcHJpdmF0ZSBfZHluYW1pY0NvbnRleHQ7XG4gICAgcHJpdmF0ZSBkeW5hbWljUGFuZUluZGV4O1xuICAgIHB1YmxpYyBkeW5hbWljVGFicztcbiAgICBwdWJsaWMgZmllbGREZWZzO1xuICAgIHB1YmxpYyB0eXBlO1xuICAgIHB1YmxpYyBub2RhdGFtZXNzYWdlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmljb24tcG9zaXRpb24nKSBpY29ucG9zaXRpb246IHN0cmluZyA9ICcnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lQ29tcG9uZW50KSBwYW5lczogUXVlcnlMaXN0PFRhYlBhbmVDb21wb25lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgICAgICBAQXR0cmlidXRlKCd0cmFuc2l0aW9uJykgX3RyYW5zaXRpb246IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgndGFic3Bvc2l0aW9uJykgX3RhYnNQb3NpdGlvbjogc3RyaW5nLFxuICAgICAgICBzdGF0ZVBlcnNpc3RlbmNlOiBTdGF0ZVBlcnNpc3RlbmNlLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgLy8gaGFuZGxlIHRvIHRoZSBwcm9taXNlIHJlc29sdmVyXG4gICAgICAgIGxldCByZXNvbHZlRm46IEZ1bmN0aW9uID0gbm9vcDtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQsIG5ldyBQcm9taXNlKHJlcyA9PiByZXNvbHZlRm4gPSByZXMpKTtcblxuICAgICAgICB0aGlzLnRyYW5zaXRpb24gPSBfdHJhbnNpdGlvbjtcbiAgICAgICAgdGhpcy50YWJzcG9zaXRpb24gPSBfdGFic1Bvc2l0aW9uO1xuICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UgPSBzdGF0ZVBlcnNpc3RlbmNlO1xuICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRQcm92aWRlciA9IGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjtcbiAgICAgICAgdGhpcy5keW5hbWljVGFicyA9IFtdO1xuICAgICAgICB0aGlzLmR5bmFtaWNQYW5lSW5kZXggPSAwO1xuXG4gICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmVyRm4gPSByZXNvbHZlRm47XG5cbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuQ09OVEFJTkVSKTtcblxuICAgIH1cblxuICAgIGFuaW1hdGVJbiAoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdGFiSGVhZGVyID0gJChlbGVtZW50KTtcbiAgICAgICAgLy8gd2hlbiB0aGUgYW5pbWF0aW9uIGlzIG5vdCBwcmVzZW50IHRvZ2dsZSB0aGUgYWN0aXZlIGNsYXNzLlxuICAgICAgICB0YWJIZWFkZXIuc2libGluZ3MoJy5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIHRhYkhlYWRlci5hZGRDbGFzcygnYWN0aXZlJyk7XG5cbiAgICAgICAgY29uc3QgdWwgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigndWwubmF2Lm5hdi10YWJzJyk7XG5cbiAgICAgICAgLy8gbW92ZSB0aGUgdGFiaGVhZGVyIGludG8gdGhlIHZpZXdwb3J0XG4gICAgICAgIGNvbnN0ICRwcmV2SGVhZGVyRWxlID0gdGFiSGVhZGVyLnByZXYoKTtcbiAgICAgICAgaWYgKCRwcmV2SGVhZGVyRWxlLmxlbmd0aCkge1xuICAgICAgICAgICAgdWwuc2Nyb2xsTGVmdCA9ICRwcmV2SGVhZGVyRWxlWzBdLm9mZnNldExlZnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bC5zY3JvbGxMZWZ0ID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGR5bmFtaWMgcGFuZXMuXG4gICAgICogQWZ0ZXIgYWxsIHBhbmVzIGFyZSBpbml0aWFsemVkLCB1cGRhdGUgdGhlIHF1ZXJ5bGlzdCBtYW51YWxseSBiYXNlZCBvbiBpbmRleC5cbiAgICAgKiBAcGFyYW0gcGFuZVJlZiAtIHJlZnJlbmNlIG9mIHRoZSB0YWJwYW5lXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyRHluYW1pY1RhYihwYW5lUmVmKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhYnMucHVzaChwYW5lUmVmKTtcbiAgICAgICAgY29uc3QgaXNMYXN0UGFuZSA9ICB0aGlzLmR5bmFtaWNUYWJzLmxlbmd0aCA9PT0gdGhpcy5keW5hbWljUGFuZUluZGV4O1xuICAgICAgICBpZiAoaXNMYXN0UGFuZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmR5bmFtaWNUYWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UGFuZVJlZiA9IGZpbmQodGhpcy5keW5hbWljVGFicywgcGFuZSA9PiBwYW5lLmR5bmFtaWNQYW5lSW5kZXggPT09IGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUGFuZUFscmVhZHlFeGlzdCA9IGZpbmQodGhpcy5wYW5lcy50b0FycmF5KCksIG5ld1BhbmVSZWYpO1xuICAgICAgICAgICAgICAgIGlmICghaXNQYW5lQWxyZWFkeUV4aXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZXMucmVzZXQoWy4uLnRoaXMucGFuZXMudG9BcnJheSgpLCBuZXdQYW5lUmVmXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdQYW5lUmVmLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFuZVJlZi5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRvIGFkZCB0aGUgdGFicGFuZSBkeW5hbWljYWxseVxuICAgICAqIEBwYXJhbSB0YWJwYW5lcyAtIGxpc3Qgb2YgdGFicGFuZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkUGFuZSh0YWJwYW5lcykge1xuICAgICAgICBpZiAoIWlzQXJyYXkodGFicGFuZXMpKSB7XG4gICAgICAgICAgICB0YWJwYW5lcyA9IFt0YWJwYW5lc107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFuZU5hbWVzTGlzdCA9IFtdO1xuICAgICAgICBmb3JFYWNoKHRhYnBhbmVzLCAocGFuZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzUGFuZUFscmVhZHlDcmVhdGVkID0gZmluZCh0aGlzLnBhbmVzLnRvQXJyYXkoKSwge25hbWU6IHBhbmUubmFtZX0pO1xuICAgICAgICAgICAgY29uc3QgaXNQYW5lTmFtZUV4aXN0ID0gaW5kZXhPZihwYW5lTmFtZXNMaXN0LCBwYW5lLm5hbWUpO1xuICAgICAgICAgICAgLy8gSWYgdXNlciB0cmllcyB0byBhZGQgdGFicGFuZSB3aXRoIHRoZSBzYW1lIG5hbWUgd2hpY2ggaXMgYWxyZWFkeSBleGlzdHMgdGhlbiBkbyBub3QgY3JlYXRlIHRoZSBwYW5lXG4gICAgICAgICAgICBpZiAoaXNQYW5lQWxyZWFkeUNyZWF0ZWQgfHwgaXNQYW5lTmFtZUV4aXN0ID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVGhlIHRhYiBwYW5lIHdpdGggbmFtZSAke3BhbmUubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXJhbU1hcmt1cCA9ICcnO1xuICAgICAgICAgICAgbGV0IHByb3BzVG1wbCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5keW5hbWljUGFuZUluZGV4Kys7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gcGFuZS5uYW1lID8gcGFuZS5uYW1lIDogYHRhYnBhbmUke3RoaXMucGFuZXMudG9BcnJheSgpLmxlbmd0aCArIChpbmRleCArIDEpfWA7XG4gICAgICAgICAgICBwYW5lTmFtZXNMaXN0LnB1c2gobmFtZSk7XG4gICAgICAgICAgICBjb25zdCBwYXJ0aWFsUGFyYW1zID0gZ2V0KHBhbmUsICdwYXJhbXMnKTtcblxuICAgICAgICAgICAgZm9yRWFjaChwYW5lLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICdwYXJhbXMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzVG1wbCA9IGAke3Byb3BzVG1wbH0gJHtrZXl9PVwiJHt2YWx1ZX1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvckVhY2gocGFydGlhbFBhcmFtcywgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbU1hcmt1cCA9IGAke3BhcmFtTWFya3VwfSA8d20tcGFyYW0gbmFtZT1cIiR7a2V5fVwiIHZhbHVlPVwiJHt2YWx1ZX1cIj48L3dtLXBhcmFtPmA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG1hcmt1cCA9IGA8d20tdGFicGFuZSBkeW5hbWljUGFuZUluZGV4PVwiJHt0aGlzLmR5bmFtaWNQYW5lSW5kZXggLSAxfVwiIGlzZHluYW1pYz1cInRydWVcIiBuYW1lPVwiJHtuYW1lfVwiICR7cHJvcHNUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3BhcmFtTWFya3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC93bS10YWJwYW5lPmA7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fZHluYW1pY0NvbnRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dCA9IE9iamVjdC5jcmVhdGUodGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dFt0aGlzLmdldEF0dHIoJ3dtVGFiJyldID0gdGhpcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIuYWRkQ29tcG9uZW50KHRoaXMuZ2V0TmF0aXZlRWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy50YWItY29udGVudCcpLCBtYXJrdXAsIHRoaXMuX2R5bmFtaWNDb250ZXh0LCB7aW5qOiB0aGlzLmluan0pO1xuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGFuZU5hbWVzTGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byByZW1vdmUgdGhlIHRhYnBhbmVcbiAgICAgKiBAcGFyYW0gcGFuZUluZGV4IC0gaW5kZXggb2YgdGhlIHBhbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlUGFuZShwYW5lTmFtZSkge1xuICAgICAgICBjb25zdCBwYW5lUmVmID0gdGhpcy5nZXRQYW5lUmVmQnlOYW1lKHBhbmVOYW1lKTtcbiAgICAgICAgaWYgKHBhbmVSZWYpIHtcbiAgICAgICAgICAgIHBhbmVSZWYucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWJQYW5lIGNoaWxkcmVuIGNvbXBvbmVudHMgaW52b2tlIHRoaXMgbWV0aG9kIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBhcmVudFxuICAgICAqIGlmIHRoZSBldnQgYXJndW1lbnQgaXMgZGVmaW5lZCBvbi1jaGFuZ2UgY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyBub3RpZnlDaGFuZ2UocGFuZVJlZjogVGFiUGFuZUNvbXBvbmVudCwgZXZ0OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZVJlZikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJFbGVtZW50O1xuICAgICAgICAvLyBpbnZva2UgZGVzZWxlY3QgZXZlbnQgY2FsbGJhY2sgb24gdGhlIHByZXNldCBhY3RpdmUgdGFiXG4gICAgICAgIGlmICghaXNFbXB0eSh0aGlzLmFjdGl2ZVRhYikpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiLmRlc2VsZWN0KCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gcGFuZVJlZi5nZXRXaWRnZXQoKTtcbiAgICAgICAgY29uc3QgbmV3UGFuZUluZGV4ID0gdGhpcy5nZXRQYW5lSW5kZXhCeVJlZihwYW5lUmVmKTtcbiAgICAgICAgY29uc3QgbW9kZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5jb21wdXRlTW9kZSh0aGlzLnN0YXRlaGFuZGxlcik7XG4gICAgICAgIGlmICghdGhpcy5pc1BhZ2VMb2FkQ2FsbCAmJiBtb2RlICYmIG1vZGUudG9Mb3dlckNhc2UoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcywgdGhpcy5hY3RpdmVUYWIubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRwYW5laW5kZXggPSB0aGlzLmdldFBhbmVJbmRleEJ5UmVmKHBhbmVSZWYpO1xuICAgICAgICAgICAgdGhpcy5pc1BhZ2VMb2FkQ2FsbCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW52b2tlIHNlbGVjdCBjYWxsYmFjayBvbiB0aGUgc2VsZWN0ZWQgdGFiXG4gICAgICAgIHBhbmVSZWYuaW52b2tlT25TZWxlY3RDYWxsYmFjayhldnQpO1xuXG4gICAgICAgIC8vIGludm9rZSBjaGFuZ2UgY2FsbGJhY2sgaWYgdGhlIGV2dCBpcyBwcmVzZW50LCBzZWxlY3QgYSB0YWIgcHJvZ3JhbW1hdGljYWxseSB3aWxsIG5vdCBoYXZlIHRoZSBldmVudFxuICAgICAgICBpZiAoZXZ0KSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICAkZXZlbnQ6IGV2dCxcbiAgICAgICAgICAgICAgICBuZXdQYW5lSW5kZXg6IG5ld1BhbmVJbmRleCxcbiAgICAgICAgICAgICAgICBvbGRQYW5lSW5kZXg6IHRoaXMuX29sZFBhbmVJbmRleCB8fCAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vbGRQYW5lSW5kZXggPSBuZXdQYW5lSW5kZXg7XG5cbiAgICAgICAgaWYgKGV2dCkge1xuICAgICAgICAgICAgaGVhZGVyRWxlbWVudCA9ICQoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnbGkudGFiLWhlYWRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXZ0IHx8ICFoZWFkZXJFbGVtZW50IHx8ICFoZWFkZXJFbGVtZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgaGVhZGVyRWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBsaVtkYXRhLXBhbmVpZD0ke3BhbmVSZWYud2lkZ2V0SWR9XWApO1xuICAgICAgICAgICAgY29uc3QgaW5zaWRlVGFicyA9ICEhJChoZWFkZXJFbGVtZW50KS5jbG9zZXN0KCcuYXBwLXRhYnMnKVxuICAgICAgICAgICAgICAgIC5wYXJlbnQoKS5jbG9zZXN0KCcuYXBwLXRhYnMnKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoIWluc2lkZVRhYnMgJiYgaXNLZXlCb2FyZEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgJChoZWFkZXJFbGVtZW50KS5jaGlsZHJlbigpLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hbmltYXRlSW4oaGVhZGVyRWxlbWVudCk7XG5cbiAgICAgICAgLy8gdGhpcy5zZXRUYWJzTGVmdFBvc2l0aW9uKHRoaXMuZ2V0UGFuZUluZGV4QnlSZWYodGhpcy5hY3RpdmVUYWIpLCB0aGlzLnBhbmVzLmxlbmd0aCk7XG4gICAgICAgIGlmICh0aGlzLmNhblNsaWRlKCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy50YWJzQW5pbWF0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNBbmltYXRvciA9IG5ldyBUYWJzQW5pbWF0b3IodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJzQW5pbWF0b3Iuc2V0R2VzdHVyZXNFbmFibGVkKHRoaXMuY2FuU2xpZGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRhYnNBbmltYXRvci50cmFuc2l0aW9uVGFiSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnb1RvVGFiKHRhYkluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRQYW5lSW5kZXgodGFiSW5kZXggLSAxKSkge1xuICAgICAgICAgICAgY29uc3QgdGFiID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleCh0YWJJbmRleCAtIDEpO1xuICAgICAgICAgICAgdGFiLnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lSW5kZXhCeVJlZihwYW5lUmVmOiBUYWJQYW5lQ29tcG9uZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMudG9BcnJheSgpLmluZGV4T2YocGFuZVJlZik7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgYWN0aXZlIHRhYiBpbmRleCBmcm9tIHRhYnMuXG4gICAgcHVibGljIGdldEFjdGl2ZVRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBmaW5kSW5kZXgodGhpcy5wYW5lcy50b0FycmF5KCksIHtpc0FjdGl2ZTogdHJ1ZX0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFBhbmVJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMucGFuZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVSZWZCeUluZGV4KGluZGV4OiBudW1iZXIpOiBUYWJQYW5lQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVSZWZCeU5hbWUobmFtZTogc3RyaW5nKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiBmaW5kKHRoaXMucGFuZXMudG9BcnJheSgpLCB7bmFtZTogbmFtZX0pO1xuICAgIH1cblxuICAgIC8vIHJldHVybnMgZmFsc2UgaWYgdGhlIHBhbmUgaXMgaGlkZGVuIG9yIGRpc2FibGVkXG4gICAgcHJpdmF0ZSBpc1NlbGVjdGFibGVUYWIocGFuZVJlZjogVGFiUGFuZUNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcGFuZVJlZi5zaG93ICYmICFwYW5lUmVmLmRpc2FibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuU2xpZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zaXRpb24gPT09ICdzbGlkZScgJiYgIXRoaXMudmVydGljYWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleChpbmRleDogbnVtYmVyKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCArIDE7IGkgPCB0aGlzLnBhbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5wYW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleCgwKTtcbiAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFuZTtcbiAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdGFibGVUYWJCZWZvcmVJbmRleChpbmRleDogbnVtYmVyKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgcGFuZSA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgodGhpcy5wYW5lcy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2VsZWN0IG5leHQgdGFiIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGFjdGl2ZSB0YWJcbiAgICBwdWJsaWMgbmV4dCgkZXZlbnQ/OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50PzogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleCh0aGlzLmdldEFjdGl2ZVRhYkluZGV4KCkpO1xuICAgICAgICBpZiAocGFuZSkge1xuICAgICAgICAgICAgcGFuZS5zZWxlY3QoJGV2ZW50LCBpc0tleUJvYXJkRXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2VsZWN0IHByZXYgdGFiIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGFjdGl2ZSB0YWJcbiAgICBwdWJsaWMgcHJldigkZXZlbnQ/OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50PzogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQmVmb3JlSW5kZXgodGhpcy5nZXRBY3RpdmVUYWJJbmRleCgpKTtcbiAgICAgICAgaWYgKHBhbmUpIHtcbiAgICAgICAgICAgIHBhbmUuc2VsZWN0KCRldmVudCwgaXNLZXlCb2FyZEV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb21wb25lbnQgYW5kIG9uIGRlZmF1bHRwYW5laW5kZXggcHJvcGVydHkgY2hhbmdlLFxuICAgICAqIGlmIHRoZSBwcm92aWRlZCBkZWZhdWx0cGFuZWluZGV4IGlzIG5vdCB2YWxpZCwgZmluZCB0aGUgZmlyc3QgcGFuZSBpbmRleCB3aGljaCBjYW4gYmUgc2hvd24gYW5kIHNlbGVjdCBpdFxuICAgICAqL1xuICAgIHByaXZhdGUgc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRQYW5lSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFuZVJlZiA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgoaW5kZXgpO1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RhYmxlVGFiKHBhbmVSZWYpKSB7XG4gICAgICAgICAgICBwYW5lUmVmID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleCgwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFuZVJlZikge1xuICAgICAgICAgICAgcGFuZVJlZi5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHVwZGF0ZSB0aGUgcG9zdGlvbiBvZiB0YWIgaGVhZGVyXG4gICAgcHJpdmF0ZSBzZXRUYWJzUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IHVsID0gdGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIHRoaXMudmVydGljYWwgPSAodGhpcy50YWJzcG9zaXRpb24gPT09ICdsZWZ0JyB8fCB0aGlzLnRhYnNwb3NpdGlvbiA9PT0gJ3JpZ2h0Jyk7XG5cbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCAnaW52ZXJ0ZWQnKTtcbiAgICAgICAgaWYgKHRoaXMudGFic3Bvc2l0aW9uID09PSAnYm90dG9tJyB8fCB0aGlzLnRhYnNwb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgYXBwZW5kTm9kZSh1bCBhcyBIVE1MRWxlbWVudCwgdGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2ludmVydGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRGF0YUNoYW5nZShuZXdWYWwpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBjcmVhdGVBcnJheUZyb20obmV3VmFsKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERlZmF1bHRQYW5lQnlJbmRleCh0aGlzLmRlZmF1bHRwYW5laW5kZXggfHwgMCkpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92KSB7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ2RlZmF1bHRwYW5laW5kZXgnKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRwYW5laW5kZXggPSBudjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFDaGFuZ2UobnYpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3N0YXRlaGFuZGxlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQYWdlTG9hZENhbGwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICBpZiAobnYgIT09ICdub25lJyAmJiB3aWRnZXRTdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVUb1NlbGVjdDogYW55ID0gdGhpcy5wYW5lcy5maWx0ZXIoZnVuY3Rpb24ocGFuZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0U3RhdGUgPT09IHBhbmUubmFtZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhbmVUb1NlbGVjdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdUYWIgcGFuZSBuYW1lICcgKyB3aWRnZXRTdGF0ZSArICcgaW4gU3RhdGUgaXMgaW5jb3JyZWN0LiBGYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgcGFuZScpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KHRoaXMuZGVmYXVsdHBhbmVpbmRleCB8fCAwKSwgMjApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRQYW5lSW5kZXhCeVJlZihwYW5lVG9TZWxlY3RbMF0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KGluZGV4KSwgMjApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERlZmF1bHRQYW5lQnlJbmRleCh0aGlzLmRlZmF1bHRwYW5laW5kZXggfHwgMCksIDIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJUYWJzU2Nyb2xsKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR1bCA9IHRoaXMuJGVsZW1lbnQuZmluZCgnPiB1bCcpO1xuICAgICAgICAgICAgbGV0ICRsaVBvc2l0aW9uO1xuXG4gICAgICAgICAgICBjb25zdCAgJGxpID0gJHVsLmNoaWxkcmVuKCk7XG4gICAgICAgICAgICAkbGlQb3NpdGlvbiA9ICRsaS5sYXN0KCkucG9zaXRpb24oKTtcbiAgICAgICAgICAgIGlmICgkbGlQb3NpdGlvbiAmJiAoJGxpUG9zaXRpb24ubGVmdCA+ICR1bC53aWR0aCgpKSkge1xuICAgICAgICAgICAgICAgICR1bC5vbignbW91c2V3aGVlbCcsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSAkdWxbMF0uc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kZWx0YSA9IC0xICogZS5vcmlnaW5hbEV2ZW50LndoZWVsRGVsdGE7XG4gICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgJHVsLmFuaW1hdGUoe3Njcm9sbExlZnQ6IGxlZnQgKyBfZGVsdGF9LCB7J2R1cmF0aW9uJzogMTB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9ua2V5ZG93bihldmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMucHJldihudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KG51bGwsIHRydWUpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuKCk7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICB0aGlzLnNldFRhYnNQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnBhbmVzLmNoYW5nZXMuc3Vic2NyaWJlKCBzbGlkZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0UGFuZUJ5SW5kZXgodGhpcy5kZWZhdWx0cGFuZWluZGV4IHx8IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyVGFic1Njcm9sbCgpO1xuICAgIH1cbn1cbiIsIjx1bCBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIFtuZ0NsYXNzXT1cInsnbmF2LXN0YWNrZWQnOiB2ZXJ0aWNhbCwgJ25hdi1qdXN0aWZpZWQnOiBqdXN0aWZpZWR9XCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICA8bGkgY2xhc3M9XCJ0YWItaGVhZGVyXCIgKm5nRm9yPVwibGV0IHBhbmUgb2YgcGFuZXM7IGxldCBpPWluZGV4O1wiIFthdHRyLmRhdGEtcGFuZWlkXT1cInBhbmUud2lkZ2V0SWRcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHBhbmUuaXNBY3RpdmUsICdkaXNhYmxlZCc6IHBhbmUuZGlzYWJsZWR9XCJcbiAgICAgICAgW2hpZGRlbl09XCIhcGFuZS5zaG93XCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICA8YSBjbGFzcz1cInRhYi1oZWFkaW5nXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBbYXR0ci5pY29uLXBvc2l0aW9uXT1cImljb25wb3NpdGlvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwicGFuZS50aXRsZVwiIFthdHRyLnRpdGxlXT1cInBhbmUudGl0bGVcIiBbdGFiaW5kZXhdPVwicGFuZS5pc0FjdGl2ZSA/ICcwJyA6ICctMSdcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInBhbmUuaXNBY3RpdmVcIiByb2xlPVwidGFiXCIgKGNsaWNrKT1cInBhbmUuc2VsZWN0KCRldmVudCk7IHBhbmUudGFicGFuZUhlYWRlckNsaWNrKCRldmVudCwgaSk7XCIgKGtleWRvd24pPVwib25rZXlkb3duKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJbJ2FwcC1pY29uJywgcGFuZS5wYW5laWNvbl1cIiAqbmdJZj1cInBhbmUucGFuZWljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInBhbmUudGl0bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lLmJhZGdldmFsdWVcIiBjbGFzcz1cImxhYmVsIGxhYmVsLXt7cGFuZS5iYWRnZXR5cGV9fVwiIFt0ZXh0Q29udGVudF09XCJwYW5lLmJhZGdldmFsdWVcIj48L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuPC91bD5cbjxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwidHlwZSAhPT0gJ2R5bmFtaWMnXCIgW25nQ2xhc3NdPVwieyd0YWItc3RhY2tlZCc6IHZlcnRpY2FsLCAndGFiLWp1c3RpZmllZCc6IGp1c3RpZmllZH1cIj5cbiAgICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cImRpdlt3bVRhYlBhbmVdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIiAqbmdJZj1cInR5cGUgPT09ICdkeW5hbWljJ1wiIFtuZ0NsYXNzXT1cInsndGFiLXN0YWNrZWQnOiB2ZXJ0aWNhbCwgJ3RhYi1qdXN0aWZpZWQnOiBqdXN0aWZpZWR9XCI+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkRGVmcyAmJiAhZmllbGREZWZzLmxlbmd0aFwiPnt7bm9kYXRhbWVzc2FnZX19PC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2W3dtUmVwZWF0VGVtcGxhdGVdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -12,11 +12,12 @@ export const registerProps = () => {
12
12
  ['show', { value: true, ...PROP_BOOLEAN }],
13
13
  ['statehandler', { value: 'none', ...PROP_STRING }],
14
14
  ['transition', PROP_STRING],
15
- ['type', PROP_STRING]
15
+ ['type', PROP_STRING],
16
+ ['iconposition', PROP_STRING],
16
17
  ]);
17
18
  if (isMobileApp()) {
18
19
  props.set('transition', { value: 'slide', ...PROP_STRING });
19
20
  }
20
21
  register('wm-tabs', props);
21
22
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3RhYnMvc3JjL3RhYnMucHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQ2pCO1FBQ0ksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO1FBQ3RCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztRQUNyQixDQUFDLGtCQUFrQixFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO1FBQ2hELENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQztRQUMzQixDQUFDLGNBQWMsRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztRQUNoRCxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7UUFDckIsQ0FBQyxlQUFlLEVBQUUsRUFBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEdBQUksV0FBVyxFQUFDLENBQUM7UUFDNUQsQ0FBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFDLENBQUM7UUFDeEMsQ0FBQyxjQUFjLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7UUFDakQsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO1FBQzNCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztLQUN4QixDQUNKLENBQUM7SUFDRixJQUFJLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDaEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc01vYmlsZUFwcCB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgUFJPUF9BTlksIFBST1BfQk9PTEVBTiwgUFJPUF9OVU1CRVIsIFBST1BfU1RSSU5HLCByZWdpc3Rlcn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlclByb3BzID0gKCkgPT4ge1xuICAgIGNvbnN0IHByb3BzID0gbmV3IE1hcChcbiAgICAgICAgW1xuICAgICAgICAgICAgWydjbGFzcycsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgIFsnZGF0YXNldCcsIFBST1BfQU5ZXSxcbiAgICAgICAgICAgIFsnZGVmYXVsdHBhbmVpbmRleCcsIHt2YWx1ZTogMCwgLi4uUFJPUF9OVU1CRVJ9XSxcbiAgICAgICAgICAgIFsnanVzdGlmaWVkJywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgICAgIFsndGFic3Bvc2l0aW9uJywge3ZhbHVlOiAndG9wJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgIFsnbmFtZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgIFsnbm9kYXRhbWVzc2FnZScsIHt2YWx1ZTogJ05vIERhdGEgRm91bmQnLCAuLi4gUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgIFsnc2hvdycsIHt2YWx1ZTogdHJ1ZSwgLi4uUFJPUF9CT09MRUFOfV0sXG4gICAgICAgICAgICBbJ3N0YXRlaGFuZGxlcicsIHt2YWx1ZTogJ25vbmUnLCAuLi5QUk9QX1NUUklOR31dLFxuICAgICAgICAgICAgWyd0cmFuc2l0aW9uJywgUFJPUF9TVFJJTkddLFxuICAgICAgICAgICAgWyd0eXBlJywgUFJPUF9TVFJJTkddXG4gICAgICAgIF1cbiAgICApO1xuICAgIGlmIChpc01vYmlsZUFwcCgpKSB7XG4gICAgICAgIHByb3BzLnNldCgndHJhbnNpdGlvbicsIHt2YWx1ZTogJ3NsaWRlJywgLi4uUFJPUF9TVFJJTkd9KTtcbiAgICB9XG4gICAgcmVnaXN0ZXIoJ3dtLXRhYnMnLCBwcm9wcyk7XG59O1xuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3RhYnMvc3JjL3RhYnMucHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQ2pCO1FBQ0ksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO1FBQ3RCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztRQUNyQixDQUFDLGtCQUFrQixFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO1FBQ2hELENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQztRQUMzQixDQUFDLGNBQWMsRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztRQUNoRCxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7UUFDckIsQ0FBQyxlQUFlLEVBQUUsRUFBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEdBQUksV0FBVyxFQUFDLENBQUM7UUFDNUQsQ0FBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFDLENBQUM7UUFDeEMsQ0FBQyxjQUFjLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7UUFDakQsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO1FBQzNCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztRQUNyQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUM7S0FDaEMsQ0FDSixDQUFDO0lBQ0YsSUFBSSxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNNb2JpbGVBcHAgfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7IFBST1BfQU5ZLCBQUk9QX0JPT0xFQU4sIFBST1BfTlVNQkVSLCBQUk9QX1NUUklORywgcmVnaXN0ZXJ9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJQcm9wcyA9ICgpID0+IHtcbiAgICBjb25zdCBwcm9wcyA9IG5ldyBNYXAoXG4gICAgICAgIFtcbiAgICAgICAgICAgIFsnY2xhc3MnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICBbJ2RhdGFzZXQnLCBQUk9QX0FOWV0sXG4gICAgICAgICAgICBbJ2RlZmF1bHRwYW5laW5kZXgnLCB7dmFsdWU6IDAsIC4uLlBST1BfTlVNQkVSfV0sXG4gICAgICAgICAgICBbJ2p1c3RpZmllZCcsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgICAgICBbJ3RhYnNwb3NpdGlvbicsIHt2YWx1ZTogJ3RvcCcsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgICAgICBbJ25hbWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICBbJ25vZGF0YW1lc3NhZ2UnLCB7dmFsdWU6ICdObyBEYXRhIEZvdW5kJywgLi4uIFBST1BfU1RSSU5HfV0sXG4gICAgICAgICAgICBbJ3Nob3cnLCB7dmFsdWU6IHRydWUsIC4uLlBST1BfQk9PTEVBTn1dLFxuICAgICAgICAgICAgWydzdGF0ZWhhbmRsZXInLCB7dmFsdWU6ICdub25lJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgICAgIFsndHJhbnNpdGlvbicsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgIFsndHlwZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgICAgIFsnaWNvbnBvc2l0aW9uJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBdXG4gICAgKTtcbiAgICBpZiAoaXNNb2JpbGVBcHAoKSkge1xuICAgICAgICBwcm9wcy5zZXQoJ3RyYW5zaXRpb24nLCB7dmFsdWU6ICdzbGlkZScsIC4uLlBST1BfU1RSSU5HfSk7XG4gICAgfVxuICAgIHJlZ2lzdGVyKCd3bS10YWJzJywgcHJvcHMpO1xufTtcbiJdfQ==
@@ -102,7 +102,8 @@ const registerProps$1 = () => {
102
102
  ['show', { value: true, ...PROP_BOOLEAN }],
103
103
  ['statehandler', { value: 'none', ...PROP_STRING }],
104
104
  ['transition', PROP_STRING],
105
- ['type', PROP_STRING]
105
+ ['type', PROP_STRING],
106
+ ['iconposition', PROP_STRING],
106
107
  ]);
107
108
  if (isMobileApp()) {
108
109
  props.set('transition', { value: 'slide', ...PROP_STRING });
@@ -329,11 +330,12 @@ function TabsComponent_li_1_Template(rf, ctx) { if (rf & 1) {
329
330
  i0.ɵɵelementEnd()();
330
331
  } if (rf & 2) {
331
332
  const pane_r3 = ctx.$implicit;
332
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(10, _c4, pane_r3.isActive, pane_r3.disabled))("hidden", !pane_r3.show);
333
+ const ctx_r4 = i0.ɵɵnextContext();
334
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(11, _c4, pane_r3.isActive, pane_r3.disabled))("hidden", !pane_r3.show);
333
335
  i0.ɵɵattribute("data-paneid", pane_r3.widgetId);
334
336
  i0.ɵɵadvance();
335
337
  i0.ɵɵproperty("tabindex", pane_r3.isActive ? "0" : "-1");
336
- i0.ɵɵattribute("aria-label", pane_r3.title)("title", pane_r3.title)("aria-selected", pane_r3.isActive);
338
+ i0.ɵɵattribute("icon-position", ctx_r4.iconposition)("aria-label", pane_r3.title)("title", pane_r3.title)("aria-selected", pane_r3.isActive);
337
339
  i0.ɵɵadvance();
338
340
  i0.ɵɵproperty("ngIf", pane_r3.paneicon);
339
341
  i0.ɵɵadvance();
@@ -380,6 +382,7 @@ class TabsComponent extends StylableComponent {
380
382
  // handle to the promise resolver
381
383
  let resolveFn = noop;
382
384
  super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));
385
+ this.iconposition = '';
383
386
  this.transition = _transition;
384
387
  this.tabsposition = _tabsPosition;
385
388
  this.statePersistence = statePersistence;
@@ -718,12 +721,14 @@ class TabsComponent extends StylableComponent {
718
721
  } if (rf & 2) {
719
722
  let _t;
720
723
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panes = _t);
724
+ } }, hostVars: 1, hostBindings: function TabsComponent_HostBindings(rf, ctx) { if (rf & 2) {
725
+ i0.ɵɵattribute("icon-position", ctx.iconposition);
721
726
  } }, exportAs: ["wmTabs"], features: [i0.ɵɵProvidersFeature([
722
727
  provideAsWidgetRef(TabsComponent)
723
728
  ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c2, decls: 4, vars: 7, consts: [["role", "tablist", 1, "nav", "nav-tabs", 3, "ngClass"], ["class", "tab-header", "role", "presentation", 3, "ngClass", "hidden", 4, "ngFor", "ngForOf"], ["class", "tab-content", 3, "ngClass", 4, "ngIf"], ["role", "presentation", 1, "tab-header", 3, "ngClass", "hidden"], ["href", "javascript:void(0);", "role", "tab", 1, "tab-heading", 3, "click", "keydown", "tabindex"], [3, "ngClass", 4, "ngIf"], [3, "textContent"], [3, "class", "textContent", 4, "ngIf"], [3, "ngClass"], [1, "tab-content", 3, "ngClass"], [4, "ngIf"]], template: function TabsComponent_Template(rf, ctx) { if (rf & 1) {
724
729
  i0.ɵɵprojectionDef(_c1);
725
730
  i0.ɵɵelementStart(0, "ul", 0);
726
- i0.ɵɵtemplate(1, TabsComponent_li_1_Template, 5, 13, "li", 1);
731
+ i0.ɵɵtemplate(1, TabsComponent_li_1_Template, 5, 14, "li", 1);
727
732
  i0.ɵɵelementEnd();
728
733
  i0.ɵɵtemplate(2, TabsComponent_div_2_Template, 2, 4, "div", 2)(3, TabsComponent_div_3_Template, 3, 5, "div", 2);
729
734
  } if (rf & 2) {
@@ -740,7 +745,7 @@ class TabsComponent extends StylableComponent {
740
745
  type: Component,
741
746
  args: [{ selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
742
747
  provideAsWidgetRef(TabsComponent)
743
- ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a class=\"tab-heading\" href=\"javascript:void(0);\" [attr.aria-label]=\"pane.title\" [attr.title]=\"pane.title\" [tabindex]=\"pane.isActive ? '0' : '-1'\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n" }]
748
+ ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a class=\"tab-heading\" href=\"javascript:void(0);\" [attr.icon-position]=\"iconposition\" [attr.aria-label]=\"pane.title\" [attr.title]=\"pane.title\" [tabindex]=\"pane.isActive ? '0' : '-1'\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n" }]
744
749
  }], () => [{ type: i0.Injector }, { type: i1.DynamicComponentRefProvider }, { type: undefined, decorators: [{
745
750
  type: Attribute,
746
751
  args: ['transition']
@@ -752,7 +757,10 @@ class TabsComponent extends StylableComponent {
752
757
  args: ['EXPLICIT_CONTEXT']
753
758
  }, {
754
759
  type: Optional
755
- }] }], { panes: [{
760
+ }] }], { iconposition: [{
761
+ type: HostBinding,
762
+ args: ['attr.icon-position']
763
+ }], panes: [{
756
764
  type: ContentChildren,
757
765
  args: [TabPaneComponent]
758
766
  }] }); })();