attachment-list.component.js 47.9 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
/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
 */
import * as tslib_1 from "tslib";
import { Component, ViewChild, Input, Output, EventEmitter } from '@angular/core';
import { AppConfigService } from '../app-config/app-config.service';
import { DxDataGridComponent } from 'devextreme-angular';
import { Request } from '../_services/request.service';
import { Common } from '../_services/common.service';
import { ModalAttachmentComponent } from '../modal-attachment/modal-attachment.component';
import * as _ from 'lodash';
import { CreateAlertComponent } from '../alert/alert.component';
import { B2bService } from '../_services/b2b.service';
import { ModalAttachmentViewComponent } from '../modal-attachment-view/modal-attachment-view.component';
export class AttachmentListComponent {
    /**
     * @param {?} appConfigService
     * @param {?} request
     * @param {?} common
     * @param {?} b2b
     */
    constructor(appConfigService, request, common, b2b) {
        this.appConfigService = appConfigService;
        this.request = request;
        this.common = common;
        this.b2b = b2b;
        this.mode = 'CREATE';
        this.type = 2;
        this.showImage = false;
        this.onLoaded = new EventEmitter();
        this.onClickScan = new EventEmitter();
        this.onClickDelete = new EventEmitter();
        this.columns = ['ลำดับที่', 'ผู้แก้ไข', 'วันที่', 'สถานะการติดตาม', 'หมายเหตุ'];
        this.attachmentList = [];
        this.dxgridPageSize = 10;
        this.allowedPageSizes1 = 10;
        this.allowedPageSizes2 = 25;
        this.allowedPageSizes3 = 50;
        this.allowedPageSizes4 = 100;
        this.customers = [];
        this.lastStep = '';
        this.deleteIdList = [];
        this.dsAttachment = [];
        this.selectedAttachment = [];
        this.tmpId = -1;
        this.classifieds = 0;
        this.username_caption = 'ผู้บันทึก/ผู้นำเข้า';
        this.config = appConfigService.getConfig();
    }
    /**
     * @return {?}
     */
    ngOnInit() {
        return tslib_1.__awaiter(this, void 0, void 0, function* () {
            setTimeout(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
                this.downloadToken = yield this.b2b.getAttachmentToken();
            }), 500);
            if (this.mode !== "CREATE") {
                this.getAttachmentList();
            }
        });
    }
    /**
     * @return {?}
     */
    getAttachmentList() {
        return tslib_1.__awaiter(this, void 0, void 0, function* () {
            console.log('getAttachmentList', this.attachmentList, this.option.username_caption);
            /** @type {?} */
            let filter = {
                filter: {
                    ref_table: this.option.data.ref_table,
                    ref_id: this.option.data.ref_id,
                    system_id: this.option.data.system_id
                },
                order_by: ["order_no"]
            };
            if (this.option.data.result_table_id)
                filter.filter.result_table_id = this.option.data.result_table_id;
            /** @type {?} */
            const data = yield this.request.post('/search/rc_attachment_prop', filter);
            this.attachmentList = data.resultData;
            this.classifieds = 0;
            for (let i of this.attachmentList) {
                if (i.is_classifieds) {
                    this.classifieds++;
                }
            }
            console.log('getAttachmentList', this.attachmentList);
            this.onLoaded.emit();
        });
    }
    /**
     * @param {?} data
     * @return {?}
     */
    addAttachmentList(data) {
        data.id = this.tmpId;
        this.tmpId--;
        if (this.b2b.getVerifyToken().phoneBookData && this.b2b.getVerifyToken().phoneBookData.length > 0) {
            data.username = this.b2b.getVerifyToken().username;
            data.recorder_name = this.b2b.getVerifyToken().phoneBookData[0].name;
        }
        data.action = "add";
        if (data.is_classifieds) {
            this.classifieds++;
        }
        this.attachmentList.push(data);
        console.log('getAttachmentList', this.attachmentList);
    }
    /**
     * @param {?} data
     * @return {?}
     */
    editAttachmentList(data) {
        for (let i = 0; i < this.attachmentList.length; i++) {
            if (this.attachmentList[i].id === data.id) {
                if (data.is_classifieds && !this.attachmentList[i].is_classifieds) {
                    this.classifieds++;
                }
                else if (!data.is_classifieds && this.attachmentList[i].is_classifieds) {
                    this.classifieds--;
                }
                this.attachmentList[i] = data;
            }
        }
        console.log('getAttachmentList', this.attachmentList);
    }
    /**
     * @param {?} data
     * @return {?}
     */
    getRowIndex(data) {
        if (!data.data) {
            return '';
        }
        data.data.order_no = data.component.pageIndex() * data.component.pageSize() + data.rowIndex + 1;
        return data.data.order_no;
    }
    /**
     * @return {?}
     */
    clickAdd() {
        this.option.mode = 'CREATE';
        if (this.attachmentModal) {
            this.attachmentModal.open(this.option);
        }
        else {
            this.modalAttachment.open(this.option);
        }
    }
    /**
     * @param {?} data
     * @return {?}
     */
    clickEdit(data) {
        console.log('clickEdit', data);
        /** @type {?} */
        let fileName = data.filename;
        /** @type {?} */
        let fileType = fileName.substring(fileName.length - 3, fileName.length);
        console.log('fileType', fileType);
        if (this.type == 1 && (fileType == 'pdf' || fileType == 'PDF')) {
            /** @type {?} */
            const editData = _.cloneDeep(this.option);
            editData.data = data;
            editData.mode = 'EDIT';
            editData.downloadToken = this.downloadToken;
            this.onClickScan.emit(editData);
        }
        else {
            /** @type {?} */
            const editData = _.cloneDeep(this.option);
            editData.data = data;
            editData.mode = 'EDIT';
            editData.downloadToken = this.downloadToken;
            if (this.attachmentModal) {
                this.attachmentModal.open(editData);
            }
            else {
                this.modalAttachment.open(editData);
            }
        }
    }
    /**
     * @param {?} data
     * @return {?}
     */
    clickView(data) {
        /** @type {?} */
        let fileName = data.filename;
        /** @type {?} */
        let fileType = fileName.substring(fileName.length - 3, fileName.length);
        console.log('fileType', fileType);
        if (this.type == 1 && (fileType == 'pdf' || fileType == 'PDF')) {
            /** @type {?} */
            const viewData = _.cloneDeep(this.option);
            viewData.data = data;
            viewData.mode = 'VIEW';
            this.onClickScan.emit(viewData);
        }
        else {
            /** @type {?} */
            const viewData = _.cloneDeep(this.option);
            viewData.data = data;
            viewData.mode = 'VIEW';
            viewData.downloadToken = this.downloadToken;
            if (this.attachmentViewModal) {
                this.attachmentViewModal.open(viewData);
            }
            else {
                this.modalAttachmentView.open(viewData);
            }
        }
    }
    /**
     * @param {?} data
     * @return {?}
     */
    clickMoveUp(data) {
        /** @type {?} */
        let tmp = this.attachmentList[data.rowIndex];
        this.attachmentList[data.rowIndex] = this.attachmentList[data.rowIndex - 1];
        this.attachmentList[data.rowIndex - 1] = tmp;
    }
    /**
     * @param {?} data
     * @return {?}
     */
    clickMoveDown(data) {
        /** @type {?} */
        let tmp = this.attachmentList[data.rowIndex];
        this.attachmentList[data.rowIndex] = this.attachmentList[data.rowIndex + 1];
        this.attachmentList[data.rowIndex + 1] = tmp;
    }
    /**
     * @param {?} data
     * @return {?}
     */
    clickDownload(data) {
        return tslib_1.__awaiter(this, void 0, void 0, function* () {
            window.open(data.url + "?downloadToken=" + this.downloadToken);
        });
    }
    /**
     * @return {?}
     */
    getLastStep() {
        return this.lastStep;
    }
    /**
     * START DELETE
     * @param {?} idList
     * @return {?}
     */
    fnClickDelete(idList) {
        this.onClickDelete.emit();
        this.deleteIdList = idList;
        if (this.deleteIdList.length > 0) {
            this.confirmDelete();
        }
    }
    /**
     * @return {?}
     */
    confirmDelete() {
        this.goAlert('', '', 'myModalDeleteAttachment');
    }
    /**
     * @param {?} userTitle
     * @param {?} userMessage
     * @param {?} modalId
     * @return {?}
     */
    goAlert(userTitle, userMessage, modalId) {
        /** @type {?} */
        const dataAlert = {
            'modalId': modalId,
            'userTitle': userTitle,
            'userMessage': userMessage
        };
        if (this.alertModal) {
            this.alertModal.openModal(dataAlert);
        }
        else {
            this.myModal.openModal(dataAlert);
        }
    }
    /**
     * @param {?} e
     * @return {?}
     */
    onCellPrepared(e) {
        if (e.rowType === 'data') {
            e.cellElement.accessKey = e.column.caption;
        }
    }
    /**
     * @return {?}
     */
    fnDeleteMultiple() {
        return tslib_1.__awaiter(this, void 0, void 0, function* () {
            console.log("this.deleteIdList", this.deleteIdList);
            console.log("this.attachmentList before", this.attachmentList);
            for (let id of this.deleteIdList) {
                for (let i = this.attachmentList.length - 1; i >= 0; i--) {
                    if (this.attachmentList[i].id === id) {
                        if (this.attachmentList[i].is_classifieds) {
                            this.classifieds--;
                        }
                        this.attachmentList.splice(i, 1);
                    }
                }
            }
            console.log("this.attachmentList after", this.attachmentList);
        });
    }
    /**
     * @return {?}
     */
    onClickBack() {
        console.log("clickback");
    }
    /**
     * @param {?} data
     * @return {?}
     */
    getImageLink(data) {
        return data.url + "?downloadToken=" + this.downloadToken;
    }
    /**
     * @return {?}
     */
    scan() {
        this.option.mode = 'CREATE';
        this.onClickScan.emit(this.option);
    }
}
AttachmentListComponent.decorators = [
    { type: Component, args: [{
                selector: 'soc-attachment-list',
                template: "<div class=\"col-sm-12\">\n        <div class=\"ibox-heading-total\" style=\"padding: 0px 20px 0;\">\n                <h5 class=\"ibox-title-text\"></h5>\n                <!--<button id=\"btn\" name=\"btn\" type=\"button\" class=\"btn btn-success \" data-toggle=\"tooltip\"-->\n                <!--title=\"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E23\u0E32\u0E22\u0E25\u0E30\u0E40\u0E2D\u0E35\u0E22\u0E14\u0E1B\u0E23\u0E30\u0E40\u0E14\u0E47\u0E19\" data-placement=\"top\" style=\"min-width: 80px;padding: 8px 10px;\">\u0E17\u0E33\u0E2A\u0E33\u0E40\u0E19\u0E32</button>-->\n                <button *ngIf=\"mode !== 'VIEW' &&  type === 1\" id=\"btnScan\" name=\"btnScan\" type=\"button\"\n                        class=\"btn btn-success\" data-toggle=\"tooltip\" data-placement=\"top\"\n                        style=\"min-width: 80px;padding: 8px 10px;\" (click)=\"scan()\">\u0E2A\u0E41\u0E01\u0E19</button>\n                <button *ngIf=\"mode !== 'VIEW'\" [disabled]=\"selectedAttachment.length === 0\" id=\"btnDelete\"\n                        name=\"btnDelete\" type=\"button\" class=\"btn btn-success\" data-toggle=\"tooltip\"\n                        data-placement=\"top\" style=\"min-width: 80px;padding: 8px 10px;\"\n                        (click)=\"fnClickDelete(selectedAttachment)\">\u0E25\u0E1A</button>\n                <button *ngIf=\"mode !== 'VIEW'\" id=\"btnAdd\" name=\"btnAdd\" type=\"button\" class=\"btn btn-success\"\n                        data-toggle=\"tooltip\" data-placement=\"top\" style=\"min-width: 80px;padding: 8px 10px;\"\n                        (click)=\"clickAdd()\">\u0E40\u0E1E\u0E34\u0E48\u0E21</button>\n        </div>\n        <div class=\"ibox-body\">\n                <div class=\"table-responsive table-wrapper\">\n                        <!--(onCellPrepared)=\"onCellPrepared1($event)\"-->\n                        <dx-data-grid #dxDataGridPrisoner id=\"dxDataGridPrisoner\" [dataSource]=\"attachmentList\"\n                                keyExpr=\"id\" [hoverStateEnabled]=\"true\" noDataText=\"\" showBorders=\"true\"\n                                [rowAlternationEnabled]=\"true\" [columnAutoWidth]=\"false\" class=\"card-list-table\"\n                                [allowColumnResizing]=\"true\" [allowColumnReordering]=\"true\"\n                                (onCellPrepared)=\"onCellPrepared($event)\" [wordWrapEnabled]=\"false\"\n                                [(selectedRowKeys)]=\"selectedAttachment\" class=\"card-list-table\">\n                                <dxo-paging [pageSize]=\"dxgridPageSize\"></dxo-paging>\n                                <dxo-pager [showPageSizeSelector]=\"true\"\n                                        [allowedPageSizes]=\"[allowedPageSizes1, allowedPageSizes2, allowedPageSizes3, allowedPageSizes4]\"\n                                        [showInfo]=\"false\" [visible]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n                                <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n                                <dxo-remote-operations [sorting]=\"true\" [paging]=\"true\"></dxo-remote-operations>\n                                <dxo-selection *ngIf=\"mode !== 'VIEW'\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"\n                                        mode=\"multiple\" style=\"min-width: 50px !important;\"></dxo-selection>\n                                <dxo-state-storing [enabled]=\"true\" type=\"localStorage\"\n                                        storageKey=\"attachmentListDataGrid\"></dxo-state-storing>\n                                <dxi-column caption=\"\u0E25\u0E33\u0E14\u0E31\u0E1A\u0E17\u0E35\u0E48\" [allowSorting]=\"false\" cellTemplate=\"cellTemplateNo\"\n                                        alignment=\"center\" [width]=\"70\"></dxi-column>\n                                <dxi-column caption=\"\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23\" [allowSorting]=\"false\" cellTemplate=\"cellTemplateAction\"\n                                        alignment=\"center\" [width]=\"mode !== 'VIEW' ? 255 : 105\"></dxi-column>\n                                <dxi-column dataField=\"recorder_name\" [caption]=\"option.username_caption ?option.username_caption :username_caption\"></dxi-column>\n                                <dxi-column *ngIf=\"type === 3\" dataField=\"book_no\" caption=\"\u0E40\u0E25\u0E02\u0E17\u0E35\u0E48\u0E40\u0E2D\u0E01\u0E2A\u0E32\u0E23\"></dxi-column>\n                                <dxi-column *ngIf=\"type === 2 || type === 1\" dataField=\"name\" caption=\"\u0E0A\u0E37\u0E48\u0E2D\u0E40\u0E2D\u0E01\u0E2A\u0E32\u0E23\">\n                                </dxi-column>\n                                <dxi-column dataField=\"doc_type\" caption=\"\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E40\u0E2D\u0E01\u0E2A\u0E32\u0E23\"></dxi-column>\n                                <dxi-column *ngIf=\"type === 1\" dataField=\"is_classifieds\" caption=\"\u0E08\u0E31\u0E14\u0E40\u0E02\u0E49\u0E32\u0E27\u0E32\u0E23\u0E30\">\n                                </dxi-column>\n                                <!--<dxi-column dataField=\"order\" caption=\"\u0E25\u0E33\u0E14\u0E31\u0E1A\"></dxi-column>-->\n                                <dxi-column dataField=\"created_at\" caption=\"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E2A\u0E23\u0E49\u0E32\u0E07/\u0E19\u0E33\u0E40\u0E02\u0E49\u0E32\" dataType=\"date\"\n                                        alignment=\"center\" [width]=\"100\"></dxi-column>\n                                <dxi-column *ngIf=\"type === 3\" dataField=\"record_date\" dataType=\"date\"\n                                        caption=\"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E08\u0E31\u0E14\u0E40\u0E01\u0E47\u0E1A\" alignment=\"center\" [width]=\"100\"></dxi-column>\n                                <dxi-column *ngIf=\"type === 2 || type === 1\" dataField=\"remark\" caption=\"\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E2B\u0E15\u0E38\">\n                                </dxi-column>\n                                <!--<dxi-column *ngIf=\"type === 3\" dataField=\"amount\" caption=\"\u0E08\u0E33\u0E19\u0E27\u0E19\"></dxi-column>-->\n                                <!--<dxi-column *ngIf=\"type === 4\" dataField=\"version\" caption=\"\u0E40\u0E27\u0E2D\u0E23\u0E4C\u0E0A\u0E31\u0E48\u0E19\"></dxi-column>-->\n                                <dxi-column *ngIf=\"showImage\" caption=\"\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E2B\u0E21\u0E32\u0E22\" cellTemplate=\"cellTemplateImage\">\n                                </dxi-column>\n                                <div *dxTemplate=\"let data of 'cellTemplateImage'\" class=\" text-center\">\n                                        <img *ngIf=\"showImage\" [src]=\"getImageLink(data.data)\"\n                                                style=\"width: auto !important;\">\n                                </div>\n                                <div *dxTemplate=\"let data of 'cellTemplateNo'\" class=\" text-center\">\n                                        <span>{{getRowIndex(data)}}</span>\n                                </div>\n                                <div *dxTemplate=\"let data of 'cellTemplateAction'\">\n                                        <a *ngIf=\"mode !== 'VIEW'\" id=\"btnEdit\" (click)=\"clickEdit(data.data)\"\n                                                class=\"btn btn-default btn-sm  icon\" data-toggle=\"tooltip\"\n                                                data-placement=\"top\" title=\"\u0E41\u0E01\u0E49\u0E44\u0E02\"><i class=\"fal fa-pencil-alt\"></i></a>\n                                        <a id=\"btnView\" (click)=\"clickView(data.data)\"\n                                                class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\"\n                                                data-placement=\"top\" title=\"\u0E14\u0E39\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\"><i class=\"fal fa-eye\"></i></a>\n                                        <a *ngIf=\"data.rowIndex !== 0 && mode !== 'VIEW'\" id=\"btnMoveUp\"\n                                                (click)=\"clickMoveUp(data)\" class=\"btn btn-default btn-sm icon\"\n                                                data-toggle=\"tooltip\" data-placement=\"top\" title=\"\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E02\u0E36\u0E49\u0E19\"><i\n                                                        class=\"fal fa-arrow-up\"></i></a>\n                                        <a *ngIf=\"data.rowIndex < data.component.pageSize() -1 && data.rowIndex < attachmentList.length - 1 && mode !== 'VIEW'\"\n                                                id=\"btnMoveDown\" (click)=\"clickMoveDown(data)\"\n                                                class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\"\n                                                data-placement=\"top\" title=\"\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E25\u0E07\"><i\n                                                        class=\"fal fa-arrow-down\"></i></a>\n                                        <a id=\"btnDownload\" (click)=\"clickDownload(data.data)\"\n                                                class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\"\n                                                data-placement=\"top\" title=\"\u0E14\u0E32\u0E27\u0E19\u0E4C\u0E42\u0E2B\u0E25\u0E14\"><i\n                                                        class=\"fal fa-download\"></i></a>\n                                </div>\n                        </dx-data-grid>\n                </div>\n        </div>\n</div>\n<!--End col-sm-12-->\n<!--<modal-step #modalStep (onUpdateModal)='getAttachmentList()' (onCreateModal)=\"addAttachmentList($event)\" [mode]=\"mode\"></modal-step>-->\n<modal-attachment #modalAttachment (onModalCreateSubmit)=\"addAttachmentList($event)\"\n        (onModalEditSubmit)=\"editAttachmentList($event)\" [isImage]=\"showImage\"></modal-attachment>\n<modal-attachment-view #modalAttachmentView [isImage]=\"showImage\"></modal-attachment-view>\n<app-alert #myModal (onOkDeleteAttachment)=\"fnDeleteMultiple()\" (onClickBack)=\"onClickBack()\"></app-alert>\n"
            }] }
];
/** @nocollapse */
AttachmentListComponent.ctorParameters = () => [
    { type: AppConfigService },
    { type: Request },
    { type: Common },
    { type: B2bService }
];
AttachmentListComponent.propDecorators = {
    mode: [{ type: Input }],
    type: [{ type: Input }],
    option: [{ type: Input }],
    showImage: [{ type: Input }],
    alertModal: [{ type: Input }],
    attachmentModal: [{ type: Input }],
    attachmentViewModal: [{ type: Input }],
    onLoaded: [{ type: Output }],
    onClickScan: [{ type: Output }],
    onClickDelete: [{ type: Output }],
    dxDataGridAttachmentList: [{ type: ViewChild, args: ['dxDataGridAttachmentList',] }],
    modalAttachment: [{ type: ViewChild, args: ['modalAttachment',] }],
    modalAttachmentView: [{ type: ViewChild, args: ['modalAttachmentView',] }],
    myModal: [{ type: ViewChild, args: ['myModal',] }]
};
if (false) {
    /** @type {?} */
    AttachmentListComponent.prototype.mode;
    /** @type {?} */
    AttachmentListComponent.prototype.type;
    /** @type {?} */
    AttachmentListComponent.prototype.option;
    /** @type {?} */
    AttachmentListComponent.prototype.showImage;
    /** @type {?} */
    AttachmentListComponent.prototype.alertModal;
    /** @type {?} */
    AttachmentListComponent.prototype.attachmentModal;
    /** @type {?} */
    AttachmentListComponent.prototype.attachmentViewModal;
    /** @type {?} */
    AttachmentListComponent.prototype.onLoaded;
    /** @type {?} */
    AttachmentListComponent.prototype.onClickScan;
    /** @type {?} */
    AttachmentListComponent.prototype.onClickDelete;
    /** @type {?} */
    AttachmentListComponent.prototype.dxDataGridAttachmentList;
    /** @type {?} */
    AttachmentListComponent.prototype.modalAttachment;
    /** @type {?} */
    AttachmentListComponent.prototype.modalAttachmentView;
    /** @type {?} */
    AttachmentListComponent.prototype.myModal;
    /** @type {?} */
    AttachmentListComponent.prototype.columns;
    /** @type {?} */
    AttachmentListComponent.prototype.attachmentList;
    /** @type {?} */
    AttachmentListComponent.prototype.th;
    /** @type {?} */
    AttachmentListComponent.prototype.dxgridPageSize;
    /** @type {?} */
    AttachmentListComponent.prototype.allowedPageSizes1;
    /** @type {?} */
    AttachmentListComponent.prototype.allowedPageSizes2;
    /** @type {?} */
    AttachmentListComponent.prototype.allowedPageSizes3;
    /** @type {?} */
    AttachmentListComponent.prototype.allowedPageSizes4;
    /** @type {?} */
    AttachmentListComponent.prototype.customers;
    /** @type {?} */
    AttachmentListComponent.prototype.url;
    /** @type {?} */
    AttachmentListComponent.prototype.lastStep;
    /** @type {?} */
    AttachmentListComponent.prototype.config;
    /** @type {?} */
    AttachmentListComponent.prototype.deleteIdList;
    /** @type {?} */
    AttachmentListComponent.prototype.dsAttachment;
    /** @type {?} */
    AttachmentListComponent.prototype.selectedAttachment;
    /** @type {?} */
    AttachmentListComponent.prototype.tmpId;
    /** @type {?} */
    AttachmentListComponent.prototype.classifieds;
    /** @type {?} */
    AttachmentListComponent.prototype.downloadToken;
    /** @type {?} */
    AttachmentListComponent.prototype.username_caption;
    /** @type {?} */
    AttachmentListComponent.prototype.appConfigService;
    /** @type {?} */
    AttachmentListComponent.prototype.request;
    /** @type {?} */
    AttachmentListComponent.prototype.common;
    /** @type {?} */
    AttachmentListComponent.prototype.b2b;
}

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvYy1hcHAtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9hdHRhY2htZW50LWxpc3QvYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQU14RyxNQUFNOzs7Ozs7O0lBeUNGLFlBQ1ksa0JBQ0EsU0FDQSxRQUNBO1FBSEEscUJBQWdCLEdBQWhCLGdCQUFnQjtRQUNoQixZQUFPLEdBQVAsT0FBTztRQUNQLFdBQU0sR0FBTixNQUFNO1FBQ04sUUFBRyxHQUFILEdBQUc7b0JBM0M2QixRQUFRO29CQUM1QixDQUFDO3lCQUVLLEtBQUs7d0JBSWQsSUFBSSxZQUFZLEVBQUU7MkJBQ2YsSUFBSSxZQUFZLEVBQUU7NkJBQ2hCLElBQUksWUFBWSxFQUFFO3VCQVdsQyxDQUFDLFVBQVUsRUFB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RDs7OztZQWRRLGdCQUFnQjtZQUVoQixPQUFPO1lBQ1AsTUFBTTtZQUtOLFVBQVU7OzttQkFTZCxLQUFLO21CQUNMLEtBQUs7cUJBQ0wsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7OEJBQ0wsS0FBSztrQ0FDTCxLQUFLO3VCQUNMLE1BQU07MEJBQ04sTUFBTTs0QkFDTixNQUFNO3VDQUNOLFNBQVMsU0FBQywwQkFBMEI7OEJBSXBDLFNBQVMsU0FBQyxpQkFBaUI7a0NBRTNCLFNBQVMsU0FBQyxxQkFBcUI7c0JBRS9CLFNBQVMsU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbFN0ZXBDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1zdGVwL21vZGFsLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9hcHAtY29uZmlnL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBEeERhdGFHcmlkQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcbmltcG9ydCB7IFJlcXVlc3QgfSBmcm9tICcuLi9fc2VydmljZXMvcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL19zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFN0ZXBWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtc3RlcC12aWV3L21vZGFsLXN0ZXAtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtYXR0YWNobWVudC9tb2RhbC1hdHRhY2htZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDcmVhdGVBbGVydENvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCMmJTZXJ2aWNlIH0gZnJvbSAnLi4vX3NlcnZpY2VzL2IyYi5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsQXR0YWNobWVudFZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1hdHRhY2htZW50LXZpZXcvbW9kYWwtYXR0YWNobWVudC12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc29jLWF0dGFjaG1lbnQtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgbW9kZTogJ0NSRUFURScgfCAnRURJVCcgfCAnVklFVycgPSAnQ1JFQVRFJztcbiAgICBASW5wdXQoKSB0eXBlOiBudW1iZXIgPSAyO1xuICAgIEBJbnB1dCgpIG9wdGlvbjogYW55O1xuICAgIEBJbnB1dCgpIHNob3dJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGFsZXJ0TW9kYWw6IENyZWF0ZUFsZXJ0Q29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGF0dGFjaG1lbnRNb2RhbDogTW9kYWxBdHRhY2htZW50Q29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGF0dGFjaG1lbnRWaWV3TW9kYWw6IE1vZGFsQXR0YWNobWVudFZpZXdDb21wb25lbnQ7XG4gICAgQE91dHB1dCgpIG9uTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvbkNsaWNrU2NhbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25DbGlja0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAVmlld0NoaWxkKCdkeERhdGFHcmlkQXR0YWNobWVudExpc3QnKVxuICAgIGR4RGF0YUdyaWRBdHRhY2htZW50TGlzdDogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgICAvLyBAVmlld0NoaWxkKCdtb2RhbFN0ZXAnKVxuICAgIC8vIG1vZGFsU3RlcDogTW9kYWxTdGVwQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ21vZGFsQXR0YWNobWVudCcpXG4gICAgbW9kYWxBdHRhY2htZW50OiBNb2RhbEF0dGFjaG1lbnRDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnbW9kYWxBdHRhY2htZW50VmlldycpXG4gICAgbW9kYWxBdHRhY2htZW50VmlldzogTW9kYWxBdHRhY2htZW50Vmlld0NvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdteU1vZGFsJykgbXlNb2RhbDtcblxuICAgIGNvbHVtbnMgPSBbJ+C4peC4s+C4lOC4seC4muC4l+C4teC5iCcsICfguJzguLnguYnguYHguIHguYnguYTguIInLCAn4Lin4Lix4LiZ4LiX4Li14LmIJywgJ+C4quC4luC4suC4meC4sOC4geC4suC4o+C4leC4tOC4lOC4leC4suC4oScsICfguKvguKHguLLguKLguYDguKvguJXguLgnXTtcbiAgICBhdHRhY2htZW50TGlzdDogYW55ID0gW107XG4gICAgdGg7XG4gICAgZHhncmlkUGFnZVNpemUgPSAxMDtcbiAgICBhbGxvd2VkUGFnZVNpemVzMSA9IDEwO1xuICAgIGFsbG93ZWRQYWdlU2l6ZXMyID0gMjU7XG4gICAgYWxsb3dlZFBhZ2VTaXplczMgPSA1MDtcbiAgICBhbGxvd2VkUGFnZVNpemVzNCA9IDEwMDtcbiAgICBjdXN0b21lcnMgPSBbXTtcbiAgICB1cmw7XG4gICAgbGFzdFN0ZXAgPSAnJztcbiAgICBjb25maWc6IGFueTtcbiAgICBkZWxldGVJZExpc3QgPSBbXTtcbiAgICBkc0F0dGFjaG1lbnQgPSBbXTtcbiAgICBzZWxlY3RlZEF0dGFjaG1lbnQgPSBbXTtcbiAgICB0bXBJZCA9IC0xO1xuICAgIGNsYXNzaWZpZWRzID0gMDtcbiAgICBkb3dubG9hZFRva2VuO1xuICAgIHVzZXJuYW1lX2NhcHRpb24gPSAn4Lic4Li54LmJ4Lia4Lix4LiZ4LiX4Li24LiBL+C4nOC4ueC5ieC4meC4s+C5gOC4guC5ieC4sidcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlcXVlc3Q6IFJlcXVlc3QsXG4gICAgICAgIHByaXZhdGUgY29tbW9uOiBDb21tb24sXG4gICAgICAgIHByaXZhdGUgYjJiOiBCMmJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkVG9rZW4gPSBhd2FpdCB0aGlzLmIyYi5nZXRBdHRhY2htZW50VG9rZW4oKTtcbiAgICAgICAgfSwgNTAwKVxuICAgICAgICBpZiAodGhpcy5tb2RlICE9PSBcIkNSRUFURVwiKSB7XG4gICAgICAgICAgICB0aGlzLmdldEF0dGFjaG1lbnRMaXN0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZ2V0QXR0YWNobWVudExpc3QoKSB7XG5cbiAgICAgICAgY29uc29sZS5sb2coJ2dldEF0dGFjaG1lbnRMaXN0JywgdGhpcy5hdHRhY2htZW50TGlzdCwgdGhpcy5vcHRpb24udXNlcm5hbWVfY2FwdGlvbik7XG4gICAgICAgIGxldCBmaWx0ZXI6IGFueSA9IHtcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHJlZl90YWJsZTogdGhpcy5vcHRpb24uZGF0YS5yZWZfdGFibGUsXG4gICAgICAgICAgICAgICAgcmVmX2lkOiB0aGlzLm9wdGlvbi5kYXRhLnJlZl9pZCxcbiAgICAgICAgICAgICAgICBzeXN0ZW1faWQ6IHRoaXMub3B0aW9uLmRhdGEuc3lzdGVtX2lkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3JkZXJfYnk6IFtcIm9yZGVyX25vXCJdXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9uLmRhdGEucmVzdWx0X3RhYmxlX2lkKSBmaWx0ZXIuZmlsdGVyLnJlc3VsdF90YWJsZV9pZCA9IHRoaXMub3B0aW9uLmRhdGEucmVzdWx0X3RhYmxlX2lkO1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5yZXF1ZXN0LnBvc3QoJy9zZWFyY2gvcmNfYXR0YWNobWVudF9wcm9wJywgZmlsdGVyKTtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50TGlzdCA9IGRhdGEucmVzdWx0RGF0YTtcbiAgICAgICAgdGhpcy5jbGFzc2lmaWVkcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgb2YgdGhpcy5hdHRhY2htZW50TGlzdCkge1xuICAgICAgICAgICAgaWYgKGkuaXNfY2xhc3NpZmllZHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzaWZpZWRzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ2dldEF0dGFjaG1lbnRMaXN0JywgdGhpcy5hdHRhY2htZW50TGlzdCk7XG4gICAgICAgIHRoaXMub25Mb2FkZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIGFkZEF0dGFjaG1lbnRMaXN0KGRhdGEpIHtcbiAgICAgICAgZGF0YS5pZCA9IHRoaXMudG1wSWQ7XG4gICAgICAgIHRoaXMudG1wSWQtLTtcbiAgICAgICAgaWYgKHRoaXMuYjJiLmdldFZlcmlmeVRva2VuKCkucGhvbmVCb29rRGF0YSAmJiB0aGlzLmIyYi5nZXRWZXJpZnlUb2tlbigpLnBob25lQm9va0RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZGF0YS51c2VybmFtZSA9IHRoaXMuYjJiLmdldFZlcmlmeVRva2VuKCkudXNlcm5hbWU7XG4gICAgICAgICAgICBkYXRhLnJlY29yZGVyX25hbWUgPSB0aGlzLmIyYi5nZXRWZXJpZnlUb2tlbigpLnBob25lQm9va0RhdGFbMF0ubmFtZTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhLmFjdGlvbiA9IFwiYWRkXCI7XG4gICAgICAgIGlmIChkYXRhLmlzX2NsYXNzaWZpZWRzKSB7XG4gICAgICAgICAgICB0aGlzLmNsYXNzaWZpZWRzKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdHRhY2htZW50TGlzdC5wdXNoKGRhdGEpO1xuICAgICAgICBjb25zb2xlLmxvZygnZ2V0QXR0YWNobWVudExpc3QnLCB0aGlzLmF0dGFjaG1lbnRMaXN0KTtcbiAgICB9XG5cbiAgICBlZGl0QXR0YWNobWVudExpc3QoZGF0YSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXR0YWNobWVudExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF0dGFjaG1lbnRMaXN0W2ldLmlkID09PSBkYXRhLmlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNfY2xhc3NpZmllZHMgJiYgIXRoaXMuYXR0YWNobWVudExpc3RbaV0uaXNfY2xhc3NpZmllZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGFzc2lmaWVkcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWRhdGEuaXNfY2xhc3NpZmllZHMgJiYgdGhpcy5hdHRhY2htZW50TGlzdFtpXS5pc19jbGFzc2lmaWVkcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsYXNzaWZpZWRzLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNobWVudExpc3RbaV0gPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdnZXRBdHRhY2htZW50TGlzdCcsIHRoaXMuYXR0YWNobWVudExpc3QpO1xuICAgIH1cblxuICAgIGdldFJvd0luZGV4KGRhdGEpIHtcbiAgICAgICAgaWYgKCFkYXRhLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBkYXRhLmRhdGEub3JkZXJfbm8gPSBkYXRhLmNvbXBvbmVudC5wYWdlSW5kZXgoKSAqIGRhdGEuY29tcG9uZW50LnBhZ2VTaXplKCkgKyBkYXRhLnJvd0luZGV4ICsgMTtcbiAgICAgICAgcmV0dXJuIGRhdGEuZGF0YS5vcmRlcl9ubztcbiAgICB9XG4gICAgY2xpY2tBZGQoKSB7XG4gICAgICAgIHRoaXMub3B0aW9uLm1vZGUgPSAnQ1JFQVRFJztcbiAgICAgICAgaWYgKHRoaXMuYXR0YWNobWVudE1vZGFsKSB7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRNb2RhbC5vcGVuKHRoaXMub3B0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxBdHRhY2htZW50Lm9wZW4odGhpcy5vcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNsaWNrRWRpdChkYXRhKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjbGlja0VkaXQnLCBkYXRhKVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBkYXRhLmZpbGVuYW1lXG4gICAgICAgIGxldCBmaWxlVHlwZSA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sZW5ndGggLSAzLCBmaWxlTmFtZS5sZW5ndGgpXG4gICAgICAgIGNvbnNvbGUubG9nKCdmaWxlVHlwZScsIGZpbGVUeXBlKVxuICAgICAgICBpZiAodGhpcy50eXBlID09IDEgJiYgKGZpbGVUeXBlID09ICdwZGYnIHx8IGZpbGVUeXBlID09ICdQREYnKSkge1xuICAgICAgICAgICAgY29uc3QgZWRpdERhdGEgPSBfLmNsb25lRGVlcCh0aGlzLm9wdGlvbik7XG4gICAgICAgICAgICBlZGl0RGF0YS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIGVkaXREYXRhLm1vZGUgPSAnRURJVCc7XG4gICAgICAgICAgICBlZGl0RGF0YS5kb3dubG9hZFRva2VuID0gdGhpcy5kb3dubG9hZFRva2VuO1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrU2Nhbi5lbWl0KGVkaXREYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgY29uc3QgZWRpdERhdGEgPSBfLmNsb25lRGVlcCh0aGlzLm9wdGlvbik7XG4gICAgICAgICAgICBlZGl0RGF0YS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIGVkaXREYXRhLm1vZGUgPSAnRURJVCc7XG4gICAgICAgICAgICBlZGl0RGF0YS5kb3dubG9hZFRva2VuID0gdGhpcy5kb3dubG9hZFRva2VuO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXR0YWNobWVudE1vZGFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50TW9kYWwub3BlbihlZGl0RGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxBdHRhY2htZW50Lm9wZW4oZWRpdERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG4gICAgY2xpY2tWaWV3KGRhdGEpIHtcbiAgICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YS5maWxlbmFtZVxuICAgICAgICBsZXQgZmlsZVR5cGUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGVuZ3RoIC0gMywgZmlsZU5hbWUubGVuZ3RoKVxuICAgICAgICBjb25zb2xlLmxvZygnZmlsZVR5cGUnLCBmaWxlVHlwZSlcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAxICYmIChmaWxlVHlwZSA9PSAncGRmJyB8fCBmaWxlVHlwZSA9PSAnUERGJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdEYXRhID0gXy5jbG9uZURlZXAodGhpcy5vcHRpb24pO1xuICAgICAgICAgICAgdmlld0RhdGEuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB2aWV3RGF0YS5tb2RlID0gJ1ZJRVcnO1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrU2Nhbi5lbWl0KHZpZXdEYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdEYXRhID0gXy5jbG9uZURlZXAodGhpcy5vcHRpb24pO1xuICAgICAgICAgICAgdmlld0RhdGEuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB2aWV3RGF0YS5tb2RlID0gJ1ZJRVcnO1xuICAgICAgICAgICAgdmlld0RhdGEuZG93bmxvYWRUb2tlbiA9IHRoaXMuZG93bmxvYWRUb2tlbjtcbiAgICAgICAgICAgIGlmICh0aGlzLmF0dGFjaG1lbnRWaWV3TW9kYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRWaWV3TW9kYWwub3Blbih2aWV3RGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxBdHRhY2htZW50Vmlldy5vcGVuKHZpZXdEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGlja01vdmVVcChkYXRhKSB7XG4gICAgICAgIGxldCB0bXAgPSB0aGlzLmF0dGFjaG1lbnRMaXN0W2RhdGEucm93SW5kZXhdO1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnRMaXN0W2RhdGEucm93SW5kZXhdID0gdGhpcy5hdHRhY2htZW50TGlzdFtkYXRhLnJvd0luZGV4IC0gMV07XG4gICAgICAgIHRoaXMuYXR0YWNobWVudExpc3RbZGF0YS5yb3dJbmRleCAtIDFdID0gdG1wO1xuICAgIH1cbiAgICBjbGlja01vdmVEb3duKGRhdGEpIHtcbiAgICAgICAgbGV0IHRtcCA9IHRoaXMuYXR0YWNobWVudExpc3RbZGF0YS5yb3dJbmRleF07XG4gICAgICAgIHRoaXMuYXR0YWNobWVudExpc3RbZGF0YS5yb3dJbmRleF0gPSB0aGlzLmF0dGFjaG1lbnRMaXN0W2RhdGEucm93SW5kZXggKyAxXTtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50TGlzdFtkYXRhLnJvd0luZGV4ICsgMV0gPSB0bXA7XG4gICAgfVxuICAgIGFzeW5jIGNsaWNrRG93bmxvYWQoZGF0YSkge1xuICAgICAgICB3aW5kb3cub3BlbihkYXRhLnVybCArIFwiP2Rvd25sb2FkVG9rZW49XCIgKyB0aGlzLmRvd25sb2FkVG9rZW4pO1xuICAgIH1cbiAgICBnZXRMYXN0U3RlcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFN0ZXA7XG4gICAgfVxuICAgIC8qKiBTVEFSVCBERUxFVEUgKi9cbiAgICBmbkNsaWNrRGVsZXRlKGlkTGlzdDogYW55W10pIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrRGVsZXRlLmVtaXQoKTtcbiAgICAgICAgdGhpcy5kZWxldGVJZExpc3QgPSBpZExpc3Q7XG4gICAgICAgIGlmICh0aGlzLmRlbGV0ZUlkTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25maXJtRGVsZXRlKCkge1xuICAgICAgICB0aGlzLmdvQWxlcnQoJycsICcnLCAnbXlNb2RhbERlbGV0ZUF0dGFjaG1lbnQnKTtcbiAgICB9XG5cbiAgICBnb0FsZXJ0KHVzZXJUaXRsZSwgdXNlck1lc3NhZ2UsIG1vZGFsSWQpIHtcbiAgICAgICAgY29uc3QgZGF0YUFsZXJ0ID0ge1xuICAgICAgICAgICAgJ21vZGFsSWQnOiBtb2RhbElkLFxuICAgICAgICAgICAgJ3VzZXJUaXRsZSc6IHVzZXJUaXRsZSxcbiAgICAgICAgICAgICd1c2VyTWVzc2FnZSc6IHVzZXJNZXNzYWdlXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmFsZXJ0TW9kYWwpIHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRNb2RhbC5vcGVuTW9kYWwoZGF0YUFsZXJ0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubXlNb2RhbC5vcGVuTW9kYWwoZGF0YUFsZXJ0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2VsbFByZXBhcmVkKGUpIHtcbiAgICAgICAgaWYgKGUucm93VHlwZSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgICBlLmNlbGxFbGVtZW50LmFjY2Vzc0tleSA9IGUuY29sdW1uLmNhcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmbkRlbGV0ZU11bHRpcGxlKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMuZGVsZXRlSWRMaXN0XCIsIHRoaXMuZGVsZXRlSWRMaXN0KTtcbiAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmF0dGFjaG1lbnRMaXN0IGJlZm9yZVwiLCB0aGlzLmF0dGFjaG1lbnRMaXN0KTtcbiAgICAgICAgZm9yIChsZXQgaWQgb2YgdGhpcy5kZWxldGVJZExpc3QpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmF0dGFjaG1lbnRMaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXR0YWNobWVudExpc3RbaV0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0dGFjaG1lbnRMaXN0W2ldLmlzX2NsYXNzaWZpZWRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsYXNzaWZpZWRzLS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50TGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5hdHRhY2htZW50TGlzdCBhZnRlclwiLCB0aGlzLmF0dGFjaG1lbnRMaXN0KTtcbiAgICB9XG4gICAgb25DbGlja0JhY2soKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiY2xpY2tiYWNrXCIpO1xuICAgIH1cblxuICAgIGdldEltYWdlTGluayhkYXRhKSB7XG4gICAgICAgIHJldHVybiBkYXRhLnVybCArIFwiP2Rvd25sb2FkVG9rZW49XCIgKyB0aGlzLmRvd25sb2FkVG9rZW47XG4gICAgfVxuXG4gICAgc2NhbigpIHtcbiAgICAgICAgdGhpcy5vcHRpb24ubW9kZSA9ICdDUkVBVEUnO1xuICAgICAgICB0aGlzLm9uQ2xpY2tTY2FuLmVtaXQodGhpcy5vcHRpb24pO1xuICAgIH1cblxufVxuIl19