zek 17.3.119 → 19.0.2

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 (190) hide show
  1. package/README.md +49 -10
  2. package/fesm2022/zek.mjs +1056 -751
  3. package/fesm2022/zek.mjs.map +1 -1
  4. package/lib/components/base.component.d.ts +1 -1
  5. package/lib/components/core-ui.component.d.ts +1 -1
  6. package/lib/components/core.component.d.ts +1 -1
  7. package/lib/components/edit-base.component.d.ts +3 -3
  8. package/lib/components/list-base.component.d.ts +1 -1
  9. package/lib/modules/bb/bb-modal-base.d.ts +1 -1
  10. package/lib/modules/dropdown/dropdown.d.ts +38 -0
  11. package/lib/modules/dropdown/index.d.ts +1 -0
  12. package/lib/modules/index.d.ts +1 -0
  13. package/lib/modules/validators/directive.d.ts +1 -1
  14. package/package.json +3 -5
  15. package/esm2022/lib/components/args.mjs +0 -2
  16. package/esm2022/lib/components/base.component.mjs +0 -101
  17. package/esm2022/lib/components/core-ui.component.mjs +0 -193
  18. package/esm2022/lib/components/core.component.mjs +0 -46
  19. package/esm2022/lib/components/edit-base.component.mjs +0 -226
  20. package/esm2022/lib/components/index.mjs +0 -8
  21. package/esm2022/lib/components/list-base.component.mjs +0 -311
  22. package/esm2022/lib/components/types.mjs +0 -2
  23. package/esm2022/lib/directives/delayed-input.directive.mjs +0 -57
  24. package/esm2022/lib/directives/index.mjs +0 -2
  25. package/esm2022/lib/models/alert-type.mjs +0 -2
  26. package/esm2022/lib/models/api.mjs +0 -2
  27. package/esm2022/lib/models/approve.moodel.mjs +0 -2
  28. package/esm2022/lib/models/batch.model.mjs +0 -2
  29. package/esm2022/lib/models/captcha.model.mjs +0 -2
  30. package/esm2022/lib/models/ctor.mjs +0 -2
  31. package/esm2022/lib/models/edit-base.model.mjs +0 -3
  32. package/esm2022/lib/models/file.model.mjs +0 -2
  33. package/esm2022/lib/models/filter.model.mjs +0 -12
  34. package/esm2022/lib/models/gender.model.mjs +0 -6
  35. package/esm2022/lib/models/index.mjs +0 -22
  36. package/esm2022/lib/models/key-pair.model.mjs +0 -14
  37. package/esm2022/lib/models/list-base.model.mjs +0 -3
  38. package/esm2022/lib/models/login.model.mjs +0 -2
  39. package/esm2022/lib/models/modal-size.mjs +0 -2
  40. package/esm2022/lib/models/month.model.mjs +0 -16
  41. package/esm2022/lib/models/nav.model.mjs +0 -2
  42. package/esm2022/lib/models/pager.model.mjs +0 -33
  43. package/esm2022/lib/models/print.model.mjs +0 -6
  44. package/esm2022/lib/models/tree.mjs +0 -2
  45. package/esm2022/lib/models/tree.model.mjs +0 -7
  46. package/esm2022/lib/models/valid-event-args.model.mjs +0 -6
  47. package/esm2022/lib/modules/age/age.pipe.mjs +0 -22
  48. package/esm2022/lib/modules/age/index.mjs +0 -2
  49. package/esm2022/lib/modules/alert/alert/alert.mjs +0 -48
  50. package/esm2022/lib/modules/alert/index.mjs +0 -5
  51. package/esm2022/lib/modules/alert/toast/toast.mjs +0 -119
  52. package/esm2022/lib/modules/alert/validation/validation.mjs +0 -56
  53. package/esm2022/lib/modules/autocomplete/autocomplete.directive.mjs +0 -25
  54. package/esm2022/lib/modules/autocomplete/index.mjs +0 -2
  55. package/esm2022/lib/modules/bb/bb-modal-base.mjs +0 -74
  56. package/esm2022/lib/modules/bb/bb-modal-toolbar.mjs +0 -44
  57. package/esm2022/lib/modules/bb/bb.component.mjs +0 -207
  58. package/esm2022/lib/modules/bb/bb.module.mjs +0 -37
  59. package/esm2022/lib/modules/bb/index.mjs +0 -5
  60. package/esm2022/lib/modules/callback/callback.pipe.mjs +0 -23
  61. package/esm2022/lib/modules/callback/index.mjs +0 -2
  62. package/esm2022/lib/modules/card/card/card.mjs +0 -48
  63. package/esm2022/lib/modules/card/index.mjs +0 -2
  64. package/esm2022/lib/modules/countdown/countdown.mjs +0 -103
  65. package/esm2022/lib/modules/countdown/index.mjs +0 -2
  66. package/esm2022/lib/modules/date-ago/date-ago.pipe.mjs +0 -45
  67. package/esm2022/lib/modules/date-ago/index.mjs +0 -2
  68. package/esm2022/lib/modules/datepicker/date-value-accessor.mjs +0 -188
  69. package/esm2022/lib/modules/datepicker/datepicker.module.mjs +0 -31
  70. package/esm2022/lib/modules/datepicker/index.mjs +0 -3
  71. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.mjs +0 -94
  72. package/esm2022/lib/modules/edit-toolbar/index.mjs +0 -2
  73. package/esm2022/lib/modules/file/file-size.pipe.mjs +0 -50
  74. package/esm2022/lib/modules/file/index.mjs +0 -2
  75. package/esm2022/lib/modules/file-input/file-input.mjs +0 -79
  76. package/esm2022/lib/modules/file-input/index.mjs +0 -2
  77. package/esm2022/lib/modules/file-viewer/file-viewer.mjs +0 -53
  78. package/esm2022/lib/modules/file-viewer/index.mjs +0 -2
  79. package/esm2022/lib/modules/google-login-button/google-login-button.mjs +0 -135
  80. package/esm2022/lib/modules/google-login-button/index.mjs +0 -3
  81. package/esm2022/lib/modules/google-login-button/loader.mjs +0 -10
  82. package/esm2022/lib/modules/google-login-button/module.mjs +0 -40
  83. package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.mjs +0 -147
  84. package/esm2022/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.mjs +0 -16
  85. package/esm2022/lib/modules/grid-toolbar/index.mjs +0 -3
  86. package/esm2022/lib/modules/index.mjs +0 -39
  87. package/esm2022/lib/modules/list-toolbar/index.mjs +0 -2
  88. package/esm2022/lib/modules/list-toolbar/list-toolbar.mjs +0 -112
  89. package/esm2022/lib/modules/loading/index.mjs +0 -4
  90. package/esm2022/lib/modules/loading/loading-interceptor.mjs +0 -59
  91. package/esm2022/lib/modules/loading/loading.mjs +0 -33
  92. package/esm2022/lib/modules/loading/loading.module.mjs +0 -32
  93. package/esm2022/lib/modules/modal/filter-modal/filter-modal.component.mjs +0 -23
  94. package/esm2022/lib/modules/modal/index.mjs +0 -5
  95. package/esm2022/lib/modules/modal/modal/modal.component.mjs +0 -355
  96. package/esm2022/lib/modules/modal/modal.module.mjs +0 -62
  97. package/esm2022/lib/modules/modal/sum-modal/sum-modal.component.mjs +0 -27
  98. package/esm2022/lib/modules/numeric/index.mjs +0 -2
  99. package/esm2022/lib/modules/numeric/numeric.directive.mjs +0 -92
  100. package/esm2022/lib/modules/page-title/index.mjs +0 -2
  101. package/esm2022/lib/modules/page-title/page-title.component.mjs +0 -33
  102. package/esm2022/lib/modules/pager/index.mjs +0 -2
  103. package/esm2022/lib/modules/pager/pager/pager.mjs +0 -52
  104. package/esm2022/lib/modules/password/index.mjs +0 -2
  105. package/esm2022/lib/modules/password/password.mjs +0 -48
  106. package/esm2022/lib/modules/progress/index.mjs +0 -2
  107. package/esm2022/lib/modules/progress/progress.mjs +0 -97
  108. package/esm2022/lib/modules/radio/index.mjs +0 -2
  109. package/esm2022/lib/modules/radio/radio.mjs +0 -133
  110. package/esm2022/lib/modules/readonly/index.mjs +0 -2
  111. package/esm2022/lib/modules/readonly/readonly.directive.mjs +0 -29
  112. package/esm2022/lib/modules/recaptcha/index.mjs +0 -4
  113. package/esm2022/lib/modules/recaptcha/loader.mjs +0 -13
  114. package/esm2022/lib/modules/recaptcha/recaptcha.model.mjs +0 -2
  115. package/esm2022/lib/modules/recaptcha/recaptcha.module.mjs +0 -32
  116. package/esm2022/lib/modules/recaptcha/recaptcha.service.mjs +0 -119
  117. package/esm2022/lib/modules/safe/index.mjs +0 -2
  118. package/esm2022/lib/modules/safe/safe.pipe.mjs +0 -40
  119. package/esm2022/lib/modules/select/index.mjs +0 -2
  120. package/esm2022/lib/modules/select/model.mjs +0 -4
  121. package/esm2022/lib/modules/select/select.mjs +0 -201
  122. package/esm2022/lib/modules/select2/index.mjs +0 -2
  123. package/esm2022/lib/modules/select2/select2.mjs +0 -172
  124. package/esm2022/lib/modules/select2-multiple/index.mjs +0 -2
  125. package/esm2022/lib/modules/select2-multiple/select2-multiple.mjs +0 -137
  126. package/esm2022/lib/modules/sort/index.mjs +0 -3
  127. package/esm2022/lib/modules/sort/sort-button-group/sort-button-group.mjs +0 -81
  128. package/esm2022/lib/modules/sort/sort.mjs +0 -120
  129. package/esm2022/lib/modules/tag/index.mjs +0 -2
  130. package/esm2022/lib/modules/tag/tag.mjs +0 -111
  131. package/esm2022/lib/modules/time/index.mjs +0 -4
  132. package/esm2022/lib/modules/time/time.module.mjs +0 -27
  133. package/esm2022/lib/modules/time/time.pipe.mjs +0 -40
  134. package/esm2022/lib/modules/time/timer-service.mjs +0 -89
  135. package/esm2022/lib/modules/tooltip/index.mjs +0 -2
  136. package/esm2022/lib/modules/tooltip/tooltip.mjs +0 -27
  137. package/esm2022/lib/modules/utc-to-local/index.mjs +0 -3
  138. package/esm2022/lib/modules/utc-to-local/local-to-utc.pipe.mjs +0 -39
  139. package/esm2022/lib/modules/utc-to-local/utc-to-local.pipe.mjs +0 -38
  140. package/esm2022/lib/modules/validator/field-validator.mjs +0 -17
  141. package/esm2022/lib/modules/validator/index.mjs +0 -2
  142. package/esm2022/lib/modules/validators/directive.mjs +0 -107
  143. package/esm2022/lib/modules/validators/index.mjs +0 -4
  144. package/esm2022/lib/modules/validators/module.mjs +0 -28
  145. package/esm2022/lib/modules/validators/validator.mjs +0 -119
  146. package/esm2022/lib/modules/wizard/index.mjs +0 -3
  147. package/esm2022/lib/modules/wizard/wizard/wizard.mjs +0 -66
  148. package/esm2022/lib/modules/wizard/wizard2/wizard2.mjs +0 -14
  149. package/esm2022/lib/services/alert.service.mjs +0 -74
  150. package/esm2022/lib/services/auth-guard.service.mjs +0 -13
  151. package/esm2022/lib/services/auth.service.mjs +0 -194
  152. package/esm2022/lib/services/base.service.mjs +0 -8
  153. package/esm2022/lib/services/cache-helper.mjs +0 -35
  154. package/esm2022/lib/services/crud.service.mjs +0 -48
  155. package/esm2022/lib/services/file.service.mjs +0 -32
  156. package/esm2022/lib/services/http-error-handler.service.mjs +0 -141
  157. package/esm2022/lib/services/index.mjs +0 -9
  158. package/esm2022/lib/services/web.api.mjs +0 -139
  159. package/esm2022/lib/tokens.mjs +0 -7
  160. package/esm2022/lib/utils/array-helper.mjs +0 -216
  161. package/esm2022/lib/utils/base64-helper.mjs +0 -18
  162. package/esm2022/lib/utils/bitwise-helper.mjs +0 -14
  163. package/esm2022/lib/utils/bootstrap.helper.mjs +0 -124
  164. package/esm2022/lib/utils/convert.mjs +0 -35
  165. package/esm2022/lib/utils/css-helper.mjs +0 -41
  166. package/esm2022/lib/utils/date-helper.mjs +0 -264
  167. package/esm2022/lib/utils/error-helper.mjs +0 -32
  168. package/esm2022/lib/utils/excel-helper.mjs +0 -13
  169. package/esm2022/lib/utils/file.helper.mjs +0 -75
  170. package/esm2022/lib/utils/filter-helper.mjs +0 -13
  171. package/esm2022/lib/utils/handler.mjs +0 -24
  172. package/esm2022/lib/utils/html-helper.mjs +0 -73
  173. package/esm2022/lib/utils/index.mjs +0 -28
  174. package/esm2022/lib/utils/interval-helper.mjs +0 -32
  175. package/esm2022/lib/utils/jwt-helper.mjs +0 -11
  176. package/esm2022/lib/utils/math-helper.mjs +0 -19
  177. package/esm2022/lib/utils/object-helper.mjs +0 -80
  178. package/esm2022/lib/utils/overlap-helper.mjs +0 -73
  179. package/esm2022/lib/utils/pager-helper.mjs +0 -63
  180. package/esm2022/lib/utils/random-helper.mjs +0 -16
  181. package/esm2022/lib/utils/storage-helper.mjs +0 -28
  182. package/esm2022/lib/utils/string-helper.mjs +0 -84
  183. package/esm2022/lib/utils/thenBy.mjs +0 -41
  184. package/esm2022/lib/utils/time-helper.mjs +0 -46
  185. package/esm2022/lib/utils/tmp-helper.mjs +0 -25
  186. package/esm2022/lib/utils/url-helper.mjs +0 -44
  187. package/esm2022/lib/utils/validation-helper.mjs +0 -10
  188. package/esm2022/lib/zek.module.mjs +0 -28
  189. package/esm2022/public-api.mjs +0 -12
  190. package/esm2022/zek.mjs +0 -5
