soc-date-box.js
20.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
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { NgModule, Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { SharedModule } from 'primeng/primeng';
import { DxDateBoxModule } from 'devextreme-angular/ui/date-box';
import { Common } from '../_services/common.service';
import { formatDate } from "devextreme/localization";
import moment from 'moment-es6';
import { locale } from 'devextreme/localization';
import 'devextreme-intl';
import { baseZIndex } from 'devextreme/ui/overlay';
// # Calendar TH
locale('th'); // # Calendar TH
baseZIndex(9999);
var SocDateBoxComponent = /** @class */ (function () {
function SocDateBoxComponent(common) {
var _this = this;
this.common = common;
this.id = '';
this.width = '100%';
this.type = 'date';
this.max = undefined;
this.min = undefined;
this.acceptCustomValue = true;
this.maxZoomLevel = 'month';
this.minZoomLevel = 'century';
this.valueChange = new EventEmitter();
this.openOnFieldClick = true;
this.disabled = false;
this.interval = 30;
this.showAnalogClock = false;
this.format = {
formatter: function (date) {
if (_this.type === 'datetime') {
return formatDate(date, 'shortDateShortTime');
}
else if (_this.type === 'time') {
return formatDate(date, 'shortTime');
}
else {
return formatDate(date, 'shortDate');
}
},
parser: function (date) {
/** @type {?} */
var format = 'D/M/YYYY';
if (_this.type === 'datetime') {
format = 'D/M/YYYY HH:mm';
}
else if (_this.type === 'time') {
format = 'HH:mm';
}
/** @type {?} */
var dateFormated = moment(date, format, true).subtract(543, 'year').toDate();
return dateFormated;
}
};
/**
* START Bind Value
*/
this.onModelChange = function () { };
this.onModelTouched = function () { };
}
/**
* @return {?}
*/
SocDateBoxComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/];
});
});
};
/**
* @return {?}
*/
SocDateBoxComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
};
/**
* @return {?}
*/
SocDateBoxComponent.prototype.onOpened = /**
* @return {?}
*/
function () {
this.common.fnChangeCalendarYear(); // # Calendar TH
if (this.maxZoomLevel === 'year' || this.maxZoomLevel === 'decade') {
this.common.fnChangeCalendarYearOnce(); // # Calendar TH
}
/** *
* SECTION แก้ปัญหา ปฏิทินไม่แสดงใน modal ที่ prod
@type {?} */
var element = document.querySelector('.dx-overlay-wrapper.dx-dropdowneditor-overlay.dx-popup-wrapper.dx-datebox-wrapper.dx-datebox-wrapper-date.dx-datebox-wrapper-calendar');
/** @type {?} */
var subElement = document.querySelector('.dx-overlay-wrapper.dx-dropdowneditor-overlay.dx-popup-wrapper.dx-datebox-wrapper.dx-datebox-wrapper-date.dx-datebox-wrapper-calendar > .dx-overlay-content.dx-popup-normal');
if (element) {
/** @type {?} */
var style = element.getAttribute('style');
/** @type {?} */
var newStyle = style.replace('z-index: 1501;', 'z-index: 2050;');
console.log('LOG: SocDateBoxComponent -> onOpened -> newStyle element', newStyle);
element.setAttribute('style', newStyle);
}
if (subElement) {
/** @type {?} */
var style = subElement.getAttribute('style');
/** @type {?} */
var newStyle = style.replace('z-index: 1501;', 'z-index: 2050;');
console.log('LOG: SocDateBoxComponent -> onOpened -> newStyle subElement', newStyle);
subElement.setAttribute('style', newStyle);
}
/** !SECTION */
};
/**
* @param {?} e
* @return {?}
*/
SocDateBoxComponent.prototype.onValueChanged = /**
* @param {?} e
* @return {?}
*/
function (e) {
console.log("SocDateBoxComponent -> onValueChanged -> e", e);
this.valueChange.emit(e.value);
};
/**
* @param {?} value
* @return {?}
*/
SocDateBoxComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) { };
/**
* @param {?} fn
* @return {?}
*/
SocDateBoxComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) { };
/**
* @param {?} fn
* @return {?}
*/
SocDateBoxComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) { };
SocDateBoxComponent.decorators = [
{ type: Component, args: [{
selector: 'soc-date-box',
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(function () { return SocDateBoxComponent; }),
multi: true
}],
template: "\n <dx-date-box [showAnalogClock]=\"showAnalogClock\" [id]=\"id\" [(value)]=\"value\" [type]=\"type\" [disabled]=\"disabled\" [width]=\"width\" [interval]=\"interval\" [acceptCustomValue]=\"true\" [displayFormat]=\"format\" invalidDateMessage=\"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07 \u0E01\u0E23\u0E38\u0E13\u0E32\u0E01\u0E23\u0E2D\u0E01\u0E40\u0E1B\u0E47\u0E19 \u0E27\u0E31\u0E19/\u0E40\u0E14\u0E37\u0E2D\u0E19/\u0E1B\u0E35\"\n [openOnFieldClick]=\"openOnFieldClick\" (onOpened)=\"onOpened()\" (onValueChanged)=\"onValueChanged($event)\" [max]=\"max\" [min]=\"min\" [maxZoomLevel]=\"maxZoomLevel\" [minZoomLevel]=\"minZoomLevel\"></dx-date-box>\n\n"
}] }
];
/** @nocollapse */
SocDateBoxComponent.ctorParameters = function () { return [
{ type: Common }
]; };
SocDateBoxComponent.propDecorators = {
id: [{ type: Input }],
width: [{ type: Input }],
type: [{ type: Input }],
value: [{ type: Input }],
max: [{ type: Input }],
min: [{ type: Input }],
acceptCustomValue: [{ type: Input }],
maxZoomLevel: [{ type: Input }],
minZoomLevel: [{ type: Input }],
valueChange: [{ type: Output }],
openOnFieldClick: [{ type: Input }],
disabled: [{ type: Input }],
interval: [{ type: Input }],
showAnalogClock: [{ type: Input }]
};
return SocDateBoxComponent;
}());
export { SocDateBoxComponent };
if (false) {
/** @type {?} */
SocDateBoxComponent.prototype.id;
/** @type {?} */
SocDateBoxComponent.prototype.width;
/** @type {?} */
SocDateBoxComponent.prototype.type;
/** @type {?} */
SocDateBoxComponent.prototype.value;
/** @type {?} */
SocDateBoxComponent.prototype.max;
/** @type {?} */
SocDateBoxComponent.prototype.min;
/** @type {?} */
SocDateBoxComponent.prototype.acceptCustomValue;
/** @type {?} */
SocDateBoxComponent.prototype.maxZoomLevel;
/** @type {?} */
SocDateBoxComponent.prototype.minZoomLevel;
/** @type {?} */
SocDateBoxComponent.prototype.valueChange;
/** @type {?} */
SocDateBoxComponent.prototype.openOnFieldClick;
/** @type {?} */
SocDateBoxComponent.prototype.disabled;
/** @type {?} */
SocDateBoxComponent.prototype.interval;
/** @type {?} */
SocDateBoxComponent.prototype.showAnalogClock;
/** @type {?} */
SocDateBoxComponent.prototype.format;
/**
* START Bind Value
* @type {?}
*/
SocDateBoxComponent.prototype.onModelChange;
/** @type {?} */
SocDateBoxComponent.prototype.onModelTouched;
/** @type {?} */
SocDateBoxComponent.prototype.common;
}
var SharedDateBoxModule = /** @class */ (function () {
function SharedDateBoxModule() {
}
SharedDateBoxModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, FormsModule, SharedModule, DxDateBoxModule],
exports: [SocDateBoxComponent, SharedModule],
declarations: [SocDateBoxComponent],
},] }
];
return SharedDateBoxModule;
}());
export { SharedDateBoxModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jLWRhdGUtYm94LmpzIiwic291cmNlUm9vdCI6Im5nOi8vc29jLWFwcC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL190ZW1wbGF0ZS9zb2MtZGF0ZS1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0gsUUFBUSxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQ3ZFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLE1BQU0sTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQUVqRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDYixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7O0lBa0RiLDZCQUFvQixNQUFjO1FBQWxDLGlCQUF3QztRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFRO2tCQW5DcEIsRUFBRTtxQkFDQyxNQUFNO29CQUNQLE1BQU07bUJBRVAsU0FBUzttQkFDVCxTQUFTO2lDQUNLLElBQUk7NEJBQ1QsT0FBTzs0QkFDUCxTQUFTOzJCQUNhLElBQUksWUFBWSxFQUFVO2dDQUM1QyxJQUFJO3dCQUNaLEtB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QWhCLFVBQWlCLEVBQVksS0FBVzs7Ozs7SUFDeEMsK0NBQWlCOzs7O0lBQWpCLFVBQWtCLEVBQVksS0FBVzs7Z0JBN0Y1QyxTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFNBQVMsRUFBRSxDQUFDOzRCQUNSLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLG1CQUFtQixFQUFuQixDQUFtQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDZCxDQUFDO29CQUNGLFFBQVEsRUFBRSw0c0JBSWI7aUJBQ0E7Ozs7Z0JBckJRLE1BQU07OztxQkF1QlYsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSztzQkFDTCxLQUFLO3NCQUNMLEtBQUs7b0NBQ0wsS0FBSzsrQkFDTCxLQUFLOytCQUNMLEtBQUs7OEJBQ0wsTUFBTTttQ0FDTixLQUFLOzJCQUNMLEtBQUs7MkJBQ0wsS0FBSztrQ0FDTCxLQUFLOzs4QkE3Q1Y7O1NBK0JhLG1CQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFxRi9CLFFBQVEsU0FBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ25FLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQztvQkFDNUMsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ3RDOzs4QkF4SEQ7O1NBeUhhLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgTmdNb2R1bGUsIENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEFmdGVyVmlld0luaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcHJpbWVuZyc7XG4vLyBpbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnLi4vX3NlcnZpY2VzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEeERhdGVCb3hNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvZGF0ZS1ib3gnO1xuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vX3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tIFwiZGV2ZXh0cmVtZS9sb2NhbGl6YXRpb25cIjtcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LWVzNic7XG5pbXBvcnQgeyBsb2NhbGUgfSBmcm9tICdkZXZleHRyZW1lL2xvY2FsaXphdGlvbic7IC8vICMgQ2FsZW5kYXIgVEhcbmltcG9ydCAnZGV2ZXh0cmVtZS1pbnRsJztcbmltcG9ydCB7YmFzZVpJbmRleH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9vdmVybGF5Jztcbi8vICMgQ2FsZW5kYXIgVEhcbmxvY2FsZSgndGgnKTsvLyAjIENhbGVuZGFyIFRIXG5iYXNlWkluZGV4KDk5OTkpO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzb2MtZGF0ZS1ib3gnLFxuICAgIHByb3ZpZGVyczogW3tcbiAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNvY0RhdGVCb3hDb21wb25lbnQpLFxuICAgICAgICBtdWx0aTogdHJ1ZVxuICAgIH1dLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGR4LWRhdGUtYm94IFtzaG93QW5hbG9nQ2xvY2tdPVwic2hvd0FuYWxvZ0Nsb2NrXCIgW2lkXT1cImlkXCIgWyh2YWx1ZSldPVwidmFsdWVcIiBbdHlwZV09XCJ0eXBlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3dpZHRoXT1cIndpZHRoXCIgW2ludGVydmFsXT1cImludGVydmFsXCIgW2FjY2VwdEN1c3RvbVZhbHVlXT1cInRydWVcIiBbZGlzcGxheUZvcm1hdF09XCJmb3JtYXRcIiBpbnZhbGlkRGF0ZU1lc3NhZ2U9XCLguKfguLHguJnguJfguLXguYjguYTguKHguYjguJbguLnguIHguJXguYnguK3guIcg4LiB4Lij4Li44LiT4Liy4LiB4Lij4Lit4LiB4LmA4Lib4LmH4LiZIOC4p+C4seC4mS/guYDguJTguLfguK3guJkv4Lib4Li1XCJcbiAgICBbb3Blbk9uRmllbGRDbGlja109XCJvcGVuT25GaWVsZENsaWNrXCIgKG9uT3BlbmVkKT1cIm9uT3BlbmVkKClcIiAob25WYWx1ZUNoYW5nZWQpPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiIFttYXhdPVwibWF4XCIgW21pbl09XCJtaW5cIiBbbWF4Wm9vbUxldmVsXT1cIm1heFpvb21MZXZlbFwiIFttaW5ab29tTGV2ZWxdPVwibWluWm9vbUxldmVsXCI+PC9keC1kYXRlLWJveD5cblxuYFxufSlcbmV4cG9ydCBjbGFzcyBTb2NEYXRlQm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgaWQgPSAnJztcbiAgICBASW5wdXQoKSB3aWR0aCA9ICcxMDAlJztcbiAgICBASW5wdXQoKSB0eXBlID0gJ2RhdGUnO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgbWF4ID0gdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIG1pbiA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBhY2NlcHRDdXN0b21WYWx1ZSA9IHRydWU7XG4gICAgQElucHV0KCkgbWF4Wm9vbUxldmVsID0gJ21vbnRoJztcbiAgICBASW5wdXQoKSBtaW5ab29tTGV2ZWwgPSAnY2VudHVyeSc7XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBJbnB1dCgpIG9wZW5PbkZpZWxkQ2xpY2sgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgaW50ZXJ2YWw6IG51bWJlciA9IDMwO1xuICAgIEBJbnB1dCgpIHNob3dBbmFsb2dDbG9jazogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGZvcm1hdCA9IHtcbiAgICAgICAgZm9ybWF0dGVyOiAoZGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGV0aW1lJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXREYXRlKGRhdGUsICdzaG9ydERhdGVTaG9ydFRpbWUnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAndGltZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZShkYXRlLCAnc2hvcnRUaW1lJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXREYXRlKGRhdGUsICdzaG9ydERhdGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcGFyc2VyOiAoZGF0ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IGZvcm1hdCA9ICdEL00vWVlZWSc7XG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gJ0QvTS9ZWVlZIEhIOm1tJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAndGltZScpIHtcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSAnSEg6bW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGF0ZUZvcm1hdGVkID0gbW9tZW50KGRhdGUsIGZvcm1hdCwgdHJ1ZSkuc3VidHJhY3QoNTQzLCAneWVhcicpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGVGb3JtYXRlZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21tb246IENvbW1vbiwpIHsgfVxuICAgIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgfVxuICAgIG9uT3BlbmVkKCkge1xuICAgICAgICB0aGlzLmNvbW1vbi5mbkNoYW5nZUNhbGVuZGFyWWVhcigpOyAvLyAjIENhbGVuZGFyIFRIXG4gICAgICAgIGlmICh0aGlzLm1heFpvb21MZXZlbCA9PT0gJ3llYXInIHx8IHRoaXMubWF4Wm9vbUxldmVsID09PSAnZGVjYWRlJykge1xuICAgICAgICAgICAgdGhpcy5jb21tb24uZm5DaGFuZ2VDYWxlbmRhclllYXJPbmNlKCk7IC8vICMgQ2FsZW5kYXIgVEhcbiAgICAgICAgfVxuICAgICAgICAvKiogU0VDVElPTiDguYHguIHguYnguJvguLHguI3guKvguLIg4Lib4LiP4Li04LiX4Li04LiZ4LmE4Lih4LmI4LmB4Liq4LiU4LiH4LmD4LiZIG1vZGFsIOC4l+C4teC5iCBwcm9kICovXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZHgtb3ZlcmxheS13cmFwcGVyLmR4LWRyb3Bkb3duZWRpdG9yLW92ZXJsYXkuZHgtcG9wdXAtd3JhcHBlci5keC1kYXRlYm94LXdyYXBwZXIuZHgtZGF0ZWJveC13cmFwcGVyLWRhdGUuZHgtZGF0ZWJveC13cmFwcGVyLWNhbGVuZGFyJyk7XG4gICAgICAgIGNvbnN0IHN1YkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZHgtb3ZlcmxheS13cmFwcGVyLmR4LWRyb3Bkb3duZWRpdG9yLW92ZXJsYXkuZHgtcG9wdXAtd3JhcHBlci5keC1kYXRlYm94LXdyYXBwZXIuZHgtZGF0ZWJveC13cmFwcGVyLWRhdGUuZHgtZGF0ZWJveC13cmFwcGVyLWNhbGVuZGFyID4gLmR4LW92ZXJsYXktY29udGVudC5keC1wb3B1cC1ub3JtYWwnKTtcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgICAgICBjb25zdCBuZXdTdHlsZSA9IHN0eWxlLnJlcGxhY2UoJ3otaW5kZXg6IDE1MDE7JywgJ3otaW5kZXg6IDIwNTA7Jyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTE9HOiBTb2NEYXRlQm94Q29tcG9uZW50IC0+IG9uT3BlbmVkIC0+IG5ld1N0eWxlIGVsZW1lbnQnLCBuZXdTdHlsZSk7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBuZXdTdHlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN1YkVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gc3ViRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgICAgICBjb25zdCBuZXdTdHlsZSA9IHN0eWxlLnJlcGxhY2UoJ3otaW5kZXg6IDE1MDE7JywgJ3otaW5kZXg6IDIwNTA7Jyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTE9HOiBTb2NEYXRlQm94Q29tcG9uZW50IC0+IG9uT3BlbmVkIC0+IG5ld1N0eWxlIHN1YkVsZW1lbnQnLCBuZXdTdHlsZSk7XG4gICAgICAgICAgICBzdWJFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBuZXdTdHlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqICFTRUNUSU9OICovXG4gICAgfVxuICAgIG9uVmFsdWVDaGFuZ2VkKGU6YW55KSB7XG5cdFx0Y29uc29sZS5sb2coXCLigItTb2NEYXRlQm94Q29tcG9uZW50IC0+IG9uVmFsdWVDaGFuZ2VkIC0+IGVcIiwgZSlcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGUudmFsdWUpO1xuICAgIH1cbiAgICAvLyBkaXNwbGF5Rm9ybWF0ICh2YWx1ZSkge1xuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuKAi1NvY0RhdGVCb3hDb21wb25lbnQgLT4gZGlzcGxheUZvcm1hdCAtPiB2YWx1ZVwiLCB2YWx1ZSlcbiAgICAvLyAgICAgY29uc3QgeWVhciA9IG1vbWVudCh2YWx1ZSkuZ2V0KCd5ZWFyJyk7XG5cdC8vIFx0Y29uc29sZS5sb2coXCLigItTb2NEYXRlQm94Q29tcG9uZW50IC0+IGRpc3BsYXlGb3JtYXQgLT4geWVhclwiLCB5ZWFyKVxuICAgIC8vICAgICAvLyBsZXQgZGF0ZVN0cmluZyA9IGZvcm1hdERhdGUodmFsdWUsIFwibG9uZ0RhdGVcIik7XG4gICAgLy8gICAgIGxldCBkYXRlU3RyaW5nID0gIG1vbWVudCh2YWx1ZSkuYWRkKDU0MywneWVhcicpLmZvcm1hdCgnREQvTU0vWVlZWScpXG4gICAgLy8gICAgIHJldHVybiBkYXRlU3RyaW5nO1xuICAgIC8vIH1cbiAgICAvKiogU1RBUlQgQmluZCBWYWx1ZSAqL1xuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHsgfVxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7IH1cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHsgfVxuICAgIC8qKiBFTkQgQmluZCBWYWx1ZSAqL1xuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFNoYXJlZE1vZHVsZSwgRHhEYXRlQm94TW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU29jRGF0ZUJveENvbXBvbmVudCwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtTb2NEYXRlQm94Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkRGF0ZUJveE1vZHVsZSB7IH1cbiJdfQ==