@mediusinc/mng-commons 0.2.19 → 0.2.20

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 (46) hide show
  1. package/assets/i18n/en.json +3 -3
  2. package/assets/i18n/sl.json +5 -5
  3. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +6 -6
  4. package/esm2020/lib/components/action/action.component.mjs +26 -13
  5. package/esm2020/lib/components/action/editor/action-editor.component.mjs +78 -21
  6. package/esm2020/lib/components/action/route/action-route.component.mjs +6 -30
  7. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +1 -1
  8. package/esm2020/lib/components/tableview/table/table.component.mjs +2 -2
  9. package/esm2020/lib/components/tableview/tableview.component.mjs +12 -12
  10. package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
  11. package/esm2020/lib/descriptors/action.descriptor.mjs +35 -2
  12. package/esm2020/lib/mng-commons.module.mjs +6 -3
  13. package/esm2020/lib/models/error.model.mjs +2 -0
  14. package/esm2020/lib/models/index.mjs +2 -1
  15. package/esm2020/lib/services/action-executor.service.mjs +62 -10
  16. package/esm2020/lib/services/error-mapper.service.mjs +14 -0
  17. package/esm2020/lib/services/index.mjs +3 -1
  18. package/esm2020/lib/services/view-container.component.service.mjs +35 -0
  19. package/esm2020/lib/utils/i18n.util.mjs +29 -1
  20. package/esm2020/lib/utils/toast.util.mjs +5 -9
  21. package/fesm2015/mediusinc-mng-commons.mjs +319 -145
  22. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  23. package/fesm2020/mediusinc-mng-commons.mjs +316 -144
  24. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  25. package/lib/components/action/action.component.d.ts +9 -7
  26. package/lib/components/action/editor/action-editor.component.d.ts +19 -13
  27. package/lib/components/action/route/action-route.component.d.ts +1 -2
  28. package/lib/components/tableview/table/table.component.d.ts +1 -1
  29. package/lib/components/tableview/tableview.component.d.ts +1 -2
  30. package/lib/descriptors/action.descriptor.d.ts +30 -11
  31. package/lib/models/error.model.d.ts +12 -0
  32. package/lib/models/index.d.ts +1 -0
  33. package/lib/services/action-executor.service.d.ts +8 -2
  34. package/lib/services/error-mapper.service.d.ts +7 -0
  35. package/lib/services/index.d.ts +2 -0
  36. package/lib/services/{mng-view-container-component.service.d.ts → view-container.component.service.d.ts} +0 -0
  37. package/lib/utils/i18n.util.d.ts +3 -0
  38. package/lib/utils/toast.util.d.ts +2 -2
  39. package/package.json +1 -1
  40. package/scss/mng-overrides/_theme_button.scss +0 -1
  41. package/scss/mng-overrides/_theme_styles.scss +1 -0
  42. package/scss/mng-overrides/_theme_toolbar.scss +5 -0
  43. package/scss/theme/default/_mng-variables-theme-dark.scss +3 -0
  44. package/scss/theme/default/_mng-variables-theme-light.scss +3 -0
  45. package/esm2020/lib/services/mng-view-container-component.service.mjs +0 -35
  46. package/scss/mng-overrides/_variables.scss +0 -2
@@ -69,13 +69,13 @@
69
69
  }
70
70
  },
