@impartner/design-components 2.2.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +1 -0
  2. package/esm2022/lib/alert/alert.component.mjs +4 -4
  3. package/esm2022/lib/alert/alert.module.mjs +4 -4
  4. package/esm2022/lib/avatar/avatar.component.mjs +3 -3
  5. package/esm2022/lib/avatar/avatar.module.mjs +4 -4
  6. package/esm2022/lib/avatar-group/avatar-group.component.mjs +3 -3
  7. package/esm2022/lib/avatar-group/avatar-group.module.mjs +4 -4
  8. package/esm2022/lib/backdrop/backdrop.component.mjs +3 -3
  9. package/esm2022/lib/backdrop/backdrop.module.mjs +4 -4
  10. package/esm2022/lib/badge/badge.component.mjs +4 -4
  11. package/esm2022/lib/badge/badge.module.mjs +4 -4
  12. package/esm2022/lib/branding/branded.directive.mjs +3 -3
  13. package/esm2022/lib/branding/branding.module.mjs +4 -4
  14. package/esm2022/lib/breadcrumb/breadcrumb-item.component.mjs +3 -3
  15. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +3 -3
  16. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +4 -4
  17. package/esm2022/lib/button/button.component.mjs +3 -3
  18. package/esm2022/lib/button/button.module.mjs +4 -4
  19. package/esm2022/lib/button-group/button-group.component.mjs +3 -3
  20. package/esm2022/lib/button-group/button-group.module.mjs +4 -4
  21. package/esm2022/lib/card-heading/card-heading.component.mjs +3 -3
  22. package/esm2022/lib/card-heading/card-heading.module.mjs +4 -4
  23. package/esm2022/lib/data-card/data-card.component.mjs +3 -3
  24. package/esm2022/lib/data-card/data-card.module.mjs +4 -4
  25. package/esm2022/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.mjs +4 -4
  26. package/esm2022/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.mjs +8 -5
  27. package/esm2022/lib/datetime-picker/components/datetime-picker/datetime-picker.component.mjs +7 -8
  28. package/esm2022/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.mjs +4 -4
  29. package/esm2022/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.mjs +3 -3
  30. package/esm2022/lib/datetime-picker/datetime-picker.module.mjs +4 -4
  31. package/esm2022/lib/datetime-picker/services/datetime-formatter/datetime-formatter.service.mjs +7 -7
  32. package/esm2022/lib/design-components.module.mjs +4 -4
  33. package/esm2022/lib/dropdown/components/dropdown-item/dropdown-item.component.mjs +3 -3
  34. package/esm2022/lib/dropdown/dropdown.component.mjs +4 -4
  35. package/esm2022/lib/dropdown/dropdown.module.mjs +4 -4
  36. package/esm2022/lib/file-upload/directives/file-drop.directive.mjs +4 -4
  37. package/esm2022/lib/file-upload/file-upload.component.mjs +4 -4
  38. package/esm2022/lib/file-upload/file-upload.module.mjs +4 -4
  39. package/esm2022/lib/file-upload/pipes/human-readable-byte-size.pipe.mjs +4 -4
  40. package/esm2022/lib/form-field/component/directives/corner-hint.directive.mjs +3 -3
  41. package/esm2022/lib/form-field/component/directives/error.directive.mjs +3 -3
  42. package/esm2022/lib/form-field/component/directives/form-root.directive.mjs +6 -6
  43. package/esm2022/lib/form-field/component/directives/hint.directive.mjs +3 -3
  44. package/esm2022/lib/form-field/component/directives/label.directive.mjs +3 -3
  45. package/esm2022/lib/form-field/component/directives/prefix.directive.mjs +3 -3
  46. package/esm2022/lib/form-field/component/directives/suffix.directive.mjs +3 -3
  47. package/esm2022/lib/form-field/component/form-field.component.mjs +4 -4
  48. package/esm2022/lib/form-field/component/form-field.module.mjs +4 -4
  49. package/esm2022/lib/form-field/controls/checkbox/checkbox.component.mjs +4 -4
  50. package/esm2022/lib/form-field/controls/checkbox/checkbox.module.mjs +4 -4
  51. package/esm2022/lib/form-field/controls/input/input.directive.mjs +4 -4
  52. package/esm2022/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +4 -4
  53. package/esm2022/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +4 -4
  54. package/esm2022/lib/form-field/controls/radio/radio.module.mjs +4 -4
  55. package/esm2022/lib/form-field/controls/select/option/select-option.component.mjs +3 -3
  56. package/esm2022/lib/form-field/controls/select/option-display/select-option-display.component.mjs +4 -4
  57. package/esm2022/lib/form-field/controls/select/option-group/select-option-group.component.mjs +3 -3
  58. package/esm2022/lib/form-field/controls/select/select-model.mjs +1 -1
  59. package/esm2022/lib/form-field/controls/select/select.component.mjs +7 -7
  60. package/esm2022/lib/form-field/controls/select/select.module.mjs +4 -4
  61. package/esm2022/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.mjs +4 -4
  62. package/esm2022/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +3 -3
  63. package/esm2022/lib/form-field/controls/shared/toggle/toggle.component.mjs +4 -4
  64. package/esm2022/lib/form-field/controls/shared/toggle/toggle.module.mjs +4 -4
  65. package/esm2022/lib/form-field/controls/tag-select/tag-select.component.mjs +4 -4
  66. package/esm2022/lib/form-field/impdc-forms.module.mjs +4 -4
  67. package/esm2022/lib/form-field/services/error-state-matcher.service.mjs +6 -6
  68. package/esm2022/lib/form-field/services/unique-selection-dispatcher.service.mjs +4 -4
  69. package/esm2022/lib/form-field/shared/error-state.mixin.mjs +1 -1
  70. package/esm2022/lib/form-field/shared/form-field-control.mjs +3 -3
  71. package/esm2022/lib/icon/icon.component.mjs +4 -4
  72. package/esm2022/lib/icon/icon.module.mjs +4 -4
  73. package/esm2022/lib/modal/modal.component.mjs +4 -4
  74. package/esm2022/lib/modal/modal.module.mjs +4 -4
  75. package/esm2022/lib/pagination/pagination.component.mjs +4 -4
  76. package/esm2022/lib/pagination/pagination.module.mjs +4 -4
  77. package/esm2022/lib/progress-bar/progress-bar.component.mjs +3 -3
  78. package/esm2022/lib/progress-bar/progress-bar.module.mjs +4 -4
  79. package/esm2022/lib/scrollable/scrollable.component.mjs +4 -4
  80. package/esm2022/lib/scrollable/scrollable.module.mjs +4 -4
  81. package/esm2022/lib/select-icon/select-icon.component.mjs +4 -4
  82. package/esm2022/lib/select-icon/select-icon.module.mjs +4 -4
  83. package/esm2022/lib/size-detection/directive/size-detector.directive.mjs +4 -4
  84. package/esm2022/lib/size-detection/size-detection.module.mjs +4 -4
  85. package/esm2022/lib/spinner/spinner.component.mjs +3 -3
  86. package/esm2022/lib/spinner/spinner.module.mjs +4 -4
  87. package/esm2022/lib/table/components/bulk-actions/bulk-actions.component.mjs +3 -3
  88. package/esm2022/lib/table/components/column-heading/column-heading.component.mjs +3 -3
  89. package/esm2022/lib/table/components/row-actions/row-actions.component.mjs +4 -4
  90. package/esm2022/lib/table/containers/table.component.mjs +5 -5
  91. package/esm2022/lib/table/directives/collapse-monitor.directive.mjs +4 -4
  92. package/esm2022/lib/table/directives/table-inject-component.directive.mjs +4 -4
  93. package/esm2022/lib/table/directives/table.directive.mjs +3 -3
  94. package/esm2022/lib/table/helpers/table-theme.helper.mjs +1 -1
  95. package/esm2022/lib/table/table.module.mjs +4 -4
  96. package/esm2022/lib/tag/tag.component.mjs +4 -4
  97. package/esm2022/lib/text-highlight/text-highlight.component.mjs +4 -4
  98. package/esm2022/lib/text-highlight/text-highlight.module.mjs +4 -4
  99. package/esm2022/services/interaction.service.mjs +4 -4
  100. package/fesm2022/impartner-design-components.mjs +337 -335
  101. package/fesm2022/impartner-design-components.mjs.map +1 -1
  102. package/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.d.ts +1 -0
  103. package/lib/datetime-picker/components/datetime-picker/datetime-picker.component.d.ts +0 -2
  104. package/package.json +7 -7
