imm-element-ui 1.4.6 → 1.4.7

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.
@@ -40,13 +40,16 @@ export class StepsComponent {
40
40
  this.startSteps = [];
41
41
  this.endSteps = [];
42
42
  this.maxWidth = 0;
43
- this.visible = true;
44
43
  effect(() => {
45
44
  let current = this.current();
46
45
  if (current != 0 && this.steps().length > 0) {
47
46
  this.refreshSteps();
48
47
  }
49
48
  }, { allowSignalWrites: true });
49
+ effect(() => {
50
+ this.calcMaxWidth();
51
+ this.refreshSteps();
52
+ }, { allowSignalWrites: true });
50
53
  const steps$ = toObservable(this.steps).subscribe((steps) => {
51
54
  if (steps === undefined)
52
55
  return;
@@ -54,15 +57,6 @@ export class StepsComponent {
54
57
  steps$.unsubscribe();
55
58
  });
56
59
  }
57
- ngAfterViewInit() {
58
- this.i18n.change.subscribe((res) => {
59
- this.visible = false;
60
- setTimeout(() => {
61
- this.visible = true;
62
- this.initSteps();
63
- }, 100);
64
- });
65
- }
66
60
  initSteps() {
67
61
  this.calcMaxWidth();
68
62
  this.initWidthList();
@@ -97,7 +91,7 @@ export class StepsComponent {
97
91
  this.maxWidth = window.innerWidth * 0.64;
98
92
  return;
99
93
  }
100
- const centerWidth = window.innerWidth < 1024 ? window.innerWidth - 400 : window.innerWidth - 300;
94
+ const centerWidth = window.innerWidth < 1024 ? window.innerWidth - 300 : window.innerWidth - 400;
101
95
  this.maxWidth = centerWidth * 0.64;
102
96
  }
103
97
  showStartSteps(event, startOp) {
@@ -182,6 +176,7 @@ export class StepsComponent {
182
176
  }
183
177
  totalWidth += this.startIndex === 0 ? 0 : this.START_BUTTON_WIDTH;
184
178
  totalWidth += this.endIndex === this.widthList.length - 1 ? 0 : this.END_BUTTON_WIDTH;
179
+ console.log('----------------totalWidth', totalWidth, this.maxWidth);
185
180
  return totalWidth >= this.maxWidth;
186
181
  }
187
182
  handleSteps() {
@@ -210,11 +205,11 @@ export class StepsComponent {
210
205
  this.excludeValues.set(excludeValues);
211
206
  }
212
207
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StepsComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
213
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: StepsComponent, isStandalone: true, selector: "custom-steps", inputs: { modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, needSelfAdjusting: { classPropertyName: "needSelfAdjusting", publicName: "needSelfAdjusting", isSignal: true, isRequired: false, transformFunction: null }, steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null }, isClick: { classPropertyName: "isClick", publicName: "isClick", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "@if (visible) {\r\n\t<div\r\n\t\t#container\r\n\t\tclass=\"flex my-1 w-full justify-end\">\r\n\t\t@for (st of displaySteps(); track st; let i = $index) {\r\n\t\t\t@if (st.value === 'start') {\r\n\t\t\t\t<div\r\n\t\t\t\t\t#startItem\r\n\t\t\t\t\t[class]=\"getClass(i, ['start-item'])\"\r\n\t\t\t\t\t(click)=\"showStartSteps($event, startOp)\">\r\n\t\t\t\t\t<span>...</span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<p-popover\r\n\t\t\t\t\t#startOp\r\n\t\t\t\t\t[styleClass]=\"'pop-steps start-steps'\"\r\n\t\t\t\t\t[appendTo]=\"startItem\">\r\n\t\t\t\t\t<p-listbox\r\n\t\t\t\t\t\t[options]=\"startSteps\"\r\n\t\t\t\t\t\t(onChange)=\"onStartStepsChange($event)\"\r\n\t\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</p-listbox>\r\n\t\t\t\t</p-popover>\r\n\t\t\t} @else if (st.value === 'end') {\r\n\t\t\t\t<div\r\n\t\t\t\t\t#endItem\r\n\t\t\t\t\t[class]=\"getClass(i, ['end-item'])\"\r\n\t\t\t\t\t(click)=\"showEndSteps($event, endOp)\">\r\n\t\t\t\t\t<span>...</span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<p-popover\r\n\t\t\t\t\t#endOp\r\n\t\t\t\t\t[styleClass]=\"'pop-steps end-steps'\"\r\n\t\t\t\t\t[appendTo]=\"endItem\">\r\n\t\t\t\t\t<p-listbox\r\n\t\t\t\t\t\t[options]=\"endSteps\"\r\n\t\t\t\t\t\t(onChange)=\"onEndStepsChange($event)\"\r\n\t\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</p-listbox>\r\n\t\t\t\t</p-popover>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\t[class]=\"getClass(i, [])\"\r\n\t\t\t\t\t(click)=\"changeStatus(st)\">\r\n\t\t\t\t\t<span>{{ st.i18nKey ? i18n.fanyi(st.i18nKey) : st.label }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t}\r\n\t</div>\r\n}\r\n", styles: ["::ng-deep .pop-steps.p-popover.p-popover-flipped:before{display:none}::ng-deep .pop-steps.p-popover.p-popover-flipped:after{display:none}::ng-deep .pop-steps.p-popover:before{display:none}::ng-deep .pop-steps.p-popover:after{display:none}::ng-deep .pop-steps.p-popover-flipped{margin-top:-5px}::ng-deep .pop-steps .p-popover-content{padding:0}::ng-deep .end-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:auto!important;right:0!important;top:100%!important;min-width:125px}::ng-deep .start-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:0!important;right:auto!important;top:100%!important;min-width:125px}.step-item{position:relative;height:32px;padding:0 5px;background-color:#e7e9ed}.step-item span{color:#334155c2;white-space:nowrap}.step-item.step-first{padding-left:15px}.step-item.step-last{padding-right:15px}.step-item:not(.step-first){border-left:15px solid transparent;margin-left:2px}.step-item:not(.step-first):before{content:\"\";position:absolute;top:0;left:-15px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid white}.step-item:not(.step-last):after{content:\"\";position:absolute;top:0;right:-12px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid #e7e9ed;z-index:2}.step-item.step-active{background-color:var(--p-primary-200)}.step-item.step-active span{color:#334155}.step-item.step-active:after{border-left:12px solid var(--p-primary-200)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ListboxModule }, { kind: "component", type: i1.Listbox, selector: "p-listbox, p-listBox, p-list-box", inputs: ["id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "ariaLabel", "selectOnFocus", "searchLocale", "focusOnHover", "filterMessage", "filterFields", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "scrollHeight", "tabindex", "multiple", "style", "styleClass", "listStyle", "listStyleClass", "readonly", "disabled", "checkbox", "filter", "filterBy", "filterMatchMode", "filterLocale", "metaKeySelection", "dataKey", "showToggleAll", "optionLabel", "optionValue", "optionGroupChildren", "optionGroupLabel", "optionDisabled", "ariaFilterLabel", "filterPlaceHolder", "emptyFilterMessage", "emptyMessage", "group", "options", "filterValue", "selectAll", "striped", "highlightOnSelect", "checkmark"], outputs: ["onChange", "onClick", "onDblClick", "onFilter", "onFocus", "onBlur", "onSelectAllChange", "onLazyLoad"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }] }); }
208
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: StepsComponent, isStandalone: true, selector: "custom-steps", inputs: { modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, needSelfAdjusting: { classPropertyName: "needSelfAdjusting", publicName: "needSelfAdjusting", isSignal: true, isRequired: false, transformFunction: null }, steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null }, isClick: { classPropertyName: "isClick", publicName: "isClick", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\r\n\t#container\r\n\tclass=\"flex my-1 w-full justify-end\">\r\n\t@for (st of displaySteps(); track st; let i = $index) {\r\n\t\t@if (st.value === 'start') {\r\n\t\t\t<div\r\n\t\t\t\t#startItem\r\n\t\t\t\t[class]=\"getClass(i, ['start-item'])\"\r\n\t\t\t\t(click)=\"showStartSteps($event, startOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#startOp\r\n\t\t\t\t[styleClass]=\"'pop-steps start-steps'\"\r\n\t\t\t\t[appendTo]=\"startItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"startSteps\"\r\n\t\t\t\t\t(onChange)=\"onStartStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-listbox>\r\n\t\t\t</p-popover>\r\n\t\t} @else if (st.value === 'end') {\r\n\t\t\t<div\r\n\t\t\t\t#endItem\r\n\t\t\t\t[class]=\"getClass(i, ['end-item'])\"\r\n\t\t\t\t(click)=\"showEndSteps($event, endOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#endOp\r\n\t\t\t\t[styleClass]=\"'pop-steps end-steps'\"\r\n\t\t\t\t[appendTo]=\"endItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"endSteps\"\r\n\t\t\t\t\t(onChange)=\"onEndStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-listbox>\r\n\t\t\t</p-popover>\r\n\t\t} @else {\r\n\t\t\t<div\r\n\t\t\t\t[class]=\"getClass(i, [])\"\r\n\t\t\t\t(click)=\"changeStatus(st)\">\r\n\t\t\t\t<span>{{ st.i18nKey ? i18n.fanyi(st.i18nKey) : st.label }}</span>\r\n\t\t\t</div>\r\n\t\t}\r\n\t}\r\n</div>\r\n", styles: ["::ng-deep .pop-steps.p-popover.p-popover-flipped:before{display:none}::ng-deep .pop-steps.p-popover.p-popover-flipped:after{display:none}::ng-deep .pop-steps.p-popover:before{display:none}::ng-deep .pop-steps.p-popover:after{display:none}::ng-deep .pop-steps.p-popover-flipped{margin-top:-5px}::ng-deep .pop-steps .p-popover-content{padding:0}::ng-deep .end-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:auto!important;right:0!important;top:100%!important;min-width:125px}::ng-deep .start-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:0!important;right:auto!important;top:100%!important;min-width:125px}.step-item{position:relative;height:32px;padding:0 5px;background-color:#e7e9ed}.step-item span{color:#334155c2;white-space:nowrap}.step-item.step-first{padding-left:15px}.step-item.step-last{padding-right:15px}.step-item:not(.step-first){border-left:15px solid transparent;margin-left:2px}.step-item:not(.step-first):before{content:\"\";position:absolute;top:0;left:-15px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid white}.step-item:not(.step-last):after{content:\"\";position:absolute;top:0;right:-12px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid #e7e9ed;z-index:2}.step-item.step-active{background-color:var(--p-primary-200)}.step-item.step-active span{color:#334155}.step-item.step-active:after{border-left:12px solid var(--p-primary-200)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ListboxModule }, { kind: "component", type: i1.Listbox, selector: "p-listbox, p-listBox, p-list-box", inputs: ["id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "ariaLabel", "selectOnFocus", "searchLocale", "focusOnHover", "filterMessage", "filterFields", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "scrollHeight", "tabindex", "multiple", "style", "styleClass", "listStyle", "listStyleClass", "readonly", "disabled", "checkbox", "filter", "filterBy", "filterMatchMode", "filterLocale", "metaKeySelection", "dataKey", "showToggleAll", "optionLabel", "optionValue", "optionGroupChildren", "optionGroupLabel", "optionDisabled", "ariaFilterLabel", "filterPlaceHolder", "emptyFilterMessage", "emptyMessage", "group", "options", "filterValue", "selectAll", "striped", "highlightOnSelect", "checkmark"], outputs: ["onChange", "onClick", "onDblClick", "onFilter", "onFocus", "onBlur", "onSelectAllChange", "onLazyLoad"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }] }); }
214
209
  }
