@quadrel-enterprise-ui/framework 18.19.1 → 18.20.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.
@@ -1,14 +1,11 @@
1
1
  // @ts-strict-ignore
2
2
  import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
3
  import { v4 as uuid } from 'uuid';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "@angular/common";
7
6
  import * as i2 from "@ngx-translate/core";
8
7
  export class QdSwitchComponent {
9
- // TODO: Refactor FormInput for better internal interface
10
8
  inputData;
11
- value;
12
9
  id;
13
10
  disabled = false;
14
11
  testId = 'switch';
@@ -29,60 +26,19 @@ export class QdSwitchComponent {
29
26
  get labelPosition() {
30
27
  return this.inputData.labelPosition || 'right';
31
28
  }
32
- _onChange = () => { };
33
- _onTouch = () => { };
34
29
  ngOnInit() {
35
30
  if (!this.id) {
36
31
  this.id = uuid();
37
32
  }
38
33
  }
39
- registerOnChange(fn) {
40
- this._onChange = fn;
41
- this._onChange(this.value);
42
- }
43
- registerOnTouched(fn) {
44
- this._onTouch = fn;
45
- }
46
- setDisabledState(state) {
47
- this.disabled = state;
48
- }
49
- writeValue(value) {
50
- this.value = value;
51
- this.valueChange.emit(this.value);
52
- }
53
- handleClick(value, event) {
54
- event.stopPropagation();
55
- if (this.disabled) {
56
- return;
57
- }
58
- const _value = value !== this.value ? value : null;
59
- this._onChange(_value);
60
- this._onTouch(_value);
61
- this.value = _value;
62
- this.valueChange.emit(this.value);
63
- }
64
34
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: QdSwitchComponent, selector: "qd-switch", inputs: { inputData: "inputData", value: "value", id: "id", disabled: "disabled", testId: ["data-test-id", "testId"] }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.qd-switch-active": "this.active", "class.qd-switch-disabled": "this.isDisabled" }, classAttribute: "qd-switch" }, providers: [
66
- {
67
- provide: NG_VALUE_ACCESSOR,
68
- useExisting: QdSwitchComponent,
69
- multi: true
70
- }
71
- ], ngImport: i0, template: "<label [for]=\"toggleId\">\n <div class=\"switch-content\" *ngIf=\"labelPosition === 'left'\" [attr.data-test-id]=\"testId + '-label'\">\n {{ label | translate }}\n </div>\n <div class=\"switch-toggle-bar\">\n <input\n class=\"switch-toggle-input\"\n name=\"switch-toggle\"\n type=\"checkbox\"\n [id]=\"toggleId\"\n (click)=\"handleClick(value, $event)\"\n [value]=\"value\"\n [disabled]=\"isDisabled\"\n [attr.data-test-id]=\"testId + '-input'\"\n />\n <div class=\"switch-toggle-button\"></div>\n </div>\n <div class=\"switch-content\" *ngIf=\"labelPosition === 'right'\" [attr.data-test-id]=\"testId + '-content'\">\n {{ label | translate }}\n </div>\n</label>\n", styles: [".qd-switch label{display:flex;width:max-content;align-items:center}.qd-switch label:hover{cursor:pointer}.qd-switch .switch-toggle-bar{position:relative;width:2.5rem;height:1.25rem;border-radius:1.25rem;background-color:#e5e5e5}.qd-switch .switch-toggle-bar input{appearance:none}.qd-switch .switch-toggle-bar .switch-toggle-button{position:absolute;top:0;width:1.25rem;height:1.25rem;border-radius:1.25rem;background-color:#b4b4b4;transition:all 80ms linear;transition-property:transform}.qd-switch .switch-content{margin-right:.75rem;margin-left:.75rem;color:#171717;font-size:.875rem;font-weight:400;line-height:.875rem}.qd-switch:hover .switch-toggle-bar{background-color:#d5d5d5}.qd-switch:hover .switch-toggle-bar .switch-toggle-button{background-color:#979797}.qd-switch.qd-switch-active .switch-toggle-bar{background-color:#c3e8cd}.qd-switch.qd-switch-active .switch-toggle-bar .switch-toggle-button{background-color:#00813a;transform:translate(1.25rem)}.qd-switch.qd-switch-active:hover .switch-toggle-bar .switch-toggle-button{background-color:#006226}.qd-switch.qd-switch-disabled label:hover{cursor:initial}.qd-switch.qd-switch-disabled .switch-toggle-bar{background-color:#efefef}.qd-switch.qd-switch-disabled .switch-toggle-bar .switch-toggle-button{background-color:#d5d5d5}.qd-switch.qd-switch-disabled .switch-content{color:#757575}.qd-switch.qd-switch-disabled:hover .switch-toggle-bar{background-color:#efefef}.qd-switch.qd-switch-disabled:hover .switch-toggle-bar .switch-toggle-button{background-color:#d5d5d5}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: QdSwitchComponent, selector: "qd-switch", inputs: { inputData: "inputData", id: "id", disabled: "disabled", testId: ["data-test-id", "testId"] }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.qd-switch-active": "this.active", "class.qd-switch-disabled": "this.isDisabled" }, classAttribute: "qd-switch" }, ngImport: i0, template: "<label [for]=\"toggleId\">\n <div class=\"switch-content\" *ngIf=\"labelPosition === 'left'\" [attr.data-test-id]=\"testId + '-label'\">\n {{ label | translate }}\n </div>\n <div class=\"switch-toggle-bar\">\n <div class=\"switch-toggle-button\"></div>\n </div>\n <div class=\"switch-content\" *ngIf=\"labelPosition === 'right'\" [attr.data-test-id]=\"testId + '-content'\">\n {{ label | translate }}\n </div>\n</label>\n", styles: [".qd-switch label{display:flex;width:max-content;align-items:center}.qd-switch label:hover{cursor:pointer}.qd-switch .switch-toggle-bar{position:relative;width:2.5rem;height:1.25rem;border-radius:1.25rem;background-color:#e5e5e5}.qd-switch .switch-toggle-bar .switch-toggle-button{position:absolute;top:0;width:1.25rem;height:1.25rem;border-radius:1.25rem;background-color:#b4b4b4;transition:all 80ms linear;transition-property:transform}.qd-switch .switch-content{margin-right:.75rem;margin-left:.75rem;color:#171717;font-size:.875rem;font-weight:400;line-height:.875rem}.qd-switch:hover .switch-toggle-bar{background-color:#d5d5d5}.qd-switch:hover .switch-toggle-bar .switch-toggle-button{background-color:#979797}.qd-switch.qd-switch-active .switch-toggle-bar{background-color:#c3e8cd}.qd-switch.qd-switch-active .switch-toggle-bar .switch-toggle-button{background-color:#00813a;transform:translate(1.25rem)}.qd-switch.qd-switch-active:hover .switch-toggle-bar .switch-toggle-button{background-color:#006226}.qd-switch.qd-switch-disabled label:hover{cursor:initial}.qd-switch.qd-switch-disabled .switch-toggle-bar{background-color:#efefef}.qd-switch.qd-switch-disabled .switch-toggle-bar .switch-toggle-button{background-color:#d5d5d5}.qd-switch.qd-switch-disabled .switch-content{color:#757575}.qd-switch.qd-switch-disabled:hover .switch-toggle-bar{background-color:#efefef}.qd-switch.qd-switch-disabled:hover .switch-toggle-bar .switch-toggle-button{background-color:#d5d5d5}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
72
36
  }
73
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdSwitchComponent, decorators: [{
74
38
  type: Component,
75
- args: [{ selector: 'qd-switch', encapsulation: ViewEncapsulation.None, providers: [
76
- {
77
- provide: NG_VALUE_ACCESSOR,
78
- useExisting: QdSwitchComponent,
79
- multi: true
80
- }
81
- ], host: { class: 'qd-switch' }, template: "<label [for]=\"toggleId\">\n <div class=\"switch-content\" *ngIf=\"labelPosition === 'left'\" [attr.data-test-id]=\"testId + '-label'\">\n {{ label | translate }}\n </div>\n <div class=\"switch-toggle-bar\">\n <input\n class=\"switch-toggle-input\"\n name=\"switch-toggle\"\n type=\"checkbox\"\n [id]=\"toggleId\"\n (click)=\"handleClick(value, $event)\"\n [value]=\"value\"\n [disabled]=\"isDisabled\"\n [attr.data-test-id]=\"testId + '-input'\"\n />\n <div class=\"switch-toggle-button\"></div>\n </div>\n <div class=\"switch-content\" *ngIf=\"labelPosition === 'right'\" [attr.data-test-id]=\"testId + '-content'\">\n {{ label | translate }}\n </div>\n</label>\n", styles: [".qd-switch label{display:flex;width:max-content;align-items:center}.qd-switch label:hover{cursor:pointer}.qd-switch .switch-toggle-bar{position:relative;width:2.5rem;height:1.25rem;border-radius:1.25rem;background-color:#e5e5e5}.qd-switch .switch-toggle-bar input{appearance:none}.qd-switch .switch-toggle-bar .switch-toggle-button{position:absolute;top:0;width:1.25rem;height:1.25rem;border-radius:1.25rem;background-color:#b4b4b4;transition:all 80ms linear;transition-property:transform}.qd-switch .switch-content{margin-right:.75rem;margin-left:.75rem;color:#171717;font-size:.875rem;font-weight:400;line-height:.875rem}.qd-switch:hover .switch-toggle-bar{background-color:#d5d5d5}.qd-switch:hover .switch-toggle-bar .switch-toggle-button{background-color:#979797}.qd-switch.qd-switch-active .switch-toggle-bar{background-color:#c3e8cd}.qd-switch.qd-switch-active .switch-toggle-bar .switch-toggle-button{background-color:#00813a;transform:translate(1.25rem)}.qd-switch.qd-switch-active:hover .switch-toggle-bar .switch-toggle-button{background-color:#006226}.qd-switch.qd-switch-disabled label:hover{cursor:initial}.qd-switch.qd-switch-disabled .switch-toggle-bar{background-color:#efefef}.qd-switch.qd-switch-disabled .switch-toggle-bar .switch-toggle-button{background-color:#d5d5d5}.qd-switch.qd-switch-disabled .switch-content{color:#757575}.qd-switch.qd-switch-disabled:hover .switch-toggle-bar{background-color:#efefef}.qd-switch.qd-switch-disabled:hover .switch-toggle-bar .switch-toggle-button{background-color:#d5d5d5}\n"] }]
39
+ args: [{ selector: 'qd-switch', encapsulation: ViewEncapsulation.None, host: { class: 'qd-switch' }, template: "<label [for]=\"toggleId\">\n <div class=\"switch-content\" *ngIf=\"labelPosition === 'left'\" [attr.data-test-id]=\"testId + '-label'\">\n {{ label | translate }}\n </div>\n <div class=\"switch-toggle-bar\">\n <div class=\"switch-toggle-button\"></div>\n </div>\n <div class=\"switch-content\" *ngIf=\"labelPosition === 'right'\" [attr.data-test-id]=\"testId + '-content'\">\n {{ label | translate }}\n </div>\n</label>\n", styles: [".qd-switch label{display:flex;width:max-content;align-items:center}.qd-switch label:hover{cursor:pointer}.qd-switch .switch-toggle-bar{position:relative;width:2.5rem;height:1.25rem;border-radius:1.25rem;background-color:#e5e5e5}.qd-switch .switch-toggle-bar .switch-toggle-button{position:absolute;top:0;width:1.25rem;height:1.25rem;border-radius:1.25rem;background-color:#b4b4b4;transition:all 80ms linear;transition-property:transform}.qd-switch .switch-content{margin-right:.75rem;margin-left:.75rem;color:#171717;font-size:.875rem;font-weight:400;line-height:.875rem}.qd-switch:hover .switch-toggle-bar{background-color:#d5d5d5}.qd-switch:hover .switch-toggle-bar .switch-toggle-button{background-color:#979797}.qd-switch.qd-switch-active .switch-toggle-bar{background-color:#c3e8cd}.qd-switch.qd-switch-active .switch-toggle-bar .switch-toggle-button{background-color:#00813a;transform:translate(1.25rem)}.qd-switch.qd-switch-active:hover .switch-toggle-bar .switch-toggle-button{background-color:#006226}.qd-switch.qd-switch-disabled label:hover{cursor:initial}.qd-switch.qd-switch-disabled .switch-toggle-bar{background-color:#efefef}.qd-switch.qd-switch-disabled .switch-toggle-bar .switch-toggle-button{background-color:#d5d5d5}.qd-switch.qd-switch-disabled .switch-content{color:#757575}.qd-switch.qd-switch-disabled:hover .switch-toggle-bar{background-color:#efefef}.qd-switch.qd-switch-disabled:hover .switch-toggle-bar .switch-toggle-button{background-color:#d5d5d5}\n"] }]
82
40
  }], propDecorators: { inputData: [{
83
41
  type: Input
84
- }], value: [{
85
- type: Input
86
42
  }], id: [{
87
43
  type: Input
88
44
  }], disabled: [{
@@ -99,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
99
55
  type: HostBinding,
100
56
  args: ['class.qd-switch-disabled']
101
57
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9zd2l0Y2hlcy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9zd2l0Y2hlcy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFrQmxDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIseURBQXlEO0lBQ2hELFNBQVMsQ0FBZ0I7SUFDekIsS0FBSyxDQUFDO0lBQ04sRUFBRSxDQUFDO0lBQ0gsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNILE1BQU0sR0FBRyxRQUFRLENBQUM7SUFFL0IsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFbkQsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFB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RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcblxuaW1wb3J0IHsgUWRTd2l0Y2hJbnB1dCB9IGZyb20gJy4uLy4uL21vZGVsL29wdGlvbnMuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncWQtc3dpdGNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N3aXRjaC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBRZFN3aXRjaENvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBob3N0OiB7IGNsYXNzOiAncWQtc3dpdGNoJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkU3dpdGNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8vIFRPRE86IFJlZmFjdG9yIEZvcm1JbnB1dCBmb3IgYmV0dGVyIGludGVybmFsIGludGVyZmFjZVxuICBASW5wdXQoKSBpbnB1dERhdGE6IFFkU3dpdGNoSW5wdXQ7XG4gIEBJbnB1dCgpIHZhbHVlO1xuICBASW5wdXQoKSBpZDtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCdkYXRhLXRlc3QtaWQnKSB0ZXN0SWQgPSAnc3dpdGNoJztcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaC1hY3RpdmUnKVxuICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlucHV0RGF0YS5hY3RpdmU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaC1kaXNhYmxlZCcpXG4gIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlucHV0RGF0YS5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHRvZ2dsZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdWlkID0gdGhpcy5pbnB1dERhdGEgPyB0aGlzLmlucHV0RGF0YS52YWx1ZSArIHRoaXMuaWQgOiB0aGlzLmlkO1xuICAgIHJldHVybiBgc3dpdGNoLXRvZ2dsZS0ke3VpZH1gO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXREYXRhLmkxOG47XG4gIH1cblxuICBnZXQgbGFiZWxQb3NpdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlucHV0RGF0YS5sYWJlbFBvc2l0aW9uIHx8ICdyaWdodCc7XG4gIH1cblxuICBwcml2YXRlIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgX29uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pZCkge1xuICAgICAgdGhpcy5pZCA9IHV1aWQoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IHN0YXRlO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVDbGljayh2YWx1ZTogc3RyaW5nLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBfdmFsdWUgPSB2YWx1ZSAhPT0gdGhpcy52YWx1ZSA/IHZhbHVlIDogbnVsbDtcblxuICAgIHRoaXMuX29uQ2hhbmdlKF92YWx1ZSk7XG4gICAgdGhpcy5fb25Ub3VjaChfdmFsdWUpO1xuICAgIHRoaXMudmFsdWUgPSBfdmFsdWU7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG59XG4iLCI8bGFiZWwgW2Zvcl09XCJ0b2dnbGVJZFwiPlxuICA8ZGl2IGNsYXNzPVwic3dpdGNoLWNvbnRlbnRcIiAqbmdJZj1cImxhYmVsUG9zaXRpb24gPT09ICdsZWZ0J1wiIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWxhYmVsJ1wiPlxuICAgIHt7IGxhYmVsIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3dpdGNoLXRvZ2dsZS1iYXJcIj5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwic3dpdGNoLXRvZ2dsZS1pbnB1dFwiXG4gICAgICBuYW1lPVwic3dpdGNoLXRvZ2dsZVwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgW2lkXT1cInRvZ2dsZUlkXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDbGljayh2YWx1ZSwgJGV2ZW50KVwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctaW5wdXQnXCJcbiAgICAvPlxuICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2gtdG9nZ2xlLWJ1dHRvblwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN3aXRjaC1jb250ZW50XCIgKm5nSWY9XCJsYWJlbFBvc2l0aW9uID09PSAncmlnaHQnXCIgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctY29udGVudCdcIj5cbiAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cbjwvbGFiZWw+XG4iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9zd2l0Y2hlcy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9zd2l0Y2hlcy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVdsQyxNQUFNLE9BQU8saUJBQWlCO0lBQ25CLFNBQVMsQ0FBZ0I7SUFDekIsRUFBRSxDQUFTO0lBQ1gsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNILE1BQU0sR0FBRyxRQUFRLENBQUM7SUFFL0IsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFbkQsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE9BQU8saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQztJQUNqRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO3VHQW5DVSxpQkFBaUI7MkZBQWpCLGlCQUFpQixpVkNiOUIsc2JBV0E7OzJGREVhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxXQUFXLGlCQUdOLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFOzhCQUduQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNpQixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBRVgsV0FBVztzQkFBcEIsTUFBTTtnQkFHSCxNQUFNO3NCQURULFdBQVc7dUJBQUMsd0JBQXdCO2dCQU1qQyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgeyBRZFN3aXRjaElucHV0IH0gZnJvbSAnLi4vLi4vbW9kZWwvb3B0aW9ucy5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1zd2l0Y2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3dpdGNoLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdxZC1zd2l0Y2gnIH1cbn0pXG5leHBvcnQgY2xhc3MgUWRTd2l0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBpbnB1dERhdGE6IFFkU3dpdGNoSW5wdXQ7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3N3aXRjaCc7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2gtYWN0aXZlJylcbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dERhdGEuYWN0aXZlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2gtZGlzYWJsZWQnKVxuICBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dERhdGEuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCB0b2dnbGVJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVpZCA9IHRoaXMuaW5wdXREYXRhID8gdGhpcy5pbnB1dERhdGEudmFsdWUgKyB0aGlzLmlkIDogdGhpcy5pZDtcbiAgICByZXR1cm4gYHN3aXRjaC10b2dnbGUtJHt1aWR9YDtcbiAgfVxuXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlucHV0RGF0YS5pMThuO1xuICB9XG5cbiAgZ2V0IGxhYmVsUG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dERhdGEubGFiZWxQb3NpdGlvbiB8fCAncmlnaHQnO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICB0aGlzLmlkID0gdXVpZCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGxhYmVsIFtmb3JdPVwidG9nZ2xlSWRcIj5cbiAgPGRpdiBjbGFzcz1cInN3aXRjaC1jb250ZW50XCIgKm5nSWY9XCJsYWJlbFBvc2l0aW9uID09PSAnbGVmdCdcIiBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1sYWJlbCdcIj5cbiAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN3aXRjaC10b2dnbGUtYmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cInN3aXRjaC10b2dnbGUtYnV0dG9uXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3dpdGNoLWNvbnRlbnRcIiAqbmdJZj1cImxhYmVsUG9zaXRpb24gPT09ICdyaWdodCdcIiBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1jb250ZW50J1wiPlxuICAgIHt7IGxhYmVsIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuPC9sYWJlbD5cbiJdfQ==
@@ -225,7 +225,7 @@ export class QdSwitchesComponent {
225
225
  },
226
226
  QdSwitchesService,
227
227
  QdFormsActionEmitterService
228
- ], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-switches__input-section\" *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-switches__switch-section\">\n <qd-switch\n *ngFor=\"let input of switchesInputs\"\n [inputData]=\"input\"\n [(value)]=\"switchesValues[input.index]\"\n (click)=\"handleClick(input)\"\n [data-test-id]=\"testId + '-switch-' + input.index\"\n [disabled]=\"disabled\"\n ></qd-switch>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"selectedValuesTranslated\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"selectedValuesTranslated\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-switches{display:block;flex-direction:column;margin-bottom:.75rem}.qd-switches .qd-switches__input-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-switches .qd-switches__switch-section{display:flex;flex-direction:row}.qd-switches .qd-switches__switch-section .switch-toggle-bar{margin-right:.375rem}.qd-switches .qd-switches__switch-section .switch-content{margin:0 1rem 0 0}.qd-switches qd-switch:last-child .switch-content{margin-right:0}.qd-switches.qd-switches-vertical .qd-switches__switch-section{display:flex;flex-direction:column}.qd-switches.qd-switches-vertical .qd-switches__switch-section .qd-switch:not(:last-child){margin-bottom:.5rem}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section{align-items:center}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section .qd-switch{display:flex;height:2.25rem}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i7.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i8.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i9.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "component", type: i10.QdSwitchComponent, selector: "qd-switch", inputs: ["inputData", "value", "id", "disabled", "data-test-id"], outputs: ["valueChange"] }], encapsulation: i0.ViewEncapsulation.None });
228
+ ], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-switches__input-section\" *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-switches__switch-section\">\n <qd-switch\n *ngFor=\"let input of switchesInputs\"\n [inputData]=\"input\"\n (click)=\"handleClick(input)\"\n [data-test-id]=\"testId + '-switch-' + input.index\"\n [disabled]=\"disabled\"\n ></qd-switch>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"selectedValuesTranslated\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"selectedValuesTranslated\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-switches{display:block;flex-direction:column;margin-bottom:.75rem}.qd-switches .qd-switches__input-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-switches .qd-switches__switch-section{display:flex;flex-direction:row}.qd-switches .qd-switches__switch-section .switch-toggle-bar{margin-right:.375rem}.qd-switches .qd-switches__switch-section .switch-content{margin:0 1rem 0 0}.qd-switches qd-switch:last-child .switch-content{margin-right:0}.qd-switches.qd-switches-vertical .qd-switches__switch-section{display:flex;flex-direction:column}.qd-switches.qd-switches-vertical .qd-switches__switch-section .qd-switch:not(:last-child){margin-bottom:.5rem}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section{align-items:center}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section .qd-switch{display:flex;height:2.25rem}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i7.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i8.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i9.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "component", type: i10.QdSwitchComponent, selector: "qd-switch", inputs: ["inputData", "id", "disabled", "data-test-id"], outputs: ["valueChange"] }], encapsulation: i0.ViewEncapsulation.None });
229
229
  }
