UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

169 lines 24.4 kB
import { Component } from '@angular/core'; import { RpcAlertSeverity } from '@microsoft/windows-admin-center-sdk/core/rpc/dialog/rpc-dialog-model'; import { ValidationAlertSeverity } from '../../form'; import { BaseDialogComponent } from '../base-dialog.component'; import { DialogService } from '../dialog.service'; import * as i0 from "@angular/core"; import * as i1 from "../dialog.service"; import * as i2 from "@angular/common"; import * as i3 from "@angular/forms"; import * as i4 from "../../form/form-field/checkbox/checkbox-form-field.component"; import * as i5 from "../../form/validation-alert/validation-alert.component"; import * as i6 from "../../form/form-field/form-field-accessor.directive"; import * as i7 from "../../form/form-field/form-field-validator.directive"; import * as i8 from "../dialog.component"; function ConfirmationDialogComponent_a_9_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "a", 11); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵpropertyInterpolate("href", ctx_r1.externalLink.url, i0.ɵɵsanitizeUrl); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate(ctx_r1.externalLink.title); } } function ConfirmationDialogComponent_div_10_Template(rf, ctx) { if (rf & 1) { const _r6 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 12)(1, "sme-form-field", 13); i0.ɵɵlistener("ngModelChange", function ConfirmationDialogComponent_div_10_Template_sme_form_field_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.checked = $event); }); i0.ɵɵelementEnd()(); } if (rf & 2) { const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵadvance(1); i0.ɵɵproperty("ngModel", ctx_r2.checked)("label", ctx_r2.checkboxText); } } function ConfirmationDialogComponent_div_11_Template(rf, ctx) { if (rf & 1) { const _r8 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 14)(1, "sme-form-field", 15); i0.ɵɵlistener("ngModelChange", function ConfirmationDialogComponent_div_11_Template_sme_form_field_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.doubleChecked = $event); }); i0.ɵɵelementEnd()(); } if (rf & 2) { const ctx_r3 = i0.ɵɵnextContext(); i0.ɵɵadvance(1); i0.ɵɵproperty("ngModel", ctx_r3.doubleChecked)("label", ctx_r3.doubleCheckText); } } function ConfirmationDialogComponent_sme_alert_12_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "sme-alert", 16); } if (rf & 2) { const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵproperty("alert", ctx_r4.alert); } } /** * The Confirmation Dialog Component * @deprecated since 02/20/18. Please use AppContextService.frame.showDialogConfirmation instead */ export class ConfirmationDialogComponent extends BaseDialogComponent { /** * Initializes a new instance of the ConfirmationDialogComponent class. */ constructor(dialogService) { super(dialogService); this.keepOpen = true; } /** * handler for when a close is requested * this override cancels the confirmation when requested to close * @param reason - reason for the close following DialogCloseReason */ closeRequested(reason) { this.onCancel(); } /** * Shows the dialog. * * @param options The options for the dialog. * @return The dialog result subject. */ show(options) { if (!options) { throw new Error('ConfirmationDialogComponent.show: Options are required to show the dialog.'); } const result = super.show(options); this.cancelButtonText = options.cancelButtonText; this.checkboxText = options.checkboxText; this.doubleCheckText = options.doubleCheckText; this.checked = false; this.doubleChecked = false; this.confirmButtonText = options.confirmButtonText; this.message = options.message; this.title = options.title; this.externalLink = options.externalLink; this.alert = options.alert ? { message: options.alert.message, severity: ValidationAlertSeverity[options.alert.severity.toString()] } : null; this.alertButtonStyle = options.alertButtonStyle; return result; } get isCritical() { return this.alertButtonStyle === RpcAlertSeverity.Error; } get isWarning() { return this.alertButtonStyle === RpcAlertSeverity.Warning; } /** * The method to call when the confirm button is clicked. */ onConfirm() { this.hide({ confirmed: true, checkboxResult: (this.checkboxText) ? this.checked : null }); } /** * The method to call when the cancel button is clicked. */ onCancel() { this.hide({ confirmed: false }); } } /** @nocollapse */ ConfirmationDialogComponent.ɵfac = function ConfirmationDialogComponent_Factory(t) { return new (t || ConfirmationDialogComponent)(i0.ɵɵdirectiveInject(i1.DialogService)); }; /** @nocollapse */ ConfirmationDialogComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ConfirmationDialogComponent, selectors: [["sme-confirmation-dialog"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 14, consts: [["dialogMode", "centered", 3, "clickBackdrop"], ["dialog", ""], ["id", "sme-dialog-title"], ["id", "sme-confirmation-dialog-form"], ["id", "sme-dialog-desc"], ["class", "sme-link", "target", "_blank", 3, "href", 4, "ngIf"], ["class", "sme-margin-top-sm", 4, "ngIf"], ["class", "sme-margin-top-xs", 4, "ngIf"], ["class", "sme-margin-vertical-sm", 3, "alert", 4, "ngIf"], ["type", "submit", "form", "sme-confirmation-dialog-form", "data-uta-id", "dialog-confirm-button", 1, "sme-button-primary", "sme-focus-zone", 3, "disabled", "click"], ["type", "button", "data-uta-id", "dialog-cancel-button", 1, "sme-focus-zone", 3, "click"], ["target", "_blank", 1, "sme-link", 3, "href"], [1, "sme-margin-top-sm"], ["type", "checkbox", "name", "checked", 3, "ngModel", "label", "ngModelChange"], [1, "sme-margin-top-xs"], ["type", "checkbox", "name", "doubleChecked", 3, "ngModel", "label", "ngModelChange"], [1, "sme-margin-vertical-sm", 3, "alert"]], template: function ConfirmationDialogComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "sme-dialog", 0, 1)(2, "sme-dialog-header")(3, "h2", 2); i0.ɵɵtext(4); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(5, "sme-dialog-content")(6, "form", 3)(7, "p", 4); i0.ɵɵtext(8); i0.ɵɵelementEnd(); i0.ɵɵtemplate(9, ConfirmationDialogComponent_a_9_Template, 2, 2, "a", 5); i0.ɵɵtemplate(10, ConfirmationDialogComponent_div_10_Template, 2, 2, "div", 6); i0.ɵɵtemplate(11, ConfirmationDialogComponent_div_11_Template, 2, 2, "div", 7); i0.ɵɵtemplate(12, ConfirmationDialogComponent_sme_alert_12_Template, 1, 1, "sme-alert", 8); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(13, "sme-dialog-footer")(14, "button", 9); i0.ɵɵlistener("click", function ConfirmationDialogComponent_Template_button_click_14_listener() { return ctx.onConfirm(); }); i0.ɵɵtext(15); i0.ɵɵelementEnd(); i0.ɵɵelementStart(16, "button", 10); i0.ɵɵlistener("click", function ConfirmationDialogComponent_Template_button_click_16_listener() { return ctx.onCancel(); }); i0.ɵɵtext(17); i0.ɵɵelementEnd()()(); } if (rf & 2) { i0.ɵɵproperty("clickBackdrop", false); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate(ctx.title); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate(ctx.message); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.externalLink); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.checkboxText); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.doubleCheckText); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.alert); i0.ɵɵadvance(2); i0.ɵɵclassProp("sme-button-critical", ctx.isCritical)("sme-button-warning", ctx.isWarning); i0.ɵɵproperty("disabled", ctx.doubleCheckText && !ctx.doubleChecked); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate(ctx.confirmButtonText); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate(ctx.cancelButtonText); } }, dependencies: [i2.NgIf, i3.ɵNgNoValidate, i3.NgControlStatus, i3.NgControlStatusGroup, i3.NgModel, i3.NgForm, i4.CheckboxFormFieldComponent, i5.ValidationAlertComponent, i6.FormFieldAccessorDirective, i7.FormFieldValidatorDirective, i8.DialogComponent, i8.DialogContentComponent, i8.DialogFooterComponent, i8.DialogHeaderComponent], encapsulation: 2 }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfirmationDialogComponent, [{ type: Component, args: [{ selector: 'sme-confirmation-dialog', template: "<sme-dialog #dialog dialogMode=\"centered\" [clickBackdrop]='false'>\r\n <sme-dialog-header>\r\n <h2 id=\"sme-dialog-title\">{{ title }}</h2>\r\n </sme-dialog-header>\r\n <sme-dialog-content>\r\n <form id=\"sme-confirmation-dialog-form\">\r\n <p id=\"sme-dialog-desc\">{{ message }}</p>\r\n <a *ngIf=\"externalLink\" class=\"sme-link\" href=\"{{externalLink.url}}\" target=\"_blank\">{{externalLink.title}}</a>\r\n <div class=\"sme-margin-top-sm\" *ngIf=\"checkboxText\">\r\n <sme-form-field type=\"checkbox\" [(ngModel)]=\"checked\" name=\"checked\" [label]=\"checkboxText\">\r\n </sme-form-field>\r\n </div>\r\n <div class=\"sme-margin-top-xs\" *ngIf=\"doubleCheckText\">\r\n <sme-form-field type=\"checkbox\" [(ngModel)]=\"doubleChecked\" name=\"doubleChecked\" [label]=\"doubleCheckText\">\r\n </sme-form-field>\r\n </div>\r\n <sme-alert *ngIf=\"alert\" class=\"sme-margin-vertical-sm\" [alert]=\"alert\"></sme-alert>\r\n </form>\r\n </sme-dialog-content>\r\n <sme-dialog-footer>\r\n <button type=\"submit\" form=\"sme-confirmation-dialog-form\" [class.sme-button-critical]=\"isCritical\"\r\n [class.sme-button-warning]=\"isWarning\" class=\"sme-button-primary sme-focus-zone\"\r\n [disabled]=\"doubleCheckText && !doubleChecked\" (click)=\"onConfirm()\" data-uta-id=\"dialog-confirm-button\">{{ confirmButtonText }}</button>\r\n <button class=\"sme-focus-zone\" type=\"button\" (click)=\"onCancel()\" data-uta-id=\"dialog-cancel-button\">{{ cancelButtonText }}</button>\r\n </sme-dialog-footer>\r\n</sme-dialog>\r\n" }] }], function () { return [{ type: i1.DialogService }]; }, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2RpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQVksZ0JBQWdCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUVsSCxPQUFPLEVBQW1CLHVCQUF1QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBK0IsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0lDQzVDLDZCQUFxRjtJQUFBLFlBQXNCO0lBQUEsaUJBQUk7OztJQUF0RSwyRUFBMkI7SUFBaUIsZUFBc0I7SUFBdEIsK0NBQXNCOzs7O0lBQzNHLCtCQUFvRCx5QkFBQTtJQUNsQixrUEFBcUI7SUFDckQsaUJBQWlCLEVBQUE7OztJQURlLGVBQXFCO0lBQXJCLHdDQUFxQiw4QkFBQTs7OztJQUd2RCwrQkFBdUQseUJBQUE7SUFDckIsd1BBQTJCO0lBQzNELGlCQUFpQixFQUFBOzs7SUFEZSxlQUEyQjtJQUEzQiw4Q0FBMkIsaUNBQUE7OztJQUc3RCxnQ0FBb0Y7OztJQUE1QixvQ0FBZTs7QUQrRDdFOzs7R0FHRztBQUtILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBd0U7SUFrQnJIOztPQUVHO0lBQ0gsWUFB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QUFXO1FBSVgsZUFBYTtRQUFiLGlDQUFhO1FBQ2pDLGVBQWtCO1FBQWxCLHVDQUFrQjtRQUNVLGVBQWtCO1FBQWxCLHVDQUFrQjtRQUlsQixlQUFxQjtRQUFyQiwwQ0FBcUI7UUFJekMsZUFBVztRQUFYLGdDQUFXO1FBSWlDLGVBQXdDO1FBQXhDLHFEQUF3QyxxQ0FBQTtRQUVoRyxvRUFBOEM7UUFBMkQsZUFBdUI7UUFBdkIsMkNBQXVCO1FBQzdCLGVBQXNCO1FBQXRCLDBDQUFzQjs7dUZEZ0VsSCwyQkFBMkI7Y0FKdkMsU0FBUzsyQkFDSSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUnBjQWxlcnQsIFJwY0FsZXJ0U2V2ZXJpdHkgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9kaWFsb2cvcnBjLWRpYWxvZy1tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkFsZXJ0LCBWYWxpZGF0aW9uQWxlcnRTZXZlcml0eSB9IGZyb20gJy4uLy4uL2Zvcm0nO1xyXG5pbXBvcnQgeyBCYXNlRGlhbG9nQ29tcG9uZW50LCBEaWFsb2dPcHRpb25zLCBEaWFsb2dSZXN1bHQgfSBmcm9tICcuLi9iYXNlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dDbG9zZVJlYXNvbiB9IGZyb20gJy4uL2RpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nTGluayB9IGZyb20gJy4uL21lc3NhZ2UtZGlhbG9nL21lc3NhZ2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogVGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cgb3B0aW9ucy5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybWF0aW9uRGlhbG9nT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGV4dCBmb3IgdGhlIGRpYWxvZyBjYW5jZWwgYnV0dG9uLlxyXG4gICAgICovXHJcbiAgICBjYW5jZWxCdXR0b25UZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGV4dCBmb3IgdGhlIGRpYWxvZyBjaGVja2JveC5cclxuICAgICAqL1xyXG4gICAgY2hlY2tib3hUZXh0Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRleHQgZm9yIHRoZSBkb3VibGVDaGVjayBjaGVja2JveFxyXG4gICAgICovXHJcbiAgICBkb3VibGVDaGVja1RleHQ/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGV4dCBmb3IgdGhlIGRpYWxvZyBjb25maXJtIGJ1dHRvbi5cclxuICAgICAqL1xyXG4gICAgY29uZmlybUJ1dHRvblRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXNzYWdlIG9mIHRoZSBkaWFsb2cgYm9keS5cclxuICAgICAqL1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSBkaWFsb2cuXHJcbiAgICAgKi9cclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAoT3B0aW9uYWwpIFRoZSBsaW5rIHRvIG9wZW4gcmVmZXJlbmNlZCBpbmZvcm1hdGlvbiBvbiBuZXcgdGFiLlxyXG4gICAgICovXHJcbiAgICBleHRlcm5hbExpbms/OiBNZXNzYWdlRGlhbG9nTGluaztcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSBkaWFsb2cgaXMgb3BlbmVkIGZyb20gUnBjXHJcbiAgICAgKi9cclxuICAgIGlzRnJvbVJwYz86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgYWxlcnQgb2YgdGhlIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgYWxlcnQ/OiBScGNBbGVydDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBhbiBScGNBbGVydFNldmVyaXR5IHZhbHVlIHRvIHNob3cgYSBjcml0aWNhbCBvciB3YXJuaW5nIGJ1dHRvbiBjb2xvci5cclxuICAgICAqL1xyXG4gICAgYWxlcnRCdXR0b25TdHlsZT86IFJwY0FsZXJ0U2V2ZXJpdHk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgY29uZmlybWF0aW9uIGRpYWxvZyByZXN1bHQuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1hdGlvbkRpYWxvZ1Jlc3VsdCBleHRlbmRzIERpYWxvZ1Jlc3VsdCB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZyBjb25maXJtYXRpb24uXHJcbiAgICAgKi9cclxuICAgIGNvbmZpcm1lZDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZyBjaGVja2JveC5cclxuICAgICAqL1xyXG4gICAgY2hlY2tib3hSZXN1bHQ/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIENvbmZpcm1hdGlvbiBEaWFsb2cgQ29tcG9uZW50XHJcbiAqIEBkZXByZWNhdGVkIHNpbmNlIDAyLzIwLzE4LiBQbGVhc2UgdXNlIEFwcENvbnRleHRTZXJ2aWNlLmZyYW1lLnNob3dEaWFsb2dDb25maXJtYXRpb24gaW5zdGVhZFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1jb25maXJtYXRpb24tZGlhbG9nJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQmFzZURpYWxvZ0NvbXBvbmVudDxDb25maXJtYXRpb25EaWFsb2dPcHRpb25zLCBDb25maXJtYXRpb25EaWFsb2dSZXN1bHQ+IHtcclxuXHJcbiAgICBwdWJsaWMgYWxlcnRCdXR0b25TdHlsZTogUnBjQWxlcnRTZXZlcml0eTtcclxuICAgIHB1YmxpYyBjYW5jZWxCdXR0b25UZXh0OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgY2hlY2tib3hUZXh0OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZG91YmxlQ2hlY2tUZXh0OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgY2hlY2tlZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBjb25maXJtQnV0dG9uVGV4dDogc3RyaW5nO1xyXG4gICAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xyXG4gICAgcHVibGljIGV4dGVybmFsTGluazogTWVzc2FnZURpYWxvZ0xpbms7XHJcbiAgICBwdWJsaWMgYWxlcnQ6IFZhbGlkYXRpb25BbGVydDtcclxuXHJcbiAgICAvKipcclxuICAgICAqICBmYWxzZSB2YWx1ZSBkaXNhYmxlcyBjb25maXJtIGJ1dHRvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZG91YmxlQ2hlY2tlZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgY2xhc3MuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihkaWFsb2dTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLmtlZXBPcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhhbmRsZXIgZm9yIHdoZW4gYSBjbG9zZSBpcyByZXF1ZXN0ZWRcclxuICAgICAqIHRoaXMgb3ZlcnJpZGUgY2FuY2VscyB0aGUgY29uZmlybWF0aW9uIHdoZW4gcmVxdWVzdGVkIHRvIGNsb3NlXHJcbiAgICAgKiBAcGFyYW0gcmVhc29uIC0gcmVhc29uIGZvciB0aGUgY2xvc2UgZm9sbG93aW5nIERpYWxvZ0Nsb3NlUmVhc29uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbG9zZVJlcXVlc3RlZChyZWFzb246IERpYWxvZ0Nsb3NlUmVhc29uKSB7XHJcbiAgICAgICAgdGhpcy5vbkNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvd3MgdGhlIGRpYWxvZy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIGRpYWxvZy5cclxuICAgICAqIEByZXR1cm4gVGhlIGRpYWxvZyByZXN1bHQgc3ViamVjdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNob3cob3B0aW9uczogQ29uZmlybWF0aW9uRGlhbG9nT3B0aW9ucyk6IFN1YmplY3Q8Q29uZmlybWF0aW9uRGlhbG9nUmVzdWx0PiB7XHJcbiAgICAgICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LnNob3c6IE9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIHNob3cgdGhlIGRpYWxvZy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLnNob3cob3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5jYW5jZWxCdXR0b25UZXh0ID0gb3B0aW9ucy5jYW5jZWxCdXR0b25UZXh0O1xyXG4gICAgICAgIHRoaXMuY2hlY2tib3hUZXh0ID0gb3B0aW9ucy5jaGVja2JveFRleHQ7XHJcbiAgICAgICAgdGhpcy5kb3VibGVDaGVja1RleHQgPSBvcHRpb25zLmRvdWJsZUNoZWNrVGV4dDtcclxuICAgICAgICB0aGlzLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRvdWJsZUNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbmZpcm1CdXR0b25UZXh0ID0gb3B0aW9ucy5jb25maXJtQnV0dG9uVGV4dDtcclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy50aXRsZSA9IG9wdGlvbnMudGl0bGU7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbExpbmsgPSBvcHRpb25zLmV4dGVybmFsTGluaztcclxuICAgICAgICB0aGlzLmFsZXJ0ID0gb3B0aW9ucy5hbGVydCA/IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucy5hbGVydC5tZXNzYWdlLFxyXG4gICAgICAgICAgICBzZXZlcml0eTogVmFsaWRhdGlvbkFsZXJ0U2V2ZXJpdHlbb3B0aW9ucy5hbGVydC5zZXZlcml0eS50b1N0cmluZygpXVxyXG4gICAgICAgIH0gOiBudWxsO1xyXG4gICAgICAgIHRoaXMuYWxlcnRCdXR0b25TdHlsZSA9IG9wdGlvbnMuYWxlcnRCdXR0b25TdHlsZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzQ3JpdGljYWwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnRCdXR0b25TdHlsZSA9PT0gUnBjQWxlcnRTZXZlcml0eS5FcnJvcjtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgaXNXYXJuaW5nKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0QnV0dG9uU3R5bGUgPT09IFJwY0FsZXJ0U2V2ZXJpdHkuV2FybmluZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgdG8gY2FsbCB3aGVuIHRoZSBjb25maXJtIGJ1dHRvbiBpcyBjbGlja2VkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25Db25maXJtKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGlkZSh7XHJcbiAgICAgICAgICAgIGNvbmZpcm1lZDogdHJ1ZSxcclxuICAgICAgICAgICAgY2hlY2tib3hSZXN1bHQ6ICh0aGlzLmNoZWNrYm94VGV4dCkgPyB0aGlzLmNoZWNrZWQgOiBudWxsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWV0aG9kIHRvIGNhbGwgd2hlbiB0aGUgY2FuY2VsIGJ1dHRvbiBpcyBjbGlja2VkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oaWRlKHtcclxuICAgICAgICAgICAgY29uZmlybWVkOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxzbWUtZGlhbG9nICNkaWFsb2cgZGlhbG9nTW9kZT1cImNlbnRlcmVkXCIgW2NsaWNrQmFja2Ryb3BdPSdmYWxzZSc+XHJcbiAgPHNtZS1kaWFsb2ctaGVhZGVyPlxyXG4gICAgPGgyIGlkPVwic21lLWRpYWxvZy10aXRsZVwiPnt7IHRpdGxlIH19PC9oMj5cclxuICA8L3NtZS1kaWFsb2ctaGVhZGVyPlxyXG4gIDxzbWUtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8Zm9ybSBpZD1cInNtZS1jb25maXJtYXRpb24tZGlhbG9nLWZvcm1cIj5cclxuICAgICAgPHAgaWQ9XCJzbWUtZGlhbG9nLWRlc2NcIj57eyBtZXNzYWdlIH19PC9wPlxyXG4gICAgICA8YSAqbmdJZj1cImV4dGVybmFsTGlua1wiIGNsYXNzPVwic21lLWxpbmtcIiBocmVmPVwie3tleHRlcm5hbExpbmsudXJsfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj57e2V4dGVybmFsTGluay50aXRsZX19PC9hPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21lLW1hcmdpbi10b3Atc21cIiAqbmdJZj1cImNoZWNrYm94VGV4dFwiPlxyXG4gICAgICAgIDxzbWUtZm9ybS1maWVsZCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImNoZWNrZWRcIiBuYW1lPVwiY2hlY2tlZFwiIFtsYWJlbF09XCJjaGVja2JveFRleHRcIj5cclxuICAgICAgICA8L3NtZS1mb3JtLWZpZWxkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtZS1tYXJnaW4tdG9wLXhzXCIgKm5nSWY9XCJkb3VibGVDaGVja1RleHRcIj5cclxuICAgICAgICA8c21lLWZvcm0tZmllbGQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJkb3VibGVDaGVja2VkXCIgbmFtZT1cImRvdWJsZUNoZWNrZWRcIiBbbGFiZWxdPVwiZG91YmxlQ2hlY2tUZXh0XCI+XHJcbiAgICAgICAgPC9zbWUtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxzbWUtYWxlcnQgKm5nSWY9XCJhbGVydFwiIGNsYXNzPVwic21lLW1hcmdpbi12ZXJ0aWNhbC1zbVwiIFthbGVydF09XCJhbGVydFwiPjwvc21lLWFsZXJ0PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvc21lLWRpYWxvZy1jb250ZW50PlxyXG4gIDxzbWUtZGlhbG9nLWZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGZvcm09XCJzbWUtY29uZmlybWF0aW9uLWRpYWxvZy1mb3JtXCIgW2NsYXNzLnNtZS1idXR0b24tY3JpdGljYWxdPVwiaXNDcml0aWNhbFwiXHJcbiAgICAgIFtjbGFzcy5zbWUtYnV0dG9uLXdhcm5pbmddPVwiaXNXYXJuaW5nXCIgY2xhc3M9XCJzbWUtYnV0dG9uLXByaW1hcnkgc21lLWZvY3VzLXpvbmVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZG91YmxlQ2hlY2tUZXh0ICYmICFkb3VibGVDaGVja2VkXCIgKGNsaWNrKT1cIm9uQ29uZmlybSgpXCIgZGF0YS11dGEtaWQ9XCJkaWFsb2ctY29uZmlybS1idXR0b25cIj57eyBjb25maXJtQnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInNtZS1mb2N1cy16b25lXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkNhbmNlbCgpXCIgZGF0YS11dGEtaWQ9XCJkaWFsb2ctY2FuY2VsLWJ1dHRvblwiPnt7IGNhbmNlbEJ1dHRvblRleHQgfX08L2J1dHRvbj5cclxuICA8L3NtZS1kaWFsb2ctZm9vdGVyPlxyXG48L3NtZS1kaWFsb2c+XHJcbiJdfQ==