215
210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StepsComponent, decorators: [{
216
211
  type: Component,
217
- args: [{ selector: 'custom-steps', standalone: true, imports: [FormsModule, ListboxModule, Popover], template: "@if (visible) {\r\n\t<div\r\n\t\t#container\r\n\t\tclass=\"flex my-1 w-full justify-end\">\r\n\t\t@for (st of displaySteps(); track st; let i = $index) {\r\n\t\t\t@if (st.value === 'start') {\r\n\t\t\t\t<div\r\n\t\t\t\t\t#startItem\r\n\t\t\t\t\t[class]=\"getClass(i, ['start-item'])\"\r\n\t\t\t\t\t(click)=\"showStartSteps($event, startOp)\">\r\n\t\t\t\t\t<span>...</span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<p-popover\r\n\t\t\t\t\t#startOp\r\n\t\t\t\t\t[styleClass]=\"'pop-steps start-steps'\"\r\n\t\t\t\t\t[appendTo]=\"startItem\">\r\n\t\t\t\t\t<p-listbox\r\n\t\t\t\t\t\t[options]=\"startSteps\"\r\n\t\t\t\t\t\t(onChange)=\"onStartStepsChange($event)\"\r\n\t\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</p-listbox>\r\n\t\t\t\t</p-popover>\r\n\t\t\t} @else if (st.value === 'end') {\r\n\t\t\t\t<div\r\n\t\t\t\t\t#endItem\r\n\t\t\t\t\t[class]=\"getClass(i, ['end-item'])\"\r\n\t\t\t\t\t(click)=\"showEndSteps($event, endOp)\">\r\n\t\t\t\t\t<span>...</span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<p-popover\r\n\t\t\t\t\t#endOp\r\n\t\t\t\t\t[styleClass]=\"'pop-steps end-steps'\"\r\n\t\t\t\t\t[appendTo]=\"endItem\">\r\n\t\t\t\t\t<p-listbox\r\n\t\t\t\t\t\t[options]=\"endSteps\"\r\n\t\t\t\t\t\t(onChange)=\"onEndStepsChange($event)\"\r\n\t\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</p-listbox>\r\n\t\t\t\t</p-popover>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\t[class]=\"getClass(i, [])\"\r\n\t\t\t\t\t(click)=\"changeStatus(st)\">\r\n\t\t\t\t\t<span>{{ st.i18nKey ? i18n.fanyi(st.i18nKey) : st.label }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t}\r\n\t</div>\r\n}\r\n", styles: ["::ng-deep .pop-steps.p-popover.p-popover-flipped:before{display:none}::ng-deep .pop-steps.p-popover.p-popover-flipped:after{display:none}::ng-deep .pop-steps.p-popover:before{display:none}::ng-deep .pop-steps.p-popover:after{display:none}::ng-deep .pop-steps.p-popover-flipped{margin-top:-5px}::ng-deep .pop-steps .p-popover-content{padding:0}::ng-deep .end-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:auto!important;right:0!important;top:100%!important;min-width:125px}::ng-deep .start-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:0!important;right:auto!important;top:100%!important;min-width:125px}.step-item{position:relative;height:32px;padding:0 5px;background-color:#e7e9ed}.step-item span{color:#334155c2;white-space:nowrap}.step-item.step-first{padding-left:15px}.step-item.step-last{padding-right:15px}.step-item:not(.step-first){border-left:15px solid transparent;margin-left:2px}.step-item:not(.step-first):before{content:\"\";position:absolute;top:0;left:-15px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid white}.step-item:not(.step-last):after{content:\"\";position:absolute;top:0;right:-12px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid #e7e9ed;z-index:2}.step-item.step-active{background-color:var(--p-primary-200)}.step-item.step-active span{color:#334155}.step-item.step-active:after{border-left:12px solid var(--p-primary-200)}\n"] }]
212
+ args: [{ selector: 'custom-steps', standalone: true, imports: [FormsModule, ListboxModule, Popover], template: "<div\r\n\t#container\r\n\tclass=\"flex my-1 w-full justify-end\">\r\n\t@for (st of displaySteps(); track st; let i = $index) {\r\n\t\t@if (st.value === 'start') {\r\n\t\t\t<div\r\n\t\t\t\t#startItem\r\n\t\t\t\t[class]=\"getClass(i, ['start-item'])\"\r\n\t\t\t\t(click)=\"showStartSteps($event, startOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#startOp\r\n\t\t\t\t[styleClass]=\"'pop-steps start-steps'\"\r\n\t\t\t\t[appendTo]=\"startItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"startSteps\"\r\n\t\t\t\t\t(onChange)=\"onStartStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-listbox>\r\n\t\t\t</p-popover>\r\n\t\t} @else if (st.value === 'end') {\r\n\t\t\t<div\r\n\t\t\t\t#endItem\r\n\t\t\t\t[class]=\"getClass(i, ['end-item'])\"\r\n\t\t\t\t(click)=\"showEndSteps($event, endOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#endOp\r\n\t\t\t\t[styleClass]=\"'pop-steps end-steps'\"\r\n\t\t\t\t[appendTo]=\"endItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"endSteps\"\r\n\t\t\t\t\t(onChange)=\"onEndStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-listbox>\r\n\t\t\t</p-popover>\r\n\t\t} @else {\r\n\t\t\t<div\r\n\t\t\t\t[class]=\"getClass(i, [])\"\r\n\t\t\t\t(click)=\"changeStatus(st)\">\r\n\t\t\t\t<span>{{ st.i18nKey ? i18n.fanyi(st.i18nKey) : st.label }}</span>\r\n\t\t\t</div>\r\n\t\t}\r\n\t}\r\n</div>\r\n", styles: ["::ng-deep .pop-steps.p-popover.p-popover-flipped:before{display:none}::ng-deep .pop-steps.p-popover.p-popover-flipped:after{display:none}::ng-deep .pop-steps.p-popover:before{display:none}::ng-deep .pop-steps.p-popover:after{display:none}::ng-deep .pop-steps.p-popover-flipped{margin-top:-5px}::ng-deep .pop-steps .p-popover-content{padding:0}::ng-deep .end-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:auto!important;right:0!important;top:100%!important;min-width:125px}::ng-deep .start-steps.p-popover{margin-top:2.5px;z-index:999;position:absolute!important;left:0!important;right:auto!important;top:100%!important;min-width:125px}.step-item{position:relative;height:32px;padding:0 5px;background-color:#e7e9ed}.step-item span{color:#334155c2;white-space:nowrap}.step-item.step-first{padding-left:15px}.step-item.step-last{padding-right:15px}.step-item:not(.step-first){border-left:15px solid transparent;margin-left:2px}.step-item:not(.step-first):before{content:\"\";position:absolute;top:0;left:-15px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid white}.step-item:not(.step-last):after{content:\"\";position:absolute;top:0;right:-12px;width:0;height:0;border-top:15px solid transparent;border-bottom:15px solid transparent;border-left:12px solid #e7e9ed;z-index:2}.step-item.step-active{background-color:var(--p-primary-200)}.step-item.step-active span{color:#334155}.step-item.step-active:after{border-left:12px solid var(--p-primary-200)}\n"] }]
218
213
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { containerRef: [{
219
214
  type: ViewChild,
220
215
  args: ['container', { static: false }]
@@ -222,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
222
217
  type: HostListener,
223
218
  args: ['window:resize', ['$event']]
224
219
  }] } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9zdGVwcy9zdGVwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3N0ZXBzL3N0ZXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBYzFELE1BQU0sT0FBTyxjQUFjO0lBZ0MxQixRQUFRO1FBQ1AsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQW5DdkMsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDekMsVUFBSyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDN0MsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLElB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LFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgUmVuZGVyZXIyLCBzaWduYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExpc3Rib3hNb2R1bGUgfSBmcm9tICdwcmltZW5nL2xpc3Rib3gnO1xuaW1wb3J0IHsgUG9wb3ZlciB9IGZyb20gJ3ByaW1lbmcvcG9wb3Zlcic7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5leHBvcnQgaW50ZXJmYWNlIFN0ZXAge1xuXHRsYWJlbDogc3RyaW5nO1xuXHRpMThuS2V5Pzogc3RyaW5nO1xuXHR2YWx1ZTogbnVtYmVyIHwgJ3N0YXJ0JyB8ICdlbmQnO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdjdXN0b20tc3RlcHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIExpc3Rib3hNb2R1bGUsIFBvcG92ZXJdLFxuXHR0ZW1wbGF0ZVVybDogJy4vc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vc3RlcHMuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTdGVwc0NvbXBvbmVudCB7XG5cdEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmO1xuXHRtb2RlbExvZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblx0bmVlZFNlbGZBZGp1c3RpbmcgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblx0c3RlcHMgPSBpbnB1dDxTdGVwW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cdGRpc3BsYXlTdGVwcyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRpZiAodGhpcy5zdGVwcygpID09PSB1bmRlZmluZWQpIHJldHVybiBbXTtcblx0XHRjb25zdCBzdGVwcyA9IFsuLi50aGlzLnN0ZXBzKCkhXTtcblx0XHRzdGVwcy51bnNoaWZ0KHsgdmFsdWU6ICdzdGFydCcsIGxhYmVsOiAnLi4uJyB9KTtcblx0XHRzdGVwcy5wdXNoKHsgdmFsdWU6ICdlbmQnLCBsYWJlbDogJy4uLicgfSk7XG5cdFx0cmV0dXJuIHN0ZXBzLmZpbHRlcigoc3RlcCkgPT4gIXRoaXMuZXhjbHVkZVZhbHVlcygpLmluY2x1ZGVzKHN0ZXAudmFsdWUpKTtcblx0fSk7XG5cdGV4Y2x1ZGVWYWx1ZXMgPSBzaWduYWw8KG51bWJlciB8ICdzdGFydCcgfCAnZW5kJylbXT4oW10pO1xuXHRjdXJyZW50ID0gaW5wdXQ8bnVtYmVyPigyKTtcblx0aTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cdGNoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XG5cdGF1dGhMZXZlbCA9IGlucHV0PG51bWJlcj4oLTEpO1xuXHRpc0NsaWNrID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cblx0d2lkdGhMaXN0OiBudW1iZXJbXSA9IFtdO1xuXHRTVEFSVF9CVVRUT05fV0lEVEggPSAzMjtcblx0RU5EX0JVVFRPTl9XSURUSCA9IDQ3O1xuXHRTVEVQX0lURU1fTUFSR0lOID0gMjtcblxuXHRzdGFydEluZGV4ID0gMDtcblx0ZW5kSW5kZXggPSAwO1xuXHRzdGFydFN0ZXBzOiBTdGVwW10gPSBbXTtcblx0ZW5kU3RlcHM6IFN0ZXBbXSA9IFtdO1xuXHRtYXhXaWR0aCA9IDA7XG5cdHZpc2libGUgPSB0cnVlO1xuXG5cdEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuXHRvblJlc2l6ZSgpIHtcblx0XHR0aGlzLmNhbGNNYXhXaWR0aCgpO1xuXHRcdHRoaXMucmVmcmVzaFN0ZXBzKCk7XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGxldCBjdXJyZW50ID0gdGhpcy5jdXJyZW50KCk7XG5cdFx0XHRcdGlmIChjdXJyZW50ICE9IDAgJiYgdGhpcy5zdGVwcygpIS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0dGhpcy5yZWZyZXNoU3RlcHMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGNvbnN0IHN0ZXBzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnN0ZXBzKS5zdWJzY3JpYmUoKHN0ZXBzKSA9PiB7XG5cdFx0XHRpZiAoc3RlcHMgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXHRcdFx0dGhpcy5pbml0U3RlcHMoKTtcblx0XHRcdHN0ZXBzJC51bnN1YnNjcmliZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuaTE4bi5jaGFuZ2Uuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMudmlzaWJsZSA9IHRydWU7XG5cdFx0XHRcdHRoaXMuaW5pdFN0ZXBzKCk7XG5cdFx0XHR9LCAxMDApO1xuXHRcdH0pO1xuXHR9XG5cblx0aW5pdFN0ZXBzKCkge1xuXHRcdHRoaXMuY2FsY01heFdpZHRoKCk7XG5cdFx0dGhpcy5pbml0V2lkdGhMaXN0KCk7XG5cdFx0dGhpcy5yZWZyZXNoU3RlcHMoKTtcblx0fVxuXG5cdHJlZnJlc2hTdGVwcygpIHtcblx0XHR0aGlzLmFsdGVybmF0ZVdpZHRoTGlzdCgpO1xuXHRcdHRoaXMuaGFuZGxlU3RlcHMoKTtcblx0fVxuXG5cdGluaXRXaWR0aExpc3QoKSB7XG5cdFx0dGhpcy53aWR0aExpc3QgPSBbXTtcblx0XHRjb25zdCBjaGlsZHJlbiA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50KS5jaGlsZHJlblswXS5jaGlsZHJlbjtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoIWNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygnc3RlcC1pdGVtJykpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdzdGFydC1pdGVtJykpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdlbmQtaXRlbScpKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy53aWR0aExpc3QucHVzaCgoY2hpbGRyZW5baV0ub2Zmc2V0V2lkdGggfHwgMCkgKyB0aGlzLlNURVBfSVRFTV9NQVJHSU4pO1xuXHRcdH1cblx0fVxuXG5cdGNhbGNNYXhXaWR0aCgpIHtcblx0XHRpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHtcblx0XHRcdHRoaXMubWF4V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuOTY7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICghdGhpcy5tb2RlbExvZygpKSB7XG5cdFx0XHR0aGlzLm1heFdpZHRoID0gd2luZG93LmlubmVyV2lkdGggKiAwLjY0O1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBjZW50ZXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNCA/IHdpbmRvdy5pbm5lcldpZHRoIC0gNDAwIDogd2luZG93LmlubmVyV2lkdGggLSAzMDA7XG5cdFx0dGhpcy5tYXhXaWR0aCA9IGNlbnRlcldpZHRoICogMC42NDtcblx0fVxuXG5cdHNob3dTdGFydFN0ZXBzKGV2ZW50OiBhbnksIHN0YXJ0T3A6IGFueSkge1xuXHRcdGlmICh0aGlzLmF1dGhMZXZlbCgpIDwgNCkgcmV0dXJuO1xuXHRcdHN0YXJ0T3AudG9nZ2xlKGV2ZW50KTtcblx0fVxuXG5cdHNob3dFbmRTdGVwcyhldmVudDogYW55LCBlbmRPcDogYW55KSB7XG5cdFx0aWYgKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XG5cdFx0ZW5kT3AudG9nZ2xlKGV2ZW50KTtcblx0fVxuXG5cdGdldENsYXNzKGk6IG51bWJlciwgY2xhc3Nlczogc3RyaW5nW10pIHtcblx0XHRsZXQgcmVzdWx0ID0gWydzdGVwLWl0ZW0nLCAnZmxleCcsICdpdGVtcy1jZW50ZXInLCAnanVzdGlmeS1jZW50ZXInXTtcblx0XHRyZXN1bHQgPSByZXN1bHQuY29uY2F0KGNsYXNzZXMpO1xuXHRcdGlmICh0aGlzLmF1dGhMZXZlbCgpIDwgNCB8fCAhdGhpcy5pc0NsaWNrKCkpIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdjdXJzb3Itbm90LWFsbG93ZWQnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzdWx0LnB1c2goJ2N1cnNvci1wb2ludGVyIGFsbG93LWhvdmVyJyk7XG5cdFx0fVxuXHRcdGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuZGlzcGxheVN0ZXBzKCkhW2ldO1xuXHRcdGlmIChpID09IDApIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdzdGVwLWZpcnN0Jyk7XG5cdFx0fSBlbHNlIGlmIChpICsgMSA9PSB0aGlzLmRpc3BsYXlTdGVwcygpPy5sZW5ndGgpIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdzdGVwLWxhc3QnKTtcblx0XHR9XG5cdFx0aWYgKHZhbHVlID09IHRoaXMuY3VycmVudCgpKSB7XG5cdFx0XHRyZXN1bHQucHVzaCgnc3RlcC1hY3RpdmUnKTtcblx0XHRcdC8vIHJlc3VsdC5wdXNoKCdtZDpmbGV4LW5vbmUgZmxleC0xJyk7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQuam9pbignICcpO1xuXHR9XG5cblx0Y2hhbmdlU3RhdHVzKHN0ZXA6IGFueSkge1xuXHRcdHRoaXMuY2hhbmdlLmVtaXQoc3RlcC52YWx1ZSk7XG5cdH1cblxuXHRvblN0YXJ0U3RlcHNDaGFuZ2UoZXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IHN0ZXAgPSBldmVudC52YWx1ZTtcblx0XHR0aGlzLmNoYW5nZS5lbWl0KHN0ZXAudmFsdWUpO1xuXHR9XG5cblx0b25FbmRTdGVwc0NoYW5nZShldmVudDogYW55KSB7XG5cdFx0Y29uc3Qgc3RlcCA9IGV2ZW50LnZhbHVlO1xuXHRcdHRoaXMuY2hhbmdlLmVtaXQoc3RlcC52YWx1ZSk7XG5cdH1cblxuXHRhbHRlcm5hdGVXaWR0aExpc3QoKSB7XG5cdFx0bGV0IGluZGV4ID0gdGhpcy5zdGVwcygpIS5maW5kSW5kZXgoKHMpID0+IHMudmFsdWUgPT09IHRoaXMuY3VycmVudCgpKTtcblx0XHRpbmRleCA9IGluZGV4ID09PSAtMSA/IDAgOiBpbmRleDtcblx0XHR0aGlzLnN0YXJ0SW5kZXggPSBpbmRleDtcblx0XHR0aGlzLmVuZEluZGV4ID0gaW5kZXg7XG5cblx0XHRsZXQgbGVmdEluZGV4ID0gaW5kZXggLSAxO1xuXHRcdGxldCByaWdodEluZGV4ID0gaW5kZXggKyAxO1xuXHRcdGxldCB0dXJuID0gJ3JpZ2h0Jztcblx0XHRsZXQgdG90YWxXaWR0aCA9IHRoaXMud2lkdGhMaXN0W2luZGV4XTtcblxuXHRcdHdoaWxlIChsZWZ0SW5kZXggPj0gMCB8fCByaWdodEluZGV4IDwgdGhpcy53aWR0aExpc3QubGVuZ3RoKSB7XG5cdFx0XHRpZiAodHVybiA9PT0gJ3JpZ2h0JyAmJiByaWdodEluZGV4IDwgdGhpcy53aWR0aExpc3QubGVuZ3RoKSB7XG5cdFx0XHRcdHRvdGFsV2lkdGggKz0gdGhpcy53aWR0aExpc3RbcmlnaHRJbmRleF07XG5cdFx0XHRcdGlmICh0aGlzLmlzRXhjZWVkTWF4V2lkdGgodG90YWxXaWR0aCkpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmVuZEluZGV4ID0gcmlnaHRJbmRleDtcblx0XHRcdFx0cmlnaHRJbmRleCsrO1xuXHRcdFx0XHR0dXJuID0gJ2xlZnQnO1xuXHRcdFx0fSBlbHNlIGlmICh0dXJuID09PSAnbGVmdCcgJiYgbGVmdEluZGV4ID49IDApIHtcblx0XHRcdFx0dG90YWxXaWR0aCArPSB0aGlzLndpZHRoTGlzdFtsZWZ0SW5kZXhdO1xuXHRcdFx0XHRpZiAodGhpcy5pc0V4Y2VlZE1heFdpZHRoKHRvdGFsV2lkdGgpKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5zdGFydEluZGV4ID0gbGVmdEluZGV4O1xuXHRcdFx0XHRsZWZ0SW5kZXgtLTtcblx0XHRcdFx0dHVybiA9ICdyaWdodCc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0dXJuID0gcmlnaHRJbmRleCA8IHRoaXMud2lkdGhMaXN0Lmxlbmd0aCA/ICdyaWdodCcgOiAnbGVmdCc7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aXNFeGNlZWRNYXhXaWR0aCh0b3RhbFdpZHRoOiBudW1iZXIpIHtcblx0XHRpZiAoIXRoaXMubmVlZFNlbGZBZGp1c3RpbmcoKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHR0b3RhbFdpZHRoICs9IHRoaXMuc3RhcnRJbmRleCA9PT0gMCA/IDAgOiB0aGlzLlNUQVJUX0JVVFRPTl9XSURUSDtcblx0XHR0b3RhbFdpZHRoICs9IHRoaXMuZW5kSW5kZXggPT09IHRoaXMud2lkdGhMaXN0Lmxlbmd0aCAtIDEgPyAwIDogdGhpcy5FTkRfQlVUVE9OX1dJRFRIO1xuXHRcdHJldHVybiB0b3RhbFdpZHRoID49IHRoaXMubWF4V2lkdGg7XG5cdH1cblxuXHRoYW5kbGVTdGVwcygpIHtcblx0XHRjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHMoKSE7XG5cdFx0Y29uc3QgZXhjbHVkZVZhbHVlczogYW55W10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHN0ZXBzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoaSA8IHRoaXMuc3RhcnRJbmRleCkge1xuXHRcdFx0XHRleGNsdWRlVmFsdWVzLnB1c2goc3RlcHNbaV0udmFsdWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGkgPiB0aGlzLmVuZEluZGV4KSB7XG5cdFx0XHRcdGV4Y2x1ZGVWYWx1ZXMucHVzaChzdGVwc1tpXS52YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuc3RhcnRJbmRleCA+IDApIHtcblx0XHRcdHRoaXMuc3RhcnRTdGVwcyA9IHN0ZXBzLnNsaWNlKDAsIHRoaXMuc3RhcnRJbmRleCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGV4Y2x1ZGVWYWx1ZXMucHVzaCgnc3RhcnQnKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZW5kSW5kZXggPCBzdGVwcy5sZW5ndGggLSAxKSB7XG5cdFx0XHR0aGlzLmVuZFN0ZXBzID0gc3RlcHMuc2xpY2UodGhpcy5lbmRJbmRleCArIDEpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRleGNsdWRlVmFsdWVzLnB1c2goJ2VuZCcpO1xuXHRcdH1cblx0XHR0aGlzLmV4Y2x1ZGVWYWx1ZXMuc2V0KGV4Y2x1ZGVWYWx1ZXMpO1xuXHR9XG59XG4iLCJAaWYgKHZpc2libGUpIHtcclxuXHQ8ZGl2XHJcblx0XHQjY29udGFpbmVyXHJcblx0XHRjbGFzcz1cImZsZXggbXktMSB3LWZ1bGwganVzdGlmeS1lbmRcIj5cclxuXHRcdEBmb3IgKHN0IG9mIGRpc3BsYXlTdGVwcygpOyB0cmFjayBzdDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuXHRcdFx0QGlmIChzdC52YWx1ZSA9PT0gJ3N0YXJ0Jykge1xyXG5cdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdCNzdGFydEl0ZW1cclxuXHRcdFx0XHRcdFtjbGFzc109XCJnZXRDbGFzcyhpLCBbJ3N0YXJ0LWl0ZW0nXSlcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cInNob3dTdGFydFN0ZXBzKCRldmVudCwgc3RhcnRPcClcIj5cclxuXHRcdFx0XHRcdDxzcGFuPi4uLjwvc3Bhbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8cC1wb3BvdmVyXHJcblx0XHRcdFx0XHQjc3RhcnRPcFxyXG5cdFx0XHRcdFx0W3N0eWxlQ2xhc3NdPVwiJ3BvcC1zdGVwcyBzdGFydC1zdGVwcydcIlxyXG5cdFx0XHRcdFx0W2FwcGVuZFRvXT1cInN0YXJ0SXRlbVwiPlxyXG5cdFx0XHRcdFx0PHAtbGlzdGJveFxyXG5cdFx0XHRcdFx0XHRbb3B0aW9uc109XCJzdGFydFN0ZXBzXCJcclxuXHRcdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uU3RhcnRTdGVwc0NoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0b3B0aW9uTGFiZWw9XCJsYWJlbFwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwidy1mdWxsIG1kOnctNTZcIj5cclxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlXHJcblx0XHRcdFx0XHRcdFx0bGV0LWNvdW50cnlcclxuXHRcdFx0XHRcdFx0XHRwVGVtcGxhdGU9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2Pnt7IGNvdW50cnkuaTE4bktleSA/IGkxOG4uZmFueWkoY291bnRyeS5pMThuS2V5KSA6IGNvdW50cnkubGFiZWwgfX08L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDwvcC1saXN0Ym94PlxyXG5cdFx0XHRcdDwvcC1wb3BvdmVyPlxyXG5cdFx0XHR9IEBlbHNlIGlmIChzdC52YWx1ZSA9PT0gJ2VuZCcpIHtcclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHQjZW5kSXRlbVxyXG5cdFx0XHRcdFx0W2NsYXNzXT1cImdldENsYXNzKGksIFsnZW5kLWl0ZW0nXSlcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cInNob3dFbmRTdGVwcygkZXZlbnQsIGVuZE9wKVwiPlxyXG5cdFx0XHRcdFx0PHNwYW4+Li4uPC9zcGFuPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxwLXBvcG92ZXJcclxuXHRcdFx0XHRcdCNlbmRPcFxyXG5cdFx0XHRcdFx0W3N0eWxlQ2xhc3NdPVwiJ3BvcC1zdGVwcyBlbmQtc3RlcHMnXCJcclxuXHRcdFx0XHRcdFthcHBlbmRUb109XCJlbmRJdGVtXCI+XHJcblx0XHRcdFx0XHQ8cC1saXN0Ym94XHJcblx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImVuZFN0ZXBzXCJcclxuXHRcdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uRW5kU3RlcHNDaGFuZ2UoJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdG9wdGlvbkxhYmVsPVwibGFiZWxcIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cInctZnVsbCBtZDp3LTU2XCI+XHJcblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZVxyXG5cdFx0XHRcdFx0XHRcdGxldC1jb3VudHJ5XHJcblx0XHRcdFx0XHRcdFx0cFRlbXBsYXRlPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdj57eyBjb3VudHJ5LmkxOG5LZXkgPyBpMThuLmZhbnlpKGNvdW50cnkuaTE4bktleSkgOiBjb3VudHJ5LmxhYmVsIH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8L3AtbGlzdGJveD5cclxuXHRcdFx0XHQ8L3AtcG9wb3Zlcj5cclxuXHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0W2NsYXNzXT1cImdldENsYXNzKGksIFtdKVwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiY2hhbmdlU3RhdHVzKHN0KVwiPlxyXG5cdFx0XHRcdFx0PHNwYW4+e3sgc3QuaTE4bktleSA/IGkxOG4uZmFueWkoc3QuaTE4bktleSkgOiBzdC5sYWJlbCB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG59XHJcbiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9zdGVwcy9zdGVwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3N0ZXBzL3N0ZXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBYzFELE1BQU0sT0FBTyxjQUFjO0lBK0IxQixRQUFRO1FBQ1AsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQWxDdkMsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDekMsVUFBSyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDN0MsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLElB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b21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgUmVuZGVyZXIyLCBzaWduYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExpc3Rib3hNb2R1bGUgfSBmcm9tICdwcmltZW5nL2xpc3Rib3gnO1xuaW1wb3J0IHsgUG9wb3ZlciB9IGZyb20gJ3ByaW1lbmcvcG9wb3Zlcic7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5leHBvcnQgaW50ZXJmYWNlIFN0ZXAge1xuXHRsYWJlbDogc3RyaW5nO1xuXHRpMThuS2V5Pzogc3RyaW5nO1xuXHR2YWx1ZTogbnVtYmVyIHwgJ3N0YXJ0JyB8ICdlbmQnO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdjdXN0b20tc3RlcHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIExpc3Rib3hNb2R1bGUsIFBvcG92ZXJdLFxuXHR0ZW1wbGF0ZVVybDogJy4vc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vc3RlcHMuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTdGVwc0NvbXBvbmVudCB7XG5cdEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmO1xuXHRtb2RlbExvZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblx0bmVlZFNlbGZBZGp1c3RpbmcgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblx0c3RlcHMgPSBpbnB1dDxTdGVwW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cdGRpc3BsYXlTdGVwcyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRpZiAodGhpcy5zdGVwcygpID09PSB1bmRlZmluZWQpIHJldHVybiBbXTtcblx0XHRjb25zdCBzdGVwcyA9IFsuLi50aGlzLnN0ZXBzKCkhXTtcblx0XHRzdGVwcy51bnNoaWZ0KHsgdmFsdWU6ICdzdGFydCcsIGxhYmVsOiAnLi4uJyB9KTtcblx0XHRzdGVwcy5wdXNoKHsgdmFsdWU6ICdlbmQnLCBsYWJlbDogJy4uLicgfSk7XG5cdFx0cmV0dXJuIHN0ZXBzLmZpbHRlcigoc3RlcCkgPT4gIXRoaXMuZXhjbHVkZVZhbHVlcygpLmluY2x1ZGVzKHN0ZXAudmFsdWUpKTtcblx0fSk7XG5cdGV4Y2x1ZGVWYWx1ZXMgPSBzaWduYWw8KG51bWJlciB8ICdzdGFydCcgfCAnZW5kJylbXT4oW10pO1xuXHRjdXJyZW50ID0gaW5wdXQ8bnVtYmVyPigyKTtcblx0aTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cdGNoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XG5cdGF1dGhMZXZlbCA9IGlucHV0PG51bWJlcj4oLTEpO1xuXHRpc0NsaWNrID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cblx0d2lkdGhMaXN0OiBudW1iZXJbXSA9IFtdO1xuXHRTVEFSVF9CVVRUT05fV0lEVEggPSAzMjtcblx0RU5EX0JVVFRPTl9XSURUSCA9IDQ3O1xuXHRTVEVQX0lURU1fTUFSR0lOID0gMjtcblxuXHRzdGFydEluZGV4ID0gMDtcblx0ZW5kSW5kZXggPSAwO1xuXHRzdGFydFN0ZXBzOiBTdGVwW10gPSBbXTtcblx0ZW5kU3RlcHM6IFN0ZXBbXSA9IFtdO1xuXHRtYXhXaWR0aCA9IDA7XG5cblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG5cdG9uUmVzaXplKCkge1xuXHRcdHRoaXMuY2FsY01heFdpZHRoKCk7XG5cdFx0dGhpcy5yZWZyZXNoU3RlcHMoKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0bGV0IGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQoKTtcblx0XHRcdFx0aWYgKGN1cnJlbnQgIT0gMCAmJiB0aGlzLnN0ZXBzKCkhLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHR0aGlzLnJlZnJlc2hTdGVwcygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNhbGNNYXhXaWR0aCgpO1xuXHRcdFx0XHR0aGlzLnJlZnJlc2hTdGVwcygpO1xuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGNvbnN0IHN0ZXBzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnN0ZXBzKS5zdWJzY3JpYmUoKHN0ZXBzKSA9PiB7XG5cdFx0XHRpZiAoc3RlcHMgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXHRcdFx0dGhpcy5pbml0U3RlcHMoKTtcblx0XHRcdHN0ZXBzJC51bnN1YnNjcmliZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0aW5pdFN0ZXBzKCkge1xuXHRcdHRoaXMuY2FsY01heFdpZHRoKCk7XG5cdFx0dGhpcy5pbml0V2lkdGhMaXN0KCk7XG5cdFx0dGhpcy5yZWZyZXNoU3RlcHMoKTtcblx0fVxuXG5cdHJlZnJlc2hTdGVwcygpIHtcblx0XHR0aGlzLmFsdGVybmF0ZVdpZHRoTGlzdCgpO1xuXHRcdHRoaXMuaGFuZGxlU3RlcHMoKTtcblx0fVxuXG5cdGluaXRXaWR0aExpc3QoKSB7XG5cdFx0dGhpcy53aWR0aExpc3QgPSBbXTtcblx0XHRjb25zdCBjaGlsZHJlbiA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50KS5jaGlsZHJlblswXS5jaGlsZHJlbjtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoIWNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygnc3RlcC1pdGVtJykpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdzdGFydC1pdGVtJykpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdlbmQtaXRlbScpKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy53aWR0aExpc3QucHVzaCgoY2hpbGRyZW5baV0ub2Zmc2V0V2lkdGggfHwgMCkgKyB0aGlzLlNURVBfSVRFTV9NQVJHSU4pO1xuXHRcdH1cblx0fVxuXG5cdGNhbGNNYXhXaWR0aCgpIHtcblx0XHRpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHtcblx0XHRcdHRoaXMubWF4V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuOTY7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICghdGhpcy5tb2RlbExvZygpKSB7XG5cdFx0XHR0aGlzLm1heFdpZHRoID0gd2luZG93LmlubmVyV2lkdGggKiAwLjY0O1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBjZW50ZXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNCA/IHdpbmRvdy5pbm5lcldpZHRoIC0gMzAwIDogd2luZG93LmlubmVyV2lkdGggLSA0MDA7XG5cdFx0dGhpcy5tYXhXaWR0aCA9IGNlbnRlcldpZHRoICogMC42NDtcblx0fVxuXG5cdHNob3dTdGFydFN0ZXBzKGV2ZW50OiBhbnksIHN0YXJ0T3A6IGFueSkge1xuXHRcdGlmICh0aGlzLmF1dGhMZXZlbCgpIDwgNCkgcmV0dXJuO1xuXHRcdHN0YXJ0T3AudG9nZ2xlKGV2ZW50KTtcblx0fVxuXG5cdHNob3dFbmRTdGVwcyhldmVudDogYW55LCBlbmRPcDogYW55KSB7XG5cdFx0aWYgKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XG5cdFx0ZW5kT3AudG9nZ2xlKGV2ZW50KTtcblx0fVxuXG5cdGdldENsYXNzKGk6IG51bWJlciwgY2xhc3Nlczogc3RyaW5nW10pIHtcblx0XHRsZXQgcmVzdWx0ID0gWydzdGVwLWl0ZW0nLCAnZmxleCcsICdpdGVtcy1jZW50ZXInLCAnanVzdGlmeS1jZW50ZXInXTtcblx0XHRyZXN1bHQgPSByZXN1bHQuY29uY2F0KGNsYXNzZXMpO1xuXHRcdGlmICh0aGlzLmF1dGhMZXZlbCgpIDwgNCB8fCAhdGhpcy5pc0NsaWNrKCkpIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdjdXJzb3Itbm90LWFsbG93ZWQnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzdWx0LnB1c2goJ2N1cnNvci1wb2ludGVyIGFsbG93LWhvdmVyJyk7XG5cdFx0fVxuXHRcdGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuZGlzcGxheVN0ZXBzKCkhW2ldO1xuXHRcdGlmIChpID09IDApIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdzdGVwLWZpcnN0Jyk7XG5cdFx0fSBlbHNlIGlmIChpICsgMSA9PSB0aGlzLmRpc3BsYXlTdGVwcygpPy5sZW5ndGgpIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdzdGVwLWxhc3QnKTtcblx0XHR9XG5cdFx0aWYgKHZhbHVlID09IHRoaXMuY3VycmVudCgpKSB7XG5cdFx0XHRyZXN1bHQucHVzaCgnc3RlcC1hY3RpdmUnKTtcblx0XHRcdC8vIHJlc3VsdC5wdXNoKCdtZDpmbGV4LW5vbmUgZmxleC0xJyk7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQuam9pbignICcpO1xuXHR9XG5cblx0Y2hhbmdlU3RhdHVzKHN0ZXA6IGFueSkge1xuXHRcdHRoaXMuY2hhbmdlLmVtaXQoc3RlcC52YWx1ZSk7XG5cdH1cblxuXHRvblN0YXJ0U3RlcHNDaGFuZ2UoZXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IHN0ZXAgPSBldmVudC52YWx1ZTtcblx0XHR0aGlzLmNoYW5nZS5lbWl0KHN0ZXAudmFsdWUpO1xuXHR9XG5cblx0b25FbmRTdGVwc0NoYW5nZShldmVudDogYW55KSB7XG5cdFx0Y29uc3Qgc3RlcCA9IGV2ZW50LnZhbHVlO1xuXHRcdHRoaXMuY2hhbmdlLmVtaXQoc3RlcC52YWx1ZSk7XG5cdH1cblxuXHRhbHRlcm5hdGVXaWR0aExpc3QoKSB7XG5cdFx0bGV0IGluZGV4ID0gdGhpcy5zdGVwcygpIS5maW5kSW5kZXgoKHMpID0+IHMudmFsdWUgPT09IHRoaXMuY3VycmVudCgpKTtcblx0XHRpbmRleCA9IGluZGV4ID09PSAtMSA/IDAgOiBpbmRleDtcblx0XHR0aGlzLnN0YXJ0SW5kZXggPSBpbmRleDtcblx0XHR0aGlzLmVuZEluZGV4ID0gaW5kZXg7XG5cblx0XHRsZXQgbGVmdEluZGV4ID0gaW5kZXggLSAxO1xuXHRcdGxldCByaWdodEluZGV4ID0gaW5kZXggKyAxO1xuXHRcdGxldCB0dXJuID0gJ3JpZ2h0Jztcblx0XHRsZXQgdG90YWxXaWR0aCA9IHRoaXMud2lkdGhMaXN0W2luZGV4XTtcblx0XHRcblx0XHR3aGlsZSAobGVmdEluZGV4ID49IDAgfHwgcmlnaHRJbmRleCA8IHRoaXMud2lkdGhMaXN0Lmxlbmd0aCkge1xuXHRcdFx0aWYgKHR1cm4gPT09ICdyaWdodCcgJiYgcmlnaHRJbmRleCA8IHRoaXMud2lkdGhMaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHR0b3RhbFdpZHRoICs9IHRoaXMud2lkdGhMaXN0W3JpZ2h0SW5kZXhdO1xuXHRcdFx0XHRpZiAodGhpcy5pc0V4Y2VlZE1heFdpZHRoKHRvdGFsV2lkdGgpKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5lbmRJbmRleCA9IHJpZ2h0SW5kZXg7XG5cdFx0XHRcdHJpZ2h0SW5kZXgrKztcblx0XHRcdFx0dHVybiA9ICdsZWZ0Jztcblx0XHRcdH0gZWxzZSBpZiAodHVybiA9PT0gJ2xlZnQnICYmIGxlZnRJbmRleCA+PSAwKSB7XG5cdFx0XHRcdHRvdGFsV2lkdGggKz0gdGhpcy53aWR0aExpc3RbbGVmdEluZGV4XTtcblx0XHRcdFx0aWYgKHRoaXMuaXNFeGNlZWRNYXhXaWR0aCh0b3RhbFdpZHRoKSkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuc3RhcnRJbmRleCA9IGxlZnRJbmRleDtcblx0XHRcdFx0bGVmdEluZGV4LS07XG5cdFx0XHRcdHR1cm4gPSAncmlnaHQnO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHVybiA9IHJpZ2h0SW5kZXggPCB0aGlzLndpZHRoTGlzdC5sZW5ndGggPyAncmlnaHQnIDogJ2xlZnQnO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlzRXhjZWVkTWF4V2lkdGgodG90YWxXaWR0aDogbnVtYmVyKSB7XG5cdFx0aWYgKCF0aGlzLm5lZWRTZWxmQWRqdXN0aW5nKCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0dG90YWxXaWR0aCArPSB0aGlzLnN0YXJ0SW5kZXggPT09IDAgPyAwIDogdGhpcy5TVEFSVF9CVVRUT05fV0lEVEg7XG5cdFx0dG90YWxXaWR0aCArPSB0aGlzLmVuZEluZGV4ID09PSB0aGlzLndpZHRoTGlzdC5sZW5ndGggLSAxID8gMCA6IHRoaXMuRU5EX0JVVFRPTl9XSURUSDtcblx0XHRjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLXRvdGFsV2lkdGgnLCB0b3RhbFdpZHRoLCB0aGlzLm1heFdpZHRoKTtcblx0XHRyZXR1cm4gdG90YWxXaWR0aCA+PSB0aGlzLm1heFdpZHRoO1xuXHR9XG5cblx0aGFuZGxlU3RlcHMoKSB7XG5cdFx0Y29uc3Qgc3RlcHMgPSB0aGlzLnN0ZXBzKCkhO1xuXHRcdGNvbnN0IGV4Y2x1ZGVWYWx1ZXM6IGFueVtdID0gW107XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdGVwcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKGkgPCB0aGlzLnN0YXJ0SW5kZXgpIHtcblx0XHRcdFx0ZXhjbHVkZVZhbHVlcy5wdXNoKHN0ZXBzW2ldLnZhbHVlKTtcblx0XHRcdH1cblx0XHRcdGlmIChpID4gdGhpcy5lbmRJbmRleCkge1xuXHRcdFx0XHRleGNsdWRlVmFsdWVzLnB1c2goc3RlcHNbaV0udmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnN0YXJ0SW5kZXggPiAwKSB7XG5cdFx0XHR0aGlzLnN0YXJ0U3RlcHMgPSBzdGVwcy5zbGljZSgwLCB0aGlzLnN0YXJ0SW5kZXgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRleGNsdWRlVmFsdWVzLnB1c2goJ3N0YXJ0Jyk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmVuZEluZGV4IDwgc3RlcHMubGVuZ3RoIC0gMSkge1xuXHRcdFx0dGhpcy5lbmRTdGVwcyA9IHN0ZXBzLnNsaWNlKHRoaXMuZW5kSW5kZXggKyAxKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZXhjbHVkZVZhbHVlcy5wdXNoKCdlbmQnKTtcblx0XHR9XG5cdFx0dGhpcy5leGNsdWRlVmFsdWVzLnNldChleGNsdWRlVmFsdWVzKTtcblx0fVxufVxuIiwiPGRpdlxyXG5cdCNjb250YWluZXJcclxuXHRjbGFzcz1cImZsZXggbXktMSB3LWZ1bGwganVzdGlmeS1lbmRcIj5cclxuXHRAZm9yIChzdCBvZiBkaXNwbGF5U3RlcHMoKTsgdHJhY2sgc3Q7IGxldCBpID0gJGluZGV4KSB7XHJcblx0XHRAaWYgKHN0LnZhbHVlID09PSAnc3RhcnQnKSB7XHJcblx0XHRcdDxkaXZcclxuXHRcdFx0XHQjc3RhcnRJdGVtXHJcblx0XHRcdFx0W2NsYXNzXT1cImdldENsYXNzKGksIFsnc3RhcnQtaXRlbSddKVwiXHJcblx0XHRcdFx0KGNsaWNrKT1cInNob3dTdGFydFN0ZXBzKCRldmVudCwgc3RhcnRPcClcIj5cclxuXHRcdFx0XHQ8c3Bhbj4uLi48L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8cC1wb3BvdmVyXHJcblx0XHRcdFx0I3N0YXJ0T3BcclxuXHRcdFx0XHRbc3R5bGVDbGFzc109XCIncG9wLXN0ZXBzIHN0YXJ0LXN0ZXBzJ1wiXHJcblx0XHRcdFx0W2FwcGVuZFRvXT1cInN0YXJ0SXRlbVwiPlxyXG5cdFx0XHRcdDxwLWxpc3Rib3hcclxuXHRcdFx0XHRcdFtvcHRpb25zXT1cInN0YXJ0U3RlcHNcIlxyXG5cdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uU3RhcnRTdGVwc0NoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdG9wdGlvbkxhYmVsPVwibGFiZWxcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJ3LWZ1bGwgbWQ6dy01NlwiPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlXHJcblx0XHRcdFx0XHRcdGxldC1jb3VudHJ5XHJcblx0XHRcdFx0XHRcdHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdj57eyBjb3VudHJ5LmkxOG5LZXkgPyBpMThuLmZhbnlpKGNvdW50cnkuaTE4bktleSkgOiBjb3VudHJ5LmxhYmVsIH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHQ8L3AtbGlzdGJveD5cclxuXHRcdFx0PC9wLXBvcG92ZXI+XHJcblx0XHR9IEBlbHNlIGlmIChzdC52YWx1ZSA9PT0gJ2VuZCcpIHtcclxuXHRcdFx0PGRpdlxyXG5cdFx0XHRcdCNlbmRJdGVtXHJcblx0XHRcdFx0W2NsYXNzXT1cImdldENsYXNzKGksIFsnZW5kLWl0ZW0nXSlcIlxyXG5cdFx0XHRcdChjbGljayk9XCJzaG93RW5kU3RlcHMoJGV2ZW50LCBlbmRPcClcIj5cclxuXHRcdFx0XHQ8c3Bhbj4uLi48L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8cC1wb3BvdmVyXHJcblx0XHRcdFx0I2VuZE9wXHJcblx0XHRcdFx0W3N0eWxlQ2xhc3NdPVwiJ3BvcC1zdGVwcyBlbmQtc3RlcHMnXCJcclxuXHRcdFx0XHRbYXBwZW5kVG9dPVwiZW5kSXRlbVwiPlxyXG5cdFx0XHRcdDxwLWxpc3Rib3hcclxuXHRcdFx0XHRcdFtvcHRpb25zXT1cImVuZFN0ZXBzXCJcclxuXHRcdFx0XHRcdChvbkNoYW5nZSk9XCJvbkVuZFN0ZXBzQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRcdFx0b3B0aW9uTGFiZWw9XCJsYWJlbFwiXHJcblx0XHRcdFx0XHRjbGFzcz1cInctZnVsbCBtZDp3LTU2XCI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGVcclxuXHRcdFx0XHRcdFx0bGV0LWNvdW50cnlcclxuXHRcdFx0XHRcdFx0cFRlbXBsYXRlPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2Pnt7IGNvdW50cnkuaTE4bktleSA/IGkxOG4uZmFueWkoY291bnRyeS5pMThuS2V5KSA6IGNvdW50cnkubGFiZWwgfX08L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdDwvcC1saXN0Ym94PlxyXG5cdFx0XHQ8L3AtcG9wb3Zlcj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8ZGl2XHJcblx0XHRcdFx0W2NsYXNzXT1cImdldENsYXNzKGksIFtdKVwiXHJcblx0XHRcdFx0KGNsaWNrKT1cImNoYW5nZVN0YXR1cyhzdClcIj5cclxuXHRcdFx0XHQ8c3Bhbj57eyBzdC5pMThuS2V5ID8gaTE4bi5mYW55aShzdC5pMThuS2V5KSA6IHN0LmxhYmVsIH19PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHR9XHJcbjwvZGl2PlxyXG4iXX0=