71
71
  "details": {
72
- "dialog": {
72
+ "editor": {
73
73
  "title": "{{modelName}}: {{itemTitle}}"
74
74
  }
75
75
  },
76
76
  "add": {
77
77
  "title": "Add",
78
- "dialog": {
78
+ "editor": {
79
79
  "title": "Add {{modelName}}"
80
80
  },
81
81
  "success": {
@@ -88,7 +88,7 @@
88
88
  }
89
89
  },
90
90
  "edit": {
91
- "dialog": {
91
+ "editor": {
92
92
  "title": "Edit {{modelName}}: {{itemTitle}}"
93
93
  },
94
94
  "success": {
@@ -69,14 +69,14 @@
69
69
  }
70
70
  },
71
71
  "details": {
72
- "dialog": {
72
+ "editor": {
73
73
  "title": "{{modelName}} - podrobnosti: {{itemTitle}}"
74
74
  }
75
75
  },
76
76
  "add": {
77
77
  "title": "Dodaj",
78
- "dialog": {
79
- "title": "Dodaj {{modelName}}"
78
+ "editor": {
79
+ "title": "{{modelName}} - dodaj"
80
80
  },
81
81
  "success": {
82
82
  "title": "Dodano",
@@ -88,8 +88,8 @@
88
88
  }
89
89
  },
90
90
  "edit": {
91
- "dialog": {
92
- "title": "{{modelName}} - urejanje: {{itemTitle}}"
91
+ "editor": {
92
+ "title": "{{modelName}} - uredi: {{itemTitle}}"
93
93
  },
94
94
  "success": {
95
95
  "title": "Shranjeno",
@@ -8,7 +8,7 @@ export class AMngCrudApiService {
8
8
  this.objectSerializer = ObjectSerializer.get();
9
9
  }
10
10
  createPost(item, params) {
11
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getCreatePostPath()}`;
11
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getCreatePostPath()}`;
12
12
  return this.http
13
13
  .post(url, this.objectSerializer.serializeClass(item, this.type), {
14
14
  withCredentials: true,
@@ -19,7 +19,7 @@ export class AMngCrudApiService {
19
19
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.type)));
20
20
  }
21
21
  getAllPost(queryParamBody, params) {
22
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getGetAllPostPath()}`;
22
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getGetAllPostPath()}`;
23
23
  return this.http
24
24
  .post(url, this.objectSerializer.serialize(queryParamBody, 'QueryParam'), {
25
25
  withCredentials: true,
@@ -30,7 +30,7 @@ export class AMngCrudApiService {
30
30
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.queryResultType)));
31
31
  }
32
32
  getByIdGet(id, params) {
33
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getGetByIdGetPath(id)}`;
33
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getGetByIdGetPath(id)}`;
34
34
  return this.http
35
35
  .get(url, {
36
36
  withCredentials: true,
@@ -41,7 +41,7 @@ export class AMngCrudApiService {
41
41
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.type)));
42
42
  }
43
43
  updatePut(id, item, params) {
44
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getUpdatePutPath(id, item)}`;
44
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getUpdatePutPath(id, item)}`;
45
45
  return this.http
46
46
  .put(url, this.objectSerializer.serializeClass(item, this.type), {
47
47
  withCredentials: true,
@@ -52,7 +52,7 @@ export class AMngCrudApiService {
52
52
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.type)));
53
53
  }
54
54
  removeDelete(id, item, params) {
55
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getRemoveDeletePath(id, item)}`;
55
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getRemoveDeletePath(id, item)}`;
56
56
  return this.http
57
57
  .request('delete', url, {
58
58
  withCredentials: true,
@@ -81,4 +81,4 @@ export class AMngCrudApiService {
81
81
  return `/${id}`;
82
82
  }
83
83
  }
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1hcGkuYWJzdHJhY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3NlcnZpY2VzL2NydWQtYXBpLmFic3RyYWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSW5DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUUxQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUdwQyxZQUFnQyxJQUFrQixFQUFZLGVBQStCLEVBQVksSUFBZ0I7UUFBekYsU0FBSSxHQUFKLElBQUksQ0FBYztRQUFZLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUFZLFNBQUksR0FBSixJQUFJLENBQVk7UUFGdEcscUJBQWdCLEdBQXFCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTZDLENBQUM7SUFFdEgsVUFBVSxDQUFDLElBQU8sRUFBRSxNQUFtQjtRQUMxQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQzVGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQUksR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqRSxlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsTUFBTTtZQUNmLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLE1BQU0sRUFBRSxNQUFNO1NBQ2pCLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTSxVQUFVLENBQUMsY0FBaUMsRUFBRSxNQUFtQjtRQUNwRSxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQzVGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFO1lBQzNFLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsY0FBYyxFQUFFLEtBQUs7WUFDckIsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFPLEVBQUUsTUFBbUI7UUFDMUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDOUYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FBSSxHQUFHLEVBQUU7WUFDVCxlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsTUFBTTtZQUNmLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLE1BQU0sRUFBRSxNQUFNO1NBQ2pCLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTSxTQUFTLENBQUMsRUFBTyxFQUFFLElBQU8sRUFBRSxNQUFtQjtRQUNsRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hFLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsY0FBYyxFQUFFLEtBQUs7WUFDckIsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVNLFlBQVksQ0FBQyxFQUFPLEVBQUUsSUFBUSxFQUFFLE1BQW1CO1FBQ3RELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0RyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsT0FBTyxDQUFNLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDekIsZUFBZSxFQUFFLElBQUk7WUFDckIsT0FBTyxFQUFFLE1BQU07WUFDZixjQUFjLEVBQUUsS0FBSztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDOUUsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQU1TLGlCQUFpQjtRQUN2QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRVMsaUJBQWlCO1FBQ3ZCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxnQkFBZ0IsQ0FBQyxFQUFPLEVBQUUsSUFBTztRQUN2QyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEVBQU87UUFDL0IsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCw2REFBNkQ7SUFDbkQsbUJBQW1CLENBQUMsRUFBTyxFQUFFLElBQVE7UUFDM0MsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7TWVkaXVzUXVlcnlQYXJhbSwgTWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge09iamVjdFNlcmlhbGl6ZXJ9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFNbmdDcnVkQXBpU2VydmljZTxULCBRUlQgZXh0ZW5kcyBNZWRpdXNRdWVyeVJlc3VsdDxUPj4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvYmplY3RTZXJpYWxpemVyOiBPYmplY3RTZXJpYWxpemVyID0gT2JqZWN0U2VyaWFsaXplci5nZXQoKTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdHlwZTogQ2xhc3NUeXBlPFQ+LCBwcm90ZWN0ZWQgcXVlcnlSZXN1bHRUeXBlOiBDbGFzc1R5cGU8UVJUPiwgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgICBwdWJsaWMgY3JlYXRlUG9zdChpdGVtOiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0vJHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRDcmVhdGVQb3N0UGF0aCgpfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PFQ+KHVybCwgdGhpcy5vYmplY3RTZXJpYWxpemVyLnNlcmlhbGl6ZUNsYXNzKGl0ZW0sIHRoaXMudHlwZSksIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbFBvc3QocXVlcnlQYXJhbUJvZHk/OiBNZWRpdXNRdWVyeVBhcmFtLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxRUlQ+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRCYXNlUGF0aCgpfS8ke3RoaXMuZ2V0U2VydmljZUJhc2VQYXRoKCl9JHt0aGlzLmdldEdldEFsbFBvc3RQYXRoKCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8UVJUPih1cmwsIHRoaXMub2JqZWN0U2VyaWFsaXplci5zZXJpYWxpemUocXVlcnlQYXJhbUJvZHksICdRdWVyeVBhcmFtJyksIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnF1ZXJ5UmVzdWx0VHlwZSkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QnlJZEdldChpZDogYW55LCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0vJHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRHZXRCeUlkR2V0UGF0aChpZCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxUPih1cmwsIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVB1dChpZDogYW55LCBpdGVtOiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0vJHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRVcGRhdGVQdXRQYXRoKGlkLCBpdGVtKX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucHV0PFQ+KHVybCwgdGhpcy5vYmplY3RTZXJpYWxpemVyLnNlcmlhbGl6ZUNsYXNzKGl0ZW0sIHRoaXMudHlwZSksIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZURlbGV0ZShpZDogYW55LCBpdGVtPzogVCwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0vJHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRSZW1vdmVEZWxldGVQYXRoKGlkLCBpdGVtKX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucmVxdWVzdDxhbnk+KCdkZWxldGUnLCB1cmwsIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBib2R5OiBpdGVtID8gdGhpcy5vYmplY3RTZXJpYWxpemVyLnNlcmlhbGl6ZUNsYXNzKGl0ZW0sIHRoaXMudHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHRoaXMub2JqZWN0U2VyaWFsaXplci5kZXNlcmlhbGl6ZUNsYXNzKHJlcywgdGhpcy50eXBlKSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRCYXNlUGF0aCgpOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0U2VydmljZUJhc2VQYXRoKCk6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBnZXRHZXRBbGxQb3N0UGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJy9nZXQtYWxsJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q3JlYXRlUG9zdFBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgZ2V0VXBkYXRlUHV0UGF0aChpZDogYW55LCBpdGVtOiBUKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAvJHtpZH1gO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRHZXRCeUlkR2V0UGF0aChpZDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAvJHtpZH1gO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgZ2V0UmVtb3ZlRGVsZXRlUGF0aChpZDogYW55LCBpdGVtPzogVCkge1xuICAgICAgICByZXR1cm4gYC8ke2lkfWA7XG4gICAgfVxufVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1hcGkuYWJzdHJhY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3NlcnZpY2VzL2NydWQtYXBpLmFic3RyYWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSW5DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUUxQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUdwQyxZQUFnQyxJQUFrQixFQUFZLGVBQStCLEVBQVksSUFBZ0I7UUFBekYsU0FBSSxHQUFKLElBQUksQ0FBYztRQUFZLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUFZLFNBQUksR0FBSixJQUFJLENBQVk7UUFGdEcscUJBQWdCLEdBQXFCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTZDLENBQUM7SUFFdEgsVUFBVSxDQUFDLElBQU8sRUFBRSxNQUFtQjtRQUMxQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQzNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQUksR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqRSxlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsTUFBTTtZQUNmLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLE1BQU0sRUFBRSxNQUFNO1NBQ2pCLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJ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QUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDOUUsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQU1TLGlCQUFpQjtRQUN2QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRVMsaUJBQWlCO1FBQ3ZCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxnQkFBZ0IsQ0FBQyxFQUFPLEVBQUUsSUFBTztRQUN2QyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEVBQU87UUFDL0IsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCw2REFBNkQ7SUFDbkQsbUJBQW1CLENBQUMsRUFBTyxFQUFFLElBQVE7UUFDM0MsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7TWVkaXVzUXVlcnlQYXJhbSwgTWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge09iamVjdFNlcmlhbGl6ZXJ9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFNbmdDcnVkQXBpU2VydmljZTxULCBRUlQgZXh0ZW5kcyBNZWRpdXNRdWVyeVJlc3VsdDxUPj4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvYmplY3RTZXJpYWxpemVyOiBPYmplY3RTZXJpYWxpemVyID0gT2JqZWN0U2VyaWFsaXplci5nZXQoKTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdHlwZTogQ2xhc3NUeXBlPFQ+LCBwcm90ZWN0ZWQgcXVlcnlSZXN1bHRUeXBlOiBDbGFzc1R5cGU8UVJUPiwgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgICBwdWJsaWMgY3JlYXRlUG9zdChpdGVtOiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0ke3RoaXMuZ2V0U2VydmljZUJhc2VQYXRoKCl9JHt0aGlzLmdldENyZWF0ZVBvc3RQYXRoKCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8VD4odXJsLCB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplQ2xhc3MoaXRlbSwgdGhpcy50eXBlKSwge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVDbGFzcyhyZXMsIHRoaXMudHlwZSkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsUG9zdChxdWVyeVBhcmFtQm9keT86IE1lZGl1c1F1ZXJ5UGFyYW0sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFFSVD4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldEJhc2VQYXRoKCl9JHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRHZXRBbGxQb3N0UGF0aCgpfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PFFSVD4odXJsLCB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplKHF1ZXJ5UGFyYW1Cb2R5LCAnUXVlcnlQYXJhbScpLCB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHRoaXMub2JqZWN0U2VyaWFsaXplci5kZXNlcmlhbGl6ZUNsYXNzKHJlcywgdGhpcy5xdWVyeVJlc3VsdFR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5SWRHZXQoaWQ6IGFueSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldEJhc2VQYXRoKCl9JHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRHZXRCeUlkR2V0UGF0aChpZCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxUPih1cmwsIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVB1dChpZDogYW55LCBpdGVtOiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0ke3RoaXMuZ2V0U2VydmljZUJhc2VQYXRoKCl9JHt0aGlzLmdldFVwZGF0ZVB1dFBhdGgoaWQsIGl0ZW0pfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wdXQ8VD4odXJsLCB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplQ2xhc3MoaXRlbSwgdGhpcy50eXBlKSwge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVDbGFzcyhyZXMsIHRoaXMudHlwZSkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRGVsZXRlKGlkOiBhbnksIGl0ZW0/OiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRCYXNlUGF0aCgpfSR7dGhpcy5nZXRTZXJ2aWNlQmFzZVBhdGgoKX0ke3RoaXMuZ2V0UmVtb3ZlRGVsZXRlUGF0aChpZCwgaXRlbSl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnJlcXVlc3Q8VD4oJ2RlbGV0ZScsIHVybCwge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJvZHk6IGl0ZW0gPyB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplQ2xhc3MoaXRlbSwgdGhpcy50eXBlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEJhc2VQYXRoKCk6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTZXJ2aWNlQmFzZVBhdGgoKTogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIGdldEdldEFsbFBvc3RQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnL2dldC1hbGwnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDcmVhdGVQb3N0UGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBnZXRVcGRhdGVQdXRQYXRoKGlkOiBhbnksIGl0ZW06IFQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYC8ke2lkfWA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEdldEJ5SWRHZXRQYXRoKGlkOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYC8ke2lkfWA7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBnZXRSZW1vdmVEZWxldGVQYXRoKGlkOiBhbnksIGl0ZW0/OiBUKSB7XG4gICAgICAgIHJldHVybiBgLyR7aWR9YDtcbiAgICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, Input, Optional } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output } from '@angular/core';
2
2
  import { ConfirmationService } from 'primeng/api';
3
3
  import { ReplaySubject, of } from 'rxjs';
4
4
  import { first } from 'rxjs/operators';
@@ -8,12 +8,11 @@ import * as i1 from "@angular/router";
8
8
  import * as i2 from "@ngx-translate/core";
9
9
  import * as i3 from "../../services";
10
10
  import * as i4 from "primeng/api";
11
- import * as i5 from "../../services/mng-view-container-component.service";
12
- import * as i6 from "primeng/confirmdialog";
13
- import * as i7 from "@angular/common";
14
- import * as i8 from "primeng/button";
15
- import * as i9 from "primeng/ripple";
16
- import * as i10 from "primeng/tooltip";
11
+ import * as i5 from "primeng/confirmdialog";
12
+ import * as i6 from "@angular/common";
13
+ import * as i7 from "primeng/button";
14
+ import * as i8 from "primeng/ripple";
15
+ import * as i9 from "primeng/tooltip";
17
16
  export class MngActionComponent {
18
17
  constructor(route, translate, actionExecutor, confirmationService, viewContainerService) {
19
18
  this.route = route;
@@ -21,6 +20,9 @@ export class MngActionComponent {
21
20
  this.actionExecutor = actionExecutor;
22
21
  this.confirmationService = confirmationService;
23
22
  this.viewContainerService = viewContainerService;
23
+ this.inputDisabled = of(false);
24
+ this.inputLoading = of(false);
25
+ this.triggerEventEmitter = new EventEmitter();
24
26
  this.loadingSubject = new ReplaySubject(1);
25
27
  this.$loading = this.loadingSubject.asObservable();
26
28
  this.cmpId = Math.random().toString(36).substring(2);
@@ -43,11 +45,13 @@ export class MngActionComponent {
43
45
  .triggerAction(this.action, this.itemId, this.item, actionData, this.route, this.viewContainer, this)
44
46
  .pipe(first())
45
47
  .subscribe({
46
- next: () => {
48
+ next: atr => {
49
+ this.triggerEventEmitter.next(atr);
47
50
  this.loadingSubject.next(false);
48
51
  },
49
52
  error: err => {
50
53
  console.error(`Error occurred while executing action ${this.action.actionName}.`, err);
54
+ this.loadingSubject.next(false);
51
55
  }
52
56
  });
53
57
  }
@@ -58,12 +62,12 @@ export class MngActionComponent {
58
62
  return `${action.actionName}_${this.cmpId}`;
59
63
  }
60
64
  }
61
- MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.MngActionExecutorService }, { token: i4.ConfirmationService }, { token: i5.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
62
- MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, providers: [ConfirmationService], ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <button\n *ngIf=\"action.icon && action.title === null; else noIcon\"\n type=\"button\"\n pButton\n pRipple\n [icon]=\"action.icon\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"($isEnabled | async) === false\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n <ng-template #noIcon>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"($isEnabled | async) === false\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-sm]=\"action.isSizeSmall\"\n [class.p-button-lg]=\"action.isSizeLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", components: [{ type: i6.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i9.Ripple, selector: "[pRipple]" }, { type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
65
+ MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.MngActionExecutorService }, { token: i4.ConfirmationService }, { token: i3.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
66
+ MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { triggerEventEmitter: "trigger" }, providers: [ConfirmationService], ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <button\n *ngIf=\"action.icon && action.title === null; else noIcon\"\n type=\"button\"\n pButton\n pRipple\n [icon]=\"action.icon\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false && ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n <ng-template #noIcon>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false && ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-sm]=\"action.isSizeSmall\"\n [class.p-button-lg]=\"action.isSizeLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", components: [{ type: i5.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, decorators: [{
64
68
  type: Component,
65
- args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"$isVisible | async\">\n <button\n *ngIf=\"action.icon && action.title === null; else noIcon\"\n type=\"button\"\n pButton\n pRipple\n [icon]=\"action.icon\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"($isEnabled | async) === false\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n <ng-template #noIcon>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"($isEnabled | async) === false\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-sm]=\"action.isSizeSmall\"\n [class.p-button-lg]=\"action.isSizeLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n" }]
66
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.MngActionExecutorService }, { type: i4.ConfirmationService }, { type: i5.MngViewContainerComponentService, decorators: [{
69
+ args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"$isVisible | async\">\n <button\n *ngIf=\"action.icon && action.title === null; else noIcon\"\n type=\"button\"\n pButton\n pRipple\n [icon]=\"action.icon\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false && ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n <ng-template #noIcon>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false && ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-sm]=\"action.isSizeSmall\"\n [class.p-button-lg]=\"action.isSizeLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n" }]
70
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.MngActionExecutorService }, { type: i4.ConfirmationService }, { type: i3.MngViewContainerComponentService, decorators: [{
67
71
  type: Optional
68
72
  }] }]; }, propDecorators: { action: [{
69
73
  type: Input
@@ -75,8 +79,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
75
79
  type: Input
76
80
  }], dataProvider: [{
77
81
  type: Input
82
+ }], inputDisabled: [{
83
+ type: Input,
84
+ args: ['disabled']
85
+ }], inputLoading: [{
86
+ type: Input,
87
+ args: ['loading']
78
88
  }], viewContainerInit: [{
79
89
  type: Input,
80
90
  args: ['viewContainer']
91
+ }], triggerEventEmitter: [{
92
+ type: Output,
93
+ args: ['trigger']
81
94
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUkxRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFhLGFBQWEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBUXJDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7OztBQVNyQyxNQUFNLE9BQU8sa0JBQWtCO0lBcUIzQixZQUNZLEtBQXFCLEVBQ3JCLFNBQTJCLEVBQzNCLGNBQXdDLEVBQ3hDLG1CQUF3QyxFQUM1QixvQkFBbUU7UUFKL0UsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDNUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUErQztRQWhCbkYsbUJBQWMsR0FBRyxJQUFJLGFBQWEsQ0FBVSxDQUFDLENBQUMsQ0FBQztRQUNoRCxhQUFRLEdBQXdCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFbkUsVUFBSyxHQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMs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QVUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQzs7K0dBMUVRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNOQUZoQixDQUFDLG1CQUFtQixDQUFDLDBCQ3JCcEMsNjBEQXVDQTsyRkRoQmEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLG1CQUFtQixDQUFDOzswQkE0QjNCLFFBQVE7NENBeEJHLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFeUIsaUJBQWlCO3NCQUEvQyxLQUFLO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaXJzdH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0RhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0lWaWV3Q29udGFpbmVyfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdBY3Rpb25FeGVjdXRvclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7TW5nVmlld0NvbnRhaW5lckNvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21uZy12aWV3LWNvbnRhaW5lci1jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQge0lkVHlwZX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtJMThuVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtBY3Rpb25EYXRhLCBJQWN0aW9uQ29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAnLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1hY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0NvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvbkNvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCwgSUFjdGlvbkNvbmZpcm1hdGlvblNlcnZpY2Uge1xuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb24hOiBBY3Rpb25EZXNjcmlwdG9yPFQ+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtPzogVDtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbUlkPzogSWRUeXBlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25EYXRhPzogQWN0aW9uRGF0YTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0YVByb3ZpZGVyPzogRGF0YVByb3ZpZGVyPFQsIFM+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCd2aWV3Q29udGFpbmVyJykgcHVibGljIHZpZXdDb250YWluZXJJbml0PzogSVZpZXdDb250YWluZXI8VCwgUz47XG5cbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHVibGljICRsb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyBjbXBJZDogc3RyaW5nID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xuICAgIHB1YmxpYyAkaXNWaXNpYmxlITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwdWJsaWMgJGlzRW5hYmxlZCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHVibGljICRsYWJlbCE6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG4gICAgcHVibGljICR0b29sdGlwITogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcblxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPFQsIFM+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhY3Rpb25FeGVjdXRvcjogTW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lclNlcnZpY2U6IE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlPFQsIFM+IHwgbnVsbFxuICAgICkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyID0gdGhpcy52aWV3Q29udGFpbmVySW5pdCA/PyB0aGlzLnZpZXdDb250YWluZXJTZXJ2aWNlID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucHJlcGFyZUFjdGlvbkV4ZWNDb250ZXh0KFxuICAgICAgICAgICAgdGhpcy5hY3Rpb24sXG4gICAgICAgICAgICB0aGlzLml0ZW1JZCxcbiAgICAgICAgICAgIHRoaXMuaXRlbSxcbiAgICAgICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyLFxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICB0aGlzLmFjdGlvbkRhdGFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy4kaXNWaXNpYmxlID0gdHlwZW9mIHRoaXMuYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5hY3Rpb24uaXNWaXNpYmxlRnVuY3Rpb24oY29udGV4dCkgOiBvZih0cnVlKTtcbiAgICAgICAgdGhpcy4kaXNFbmFibGVkID0gdHlwZW9mIHRoaXMuYWN0aW9uLmlzRW5hYmxlZEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5hY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkgOiBvZih0cnVlKTtcbiAgICAgICAgdGhpcy4kbGFiZWwgPSBJMThuVXRpbC5zdHJlYW1BY3Rpb25UcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24sICd0aXRsZScsIHRoaXMuYWN0aW9uPy50aXRsZSA/PyB1bmRlZmluZWQsIHRoaXMuaXRlbSk7XG4gICAgICAgIHRoaXMuJHRvb2x0aXAgPSBJMThuVXRpbC5zdHJlYW1BY3Rpb25UcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24sICd0b29sdGlwJywgdGhpcy5hY3Rpb24/LnRvb2x0aXAgPz8gdW5kZWZpbmVkLCB0aGlzLml0ZW0pO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgdHJpZ2dlckFjdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGFjdGlvbkRhdGEgPSB0aGlzLmFjdGlvbkRhdGEgPyB0aGlzLmFjdGlvbkRhdGEgOiB7fTtcbiAgICAgICAgYWN0aW9uRGF0YVsnY21wSWQnXSA9IHRoaXMuY21wSWQ7XG5cbiAgICAgICAgdGhpcy5hY3Rpb25FeGVjdXRvclxuICAgICAgICAgICAgLnRyaWdnZXJBY3Rpb24odGhpcy5hY3Rpb24sIHRoaXMuaXRlbUlkLCB0aGlzLml0ZW0sIGFjdGlvbkRhdGEsIHRoaXMucm91dGUsIHRoaXMudmlld0NvbnRhaW5lciwgdGhpcylcbiAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3Igb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIGFjdGlvbiAke3RoaXMuYWN0aW9uLmFjdGlvbk5hbWV9LmAsIGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2VJbnN0YW5jZUtleShhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICByZXR1cm4gYCR7YWN0aW9uLmFjdGlvbk5hbWV9XyR7dGhpcy5jbXBJZH1gO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIkaXNWaXNpYmxlIHwgYXN5bmNcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiYWN0aW9uLmljb24gJiYgYWN0aW9uLnRpdGxlID09PSBudWxsOyBlbHNlIG5vSWNvblwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIHBSaXBwbGVcbiAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb25cIlxuICAgICAgICBbbG9hZGluZ109XCIoJGxvYWRpbmcgfCBhc3luYykgPz8gZmFsc2VcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiKCRpc0VuYWJsZWQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICAgICAgW3BUb29sdGlwXT1cIiRhbnkoJHRvb2x0aXAgfCBhc3luYylcIlxuICAgICAgICAoY2xpY2spPVwidHJpZ2dlckFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJtbmctYWN0aW9uLWJ1dHRvbiBtbmctYWN0aW9uLWJ1dHRvbi1pY29uIHAtYnV0dG9uLXJvdW5kZWRcIlxuICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi14c109XCJhY3Rpb24uaXNTaXplRXh0cmFTbWFsbFwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXNtXT1cImFjdGlvbi5pc1NpemVTbWFsbFwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLWxnXT1cImFjdGlvbi5pc1NpemVMYXJnZVwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXhsXT1cImFjdGlvbi5pc1NpemVFeHRyYUxhcmdlXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXByaW1hcnldPVwiYWN0aW9uLmxldmVsID09PSAxXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXN1Y2Nlc3NdPVwiYWN0aW9uLmxldmVsID09PSA1XCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRhbmdlcl09XCJhY3Rpb24ubGV2ZWwgPT09IDdcIj48L2J1dHRvbj5cbiAgICA8bmctdGVtcGxhdGUgI25vSWNvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICBbaWNvbl09XCIkYW55KGFjdGlvbi5pY29uKVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiKCRsYWJlbCB8IGFzeW5jKSA/PyAnJ1wiXG4gICAgICAgICAgICBbbG9hZGluZ109XCIoJGxvYWRpbmcgfCBhc3luYykgPz8gZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIigkaXNFbmFibGVkIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgICAgICAgICBbcFRvb2x0aXBdPVwiJGFueSgkdG9vbHRpcCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW5nLWFjdGlvbi1idXR0b24gcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tc21dPVwiYWN0aW9uLmlzU2l6ZVNtYWxsXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1sZ109XCJhY3Rpb24uaXNTaXplTGFyZ2VcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXByaW1hcnldPVwiYWN0aW9uLmxldmVsID09PSAxXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1zdWNjZXNzXT1cImFjdGlvbi5sZXZlbCA9PT0gNVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tZGFuZ2VyXT1cImFjdGlvbi5sZXZlbCA9PT0gN1wiPjwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPHAtY29uZmlybURpYWxvZyAqbmdJZj1cImFjdGlvbi5oYXNSdW5Db25maXJtYXRpb25cIiBba2V5XT1cImFjdGlvbi5hY3Rpb25OYW1lICsgJ18nICsgY21wSWRcIiBbYmFzZVpJbmRleF09XCI1MFwiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1jb25maXJtRGlhbG9nPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSWhILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWEsYUFBYSxFQUFFLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPckMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7QUFTckMsTUFBTSxPQUFPLGtCQUFrQjtJQXdCM0IsWUFDWSxLQUFxQixFQUNyQixTQUEyQixFQUMzQixjQUF3QyxFQUN4QyxtQkFBd0MsRUFDNUIsb0JBQW1FO1FBSi9FLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQzVCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBK0M7UUF0QmpFLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxpQkFBWSxHQUF3QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFHN0Msd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQWtELENBQUM7UUFFM0csbUJBQWMsR0FBRyxJQUFJLGFBQWEsQ0FBVSxDQUFD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QUMseUNBQXlDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLENBQUM7U0FDSixDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sc0JBQXNCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFTSxpQ0FBaUMsQ0FBQyxNQUE2QjtRQUNsRSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQzs7K0dBL0VRLGtCQUFrQjttR0FBbEIsa0JBQWtCLDRWQUZoQixDQUFDLG1CQUFtQixDQUFDLDBCQ3BCcEMsdStEQXVDQTsyRkRqQmEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLG1CQUFtQixDQUFDOzswQkErQjNCLFFBQVE7NENBM0JHLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDb0IsYUFBYTtzQkFBdEMsS0FBSzt1QkFBQyxVQUFVO2dCQUNRLFlBQVk7c0JBQXBDLEtBQUs7dUJBQUMsU0FBUztnQkFDZSxpQkFBaUI7c0JBQS9DLEtBQUs7dUJBQUMsZUFBZTtnQkFFSSxtQkFBbUI7c0JBQTVDLE1BQU07dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaXJzdH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0lEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtJVmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLCBNbmdWaWV3Q29udGFpbmVyQ29tcG9uZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtJZFR5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7STE4blV0aWx9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7QWN0aW9uRGF0YSwgQWN0aW9uVHJpZ2dlclJlc3VsdCwgSUFjdGlvbkNvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJy4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctYWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtDb25maXJtYXRpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNbmdBY3Rpb25Db21wb25lbnQ8VCwgUz4gaW1wbGVtZW50cyBPbkluaXQsIElBY3Rpb25Db25maXJtYXRpb25TZXJ2aWNlIHtcbiAgICAvLyBtZXRhZGF0YSBhbmQgZWRpdG9yIG1vZGUgaW5wdXRcbiAgICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uITogQWN0aW9uRGVzY3JpcHRvcjxUPjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbT86IFQ7XG4gICAgQElucHV0KCkgcHVibGljIGl0ZW1JZD86IElkVHlwZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uRGF0YT86IEFjdGlvbkRhdGE7XG4gICAgQElucHV0KCkgcHVibGljIGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8VCwgUz47XG4gICAgQElucHV0KCdkaXNhYmxlZCcpIHB1YmxpYyBpbnB1dERpc2FibGVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoZmFsc2UpO1xuICAgIEBJbnB1dCgnbG9hZGluZycpIHB1YmxpYyBpbnB1dExvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XG4gICAgQElucHV0KCd2aWV3Q29udGFpbmVyJykgcHVibGljIHZpZXdDb250YWluZXJJbml0PzogSVZpZXdDb250YWluZXI8VCwgUz47XG5cbiAgICBAT3V0cHV0KCd0cmlnZ2VyJykgcHVibGljIHRyaWdnZXJFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvblRyaWdnZXJSZXN1bHQ8VCwgUywgSURhdGFQcm92aWRlcjxULCBTPj4+KCk7XG5cbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHVibGljICRsb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyBjbXBJZDogc3RyaW5nID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xuICAgIHB1YmxpYyAkaXNWaXNpYmxlITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwdWJsaWMgJGlzRW5hYmxlZCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHVibGljICRsYWJlbCE6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG4gICAgcHVibGljICR0b29sdGlwITogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcblxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPFQsIFM+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhY3Rpb25FeGVjdXRvcjogTW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lclNlcnZpY2U6IE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlPFQsIFM+IHwgbnVsbFxuICAgICkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyID0gdGhpcy52aWV3Q29udGFpbmVySW5pdCA/PyB0aGlzLnZpZXdDb250YWluZXJTZXJ2aWNlID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucHJlcGFyZUFjdGlvbkV4ZWNDb250ZXh0KFxuICAgICAgICAgICAgdGhpcy5hY3Rpb24sXG4gICAgICAgICAgICB0aGlzLml0ZW1JZCxcbiAgICAgICAgICAgIHRoaXMuaXRlbSxcbiAgICAgICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyLFxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICB0aGlzLmFjdGlvbkRhdGFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy4kaXNWaXNpYmxlID0gdHlwZW9mIHRoaXMuYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5hY3Rpb24uaXNWaXNpYmxlRnVuY3Rpb24oY29udGV4dCkgOiBvZih0cnVlKTtcbiAgICAgICAgdGhpcy4kaXNFbmFibGVkID0gdHlwZW9mIHRoaXMuYWN0aW9uLmlzRW5hYmxlZEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5hY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkgOiBvZih0cnVlKTtcbiAgICAgICAgdGhpcy4kbGFiZWwgPSBJMThuVXRpbC5zdHJlYW1BY3Rpb25UcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24sICd0aXRsZScsIHRoaXMuYWN0aW9uPy50aXRsZSA/PyB1bmRlZmluZWQsIHRoaXMuaXRlbSk7XG4gICAgICAgIHRoaXMuJHRvb2x0aXAgPSBJMThuVXRpbC5zdHJlYW1BY3Rpb25UcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24sICd0b29sdGlwJywgdGhpcy5hY3Rpb24/LnRvb2x0aXAgPz8gdW5kZWZpbmVkLCB0aGlzLml0ZW0pO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgdHJpZ2dlckFjdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGFjdGlvbkRhdGEgPSB0aGlzLmFjdGlvbkRhdGEgPyB0aGlzLmFjdGlvbkRhdGEgOiB7fTtcbiAgICAgICAgYWN0aW9uRGF0YVsnY21wSWQnXSA9IHRoaXMuY21wSWQ7XG5cbiAgICAgICAgdGhpcy5hY3Rpb25FeGVjdXRvclxuICAgICAgICAgICAgLnRyaWdnZXJBY3Rpb24odGhpcy5hY3Rpb24sIHRoaXMuaXRlbUlkLCB0aGlzLml0ZW0sIGFjdGlvbkRhdGEsIHRoaXMucm91dGUsIHRoaXMudmlld0NvbnRhaW5lciwgdGhpcylcbiAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBhdHIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudEVtaXR0ZXIubmV4dChhdHIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIG9jY3VycmVkIHdoaWxlIGV4ZWN1dGluZyBhY3Rpb24gJHt0aGlzLmFjdGlvbi5hY3Rpb25OYW1lfS5gLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb25maXJtYXRpb25TZXJ2aWNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb25maXJtYXRpb25TZXJ2aWNlSW5zdGFuY2VLZXkoYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4pIHtcbiAgICAgICAgcmV0dXJuIGAke2FjdGlvbi5hY3Rpb25OYW1lfV8ke3RoaXMuY21wSWR9YDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiJGlzVmlzaWJsZSB8IGFzeW5jXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImFjdGlvbi5pY29uICYmIGFjdGlvbi50aXRsZSA9PT0gbnVsbDsgZWxzZSBub0ljb25cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBwUmlwcGxlXG4gICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uXCJcbiAgICAgICAgW2xvYWRpbmddPVwiKCgkbG9hZGluZyB8IGFzeW5jKSA/PyBmYWxzZSkgfHwgKChpbnB1dExvYWRpbmcgfCBhc3luYykgPz8gZmFsc2UpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIigkaXNFbmFibGVkIHwgYXN5bmMpID09PSBmYWxzZSAmJiAoKGlucHV0RGlzYWJsZWQgfCBhc3luYykgPz8gZmFsc2UpXCJcbiAgICAgICAgW3BUb29sdGlwXT1cIiRhbnkoJHRvb2x0aXAgfCBhc3luYylcIlxuICAgICAgICAoY2xpY2spPVwidHJpZ2dlckFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJtbmctYWN0aW9uLWJ1dHRvbiBtbmctYWN0aW9uLWJ1dHRvbi1pY29uIHAtYnV0dG9uLXJvdW5kZWRcIlxuICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi14c109XCJhY3Rpb24uaXNTaXplRXh0cmFTbWFsbFwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXNtXT1cImFjdGlvbi5pc1NpemVTbWFsbFwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLWxnXT1cImFjdGlvbi5pc1NpemVMYXJnZVwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXhsXT1cImFjdGlvbi5pc1NpemVFeHRyYUxhcmdlXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXByaW1hcnldPVwiYWN0aW9uLmxldmVsID09PSAxXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXN1Y2Nlc3NdPVwiYWN0aW9uLmxldmVsID09PSA1XCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRhbmdlcl09XCJhY3Rpb24ubGV2ZWwgPT09IDdcIj48L2J1dHRvbj5cbiAgICA8bmctdGVtcGxhdGUgI25vSWNvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICBbaWNvbl09XCIkYW55KGFjdGlvbi5pY29uKVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiKCRsYWJlbCB8IGFzeW5jKSA/PyAnJ1wiXG4gICAgICAgICAgICBbbG9hZGluZ109XCIoKCRsb2FkaW5nIHwgYXN5bmMpID8/IGZhbHNlKSB8fCAoKGlucHV0TG9hZGluZyB8IGFzeW5jKSA/PyBmYWxzZSlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIigkaXNFbmFibGVkIHwgYXN5bmMpID09PSBmYWxzZSAmJiAoKGlucHV0RGlzYWJsZWQgfCBhc3luYykgPz8gZmFsc2UpXCJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCIkYW55KCR0b29sdGlwIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJtbmctYWN0aW9uLWJ1dHRvbiBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1zbV09XCJhY3Rpb24uaXNTaXplU21hbGxcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWxnXT1cImFjdGlvbi5pc1NpemVMYXJnZVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tcHJpbWFyeV09XCJhY3Rpb24ubGV2ZWwgPT09IDFcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXN1Y2Nlc3NdPVwiYWN0aW9uLmxldmVsID09PSA1XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1kYW5nZXJdPVwiYWN0aW9uLmxldmVsID09PSA3XCI+PC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8cC1jb25maXJtRGlhbG9nICpuZ0lmPVwiYWN0aW9uLmhhc1J1bkNvbmZpcm1hdGlvblwiIFtrZXldPVwiYWN0aW9uLmFjdGlvbk5hbWUgKyAnXycgKyBjbXBJZFwiIFtiYXNlWkluZGV4XT1cIjUwXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLWNvbmZpcm1EaWFsb2c+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==