230
230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdSwitchesComponent, decorators: [{
231
231
  type: Component,
@@ -237,7 +237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
237
237
  },
238
238
  QdSwitchesService,
239
239
  QdFormsActionEmitterService
240
- ], encapsulation: ViewEncapsulation.None, host: { class: 'qd-switches' }, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-switches__input-section\" *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-switches__switch-section\">\n <qd-switch\n *ngFor=\"let input of switchesInputs\"\n [inputData]=\"input\"\n [(value)]=\"switchesValues[input.index]\"\n (click)=\"handleClick(input)\"\n [data-test-id]=\"testId + '-switch-' + input.index\"\n [disabled]=\"disabled\"\n ></qd-switch>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"selectedValuesTranslated\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"selectedValuesTranslated\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-switches{display:block;flex-direction:column;margin-bottom:.75rem}.qd-switches .qd-switches__input-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-switches .qd-switches__switch-section{display:flex;flex-direction:row}.qd-switches .qd-switches__switch-section .switch-toggle-bar{margin-right:.375rem}.qd-switches .qd-switches__switch-section .switch-content{margin:0 1rem 0 0}.qd-switches qd-switch:last-child .switch-content{margin-right:0}.qd-switches.qd-switches-vertical .qd-switches__switch-section{display:flex;flex-direction:column}.qd-switches.qd-switches-vertical .qd-switches__switch-section .qd-switch:not(:last-child){margin-bottom:.5rem}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section{align-items:center}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section .qd-switch{display:flex;height:2.25rem}\n"] }]
240
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'qd-switches' }, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-switches__input-section\" *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-switches__switch-section\">\n <qd-switch\n *ngFor=\"let input of switchesInputs\"\n [inputData]=\"input\"\n (click)=\"handleClick(input)\"\n [data-test-id]=\"testId + '-switch-' + input.index\"\n [disabled]=\"disabled\"\n ></qd-switch>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"selectedValuesTranslated\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"selectedValuesTranslated\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-switches{display:block;flex-direction:column;margin-bottom:.75rem}.qd-switches .qd-switches__input-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-switches .qd-switches__switch-section{display:flex;flex-direction:row}.qd-switches .qd-switches__switch-section .switch-toggle-bar{margin-right:.375rem}.qd-switches .qd-switches__switch-section .switch-content{margin:0 1rem 0 0}.qd-switches qd-switch:last-child .switch-content{margin-right:0}.qd-switches.qd-switches-vertical .qd-switches__switch-section{display:flex;flex-direction:column}.qd-switches.qd-switches-vertical .qd-switches__switch-section .qd-switch:not(:last-child){margin-bottom:.5rem}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section{align-items:center}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section .qd-switch{display:flex;height:2.25rem}\n"] }]
241
241
  }], ctorParameters: () => [{ type: i1.QdSwitchesService }, { type: i0.ChangeDetectorRef }, { type: i2.QdFormsActionEmitterService }, { type: i3.ControlContainer, decorators: [{
242
242
  type: Optional
243
243
  }, {
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
297
297
  type: HostBinding,
298
298
  args: ['class.qd-switches-hint']
299
299
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL3N3aXRjaGVzL3N3aXRjaGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9zd2l0Y2hlcy9zd2l0Y2hlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sUUFBUSxFQUNSLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLGdCQUFnQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEMsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsYUFBYSxFQUNiLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7Ozs7OztBQUdoRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztH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UCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFJekMsY0FBYztzQkFEYixXQUFXO3VCQUFDLG9DQUFvQztnQkFJakQsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFJekMsY0FBYztzQkFEYixXQUFXO3VCQUFDLG9DQUFvQztnQkFLMUMsVUFBVTtzQkFGaEIsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUN2QyxXQUFXO3VCQUFDLGdDQUFnQztnQkFJN0MsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFLakMsUUFBUTtzQkFGWCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLFdBQVc7dUJBQUMseUJBQXlCO2dCQU1sQyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsNEJBQTRCO2dCQU1yQyxPQUFPO3NCQURWLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBTa2lwU2VsZixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgeyBRZEZvcm1PcHRpb24sIFFkRm9ybVN3aXRjaGVzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVsL2Zvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBnZXRBbGlnbixcbiAgZ2V0RGlzYWJsZWQsXG4gIGdldEhpbnRBY3Rpb24sXG4gIGdldExhYmVsLFxuICBnZXRPcHRpb25zLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFZpZXdvbmx5LFxuICBnZXRWaWV3b25seUFjdGlvblxufSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9mb3Jtcy5oZWxwZXJzJztcbmltcG9ydCB7IGhhc1ZhbGlkYXRpb25LZXkgfSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9oYXMtdmFsaWRhdG9ycy5oZWxwZXJzJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU3dpdGNoZXNTZXJ2aWNlIH0gZnJvbSAnLi9zd2l0Y2hlcy1zZXJ2aWNlL3N3aXRjaGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRFdmVudEJyb2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2V2ZW50LWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU3dpdGNoSW5wdXQgfSBmcm9tICcuLi9tb2RlbC9vcHRpb25zLmludGVyZmFjZSc7XG5cbi8qKlxuICogKipRZFN3aXRjaGVzKiogY29tcG9uZW50IHByb3ZpZGVzIGEgRm9ybUVsZW1lbnQuXG4gKiBUaGUgKipRZFN3aXRjaGVzKiogaXMgYSBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGZvcm0gZWxlbWVudCBmb3Igc3dpdGNoZXMuPGJyIC8+XG4gKiBJdCBhbGxvd3MgdXNlcnMgdG8gc2VsZWN0IG11bHRpcGxlIG9wdGlvbnMgZnJvbSBhIGxpc3Qgb2Ygb3B0aW9ucy4gSXQgY2FuIGJlIHVzZWQgd2l0aCBRdWFkcmVsIFJlYWN0aXZlIEZvcm1zIG9yIHdpdGggbW9kZWwgYmluZGluZy5cbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIFJlYWN0aXZlIEZvcm1zKipcbiAqXG4gKiBgYGB0c1xuICogZm9ybSA9IG5ldyBRZEZvcm1Hcm91cCh7XG4gKiAgIHN3aXRjaGVzOiBuZXcgUWRGb3JtQ29udHJvbChbXSkgLy8gYXQgbGVhc3QgYW4gZW1wdHkgYXJyYXkgdG8gcHJldmVudCBydW50aW1lIGVycm9ycy5cbiAqIH0pO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgPHFkLXN3aXRjaGVzIGZvcm1Db250cm9sTmFtZT1cInN3aXRjaGVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZXM7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxxZC1zd2l0Y2hlcyBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXN3aXRjaGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3dpdGNoZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUWRTd2l0Y2hlc0NvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICBRZFN3aXRjaGVzU2VydmljZSxcbiAgICBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2VcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ3FkLXN3aXRjaGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkU3dpdGNoZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBmb3JtIGNvbnRyb2wgbmFtZSBjYW4gYmUgYXNzaWduZWQgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgUmVhY3RpdmUgRm9ybXMuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvcm0gaXRlbSB2YWx1ZXMsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIE1vZGVsIEJpbmRpbmcuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDxxZC1zd2l0Y2hlcyBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmb3JtIGl0ZW1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIGxhYmVsOiB7IGkxOG46ICdRZC1Gb3JtcyBTd2l0Y2hlcycgfSxcbiAgICogICBoaW50OiB7IGkxOG46ICdIZWxwZXJ0ZXh0JyB9LFxuICAgKiAgIG9wdGlvbnM6IFtcbiAgICogICAgIHsgaTE4bjogJ2kxOG4ucWQuZXhhbXBsZUZvcm1GaWVsZC5nb29kc0RlY2xhcmF0aW9uLmltcG9ydCcsIHZhbHVlOiAnaW1wb3J0JyB9LFxuICAgKiAgICAgeyBpMThuOiAnaTE4bi5xZC5leGFtcGxlRm9ybUZpZWxkLmdvb2RzRGVjbGFyYXRpb24uZXhwb3J0JywgdmFsdWU6ICdleHBvcnQnIH0sXG4gICAqICAgICB7IGkxOG46ICdpMThuLnFkLmV4YW1wbGVGb3JtRmllbGQuZ29vZHNEZWNsYXJhdGlvbi50cmFuc2l0JywgdmFsdWU6ICd0cmFuc2l0JyB9XG4gICAqICAgXVxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1Td2l0Y2hlc0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3N3aXRjaGVzJztcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmFsdWVzIGNoYW5nZS4gUmV0dXJuIHZhbHVlcyBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgcmVhZG9ubHlBY3Rpb24gYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tSZWFkb25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmlld29ubHkgdmFsdWUgaXMgY2xpY2tlZC90YXBwZWQuIGB2aWV3b25seUFjdGlvbiBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1ZpZXdvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tcmVhZG9ubHknKVxuICByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi12aWV3b25seScpXG4gIHZpZXdvbmx5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0taGludC1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaGVzLS1oaW50LWFjdGlvbicpXG4gIHB1YmxpYyBoaW50QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWRpc2FibGVkJylcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZXJyb3InKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaGVzLWVycm9yJylcbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgPyB0aGlzLmNvbnRyb2wudG91Y2hlZCAmJiB0aGlzLmNvbnRyb2wuaW52YWxpZCA6IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2hlcy12ZXJ0aWNhbCcpXG4gIGdldCBpc1ZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsaWduID09PSAndmVydGljYWwnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2hlcy1oaW50JylcbiAgZ2V0IGhhc0hpbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmhpbnQgJiYgdGhpcy5jb25maWcuaGludC5pMThuICYmICF0aGlzLmNvbmZpZy5oaW50LmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb250cm9sKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gaGFzVmFsaWRhdGlvbktleSh0aGlzLmNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICB9XG5cbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhbGlnbjtcbiAgbGFiZWxQb3NpdGlvbjtcbiAgb3B0aW9uczogUWRGb3JtT3B0aW9uW107XG4gIHN3aXRjaGVzVmFsdWVzOiBzdHJpbmdbXTtcbiAgc3dpdGNoZXNJbnB1dHM6IFFkU3dpdGNoSW5wdXRbXTtcblxuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzd2l0Y2hlc1NlcnZpY2U6IFFkU3dpdGNoZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uRW1pdHRlclNlcnZpY2U6IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHV1aWQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbENvbnRhaW5lcikge1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1FELVVJIHwgUWRTd2l0Y2hlc0NvbXBvbmVudCAtIE1pc3NpbmcgRm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSBmcm9tIGhvc3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3dpdGNoZXNTZXJ2aWNlLnNldExpc3QodGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLnN3aXRjaGVzU2VydmljZS5maWxsTGlzdFdpdGhEZWZhdWx0cyh0aGlzLnZhbHVlcyk7XG4gICAgdGhpcy5zZXREYXRhKCk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLmhpbnRFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrSGludC5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnJlYWRvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2Uudmlld29ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5pbml0T3BNb2RlU3Vic2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZXMpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaGVzU2VydmljZS5maWxsTGlzdFdpdGhEZWZhdWx0cyh2YWx1ZXMpO1xuICAgIHRoaXMuc2V0RGF0YSgpO1xuICAgIHRoaXMuc3dpdGNoZXNWYWx1ZXMgPSB2YWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2xpY2soaXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLnVwZGF0ZURhdGEoaXRlbS52YWx1ZSk7XG5cbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnN3aXRjaGVzVmFsdWVzKTtcbiAgICB0aGlzLl9vblRvdWNoKHRoaXMuc3dpdGNoZXNWYWx1ZXMpO1xuXG4gICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnN3aXRjaGVzVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZFZhbHVlc1RyYW5zbGF0ZWQoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN3aXRjaGVzSW5wdXRzLmZpbHRlcihpbnB1dCA9PiBpbnB1dC5hY3RpdmUpLm1hcChpbnB1dCA9PiBpbnB1dC5pMThuKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZ2V0RGlzYWJsZWQodGhpcy5jb25maWcpIHx8ICEhdGhpcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgICB0aGlzLmxhYmVsID0gZ2V0TGFiZWwodGhpcy5jb25maWcpO1xuICAgIHRoaXMuYWxpZ24gPSBnZXRBbGlnbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zID0gZ2V0T3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5oaW50QWN0aW9uID0gZ2V0SGludEFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seSA9IGdldFJlYWRvbmx5KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5QWN0aW9uID0gZ2V0UmVhZG9ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy52aWV3b25seUFjdGlvbiA9IGdldFZpZXdvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaGVzVmFsdWVzID0gdGhpcy5zd2l0Y2hlc1NlcnZpY2UuZ2V0VmFsdWVzKCk7XG4gICAgdGhpcy5zd2l0Y2hlc0lucHV0cyA9IHRoaXMuc3dpdGNoZXNTZXJ2aWNlLmdldExpc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0YSh2YWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoZXNTZXJ2aWNlLnVwZGF0ZUxpc3QodmFsdWUpO1xuICAgIHRoaXMuc3dpdGNoZXNWYWx1ZXMgPSB0aGlzLnN3aXRjaGVzU2VydmljZS5nZXRWYWx1ZXMoKTtcbiAgICB0aGlzLnN3aXRjaGVzSW5wdXRzID0gdGhpcy5zd2l0Y2hlc1NlcnZpY2UuZ2V0TGlzdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3BNb2RlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IHZvaWQge1xuICAgIGlmICghdGhpcy5ldmVudEJyb2tlclNlcnZpY2UpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZS5jb25zdW1lPHsgaXNWaWV3b25seTogYm9vbGVhbiB9Pignb3BlcmF0aW9uX21vZGVfY2hhbmdlZCcpLnN1YnNjcmliZSh0b3BpYyA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cWQtZm9ybS1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbdmlld29ubHldPVwidmlld29ubHlcIlxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgW3Rvb2x0aXBdPVwiY29uZmlnPy50b29sdGlwXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1sYWJlbD5cblxuPGRpdiBjbGFzcz1cInFkLXN3aXRjaGVzX19pbnB1dC1zZWN0aW9uXCIgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5XCI+XG4gIDxkaXYgY2xhc3M9XCJxZC1zd2l0Y2hlc19fc3dpdGNoLXNlY3Rpb25cIj5cbiAgICA8cWQtc3dpdGNoXG4gICAgICAqbmdGb3I9XCJsZXQgaW5wdXQgb2Ygc3dpdGNoZXNJbnB1dHNcIlxuICAgICAgW2lucHV0RGF0YV09XCJpbnB1dFwiXG4gICAgICBbKHZhbHVlKV09XCJzd2l0Y2hlc1ZhbHVlc1tpbnB1dC5pbmRleF1cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKGlucHV0KVwiXG4gICAgICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctc3dpdGNoLScgKyBpbnB1dC5pbmRleFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgID48L3FkLXN3aXRjaD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPHFkLWZvcm0taGludFxuICAqbmdJZj1cIiFyZWFkb25seSAmJiAhdmlld29ubHlcIlxuICBbaGludF09XCJoYXNIaW50ID8gY29uZmlnLmhpbnQuaTE4biA6ICcnXCJcbiAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gIFtoYXNFcnJvcl09XCJoYXNFcnJvclwiXG4gIFtoaW50QWN0aW9uXT1cImhpbnRBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWhpbnQ+XG5cbjxxZC1mb3JtLXJlYWRvbmx5XG4gICpuZ0lmPVwicmVhZG9ubHlcIlxuICBbdmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzVHJhbnNsYXRlZFwiXG4gIFtyZWFkb25seUFjdGlvbl09XCJyZWFkb25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tcmVhZG9ubHk+XG5cbjxxZC1mb3JtLXZpZXdvbmx5XG4gICpuZ0lmPVwidmlld29ubHlcIlxuICBbdmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzVHJhbnNsYXRlZFwiXG4gIFt2aWV3b25seUFjdGlvbl09XCJ2aWV3b25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tdmlld29ubHk+XG4iXX0=
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL3N3aXRjaGVzL3N3aXRjaGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9zd2l0Y2hlcy9zd2l0Y2hlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sUUFBUSxFQUNSLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLGdCQUFnQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEMsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsYUFBYSxFQUNiLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7Ozs7OztBQUdoRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztH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UCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFJekMsY0FBYztzQkFEYixXQUFXO3VCQUFDLG9DQUFvQztnQkFJakQsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFJekMsY0FBYztzQkFEYixXQUFXO3VCQUFDLG9DQUFvQztnQkFLMUMsVUFBVTtzQkFGaEIsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUN2QyxXQUFXO3VCQUFDLGdDQUFnQztnQkFJN0MsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFLakMsUUFBUTtzQkFGWCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLFdBQVc7dUJBQUMseUJBQXlCO2dCQU1sQyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsNEJBQTRCO2dCQU1yQyxPQUFPO3NCQURWLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBTa2lwU2VsZixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgeyBRZEZvcm1PcHRpb24sIFFkRm9ybVN3aXRjaGVzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVsL2Zvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBnZXRBbGlnbixcbiAgZ2V0RGlzYWJsZWQsXG4gIGdldEhpbnRBY3Rpb24sXG4gIGdldExhYmVsLFxuICBnZXRPcHRpb25zLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFZpZXdvbmx5LFxuICBnZXRWaWV3b25seUFjdGlvblxufSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9mb3Jtcy5oZWxwZXJzJztcbmltcG9ydCB7IGhhc1ZhbGlkYXRpb25LZXkgfSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9oYXMtdmFsaWRhdG9ycy5oZWxwZXJzJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU3dpdGNoZXNTZXJ2aWNlIH0gZnJvbSAnLi9zd2l0Y2hlcy1zZXJ2aWNlL3N3aXRjaGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRFdmVudEJyb2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2V2ZW50LWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU3dpdGNoSW5wdXQgfSBmcm9tICcuLi9tb2RlbC9vcHRpb25zLmludGVyZmFjZSc7XG5cbi8qKlxuICogKipRZFN3aXRjaGVzKiogY29tcG9uZW50IHByb3ZpZGVzIGEgRm9ybUVsZW1lbnQuXG4gKiBUaGUgKipRZFN3aXRjaGVzKiogaXMgYSBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGZvcm0gZWxlbWVudCBmb3Igc3dpdGNoZXMuPGJyIC8+XG4gKiBJdCBhbGxvd3MgdXNlcnMgdG8gc2VsZWN0IG11bHRpcGxlIG9wdGlvbnMgZnJvbSBhIGxpc3Qgb2Ygb3B0aW9ucy4gSXQgY2FuIGJlIHVzZWQgd2l0aCBRdWFkcmVsIFJlYWN0aXZlIEZvcm1zIG9yIHdpdGggbW9kZWwgYmluZGluZy5cbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIFJlYWN0aXZlIEZvcm1zKipcbiAqXG4gKiBgYGB0c1xuICogZm9ybSA9IG5ldyBRZEZvcm1Hcm91cCh7XG4gKiAgIHN3aXRjaGVzOiBuZXcgUWRGb3JtQ29udHJvbChbXSkgLy8gYXQgbGVhc3QgYW4gZW1wdHkgYXJyYXkgdG8gcHJldmVudCBydW50aW1lIGVycm9ycy5cbiAqIH0pO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgPHFkLXN3aXRjaGVzIGZvcm1Db250cm9sTmFtZT1cInN3aXRjaGVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZXM7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxxZC1zd2l0Y2hlcyBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXN3aXRjaGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3dpdGNoZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUWRTd2l0Y2hlc0NvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICBRZFN3aXRjaGVzU2VydmljZSxcbiAgICBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2VcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ3FkLXN3aXRjaGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkU3dpdGNoZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBmb3JtIGNvbnRyb2wgbmFtZSBjYW4gYmUgYXNzaWduZWQgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgUmVhY3RpdmUgRm9ybXMuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvcm0gaXRlbSB2YWx1ZXMsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIE1vZGVsIEJpbmRpbmcuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDxxZC1zd2l0Y2hlcyBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmb3JtIGl0ZW1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIGxhYmVsOiB7IGkxOG46ICdRZC1Gb3JtcyBTd2l0Y2hlcycgfSxcbiAgICogICBoaW50OiB7IGkxOG46ICdIZWxwZXJ0ZXh0JyB9LFxuICAgKiAgIG9wdGlvbnM6IFtcbiAgICogICAgIHsgaTE4bjogJ2kxOG4ucWQuZXhhbXBsZUZvcm1GaWVsZC5nb29kc0RlY2xhcmF0aW9uLmltcG9ydCcsIHZhbHVlOiAnaW1wb3J0JyB9LFxuICAgKiAgICAgeyBpMThuOiAnaTE4bi5xZC5leGFtcGxlRm9ybUZpZWxkLmdvb2RzRGVjbGFyYXRpb24uZXhwb3J0JywgdmFsdWU6ICdleHBvcnQnIH0sXG4gICAqICAgICB7IGkxOG46ICdpMThuLnFkLmV4YW1wbGVGb3JtRmllbGQuZ29vZHNEZWNsYXJhdGlvbi50cmFuc2l0JywgdmFsdWU6ICd0cmFuc2l0JyB9XG4gICAqICAgXVxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1Td2l0Y2hlc0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3N3aXRjaGVzJztcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmFsdWVzIGNoYW5nZS4gUmV0dXJuIHZhbHVlcyBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgcmVhZG9ubHlBY3Rpb24gYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tSZWFkb25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmlld29ubHkgdmFsdWUgaXMgY2xpY2tlZC90YXBwZWQuIGB2aWV3b25seUFjdGlvbiBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1ZpZXdvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tcmVhZG9ubHknKVxuICByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi12aWV3b25seScpXG4gIHZpZXdvbmx5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0taGludC1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaGVzLS1oaW50LWFjdGlvbicpXG4gIHB1YmxpYyBoaW50QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWRpc2FibGVkJylcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZXJyb3InKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaGVzLWVycm9yJylcbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgPyB0aGlzLmNvbnRyb2wudG91Y2hlZCAmJiB0aGlzLmNvbnRyb2wuaW52YWxpZCA6IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2hlcy12ZXJ0aWNhbCcpXG4gIGdldCBpc1ZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsaWduID09PSAndmVydGljYWwnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2hlcy1oaW50JylcbiAgZ2V0IGhhc0hpbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmhpbnQgJiYgdGhpcy5jb25maWcuaGludC5pMThuICYmICF0aGlzLmNvbmZpZy5oaW50LmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb250cm9sKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gaGFzVmFsaWRhdGlvbktleSh0aGlzLmNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICB9XG5cbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhbGlnbjtcbiAgbGFiZWxQb3NpdGlvbjtcbiAgb3B0aW9uczogUWRGb3JtT3B0aW9uW107XG4gIHN3aXRjaGVzVmFsdWVzOiBzdHJpbmdbXTtcbiAgc3dpdGNoZXNJbnB1dHM6IFFkU3dpdGNoSW5wdXRbXTtcblxuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzd2l0Y2hlc1NlcnZpY2U6IFFkU3dpdGNoZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uRW1pdHRlclNlcnZpY2U6IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHV1aWQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbENvbnRhaW5lcikge1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1FELVVJIHwgUWRTd2l0Y2hlc0NvbXBvbmVudCAtIE1pc3NpbmcgRm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSBmcm9tIGhvc3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3dpdGNoZXNTZXJ2aWNlLnNldExpc3QodGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLnN3aXRjaGVzU2VydmljZS5maWxsTGlzdFdpdGhEZWZhdWx0cyh0aGlzLnZhbHVlcyk7XG4gICAgdGhpcy5zZXREYXRhKCk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLmhpbnRFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrSGludC5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnJlYWRvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2Uudmlld29ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5pbml0T3BNb2RlU3Vic2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZXMpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaGVzU2VydmljZS5maWxsTGlzdFdpdGhEZWZhdWx0cyh2YWx1ZXMpO1xuICAgIHRoaXMuc2V0RGF0YSgpO1xuICAgIHRoaXMuc3dpdGNoZXNWYWx1ZXMgPSB2YWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2xpY2soaXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLnVwZGF0ZURhdGEoaXRlbS52YWx1ZSk7XG5cbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnN3aXRjaGVzVmFsdWVzKTtcbiAgICB0aGlzLl9vblRvdWNoKHRoaXMuc3dpdGNoZXNWYWx1ZXMpO1xuXG4gICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnN3aXRjaGVzVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZFZhbHVlc1RyYW5zbGF0ZWQoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN3aXRjaGVzSW5wdXRzLmZpbHRlcihpbnB1dCA9PiBpbnB1dC5hY3RpdmUpLm1hcChpbnB1dCA9PiBpbnB1dC5pMThuKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZ2V0RGlzYWJsZWQodGhpcy5jb25maWcpIHx8ICEhdGhpcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgICB0aGlzLmxhYmVsID0gZ2V0TGFiZWwodGhpcy5jb25maWcpO1xuICAgIHRoaXMuYWxpZ24gPSBnZXRBbGlnbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zID0gZ2V0T3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5oaW50QWN0aW9uID0gZ2V0SGludEFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seSA9IGdldFJlYWRvbmx5KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5QWN0aW9uID0gZ2V0UmVhZG9ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy52aWV3b25seUFjdGlvbiA9IGdldFZpZXdvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaGVzVmFsdWVzID0gdGhpcy5zd2l0Y2hlc1NlcnZpY2UuZ2V0VmFsdWVzKCk7XG4gICAgdGhpcy5zd2l0Y2hlc0lucHV0cyA9IHRoaXMuc3dpdGNoZXNTZXJ2aWNlLmdldExpc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0YSh2YWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoZXNTZXJ2aWNlLnVwZGF0ZUxpc3QodmFsdWUpO1xuICAgIHRoaXMuc3dpdGNoZXNWYWx1ZXMgPSB0aGlzLnN3aXRjaGVzU2VydmljZS5nZXRWYWx1ZXMoKTtcbiAgICB0aGlzLnN3aXRjaGVzSW5wdXRzID0gdGhpcy5zd2l0Y2hlc1NlcnZpY2UuZ2V0TGlzdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3BNb2RlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IHZvaWQge1xuICAgIGlmICghdGhpcy5ldmVudEJyb2tlclNlcnZpY2UpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZS5jb25zdW1lPHsgaXNWaWV3b25seTogYm9vbGVhbiB9Pignb3BlcmF0aW9uX21vZGVfY2hhbmdlZCcpLnN1YnNjcmliZSh0b3BpYyA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cWQtZm9ybS1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbdmlld29ubHldPVwidmlld29ubHlcIlxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgW3Rvb2x0aXBdPVwiY29uZmlnPy50b29sdGlwXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1sYWJlbD5cblxuPGRpdiBjbGFzcz1cInFkLXN3aXRjaGVzX19pbnB1dC1zZWN0aW9uXCIgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5XCI+XG4gIDxkaXYgY2xhc3M9XCJxZC1zd2l0Y2hlc19fc3dpdGNoLXNlY3Rpb25cIj5cbiAgICA8cWQtc3dpdGNoXG4gICAgICAqbmdGb3I9XCJsZXQgaW5wdXQgb2Ygc3dpdGNoZXNJbnB1dHNcIlxuICAgICAgW2lucHV0RGF0YV09XCJpbnB1dFwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soaW5wdXQpXCJcbiAgICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1zd2l0Y2gtJyArIGlucHV0LmluZGV4XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPjwvcWQtc3dpdGNoPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48cWQtZm9ybS1oaW50XG4gICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiXG4gIFtoaW50XT1cImhhc0hpbnQgPyBjb25maWcuaGludC5pMThuIDogJydcIlxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgW2hpbnRBY3Rpb25dPVwiaGludEFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0taGludD5cblxuPHFkLWZvcm0tcmVhZG9ubHlcbiAgKm5nSWY9XCJyZWFkb25seVwiXG4gIFt2YWx1ZXNdPVwic2VsZWN0ZWRWYWx1ZXNUcmFuc2xhdGVkXCJcbiAgW3JlYWRvbmx5QWN0aW9uXT1cInJlYWRvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1yZWFkb25seT5cblxuPHFkLWZvcm0tdmlld29ubHlcbiAgKm5nSWY9XCJ2aWV3b25seVwiXG4gIFt2YWx1ZXNdPVwic2VsZWN0ZWRWYWx1ZXNUcmFuc2xhdGVkXCJcbiAgW3ZpZXdvbmx5QWN0aW9uXT1cInZpZXdvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS12aWV3b25seT5cbiJdfQ==
@@ -99,6 +99,42 @@ import * as i5 from "@ngx-translate/core";
99
99
  * }
100
100
  * ```
101
101
  *
102
+ * ### Whitelisting HTTP status codes
103
+ *
104
+ * In some cases, you might want to prevent certain HTTP status codes from triggering error notifications. For example, a 304 Not Modified response is not actually an error and should not display an error notification. The **QdUiModule** allows you to whitelist specific HTTP status codes.
105
+ *
106
+ * To whitelist HTTP status codes, pass an array of status codes as the third parameter to the **QdUiModule.forRoot** method:
107
+ *
108
+ * ```typescript
109
+ * import { HttpStatusCode } from '@angular/common/http';
110
+ *
111
+ * imports: [
112
+ * ...
113
+ * QdUiModule.forRoot(
114
+ * appEnvironment,
115
+ * ErrorCodes,
116
+ * [HttpStatusCode.NotModified, HttpStatusCode.NoContent] // Whitelist 304 Not Modified and 204 No Content
117
+ * ),
118
+ * ...
119
+ * ]
120
+ * ```
121
+ *
122
+ * When a response with a whitelisted status code is received, no error notification will be displayed, even if it would normally be treated as an error by the HTTP client.
123
+ *
124
+ * ### Blacklisting HTTP status codes
125
+ *
126
+ * For critical errors, notifications are always shown, even if the status code is whitelisted. The **QdUiModule** implements a fixed blacklist that takes precedence over the whitelist.
127
+ *
128
+ * The following status codes are permanently blacklisted:
129
+ * - 401 Unauthorized
130
+ * - 402 Payment Required
131
+ * - 403 Forbidden
132
+ * - All 5xx server error codes (500-511)
133
+ *
134
+ * These critical errors will always show notifications, even if they are included in the whitelist.
135
+ *
136
+ * **Important**: The blacklist has higher precedence than the whitelist. If a status code appears in both the whitelist and the blacklist, it will be treated as blacklisted, and an error notification will be shown.
137
+ *
102
138
  * ### Component:
103
139
  *
104
140
  * ```typescript
@@ -508,4 +544,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
508
544
  type: HostBinding,
509
545
  args: ['attr.class']
510
546
  }] } });
