alert.component.js 76.8 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565
/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
 */
import * as tslib_1 from "tslib";
import { Component, ElementRef, ViewChild, EventEmitter, Output, NgModule } from '@angular/core';
import { Router } from '@angular/router';
import { DxDataGridComponent, DxDataGridModule } from 'devextreme-angular';
import { FormsModule } from '@angular/forms';
export class CreateAlertComponent {
    /**
     * @param {?} router
     */
    constructor(router) {
        // , private request: Request, private common: Common
        this.router = router;
        this.percent = 0;
        this.buttonText = '';
        this.onCloseModalError = new EventEmitter();
        this.onOkDelete = new EventEmitter();
        this.onOkConfirm = new EventEmitter();
        this.onCancelDelete = new EventEmitter();
        this.onCancelConfirm = new EventEmitter();
        this.onOkDeleteAttachment = new EventEmitter();
        this.onCancelDeleteAttachment = new EventEmitter();
        this.onClickBack = new EventEmitter();
        this.onCancelViewWarning = new EventEmitter();
        this.onCancelUploadValid = new EventEmitter();
        this.onDataErrorExcel = new EventEmitter();
        this.onClickExport = new EventEmitter();
        this.onClickDeleteExport = new EventEmitter();
        this.onOkClone = new EventEmitter();
        this.onOkReport = new EventEmitter();
        this.onCancelClone = new EventEmitter();
        this.onOkDiagramCancel = new EventEmitter();
        this.onCancelDiagramCancel = new EventEmitter();
        this.onCancelAddVOutlook = new EventEmitter();
        this.onOkAddVOutlook = new EventEmitter();
        this.onCancelAddMVara = new EventEmitter();
        this.onOkAddMVara = new EventEmitter();
        this.dataText = {
            userTitle: '',
            userMessage: ''
        };
    }
    /**
     * @return {?}
     */
    ngOnInit() { }
    /**
     * @return {?}
     */
    ngAfterViewInit() {
        return tslib_1.__awaiter(this, void 0, void 0, function* () {
            try {
                $(this.modalSuccess.nativeElement).on('hidden.bs.modal', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
                    // put your default event here
                    this.onClickBack.emit();
                }));
                $(this.modalEditSuccess.nativeElement).on('hidden.bs.modal', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
                    // put your default event here
                    this.onClickBack.emit();
                }));
                $(this.modalError.nativeElement).on('hidden.bs.modal', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
                    // put your default event here
                    // await this.router.navigate([this.urlBack]);
                    this.onCloseModalError.emit();
                }));
                // $(this.modalViewWarning.nativeElement).on('hidden.bs.modal', async () => {
                //   // put your default event here
                //   // await this.router.navigate([this.urlBack]);
                //   this.onCancelViewWarning.emit();
                // });
                // ปรับ html <body> ให้กลับเป็นปกติเมื่อเปิด-ปิด modal
                // document.body.style.paddingRight = '0px';
            }
            catch (e) {
                console.log(e);
            }
        });
    }
    /**
     * @param {?} data
     * @return {?}
     */
    openModal(data) {
        // console.log(this.elementRef.nativeElement.querySelector('#myModalDelete'));
        console.log(data);
        // this.userMessage = userMessage;
        // let data =
        // if(){
        //
        // }
        // ถ้าเป็น myModalExportLoading จะโยน data มาต่างกัน
        // if (data.modalId === 'myModalExportLoading') {
        //   this.dataExport = data.userMessage ? data.userMessage.dataExport : [];
        //   this.buttonText = data.userMessage ? data.userMessage.buttonText : 'PDF';
        // } else {
        this.dataText = {
            userTitle: data.userTitle,
            userMessage: data.userMessage
        };
        // }
        if (data.modalId === 'myModalDelete') {
            // $(this.modalDelete.nativeElement).modal('show');
            $(this.modalDelete.nativeElement).modal({
                backdrop: 'static'
            });
        }
        else if (data.modalId === 'myModalConfirm') {
            $(this.modalConfirm.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalDeleteAttachment') {
            $(this.modalDeleteAttachment.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalDeleteWarning') {
            $(this.modalDeleteWarning.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalSuccessDelete') {
            $(this.modalSuccessDelete.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalSuccess') {
            $(this.modalSuccess.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalSuccessWarning') {
            $(this.modalSuccessWarning.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalEditSuccess') {
            $(this.modalEditSuccess.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalWarning') {
            $(this.modalWarning.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalReportWarning') {
            $(this.myModalReportWarning.nativeElement).modal('show');
            // } else if (data.modalId === 'myModalViewWarning') {
            //   $(this.modalViewWarning.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalUploadImageWarning') {
            $(this.modalUploadImageWarning.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalUploadImageTypeWarning') {
            $(this.modalUploadImageTypeWarning.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalWarningNoTextSearch') {
            $(this.modalWarningNoTextSearch.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalErrorDataExisted') {
            $(this.modalErrorDataExisted.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalErrorDeleteButHaveMenuGroup') {
            $(this.modalErrorDeleteButHaveMenuGroup.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalAddVOutlook') {
            $(this.modalAddVOutlook.nativeElement).modal('show');
        }
        else if (data.modalId === 'myModalAddMVara') {
            $(this.modalAddMVara.nativeElement).modal('show');
        }
        else if (data.modalId === 'modalError') {
            $(this.modalError.nativeElement).modal('show');
        }
        else {
            $(this.modalError.nativeElement).modal('show');
        }
        // ปรับ html <body> ให้กลับเป็นปกติเมื่อเปิด-ปิด modal
        document.body.style.paddingRight = '0px';
    }
    /**
     * @param {?} modalId
     * @return {?}
     */
    closeModal(modalId) {
        if (modalId === 'myModalDelete') {
            $(this.modalDelete.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalConfirm') {
            $(this.modalConfirm.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalDeleteAttachment') {
            $(this.modalDeleteAttachment.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalDeleteWarning') {
            $(this.modalDeleteWarning.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalAddVOutlook') {
            $(this.modalAddVOutlook.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalAddMVara') {
            $(this.modalAddMVara.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalSuccessDelete') {
            $(this.modalSuccessDelete.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalSuccess') {
            $(this.modalSuccess.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalSuccessWarning') {
            $(this.modalSuccessWarning.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalEditSuccess') {
            $(this.modalEditSuccess.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalWarning') {
            $(this.modalWarning.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalReportWarning') {
            $(this.myModalReportWarning.nativeElement).modal('hide');
            // } else if (modalId === 'myModalViewWarning') {
            //   $(this.modalViewWarning.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalUploadImageWarning') {
            $(this.modalUploadImageWarning.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalUploadImageTypeWarning') {
            $(this.modalUploadImageTypeWarning.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalWarningNoTextSearch') {
            $(this.modalWarningNoTextSearch.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalErrorDataExisted') {
            $(this.modalErrorDataExisted.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalErrorDeleteButHaveMenuGroup') {
            $(this.modalErrorDeleteButHaveMenuGroup.nativeElement).modal('hide');
        }
        else if (modalId === 'myModalAddVOutlook') {
            $(this.modalAddVOutlook.nativeElement).modal('hide');
        }
        else {
            console.error('closeModal Error');
        }
    }
    /**
     * @param {?} data
     * @return {?}
     */
    showStringValidDataExcel(data) {
        /** @type {?} */
        let text = '';
        if (data.data && data.data.itemOjb && data.data.itemOjb.failDescription) {
            for (let j = 0; j < data.data.itemOjb.failDescription.length; j++) {
                text += '[' + data.data.itemOjb.failDescription[j].columeName + ']' + ':"' + data.data.itemOjb.failDescription[j].text + '", <br/>';
            }
        }
        return text;
    }
    /**
     * @param {?} failDescription
     * @return {?}
     */
    showStringErrorDataExcel(failDescription) {
        /** @type {?} */
        let text = '';
        for (let j = 0; j < failDescription.length; j++) {
            text += '[' + failDescription[j].columeName + ']' + ':"' + failDescription[j].text + '", <br/>';
        }
        return text;
    }
    /**
     * @return {?}
     */
    closeProgressbar() {
        $(this.modalProgressBarWarning.nativeElement).modal('hide');
    }
    /**
     * @return {?}
     */
    onOkDeleteModal() {
        $(this.modalDelete.nativeElement).modal('hide');
        this.onOkDelete.emit();
    }
    /**
     * @return {?}
     */
    onOkConfirmModal() {
        $(this.modalConfirm.nativeElement).modal('hide');
        this.onOkConfirm.emit();
    }
    /**
     * @return {?}
     */
    onOkDeleteAttachmentModal() {
        $(this.modalDeleteAttachment.nativeElement).modal('hide');
        this.onOkDeleteAttachment.emit();
    }
    /**
     * @return {?}
     */
    onOkReportModal() {
        $(this.myModalReportWarning.nativeElement).modal('hide');
        this.onOkReport.emit();
    }
    /**
     * @return {?}
     */
    onCancelDeleteModal() {
        this.onCancelDelete.emit();
    }
    /**
     * @return {?}
     */
    onCancelConfirmModal() {
        this.onCancelConfirm.emit();
    }
    /**
     * @return {?}
     */
    onCancelDeleteAttachmentModal() {
        this.onCancelDeleteAttachment.emit();
    }
    /**
     * @return {?}
     */
    onClickBackModal() {
        this.onClickBack.emit();
    }
    /**
     * @return {?}
     */
    onCancelViewWarningModal() {
        console.log('hjh');
        this.onCancelViewWarning.emit();
    }
    /**
     * @return {?}
     */
    onCancelUploadValidModal() {
        this.onCancelUploadValid.emit();
    }
    /**
     * @return {?}
     */
    onDataErrorExcelModal() {
        this.onDataErrorExcel.emit();
    }
    /**
     * @return {?}
     */
    onCloseModalErrorModal() {
        this.onCloseModalError.emit();
    }
    /**
     * @return {?}
     */
    onCancelCloneModal() {
        this.onCancelClone.emit();
    }
    /**
     * @return {?}
     */
    onCancelAddVOutlookModal() {
        $(this.modalAddVOutlook.nativeElement).modal('hide');
        this.onCancelAddVOutlook.emit();
    }
    /**
     * @return {?}
     */
    onOkAddVOutlookModal() {
        $(this.modalAddVOutlook.nativeElement).modal('hide');
        this.onOkAddVOutlook.emit();
    }
    /**
     * @return {?}
     */
    onCancelAddMVaraModal() {
        $(this.modalAddMVara.nativeElement).modal('hide');
        this.onCancelAddMVara.emit();
    }
    /**
     * @return {?}
     */
    onOkAddMVaraModal() {
        $(this.modalAddMVara.nativeElement).modal('hide');
        this.onOkAddMVara.emit();
    }
    /**
     * @return {?}
     */
    onCancelDiagramCancelModal() {
        this.onCancelAddVOutlook.emit();
    }
}
CreateAlertComponent.decorators = [
    { type: Component, args: [{
                selector: 'app-alert',
                providers: [],
                template: "<!-- POPUP Confirm DELETE -->\n<style>\n  .modal {\n    position: fixed;\n    top: 0;\n    left: 0;\n    display: none;\n    width: 100%;\n    height: 100%;\n    overflow: hidden;\n    outline: 0;\n  }\n\n  .modal.in {\n    display: block;\n  }\n\n  .modal-dialog {\n    position: relative;\n    width: auto;\n    margin: .5rem;\n    pointer-events: none;\n  }\n  @media (min-width: 576px) {\n    .modal-dialog {\n      width: 450px;\n      margin: 1.75rem auto !important;\n    }\n  }\n\n  .modal-dialog-custom {\n    display: flex;\n    align-content: center;\n    min-height: calc(100% - 1rem);\n  }\n  @media (min-width: 576px) {\n    .modal-dialog-custom {\n      min-height: calc(100% - 3.5rem);\n    }\n  }\n  .modal-dialog-scrollable {\n    display: flex;\n    max-height: calc(100% - 1rem);\n  }\n  .modal-dialog-custom.modal-dialog-scrollable {\n    -ms-flex-direction: column;\n    flex-direction: column;\n    -ms-flex-pack: center;\n    justify-content: center;\n    height: 100%;\n  }\n  @media (min-width: 576px) {\n    .modal-dialog-scrollable {\n      max-height: calc(100% - 3.5rem);\n    }\n  }\n  .modal-dialog-scrollable .modal-content {\n    max-height: calc(100vh - 1rem);\n    overflow: hidden;\n  }\n  @media (min-width: 576px) {\n    .modal-dialog-scrollable .modal-content {\n      max-height: calc(100vh - 3.5rem);\n    }\n  }\n  .modal-dialog-custom.modal-dialog-scrollable .modal-content {\n    max-height: none;\n  }\n\n  .modal-content {\n    position: relative;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    width: 100%;\n    pointer-events: auto;\n    background-color: #fff;\n    background-clip: padding-box;\n    border: 1px solid rgba(0,0,0,.2);\n    border-radius: .3rem;\n    outline: 0;\n  }\n</style>\n<div #myModalDelete class=\"modal inmodal\" id=\"myModalDelete\" tabindex=\"-1\" role=\"dialog\"  aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgyellow\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a  id=\"btnCloseDelete\" name=\"btnCloseDelete\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;visibility: hidden;\" ><i class=\"fa fa-times fontyellow\"></i>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/warning.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontyellow\">\u0E04\u0E38\u0E13\u0E01\u0E33\u0E25\u0E31\u0E07\u0E25\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25</h4>\n        <p>\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E17\u0E33\u0E01\u0E32\u0E23\u0E25\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E19\u0E35\u0E49</p>\n        <br>\n        <div class=\"row\">\n          <button id=\"btnConfirmCancel\" name=\"btnConfirmCancel\" type=\"button\" class=\"btn btn-default font-btn width-btn-small\"\n                  data-dismiss=\"modal\" (click)=\"onCancelDeleteModal()\">\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01</button>\n          <!--<button type=\"button\" class=\"btn btn-danger m-l-xs\" data-toggle=\"modal\" data-target=\"#myModal7\">Yes,delete it!</button>-->\n          <a id=\"btnConfirmOk\" name=\"btnConfirmOk\" style=\"margin-left:3px;\" class=\"btn btn-danger font-btn width-btn-small\"\n             data-toggle=\"modal\" data-target=\"#myModal99\" data-dismiss=\"model\"\n             (click)=\"onOkDeleteModal()\">\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E01\u0E32\u0E23\u0E25\u0E1A\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<!-- POPUP Confirm  -->\n<div #myModalConfirm class=\"modal inmodal\" id=\"myModalConfirm\" tabindex=\"-1\" role=\"dialog\"  aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgyellow\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a  id=\"btnCloseConfirm\" name=\"btnCloseConfirm\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;visibility: hidden;\" ><i class=\"fa fa-times fontyellow\"></i>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/warning.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontyellow\">{{dataText.userTitle}}</h4>\n        <p>{{dataText.userMessage}}</p>\n        <br>\n        <div class=\"row\">\n          <button id=\"btnConfirmCancel\" name=\"btnConfirmCancel\" type=\"button\" class=\"btn btn-default font-btn width-btn-small\"\n                  data-dismiss=\"modal\" (click)=\"onCancelConfirmModal()\">\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01</button>\n          <a id=\"btnConfirmOk\" name=\"btnConfirmOk\" style=\"margin-left:3px;\" class=\"btn btn-danger font-btn width-btn-small\"\n             data-toggle=\"modal\" data-target=\"#myModal99\" data-dismiss=\"model\"\n             (click)=\"onOkConfirmModal()\">\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!-- POPUP Confirm DELETE Attachment-->\n<div #myModalDeleteAttachment class=\"modal inmodal\" id=\"myModalDeleteAttachment\" tabindex=\"-1\" role=\"dialog\"  aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgyellow\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a  id=\"btnCloseDeleteAttachment\" name=\"btnCloseDeleteAttachment\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;visibility: hidden;\" ><i class=\"fa fa-times fontyellow\"></i>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/warning.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontyellow\">\u0E04\u0E38\u0E13\u0E01\u0E33\u0E25\u0E31\u0E07\u0E25\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25</h4>\n        <p>\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E17\u0E33\u0E01\u0E32\u0E23\u0E25\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E19\u0E35\u0E49</p>\n        <br>\n        <div class=\"row\">\n          <button id=\"btnConfirmCancel\" name=\"btnConfirmCancel\" type=\"button\" class=\"btn btn-default font-btn width-btn-small\"\n                  data-dismiss=\"modal\" (click)=\"onCancelDeleteAttachmentModal()\">\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01</button>\n          <!--<button type=\"button\" class=\"btn btn-danger m-l-xs\" data-toggle=\"modal\" data-target=\"#myModal7\">Yes,delete it!</button>-->\n          <a id=\"btnConfirmOk\" name=\"btnConfirmOk\" style=\"margin-left:3px;\" class=\"btn btn-danger font-btn width-btn-small\"\n             data-toggle=\"modal\" data-target=\"#myModal99\" data-dismiss=\"model\"\n             (click)=\"onOkDeleteAttachmentModal()\">\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E01\u0E32\u0E23\u0E25\u0E1A\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!-- POPUP Add vOutlook -->\n<div #myModalAddVOutlook class=\"modal inmodal\" id=\"myModalAddVOutlook\" tabindex=\"-1\" role=\"dialog\"  aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgyellow\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a  id=\"btnCloseAddVOutlook\" name=\"btnCloseAddVOutlook\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;visibility: hidden;\" ><i class=\"fa fa-times fontyellow\"></i>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/warning.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontyellow\">\u0E04\u0E38\u0E13\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2A\u0E48\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E40\u0E02\u0E49\u0E32\u0E23\u0E30\u0E1A\u0E1A\u0E25\u0E07\u0E17\u0E30\u0E40\u0E1A\u0E35\u0E22\u0E19\u0E1C\u0E39\u0E49\u0E0A\u0E35\u0E49\u0E41\u0E08\u0E07</h4>\n        <p>\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E17\u0E33\u0E01\u0E32\u0E23\u0E2A\u0E48\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25</p>\n        <br>\n        <div class=\"row\">\n          <button id=\"btnCancelAddVOutlook\" name=\"btnCancelAddVOutlook\" type=\"button\" class=\"btn btn-default font-btn width-btn-small\"\n                  data-dismiss=\"modal\" (click)=\"onCancelAddVOutlookModal()\">\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01</button>\n          <!--<button type=\"button\" class=\"btn btn-danger m-l-xs\" data-toggle=\"modal\" data-target=\"#myModal7\">Yes,delete it!</button>-->\n          <a id=\"btnConfirmAddVOutlook\" name=\"btnConfirmAddVOutlook\" style=\"margin-left:3px;\" class=\"btn btn-danger font-btn width-btn-small\"\n             data-toggle=\"modal\" data-target=\"#myModal99\" data-dismiss=\"model\"\n             (click)=\"onOkAddVOutlookModal()\">\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E01\u0E32\u0E23\u0E2A\u0E48\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<!-- POPUP Add MVara -->\n<div #myModalAddMVara class=\"modal inmodal\" id=\"myModalAddMVara\" tabindex=\"-1\" role=\"dialog\"  aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgyellow\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a  id=\"btnCloseAddMVara\" name=\"btnCloseAddMVara\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;visibility: hidden;\" ><i class=\"fa fa-times fontyellow\"></i>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/warning.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontyellow\">\u0E04\u0E38\u0E13\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2A\u0E48\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E40\u0E02\u0E49\u0E32\u0E23\u0E30\u0E1A\u0E1A M-Vara</h4>\n        <p>\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E17\u0E33\u0E01\u0E32\u0E23\u0E2A\u0E48\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25</p>\n        <br>\n        <div class=\"row\">\n          <button id=\"btnCancelAddMVara\" name=\"btnCancelAddMVara\" type=\"button\" class=\"btn btn-default font-btn width-btn-small\"\n                  data-dismiss=\"modal\" (click)=\"onCancelAddMVaraModal()\">\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01</button>\n          <!--<button type=\"button\" class=\"btn btn-danger m-l-xs\" data-toggle=\"modal\" data-target=\"#myModal7\">Yes,delete it!</button>-->\n          <a id=\"btnConfirmAddMVara\" name=\"btnConfirmAddMVara\" style=\"margin-left:3px;\" class=\"btn btn-danger font-btn width-btn-small\"\n             data-toggle=\"modal\" data-target=\"#myModal99\" data-dismiss=\"model\"\n             (click)=\"onOkAddMVaraModal()\">\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E01\u0E32\u0E23\u0E2A\u0E48\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!-- POPUP Success DELETE -->\n<div #myModalSuccessDelete class=\"modal inmodal\" id=\"myModalSuccessDelete\" tabindex=\"-1\" role=\"dialog\"  aria-hidden=\"true\"\n     style=\"margin-left:-17px;\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bggreen\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnSuccessClose\" name=\"btnSuccessClose\" class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\" ><font style=\"color:#ffffff;\"><i class=\"fa flaticon-cross-16px\"></i></font>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/success.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontgreen\">\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08</h4>\n        <p>\u0E25\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E40\u0E23\u0E35\u0E22\u0E1A\u0E23\u0E49\u0E2D\u0E22</p>\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!--delete Warning-->\n<div #myModalDeleteWarning class=\"modal inmodal\" id=\"myModalDeleteWarning\" tabindex=\"-1\" role=\"dialog\"     aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgyellow\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnCloseDeleteWarning\" name=\"btnCloseDeleteWarning\" class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\" ><i class=\"fa btn-em-btn-close fa-close-em-white\"></i>\n            </a>\n          </div>\n          <div class=\"col-sm-4\"></div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/warning.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontyellow\">\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19</h4>\n        <p>\u0E25\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08</p>\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!--Create-->\n<div #myModalSuccess class=\"modal inmodal\" id=\"myModalSuccess\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bggreen\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnSuccessClose\" name=\"btnSuccessClose\" class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\" ><font style=\"color:#ffffff;\"><i class=\"fa flaticon-cross-16px\"></i></font>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/success.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontgreen\">\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08</h4>\n        <p>{{dataText.userMessage}}</p>\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!--edit-->\n<div #myModalEditSuccess class=\"modal inmodal\" id=\"myModalEditSuccess\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bggreen\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnClose\" name=\"btnClose\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\" ><font style=\"color:#ffffff;\"><i class=\"fa flaticon-cross-16px\"></i></font>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/success.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontgreen\">\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08</h4>\n        <p>\u0E41\u0E01\u0E49\u0E44\u0E02\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08</p>\n        <!--<h4 class=\"modal-title fontgreen\">Success !</h4>-->\n        <!--<p>Your data has been updated successfully.</p>-->\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!--myModalDbError 50001-->\n<div #myModalDbError class=\"modal inmodal\" id=\"myModalDbError\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgred\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnCloseDataExisted\" name=\"btnCloseDataExisted\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\" ><font style=\"color:#ffffff;\"><i class=\"fa flaticon-cross-16px\"></i></font>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/error.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontred\">{{dataText.userTitle}}</h4>\n        <p>{{dataText.userMessage}}</p>\n        <!--<h4 class=\"modal-title fontred\">Error Connecting to Database !</h4>-->\n        <!--<p> Please contact your administrator.</p>-->\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!--myModalErrorDeleteButHaveMenuGroup 50002-->\n<div #myModalErrorDeleteButHaveMenuGroup class=\"modal inmodal\" id=\"myModalErrorDeleteButHaveMenuGroup\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgred\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnCloseDataExisted\" name=\"btnCloseDataExisted\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\" ><font style=\"color:#ffffff;\"><i class=\"fa flaticon-cross-16px\"></i></font>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/error.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontred\">{{dataText.userTitle}}</h4>\n        <p>{{dataText.userMessage}}</p>\n        <!--<h4 class=\"modal-title fontred\">Error !</h4>-->\n        <!--<p>Please check menu or group before delete this microservice.</p>-->\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!--MissingParameter create -->\n<div #myModalErrorDataExisted class=\"modal inmodal\" id=\"myModalErrorDataExisted\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgred\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnCloseDataExisted\" name=\"btnCloseDataExisted\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\" ><font style=\"color:#ffffff;\"><i class=\"fa flaticon-cross-16px\"></i></font>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/error.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontred\">{{dataText.userTitle}}</h4>\n        <p>{{dataText.userMessage}}</p>\n        <!--<h4 class=\"modal-title fontred\">Error !</h4>-->\n        <!--<p>Data existed. Please check your data and try again.</p>-->\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div #myModalWarning class=\"modal inmodal\" id=\"myModalWarning\" class=\"modal inmodal\"  tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgyellow\">\n        <div class=\"row\" style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnWarningClose\" name=\"btnWarningClose\" class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\"><font style=\"color:#ffffff;\"><i class=\"fa flaticon-cross-16px\"></i></font>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/warning.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontyellow\">{{dataText.userTitle}}</h4>\n        <p>{{dataText.userMessage}}</p>\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div #myModalError  class=\"modal inmodal\" id=\"myModalError\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgred\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a id=\"btnErrorClose\" name=\"btnErrorClose\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;\" ><font style=\"color:#ffffff;\"><i class=\"fa flaticon-cross-16px\"></i></font>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/error.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontred\">\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19</h4>\n        <p>{{dataText.userMessage}}</p>\n\n        <br>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!--Report Warning-->\n<div #myModalReportWarning class=\"modal inmodal\" id=\"myModalReportWarning\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" data-keyboard=\"false\">\n  <div class=\"modal-dialog modal-dialog-custom modal-dialog-scrollable\">\n    <div class=\"modal-content animated fadeIn\">\n      <div class=\"bgyellow\">\n        <div class=\"row\"  style=\"padding-top:10px;\">\n          <div class=\"col-sm-8 pull-right m-r\">\n            <a  id=\"btnCloseWarning\" name=\"btnCloseWarning\"  class=\"btn pull-right\" data-dismiss=\"modal\" style=\"border:none;visibility: hidden;\" ><i class=\"fa fa-times fontyellow\"></i>\n            </a>\n          </div>\n        </div>\n        <div class=\"m-l-n-sm\">\n          <div class=\"text-center\">\n            <img src=\"assets/img/warning.png\" width=\"110px\">\n          </div>\n        </div>\n      </div>\n      <br>\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title fontyellow\">\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E15\u0E32\u0E21\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02\u0E17\u0E35\u0E48\u0E17\u0E48\u0E32\u0E19\u0E40\u0E25\u0E37\u0E2D\u0E01</h4>\n        <!--<p>\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E15\u0E32\u0E21\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02\u0E17\u0E35\u0E48\u0E17\u0E48\u0E32\u0E19\u0E40\u0E25\u0E37\u0E2D\u0E01</p>-->\n        <br>\n        <div class=\"row\">\n          <!--<button id=\"btnConfirmCancel\" name=\"btnConfirmCancel\" type=\"button\" class=\"btn btn-default font-btn width-btn-small\" data-dismiss=\"modal\" (click)=\"onCancelDeleteModal()\" title=\"Cancel\" >Cancel</button>-->\n          <!--<button type=\"button\" class=\"btn btn-danger m-l-xs\" data-toggle=\"modal\" data-target=\"#myModal7\">Yes,delete it!</button>-->\n          <button id=\"btnConfirmOk\" name=\"btnConfirmOk\" style=\"margin-left:3px;\" class=\"btn btn-default font-btn width-btn-small\" data-dismiss=\"model\" (click)=\"onOkReportModal()\">\u0E15\u0E01\u0E25\u0E07</button>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n"
            }] }
];
/** @nocollapse */
CreateAlertComponent.ctorParameters = () => [
    { type: Router }
];
CreateAlertComponent.propDecorators = {
    dataGrid: [{ type: ViewChild, args: [DxDataGridComponent,] }],
    gridExport: [{ type: ViewChild, args: ['gridExport',] }],
    gridAlertValidExcel: [{ type: ViewChild, args: ['gridAlertValidExcel',] }],
    gridAlertErrorExcel: [{ type: ViewChild, args: ['gridAlertErrorExcel',] }],
    gridAdvance: [{ type: ViewChild, args: ['gridAdvance',] }],
    modalSuccess: [{ type: ViewChild, args: ['myModalSuccess',] }],
    modalSuccessWarning: [{ type: ViewChild, args: ['myModalSuccessWarning',] }],
    modalDelete: [{ type: ViewChild, args: ['myModalDelete',] }],
    modalConfirm: [{ type: ViewChild, args: ['myModalConfirm',] }],
    modalDeleteAttachment: [{ type: ViewChild, args: ['myModalDeleteAttachment',] }],
    modalDeleteWarning: [{ type: ViewChild, args: ['myModalDeleteWarning',] }],
    modalSuccessDelete: [{ type: ViewChild, args: ['myModalSuccessDelete',] }],
    modalEditSuccess: [{ type: ViewChild, args: ['myModalEditSuccess',] }],
    modalWarning: [{ type: ViewChild, args: ['myModalWarning',] }],
    myModalReportWarning: [{ type: ViewChild, args: ['myModalReportWarning',] }],
    modalError: [{ type: ViewChild, args: ['myModalError',] }],
    modalViewWarning: [{ type: ViewChild, args: ['myModalViewWarning',] }],
    modalProgressBarWarning: [{ type: ViewChild, args: ['myModalProgressBarWarning',] }],
    modalUploadImageWarning: [{ type: ViewChild, args: ['myModalUploadImageWarning',] }],
    modalUploadImageTypeWarning: [{ type: ViewChild, args: ['myModalUploadImageTypeWarning',] }],
    modalWarningNoTextSearch: [{ type: ViewChild, args: ['myModalWarningNoTextSearch',] }],
    modalErrorDataExisted: [{ type: ViewChild, args: ['myModalErrorDataExisted',] }],
    modalErrorDeleteButHaveMenuGroup: [{ type: ViewChild, args: ['myModalErrorDeleteButHaveMenuGroup',] }],
    modalAddVOutlook: [{ type: ViewChild, args: ['myModalAddVOutlook',] }],
    modalAddMVara: [{ type: ViewChild, args: ['myModalAddMVara',] }],
    onCloseModalError: [{ type: Output }],
    onOkDelete: [{ type: Output }],
    onOkConfirm: [{ type: Output }],
    onCancelDelete: [{ type: Output }],
    onCancelConfirm: [{ type: Output }],
    onOkDeleteAttachment: [{ type: Output }],
    onCancelDeleteAttachment: [{ type: Output }],
    onClickBack: [{ type: Output }],
    onCancelViewWarning: [{ type: Output }],
    onCancelUploadValid: [{ type: Output }],
    onDataErrorExcel: [{ type: Output }],
    onClickExport: [{ type: Output }],
    onClickDeleteExport: [{ type: Output }],
    onOkClone: [{ type: Output }],
    onOkReport: [{ type: Output }],
    onCancelClone: [{ type: Output }],
    onOkDiagramCancel: [{ type: Output }],
    onCancelDiagramCancel: [{ type: Output }],
    onCancelAddVOutlook: [{ type: Output }],
    onOkAddVOutlook: [{ type: Output }],
    onCancelAddMVara: [{ type: Output }],
    onOkAddMVara: [{ type: Output }]
};
if (false) {
    /** @type {?} */
    CreateAlertComponent.prototype.dataGrid;
    /** @type {?} */
    CreateAlertComponent.prototype.gridExport;
    /** @type {?} */
    CreateAlertComponent.prototype.gridAlertValidExcel;
    /** @type {?} */
    CreateAlertComponent.prototype.gridAlertErrorExcel;
    /** @type {?} */
    CreateAlertComponent.prototype.gridAdvance;
    /** @type {?} */
    CreateAlertComponent.prototype.modalSuccess;
    /** @type {?} */
    CreateAlertComponent.prototype.modalSuccessWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.modalDelete;
    /** @type {?} */
    CreateAlertComponent.prototype.modalConfirm;
    /** @type {?} */
    CreateAlertComponent.prototype.modalDeleteAttachment;
    /** @type {?} */
    CreateAlertComponent.prototype.modalDeleteWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.modalSuccessDelete;
    /** @type {?} */
    CreateAlertComponent.prototype.modalEditSuccess;
    /** @type {?} */
    CreateAlertComponent.prototype.modalWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.myModalReportWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.modalError;
    /** @type {?} */
    CreateAlertComponent.prototype.modalViewWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.modalProgressBarWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.modalUploadImageWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.modalUploadImageTypeWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.modalWarningNoTextSearch;
    /** @type {?} */
    CreateAlertComponent.prototype.modalErrorDataExisted;
    /** @type {?} */
    CreateAlertComponent.prototype.modalErrorDeleteButHaveMenuGroup;
    /** @type {?} */
    CreateAlertComponent.prototype.modalAddVOutlook;
    /** @type {?} */
    CreateAlertComponent.prototype.modalAddMVara;
    /** @type {?} */
    CreateAlertComponent.prototype.userMessage;
    /** @type {?} */
    CreateAlertComponent.prototype.dataText;
    /** @type {?} */
    CreateAlertComponent.prototype.dxgridPageSize;
    /** @type {?} */
    CreateAlertComponent.prototype.failDescription;
    /** @type {?} */
    CreateAlertComponent.prototype.percent;
    /** @type {?} */
    CreateAlertComponent.prototype.buttonText;
    /** @type {?} */
    CreateAlertComponent.prototype.onCloseModalError;
    /** @type {?} */
    CreateAlertComponent.prototype.onOkDelete;
    /** @type {?} */
    CreateAlertComponent.prototype.onOkConfirm;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelDelete;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelConfirm;
    /** @type {?} */
    CreateAlertComponent.prototype.onOkDeleteAttachment;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelDeleteAttachment;
    /** @type {?} */
    CreateAlertComponent.prototype.onClickBack;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelViewWarning;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelUploadValid;
    /** @type {?} */
    CreateAlertComponent.prototype.onDataErrorExcel;
    /** @type {?} */
    CreateAlertComponent.prototype.onClickExport;
    /** @type {?} */
    CreateAlertComponent.prototype.onClickDeleteExport;
    /** @type {?} */
    CreateAlertComponent.prototype.onOkClone;
    /** @type {?} */
    CreateAlertComponent.prototype.onOkReport;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelClone;
    /** @type {?} */
    CreateAlertComponent.prototype.onOkDiagramCancel;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelDiagramCancel;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelAddVOutlook;
    /** @type {?} */
    CreateAlertComponent.prototype.onOkAddVOutlook;
    /** @type {?} */
    CreateAlertComponent.prototype.onCancelAddMVara;
    /** @type {?} */
    CreateAlertComponent.prototype.onOkAddMVara;
    /** @type {?} */
    CreateAlertComponent.prototype.router;
}
export class CreateAlertModule {
}
CreateAlertModule.decorators = [
    { type: NgModule, args: [{
                imports: [DxDataGridModule, FormsModule],
                // , CommonModule
                exports: [CreateAlertComponent],
                declarations: [CreateAlertComponent]
            },] }
];

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vc29jLWFwcC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsVUFBVSxFQUNWLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsTUFBTSxFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBRXZELE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBR3pFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVUzQyxNQUFNOzs7O0lBRUosWUFBb0IsTUFBYzs7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO3VCQTBDeEIsQ0FBQzswQkFDRSxFQUFFO2lDQUVlLElBQUksWUFBWSxFQUFFOzBCQUN6QixJQUFJLFlBQVksRUFBRTsyQkFDakIsSUFBSSxZQUFZLEVBQUU7OEJBQ2YsSUFBSSxZQUFZLEVBQUU7K0JBQ2pCLElBQUksWUFBWSxFQUFFO29DQUNiLElBQUksWUFBWSxFQUFFO3dDQUNkLElBQUksWUFBWSxFQUFFOzJCQUMvQixJQUFJLFlBQVksRUFBRTttQ0FDVixJQUFJLFlBQVksRUFBRTttQ0FDbEIsSUFBSSxZQUFZLEVBQUU7Z0NBQ3JCLElBQUksWUFBWSxFQUFFOzZCQUNyQixJQUFJLFlBQVksRUFBRTttQ0FDWixJQUFJLFlBQVksRUFBRTt5QkFDNUIsSUFBSSxZQUFZLEVBQUU7MEJBQ2pCLElBQUksWUFBWSxFQUFFOzZCQUNmLElBQUksWUFBWSxFQUFFO2lDQUNkLElBQUksWUFBWSxFQUFFO3FDQUNkLElBQUksWUFBWSxFQUFFO21DQUNwQixJQUFJLFlBQVksRUFBRTsrQkFDdEIsSUFBSSxZQUFZLEVBQUU7Z0NBQ2pC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Q0FDTixNQUFNOzhCQUNOLE1BQU07K0JBQ04sTUFBTTsyQkFDTixNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcVFULE1BQU07OztZQU5MLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUM7O2dCQUN4QyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDL0IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7YUFFckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBOZ01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtEeERhdGFHcmlkQ29tcG9uZW50LCBEeERhdGFHcmlkTW9kdWxlfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xuaW1wb3J0IHtlbnZpcm9ubWVudH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmRlY2xhcmUgbGV0ICQ6IGFueTtcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBDdXN0b21TdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvY3VzdG9tX3N0b3JlJztcbi8vIGltcG9ydCB7UmVxdWVzdH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3JlcXVlc3Quc2VydmljZSc7XG4vLyBpbXBvcnQge0NvbW1vbn0gZnJvbSBcIi4uL3NoYXJlZC9zZXJ2aWNlcy9jb21tb24uc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWxlcnQnLFxuICBwcm92aWRlcnM6IFtdLFxuICB0ZW1wbGF0ZVVybDogJy4vLi9hbGVydC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsvLyAsIHByaXZhdGUgcmVxdWVzdDogUmVxdWVzdCwgcHJpdmF0ZSBjb21tb246IENvbW1vblxuXG4gICAgdGhpcy5kYXRhVGV4dCA9IHtcbiAgICAgIHVzZXJUaXRsZTogJycsXG4gICAgICB1c2VyTWVzc2FnZTogJydcbiAgICB9O1xuICB9XG5cbiAgQFZpZXdDaGlsZChEeERhdGFHcmlkQ29tcG9uZW50KSBkYXRhR3JpZDogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JpZEV4cG9ydCcpIGdyaWRFeHBvcnQ6IER4RGF0YUdyaWRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2dyaWRBbGVydFZhbGlkRXhjZWwnKSBncmlkQWxlcnRWYWxpZEV4Y2VsOiBEeERhdGFHcmlkQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdncmlkQWxlcnRFcnJvckV4Y2VsJykgZ3JpZEFsZXJ0RXJyb3JFeGNlbDogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JpZEFkdmFuY2UnKSBncmlkQWR2YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbFN1Y2Nlc3MnKSBtb2RhbFN1Y2Nlc3M6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxTdWNjZXNzV2FybmluZycpIG1vZGFsU3VjY2Vzc1dhcm5pbmc6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnbXlNb2RhbERlbGV0ZScpIG1vZGFsRGVsZXRlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsQ29uZmlybScpIG1vZGFsQ29uZmlybTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbERlbGV0ZUF0dGFjaG1lbnQnKSBtb2RhbERlbGV0ZUF0dGFjaG1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxEZWxldGVXYXJuaW5nJykgbW9kYWxEZWxldGVXYXJuaW5nOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsU3VjY2Vzc0RlbGV0ZScpIG1vZGFsU3VjY2Vzc0RlbGV0ZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbEVkaXRTdWNjZXNzJykgbW9kYWxFZGl0U3VjY2VzczogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbFdhcm5pbmcnKSBtb2RhbFdhcm5pbmc6IEVsZW1lbnRSZWY7XG5cblxuICBAVmlld0NoaWxkKCdteU1vZGFsUmVwb3J0V2FybmluZycpIG15TW9kYWxSZXBvcnRXYXJuaW5nOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsRXJyb3InKSBtb2RhbEVycm9yOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsVmlld1dhcm5pbmcnKSBtb2RhbFZpZXdXYXJuaW5nOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsUHJvZ3Jlc3NCYXJXYXJuaW5nJykgbW9kYWxQcm9ncmVzc0Jhcldhcm5pbmc6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxVcGxvYWRJbWFnZVdhcm5pbmcnKSBtb2RhbFVwbG9hZEltYWdlV2FybmluZzogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbFVwbG9hZEltYWdlVHlwZVdhcm5pbmcnKSBtb2RhbFVwbG9hZEltYWdlVHlwZVdhcm5pbmc6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnbXlNb2RhbFdhcm5pbmdOb1RleHRTZWFyY2gnKSBtb2RhbFdhcm5pbmdOb1RleHRTZWFyY2g6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxFcnJvckRhdGFFeGlzdGVkJykgbW9kYWxFcnJvckRhdGFFeGlzdGVkOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsRXJyb3JEZWxldGVCdXRIYXZlTWVudUdyb3VwJykgbW9kYWxFcnJvckRlbGV0ZUJ1dEhhdmVNZW51R3JvdXA6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxBZGRWT3V0bG9vaycpIG1vZGFsQWRkVk91dGxvb2s6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxBZGRNVmFyYScpIG1vZGFsQWRkTVZhcmE6IEVsZW1lbnRSZWY7XG5cbiAgdXNlck1lc3NhZ2U7XG4gIGRhdGFUZXh0O1xuICBkeGdyaWRQYWdlU2l6ZTtcbiAgZmFpbERlc2NyaXB0aW9uO1xuICBwZXJjZW50ID0gMDtcbiAgYnV0dG9uVGV4dCA9ICcnO1xuXG4gIEBPdXRwdXQoKSBvbkNsb3NlTW9kYWxFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uT2tEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbk9rQ29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWxDb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Pa0RlbGV0ZUF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbERlbGV0ZUF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrQmFjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsVmlld1dhcm5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbFVwbG9hZFZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25EYXRhRXJyb3JFeGNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xpY2tFeHBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrRGVsZXRlRXhwb3J0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Pa0Nsb25lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Pa1JlcG9ydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsQ2xvbmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbk9rRGlhZ3JhbUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsRGlhZ3JhbUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsQWRkVk91dGxvb2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbk9rQWRkVk91dGxvb2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbEFkZE1WYXJhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Pa0FkZE1WYXJhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG5nT25Jbml0KCkge31cblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdHJ5IHtcbiAgICAgICQodGhpcy5tb2RhbFN1Y2Nlc3MubmF0aXZlRWxlbWVudCkub24oJ2hpZGRlbi5icy5tb2RhbCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gcHV0IHlvdXIgZGVmYXVsdCBldmVudCBoZXJlXG5cbiAgICAgICAgdGhpcy5vbkNsaWNrQmFjay5lbWl0KCk7XG4gICAgICB9KTtcblxuICAgICAgJCh0aGlzLm1vZGFsRWRpdFN1Y2Nlc3MubmF0aXZlRWxlbWVudCkub24oJ2hpZGRlbi5icy5tb2RhbCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gcHV0IHlvdXIgZGVmYXVsdCBldmVudCBoZXJlXG4gICAgICAgIHRoaXMub25DbGlja0JhY2suZW1pdCgpO1xuICAgICAgfSk7XG5cbiAgICAgICQodGhpcy5tb2RhbEVycm9yLm5hdGl2ZUVsZW1lbnQpLm9uKCdoaWRkZW4uYnMubW9kYWwnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIHB1dCB5b3VyIGRlZmF1bHQgZXZlbnQgaGVyZVxuICAgICAgICAvLyBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmxCYWNrXSk7XG4gICAgICAgIHRoaXMub25DbG9zZU1vZGFsRXJyb3IuZW1pdCgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vICQodGhpcy5tb2RhbFZpZXdXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm9uKCdoaWRkZW4uYnMubW9kYWwnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyAgIC8vIHB1dCB5b3VyIGRlZmF1bHQgZXZlbnQgaGVyZVxuICAgICAgLy8gICAvLyBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmxCYWNrXSk7XG4gICAgICAvLyAgIHRoaXMub25DYW5jZWxWaWV3V2FybmluZy5lbWl0KCk7XG4gICAgICAvLyB9KTtcblxuICAgICAgLy8g4Lib4Lij4Lix4LiaIGh0bWwgPGJvZHk+IOC5g+C4q+C5ieC4geC4peC4seC4muC5gOC4m+C5h+C4meC4m+C4geC4leC4tOC5gOC4oeC4t+C5iOC4reC5gOC4m+C4tOC4lC3guJvguLTguJQgbW9kYWxcbiAgICAgIC8vIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzBweCc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuICB9XG5cbiAgb3Blbk1vZGFsKGRhdGEpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbXlNb2RhbERlbGV0ZScpKTtcbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAvLyB0aGlzLnVzZXJNZXNzYWdlID0gdXNlck1lc3NhZ2U7XG4gICAgLy8gbGV0IGRhdGEgPVxuICAgIC8vIGlmKCl7XG4gICAgLy9cbiAgICAvLyB9XG4gICAgLy8g4LiW4LmJ4Liy4LmA4Lib4LmH4LiZIG15TW9kYWxFeHBvcnRMb2FkaW5nIOC4iOC4sOC5guC4ouC4mSBkYXRhIOC4oeC4suC4leC5iOC4suC4h+C4geC4seC4mVxuICAgIC8vIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsRXhwb3J0TG9hZGluZycpIHtcbiAgICAvLyAgIHRoaXMuZGF0YUV4cG9ydCA9IGRhdGEudXNlck1lc3NhZ2UgPyBkYXRhLnVzZXJNZXNzYWdlLmRhdGFFeHBvcnQgOiBbXTtcbiAgICAvLyAgIHRoaXMuYnV0dG9uVGV4dCA9IGRhdGEudXNlck1lc3NhZ2UgPyBkYXRhLnVzZXJNZXNzYWdlLmJ1dHRvblRleHQgOiAnUERGJztcbiAgICAvLyB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhVGV4dCA9IHtcbiAgICAgICAgdXNlclRpdGxlOiBkYXRhLnVzZXJUaXRsZSxcbiAgICAgICAgdXNlck1lc3NhZ2U6IGRhdGEudXNlck1lc3NhZ2VcbiAgICAgIH07XG4gICAgLy8gfVxuXG4gICAgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxEZWxldGUnKSB7XG4gICAgICAvLyAkKHRoaXMubW9kYWxEZWxldGUubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICAgICQodGhpcy5tb2RhbERlbGV0ZS5uYXRpdmVFbGVtZW50KS5tb2RhbCh7XG4gICAgICAgIGJhY2tkcm9wOiAnc3RhdGljJ1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsQ29uZmlybScpIHtcbiAgICAgICQodGhpcy5tb2RhbENvbmZpcm0ubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxEZWxldGVBdHRhY2htZW50Jykge1xuICAgICAgJCh0aGlzLm1vZGFsRGVsZXRlQXR0YWNobWVudC5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbERlbGV0ZVdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubW9kYWxEZWxldGVXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsU3VjY2Vzc0RlbGV0ZScpIHtcbiAgICAgICQodGhpcy5tb2RhbFN1Y2Nlc3NEZWxldGUubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxTdWNjZXNzJykge1xuICAgICAgJCh0aGlzLm1vZGFsU3VjY2Vzcy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbFN1Y2Nlc3NXYXJuaW5nJykge1xuICAgICAgJCh0aGlzLm1vZGFsU3VjY2Vzc1dhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxFZGl0U3VjY2VzcycpIHtcbiAgICAgICQodGhpcy5tb2RhbEVkaXRTdWNjZXNzLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsV2FybmluZycpIHtcbiAgICAgICQodGhpcy5tb2RhbFdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxSZXBvcnRXYXJuaW5nJykge1xuICAgICAgJCh0aGlzLm15TW9kYWxSZXBvcnRXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgLy8gfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsVmlld1dhcm5pbmcnKSB7XG4gICAgLy8gICAkKHRoaXMubW9kYWxWaWV3V2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbFVwbG9hZEltYWdlV2FybmluZycpIHtcbiAgICAgICQodGhpcy5tb2RhbFVwbG9hZEltYWdlV2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbFVwbG9hZEltYWdlVHlwZVdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubW9kYWxVcGxvYWRJbWFnZVR5cGVXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsV2FybmluZ05vVGV4dFNlYXJjaCcpIHtcbiAgICAgICQodGhpcy5tb2RhbFdhcm5pbmdOb1RleHRTZWFyY2gubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxFcnJvckRhdGFFeGlzdGVkJykge1xuICAgICAgJCh0aGlzLm1vZGFsRXJyb3JEYXRhRXhpc3RlZC5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbEVycm9yRGVsZXRlQnV0SGF2ZU1lbnVHcm91cCcpIHtcbiAgICAgICQodGhpcy5tb2RhbEVycm9yRGVsZXRlQnV0SGF2ZU1lbnVHcm91cC5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbEFkZFZPdXRsb29rJykge1xuICAgICAgJCh0aGlzLm1vZGFsQWRkVk91dGxvb2submF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxBZGRNVmFyYScpIHtcbiAgICAgICQodGhpcy5tb2RhbEFkZE1WYXJhLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdtb2RhbEVycm9yJykge1xuICAgICAgICAkKHRoaXMubW9kYWxFcnJvci5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkKHRoaXMubW9kYWxFcnJvci5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH1cblxuICAgIC8vIOC4m+C4o+C4seC4miBodG1sIDxib2R5PiDguYPguKvguYnguIHguKXguLHguJrguYDguJvguYfguJnguJvguIHguJXguLTguYDguKHguLfguYjguK3guYDguJvguLTguJQt4Lib4Li04LiUIG1vZGFsXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMHB4JztcbiAgfVxuXG4gIGNsb3NlTW9kYWwobW9kYWxJZCkge1xuICAgIGlmIChtb2RhbElkID09PSAnbXlNb2RhbERlbGV0ZScpIHtcbiAgICAgICQodGhpcy5tb2RhbERlbGV0ZS5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxDb25maXJtJykge1xuICAgICAgJCh0aGlzLm1vZGFsQ29uZmlybS5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxEZWxldGVBdHRhY2htZW50Jykge1xuICAgICAgJCh0aGlzLm1vZGFsRGVsZXRlQXR0YWNobWVudC5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxEZWxldGVXYXJuaW5nJykge1xuICAgICAgJCh0aGlzLm1vZGFsRGVsZXRlV2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxBZGRWT3V0bG9vaycpIHtcbiAgICAgICQodGhpcy5tb2RhbEFkZFZPdXRsb29rLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbEFkZE1WYXJhJykge1xuICAgICAgJCh0aGlzLm1vZGFsQWRkTVZhcmEubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsU3VjY2Vzc0RlbGV0ZScpIHtcbiAgICAgICQodGhpcy5tb2RhbFN1Y2Nlc3NEZWxldGUubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcblxuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxTdWNjZXNzJykge1xuICAgICAgJCh0aGlzLm1vZGFsU3VjY2Vzcy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuXG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbFN1Y2Nlc3NXYXJuaW5nJykge1xuICAgICAgJCh0aGlzLm1vZGFsU3VjY2Vzc1dhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcblxuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxFZGl0U3VjY2VzcycpIHtcbiAgICAgICQodGhpcy5tb2RhbEVkaXRTdWNjZXNzLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbFdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubW9kYWxXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbFJlcG9ydFdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubXlNb2RhbFJlcG9ydFdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICAvLyB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsVmlld1dhcm5pbmcnKSB7XG4gICAgLy8gICAkKHRoaXMubW9kYWxWaWV3V2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxVcGxvYWRJbWFnZVdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubW9kYWxVcGxvYWRJbWFnZVdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsVXBsb2FkSW1hZ2VUeXBlV2FybmluZycpIHtcbiAgICAgICQodGhpcy5tb2RhbFVwbG9hZEltYWdlVHlwZVdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsV2FybmluZ05vVGV4dFNlYXJjaCcpIHtcbiAgICAgICQodGhpcy5tb2RhbFdhcm5pbmdOb1RleHRTZWFyY2gubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsRXJyb3JEYXRhRXhpc3RlZCcpIHtcbiAgICAgICQodGhpcy5tb2RhbEVycm9yRGF0YUV4aXN0ZWQubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsRXJyb3JEZWxldGVCdXRIYXZlTWVudUdyb3VwJykge1xuICAgICAgJCh0aGlzLm1vZGFsRXJyb3JEZWxldGVCdXRIYXZlTWVudUdyb3VwLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbEFkZFZPdXRsb29rJykge1xuICAgICAgICAkKHRoaXMubW9kYWxBZGRWT3V0bG9vay5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdjbG9zZU1vZGFsIEVycm9yJyk7XG4gICAgfVxuICB9XG4gIHNob3dTdHJpbmdWYWxpZERhdGFFeGNlbChkYXRhKSB7XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBpZiAoZGF0YS5kYXRhICYmIGRhdGEuZGF0YS5pdGVtT2piICYmIGRhdGEuZGF0YS5pdGVtT2piLmZhaWxEZXNjcmlwdGlvbikge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkYXRhLmRhdGEuaXRlbU9qYi5mYWlsRGVzY3JpcHRpb24ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdGV4dCArPSAnWycgKyBkYXRhLmRhdGEuaXRlbU9qYi5mYWlsRGVzY3JpcHRpb25bal0uY29sdW1lTmFtZSArICddJyArICc6XCInICsgZGF0YS5kYXRhLml0ZW1PamIuZmFpbERlc2NyaXB0aW9uW2pdLnRleHQgKyAnXCIsIDxici8+JztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBzaG93U3RyaW5nRXJyb3JEYXRhRXhjZWwoZmFpbERlc2NyaXB0aW9uKSB7XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGZhaWxEZXNjcmlwdGlvbi5sZW5ndGg7IGorKykge1xuICAgICAgdGV4dCArPSAnWycgKyBmYWlsRGVzY3JpcHRpb25bal0uY29sdW1lTmFtZSArICddJyArICc6XCInICsgZmFpbERlc2NyaXB0aW9uW2pdLnRleHQgKyAnXCIsIDxici8+JztcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBjbG9zZVByb2dyZXNzYmFyKCkge1xuICAgICQodGhpcy5tb2RhbFByb2dyZXNzQmFyV2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICB9XG5cbiAgb25Pa0RlbGV0ZU1vZGFsKCkge1xuICAgICQodGhpcy5tb2RhbERlbGV0ZS5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIHRoaXMub25Pa0RlbGV0ZS5lbWl0KCk7XG4gIH1cbiAgb25Pa0NvbmZpcm1Nb2RhbCgpIHtcbiAgICAkKHRoaXMubW9kYWxDb25maXJtLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgdGhpcy5vbk9rQ29uZmlybS5lbWl0KCk7XG4gIH1cblxuICBvbk9rRGVsZXRlQXR0YWNobWVudE1vZGFsKCkge1xuICAgICQodGhpcy5tb2RhbERlbGV0ZUF0dGFjaG1lbnQubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB0aGlzLm9uT2tEZWxldGVBdHRhY2htZW50LmVtaXQoKTtcbiAgfVxuXG4gIG9uT2tSZXBvcnRNb2RhbCgpIHtcbiAgICAkKHRoaXMubXlNb2RhbFJlcG9ydFdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB0aGlzLm9uT2tSZXBvcnQuZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxEZWxldGVNb2RhbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsRGVsZXRlLmVtaXQoKTtcbiAgfVxuICBvbkNhbmNlbENvbmZpcm1Nb2RhbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsQ29uZmlybS5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbERlbGV0ZUF0dGFjaG1lbnRNb2RhbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsRGVsZXRlQXR0YWNobWVudC5lbWl0KCk7XG4gIH1cblxuICBvbkNsaWNrQmFja01vZGFsKCkge1xuICAgIHRoaXMub25DbGlja0JhY2suZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxWaWV3V2FybmluZ01vZGFsKCkge1xuICAgIGNvbnNvbGUubG9nKCdoamgnKTtcbiAgICB0aGlzLm9uQ2FuY2VsVmlld1dhcm5pbmcuZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxVcGxvYWRWYWxpZE1vZGFsKCkge1xuICAgIHRoaXMub25DYW5jZWxVcGxvYWRWYWxpZC5lbWl0KCk7XG4gIH1cblxuICBvbkRhdGFFcnJvckV4Y2VsTW9kYWwoKSB7XG4gICAgdGhpcy5vbkRhdGFFcnJvckV4Y2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xvc2VNb2RhbEVycm9yTW9kYWwoKSB7XG4gICAgdGhpcy5vbkNsb3NlTW9kYWxFcnJvci5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbENsb25lTW9kYWwoKSB7XG4gICAgdGhpcy5vbkNhbmNlbENsb25lLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2FuY2VsQWRkVk91dGxvb2tNb2RhbCgpIHtcbiAgICAgICQodGhpcy5tb2RhbEFkZFZPdXRsb29rLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgICB0aGlzLm9uQ2FuY2VsQWRkVk91dGxvb2suZW1pdCgpO1xuICB9XG5cbiAgb25Pa0FkZFZPdXRsb29rTW9kYWwoKSB7XG4gICAgICAkKHRoaXMubW9kYWxBZGRWT3V0bG9vay5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgICAgdGhpcy5vbk9rQWRkVk91dGxvb2suZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxBZGRNVmFyYU1vZGFsKCkge1xuICAgICAgJCh0aGlzLm1vZGFsQWRkTVZhcmEubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICAgIHRoaXMub25DYW5jZWxBZGRNVmFyYS5lbWl0KCk7XG4gIH1cblxuICBvbk9rQWRkTVZhcmFNb2RhbCgpIHtcbiAgICAgICQodGhpcy5tb2RhbEFkZE1WYXJhLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgICB0aGlzLm9uT2tBZGRNVmFyYS5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbERpYWdyYW1DYW5jZWxNb2RhbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsQWRkVk91dGxvb2suZW1pdCgpO1xuICB9XG4gIC8vIGV4cG9ydE9uQ29udGVudFJlYWR5KGUpIHtcbiAgLy8gICB0aGlzLmNvbW1vbi5yZXNwb25zaXZlTW9kYWxFeHBvcnQodGhpcy5ncmlkRXhwb3J0KTtcbiAgLy8gfVxufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRHhEYXRhR3JpZE1vZHVsZSwgRm9ybXNNb2R1bGVdLCAvLyAsIENvbW1vbk1vZHVsZVxuICBleHBvcnRzOiBbQ3JlYXRlQWxlcnRDb21wb25lbnRdLFxuICBkZWNsYXJhdGlvbnM6IFtDcmVhdGVBbGVydENvbXBvbmVudF1cblxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVBbGVydE1vZHVsZSB7XG59XG4iXX0=