@datarailsshared/datarailsshared 1.5.355 → 1.5.359
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.
- package/datarailsshared-datarailsshared-1.5.359.tgz +0 -0
- package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +10 -7
- package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +1 -1
- package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +21 -19
- package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +2 -2
- package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +1 -1
- package/esm2022/lib/dr-inputs/dr-slider/dr-slider.component.mjs +2 -2
- package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +3 -3
- package/fesm2022/datarailsshared-datarailsshared.mjs +37 -32
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +1 -0
- package/lib/dr-inputs/dr-input/dr-input.component.d.ts +20 -17
- package/package.json +1 -1
- package/datarailsshared-datarailsshared-1.5.355.tgz +0 -0
|
Binary file
|
|
@@ -130,21 +130,24 @@ export class DrChatFormComponent {
|
|
|
130
130
|
this.inputChange.emit(value);
|
|
131
131
|
}
|
|
132
132
|
getTextAreaHeight(textAreaElement) {
|
|
133
|
-
let height;
|
|
134
133
|
if (this._textareaInitialHeight) {
|
|
135
|
-
height =
|
|
134
|
+
textAreaElement.style.height = '45px';
|
|
136
135
|
}
|
|
137
136
|
else {
|
|
138
|
-
height =
|
|
137
|
+
textAreaElement.style.height = 'auto';
|
|
138
|
+
textAreaElement.style.height = textAreaElement.scrollHeight + 'px';
|
|
139
139
|
}
|
|
140
|
-
return
|
|
140
|
+
return `${textAreaElement.style.height}`;
|
|
141
|
+
}
|
|
142
|
+
getSendButtonPosition(textAreaElement) {
|
|
143
|
+
return `top: calc(${this.getTextAreaHeight(textAreaElement)} - var(--send-button-offset));`;
|
|
141
144
|
}
|
|
142
145
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrChatFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
143
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrChatFormComponent, selector: "dr-chat-form", inputs: { message: "message", messagePlaceholder: "messagePlaceholder", dropFiles: "dropFiles", dropFilePlaceholder: "dropFilePlaceholder", waitForReply: "waitForReply", showDisabledButtonInsteadOfDotFlashing: "showDisabledButtonInsteadOfDotFlashing" }, outputs: { send: "send", abort: "abort", inputChange: "inputChange" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" }, properties: { "class.file-over": "this.fileOver" } }, ngImport: i0, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keydown.enter)=\"sendMessage($event)\">\n </textarea>\n <i
|
|
146
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrChatFormComponent, selector: "dr-chat-form", inputs: { message: "message", messagePlaceholder: "messagePlaceholder", dropFiles: "dropFiles", dropFilePlaceholder: "dropFilePlaceholder", waitForReply: "waitForReply", showDisabledButtonInsteadOfDotFlashing: "showDisabledButtonInsteadOfDotFlashing" }, outputs: { send: "send", abort: "abort", inputChange: "inputChange" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" }, properties: { "class.file-over": "this.fileOver" } }, ngImport: i0, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keydown.enter)=\"sendMessage($event)\">\n </textarea>\n <i\n *ngIf=\"!waitForReply\"\n [style]=\"getSendButtonPosition(textAreaElement)\"\n (click)=\"sendMessage($event)\"\n class=\"dr-icon-notify send-button\"></i>\n <i\n *ngIf=\"waitForReply && showDisabledButtonInsteadOfDotFlashing\"\n (click)=\"sendMessage($event)\"\n class=\"dr-icon-notify send-button-disabled\"></i>\n <dr-dot-flashing\n *ngIf=\"waitForReply && !showDisabledButtonInsteadOfDotFlashing\"\n class=\"wait-reply-dot-flashing\"></dr-dot-flashing>\n <dr-button *ngIf=\"waitForReply\" (click)=\"abortMessage()\" theme=\"ghost\" class=\"abort-button\">Stop generating</dr-button>\n </div>\n</div>\n", styles: [":host{--send-button-offset: 42px;display:flex;flex-direction:column;align-items:center;padding:0 16px;margin-top:12px}:host .message-row{display:flex;justify-content:center;width:100%;padding:0 0 21px;max-width:956px}:host .message-row__input{position:relative;display:flex;align-items:center;flex-grow:1;flex-direction:row;height:auto;overflow:visible;min-width:265px;border-radius:24px;background:#dfe0e3 border-box;border:1.5px solid transparent;box-shadow:0 2px 16px -10px #603cff29}:host .message-row__input .send-button,:host .message-row__input .send-button-disabled{position:absolute;right:4px;top:2.5px;cursor:pointer;font-size:28px;width:68px;border-radius:100px;display:flex;align-items:center;justify-content:center;height:40px;background:#f0f1f4;color:#aeabac}:host .message-row__input--focused{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled .send-button{color:#fff;background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input textarea{font-size:14px;color:#333;line-height:19px;flex-grow:1;resize:none;padding:14px 76px 12px 23px;margin:auto;border:none;border-radius:22.5px}:host .message-row__input textarea:focus{border:none}:host .message-row__input textarea::placeholder{color:#9ea1aa}:host .message-row__input .wait-reply-dot-flashing{position:absolute;right:20px}:host .message-row__input .abort-button{position:absolute;right:0;top:-44px}:host .message-row__input .abort-button::ng-deep button{background:#f2f2ff!important;border-radius:4px}:host input{flex:1}:host input.with-button{border-bottom-right-radius:0;border-top-right-radius:0}:host .dropped-files{display:flex;flex-direction:row;margin-bottom:.5rem;flex-wrap:wrap}:host .dropped-files__item{display:flex;flex-direction:column;justify-content:center;margin:0 10px 10px 0;position:relative}:host .dropped-files__item__preview{background-size:cover;background-position:center;width:64px;height:64px;border-radius:8px;border:1px solid #ccc}:host .dropped-files__item__preview i{font-size:62px}:host .dropped-files__item__name{white-space:nowrap;font-size:12px;color:#8f929e;margin-top:4px;max-width:64px;overflow:hidden;text-overflow:ellipsis}:host .dropped-files__item__remove{position:absolute;right:-4px;top:-4px;cursor:pointer;background:#fff;border-radius:12px;color:#8f929e;border:1px solid #8f929e;font-size:14px}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: i5.DrDotFlashingComponent, selector: "dr-dot-flashing" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
144
147
|
}
|
|
145
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrChatFormComponent, decorators: [{
|
|
146
149
|
type: Component,
|
|
147
|
-
args: [{ selector: 'dr-chat-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keydown.enter)=\"sendMessage($event)\">\n </textarea>\n <i
|
|
150
|
+
args: [{ selector: 'dr-chat-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keydown.enter)=\"sendMessage($event)\">\n </textarea>\n <i\n *ngIf=\"!waitForReply\"\n [style]=\"getSendButtonPosition(textAreaElement)\"\n (click)=\"sendMessage($event)\"\n class=\"dr-icon-notify send-button\"></i>\n <i\n *ngIf=\"waitForReply && showDisabledButtonInsteadOfDotFlashing\"\n (click)=\"sendMessage($event)\"\n class=\"dr-icon-notify send-button-disabled\"></i>\n <dr-dot-flashing\n *ngIf=\"waitForReply && !showDisabledButtonInsteadOfDotFlashing\"\n class=\"wait-reply-dot-flashing\"></dr-dot-flashing>\n <dr-button *ngIf=\"waitForReply\" (click)=\"abortMessage()\" theme=\"ghost\" class=\"abort-button\">Stop generating</dr-button>\n </div>\n</div>\n", styles: [":host{--send-button-offset: 42px;display:flex;flex-direction:column;align-items:center;padding:0 16px;margin-top:12px}:host .message-row{display:flex;justify-content:center;width:100%;padding:0 0 21px;max-width:956px}:host .message-row__input{position:relative;display:flex;align-items:center;flex-grow:1;flex-direction:row;height:auto;overflow:visible;min-width:265px;border-radius:24px;background:#dfe0e3 border-box;border:1.5px solid transparent;box-shadow:0 2px 16px -10px #603cff29}:host .message-row__input .send-button,:host .message-row__input .send-button-disabled{position:absolute;right:4px;top:2.5px;cursor:pointer;font-size:28px;width:68px;border-radius:100px;display:flex;align-items:center;justify-content:center;height:40px;background:#f0f1f4;color:#aeabac}:host .message-row__input--focused{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled .send-button{color:#fff;background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input textarea{font-size:14px;color:#333;line-height:19px;flex-grow:1;resize:none;padding:14px 76px 12px 23px;margin:auto;border:none;border-radius:22.5px}:host .message-row__input textarea:focus{border:none}:host .message-row__input textarea::placeholder{color:#9ea1aa}:host .message-row__input .wait-reply-dot-flashing{position:absolute;right:20px}:host .message-row__input .abort-button{position:absolute;right:0;top:-44px}:host .message-row__input .abort-button::ng-deep button{background:#f2f2ff!important;border-radius:4px}:host input{flex:1}:host input.with-button{border-bottom-right-radius:0;border-top-right-radius:0}:host .dropped-files{display:flex;flex-direction:row;margin-bottom:.5rem;flex-wrap:wrap}:host .dropped-files__item{display:flex;flex-direction:column;justify-content:center;margin:0 10px 10px 0;position:relative}:host .dropped-files__item__preview{background-size:cover;background-position:center;width:64px;height:64px;border-radius:8px;border:1px solid #ccc}:host .dropped-files__item__preview i{font-size:62px}:host .dropped-files__item__name{white-space:nowrap;font-size:12px;color:#8f929e;margin-top:4px;max-width:64px;overflow:hidden;text-overflow:ellipsis}:host .dropped-files__item__remove{position:absolute;right:-4px;top:-4px;cursor:pointer;background:#fff;border-radius:12px;color:#8f929e;border:1px solid #8f929e;font-size:14px}\n"] }]
|
|
148
151
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }]; }, propDecorators: { message: [{
|
|
149
152
|
type: Input
|
|
150
153
|
}], messagePlaceholder: [{
|
|
@@ -176,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
176
179
|
type: HostListener,
|
|
177
180
|
args: ['dragleave', ['$event']]
|
|
178
181
|
}] } });
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWNoYXQvZHItY2hhdC1mb3JtL2NoYXQtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2RyLWNoYXQtZm9ybS9jaGF0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQVFoRCxNQUFNLE9BQU8sbUJBQW1CO0lBa0U1QixZQUNjLEdBQXNCLEVBQ3RCLFlBQTBCO1FBRDFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBbkV4QywyQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBRXpCOzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRXRCOzs7O1dBSUc7UUFDTSx1QkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUUvQzs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7OztXQUlHO1FBQ00sd0JBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFFbkQ7Ozs7V0FJRztRQUNNLGlC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QkFBYixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFRRyxXQUFXO3NCQUFwQixNQUFNO2dCQUV5QixRQUFRO3NCQUF2QyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFROUIsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFtQ2hDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVXBDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IElNQUdFX1RZUEVTIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWNoYXQtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICdjaGF0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NoYXQtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEckNoYXRGb3JtQ29tcG9uZW50IHtcbiAgICBfdGV4dGFyZWFJbml0aWFsSGVpZ2h0ID0gdHJ1ZTtcbiAgICBpbnB1dEZvY3VzID0gZmFsc2U7XG4gICAgaW5wdXRIb3ZlciA9IGZhbHNlO1xuXG4gICAgZHJvcHBlZEZpbGVzOiBhbnlbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogUHJlZGVmaW5lZCBtZXNzYWdlIHRleHRcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgQElucHV0KCkgbWVzc2FnZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogTWVzc2FnZSBwbGFjZWhvbGRlciB0ZXh0XG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lc3NhZ2VQbGFjZWhvbGRlciA9ICdUeXBlIGEgbWVzc2FnZSc7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHNlbmQgYnV0dG9uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBkcm9wRmlsZXMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEZpbGUgZHJvcCBwbGFjZWhvbGRlciB0ZXh0XG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRyb3BGaWxlUGxhY2Vob2xkZXIgPSAnRHJvcCBmaWxlIHRvIHNlbmQnO1xuXG4gICAgLyoqXG4gICAgICogUGFyYW1ldGVyIHRvIGNoZWNrIGlzIHNlbmQgbWVzc2FnZSBmdW5jdGlvbiBhdmFpbGFibGVcbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHdhaXRGb3JSZXBseSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUGFyYW1ldGVyIHRvIGNoZWNrIGlzIHNlbmQgbWVzc2FnZSBmdW5jdGlvbiBhdmFpbGFibGVcbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dEaXNhYmxlZEJ1dHRvbkluc3RlYWRPZkRvdEZsYXNoaW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8eyBtZXNzYWdlOiBzdHJpbmcsIGZpbGVzOiBGaWxlW10gfT59XG4gICAgICovXG4gICAgQE91dHB1dCgpIHNlbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbWVzc2FnZTogc3RyaW5nOyBmaWxlczogRmlsZVtdIH0+KCk7XG4gICAgQE91dHB1dCgpIGFib3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIG1lc3NhZ2UgaW5wdXQgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAqXG4gICAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxzdHJpbmc+fVxuICAgICAqL1xuXG4gICAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZpbGUtb3ZlcicpIGZpbGVPdmVyID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICApIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgICBvbkRyb3AoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5kcm9wRmlsZXMpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5maWxlT3ZlciA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZpbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKElNQUdFX1RZUEVTLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy51cmxTdHlsZSA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShgdXJsKCR7cmVzLnNyY30pYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZnIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BwZWRGaWxlcy5wdXNoKHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlRmlsZShmaWxlKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kcm9wcGVkRmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gICAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5kcm9wRmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU92ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5kcm9wRmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU92ZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbmRNZXNzYWdlKCRldmVudCkge1xuICAgICAgICBpZiAoISRldmVudCB8fCAhJGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAkZXZlbnQgJiYgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAodGhpcy53YWl0Rm9yUmVwbHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3BwZWRGaWxlcy5sZW5ndGggfHwgU3RyaW5nKHRoaXMubWVzc2FnZSkudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RleHRhcmVhSW5pdGlhbEhlaWdodCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsIGZpbGVzOiB0aGlzLmRyb3BwZWRGaWxlcyB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3BwZWRGaWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWJvcnRNZXNzYWdlKCkge1xuICAgICAgICB0aGlzLmFib3J0LmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGV4dGFyZWFJbml0aWFsSGVpZ2h0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0VGV4dEFyZWFIZWlnaHQodGV4dEFyZWFFbGVtZW50OiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XG4gICAgICAgIGxldCBoZWlnaHQ7XG4gICAgICAgIGlmICh0aGlzLl90ZXh0YXJlYUluaXRpYWxIZWlnaHQpIHtcbiAgICAgICAgICAgIGhlaWdodCA9IDQ1O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGVpZ2h0ID0gdGV4dEFyZWFFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYGhlaWdodDogJHtoZWlnaHR9cHg7YDtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHJvcHBlZC1maWxlc1wiICpuZ0lmPVwiZHJvcHBlZEZpbGVzPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcHBlZC1maWxlc19faXRlbVwiICpuZ0Zvcj1cImxldCBmaWxlIG9mIGRyb3BwZWRGaWxlc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHBlZC1maWxlc19faXRlbV9fcHJldmlld1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cImZpbGUudXJsU3R5bGUgfHwgJ25vbmUnXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImRyLWljb24tZmlsZVwiICpuZ0lmPVwiIWZpbGUudXJsU3R5bGVcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHBlZC1maWxlc19faXRlbV9fbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvZGl2PlxuICAgICAgICA8aSBjbGFzcz1cImRyb3BwZWQtZmlsZXNfX2l0ZW1fX3JlbW92ZSBkci1pY29uLWV4aXRcIiAoY2xpY2spPVwicmVtb3ZlRmlsZShmaWxlKVwiPjwvaT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1lc3NhZ2Utcm93XCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1lc3NhZ2Utcm93X19pbnB1dFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ21lc3NhZ2Utcm93X19pbnB1dC0tZm9jdXNlZCc6IGlucHV0Rm9jdXMsICdtZXNzYWdlLXJvd19faW5wdXQtLWZpbGxlZCc6ICEhbWVzc2FnZT8ubGVuZ3RoIH1cIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAjdGV4dEFyZWFFbGVtZW50XG4gICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cyA9IHRydWVcIlxuICAgICAgICAgICAgKGJsdXIpPVwiaW5wdXRGb2N1cyA9IGZhbHNlXCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImlucHV0SG92ZXIgPSB0cnVlXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImlucHV0SG92ZXIgPSBmYWxzZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgW3Jvd3NdPVwiMVwiXG4gICAgICAgICAgICBbc3R5bGVdPVwiZ2V0VGV4dEFyZWFIZWlnaHQodGV4dEFyZWFFbGVtZW50KVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBmaWxlT3ZlciA/IGRyb3BGaWxlUGxhY2Vob2xkZXIgOiBtZXNzYWdlUGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2VuZE1lc3NhZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8aSAqbmdJZj1cIiF3YWl0Rm9yUmVwbHlcIiAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiIGNsYXNzPVwiZHItaWNvbi1ub3RpZnkgc2VuZC1idXR0b25cIj48L2k+XG4gICAgICAgIDxpXG4gICAgICAgICAgICAqbmdJZj1cIndhaXRGb3JSZXBseSAmJiBzaG93RGlzYWJsZWRCdXR0b25JbnN0ZWFkT2ZEb3RGbGFzaGluZ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImRyLWljb24tbm90aWZ5IHNlbmQtYnV0dG9uLWRpc2FibGVkXCI+PC9pPlxuICAgICAgICA8ZHItZG90LWZsYXNoaW5nXG4gICAgICAgICAgICAqbmdJZj1cIndhaXRGb3JSZXBseSAmJiAhc2hvd0Rpc2FibGVkQnV0dG9uSW5zdGVhZE9mRG90Rmxhc2hpbmdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3YWl0LXJlcGx5LWRvdC1mbGFzaGluZ1wiPjwvZHItZG90LWZsYXNoaW5nPlxuICAgICAgICA8ZHItYnV0dG9uICpuZ0lmPVwid2FpdEZvclJlcGx5XCIgKGNsaWNrKT1cImFib3J0TWVzc2FnZSgpXCIgdGhlbWU9XCJnaG9zdFwiIGNsYXNzPVwiYWJvcnQtYnV0dG9uXCI+U3RvcCBnZW5lcmF0aW5nPC9kci1idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWNoYXQvZHItY2hhdC1mb3JtL2NoYXQtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2RyLWNoYXQtZm9ybS9jaGF0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQVFoRCxNQUFNLE9BQU8sbUJBQW1CO0lBa0U1QixZQUNjLEdBQXNCLEVBQ3RCLFlBQTBCO1FBRDFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBbkV4QywyQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBRXpCOzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRXRCOzs7O1dBSUc7UUFDTSx1QkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUUvQzs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7OztXQUlHO1FBQ00sd0JBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFFbkQ7Ozs7V0FJRztRQUNNLGlC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OytCQUNJLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTttSUFjdEMsT0FBTztzQkFBZixLQUFLO2dCQU9HLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLHNDQUFzQztzQkFBOUMsS0FBSztnQkFNSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQVFHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRXlCLFFBQVE7c0JBQXZDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQVE5QixNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW1DaEMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVcEMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSU1BR0VfVFlQRVMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hhdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY2hhdC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2NoYXQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hhdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyQ2hhdEZvcm1Db21wb25lbnQge1xuICAgIF90ZXh0YXJlYUluaXRpYWxIZWlnaHQgPSB0cnVlO1xuICAgIGlucHV0Rm9jdXMgPSBmYWxzZTtcbiAgICBpbnB1dEhvdmVyID0gZmFsc2U7XG5cbiAgICBkcm9wcGVkRmlsZXM6IGFueVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBQcmVkZWZpbmVkIG1lc3NhZ2UgdGV4dFxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZXNzYWdlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBNZXNzYWdlIHBsYWNlaG9sZGVyIHRleHRcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgQElucHV0KCkgbWVzc2FnZVBsYWNlaG9sZGVyID0gJ1R5cGUgYSBtZXNzYWdlJztcblxuICAgIC8qKlxuICAgICAqIFNob3cgc2VuZCBidXR0b25cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRyb3BGaWxlcyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRmlsZSBkcm9wIHBsYWNlaG9sZGVyIHRleHRcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgQElucHV0KCkgZHJvcEZpbGVQbGFjZWhvbGRlciA9ICdEcm9wIGZpbGUgdG8gc2VuZCc7XG5cbiAgICAvKipcbiAgICAgKiBQYXJhbWV0ZXIgdG8gY2hlY2sgaXMgc2VuZCBtZXNzYWdlIGZ1bmN0aW9uIGF2YWlsYWJsZVxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgQElucHV0KCkgd2FpdEZvclJlcGx5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBQYXJhbWV0ZXIgdG8gY2hlY2sgaXMgc2VuZCBtZXNzYWdlIGZ1bmN0aW9uIGF2YWlsYWJsZVxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgQElucHV0KCkgc2hvd0Rpc2FibGVkQnV0dG9uSW5zdGVhZE9mRG90Rmxhc2hpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHR5cGUge0V2ZW50RW1pdHRlcjx7IG1lc3NhZ2U6IHN0cmluZywgZmlsZXM6IEZpbGVbXSB9Pn1cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgc2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtZXNzYWdlOiBzdHJpbmc7IGZpbGVzOiBGaWxlW10gfT4oKTtcbiAgICBAT3V0cHV0KCkgYWJvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gbWVzc2FnZSBpbnB1dCB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPHN0cmluZz59XG4gICAgICovXG5cbiAgICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmlsZS1vdmVyJykgZmlsZU92ZXIgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICkge31cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIG9uRHJvcChldmVudDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BGaWxlcykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLmZpbGVPdmVyID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gZmlsZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoSU1BR0VfVFlQRVMuaW5jbHVkZXMoZmlsZS50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZnIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnVybFN0eWxlID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGB1cmwoJHtyZXMuc3JjfSlgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLnB1c2gocmVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVGaWxlKGZpbGUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRyb3BwZWRGaWxlcy5pbmRleE9mKGZpbGUpO1xuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wcGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmRyb3BGaWxlcykge1xuICAgICAgICAgICAgdGhpcy5maWxlT3ZlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICAgIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmRyb3BGaWxlcykge1xuICAgICAgICAgICAgdGhpcy5maWxlT3ZlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VuZE1lc3NhZ2UoJGV2ZW50KSB7XG4gICAgICAgIGlmICghJGV2ZW50IHx8ICEkZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICRldmVudCAmJiAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLndhaXRGb3JSZXBseSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcHBlZEZpbGVzLmxlbmd0aCB8fCBTdHJpbmcodGhpcy5tZXNzYWdlKS50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGV4dGFyZWFJbml0aWFsSGVpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmQuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSwgZmlsZXM6IHRoaXMuZHJvcHBlZEZpbGVzIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcHBlZEZpbGVzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhYm9ydE1lc3NhZ2UoKSB7XG4gICAgICAgIHRoaXMuYWJvcnQuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl90ZXh0YXJlYUluaXRpYWxIZWlnaHQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXRUZXh0QXJlYUhlaWdodCh0ZXh0QXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuX3RleHRhcmVhSW5pdGlhbEhlaWdodCkge1xuICAgICAgICAgICAgdGV4dEFyZWFFbGVtZW50LnN0eWxlLmhlaWdodCA9ICc0NXB4JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRleHRBcmVhRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgICAgICB0ZXh0QXJlYUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGV4dEFyZWFFbGVtZW50LnNjcm9sbEhlaWdodCArICdweCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7dGV4dEFyZWFFbGVtZW50LnN0eWxlLmhlaWdodH1gO1xuICAgIH1cblxuICAgIGdldFNlbmRCdXR0b25Qb3NpdGlvbih0ZXh0QXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGB0b3A6IGNhbGMoJHt0aGlzLmdldFRleHRBcmVhSGVpZ2h0KHRleHRBcmVhRWxlbWVudCl9IC0gdmFyKC0tc2VuZC1idXR0b24tb2Zmc2V0KSk7YDtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHJvcHBlZC1maWxlc1wiICpuZ0lmPVwiZHJvcHBlZEZpbGVzPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcHBlZC1maWxlc19faXRlbVwiICpuZ0Zvcj1cImxldCBmaWxlIG9mIGRyb3BwZWRGaWxlc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHBlZC1maWxlc19faXRlbV9fcHJldmlld1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cImZpbGUudXJsU3R5bGUgfHwgJ25vbmUnXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImRyLWljb24tZmlsZVwiICpuZ0lmPVwiIWZpbGUudXJsU3R5bGVcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHBlZC1maWxlc19faXRlbV9fbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvZGl2PlxuICAgICAgICA8aSBjbGFzcz1cImRyb3BwZWQtZmlsZXNfX2l0ZW1fX3JlbW92ZSBkci1pY29uLWV4aXRcIiAoY2xpY2spPVwicmVtb3ZlRmlsZShmaWxlKVwiPjwvaT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1lc3NhZ2Utcm93XCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1lc3NhZ2Utcm93X19pbnB1dFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ21lc3NhZ2Utcm93X19pbnB1dC0tZm9jdXNlZCc6IGlucHV0Rm9jdXMsICdtZXNzYWdlLXJvd19faW5wdXQtLWZpbGxlZCc6ICEhbWVzc2FnZT8ubGVuZ3RoIH1cIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAjdGV4dEFyZWFFbGVtZW50XG4gICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cyA9IHRydWVcIlxuICAgICAgICAgICAgKGJsdXIpPVwiaW5wdXRGb2N1cyA9IGZhbHNlXCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImlucHV0SG92ZXIgPSB0cnVlXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImlucHV0SG92ZXIgPSBmYWxzZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgW3Jvd3NdPVwiMVwiXG4gICAgICAgICAgICBbc3R5bGVdPVwiZ2V0VGV4dEFyZWFIZWlnaHQodGV4dEFyZWFFbGVtZW50KVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBmaWxlT3ZlciA/IGRyb3BGaWxlUGxhY2Vob2xkZXIgOiBtZXNzYWdlUGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2VuZE1lc3NhZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8aVxuICAgICAgICAgICAgKm5nSWY9XCIhd2FpdEZvclJlcGx5XCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJnZXRTZW5kQnV0dG9uUG9zaXRpb24odGV4dEFyZWFFbGVtZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VuZE1lc3NhZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cImRyLWljb24tbm90aWZ5IHNlbmQtYnV0dG9uXCI+PC9pPlxuICAgICAgICA8aVxuICAgICAgICAgICAgKm5nSWY9XCJ3YWl0Rm9yUmVwbHkgJiYgc2hvd0Rpc2FibGVkQnV0dG9uSW5zdGVhZE9mRG90Rmxhc2hpbmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbmRNZXNzYWdlKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJkci1pY29uLW5vdGlmeSBzZW5kLWJ1dHRvbi1kaXNhYmxlZFwiPjwvaT5cbiAgICAgICAgPGRyLWRvdC1mbGFzaGluZ1xuICAgICAgICAgICAgKm5nSWY9XCJ3YWl0Rm9yUmVwbHkgJiYgIXNob3dEaXNhYmxlZEJ1dHRvbkluc3RlYWRPZkRvdEZsYXNoaW5nXCJcbiAgICAgICAgICAgIGNsYXNzPVwid2FpdC1yZXBseS1kb3QtZmxhc2hpbmdcIj48L2RyLWRvdC1mbGFzaGluZz5cbiAgICAgICAgPGRyLWJ1dHRvbiAqbmdJZj1cIndhaXRGb3JSZXBseVwiIChjbGljayk9XCJhYm9ydE1lc3NhZ2UoKVwiIHRoZW1lPVwiZ2hvc3RcIiBjbGFzcz1cImFib3J0LWJ1dHRvblwiPlN0b3AgZ2VuZXJhdGluZzwvZHItYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs
CHANGED
|
@@ -78,7 +78,7 @@ export class DialogModalWrapperComponent {
|
|
|
78
78
|
this.destroy$.complete();
|
|
79
79
|
}
|
|
80
80
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogModalWrapperComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: i2.DialogService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogModalWrapperComponent, selector: "dr-dialog-modal-wrapper", host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<div header class=\"header-dialog\">\n <h1 class=\"title-dialog\" data-test=\"modalTitle\">\n <i\n *ngIf=\"dialogData.headerIconClass\"\n (click)=\"closeDialog()\"\n class=\"title-dialog__icon\"\n [class]=\"dialogData.headerIconClass\"\n data-test=\"dialogTitleIcon\"></i>\n <span class=\"title-dialog__text\">{{ dialogData.title }}</span>\n </h1>\n <i *ngIf=\"!dialogData.hideCloseBtn\" (click)=\"closeDialog()\" class=\"dr-icon-exit icon-close\" data-test=\"xBtn\"></i>\n</div>\n<div *ngIf=\"dialogData.content\" class=\"content-dialog\">\n <ng-container>{{ dialogData.content }}</ng-container>\n <span #content class=\"content-anchor\"></span>\n</div>\n<form *ngIf=\"dialogData.fields\" [formGroup]=\"form\" class=\"dr-smart-from\">\n <div [class]=\"dialogData.formWrapperClass || 'dr-smart-form_wrapper'\">\n <div\n *ngFor=\"let field of dialogData.fields\"\n class=\"dr-smart-form_group\"\n [class]=\"field.formGroupClass\"\n [ngStyle]=\"{ display: field.isLabelFullWidth ? 'block' : 'flex' }\">\n <label\n *ngIf=\"field.label && field.type !== dialogFieldType.CHECKBOX\"\n [ngClass]=\"field.isLabelFullWidth ? 'col-md-12 mb-2' : 'col-md-2'\"\n class=\"label p-0 d-flex align-items-center\"\n >{{ field.label }}</label\n >\n <div\n class=\"input-group p-0\"\n [ngClass]=\"{\n 'col-md-10': field.label && !field.isLabelFullWidth,\n 'col-md-12': !field.label || field.isLabelFullWidth\n }\">\n <dr-select\n *ngIf=\"field.type === dialogFieldType.SELECT\"\n [searchable]=\"dialogData.searchable\"\n [clearable]=\"dialogData.clearable\"\n [formControlName]=\"field.name\"\n [bindLabel]=\"field.bindLabel || null\"\n [bindValue]=\"field.bindValue || null\"\n [selectedItem]=\"field.default\"\n [items]=\"field.items || (field.items$ | async)\"\n [loading]=\"fieldsItemsLoading[field.name] | async\"\n [required]=\"true\"\n [placeholder]=\"field.placeholder\">\n <ng-template *ngIf=\"dialogData?.footerTemplateData\" #optionFooterTemplate let-item=\"item\" let-close=\"close\">\n <button (click)=\"footerAction(); close()\" class=\"dr-select-footer__btn\">\n <i *ngIf=\"dialogData.footerTemplateData.icon\" class=\"{{ dialogData.footerTemplateData.icon }}\"></i>\n {{ dialogData.footerTemplateData.label }}\n </button>\n </ng-template>\n </dr-select>\n <dr-input\n *ngIf=\"field.type === dialogFieldType.INPUT\"\n data-test=\"modalInput\"\n class=\"form-control\"\n [formControlName]=\"field.name\"\n [placeholder]=\"field.placeholder\"></dr-input>\n <dr-date-picker\n *ngIf=\"field.type === dialogFieldType.DATE_PICKER\"\n [formControlName]=\"field.name\"\n [format]=\"field.datePickerFormat\"\n [placeholder]=\"field.placeholder\"></dr-date-picker>\n <dr-checkbox *ngIf=\"field.type === dialogFieldType.CHECKBOX\" [formControlName]=\"field.name\">\n {{ field.label }}\n </dr-checkbox>\n <label\n class=\"form-field-error-alert\"\n *ngIf=\"form.invalid && form.controls[field.name]?.dirty && form.controls[field.name]?.errors\">\n {{ form.controls[field.name].errors.errorString }}\n </label>\n <label class=\"form-error-alert\" *ngIf=\"dialogData.errorMessage && !form.pristine && form.invalid\">\n {{ dialogData.errorMessage }}\n </label>\n <label class=\"form-error-alert\" *ngIf=\"form.valid && showServerErrorMessage && dialogData.serverErrorMessage\">\n {{ dialogData.serverErrorMessage }}\n </label>\n </div>\n </div>\n </div>\n</form>\n\n<div footer class=\"footer-dialog\">\n <div class=\"buttons-wrapper\" *ngIf=\"dialogData.cancelButton || dialogData.acceptButton\">\n <dr-button\n (click)=\"onDecline()\"\n *ngIf=\"dialogData.customButton\"\n [theme]=\"dialogData.customButton?.theme || 'secondary'\"\n class=\"buttons-wrapper--custom-btn\"\n data-test=\"declineBtn\"\n >{{ dialogData.customButton.label }}</dr-button\n >\n <dr-button *ngIf=\"dialogData.cancelButton\" data-test=\"modalCloseBtn\" (click)=\"closeDialog()\" [theme]=\"'secondary'\">{{\n dialogData.cancelButton.label\n }}</dr-button>\n <dr-button\n *ngIf=\"dialogData.acceptButton\"\n data-test=\"modalAddBtn\"\n (click)=\"onAccept()\"\n [theme]=\"'primary'\"\n [isLoading]=\"isLoading\"\n [disabled]=\"form.invalid\"\n >{{ dialogData.acceptButton.label }}</dr-button\n >\n </div>\n</div>\n", styles: [":host{display:flex;justify-content:space-between;flex-direction:column}:host.small-modal,:host.small-modal-max-height{min-height:188px;max-height:467px;min-width:400px;max-width:400px}:host.medium-modal,:host.medium-modal-max-height{min-height:188px;max-height:467px;min-width:632px;max-width:632px}:host.medium-small-modal{min-height:188px;max-height:345px;min-width:460px;max-width:460px}:host.medium-modal-max-height,:host.small-modal-max-height{max-height:80vh}.header-dialog{position:relative;display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:16px 56px 16px 32px;border-bottom:1px solid #DFE0E3}.header-dialog>.icon-close{position:absolute;right:32px;top:16px;cursor:pointer}.title-dialog{display:flex;color:#333;position:static;font-weight:600;font-size:16px;line-height:24px;margin-top:0;margin-bottom:0}.title-dialog__icon{font-size:32px;margin-right:8px;line-height:24px;color:#6d6e6f}.content-dialog{font-weight:400;font-size:14px;padding:16px 32px 5px;white-space:pre-line}.icon-close{color:#6d6e6f;cursor:pointer}.dr-smart-from{font-size:14px;font-weight:400;line-height:22px;padding:16px 32px 22px}.dr-smart-from dr-checkbox{font-weight:400}.content-dialog{padding:16px 32px 0;font-weight:400;font-size:14px;line-height:22px}.content-anchor{display:none}.footer-dialog{border-top:1px solid #DFE0E3}.buttons-wrapper{display:flex;justify-content:flex-end;padding:10px 32px 11px}.buttons-wrapper dr-button:nth-of-type(n+2){margin-left:12px}.buttons-wrapper--custom-btn{margin-right:auto}.form-field-error-alert{font-size:12px;color:#bf1d30;line-height:20px}.form-error-alert{position:absolute;margin-top:5px;font-size:12px;color:#bf1d30}.dr-select-footer__btn{background-color:transparent;display:flex;align-items:center;justify-content:flex-start;cursor:pointer;min-width:15rem;font-style:normal;font-weight:400;font-size:14px;line-height:24px;clear:both;width:100%;white-space:nowrap;padding:0 12px;height:36px;flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: i5.CheckboxComponent, selector: "dr-checkbox", inputs: ["checkedStatus", "disabled", "icon", "indeterminate", "textNowrap"], outputs: ["checkedChange"] }, { kind: "component", type: i6.DrInputComponent, selector: "dr-input", inputs: ["disabled", "buttonOptions", "type", "name", "placeholder", "readonly", "clearable", "min", "max", "minLength", "maxlength", "step", "searchMini", "mask", "suffix", "prefix"], outputs: ["blur", "focus", "modelDebounceChange", "searchHandler", "clearHandler", "buttonHandler"] }, { kind: "component", type: i7.DrSelectComponent, selector: "dr-select", inputs: ["type", "className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "loadingText", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen", "noValuePadding"], outputs: ["change", "open", "closeUp"] }, { kind: "component", type: i8.DrDatePickerComponent, selector: "dr-date-picker", inputs: ["format", "min", "max", "periodPosition", "placeholder", "disabled", "fiscalYearMonthsModifier", "fiscalYearBack", "datepickerFilter"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
81
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogModalWrapperComponent, selector: "dr-dialog-modal-wrapper", host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<div header class=\"header-dialog\">\n <h1 class=\"title-dialog\" data-test=\"modalTitle\">\n <i\n *ngIf=\"dialogData.headerIconClass\"\n (click)=\"closeDialog()\"\n class=\"title-dialog__icon\"\n [class]=\"dialogData.headerIconClass\"\n data-test=\"dialogTitleIcon\"></i>\n <span class=\"title-dialog__text\">{{ dialogData.title }}</span>\n </h1>\n <i *ngIf=\"!dialogData.hideCloseBtn\" (click)=\"closeDialog()\" class=\"dr-icon-exit icon-close\" data-test=\"xBtn\"></i>\n</div>\n<div *ngIf=\"dialogData.content\" class=\"content-dialog\">\n <ng-container>{{ dialogData.content }}</ng-container>\n <span #content class=\"content-anchor\"></span>\n</div>\n<form *ngIf=\"dialogData.fields\" [formGroup]=\"form\" class=\"dr-smart-from\">\n <div [class]=\"dialogData.formWrapperClass || 'dr-smart-form_wrapper'\">\n <div\n *ngFor=\"let field of dialogData.fields\"\n class=\"dr-smart-form_group\"\n [class]=\"field.formGroupClass\"\n [ngStyle]=\"{ display: field.isLabelFullWidth ? 'block' : 'flex' }\">\n <label\n *ngIf=\"field.label && field.type !== dialogFieldType.CHECKBOX\"\n [ngClass]=\"field.isLabelFullWidth ? 'col-md-12 mb-2' : 'col-md-2'\"\n class=\"label p-0 d-flex align-items-center\"\n >{{ field.label }}</label\n >\n <div\n class=\"input-group p-0\"\n [ngClass]=\"{\n 'col-md-10': field.label && !field.isLabelFullWidth,\n 'col-md-12': !field.label || field.isLabelFullWidth\n }\">\n <dr-select\n *ngIf=\"field.type === dialogFieldType.SELECT\"\n [searchable]=\"dialogData.searchable\"\n [clearable]=\"dialogData.clearable\"\n [formControlName]=\"field.name\"\n [bindLabel]=\"field.bindLabel || null\"\n [bindValue]=\"field.bindValue || null\"\n [selectedItem]=\"field.default\"\n [items]=\"field.items || (field.items$ | async)\"\n [loading]=\"fieldsItemsLoading[field.name] | async\"\n [required]=\"true\"\n [placeholder]=\"field.placeholder\">\n <ng-template *ngIf=\"dialogData?.footerTemplateData\" #optionFooterTemplate let-item=\"item\" let-close=\"close\">\n <button (click)=\"footerAction(); close()\" class=\"dr-select-footer__btn\">\n <i *ngIf=\"dialogData.footerTemplateData.icon\" class=\"{{ dialogData.footerTemplateData.icon }}\"></i>\n {{ dialogData.footerTemplateData.label }}\n </button>\n </ng-template>\n </dr-select>\n <dr-input\n *ngIf=\"field.type === dialogFieldType.INPUT\"\n data-test=\"modalInput\"\n class=\"form-control\"\n [formControlName]=\"field.name\"\n [placeholder]=\"field.placeholder\"></dr-input>\n <dr-date-picker\n *ngIf=\"field.type === dialogFieldType.DATE_PICKER\"\n [formControlName]=\"field.name\"\n [format]=\"field.datePickerFormat\"\n [placeholder]=\"field.placeholder\"></dr-date-picker>\n <dr-checkbox *ngIf=\"field.type === dialogFieldType.CHECKBOX\" [formControlName]=\"field.name\">\n {{ field.label }}\n </dr-checkbox>\n <label\n class=\"form-field-error-alert\"\n *ngIf=\"form.invalid && form.controls[field.name]?.dirty && form.controls[field.name]?.errors\">\n {{ form.controls[field.name].errors.errorString }}\n </label>\n <label class=\"form-error-alert\" *ngIf=\"dialogData.errorMessage && !form.pristine && form.invalid\">\n {{ dialogData.errorMessage }}\n </label>\n <label class=\"form-error-alert\" *ngIf=\"form.valid && showServerErrorMessage && dialogData.serverErrorMessage\">\n {{ dialogData.serverErrorMessage }}\n </label>\n </div>\n </div>\n </div>\n</form>\n\n<div footer class=\"footer-dialog\">\n <div class=\"buttons-wrapper\" *ngIf=\"dialogData.cancelButton || dialogData.acceptButton\">\n <dr-button\n (click)=\"onDecline()\"\n *ngIf=\"dialogData.customButton\"\n [theme]=\"dialogData.customButton?.theme || 'secondary'\"\n class=\"buttons-wrapper--custom-btn\"\n data-test=\"declineBtn\"\n >{{ dialogData.customButton.label }}</dr-button\n >\n <dr-button *ngIf=\"dialogData.cancelButton\" data-test=\"modalCloseBtn\" (click)=\"closeDialog()\" [theme]=\"'secondary'\">{{\n dialogData.cancelButton.label\n }}</dr-button>\n <dr-button\n *ngIf=\"dialogData.acceptButton\"\n data-test=\"modalAddBtn\"\n (click)=\"onAccept()\"\n [theme]=\"'primary'\"\n [isLoading]=\"isLoading\"\n [disabled]=\"form.invalid\"\n >{{ dialogData.acceptButton.label }}</dr-button\n >\n </div>\n</div>\n", styles: [":host{display:flex;justify-content:space-between;flex-direction:column}:host.small-modal,:host.small-modal-max-height{min-height:188px;max-height:467px;min-width:400px;max-width:400px}:host.medium-modal,:host.medium-modal-max-height{min-height:188px;max-height:467px;min-width:632px;max-width:632px}:host.medium-small-modal{min-height:188px;max-height:345px;min-width:460px;max-width:460px}:host.medium-modal-max-height,:host.small-modal-max-height{max-height:80vh}.header-dialog{position:relative;display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:16px 56px 16px 32px;border-bottom:1px solid #DFE0E3}.header-dialog>.icon-close{position:absolute;right:32px;top:16px;cursor:pointer}.title-dialog{display:flex;color:#333;position:static;font-weight:600;font-size:16px;line-height:24px;margin-top:0;margin-bottom:0}.title-dialog__icon{font-size:32px;margin-right:8px;line-height:24px;color:#6d6e6f}.content-dialog{font-weight:400;font-size:14px;padding:16px 32px 5px;white-space:pre-line}.icon-close{color:#6d6e6f;cursor:pointer}.dr-smart-from{font-size:14px;font-weight:400;line-height:22px;padding:16px 32px 22px}.dr-smart-from dr-checkbox{font-weight:400}.content-dialog{padding:16px 32px 0;font-weight:400;font-size:14px;line-height:22px}.content-anchor{display:none}.footer-dialog{border-top:1px solid #DFE0E3}.buttons-wrapper{display:flex;justify-content:flex-end;padding:10px 32px 11px}.buttons-wrapper dr-button:nth-of-type(n+2){margin-left:12px}.buttons-wrapper--custom-btn{margin-right:auto}.form-field-error-alert{font-size:12px;color:#bf1d30;line-height:20px}.form-error-alert{position:absolute;margin-top:5px;font-size:12px;color:#bf1d30}.dr-select-footer__btn{background-color:transparent;display:flex;align-items:center;justify-content:flex-start;cursor:pointer;min-width:15rem;font-style:normal;font-weight:400;font-size:14px;line-height:24px;clear:both;width:100%;white-space:nowrap;padding:0 12px;height:36px;flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: i5.CheckboxComponent, selector: "dr-checkbox", inputs: ["checkedStatus", "disabled", "icon", "indeterminate", "textNowrap"], outputs: ["checkedChange"] }, { kind: "component", type: i6.DrInputComponent, selector: "dr-input", inputs: ["disabled", "buttonOptions", "type", "placeholder", "clearable", "name", "readonly", "min", "max", "maxlength", "minlength", "pattern", "step", "searchMini", "mask", "suffix", "prefix"], outputs: ["blur", "focus", "modelDebounceChange", "searchHandler", "clearHandler", "buttonHandler"] }, { kind: "component", type: i7.DrSelectComponent, selector: "dr-select", inputs: ["type", "className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "loadingText", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen", "noValuePadding"], outputs: ["change", "open", "closeUp"] }, { kind: "component", type: i8.DrDatePickerComponent, selector: "dr-date-picker", inputs: ["format", "min", "max", "periodPosition", "placeholder", "disabled", "fiscalYearMonthsModifier", "fiscalYearBack", "datepickerFilter"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
82
82
|
}
|
|
83
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogModalWrapperComponent, decorators: [{
|
|
84
84
|
type: Component,
|
|
@@ -84,6 +84,9 @@ export class DrInputComponent {
|
|
|
84
84
|
this.blur = new EventEmitter();
|
|
85
85
|
this.focused = new EventEmitter();
|
|
86
86
|
this.modelDebounceChange = new EventEmitter();
|
|
87
|
+
this.searchHandler = new EventEmitter();
|
|
88
|
+
this.clearHandler = new EventEmitter();
|
|
89
|
+
this.buttonHandler = new EventEmitter();
|
|
87
90
|
this.suffix = '';
|
|
88
91
|
this.prefix = '';
|
|
89
92
|
this.innerValue = null;
|
|
@@ -96,9 +99,6 @@ export class DrInputComponent {
|
|
|
96
99
|
checkFocusOut: (target, element) => true,
|
|
97
100
|
text: 'Save',
|
|
98
101
|
};
|
|
99
|
-
this.searchHandler = new EventEmitter();
|
|
100
|
-
this.clearHandler = new EventEmitter();
|
|
101
|
-
this.buttonHandler = new EventEmitter();
|
|
102
102
|
this.tabindex = -1;
|
|
103
103
|
this.onChangeCallback = noop;
|
|
104
104
|
this.onTouchedCallback = noop;
|
|
@@ -166,13 +166,13 @@ export class DrInputComponent {
|
|
|
166
166
|
this.inputElement.nativeElement.focus();
|
|
167
167
|
}
|
|
168
168
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
169
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrInputComponent, selector: "dr-input", inputs: { disabled: "disabled", buttonOptions: "buttonOptions", type: "type",
|
|
169
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrInputComponent, selector: "dr-input", inputs: { disabled: "disabled", buttonOptions: "buttonOptions", type: "type", placeholder: "placeholder", clearable: "clearable", name: "name", readonly: "readonly", min: "min", max: "max", maxlength: "maxlength", minlength: "minlength", pattern: "pattern", step: "step", searchMini: "searchMini", mask: "mask", suffix: "suffix", prefix: "prefix" }, outputs: { blur: "blur", focused: "focus", modelDebounceChange: "modelDebounceChange", searchHandler: "searchHandler", clearHandler: "clearHandler", buttonHandler: "buttonHandler" }, host: { properties: { "class.search-type-mini": "this.searchMini", "class": "this.elementClass", "tabindex": "this.tabindex" } }, providers: [
|
|
170
170
|
{
|
|
171
171
|
provide: NG_VALUE_ACCESSOR,
|
|
172
172
|
useExisting: forwardRef((() => DrInputComponent)),
|
|
173
173
|
multi: true,
|
|
174
174
|
},
|
|
175
|
-
], queries: [{ propertyName: "prefixIcon", first: true, predicate: ["prefix"], descendants: true }, { propertyName: "suffixIcon", first: true, predicate: ["suffix"], descendants: true }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputRef"], descendants: true }], ngImport: i0, template: "<ng-content select=\"[prefixIcon]\"></ng-content>\n\n<ng-container *ngIf=\"!mask; else maskedInput\">\n <input\n #inputRef\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n (ngModelDebounceChange)=\"modelDebounceChange.emit($event)\"\n (blur)=\"blur.emit(value); onTouched()\"\n (focus)=\"focused.emit($event)\"\n [disabled]=\"_disabled\"\n [readonly]=\"readonly\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n [
|
|
175
|
+
], queries: [{ propertyName: "prefixIcon", first: true, predicate: ["prefix"], descendants: true }, { propertyName: "suffixIcon", first: true, predicate: ["suffix"], descendants: true }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputRef"], descendants: true }], ngImport: i0, template: "<ng-content select=\"[prefixIcon]\"></ng-content>\n\n<ng-container *ngIf=\"!mask; else maskedInput\">\n <input\n #inputRef\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n (ngModelDebounceChange)=\"modelDebounceChange.emit($event)\"\n (blur)=\"blur.emit(value); onTouched()\"\n (focus)=\"focused.emit($event)\"\n [disabled]=\"_disabled\"\n [readonly]=\"readonly\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [step]=\"step\" />\n</ng-container>\n<ng-template #maskedInput>\n <input\n #inputRef\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n (ngModelDebounceChange)=\"modelDebounceChange.emit($event)\"\n (blur)=\"blur.emit(value); onTouched()\"\n (focus)=\"focused.emit($event)\"\n [disabled]=\"_disabled\"\n [readonly]=\"readonly\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [mask]=\"mask\"\n [suffix]=\"suffix\"\n [prefix]=\"prefix\"\n [step]=\"step\" />\n</ng-template>\n<span *ngIf=\"value\" class=\"clear-icon\" (click)=\"onClear($event)\"></span>\n<span *ngIf=\"type === 'search'\" class=\"search-icon\" (click)=\"onSearchClicked()\"></span>\n<ng-content select=\"[suffixIcon]\"></ng-content>\n<button *ngIf=\"_buttonOptions.show || (_buttonOptions.showOnFocus && _buttonOptions.focusSet)\" (click)=\"onButtonClicked($event)\">\n {{ _buttonOptions.text }}\n</button>\n", styles: [":host{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:Poppins,sans-serif;background:#fff;border:1px solid #9EA1AA;border-radius:6px;color:#333;padding:0 8px;overflow:hidden;outline:none}:host:hover{border-color:#4646ce}:host:focus-within{border-color:#4646ce!important;color:#333}:host.disabled{pointer-events:none;color:#aeabac;border-color:#aeabac;background:#f0f1f4}:host.ng-valid.ng-dirty{border-color:#037c5a}:host.ng-invalid.ng-dirty:not(:focus-within){border-color:#bf1d30!important}:host.ng-untouched.ng-valid{border-color:#9ea1aa}:host input{display:flex;font-size:14px;flex-grow:1;height:100%;border:none;padding:4px 0;text-align:left;box-sizing:border-box;outline:none}:host input::placeholder{color:#6d6e6f;font-size:14px;line-height:18px}:host input:disabled{border:none;color:#aeabac;background:transparent}:host input::-webkit-search-decoration,:host input::-webkit-search-cancel-button,:host input::-webkit-search-results-button,:host input::-webkit-search-results-decoration{-webkit-appearance:none}:host .clear-icon{visibility:hidden}:host.clearable .clear-icon,:host.ng-touched.ng-invalid .clear-icon{visibility:visible;content:url('data:image/svg+xml; utf8, <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.91783 5.00001L9.03353 1.88395C9.11924 1.79818 9.16651 1.68374 9.16665 1.56171C9.16665 1.43962 9.11937 1.32504 9.03353 1.2394L8.76047 0.966415C8.67463 0.880433 8.56023 0.833344 8.43808 0.833344C8.31612 0.833344 8.20166 0.880433 8.11582 0.966415L5.00013 4.08227L1.88428 0.966415C1.79858 0.880433 1.68404 0.833344 1.56196 0.833344C1.44001 0.833344 1.32556 0.880433 1.23985 0.966415L0.966646 1.2394C0.788869 1.41719 0.788869 1.70637 0.966646 1.88395L4.08242 5.00001L0.966646 8.11593C0.880873 8.20184 0.833677 8.31628 0.833677 8.43831C0.833677 8.56034 0.880873 8.67478 0.966646 8.76062L1.23978 9.03361C1.32548 9.11952 1.44 9.16668 1.56188 9.16668C1.68397 9.16668 1.7985 9.11952 1.88421 9.03361L5.00005 5.91769L8.11575 9.03361C8.20159 9.11952 8.31605 9.16668 8.438 9.16668H8.43815C8.56017 9.16668 8.67456 9.11952 8.7604 9.03361L9.03346 8.76062C9.11916 8.67484 9.16643 8.56034 9.16643 8.43831C9.16643 8.31628 9.11916 8.20184 9.03346 8.116L5.91783 5.00001Z\" fill=\"%2351566F\"/></svg> ');margin:auto 0 auto 8px;cursor:pointer}:host span+span,:host span+img{margin-left:0}:host.search-type{padding:0 16px;border-radius:16px}:host.search-type .search-icon{content:url('data:image/svg+xml; utf8, <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.5816 10.2097C11.4878 10.1157 11.3605 10.0629 11.2277 10.0629H10.8175C10.7473 10.0629 10.6799 10.035 10.6303 9.98534C10.5322 9.88724 10.527 9.73044 10.6132 9.62178C11.4154 8.6112 11.8925 7.33534 11.8925 5.94625C11.8925 2.66209 9.23042 0 5.94625 0C2.66209 0 0 2.66209 0 5.94625C0 9.23042 2.66209 11.8925 5.94625 11.8925C7.33523 11.8925 8.611 11.4155 9.62155 10.6172C9.7304 10.5312 9.88711 10.5366 9.9852 10.6347C10.0349 10.6845 10.0629 10.7519 10.0629 10.8223V11.2277C10.0629 11.3605 10.1157 11.4878 10.2097 11.5816L14.2834 15.6472C14.4787 15.8421 14.795 15.8419 14.9901 15.6468L15.6468 14.9901C15.8419 14.795 15.8421 14.4787 15.6472 14.2834L11.5816 10.2097ZM5.94625 10.0629C3.67296 10.0629 1.82962 8.21955 1.82962 5.94625C1.82962 3.67296 3.67296 1.82962 5.94625 1.82962C8.21955 1.82962 10.0629 3.67296 10.0629 5.94625C10.0629 8.21955 8.21955 10.0629 5.94625 10.0629Z\" fill=\"%23BCBCBC\"/></svg> ');margin:auto 0 auto 8px;cursor:pointer}:host.search-type.clearable .search-icon{margin-left:26px}:host.search-type.clearable .clear-icon+.search-icon{margin-left:8px}:host.search-type-mini{width:200px;min-height:28px;height:28px}:host.with-button{padding-right:0}:host.with-button button{color:#fff;background:#4646ce;height:100%;width:auto;padding:0 8px;display:flex;align-items:center;border:none;border-left:1px solid #9EA1AA}:host.with-button.disabled button{color:#aeabac;background:#f0f1f4;border-left:1px solid #AEABAC}:host ::ng-deep img[prefixIcon],:host ::ng-deep img[suffixIcon],:host ::ng-deep i[prefixIcon],:host ::ng-deep i[suffixIcon]{position:relative;margin:auto 8px}:host ::ng-deep img[prefixIcon],:host ::ng-deep i[prefixIcon]{margin-left:0}:host ::ng-deep img[suffixIcon],:host ::ng-deep i[suffixIcon]{margin-right:0}\n"], dependencies: [{ kind: "directive", type: i1.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DrModelDebounceChangeDirective, selector: "[ngModelDebounceChange]", inputs: ["debounce"], outputs: ["ngModelDebounceChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
176
176
|
}
|
|
177
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrInputComponent, decorators: [{
|
|
178
178
|
type: Component,
|
|
@@ -182,29 +182,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
182
182
|
useExisting: forwardRef((() => DrInputComponent)),
|
|
183
183
|
multi: true,
|
|
184
184
|
},
|
|
185
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"[prefixIcon]\"></ng-content>\n\n<ng-container *ngIf=\"!mask; else maskedInput\">\n <input\n #inputRef\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n (ngModelDebounceChange)=\"modelDebounceChange.emit($event)\"\n (blur)=\"blur.emit(value); onTouched()\"\n (focus)=\"focused.emit($event)\"\n [disabled]=\"_disabled\"\n [readonly]=\"readonly\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n [
|
|
185
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"[prefixIcon]\"></ng-content>\n\n<ng-container *ngIf=\"!mask; else maskedInput\">\n <input\n #inputRef\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n (ngModelDebounceChange)=\"modelDebounceChange.emit($event)\"\n (blur)=\"blur.emit(value); onTouched()\"\n (focus)=\"focused.emit($event)\"\n [disabled]=\"_disabled\"\n [readonly]=\"readonly\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [step]=\"step\" />\n</ng-container>\n<ng-template #maskedInput>\n <input\n #inputRef\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n (ngModelDebounceChange)=\"modelDebounceChange.emit($event)\"\n (blur)=\"blur.emit(value); onTouched()\"\n (focus)=\"focused.emit($event)\"\n [disabled]=\"_disabled\"\n [readonly]=\"readonly\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [mask]=\"mask\"\n [suffix]=\"suffix\"\n [prefix]=\"prefix\"\n [step]=\"step\" />\n</ng-template>\n<span *ngIf=\"value\" class=\"clear-icon\" (click)=\"onClear($event)\"></span>\n<span *ngIf=\"type === 'search'\" class=\"search-icon\" (click)=\"onSearchClicked()\"></span>\n<ng-content select=\"[suffixIcon]\"></ng-content>\n<button *ngIf=\"_buttonOptions.show || (_buttonOptions.showOnFocus && _buttonOptions.focusSet)\" (click)=\"onButtonClicked($event)\">\n {{ _buttonOptions.text }}\n</button>\n", styles: [":host{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:Poppins,sans-serif;background:#fff;border:1px solid #9EA1AA;border-radius:6px;color:#333;padding:0 8px;overflow:hidden;outline:none}:host:hover{border-color:#4646ce}:host:focus-within{border-color:#4646ce!important;color:#333}:host.disabled{pointer-events:none;color:#aeabac;border-color:#aeabac;background:#f0f1f4}:host.ng-valid.ng-dirty{border-color:#037c5a}:host.ng-invalid.ng-dirty:not(:focus-within){border-color:#bf1d30!important}:host.ng-untouched.ng-valid{border-color:#9ea1aa}:host input{display:flex;font-size:14px;flex-grow:1;height:100%;border:none;padding:4px 0;text-align:left;box-sizing:border-box;outline:none}:host input::placeholder{color:#6d6e6f;font-size:14px;line-height:18px}:host input:disabled{border:none;color:#aeabac;background:transparent}:host input::-webkit-search-decoration,:host input::-webkit-search-cancel-button,:host input::-webkit-search-results-button,:host input::-webkit-search-results-decoration{-webkit-appearance:none}:host .clear-icon{visibility:hidden}:host.clearable .clear-icon,:host.ng-touched.ng-invalid .clear-icon{visibility:visible;content:url('data:image/svg+xml; utf8, <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.91783 5.00001L9.03353 1.88395C9.11924 1.79818 9.16651 1.68374 9.16665 1.56171C9.16665 1.43962 9.11937 1.32504 9.03353 1.2394L8.76047 0.966415C8.67463 0.880433 8.56023 0.833344 8.43808 0.833344C8.31612 0.833344 8.20166 0.880433 8.11582 0.966415L5.00013 4.08227L1.88428 0.966415C1.79858 0.880433 1.68404 0.833344 1.56196 0.833344C1.44001 0.833344 1.32556 0.880433 1.23985 0.966415L0.966646 1.2394C0.788869 1.41719 0.788869 1.70637 0.966646 1.88395L4.08242 5.00001L0.966646 8.11593C0.880873 8.20184 0.833677 8.31628 0.833677 8.43831C0.833677 8.56034 0.880873 8.67478 0.966646 8.76062L1.23978 9.03361C1.32548 9.11952 1.44 9.16668 1.56188 9.16668C1.68397 9.16668 1.7985 9.11952 1.88421 9.03361L5.00005 5.91769L8.11575 9.03361C8.20159 9.11952 8.31605 9.16668 8.438 9.16668H8.43815C8.56017 9.16668 8.67456 9.11952 8.7604 9.03361L9.03346 8.76062C9.11916 8.67484 9.16643 8.56034 9.16643 8.43831C9.16643 8.31628 9.11916 8.20184 9.03346 8.116L5.91783 5.00001Z\" fill=\"%2351566F\"/></svg> ');margin:auto 0 auto 8px;cursor:pointer}:host span+span,:host span+img{margin-left:0}:host.search-type{padding:0 16px;border-radius:16px}:host.search-type .search-icon{content:url('data:image/svg+xml; utf8, <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.5816 10.2097C11.4878 10.1157 11.3605 10.0629 11.2277 10.0629H10.8175C10.7473 10.0629 10.6799 10.035 10.6303 9.98534C10.5322 9.88724 10.527 9.73044 10.6132 9.62178C11.4154 8.6112 11.8925 7.33534 11.8925 5.94625C11.8925 2.66209 9.23042 0 5.94625 0C2.66209 0 0 2.66209 0 5.94625C0 9.23042 2.66209 11.8925 5.94625 11.8925C7.33523 11.8925 8.611 11.4155 9.62155 10.6172C9.7304 10.5312 9.88711 10.5366 9.9852 10.6347C10.0349 10.6845 10.0629 10.7519 10.0629 10.8223V11.2277C10.0629 11.3605 10.1157 11.4878 10.2097 11.5816L14.2834 15.6472C14.4787 15.8421 14.795 15.8419 14.9901 15.6468L15.6468 14.9901C15.8419 14.795 15.8421 14.4787 15.6472 14.2834L11.5816 10.2097ZM5.94625 10.0629C3.67296 10.0629 1.82962 8.21955 1.82962 5.94625C1.82962 3.67296 3.67296 1.82962 5.94625 1.82962C8.21955 1.82962 10.0629 3.67296 10.0629 5.94625C10.0629 8.21955 8.21955 10.0629 5.94625 10.0629Z\" fill=\"%23BCBCBC\"/></svg> ');margin:auto 0 auto 8px;cursor:pointer}:host.search-type.clearable .search-icon{margin-left:26px}:host.search-type.clearable .clear-icon+.search-icon{margin-left:8px}:host.search-type-mini{width:200px;min-height:28px;height:28px}:host.with-button{padding-right:0}:host.with-button button{color:#fff;background:#4646ce;height:100%;width:auto;padding:0 8px;display:flex;align-items:center;border:none;border-left:1px solid #9EA1AA}:host.with-button.disabled button{color:#aeabac;background:#f0f1f4;border-left:1px solid #AEABAC}:host ::ng-deep img[prefixIcon],:host ::ng-deep img[suffixIcon],:host ::ng-deep i[prefixIcon],:host ::ng-deep i[suffixIcon]{position:relative;margin:auto 8px}:host ::ng-deep img[prefixIcon],:host ::ng-deep i[prefixIcon]{margin-left:0}:host ::ng-deep img[suffixIcon],:host ::ng-deep i[suffixIcon]{margin-right:0}\n"] }]
|
|
186
186
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
|
|
187
187
|
type: Input
|
|
188
188
|
}], buttonOptions: [{
|
|
189
189
|
type: Input
|
|
190
190
|
}], type: [{
|
|
191
191
|
type: Input
|
|
192
|
-
}], name: [{
|
|
193
|
-
type: Input
|
|
194
192
|
}], placeholder: [{
|
|
195
193
|
type: Input
|
|
196
|
-
}], readonly: [{
|
|
197
|
-
type: Input
|
|
198
194
|
}], clearable: [{
|
|
199
195
|
type: Input
|
|
196
|
+
}], name: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], readonly: [{
|
|
199
|
+
type: Input
|
|
200
200
|
}], min: [{
|
|
201
201
|
type: Input
|
|
202
202
|
}], max: [{
|
|
203
203
|
type: Input
|
|
204
|
-
}], minLength: [{
|
|
205
|
-
type: Input
|
|
206
204
|
}], maxlength: [{
|
|
207
205
|
type: Input
|
|
206
|
+
}], minlength: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], pattern: [{
|
|
209
|
+
type: Input
|
|
208
210
|
}], step: [{
|
|
209
211
|
type: Input
|
|
210
212
|
}], searchMini: [{
|
|
@@ -219,6 +221,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
219
221
|
args: ['focus']
|
|
220
222
|
}], modelDebounceChange: [{
|
|
221
223
|
type: Output
|
|
224
|
+
}], searchHandler: [{
|
|
225
|
+
type: Output
|
|
226
|
+
}], clearHandler: [{
|
|
227
|
+
type: Output
|
|
228
|
+
}], buttonHandler: [{
|
|
229
|
+
type: Output
|
|
222
230
|
}], mask: [{
|
|
223
231
|
type: Input
|
|
224
232
|
}], suffix: [{
|
|
@@ -228,12 +236,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
228
236
|
}], elementClass: [{
|
|
229
237
|
type: HostBinding,
|
|
230
238
|
args: ['class']
|
|
231
|
-
}], searchHandler: [{
|
|
232
|
-
type: Output
|
|
233
|
-
}], clearHandler: [{
|
|
234
|
-
type: Output
|
|
235
|
-
}], buttonHandler: [{
|
|
236
|
-
type: Output
|
|
237
239
|
}], inputElement: [{
|
|
238
240
|
type: ViewChild,
|
|
239
241
|
args: ['inputRef']
|
|
@@ -247,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
247
249
|
type: HostBinding,
|
|
248
250
|
args: ['tabindex']
|
|
249
251
|
}] } });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RyLWlucHV0L2RyLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1pbnB1dC9kci1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQWU1QixNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLElBQWEsUUFBUSxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFhLGFBQWEsQ0FBQyxLQUFLO1FBQzVCLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQzNELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzFDO1NBQ0o7UUFDRCxJQUFJ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QyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVoQixRQUFRO3NCQUFoQyxXQUFXO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHItaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcklucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERySW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYnV0dG9uT3B0aW9ucyh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvbk9wdGlvbnMgPSB7IC4uLnRoaXMuX2J1dHRvbk9wdGlvbnMsIC4uLnZhbHVlIH07XG4gICAgICAgICAgICBpZiAodGhpcy5fYnV0dG9uT3B0aW9ucz8uc2hvdyB8fCB0aGlzLl9idXR0b25PcHRpb25zPy5zaG93T25Gb2N1cykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRDbGFzcy5wdXNoKCd3aXRoLWJ1dHRvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9idXR0b25PcHRpb25zLnNob3dPbkZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbkZ1bmMgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYnV0dG9uT3B0aW9ucy5mb2N1c1NldCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsTGlzdGVuRnVuYyA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQucGFyZW50Tm9kZSAhPT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbk9wdGlvbnMuY2hlY2tGb2N1c091dChldmVudC50YXJnZXQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkJ1dHRvbkNsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHR5cGUodmFsKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB2YWw7XG4gICAgICAgIGlmICh0aGlzLl90eXBlID09PSAnc2VhcmNoJykge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudENsYXNzLnB1c2goJ3NlYXJjaC10eXBlJyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSAnU2VhcmNoLi4uJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNldCBwbGFjZWhvbGRlcih2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzZXQgY2xlYXJhYmxlKHZhbCkge1xuICAgICAgICB0aGlzLl9jbGVhcmFibGUgPSAhIXZhbDtcbiAgICAgICAgaWYgKHRoaXMuX2NsZWFyYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudENsYXNzLnB1c2goJ2NsZWFyYWJsZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudENsYXNzID0gdGhpcy5fZWxlbWVudENsYXNzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gJ2NsZWFyYWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIG1heGxlbmd0aDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHN0ZXA7XG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYXJjaC10eXBlLW1pbmknKVxuICAgIHNlYXJjaE1pbmk6IGJvb2xlYW47XG4gICAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgnZm9jdXMnKSBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtb2RlbERlYm91bmNlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgbWFzazogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1ZmZpeCA9ICcnO1xuICAgIEBJbnB1dCgpIHByZWZpeCA9ICcnO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGVsZW1lbnRDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudENsYXNzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICBpbm5lclZhbHVlID0gbnVsbDtcbiAgICBfZGlzYWJsZWQgPSBudWxsO1xuICAgIF9lbGVtZW50Q2xhc3M6IHN0cmluZ1tdID0gW107XG4gICAgX2J1dHRvbk9wdGlvbnMgPSB7XG4gICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICBzaG93T25Gb2N1czogZmFsc2UsXG4gICAgICAgIGZvY3VzU2V0OiBmYWxzZSxcbiAgICAgICAgY2hlY2tGb2N1c091dDogKHRhcmdldDogYW55LCBlbGVtZW50OiBhbnkpID0+IHRydWUsXG4gICAgICAgIHRleHQ6ICdTYXZlJyxcbiAgICB9O1xuICAgIGxpc3RlbkZ1bmM6ICguLi5wYXJhbXMpID0+IGFueTtcbiAgICBnbG9iYWxMaXN0ZW5GdW5jOiAoLi4ucGFyYW1zKSA9PiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgc2VhcmNoSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBjbGVhckhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgYnV0dG9uSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRSZWYnKSBwcml2YXRlIHJlYWRvbmx5IGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBAQ29udGVudENoaWxkKCdwcmVmaXgnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJlZml4SWNvbjogRWxlbWVudFJlZjtcbiAgICBAQ29udGVudENoaWxkKCdzdWZmaXgnLCB7IHN0YXRpYzogZmFsc2UgfSkgc3VmZml4SWNvbjogRWxlbWVudFJlZjtcblxuICAgIEBIb3N0QmluZGluZygndGFiaW5kZXgnKSB0YWJpbmRleCA9IC0xO1xuICAgIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICAgIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHNldCh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MgPSB2YWwuc3BsaXQoJyAnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2YWx1ZSh2OiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAgICAgaWYgKHYgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy50eXBlID09PSAnbnVtYmVyJyA/ICt2IDogdjtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmlubmVyVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BsYWNlaG9sZGVyID0gJyc7XG4gICAgcHJpdmF0ZSBfdHlwZSA9ICdzdHJpbmcnO1xuICAgIHByaXZhdGUgX2NsZWFyYWJsZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcmVmaXhJY29uKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MucHVzaCgnd2l0aC1wcmVmaXgnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdWZmaXhJY29uKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MucHVzaCgnd2l0aC1zdWZmaXgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MucHVzaCgnZGlzYWJsZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRDbGFzcyA9IHRoaXMuX2VsZW1lbnRDbGFzcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09ICdkaXNhYmxlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25TZWFyY2hDbGlja2VkKCkge1xuICAgICAgICB0aGlzLnNlYXJjaEhhbmRsZXIuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbkNsaWNrZWQoJGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5idXR0b25IYW5kbGVyLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgdGhpcy5fYnV0dG9uT3B0aW9ucy5mb2N1c1NldCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuRnVuYykge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5GdW5jKCk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbExpc3RlbkZ1bmMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2xlYXIoJGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2xlYXJIYW5kbGVyLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJbcHJlZml4SWNvbl1cIj48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhbWFzazsgZWxzZSBtYXNrZWRJbnB1dFwiPlxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRSZWZcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUNoYW5nZXMoKVwiXG4gICAgICAgIChuZ01vZGVsRGVib3VuY2VDaGFuZ2UpPVwibW9kZWxEZWJvdW5jZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJibHVyLmVtaXQodmFsdWUpOyBvblRvdWNoZWQoKVwiXG4gICAgICAgIChmb2N1cyk9XCJmb2N1c2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFttaW5dPVwibWluXCJcbiAgICAgICAgW21heF09XCJtYXhcIlxuICAgICAgICBbbWluTGVuZ3RoXT1cIm1pbkxlbmd0aFwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgW3N0ZXBdPVwic3RlcFwiIC8+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjbWFza2VkSW5wdXQ+XG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFJlZlxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQ2hhbmdlcygpXCJcbiAgICAgICAgKG5nTW9kZWxEZWJvdW5jZUNoYW5nZSk9XCJtb2RlbERlYm91bmNlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cImJsdXIuZW1pdCh2YWx1ZSk7IG9uVG91Y2hlZCgpXCJcbiAgICAgICAgKGZvY3VzKT1cImZvY3VzZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIl9kaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgIFttaW5MZW5ndGhdPVwibWluTGVuZ3RoXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgW3N1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICBbcHJlZml4XT1cInByZWZpeFwiXG4gICAgICAgIFtzdGVwXT1cInN0ZXBcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cbjxzcGFuICpuZ0lmPVwidmFsdWVcIiBjbGFzcz1cImNsZWFyLWljb25cIiAoY2xpY2spPVwib25DbGVhcigkZXZlbnQpXCI+PC9zcGFuPlxuPHNwYW4gKm5nSWY9XCJ0eXBlID09PSAnc2VhcmNoJ1wiIGNsYXNzPVwic2VhcmNoLWljb25cIiAoY2xpY2spPVwib25TZWFyY2hDbGlja2VkKClcIj48L3NwYW4+XG48bmctY29udGVudCBzZWxlY3Q9XCJbc3VmZml4SWNvbl1cIj48L25nLWNvbnRlbnQ+XG48YnV0dG9uICpuZ0lmPVwiX2J1dHRvbk9wdGlvbnMuc2hvdyB8fCAoX2J1dHRvbk9wdGlvbnMuc2hvd09uRm9jdXMgJiYgX2J1dHRvbk9wdGlvbnMuZm9jdXNTZXQpXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAge3sgX2J1dHRvbk9wdGlvbnMudGV4dCB9fVxuPC9idXR0b24+XG4iXX0=
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RyLWlucHV0L2RyLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1pbnB1dC9kci1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQXVCNUIsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixJQUNJLFFBQVEsQ0FBQyxLQUFLO1FBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUNJLGFBQWEsQ0FBQyxLQUFvQjtRQUNsQyxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUMzRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxQztTQUNKO1FBQ0QsSUFB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QXBELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFaEIsUUFBUTtzQkFBaEMsV0FBVzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ3J4anMnO1xuXG50eXBlIEJ1dHRvbk9wdGlvbnMgPSB7XG4gICAgc2hvdz86IGJvb2xlYW47XG4gICAgc2hvd09uRm9jdXM/OiBib29sZWFuO1xuICAgIGZvY3VzU2V0PzogYm9vbGVhbjtcbiAgICBjaGVja0ZvY3VzT3V0PzogKHRhcmdldDogYW55LCBlbGVtZW50OiBhbnkpID0+IGJvb2xlYW47XG4gICAgdGV4dD86IHN0cmluZztcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHItaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcklucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERySW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJ1dHRvbk9wdGlvbnModmFsdWU6IEJ1dHRvbk9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9idXR0b25PcHRpb25zID0geyAuLi50aGlzLl9idXR0b25PcHRpb25zLCAuLi52YWx1ZSB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbk9wdGlvbnM/LnNob3cgfHwgdGhpcy5fYnV0dG9uT3B0aW9ucz8uc2hvd09uRm9jdXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MucHVzaCgnd2l0aC1idXR0b24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fYnV0dG9uT3B0aW9ucy5zaG93T25Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5GdW5jID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbk9wdGlvbnMuZm9jdXNTZXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbExpc3RlbkZ1bmMgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUgIT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9idXR0b25PcHRpb25zLmNoZWNrRm9jdXNPdXQoZXZlbnQudGFyZ2V0LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25CdXR0b25DbGlja2VkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHR5cGUodmFsKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB2YWw7XG4gICAgICAgIGlmICh0aGlzLl90eXBlID09PSAnc2VhcmNoJykge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudENsYXNzLnB1c2goJ3NlYXJjaC10eXBlJyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSAnU2VhcmNoLi4uJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBwbGFjZWhvbGRlcih2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbDtcbiAgICB9XG4gICAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBjbGVhcmFibGUodmFsKSB7XG4gICAgICAgIHRoaXMuX2NsZWFyYWJsZSA9ICEhdmFsO1xuICAgICAgICBpZiAodGhpcy5fY2xlYXJhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MucHVzaCgnY2xlYXJhYmxlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MgPSB0aGlzLl9lbGVtZW50Q2xhc3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSAnY2xlYXJhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbjogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBtYXg6IG51bWJlciB8IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4bGVuZ3RoOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbmxlbmd0aDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwYXR0ZXJuOiBzdHJpbmcgfCBSZWdFeHA7XG5cbiAgICBASW5wdXQoKVxuICAgIHN0ZXA6IHN0cmluZyB8IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWFyY2gtdHlwZS1taW5pJylcbiAgICBzZWFyY2hNaW5pOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpXG4gICAgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoJ2ZvY3VzJylcbiAgICBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgbW9kZWxEZWJvdW5jZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHNlYXJjaEhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGNsZWFySGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgYnV0dG9uSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQElucHV0KCkgbWFzazogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1ZmZpeCA9ICcnO1xuICAgIEBJbnB1dCgpIHByZWZpeCA9ICcnO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGVsZW1lbnRDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudENsYXNzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICBpbm5lclZhbHVlID0gbnVsbDtcbiAgICBfZGlzYWJsZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgICBfZWxlbWVudENsYXNzOiBzdHJpbmdbXSA9IFtdO1xuICAgIF9idXR0b25PcHRpb25zOiBCdXR0b25PcHRpb25zID0ge1xuICAgICAgICBzaG93OiBmYWxzZSxcbiAgICAgICAgc2hvd09uRm9jdXM6IGZhbHNlLFxuICAgICAgICBmb2N1c1NldDogZmFsc2UsXG4gICAgICAgIGNoZWNrRm9jdXNPdXQ6ICh0YXJnZXQ6IGFueSwgZWxlbWVudDogYW55KSA9PiB0cnVlLFxuICAgICAgICB0ZXh0OiAnU2F2ZScsXG4gICAgfTtcbiAgICBsaXN0ZW5GdW5jOiAoLi4ucGFyYW1zKSA9PiBhbnk7XG4gICAgZ2xvYmFsTGlzdGVuRnVuYzogKC4uLnBhcmFtcykgPT4gYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRSZWYnKSBwcml2YXRlIHJlYWRvbmx5IGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBAQ29udGVudENoaWxkKCdwcmVmaXgnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJlZml4SWNvbjogRWxlbWVudFJlZjtcbiAgICBAQ29udGVudENoaWxkKCdzdWZmaXgnLCB7IHN0YXRpYzogZmFsc2UgfSkgc3VmZml4SWNvbjogRWxlbWVudFJlZjtcblxuICAgIEBIb3N0QmluZGluZygndGFiaW5kZXgnKSB0YWJpbmRleCA9IC0xO1xuICAgIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICAgIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHNldCh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MgPSB2YWwuc3BsaXQoJyAnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2YWx1ZSh2OiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAgICAgaWYgKHYgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy50eXBlID09PSAnbnVtYmVyJyA/ICt2IDogdjtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmlubmVyVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BsYWNlaG9sZGVyID0gJyc7XG4gICAgcHJpdmF0ZSBfdHlwZSA9ICdzdHJpbmcnO1xuICAgIHByaXZhdGUgX2NsZWFyYWJsZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcmVmaXhJY29uKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MucHVzaCgnd2l0aC1wcmVmaXgnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdWZmaXhJY29uKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MucHVzaCgnd2l0aC1zdWZmaXgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50Q2xhc3MucHVzaCgnZGlzYWJsZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRDbGFzcyA9IHRoaXMuX2VsZW1lbnRDbGFzcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09ICdkaXNhYmxlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25TZWFyY2hDbGlja2VkKCkge1xuICAgICAgICB0aGlzLnNlYXJjaEhhbmRsZXIuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbkNsaWNrZWQoJGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5idXR0b25IYW5kbGVyLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgdGhpcy5fYnV0dG9uT3B0aW9ucy5mb2N1c1NldCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuRnVuYykge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5GdW5jKCk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbExpc3RlbkZ1bmMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2xlYXIoJGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2xlYXJIYW5kbGVyLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJbcHJlZml4SWNvbl1cIj48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhbWFzazsgZWxzZSBtYXNrZWRJbnB1dFwiPlxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRSZWZcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUNoYW5nZXMoKVwiXG4gICAgICAgIChuZ01vZGVsRGVib3VuY2VDaGFuZ2UpPVwibW9kZWxEZWJvdW5jZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJibHVyLmVtaXQodmFsdWUpOyBvblRvdWNoZWQoKVwiXG4gICAgICAgIChmb2N1cyk9XCJmb2N1c2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFttaW5dPVwibWluXCJcbiAgICAgICAgW21heF09XCJtYXhcIlxuICAgICAgICBbbWlubGVuZ3RoXT1cIm1pbmxlbmd0aFwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgW3N0ZXBdPVwic3RlcFwiIC8+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjbWFza2VkSW5wdXQ+XG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFJlZlxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQ2hhbmdlcygpXCJcbiAgICAgICAgKG5nTW9kZWxEZWJvdW5jZUNoYW5nZSk9XCJtb2RlbERlYm91bmNlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cImJsdXIuZW1pdCh2YWx1ZSk7IG9uVG91Y2hlZCgpXCJcbiAgICAgICAgKGZvY3VzKT1cImZvY3VzZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIl9kaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgIFttaW5sZW5ndGhdPVwibWlubGVuZ3RoXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgW3N1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICBbcHJlZml4XT1cInByZWZpeFwiXG4gICAgICAgIFtzdGVwXT1cInN0ZXBcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cbjxzcGFuICpuZ0lmPVwidmFsdWVcIiBjbGFzcz1cImNsZWFyLWljb25cIiAoY2xpY2spPVwib25DbGVhcigkZXZlbnQpXCI+PC9zcGFuPlxuPHNwYW4gKm5nSWY9XCJ0eXBlID09PSAnc2VhcmNoJ1wiIGNsYXNzPVwic2VhcmNoLWljb25cIiAoY2xpY2spPVwib25TZWFyY2hDbGlja2VkKClcIj48L3NwYW4+XG48bmctY29udGVudCBzZWxlY3Q9XCJbc3VmZml4SWNvbl1cIj48L25nLWNvbnRlbnQ+XG48YnV0dG9uICpuZ0lmPVwiX2J1dHRvbk9wdGlvbnMuc2hvdyB8fCAoX2J1dHRvbk9wdGlvbnMuc2hvd09uRm9jdXMgJiYgX2J1dHRvbk9wdGlvbnMuZm9jdXNTZXQpXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAge3sgX2J1dHRvbk9wdGlvbnMudGV4dCB9fVxuPC9idXR0b24+XG4iXX0=
|