511
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQUVqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWliRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUFvQmY7SUFDQTtJQUNUO0lBckJWOztPQUVHO0lBQ00sSUFBSSxHQUF1QixVQUFVLENBQUM7SUFFL0M7O09BRUc7SUFDTSxZQUFZLENBQWlCO0lBRXRDLElBQStCLGFBQWE7UUFDMUMsT0FBTyxtQ0FBbUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxZQUNtQixtQkFBMkMsRUFDM0MsZUFBa0MsRUFDM0MsT0FBbUI7UUFGVix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUMzQyxZQUFPLEdBQVAsT0FBTyxDQUFZO0lBQzFCLENBQUM7SUFFSixPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN2QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyx3QkFBd0IsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3RCxDQUFDO3VHQXhEVSx1QkFBdUI7MkZBQXZCLHVCQUF1QixnTkM5YnBDLGdpQkFVQTs7MkZEb2JhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxpQkFBaUIsUUFHckIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7b0pBTXpCLElBQUk7c0JBQVosS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUV5QixhQUFhO3NCQUEzQyxXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFFkTm90aWZpY2F0aW9uLCBRZE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgUWROb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XG5cbi8qKlxuICogICoqUWROb3RpZmljYXRpb24qKiBkaXNwbGF5cyBhIHNpbmdsZSBub3RpZmljYXRpb24gaXRlbSB3aXRoaW4gYSAqKlFkTm90aWZpY2F0aW9ucyoqIGNvbnRhaW5lci5cbiAqXG4gKiAjIE5vdGlmaWNhdGlvbnMgU2VydmljZVxuICpcbiAqIFRoZSAqKk5vdGlmaWNhdGlvbnMgU2VydmljZSoqIGNhbiBiZSB1c2VkIHRvIGNhdGNoIGVycm9ycyBmcm9tIHRoZSBiYWNrZW5kLiBJbiBhZGRpdGlvbiwgdGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHNldmVyYWwgbWV0aG9kcyB0byBkaXNwbGF5IG1lc3NhZ2VzLlxuICpcbiAqICMjIE5vdGlmaWNhdGlvbiBmcm9tIEJhY2tlbmRcbiAqXG4gKiBUaGUgKipRZFVpTW9kdWxlKiogcHJvdmlkZXMgYW4gSFRUUCBpbnRlcmNlcHRvciB0aGF0IGRpc3BsYXlzIHJlcXVlc3QgZXJyb3JzIGFzIHNuYWNrYmFyIG5vdGlmaWNhdGlvbnMuIFRvIGdldCB0aGUgcHJvcGVyIG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgYmFja2VuZCBlcnJvcnMsIHBsZWFzZSBjb21wbHkgd2l0aCB0aGVzZSBjb252ZW50aW9ucy5cbiAqXG4gKiAjIyMgRXhhbXBsZSBvZiBhIHJlc3BvbnNlIG9iamVjdFxuICpcbiAqIFRoZSBiYWNrZW5kIHNlcnZpY2UgcmVzcG9uc2UgaGFzIHRvIGNvbnRhaW4gYW4gZXJyb3JDb2RlIGZpZWxkLiBUaGlzIGVycm9yIGNvZGUgd2lsbCBiZSBtYXBwZWQgdG8gZ2V0IHRoZSB0cmFuc2xhdGlvbiBmb3IgdGhlIG5vdGlmaWNhdGlvbiBtZXNzYWdlLlxuICpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJlcnJvckNvZGVcIjogXCJUUkFOU1BPUlRfQ09DS1BJVF9QRVJTSVNURU5DRV9FUlJPUlwiLFxuICogICBcImVycm9yTWVzc2FnZVwiOiBcIlRSQU5TUE9SVF9DT0NLUElUX1BFUlNJU1RFTkNFX0VSUk9SOiBDb3VsZCBub3QgZmluZCBEZWNsYXJhdGlvbiB3aWggaWQ6IGI3OGUwNzM0LWFlMWItNDM0ZS1iNDRkLWI0ODc5N2Y1Njk2ZFwiXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRGVmaW5lIEVycm9yIENvZGVzIGluIHRoZSBRZFVpTW9kdWxlXG4gKlxuICogVGhlICoqUWRVaU1vZHVsZSoqIGV4cGVjdHMgYW4gZW51bSB3aXRoIGVycm9yIGNvZGVzIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBGb3IgdGhlc2UgZ2l2ZW4gZXJyb3IgY29kZXMgeW91IGNhbiBkZWZpbmUgc3BlY2lmaWMgbm90aWZpY2F0aW9uIG1lc3NhZ2VzLlxuICpcbiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIG9mIHRoZSAqKlFkVWlNb2R1bGUqKiBpbiB0aGUgKiphcHAubW9kdWxlLnRzKiouXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZW51bSBFcnJvckNvZGVzIHtcbiAqICAgVFJBTlNQT1JUX0NPQ0tQSVRfUEVSU0lTVEVOQ0VfRVJST1IsXG4gKiAgIFRSQU5TUE9SVF9DT0NLUElUX1ZBTElEQVRJT05fRVJST1JcbiAqIH1cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydHM6IFtcbiAqICAgLi4uXG4gKiAgIFFkVWlNb2R1bGUuZm9yUm9vdChhcHBFbnZpcm9ubWVudCwgRXJyb3JDb2RlcyksXG4gKiAgIC4uLlxuICogXVxuICogYGBgXG4gKlxuICogIyMjIFRyYW5zbGF0aW9uczpcbiAqXG4gKiBZb3UgY2FuIGRlZmluZSB0aGUgc3BlY2lmaWMgYmFja2VuZCBlcnJvciBub3RpZmljYXRpb24gbWVzc2FnZXMgZm9yIHRoZSByZXNwZWN0aXZlIGVycm9yIGNvZGVzIHVuZGVyIGBcIkVSUk9SXCJgIGluIHRoZSB0cmFuc2xhdGlvbiBmaWxlcy5cbiAqXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIC4uLlxuICpcbiAqICAgXCJFUlJPUlwiOiB7XG4gKiAgICAgXCJUUkFOU1BPUlRfQ09DS1BJVF9QRVJTSVNURU5DRV9FUlJPUlwiOiBcIkluIGRlciBEYXRlbmJhbmsgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW5cIixcbiAqICAgICBcIlRSQU5TUE9SVF9DT0NLUElUX1ZBTElEQVRJT05fRVJST1JcIjogXCJVbmfDvGx0aWdlIEVpbmdhYmVcIlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRGVmYXVsdCBlcnJvciBtZXNzYWdlc1xuICpcbiAqIEEgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGlzIHNob3duIGlmIG5vIGVycm9yIGNvZGUgaXMgZ2l2ZW4gaW4gdGhlIGJhY2tlbmQgcmVzcG9uc2Ugb3IgdGhlIGVycm9yIGNvZGUgaXMgbm90IGRlZmluZWQgaW4gdGhlIGBFcnJvckNvZGVzYCBlbnVtIHRoYXQgeW91IHBhc3MgdG8gdGhlICoqUWRVaU1vZHVsZSoqLlxuICpcbiAqIFRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VzIHlvdSBoYXZlIHRvIGFkZCB0aGUgY29ycmVzcG9uZGluZyBIVFRQIGVycm9yIGNvZGUgaW4gdGhlIGBFcnJvckNvZGVzYCBlbnVtLiBUaGVuIHlvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBpbiB0aGUgdHJhbnNsYXRpb24gZmlsZXMuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZW51bSBFcnJvckNvZGVzIHtcbiAqICAgLi4uLFxuICogICBIVFRQX0JBRF9SRVFVRVNULFxuICogICBIVFRQX1VOQVVUSE9SSVpFRCxcbiAqICAgSFRUUF9GT1JCSURERU4sXG4gKiAgIEhUVFBfTk9UX0ZPVU5ELFxuICogICBIVFRQX1NFUlZFUl9FUlJPUixcbiAqICAgSFRUUF9VTktOT1dOX0VSUk9SXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIC4uLlxuICpcbiAqICAgXCJFUlJPUlwiOiB7XG4gKiAgICAgXCJIVFRQX0JBRF9SRVFVRVNUXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhIHJlc3BvbnNlIHdpdGggdGhlIEhUVFAgc3RhdHVzIGNvZGUgNDAwLlwiLFxuICogICAgIFwiSFRUUF9VTkFVVEhPUklaRURcIjogXCJUaGlzIGlzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgZm9yIGEgcmVzcG9uc2Ugd2l0aCB0aGUgSFRUUCBzdGF0dXMgY29kZSA0MDEuXCIsXG4gKiAgICAgXCJIVFRQX0ZPUkJJRERFTlwiOiBcIlRoaXMgaXMgYSBjdXN0b20gZXJyb3IgbWVzc2FnZSBmb3IgYSByZXNwb25zZSB3aXRoIHRoZSBIVFRQIHN0YXR1cyBjb2RlIDQwMy5cIixcbiAqICAgICBcIkhUVFBfTk9UX0ZPVU5EXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhIHJlc3BvbnNlIHdpdGggdGhlIEhUVFAgc3RhdHVzIGNvZGUgNDA0LlwiLFxuICogICAgIFwiSFRUUF9TRVJWRVJfRVJST1JcIjogXCJUaGlzIGlzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgZm9yIGEgcmVzcG9uc2Ugd2l0aCBzb21lIHNlcnZlciBlcnJvciAoSFRUUCBzdGF0dXMgY29kZSA1eHgpLlwiLFxuICogICAgIFwiSFRUUF9VTktOT1dOX0VSUk9SXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhbGwgb3RoZXIgZXJyb3JzLlwiXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBDb21wb25lbnQ6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlOb3RpZmljYXRpb25Db21wb25lbnQge1xuICogICBkYXRhO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuICpcbiAqICAgcHJpdmF0ZSBzZXREYXRhKGRhdGEpIHtcbiAqICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICogICB9XG4gKlxuICogICBwdWJsaWMgY2FsbEFwaUVuZFBvaW50KCkge1xuICogICAgIC8vIFRoaXMgd2F5IHlvdSBjYW4gZGlzcGxheSB0aGUgY29udGVudCBpbiB0aGUgZnJvbnRlbmQuXG4gKiAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoJ3JvdXRlL3RvL2VuZHBvaW50Jykuc3Vic2NyaWJlKHtcbiAqICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLnNldERhdGEocmVzKSxcbiAqICAgICAgIGVycm9yOiBlcnIgPT4gdGhpcy5zZXREYXRhKGVycilcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhlIGVycm9ycyBhcmUgcmVuZGVyZWQgaW50byBhIGNvbnRhaW5lciwgd2hpY2ggYnkgZGVmYXVsdCBoYXMgdGhlIGF0dHJpYnV0ZSBgY29udGV4dD1cInFkUGFuZWxcImAuXG4gKlxuICogYGBgaHRtbFxuICogPCEtLSBMYW5kaW5nIHBhZCBmb3Igbm90aWZpY2F0aW9ucyAtLT5cbiAqIDxxZC1ub3RpZmljYXRpb25zPjwvcWQtbm90aWZpY2F0aW9ucz5cbiAqIGBgYFxuICpcbiAqICMjIE5vdGlmaWNhdGlvbnMgdmlhIHNlcnZpY2VcbiAqXG4gKiAjIyMgSW50ZXJmYWNlczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgUWROb3RpZmljYXRpb24ge1xuICogICB1dWlkPzogc3RyaW5nO1xuICogICBjb250ZXh0Pzogc3RyaW5nO1xuICogICB0eXBlOiBRZE5vdGlmaWNhdGlvblR5cGU7XG4gKiAgIGkxOG46IFFkTm90aWZpY2F0aW9uVHJhbnNsYXRpb247XG4gKiAgIHRpdGxlPzogUWROb3RpZmljYXRpb25UaXRsZTtcbiAqICAgZGF0ZT86IERhdGU7XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogICBkaXNhYmxlQ2xvc2U/OiBib29sZWFuO1xuICogICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAqICAgc2hvd0FzU25hY2tiYXI/OiBib29sZWFuO1xuICogICBzbmFja2Jhck9wdGlvbnM/OiBRZFNuYWNrYmFyTm90aWZpY2F0aW9uT3B0aW9ucztcbiAqICAgc2hvd0FzT3NOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICogICBvc05vdGlmaWNhdGlvbk9wdGlvbnM/OiBRZE9zTm90aWZpY2F0aW9uT3B0aW9ucztcbiAqIH1cbiAqXG4gKiB0eXBlIFFkTm90aWZpY2F0aW9uVHlwZSA9ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdjcml0aWNhbCcgfCAnc3VjY2Vzcyc7XG4gKlxuICogdHlwZSBRZE5vdGlmaWNhdGlvblRyYW5zbGF0aW9uID0gc3RyaW5nO1xuICogdHlwZSBRZE5vdGlmaWNhdGlvblRpdGxlID0geyBpMThuOiBzdHJpbmcgfTtcbiAqXG4gKiB0eXBlIFFkTm90aWZpY2F0aW9ucyA9IFFkTm90aWZpY2F0aW9uW107XG4gKlxuICogaW50ZXJmYWNlIFFkU25hY2tiYXJOb3RpZmljYXRpb25PcHRpb25zIHtcbiAqICAgbGlmZVRpbWU/OiBudW1iZXI7XG4gKiAgIGRpc2FibGVDbG9zZT86IGJvb2xlYW47XG4gKiAgIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICogfVxuICpcbiAqIGludGVyZmFjZSBRZE9zTm90aWZpY2F0aW9uT3B0aW9ucyB7XG4gKiAgIHNpbGVudD86IGJvb2xlYW47XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogICBvbkNsb3NlPzogKGV2ZW50KSA9PiB2b2lkO1xuICogICBvbkNsaWNrPzogKGV2ZW50KSA9PiB2b2lkO1xuICogfVxuICogYGBgXG4gKlxuICogVGhlIE5vdGlmaWNhdGlvbnMgU2VydmljZSBwcm92aWRlcyBzb21lIG1ldGhvZHMgdG8gZGlzcGxheSB0aGVtIGluIHRoZSBmcm9udGVuZC5cbiAqXG4gKiAjIyMgQ29tcG9uZW50XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlOb3RpZmljYXRpb25Db21wb25lbnQge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlKSB7fVxuICpcbiAqICAgcHVibGljIGFkZChjb250ZXh0OiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24pOiB2b2lkIHtcbiAqICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmFkZChjb250ZXh0LCBub3RpZmljYXRpb24pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgVHlwZSBRZE5vdGlmaWNhdGlvbiAoU2Vjb25kIHBhcmFtIG9mIHRoZSBhZGQgbWV0aG9kKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBRZE5vdGlmaWNhdGlvbiB7XG4gKiAgIC4uLlxuICpcbiAqICAgdHlwZTogUWROb3RpZmljYXRpb25UeXBlO1xuICogICBpMThuOiBzdHJpbmc7XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogfVxuICpcbiAqIHR5cGUgUWROb3RpZmljYXRpb25zID0gUWROb3RpZmljYXRpb25bXTtcbiAqIGBgYFxuICpcbiAqICMjIyBUeXBlIFFkTm90aWZpY2F0aW9uVHlwZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHR5cGUgUWROb3RpZmljYXRpb25UeXBlID0gJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2NyaXRpY2FsJyB8ICdzdWNjZXNzJztcbiAqIGBgYFxuICpcbiAqICMjIyBUZW1wbGF0ZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImFkZCgncWRQYW5lbCcsIHsgdHlwZTogJ2NyaXRpY2FsJywgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnIH0pXCI+QWRkIE5vdGlmaWNhdGlvbjwvYnV0dG9uPlxuICogYGBgXG4gKlxuICogIyMjIFRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIG5vdGlmaWNhdGlvbnMgLSBmb3IgaW5zdGFuY2UgaW4gdGhlIEluZm8gUGFuZWxcbiAqXG4gKiBgYGBodG1sXG4gKiA8cWQtbm90aWZpY2F0aW9ucz48L3FkLW5vdGlmaWNhdGlvbnM+XG4gKiBgYGBcbiAqXG4gKiAjIyBOb3RpZmljYXRpb25zIGFzIGEgc25hY2tiYXJcbiAqXG4gKiBZb3UgY2FuIGFsc28gZGlzcGxheSB0aGUgbm90aWZpY2F0aW9ucyBhcyBhIHNuYWNrIGJhci4gVGhleSBhcmUgdGhlbiBvbiB0b3Agb2YgdGhlIGxheW91dCBzeXN0ZW0uIFdoYXQgeW91IG5lZWQgdG8gZG8gaXMgdG8gcGxhY2UgdGhlIGRpcmVjdGl2ZSBgcWRTbmFja2Jhckxpc3RlbmVyYCB0aGVyZS4gQWxzbywganVzdCBhZGQgdGhlIGBzaG93QXNTbmFja2JhcmAgcGFyYW1ldGVyIHRvIHRoZSBtZXRob2QgY2FsbC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1jb250YWluZXIgcWRTbmFja2Jhckxpc3RlbmVyPiBNeSBDb250YWluZXIgQ29udGVudCA8L3FkLWNvbnRhaW5lcj5cbiAqXG4gKiA8YnV0dG9uIChjbGljayk9XCJhZGROb3RpZmljYXRpb24oJ3FkUGFuZWwnLCB7IHR5cGU6ICdjcml0aWNhbCcsIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJywgc2hvd0FzU25hY2tiYXI6IHRydWUgfSlcIj5cbiAqICAgQWRkIE5vdGlmaWNhdGlvblxuICogPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBBbGwgbm90aWZpY2F0aW9ucyBhcmUgbm93IGRpc3BsYXllZCBieSB0aGUgZGlyZWN0aXZlIGNvbnRhaW5lZCBpbiB0aGUgYHFkLWNvbnRhaW5lcmAuIEFsc28sIGFsbCBub3RpZmljYXRpb25zIGZyb20gdGhlIGJhY2tlbmQgYXJlIGRpc3BsYXllZCB0aGVyZS5cbiAqXG4gKiAqKlJlY29tbWVuZGF0aW9uIG9mIHRoZSBRdWFkcmVsIFRlYW0qKjogUGxhY2UgdGhlIGBxZFNuYWNrYmFyTGlzdGVuZXJgIGRpcmVjdGx5IG9uIHRvcCBvZiB0aGUgbGF5b3V0IHN5c3RlbSAtIHNvIGZvciBleGFtcGxlIGluIHRoZSAqKkFwcENvbXBvbmVudCoqLlxuICpcbiAqICMjIyBPcHRpb25zXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgYHNuYWNrYmFyT3B0aW9uc2AgcGFyYW1ldGVyIHRvIGN1c3RvbWl6ZSB0aGUgc25hY2tiYXIgbm90aWZpY2F0aW9uIG9yIHRvIHNldCBhbiBgb25DbG9zZWAgaGFuZGxlci5cbiAqIFdoZW4geW91IGNsb3NlIHRoZSBtYWluIG5vdGlmaWNhdGlvbiwgdGhlIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBUaGUgc25hY2tiYXIgbm90aWZpY2F0aW9uIGNhbiBiZSBjbG9zZWQgZm9yIGl0c2VsZiBhbG9uZS5cbiAqXG4gKiBJbiB0aGUgYHNuYWNrYmFyT3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QgeW91IGNhbiBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBgZGlzYWJsZUNsb3NlYCBhbmQgYGxpZmVUaW1lYC4gV2hlbiB0aGUgbWFpbiBub3RpZmljYXRpb24gaXMgY2xvc2VkLFxuICogdGhlIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB3aWxsIGFsc28gYmUgY2xvc2VkLiBTbyB0aGUgbGlmZSB0aW1lIG9mIHRoZSBzbmFja2JhciBub3RpZmljYXRpb24gb25seSBjYW4gYmUgc2hvcnRlci5cbiAqXG4gKiAjIyBPUyBOb3RpZmljYXRpb25zXG4gKlxuICogVG8gYnJpbmcgYSBub3RpZmljYXRpb24gdG8gdGhlIGZvcmVncm91bmQsIGV2ZW4gaWYgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdyBpcyBub3QgaW4gZm9jdXMsIHlvdSBjYW4gYWxzbyBwdXNoIHRoZSBub3RpZmljYXRpb24gYXMgYW4gT1MgTm90aWZpY2F0aW9uLlxuICogVGhlbiB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYWxzbyBiZSBwdXNoZWQgdGhyb3VnaCB0aGUgTm90aWZpY2F0aW9uIGJyb3dzZXIgQVBJIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gKGUuZy4gV2luZG93cy9MaW51eCkuXG4gKiBJbiB0aGUgZnV0dXJlLCB0aGUgT1MgTm90aWZpY2F0aW9ucyB3aWxsIGFsc28gYmUgcHVzaGVkIGFzIHNtYXJ0cGhvbmUgc3lzdGVtIG5vdGlmaWNhdGlvbnMuIEN1cnJlbnRseSwgb25seSBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgYXJlIHN1cHBvcnRlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImFkZE5vdGlmaWNhdGlvbigncWRQYW5lbCcsIHsgdHlwZTogJ2NyaXRpY2FsJywgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnLCBzaG93QXNPc05vdGlmaWNhdGlvbjogdHJ1ZSB9KVwiPlxuICogICBBZGQgTm90aWZpY2F0aW9uXG4gKiA8L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqICMjIyBPcHRpb25zXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgYG9zTm90aWZpY2F0aW9uT3B0aW9uc2AgcGFyYW1ldGVyIHRvIGN1c3RvbWl6ZSB0aGUgT1Mgbm90aWZpY2F0aW9uIG9yIHRvIHNldCBgb25DbGlja2AgYW5kIGBvbkNsb3NlYCBoYW5kbGVycy5cbiAqIFdoZW4geW91IGNsb3NlIHRoZSBtYWluIG5vdGlmaWNhdGlvbiwgdGhlIE9TIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBUaGUgT1Mgbm90aWZpY2F0aW9uIGNhbiBiZSBjbG9zZWQgZm9yIGl0c2VsZiBhbG9uZS5cbiAqXG4gKiBJbiB0aGUgYG9zTm90aWZpY2F0aW9uT3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QgeW91IGNhbiBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBgZGlzYWJsZUNsb3NlYCBhbmQgYGxpZmVUaW1lYC4gV2hlbiB0aGUgbWFpbiBub3RpZmljYXRpb24gaXMgY2xvc2VkLFxuICogdGhlIE9TIG5vdGlmaWNhdGlvbiB3aWxsIGFsc28gYmUgY2xvc2VkLiBTbyB0aGUgbGlmZSB0aW1lIG9mIHRoZSBPUyBub3RpZmljYXRpb24gb25seSBjYW4gYmUgc2hvcnRlci5cbiAqXG4gKiAjIyMgRGVlcCBsaW5rc1xuICpcbiAqIFRvIG9wZW4gYSBkZWVwIGxpbmsgd2hlbiB0aGUgT1Mgbm90aWZpY2F0aW9uIGlzIGNsaWNrZWQsIHVzZSB0aGUgZm9sbG93aW5nIGNvZGUgZm9yIHRoZSBjbGljayBoYW5kbGVyOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gKiB3aW5kb3cub3BlbignaHR0cHM6Ly95b3VyL2RlZXAvbGluaycpO1xuICogYGBgXG4gKlxuICogIyMgTm90aWZpY2F0aW9ucyB2aWEgc2VydmljZSAobXVsdGlwbGUgaW5zdGFuY2VzKVxuICpcbiAqICMjIyBPYmplY3Qgb2YgbXVsdGlwbGUgbm90aWZpY2F0aW9uc1xuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IEJVTEs6IFFkTm90aWZpY2F0aW9ucyA9IFtcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuMSdcbiAqICAgfSxcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuMidcbiAqICAgfVxuICogXTtcbiAqIGBgYFxuICpcbiAqICMjIyBDb21wb25lbnRcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBNeU5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gKiAgIGJ1bGs6IFFkTm90aWZpY2F0aW9ucyA9IEJVTEs7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBRZE1vZGFsU2VydmljZSkge31cbiAqXG4gKiAgIG9wZW5Ob3RpZmljYXRpb25Nb2RhbChtcm4pIHtcbiAqICAgICAvLyBNUk4gcmVwcmVzZW50cyBhIHVuaXF1ZSBjb250ZXh0XG4gKiAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihNeU5vdGlmaWNhdGlvbk1vZGFsQ29tcG9uZW50LCB7IGRhdGE6IHsgbXJuIH0gfSk7XG4gKlxuICogICAgIC8vIEFkZHMgdGhlIG5vdGlmaWNhdGlvbnMgd2hlbiBvcGVuaW5nXG4gKiAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGRCdWxrKG1ybiwgdGhpcy5idWxrKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMjIFRlbXBsYXRlXG4gKlxuICogYGBgaHRtbFxuICogPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCI+XG4gKiAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibXJuXCI+XG4gKiAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImNlbnRlclwiPk1ybi48L21hdC1oZWFkZXItY2VsbD5cbiAqICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGNsYXNzPVwiY2VudGVyXCI+XG4gKiAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5Ob3RpZmljYXRpb25Nb2RhbChlbGVtZW50Lm1ybilcIj5cbiAqICAgICAgICAgPCEtLSBNUk4gcmVwcmVzZW50cyBhIHVuaXF1ZSBjb250ZXh0IC0tPlxuICogICAgICAgICB7eyBlbGVtZW50Lm1ybiB9fVxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgPC9tYXQtY2VsbD5cbiAqICAgPC9uZy1jb250YWluZXI+XG4gKiA8L21hdC10YWJsZT5cbiAqIGBgYFxuICpcbiAqICMjIE5vdGlmaWNhdGlvbiBFdmVudHNcbiAqXG4gKiBZb3UgY2FuIGRlZmluZSBhbiBgb25DbG9zZWAgY2FsbGJhY2sgZm9yIGVhY2ggbm90aWZpY2F0aW9uIHR5cGUuIFdoZW4gdGhlIG1haW4gbm90aWZpY2F0aW9uIGlzIGNsb3NlZCwgdGhlblxuICogdGhlIGNvcnJlc3BvbmRpbmcgc25hY2tiYXIgbm90aWZpY2F0aW9uIGFuZCBPUyBub3RpZmljYXRpb24gd2lsbCBhbHNvIGJlIGNsb3NlZCBhbmQgYWxsIGV2ZW50cyB3aWxsIGJlIGZpcmVkLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIE15Tm90aWZpY2F0aW9uQ29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZTogUWROb3RpZmljYXRpb25zU2VydmljZSkge31cbiAqXG4gKiAgIHNob3dOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gKiAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGQoXG4gKiAgICAgICAncWRQYW5lbCcsXG4gKiAgICAgICB7XG4gKiAgICAgICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgICAgIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJyxcbiAqICAgICAgICAgb25DbG9zZTogKCkgPT4gY29uc29sZS5sb2coJ05vdGlmaWNhdGlvbiBjbG9zZWQuJyksXG4gKiAgICAgICAgIHNob3dBc1NuYWNrYmFyOiB0cnVlLFxuICogICAgICAgICBzbmFja2Jhck9wdGlvbnM6IHtcbiAqICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiBjb25zb2xlLmxvZygnU25hY2tiYXIgTm90aWZpY2F0aW9uIGNsb3NlZC4nKVxuICogICAgICAgICB9XG4gKiAgICAgICAgIHNob3dBc09zTm90aWZpY2F0aW9uOiB0cnVlLFxuICogICAgICAgICBvc05vdGlmaWNhdGlvbk9wdGlvbnM6IHtcbiAqICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiBjb25zb2xlLmxvZygnT1MgTm90aWZpY2F0aW9uIGNsb3NlZC4nKVxuICogICAgICAgICB9XG4gKiAgICAgICB9XG4gKiAgICAgKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogRXNwZWNpYWxseSBmb3IgdGhlIE9TIG5vdGlmaWNhdGlvbiBhbiBgb25DbGlja2AgaGFuZGxlciBjYW4gYmUgZGVmaW5lZC4gV2l0aCB0aGUgb25DbGljayBoYW5kbGVyIGl0J3MgYWxzbyBwb3NzaWJsZVxuICogdG8gZGVmaW5lIGEgZGVlcCBsaW5rIHRoYXQgd2lsbCBiZSBvcGVuZWQgb24gY2xpY2sgd2l0aCB0aGUgZm9sbG93aW5nIGNvZGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGQoXG4gKiAgICdxZFBhbmVsJyxcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnLFxuICogICAgIHNob3dBc09zTm90aWZpY2F0aW9uOiB0cnVlLFxuICogICAgIG9zTm90aWZpY2F0aW9uT3B0aW9uczoge1xuICogICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gKiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gKiAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL3lvdXIvZGVlcC9saW5rJyk7XG4gKiAgICAgICB9XG4gKiAgICAgfVxuICogICB9XG4gKiApO1xuICogYGBgXG4gKlxuICogIyMgSW5saW5lIE5vdGlmaWNhdGlvbnNcbiAqXG4gKiBOb3RpZmljYXRpb25zIGNhbiBhbHNvIGJlIGluc2VydGVkIGRpcmVjdGx5IGludG8gdGhlIHRlbXBsYXRlLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1ub3RpZmljYXRpb24gW3R5cGVdPVwidHlwZVwiIFtub3RpZmljYXRpb25dPVwibm90aWZpY2F0aW9uXCI+XG4gKiAgIDxxZC1ub3RpZmljYXRpb24tY29udGVudD4gdGVzdCBub3RpZmljYXRpb24gY29udGVudCA8L3FkLW5vdGlmaWNhdGlvbi1jb250ZW50PlxuICogPC9xZC1ub3RpZmljYXRpb24+XG4gKiBgYGBcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBUaGUgdHlwZSBjYW4gYmUgZGVmaW5lZCB3aXRoIHRoZSB0eXBlIGlucHV0XG4gKiB0eXBlID0gJ2NyaXRpY2FsJztcbiAqXG4gKiAvLyAuLi4gb3IgaW4gdGhlIG5vdGlmaWNhdGlvbiBjb25maWdcbiAqIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gPSB7XG4gKiAgIHR5cGU6ICdjcml0aWNhbCdcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBjb250ZW50IGNhbiBhbHNvIGJlIGRlZmluZWQgaW4gdGhlIGNvbmZpZy4gVGhlbiB5b3UgZG9uJ3QgaGF2ZSB0byBwdXQgYSBgcWQtbm90aWZpY2F0aW9uLWNvbnRlbnRgXG4gKiBlbGVtZW50IGludG8gdGhlIGBxZC1ub3RpZmljYXRpb25gLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1ub3RpZmljYXRpb24gW25vdGlmaWNhdGlvbl09XCJub3RpZmljYXRpb25cIj48L3FkLW5vdGlmaWNhdGlvbj5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gPSB7XG4gKiAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJ1xuICogfVxuICogYGBgXG4gKlxuICogIyMgTXVsdGlsaW5lIE5vdGlmaWNhdGlvbnNcbiAqXG4gKiBUbyBjcmVhdGUgYSBtdWx0aWxpbmUgbm90aWZpY2F0aW9uIHlvdSBzaW1wbHkgY2FuIGluc2VydCBgXFxuYCBpbiB0aGUgaTE4biB0cmFuc2xhdGlvbiB0ZXh0LiBMaW5lIGJyZWFrcyAoYFxcbmApIGFyZVxuICogbm90IGNvbnNpZGVyZWQgaWYgeW91IHVzZSB0aGUgYDxxZC1ub3RpZmljYXRpb24tY29udGVudD5gIHZhcmlhbnQuIExpbmUgYnJlYWtzIG9ubHkgd29yayBpZiB5b3UgZGVmaW5lIHRoZVxuICogaTE4biBrZXkgaW4gdGhlIG5vdGlmaWNhdGlvbiBjb25maWcuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBub3RpZmljYXRpb246IFFkTm90aWZpY2F0aW9uID0ge1xuICogICB0eXBlOiAnd2FybmluZycsXG4gKiAgIGkxOG46ICdpMThuLm5jdHMuZGVjbGFyYXRpb24uZGV0YWlsSW52ZW50b3J5UmVzdWx0Lm5vdGlmaWNhdGlvbi50cmFuc2l0RGVhZGxpbmVFeHBpcmVkJ1xuICogfVxuICogYGBgXG4gKlxuICogYGBganNvblxuICoge1xuICogICAuLi5cbiAqXG4gKiAgIFwiaTE4bi5uY3RzLmRlY2xhcmF0aW9uLmRldGFpbEludmVudG9yeVJlc3VsdC5ub3RpZmljYXRpb24udHJhbnNpdERlYWRsaW5lRXhwaXJlZFwiOiBcIlRoZSBpbnZlbnRvcnkgcmVzdWx0IG11c3QgYmUgY2hlY2tlZCBhbmQgdGhlIGNvbnRyb2wgcmVzdWx0IHJlY29yZGVkLiBcXG5BdHRlbnRpb246IFRoZSB0cmFuc2l0IHBlcmlvZCBoYXMgZXhwaXJlZCB1cG9uIGFycml2YWwgYXQgdGhlIEF1dGhvcml6ZWQgUGxhY2VcIixcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBOb3RpZmljYXRpb25zIFNlcnZpY2VcbiAqXG4gKiB8IE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZhdWx0IHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfFxuICogfCBnZXROb3RpZmljYXRpb25zRm9yQ29udGV4dCgpIHwgY29udGV4dDogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmV0dXJucyBub3RpZmljYXRpb24gc3RyZWFtIGZvciBjb250ZXh0LiAgICAgICAgIHwgLSAgICAgICB8XG4gKiB8IGFkZCgpICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250ZXh0OiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gICAgICAgICAgfCBBZGRzIGEgc2luZ2xlIG5vdGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgfCAtICAgICAgIHxcbiAqIHwgYWRkQnVsaygpICAgICAgICAgICAgICAgICAgICB8IGNvbnRleHQ6IHN0cmluZywgbm90aWZpY2F0aW9uczogUWROb3RpZmljYXRpb25zICAgICAgICB8IEFkZHMgbXVsdGlwbGUgbm90aWZpY2F0aW9ucy4gICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgfFxuICogfCByZW1vdmUoKSAgICAgICAgICAgICAgICAgICAgIHwgY29udGV4dDogc3RyaW5nLCBpZDogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVtb3ZlcyBzcGVjaWZpYyBub3RpZmljYXRpb24uICAgICAgICAgICAgICAgICAgIHwgLSAgICAgICB8XG4gKiB8IHJlbW92ZUFsbCgpICAgICAgICAgICAgICAgICAgfCBjb250ZXh0OiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW1vdmVzIGFsbCBub3RpZmljYXRpb25zIGluIGNvbnRleHQuICAgICAgICAgICAgfCAtICAgICAgIHxcbiAqIHwgcmVzZXQoKSAgICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENsZWFyIGFsbCBub3RpZmljYXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgfFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1ub3RpZmljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdxZC1ub3RpZmljYXRpb24nIH1cbn0pXG5leHBvcnQgY2xhc3MgUWROb3RpZmljYXRpb25Db21wb25lbnQge1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiB0aGlzIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IFFkTm90aWZpY2F0aW9uVHlwZSA9ICdjcml0aWNhbCc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb2YgYSBub3RpZmljYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBub3RpZmljYXRpb246IFFkTm90aWZpY2F0aW9uO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5jbGFzcycpIGdldCB0eXBlQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBxZC1ub3RpZmljYXRpb24gcWQtbm90aWZpY2F0aW9uLSR7dGhpcy5nZXRUeXBlKCl9YDtcbiAgfVxuXG4gIGdldCBjbG9zZWFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uID8gIXRoaXMubm90aWZpY2F0aW9uLmRpc2FibGVDbG9zZSA6IHRydWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IFFkTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzbmFja2JhclNlcnZpY2U6IFFkU25hY2tiYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgZ2V0VHlwZSgpOiBRZE5vdGlmaWNhdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbj8udHlwZSB8fCB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRJY29uKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmdldFR5cGUoKSkge1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnY2hlY2tDaXJjbGVTb2xpZCc7XG4gICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgcmV0dXJuICdjaGVja0NpcmNsZVNvbGlkJztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ3dhcm5pbmdIZXhGaWxsZWQnO1xuICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICByZXR1cm4gJ2V4Y2xhbWF0aW9uQ2lyY2xlU29saWQnO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvbkluU25hY2tiYXIoKSkge1xuICAgICAgdGhpcy5zbmFja2JhclNlcnZpY2UuY2xvc2UodGhpcy5ub3RpZmljYXRpb24udXVpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5yZW1vdmUodGhpcy5ub3RpZmljYXRpb24uY29udGV4dCwgdGhpcy5ub3RpZmljYXRpb24udXVpZCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTGlua0NsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uLmxpbmsuaGFuZGxlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05vdGlmaWNhdGlvbkluU25hY2tiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgncWQtc25hY2tiYXInKTtcbiAgfVxufVxuIiwiPHFkLWljb24gKm5nSWY9XCJjbG9zZWFibGVcIiBbaWNvbl09XCIndGltZXNMYXJnZSdcIiBjbGFzcz1cImNsb3NlclwiIChjbGljayk9XCJyZW1vdmUoKVwiPjwvcWQtaWNvbj5cbjxxZC1pY29uIFtpY29uXT1cInRoaXMuZ2V0SWNvbigpXCIgY2xhc3M9XCJpY29uXCI+PC9xZC1pY29uPlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJxZC1ub3RpZmljYXRpb24tY29udGVudFwiPjwvbmctY29udGVudD5cblxuPGRpdiBjbGFzcz1cInRpdGxlXCIgKm5nSWY9XCJub3RpZmljYXRpb24/LnRpdGxlXCI+e3sgbm90aWZpY2F0aW9uLnRpdGxlLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbjxkaXYgY2xhc3M9XCJtZXNzYWdlXCI+XG4gIDxzcGFuPnt7IG5vdGlmaWNhdGlvbj8uaTE4biB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPGEgY2xhc3M9XCJsaW5rXCIgKm5nSWY9XCJub3RpZmljYXRpb24/LmxpbmtcIiAoY2xpY2spPVwiaGFuZGxlTGlua0NsaWNrKClcIj57eyBub3RpZmljYXRpb24ubGluay5pMThuIHwgdHJhbnNsYXRlIH19PC9hPlxuPC9kaXY+XG4iXX0=
547
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQUVqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFkRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUFvQmY7SUFDQTtJQUNUO0lBckJWOztPQUVHO0lBQ00sSUFBSSxHQUF1QixVQUFVLENBQUM7SUFFL0M7O09BRUc7SUFDTSxZQUFZLENBQWlCO0lBRXRDLElBQStCLGFBQWE7UUFDMUMsT0FBTyxtQ0FBbUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxZQUNtQixtQkFBMkMsRUFDM0MsZUFBa0MsRUFDM0MsT0FBbUI7UUFGVix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUMzQyxZQUFPLEdBQVAsT0FBTyxDQUFZO0lBQzFCLENBQUM7SUFFSixPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN2QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyx3QkFBd0IsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3RCxDQUFDO3VHQXhEVSx1QkFBdUI7MkZBQXZCLHVCQUF1QixnTkNsZXBDLGdpQkFVQTs7MkZEd2RhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxpQkFBaUIsUUFHckIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7b0pBTXpCLElBQUk7c0JBQVosS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUV5QixhQUFhO3NCQUEzQyxXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFFkTm90aWZpY2F0aW9uLCBRZE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgUWROb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XG5cbi8qKlxuICogICoqUWROb3RpZmljYXRpb24qKiBkaXNwbGF5cyBhIHNpbmdsZSBub3RpZmljYXRpb24gaXRlbSB3aXRoaW4gYSAqKlFkTm90aWZpY2F0aW9ucyoqIGNvbnRhaW5lci5cbiAqXG4gKiAjIE5vdGlmaWNhdGlvbnMgU2VydmljZVxuICpcbiAqIFRoZSAqKk5vdGlmaWNhdGlvbnMgU2VydmljZSoqIGNhbiBiZSB1c2VkIHRvIGNhdGNoIGVycm9ycyBmcm9tIHRoZSBiYWNrZW5kLiBJbiBhZGRpdGlvbiwgdGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHNldmVyYWwgbWV0aG9kcyB0byBkaXNwbGF5IG1lc3NhZ2VzLlxuICpcbiAqICMjIE5vdGlmaWNhdGlvbiBmcm9tIEJhY2tlbmRcbiAqXG4gKiBUaGUgKipRZFVpTW9kdWxlKiogcHJvdmlkZXMgYW4gSFRUUCBpbnRlcmNlcHRvciB0aGF0IGRpc3BsYXlzIHJlcXVlc3QgZXJyb3JzIGFzIHNuYWNrYmFyIG5vdGlmaWNhdGlvbnMuIFRvIGdldCB0aGUgcHJvcGVyIG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgYmFja2VuZCBlcnJvcnMsIHBsZWFzZSBjb21wbHkgd2l0aCB0aGVzZSBjb252ZW50aW9ucy5cbiAqXG4gKiAjIyMgRXhhbXBsZSBvZiBhIHJlc3BvbnNlIG9iamVjdFxuICpcbiAqIFRoZSBiYWNrZW5kIHNlcnZpY2UgcmVzcG9uc2UgaGFzIHRvIGNvbnRhaW4gYW4gZXJyb3JDb2RlIGZpZWxkLiBUaGlzIGVycm9yIGNvZGUgd2lsbCBiZSBtYXBwZWQgdG8gZ2V0IHRoZSB0cmFuc2xhdGlvbiBmb3IgdGhlIG5vdGlmaWNhdGlvbiBtZXNzYWdlLlxuICpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJlcnJvckNvZGVcIjogXCJUUkFOU1BPUlRfQ09DS1BJVF9QRVJTSVNURU5DRV9FUlJPUlwiLFxuICogICBcImVycm9yTWVzc2FnZVwiOiBcIlRSQU5TUE9SVF9DT0NLUElUX1BFUlNJU1RFTkNFX0VSUk9SOiBDb3VsZCBub3QgZmluZCBEZWNsYXJhdGlvbiB3aWggaWQ6IGI3OGUwNzM0LWFlMWItNDM0ZS1iNDRkLWI0ODc5N2Y1Njk2ZFwiXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRGVmaW5lIEVycm9yIENvZGVzIGluIHRoZSBRZFVpTW9kdWxlXG4gKlxuICogVGhlICoqUWRVaU1vZHVsZSoqIGV4cGVjdHMgYW4gZW51bSB3aXRoIGVycm9yIGNvZGVzIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBGb3IgdGhlc2UgZ2l2ZW4gZXJyb3IgY29kZXMgeW91IGNhbiBkZWZpbmUgc3BlY2lmaWMgbm90aWZpY2F0aW9uIG1lc3NhZ2VzLlxuICpcbiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIG9mIHRoZSAqKlFkVWlNb2R1bGUqKiBpbiB0aGUgKiphcHAubW9kdWxlLnRzKiouXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZW51bSBFcnJvckNvZGVzIHtcbiAqICAgVFJBTlNQT1JUX0NPQ0tQSVRfUEVSU0lTVEVOQ0VfRVJST1IsXG4gKiAgIFRSQU5TUE9SVF9DT0NLUElUX1ZBTElEQVRJT05fRVJST1JcbiAqIH1cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydHM6IFtcbiAqICAgLi4uXG4gKiAgIFFkVWlNb2R1bGUuZm9yUm9vdChhcHBFbnZpcm9ubWVudCwgRXJyb3JDb2RlcyksXG4gKiAgIC4uLlxuICogXVxuICogYGBgXG4gKlxuICogIyMjIFRyYW5zbGF0aW9uczpcbiAqXG4gKiBZb3UgY2FuIGRlZmluZSB0aGUgc3BlY2lmaWMgYmFja2VuZCBlcnJvciBub3RpZmljYXRpb24gbWVzc2FnZXMgZm9yIHRoZSByZXNwZWN0aXZlIGVycm9yIGNvZGVzIHVuZGVyIGBcIkVSUk9SXCJgIGluIHRoZSB0cmFuc2xhdGlvbiBmaWxlcy5cbiAqXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIC4uLlxuICpcbiAqICAgXCJFUlJPUlwiOiB7XG4gKiAgICAgXCJUUkFOU1BPUlRfQ09DS1BJVF9QRVJTSVNURU5DRV9FUlJPUlwiOiBcIkluIGRlciBEYXRlbmJhbmsgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW5cIixcbiAqICAgICBcIlRSQU5TUE9SVF9DT0NLUElUX1ZBTElEQVRJT05fRVJST1JcIjogXCJVbmfDvGx0aWdlIEVpbmdhYmVcIlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRGVmYXVsdCBlcnJvciBtZXNzYWdlc1xuICpcbiAqIEEgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGlzIHNob3duIGlmIG5vIGVycm9yIGNvZGUgaXMgZ2l2ZW4gaW4gdGhlIGJhY2tlbmQgcmVzcG9uc2Ugb3IgdGhlIGVycm9yIGNvZGUgaXMgbm90IGRlZmluZWQgaW4gdGhlIGBFcnJvckNvZGVzYCBlbnVtIHRoYXQgeW91IHBhc3MgdG8gdGhlICoqUWRVaU1vZHVsZSoqLlxuICpcbiAqIFRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VzIHlvdSBoYXZlIHRvIGFkZCB0aGUgY29ycmVzcG9uZGluZyBIVFRQIGVycm9yIGNvZGUgaW4gdGhlIGBFcnJvckNvZGVzYCBlbnVtLiBUaGVuIHlvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBpbiB0aGUgdHJhbnNsYXRpb24gZmlsZXMuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZW51bSBFcnJvckNvZGVzIHtcbiAqICAgLi4uLFxuICogICBIVFRQX0JBRF9SRVFVRVNULFxuICogICBIVFRQX1VOQVVUSE9SSVpFRCxcbiAqICAgSFRUUF9GT1JCSURERU4sXG4gKiAgIEhUVFBfTk9UX0ZPVU5ELFxuICogICBIVFRQX1NFUlZFUl9FUlJPUixcbiAqICAgSFRUUF9VTktOT1dOX0VSUk9SXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIC4uLlxuICpcbiAqICAgXCJFUlJPUlwiOiB7XG4gKiAgICAgXCJIVFRQX0JBRF9SRVFVRVNUXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhIHJlc3BvbnNlIHdpdGggdGhlIEhUVFAgc3RhdHVzIGNvZGUgNDAwLlwiLFxuICogICAgIFwiSFRUUF9VTkFVVEhPUklaRURcIjogXCJUaGlzIGlzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgZm9yIGEgcmVzcG9uc2Ugd2l0aCB0aGUgSFRUUCBzdGF0dXMgY29kZSA0MDEuXCIsXG4gKiAgICAgXCJIVFRQX0ZPUkJJRERFTlwiOiBcIlRoaXMgaXMgYSBjdXN0b20gZXJyb3IgbWVzc2FnZSBmb3IgYSByZXNwb25zZSB3aXRoIHRoZSBIVFRQIHN0YXR1cyBjb2RlIDQwMy5cIixcbiAqICAgICBcIkhUVFBfTk9UX0ZPVU5EXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhIHJlc3BvbnNlIHdpdGggdGhlIEhUVFAgc3RhdHVzIGNvZGUgNDA0LlwiLFxuICogICAgIFwiSFRUUF9TRVJWRVJfRVJST1JcIjogXCJUaGlzIGlzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgZm9yIGEgcmVzcG9uc2Ugd2l0aCBzb21lIHNlcnZlciBlcnJvciAoSFRUUCBzdGF0dXMgY29kZSA1eHgpLlwiLFxuICogICAgIFwiSFRUUF9VTktOT1dOX0VSUk9SXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhbGwgb3RoZXIgZXJyb3JzLlwiXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBXaGl0ZWxpc3RpbmcgSFRUUCBzdGF0dXMgY29kZXNcbiAqXG4gKiBJbiBzb21lIGNhc2VzLCB5b3UgbWlnaHQgd2FudCB0byBwcmV2ZW50IGNlcnRhaW4gSFRUUCBzdGF0dXMgY29kZXMgZnJvbSB0cmlnZ2VyaW5nIGVycm9yIG5vdGlmaWNhdGlvbnMuIEZvciBleGFtcGxlLCBhIDMwNCBOb3QgTW9kaWZpZWQgcmVzcG9uc2UgaXMgbm90IGFjdHVhbGx5IGFuIGVycm9yIGFuZCBzaG91bGQgbm90IGRpc3BsYXkgYW4gZXJyb3Igbm90aWZpY2F0aW9uLiBUaGUgKipRZFVpTW9kdWxlKiogYWxsb3dzIHlvdSB0byB3aGl0ZWxpc3Qgc3BlY2lmaWMgSFRUUCBzdGF0dXMgY29kZXMuXG4gKlxuICogVG8gd2hpdGVsaXN0IEhUVFAgc3RhdHVzIGNvZGVzLCBwYXNzIGFuIGFycmF5IG9mIHN0YXR1cyBjb2RlcyBhcyB0aGUgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSAqKlFkVWlNb2R1bGUuZm9yUm9vdCoqIG1ldGhvZDpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbiAqXG4gKiBpbXBvcnRzOiBbXG4gKiAgIC4uLlxuICogICBRZFVpTW9kdWxlLmZvclJvb3QoXG4gKiAgICAgYXBwRW52aXJvbm1lbnQsXG4gKiAgICAgRXJyb3JDb2RlcyxcbiAqICAgICBbSHR0cFN0YXR1c0NvZGUuTm90TW9kaWZpZWQsIEh0dHBTdGF0dXNDb2RlLk5vQ29udGVudF0gLy8gV2hpdGVsaXN0IDMwNCBOb3QgTW9kaWZpZWQgYW5kIDIwNCBObyBDb250ZW50XG4gKiAgICksXG4gKiAgIC4uLlxuICogXVxuICogYGBgXG4gKlxuICogV2hlbiBhIHJlc3BvbnNlIHdpdGggYSB3aGl0ZWxpc3RlZCBzdGF0dXMgY29kZSBpcyByZWNlaXZlZCwgbm8gZXJyb3Igbm90aWZpY2F0aW9uIHdpbGwgYmUgZGlzcGxheWVkLCBldmVuIGlmIGl0IHdvdWxkIG5vcm1hbGx5IGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IgYnkgdGhlIEhUVFAgY2xpZW50LlxuICpcbiAqICMjIyBCbGFja2xpc3RpbmcgSFRUUCBzdGF0dXMgY29kZXNcbiAqXG4gKiBGb3IgY3JpdGljYWwgZXJyb3JzLCBub3RpZmljYXRpb25zIGFyZSBhbHdheXMgc2hvd24sIGV2ZW4gaWYgdGhlIHN0YXR1cyBjb2RlIGlzIHdoaXRlbGlzdGVkLiBUaGUgKipRZFVpTW9kdWxlKiogaW1wbGVtZW50cyBhIGZpeGVkIGJsYWNrbGlzdCB0aGF0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgd2hpdGVsaXN0LlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzIGFyZSBwZXJtYW5lbnRseSBibGFja2xpc3RlZDpcbiAqIC0gNDAxIFVuYXV0aG9yaXplZFxuICogLSA0MDIgUGF5bWVudCBSZXF1aXJlZFxuICogLSA0MDMgRm9yYmlkZGVuXG4gKiAtIEFsbCA1eHggc2VydmVyIGVycm9yIGNvZGVzICg1MDAtNTExKVxuICpcbiAqIFRoZXNlIGNyaXRpY2FsIGVycm9ycyB3aWxsIGFsd2F5cyBzaG93IG5vdGlmaWNhdGlvbnMsIGV2ZW4gaWYgdGhleSBhcmUgaW5jbHVkZWQgaW4gdGhlIHdoaXRlbGlzdC5cbiAqXG4gKiAqKkltcG9ydGFudCoqOiBUaGUgYmxhY2tsaXN0IGhhcyBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIHRoZSB3aGl0ZWxpc3QuIElmIGEgc3RhdHVzIGNvZGUgYXBwZWFycyBpbiBib3RoIHRoZSB3aGl0ZWxpc3QgYW5kIHRoZSBibGFja2xpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBibGFja2xpc3RlZCwgYW5kIGFuIGVycm9yIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHNob3duLlxuICpcbiAqICMjIyBDb21wb25lbnQ6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlOb3RpZmljYXRpb25Db21wb25lbnQge1xuICogICBkYXRhO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuICpcbiAqICAgcHJpdmF0ZSBzZXREYXRhKGRhdGEpIHtcbiAqICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICogICB9XG4gKlxuICogICBwdWJsaWMgY2FsbEFwaUVuZFBvaW50KCkge1xuICogICAgIC8vIFRoaXMgd2F5IHlvdSBjYW4gZGlzcGxheSB0aGUgY29udGVudCBpbiB0aGUgZnJvbnRlbmQuXG4gKiAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoJ3JvdXRlL3RvL2VuZHBvaW50Jykuc3Vic2NyaWJlKHtcbiAqICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLnNldERhdGEocmVzKSxcbiAqICAgICAgIGVycm9yOiBlcnIgPT4gdGhpcy5zZXREYXRhKGVycilcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhlIGVycm9ycyBhcmUgcmVuZGVyZWQgaW50byBhIGNvbnRhaW5lciwgd2hpY2ggYnkgZGVmYXVsdCBoYXMgdGhlIGF0dHJpYnV0ZSBgY29udGV4dD1cInFkUGFuZWxcImAuXG4gKlxuICogYGBgaHRtbFxuICogPCEtLSBMYW5kaW5nIHBhZCBmb3Igbm90aWZpY2F0aW9ucyAtLT5cbiAqIDxxZC1ub3RpZmljYXRpb25zPjwvcWQtbm90aWZpY2F0aW9ucz5cbiAqIGBgYFxuICpcbiAqICMjIE5vdGlmaWNhdGlvbnMgdmlhIHNlcnZpY2VcbiAqXG4gKiAjIyMgSW50ZXJmYWNlczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgUWROb3RpZmljYXRpb24ge1xuICogICB1dWlkPzogc3RyaW5nO1xuICogICBjb250ZXh0Pzogc3RyaW5nO1xuICogICB0eXBlOiBRZE5vdGlmaWNhdGlvblR5cGU7XG4gKiAgIGkxOG46IFFkTm90aWZpY2F0aW9uVHJhbnNsYXRpb247XG4gKiAgIHRpdGxlPzogUWROb3RpZmljYXRpb25UaXRsZTtcbiAqICAgZGF0ZT86IERhdGU7XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogICBkaXNhYmxlQ2xvc2U/OiBib29sZWFuO1xuICogICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAqICAgc2hvd0FzU25hY2tiYXI/OiBib29sZWFuO1xuICogICBzbmFja2Jhck9wdGlvbnM/OiBRZFNuYWNrYmFyTm90aWZpY2F0aW9uT3B0aW9ucztcbiAqICAgc2hvd0FzT3NOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICogICBvc05vdGlmaWNhdGlvbk9wdGlvbnM/OiBRZE9zTm90aWZpY2F0aW9uT3B0aW9ucztcbiAqIH1cbiAqXG4gKiB0eXBlIFFkTm90aWZpY2F0aW9uVHlwZSA9ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdjcml0aWNhbCcgfCAnc3VjY2Vzcyc7XG4gKlxuICogdHlwZSBRZE5vdGlmaWNhdGlvblRyYW5zbGF0aW9uID0gc3RyaW5nO1xuICogdHlwZSBRZE5vdGlmaWNhdGlvblRpdGxlID0geyBpMThuOiBzdHJpbmcgfTtcbiAqXG4gKiB0eXBlIFFkTm90aWZpY2F0aW9ucyA9IFFkTm90aWZpY2F0aW9uW107XG4gKlxuICogaW50ZXJmYWNlIFFkU25hY2tiYXJOb3RpZmljYXRpb25PcHRpb25zIHtcbiAqICAgbGlmZVRpbWU/OiBudW1iZXI7XG4gKiAgIGRpc2FibGVDbG9zZT86IGJvb2xlYW47XG4gKiAgIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICogfVxuICpcbiAqIGludGVyZmFjZSBRZE9zTm90aWZpY2F0aW9uT3B0aW9ucyB7XG4gKiAgIHNpbGVudD86IGJvb2xlYW47XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogICBvbkNsb3NlPzogKGV2ZW50KSA9PiB2b2lkO1xuICogICBvbkNsaWNrPzogKGV2ZW50KSA9PiB2b2lkO1xuICogfVxuICogYGBgXG4gKlxuICogVGhlIE5vdGlmaWNhdGlvbnMgU2VydmljZSBwcm92aWRlcyBzb21lIG1ldGhvZHMgdG8gZGlzcGxheSB0aGVtIGluIHRoZSBmcm9udGVuZC5cbiAqXG4gKiAjIyMgQ29tcG9uZW50XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlOb3RpZmljYXRpb25Db21wb25lbnQge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlKSB7fVxuICpcbiAqICAgcHVibGljIGFkZChjb250ZXh0OiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24pOiB2b2lkIHtcbiAqICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmFkZChjb250ZXh0LCBub3RpZmljYXRpb24pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgVHlwZSBRZE5vdGlmaWNhdGlvbiAoU2Vjb25kIHBhcmFtIG9mIHRoZSBhZGQgbWV0aG9kKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBRZE5vdGlmaWNhdGlvbiB7XG4gKiAgIC4uLlxuICpcbiAqICAgdHlwZTogUWROb3RpZmljYXRpb25UeXBlO1xuICogICBpMThuOiBzdHJpbmc7XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogfVxuICpcbiAqIHR5cGUgUWROb3RpZmljYXRpb25zID0gUWROb3RpZmljYXRpb25bXTtcbiAqIGBgYFxuICpcbiAqICMjIyBUeXBlIFFkTm90aWZpY2F0aW9uVHlwZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHR5cGUgUWROb3RpZmljYXRpb25UeXBlID0gJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2NyaXRpY2FsJyB8ICdzdWNjZXNzJztcbiAqIGBgYFxuICpcbiAqICMjIyBUZW1wbGF0ZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImFkZCgncWRQYW5lbCcsIHsgdHlwZTogJ2NyaXRpY2FsJywgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnIH0pXCI+QWRkIE5vdGlmaWNhdGlvbjwvYnV0dG9uPlxuICogYGBgXG4gKlxuICogIyMjIFRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIG5vdGlmaWNhdGlvbnMgLSBmb3IgaW5zdGFuY2UgaW4gdGhlIEluZm8gUGFuZWxcbiAqXG4gKiBgYGBodG1sXG4gKiA8cWQtbm90aWZpY2F0aW9ucz48L3FkLW5vdGlmaWNhdGlvbnM+XG4gKiBgYGBcbiAqXG4gKiAjIyBOb3RpZmljYXRpb25zIGFzIGEgc25hY2tiYXJcbiAqXG4gKiBZb3UgY2FuIGFsc28gZGlzcGxheSB0aGUgbm90aWZpY2F0aW9ucyBhcyBhIHNuYWNrIGJhci4gVGhleSBhcmUgdGhlbiBvbiB0b3Agb2YgdGhlIGxheW91dCBzeXN0ZW0uIFdoYXQgeW91IG5lZWQgdG8gZG8gaXMgdG8gcGxhY2UgdGhlIGRpcmVjdGl2ZSBgcWRTbmFja2Jhckxpc3RlbmVyYCB0aGVyZS4gQWxzbywganVzdCBhZGQgdGhlIGBzaG93QXNTbmFja2JhcmAgcGFyYW1ldGVyIHRvIHRoZSBtZXRob2QgY2FsbC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1jb250YWluZXIgcWRTbmFja2Jhckxpc3RlbmVyPiBNeSBDb250YWluZXIgQ29udGVudCA8L3FkLWNvbnRhaW5lcj5cbiAqXG4gKiA8YnV0dG9uIChjbGljayk9XCJhZGROb3RpZmljYXRpb24oJ3FkUGFuZWwnLCB7IHR5cGU6ICdjcml0aWNhbCcsIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJywgc2hvd0FzU25hY2tiYXI6IHRydWUgfSlcIj5cbiAqICAgQWRkIE5vdGlmaWNhdGlvblxuICogPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBBbGwgbm90aWZpY2F0aW9ucyBhcmUgbm93IGRpc3BsYXllZCBieSB0aGUgZGlyZWN0aXZlIGNvbnRhaW5lZCBpbiB0aGUgYHFkLWNvbnRhaW5lcmAuIEFsc28sIGFsbCBub3RpZmljYXRpb25zIGZyb20gdGhlIGJhY2tlbmQgYXJlIGRpc3BsYXllZCB0aGVyZS5cbiAqXG4gKiAqKlJlY29tbWVuZGF0aW9uIG9mIHRoZSBRdWFkcmVsIFRlYW0qKjogUGxhY2UgdGhlIGBxZFNuYWNrYmFyTGlzdGVuZXJgIGRpcmVjdGx5IG9uIHRvcCBvZiB0aGUgbGF5b3V0IHN5c3RlbSAtIHNvIGZvciBleGFtcGxlIGluIHRoZSAqKkFwcENvbXBvbmVudCoqLlxuICpcbiAqICMjIyBPcHRpb25zXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgYHNuYWNrYmFyT3B0aW9uc2AgcGFyYW1ldGVyIHRvIGN1c3RvbWl6ZSB0aGUgc25hY2tiYXIgbm90aWZpY2F0aW9uIG9yIHRvIHNldCBhbiBgb25DbG9zZWAgaGFuZGxlci5cbiAqIFdoZW4geW91IGNsb3NlIHRoZSBtYWluIG5vdGlmaWNhdGlvbiwgdGhlIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBUaGUgc25hY2tiYXIgbm90aWZpY2F0aW9uIGNhbiBiZSBjbG9zZWQgZm9yIGl0c2VsZiBhbG9uZS5cbiAqXG4gKiBJbiB0aGUgYHNuYWNrYmFyT3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QgeW91IGNhbiBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBgZGlzYWJsZUNsb3NlYCBhbmQgYGxpZmVUaW1lYC4gV2hlbiB0aGUgbWFpbiBub3RpZmljYXRpb24gaXMgY2xvc2VkLFxuICogdGhlIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB3aWxsIGFsc28gYmUgY2xvc2VkLiBTbyB0aGUgbGlmZSB0aW1lIG9mIHRoZSBzbmFja2JhciBub3RpZmljYXRpb24gb25seSBjYW4gYmUgc2hvcnRlci5cbiAqXG4gKiAjIyBPUyBOb3RpZmljYXRpb25zXG4gKlxuICogVG8gYnJpbmcgYSBub3RpZmljYXRpb24gdG8gdGhlIGZvcmVncm91bmQsIGV2ZW4gaWYgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdyBpcyBub3QgaW4gZm9jdXMsIHlvdSBjYW4gYWxzbyBwdXNoIHRoZSBub3RpZmljYXRpb24gYXMgYW4gT1MgTm90aWZpY2F0aW9uLlxuICogVGhlbiB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYWxzbyBiZSBwdXNoZWQgdGhyb3VnaCB0aGUgTm90aWZpY2F0aW9uIGJyb3dzZXIgQVBJIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gKGUuZy4gV2luZG93cy9MaW51eCkuXG4gKiBJbiB0aGUgZnV0dXJlLCB0aGUgT1MgTm90aWZpY2F0aW9ucyB3aWxsIGFsc28gYmUgcHVzaGVkIGFzIHNtYXJ0cGhvbmUgc3lzdGVtIG5vdGlmaWNhdGlvbnMuIEN1cnJlbnRseSwgb25seSBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgYXJlIHN1cHBvcnRlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImFkZE5vdGlmaWNhdGlvbigncWRQYW5lbCcsIHsgdHlwZTogJ2NyaXRpY2FsJywgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnLCBzaG93QXNPc05vdGlmaWNhdGlvbjogdHJ1ZSB9KVwiPlxuICogICBBZGQgTm90aWZpY2F0aW9uXG4gKiA8L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqICMjIyBPcHRpb25zXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgYG9zTm90aWZpY2F0aW9uT3B0aW9uc2AgcGFyYW1ldGVyIHRvIGN1c3RvbWl6ZSB0aGUgT1Mgbm90aWZpY2F0aW9uIG9yIHRvIHNldCBgb25DbGlja2AgYW5kIGBvbkNsb3NlYCBoYW5kbGVycy5cbiAqIFdoZW4geW91IGNsb3NlIHRoZSBtYWluIG5vdGlmaWNhdGlvbiwgdGhlIE9TIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBUaGUgT1Mgbm90aWZpY2F0aW9uIGNhbiBiZSBjbG9zZWQgZm9yIGl0c2VsZiBhbG9uZS5cbiAqXG4gKiBJbiB0aGUgYG9zTm90aWZpY2F0aW9uT3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QgeW91IGNhbiBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBgZGlzYWJsZUNsb3NlYCBhbmQgYGxpZmVUaW1lYC4gV2hlbiB0aGUgbWFpbiBub3RpZmljYXRpb24gaXMgY2xvc2VkLFxuICogdGhlIE9TIG5vdGlmaWNhdGlvbiB3aWxsIGFsc28gYmUgY2xvc2VkLiBTbyB0aGUgbGlmZSB0aW1lIG9mIHRoZSBPUyBub3RpZmljYXRpb24gb25seSBjYW4gYmUgc2hvcnRlci5cbiAqXG4gKiAjIyMgRGVlcCBsaW5rc1xuICpcbiAqIFRvIG9wZW4gYSBkZWVwIGxpbmsgd2hlbiB0aGUgT1Mgbm90aWZpY2F0aW9uIGlzIGNsaWNrZWQsIHVzZSB0aGUgZm9sbG93aW5nIGNvZGUgZm9yIHRoZSBjbGljayBoYW5kbGVyOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gKiB3aW5kb3cub3BlbignaHR0cHM6Ly95b3VyL2RlZXAvbGluaycpO1xuICogYGBgXG4gKlxuICogIyMgTm90aWZpY2F0aW9ucyB2aWEgc2VydmljZSAobXVsdGlwbGUgaW5zdGFuY2VzKVxuICpcbiAqICMjIyBPYmplY3Qgb2YgbXVsdGlwbGUgbm90aWZpY2F0aW9uc1xuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IEJVTEs6IFFkTm90aWZpY2F0aW9ucyA9IFtcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuMSdcbiAqICAgfSxcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuMidcbiAqICAgfVxuICogXTtcbiAqIGBgYFxuICpcbiAqICMjIyBDb21wb25lbnRcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBNeU5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gKiAgIGJ1bGs6IFFkTm90aWZpY2F0aW9ucyA9IEJVTEs7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBRZE1vZGFsU2VydmljZSkge31cbiAqXG4gKiAgIG9wZW5Ob3RpZmljYXRpb25Nb2RhbChtcm4pIHtcbiAqICAgICAvLyBNUk4gcmVwcmVzZW50cyBhIHVuaXF1ZSBjb250ZXh0XG4gKiAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihNeU5vdGlmaWNhdGlvbk1vZGFsQ29tcG9uZW50LCB7IGRhdGE6IHsgbXJuIH0gfSk7XG4gKlxuICogICAgIC8vIEFkZHMgdGhlIG5vdGlmaWNhdGlvbnMgd2hlbiBvcGVuaW5nXG4gKiAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGRCdWxrKG1ybiwgdGhpcy5idWxrKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMjIFRlbXBsYXRlXG4gKlxuICogYGBgaHRtbFxuICogPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCI+XG4gKiAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibXJuXCI+XG4gKiAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImNlbnRlclwiPk1ybi48L21hdC1oZWFkZXItY2VsbD5cbiAqICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGNsYXNzPVwiY2VudGVyXCI+XG4gKiAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5Ob3RpZmljYXRpb25Nb2RhbChlbGVtZW50Lm1ybilcIj5cbiAqICAgICAgICAgPCEtLSBNUk4gcmVwcmVzZW50cyBhIHVuaXF1ZSBjb250ZXh0IC0tPlxuICogICAgICAgICB7eyBlbGVtZW50Lm1ybiB9fVxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgPC9tYXQtY2VsbD5cbiAqICAgPC9uZy1jb250YWluZXI+XG4gKiA8L21hdC10YWJsZT5cbiAqIGBgYFxuICpcbiAqICMjIE5vdGlmaWNhdGlvbiBFdmVudHNcbiAqXG4gKiBZb3UgY2FuIGRlZmluZSBhbiBgb25DbG9zZWAgY2FsbGJhY2sgZm9yIGVhY2ggbm90aWZpY2F0aW9uIHR5cGUuIFdoZW4gdGhlIG1haW4gbm90aWZpY2F0aW9uIGlzIGNsb3NlZCwgdGhlblxuICogdGhlIGNvcnJlc3BvbmRpbmcgc25hY2tiYXIgbm90aWZpY2F0aW9uIGFuZCBPUyBub3RpZmljYXRpb24gd2lsbCBhbHNvIGJlIGNsb3NlZCBhbmQgYWxsIGV2ZW50cyB3aWxsIGJlIGZpcmVkLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIE15Tm90aWZpY2F0aW9uQ29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZTogUWROb3RpZmljYXRpb25zU2VydmljZSkge31cbiAqXG4gKiAgIHNob3dOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gKiAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGQoXG4gKiAgICAgICAncWRQYW5lbCcsXG4gKiAgICAgICB7XG4gKiAgICAgICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgICAgIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJyxcbiAqICAgICAgICAgb25DbG9zZTogKCkgPT4gY29uc29sZS5sb2coJ05vdGlmaWNhdGlvbiBjbG9zZWQuJyksXG4gKiAgICAgICAgIHNob3dBc1NuYWNrYmFyOiB0cnVlLFxuICogICAgICAgICBzbmFja2Jhck9wdGlvbnM6IHtcbiAqICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiBjb25zb2xlLmxvZygnU25hY2tiYXIgTm90aWZpY2F0aW9uIGNsb3NlZC4nKVxuICogICAgICAgICB9XG4gKiAgICAgICAgIHNob3dBc09zTm90aWZpY2F0aW9uOiB0cnVlLFxuICogICAgICAgICBvc05vdGlmaWNhdGlvbk9wdGlvbnM6IHtcbiAqICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiBjb25zb2xlLmxvZygnT1MgTm90aWZpY2F0aW9uIGNsb3NlZC4nKVxuICogICAgICAgICB9XG4gKiAgICAgICB9XG4gKiAgICAgKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogRXNwZWNpYWxseSBmb3IgdGhlIE9TIG5vdGlmaWNhdGlvbiBhbiBgb25DbGlja2AgaGFuZGxlciBjYW4gYmUgZGVmaW5lZC4gV2l0aCB0aGUgb25DbGljayBoYW5kbGVyIGl0J3MgYWxzbyBwb3NzaWJsZVxuICogdG8gZGVmaW5lIGEgZGVlcCBsaW5rIHRoYXQgd2lsbCBiZSBvcGVuZWQgb24gY2xpY2sgd2l0aCB0aGUgZm9sbG93aW5nIGNvZGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGQoXG4gKiAgICdxZFBhbmVsJyxcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnLFxuICogICAgIHNob3dBc09zTm90aWZpY2F0aW9uOiB0cnVlLFxuICogICAgIG9zTm90aWZpY2F0aW9uT3B0aW9uczoge1xuICogICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gKiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gKiAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL3lvdXIvZGVlcC9saW5rJyk7XG4gKiAgICAgICB9XG4gKiAgICAgfVxuICogICB9XG4gKiApO1xuICogYGBgXG4gKlxuICogIyMgSW5saW5lIE5vdGlmaWNhdGlvbnNcbiAqXG4gKiBOb3RpZmljYXRpb25zIGNhbiBhbHNvIGJlIGluc2VydGVkIGRpcmVjdGx5IGludG8gdGhlIHRlbXBsYXRlLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1ub3RpZmljYXRpb24gW3R5cGVdPVwidHlwZVwiIFtub3RpZmljYXRpb25dPVwibm90aWZpY2F0aW9uXCI+XG4gKiAgIDxxZC1ub3RpZmljYXRpb24tY29udGVudD4gdGVzdCBub3RpZmljYXRpb24gY29udGVudCA8L3FkLW5vdGlmaWNhdGlvbi1jb250ZW50PlxuICogPC9xZC1ub3RpZmljYXRpb24+XG4gKiBgYGBcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBUaGUgdHlwZSBjYW4gYmUgZGVmaW5lZCB3aXRoIHRoZSB0eXBlIGlucHV0XG4gKiB0eXBlID0gJ2NyaXRpY2FsJztcbiAqXG4gKiAvLyAuLi4gb3IgaW4gdGhlIG5vdGlmaWNhdGlvbiBjb25maWdcbiAqIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gPSB7XG4gKiAgIHR5cGU6ICdjcml0aWNhbCdcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBjb250ZW50IGNhbiBhbHNvIGJlIGRlZmluZWQgaW4gdGhlIGNvbmZpZy4gVGhlbiB5b3UgZG9uJ3QgaGF2ZSB0byBwdXQgYSBgcWQtbm90aWZpY2F0aW9uLWNvbnRlbnRgXG4gKiBlbGVtZW50IGludG8gdGhlIGBxZC1ub3RpZmljYXRpb25gLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1ub3RpZmljYXRpb24gW25vdGlmaWNhdGlvbl09XCJub3RpZmljYXRpb25cIj48L3FkLW5vdGlmaWNhdGlvbj5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gPSB7XG4gKiAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJ1xuICogfVxuICogYGBgXG4gKlxuICogIyMgTXVsdGlsaW5lIE5vdGlmaWNhdGlvbnNcbiAqXG4gKiBUbyBjcmVhdGUgYSBtdWx0aWxpbmUgbm90aWZpY2F0aW9uIHlvdSBzaW1wbHkgY2FuIGluc2VydCBgXFxuYCBpbiB0aGUgaTE4biB0cmFuc2xhdGlvbiB0ZXh0LiBMaW5lIGJyZWFrcyAoYFxcbmApIGFyZVxuICogbm90IGNvbnNpZGVyZWQgaWYgeW91IHVzZSB0aGUgYDxxZC1ub3RpZmljYXRpb24tY29udGVudD5gIHZhcmlhbnQuIExpbmUgYnJlYWtzIG9ubHkgd29yayBpZiB5b3UgZGVmaW5lIHRoZVxuICogaTE4biBrZXkgaW4gdGhlIG5vdGlmaWNhdGlvbiBjb25maWcuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBub3RpZmljYXRpb246IFFkTm90aWZpY2F0aW9uID0ge1xuICogICB0eXBlOiAnd2FybmluZycsXG4gKiAgIGkxOG46ICdpMThuLm5jdHMuZGVjbGFyYXRpb24uZGV0YWlsSW52ZW50b3J5UmVzdWx0Lm5vdGlmaWNhdGlvbi50cmFuc2l0RGVhZGxpbmVFeHBpcmVkJ1xuICogfVxuICogYGBgXG4gKlxuICogYGBganNvblxuICoge1xuICogICAuLi5cbiAqXG4gKiAgIFwiaTE4bi5uY3RzLmRlY2xhcmF0aW9uLmRldGFpbEludmVudG9yeVJlc3VsdC5ub3RpZmljYXRpb24udHJhbnNpdERlYWRsaW5lRXhwaXJlZFwiOiBcIlRoZSBpbnZlbnRvcnkgcmVzdWx0IG11c3QgYmUgY2hlY2tlZCBhbmQgdGhlIGNvbnRyb2wgcmVzdWx0IHJlY29yZGVkLiBcXG5BdHRlbnRpb246IFRoZSB0cmFuc2l0IHBlcmlvZCBoYXMgZXhwaXJlZCB1cG9uIGFycml2YWwgYXQgdGhlIEF1dGhvcml6ZWQgUGxhY2VcIixcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBOb3RpZmljYXRpb25zIFNlcnZpY2VcbiAqXG4gKiB8IE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZhdWx0IHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfFxuICogfCBnZXROb3RpZmljYXRpb25zRm9yQ29udGV4dCgpIHwgY29udGV4dDogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmV0dXJucyBub3RpZmljYXRpb24gc3RyZWFtIGZvciBjb250ZXh0LiAgICAgICAgIHwgLSAgICAgICB8XG4gKiB8IGFkZCgpICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250ZXh0OiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gICAgICAgICAgfCBBZGRzIGEgc2luZ2xlIG5vdGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgfCAtICAgICAgIHxcbiAqIHwgYWRkQnVsaygpICAgICAgICAgICAgICAgICAgICB8IGNvbnRleHQ6IHN0cmluZywgbm90aWZpY2F0aW9uczogUWROb3RpZmljYXRpb25zICAgICAgICB8IEFkZHMgbXVsdGlwbGUgbm90aWZpY2F0aW9ucy4gICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgfFxuICogfCByZW1vdmUoKSAgICAgICAgICAgICAgICAgICAgIHwgY29udGV4dDogc3RyaW5nLCBpZDogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVtb3ZlcyBzcGVjaWZpYyBub3RpZmljYXRpb24uICAgICAgICAgICAgICAgICAgIHwgLSAgICAgICB8XG4gKiB8IHJlbW92ZUFsbCgpICAgICAgICAgICAgICAgICAgfCBjb250ZXh0OiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW1vdmVzIGFsbCBub3RpZmljYXRpb25zIGluIGNvbnRleHQuICAgICAgICAgICAgfCAtICAgICAgIHxcbiAqIHwgcmVzZXQoKSAgICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENsZWFyIGFsbCBub3RpZmljYXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgfFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1ub3RpZmljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdxZC1ub3RpZmljYXRpb24nIH1cbn0pXG5leHBvcnQgY2xhc3MgUWROb3RpZmljYXRpb25Db21wb25lbnQge1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiB0aGlzIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IFFkTm90aWZpY2F0aW9uVHlwZSA9ICdjcml0aWNhbCc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb2YgYSBub3RpZmljYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBub3RpZmljYXRpb246IFFkTm90aWZpY2F0aW9uO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5jbGFzcycpIGdldCB0eXBlQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBxZC1ub3RpZmljYXRpb24gcWQtbm90aWZpY2F0aW9uLSR7dGhpcy5nZXRUeXBlKCl9YDtcbiAgfVxuXG4gIGdldCBjbG9zZWFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uID8gIXRoaXMubm90aWZpY2F0aW9uLmRpc2FibGVDbG9zZSA6IHRydWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IFFkTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzbmFja2JhclNlcnZpY2U6IFFkU25hY2tiYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgZ2V0VHlwZSgpOiBRZE5vdGlmaWNhdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbj8udHlwZSB8fCB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRJY29uKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmdldFR5cGUoKSkge1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnY2hlY2tDaXJjbGVTb2xpZCc7XG4gICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgcmV0dXJuICdjaGVja0NpcmNsZVNvbGlkJztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ3dhcm5pbmdIZXhGaWxsZWQnO1xuICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICByZXR1cm4gJ2V4Y2xhbWF0aW9uQ2lyY2xlU29saWQnO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvbkluU25hY2tiYXIoKSkge1xuICAgICAgdGhpcy5zbmFja2JhclNlcnZpY2UuY2xvc2UodGhpcy5ub3RpZmljYXRpb24udXVpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5yZW1vdmUodGhpcy5ub3RpZmljYXRpb24uY29udGV4dCwgdGhpcy5ub3RpZmljYXRpb24udXVpZCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTGlua0NsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uLmxpbmsuaGFuZGxlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05vdGlmaWNhdGlvbkluU25hY2tiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgncWQtc25hY2tiYXInKTtcbiAgfVxufVxuIiwiPHFkLWljb24gKm5nSWY9XCJjbG9zZWFibGVcIiBbaWNvbl09XCIndGltZXNMYXJnZSdcIiBjbGFzcz1cImNsb3NlclwiIChjbGljayk9XCJyZW1vdmUoKVwiPjwvcWQtaWNvbj5cbjxxZC1pY29uIFtpY29uXT1cInRoaXMuZ2V0SWNvbigpXCIgY2xhc3M9XCJpY29uXCI+PC9xZC1pY29uPlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJxZC1ub3RpZmljYXRpb24tY29udGVudFwiPjwvbmctY29udGVudD5cblxuPGRpdiBjbGFzcz1cInRpdGxlXCIgKm5nSWY9XCJub3RpZmljYXRpb24/LnRpdGxlXCI+e3sgbm90aWZpY2F0aW9uLnRpdGxlLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbjxkaXYgY2xhc3M9XCJtZXNzYWdlXCI+XG4gIDxzcGFuPnt7IG5vdGlmaWNhdGlvbj8uaTE4biB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPGEgY2xhc3M9XCJsaW5rXCIgKm5nSWY9XCJub3RpZmljYXRpb24/LmxpbmtcIiAoY2xpY2spPVwiaGFuZGxlTGlua0NsaWNrKClcIj57eyBub3RpZmljYXRpb24ubGluay5pMThuIHwgdHJhbnNsYXRlIH19PC9hPlxuPC9kaXY+XG4iXX0=
@@ -10,27 +10,54 @@ import { QdNotificationsService } from './notifications-service.service';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "./notifications-service.service";
12
12
  export const BACKEND_ERROR_CODES = new InjectionToken('BACKEND_ERROR_CODES');