@@ -1,226 +0,0 @@
1
- import { ViewChild, Directive, inject } from '@angular/core';
2
- import { BaseComponent } from './base.component';
3
- import { AlertService } from '../services/alert.service';
4
- import { TranslateService } from '@ngx-translate/core';
5
- import { firstValueFrom } from 'rxjs';
6
- import * as i0 from "@angular/core";
7
- export class EditFormComponent extends BaseComponent {
8
- constructor() {
9
- super(...arguments);
10
- this.approveModel = {};
11
- }
12
- // @ViewChild('submitModal', { static: false }) protected readonly submitModal?: ModalComponent;
13
- init() {
14
- super.init();
15
- const idParam = this.getParam('id') || this.getQueryParam('id');
16
- if (idParam)
17
- this.id = +idParam;
18
- const id2Param = this.getParam('id2') || this.getQueryParam('id2');
19
- if (id2Param)
20
- this.id2 = +id2Param;
21
- }
22
- async bindModel() {
23
- if (this.id) {
24
- this.model = await this.getModel();
25
- }
26
- else {
27
- this.initCreate();
28
- }
29
- }
30
- initCreate() {
31
- this.model = {};
32
- }
33
- getModel() {
34
- throw 'Not implemented getModel';
35
- }
36
- onSubmit(f) {
37
- this.save(f);
38
- }
39
- async save(f) {
40
- if (!f || f.valid) {
41
- return await this.internalSave(true);
42
- }
43
- return false;
44
- }
45
- internalSave(navigateToReturnUrl) {
46
- throw 'Not implemented internalSave';
47
- }
48
- showApproveModal() {
49
- this.approveModel = {};
50
- if (this.approveModal) {
51
- this.approveModal.show();
52
- }
53
- else {
54
- throw new Error('approveModal is null or undefined');
55
- }
56
- }
57
- async approve() {
58
- if (this.id) {
59
- this.approveModel.ids = [this.id];
60
- const approved = await this.internalApprove(this.approveModel);
61
- if (approved) {
62
- this.load();
63
- }
64
- }
65
- }
66
- internalApprove(model) {
67
- throw 'Not implemented internalApprove';
68
- }
69
- showDisapproveModal() {
70
- this.approveModel = {};
71
- if (this.disapproveModal) {
72
- this.disapproveModal.show();
73
- }
74
- else {
75
- throw new Error('disapproveModal is null or undefined');
76
- }
77
- }
78
- async disapprove() {
79
- if (this.id) {
80
- this.approveModel.ids = [this.id];
81
- const disapproved = await this.internalDisapprove(this.approveModel);
82
- if (disapproved) {
83
- this.load();
84
- }
85
- }
86
- }
87
- internalDisapprove(model) {
88
- throw 'Not implemented internalDisapprove';
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EditFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
91
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: EditFormComponent, viewQueries: [{ propertyName: "form", first: true, predicate: ["f"], descendants: true }, { propertyName: "approveModal", first: true, predicate: ["approveModal"], descendants: true }, { propertyName: "disapproveModal", first: true, predicate: ["disapproveModal"], descendants: true }], usesInheritance: true, ngImport: i0 }); }
92
- }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EditFormComponent, decorators: [{
94
- type: Directive
95
- }], propDecorators: { form: [{
96
- type: ViewChild,
97
- args: ['f', { static: false }]
98
- }], approveModal: [{
99
- type: ViewChild,
100
- args: ['approveModal', { static: false }]
101
- }], disapproveModal: [{
102
- type: ViewChild,
103
- args: ['disapproveModal', { static: false }]
104
- }] } });
105
- export class EditBaseComponent extends EditFormComponent {
106
- constructor(service) {
107
- super();
108
- this.service = service;
109
- this.translate = inject(TranslateService);
110
- this.alert = inject(AlertService);
111
- }
112
- async internalSave(navigateToReturnUrl) {
113
- this.alert.clear();
114
- const data = await firstValueFrom(this.service.save(this.model));
115
- let success = false;
116
- if (typeof data === 'number' && data > 0) {
117
- success = true;
118
- this.id = data;
119
- }
120
- else if (typeof data === 'object' && data?.success) {
121
- success = true;
122
- }
123
- if (success) {
124
- const message = await firstValueFrom(this.translate.get('Alert.SaveSuccess'));
125
- this.alert.success(message, null, 'fa-solid fa-floppy-disk');
126
- if (navigateToReturnUrl === true) {
127
- this.navigateReturnUrl();
128
- }
129
- return true;
130
- // if (navigateToReturnUrl) {
131
- // this.navigateReturnUrl();
132
- // } else if (!this.id) {//if insert
133
- // this.router.navigate([this.router.url.substring(0, this.router.url.length - 6), id]);
134
- // }
135
- }
136
- else {
137
- const message = await firstValueFrom(this.translate.get('Alert.SaveError'));
138
- this.alert.error(message, null, 'fa-solid fa-floppy-disk');
139
- return false;
140
- }
141
- }
142
- async internalApprove(model) {
143
- const data = await firstValueFrom(this.service.approve(model));
144
- if (data && data.length > 0) {
145
- const message = await firstValueFrom(this.translate.get('Alert.Approved'));
146
- this.alert.success(message, null, 'fa-solid fa-floppy-disk');
147
- return true;
148
- }
149
- else {
150
- const message = await firstValueFrom(this.translate.get('Alert.ApproveError'));
151
- this.alert.error(message, null, 'fa-solid fa-floppy-disk');
152
- return false;
153
- }
154
- }
155
- async internalDisapprove(model) {
156
- const data = await firstValueFrom(this.service.disapprove(model));
157
- if (data && data.length > 0) {
158
- const message = await firstValueFrom(this.translate.get('Alert.Disapproved'));
159
- this.alert.success(message, null, 'fa-solid fa-floppy-disk');
160
- return true;
161
- }
162
- else {
163
- const message = await firstValueFrom(this.translate.get('Alert.DisapproveError'));
164
- this.alert.error(message, null, 'fa-solid fa-floppy-disk');
165
- return false;
166
- }
167
- }
168
- async internalSubmit(model) {
169
- const data = await firstValueFrom(this.service.approve(model));
170
- if (data && data.length > 0) {
171
- const message = await firstValueFrom(this.translate.get('Alert.Submitted'));
172
- this.alert.success(message, null, 'fa-solid fa-floppy-disk');
173
- return true;
174
- }
175
- else {
176
- const message = await firstValueFrom(this.translate.get('Alert.SubmitError'));
177
- this.alert.error(message, null, 'fa-solid fa-floppy-disk');
178
- return false;
179
- }
180
- }
181
- async getModel() {
182
- if (this.id2)
183
- return await firstValueFrom(this.service.get2(this.id, this.id2));
184
- else
185
- return await firstValueFrom(this.service.get(this.id));
186
- }
187
- initCreate() {
188
- this.model = {};
189
- }
190
- print(printType) {
191
- super.print(this.id, printType);
192
- }
193
- async restore() {
194
- const data = await firstValueFrom(this.service.restore(this.id));
195
- if (data?.success) {
196
- const message = await firstValueFrom(this.translate.get('Alert.Restored'));
197
- this.alert.success(message);
198
- this.load();
199
- }
200
- }
201
- export(fileTypeId) {
202
- this.service.export({ id: this.id }, fileTypeId).subscribe(data => {
203
- this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
204
- });
205
- }
206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EditBaseComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
207
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: EditBaseComponent, usesInheritance: true, ngImport: i0 }); }
208
- }
209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EditBaseComponent, decorators: [{
210
- type: Directive
211
- }], ctorParameters: () => [{ type: undefined }] });
212
- export class EditComponent extends EditBaseComponent {
213
- constructor(_ctorModel, service) {
214
- super(service);
215
- this._ctorModel = _ctorModel;
216
- }
217
- initCreate() {
218
- this.model = new this._ctorModel();
219
- }
220
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EditComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
221
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: EditComponent, usesInheritance: true, ngImport: i0 }); }
222
- }
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EditComponent, decorators: [{
224
- type: Directive
225
- }], ctorParameters: () => [{ type: undefined }, { type: undefined }] });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUd0QyxNQUFNLE9BQU8saUJBQWdDLFNBQVEsYUFBcUI7SUFEMUU7O1FBT0ksaUJBQVksR0FBaUIsRUFBRSxDQUFDO0tBMkZuQztJQXhGRyxnR0FBZ0c7SUFFdkYsSUFBSTtRQUNULEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxJQUFJLE9BQU87WUFDUCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDO1FBRXZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRSxJQUFJLFFBQVE7WUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFUSxLQUFLLENBQUMsU0FBUztRQUNwQixJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNWLElBQUks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QUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFVBQWtCO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLG1FQUFtRSxDQUFDLENBQUM7UUFDaEgsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTdHUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUzs7QUFrSFYsTUFBTSxPQUFPLGFBQXNCLFNBQVEsaUJBQXlCO0lBQ2hFLFlBQTZCLFVBQXNDLEVBQUUsT0FBaUI7UUFDbEYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRFUsZUFBVSxHQUFWLFVBQVUsQ0FBNEI7SUFFbkUsQ0FBQztJQUVrQixVQUFVO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkMsQ0FBQzs4R0FQUSxhQUFhO2tHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q2hpbGQsIERpcmVjdGl2ZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwcm92ZU1vZGVsLCBJT2JqZWN0Q29uc3RydWN0b3IsIFByaW50VHlwZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFpla01vZGFsIH0gZnJvbSAnLi4vbW9kdWxlcy9tb2RhbC9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgRWRpdEZvcm1Db21wb25lbnQ8VE1vZGVsID0gYW55PiBleHRlbmRzIEJhc2VDb21wb25lbnQ8VE1vZGVsPiB7XHJcbiAgICBpZD86IG51bWJlciB8IG51bGw7XHJcbiAgICBpZDI/OiBudW1iZXIgfCBudWxsO1xyXG4gICAgQFZpZXdDaGlsZCgnZicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtPzogTmdGb3JtO1xyXG5cclxuXHJcbiAgICBhcHByb3ZlTW9kZWw6IEFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgQFZpZXdDaGlsZCgnYXBwcm92ZU1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByb3RlY3RlZCByZWFkb25seSBhcHByb3ZlTW9kYWw/OiBaZWtNb2RhbDtcclxuICAgIEBWaWV3Q2hpbGQoJ2Rpc2FwcHJvdmVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYXBwcm92ZU1vZGFsPzogWmVrTW9kYWw7XHJcbiAgICAvLyBAVmlld0NoaWxkKCdzdWJtaXRNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgc3VibWl0TW9kYWw/OiBNb2RhbENvbXBvbmVudDtcclxuXHJcbiAgICBvdmVycmlkZSBpbml0KCkge1xyXG4gICAgICAgIHN1cGVyLmluaXQoKTtcclxuICAgICAgICBjb25zdCBpZFBhcmFtID0gdGhpcy5nZXRQYXJhbSgnaWQnKSB8fCB0aGlzLmdldFF1ZXJ5UGFyYW0oJ2lkJyk7XHJcbiAgICAgICAgaWYgKGlkUGFyYW0pXHJcbiAgICAgICAgICAgIHRoaXMuaWQgPSAraWRQYXJhbTtcclxuXHJcbiAgICAgICAgY29uc3QgaWQyUGFyYW0gPSB0aGlzLmdldFBhcmFtKCdpZDInKSB8fCB0aGlzLmdldFF1ZXJ5UGFyYW0oJ2lkMicpO1xyXG4gICAgICAgIGlmIChpZDJQYXJhbSlcclxuICAgICAgICAgICAgdGhpcy5pZDIgPSAraWQyUGFyYW07XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgYmluZE1vZGVsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBhd2FpdCB0aGlzLmdldE1vZGVsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRDcmVhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRDcmVhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHt9IGFzIFRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TW9kZWwoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICB0aHJvdyAnTm90IGltcGxlbWVudGVkIGdldE1vZGVsJztcclxuICAgIH1cclxuXHJcbiAgICBvblN1Ym1pdChmOiBOZ0Zvcm0pIHtcclxuICAgICAgICB0aGlzLnNhdmUoZik7XHJcbiAgICB9XHJcbiAgICBhc3luYyBzYXZlKGY/OiBOZ0Zvcm0pIHtcclxuICAgICAgICBpZiAoIWYgfHwgZi52YWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbnRlcm5hbFNhdmUodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgaW50ZXJuYWxTYXZlKG5hdmlnYXRlVG9SZXR1cm5Vcmw/OiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhyb3cgJ05vdCBpbXBsZW1lbnRlZCBpbnRlcm5hbFNhdmUnO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzaG93QXBwcm92ZU1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGVsID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuYXBwcm92ZU1vZGFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92ZU1vZGFsLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYXBwcm92ZU1vZGFsIGlzIG51bGwgb3IgdW5kZWZpbmVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgYXBwcm92ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbC5pZHMgPSBbdGhpcy5pZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVkID0gYXdhaXQgdGhpcy5pbnRlcm5hbEFwcHJvdmUodGhpcy5hcHByb3ZlTW9kZWwpO1xyXG4gICAgICAgICAgICBpZiAoYXBwcm92ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIGludGVybmFsQXBwcm92ZShtb2RlbD86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRocm93ICdOb3QgaW1wbGVtZW50ZWQgaW50ZXJuYWxBcHByb3ZlJztcclxuICAgIH1cclxuXHJcbiAgICBzaG93RGlzYXBwcm92ZU1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGVsID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYXBwcm92ZU1vZGFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYXBwcm92ZU1vZGFsLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZGlzYXBwcm92ZU1vZGFsIGlzIG51bGwgb3IgdW5kZWZpbmVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgZGlzYXBwcm92ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbC5pZHMgPSBbdGhpcy5pZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGRpc2FwcHJvdmVkID0gYXdhaXQgdGhpcy5pbnRlcm5hbERpc2FwcHJvdmUodGhpcy5hcHByb3ZlTW9kZWwpO1xyXG4gICAgICAgICAgICBpZiAoZGlzYXBwcm92ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIGludGVybmFsRGlzYXBwcm92ZShtb2RlbD86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRocm93ICdOb3QgaW1wbGVtZW50ZWQgaW50ZXJuYWxEaXNhcHByb3ZlJztcclxuICAgIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBFZGl0QmFzZUNvbXBvbmVudDxUTW9kZWwgPSBhbnk+IGV4dGVuZHMgRWRpdEZvcm1Db21wb25lbnQ8VE1vZGVsPiB7XHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBzZXJ2aWNlOiBJU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gICAgcmVhZG9ubHkgYWxlcnQgPSBpbmplY3QoQWxlcnRTZXJ2aWNlKTtcclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGludGVybmFsU2F2ZShuYXZpZ2F0ZVRvUmV0dXJuVXJsPzogYm9vbGVhbiB8IG51bGwpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5zYXZlKHRoaXMubW9kZWwpKTtcclxuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicgJiYgZGF0YSA+IDApIHtcclxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaWQgPSBkYXRhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmIGRhdGE/LnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5TYXZlU3VjY2VzcycpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS1mbG9wcHktZGlzaycpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG5hdmlnYXRlVG9SZXR1cm5VcmwgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVSZXR1cm5VcmwoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIC8vIGlmIChuYXZpZ2F0ZVRvUmV0dXJuVXJsKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5uYXZpZ2F0ZVJldHVyblVybCgpO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2UgaWYgKCF0aGlzLmlkKSB7Ly9pZiBpbnNlcnRcclxuICAgICAgICAgICAgLy8gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yb3V0ZXIudXJsLnN1YnN0cmluZygwLCB0aGlzLnJvdXRlci51cmwubGVuZ3RoIC0gNiksIGlkXSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5TYXZlRXJyb3InKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhLXNvbGlkIGZhLWZsb3BweS1kaXNrJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGludGVybmFsQXBwcm92ZShtb2RlbD86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuYXBwcm92ZShtb2RlbCkpO1xyXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5BcHByb3ZlZCcpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS1mbG9wcHktZGlzaycpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5BcHByb3ZlRXJyb3InKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhLXNvbGlkIGZhLWZsb3BweS1kaXNrJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGludGVybmFsRGlzYXBwcm92ZShtb2RlbD86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZGlzYXBwcm92ZShtb2RlbCkpO1xyXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5EaXNhcHByb3ZlZCcpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS1mbG9wcHktZGlzaycpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5EaXNhcHByb3ZlRXJyb3InKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhLXNvbGlkIGZhLWZsb3BweS1kaXNrJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIGludGVybmFsU3VibWl0KG1vZGVsPzogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5hcHByb3ZlKG1vZGVsKSk7XHJcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LlN1Ym1pdHRlZCcpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS1mbG9wcHktZGlzaycpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5TdWJtaXRFcnJvcicpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5lcnJvcihtZXNzYWdlLCBudWxsLCAnZmEtc29saWQgZmEtZmxvcHB5LWRpc2snKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZ2V0TW9kZWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWQyKVxyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldDIodGhpcy5pZCwgdGhpcy5pZDIpKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0KHRoaXMuaWQpKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBpbml0Q3JlYXRlKCkge1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSB7fSBhcyBUTW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgcHJpbnQocHJpbnRUeXBlPzogUHJpbnRUeXBlKSB7XHJcbiAgICAgICAgc3VwZXIucHJpbnQodGhpcy5pZCwgcHJpbnRUeXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXN0b3JlKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UucmVzdG9yZSh0aGlzLmlkKSlcclxuICAgICAgICBpZiAoZGF0YT8uc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5SZXN0b3JlZCcpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBleHBvcnQoZmlsZVR5cGVJZDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmV4cG9ydCh7IGlkOiB0aGlzLmlkIH0sIGZpbGVUeXBlSWQpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YSwgJ2V4cG9ydC54bHN4JywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Jyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgRWRpdENvbXBvbmVudDxUTW9kZWw+IGV4dGVuZHMgRWRpdEJhc2VDb21wb25lbnQ8VE1vZGVsPiB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9jdG9yTW9kZWw6IElPYmplY3RDb25zdHJ1Y3RvcjxUTW9kZWw+LCBzZXJ2aWNlOiBJU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKHNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBpbml0Q3JlYXRlKCkge1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSBuZXcgdGhpcy5fY3Rvck1vZGVsKCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,8 +0,0 @@
1
- export * from './args';
2
- export * from './base.component';
3
- export * from './core-ui.component';
4
- export * from './core.component';
5
- export * from './edit-base.component';
6
- export * from './list-base.component';
7
- export * from './types';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJncyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvcmUtdWkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb3JlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZWRpdC1iYXNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGlzdC1iYXNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnOyJdfQ==
@@ -1,311 +0,0 @@
1
- import { ViewChild, Directive, inject, Input } from '@angular/core';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { BaseComponent } from './base.component';
4
- import { FilterBase, Pager } from '../models';
5
- import { AlertService } from '../services/alert.service';
6
- import { ArrayHelper, Convert, FilterHelper, PagerHelper, StorageHelper, StringHelper, UrlHelper } from '../utils';
7
- import { firstValueFrom } from 'rxjs';
8
- import * as i0 from "@angular/core";
9
- // declare let bootstrap: any;
10
- export class ListBaseComponent extends BaseComponent {
11
- get initItems() {
12
- return this._initItems;
13
- }
14
- set initItems(v) {
15
- this._initItems = Convert.toBooleanProperty(v);
16
- }
17
- constructor(service) {
18
- super();
19
- this.service = service;
20
- this.filter = new FilterBase();
21
- this.saveFilter = true;
22
- this.internalFilter = new FilterBase();
23
- this.isFiltered = false;
24
- this.selectedIds = [];
25
- this.selectedItems = [];
26
- this.pager = new Pager();
27
- this.tableId = 'table';
28
- this._initItems = true;
29
- this.approveModel = {};
30
- this.approvedMesage = 'Alert.Approved';
31
- this.disapprovedMesage = 'Alert.Disapproved';
32
- this.translate = inject(TranslateService);
33
- this.alert = inject(AlertService);
34
- }
35
- init() {
36
- super.init();
37
- this.reset();
38
- this.initDefaultFilter();
39
- this.initStoredFilter();
40
- this.assignFilter();
41
- }
42
- async bindModel() {
43
- // this.selectedIds = [];
44
- this.model = await firstValueFrom(this.apiGetAll(this.internalFilter));
45
- if (this.model) {
46
- let totalCount = this.model.totalItemCount;
47
- if (!totalCount && this.model.pager) {
48
- totalCount = this.model.pager ? (this.model.pager.totalItemCount || 0) : 0;
49
- }
50
- this.pager = PagerHelper.get(totalCount, this.internalFilter.page, this.internalFilter.pageSize);
51
- this.onBindModelCompleted();
52
- }
53
- else {
54
- this.pager = new Pager();
55
- }
56
- //this.pagedList.pager = this.pager;
57
- }
58
- apiGetAll(filter) {
59
- return this.service.getAll(filter);
60
- }
61
- scrollTop() {
62
- const el = document.getElementById(this.tableId);
63
- el?.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });
64
- }
65
- onBindModelCompleted() {
66
- if (this.initItems) {
67
- if (this.model && ArrayHelper.isArray(this.model.items) && ArrayHelper.isArray(this.selectedIds)) {
68
- for (const item of this.model.items) {
69
- const tmp = item;
70
- tmp.selected = this.selectedIds.includes(tmp.id);
71
- }
72
- }
73
- }
74
- }
75
- initDefaultFilter() {
76
- }
77
- initStoredFilter() {
78
- const filterParam = this.getQueryParam('filter') || this.getParam('filter');
79
- if (filterParam) {
80
- const tmp = StorageHelper.get('filter');
81
- if (tmp && tmp.url && tmp.url === this.url && tmp.filter) {
82
- this.filter = Object.assign({}, tmp.filter);
83
- //we dont need this.assignFilter(); because after initStoredFilter(); will be assigned.
84
- }
85
- else {
86
- localStorage.removeItem('filter');
87
- }
88
- }
89
- else {
90
- localStorage.removeItem('filter');
91
- }
92
- }
93
- async changePage(page) {
94
- this.internalFilter.page = page;
95
- this.filter.page = page;
96
- await this.bindModel();
97
- this.autoSaveFilter();
98
- this.scrollTop();
99
- }
100
- changePageSize(pageSize) {
101
- this.internalFilter.pageSize = pageSize;
102
- this.filter.pageSize = pageSize;
103
- this.changePage(1);
104
- }
105
- showFilter() {
106
- this.filterModal?.show();
107
- }
108
- search() {
109
- this.assignFilter();
110
- // this.changePage(1);
111
- //can't use this because don't want to execute scrollTop
112
- this.internalFilter.page = 1;
113
- this.filter.page = 1;
114
- this.bindModel();
115
- this.autoSaveFilter();
116
- }
117
- assignFilter() {
118
- this.internalFilter = Object.assign({}, this.filter);
119
- this.isFiltered = !FilterHelper.isEmpty(this.internalFilter);
120
- }
121
- autoSaveFilter() {
122
- if (this.saveFilter)
123
- this.internalSaveFilter();
124
- }
125
- internalSaveFilter() {
126
- StorageHelper.set('filter', {
127
- url: this.url,
128
- filter: this.internalFilter
129
- });
130
- }
131
- reset() {
132
- this.filter = { page: 1, pageSize: 25 };
133
- this.assignFilter();
134
- }
135
- refresh() {
136
- this.bindModel();
137
- }
138
- create() {
139
- const url = UrlHelper.getNoParam(this.router.url);
140
- // this.router.navigate([url, 'create', { returnUrl: url + ';filter=1' }]);
141
- this.router.navigate([url, 'create'], { queryParams: { returnUrl: url + '?filter=1' } });
142
- }
143
- async delete(id) {
144
- this.alert.clear();
145
- const data = await firstValueFrom(this.apiDelete(id));
146
- if (data?.success) {
147
- const message = await firstValueFrom(this.translate.get('Alert.Deleted'));
148
- this.alert.error(message, null, 'fa-solid fa-trash');
149
- this.refresh();
150
- }
151
- }
152
- apiDelete(id) {
153
- return this.service.delete(id);
154
- }
155
- async delete2(id, id2) {
156
- this.alert.clear();
157
- const data = await firstValueFrom(this.apiDelete2(id, id2));
158
- if (data?.success) {
159
- const message = await firstValueFrom(this.translate.get('Alert.Deleted'));
160
- this.alert.error(message, null, 'fa-solid fa-trash');
161
- this.refresh();
162
- }
163
- }
164
- apiDelete2(id, id2) {
165
- return this.service.delete2(id, id2);
166
- }
167
- edit(id) {
168
- // this.router.navigate([this.url, id],
169
- // { queryParams: { returnUrl: this.url + ';filter=1' } }
170
- // );
171
- this.router.navigate([this.url, id], { queryParams: { returnUrl: this.url + '?filter=1' } });
172
- }
173
- edit2(id, id2) {
174
- // this.router.navigate([this.url, id, id2, { returnUrl: this.url + ';filter=1' }]);
175
- this.router.navigate([this.url, id, id2], { queryParams: { returnUrl: this.url + '?filter=1' } });
176
- }
177
- select(item) {
178
- item.selected = !item.selected;
179
- const id = item.id;
180
- if (id) {
181
- if (item.selected) {
182
- if (!this.selectedIds.includes(id)) {
183
- this.selectedIds.push(id);
184
- this.selectedItems.push(item);
185
- }
186
- }
187
- else {
188
- this.selectedIds = this.selectedIds.filter(item => item !== id);
189
- this.selectedItems = this.selectedItems.filter(item => item.id !== id);
190
- }
191
- }
192
- }
193
- showApproveModal(id) {
194
- if (!id || !this.approveModal)
195
- return;
196
- const tmp = { ids: [id] };
197
- this.approveModel = {};
198
- this.approveModal.show(tmp);
199
- }
200
- showApproveSelectedModal() {
201
- const tmp = { ids: this.getSelectedIds() };
202
- if (!tmp.ids || tmp.ids.length === 0 || !this.approveModal)
203
- return;
204
- this.approveModel = {};
205
- this.approveModal.show(tmp);
206
- }
207
- async approve(model) {
208
- if (!model)
209
- return;
210
- this.alert.clear();
211
- const data = await firstValueFrom(this.apiApprove(model));
212
- if (!data || data.length === 0)
213
- return;
214
- const message = await firstValueFrom(this.translate.get(this.approvedMesage));
215
- this.alert.success(message, null, 'fa-solid fa-thumbs-up');
216
- this.refresh();
217
- }
218
- apiApprove(model) {
219
- return this.service.approve(model);
220
- }
221
- showDisapproveModal(id) {
222
- if (!id || !this.disapproveModal)
223
- return;
224
- const tmp = { ids: [id] };
225
- this.approveModel = {};
226
- this.disapproveModal.show(tmp);
227
- }
228
- showDisapproveSelectedModal() {
229
- const tmp = { ids: this.getSelectedIds() };
230
- if (!tmp.ids || tmp.ids.length === 0 || !this.disapproveModal)
231
- return;
232
- this.approveModel = {};
233
- this.disapproveModal.show(tmp);
234
- }
235
- async disapprove(model) {
236
- if (!model || !this.approveModel)
237
- return;
238
- if (typeof model === 'object') {
239
- model.status = this.approveModel.status;
240
- model.comment = StringHelper.tryTrim(this.approveModel.comment);
241
- if (!model.comment)
242
- delete model.comment;
243
- }
244
- this.alert.clear();
245
- const data = await firstValueFrom(this.apiDisapprove(model));
246
- if (!data || data.length === 0)
247
- return;
248
- const message = await firstValueFrom(this.translate.get(this.disapprovedMesage));
249
- this.alert.success(message, null, 'fa-solid fa-thumbs-down');
250
- this.refresh();
251
- }
252
- apiDisapprove(model) {
253
- return this.service.disapprove(model);
254
- }
255
- getSelectedIds() {
256
- return this.selectedIds;
257
- // if (!this.pagedList || !this.pagedList.items) return [];
258
- // let ids = [];
259
- // for (const item of this.pagedList.items) {
260
- // if (!item.selected || !item.id) continue;
261
- // ids.push(item.id);
262
- // }
263
- // return ids;
264
- }
265
- showSum() { }
266
- async sum() {
267
- this.sumModel = null;
268
- const data = await firstValueFrom(this.apiSum(this.internalFilter));
269
- if (data) {
270
- this.sumModel = data;
271
- this.showSum();
272
- }
273
- else {
274
- const message = await firstValueFrom(this.translate.get('Alert.SumError'));
275
- this.alert.error(message);
276
- }
277
- }
278
- apiSum(filter) {
279
- return this.service.sum(filter);
280
- }
281
- export(fileTypeId) {
282
- this.service.export(this.internalFilter, fileTypeId).subscribe(data => {
283
- this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
284
- });
285
- }
286
- print(printType) {
287
- if (!this.model || !this.model.items)
288
- return;
289
- const ids = this.getSelectedIds();
290
- for (const id of ids) {
291
- super.print(id, printType);
292
- }
293
- }
294
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ListBaseComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
295
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: ListBaseComponent, inputs: { initItems: "initItems" }, viewQueries: [{ propertyName: "filterModal", first: true, predicate: ["filterModal"], descendants: true }, { propertyName: "approveModal", first: true, predicate: ["approveModal"], descendants: true }, { propertyName: "disapproveModal", first: true, predicate: ["disapproveModal"], descendants: true }], usesInheritance: true, ngImport: i0 }); }
296
- }
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ListBaseComponent, decorators: [{
298
- type: Directive
299
- }], ctorParameters: () => [{ type: undefined }], propDecorators: { initItems: [{
300
- type: Input
301
- }], filterModal: [{
302
- type: ViewChild,
303
- args: ['filterModal', { static: false }]
304
- }], approveModal: [{
305
- type: ViewChild,
306
- args: ['approveModal', { static: false }]
307
- }], disapproveModal: [{
308
- type: ViewChild,
309
- args: ['disapproveModal', { static: false }]
310
- }] } });
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQWdCLFVBQVUsRUFBYSxLQUFLLEVBQWEsTUFBTSxXQUFXLENBQUM7QUFFbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEMsOEJBQThCO0FBRzlCLE1BQU0sT0FBTyxpQkFBOEUsU0FBUSxhQUF3QztJQWF2SSxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQ0ksU0FBUyxDQUFDLENBQWU7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQVdELFlBQStCLE9BQWlCO1FBQzVDLEtBQUssRUFBRSxDQUFDO1FBRG1CLFlBQU8sR0FBUCxPQUFPLENBQVU7UUE3QmhELFdBQU0sR0FBUSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQy9CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFUixt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O1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQWtCO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxtRUFBbUUsQ0FBQyxDQUFDO1FBQ2hILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdRLEtBQUssQ0FBQyxTQUFxQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUFFLE9BQU87UUFFN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2xDLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDbkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNMLENBQUM7OEdBelVRLGlCQUFpQjtrR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTOzJFQWtCRixTQUFTO3NCQURaLEtBQUs7Z0JBSzBELFdBQVc7c0JBQTFFLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHc0IsWUFBWTtzQkFBNUUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUd3QixlQUFlO3NCQUFsRixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdDaGlsZCwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IElTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFwcHJvdmVNb2RlbCwgRmlsdGVyQmFzZSwgUGFnZWRMaXN0LCBQYWdlciwgUHJpbnRUeXBlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgWmVrTW9kYWwgfSBmcm9tICcuLi9tb2R1bGVzL21vZGFsL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcnJheUhlbHBlciwgQ29udmVydCwgRmlsdGVySGVscGVyLCBQYWdlckhlbHBlciwgU3RvcmFnZUhlbHBlciwgU3RyaW5nSGVscGVyLCBVcmxIZWxwZXIgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJy4vdHlwZXMnO1xyXG4vLyBkZWNsYXJlIGxldCBib290c3RyYXA6IGFueTtcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgTGlzdEJhc2VDb21wb25lbnQ8VFNlcnZpY2UgZXh0ZW5kcyBJU2VydmljZSA9IElTZXJ2aWNlLCBUUGFnZWRMaXN0SXRlbSA9IGFueT4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50PFBhZ2VkTGlzdDxUUGFnZWRMaXN0SXRlbT4+IHtcclxuICAgIGZpbHRlcjogYW55ID0gbmV3IEZpbHRlckJhc2UoKTtcclxuICAgIHNhdmVGaWx0ZXIgPSB0cnVlO1xyXG4gICAgc29ydEZpZWxkczogYW55O1xyXG4gICAgcHJvdGVjdGVkIGludGVybmFsRmlsdGVyOiBhbnkgPSBuZXcgRmlsdGVyQmFzZSgpO1xyXG4gICAgaXNGaWx0ZXJlZCA9IGZhbHNlO1xyXG4gICAgc2VsZWN0ZWRJZHM6IGFueVtdID0gW107XHJcbiAgICBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgcGFnZXIgPSBuZXcgUGFnZXIoKTtcclxuICAgIHN1bU1vZGVsOiBhbnk7XHJcbiAgICB0YWJsZUlkID0gJ3RhYmxlJztcclxuXHJcbiAgICBwcml2YXRlIF9pbml0SXRlbXMgPSB0cnVlO1xyXG4gICAgZ2V0IGluaXRJdGVtcygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5pdEl0ZW1zO1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBpbml0SXRlbXModjogQm9vbGVhbklucHV0KSB7XHJcbiAgICAgICAgdGhpcy5faW5pdEl0ZW1zID0gQ29udmVydC50b0Jvb2xlYW5Qcm9wZXJ0eSh2KTtcclxuICAgIH1cclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyTW9kYWw/OiBaZWtNb2RhbCB8IG51bGw7XHJcblxyXG4gICAgYXBwcm92ZU1vZGVsOiBBcHByb3ZlTW9kZWwgPSB7fTtcclxuICAgIEBWaWV3Q2hpbGQoJ2FwcHJvdmVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwcm92ZU1vZGFsPzogWmVrTW9kYWwgfCBudWxsO1xyXG4gICAgcHJvdGVjdGVkIGFwcHJvdmVkTWVzYWdlID0gJ0FsZXJ0LkFwcHJvdmVkJztcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkaXNhcHByb3ZlTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJvdGVjdGVkIHJlYWRvbmx5IGRpc2FwcHJvdmVNb2RhbD86IFpla01vZGFsIHwgbnVsbDtcclxuICAgIHByb3RlY3RlZCBkaXNhcHByb3ZlZE1lc2FnZSA9ICdBbGVydC5EaXNhcHByb3ZlZCc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHNlcnZpY2U6IFRTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gICAgcmVhZG9ubHkgYWxlcnQgPSBpbmplY3QoQWxlcnRTZXJ2aWNlKTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIG92ZXJyaWRlIGluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIuaW5pdCgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0RGVmYXVsdEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuaW5pdFN0b3JlZEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuYXNzaWduRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBiaW5kTW9kZWwoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFwaUdldEFsbCh0aGlzLmludGVybmFsRmlsdGVyKSk7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwpIHtcclxuICAgICAgICAgICAgbGV0IHRvdGFsQ291bnQgPSB0aGlzLm1vZGVsLnRvdGFsSXRlbUNvdW50O1xyXG4gICAgICAgICAgICBpZiAoIXRvdGFsQ291bnQgJiYgdGhpcy5tb2RlbC5wYWdlcikge1xyXG4gICAgICAgICAgICAgICAgdG90YWxDb3VudCA9IHRoaXMubW9kZWwucGFnZXIgPyAodGhpcy5tb2RlbC5wYWdlci50b3RhbEl0ZW1Db3VudCB8fCAwKSA6IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wYWdlciA9IFBhZ2VySGVscGVyLmdldCh0b3RhbENvdW50LCB0aGlzLmludGVybmFsRmlsdGVyLnBhZ2UsIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZVNpemUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uQmluZE1vZGVsQ29tcGxldGVkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2VyID0gbmV3IFBhZ2VyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vdGhpcy5wYWdlZExpc3QucGFnZXIgPSB0aGlzLnBhZ2VyO1xyXG4gICAgfVxyXG4gICAgYXBpR2V0QWxsKGZpbHRlcjogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRBbGwoZmlsdGVyKTtcclxuICAgIH1cclxuICAgIHNjcm9sbFRvcCgpIHtcclxuICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMudGFibGVJZCk7XHJcbiAgICAgICAgZWw/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JywgaW5saW5lOiAnbmVhcmVzdCcgfSk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBvbkJpbmRNb2RlbENvbXBsZXRlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5pbml0SXRlbXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwgJiYgQXJyYXlIZWxwZXIuaXNBcnJheSh0aGlzLm1vZGVsLml0ZW1zKSAmJiBBcnJheUhlbHBlci5pc0FycmF5KHRoaXMuc2VsZWN0ZWRJZHMpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5tb2RlbC5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcCA9IGl0ZW0gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICAgIHRtcC5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJZHMuaW5jbHVkZXModG1wLmlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXREZWZhdWx0RmlsdGVyKCkge1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBpbml0U3RvcmVkRmlsdGVyKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclBhcmFtID0gdGhpcy5nZXRRdWVyeVBhcmFtKCdmaWx0ZXInKSB8fCB0aGlzLmdldFBhcmFtKCdmaWx0ZXInKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbHRlclBhcmFtKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRtcCA9IFN0b3JhZ2VIZWxwZXIuZ2V0KCdmaWx0ZXInKTtcclxuICAgICAgICAgICAgaWYgKHRtcCAmJiB0bXAudXJsICYmIHRtcC51cmwgPT09IHRoaXMudXJsICYmIHRtcC5maWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyID0gT2JqZWN0LmFzc2lnbih7fSwgdG1wLmZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICAvL3dlIGRvbnQgbmVlZCB0aGlzLmFzc2lnbkZpbHRlcigpOyBiZWNhdXNlIGFmdGVyIGluaXRTdG9yZWRGaWx0ZXIoKTsgd2lsbCBiZSBhc3NpZ25lZC5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmaWx0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmaWx0ZXInKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBjaGFuZ2VQYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIucGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5iaW5kTW9kZWwoKTtcclxuICAgICAgICB0aGlzLmF1dG9TYXZlRmlsdGVyKCk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb3AoKTtcclxuICAgIH1cclxuICAgIGNoYW5nZVBhZ2VTaXplKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmludGVybmFsRmlsdGVyLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZVBhZ2UoMSk7XHJcbiAgICB9XHJcbiAgICBzaG93RmlsdGVyKCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyTW9kYWw/LnNob3coKTtcclxuICAgIH1cclxuICAgIHNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLmFzc2lnbkZpbHRlcigpO1xyXG5cclxuICAgICAgICAvLyB0aGlzLmNoYW5nZVBhZ2UoMSk7XHJcbiAgICAgICAgLy9jYW4ndCB1c2UgdGhpcyBiZWNhdXNlIGRvbid0IHdhbnQgdG8gZXhlY3V0ZSBzY3JvbGxUb3BcclxuICAgICAgICB0aGlzLmludGVybmFsRmlsdGVyLnBhZ2UgPSAxO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLnBhZ2UgPSAxO1xyXG4gICAgICAgIHRoaXMuYmluZE1vZGVsKCk7XHJcbiAgICAgICAgdGhpcy5hdXRvU2F2ZUZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIGFzc2lnbkZpbHRlcigpIHtcclxuICAgICAgICB0aGlzLmludGVybmFsRmlsdGVyID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5maWx0ZXIpO1xyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJlZCA9ICFGaWx0ZXJIZWxwZXIuaXNFbXB0eSh0aGlzLmludGVybmFsRmlsdGVyKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgYXV0b1NhdmVGaWx0ZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2F2ZUZpbHRlcilcclxuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNhdmVGaWx0ZXIoKVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBpbnRlcm5hbFNhdmVGaWx0ZXIoKSB7XHJcbiAgICAgICAgU3RvcmFnZUhlbHBlci5zZXQoJ2ZpbHRlcicsIHtcclxuICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcclxuICAgICAgICAgICAgZmlsdGVyOiB0aGlzLmludGVybmFsRmlsdGVyXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICB0aGlzLmZpbHRlciA9IHsgcGFnZTogMSwgcGFnZVNpemU6IDI1IH07XHJcbiAgICAgICAgdGhpcy5hc3NpZ25GaWx0ZXIoKTtcclxuICAgIH1cclxuICAgIHJlZnJlc2goKSB7XHJcbiAgICAgICAgdGhpcy5iaW5kTW9kZWwoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgY3JlYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IFVybEhlbHBlci5nZXROb1BhcmFtKHRoaXMucm91dGVyLnVybCk7XHJcbiAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybCwgJ2NyZWF0ZScsIHsgcmV0dXJuVXJsOiB1cmwgKyAnO2ZpbHRlcj0xJyB9XSk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybCwgJ2NyZWF0ZSddLFxyXG4gICAgICAgICAgICB7IHF1ZXJ5UGFyYW1zOiB7IHJldHVyblVybDogdXJsICsgJz9maWx0ZXI9MScgfSB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGRlbGV0ZShpZDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5hbGVydC5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFwaURlbGV0ZShpZCkpO1xyXG4gICAgICAgIGlmIChkYXRhPy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LkRlbGV0ZWQnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhLXNvbGlkIGZhLXRyYXNoJylcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXBpRGVsZXRlKGlkOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmRlbGV0ZShpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlMihpZDogYW55LCBpZDI6IGFueSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnQuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hcGlEZWxldGUyKGlkLCBpZDIpKVxyXG4gICAgICAgIGlmIChkYXRhPy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LkRlbGV0ZWQnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhLXNvbGlkIGZhLXRyYXNoJylcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXBpRGVsZXRlMihpZDogYW55LCBpZDI6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZGVsZXRlMihpZCwgaWQyKTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0KGlkOiBudW1iZXIpIHtcclxuICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmwsIGlkXSxcclxuICAgICAgICAvLyAgICAgeyBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHRoaXMudXJsICsgJztmaWx0ZXI9MScgfSB9XHJcbiAgICAgICAgLy8gKTtcclxuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMudXJsLCBpZF0sXHJcbiAgICAgICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiB0aGlzLnVybCArICc/ZmlsdGVyPTEnIH0gfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBlZGl0MihpZDogbnVtYmVyLCBpZDI6IG51bWJlcikge1xyXG4gICAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnVybCwgaWQsIGlkMiwgeyByZXR1cm5Vcmw6IHRoaXMudXJsICsgJztmaWx0ZXI9MScgfV0pO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnVybCwgaWQsIGlkMl0sXHJcbiAgICAgICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiB0aGlzLnVybCArICc/ZmlsdGVyPTEnIH0gfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBzZWxlY3QoaXRlbTogYW55KSB7XHJcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkO1xyXG4gICAgICAgIGNvbnN0IGlkID0gaXRlbS5pZDtcclxuICAgICAgICBpZiAoaWQpIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZElkcy5pbmNsdWRlcyhpZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2goaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IGlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBpZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgc2hvd0FwcHJvdmVNb2RhbChpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFpZCB8fCAhdGhpcy5hcHByb3ZlTW9kYWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgdG1wID0geyBpZHM6IFtpZF0gfTtcclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIHNob3dBcHByb3ZlU2VsZWN0ZWRNb2RhbCgpIHtcclxuICAgICAgICBjb25zdCB0bXAgPSB7IGlkczogdGhpcy5nZXRTZWxlY3RlZElkcygpIH07XHJcbiAgICAgICAgaWYgKCF0bXAuaWRzIHx8IHRtcC5pZHMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmFwcHJvdmVNb2RhbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGFwcHJvdmUobW9kZWw6IGFueSkge1xyXG4gICAgICAgIGlmICghbW9kZWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5hbGVydC5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFwaUFwcHJvdmUobW9kZWwpKTtcclxuICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudHJhbnNsYXRlLmdldCh0aGlzLmFwcHJvdmVkTWVzYWdlKSk7XHJcbiAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS10aHVtYnMtdXAnKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gICAgYXBpQXBwcm92ZShtb2RlbDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcHByb3ZlKG1vZGVsKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc2hvd0Rpc2FwcHJvdmVNb2RhbChpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFpZCB8fCAhdGhpcy5kaXNhcHByb3ZlTW9kYWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgdG1wID0geyBpZHM6IFtpZF0gfTtcclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuZGlzYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIHNob3dEaXNhcHByb3ZlU2VsZWN0ZWRNb2RhbCgpIHtcclxuICAgICAgICBjb25zdCB0bXAgPSB7IGlkczogdGhpcy5nZXRTZWxlY3RlZElkcygpIH07XHJcbiAgICAgICAgaWYgKCF0bXAuaWRzIHx8IHRtcC5pZHMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmRpc2FwcHJvdmVNb2RhbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuZGlzYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGRpc2FwcHJvdmUobW9kZWw6IGFueSkge1xyXG4gICAgICAgIGlmICghbW9kZWwgfHwgIXRoaXMuYXBwcm92ZU1vZGVsKSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgbW9kZWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIG1vZGVsLnN0YXR1cyA9IHRoaXMuYXBwcm92ZU1vZGVsLnN0YXR1cztcclxuICAgICAgICAgICAgbW9kZWwuY29tbWVudCA9IFN0cmluZ0hlbHBlci50cnlUcmltKHRoaXMuYXBwcm92ZU1vZGVsLmNvbW1lbnQpO1xyXG4gICAgICAgICAgICBpZiAoIW1vZGVsLmNvbW1lbnQpIGRlbGV0ZSBtb2RlbC5jb21tZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hbGVydC5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFwaURpc2FwcHJvdmUobW9kZWwpKTtcclxuICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudHJhbnNsYXRlLmdldCh0aGlzLmRpc2FwcHJvdmVkTWVzYWdlKSk7XHJcbiAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS10aHVtYnMtZG93bicpXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICBhcGlEaXNhcHByb3ZlKG1vZGVsOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmRpc2FwcHJvdmUobW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdGVkSWRzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWRzO1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5wYWdlZExpc3QgfHwgIXRoaXMucGFnZWRMaXN0Lml0ZW1zKSByZXR1cm4gW107XHJcblxyXG4gICAgICAgIC8vIGxldCBpZHMgPSBbXTtcclxuICAgICAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5wYWdlZExpc3QuaXRlbXMpIHtcclxuICAgICAgICAvLyAgICAgaWYgKCFpdGVtLnNlbGVjdGVkIHx8ICFpdGVtLmlkKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgLy8gICAgIGlkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyByZXR1cm4gaWRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTdW0oKSB7IH1cclxuICAgIGFzeW5jIHN1bSgpIHtcclxuICAgICAgICB0aGlzLnN1bU1vZGVsID0gbnVsbDtcclxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hcGlTdW0odGhpcy5pbnRlcm5hbEZpbHRlcikpO1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VtTW9kZWwgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTdW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5TdW1FcnJvcicpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5lcnJvcihtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhcGlTdW0oZmlsdGVyOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLnN1bShmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydChmaWxlVHlwZUlkOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZXhwb3J0KHRoaXMuaW50ZXJuYWxGaWx0ZXIsIGZpbGVUeXBlSWQpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YSwgJ2V4cG9ydC54bHN4JywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Jyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG92ZXJyaWRlIHByaW50KHByaW50VHlwZT86IFByaW50VHlwZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5pdGVtcykgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLmdldFNlbGVjdGVkSWRzKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBpZCBvZiBpZHMpIHtcclxuICAgICAgICAgICAgc3VwZXIucHJpbnQoaWQsIHByaW50VHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9jb21wb25lbnRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBCb29sZWFuSW5wdXQgPSBzdHJpbmcgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuZXhwb3J0IHR5cGUgTnVtYmVySW5wdXQgPSBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5leHBvcnQgdHlwZSBEYXRlSW5wdXQgPSBzdHJpbmcgfCBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuZXhwb3J0IHR5cGUgU3RyaW5nSW5wdXQgPSBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkOyJdfQ==