gamma-app-controller 1.1.6 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. package/esm2020/lib/application-controller/application-controller.module.mjs +10 -5
  2. package/esm2020/lib/application-controller/application-dataset-call.service.mjs +15 -10
  3. package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +14 -10
  4. package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +17 -11
  5. package/esm2020/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +30 -19
  6. package/esm2020/lib/application-controller/support-components/dash-today-previous/dash-today-previous.component.mjs +278 -0
  7. package/esm2020/public-api.mjs +2 -1
  8. package/fesm2015/gamma-app-controller.mjs +346 -48
  9. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  10. package/fesm2020/gamma-app-controller.mjs +339 -48
  11. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  12. package/lib/application-controller/application-controller.module.d.ts +12 -11
  13. package/lib/application-controller/application-dataset-call.service.d.ts +2 -1
  14. package/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.d.ts +2 -1
  15. package/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.d.ts +2 -1
  16. package/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.d.ts +3 -0
  17. package/lib/application-controller/support-components/dash-today-previous/dash-today-previous.component.d.ts +63 -0
  18. package/package.json +1 -1
  19. package/public-api.d.ts +1 -0
@@ -17,35 +17,46 @@ export class GammaTodayPreviousComponent {
17
17
  }
18
18
  else {
19
19
  this.isLoader = true;
20
+ this.selectedColumn = (value.kpiConfig.dataConfig.columns &&
21
+ value.kpiConfig.dataConfig.columns.length !== 0) ? value.kpiConfig.dataConfig.columns[0].dataField : "";
22
+ this.sortBy = value.kpiConfig?.dataConfig?.sortBy;
23
+ this.isPreviousDay = value.kpiConfig?.dataConfig?.isPreviousDay;
20
24
  if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {
21
25
  this.page_config = value;
22
- const sortedData = value.kpiConfig.dataSource.sort((a, b) => {
23
- return moment(b.recordDate, "YYYY-MM-DD").diff(moment(a.recordDate, "YYYY-MM-DD"));
24
- });
26
+ let sortedData = value.kpiConfig.dataSource;
27
+ if (this.sortBy?.length) {
28
+ let sortKey = this.sortBy[0];
29
+ sortedData = sortedData.sort((a, b) => {
30
+ return moment(b[sortKey], "YYYY-MM-DD").diff(moment(a[sortKey], "YYYY-MM-DD"));
31
+ });
32
+ }
25
33
  this.currentDateData = sortedData[0];
26
- this.prevousDaysData = sortedData[1];
27
- let calValue = Math.abs((parseInt(this.getDynamicValue(this.currentDateData)) - parseInt(this.getDynamicValue(this.prevousDaysData))) / parseInt(this.getDynamicValue(this.currentDateData)));
28
- this.calculatedValue = this.commonService.reformatNumberWithThousandSeparatorV4(calValue, 3);
34
+ const timeValue = parseInt(value.kpiConfig?.dataConfig?.timeValue) || 1;
35
+ this.prevousDaysData = this.isPreviousDay ? sortedData[timeValue] || null : null;
36
+ if (this.isPreviousDay && this.prevousDaysData) {
37
+ let calValue = Math.abs((parseInt(this.getDynamicValue(this.currentDateData)) - parseInt(this.getDynamicValue(this.prevousDaysData))) /
38
+ parseInt(this.getDynamicValue(this.currentDateData)));
39
+ this.calculatedValue = this.commonService.reformatNumberWithThousandSeparatorV4(calValue, 3);
40
+ }
41
+ else {
42
+ this.calculatedValue = null;
43
+ }
29
44
  this.isLoader = false;
30
45
  }
31
- else {
32
- }
33
46
  }
34
47
  }
35
48
  ngOnInit() {
36
49
  }