13
+ export const WHITELIST_ERROR_CODES = new InjectionToken('WHITELIST_ERROR_CODES');
13
14
  /**
14
15
  * The QdNotificationsHttpInterceptorService is an Angular HTTP interceptor that captures error responses from HTTP requests and generates notifications for backend errors. This Service not only intercepts error responses, but it also handles specific error codes and translates them into appropriate error messages for display.
15
16
  */
16
17
  export class QdNotificationsHttpInterceptorService {
17
18
  appEnvironment;
18
19
  backendErrorCodes;
20
+ whitelistErrorCodes;
19
21
  notificationService;
20
- constructor(appEnvironment, backendErrorCodes, notificationService) {
22
+ blacklistErrorCodes;
23
+ constructor(appEnvironment, backendErrorCodes, whitelistErrorCodes, notificationService) {
21
24
  this.appEnvironment = appEnvironment;
22
25
  this.backendErrorCodes = backendErrorCodes;
26
+ this.whitelistErrorCodes = whitelistErrorCodes;
23
27
  this.notificationService = notificationService;
24
28
  this.backendErrorCodes = this.backendErrorCodes || {};
29
+ this.whitelistErrorCodes = this.whitelistErrorCodes || [];
30
+ this.blacklistErrorCodes = [
31
+ // 401, 402, 403
32
+ HttpStatusCode.Unauthorized,
33
+ HttpStatusCode.PaymentRequired,
34
+ HttpStatusCode.Forbidden,
35
+ // All 5xx codes
36
+ HttpStatusCode.InternalServerError,
37
+ HttpStatusCode.NotImplemented,
38
+ HttpStatusCode.BadGateway,
39
+ HttpStatusCode.ServiceUnavailable,
40
+ HttpStatusCode.GatewayTimeout,
41
+ HttpStatusCode.HttpVersionNotSupported,
42
+ HttpStatusCode.VariantAlsoNegotiates,
43
+ HttpStatusCode.InsufficientStorage,
44
+ HttpStatusCode.LoopDetected,
45
+ HttpStatusCode.NotExtended,
46
+ HttpStatusCode.NetworkAuthenticationRequired
47
+ ];
25
48
  }
26
49
  intercept(request, next) {
27
50
  if (this.appEnvironment.disableBackendNotifications)
28
51
  return next.handle(request);
29
52
  return next.handle(request).pipe(catchError((error) => {
30
- let i18n = this.getErrorTranslationKeyForHttpStatus(error.status);
31
- if (error.error?.errorCode && error.error.errorCode in this.backendErrorCodes)
32
- i18n = 'ERROR.' + error.error.errorCode;
33
- this.notificationService.add('qdPanel', { type: 'critical', i18n, showAsSnackbar: true });
53
+ const isBlacklisted = this.blacklistErrorCodes.includes(error.status);
54
+ const shouldShowNotification = isBlacklisted || !this.whitelistErrorCodes.includes(error.status);
55
+ if (shouldShowNotification) {
56
+ let i18n = this.getErrorTranslationKeyForHttpStatus(error.status);
57
+ if (error.error?.errorCode && error.error.errorCode in this.backendErrorCodes)
58
+ i18n = 'ERROR.' + error.error.errorCode;
59
+ this.notificationService.add('qdPanel', { type: 'critical', i18n, showAsSnackbar: true });
60
+ }
34
61
  return throwError(() => error);
35
62
  }));
36
63
  }
@@ -57,7 +84,7 @@ export class QdNotificationsHttpInterceptorService {
57
84
  return 'UnknownError';
58
85
  }
59
86
  }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, deps: [{ token: APP_ENVIRONMENT, optional: true }, { token: BACKEND_ERROR_CODES, optional: true }, { token: i1.QdNotificationsService }], target: i0.ɵɵFactoryTarget.Injectable });
