@mediusinc/mng-commons 0.2.17 → 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 (96) hide show
  1. package/assets/i18n/en.json +7 -5
  2. package/assets/i18n/sl.json +23 -21
  3. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +22 -17
  4. package/esm2020/lib/components/action/action.component.mjs +50 -23
  5. package/esm2020/lib/components/action/editor/action-editor.component.mjs +239 -0
  6. package/esm2020/lib/components/action/index.mjs +2 -2
  7. package/esm2020/lib/components/action/models/action-execution.model.mjs +3 -3
  8. package/esm2020/lib/components/action/route/action-route.component.mjs +19 -38
  9. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +9 -6
  10. package/esm2020/lib/components/form/editor/form-editor.component.mjs +56 -4
  11. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
  12. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +3 -3
  13. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
  14. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -0
  15. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +28 -9
  16. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +12 -9
  17. package/esm2020/lib/components/form/formly/fields/index.mjs +2 -1
  18. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +3 -3
  19. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +4 -3
  20. package/esm2020/lib/components/form/models/form-editor.event.mjs +28 -1
  21. package/esm2020/lib/components/layout/main-layout.component.mjs +1 -1
  22. package/esm2020/lib/components/layout/topbar.component.mjs +1 -1
  23. package/esm2020/lib/components/tableview/table/table.component.mjs +37 -12
  24. package/esm2020/lib/components/tableview/tableview.component.mjs +28 -21
  25. package/esm2020/lib/config/formly.config.mjs +7 -2
  26. package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
  27. package/esm2020/lib/data-providers/table.data-provider.mjs +17 -2
  28. package/esm2020/lib/descriptors/action.descriptor.mjs +146 -2
  29. package/esm2020/lib/descriptors/editor.descriptor.interface.mjs +2 -0
  30. package/esm2020/lib/descriptors/editor.descriptor.mjs +122 -27
  31. package/esm2020/lib/directives/component.directive.mjs +8 -3
  32. package/esm2020/lib/mng-commons.module.mjs +21 -11
  33. package/esm2020/lib/models/error.model.mjs +2 -0
  34. package/esm2020/lib/models/index.mjs +3 -1
  35. package/esm2020/lib/models/view-container.model.mjs +2 -0
  36. package/esm2020/lib/services/action-executor.service.mjs +343 -0
  37. package/esm2020/lib/services/error-mapper.service.mjs +14 -0
  38. package/esm2020/lib/services/index.mjs +4 -2
  39. package/esm2020/lib/services/tokens/default-setting.token.mjs +3 -0
  40. package/esm2020/lib/services/tokens/index.mjs +2 -1
  41. package/esm2020/lib/services/view-container.component.service.mjs +35 -0
  42. package/esm2020/lib/utils/editor-formly.util.mjs +14 -3
  43. package/esm2020/lib/utils/i18n.util.mjs +29 -1
  44. package/esm2020/lib/utils/toast.util.mjs +18 -14
  45. package/esm2020/public-api.mjs +1 -2
  46. package/fesm2015/mediusinc-mng-commons.mjs +1818 -994
  47. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  48. package/fesm2020/mediusinc-mng-commons.mjs +1805 -998
  49. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  50. package/lib/api/services/crud-api.abstract.service.d.ts +9 -8
  51. package/lib/components/action/action.component.d.ts +16 -9
  52. package/lib/components/action/editor/action-editor.component.d.ts +59 -0
  53. package/lib/components/action/index.d.ts +1 -1
  54. package/lib/components/action/models/action-execution.model.d.ts +3 -3
  55. package/lib/components/action/route/action-route.component.d.ts +5 -6
  56. package/lib/components/form/editor/form-editor.component.d.ts +7 -2
  57. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -0
  58. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +2 -0
  59. package/lib/components/form/formly/fields/index.d.ts +1 -0
  60. package/lib/components/form/models/form-editor.event.d.ts +32 -0
  61. package/lib/components/tableview/table/table.component.d.ts +14 -6
  62. package/lib/components/tableview/tableview.component.d.ts +9 -7
  63. package/lib/data-providers/table.data-provider.d.ts +9 -1
  64. package/lib/descriptors/action.descriptor.d.ts +71 -16
  65. package/lib/descriptors/editor.descriptor.d.ts +59 -18
  66. package/lib/descriptors/editor.descriptor.interface.d.ts +9 -0
  67. package/lib/directives/component.directive.d.ts +5 -4
  68. package/lib/mng-commons.module.d.ts +55 -54
  69. package/lib/models/error.model.d.ts +12 -0
  70. package/lib/models/index.d.ts +2 -0
  71. package/lib/models/view-container.model.d.ts +6 -0
  72. package/lib/services/{action.service.d.ts → action-executor.service.d.ts} +25 -18
  73. package/lib/services/error-mapper.service.d.ts +7 -0
  74. package/lib/services/index.d.ts +3 -1
  75. package/lib/services/tokens/default-setting.token.d.ts +2 -0
  76. package/lib/services/tokens/index.d.ts +1 -0
  77. package/lib/services/view-container.component.service.d.ts +22 -0
  78. package/lib/utils/i18n.util.d.ts +3 -0
  79. package/lib/utils/toast.util.d.ts +5 -4
  80. package/package.json +1 -1
  81. package/public-api.d.ts +0 -1
  82. package/scss/mng-overrides/_layout_forms.scss +2 -0
  83. package/scss/mng-overrides/_mixins.scss +7 -0
  84. package/scss/mng-overrides/_theme_button.scss +57 -0
  85. package/scss/mng-overrides/_theme_dropdown.scss +17 -0
  86. package/scss/mng-overrides/_theme_styles.scss +2 -0
  87. package/scss/mng-overrides/_theme_toolbar.scss +5 -0
  88. package/scss/theme/default/_mng-variables-theme-dark.scss +3 -0
  89. package/scss/theme/default/_mng-variables-theme-light.scss +3 -0
  90. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +0 -151
  91. package/esm2020/lib/components/tableview/services/index.mjs +0 -2
  92. package/esm2020/lib/components/tableview/services/tableview.component.service.mjs +0 -21
  93. package/esm2020/lib/services/action.service.mjs +0 -273
  94. package/lib/components/action/dialog/action-dialog.component.d.ts +0 -47
  95. package/lib/components/tableview/services/index.d.ts +0 -1
  96. package/lib/components/tableview/services/tableview.component.service.d.ts +0 -14