37
50
  getDynamicValue(data) {
38
- const keys = Object.keys(data);
39
- const dynamicKey = keys.find(key => !key.toLowerCase().includes('date'));
40
- if (dynamicKey) {
41
- let value = data[dynamicKey];
42
- const numericValue = Number(value);
43
- if (!isNaN(numericValue)) {
44
- return this.commonService.abbreviateNumber(numericValue);
45
- }
46
- return value;
51
+ if (!this.selectedColumn || !data.hasOwnProperty(this.selectedColumn)) {
52
+ return null;
53
+ }
54
+ let value = data[this.selectedColumn];
55
+ const numericValue = Number(value);
56
+ if (!isNaN(numericValue)) {
57
+ return this.commonService.abbreviateNumber(numericValue);
47
58
  }
48
- return null;
59
+ return value;
49
60
  }
50
61
  formatNumber(value) {
51
62
  if (value >= 1e9) {
@@ -71,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
71
82
  type: Input,
72
83
  args: ['chartDataSource']
73
84
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdG9kYXktcHJldmlvdXMvZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdG9kYXktcHJldmlvdXMvZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQVE5QyxNQUFNLE9BQU8sMkJBQTJCO0lBU3RDLFlBQ1UsR0FBc0IsRUFDdkIsYUFBNEI7UUFEM0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFDakMsQ0FBQztJQUVMLElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsT0FBTztTQUNSO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJ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O2tCQUx2QyxTQUFTOytCQUNFLDBCQUEwQjtvSUFtQmhDLGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICcuLy4uLy4uLy4uL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nYW1tYS10b2RheS1wcmV2aW91cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9nYW1tYS10b2RheS1wcmV2aW91cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dhbW1hLXRvZGF5LXByZXZpb3VzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR2FtbWFUb2RheVByZXZpb3VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gY2hhcnRfYXR0ci5sZWdlbmRbMF1cbiAgb2JqZWN0ZGF0YVNvdXJjZTogYW55O1xuICBpc0NoYXJ0dmlzaWJsZTogYm9vbGVhbjtcbiAgaXNMb2FkZXI6IGJvb2xlYW47XG4gIHBhZ2VfY29uZmlnOiBhbnk7XG4gIGN1cnJlbnREYXRlRGF0YTogYW55O1xuICBwcmV2b3VzRGF5c0RhdGE6IGFueTtcbiAgY2FsY3VsYXRlZFZhbHVlOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxuICApIHsgfVxuXG4gIEBJbnB1dCgnY2hhcnREYXRhU291cmNlJylcbiAgc2V0IGNoYXJ0RGF0YVNvdXJjZSh2YWx1ZSkge1xuICAgIHRoaXMub2JqZWN0ZGF0YVNvdXJjZSA9IHZhbHVlO1xuICAgIC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICBpZiAodGhpcy5vYmplY3RkYXRhU291cmNlID09PSB1bmRlZmluZWQgfHwgdGhpcy5vYmplY3RkYXRhU291cmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pc0NoYXJ0dmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgIC8vIHRoaXMua2V5VG9wYXNzID0gdmFsdWUua3BpQ29uZmlnLmtleVRvUGFzcztcbiAgICAgIGlmICh2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZSAmJiB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhpcy5wYWdlX2NvbmZpZyA9IHZhbHVlO1xuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2Uuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIHJldHVybiBtb21lbnQoYi5yZWNvcmREYXRlLCBcIllZWVktTU0tRERcIikuZGlmZihtb21lbnQoYS5yZWNvcmREYXRlLCBcIllZWVktTU0tRERcIikpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdGVwIDI6IEdldCB0aGUgbW9zdCByZWNlbnQgYW5kIHByZXZpb3VzIGRhdGVzXG4gICAgICAgIHRoaXMuY3VycmVudERhdGVEYXRhID0gc29ydGVkRGF0YVswXTtcbiAgICAgICAgdGhpcy5wcmV2b3VzRGF5c0RhdGEgPSBzb3J0ZWREYXRhWzFdO1xuICAgICAgICBsZXQgY2FsVmFsdWUgPSBNYXRoLmFicygocGFyc2VJbnQodGhpcy5nZXREeW5hbWljVmFsdWUodGhpcy5jdXJyZW50RGF0ZURhdGEpKSAtIHBhcnNlSW50KHRoaXMuZ2V0RHluYW1pY1ZhbHVlKHRoaXMucHJldm91c0RheXNEYXRhKSkpIC8gcGFyc2VJbnQodGhpcy5nZXREeW5hbWljVmFsdWUodGhpcy5jdXJyZW50RGF0ZURhdGEpKSk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlZFZhbHVlID0gdGhpcy5jb21tb25TZXJ2aWNlLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yVjQoY2FsVmFsdWUsIDMpXG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBnZXREeW5hbWljVmFsdWUoZGF0YTogYW55KTogbnVtYmVyIHwgc3RyaW5nIHwgYW55IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XG4gICAgY29uc3QgZHluYW1pY0tleSA9IGtleXMuZmluZChrZXkgPT4gIWtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdkYXRlJykpO1xuICAgIGlmIChkeW5hbWljS2V5KSB7XG4gICAgICBsZXQgdmFsdWUgPSBkYXRhW2R5bmFtaWNLZXldO1xuICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICghaXNOYU4obnVtZXJpY1ZhbHVlKSkge1xuICAgICAgICAvLyBsZXQgY2FsX251bWJlciA9IE1hdGguYWJzKG51bWVyaWNWYWx1ZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZS5hYmJyZXZpYXRlTnVtYmVyKG51bWVyaWNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZvcm1hdE51bWJlcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA+PSAxZTkpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTkpLnRvRml4ZWQoMSkgKyAnQic7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxZTYpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTYpLnRvRml4ZWQoMSkgKyAnTSc7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxZTMpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTMpLnRvRml4ZWQoMSkgKyAnSyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtc3RhcnQgYmctZ3JheS04MDAgcC0zIG14LTIgdGV4dC1jZW50ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkZXJcIj5cbiAgICAgICAgPGFwcC1sb2FkZXI+PC9hcHAtbG9hZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdGVhbC00MDAgdGV4dC01eGwgZm9udC1zZW1pYm9sZFwiPnt7IGdldER5bmFtaWNWYWx1ZShjdXJyZW50RGF0ZURhdGEpIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTQwMCB0ZXh0LXNtIGZvbnQtbGlnaHQgbS0yXCI+XG4gICAgICAgICAgICAgICAgUHJldm91czoge3sgZ2V0RHluYW1pY1ZhbHVlKHByZXZvdXNEYXlzRGF0YSkgfX1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdGVhbC00MDBcIj4oe3tjYWxjdWxhdGVkVmFsdWV9fSUpPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PiJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdG9kYXktcHJldmlvdXMvZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdG9kYXktcHJldmlvdXMvZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQVM5QyxNQUFNLE9BQU8sMkJBQTJCO0lBV3RDLFlBQ1UsR0FBc0IsRUFDdkIsYUFBNEI7UUFEM0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFDakMsQ0FBQztJQUVMLElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsT0FBTztTQUNSO2FBQU07WUFFTCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJ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QztRQUN0QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUV4QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDMUQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRCxZQUFZLENBQUMsS0FBSztRQUNoQixJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUU7WUFDaEIsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3ZDO2FBQU0sSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUN2QzthQUFNLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtZQUN2QixPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDdkM7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7d0hBM0ZVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLGdIQ1Z4Qyw0bkJBZU07MkZETE8sMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLDBCQUEwQjtvSUFzQmhDLGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICcuLy4uLy4uLy4uL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nYW1tYS10b2RheS1wcmV2aW91cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9nYW1tYS10b2RheS1wcmV2aW91cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dhbW1hLXRvZGF5LXByZXZpb3VzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBHYW1tYVRvZGF5UHJldmlvdXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBvYmplY3RkYXRhU291cmNlOiBhbnk7XG4gIGlzQ2hhcnR2aXNpYmxlOiBib29sZWFuO1xuICBpc0xvYWRlcjogYm9vbGVhbjtcbiAgcGFnZV9jb25maWc6IGFueTtcbiAgY3VycmVudERhdGVEYXRhOiBhbnk7XG4gIHByZXZvdXNEYXlzRGF0YTogYW55O1xuICBjYWxjdWxhdGVkVmFsdWU6IGFueTtcbiAgaXNQcmV2aW91c0RheTogYm9vbGVhbjtcbiAgc29ydEJ5OiBhbnk7XG4gIHNlbGVjdGVkQ29sdW1uOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxuICApIHsgfVxuXG4gIEBJbnB1dCgnY2hhcnREYXRhU291cmNlJylcbiAgc2V0IGNoYXJ0RGF0YVNvdXJjZSh2YWx1ZSkge1xuICAgIHRoaXMub2JqZWN0ZGF0YVNvdXJjZSA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMub2JqZWN0ZGF0YVNvdXJjZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMub2JqZWN0ZGF0YVNvdXJjZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaXNDaGFydHZpc2libGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcblxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9ICh2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jb2x1bW5zICYmXG4gICAgICAgIHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbHVtbnMubGVuZ3RoICE9PSAwKSA/IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbHVtbnNbMF0uZGF0YUZpZWxkIDogXCJcIjtcbiAgICAgIHRoaXMuc29ydEJ5ID0gdmFsdWUua3BpQ29uZmlnPy5kYXRhQ29uZmlnPy5zb3J0Qnk7XG4gICAgICB0aGlzLmlzUHJldmlvdXNEYXkgPSB2YWx1ZS5rcGlDb25maWc/LmRhdGFDb25maWc/LmlzUHJldmlvdXNEYXk7XG4gICAgICBpZiAodmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UgJiYgdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHRoaXMucGFnZV9jb25maWcgPSB2YWx1ZTtcblxuICAgICAgICBsZXQgc29ydGVkRGF0YSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlO1xuICAgICAgICBpZiAodGhpcy5zb3J0Qnk/Lmxlbmd0aCkge1xuICAgICAgICAgIGxldCBzb3J0S2V5ID0gdGhpcy5zb3J0QnlbMF07XG4gICAgICAgICAgc29ydGVkRGF0YSA9IHNvcnRlZERhdGEuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudChiW3NvcnRLZXldLCBcIllZWVktTU0tRERcIikuZGlmZihtb21lbnQoYVtzb3J0S2V5XSwgXCJZWVlZLU1NLUREXCIpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBc3NpZ24gZGF0YSBiYXNlZCBvbiBpc1ByZXZpb3VzRGF5IGZsYWdcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZURhdGEgPSBzb3J0ZWREYXRhWzBdO1xuICAgICAgICBjb25zdCB0aW1lVmFsdWUgPSBwYXJzZUludCh2YWx1ZS5rcGlDb25maWc/LmRhdGFDb25maWc/LnRpbWVWYWx1ZSkgfHwgMTtcbiAgICAgICAgdGhpcy5wcmV2b3VzRGF5c0RhdGEgPSB0aGlzLmlzUHJldmlvdXNEYXkgPyBzb3J0ZWREYXRhW3RpbWVWYWx1ZV0gfHwgbnVsbCA6IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmlzUHJldmlvdXNEYXkgJiYgdGhpcy5wcmV2b3VzRGF5c0RhdGEpIHtcbiAgICAgICAgICBsZXQgY2FsVmFsdWUgPSBNYXRoLmFicyhcbiAgICAgICAgICAgIChwYXJzZUludCh0aGlzLmdldER5bmFtaWNWYWx1ZSh0aGlzLmN1cnJlbnREYXRlRGF0YSkpIC0gcGFyc2VJbnQodGhpcy5nZXREeW5hbWljVmFsdWUodGhpcy5wcmV2b3VzRGF5c0RhdGEpKSkgL1xuICAgICAgICAgICAgcGFyc2VJbnQodGhpcy5nZXREeW5hbWljVmFsdWUodGhpcy5jdXJyZW50RGF0ZURhdGEpKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVkVmFsdWUgPSB0aGlzLmNvbW1vblNlcnZpY2UucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWNChjYWxWYWx1ZSwgMyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVkVmFsdWUgPSBudWxsOyAvLyBObyBwcmV2aW91cyBkYXRhLCBubyBwZXJjZW50YWdlIGNhbGN1bGF0aW9uXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgZ2V0RHluYW1pY1ZhbHVlKGRhdGE6IGFueSk6IG51bWJlciB8IHN0cmluZyB8IGFueSB7XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDb2x1bW4gfHwgIWRhdGEuaGFzT3duUHJvcGVydHkodGhpcy5zZWxlY3RlZENvbHVtbikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IGRhdGFbdGhpcy5zZWxlY3RlZENvbHVtbl07XG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHtcbiAgICAgIC8vIGxldCBjYWxfbnVtYmVyID0gTWF0aC5hYnMobnVtZXJpY1ZhbHVlKVxuICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZS5hYmJyZXZpYXRlTnVtYmVyKG51bWVyaWNWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICAvLyAgIHJldHVybiBudWxsO1xuICAvLyB9XG4gIGZvcm1hdE51bWJlcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA+PSAxZTkpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTkpLnRvRml4ZWQoMSkgKyAnQic7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxZTYpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTYpLnRvRml4ZWQoMSkgKyAnTSc7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxZTMpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTMpLnRvRml4ZWQoMSkgKyAnSyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLXN0YXJ0IGJnLWdyYXktODAwIHAtMyBteC0yIHRleHQtY2VudGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGVyXCI+XG4gICAgICAgIDxhcHAtbG9hZGVyPjwvYXBwLWxvYWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRlYWwtNDAwIHRleHQtNXhsIGZvbnQtc2VtaWJvbGRcIj57eyBnZXREeW5hbWljVmFsdWUoY3VycmVudERhdGVEYXRhKSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS00MDAgdGV4dC1zbSBmb250LWxpZ2h0IG0tMlwiPlxuICAgICAgICAgICAgICAgIFByZXZvdXM6IHt7IGdldER5bmFtaWNWYWx1ZShwcmV2b3VzRGF5c0RhdGEpIH19XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRlYWwtNDAwXCI+KHt7Y2FsY3VsYXRlZFZhbHVlfX0lKTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvbmctY29udGFpbmVyPlxuXG48L2Rpdj4iXX0=