87
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, deps: [{ token: APP_ENVIRONMENT, optional: true }, { token: BACKEND_ERROR_CODES, optional: true }, { token: WHITELIST_ERROR_CODES, optional: true }, { token: i1.QdNotificationsService }], target: i0.ɵɵFactoryTarget.Injectable });
61
88
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, providedIn: 'root' });
62
89
  }
63
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, decorators: [{
@@ -75,5 +102,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
75
102
  }, {
76
103
  type: Inject,
77
104
  args: [BACKEND_ERROR_CODES]
105
+ }] }, { type: undefined, decorators: [{
106
+ type: Optional
107
+ }, {
108
+ type: Inject,
109
+ args: [WHITELIST_ERROR_CODES]
78
110
  }] }, { type: i1.QdNotificationsService }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1odHRwLWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvbm90aWZpY2F0aW9ucy9zZXJ2aWNlcy9ub3RpZmljYXRpb25zLWh0dHAtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBTUwsY0FBYyxFQUNmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFekUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU3RTs7R0FFRztBQUlILE1BQU0sT0FBTyxxQ0FBcUM7SUFFUTtJQUNJO0lBQzFDO0lBSGxCLFlBQ3dELGNBQWdDLEVBQzVCLGlCQUFpQixFQUMzRCxtQkFBMkM7UUFGTCxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFBO1FBQzNELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFFM0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ3BELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQywyQkFBMkI7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDOUIsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3RDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbEUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCO2dCQUMzRSxJQUFJLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBRTFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFMUYsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxtQ0FBbUMsQ0FBQyxjQUE4QjtRQUN4RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFNUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNsRSxDQUFDLENBQUMsY0FBYyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDN0MsQ0FBQyxDQUFDLDhCQUE4QixVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JGLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxjQUE4QjtRQUNyRCxRQUFRLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssY0FBYyxDQUFDLFVBQVU7Z0JBQzVCLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLEtBQUssY0FBYyxDQUFDLFlBQVk7Z0JBQzlCLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssY0FBYyxDQUFDLFNBQVM7Z0JBQzNCLE9BQU8sV0FBVyxDQUFDO1lBQ3JCLEtBQUssY0FBYyxDQUFDLFFBQVE7Z0JBQzFCLE9BQU8sVUFBVSxDQUFDO1lBQ3BCO2dCQUNFLElBQUksY0FBYyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUMxQixPQUFPLGFBQWEsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxPQUFPLGNBQWMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQzt1R0FsRFUscUNBQXFDLGtCQUUxQixlQUFlLDZCQUNmLG1CQUFtQjsyR0FIOUIscUNBQXFDLGNBRnBDLE1BQU07OzJGQUVQLHFDQUFxQztrQkFIakQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEV2ZW50LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cFN0YXR1c0NvZGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvbnN0YW50Q2FzZSB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbHMvY29uc3RhbnRDYXNlLnRvb2xzJztcbmltcG9ydCB7IGxvd2VyRmlyc3QgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBBUFBfRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2FwcC1lbnZpcm9tZW50LnRva2VuJztcbmltcG9ydCB7IFFkQXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2FwcC1lbnZpcm9tZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXNlcnZpY2Uuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBCQUNLRU5EX0VSUk9SX0NPREVTID0gbmV3IEluamVjdGlvblRva2VuKCdCQUNLRU5EX0VSUk9SX0NPREVTJyk7XG5cbi8qKlxuICogVGhlIFFkTm90aWZpY2F0aW9uc0h0dHBJbnRlcmNlcHRvclNlcnZpY2UgaXMgYW4gQW5ndWxhciBIVFRQIGludGVyY2VwdG9yIHRoYXQgY2FwdHVyZXMgZXJyb3IgcmVzcG9uc2VzIGZyb20gSFRUUCByZXF1ZXN0cyBhbmQgZ2VuZXJhdGVzIG5vdGlmaWNhdGlvbnMgZm9yIGJhY2tlbmQgZXJyb3JzLiBUaGlzIFNlcnZpY2Ugbm90IG9ubHkgaW50ZXJjZXB0cyBlcnJvciByZXNwb25zZXMsIGJ1dCBpdCBhbHNvIGhhbmRsZXMgc3BlY2lmaWMgZXJyb3IgY29kZXMgYW5kIHRyYW5zbGF0ZXMgdGhlbSBpbnRvIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2VzIGZvciBkaXNwbGF5LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRZE5vdGlmaWNhdGlvbnNIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfRU5WSVJPTk1FTlQpIHByaXZhdGUgcmVhZG9ubHkgYXBwRW52aXJvbm1lbnQ6IFFkQXBwRW52aXJvbm1lbnQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChCQUNLRU5EX0VSUk9SX0NPREVTKSBwcml2YXRlIHJlYWRvbmx5IGJhY2tlbmRFcnJvckNvZGVzLFxuICAgIHB1YmxpYyByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYmFja2VuZEVycm9yQ29kZXMgPSB0aGlzLmJhY2tlbmRFcnJvckNvZGVzIHx8IHt9O1xuICB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICh0aGlzLmFwcEVudmlyb25tZW50LmRpc2FibGVCYWNrZW5kTm90aWZpY2F0aW9ucykgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgbGV0IGkxOG4gPSB0aGlzLmdldEVycm9yVHJhbnNsYXRpb25LZXlGb3JIdHRwU3RhdHVzKGVycm9yLnN0YXR1cyk7XG5cbiAgICAgICAgaWYgKGVycm9yLmVycm9yPy5lcnJvckNvZGUgJiYgZXJyb3IuZXJyb3IuZXJyb3JDb2RlIGluIHRoaXMuYmFja2VuZEVycm9yQ29kZXMpXG4gICAgICAgICAgaTE4biA9ICdFUlJPUi4nICsgZXJyb3IuZXJyb3IuZXJyb3JDb2RlO1xuXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGQoJ3FkUGFuZWwnLCB7IHR5cGU6ICdjcml0aWNhbCcsIGkxOG4sIHNob3dBc1NuYWNrYmFyOiB0cnVlIH0pO1xuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JUcmFuc2xhdGlvbktleUZvckh0dHBTdGF0dXMoaHR0cFN0YXR1c0NvZGU6IEh0dHBTdGF0dXNDb2RlKTogc3RyaW5nIHtcbiAgICBjb25zdCBodHRwRXJyb3JOYW1lID0gdGhpcy5nZXRIdHRwRXJyb3JOYW1lKGh0dHBTdGF0dXNDb2RlKTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRFcnJvckNvZGVzW2BIVFRQXyR7Y29uc3RhbnRDYXNlKGh0dHBFcnJvck5hbWUpfWBdXG4gICAgICA/IGBFcnJvci5IVFRQXyR7Y29uc3RhbnRDYXNlKGh0dHBFcnJvck5hbWUpfWBcbiAgICAgIDogYGkxOG4ucWQubm90aWZpY2F0aW9uLmVycm9yLiR7bG93ZXJGaXJzdChodHRwRXJyb3JOYW1lKS5yZXBsYWNlKCdFcnJvcicsICcnKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIdHRwRXJyb3JOYW1lKGh0dHBTdGF0dXNDb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChodHRwU3RhdHVzQ29kZSkge1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRSZXF1ZXN0OlxuICAgICAgICByZXR1cm4gJ0JhZFJlcXVlc3QnO1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHJldHVybiAnVW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRm9yYmlkZGVuOlxuICAgICAgICByZXR1cm4gJ0ZvcmJpZGRlbic7XG4gICAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kOlxuICAgICAgICByZXR1cm4gJ05vdEZvdW5kJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSA+PSA1MDApIHtcbiAgICAgICAgICByZXR1cm4gJ1NlcnZlckVycm9yJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1Vua25vd25FcnJvcic7XG4gICAgfVxuICB9XG59XG4iXX0=
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1odHRwLWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvbm90aWZpY2F0aW9ucy9zZXJ2aWNlcy9ub3RpZmljYXRpb25zLWh0dHAtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBTUwsY0FBYyxFQUNmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFekUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUM3RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBVyx1QkFBdUIsQ0FBQyxDQUFDO0FBRTNGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFDQUFxQztJQUlRO0lBQ0k7SUFDRTtJQUM1QztJQU5ELG1CQUFtQixDQUFXO0lBRS9DLFlBQ3dELGNBQWdDLEVBQzVCLGlCQUFpQixFQUNmLG1CQUE2QixFQUN6RSxtQkFBMkM7UUFITCxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDNUIsc0JBQWlC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QUM7WUFDdEIsS0FBSyxjQUFjLENBQUMsWUFBWTtnQkFDOUIsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxjQUFjLENBQUMsU0FBUztnQkFDM0IsT0FBTyxXQUFXLENBQUM7WUFDckIsS0FBSyxjQUFjLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxVQUFVLENBQUM7WUFDcEI7Z0JBQ0UsSUFBSSxjQUFjLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQzFCLE9BQU8sYUFBYSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELE9BQU8sY0FBYyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3VHQTlFVSxxQ0FBcUMsa0JBSTFCLGVBQWUsNkJBQ2YsbUJBQW1CLDZCQUNuQixxQkFBcUI7MkdBTmhDLHFDQUFxQyxjQUZwQyxNQUFNOzsyRkFFUCxxQ0FBcUM7a0JBSGpELFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQ3RDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEV2ZW50LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cFN0YXR1c0NvZGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvbnN0YW50Q2FzZSB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbHMvY29uc3RhbnRDYXNlLnRvb2xzJztcbmltcG9ydCB7IGxvd2VyRmlyc3QgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBBUFBfRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2FwcC1lbnZpcm9tZW50LnRva2VuJztcbmltcG9ydCB7IFFkQXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2FwcC1lbnZpcm9tZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXNlcnZpY2Uuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBCQUNLRU5EX0VSUk9SX0NPREVTID0gbmV3IEluamVjdGlvblRva2VuKCdCQUNLRU5EX0VSUk9SX0NPREVTJyk7XG5leHBvcnQgY29uc3QgV0hJVEVMSVNUX0VSUk9SX0NPREVTID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcltdPignV0hJVEVMSVNUX0VSUk9SX0NPREVTJyk7XG5cbi8qKlxuICogVGhlIFFkTm90aWZpY2F0aW9uc0h0dHBJbnRlcmNlcHRvclNlcnZpY2UgaXMgYW4gQW5ndWxhciBIVFRQIGludGVyY2VwdG9yIHRoYXQgY2FwdHVyZXMgZXJyb3IgcmVzcG9uc2VzIGZyb20gSFRUUCByZXF1ZXN0cyBhbmQgZ2VuZXJhdGVzIG5vdGlmaWNhdGlvbnMgZm9yIGJhY2tlbmQgZXJyb3JzLiBUaGlzIFNlcnZpY2Ugbm90IG9ubHkgaW50ZXJjZXB0cyBlcnJvciByZXNwb25zZXMsIGJ1dCBpdCBhbHNvIGhhbmRsZXMgc3BlY2lmaWMgZXJyb3IgY29kZXMgYW5kIHRyYW5zbGF0ZXMgdGhlbSBpbnRvIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2VzIGZvciBkaXNwbGF5LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRZE5vdGlmaWNhdGlvbnNIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBibGFja2xpc3RFcnJvckNvZGVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9FTlZJUk9OTUVOVCkgcHJpdmF0ZSByZWFkb25seSBhcHBFbnZpcm9ubWVudDogUWRBcHBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEJBQ0tFTkRfRVJST1JfQ09ERVMpIHByaXZhdGUgcmVhZG9ubHkgYmFja2VuZEVycm9yQ29kZXMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXSElURUxJU1RfRVJST1JfQ09ERVMpIHByaXZhdGUgcmVhZG9ubHkgd2hpdGVsaXN0RXJyb3JDb2RlczogbnVtYmVyW10sXG4gICAgcHVibGljIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IFFkTm90aWZpY2F0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5iYWNrZW5kRXJyb3JDb2RlcyA9IHRoaXMuYmFja2VuZEVycm9yQ29kZXMgfHwge307XG4gICAgdGhpcy53aGl0ZWxpc3RFcnJvckNvZGVzID0gdGhpcy53aGl0ZWxpc3RFcnJvckNvZGVzIHx8IFtdO1xuXG4gICAgdGhpcy5ibGFja2xpc3RFcnJvckNvZGVzID0gW1xuICAgICAgLy8gNDAxLCA0MDIsIDQwM1xuICAgICAgSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuUGF5bWVudFJlcXVpcmVkLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuRm9yYmlkZGVuLFxuICAgICAgLy8gQWxsIDV4eCBjb2Rlc1xuICAgICAgSHR0cFN0YXR1c0NvZGUuSW50ZXJuYWxTZXJ2ZXJFcnJvcixcbiAgICAgIEh0dHBTdGF0dXNDb2RlLk5vdEltcGxlbWVudGVkLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuQmFkR2F0ZXdheSxcbiAgICAgIEh0dHBTdGF0dXNDb2RlLlNlcnZpY2VVbmF2YWlsYWJsZSxcbiAgICAgIEh0dHBTdGF0dXNDb2RlLkdhdGV3YXlUaW1lb3V0LFxuICAgICAgSHR0cFN0YXR1c0NvZGUuSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQsXG4gICAgICBIdHRwU3RhdHVzQ29kZS5WYXJpYW50QWxzb05lZ290aWF0ZXMsXG4gICAgICBIdHRwU3RhdHVzQ29kZS5JbnN1ZmZpY2llbnRTdG9yYWdlLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuTG9vcERldGVjdGVkLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuTm90RXh0ZW5kZWQsXG4gICAgICBIdHRwU3RhdHVzQ29kZS5OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZFxuICAgIF07XG4gIH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKHRoaXMuYXBwRW52aXJvbm1lbnQuZGlzYWJsZUJhY2tlbmROb3RpZmljYXRpb25zKSByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCBpc0JsYWNrbGlzdGVkID0gdGhpcy5ibGFja2xpc3RFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLnN0YXR1cyk7XG4gICAgICAgIGNvbnN0IHNob3VsZFNob3dOb3RpZmljYXRpb24gPSBpc0JsYWNrbGlzdGVkIHx8ICF0aGlzLndoaXRlbGlzdEVycm9yQ29kZXMuaW5jbHVkZXMoZXJyb3Iuc3RhdHVzKTtcblxuICAgICAgICBpZiAoc2hvdWxkU2hvd05vdGlmaWNhdGlvbikge1xuICAgICAgICAgIGxldCBpMThuID0gdGhpcy5nZXRFcnJvclRyYW5zbGF0aW9uS2V5Rm9ySHR0cFN0YXR1cyhlcnJvci5zdGF0dXMpO1xuXG4gICAgICAgICAgaWYgKGVycm9yLmVycm9yPy5lcnJvckNvZGUgJiYgZXJyb3IuZXJyb3IuZXJyb3JDb2RlIGluIHRoaXMuYmFja2VuZEVycm9yQ29kZXMpXG4gICAgICAgICAgICBpMThuID0gJ0VSUk9SLicgKyBlcnJvci5lcnJvci5lcnJvckNvZGU7XG5cbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkKCdxZFBhbmVsJywgeyB0eXBlOiAnY3JpdGljYWwnLCBpMThuLCBzaG93QXNTbmFja2JhcjogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JUcmFuc2xhdGlvbktleUZvckh0dHBTdGF0dXMoaHR0cFN0YXR1c0NvZGU6IEh0dHBTdGF0dXNDb2RlKTogc3RyaW5nIHtcbiAgICBjb25zdCBodHRwRXJyb3JOYW1lID0gdGhpcy5nZXRIdHRwRXJyb3JOYW1lKGh0dHBTdGF0dXNDb2RlKTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRFcnJvckNvZGVzW2BIVFRQXyR7Y29uc3RhbnRDYXNlKGh0dHBFcnJvck5hbWUpfWBdXG4gICAgICA/IGBFcnJvci5IVFRQXyR7Y29uc3RhbnRDYXNlKGh0dHBFcnJvck5hbWUpfWBcbiAgICAgIDogYGkxOG4ucWQubm90aWZpY2F0aW9uLmVycm9yLiR7bG93ZXJGaXJzdChodHRwRXJyb3JOYW1lKS5yZXBsYWNlKCdFcnJvcicsICcnKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIdHRwRXJyb3JOYW1lKGh0dHBTdGF0dXNDb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChodHRwU3RhdHVzQ29kZSkge1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRSZXF1ZXN0OlxuICAgICAgICByZXR1cm4gJ0JhZFJlcXVlc3QnO1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHJldHVybiAnVW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRm9yYmlkZGVuOlxuICAgICAgICByZXR1cm4gJ0ZvcmJpZGRlbic7XG4gICAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kOlxuICAgICAgICByZXR1cm4gJ05vdEZvdW5kJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSA+PSA1MDApIHtcbiAgICAgICAgICByZXR1cm4gJ1NlcnZlckVycm9yJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1Vua25vd25FcnJvcic7XG4gICAgfVxuICB9XG59XG4iXX0=