@@ -19,8 +19,10 @@
19
19
  "success": "Success",
20
20
  "successMessage": "Operation successful.",
21
21
  "error": "Error",
22
- "errorMessage": "Unknown error{{errorMessage}}",
23
- "general": "General"
22
+ "errorMessage": "Unknown error {{errorMessage}}",
23
+ "general": "General",
24
+ "search": "Search {{item}}",
25
+ "select": "Select"
24
26
  },
25
27
  "languages": {
26
28
  "en": "English",
@@ -67,13 +69,13 @@
67
69
  }
68
70
  },
69
71
  "details": {
70
- "dialog": {
72
+ "editor": {
71
73
  "title": "{{modelName}}: {{itemTitle}}"
72
74
  }
73
75
  },
74
76
  "add": {
75
77
  "title": "Add",
76
- "dialog": {
78
+ "editor": {
77
79
  "title": "Add {{modelName}}"
78
80
  },
79
81
  "success": {
@@ -86,7 +88,7 @@
86
88
  }
87
89
  },
88
90
  "edit": {
89
- "dialog": {
91
+ "editor": {
90
92
  "title": "Edit {{modelName}}: {{itemTitle}}"
91
93
  },
92
94
  "success": {
@@ -10,7 +10,7 @@
10
10
  "cancel": "Prekliči",
11
11
  "close": "Zapri",
12
12
  "add": "Dodaj",
13
- "addItem": "Dodaj {{item}}",
13
+ "addItem": "{{item}} - dodaj",
14
14
  "edit": "Uredi",
15
15
  "delete": "Izbriši",
16
16
  "export": "Izvozi",
@@ -19,8 +19,10 @@
19
19
  "success": "Uspešno",
20
20
  "successMessage": "Operacija uspešna.",
21
21
  "error": "Napaka",
22
- "errorMessage": "Neznana napaka{{errorMessage}}",
23
- "general": "Splošno"
22
+ "errorMessage": "Neznana napaka {{errorMessage}}",
23
+ "general": "Splošno",
24
+ "search": "Išči {{item}}",
25
+ "select": "Izberi"
24
26
  },
25
27
  "languages": {
26
28
  "en": "English",
@@ -43,11 +45,11 @@
43
45
  "invalidFormToastTitle": "Napaka v formi",
44
46
  "invalidFormToastMessage": "Forma ni veljavna, prosimo preverite vnesene informacije in jih popravite.",
45
47
  "validation": {
46
- "required": "{{field}} je zahtevano.",
47
- "minlength": "{{field}} mora biti vsaj {{min}} znakov dolgo.",
48
- "maxlength": "{{field}} mora biti največ {{max}} znakov dolgo.",
49
- "pattern": "{{field}} mora imeti obliko {{pattern}}.",
50
- "email": "{{field}} ni veljaven e-naslov."
48
+ "required": "{{field}} - vnos je obvezen.",
49
+ "minlength": "{{field}} - vons mora biti dolg vsaj {{min}} znakov.",
50
+ "maxlength": "{{field}} - vnos je lahko dolg največ {{max}} znakov.",
51
+ "pattern": "{{field}} - vnos mora imeti obliko {{pattern}}.",
52
+ "email": "{{field}} - vnos ni veljaven e-naslov."
51
53
  }
52
54
  },
53
55
  "mngAutocomplete": {
@@ -67,14 +69,14 @@
67
69
  }
68
70
  },
69
71
  "details": {
70
- "dialog": {
71
- "title": "{{modelName}}: {{itemTitle}}"
72
+ "editor": {
73
+ "title": "{{modelName}} - podrobnosti: {{itemTitle}}"
72
74
  }
73
75
  },
74
76
  "add": {
75
77
  "title": "Dodaj",
76
- "dialog": {
77
- "title": "Dodaj {{modelName}}"
78
+ "editor": {
79
+ "title": "{{modelName}} - dodaj"
78
80
  },
79
81
  "success": {
80
82
  "title": "Dodano",
@@ -82,33 +84,33 @@
82
84
  },
83
85
  "error": {
84
86
  "title": "Napaka",
85
- "message": "Napaka med dodajanjem {{itemTitle}}{{errorMessage}}"
87
+ "message": "Napaka pri shranjevanju '{{itemTitle}}'{{errorMessage}}"
86
88
  }
87
89
  },
88
90
  "edit": {
89
- "dialog": {
90
- "title": "Uredi {{modelName}}: {{itemTitle}}"
91
+ "editor": {
92
+ "title": "{{modelName}} - uredi: {{itemTitle}}"
91
93
  },
92
94
  "success": {
93
- "title": "Uredil {{modelName}}",
94
- "message": "Spremembe {{itemTitle}} so uspešno shranjene."
95
+ "title": "Shranjeno",
96
+ "message": "Spremembe v '{{itemTitle}}' so uspešno shranjene."
95
97
  },
96
98
  "error": {
97
99
  "title": "Napaka",
98
- "message": "Napaka pri dodajanju {{functionTitle}}{{errorMessage}}"
100
+ "message": "Napaka pri shranjevanju '{{itemTitle}}'{{errorMessage}}"
99
101
  }
100
102
  },
101
103
  "delete": {
102
104
  "confirm": {
103
- "message": "Ali ste prepričani, da želite izbrisati {{itemTitle}}?"
105
+ "message": "Ali ste prepričani, da želite izbrisati '{{itemTitle}}'?"
104
106
  },
105
107
  "success": {
106
108
  "title": "Izbrisano",
107
- "message": "{{itemTitle}} je bil uspešno izbrisan."
109
+ "message": "'{{itemTitle}}' je bil uspešno izbrisan."
108
110
  },
109
111
  "error": {
110
112
  "title": "Napaka",
111
- "message": "Napaka med brisanjem {{itemTitle}}{{errorMessage}}"
113
+ "message": "Napaka pri brisanju '{{itemTitle}}'{{errorMessage}}"
112
114
  }
113
115
  },
114
116
  "mngPrime": {
@@ -7,54 +7,59 @@ export class AMngCrudApiService {
7
7
  this.http = http;
8
8
  this.objectSerializer = ObjectSerializer.get();
9
9
  }
10
- createPost(item) {
11
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getCreatePostPath()}`;
10
+ createPost(item, params) {
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,
15
15
  observe: 'body',
16
- reportProgress: false
16
+ reportProgress: false,
17
+ params: params
17
18
  })
18
19
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.type)));
19
20
  }
20
- getAllPost(queryParam) {
21
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getGetAllPostPath()}`;
21
+ getAllPost(queryParamBody, params) {
22
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getGetAllPostPath()}`;
22
23
  return this.http
23
- .post(url, this.objectSerializer.serialize(queryParam, 'QueryParam'), {
24
+ .post(url, this.objectSerializer.serialize(queryParamBody, 'QueryParam'), {
24
25
  withCredentials: true,
25
26
  observe: 'body',
26
- reportProgress: false
27
+ reportProgress: false,
28
+ params: params
27
29
  })
28
30
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.queryResultType)));
29
31
  }
30
- getByIdGet(id) {
31
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getGetByIdGetPath(id)}`;
32
+ getByIdGet(id, params) {
33
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getGetByIdGetPath(id)}`;
32
34
  return this.http
33
35
  .get(url, {
34
36
  withCredentials: true,
35
37
  observe: 'body',
36
- reportProgress: false
38
+ reportProgress: false,
39
+ params: params
37
40
  })
38
41
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.type)));
39
42
  }
40
- updatePut(id, item) {
41
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getUpdatePutPath(id, item)}`;
43
+ updatePut(id, item, params) {
44
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getUpdatePutPath(id, item)}`;
42
45
  return this.http
43
46
  .put(url, this.objectSerializer.serializeClass(item, this.type), {
44
47
  withCredentials: true,
45
48
  observe: 'body',
46
- reportProgress: false
49
+ reportProgress: false,
50
+ params: params
47
51
  })
48
52
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.type)));
49
53
  }
50
- removeDelete(id, item) {
51
- const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getRemoveDeletePath(id, item)}`;
54
+ removeDelete(id, item, params) {
55
+ const url = `${this.getBasePath()}${this.getServiceBasePath()}${this.getRemoveDeletePath(id, item)}`;
52
56
  return this.http
53
57
  .request('delete', url, {
54
58
  withCredentials: true,
55
59
  observe: 'body',
56
60
  reportProgress: false,
57
- body: this.objectSerializer.serializeClass(item, this.type)
61
+ body: item ? this.objectSerializer.serializeClass(item, this.type) : undefined,
62
+ params: params
58
63
  })
59
64
  .pipe(map(res => this.objectSerializer.deserializeClass(res, this.type)));
60
65
  }
@@ -76,4 +81,4 @@ export class AMngCrudApiService {
76
81
  return `/${id}`;
77
82
  }
78
83
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1hcGkuYWJzdHJhY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3NlcnZpY2VzL2NydWQtYXBpLmFic3RyYWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSW5DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUUxQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUdwQyxZQUFnQyxJQUFrQixFQUFZLGVBQStCLEVBQVksSUFBZ0I7UUFBekYsU0FBSSxHQUFKLElBQUksQ0FBYztRQUFZLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUFZLFNBQUksR0FBSixJQUFJLENBQVk7UUFGeEcscUJBQWdCLEdBQXFCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRStDLENBQUM7SUFFdEgsVUFBVSxDQUFDLElBQU87UUFDckIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztRQUM1RixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsSUFBSSxDQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakUsZUFBZSxFQUFFLElBQUk7WUFDckIsT0FBTyxFQUFFLE1BQU07WUFDZixjQUFjLEVBQUUsS0FBSztTQUN4QixDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJ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RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFNUyxpQkFBaUI7UUFDdkIsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVTLGlCQUFpQjtRQUN2QixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCw2REFBNkQ7SUFDbkQsZ0JBQWdCLENBQUMsRUFBTyxFQUFFLElBQU87UUFDdkMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxFQUFPO1FBQy9CLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsNkRBQTZEO0lBQ25ELG1CQUFtQixDQUFDLEVBQU8sRUFBRSxJQUFPO1FBQzFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7Q2xhc3NUeXBlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge01lZGl1c1F1ZXJ5UGFyYW0sIE1lZGl1c1F1ZXJ5UmVzdWx0fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtPYmplY3RTZXJpYWxpemVyfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBTW5nQ3J1ZEFwaVNlcnZpY2U8VCwgUVJUIGV4dGVuZHMgTWVkaXVzUXVlcnlSZXN1bHQ8VD4+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9iamVjdFNlcmlhbGl6ZXI6IE9iamVjdFNlcmlhbGl6ZXIgPSBPYmplY3RTZXJpYWxpemVyLmdldCgpO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0eXBlOiBDbGFzc1R5cGU8VD4sIHByb3RlY3RlZCBxdWVyeVJlc3VsdFR5cGU6IENsYXNzVHlwZTxRUlQ+LCBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCkge31cblxuICAgIHB1YmxpYyBjcmVhdGVQb3N0KGl0ZW06IFQpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRCYXNlUGF0aCgpfS8ke3RoaXMuZ2V0U2VydmljZUJhc2VQYXRoKCl9JHt0aGlzLmdldENyZWF0ZVBvc3RQYXRoKCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8VD4odXJsLCB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplQ2xhc3MoaXRlbSwgdGhpcy50eXBlKSwge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVDbGFzcyhyZXMsIHRoaXMudHlwZSkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsUG9zdChxdWVyeVBhcmFtPzogTWVkaXVzUXVlcnlQYXJhbSk6IE9ic2VydmFibGU8UVJUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0vJHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRHZXRBbGxQb3N0UGF0aCgpfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PFFSVD4odXJsLCB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplKHF1ZXJ5UGFyYW0sICdRdWVyeVBhcmFtJyksIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnF1ZXJ5UmVzdWx0VHlwZSkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QnlJZEdldChpZDogYW55KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0vJHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRHZXRCeUlkR2V0UGF0aChpZCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxUPih1cmwsIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVB1dChpZDogYW55LCBpdGVtOiBUKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0vJHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRVcGRhdGVQdXRQYXRoKGlkLCBpdGVtKX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucHV0PFQ+KHVybCwgdGhpcy5vYmplY3RTZXJpYWxpemVyLnNlcmlhbGl6ZUNsYXNzKGl0ZW0sIHRoaXMudHlwZSksIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZURlbGV0ZShpZDogYW55LCBpdGVtOiBUKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRCYXNlUGF0aCgpfS8ke3RoaXMuZ2V0U2VydmljZUJhc2VQYXRoKCl9JHt0aGlzLmdldFJlbW92ZURlbGV0ZVBhdGgoaWQsIGl0ZW0pfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5yZXF1ZXN0PGFueT4oJ2RlbGV0ZScsIHVybCwge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJvZHk6IHRoaXMub2JqZWN0U2VyaWFsaXplci5zZXJpYWxpemVDbGFzcyhpdGVtLCB0aGlzLnR5cGUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVDbGFzcyhyZXMsIHRoaXMudHlwZSkpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0QmFzZVBhdGgoKTogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFNlcnZpY2VCYXNlUGF0aCgpOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0R2V0QWxsUG9zdFBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcvZ2V0LWFsbCc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldENyZWF0ZVBvc3RQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIGdldFVwZGF0ZVB1dFBhdGgoaWQ6IGFueSwgaXRlbTogVCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgLyR7aWR9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0R2V0QnlJZEdldFBhdGgoaWQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgLyR7aWR9YDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIGdldFJlbW92ZURlbGV0ZVBhdGgoaWQ6IGFueSwgaXRlbTogVCkge1xuICAgICAgICByZXR1cm4gYC8ke2lkfWA7XG4gICAgfVxufVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1hcGkuYWJzdHJhY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3NlcnZpY2VzL2NydWQtYXBpLmFic3RyYWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSW5DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUUxQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUdwQyxZQUFnQyxJQUFrQixFQUFZLGVBQStCLEVBQVksSUFBZ0I7UUFBekYsU0FBSSxHQUFKLElBQUksQ0FBYztRQUFZLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUFZLFNBQUksR0FBSixJQUFJLENBQVk7UUFGdEcscUJBQWdCLEdBQXFCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTZDLENBQUM7SUFFdEgsVUFBVSxDQUFDLElBQU8sRUFBRSxNQUFtQjtRQUMxQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQzNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQUksR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqRSxlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsTUFBTTtZQUNmLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLE1BQU0sRUFBRSxNQUFNO1NBQ2pCLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJ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QUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDOUUsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQU1TLGlCQUFpQjtRQUN2QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRVMsaUJBQWlCO1FBQ3ZCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxnQkFBZ0IsQ0FBQyxFQUFPLEVBQUUsSUFBTztRQUN2QyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEVBQU87UUFDL0IsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCw2REFBNkQ7SUFDbkQsbUJBQW1CLENBQUMsRUFBTyxFQUFFLElBQVE7UUFDM0MsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7TWVkaXVzUXVlcnlQYXJhbSwgTWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge09iamVjdFNlcmlhbGl6ZXJ9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFNbmdDcnVkQXBpU2VydmljZTxULCBRUlQgZXh0ZW5kcyBNZWRpdXNRdWVyeVJlc3VsdDxUPj4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvYmplY3RTZXJpYWxpemVyOiBPYmplY3RTZXJpYWxpemVyID0gT2JqZWN0U2VyaWFsaXplci5nZXQoKTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdHlwZTogQ2xhc3NUeXBlPFQ+LCBwcm90ZWN0ZWQgcXVlcnlSZXN1bHRUeXBlOiBDbGFzc1R5cGU8UVJUPiwgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgICBwdWJsaWMgY3JlYXRlUG9zdChpdGVtOiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0ke3RoaXMuZ2V0U2VydmljZUJhc2VQYXRoKCl9JHt0aGlzLmdldENyZWF0ZVBvc3RQYXRoKCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8VD4odXJsLCB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplQ2xhc3MoaXRlbSwgdGhpcy50eXBlKSwge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVDbGFzcyhyZXMsIHRoaXMudHlwZSkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsUG9zdChxdWVyeVBhcmFtQm9keT86IE1lZGl1c1F1ZXJ5UGFyYW0sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFFSVD4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldEJhc2VQYXRoKCl9JHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRHZXRBbGxQb3N0UGF0aCgpfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PFFSVD4odXJsLCB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplKHF1ZXJ5UGFyYW1Cb2R5LCAnUXVlcnlQYXJhbScpLCB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHRoaXMub2JqZWN0U2VyaWFsaXplci5kZXNlcmlhbGl6ZUNsYXNzKHJlcywgdGhpcy5xdWVyeVJlc3VsdFR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5SWRHZXQoaWQ6IGFueSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldEJhc2VQYXRoKCl9JHt0aGlzLmdldFNlcnZpY2VCYXNlUGF0aCgpfSR7dGhpcy5nZXRHZXRCeUlkR2V0UGF0aChpZCl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxUPih1cmwsIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVB1dChpZDogYW55LCBpdGVtOiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVBhdGgoKX0ke3RoaXMuZ2V0U2VydmljZUJhc2VQYXRoKCl9JHt0aGlzLmdldFVwZGF0ZVB1dFBhdGgoaWQsIGl0ZW0pfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wdXQ8VD4odXJsLCB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplQ2xhc3MoaXRlbSwgdGhpcy50eXBlKSwge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVDbGFzcyhyZXMsIHRoaXMudHlwZSkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRGVsZXRlKGlkOiBhbnksIGl0ZW0/OiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRCYXNlUGF0aCgpfSR7dGhpcy5nZXRTZXJ2aWNlQmFzZVBhdGgoKX0ke3RoaXMuZ2V0UmVtb3ZlRGVsZXRlUGF0aChpZCwgaXRlbSl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnJlcXVlc3Q8VD4oJ2RlbGV0ZScsIHVybCwge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJvZHk6IGl0ZW0gPyB0aGlzLm9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplQ2xhc3MoaXRlbSwgdGhpcy50eXBlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gdGhpcy5vYmplY3RTZXJpYWxpemVyLmRlc2VyaWFsaXplQ2xhc3MocmVzLCB0aGlzLnR5cGUpKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEJhc2VQYXRoKCk6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTZXJ2aWNlQmFzZVBhdGgoKTogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIGdldEdldEFsbFBvc3RQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnL2dldC1hbGwnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDcmVhdGVQb3N0UGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBnZXRVcGRhdGVQdXRQYXRoKGlkOiBhbnksIGl0ZW06IFQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYC8ke2lkfWA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEdldEJ5SWRHZXRQYXRoKGlkOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYC8ke2lkfWA7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBnZXRSZW1vdmVEZWxldGVQYXRoKGlkOiBhbnksIGl0ZW0/OiBUKSB7XG4gICAgICAgIHJldHVybiBgLyR7aWR9YDtcbiAgICB9XG59XG4iXX0=
@@ -1,33 +1,36 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { ConfirmationService, MessageService } from 'primeng/api';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output } from '@angular/core';
2
+ import { ConfirmationService } from 'primeng/api';
3
3
  import { ReplaySubject, of } from 'rxjs';
4
- import { finalize, first } from 'rxjs/operators';
4
+ import { first } from 'rxjs/operators';
5
5
  import { I18nUtil } from '../../utils';
6
6
  import * as i0 from "@angular/core";
7
7
  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 "../tableview/services";
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
- constructor(route, translate, actionService, confirmationService, tableviewService) {
17
+ constructor(route, translate, actionExecutor, confirmationService, viewContainerService) {
19
18
  this.route = route;
20
19
  this.translate = translate;
21
- this.actionService = actionService;
20
+ this.actionExecutor = actionExecutor;
22
21
  this.confirmationService = confirmationService;
23
- this.tableviewService = tableviewService;
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);
27
29
  this.loadingSubject.next(false);
28
30
  }
29
31
  ngOnInit() {
30
- const context = this.actionService.getActionExecContext(this.action, this.itemId, this.item, this.tableviewService?.dataProvider ?? undefined, this.tableviewService, this, this.actionData);
32
+ this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;
33
+ const context = this.actionExecutor.prepareActionExecContext(this.action, this.itemId, this.item, this.dataProvider, this.viewContainer ?? undefined, this, this.actionData);
31
34
  this.$isVisible = typeof this.action.isVisibleFunction === 'function' ? this.action.isVisibleFunction(context) : of(true);
32
35
  this.$isEnabled = typeof this.action.isEnabledFunction === 'function' ? this.action.isEnabledFunction(context) : of(true);
33
36
  this.$label = I18nUtil.streamActionTranslation(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item);
@@ -38,11 +41,19 @@ export class MngActionComponent {
38
41
  this.loadingSubject.next(true);
39
42
  const actionData = this.actionData ? this.actionData : {};
40
43
  actionData['cmpId'] = this.cmpId;
41
- this.actionService
42
- .triggerAction(this.action, this.itemId, this.item, actionData, this.route, this.tableviewService, this)
43
- .pipe(first(), finalize(() => this.loadingSubject.next(false)))
44
- // eslint-disable-next-line @typescript-eslint/no-empty-function
45
- .subscribe(() => { });
44
+ this.actionExecutor
45
+ .triggerAction(this.action, this.itemId, this.item, actionData, this.route, this.viewContainer, this)
46
+ .pipe(first())
47
+ .subscribe({
48
+ next: atr => {
49
+ this.triggerEventEmitter.next(atr);
50
+ this.loadingSubject.next(false);
51
+ },
52
+ error: err => {
53
+ console.error(`Error occurred while executing action ${this.action.actionName}.`, err);
54
+ this.loadingSubject.next(false);
55
+ }
56
+ });
46
57
  }
47
58
  getConfirmationService() {
48
59
  return this.confirmationService;
@@ -51,12 +62,14 @@ export class MngActionComponent {
51
62
  return `${action.actionName}_${this.cmpId}`;
52
63
  }
53
64
  }
54
- 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.MngActionService }, { token: i4.ConfirmationService }, { token: i5.TableviewComponentService }], target: i0.ɵɵFactoryTarget.Component });
55
- 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" }, providers: [MessageService, 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.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-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 });
56
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, decorators: [{
57
68
  type: Component,
58
- args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MessageService, 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.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-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" }]
59
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.MngActionService }, { type: i4.ConfirmationService }, { type: i5.TableviewComponentService }]; }, propDecorators: { action: [{
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: [{
71
+ type: Optional
72
+ }] }]; }, propDecorators: { action: [{
60
73
  type: Input
61
74
  }], item: [{
62
75
  type: Input
@@ -64,5 +77,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
64
77
  type: Input
65
78
  }], actionData: [{
66
79
  type: Input
80
+ }], dataProvider: [{
81
+ type: Input
82
+ }], inputDisabled: [{
83
+ type: Input,
84
+ args: ['disabled']
85
+ }], inputLoading: [{
86
+ type: Input,
87
+ args: ['loading']
88
+ }], viewContainerInit: [{
89
+ type: Input,
90
+ args: ['viewContainer']
91
+ }], triggerEventEmitter: [{
92
+ type: Output,
93
+ args: ['trigger']
67
94
  }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBSWhGLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFhLGFBQWEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUsvQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7QUFVckMsTUFBTSxPQUFPLGtCQUFrQjtJQWdCM0IsWUFDWSxLQUFxQixFQUNyQixTQUEyQixFQUMzQixhQUErQixFQUMvQixtQkFBd0MsRUFDeEMsZ0JBQWlEO1FBSmpELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUM7UUFkckQsbUJBQWMsR0FBRyxJQUFJLGFBQWEsQ0FBVSxDQUFDLENBQUMsQ0FBQztRQUNoRCxhQUFRLEdBQXdCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFbkUsVUFBSyxHQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxD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QUVMLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7Nk9BSWhDLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaW5hbGl6ZSwgZmlyc3R9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge01uZ0FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7SWRUeXBlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge0kxOG5VdGlsfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1RhYmxldmlld0NvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4uL3RhYmxldmlldy9zZXJ2aWNlcyc7XG5pbXBvcnQge0FjdGlvbkRhdGEsIElBY3Rpb25Db25maXJtYXRpb25TZXJ2aWNlfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbW5nLWFjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvbkNvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCwgSUFjdGlvbkNvbmZpcm1hdGlvblNlcnZpY2Uge1xuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb24hOiBBY3Rpb25EZXNjcmlwdG9yPFQ+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtPzogVDtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbUlkPzogSWRUeXBlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25EYXRhPzogQWN0aW9uRGF0YTtcblxuICAgIHByaXZhdGUgbG9hZGluZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBwdWJsaWMgJGxvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIGNtcElkOiBzdHJpbmcgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG4gICAgcHVibGljICRpc1Zpc2libGUhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHB1YmxpYyAkaXNFbmFibGVkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwdWJsaWMgJGxhYmVsITogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgICBwdWJsaWMgJHRvb2x0aXAhOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBNbmdBY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGFibGV2aWV3U2VydmljZTogVGFibGV2aWV3Q29tcG9uZW50U2VydmljZTxULCBTPlxuICAgICkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uU2VydmljZS5nZXRBY3Rpb25FeGVjQ29udGV4dChcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uLFxuICAgICAgICAgICAgdGhpcy5pdGVtSWQsXG4gICAgICAgICAgICB0aGlzLml0ZW0sXG4gICAgICAgICAgICB0aGlzLnRhYmxldmlld1NlcnZpY2U/LmRhdGFQcm92aWRlciA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICB0aGlzLnRhYmxldmlld1NlcnZpY2UsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgdGhpcy5hY3Rpb25EYXRhXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuJGlzVmlzaWJsZSA9IHR5cGVvZiB0aGlzLmFjdGlvbi5pc1Zpc2libGVGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uKGNvbnRleHQpIDogb2YodHJ1ZSk7XG4gICAgICAgIHRoaXMuJGlzRW5hYmxlZCA9IHR5cGVvZiB0aGlzLmFjdGlvbi5pc0VuYWJsZWRGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuYWN0aW9uLmlzRW5hYmxlZEZ1bmN0aW9uKGNvbnRleHQpIDogb2YodHJ1ZSk7XG4gICAgICAgIHRoaXMuJGxhYmVsID0gSTE4blV0aWwuc3RyZWFtQWN0aW9uVHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGUsIHRoaXMuYWN0aW9uLCAndGl0bGUnLCB0aGlzLmFjdGlvbj8udGl0bGUgPz8gdW5kZWZpbmVkLCB0aGlzLml0ZW0pO1xuICAgICAgICB0aGlzLiR0b29sdGlwID0gSTE4blV0aWwuc3RyZWFtQWN0aW9uVHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGUsIHRoaXMuYWN0aW9uLCAndG9vbHRpcCcsIHRoaXMuYWN0aW9uPy50b29sdGlwID8/IHVuZGVmaW5lZCwgdGhpcy5pdGVtKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIHRyaWdnZXJBY3Rpb24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgY29uc3QgYWN0aW9uRGF0YSA9IHRoaXMuYWN0aW9uRGF0YSA/IHRoaXMuYWN0aW9uRGF0YSA6IHt9O1xuICAgICAgICBhY3Rpb25EYXRhWydjbXBJZCddID0gdGhpcy5jbXBJZDtcbiAgICAgICAgdGhpcy5hY3Rpb25TZXJ2aWNlXG4gICAgICAgICAgICAudHJpZ2dlckFjdGlvbih0aGlzLmFjdGlvbiwgdGhpcy5pdGVtSWQsIHRoaXMuaXRlbSwgYWN0aW9uRGF0YSwgdGhpcy5yb3V0ZSwgdGhpcy50YWJsZXZpZXdTZXJ2aWNlLCB0aGlzKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2VJbnN0YW5jZUtleShhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICByZXR1cm4gYCR7YWN0aW9uLmFjdGlvbk5hbWV9XyR7dGhpcy5jbXBJZH1gO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIkaXNWaXNpYmxlIHwgYXN5bmNcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiYWN0aW9uLmljb24gJiYgYWN0aW9uLnRpdGxlID09PSBudWxsOyBlbHNlIG5vSWNvblwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIHBSaXBwbGVcbiAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb25cIlxuICAgICAgICBbbG9hZGluZ109XCIoJGxvYWRpbmcgfCBhc3luYykgPz8gZmFsc2VcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiKCRpc0VuYWJsZWQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICAgICAgW3BUb29sdGlwXT1cIiRhbnkoJHRvb2x0aXAgfCBhc3luYylcIlxuICAgICAgICAoY2xpY2spPVwidHJpZ2dlckFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJtbmctYWN0aW9uLWJ1dHRvbiBtbmctYWN0aW9uLWJ1dHRvbi1pY29uIHAtYnV0dG9uLXJvdW5kZWRcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tcHJpbWFyeV09XCJhY3Rpb24ubGV2ZWwgPT09IDFcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tc3VjY2Vzc109XCJhY3Rpb24ubGV2ZWwgPT09IDVcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tZGFuZ2VyXT1cImFjdGlvbi5sZXZlbCA9PT0gN1wiPjwvYnV0dG9uPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9JY29uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgIFtpY29uXT1cIiRhbnkoYWN0aW9uLmljb24pXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCIoJGxhYmVsIHwgYXN5bmMpID8/ICcnXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIigkbG9hZGluZyB8IGFzeW5jKSA/PyBmYWxzZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCRpc0VuYWJsZWQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCIkYW55KCR0b29sdGlwIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJtbmctYWN0aW9uLWJ1dHRvbiBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1wcmltYXJ5XT1cImFjdGlvbi5sZXZlbCA9PT0gMVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tc3VjY2Vzc109XCJhY3Rpb24ubGV2ZWwgPT09IDVcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRhbmdlcl09XCJhY3Rpb24ubGV2ZWwgPT09IDdcIj48L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxwLWNvbmZpcm1EaWFsb2cgKm5nSWY9XCJhY3Rpb24uaGFzUnVuQ29uZmlybWF0aW9uXCIgW2tleV09XCJhY3Rpb24uYWN0aW9uTmFtZSArICdfJyArIGNtcElkXCIgW2Jhc2VaSW5kZXhdPVwiNTBcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtY29uZmlybURpYWxvZz5cbjwvbmctY29udGFpbmVyPlxuIl19
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==