tnx-shared 5.3.334 → 5.3.336

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.
@@ -35,6 +35,14 @@ export class WorkflowPermissionDetailService extends BaseService {
35
35
  return __awaiter(this, void 0, void 0, function* () {
36
36
  if (callBackWhenNotHaveStatus == null) {
37
37
  callBackWhenNotHaveStatus = (itemStatus, rowItem) => {
38
+ if (rowItem[fieldKey]
39
+ && rowItem.workflowCode
40
+ && rowItem.currentStateCode) {
41
+ itemStatus.textTrangThai = 'Đã bắt đầu quy trình';
42
+ itemStatus.trangThai = rowItem.currentStateCode;
43
+ itemStatus.workflowCode = rowItem.workflowCode;
44
+ itemStatus.permission = PermissionBase.READ;
45
+ }
38
46
  };
39
47
  }
40
48
  const itemId = data[fieldKey];
@@ -49,7 +57,7 @@ export class WorkflowPermissionDetailService extends BaseService {
49
57
  else {
50
58
  sorts.push(new Sort({ field: 'permission', dir: -1 }), new Sort({ field: 'inComing', dir: -1 }));
51
59
  }
52
- const dataStatus = (yield this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts)).data;
60
+ const dataStatus = (yield this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts, 'ForCrudList')).data;
53
61
  if (dataStatus == null) {
54
62
  const notifierService = this._injector.get(NotifierService);
55
63
  return notifierService.showWarning('Không lấy được thông tin trạng thái hiện tại của bản ghi');
@@ -63,10 +71,11 @@ export class WorkflowPermissionDetailService extends BaseService {
63
71
  textTrangThai: 'Chưa chạy quy trình'
64
72
  };
65
73
  if (itemId) {
66
- const lstItemStatus = dataStatus.filter(q => q.itemId == itemId && q.userId == userIdCurrent);
67
- if (ignoreWorkflow === true && lstItemStatus.length === 0) {
68
- lstItemStatus.push(...dataStatus.filter(q => q.itemId === itemId));
69
- }
74
+ // const lstItemStatus = dataStatus.filter(q => q.itemId == itemId && q.userId == userIdCurrent);
75
+ // if (ignoreWorkflow === true && lstItemStatus.length === 0) {
76
+ // lstItemStatus.push(...dataStatus.filter(q => q.itemId === itemId));
77
+ // }
78
+ const lstItemStatus = dataStatus.filter(q => q.itemId === itemId);
70
79
  // let itemStatus = null;
71
80
  if (lstItemStatus.length) {
72
81
  itemStatus = lstItemStatus.find(q => (q.permission & PermissionBase.EDIT) == PermissionBase.EDIT);
@@ -111,6 +120,14 @@ export class WorkflowPermissionDetailService extends BaseService {
111
120
  return __awaiter(this, void 0, void 0, function* () {
112
121
  if (callBackWhenNotHaveStatus == null) {
113
122
  callBackWhenNotHaveStatus = (itemStatus, rowItem) => {
123
+ if (rowItem[fieldKey]
124
+ && rowItem.workflowCode
125
+ && rowItem.currentStateCode) {
126
+ itemStatus.textTrangThai = 'Đã bắt đầu quy trình';
127
+ itemStatus.trangThai = rowItem.currentStateCode;
128
+ itemStatus.workflowCode = rowItem.workflowCode;
129
+ itemStatus.permission = PermissionBase.READ;
130
+ }
114
131
  };
115
132
  }
116
133
  const lstItemId = data.filter(q => q[fieldKey]).map(q => q[fieldKey]);
@@ -122,13 +139,11 @@ export class WorkflowPermissionDetailService extends BaseService {
122
139
  filters.push(this.newFilter('tableName', Operator.equal, this.tableName));
123
140
  }
124
141
  const sorts = [];
125
- if (!ignoreWorkflow) {
126
- filters.push(this.newFilter('userId', Operator.equal, userIdCurrent));
127
- }
128
- else {
129
- sorts.push(new Sort({ field: 'permission', dir: -1 }), new Sort({ field: 'inComing', dir: -1 }));
130
- }
131
- const dataStatus = (yield this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts)).data;
142
+ // if (!ignoreWorkflow) {
143
+ // filters.push(this.newFilter('userId', Operator.equal, userIdCurrent));
144
+ // }
145
+ sorts.push(new Sort({ field: 'permission', dir: -1 }), new Sort({ field: 'inComing', dir: -1 }));
146
+ const dataStatus = (yield this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts, 'ForCrudList')).data;
132
147
  if (dataStatus == null) {
133
148
  const notifierService = this._injector.get(NotifierService);
134
149
  return notifierService.showWarning('Không lấy được thông tin trạng thái hiện tại của bản ghi');
@@ -151,4 +166,4 @@ WorkflowPermissionDetailService.ctorParameters = () => [
151
166
  { type: Injector },
152
167
  { type: ModuleConfigService }
153
168
  ];
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcGVybWlzc2lvbi1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy93b3JrZmxvdy1wZXJtaXNzaW9uLWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUtyRCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsV0FBVztJQU81RCxZQUNJLElBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLG9CQUF5QztRQUV6QyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsMkJBQTJCLENBQUMsQ0FBQztRQVZwTCxvQkFBZSxHQUVuQixFQUFFLENBQUM7UUFDUCxlQUFVLEdBQUcsMEJBQTBCLENBQUM7UUFDeEMsY0FB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Q0FBQyxDQUFDO2FBQ2xHO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLHdCQUF3QixDQUN6QixPQUFPLEVBQ1AsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUNqQixhQUFhLEVBQ2IsY0FBYyxFQUNkLFVBQVUsRUFDVix5QkFBeUIsQ0FDNUIsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUFBOzs7O1lBcE1KLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBYlEsVUFBVTtZQUNFLFFBQVE7WUFPcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEdW1teVdvcmtmbG93Q29kZSB9IGZyb20gJy4uL2NsYXNzZXMvY29uc3RhbnRzJztcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBNb2R1bGVDb25maWcgfSBmcm9tICcuLi9jb25maWdzL21vZHVsZS1jb25maWcnO1xuaW1wb3J0IHsgUGVybWlzc2lvbkJhc2UgfSBmcm9tICcuLi9lbnVtcy9jb21tb24nO1xuaW1wb3J0IHsgU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmllci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xuICAgIHJlYWRvbmx5IF9tb2R1bGVDb25maWc6IE1vZHVsZUNvbmZpZztcbiAgICBwcml2YXRlIHNlcnZpY2VNYW5hZ2Vyczoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBCYXNlU2VydmljZVxuICAgIH0gPSB7fTtcbiAgICBlbnRpdHlOYW1lID0gJ1dvcmtmbG93UGVybWlzc2lvbkRldGFpbCc7XG4gICAgdGFibGVOYW1lID0gJyc7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaHR0cCwgaW5qZWN0b3IsIGAke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi53b3JrZmxvd0VuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L1dvcmtmbG93UGVybWlzc2lvbkRldGFpbGApO1xuICAgICAgICB0aGlzLmVuZFBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLndvcmtmbG93RW5kcG9pbnQ7XG5cbiAgICAgICAgdGhpcy5fbW9kdWxlQ29uZmlnID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJTZXJ2aWNlKHNldHRpbmdLZXk6IHN0cmluZywgc2VydmljZTogQmFzZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlTWFuYWdlcnNbc2V0dGluZ0tleV0gPSBzZXJ2aWNlO1xuICAgIH1cblxuICAgIGdldEVuZHBvaW50QnlTZXJ2aWNlKHNlcnZpY2U6IEJhc2VTZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBgJHtzZXJ2aWNlLmVuZFBvaW50fS8ke3RoaXMuX21vZHVsZUNvbmZpZy5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufWA7XG4gICAgfVxuXG4gICAgY2hhbmdlRW5kcG9pbnQoYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlKTogV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZSB7XG4gICAgICAgIHRoaXMuc2VydmljZVVyaSA9IGAke3RoaXMuZ2V0RW5kcG9pbnRCeVNlcnZpY2UoYmFzZVNlcnZpY2UpfS9Xb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxgO1xuICAgICAgICB0aGlzLnRhYmxlTmFtZSA9IGJhc2VTZXJ2aWNlLmVudGl0eU5hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuXG4gICAgYXN5bmMgYXBwZW5kSW5mb0ZvcldvcmtmbG93U2luZ2xlKFxuICAgICAgICB1c2VySWRDdXJyZW50OiBzdHJpbmcsXG4gICAgICAgIGRhdGE6IGFueSxcbiAgICAgICAgZmllbGRLZXk6IHN0cmluZyA9ICdpZCcsXG4gICAgICAgIGlnbm9yZVdvcmtmbG93OiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXM6IChpdGVtU3RhdHVzLCByb3dJdGVtKSA9PiB2b2lkID0gbnVsbFxuICAgICkge1xuICAgICAgICBpZiAoY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1cyA9PSBudWxsKSB7XG4gICAgICAgICAgICBjYWxsQmFja1doZW5Ob3RIYXZlU3RhdHVzID0gKGl0ZW1TdGF0dXMsIHJvd0l0ZW0pID0+IHtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbUlkID0gZGF0YVtmaWVsZEtleV07XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaXRlbUlkJywgT3BlcmF0b3IuZXF1YWwsIGl0ZW1JZCksXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignbm90SW5Xb3JrZmxvdycsIE9wZXJhdG9yLmVxdWFsLCBmYWxzZSksXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHNvcnRzID0gW107XG4gICAgICAgIGlmICghaWdub3JlV29ya2Zsb3cpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcigndXNlcklkJywgT3BlcmF0b3IuZXF1YWwsIHVzZXJJZEN1cnJlbnQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNvcnRzLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IFNvcnQoeyBmaWVsZDogJ3Blcm1pc3Npb24nLCBkaXI6IC0xIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBTb3J0KHsgZmllbGQ6ICdpbkNvbWluZycsIGRpcjogLTEgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGFTdGF0dXM6IGFueVtdID0gKGF3YWl0IHRoaXMuZ2V0QWxsKFxuICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICdpdGVtSWQsdXNlcklkLHRyYW5nVGhhaSx0ZXh0VHJhbmdUaGFpLHdvcmtmbG93Q29kZSxwZXJtaXNzaW9uJyxcbiAgICAgICAgICAgIHNvcnRzLFxuICAgICAgICApKS5kYXRhO1xuICAgICAgICBpZiAoZGF0YVN0YXR1cyA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBub3RpZmllclNlcnZpY2UgPSB0aGlzLl9pbmplY3Rvci5nZXQoTm90aWZpZXJTZXJ2aWNlKTtcbiAgICAgICAgICAgIHJldHVybiBub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0tow7RuZyBs4bqleSDEkcaw4bujYyB0aMO0bmcgdGluIHRy4bqhbmcgdGjDoWkgaGnhu4duIHThuqFpIGPhu6dhIGLhuqNuIGdoaScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcHBlbmRXb3JrZmxvd0luZm9Ub0l0ZW0oXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaXRlbUlkLFxuICAgICAgICAgICAgdXNlcklkQ3VycmVudCxcbiAgICAgICAgICAgIGlnbm9yZVdvcmtmbG93LFxuICAgICAgICAgICAgZGF0YVN0YXR1cyxcbiAgICAgICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmRXb3JrZmxvd0luZm9Ub0l0ZW0oXG4gICAgICAgIGRhdGE6IGFueSxcbiAgICAgICAgaXRlbUlkOiBhbnksXG4gICAgICAgIHVzZXJJZEN1cnJlbnQ6IHN0cmluZyxcbiAgICAgICAgaWdub3JlV29ya2Zsb3c6IGJvb2xlYW4sXG4gICAgICAgIGRhdGFTdGF0dXM6IGFueVtdLFxuICAgICAgICBjYWxsQmFja1doZW5Ob3RIYXZlU3RhdHVzOiAoaXRlbVN0YXR1cywgcm93SXRlbSkgPT4gdm9pZCA9IG51bGxcbiAgICApIHtcbiAgICAgICAgbGV0IGl0ZW1TdGF0dXM6IGFueSA9IHtcbiAgICAgICAgICAgIHRleHRUcmFuZ1RoYWk6ICdDaMawYSBjaOG6oXkgcXV5IHRyw6xuaCdcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaXRlbUlkKSB7XG4gICAgICAgICAgICBjb25zdCBsc3RJdGVtU3RhdHVzID0gZGF0YVN0YXR1cy5maWx0ZXIocSA9PiBxLml0ZW1JZCA9PSBpdGVtSWQgJiYgcS51c2VySWQgPT0gdXNlcklkQ3VycmVudCk7XG4gICAgICAgICAgICBpZiAoaWdub3JlV29ya2Zsb3cgPT09IHRydWUgJiYgbHN0SXRlbVN0YXR1cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBsc3RJdGVtU3RhdHVzLnB1c2goLi4uZGF0YVN0YXR1cy5maWx0ZXIocSA9PiBxLml0ZW1JZCA9PT0gaXRlbUlkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBsZXQgaXRlbVN0YXR1cyA9IG51bGw7XG4gICAgICAgICAgICBpZiAobHN0SXRlbVN0YXR1cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpdGVtU3RhdHVzID0gbHN0SXRlbVN0YXR1cy5maW5kKHEgPT4gKHEucGVybWlzc2lvbiAmIFBlcm1pc3Npb25CYXNlLkVESVQpID09IFBlcm1pc3Npb25CYXNlLkVESVQpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtU3RhdHVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cyA9IGxzdEl0ZW1TdGF0dXNbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTuG6v3Uga2jDtG5nIGPDsyBi4bqjbiBnaGkgdHLhuqFuZyB0aMOhaVxuICAgICAgICAvLyBOaMawbmcgxJHDoyB04bqhbyB0YXNrIHLhu5NpIHRow6wgaGnhu4NuIHRo4buLIHRy4bqhbmcgdGjDoWkgXCLEkcOjIHThuqFvIGPDtG5nIHZp4buHY1wiIMSR4buDIHRyw6FuaCB0csaw4budbmcgaOG7o3AgaGnhu4NuIHRo4buLIG7DunQgYuG6r3QgxJHhuqd1IHRo4burYSB0csOqbiBnaWFvIGRp4buHblxuICAgICAgICBpZiAoIWl0ZW1TdGF0dXMudHJhbmdUaGFpKSB7XG4gICAgICAgICAgICBjYWxsQmFja1doZW5Ob3RIYXZlU3RhdHVzKGl0ZW1TdGF0dXMsIGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS5fX3RyYW5nVGhhaSA9IGl0ZW1TdGF0dXMudHJhbmdUaGFpO1xuICAgICAgICBkYXRhLl9fdGV4dFRyYW5nVGhhaSA9IGl0ZW1TdGF0dXMudGV4dFRyYW5nVGhhaTtcbiAgICAgICAgaWYgKGl0ZW1TdGF0dXMud29ya2Zsb3dDb2RlID09IER1bW15V29ya2Zsb3dDb2RlKSB7XG4gICAgICAgICAgICBkYXRhLmhpZGRlbldvcmtmbG93QWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhLl9fd29ya2Zsb3dDb2RlID0gaXRlbVN0YXR1cy53b3JrZmxvd0NvZGU7XG4gICAgICAgIGRhdGEuX19wZXJtaXNzaW9uID0gaXRlbVN0YXR1cy5wZXJtaXNzaW9uO1xuXG4gICAgICAgIGRhdGEuX19kaXNhYmxlRWRpdCA9IHRydWU7XG4gICAgICAgIGRhdGEuX19kaXNhYmxlRGVsZXRlID0gdHJ1ZTtcbiAgICAgICAgaWYgKGRhdGEuYmFzZVBlcm1pc3Npb24gJiBQZXJtaXNzaW9uQmFzZS5FRElUXG4gICAgICAgICAgICB8fCBkYXRhLl9fcGVybWlzc2lvbiAmIFBlcm1pc3Npb25CYXNlLkVESVRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBkYXRhLl9fZGlzYWJsZUVkaXQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRhdGEuX19kaXNhYmxlUGVybWlzc2lvbkVkaXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmJhc2VQZXJtaXNzaW9uICYgUGVybWlzc2lvbkJhc2UuREVMRVRFXG4gICAgICAgICAgICB8fCBkYXRhLl9fcGVybWlzc2lvbiAmIFBlcm1pc3Npb25CYXNlLkRFTEVURVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGRhdGEuX19kaXNhYmxlRGVsZXRlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkYXRhLl9fZGlzYWJsZVBlcm1pc3Npb25EZWxldGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBM4bqleSB0aMOqbSBjw6FjIHRow7RuZyB0aW4gY+G6p24gY2hvIHF1eSB0csOsbmggbmdoaeG7h3AgduG7pSBjaG8gY8OhYyBi4bqjbiBnaGkgdHJvbmcgZGF0YVxuICAgICAqL1xuICAgIGFzeW5jIGFwcGVuZEluZm9Gb3JXb3JrZmxvdyhcbiAgICAgICAgdXNlcklkQ3VycmVudDogc3RyaW5nLCBkYXRhOiBhbnlbXSxcbiAgICAgICAgZmllbGRLZXk6IHN0cmluZyA9ICdpZCcsXG4gICAgICAgIGlnbm9yZVdvcmtmbG93OiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXM6IChpdGVtU3RhdHVzLCByb3dJdGVtKSA9PiB2b2lkID0gbnVsbFxuICAgICkge1xuICAgICAgICBpZiAoY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1cyA9PSBudWxsKSB7XG4gICAgICAgICAgICBjYWxsQmFja1doZW5Ob3RIYXZlU3RhdHVzID0gKGl0ZW1TdGF0dXMsIHJvd0l0ZW0pID0+IHtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbHN0SXRlbUlkID0gZGF0YS5maWx0ZXIocSA9PiBxW2ZpZWxkS2V5XSkubWFwKHEgPT4gcVtmaWVsZEtleV0pO1xuICAgICAgICBsZXQgZmlsdGVycyA9IFtcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpdGVtSWQnLCBPcGVyYXRvci5pbiwgbHN0SXRlbUlkKSxcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdub3RJbldvcmtmbG93JywgT3BlcmF0b3IuZXF1YWwsIGZhbHNlKSxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHRoaXMudGFibGVOYW1lKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ3RhYmxlTmFtZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLnRhYmxlTmFtZSkpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc29ydHMgPSBbXTtcbiAgICAgICAgaWYgKCFpZ25vcmVXb3JrZmxvdykge1xuICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCd1c2VySWQnLCBPcGVyYXRvci5lcXVhbCwgdXNlcklkQ3VycmVudCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc29ydHMucHVzaChcbiAgICAgICAgICAgICAgICBuZXcgU29ydCh7IGZpZWxkOiAncGVybWlzc2lvbicsIGRpcjogLTEgfSksXG4gICAgICAgICAgICAgICAgbmV3IFNvcnQoeyBmaWVsZDogJ2luQ29taW5nJywgZGlyOiAtMSB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YVN0YXR1czogYW55W10gPSAoYXdhaXQgdGhpcy5nZXRBbGwoXG4gICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgJ2l0ZW1JZCx1c2VySWQsdHJhbmdUaGFpLHRleHRUcmFuZ1RoYWksd29ya2Zsb3dDb2RlLHBlcm1pc3Npb24nLFxuICAgICAgICAgICAgc29ydHMsXG4gICAgICAgICkpLmRhdGE7XG4gICAgICAgIGlmIChkYXRhU3RhdHVzID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vdGlmaWVyU2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnS2jDtG5nIGzhuqV5IMSRxrDhu6NjIHRow7RuZyB0aW4gdHLhuqFuZyB0aMOhaSBoaeG7h24gdOG6oWkgY+G7p2EgYuG6o24gZ2hpJyk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YS5mb3JFYWNoKHJvd0l0ZW0gPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRXb3JrZmxvd0luZm9Ub0l0ZW0oXG4gICAgICAgICAgICAgICAgcm93SXRlbSxcbiAgICAgICAgICAgICAgICByb3dJdGVtW2ZpZWxkS2V5XSxcbiAgICAgICAgICAgICAgICB1c2VySWRDdXJyZW50LFxuICAgICAgICAgICAgICAgIGlnbm9yZVdvcmtmbG93LFxuICAgICAgICAgICAgICAgIGRhdGFTdGF0dXMsXG4gICAgICAgICAgICAgICAgY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1c1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuIl19
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcGVybWlzc2lvbi1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy93b3JrZmxvdy1wZXJtaXNzaW9uLWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUtyRCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsV0FBVztJQU81RCxZQUNJLElBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLG9CQUF5QztRQUV6QyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsMkJBQTJCLENBQUMsQ0FBQztRQVZwTCxvQkFBZSxHQUVuQixFQUFFLENBQUM7UUFDUCxlQUFVLEdBQUcsMEJBQTBCLENBQUM7UUFDeEMsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQU9YLElBQUksQ0FBQyxRQUFRLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUV4RixJQUFJLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBa0IsRUFBRSxPQUFvQjtRQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUMvQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBb0I7UUFDckMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDOUUsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUF3QjtRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztRQUN2RixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdLLDJCQUEyQixDQUM3QixhQUFxQixFQUNyQixJQUFTLEVBQ1QsV0FBbUIsSUFBSSxFQUN2QixpQkFBMEIsS0FBSyxFQUMvQiw0QkFBMkQsSUFBSTs7WUFFL0QsSUFBSSx5QkFBeUIsSUFBSSxJQUFJLEVBQUU7Z0JBQ25DLHlCQUF5QixHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFO29CQUNoRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUM7MkJBQ2QsT0FBTyxDQUFDLFlBQVk7MkJBQ3BCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFDN0I7d0JBQ0UsVUFBVSxDQUFDLGFBQWEsR0FBRyxzQkFBc0IsQ0FBQzt3QkFDbEQsVUFBVSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7d0JBQ2hELFVBQVUsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQzt3QkFDL0MsVUFBVSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFBO3FCQUM5QztnQkFDTCxDQUFDLENBQUM7YUFDTDtZQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixNQUFNLE9BQU8sR0FBRztnQkFDWixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7YUFDekQsQ0FBQztZQUNGLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQzthQUN6RTtpQkFDSTtnQkFDRCxLQUFLLENBQUMsSUFBSSxDQUNOLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUMxQyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDM0MsQ0FBQzthQUNMO1lBQ0QsTUFBTSxVQUFVLEdBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQ3hDLE9BQU8sRUFDUCwrREFBK0QsRUFDL0QsS0FBSyxFQUNMLGFBQWEsQ0FDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNSLElBQUksVUFBVSxJQUFJLElBQUksRUFBRTtnQkFDcEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzVELE9BQU8sZUFBZSxDQUFDLFdBQVcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO2FBQ2xHO1lBRUQsSUFBSSxDQUFDLHdCQUF3QixDQUN6QixJQUFJLEVBQ0osTUFBTSxFQUNOLGFBQWEsRUFDYixjQUFjLEVBQ2QsVUFBVSxFQUNWLHlCQUF5QixDQUM1QixDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRU8sd0JBQXdCLENBQzVCLElBQVMsRUFDVCxNQUFXLEVBQ1gsYUFBcUIsRUFDckIsY0FBdUIsRUFDdkIsVUFBaUIsRUFDakIsNEJBQTJELElBQUk7UUFFL0QsSUFBSSxVQUFVLEdBQVE7WUFDbEIsYUFBYSxFQUFFLHFCQUFxQjtTQUN2QyxDQUFDO1FBRUYsSUFBSSxNQUFNLEVBQUU7WUFDUixpR0FBaUc7WUFDakcsK0RBQStEO1lBQy9ELDBFQUEwRTtZQUMxRSxJQUFJO1lBQ0osTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDbEUseUJBQXlCO1lBQ3pCLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtnQkFDdEIsVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEcsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFO29CQUNwQixVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqQzthQUNKO1NBQ0o7UUFFRCxrQ0FBa0M7UUFDbEMsZ0lBQWdJO1FBQ2hJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO1lBQ3ZCLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxVQUFVLENBQUMsWUFBWSxJQUFJLGlCQUFpQixFQUFFO1lBQzlDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBRTFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsSUFBSTtlQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQzVDO1lBQ0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDOUI7YUFDSTtZQUNELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7U0FDdkM7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU07ZUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxjQUFjLENBQUMsTUFBTSxFQUM5QztZQUNFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1NBQ2hDO2FBQ0k7WUFDRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQztJQUdEOztPQUVHO0lBQ0cscUJBQXFCLENBQ3ZCLGFBQXFCLEVBQUUsSUFBVyxFQUNsQyxXQUFtQixJQUFJLEVBQ3ZCLGlCQUEwQixLQUFLLEVBQy9CLDRCQUEyRCxJQUFJOztZQUUvRCxJQUFJLHlCQUF5QixJQUFJLElBQUksRUFBRTtnQkFDbkMseUJBQXlCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUU7b0JBQ2hELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQzsyQkFDZCxPQUFPLENBQUMsWUFBWTsyQkFDcEIsT0FBTyxDQUFDLGdCQUFnQixFQUM3Qjt3QkFDRSxVQUFVLENBQUMsYUFBYSxHQUFHLHNCQUFzQixDQUFDO3dCQUNsRCxVQUFVLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDaEQsVUFBVSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO3dCQUMvQyxVQUFVLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUE7cUJBQzlDO2dCQUNMLENBQUMsQ0FBQzthQUNMO1lBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksT0FBTyxHQUFHO2dCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQzthQUN6RCxDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7YUFDNUU7WUFDRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakIseUJBQXlCO1lBQ3pCLDZFQUE2RTtZQUM3RSxJQUFJO1lBQ0osS0FBSyxDQUFDLElBQUksQ0FDTixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDMUMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQzNDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FDeEMsT0FBTyxFQUNQLCtEQUErRCxFQUMvRCxLQUFLLEVBQ0wsYUFBYSxDQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ1IsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFO2dCQUNwQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDNUQsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7YUFDbEc7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsd0JBQXdCLENBQ3pCLE9BQU8sRUFDUCxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQ2pCLGFBQWEsRUFDYixjQUFjLEVBQ2QsVUFBVSxFQUNWLHlCQUF5QixDQUM1QixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0tBQUE7Ozs7WUF4TkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFiUSxVQUFVO1lBQ0UsUUFBUTtZQU9wQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER1bW15V29ya2Zsb3dDb2RlIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IE1vZHVsZUNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZ3MvbW9kdWxlLWNvbmZpZyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uQmFzZSB9IGZyb20gJy4uL2VudW1zL2NvbW1vbic7XG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWVyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93UGVybWlzc2lvbkRldGFpbFNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XG4gICAgcmVhZG9ubHkgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnO1xuICAgIHByaXZhdGUgc2VydmljZU1hbmFnZXJzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IEJhc2VTZXJ2aWNlXG4gICAgfSA9IHt9O1xuICAgIGVudGl0eU5hbWUgPSAnV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsJztcbiAgICB0YWJsZU5hbWUgPSAnJztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLndvcmtmbG93RW5kcG9pbnR9LyR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsYCk7XG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4ud29ya2Zsb3dFbmRwb2ludDtcblxuICAgICAgICB0aGlzLl9tb2R1bGVDb25maWcgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlclNlcnZpY2Uoc2V0dGluZ0tleTogc3RyaW5nLCBzZXJ2aWNlOiBCYXNlU2VydmljZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2VNYW5hZ2Vyc1tzZXR0aW5nS2V5XSA9IHNlcnZpY2U7XG4gICAgfVxuXG4gICAgZ2V0RW5kcG9pbnRCeVNlcnZpY2Uoc2VydmljZTogQmFzZVNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIGAke3NlcnZpY2UuZW5kUG9pbnR9LyR7dGhpcy5fbW9kdWxlQ29uZmlnLmVudmlyb25tZW50LmFwaVZlcnNpb259YDtcbiAgICB9XG5cbiAgICBjaGFuZ2VFbmRwb2ludChiYXNlU2VydmljZTogQmFzZVNlcnZpY2UpOiBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpID0gYCR7dGhpcy5nZXRFbmRwb2ludEJ5U2VydmljZShiYXNlU2VydmljZSl9L1dvcmtmbG93UGVybWlzc2lvbkRldGFpbGA7XG4gICAgICAgIHRoaXMudGFibGVOYW1lID0gYmFzZVNlcnZpY2UuZW50aXR5TmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBhc3luYyBhcHBlbmRJbmZvRm9yV29ya2Zsb3dTaW5nbGUoXG4gICAgICAgIHVzZXJJZEN1cnJlbnQ6IHN0cmluZyxcbiAgICAgICAgZGF0YTogYW55LFxuICAgICAgICBmaWVsZEtleTogc3RyaW5nID0gJ2lkJyxcbiAgICAgICAgaWdub3JlV29ya2Zsb3c6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1czogKGl0ZW1TdGF0dXMsIHJvd0l0ZW0pID0+IHZvaWQgPSBudWxsXG4gICAgKSB7XG4gICAgICAgIGlmIChjYWxsQmFja1doZW5Ob3RIYXZlU3RhdHVzID09IG51bGwpIHtcbiAgICAgICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXMgPSAoaXRlbVN0YXR1cywgcm93SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyb3dJdGVtW2ZpZWxkS2V5XVxuICAgICAgICAgICAgICAgICAgICAmJiByb3dJdGVtLndvcmtmbG93Q29kZVxuICAgICAgICAgICAgICAgICAgICAmJiByb3dJdGVtLmN1cnJlbnRTdGF0ZUNvZGVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cy50ZXh0VHJhbmdUaGFpID0gJ8SQw6MgYuG6r3QgxJHhuqd1IHF1eSB0csOsbmgnO1xuICAgICAgICAgICAgICAgICAgICBpdGVtU3RhdHVzLnRyYW5nVGhhaSA9IHJvd0l0ZW0uY3VycmVudFN0YXRlQ29kZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cy53b3JrZmxvd0NvZGUgPSByb3dJdGVtLndvcmtmbG93Q29kZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cy5wZXJtaXNzaW9uID0gUGVybWlzc2lvbkJhc2UuUkVBRFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbUlkID0gZGF0YVtmaWVsZEtleV07XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaXRlbUlkJywgT3BlcmF0b3IuZXF1YWwsIGl0ZW1JZCksXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignbm90SW5Xb3JrZmxvdycsIE9wZXJhdG9yLmVxdWFsLCBmYWxzZSksXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHNvcnRzID0gW107XG4gICAgICAgIGlmICghaWdub3JlV29ya2Zsb3cpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcigndXNlcklkJywgT3BlcmF0b3IuZXF1YWwsIHVzZXJJZEN1cnJlbnQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNvcnRzLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IFNvcnQoeyBmaWVsZDogJ3Blcm1pc3Npb24nLCBkaXI6IC0xIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBTb3J0KHsgZmllbGQ6ICdpbkNvbWluZycsIGRpcjogLTEgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGFTdGF0dXM6IGFueVtdID0gKGF3YWl0IHRoaXMuZ2V0QWxsKFxuICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICdpdGVtSWQsdXNlcklkLHRyYW5nVGhhaSx0ZXh0VHJhbmdUaGFpLHdvcmtmbG93Q29kZSxwZXJtaXNzaW9uJyxcbiAgICAgICAgICAgIHNvcnRzLFxuICAgICAgICAgICAgJ0ZvckNydWRMaXN0J1xuICAgICAgICApKS5kYXRhO1xuICAgICAgICBpZiAoZGF0YVN0YXR1cyA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBub3RpZmllclNlcnZpY2UgPSB0aGlzLl9pbmplY3Rvci5nZXQoTm90aWZpZXJTZXJ2aWNlKTtcbiAgICAgICAgICAgIHJldHVybiBub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0tow7RuZyBs4bqleSDEkcaw4bujYyB0aMO0bmcgdGluIHRy4bqhbmcgdGjDoWkgaGnhu4duIHThuqFpIGPhu6dhIGLhuqNuIGdoaScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcHBlbmRXb3JrZmxvd0luZm9Ub0l0ZW0oXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaXRlbUlkLFxuICAgICAgICAgICAgdXNlcklkQ3VycmVudCxcbiAgICAgICAgICAgIGlnbm9yZVdvcmtmbG93LFxuICAgICAgICAgICAgZGF0YVN0YXR1cyxcbiAgICAgICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmRXb3JrZmxvd0luZm9Ub0l0ZW0oXG4gICAgICAgIGRhdGE6IGFueSxcbiAgICAgICAgaXRlbUlkOiBhbnksXG4gICAgICAgIHVzZXJJZEN1cnJlbnQ6IHN0cmluZyxcbiAgICAgICAgaWdub3JlV29ya2Zsb3c6IGJvb2xlYW4sXG4gICAgICAgIGRhdGFTdGF0dXM6IGFueVtdLFxuICAgICAgICBjYWxsQmFja1doZW5Ob3RIYXZlU3RhdHVzOiAoaXRlbVN0YXR1cywgcm93SXRlbSkgPT4gdm9pZCA9IG51bGxcbiAgICApIHtcbiAgICAgICAgbGV0IGl0ZW1TdGF0dXM6IGFueSA9IHtcbiAgICAgICAgICAgIHRleHRUcmFuZ1RoYWk6ICdDaMawYSBjaOG6oXkgcXV5IHRyw6xuaCdcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaXRlbUlkKSB7XG4gICAgICAgICAgICAvLyBjb25zdCBsc3RJdGVtU3RhdHVzID0gZGF0YVN0YXR1cy5maWx0ZXIocSA9PiBxLml0ZW1JZCA9PSBpdGVtSWQgJiYgcS51c2VySWQgPT0gdXNlcklkQ3VycmVudCk7XG4gICAgICAgICAgICAvLyBpZiAoaWdub3JlV29ya2Zsb3cgPT09IHRydWUgJiYgbHN0SXRlbVN0YXR1cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vICAgICBsc3RJdGVtU3RhdHVzLnB1c2goLi4uZGF0YVN0YXR1cy5maWx0ZXIocSA9PiBxLml0ZW1JZCA9PT0gaXRlbUlkKSk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBjb25zdCBsc3RJdGVtU3RhdHVzID0gZGF0YVN0YXR1cy5maWx0ZXIocSA9PiBxLml0ZW1JZCA9PT0gaXRlbUlkKTtcbiAgICAgICAgICAgIC8vIGxldCBpdGVtU3RhdHVzID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChsc3RJdGVtU3RhdHVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGl0ZW1TdGF0dXMgPSBsc3RJdGVtU3RhdHVzLmZpbmQocSA9PiAocS5wZXJtaXNzaW9uICYgUGVybWlzc2lvbkJhc2UuRURJVCkgPT0gUGVybWlzc2lvbkJhc2UuRURJVCk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1TdGF0dXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtU3RhdHVzID0gbHN0SXRlbVN0YXR1c1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBO4bq/dSBraMO0bmcgY8OzIGLhuqNuIGdoaSB0cuG6oW5nIHRow6FpXG4gICAgICAgIC8vIE5oxrBuZyDEkcOjIHThuqFvIHRhc2sgcuG7k2kgdGjDrCBoaeG7g24gdGjhu4sgdHLhuqFuZyB0aMOhaSBcIsSRw6MgdOG6oW8gY8O0bmcgdmnhu4djXCIgxJHhu4MgdHLDoW5oIHRyxrDhu51uZyBo4bujcCBoaeG7g24gdGjhu4sgbsO6dCBi4bqvdCDEkeG6p3UgdGjhu6thIHRyw6puIGdpYW8gZGnhu4duXG4gICAgICAgIGlmICghaXRlbVN0YXR1cy50cmFuZ1RoYWkpIHtcbiAgICAgICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXMoaXRlbVN0YXR1cywgZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLl9fdHJhbmdUaGFpID0gaXRlbVN0YXR1cy50cmFuZ1RoYWk7XG4gICAgICAgIGRhdGEuX190ZXh0VHJhbmdUaGFpID0gaXRlbVN0YXR1cy50ZXh0VHJhbmdUaGFpO1xuICAgICAgICBpZiAoaXRlbVN0YXR1cy53b3JrZmxvd0NvZGUgPT0gRHVtbXlXb3JrZmxvd0NvZGUpIHtcbiAgICAgICAgICAgIGRhdGEuaGlkZGVuV29ya2Zsb3dBY3Rpb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEuX193b3JrZmxvd0NvZGUgPSBpdGVtU3RhdHVzLndvcmtmbG93Q29kZTtcbiAgICAgICAgZGF0YS5fX3Blcm1pc3Npb24gPSBpdGVtU3RhdHVzLnBlcm1pc3Npb247XG5cbiAgICAgICAgZGF0YS5fX2Rpc2FibGVFZGl0ID0gdHJ1ZTtcbiAgICAgICAgZGF0YS5fX2Rpc2FibGVEZWxldGUgPSB0cnVlO1xuICAgICAgICBpZiAoZGF0YS5iYXNlUGVybWlzc2lvbiAmIFBlcm1pc3Npb25CYXNlLkVESVRcbiAgICAgICAgICAgIHx8IGRhdGEuX19wZXJtaXNzaW9uICYgUGVybWlzc2lvbkJhc2UuRURJVFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGRhdGEuX19kaXNhYmxlRWRpdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGF0YS5fX2Rpc2FibGVQZXJtaXNzaW9uRWRpdCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuYmFzZVBlcm1pc3Npb24gJiBQZXJtaXNzaW9uQmFzZS5ERUxFVEVcbiAgICAgICAgICAgIHx8IGRhdGEuX19wZXJtaXNzaW9uICYgUGVybWlzc2lvbkJhc2UuREVMRVRFXG4gICAgICAgICkge1xuICAgICAgICAgICAgZGF0YS5fX2Rpc2FibGVEZWxldGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRhdGEuX19kaXNhYmxlUGVybWlzc2lvbkRlbGV0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEzhuqV5IHRow6ptIGPDoWMgdGjDtG5nIHRpbiBj4bqnbiBjaG8gcXV5IHRyw6xuaCBuZ2hp4buHcCB24bulIGNobyBjw6FjIGLhuqNuIGdoaSB0cm9uZyBkYXRhXG4gICAgICovXG4gICAgYXN5bmMgYXBwZW5kSW5mb0ZvcldvcmtmbG93KFxuICAgICAgICB1c2VySWRDdXJyZW50OiBzdHJpbmcsIGRhdGE6IGFueVtdLFxuICAgICAgICBmaWVsZEtleTogc3RyaW5nID0gJ2lkJyxcbiAgICAgICAgaWdub3JlV29ya2Zsb3c6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1czogKGl0ZW1TdGF0dXMsIHJvd0l0ZW0pID0+IHZvaWQgPSBudWxsXG4gICAgKSB7XG4gICAgICAgIGlmIChjYWxsQmFja1doZW5Ob3RIYXZlU3RhdHVzID09IG51bGwpIHtcbiAgICAgICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXMgPSAoaXRlbVN0YXR1cywgcm93SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyb3dJdGVtW2ZpZWxkS2V5XVxuICAgICAgICAgICAgICAgICAgICAmJiByb3dJdGVtLndvcmtmbG93Q29kZVxuICAgICAgICAgICAgICAgICAgICAmJiByb3dJdGVtLmN1cnJlbnRTdGF0ZUNvZGVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cy50ZXh0VHJhbmdUaGFpID0gJ8SQw6MgYuG6r3QgxJHhuqd1IHF1eSB0csOsbmgnO1xuICAgICAgICAgICAgICAgICAgICBpdGVtU3RhdHVzLnRyYW5nVGhhaSA9IHJvd0l0ZW0uY3VycmVudFN0YXRlQ29kZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cy53b3JrZmxvd0NvZGUgPSByb3dJdGVtLndvcmtmbG93Q29kZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cy5wZXJtaXNzaW9uID0gUGVybWlzc2lvbkJhc2UuUkVBRFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbHN0SXRlbUlkID0gZGF0YS5maWx0ZXIocSA9PiBxW2ZpZWxkS2V5XSkubWFwKHEgPT4gcVtmaWVsZEtleV0pO1xuICAgICAgICBsZXQgZmlsdGVycyA9IFtcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpdGVtSWQnLCBPcGVyYXRvci5pbiwgbHN0SXRlbUlkKSxcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdub3RJbldvcmtmbG93JywgT3BlcmF0b3IuZXF1YWwsIGZhbHNlKSxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHRoaXMudGFibGVOYW1lKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ3RhYmxlTmFtZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLnRhYmxlTmFtZSkpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc29ydHMgPSBbXTtcbiAgICAgICAgLy8gaWYgKCFpZ25vcmVXb3JrZmxvdykge1xuICAgICAgICAvLyAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCd1c2VySWQnLCBPcGVyYXRvci5lcXVhbCwgdXNlcklkQ3VycmVudCkpO1xuICAgICAgICAvLyB9XG4gICAgICAgIHNvcnRzLnB1c2goXG4gICAgICAgICAgICBuZXcgU29ydCh7IGZpZWxkOiAncGVybWlzc2lvbicsIGRpcjogLTEgfSksXG4gICAgICAgICAgICBuZXcgU29ydCh7IGZpZWxkOiAnaW5Db21pbmcnLCBkaXI6IC0xIH0pLFxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgZGF0YVN0YXR1czogYW55W10gPSAoYXdhaXQgdGhpcy5nZXRBbGwoXG4gICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgJ2l0ZW1JZCx1c2VySWQsdHJhbmdUaGFpLHRleHRUcmFuZ1RoYWksd29ya2Zsb3dDb2RlLHBlcm1pc3Npb24nLFxuICAgICAgICAgICAgc29ydHMsXG4gICAgICAgICAgICAnRm9yQ3J1ZExpc3QnXG4gICAgICAgICkpLmRhdGE7XG4gICAgICAgIGlmIChkYXRhU3RhdHVzID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vdGlmaWVyU2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnS2jDtG5nIGzhuqV5IMSRxrDhu6NjIHRow7RuZyB0aW4gdHLhuqFuZyB0aMOhaSBoaeG7h24gdOG6oWkgY+G7p2EgYuG6o24gZ2hpJyk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YS5mb3JFYWNoKHJvd0l0ZW0gPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRXb3JrZmxvd0luZm9Ub0l0ZW0oXG4gICAgICAgICAgICAgICAgcm93SXRlbSxcbiAgICAgICAgICAgICAgICByb3dJdGVtW2ZpZWxkS2V5XSxcbiAgICAgICAgICAgICAgICB1c2VySWRDdXJyZW50LFxuICAgICAgICAgICAgICAgIGlnbm9yZVdvcmtmbG93LFxuICAgICAgICAgICAgICAgIGRhdGFTdGF0dXMsXG4gICAgICAgICAgICAgICAgY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1c1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuIl19
@@ -4679,6 +4679,7 @@ var EnumProperties;
4679
4679
  EnumProperties["NG_REFLECT_TEXT"] = "ng-reflect-text";
4680
4680
  EnumProperties["NG_REFLECT_LABEL"] = "ng-reflect-label";
4681
4681
  EnumProperties["CRUD_LIST"] = "crud-list";
4682
+ EnumProperties["TREE_LIST"] = "tn-tree-table";
4682
4683
  EnumProperties["LABEL"] = "label";
4683
4684
  EnumProperties["TAG_NAME"] = "tagName";
4684
4685
  EnumProperties["TOOLTIP"] = "ptooltip";
@@ -10388,6 +10389,14 @@ class UserService extends BaseService {
10388
10389
  const url = `${this.serviceUri}/ValidatePassword/?password=${password}`;
10389
10390
  return this.defaultGet(url);
10390
10391
  }
10392
+ getUserCache(cacheKey) {
10393
+ const url = `${this.serviceUri}/GetUserCache/${cacheKey}`;
10394
+ return this.defaultGet(url);
10395
+ }
10396
+ setUserCache(data) {
10397
+ const url = `${this.serviceUri}/SetUserCache`;
10398
+ return this.defaultPost(url, data);
10399
+ }
10391
10400
  }
10392
10401
  UserService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserService_Factory() { return new UserService(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(ModuleConfigService), i0.ɵɵinject(AuthenService), i0.ɵɵinject(i4.OAuthService), i0.ɵɵinject(SignalRService), i0.ɵɵinject(ExceptionHandlerService), i0.ɵɵinject(ApplicationContextService)); }, token: UserService, providedIn: "root" });
10393
10402
  UserService.decorators = [
@@ -18675,6 +18684,14 @@ class WorkflowPermissionDetailService extends BaseService {
18675
18684
  return __awaiter(this, void 0, void 0, function* () {
18676
18685
  if (callBackWhenNotHaveStatus == null) {
18677
18686
  callBackWhenNotHaveStatus = (itemStatus, rowItem) => {
18687
+ if (rowItem[fieldKey]
18688
+ && rowItem.workflowCode
18689
+ && rowItem.currentStateCode) {
18690
+ itemStatus.textTrangThai = 'Đã bắt đầu quy trình';
18691
+ itemStatus.trangThai = rowItem.currentStateCode;
18692
+ itemStatus.workflowCode = rowItem.workflowCode;
18693
+ itemStatus.permission = PermissionBase.READ;
18694
+ }
18678
18695
  };
18679
18696
  }
18680
18697
  const itemId = data[fieldKey];
@@ -18689,7 +18706,7 @@ class WorkflowPermissionDetailService extends BaseService {
18689
18706
  else {
18690
18707
  sorts.push(new Sort({ field: 'permission', dir: -1 }), new Sort({ field: 'inComing', dir: -1 }));
18691
18708
  }
18692
- const dataStatus = (yield this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts)).data;
18709
+ const dataStatus = (yield this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts, 'ForCrudList')).data;
18693
18710
  if (dataStatus == null) {
18694
18711
  const notifierService = this._injector.get(NotifierService);
18695
18712
  return notifierService.showWarning('Không lấy được thông tin trạng thái hiện tại của bản ghi');
@@ -18703,10 +18720,11 @@ class WorkflowPermissionDetailService extends BaseService {
18703
18720
  textTrangThai: 'Chưa chạy quy trình'
18704
18721
  };
18705
18722
  if (itemId) {
18706
- const lstItemStatus = dataStatus.filter(q => q.itemId == itemId && q.userId == userIdCurrent);
18707
- if (ignoreWorkflow === true && lstItemStatus.length === 0) {
18708
- lstItemStatus.push(...dataStatus.filter(q => q.itemId === itemId));
18709
- }
18723
+ // const lstItemStatus = dataStatus.filter(q => q.itemId == itemId && q.userId == userIdCurrent);
18724
+ // if (ignoreWorkflow === true && lstItemStatus.length === 0) {
18725
+ // lstItemStatus.push(...dataStatus.filter(q => q.itemId === itemId));
18726
+ // }
18727
+ const lstItemStatus = dataStatus.filter(q => q.itemId === itemId);
18710
18728
  // let itemStatus = null;
18711
18729
  if (lstItemStatus.length) {
18712
18730
  itemStatus = lstItemStatus.find(q => (q.permission & PermissionBase.EDIT) == PermissionBase.EDIT);
@@ -18751,6 +18769,14 @@ class WorkflowPermissionDetailService extends BaseService {
18751
18769
  return __awaiter(this, void 0, void 0, function* () {
18752
18770
  if (callBackWhenNotHaveStatus == null) {
18753
18771
  callBackWhenNotHaveStatus = (itemStatus, rowItem) => {
18772
+ if (rowItem[fieldKey]
18773
+ && rowItem.workflowCode
18774
+ && rowItem.currentStateCode) {
18775
+ itemStatus.textTrangThai = 'Đã bắt đầu quy trình';
18776
+ itemStatus.trangThai = rowItem.currentStateCode;
18777
+ itemStatus.workflowCode = rowItem.workflowCode;
18778
+ itemStatus.permission = PermissionBase.READ;
18779
+ }
18754
18780
  };
18755
18781
  }
18756
18782
  const lstItemId = data.filter(q => q[fieldKey]).map(q => q[fieldKey]);
@@ -18762,13 +18788,11 @@ class WorkflowPermissionDetailService extends BaseService {
18762
18788
  filters.push(this.newFilter('tableName', Operator.equal, this.tableName));
18763
18789
  }
18764
18790
  const sorts = [];
18765
- if (!ignoreWorkflow) {
18766
- filters.push(this.newFilter('userId', Operator.equal, userIdCurrent));
18767
- }
18768
- else {
18769
- sorts.push(new Sort({ field: 'permission', dir: -1 }), new Sort({ field: 'inComing', dir: -1 }));
18770
- }
18771
- const dataStatus = (yield this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts)).data;
18791
+ // if (!ignoreWorkflow) {
18792
+ // filters.push(this.newFilter('userId', Operator.equal, userIdCurrent));
18793
+ // }
18794
+ sorts.push(new Sort({ field: 'permission', dir: -1 }), new Sort({ field: 'inComing', dir: -1 }));
18795
+ const dataStatus = (yield this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts, 'ForCrudList')).data;
18772
18796
  if (dataStatus == null) {
18773
18797
  const notifierService = this._injector.get(NotifierService);
18774
18798
  return notifierService.showWarning('Không lấy được thông tin trạng thái hiện tại của bản ghi');
@@ -19435,7 +19459,6 @@ class ListComponentBase extends ComponentBase {
19435
19459
  }
19436
19460
  }
19437
19461
  initColumnSchema(cols) {
19438
- var _a, _b, _c, _d, _e;
19439
19462
  if (!cols || !cols.length)
19440
19463
  return;
19441
19464
  let colFunction = null, colGroup = null, colHasToggleIcon = null;
@@ -19458,7 +19481,7 @@ class ListComponentBase extends ComponentBase {
19458
19481
  colHasToggleIcon = this.setting.cols[0];
19459
19482
  }
19460
19483
  colHasToggleIcon.colHasToggleIcon = true;
19461
- this.componentKey = `${location.pathname}/${((_e = (_d = (_c = (_b = (_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.closest('crud-list')) === null || _c === void 0 ? void 0 : _c.parentNode) === null || _d === void 0 ? void 0 : _d.tagName) === null || _e === void 0 ? void 0 : _e.toLowerCase()) || ''}${this.setting.settingKey ? '/' + this.setting.settingKey : ''}`;
19484
+ this.getComponentKey();
19462
19485
  this.getColorSetting();
19463
19486
  this.getColumnSetting(colGroup);
19464
19487
  this.getPageSetting();
@@ -19467,6 +19490,12 @@ class ListComponentBase extends ComponentBase {
19467
19490
  this.applyColumnSetting();
19468
19491
  this.buildFilterColumn(this.setting.cols);
19469
19492
  }
19493
+ getComponentKey() {
19494
+ var _a, _b, _c, _d, _e;
19495
+ const parentClass = this.isTreeTable ? EnumProperties.TREE_LIST : EnumProperties.CRUD_LIST;
19496
+ const componentName = ((_e = (_d = (_c = (_b = (_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.closest(parentClass)) === null || _c === void 0 ? void 0 : _c.parentNode) === null || _d === void 0 ? void 0 : _d.tagName) === null || _e === void 0 ? void 0 : _e.toLowerCase()) || '';
19497
+ this.componentKey = `${location.pathname}${componentName ? '/' + componentName : ''}${this.setting.settingKey ? '/' + this.setting.settingKey : ''}`;
19498
+ }
19470
19499
  extendColumns(cols, appendCol = true) {
19471
19500
  this.setting.fieldNeedGetRef = [];
19472
19501
  if (!cols) {
@@ -23855,11 +23884,12 @@ class ListBase extends ComponentBaseWithButton {
23855
23884
  // #region crud
23856
23885
  loadItemFromQueryParam() {
23857
23886
  if (this.loadDetailFromQueryParam === undefined || this.loadDetailFromQueryParam === true) {
23858
- let idInQueryString = null;
23887
+ let idInQueryString = null, isView = false;
23859
23888
  let pid = null; // permission Id được người khác share
23860
23889
  if (this._activatedRoute.snapshot
23861
23890
  && this._activatedRoute.snapshot.queryParams) {
23862
23891
  idInQueryString = this._activatedRoute.snapshot.queryParams.id || this._activatedRoute.snapshot.queryParams.entityKey;
23892
+ isView = !!this._activatedRoute.snapshot.queryParams.isView;
23863
23893
  pid = this._activatedRoute.snapshot.queryParams.pid;
23864
23894
  }
23865
23895
  if (pid) {
@@ -23867,22 +23897,36 @@ class ListBase extends ComponentBaseWithButton {
23867
23897
  }
23868
23898
  else if (idInQueryString) {
23869
23899
  // get detail data
23870
- this.setting.baseService.getDetailWithPermission(idInQueryString)
23871
- .then(res => {
23872
- if (!res.data) {
23900
+ if (isView) {
23901
+ this.setting.baseService.getDetail(idInQueryString)
23902
+ .then(res => {
23903
+ if (!res.data) {
23904
+ this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
23905
+ }
23906
+ this._viewOnly(res.data);
23907
+ }).catch(err => {
23908
+ this._loggerService.logError('error on get detail from querystring', err);
23873
23909
  this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
23874
- }
23875
- if ((res.data.basePermission & PermissionBase.EDIT) == PermissionBase.EDIT
23876
- || (res.data.basePermission & PermissionBase.READ) == PermissionBase.READ) {
23877
- this._edit(res.data);
23878
- }
23879
- else {
23880
- this._notifierService.showWarning('Bạn không quyền xem bản ghi');
23881
- }
23882
- }).catch(err => {
23883
- this._loggerService.logError('error on get detail from querystring', err);
23884
- this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
23885
- });
23910
+ });
23911
+ }
23912
+ else {
23913
+ this.setting.baseService.getDetailWithPermission(idInQueryString)
23914
+ .then(res => {
23915
+ if (!res.data) {
23916
+ this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
23917
+ }
23918
+ if ((res.data.basePermission & PermissionBase.EDIT) == PermissionBase.EDIT
23919
+ || (res.data.basePermission & PermissionBase.READ) == PermissionBase.READ) {
23920
+ this._edit(res.data);
23921
+ }
23922
+ else {
23923
+ this._notifierService.showWarning('Bạn không có quyền xem bản ghi');
23924
+ }
23925
+ }).catch(err => {
23926
+ this._loggerService.logError('error on get detail from querystring', err);
23927
+ this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
23928
+ });
23929
+ }
23886
23930
  }
23887
23931
  }
23888
23932
  }
@@ -46465,7 +46509,7 @@ class TnDialogComponent {
46465
46509
  TnDialogComponent.decorators = [
46466
46510
  { type: Component, args: [{
46467
46511
  selector: 'tn-dialog',
46468
- template: "<p-dialog #dialog [closeOnEscape]=\"closeOnEscape\" [appendTo]=\"'body'\" [focusOnShow]=\"false\" [focusTrap]=\"false\"\n [header]=\"header | translate\" [(visible)]=\"visible\" [modal]=\"modal\" [responsive]=\"true\" [maximizable]=\"maximizable\"\n [autoZIndex]=\"true\" [styleClass]=\"styleClass\" [maskStyleClass]=\"maskClass\" [showHeader]=\"showHeader\"\n [style]=\"{'width': popupSize.width + 'px', 'min-width': popupSize.width + 'px', 'height': popupSize.height + 'px', 'min-height': popupSize.height + 'px'}\"\n (onShow)=\"handleShowDialog($event)\" (onHide)=\"handleHideDialog($event)\">\n <tn-custom-scrollbar #scrollbar [useDefaultScrollBar]=\"useDefaultScrollBar\" [class]=\"scrollBarStyleClass\"\n [config]=\"scrollConfig\" [style]=\"scrollStyle\" class=\"tn-dialog-scrollbar\">\n <ng-content></ng-content>\n </tn-custom-scrollbar>\n <p-footer *ngIf=\"showFooter\">\n <p-footer *ngIf=\"formBase && formBase.buttonTemplate\" style=\"display: flex;float: right\">\n <ng-container *ngTemplateOutlet=\"formBase.buttonTemplate\">\n </ng-container>\n </p-footer>\n <ng-container *ngIf=\"!formBase || !formBase.buttonTemplate\">\n <p-footer *ngIf=\"footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </p-footer>\n <p-footer *ngIf=\"buttonTemplateInput\">\n <ng-container *ngTemplateOutlet=\"buttonTemplateInput\"></ng-container>\n </p-footer>\n <p-footer *ngIf=\"!footer && !buttonTemplateInput\">\n <button pButton preventTab type=\"button\" icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"handleHideDialog($event)\"></button>\n </p-footer>\n </ng-container>\n </p-footer>\n</p-dialog>",
46512
+ template: "<p-dialog #dialog [closeOnEscape]=\"closeOnEscape\" [appendTo]=\"'body'\" [focusOnShow]=\"false\" [focusTrap]=\"false\"\n [(visible)]=\"visible\" [modal]=\"modal\" [responsive]=\"true\" [maximizable]=\"maximizable\" [autoZIndex]=\"true\"\n [styleClass]=\"styleClass\" [maskStyleClass]=\"maskClass\" [showHeader]=\"showHeader\"\n [style]=\"{'width': popupSize.width + 'px', 'min-width': popupSize.width + 'px', 'height': popupSize.height + 'px', 'min-height': popupSize.height + 'px'}\"\n (onShow)=\"handleShowDialog($event)\" (onHide)=\"handleHideDialog($event)\">\n <tn-custom-scrollbar #scrollbar [useDefaultScrollBar]=\"useDefaultScrollBar\" [class]=\"scrollBarStyleClass\"\n [config]=\"scrollConfig\" [style]=\"scrollStyle\" class=\"tn-dialog-scrollbar\">\n <ng-content></ng-content>\n </tn-custom-scrollbar>\n <p-header *ngIf=\"showHeader\">\n <ng-container *ngIf=\"header && !headerTemplate\">\n <div>{{header | translate}}</div>\n </ng-container>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </p-header>\n <p-footer *ngIf=\"showFooter\">\n <p-footer *ngIf=\"formBase && formBase.buttonTemplate\" style=\"display: flex;float: right\">\n <ng-container *ngTemplateOutlet=\"formBase.buttonTemplate\">\n </ng-container>\n </p-footer>\n <ng-container *ngIf=\"!formBase || !formBase.buttonTemplate\">\n <p-footer *ngIf=\"footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </p-footer>\n <p-footer *ngIf=\"buttonTemplateInput\">\n <ng-container *ngTemplateOutlet=\"buttonTemplateInput\"></ng-container>\n </p-footer>\n <p-footer *ngIf=\"!footer && !buttonTemplateInput\">\n <button pButton preventTab type=\"button\" icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"handleHideDialog($event)\"></button>\n </p-footer>\n </ng-container>\n </p-footer>\n</p-dialog>",
46469
46513
  styles: [""]
46470
46514
  },] }
46471
46515
  ];
@@ -46478,6 +46522,7 @@ TnDialogComponent.propDecorators = {
46478
46522
  scrollbar: [{ type: ViewChild, args: ['scrollbar', { static: true },] }],
46479
46523
  formBase: [{ type: ContentChild, args: ['formBase', { static: false },] }],
46480
46524
  footer: [{ type: ContentChild, args: ['footer', { static: true },] }],
46525
+ headerTemplate: [{ type: ContentChild, args: ['headerTemplate', { static: true },] }],
46481
46526
  children: [{ type: ContentChildren, args: [TemplateRef, { descendants: true },] }],
46482
46527
  maskClass: [{ type: Input }],
46483
46528
  styleClass: [{ type: Input }],