@ecodev/natural 58.0.3 → 58.0.5
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.
- package/esm2022/lib/classes/abstract-detail.mjs +12 -20
- package/esm2022/lib/classes/cumulative-changes.mjs +15 -13
- package/esm2022/lib/modules/common/directives/linkable-tab.directive.mjs +5 -6
- package/esm2022/lib/modules/detail-header/detail-header.component.mjs +3 -3
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +3 -3
- package/esm2022/lib/modules/relations/relations.component.mjs +6 -7
- package/esm2022/lib/modules/sidenav/sidenav.service.mjs +9 -10
- package/esm2022/lib/services/abstract-model.service.mjs +9 -10
- package/fesm2022/ecodev-natural.mjs +54 -64
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/classes/abstract-detail.d.ts +8 -0
- package/lib/classes/cumulative-changes.d.ts +2 -1
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +1 -1
- package/lib/modules/relations/relations.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav.service.d.ts +1 -1
- package/lib/services/abstract-model.service.d.ts +5 -4
- package/package.json +1 -1
|
@@ -17,14 +17,6 @@ function isNaturalDialogTriggerProvidedData(dialogData) {
|
|
|
17
17
|
}
|
|
18
18
|
// @dynamic
|
|
19
19
|
export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
20
|
-
#dialogData;
|
|
21
|
-
/**
|
|
22
|
-
* Once set, this must not change anymore, especially not right after the creation mutation,
|
|
23
|
-
* so the form does not switch from creation mode to update mode without an actual reload of
|
|
24
|
-
* model from DB (by navigating to update page).
|
|
25
|
-
*/
|
|
26
|
-
#isUpdatePage;
|
|
27
|
-
#changes;
|
|
28
20
|
constructor(key, service) {
|
|
29
21
|
super();
|
|
30
22
|
this.key = key;
|
|
@@ -63,14 +55,14 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
63
55
|
* Injected service
|
|
64
56
|
*/
|
|
65
57
|
this.route = inject(ActivatedRoute);
|
|
66
|
-
this
|
|
58
|
+
this._dialogData = inject(MAT_DIALOG_DATA, { optional: true });
|
|
67
59
|
/**
|
|
68
60
|
* Once set, this must not change anymore, especially not right after the creation mutation,
|
|
69
61
|
* so the form does not switch from creation mode to update mode without an actual reload of
|
|
70
62
|
* model from DB (by navigating to update page).
|
|
71
63
|
*/
|
|
72
|
-
this
|
|
73
|
-
this
|
|
64
|
+
this._isUpdatePage = false;
|
|
65
|
+
this.changes = new CumulativeChanges();
|
|
74
66
|
}
|
|
75
67
|
/**
|
|
76
68
|
* You probably should not override this method. Instead, consider overriding `initForm()`.
|
|
@@ -80,8 +72,8 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
80
72
|
this.initForm();
|
|
81
73
|
}
|
|
82
74
|
else {
|
|
83
|
-
const route = isNaturalDialogTriggerProvidedData(this
|
|
84
|
-
? this
|
|
75
|
+
const route = isNaturalDialogTriggerProvidedData(this._dialogData)
|
|
76
|
+
? this._dialogData.activatedRoute
|
|
85
77
|
: this.route;
|
|
86
78
|
this.#subscribeToModelFromResolvedData(route);
|
|
87
79
|
}
|
|
@@ -117,7 +109,7 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
117
109
|
* This should be used instead of checking `data.model.id` directly, in order to type guard and get proper typing
|
|
118
110
|
*/
|
|
119
111
|
isUpdatePage() {
|
|
120
|
-
return this
|
|
112
|
+
return this._isUpdatePage;
|
|
121
113
|
}
|
|
122
114
|
/**
|
|
123
115
|
* Update the object on the server with the values from the form fields that were modified since
|
|
@@ -133,15 +125,15 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
133
125
|
ifValid(this.form).subscribe(() => {
|
|
134
126
|
const newValues = this.form.getRawValue();
|
|
135
127
|
if (submitAllFields) {
|
|
136
|
-
this
|
|
128
|
+
this.changes.initialize({});
|
|
137
129
|
}
|
|
138
130
|
const toSubmit = {
|
|
139
131
|
id: this.data.model.id,
|
|
140
|
-
...this
|
|
132
|
+
...this.changes.differences(newValues),
|
|
141
133
|
};
|
|
142
134
|
const update = now ? this.service.updateNow(toSubmit) : this.service.update(toSubmit);
|
|
143
135
|
update.subscribe(model => {
|
|
144
|
-
this
|
|
136
|
+
this.changes.commit(newValues);
|
|
145
137
|
this.alertService.info($localize `Mis à jour`);
|
|
146
138
|
this.postUpdate(model);
|
|
147
139
|
});
|
|
@@ -227,9 +219,9 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
227
219
|
* will incorrectly be called exactly 1 time per component instance, even if the object changes via route navigation.
|
|
228
220
|
*/
|
|
229
221
|
initForm() {
|
|
230
|
-
this
|
|
222
|
+
this._isUpdatePage = !!this.data.model.id;
|
|
231
223
|
this.form = this.service.getFormGroup(this.data.model);
|
|
232
|
-
this
|
|
224
|
+
this.changes.initialize(this.form.getRawValue());
|
|
233
225
|
}
|
|
234
226
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NaturalAbstractDetail, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
|
|
235
227
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: NaturalAbstractDetail, usesInheritance: true, ngImport: i0 }); }
|
|
@@ -237,4 +229,4 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
237
229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NaturalAbstractDetail, decorators: [{
|
|
238
230
|
type: Directive
|
|
239
231
|
}], ctorParameters: () => [{ type: undefined }, { type: undefined }] });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvYWJzdHJhY3QtZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQVN6RCxTQUFTLGtDQUFrQyxDQUN2QyxVQUFtQjtJQUVuQixPQUFPLENBQ0gsQ0FBQyxDQUFDLFVBQVU7UUFDWixPQUFPLFVBQVUsS0FBSyxRQUFRO1FBQzlCLGdCQUFnQixJQUFJLFVBQVU7UUFDOUIsVUFBVSxDQUFDLGNBQWMsWUFBWSxjQUFjLENBQ3RELENBQUM7QUFDTixDQUFDO0FBRUQsV0FBVztBQUVYLE1BQU0sT0FBTyxxQkFlVCxTQUFRLG9CQUFvQjtJQTJDNUIsV0FBVyxD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SUFDdEQsQ0FBQzs4R0FyUlEscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2tlYmFiQ2FzZX0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7TmF0dXJhbEFsZXJ0U2VydmljZX0gZnJvbSAnLi4vbW9kdWxlcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0UGFuZWx9IGZyb20gJy4uL21vZHVsZXMvcGFuZWxzL2Fic3RyYWN0LXBhbmVsJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7RXh0cmFjdFJlc29sdmUsIEV4dHJhY3RUY3JlYXRlLCBFeHRyYWN0VG9uZSwgRXh0cmFjdFR1cGRhdGUsIExpdGVyYWx9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7RU1QVFksIGVuZFdpdGgsIGZpbmFsaXplLCBsYXN0LCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2lmVmFsaWQsIHZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtQYWdpbmF0ZWREYXRhfSBmcm9tICcuL2RhdGEtc291cmNlJztcbmltcG9ydCB7UXVlcnlWYXJpYWJsZXN9IGZyb20gJy4vcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5pbXBvcnQge0N1bXVsYXRpdmVDaGFuZ2VzfSBmcm9tICcuL2N1bXVsYXRpdmUtY2hhbmdlcyc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGF9IGZyb20gJy4uL21vZHVsZXMvZGlhbG9nLXRyaWdnZXIvZGlhbG9nLXRyaWdnZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBgRGF0YWAgY29udGFpbnMgaW4gYG1vZGVsYCBlaXRoZXIgdGhlIG1vZGVsIGZldGNoZWQgZnJvbSBEQiBvciBkZWZhdWx0IHZhbHVlcyAod2l0aG91dCBJRCkuIEFuZCBiZXNpZGVzIGBtb2RlbGAsXG4gKiBhbnkgb3RoZXIgZXh0cmEga2V5cyBkZWZpbmVkIGJ5IEV4dHJhLlxuICovXG50eXBlIERhdGE8VFNlcnZpY2UsIEV4dHJhPiA9IHttb2RlbDoge2lkPzogc3RyaW5nfSAmIEV4dHJhY3RSZXNvbHZlPFRTZXJ2aWNlPn0gJiBFeHRyYTtcblxuZnVuY3Rpb24gaXNOYXR1cmFsRGlhbG9nVHJpZ2dlclByb3ZpZGVkRGF0YShcbiAgICBkaWFsb2dEYXRhOiB1bmtub3duLFxuKTogZGlhbG9nRGF0YSBpcyBOYXR1cmFsRGlhbG9nVHJpZ2dlclByb3ZpZGVkRGF0YTxuZXZlcj4ge1xuICAgIHJldHVybiAoXG4gICAgICAgICEhZGlhbG9nRGF0YSAmJlxuICAgICAgICB0eXBlb2YgZGlhbG9nRGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgJ2FjdGl2YXRlZFJvdXRlJyBpbiBkaWFsb2dEYXRhICYmXG4gICAgICAgIGRpYWxvZ0RhdGEuYWN0aXZhdGVkUm91dGUgaW5zdGFuY2VvZiBBY3RpdmF0ZWRSb3V0ZVxuICAgICk7XG59XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBOYXR1cmFsQWJzdHJhY3REZXRhaWw8XG4gICAgICAgIFRTZXJ2aWNlIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgICAgICAgICAge2lkOiBzdHJpbmd9LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgUGFnaW5hdGVkRGF0YTxMaXRlcmFsPixcbiAgICAgICAgICAgIFF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgICAgICBFeHRyYVJlc29sdmUgZXh0ZW5kcyBMaXRlcmFsID0gUmVjb3JkPG5ldmVyLCBuZXZlcj4sXG4gICAgPlxuICAgIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0UGFuZWxcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIC8qKlxuICAgICAqIERhdGEgcmV0cmlldmVkIGJ5IHRoZSBzZXJ2ZXIgdmlhIHJvdXRlIHJlc29sdmVycy5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgYG1vZGVsYCBpcyBzcGVjaWFsLiBJdCBpcyByZWFkb25seSBhbmQgcmVwcmVzZW50cyB0aGUgbW9kZWwgYmVpbmcgdXBkYXRlZFxuICAgICAqIGFzIGl0IGV4aXN0cyBvbiBzZXJ2ZXIuIFRoZSB2YWx1ZSBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiBBcG9sbG8gbXV0YXRlcyBpdCBvbiBzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBUaGUgb25seSB0aW1lIHdoZW4gYG1vZGVsYCBpcyBub3QgcmVhZG9ubHkgaXMgZHVyaW5nIGNyZWF0aW9uLiBPbmx5IHRoZW4gY2FuIHdlIG1vZGlmeSB0aGUgbW9kZWwgdmFsdWVzIGRpcmVjdGx5LlxuICAgICAqXG4gICAgICogT3RoZXIga2V5cywgaWYgcHJlc2VudCwgYXJlIHdoYXRldmVyIGlzIHJldHVybmVkIGZyb20gcm91dGUgcmVzb2x2ZXJzIGFzLWlzLlxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBkYXRhOiBEYXRhPFRTZXJ2aWNlLCBFeHRyYVJlc29sdmU+ID0ge1xuICAgICAgICBtb2RlbDogdGhpcy5zZXJ2aWNlLmdldERlZmF1bHRGb3JTZXJ2ZXIoKSxcbiAgICB9IGFzIERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHRoYXQgbWFuYWdlcyB0aGUgZGF0YSBmcm9tIHRoZSBjb250cm9sbGVyXG4gICAgICovXG4gICAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IC8gaGlkZXMgdGhlIGJvdHRvbSBmYWIgYnV0dG9uIChtb3N0bHkgdG8gaGlkZSBpdCB3aGVuIHdlIGFyZSBvbiBvdGhlciB0YWJzIHdoZXJlIHNlbWFudGljIG9mIGJ1dHRvbiBjYW4gY29uZmxpY3Qgd2l0aCAuLi5cbiAgICAgKiBzZW1hbnRpYyBvZiBkYXRhIG9uIG90aGVyIHRhYiwgbGlrZSByZWxhdGlvbnMgdGhhdCBsaXN0IG90aGVyIG9iamVjdHMpXG4gICAgICovXG4gICAgcHVibGljIHNob3dGYWJCdXR0b24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGVydFNlcnZpY2UgPSBpbmplY3QoTmF0dXJhbEFsZXJ0U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBJbmplY3RlZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICAjZGlhbG9nRGF0YTogdW5rbm93biA9IGluamVjdChNQVRfRElBTE9HX0RBVEEsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgLyoqXG4gICAgICogT25jZSBzZXQsIHRoaXMgbXVzdCBub3QgY2hhbmdlIGFueW1vcmUsIGVzcGVjaWFsbHkgbm90IHJpZ2h0IGFmdGVyIHRoZSBjcmVhdGlvbiBtdXRhdGlvbixcbiAgICAgKiBzbyB0aGUgZm9ybSBkb2VzIG5vdCBzd2l0Y2ggZnJvbSBjcmVhdGlvbiBtb2RlIHRvIHVwZGF0ZSBtb2RlIHdpdGhvdXQgYW4gYWN0dWFsIHJlbG9hZCBvZlxuICAgICAqIG1vZGVsIGZyb20gREIgKGJ5IG5hdmlnYXRpbmcgdG8gdXBkYXRlIHBhZ2UpLlxuICAgICAqL1xuICAgICNpc1VwZGF0ZVBhZ2UgPSBmYWxzZTtcbiAgICByZWFkb25seSAjY2hhbmdlcyA9IG5ldyBDdW11bGF0aXZlQ2hhbmdlczx0eXBlb2YgdGhpcy5mb3JtLmdldFJhd1ZhbHVlPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBUU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBZb3UgcHJvYmFibHkgc2hvdWxkIG5vdCBvdmVycmlkZSB0aGlzIG1ldGhvZC4gSW5zdGVhZCwgY29uc2lkZXIgb3ZlcnJpZGluZyBgaW5pdEZvcm0oKWAuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IGlzTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGEodGhpcy4jZGlhbG9nRGF0YSlcbiAgICAgICAgICAgICAgICA/IHRoaXMuI2RpYWxvZ0RhdGEuYWN0aXZhdGVkUm91dGVcbiAgICAgICAgICAgICAgICA6IHRoaXMucm91dGU7XG4gICAgICAgICAgICB0aGlzLiNzdWJzY3JpYmVUb01vZGVsRnJvbVJlc29sdmVkRGF0YShyb3V0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RmFiQnV0dG9uID0gaW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgI3N1YnNjcmliZVRvTW9kZWxGcm9tUmVzb2x2ZWREYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgICAgICBsZXQgcHJldmlvdXNJZCA9IC0xO1xuICAgICAgICByb3V0ZS5kYXRhXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGRhdGEubW9kZWwgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZXNvbHZlZCBkYXRhIG11c3QgaW5jbHVkZSB0aGUga2V5IGBtb2RlbGAsIGFuZCBpdCBtdXN0IGJlIGFuIG9ic2VydmFibGUgKHVzdWFsbHkgb25lIGZyb20gQXBvbGxvKS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBtb2RlbCB0byBrbm93IHdoZW4gQXBvbGxvIGNhY2hlIGlzIGNoYW5nZWQsIHNvIHdlIGNhbiByZWZsZWN0IGl0IGludG8gYGRhdGEubW9kZWxgXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1vZGVsLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKG1vZGVsOiBFeHRyYWN0UmVzb2x2ZTxUU2VydmljZT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNJZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJZCA9IG1vZGVsLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGBkYXRhLm1vZGVsYCB3YXMgZmV0Y2hlZCBmcm9tIERCLCBzbyB3ZSBhcmUgb24gYW4gdXBkYXRlIHBhZ2UsIG9yIGlmIGl0IGlzIGEgbmV3IG9iamVjdFxuICAgICAqIHdpdGggKG9ubHkpIGRlZmF1bHQgdmFsdWVzLCBzbyB3ZSBhcmUgb24gYSBjcmVhdGlvbiBwYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGNoZWNraW5nIGBkYXRhLm1vZGVsLmlkYCBkaXJlY3RseSwgaW4gb3JkZXIgdG8gdHlwZSBndWFyZCBhbmQgZ2V0IHByb3BlciB0eXBpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNVcGRhdGVQYWdlKCk6IHRoaXMgaXMge2RhdGE6IHttb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+fX0ge1xuICAgICAgICByZXR1cm4gdGhpcy4jaXNVcGRhdGVQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgdmFsdWVzIGZyb20gdGhlIGZvcm0gZmllbGRzIHRoYXQgd2VyZSBtb2RpZmllZCBzaW5jZVxuICAgICAqIHRoZSBpbml0aWFsaXphdGlvbiwgb3Igc2luY2UgdGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgdXBkYXRlLlxuICAgICAqXG4gICAgICogRm9ybSBmaWVsZHMgdGhhdCBhcmUgbmV2ZXIgbW9kaWZpZWQgYXJlICoqbm90Kiogc2VudCB0byB0aGUgc2VydmVyLCB1bmxlc3MgaWYgeW91IHNwZWNpZnkgYHN1Ym1pdEFsbEZpZWxkc2AuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShub3cgPSBmYWxzZSwgc3VibWl0QWxsRmllbGRzID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXBkYXRlUGFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZUFsbEZvcm1Db250cm9scyh0aGlzLmZvcm0pO1xuXG4gICAgICAgIGlmVmFsaWQodGhpcy5mb3JtKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoc3VibWl0QWxsRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jY2hhbmdlcy5pbml0aWFsaXplKHt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG9TdWJtaXQgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YS5tb2RlbC5pZCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLiNjaGFuZ2VzLmRpZmZlcmVuY2VzKG5ld1ZhbHVlcyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCB1cGRhdGUgPSBub3cgPyB0aGlzLnNlcnZpY2UudXBkYXRlTm93KHRvU3VibWl0KSA6IHRoaXMuc2VydmljZS51cGRhdGUodG9TdWJtaXQpO1xuICAgICAgICAgICAgdXBkYXRlLnN1YnNjcmliZShtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy4jY2hhbmdlcy5jb21taXQobmV3VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKCRsb2NhbGl6ZWBNaXMgw6Agam91cmApO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdFVwZGF0ZShtb2RlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZShyZWRpcmVjdCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcblxuICAgICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlKG5ld1ZhbHVlcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYENyw6nDqWApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RDcmVhdGUobW9kZWwpLnBpcGUoZW5kV2l0aChtb2RlbCksIGxhc3QoKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRVcmwgPSB0aGlzLnBhbmVsRGF0YT8uY29uZmlnLnBhcmFtcy5uZXh0Um91dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VXJsID0gb2xkVXJsLnJlcGxhY2UoJy9uZXcnLCAnLycgKyBtb2RlbC5pZCkgKyAobmV4dFVybCA/ICcvJyArIG5leHRVcmwgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmV3VXJsKTsgLy8gcmVwbGFjZSAvbmV3IGJ5IC8xMjNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nLCBtb2RlbC5pZF0sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBgY29uZmlybWVyYCBjYW4gYmUgdXNlZCB0byBvcGVuIGEgY3VzdG9tIGRpYWxvZywgb3IgYW55dGhpbmcgZWxzZSwgdG8gY29uZmlybSB0aGUgZGVsZXRpb24sIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGRpYWxvZ1xuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUocmVkaXJlY3Rpb25Sb3V0ZT86IHVua25vd25bXSwgY29uZmlybWVyPzogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuXG4gICAgICAgIChcbiAgICAgICAgICAgIGNvbmZpcm1lciA/P1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuY29uZmlybShcbiAgICAgICAgICAgICAgICAkbG9jYWxpemVgU3VwcHJlc3Npb25gLFxuICAgICAgICAgICAgICAgICRsb2NhbGl6ZWBWb3VsZXotdm91cyBzdXBwcmltZXIgZMOpZmluaXRpdmVtZW50IGNldCDDqWzDqW1lbnQgP2AsXG4gICAgICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnRgLFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoY29uZmlybWVkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maXJtZWQgfHwgIXRoaXMuaXNVcGRhdGVQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKHRoaXMuZGF0YS5tb2RlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGUoW3RoaXMuZGF0YS5tb2RlbF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYFN1cHByaW3DqWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsU2VydmljZT8uZ29Ub1BlbnVsdGltYXRlUGFuZWwoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFJvdXRlID0gWycuLi8uLi8nICsga2ViYWJDYXNlKHRoaXMua2V5KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyZWRpcmVjdGlvblJvdXRlID8gcmVkaXJlY3Rpb25Sb3V0ZSA6IGRlZmF1bHRSb3V0ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHBvc3RVcGRhdGUobW9kZWw6IEV4dHJhY3RUdXBkYXRlPFRTZXJ2aWNlPik6IHZvaWQge1xuICAgICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBiZSBzdWJzY3JpYmVkIHRvIGltbWVkaWF0ZWx5IGFuZCB0aGVcbiAgICAgKiByZWRpcmVjdCBuYXZpZ2F0aW9uIHdpbGwgb25seSBoYXBwZW4gYWZ0ZXIgdGhlIG9ic2VydmFibGUgY29tcGxldGVzLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcG9zdENyZWF0ZShtb2RlbDogRXh0cmFjdFRjcmVhdGU8VFNlcnZpY2U+KTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHByZURlbGV0ZShtb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+KTogdm9pZCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIHRoZSBmb3JtIHdoZW5ldmVyIGl0IGlzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIFlvdSBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QsIGFuZCBub3QgYG5nT25Jbml0KClgIGlmIHlvdSBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgZm9ybS4gQmVjYXVzZSB0aGlzIHdpbGxcbiAgICAgKiBjb3JyZWN0bHkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmUgdGltZSBwZXIgY29tcG9uZW50IGluc3RhbmNlIGlmIG5lZWRlZCwgd2hlbiB0aGUgcm91dGUgY2hhbmdlcy4gQnV0IGBuZ09uSW5pdCgpYFxuICAgICAqIHdpbGwgaW5jb3JyZWN0bHkgYmUgY2FsbGVkIGV4YWN0bHkgMSB0aW1lIHBlciBjb21wb25lbnQgaW5zdGFuY2UsIGV2ZW4gaWYgdGhlIG9iamVjdCBjaGFuZ2VzIHZpYSByb3V0ZSBuYXZpZ2F0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jaXNVcGRhdGVQYWdlID0gISF0aGlzLmRhdGEubW9kZWwuaWQ7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuc2VydmljZS5nZXRGb3JtR3JvdXAodGhpcy5kYXRhLm1vZGVsKTtcbiAgICAgICAgdGhpcy4jY2hhbmdlcy5pbml0aWFsaXplKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB9XG59XG4iXX0=
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvYWJzdHJhY3QtZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQVN6RCxTQUFTLGtDQUFrQyxDQUN2QyxVQUFtQjtJQUVuQixPQUFPLENBQ0gsQ0FBQyxDQUFDLFVBQVU7UUFDWixPQUFPLFVBQVUsS0FBSyxRQUFRO1FBQzlCLGdCQUFnQixJQUFJLFVBQVU7UUFDOUIsVUFBVSxDQUFDLGNBQWMsWUFBWSxjQUFjLENBQ3RELENBQUM7QUFDTixDQUFDO0FBRUQsV0FBVztBQUVYLE1BQU0sT0FBTyxxQkFlVCxTQUFRLG9CQUFvQjtJQXFENUIsWUFDdUIs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QUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtrZWJhYkNhc2V9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge05hdHVyYWxBbGVydFNlcnZpY2V9IGZyb20gJy4uL21vZHVsZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdFBhbmVsfSBmcm9tICcuLi9tb2R1bGVzL3BhbmVscy9hYnN0cmFjdC1wYW5lbCc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QtbW9kZWwuc2VydmljZSc7XG5pbXBvcnQge0V4dHJhY3RSZXNvbHZlLCBFeHRyYWN0VGNyZWF0ZSwgRXh0cmFjdFRvbmUsIEV4dHJhY3RUdXBkYXRlLCBMaXRlcmFsfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge0VNUFRZLCBlbmRXaXRoLCBmaW5hbGl6ZSwgbGFzdCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtpZlZhbGlkLCB2YWxpZGF0ZUFsbEZvcm1Db250cm9sc30gZnJvbSAnLi92YWxpZGF0b3JzJztcbmltcG9ydCB7UGFnaW5hdGVkRGF0YX0gZnJvbSAnLi9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge1F1ZXJ5VmFyaWFibGVzfSBmcm9tICcuL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtDdW11bGF0aXZlQ2hhbmdlc30gZnJvbSAnLi9jdW11bGF0aXZlLWNoYW5nZXMnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEF9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge05hdHVyYWxEaWFsb2dUcmlnZ2VyUHJvdmlkZWREYXRhfSBmcm9tICcuLi9tb2R1bGVzL2RpYWxvZy10cmlnZ2VyL2RpYWxvZy10cmlnZ2VyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogYERhdGFgIGNvbnRhaW5zIGluIGBtb2RlbGAgZWl0aGVyIHRoZSBtb2RlbCBmZXRjaGVkIGZyb20gREIgb3IgZGVmYXVsdCB2YWx1ZXMgKHdpdGhvdXQgSUQpLiBBbmQgYmVzaWRlcyBgbW9kZWxgLFxuICogYW55IG90aGVyIGV4dHJhIGtleXMgZGVmaW5lZCBieSBFeHRyYS5cbiAqL1xudHlwZSBEYXRhPFRTZXJ2aWNlLCBFeHRyYT4gPSB7bW9kZWw6IHtpZD86IHN0cmluZ30gJiBFeHRyYWN0UmVzb2x2ZTxUU2VydmljZT59ICYgRXh0cmE7XG5cbmZ1bmN0aW9uIGlzTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGEoXG4gICAgZGlhbG9nRGF0YTogdW5rbm93bixcbik6IGRpYWxvZ0RhdGEgaXMgTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGE8bmV2ZXI+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICAhIWRpYWxvZ0RhdGEgJiZcbiAgICAgICAgdHlwZW9mIGRpYWxvZ0RhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICAgICdhY3RpdmF0ZWRSb3V0ZScgaW4gZGlhbG9nRGF0YSAmJlxuICAgICAgICBkaWFsb2dEYXRhLmFjdGl2YXRlZFJvdXRlIGluc3RhbmNlb2YgQWN0aXZhdGVkUm91dGVcbiAgICApO1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTmF0dXJhbEFic3RyYWN0RGV0YWlsPFxuICAgICAgICBUU2VydmljZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICAgICAgICAgIHtpZDogc3RyaW5nfSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIFBhZ2luYXRlZERhdGE8TGl0ZXJhbD4sXG4gICAgICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnlcbiAgICAgICAgPixcbiAgICAgICAgRXh0cmFSZXNvbHZlIGV4dGVuZHMgTGl0ZXJhbCA9IFJlY29yZDxuZXZlciwgbmV2ZXI+LFxuICAgID5cbiAgICBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdFBhbmVsXG4gICAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgICAvKipcbiAgICAgKiBEYXRhIHJldHJpZXZlZCBieSB0aGUgc2VydmVyIHZpYSByb3V0ZSByZXNvbHZlcnMuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IGBtb2RlbGAgaXMgc3BlY2lhbC4gSXQgaXMgcmVhZG9ubHkgYW5kIHJlcHJlc2VudHMgdGhlIG1vZGVsIGJlaW5nIHVwZGF0ZWRcbiAgICAgKiBhcyBpdCBleGlzdHMgb24gc2VydmVyLiBUaGUgdmFsdWUgaXMga2VwdCB1cCB0byBkYXRlIHdoZW4gQXBvbGxvIG11dGF0ZXMgaXQgb24gc2VydmVyLlxuICAgICAqXG4gICAgICogVGhlIG9ubHkgdGltZSB3aGVuIGBtb2RlbGAgaXMgbm90IHJlYWRvbmx5IGlzIGR1cmluZyBjcmVhdGlvbi4gT25seSB0aGVuIGNhbiB3ZSBtb2RpZnkgdGhlIG1vZGVsIHZhbHVlcyBkaXJlY3RseS5cbiAgICAgKlxuICAgICAqIE90aGVyIGtleXMsIGlmIHByZXNlbnQsIGFyZSB3aGF0ZXZlciBpcyByZXR1cm5lZCBmcm9tIHJvdXRlIHJlc29sdmVycyBhcy1pcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGF0YTogRGF0YTxUU2VydmljZSwgRXh0cmFSZXNvbHZlPiA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMuc2VydmljZS5nZXREZWZhdWx0Rm9yU2VydmVyKCksXG4gICAgfSBhcyBEYXRhPFRTZXJ2aWNlLCBFeHRyYVJlc29sdmU+O1xuXG4gICAgLyoqXG4gICAgICogRm9ybSB0aGF0IG1hbmFnZXMgdGhlIGRhdGEgZnJvbSB0aGUgY29udHJvbGxlclxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyAvIGhpZGVzIHRoZSBib3R0b20gZmFiIGJ1dHRvbiAobW9zdGx5IHRvIGhpZGUgaXQgd2hlbiB3ZSBhcmUgb24gb3RoZXIgdGFicyB3aGVyZSBzZW1hbnRpYyBvZiBidXR0b24gY2FuIGNvbmZsaWN0IHdpdGggLi4uXG4gICAgICogc2VtYW50aWMgb2YgZGF0YSBvbiBvdGhlciB0YWIsIGxpa2UgcmVsYXRpb25zIHRoYXQgbGlzdCBvdGhlciBvYmplY3RzKVxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93RmFiQnV0dG9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEluamVjdGVkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlID0gaW5qZWN0KE5hdHVyYWxBbGVydFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgIC8qKlxuICAgICAqIEluamVjdGVkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gICAgcHJpdmF0ZSBfZGlhbG9nRGF0YTogdW5rbm93biA9IGluamVjdChNQVRfRElBTE9HX0RBVEEsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgLyoqXG4gICAgICogT25jZSBzZXQsIHRoaXMgbXVzdCBub3QgY2hhbmdlIGFueW1vcmUsIGVzcGVjaWFsbHkgbm90IHJpZ2h0IGFmdGVyIHRoZSBjcmVhdGlvbiBtdXRhdGlvbixcbiAgICAgKiBzbyB0aGUgZm9ybSBkb2VzIG5vdCBzd2l0Y2ggZnJvbSBjcmVhdGlvbiBtb2RlIHRvIHVwZGF0ZSBtb2RlIHdpdGhvdXQgYW4gYWN0dWFsIHJlbG9hZCBvZlxuICAgICAqIG1vZGVsIGZyb20gREIgKGJ5IG5hdmlnYXRpbmcgdG8gdXBkYXRlIHBhZ2UpLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2lzVXBkYXRlUGFnZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlcyA9IG5ldyBDdW11bGF0aXZlQ2hhbmdlczx0eXBlb2YgdGhpcy5mb3JtLmdldFJhd1ZhbHVlPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBUU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBZb3UgcHJvYmFibHkgc2hvdWxkIG5vdCBvdmVycmlkZSB0aGlzIG1ldGhvZC4gSW5zdGVhZCwgY29uc2lkZXIgb3ZlcnJpZGluZyBgaW5pdEZvcm0oKWAuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IGlzTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGEodGhpcy5fZGlhbG9nRGF0YSlcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RpYWxvZ0RhdGEuYWN0aXZhdGVkUm91dGVcbiAgICAgICAgICAgICAgICA6IHRoaXMucm91dGU7XG4gICAgICAgICAgICB0aGlzLiNzdWJzY3JpYmVUb01vZGVsRnJvbVJlc29sdmVkRGF0YShyb3V0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RmFiQnV0dG9uID0gaW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgI3N1YnNjcmliZVRvTW9kZWxGcm9tUmVzb2x2ZWREYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgICAgICBsZXQgcHJldmlvdXNJZCA9IC0xO1xuICAgICAgICByb3V0ZS5kYXRhXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGRhdGEubW9kZWwgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZXNvbHZlZCBkYXRhIG11c3QgaW5jbHVkZSB0aGUga2V5IGBtb2RlbGAsIGFuZCBpdCBtdXN0IGJlIGFuIG9ic2VydmFibGUgKHVzdWFsbHkgb25lIGZyb20gQXBvbGxvKS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBtb2RlbCB0byBrbm93IHdoZW4gQXBvbGxvIGNhY2hlIGlzIGNoYW5nZWQsIHNvIHdlIGNhbiByZWZsZWN0IGl0IGludG8gYGRhdGEubW9kZWxgXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1vZGVsLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKG1vZGVsOiBFeHRyYWN0UmVzb2x2ZTxUU2VydmljZT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNJZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJZCA9IG1vZGVsLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGBkYXRhLm1vZGVsYCB3YXMgZmV0Y2hlZCBmcm9tIERCLCBzbyB3ZSBhcmUgb24gYW4gdXBkYXRlIHBhZ2UsIG9yIGlmIGl0IGlzIGEgbmV3IG9iamVjdFxuICAgICAqIHdpdGggKG9ubHkpIGRlZmF1bHQgdmFsdWVzLCBzbyB3ZSBhcmUgb24gYSBjcmVhdGlvbiBwYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGNoZWNraW5nIGBkYXRhLm1vZGVsLmlkYCBkaXJlY3RseSwgaW4gb3JkZXIgdG8gdHlwZSBndWFyZCBhbmQgZ2V0IHByb3BlciB0eXBpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNVcGRhdGVQYWdlKCk6IHRoaXMgaXMge2RhdGE6IHttb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+fX0ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVcGRhdGVQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgdmFsdWVzIGZyb20gdGhlIGZvcm0gZmllbGRzIHRoYXQgd2VyZSBtb2RpZmllZCBzaW5jZVxuICAgICAqIHRoZSBpbml0aWFsaXphdGlvbiwgb3Igc2luY2UgdGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgdXBkYXRlLlxuICAgICAqXG4gICAgICogRm9ybSBmaWVsZHMgdGhhdCBhcmUgbmV2ZXIgbW9kaWZpZWQgYXJlICoqbm90Kiogc2VudCB0byB0aGUgc2VydmVyLCB1bmxlc3MgaWYgeW91IHNwZWNpZnkgYHN1Ym1pdEFsbEZpZWxkc2AuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShub3cgPSBmYWxzZSwgc3VibWl0QWxsRmllbGRzID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXBkYXRlUGFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZUFsbEZvcm1Db250cm9scyh0aGlzLmZvcm0pO1xuXG4gICAgICAgIGlmVmFsaWQodGhpcy5mb3JtKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoc3VibWl0QWxsRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VzLmluaXRpYWxpemUoe30pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0b1N1Ym1pdCA9IHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5kYXRhLm1vZGVsLmlkLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuY2hhbmdlcy5kaWZmZXJlbmNlcyhuZXdWYWx1ZXMpLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gbm93ID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZU5vdyh0b1N1Ym1pdCkgOiB0aGlzLnNlcnZpY2UudXBkYXRlKHRvU3VibWl0KTtcbiAgICAgICAgICAgIHVwZGF0ZS5zdWJzY3JpYmUobW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlcy5jb21taXQobmV3VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKCRsb2NhbGl6ZWBNaXMgw6Agam91cmApO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdFVwZGF0ZShtb2RlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZShyZWRpcmVjdCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcblxuICAgICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlKG5ld1ZhbHVlcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYENyw6nDqWApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RDcmVhdGUobW9kZWwpLnBpcGUoZW5kV2l0aChtb2RlbCksIGxhc3QoKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRVcmwgPSB0aGlzLnBhbmVsRGF0YT8uY29uZmlnLnBhcmFtcy5uZXh0Um91dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VXJsID0gb2xkVXJsLnJlcGxhY2UoJy9uZXcnLCAnLycgKyBtb2RlbC5pZCkgKyAobmV4dFVybCA/ICcvJyArIG5leHRVcmwgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmV3VXJsKTsgLy8gcmVwbGFjZSAvbmV3IGJ5IC8xMjNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nLCBtb2RlbC5pZF0sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBgY29uZmlybWVyYCBjYW4gYmUgdXNlZCB0byBvcGVuIGEgY3VzdG9tIGRpYWxvZywgb3IgYW55dGhpbmcgZWxzZSwgdG8gY29uZmlybSB0aGUgZGVsZXRpb24sIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGRpYWxvZ1xuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUocmVkaXJlY3Rpb25Sb3V0ZT86IHVua25vd25bXSwgY29uZmlybWVyPzogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuXG4gICAgICAgIChcbiAgICAgICAgICAgIGNvbmZpcm1lciA/P1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuY29uZmlybShcbiAgICAgICAgICAgICAgICAkbG9jYWxpemVgU3VwcHJlc3Npb25gLFxuICAgICAgICAgICAgICAgICRsb2NhbGl6ZWBWb3VsZXotdm91cyBzdXBwcmltZXIgZMOpZmluaXRpdmVtZW50IGNldCDDqWzDqW1lbnQgP2AsXG4gICAgICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnRgLFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoY29uZmlybWVkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maXJtZWQgfHwgIXRoaXMuaXNVcGRhdGVQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKHRoaXMuZGF0YS5tb2RlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGUoW3RoaXMuZGF0YS5tb2RlbF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYFN1cHByaW3DqWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsU2VydmljZT8uZ29Ub1BlbnVsdGltYXRlUGFuZWwoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFJvdXRlID0gWycuLi8uLi8nICsga2ViYWJDYXNlKHRoaXMua2V5KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyZWRpcmVjdGlvblJvdXRlID8gcmVkaXJlY3Rpb25Sb3V0ZSA6IGRlZmF1bHRSb3V0ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHBvc3RVcGRhdGUobW9kZWw6IEV4dHJhY3RUdXBkYXRlPFRTZXJ2aWNlPik6IHZvaWQge1xuICAgICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBiZSBzdWJzY3JpYmVkIHRvIGltbWVkaWF0ZWx5IGFuZCB0aGVcbiAgICAgKiByZWRpcmVjdCBuYXZpZ2F0aW9uIHdpbGwgb25seSBoYXBwZW4gYWZ0ZXIgdGhlIG9ic2VydmFibGUgY29tcGxldGVzLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcG9zdENyZWF0ZShtb2RlbDogRXh0cmFjdFRjcmVhdGU8VFNlcnZpY2U+KTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHByZURlbGV0ZShtb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+KTogdm9pZCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIHRoZSBmb3JtIHdoZW5ldmVyIGl0IGlzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIFlvdSBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QsIGFuZCBub3QgYG5nT25Jbml0KClgIGlmIHlvdSBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgZm9ybS4gQmVjYXVzZSB0aGlzIHdpbGxcbiAgICAgKiBjb3JyZWN0bHkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmUgdGltZSBwZXIgY29tcG9uZW50IGluc3RhbmNlIGlmIG5lZWRlZCwgd2hlbiB0aGUgcm91dGUgY2hhbmdlcy4gQnV0IGBuZ09uSW5pdCgpYFxuICAgICAqIHdpbGwgaW5jb3JyZWN0bHkgYmUgY2FsbGVkIGV4YWN0bHkgMSB0aW1lIHBlciBjb21wb25lbnQgaW5zdGFuY2UsIGV2ZW4gaWYgdGhlIG9iamVjdCBjaGFuZ2VzIHZpYSByb3V0ZSBuYXZpZ2F0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNVcGRhdGVQYWdlID0gISF0aGlzLmRhdGEubW9kZWwuaWQ7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuc2VydmljZS5nZXRGb3JtR3JvdXAodGhpcy5kYXRhLm1vZGVsKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VzLmluaXRpYWxpemUodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -3,14 +3,16 @@ import { cloneDeep, isEqual } from 'lodash-es';
|
|
|
3
3
|
* Cumulate all changes made to an object over time
|
|
4
4
|
*/
|
|
5
5
|
export class CumulativeChanges {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
constructor() {
|
|
7
|
+
this.original = {};
|
|
8
|
+
this.diff = {};
|
|
9
|
+
}
|
|
8
10
|
/**
|
|
9
11
|
* Initialize the original values, should be called exactly one time per instance
|
|
10
12
|
*/
|
|
11
13
|
initialize(originalValues) {
|
|
12
|
-
this
|
|
13
|
-
this
|
|
14
|
+
this.original = cloneDeep(originalValues);
|
|
15
|
+
this.diff = {};
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
18
|
* Returns a literal that contains only the keys whose values have been changed by this call or any previous calls.
|
|
@@ -24,27 +26,27 @@ export class CumulativeChanges {
|
|
|
24
26
|
*/
|
|
25
27
|
differences(newValues) {
|
|
26
28
|
Object.keys(newValues).forEach(key => {
|
|
27
|
-
if (key in this
|
|
29
|
+
if (key in this.diff ||
|
|
28
30
|
(newValues[key] !== undefined &&
|
|
29
|
-
(!(key in this
|
|
30
|
-
this
|
|
31
|
+
(!(key in this.original) || !isEqual(this.original[key], newValues[key])))) {
|
|
32
|
+
this.diff[key] = newValues[key];
|
|
31
33
|
}
|
|
32
34
|
});
|
|
33
|
-
return Object.keys(this
|
|
35
|
+
return Object.keys(this.diff).length ? this.diff : null;
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* Commit the given new values, so they are not treated as differences anymore.
|
|
37
39
|
*/
|
|
38
40
|
commit(newValues) {
|
|
39
|
-
this
|
|
40
|
-
...this
|
|
41
|
+
this.original = {
|
|
42
|
+
...this.original,
|
|
41
43
|
...cloneDeep(newValues),
|
|
42
44
|
};
|
|
43
45
|
Object.keys(newValues).forEach(key => {
|
|
44
|
-
if (key in this
|
|
45
|
-
delete this
|
|
46
|
+
if (key in this.diff && isEqual(this.diff[key], newValues[key])) {
|
|
47
|
+
delete this.diff[key];
|
|
46
48
|
}
|
|
47
49
|
});
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VtdWxhdGl2ZS1jaGFuZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvY3VtdWxhdGl2ZS1jaGFuZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBSTdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUE5QjtRQUNZLGFBQVEsR0FBTSxFQUFPLENBQUM7UUFDdEIsU0FBSSxHQUFlLEVBQUUsQ0FBQztJQWlEbEMsQ0FBQztJQS9DRzs7T0FFRztJQUNJLFVBQVUsQ0FBQyxjQUEyQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksV0FBVyxDQUFDLFNBQTBCO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQ0ksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUNoQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO29CQUN6QixDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoRixDQUFDO2dCQUNFLElBQUksQ0FBQyxJQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFNBQTBCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ2hCLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztTQUMxQixDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbG9uZURlZXAsIGlzRXF1YWx9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge0xpdGVyYWx9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7UmVhZG9ubHlEZWVwfSBmcm9tICd0eXBlLWZlc3QnO1xuXG4vKipcbiAqIEN1bXVsYXRlIGFsbCBjaGFuZ2VzIG1hZGUgdG8gYW4gb2JqZWN0IG92ZXIgdGltZVxuICovXG5leHBvcnQgY2xhc3MgQ3VtdWxhdGl2ZUNoYW5nZXM8VCBleHRlbmRzIExpdGVyYWw+IHtcbiAgICBwcml2YXRlIG9yaWdpbmFsOiBUID0ge30gYXMgVDtcbiAgICBwcml2YXRlIGRpZmY6IFBhcnRpYWw8VD4gPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgdGhlIG9yaWdpbmFsIHZhbHVlcywgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uZSB0aW1lIHBlciBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplKG9yaWdpbmFsVmFsdWVzOiBSZWFkb25seTxUPik6IHZvaWQge1xuICAgICAgICB0aGlzLm9yaWdpbmFsID0gY2xvbmVEZWVwKG9yaWdpbmFsVmFsdWVzKTtcbiAgICAgICAgdGhpcy5kaWZmID0ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGxpdGVyYWwgdGhhdCBjb250YWlucyBvbmx5IHRoZSBrZXlzIHdob3NlIHZhbHVlcyBoYXZlIGJlZW4gY2hhbmdlZCBieSB0aGlzIGNhbGwgb3IgYW55IHByZXZpb3VzIGNhbGxzLlxuICAgICAqXG4gICAgICogRWc6XG4gICAgICpcbiAgICAgKiBgYGB0c1xuICAgICAqIGNoYW5nZXMuaW5pdGlhbGl6ZSh7YTogMSwgYjogMn0pO1xuICAgICAqIGNoYW5nZXMuZGlmZmVyZW5jZXMoe2E6IDEsIGI6IDN9KTsgLy8gPT4ge2I6IDN9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGRpZmZlcmVuY2VzKG5ld1ZhbHVlczogUmVhZG9ubHlEZWVwPFQ+KTogUGFydGlhbDxUPiB8IG51bGwge1xuICAgICAgICBPYmplY3Qua2V5cyhuZXdWYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBrZXkgaW4gdGhpcy5kaWZmIHx8XG4gICAgICAgICAgICAgICAgKG5ld1ZhbHVlc1trZXldICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKCEoa2V5IGluIHRoaXMub3JpZ2luYWwpIHx8ICFpc0VxdWFsKHRoaXMub3JpZ2luYWxba2V5XSwgbmV3VmFsdWVzW2tleV0pKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICh0aGlzLmRpZmYgYXMgYW55KVtrZXldID0gbmV3VmFsdWVzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRpZmYpLmxlbmd0aCA/IHRoaXMuZGlmZiA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWl0IHRoZSBnaXZlbiBuZXcgdmFsdWVzLCBzbyB0aGV5IGFyZSBub3QgdHJlYXRlZCBhcyBkaWZmZXJlbmNlcyBhbnltb3JlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb21taXQobmV3VmFsdWVzOiBSZWFkb25seURlZXA8VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMub3JpZ2luYWwsXG4gICAgICAgICAgICAuLi5jbG9uZURlZXAobmV3VmFsdWVzKSxcbiAgICAgICAgfTtcblxuICAgICAgICBPYmplY3Qua2V5cyhuZXdWYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gdGhpcy5kaWZmICYmIGlzRXF1YWwodGhpcy5kaWZmW2tleV0sIG5ld1ZhbHVlc1trZXldKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRpZmZba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -23,7 +23,6 @@ function getTabId(tab) {
|
|
|
23
23
|
* </mat-tab-group>
|
|
24
24
|
*/
|
|
25
25
|
export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
26
|
-
#isLoadingRouteConfig;
|
|
27
26
|
constructor(component, route, router) {
|
|
28
27
|
super();
|
|
29
28
|
this.component = component;
|
|
@@ -33,13 +32,13 @@ export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
33
32
|
* If false, disables the persistent navigation
|
|
34
33
|
*/
|
|
35
34
|
this.naturalLinkableTab = true;
|
|
36
|
-
this
|
|
35
|
+
this.isLoadingRouteConfig = false;
|
|
37
36
|
router.events.pipe(takeUntilDestroyed()).subscribe(event => {
|
|
38
37
|
if (event instanceof RouteConfigLoadStart) {
|
|
39
|
-
this
|
|
38
|
+
this.isLoadingRouteConfig = true;
|
|
40
39
|
}
|
|
41
40
|
else if (event instanceof RouteConfigLoadEnd) {
|
|
42
|
-
this
|
|
41
|
+
this.isLoadingRouteConfig = false;
|
|
43
42
|
}
|
|
44
43
|
});
|
|
45
44
|
}
|
|
@@ -59,7 +58,7 @@ export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
59
58
|
});
|
|
60
59
|
// When mat-tab-groups selected tab change, update url
|
|
61
60
|
this.component.selectedTabChange.pipe(takeUntil(this.ngUnsubscribe)).subscribe(event => {
|
|
62
|
-
if (this
|
|
61
|
+
if (this.isLoadingRouteConfig) {
|
|
63
62
|
return;
|
|
64
63
|
}
|
|
65
64
|
const activatedTabName = getTabId(event.tab);
|
|
@@ -92,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
92
91
|
}], ctorParameters: () => [{ type: i1.MatTabGroup }, { type: i2.ActivatedRoute }, { type: i2.Router }], propDecorators: { naturalLinkableTab: [{
|
|
93
92
|
type: Input
|
|
94
93
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2FibGUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9kaXJlY3RpdmVzL2xpbmthYmxlLXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUU5RDs7R0FFRztBQUNILFNBQVMsUUFBUSxDQUFDLEdBQVc7SUFDekIsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN4RSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFLSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEseUJBQXlCO0lBT3RFLFlBQ3FCLFNBQXNCLEVBQ3RCLEtBQXFCLEVBQ3JCLE1BQWM7UUFFL0IsS0FBSyxFQUFFLENBQUM7UUFKUyxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUbkM7O1dBRUc7UUFDYSx1QkFBa0IsR0FBaUIsSUFBSSxDQUFDO1FBQ2hELHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQVNqQyxNQUFNLENBQUMsTUFBTSxDQUFD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IElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0VGFiLCBNYXRUYWJHcm91cH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZUNvbmZpZ0xvYWRFbmQsIFJvdXRlQ29uZmlnTG9hZFN0YXJ0LCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2Nsb25lfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogUmV0dXJucyBhbiBpZGVudGlmaWVyIGZvciB0aGUgdGFiXG4gKi9cbmZ1bmN0aW9uIGdldFRhYklkKHRhYjogTWF0VGFiKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGFiLmNvbnRlbnQ/LnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlkID8/ICcnO1xufVxuXG4vKipcbiAqIFVzYWdlIDpcbiAqXG4gKiA8bWF0LXRhYi1ncm91cCBbbmF0dXJhbExpbmthYmxlVGFiXT1cIiFpc1BhbmVsXCI+XG4gKiAgICAgPG1hdC10YWIgbGFiZWw9XCJUYWIgMVwiPlRhYiAxPC9tYXQtdGFiPiAvLyBGaXJzdCB0YWIgZG9lc24ndCBuZWVkIGlkLiBUaGlzIGtlZXBzIHVybCBjbGVhbiBvbiBkZWZhdWx0IG9uZVxuICogICAgIDxtYXQtdGFiIGxhYmVsPVwiVGFiIDJcIiBpZD1cInNlY29uZC10YWJcIj5UYWIgMjwvbWF0LXRhYj5cbiAqICAgICAuLi5cbiAqIDwvbWF0LXRhYi1ncm91cD5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYXQtdGFiLWdyb3VwW25hdHVyYWxMaW5rYWJsZVRhYl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxMaW5rYWJsZVRhYkRpcmVjdGl2ZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBJZiBmYWxzZSwgZGlzYWJsZXMgdGhlIHBlcnNpc3RlbnQgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYXR1cmFsTGlua2FibGVUYWI6IGJvb2xlYW4gfCAnJyA9IHRydWU7XG4gICAgcHJpdmF0ZSBpc0xvYWRpbmdSb3V0ZUNvbmZpZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudDogTWF0VGFiR3JvdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdSb3V0ZUNvbmZpZyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdSb3V0ZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXR1cmFsTGlua2FibGVUYWIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXaGVuIHVybCBwYXJhbXMgY2hhbmdlLCB1cGRhdGUgdGhlIG1hdC10YWItZ3JvdXAgc2VsZWN0ZWQgdGFiXG4gICAgICAgIHRoaXMucm91dGUuZnJhZ21lbnQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKGZyYWdtZW50ID0+IHtcbiAgICAgICAgICAgIC8vIEdldCBpbmRleCBvZiB0YWIgdGhhdCBtYXRjaGVzIHdhbnRlZCBuYW1lXG4gICAgICAgICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuZ2V0VGFiSW5kZXgoZnJhZ21lbnQpO1xuXG4gICAgICAgICAgICAvLyBJZiB0YWIgaW5kZXggaXMgdmFsaWQgKD49IDApIGdvIHRvIGdpdmVuIGZyYWdtZW50XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBmcmFnbWVudCBhdCBhbGwsIGdvIHRvIGZpcnN0IHRhYiAoaW5kZXggaXMgLTEgaW4gdGhpcyBjYXNlKVxuICAgICAgICAgICAgaWYgKHRhYkluZGV4ID49IDAgfHwgIWZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuc2VsZWN0ZWRJbmRleCA9IHRhYkluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXaGVuIG1hdC10YWItZ3JvdXBzIHNlbGVjdGVkIHRhYiBjaGFuZ2UsIHVwZGF0ZSB1cmxcbiAgICAgICAgdGhpcy5jb21wb25lbnQuc2VsZWN0ZWRUYWJDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTG9hZGluZ1JvdXRlQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBhY3RpdmF0ZWRUYWJOYW1lID0gZ2V0VGFiSWQoZXZlbnQudGFiKTtcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC51cmw7XG4gICAgICAgICAgICBpZiAoIXNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBub3JtYWwgdXNhZ2UsIGJlY2F1c2UgaXQgd291bGQgbWVhbnMgdGhlcmUgaXMgbm8gcm91dGUgYXQgYWxsIGluIHRoZSBhcHBcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1cGRhdGUgVVJMIGZvciB0YWJzIHdpdGhvdXQgYW55IHNlZ21lbnRzIGluIFVSTCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgdXJsIG1hdHJpeCBwYXJhbXMgKC9zZWdtZW50O21hdHJpeD1wYXJhbSkgb25seSB3aXRob3V0IHJvdXRlIHBhcmFtcyAoc2VnbWVudC86aWQpXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjbG9uZShzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5wYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJywgcGFyYW1zXSwge1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJyxcbiAgICAgICAgICAgICAgICBmcmFnbWVudDogYWN0aXZhdGVkVGFiTmFtZT8ubGVuZ3RoID8gYWN0aXZhdGVkVGFiTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYkluZGV4KGZyYWdtZW50OiBzdHJpbmcgfCBudWxsKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Ll90YWJzLnRvQXJyYXkoKS5maW5kSW5kZXgodGFiID0+IGZyYWdtZW50ID09PSBnZXRUYWJJZCh0YWIpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -47,11 +47,11 @@ export class NaturalDetailHeaderComponent {
|
|
|
47
47
|
return this.getRootLink().concat([id]);
|
|
48
48
|
}
|
|
49
49
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NaturalDetailHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: NaturalDetailHeaderComponent, isStandalone: true, selector: "natural-detail-header", inputs: { currentBaseUrl: "currentBaseUrl", isPanel: "isPanel", icon: "icon", label: "label", rootLabel: "rootLabel", newLabel: "newLabel", model: "model", breadcrumbs: "breadcrumbs", listRoute: "listRoute", listFragment: "listFragment", link: "link" }, ngImport: i0, template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a [routerLink]=\"isPanel ? [] : getRootLink()\" [fragment]=\"listFragment\" color=\"primary\" mat-button>{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs; track parent) {\n /\n <a [routerLink]=\"isPanel ? [] : getLink(parent.id)\" color=\"primary\" mat-button>\n {{ parent?.fullName || parent?.name }}</a\n >\n }\n</div>\n\n<div class=\"body\">\n @if (icon) {\n <div style=\"width: 30px\">\n <mat-icon [naturalIcon]=\"icon\" />\n </div>\n }\n @if (!model.id) {\n <div class=\"mat-headline-5 no-margin newLabel\">{{ newLabel }}</div>\n }\n @if (model.id) {\n <div class=\"mat-headline-5 no-margin label\">{{ model.name || model.fullName || label }}</div>\n }\n <div>\n <ng-content />\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host .breadcrumb,:host .body{display:flex;flex-direction:row;align-items:center}:host .breadcrumb{position:relative;top:5px}:host .body{min-height:40px}:host .body>*:not(:last-child){margin-right:5px}:host .body .label,:host .body .newLabel{flex:1}@media screen and (max-width: 600px){:host .body{flex-direction:column;align-items:flex-start}:host .body>*:not(:last-child){margin-bottom:10px!important}:host .body mat-icon{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }] }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: NaturalDetailHeaderComponent, isStandalone: true, selector: "natural-detail-header", inputs: { currentBaseUrl: "currentBaseUrl", isPanel: "isPanel", icon: "icon", label: "label", rootLabel: "rootLabel", newLabel: "newLabel", model: "model", breadcrumbs: "breadcrumbs", listRoute: "listRoute", listFragment: "listFragment", link: "link" }, ngImport: i0, template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a [routerLink]=\"isPanel ? [] : getRootLink()\" [fragment]=\"listFragment\" color=\"primary\" mat-button>{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs; track parent) {\n /\n <a [routerLink]=\"isPanel ? [] : getLink(parent.id)\" color=\"primary\" mat-button>\n {{ parent?.fullName || parent?.name }}</a\n >\n }\n</div>\n\n<div class=\"body\">\n @if (icon) {\n <div style=\"width: 30px\">\n <mat-icon [naturalIcon]=\"icon\" />\n </div>\n }\n @if (!model.id) {\n <div class=\"mat-headline-5 nat-no-margin newLabel\">{{ newLabel }}</div>\n }\n @if (model.id) {\n <div class=\"mat-headline-5 nat-no-margin label\">{{ model.name || model.fullName || label }}</div>\n }\n <div>\n <ng-content />\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host .breadcrumb,:host .body{display:flex;flex-direction:row;align-items:center}:host .breadcrumb{position:relative;top:5px}:host .body{min-height:40px}:host .body>*:not(:last-child){margin-right:5px}:host .body .label,:host .body .newLabel{flex:1}@media screen and (max-width: 600px){:host .body{flex-direction:column;align-items:flex-start}:host .body>*:not(:last-child){margin-bottom:10px!important}:host .body mat-icon{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }] }); }
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NaturalDetailHeaderComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
|
-
args: [{ selector: 'natural-detail-header', standalone: true, imports: [MatButtonModule, RouterLink, MatIconModule, NaturalIconDirective], template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a [routerLink]=\"isPanel ? [] : getRootLink()\" [fragment]=\"listFragment\" color=\"primary\" mat-button>{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs; track parent) {\n /\n <a [routerLink]=\"isPanel ? [] : getLink(parent.id)\" color=\"primary\" mat-button>\n {{ parent?.fullName || parent?.name }}</a\n >\n }\n</div>\n\n<div class=\"body\">\n @if (icon) {\n <div style=\"width: 30px\">\n <mat-icon [naturalIcon]=\"icon\" />\n </div>\n }\n @if (!model.id) {\n <div class=\"mat-headline-5 no-margin newLabel\">{{ newLabel }}</div>\n }\n @if (model.id) {\n <div class=\"mat-headline-5 no-margin label\">{{ model.name || model.fullName || label }}</div>\n }\n <div>\n <ng-content />\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host .breadcrumb,:host .body{display:flex;flex-direction:row;align-items:center}:host .breadcrumb{position:relative;top:5px}:host .body{min-height:40px}:host .body>*:not(:last-child){margin-right:5px}:host .body .label,:host .body .newLabel{flex:1}@media screen and (max-width: 600px){:host .body{flex-direction:column;align-items:flex-start}:host .body>*:not(:last-child){margin-bottom:10px!important}:host .body mat-icon{display:none}}\n"] }]
|
|
54
|
+
args: [{ selector: 'natural-detail-header', standalone: true, imports: [MatButtonModule, RouterLink, MatIconModule, NaturalIconDirective], template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a [routerLink]=\"isPanel ? [] : getRootLink()\" [fragment]=\"listFragment\" color=\"primary\" mat-button>{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs; track parent) {\n /\n <a [routerLink]=\"isPanel ? [] : getLink(parent.id)\" color=\"primary\" mat-button>\n {{ parent?.fullName || parent?.name }}</a\n >\n }\n</div>\n\n<div class=\"body\">\n @if (icon) {\n <div style=\"width: 30px\">\n <mat-icon [naturalIcon]=\"icon\" />\n </div>\n }\n @if (!model.id) {\n <div class=\"mat-headline-5 nat-no-margin newLabel\">{{ newLabel }}</div>\n }\n @if (model.id) {\n <div class=\"mat-headline-5 nat-no-margin label\">{{ model.name || model.fullName || label }}</div>\n }\n <div>\n <ng-content />\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host .breadcrumb,:host .body{display:flex;flex-direction:row;align-items:center}:host .breadcrumb{position:relative;top:5px}:host .body{min-height:40px}:host .body>*:not(:last-child){margin-right:5px}:host .body .label,:host .body .newLabel{flex:1}@media screen and (max-width: 600px){:host .body{flex-direction:column;align-items:flex-start}:host .body>*:not(:last-child){margin-bottom:10px!important}:host .body mat-icon{display:none}}\n"] }]
|
|
55
55
|
}], propDecorators: { currentBaseUrl: [{
|
|
56
56
|
type: Input
|
|
57
57
|
}], isPanel: [{
|
|
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
76
76
|
}], link: [{
|
|
77
77
|
type: Input
|
|
78
78
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9kZXRhaWwtaGVhZGVyL2RldGFpbC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvZGV0YWlsLWhlYWRlci9kZXRhaWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7O0FBU3pELE1BQU0sT0FBTyw0QkFBNEI7SUFQekM7UUFhSTs7V0FFRztRQUNhLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEM7O1dBRUc7UUFDYSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFCOzs7O1dBSUc7UUFDYSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRTNCOzs7O1dBSUc7UUFDYSxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRS9COzs7O1dBSUc7UUFDYSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWQsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFVLEVBQUUsQ0FBQztLQWV6QztJQVhVLFdBQVc7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxPQUFPLENBQUMsRUFBVTtRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs4R0FuRFEsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsK1VDZHpDLCs1QkE4QkEsMGhCRGxCYyxlQUFlLDRNQUFFLFVBQVUsbU9BQUUsYUFBYSxvTEFBRSxvQkFBb0I7OzJGQUVqRSw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBR3JCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixDQUFDOzhCQU0zRCxjQUFjO3NCQUE3QixLQUFLO2dCQUtVLE9BQU87c0JBQXRCLEtBQUs7Z0JBS1UsSUFBSTtzQkFBbkIsS0FBSztnQkFNVSxLQUFLO3NCQUFwQixLQUFLO2dCQU9VLFNBQVM7c0JBQXhCLEtBQUs7Z0JBT1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDMEIsS0FBSztzQkFBcEMsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBQ1AsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xpdGVyYWx9IGZyb20gJy4uLy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7TmF0dXJhbEljb25EaXJlY3RpdmV9IGZyb20gJy4uL2ljb24vaWNvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7Um91dGVyTGlua30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtZGV0YWlsLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9kZXRhaWwtaGVhZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtNYXRCdXR0b25Nb2R1bGUsIFJvdXRlckxpbmssIE1hdEljb25Nb2R1bGUsIE5hdHVyYWxJY29uRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbERldGFpbEhlYWRlckNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogQmFzZSBVUkwgdXNlZCB0byBidWlsZCBsaW5rcywgZGVmYXVsdHMgdG8gJy8nXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGN1cnJlbnRCYXNlVXJsPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTXVzdCBiZSBzZXQgdG8gZ2V0IHByb3BlciBsaW5rcyB3aGVuIHVzZWQgaW4gcGFuZWxzXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzUGFuZWwgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIElmIGdpdmVuIHdpbGwgc2hvdyBpY29uIGJlZm9yZSB0aXRsZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpY29uID0gJyc7XG4gICAgLyoqXG4gICAgICogVGl0bGUgc2hvd24gaWYgbW9kZWwgaGFzIG5vIG5hbWUsIG9yIGVtcHR5IG5hbWUuXG4gICAgICpcbiAgICAgKiBUeXBpY2FsbHkgc2hvdWxkIGJlIHRoZSBodW1hbiBuYW1lIGZvciB0aGUgb2JqZWN0IHR5cGUsIGVnOiAnUHJvZHVjdCdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWwgPSAnJztcblxuICAgIC8qKlxuICAgICAqIExhYmVsIG9mIHRoZSByb290IG9mIHRoZSBicmVhZGNydW1iLCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgYGxhYmVsYC5cbiAgICAgKlxuICAgICAqIFR5cGljYWxseSBzaG91bGQgYmUgdGhlIHBsdXJhbCBmb3JtIG9mIHRoZSBvYmplY3QgdHlwZSwgZWc6ICdQcm9kdWN0cydcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcm9vdExhYmVsID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBUaXRsZSBzaG93biBpZiBtb2RlbCBoYXMgbm8gaWQuXG4gICAgICpcbiAgICAgKiBUeXBpY2FsbHkgc2hvdWxkIGJlIHNpbWlsYXIgdG8gJ05ldyBwcm9kdWN0Jy5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbmV3TGFiZWwgPSAnJztcbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgcHVibGljIG1vZGVsITogTGl0ZXJhbDtcbiAgICBASW5wdXQoKSBwdWJsaWMgYnJlYWRjcnVtYnM6IExpdGVyYWxbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsaXN0Um91dGU6IGFueVtdID0gW107XG4gICAgQElucHV0KCkgcHVibGljIGxpc3RGcmFnbWVudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsaW5rPzogKGlkOiBzdHJpbmcpID0+IGFueVtdO1xuXG4gICAgcHVibGljIGdldFJvb3RMaW5rKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmN1cnJlbnRCYXNlVXJsIHx8ICcvJ10uY29uY2F0KHRoaXMubGlzdFJvdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGluayhpZDogc3RyaW5nKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5saW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSb290TGluaygpLmNvbmNhdCh0aGlzLmxpbmsoaWQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFJvb3RMaW5rKCkuY29uY2F0KFtpZF0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJicmVhZGNydW1iXCI+XG4gICAgQGlmIChyb290TGFiZWwgfHwgbGFiZWwpIHtcbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiaXNQYW5lbCA/IFtdIDogZ2V0Um9vdExpbmsoKVwiIFtmcmFnbWVudF09XCJsaXN0RnJhZ21lbnRcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtYnV0dG9uPnt7XG4gICAgICAgICAgICByb290TGFiZWwgfHwgbGFiZWxcbiAgICAgICAgfX08L2E+XG4gICAgfVxuICAgIEBmb3IgKHBhcmVudCBvZiBicmVhZGNydW1iczsgdHJhY2sgcGFyZW50KSB7XG4gICAgICAgIC9cbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiaXNQYW5lbCA/IFtdIDogZ2V0TGluayhwYXJlbnQuaWQpXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWJ1dHRvbj5cbiAgICAgICAgICAgIHt7IHBhcmVudD8uZnVsbE5hbWUgfHwgcGFyZW50Py5uYW1lIH19PC9hXG4gICAgICAgID5cbiAgICB9XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImJvZHlcIj5cbiAgICBAaWYgKGljb24pIHtcbiAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAzMHB4XCI+XG4gICAgICAgICAgICA8bWF0LWljb24gW25hdHVyYWxJY29uXT1cImljb25cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmICghbW9kZWwuaWQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1oZWFkbGluZS01IG5hdC1uby1tYXJnaW4gbmV3TGFiZWxcIj57eyBuZXdMYWJlbCB9fTwvZGl2PlxuICAgIH1cbiAgICBAaWYgKG1vZGVsLmlkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtaGVhZGxpbmUtNSBuYXQtbm8tbWFyZ2luIGxhYmVsXCI+e3sgbW9kZWwubmFtZSB8fCBtb2RlbC5mdWxsTmFtZSB8fCBsYWJlbCB9fTwvZGl2PlxuICAgIH1cbiAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|