@@ -235,15 +235,15 @@ export class SelectIconComponent extends _SelectIconComponentBase {
235
235
  _buildChangeEvent(value) {
236
236
  return new ImpdcSelectIconChange(this, value);
237
237
  }
238
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectIconComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ErrorStateMatcher }, { token: IMPDC_FORM_ROOT, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
239
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: SelectIconComponent, selector: "impdc-select-icon", inputs: { disabled: "disabled", tabIndex: "tabIndex", allowSearch: "allowSearch", iconOptions: "iconOptions", showText: "showText", showSelectedText: "showSelectedText", placeholder: "placeholder", errorStateMatcher: "errorStateMatcher", value: "value", id: "id", required: "required" }, outputs: { selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "focus": "_onFocus(); focus()" }, properties: { "attr.id": "id", "attr.tabindex": "tabIndex", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.form-select": "true", "class.is-invalid": "errorState", "class.impdc-form-field-control": "true", "class.impdc-select-icon--required": "required", "class.impdc-select-icon--disabled": "disabled", "class.impdc-select-icon--invalid": "errorState", "class.impdc-select-icon--empty": "empty" }, classAttribute: "impdc-select-icon" }, providers: [
238
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectIconComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ErrorStateMatcher }, { token: IMPDC_FORM_ROOT, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
239
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SelectIconComponent, selector: "impdc-select-icon", inputs: { disabled: "disabled", tabIndex: "tabIndex", allowSearch: "allowSearch", iconOptions: "iconOptions", showText: "showText", showSelectedText: "showSelectedText", placeholder: "placeholder", errorStateMatcher: "errorStateMatcher", value: "value", id: "id", required: "required" }, outputs: { selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "focus": "_onFocus(); focus()" }, properties: { "attr.id": "id", "attr.tabindex": "tabIndex", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.form-select": "true", "class.is-invalid": "errorState", "class.impdc-form-field-control": "true", "class.impdc-select-icon--required": "required", "class.impdc-select-icon--disabled": "disabled", "class.impdc-select-icon--invalid": "errorState", "class.impdc-select-icon--empty": "empty" }, classAttribute: "impdc-select-icon" }, providers: [
240
240
  {
241
241
  provide: ImpdcFormFieldControl,
242
242
  useExisting: SelectIconComponent
243
243
  }
244
244
  ], viewQueries: [{ propertyName: "_toggleButtonRef", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n ngbDropdown\n autoClose=\"outside\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"w-100\">\n <button\n #toggleButton\n class=\"impdc-select-icon--toggle btn border-0 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n ngbDropdownToggle>\n <ng-container [ngSwitch]=\"empty\">\n <span\n class=\"impdc-select-icon--text impdc-select-icon--placeholder\"\n *ngSwitchCase=\"true\">\n {{ placeholder }}\n </span>\n <div\n class=\"impdc-select-icon--text impdc-select-icon--value-text\"\n *ngSwitchCase=\"false\">\n <i impdc-icon [name]=\"value ?? undefined\"></i>\n <span *ngIf=\"showSelectedText\" class=\"ms-2\">{{ value }}</span>\n </div>\n </ng-container>\n </button>\n <div ngbDropdownMenu class=\"impdc-select-icon--dropdown-menu\" tabindex=\"-1\">\n <div *ngIf=\"allowSearch\" class=\"impdc-select-icon--search\">\n <impdc-form-field>\n <span impdcTextPrefix><i impdc-icon name=\"search\"></i></span>\n <input\n impdcInput\n [formControl]=\"searchControl\"\n class=\"impdc-select-icon--search-input\"\n type=\"search\" />\n </impdc-form-field>\n </div>\n <div class=\"impdc-select-icon--grid\">\n <button\n *ngFor=\"let iconName of filteredOptions$ | async\"\n type=\"button\"\n (click)=\"selectIcon(iconName)\"\n class=\"impdc-select-icon--option\"\n [class.selected]=\"value === iconName\"\n [title]=\"iconName\"\n [attr.aria-labelledby]=\"showText ? id + '_' + iconName : null\">\n <div class=\"impdc-select-icon--option-container\">\n <i impdc-icon [name]=\"iconName\" class=\"fs-2xl\"></i>\n </div>\n <div\n id=\"{{ id }}_{{ iconName }}\"\n class=\"impdc-select-icon--option-label\"\n [class.sr-only]=\"!showText\">\n {{ iconName }}\n </div>\n </button>\n </div>\n </div>\n</div>\n", styles: [":host{padding:0!important;position:relative}:host.impdc-select-icon--disabled{background-color:var(--impd-color-gray-100)}.impdc-select-icon--toggle{font-weight:inherit;padding-right:3.6rem;-webkit-user-select:none;user-select:none;width:100%}:host-context(.is-invalid) .impdc-select-icon--toggle{padding-right:6.6rem}.impdc-select-icon--text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.impdc-select-icon--dropdown-menu{background-color:var(--impd-color-white);color:var(--impd-color-gray-600);max-width:51.2rem;min-width:32rem;overflow:hidden;width:100%}.impdc-select-icon--search{margin:var(--impd-size-2);font-size:var(--impd-font-size-sm)}.impdc-select-icon--grid{display:grid;align-items:start;grid-template-columns:repeat(auto-fit,minmax(4.8rem,1fr));gap:var(--impd-size-4);width:100%;max-height:var(--impd-size-40);overflow-y:auto;overflow-x:hidden;padding:var(--impd-size-4);-webkit-user-select:none;user-select:none}button[ngbDropdownToggle].dropdown-toggle:after{display:none}.impdc-select-icon--option{padding:0;background:unset;border:none}.impdc-select-icon--option:focus{outline:0}.impdc-select-icon--option-container{height:4rem;width:4rem;margin-left:auto;margin-right:auto;display:flex;align-items:center;justify-content:center;border-radius:50%;justify-items:center}.selected>.impdc-select-icon--option-container,:hover>.impdc-select-icon--option-container,:focus>.impdc-select-icon--option-container{background-color:var(--impartner-hex-primary);color:var(--impartner-hex-white)}.impdc-select-icon--option-label{text-align:center;font-size:1rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.FormFieldComponent, selector: "impdc-form-field", exportAs: ["impdcFormField"] }, { kind: "directive", type: i5.PrefixDirective, selector: "[impdcPrefix], [impdcTextPrefix]", inputs: ["impdcTextPrefix"] }, { kind: "directive", type: i6.InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }, { kind: "component", type: i7.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }, { kind: "directive", type: i8.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i8.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i8.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
245
245
  }
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectIconComponent, decorators: [{
246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectIconComponent, decorators: [{
247
247
  type: Component,
248
248
  args: [{ selector: 'impdc-select-icon', inputs: ['disabled', 'tabIndex'], changeDetection: ChangeDetectionStrategy.OnPush, host: {
249
249
  class: 'impdc-select-icon',
@@ -305,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
305
305
  }], required: [{
306
306
  type: Input
307
307
  }] } });
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9zZWxlY3QtaWNvbi9zZWxlY3QtaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3NlbGVjdC1pY29uL3NlbGVjdC1pY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBSVgsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFFSCxTQUFTLEVBQ1QsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFnQiwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFJTCxxQkFBcUIsRUFFckIsZUFBZSxFQUNmLGFBQWEsRUFDYixlQUFlLEVBQ2YsYUFBYSxFQUNkLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBRXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBbUIsTUFBMkIsRUFBUyxLQUFVO1FBQTlDLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBSztJQUFHLENBQUM7Q0FDdEU7QUFFRCxNQUFNLHdCQUF3QixHQUFHLGFBQWEsQ0FDNUMsYUFBYSxDQUNYLGVBQWUsQ0FDYjtJQUdFLFlBQ1MseUJBQTRDLEVBQzVDLFNBQXdCLEVBQ3hCLFdBQW1CLEVBQ25CLGdCQUFvQyxFQUNwQyxTQUEyQjtRQUozQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQW1CO1FBQzVDLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVBwQixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFRaEQsQ0FBQztDQUNMLENBQ0YsQ0FDRixDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFnQ0gsTUFBTSxPQUFPLG1CQUNYLFNBQVEsd0JBQXdCO0lBaUNoQyxJQUFXLFdBQVc7UUFDcEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csV0FBVyxDQUFDLFdBQXFCO1FBQzFDLElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFnQkQ7Ozs7T0FJRztJQUNILElBQ1csV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQVcsV0FBVyxDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBbUJELFlBQ21CLGVBQWtDLEVBQ25ELHlCQUE0QyxFQUNQLFNBQXdCLEVBQ2pELFdBQW1CLEVBQ25CLGdCQUFvQyxFQUM1QixTQUFvQjtRQUV4QyxLQUFLLENBQ0gseUJBQXlCLEVBQ3pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFNBQVMsQ0FDVixDQUFDO1FBYmUsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBL0VsQyxrQkFBYSxHQUFHLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFNBQUksR0FBRyxxQkFBcUIsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNoRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUVmLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUN4RCxnQkFBZ0IsQ0FDakIsQ0FBQztRQUVNLGlCQUFZLEdBQXlCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQW1EekIsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFLcEMsK0RBQStEO1FBRS9DLG9CQUFlLEdBQzdCLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRTVDOzs7O1dBSUc7UUFFYSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBeUl4RCxXQUFNLEdBQWtCLElBQUksQ0FBQztRQW1DM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVYLGdCQUFXLEdBQVcsbUJBQW1CLENBQUM7UUFDMUMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUE3SjlDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFN0IsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2hFLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDYixZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO1lBQ3BDLHFCQUFxQjtZQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFO1NBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO2FBQ3pCO1lBRUQsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckQsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUN2QixNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQ3JDO1FBRUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYztJQUNQLEtBQUssQ0FBQyxPQUFzQjtRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQscUJBQXFCO0lBRXJCLGNBQWM7SUFDUCxTQUFTO1FBQ2QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVqQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUMvQyxJQUNFLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO2dCQUNuQyxTQUFTLENBQUMsUUFBUSxLQUFLLElBQUk7Z0JBQzNCLFNBQVMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFDcEM7Z0JBQ0EsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLEVBQUUsUUFBUSxDQUFDO2FBQ3JDO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7U0FDM0M7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNQLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QywwR0FBMEc7UUFDMUcsMEZBQTBGO1FBQzFGLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNQLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsMEJBQTBCO0lBRTFCLGNBQWM7SUFDUCxVQUFVLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO0lBQ1AsZ0JBQWdCLENBQUMsRUFBd0I7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWM7SUFDUCxpQkFBaUIsQ0FBQyxFQUFZO1FBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO0lBQ1AsZ0JBQWdCLENBQUUsVUFBbUI7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsMkJBQTJCO0lBRTNCLElBQ1csS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBVyxLQUFLLENBQUMsS0FBb0I7UUFDbkMsTUFBTSxRQUFRLEdBQ1osQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFFakUsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUdELElBQ1csRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBQ0QsSUFBVyxFQUFFLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUdEOzs7OztPQUtHO0lBQ0gsSUFDVyxRQUFRO1FBQ2pCLE9BQU8sQ0FDTCxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQzFELEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLEtBQW1CO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFNRCxlQUFlO0lBRUwsZ0JBQWdCLENBQUMsTUFBZTtRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTNCLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUyxVQUFVLENBQUMsUUFBZ0I7UUFDbkMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRVMsUUFBUTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sT0FBTztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXRCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN6QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQW9CO1FBQzVDLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs4R0EvVFUsbUJBQW1CLG9GQWdHUixlQUFlO2tHQWhHMUIsbUJBQW1CLDA5QkFQbkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixXQUFXLEVBQUUsbUJBQW1CO2FBQ2pDO1NBQ0YsdUhBYWdELFVBQVUsdUZDeEg3RCw0aUVBNkRBOzsyRkRnRGEsbUJBQW1CO2tCQS9CL0IsU0FBUzsrQkFDRSxtQkFBbUIsVUFJckIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLG1CQUNmLHVCQUF1QixDQUFDLE1BQU0sUUFFekM7d0JBQ0osS0FBSyxFQUFFLG1CQUFtQjt3QkFDMUIsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLGlCQUFpQixFQUFFLFVBQVU7d0JBQzdCLHNCQUFzQixFQUFFLHFCQUFxQjt3QkFDN0Msc0JBQXNCLEVBQUUscUJBQXFCO3dCQUM3QyxxQkFBcUIsRUFBRSxZQUFZO3dCQUNuQyxxQkFBcUIsRUFBRSxNQUFNO3dCQUM3QixvQkFBb0IsRUFBRSxZQUFZO3dCQUNsQyxrQ0FBa0MsRUFBRSxNQUFNO3dCQUMxQyxxQ0FBcUMsRUFBRSxVQUFVO3dCQUNqRCxxQ0FBcUMsRUFBRSxVQUFVO3dCQUNqRCxvQ0FBb0MsRUFBRSxZQUFZO3dCQUNsRCxrQ0FBa0MsRUFBRSxPQUFPO3dCQUMzQyxTQUFTLEVBQUUscUJBQXFCO3FCQUNqQyxhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFdBQVcscUJBQXFCO3lCQUNqQztxQkFDRjs7MEJBa0dFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLElBQUk7OzBCQUFJLFFBQVE7eUNBdkZULGdCQUFnQjtzQkFEekIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBcUJ0RCxXQUFXO3NCQURqQixLQUFLO2dCQVdLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBWUMsUUFBUTtzQkFEZCxLQUFLO2dCQVFDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFTSyxXQUFXO3NCQURyQixLQUFLO2dCQVdVLGlCQUFpQjtzQkFEaEMsS0FBSztnQkFLVSxlQUFlO3NCQUQ5QixNQUFNO2dCQVVTLFdBQVc7c0JBRDFCLE1BQU07Z0JBOEhJLEtBQUs7c0JBRGYsS0FBSztnQkFnQkssRUFBRTtzQkFEWixLQUFLO2dCQWlCSyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZSAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gJ25hbm9pZCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29ucyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eVZhbHVlIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7XG4gIEVycm9yU3RhdGVNYXRjaGVyLFxuICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgSUhhc0Vycm9yU3RhdGUsXG4gIEltcGRjRm9ybUZpZWxkQ29udHJvbCxcbiAgSW1wZGNGb3JtUm9vdCxcbiAgSU1QRENfRk9STV9ST09ULFxuICBtaXhpbkRpc2FibGVkLFxuICBtaXhpbkVycm9yU3RhdGUsXG4gIG1peGluVGFiSW5kZXhcbn0gZnJvbSAnLi4vZm9ybS1maWVsZCc7XG5cbmV4cG9ydCBjbGFzcyBJbXBkY1NlbGVjdEljb25DaGFuZ2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc291cmNlOiBTZWxlY3RJY29uQ29tcG9uZW50LCBwdWJsaWMgdmFsdWU6IGFueSkge31cbn1cblxuY29uc3QgX1NlbGVjdEljb25Db21wb25lbnRCYXNlID0gbWl4aW5UYWJJbmRleChcbiAgbWl4aW5EaXNhYmxlZChcbiAgICBtaXhpbkVycm9yU3RhdGUoXG4gICAgICBjbGFzcyB7XG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAgIHB1YmxpYyBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgICAgICBwdWJsaWMgX2Zvcm1Sb290OiBJbXBkY0Zvcm1Sb290LFxuICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgICAgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbFxuICAgICAgICApIHt9XG4gICAgICB9XG4gICAgKVxuICApXG4pO1xuXG4vKipcbiAqIFRoZSBgU2VsZWN0SWNvbkNvbXBvbmVudGAgKGA8aW1wZGMtc2VsZWN0LWljb25gKSBpcyBhIHNlbGVjdCBkcm9wZG93biB3aXRoIHNlYXJjaCB0aGF0IHNob3dzIGFsbCBzdGFuZGFyZCBpY29ucyBmcm9tIEJvb3RzdHJhcCA1LlxuICogVG8gdXNlLCBpbXBvcnQgYFNlbGVjdEljb25Nb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtc2VsZWN0LWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWljb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtaWNvbi5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAndGFiSW5kZXgnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdpbXBkYy1zZWxlY3QtaWNvbicsXG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIuYXJpYS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmZvcm0tc2VsZWN0XSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmlzLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtZm9ybS1maWVsZC1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC1pY29uLS1yZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtc2VsZWN0LWljb24tLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtaWNvbi0taW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtaWNvbi0tZW1wdHldJzogJ2VtcHR5JyxcbiAgICAnKGZvY3VzKSc6ICdfb25Gb2N1cygpOyBmb2N1cygpJ1xuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0SWNvbkNvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RJY29uQ29tcG9uZW50XG4gIGV4dGVuZHMgX1NlbGVjdEljb25Db21wb25lbnRCYXNlXG4gIGltcGxlbWVudHNcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBJbXBkY0Zvcm1GaWVsZENvbnRyb2w8c3RyaW5nIHwgbnVsbD4sXG4gICAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gICAgSUhhc0Vycm9yU3RhdGUsXG4gICAgRG9DaGVjayxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95XG57XG4gIEBWaWV3Q2hpbGQoJ3RvZ2dsZUJ1dHRvbicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByb3RlY3RlZCBfdG9nZ2xlQnV0dG9uUmVmITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlcmVkT3B0aW9ucyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF91aWQgPSBgaW1wZGMtc2VsZWN0LWljb24tJHtuYW5vaWQoKX1gO1xuICBwcm90ZWN0ZWQgX2Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ljb25PcHRpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8cmVhZG9ubHkgc3RyaW5nW10+KFxuICAgIEZvbnRBd2Vzb21lSWNvbnNcbiAgKTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNDb250cm9sPzogQWJzdHJhY3RDb250cm9sIHwgbnVsbDtcbiAgcHJpdmF0ZSBfY3ZhT25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgX2N2YU9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBTZXQgd2hldGhlciBvciBub3QgYW4gaW5wdXQgZmllbGQgd2lsbCBhcHBlYXIgZm9yIHNlYXJjaGluZyBhbmRcbiAgICogZmlsdGVyaW5nIGljb24gb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFsbG93U2VhcmNoOiBib29sZWFuO1xuXG4gIHB1YmxpYyBnZXQgaWNvbk9wdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5faWNvbk9wdGlvbnNTdWJqZWN0LnZhbHVlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgc2V0IG9mIEZvbnRBd2Vzb21lIGljb24gb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaWNvbk9wdGlvbnMoaWNvbk9wdGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGljb25PcHRpb25zKSB7XG4gICAgICB0aGlzLl9pY29uT3B0aW9uc1N1YmplY3QubmV4dChbLi4uaWNvbk9wdGlvbnNdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIGljb24gbmFtZXMgYXMgbGFiZWxzIGZvciBpY29uIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93VGV4dDogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGljb24gaW5zaWRlIHRoZSBjb250cm9sLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1NlbGVjdGVkVGV4dDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBsYWNlaG9sZGVyIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCB3aGVuIG5vIHNlbGVjdGlvbiBoYXMgYmVlbiBtYWRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcXC0gU2VsZWN0IC1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cbiAgcHVibGljIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXIgPSAnLSBTZWxlY3QgLSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGVycm9yU3RhdGVNYXRjaGVyITogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgLyoqIEV2ZW50cyBmaXJlIHdoZW4gc2VsZWN0aW9uIGhhcyBiZWVuIGNoYW5nZWQgYnkgdGhlIHVzZXIuICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW1wZGNTZWxlY3RJY29uQ2hhbmdlPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJbXBkY1NlbGVjdEljb25DaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50cyBmaXJlIHdoZW4gcmF3IHZhbHVlIG9mIHNlbGVjdCBjaGFuZ2VzLiBNYWlubHkgZXhpc3RzIHRvIGhhbmRsZVxuICAgKiB0d28td2F5IGJpbmRpbmcgb2YgYHZhbHVlYCBpbnB1dCBwcm9wZXJ0eS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChJTVBEQ19GT1JNX1JPT1QpIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICBAT3B0aW9uYWwoKSBfcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgIEBPcHRpb25hbCgpIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIG5nQ29udHJvbDogTmdDb250cm9sXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgIF9mb3JtUm9vdCxcbiAgICAgIF9wYXJlbnRGb3JtLFxuICAgICAgX3BhcmVudEZvcm1Hcm91cCxcbiAgICAgIG5nQ29udHJvbFxuICAgICk7XG5cbiAgICB0aGlzLmFsbG93U2VhcmNoID0gZmFsc2U7XG4gICAgdGhpcy5zaG93VGV4dCA9IHRydWU7XG4gICAgdGhpcy5zaG93U2VsZWN0ZWRUZXh0ID0gdHJ1ZTtcblxuICAgIGNvbnN0IGRlYm91bmNlZFNlYXJjaFZhbHVlcyA9IHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgZGVib3VuY2VkU2VhcmNoVmFsdWVzLFxuICAgICAgdGhpcy5faWNvbk9wdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3NlYXJjaFRlcm0sIGljb25PcHRpb25zXSkgPT4ge1xuICAgICAgICBpZiAoIXNlYXJjaFRlcm0pIHtcbiAgICAgICAgICByZXR1cm4gWy4uLmljb25PcHRpb25zXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlYXJjaFRlcm1Mb3dlckNhc2UgPSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBpY29uT3B0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgb3B0aW9uID0+IG9wdGlvbi50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGVybUxvd2VyQ2FzZSkgPiAtMVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gdGhpcy5pZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnZhbHVlO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLl90b2dnbGVCdXR0b25SZWYubmF0aXZlRWxlbWVudC5mb2N1cyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qIExpZmVjeWNsZSBIb29rcyAqL1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICBpZiAoIW5nQ29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wcmV2aW91c0NvbnRyb2wgIT09IG5nQ29udHJvbC5jb250cm9sKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzQ29udHJvbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIG5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCAmJlxuICAgICAgICBuZ0NvbnRyb2wuZGlzYWJsZWQgIT09IHRoaXMuZGlzYWJsZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gbmdDb250cm9sPy5kaXNhYmxlZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHJldmlvdXNDb250cm9sID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIE1hbmFnaW5nIGRpc2FibGVkIHN0YXRlIGlzIGhhbmRsZWQgdmlhIHRoZSBgbWl4aW5EaXNhYmxlZGAgbWl4aW4vZ2VuZXJhdG9yLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBzaWduYWxcbiAgICAvLyB0byB0aGUgcGFyZW50IGZvcm0gZmllbGQgc28gaXQgY2FuIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIHdoZW4gZGlzYWJsZWQgc3RhdGUgaXMgY2hhbmdlZC5cbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyogQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wgKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgKHZhbHVlICYmIHRoaXMuaWNvbk9wdGlvbnMuZmluZChvcHQgPT4gb3B0ID09PSB2YWx1ZSkpIHx8IG51bGw7XG5cbiAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9pZCE6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBzZXQgcmVxdWlyZWRuZXNzIG9mIGNvbnRyb2wgaW4gYSB0ZW1wbGF0ZS1iYXNlZCBtYW5uZXI7XG4gICAqIG5vdCBuZWNlc3Nhcnkgd2hlbiB1c2luZyB0aGUgQW5ndWxhciByZWFjdGl2ZSBmb3JtcyBBUEkgYW5kIGByZXF1aXJlZGAgdmFsaWRhdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fcmVxdWlyZWQgPz9cbiAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz9cbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkIHx8IHRoaXMuX2Ryb3Bkb3duT3BlbjtcbiAgfVxuICBwcm90ZWN0ZWQgX2ZvY3VzZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbFR5cGU6IHN0cmluZyA9ICdpbXBkYy1zZWxlY3QtaWNvbic7XG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0c0FmZml4ZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qIEludGVybmFscyAqL1xuXG4gIHByb3RlY3RlZCBoYW5kbGVPcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Ryb3Bkb3duT3BlbiA9IGlzT3BlbjtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wucmVzZXQoKTtcblxuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHRoaXMuX29uRm9jdXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEljb24oaWNvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpY29uTmFtZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IGljb25OYW1lO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5fY3ZhT25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2J1aWxkQ2hhbmdlRXZlbnQodGhpcy52YWx1ZSkpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2Ryb3Bkb3duT3Blbikge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfb25Gb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyB0aGUgQ1ZBIHRvdWNoZWQgY2FsbGJhY2sgb25seSBpZiB0aGUgZHJvcGRvd24gaXMgY2xvc2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9vbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLl9kcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMuX2N2YU9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRDaGFuZ2VFdmVudCh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IEltcGRjU2VsZWN0SWNvbkNoYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBJbXBkY1NlbGVjdEljb25DaGFuZ2UodGhpcywgdmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2XG4gIG5nYkRyb3Bkb3duXG4gIGF1dG9DbG9zZT1cIm91dHNpZGVcIlxuICBjb250YWluZXI9XCJib2R5XCJcbiAgZHJvcGRvd25DbGFzcz1cImltcGFydG5lci1oZXhcIlxuICAob3BlbkNoYW5nZSk9XCJoYW5kbGVPcGVuQ2hhbmdlKCRldmVudClcIlxuICBjbGFzcz1cInctMTAwXCI+XG4gIDxidXR0b25cbiAgICAjdG9nZ2xlQnV0dG9uXG4gICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtaWNvbi0tdG9nZ2xlIGJ0biBib3JkZXItMCB0ZXh0LXN0YXJ0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgbmdiRHJvcGRvd25Ub2dnbGU+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZW1wdHlcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LWljb24tLXRleHQgaW1wZGMtc2VsZWN0LWljb24tLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtaWNvbi0tdGV4dCBpbXBkYy1zZWxlY3QtaWNvbi0tdmFsdWUtdGV4dFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuICAgICAgICA8aSBpbXBkYy1pY29uIFtuYW1lXT1cInZhbHVlID8/IHVuZGVmaW5lZFwiPjwvaT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93U2VsZWN0ZWRUZXh0XCIgY2xhc3M9XCJtcy0yXCI+e3sgdmFsdWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG4gIDxkaXYgbmdiRHJvcGRvd25NZW51IGNsYXNzPVwiaW1wZGMtc2VsZWN0LWljb24tLWRyb3Bkb3duLW1lbnVcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgPGRpdiAqbmdJZj1cImFsbG93U2VhcmNoXCIgY2xhc3M9XCJpbXBkYy1zZWxlY3QtaWNvbi0tc2VhcmNoXCI+XG4gICAgICA8aW1wZGMtZm9ybS1maWVsZD5cbiAgICAgICAgPHNwYW4gaW1wZGNUZXh0UHJlZml4PjxpIGltcGRjLWljb24gbmFtZT1cInNlYXJjaFwiPjwvaT48L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGltcGRjSW5wdXRcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtaWNvbi0tc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCIgLz5cbiAgICAgIDwvaW1wZGMtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaW1wZGMtc2VsZWN0LWljb24tLWdyaWRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IGljb25OYW1lIG9mIGZpbHRlcmVkT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0SWNvbihpY29uTmFtZSlcIlxuICAgICAgICBjbGFzcz1cImltcGRjLXNlbGVjdC1pY29uLS1vcHRpb25cIlxuICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwidmFsdWUgPT09IGljb25OYW1lXCJcbiAgICAgICAgW3RpdGxlXT1cImljb25OYW1lXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInNob3dUZXh0ID8gaWQgKyAnXycgKyBpY29uTmFtZSA6IG51bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcGRjLXNlbGVjdC1pY29uLS1vcHRpb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgPGkgaW1wZGMtaWNvbiBbbmFtZV09XCJpY29uTmFtZVwiIGNsYXNzPVwiZnMtMnhsXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGlkPVwie3sgaWQgfX1fe3sgaWNvbk5hbWUgfX1cIlxuICAgICAgICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LWljb24tLW9wdGlvbi1sYWJlbFwiXG4gICAgICAgICAgW2NsYXNzLnNyLW9ubHldPVwiIXNob3dUZXh0XCI+XG4gICAgICAgICAge3sgaWNvbk5hbWUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9zZWxlY3QtaWNvbi9zZWxlY3QtaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3NlbGVjdC1pY29uL3NlbGVjdC1pY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBSVgsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFFSCxTQUFTLEVBQ1QsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFnQiwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFJTCxxQkFBcUIsRUFFckIsZUFBZSxFQUNmLGFBQWEsRUFDYixlQUFlLEVBQ2YsYUFBYSxFQUNkLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBRXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBbUIsTUFBMkIsRUFBUyxLQUFVO1FBQTlDLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQVMsVUFBSyxH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Tzt3QkFDM0MsU0FBUyxFQUFFLHFCQUFxQjtxQkFDakMsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLHFCQUFxQjt5QkFDakM7cUJBQ0Y7OzBCQWtHRSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFDUixRQUFROzswQkFDUixJQUFJOzswQkFBSSxRQUFRO3lDQXZGVCxnQkFBZ0I7c0JBRHpCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXFCdEQsV0FBVztzQkFEakIsS0FBSztnQkFXSyxXQUFXO3NCQURyQixLQUFLO2dCQVlDLFFBQVE7c0JBRGQsS0FBSztnQkFRQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBU0ssV0FBVztzQkFEckIsS0FBSztnQkFXVSxpQkFBaUI7c0JBRGhDLEtBQUs7Z0JBS1UsZUFBZTtzQkFEOUIsTUFBTTtnQkFVUyxXQUFXO3NCQUQxQixNQUFNO2dCQThISSxLQUFLO3NCQURmLEtBQUs7Z0JBZ0JLLEVBQUU7c0JBRFosS0FBSztnQkFpQkssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGUgKi9cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBOZ0NvbnRyb2wsXG4gIE5nRm9ybSxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcyc7XG5pbXBvcnQge1xuICBFcnJvclN0YXRlTWF0Y2hlcixcbiAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gIElIYXNFcnJvclN0YXRlLFxuICBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gIEltcGRjRm9ybVJvb3QsXG4gIElNUERDX0ZPUk1fUk9PVCxcbiAgbWl4aW5EaXNhYmxlZCxcbiAgbWl4aW5FcnJvclN0YXRlLFxuICBtaXhpblRhYkluZGV4XG59IGZyb20gJy4uL2Zvcm0tZmllbGQnO1xuXG5leHBvcnQgY2xhc3MgSW1wZGNTZWxlY3RJY29uQ2hhbmdlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHNvdXJjZTogU2VsZWN0SWNvbkNvbXBvbmVudCwgcHVibGljIHZhbHVlOiBhbnkpIHt9XG59XG5cbmNvbnN0IF9TZWxlY3RJY29uQ29tcG9uZW50QmFzZSA9IG1peGluVGFiSW5kZXgoXG4gIG1peGluRGlzYWJsZWQoXG4gICAgbWl4aW5FcnJvclN0YXRlKFxuICAgICAgY2xhc3Mge1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgICAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgICAgcHVibGljIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGxcbiAgICAgICAgKSB7fVxuICAgICAgfVxuICAgIClcbiAgKVxuKTtcblxuLyoqXG4gKiBUaGUgYFNlbGVjdEljb25Db21wb25lbnRgIChgPGltcGRjLXNlbGVjdC1pY29uYCkgaXMgYSBzZWxlY3QgZHJvcGRvd24gd2l0aCBzZWFyY2ggdGhhdCBzaG93cyBhbGwgc3RhbmRhcmQgaWNvbnMgZnJvbSBCb290c3RyYXAgNS5cbiAqIFRvIHVzZSwgaW1wb3J0IGBTZWxlY3RJY29uTW9kdWxlYCBvciBhbm90aGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgYW5kIGV4cG9ydHMgdGhhdCBtb2R1bGUgZnJvbSBgQGltcGFydG5lci9kZXNpZ24tY29tcG9uZW50c2AuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLXNlbGVjdC1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1pY29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWljb24uY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3RhYkluZGV4J10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnaW1wZGMtc2VsZWN0LWljb24nLFxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiSW5kZXgnLFxuICAgICdbYXR0ci5hcmlhLXJlcXVpcmVkXSc6ICdyZXF1aXJlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIuYXJpYS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQudG9TdHJpbmcoKScsXG4gICAgJ1thdHRyLmFyaWEtaW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1tjbGFzcy5mb3JtLXNlbGVjdF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5pcy1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmltcGRjLWZvcm0tZmllbGQtY29udHJvbF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtaWNvbi0tcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC1pY29uLS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtc2VsZWN0LWljb24tLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtc2VsZWN0LWljb24tLWVtcHR5XSc6ICdlbXB0eScsXG4gICAgJyhmb2N1cyknOiAnX29uRm9jdXMoKTsgZm9jdXMoKSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSW1wZGNGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdEljb25Db21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0SWNvbkNvbXBvbmVudFxuICBleHRlbmRzIF9TZWxlY3RJY29uQ29tcG9uZW50QmFzZVxuICBpbXBsZW1lbnRzXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgSW1wZGNGb3JtRmllbGRDb250cm9sPHN0cmluZyB8IG51bGw+LFxuICAgIElDYW5VcGRhdGVFcnJvclN0YXRlLFxuICAgIElIYXNFcnJvclN0YXRlLFxuICAgIERvQ2hlY2ssXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveVxue1xuICBAVmlld0NoaWxkKCd0b2dnbGVCdXR0b24nLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgX3RvZ2dsZUJ1dHRvblJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJlZE9wdGlvbnMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdWlkID0gYGltcGRjLXNlbGVjdC1pY29uLSR7bmFub2lkKCl9YDtcbiAgcHJvdGVjdGVkIF9kcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pY29uT3B0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHJlYWRvbmx5IHN0cmluZ1tdPihcbiAgICBGb250QXdlc29tZUljb25zXG4gICk7XG4gIHByaXZhdGUgX3ByZXZpb3VzQ29udHJvbD86IEFic3RyYWN0Q29udHJvbCB8IG51bGw7XG4gIHByaXZhdGUgX2N2YU9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9jdmFPblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgb3Igbm90IGFuIGlucHV0IGZpZWxkIHdpbGwgYXBwZWFyIGZvciBzZWFyY2hpbmcgYW5kXG4gICAqIGZpbHRlcmluZyBpY29uIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbGxvd1NlYXJjaDogYm9vbGVhbjtcblxuICBwdWJsaWMgZ2V0IGljb25PcHRpb25zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2ljb25PcHRpb25zU3ViamVjdC52YWx1ZV07XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHNldCBvZiBGb250QXdlc29tZSBpY29uIG9wdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGljb25PcHRpb25zKGljb25PcHRpb25zOiBzdHJpbmdbXSkge1xuICAgIGlmIChpY29uT3B0aW9ucykge1xuICAgICAgdGhpcy5faWNvbk9wdGlvbnNTdWJqZWN0Lm5leHQoWy4uLmljb25PcHRpb25zXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBpY29uIG5hbWVzIGFzIGxhYmVscyBmb3IgaWNvbiBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1RleHQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBpY29uIGluc2lkZSB0aGUgY29udHJvbC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dTZWxlY3RlZFRleHQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFjZWhvbGRlciB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBubyBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXFwtIFNlbGVjdCAtXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG4gIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyID0gJy0gU2VsZWN0IC0nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBlcnJvclN0YXRlTWF0Y2hlciE6IEVycm9yU3RhdGVNYXRjaGVyO1xuXG4gIC8qKiBFdmVudHMgZmlyZSB3aGVuIHNlbGVjdGlvbiBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHRoZSB1c2VyLiAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEltcGRjU2VsZWN0SWNvbkNoYW5nZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8SW1wZGNTZWxlY3RJY29uQ2hhbmdlPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudHMgZmlyZSB3aGVuIHJhdyB2YWx1ZSBvZiBzZWxlY3QgY2hhbmdlcy4gTWFpbmx5IGV4aXN0cyB0byBoYW5kbGVcbiAgICogdHdvLXdheSBiaW5kaW5nIG9mIGB2YWx1ZWAgaW5wdXQgcHJvcGVydHkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSU1QRENfRk9STV9ST09UKSBfZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgQE9wdGlvbmFsKCkgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICBfZm9ybVJvb3QsXG4gICAgICBfcGFyZW50Rm9ybSxcbiAgICAgIF9wYXJlbnRGb3JtR3JvdXAsXG4gICAgICBuZ0NvbnRyb2xcbiAgICApO1xuXG4gICAgdGhpcy5hbGxvd1NlYXJjaCA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1RleHQgPSB0cnVlO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkVGV4dCA9IHRydWU7XG5cbiAgICBjb25zdCBkZWJvdW5jZWRTZWFyY2hWYWx1ZXMgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlcyxcbiAgICAgIHRoaXMuX2ljb25PcHRpb25zU3ViamVjdC5hc09ic2VydmFibGUoKVxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtzZWFyY2hUZXJtLCBpY29uT3B0aW9uc10pID0+IHtcbiAgICAgICAgaWYgKCFzZWFyY2hUZXJtKSB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5pY29uT3B0aW9uc107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWFyY2hUZXJtTG93ZXJDYXNlID0gc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gaWNvbk9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIG9wdGlvbiA9PiBvcHRpb24udG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRlcm1Mb3dlckNhc2UpID4gLTFcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IHRoaXMuaWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5fdG9nZ2xlQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICAvKiBMaWZlY3ljbGUgSG9va3MgKi9cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMubmdDb250cm9sO1xuXG4gICAgaWYgKCFuZ0NvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcHJldmlvdXNDb250cm9sICE9PSBuZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9wcmV2aW91c0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBuZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwgJiZcbiAgICAgICAgbmdDb250cm9sLmRpc2FibGVkICE9PSB0aGlzLmRpc2FibGVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG5nQ29udHJvbD8uZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ByZXZpb3VzQ29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBNYW5hZ2luZyBkaXNhYmxlZCBzdGF0ZSBpcyBoYW5kbGVkIHZpYSB0aGUgYG1peGluRGlzYWJsZWRgIG1peGluL2dlbmVyYXRvciwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gc2lnbmFsXG4gICAgLy8gdG8gdGhlIHBhcmVudCBmb3JtIGZpZWxkIHNvIGl0IGNhbiBydW4gY2hhbmdlIGRldGVjdGlvbiB3aGVuIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQuXG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyogSW1wZGNGb3JtRmllbGRDb250cm9sICovXG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIGNvbnN0IG5ld1ZhbHVlID1cbiAgICAgICh2YWx1ZSAmJiB0aGlzLmljb25PcHRpb25zLmZpbmQob3B0ID0+IG9wdCA9PT0gdmFsdWUpKSB8fCBudWxsO1xuXG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faWQgPSB2YWx1ZSB8fCB0aGlzLl91aWQ7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByb3RlY3RlZCBfaWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2V0IHJlcXVpcmVkbmVzcyBvZiBjb250cm9sIGluIGEgdGVtcGxhdGUtYmFzZWQgbWFubmVyO1xuICAgKiBub3QgbmVjZXNzYXJ5IHdoZW4gdXNpbmcgdGhlIEFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMgQVBJIGFuZCBgcmVxdWlyZWRgIHZhbGlkYXRvci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX3JlcXVpcmVkID8/XG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/XG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZCB8fCB0aGlzLl9kcm9wZG93bk9wZW47XG4gIH1cbiAgcHJvdGVjdGVkIF9mb2N1c2VkID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xUeXBlOiBzdHJpbmcgPSAnaW1wZGMtc2VsZWN0LWljb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNBZmZpeGVzOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiBJbnRlcm5hbHMgKi9cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3BlbkNoYW5nZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9kcm9wZG93bk9wZW4gPSBpc09wZW47XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnJlc2V0KCk7XG5cbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB0aGlzLl9vbkZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29uQmx1cigpO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RJY29uKGljb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaWNvbk5hbWUgIT09IHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBpY29uTmFtZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuX2N2YU9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLl9idWlsZENoYW5nZUV2ZW50KHRoaXMudmFsdWUpKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uRm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgdGhlIENWQSB0b3VjaGVkIGNhbGxiYWNrIG9ubHkgaWYgdGhlIGRyb3Bkb3duIGlzIGNsb3NlZC5cbiAgICovXG4gIHByb3RlY3RlZCBfb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5fZHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLl9jdmFPblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkQ2hhbmdlRXZlbnQodmFsdWU6IHN0cmluZyB8IG51bGwpOiBJbXBkY1NlbGVjdEljb25DaGFuZ2Uge1xuICAgIHJldHVybiBuZXcgSW1wZGNTZWxlY3RJY29uQ2hhbmdlKHRoaXMsIHZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdlxuICBuZ2JEcm9wZG93blxuICBhdXRvQ2xvc2U9XCJvdXRzaWRlXCJcbiAgY29udGFpbmVyPVwiYm9keVwiXG4gIGRyb3Bkb3duQ2xhc3M9XCJpbXBhcnRuZXItaGV4XCJcbiAgKG9wZW5DaGFuZ2UpPVwiaGFuZGxlT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgY2xhc3M9XCJ3LTEwMFwiPlxuICA8YnV0dG9uXG4gICAgI3RvZ2dsZUJ1dHRvblxuICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LWljb24tLXRvZ2dsZSBidG4gYm9yZGVyLTAgdGV4dC1zdGFydFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIG5nYkRyb3Bkb3duVG9nZ2xlPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImVtcHR5XCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImltcGRjLXNlbGVjdC1pY29uLS10ZXh0IGltcGRjLXNlbGVjdC1pY29uLS1wbGFjZWhvbGRlclwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LWljb24tLXRleHQgaW1wZGMtc2VsZWN0LWljb24tLXZhbHVlLXRleHRcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgPGkgaW1wZGMtaWNvbiBbbmFtZV09XCJ2YWx1ZSA/PyB1bmRlZmluZWRcIj48L2k+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd1NlbGVjdGVkVGV4dFwiIGNsYXNzPVwibXMtMlwiPnt7IHZhbHVlIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBjbGFzcz1cImltcGRjLXNlbGVjdC1pY29uLS1kcm9wZG93bi1tZW51XCIgdGFiaW5kZXg9XCItMVwiPlxuICAgIDxkaXYgKm5nSWY9XCJhbGxvd1NlYXJjaFwiIGNsYXNzPVwiaW1wZGMtc2VsZWN0LWljb24tLXNlYXJjaFwiPlxuICAgICAgPGltcGRjLWZvcm0tZmllbGQ+XG4gICAgICAgIDxzcGFuIGltcGRjVGV4dFByZWZpeD48aSBpbXBkYy1pY29uIG5hbWU9XCJzZWFyY2hcIj48L2k+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpbXBkY0lucHV0XG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LWljb24tLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiIC8+XG4gICAgICA8L2ltcGRjLWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImltcGRjLXNlbGVjdC1pY29uLS1ncmlkXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBpY29uTmFtZSBvZiBmaWx0ZXJlZE9wdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEljb24oaWNvbk5hbWUpXCJcbiAgICAgICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtaWNvbi0tb3B0aW9uXCJcbiAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInZhbHVlID09PSBpY29uTmFtZVwiXG4gICAgICAgIFt0aXRsZV09XCJpY29uTmFtZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJzaG93VGV4dCA/IGlkICsgJ18nICsgaWNvbk5hbWUgOiBudWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBkYy1zZWxlY3QtaWNvbi0tb3B0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxpIGltcGRjLWljb24gW25hbWVdPVwiaWNvbk5hbWVcIiBjbGFzcz1cImZzLTJ4bFwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBpZD1cInt7IGlkIH19X3t7IGljb25OYW1lIH19XCJcbiAgICAgICAgICBjbGFzcz1cImltcGRjLXNlbGVjdC1pY29uLS1vcHRpb24tbGFiZWxcIlxuICAgICAgICAgIFtjbGFzcy5zci1vbmx5XT1cIiFzaG93VGV4dFwiPlxuICAgICAgICAgIHt7IGljb25OYW1lIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -7,21 +7,21 @@ import { SelectIconComponent } from './select-icon.component';
7
7
  import { IconModule } from '../icon';
8
8
  import * as i0 from "@angular/core";
9
9
  export class SelectIconModule {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: SelectIconModule, declarations: [SelectIconComponent], imports: [CommonModule,
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: SelectIconModule, declarations: [SelectIconComponent], imports: [CommonModule,
12
12
  ImpdcFormsModule,
13
13
  IconModule,
14
14
  NgbTypeaheadModule,
15
15
  NgbDropdownModule,
16
16
  ReactiveFormsModule], exports: [SelectIconComponent] }); }
17
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectIconModule, imports: [CommonModule,
17
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectIconModule, imports: [CommonModule,
18
18
  ImpdcFormsModule,
19
19
  IconModule,
20
20
  NgbTypeaheadModule,
21
21
  NgbDropdownModule,
22
22
  ReactiveFormsModule] }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectIconModule, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectIconModule, decorators: [{
25
25
  type: NgModule,
26
26
  args: [{
27
27
  declarations: [SelectIconComponent],
@@ -29,10 +29,10 @@ export class SizeDetectorDirective {
29
29
  this._resizeObserver &&
30
30
  this._resizeObserver.unobserve(this._elementRef.nativeElement);
31
31
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SizeDetectorDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
33
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.1", type: SizeDetectorDirective, selector: "[impdcSizeDetector]", outputs: { resized: "resized" }, ngImport: i0 }); }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SizeDetectorDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
33
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: SizeDetectorDirective, selector: "[impdcSizeDetector]", outputs: { resized: "resized" }, ngImport: i0 }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SizeDetectorDirective, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SizeDetectorDirective, decorators: [{
36
36
  type: Directive,
37
37
  args: [{
38
38
  selector: '[impdcSizeDetector]'
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
40
40
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { resized: [{
41
41
  type: Output
42
42
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS1kZXRlY3Rvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3NpemUtZGV0ZWN0aW9uL2RpcmVjdGl2ZS9zaXplLWRldGVjdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFFWixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7O0FBTXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBNkIsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFKMUIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBRTdELG9CQUFlLEdBQTBCLElBQUksQ0FBQztRQUdwRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksY0FBYyxDQUN2QyxDQUFDLE9BQThCLEVBQVEsRUFBRTtZQUN2QyxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUNoQyxNQUFNLFlBQVksR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLFlBQVksRUFBRTtvQkFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLE1BQU0sRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU07d0JBQ3ZDLEtBQUssRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUs7cUJBQ3RDLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxlQUFlO1lBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkUsQ0FBQzs4R0FuQ1UscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEM7K0VBRTJCLE9BQU87c0JBQWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRWxlbWVudFNpemUgfSBmcm9tICcuL2VsZW1lbnQtc2l6ZS5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaW1wZGNTaXplRGV0ZWN0b3JdJ1xufSlcbmV4cG9ydCBjbGFzcyBTaXplRGV0ZWN0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHJlc2l6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElFbGVtZW50U2l6ZT4oKTtcblxuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fb2JzZXJ2ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3Vub2JzZXJ2ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihcbiAgICAgIChlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkID0+IHtcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudEVudHJ5ID0gZW50cmllcyAmJiBlbnRyaWVzWzBdO1xuICAgICAgICAgIGlmIChlbGVtZW50RW50cnkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplZC5lbWl0KHtcbiAgICAgICAgICAgICAgaGVpZ2h0OiBlbGVtZW50RW50cnkuY29udGVudFJlY3QuaGVpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aDogZWxlbWVudEVudHJ5LmNvbnRlbnRSZWN0LndpZHRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF91bm9ic2VydmUoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgJiZcbiAgICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG59XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS1kZXRlY3Rvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3NpemUtZGV0ZWN0aW9uL2RpcmVjdGl2ZS9zaXplLWRldGVjdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFFWixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7O0FBTXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBNkIsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFKMUIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBRTdELG9CQUFlLEdBQTBCLElBQUksQ0FBQztRQUdwRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksY0FBYyxDQUN2QyxDQUFDLE9BQThCLEVBQVEsRUFBRTtZQUN2QyxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUNoQyxNQUFNLFlBQVksR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDaEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTTt3QkFDdkMsS0FBSyxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSztxQkFDdEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsZUFBZTtZQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBbkNVLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2hDOytFQUUyQixPQUFPO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUVsZW1lbnRTaXplIH0gZnJvbSAnLi9lbGVtZW50LXNpemUuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ltcGRjU2l6ZURldGVjdG9yXSdcbn0pXG5leHBvcnQgY2xhc3MgU2l6ZURldGVjdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSByZXNpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxJRWxlbWVudFNpemU+KCk7XG5cbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX29ic2VydmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLl91bm9ic2VydmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29ic2VydmUoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoXG4gICAgICAoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCA9PiB7XG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnRFbnRyeSA9IGVudHJpZXMgJiYgZW50cmllc1swXTtcbiAgICAgICAgICBpZiAoZWxlbWVudEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWQuZW1pdCh7XG4gICAgICAgICAgICAgIGhlaWdodDogZWxlbWVudEVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCxcbiAgICAgICAgICAgICAgd2lkdGg6IGVsZW1lbnRFbnRyeS5jb250ZW50UmVjdC53aWR0aFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5vYnNlcnZlKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyICYmXG4gICAgICB0aGlzLl9yZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIl19
@@ -3,11 +3,11 @@ import { CommonModule } from '@angular/common';
3
3
  import { SizeDetectorDirective } from './directive/index';
4
4
  import * as i0 from "@angular/core";
5
5
  export class SizeDetectionModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SizeDetectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: SizeDetectionModule, declarations: [SizeDetectorDirective], imports: [CommonModule], exports: [SizeDetectorDirective] }); }
8
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SizeDetectionModule, imports: [CommonModule] }); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SizeDetectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: SizeDetectionModule, declarations: [SizeDetectorDirective], imports: [CommonModule], exports: [SizeDetectorDirective] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SizeDetectionModule, imports: [CommonModule] }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SizeDetectionModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SizeDetectionModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  declarations: [SizeDetectorDirective],
@@ -12,10 +12,10 @@ export class SpinnerComponent {
12
12
  */
13
13
  this.accessibilityText = 'Loading...';
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: SpinnerComponent, selector: "impdc-spinner, div[impdc-spinner]", inputs: { accessibilityText: "accessibilityText" }, ngImport: i0, template: "<div class=\"spinner-border\" role=\"status\">\n <span *ngIf=\"accessibilityText\" class=\"visually-hidden\">{{\n accessibilityText\n }}</span>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SpinnerComponent, selector: "impdc-spinner, div[impdc-spinner]", inputs: { accessibilityText: "accessibilityText" }, ngImport: i0, template: "<div class=\"spinner-border\" role=\"status\">\n <span *ngIf=\"accessibilityText\" class=\"visually-hidden\">{{\n accessibilityText\n }}</span>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SpinnerComponent, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SpinnerComponent, decorators: [{
19
19
  type: Component,
20
20
  args: [{ selector: 'impdc-spinner, div[impdc-spinner]', template: "<div class=\"spinner-border\" role=\"status\">\n <span *ngIf=\"accessibilityText\" class=\"visually-hidden\">{{\n accessibilityText\n }}</span>\n</div>\n" }]
21
21
  }], propDecorators: { accessibilityText: [{
@@ -3,11 +3,11 @@ import { NgModule } from '@angular/core';
3
3
  import { SpinnerComponent } from './spinner.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export class SpinnerModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: SpinnerModule, declarations: [SpinnerComponent], imports: [CommonModule], exports: [SpinnerComponent] }); }
8
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SpinnerModule, imports: [CommonModule] }); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: SpinnerModule, declarations: [SpinnerComponent], imports: [CommonModule], exports: [SpinnerComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SpinnerModule, imports: [CommonModule] }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SpinnerModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SpinnerModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  imports: [CommonModule],
@@ -6,10 +6,10 @@ import * as i0 from "@angular/core";
6
6
  * and `[bulkAction]` attributes.
7
7
  */
8
8
  export class TableBulkActionsComponent {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableBulkActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: TableBulkActionsComponent, selector: "impdc-table-bulk-actions", ngImport: i0, template: "<div class=\"table-bulk-actions\">\n <div class=\"selected-total\">\n <ng-content select=\"[selectedTotal]\"></ng-content>\n </div>\n <div class=\"bulk-actions\">\n <ng-content select=\"[bulkAction]\"></ng-content>\n </div>\n</div>\n", styles: [".table-bulk-actions{display:flex;flex-direction:row;align-items:center;font-weight:400}.table-bulk-actions .selected-total{border-right:1px solid var(--impd-color-gray-200, \"#e5e7eb\");padding-right:1.6rem}.table-bulk-actions .bulk-actions{padding-left:1.6rem;display:flex;flex-direction:row;gap:1.6rem}\n"] }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: TableBulkActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: TableBulkActionsComponent, selector: "impdc-table-bulk-actions", ngImport: i0, template: "<div class=\"table-bulk-actions\">\n <div class=\"selected-total\">\n <ng-content select=\"[selectedTotal]\"></ng-content>\n </div>\n <div class=\"bulk-actions\">\n <ng-content select=\"[bulkAction]\"></ng-content>\n </div>\n</div>\n", styles: [".table-bulk-actions{display:flex;flex-direction:row;align-items:center;font-weight:400}.table-bulk-actions .selected-total{border-right:1px solid var(--impd-color-gray-200, \"#e5e7eb\");padding-right:1.6rem}.table-bulk-actions .bulk-actions{padding-left:1.6rem;display:flex;flex-direction:row;gap:1.6rem}\n"] }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableBulkActionsComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: TableBulkActionsComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'impdc-table-bulk-actions', template: "<div class=\"table-bulk-actions\">\n <div class=\"selected-total\">\n <ng-content select=\"[selectedTotal]\"></ng-content>\n </div>\n <div class=\"bulk-actions\">\n <ng-content select=\"[bulkAction]\"></ng-content>\n </div>\n</div>\n", styles: [".table-bulk-actions{display:flex;flex-direction:row;align-items:center;font-weight:400}.table-bulk-actions .selected-total{border-right:1px solid var(--impd-color-gray-200, \"#e5e7eb\");padding-right:1.6rem}.table-bulk-actions .bulk-actions{padding-left:1.6rem;display:flex;flex-direction:row;gap:1.6rem}\n"] }]
15
15
  }] });
@@ -16,10 +16,10 @@ export class ColumnHeadingComponent {
16
16
  onSort() {
17
17
  this.sort.emit(this.columnIndex);
18
18
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ColumnHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: ColumnHeadingComponent, selector: "impdc-column-heading", inputs: { isSortable: "isSortable", columnIndex: "columnIndex", sortColumnIndex: "sortColumnIndex", direction: "direction", text: "text" }, outputs: { sort: "sort" }, ngImport: i0, template: "<a *ngIf=\"isSortable; else notClickable\" class=\"impdc-table-sort\">\n <span>\n {{ text }}\n </span>\n <span\n [ngClass]=\"sortedColumn ? 'visible' : 'invisible'\"\n impdc-icon\n [name]=\"direction === 'asc' ? 'arrow-up' : 'arrow-down'\"></span>\n</a>\n<ng-template #notClickable>\n {{ text }}\n</ng-template>\n", styles: [":host .impdc-table-sort{color:var(--impd-color-gray-500);display:flex;flex-direction:row;gap:.8rem;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ColumnHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ColumnHeadingComponent, selector: "impdc-column-heading", inputs: { isSortable: "isSortable", columnIndex: "columnIndex", sortColumnIndex: "sortColumnIndex", direction: "direction", text: "text" }, outputs: { sort: "sort" }, ngImport: i0, template: "<a *ngIf=\"isSortable; else notClickable\" class=\"impdc-table-sort\">\n <span>\n {{ text }}\n </span>\n <span\n [ngClass]=\"sortedColumn ? 'visible' : 'invisible'\"\n impdc-icon\n [name]=\"direction === 'asc' ? 'arrow-up' : 'arrow-down'\"></span>\n</a>\n<ng-template #notClickable>\n {{ text }}\n</ng-template>\n", styles: [":host .impdc-table-sort{color:var(--impd-color-gray-500);display:flex;flex-direction:row;gap:.8rem;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ColumnHeadingComponent, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ColumnHeadingComponent, decorators: [{
23
23
  type: Component,
24
24
  args: [{ selector: 'impdc-column-heading', template: "<a *ngIf=\"isSortable; else notClickable\" class=\"impdc-table-sort\">\n <span>\n {{ text }}\n </span>\n <span\n [ngClass]=\"sortedColumn ? 'visible' : 'invisible'\"\n impdc-icon\n [name]=\"direction === 'asc' ? 'arrow-up' : 'arrow-down'\"></span>\n</a>\n<ng-template #notClickable>\n {{ text }}\n</ng-template>\n", styles: [":host .impdc-table-sort{color:var(--impd-color-gray-500);display:flex;flex-direction:row;gap:.8rem;align-items:center}\n"] }]
25
25
  }], propDecorators: { isSortable: [{
@@ -39,10 +39,10 @@ export class RowActionsComponent {
39
39
  return 'secondary';
40
40
  }
41
41
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: RowActionsComponent, deps: [{ token: i1.BrandedDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.1", type: RowActionsComponent, selector: "impdc-row-actions", inputs: { columnDef: "columnDef", rowItem: "rowItem", lastColumn: "lastColumn" }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: "@if (columnDef.actions) { @if (columnDef.actions.length > 2) {\n<div [ngClass]=\"{ 'text-end': lastColumn }\">\n <div\n ngbDropdown\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom-end bottom-start top-end top-start\"\n class=\"lh-1\"\n #dropdown=\"ngbDropdown\">\n <button\n ngbDropdownToggle\n type=\"button\"\n class=\"row-actions-dropdown-toggle btn btn-link btn-sm no-caret p-0\">\n <impdc-icon name=\"ellipsis-v\" size=\"16\" theme=\"solid\"></impdc-icon>\n </button>\n <div ngbDropdownMenu>\n @for (action of columnDef.actions; track action.apiName) { @if\n (isVisible(action)) {\n <button\n type=\"button\"\n ngbDropdownItem\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } }\n </div>\n </div>\n</div>\n} @else {\n<div class=\"d-flex flex-row gap-2 justify-content-end\">\n <ng-container *ngFor=\"let action of columnDef.actions\">\n @if (isVisible(action)) { @if (columnDef.actionType === 'button') {\n <button\n impdcButton\n theme=\"secondary\"\n class=\"btn-xs\"\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } @else if (columnDef.actionType === 'link') {\n <a *ngIf=\"!branded\" (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n <a *ngIf=\"branded\" impdcBranded (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n } @else {\n <span\n impdc-icon\n [name]=\"action.iconName || 'edit'\"\n [ngClass]=\"getColor(action)\"\n class=\"row-actions-item\"\n (click)=\"handleActionClick(action.apiName)\">\n </span>\n } }\n </ng-container>\n</div>\n} }\n", styles: [".row-actions-item:hover{cursor:pointer}:host button.row-actions-dropdown-toggle{color:var(--impd-color-gray-400)}:host button.row-actions-dropdown-toggle:hover,:host button.row-actions-dropdown-toggle:active,:host button.row-actions-dropdown-toggle:focus,:host button.row-actions-dropdown-toggle:focus-visible,:host button.row-actions-dropdown-toggle.show{color:var(--impd-color-gray-600)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "directive", type: i4.BrandedDirective, selector: "[impdcBranded]" }, { kind: "component", type: i5.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }, { kind: "directive", type: i6.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i6.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i6.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i6.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i6.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }] }); }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: RowActionsComponent, deps: [{ token: i1.BrandedDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: RowActionsComponent, selector: "impdc-row-actions", inputs: { columnDef: "columnDef", rowItem: "rowItem", lastColumn: "lastColumn" }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: "@if (columnDef.actions) { @if (columnDef.actions.length > 2) {\n<div [ngClass]=\"{ 'text-end': lastColumn }\">\n <div\n ngbDropdown\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom-end bottom-start top-end top-start\"\n class=\"lh-1\"\n #dropdown=\"ngbDropdown\">\n <button\n ngbDropdownToggle\n type=\"button\"\n class=\"row-actions-dropdown-toggle btn btn-link btn-sm no-caret p-0\">\n <impdc-icon name=\"ellipsis-v\" size=\"16\" theme=\"solid\"></impdc-icon>\n </button>\n <div ngbDropdownMenu>\n @for (action of columnDef.actions; track action.apiName) { @if\n (isVisible(action)) {\n <button\n type=\"button\"\n ngbDropdownItem\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } }\n </div>\n </div>\n</div>\n} @else {\n<div class=\"d-flex flex-row gap-2 justify-content-end\">\n <ng-container *ngFor=\"let action of columnDef.actions\">\n @if (isVisible(action)) { @if (columnDef.actionType === 'button') {\n <button\n impdcButton\n theme=\"secondary\"\n class=\"btn-xs\"\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } @else if (columnDef.actionType === 'link') {\n <a *ngIf=\"!branded\" (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n <a *ngIf=\"branded\" impdcBranded (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n } @else {\n <span\n impdc-icon\n [name]=\"action.iconName || 'edit'\"\n [ngClass]=\"getColor(action)\"\n class=\"row-actions-item\"\n (click)=\"handleActionClick(action.apiName)\">\n </span>\n } }\n </ng-container>\n</div>\n} }\n", styles: [".row-actions-item:hover{cursor:pointer}:host button.row-actions-dropdown-toggle{color:var(--impd-color-gray-400)}:host button.row-actions-dropdown-toggle:hover,:host button.row-actions-dropdown-toggle:active,:host button.row-actions-dropdown-toggle:focus,:host button.row-actions-dropdown-toggle:focus-visible,:host button.row-actions-dropdown-toggle.show{color:var(--impd-color-gray-600)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "directive", type: i4.BrandedDirective, selector: "[impdcBranded]" }, { kind: "component", type: i5.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }, { kind: "directive", type: i6.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i6.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i6.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i6.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i6.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }] }); }
44
44
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: RowActionsComponent, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: RowActionsComponent, decorators: [{
46
46
  type: Component,
47
47
  args: [{ selector: 'impdc-row-actions', template: "@if (columnDef.actions) { @if (columnDef.actions.length > 2) {\n<div [ngClass]=\"{ 'text-end': lastColumn }\">\n <div\n ngbDropdown\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom-end bottom-start top-end top-start\"\n class=\"lh-1\"\n #dropdown=\"ngbDropdown\">\n <button\n ngbDropdownToggle\n type=\"button\"\n class=\"row-actions-dropdown-toggle btn btn-link btn-sm no-caret p-0\">\n <impdc-icon name=\"ellipsis-v\" size=\"16\" theme=\"solid\"></impdc-icon>\n </button>\n <div ngbDropdownMenu>\n @for (action of columnDef.actions; track action.apiName) { @if\n (isVisible(action)) {\n <button\n type=\"button\"\n ngbDropdownItem\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } }\n </div>\n </div>\n</div>\n} @else {\n<div class=\"d-flex flex-row gap-2 justify-content-end\">\n <ng-container *ngFor=\"let action of columnDef.actions\">\n @if (isVisible(action)) { @if (columnDef.actionType === 'button') {\n <button\n impdcButton\n theme=\"secondary\"\n class=\"btn-xs\"\n (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </button>\n } @else if (columnDef.actionType === 'link') {\n <a *ngIf=\"!branded\" (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n <a *ngIf=\"branded\" impdcBranded (click)=\"handleActionClick(action.apiName)\">\n {{ action.text }}\n </a>\n } @else {\n <span\n impdc-icon\n [name]=\"action.iconName || 'edit'\"\n [ngClass]=\"getColor(action)\"\n class=\"row-actions-item\"\n (click)=\"handleActionClick(action.apiName)\">\n </span>\n } }\n </ng-container>\n</div>\n} }\n", styles: [".row-actions-item:hover{cursor:pointer}:host button.row-actions-dropdown-toggle{color:var(--impd-color-gray-400)}:host button.row-actions-dropdown-toggle:hover,:host button.row-actions-dropdown-toggle:active,:host button.row-actions-dropdown-toggle:focus,:host button.row-actions-dropdown-toggle:focus-visible,:host button.row-actions-dropdown-toggle.show{color:var(--impd-color-gray-600)}\n"] }]
48
48
  }], ctorParameters: () => [{ type: i1.BrandedDirective, decorators: [{
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
58
58
  }], actionClick: [{
59
59
  type: Output
60
60
  }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL3Jvdy1hY3Rpb25zL3Jvdy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvdGFibGUvY29tcG9uZW50cy9yb3ctYWN0aW9ucy9yb3ctYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQU92QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7OztBQU9uRCxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I5QixZQUErQixRQUEwQjtRQVJsRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR25CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVoRCxjQUFjO1FBQ1AsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdyQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUNNLFNBQVMsQ0FBQyxNQUF1QjtRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsT0FBZTtRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQXVCO1FBQ3JDLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRVMsZ0NBQWdDLENBQ3hDLGNBQStCO1FBRS9CLFFBQVEsY0FBYyxFQUFFO1lBQ3RCLEtBQUssY0FBYyxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssY0FBYyxDQUFDLE1BQU07Z0JBQ3hCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQztZQUM5QjtnQkFDRSxPQUFPLFdBQVcsQ0FBQztTQUN0QjtJQUNILENBQUM7OEdBL0NVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLG9MQ3RCaEMsb3hEQTBEQTs7MkZEcENhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQW9CVCxRQUFRO3lDQWRyQixTQUFTO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlsQixPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlsQixVQUFVO3NCQURoQixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJVGFibGVBY3Rpb25zQ29sdW1uRGVmLFxuICBJVGFibGVSb3dBY3Rpb24sXG4gIElUYWJsZVJvd0l0ZW1cbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCcmFuZGVkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vYnJhbmRpbmcnO1xuaW1wb3J0IHsgVGFibGVUaGVtZUhlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQnV0dG9uVGhlbWUgfSBmcm9tICcuLi8uLi8uLi9idXR0b24nO1xuaW1wb3J0IHsgQ29tcG9uZW50VGhlbWUgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLXJvdy1hY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jvdy1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm93LWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSb3dBY3Rpb25zQ29tcG9uZW50IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIGNvbHVtbkRlZiE6IElUYWJsZUFjdGlvbnNDb2x1bW5EZWY8YW55PjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgcm93SXRlbSE6IElUYWJsZVJvd0l0ZW07XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxhc3RDb2x1bW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIGJyYW5kZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgX2JyYW5kZWQ6IEJyYW5kZWREaXJlY3RpdmUpIHtcbiAgICB0aGlzLmJyYW5kZWQgPSBfYnJhbmRlZCA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICBwdWJsaWMgaXNWaXNpYmxlKGFjdGlvbjogSVRhYmxlUm93QWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhY3Rpb24uaXNWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uLmlzVmlzaWJsZSh0aGlzLnJvd0l0ZW0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUFjdGlvbkNsaWNrKGFwaU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdChhcGlOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2xvcihhY3Rpb246IElUYWJsZVJvd0FjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRhYmxlVGhlbWVIZWxwZXIuZ2V0Q29sb3IoYWN0aW9uLnRoZW1lKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRCdXR0b25UaGVtZUZyb21Db21wb25lbnRUaGVtZShcbiAgICBjb21wb25lbnRUaGVtZT86IENvbXBvbmVudFRoZW1lXG4gICk6IEJ1dHRvblRoZW1lIHtcbiAgICBzd2l0Y2ggKGNvbXBvbmVudFRoZW1lKSB7XG4gICAgICBjYXNlIENvbXBvbmVudFRoZW1lLlByaW1hcnk6XG4gICAgICAgIHJldHVybiAncHJpbWFyeSc7XG4gICAgICBjYXNlIENvbXBvbmVudFRoZW1lLkRhbmdlcjpcbiAgICAgICAgcmV0dXJuICdkYW5nZXInO1xuICAgICAgY2FzZSBDb21wb25lbnRUaGVtZS5TZWNvbmRhcnk6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3NlY29uZGFyeSc7XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKGNvbHVtbkRlZi5hY3Rpb25zKSB7IEBpZiAoY29sdW1uRGVmLmFjdGlvbnMubGVuZ3RoID4gMikge1xuPGRpdiBbbmdDbGFzc109XCJ7ICd0ZXh0LWVuZCc6IGxhc3RDb2x1bW4gfVwiPlxuICA8ZGl2XG4gICAgbmdiRHJvcGRvd25cbiAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICBkcm9wZG93bkNsYXNzPVwiaW1wYXJ0bmVyLWhleFwiXG4gICAgcGxhY2VtZW50PVwiYm90dG9tLWVuZCBib3R0b20tc3RhcnQgdG9wLWVuZCB0b3Atc3RhcnRcIlxuICAgIGNsYXNzPVwibGgtMVwiXG4gICAgI2Ryb3Bkb3duPVwibmdiRHJvcGRvd25cIj5cbiAgICA8YnV0dG9uXG4gICAgICBuZ2JEcm9wZG93blRvZ2dsZVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInJvdy1hY3Rpb25zLWRyb3Bkb3duLXRvZ2dsZSBidG4gYnRuLWxpbmsgYnRuLXNtIG5vLWNhcmV0IHAtMFwiPlxuICAgICAgPGltcGRjLWljb24gbmFtZT1cImVsbGlwc2lzLXZcIiBzaXplPVwiMTZcIiB0aGVtZT1cInNvbGlkXCI+PC9pbXBkYy1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxuICAgICAgQGZvciAoYWN0aW9uIG9mIGNvbHVtbkRlZi5hY3Rpb25zOyB0cmFjayBhY3Rpb24uYXBpTmFtZSkgeyBAaWZcbiAgICAgIChpc1Zpc2libGUoYWN0aW9uKSkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgbmdiRHJvcGRvd25JdGVtXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVBY3Rpb25DbGljayhhY3Rpb24uYXBpTmFtZSlcIj5cbiAgICAgICAge3sgYWN0aW9uLnRleHQgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgfSB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG59IEBlbHNlIHtcbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZ2FwLTIganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29sdW1uRGVmLmFjdGlvbnNcIj5cbiAgICBAaWYgKGlzVmlzaWJsZShhY3Rpb24pKSB7IEBpZiAoY29sdW1uRGVmLmFjdGlvblR5cGUgPT09ICdidXR0b24nKSB7XG4gICAgPGJ1dHRvblxuICAgICAgaW1wZGNCdXR0b25cbiAgICAgIHRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgIGNsYXNzPVwiYnRuLXhzXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVBY3Rpb25DbGljayhhY3Rpb24uYXBpTmFtZSlcIj5cbiAgICAgIHt7IGFjdGlvbi50ZXh0IH19XG4gICAgPC9idXR0b24+XG4gICAgfSBAZWxzZSBpZiAoY29sdW1uRGVmLmFjdGlvblR5cGUgPT09ICdsaW5rJykge1xuICAgIDxhICpuZ0lmPVwiIWJyYW5kZWRcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uQ2xpY2soYWN0aW9uLmFwaU5hbWUpXCI+XG4gICAgICB7eyBhY3Rpb24udGV4dCB9fVxuICAgIDwvYT5cbiAgICA8YSAqbmdJZj1cImJyYW5kZWRcIiBpbXBkY0JyYW5kZWQgKGNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKGFjdGlvbi5hcGlOYW1lKVwiPlxuICAgICAge3sgYWN0aW9uLnRleHQgfX1cbiAgICA8L2E+XG4gICAgfSBAZWxzZSB7XG4gICAgPHNwYW5cbiAgICAgIGltcGRjLWljb25cbiAgICAgIFtuYW1lXT1cImFjdGlvbi5pY29uTmFtZSB8fCAnZWRpdCdcIlxuICAgICAgW25nQ2xhc3NdPVwiZ2V0Q29sb3IoYWN0aW9uKVwiXG4gICAgICBjbGFzcz1cInJvdy1hY3Rpb25zLWl0ZW1cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKGFjdGlvbi5hcGlOYW1lKVwiPlxuICAgIDwvc3Bhbj5cbiAgICB9IH1cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbn0gfVxuIl19
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL3Jvdy1hY3Rpb25zL3Jvdy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvdGFibGUvY29tcG9uZW50cy9yb3ctYWN0aW9ucy9yb3ctYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQU92QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7OztBQU9uRCxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I5QixZQUErQixRQUEwQjtRQVJsRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR25CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVoRCxjQUFjO1FBQ1AsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdyQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUNNLFNBQVMsQ0FBQyxNQUF1QjtRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLE9BQWU7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxNQUF1QjtRQUNyQyxPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVTLGdDQUFnQyxDQUN4QyxjQUErQjtRQUUvQixRQUFRLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssY0FBYyxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssY0FBYyxDQUFDLE1BQU07Z0JBQ3hCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQztZQUM5QjtnQkFDRSxPQUFPLFdBQVcsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzs4R0EvQ1UsbUJBQW1CO2tHQUFuQixtQkFBbUIsb0xDdEJoQyxveERBMERBOzsyRkRwQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLG1CQUFtQjs7MEJBb0JULFFBQVE7eUNBZHJCLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIElUYWJsZUFjdGlvbnNDb2x1bW5EZWYsXG4gIElUYWJsZVJvd0FjdGlvbixcbiAgSVRhYmxlUm93SXRlbVxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJyYW5kZWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9icmFuZGluZyc7XG5pbXBvcnQgeyBUYWJsZVRoZW1lSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5pbXBvcnQgeyBCdXR0b25UaGVtZSB9IGZyb20gJy4uLy4uLy4uL2J1dHRvbic7XG5pbXBvcnQgeyBDb21wb25lbnRUaGVtZSB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtcm93LWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm93LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yb3ctYWN0aW9ucy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJvd0FjdGlvbnNDb21wb25lbnQge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgY29sdW1uRGVmITogSVRhYmxlQWN0aW9uc0NvbHVtbkRlZjxhbnk+O1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyByb3dJdGVtITogSVRhYmxlUm93SXRlbTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbGFzdENvbHVtbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgYnJhbmRlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBfYnJhbmRlZDogQnJhbmRlZERpcmVjdGl2ZSkge1xuICAgIHRoaXMuYnJhbmRlZCA9IF9icmFuZGVkID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIHB1YmxpYyBpc1Zpc2libGUoYWN0aW9uOiBJVGFibGVSb3dBY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAoIWFjdGlvbi5pc1Zpc2libGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBhY3Rpb24uaXNWaXNpYmxlKHRoaXMucm93SXRlbSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQWN0aW9uQ2xpY2soYXBpTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KGFwaU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldENvbG9yKGFjdGlvbjogSVRhYmxlUm93QWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGFibGVUaGVtZUhlbHBlci5nZXRDb2xvcihhY3Rpb24udGhlbWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEJ1dHRvblRoZW1lRnJvbUNvbXBvbmVudFRoZW1lKFxuICAgIGNvbXBvbmVudFRoZW1lPzogQ29tcG9uZW50VGhlbWVcbiAgKTogQnV0dG9uVGhlbWUge1xuICAgIHN3aXRjaCAoY29tcG9uZW50VGhlbWUpIHtcbiAgICAgIGNhc2UgQ29tcG9uZW50VGhlbWUuUHJpbWFyeTpcbiAgICAgICAgcmV0dXJuICdwcmltYXJ5JztcbiAgICAgIGNhc2UgQ29tcG9uZW50VGhlbWUuRGFuZ2VyOlxuICAgICAgICByZXR1cm4gJ2Rhbmdlcic7XG4gICAgICBjYXNlIENvbXBvbmVudFRoZW1lLlNlY29uZGFyeTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnc2Vjb25kYXJ5JztcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAoY29sdW1uRGVmLmFjdGlvbnMpIHsgQGlmIChjb2x1bW5EZWYuYWN0aW9ucy5sZW5ndGggPiAyKSB7XG48ZGl2IFtuZ0NsYXNzXT1cInsgJ3RleHQtZW5kJzogbGFzdENvbHVtbiB9XCI+XG4gIDxkaXZcbiAgICBuZ2JEcm9wZG93blxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIGRyb3Bkb3duQ2xhc3M9XCJpbXBhcnRuZXItaGV4XCJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b20tZW5kIGJvdHRvbS1zdGFydCB0b3AtZW5kIHRvcC1zdGFydFwiXG4gICAgY2xhc3M9XCJsaC0xXCJcbiAgICAjZHJvcGRvd249XCJuZ2JEcm9wZG93blwiPlxuICAgIDxidXR0b25cbiAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwicm93LWFjdGlvbnMtZHJvcGRvd24tdG9nZ2xlIGJ0biBidG4tbGluayBidG4tc20gbm8tY2FyZXQgcC0wXCI+XG4gICAgICA8aW1wZGMtaWNvbiBuYW1lPVwiZWxsaXBzaXMtdlwiIHNpemU9XCIxNlwiIHRoZW1lPVwic29saWRcIj48L2ltcGRjLWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XG4gICAgICBAZm9yIChhY3Rpb24gb2YgY29sdW1uRGVmLmFjdGlvbnM7IHRyYWNrIGFjdGlvbi5hcGlOYW1lKSB7IEBpZlxuICAgICAgKGlzVmlzaWJsZShhY3Rpb24pKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKGFjdGlvbi5hcGlOYW1lKVwiPlxuICAgICAgICB7eyBhY3Rpb24udGV4dCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICB9IH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbn0gQGVsc2Uge1xuPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBnYXAtMiBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb2x1bW5EZWYuYWN0aW9uc1wiPlxuICAgIEBpZiAoaXNWaXNpYmxlKGFjdGlvbikpIHsgQGlmIChjb2x1bW5EZWYuYWN0aW9uVHlwZSA9PT0gJ2J1dHRvbicpIHtcbiAgICA8YnV0dG9uXG4gICAgICBpbXBkY0J1dHRvblxuICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgY2xhc3M9XCJidG4teHNcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKGFjdGlvbi5hcGlOYW1lKVwiPlxuICAgICAge3sgYWN0aW9uLnRleHQgfX1cbiAgICA8L2J1dHRvbj5cbiAgICB9IEBlbHNlIGlmIChjb2x1bW5EZWYuYWN0aW9uVHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgPGEgKm5nSWY9XCIhYnJhbmRlZFwiIChjbGljayk9XCJoYW5kbGVBY3Rpb25DbGljayhhY3Rpb24uYXBpTmFtZSlcIj5cbiAgICAgIHt7IGFjdGlvbi50ZXh0IH19XG4gICAgPC9hPlxuICAgIDxhICpuZ0lmPVwiYnJhbmRlZFwiIGltcGRjQnJhbmRlZCAoY2xpY2spPVwiaGFuZGxlQWN0aW9uQ2xpY2soYWN0aW9uLmFwaU5hbWUpXCI+XG4gICAgICB7eyBhY3Rpb24udGV4dCB9fVxuICAgIDwvYT5cbiAgICB9IEBlbHNlIHtcbiAgICA8c3BhblxuICAgICAgaW1wZGMtaWNvblxuICAgICAgW25hbWVdPVwiYWN0aW9uLmljb25OYW1lIHx8ICdlZGl0J1wiXG4gICAgICBbbmdDbGFzc109XCJnZXRDb2xvcihhY3Rpb24pXCJcbiAgICAgIGNsYXNzPVwicm93LWFjdGlvbnMtaXRlbVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQWN0aW9uQ2xpY2soYWN0aW9uLmFwaU5hbWUpXCI+XG4gICAgPC9zcGFuPlxuICAgIH0gfVxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxufSB9XG4iXX0=