@snabcentr/client-core 2.49.0 → 2.52.0
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/catalog/services/sc-catalog.service.d.ts +7 -42
- package/config/index.d.ts +1 -0
- package/config/sc-i-date-format.d.ts +17 -0
- package/contacts/services/sc-feedback.service.d.ts +4 -0
- package/esm2022/catalog/services/sc-catalog.service.mjs +27 -80
- package/esm2022/config/index.mjs +2 -1
- package/esm2022/config/sc-i-date-format.mjs +2 -0
- package/esm2022/contacts/enums/sc-feedback-forms.mjs +31 -2
- package/esm2022/contacts/services/sc-feedback.service.mjs +10 -7
- package/esm2022/guards/sc-id-or-slug.guard.mjs +2 -2
- package/esm2022/order/services/sc-orders.service.mjs +12 -4
- package/esm2022/tokens/index.mjs +2 -1
- package/esm2022/tokens/sc-date-format.mjs +6 -0
- package/esm2022/utm/services/sc-utm.service.mjs +23 -12
- package/fesm2022/snabcentr-client-core.mjs +573 -569
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/order/services/sc-orders.service.d.ts +4 -0
- package/package.json +3 -2
- package/release_notes.tmp +4 -3
- package/tokens/index.d.ts +1 -0
- package/tokens/sc-date-format.d.ts +6 -0
- package/utm/services/sc-utm.service.d.ts +10 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { HttpContext } from '@angular/common/http';
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { shareReplay, tap } from 'rxjs';
|
|
2
|
+
import { Inject, inject, Injectable } from '@angular/core';
|
|
3
|
+
import { first, map, shareReplay, switchMap, tap } from 'rxjs';
|
|
4
4
|
import { SC_AUTH_ADD_HEADER_REQUIRED } from '../../httpInterceptors/tokens/sc-auth-add-header-required';
|
|
5
5
|
import { SC_IS_HEADER_REQUIRED } from '../../httpInterceptors/tokens/sc-is-header-required';
|
|
6
6
|
import { SC_FEEDBACK_API } from '../../tokens/sc-feedback-api';
|
|
7
7
|
import { ScUserMetrikaGoalsEnum } from '../../user-metrika';
|
|
8
|
+
import { ScUTMService } from '../../utm/services/sc-utm.service';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@angular/common/http";
|
|
10
11
|
import * as i2 from "../../user-metrika";
|
|
@@ -23,6 +24,10 @@ export class ScFeedbackService {
|
|
|
23
24
|
this.http = http;
|
|
24
25
|
this.userMetrikaService = userMetrikaService;
|
|
25
26
|
this.feedbackApi = feedbackApi;
|
|
27
|
+
/**
|
|
28
|
+
* Сервис для работы с UTM-метками.
|
|
29
|
+
*/
|
|
30
|
+
this.utmService = inject(ScUTMService);
|
|
26
31
|
/**
|
|
27
32
|
* Список форм обратной связи.
|
|
28
33
|
*/
|
|
@@ -42,14 +47,12 @@ export class ScFeedbackService {
|
|
|
42
47
|
* @param feedbackMessage Объект сообщения обратной связи.
|
|
43
48
|
*/
|
|
44
49
|
sendFeedback(formSlug, feedbackMessage) {
|
|
45
|
-
return this.http
|
|
46
|
-
.post(`${this.feedbackApi.apiUrl}/feedback/${formSlug}`, feedbackMessage, {
|
|
50
|
+
return this.utmService.getUTM$().pipe(first(), map((utm) => (utm ? { ...feedbackMessage, utm } : feedbackMessage)), switchMap((data) => this.http.post(`${this.feedbackApi.apiUrl}/feedback/${formSlug}`, data, {
|
|
47
51
|
context: new HttpContext().set(SC_AUTH_ADD_HEADER_REQUIRED, false).set(SC_IS_HEADER_REQUIRED, false),
|
|
48
52
|
headers: {
|
|
49
53
|
[this.feedbackApi.authTokenName]: this.feedbackApi.authToken,
|
|
50
54
|
},
|
|
51
|
-
})
|
|
52
|
-
.pipe(tap(() => {
|
|
55
|
+
})), tap(() => {
|
|
53
56
|
this.userMetrikaService.emitUserMetrikaEvent({
|
|
54
57
|
target: ScUserMetrikaGoalsEnum.feedbackSent,
|
|
55
58
|
});
|
|
@@ -67,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
67
70
|
type: Inject,
|
|
68
71
|
args: [SC_FEEDBACK_API]
|
|
69
72
|
}] }] });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmVlZGJhY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29udGFjdHMvc2VydmljZXMvc2MtZmVlZGJhY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBSWpFOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQWtCMUI7Ozs7OztPQU1HO0lBQ0gsWUFDcUIsSUFBZ0IsRUFDaEIsa0JBQXdDLEVBRXhDLFdBQTJCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFzQjtRQUV4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUE1QmhEOztXQUVHO1FBQ2MsZUFBVSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFakU7O1dBRUc7UUFDYSxtQkFBYyxHQUEyRCxJQUFJLENBQUMsSUFBSTthQUM3RixHQUFHLENBQTZDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGlCQUFpQixFQUFFO1lBQzFGLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDO1lBQ3BHLE9BQU8sRUFBRTtnQkFDTCxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO2FBQy9EO1NBQ0osQ0FBQzthQUNELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQWN2QixDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSSxZQUFZLENBQUMsUUFBeUIsRUFBRSxlQUFtQztRQUM5RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUNqQyxLQUFLLEVBQUUsRUFDUCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUNuRSxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGFBQWEsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFO1lBQy9FLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDO1lBQ3BHLE9BQU8sRUFBRTtnQkFDTCxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO2FBQy9EO1NBQ0osQ0FBQyxDQUNMLEVBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDekMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLFlBQVk7YUFDOUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7K0dBeERRLGlCQUFpQixnRkE0QmQsZUFBZTttSEE1QmxCLGlCQUFpQixjQUZkLE1BQU07OzRGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQTZCUSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NJRmVlZGJhY2tBUEkgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHsgU0NfQVVUSF9BRERfSEVBREVSX1JFUVVJUkVEIH0gZnJvbSAnLi4vLi4vaHR0cEludGVyY2VwdG9ycy90b2tlbnMvc2MtYXV0aC1hZGQtaGVhZGVyLXJlcXVpcmVkJztcbmltcG9ydCB7IFNDX0lTX0hFQURFUl9SRVFVSVJFRCB9IGZyb20gJy4uLy4uL2h0dHBJbnRlcmNlcHRvcnMvdG9rZW5zL3NjLWlzLWhlYWRlci1yZXF1aXJlZCc7XG5pbXBvcnQgeyBTY0lSZWZlcmVuY2VzVHlwZXMgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzL2R0by9zYy1pLXJlZmVyZW5jZXMtdHlwZXMnO1xuaW1wb3J0IHsgU0NfRkVFREJBQ0tfQVBJIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLWZlZWRiYWNrLWFwaSc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYSc7XG5pbXBvcnQgeyBTY1VUTVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dG0vc2VydmljZXMvc2MtdXRtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NJRmVlZGJhY2tNZXNzYWdlIH0gZnJvbSAnLi4vZHRvJztcbmltcG9ydCB7IFNjRmVlZGJhY2tGb3JtcyB9IGZyb20gJy4uL2VudW1zL3NjLWZlZWRiYWNrLWZvcm1zJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY0ZlZWRiYWNrU2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEgVVRNLdC80LXRgtC60LDQvNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXRtU2VydmljZTogU2NVVE1TZXJ2aWNlID0gaW5qZWN0KFNjVVRNU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YTQvtGA0Lwg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmZWVkYmFja0Zvcm1zJDogT2JzZXJ2YWJsZTxBcnJheTxTY0lSZWZlcmVuY2VzVHlwZXM8U2NGZWVkYmFja0Zvcm1zPj4+ID0gdGhpcy5odHRwXG4gICAgICAgIC5nZXQ8QXJyYXk8U2NJUmVmZXJlbmNlc1R5cGVzPFNjRmVlZGJhY2tGb3Jtcz4+PihgJHt0aGlzLmZlZWRiYWNrQXBpLmFwaVVybH0vZmVlZGJhY2svZm9ybXNgLCB7XG4gICAgICAgICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKS5zZXQoU0NfQVVUSF9BRERfSEVBREVSX1JFUVVJUkVELCBmYWxzZSkuc2V0KFNDX0lTX0hFQURFUl9SRVFVSVJFRCwgZmFsc2UpLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIFt0aGlzLmZlZWRiYWNrQXBpLmF1dGhUb2tlbk5hbWVdOiB0aGlzLmZlZWRiYWNrQXBpLmF1dGhUb2tlbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NGZWVkYmFja1NlcnZpY2V9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGh0dHAgSFRUUC3QutC70LjQtdC90YIuXG4gICAgICogQHBhcmFtIHVzZXJNZXRyaWthU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKiBAcGFyYW0gZmVlZGJhY2tBcGkg0JTQsNC90L3Ri9C1INC00LvRjyDQstC30LDQuNC80L7QtNC10LnRgdGC0LLQuNGPINGBIEFQSSDQvtCx0YDQsNGC0L3QvtC5INGB0LLRj9C30LguXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSxcbiAgICAgICAgQEluamVjdChTQ19GRUVEQkFDS19BUEkpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmVlZGJhY2tBcGk6IFNjSUZlZWRiYWNrQVBJXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0J7RgtC/0YDQsNCy0LvRj9C10YIg0YHQvtC+0LHRidC10L3QuNC1INC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtU2x1ZyDQodC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDRhNC+0YDQvNGLLlxuICAgICAqIEBwYXJhbSBmZWVkYmFja01lc3NhZ2Ug0J7QsdGK0LXQutGCINGB0L7QvtCx0YnQtdC90LjRjyDQvtCx0YDQsNGC0L3QvtC5INGB0LLRj9C30LguXG4gICAgICovXG4gICAgcHVibGljIHNlbmRGZWVkYmFjayhmb3JtU2x1ZzogU2NGZWVkYmFja0Zvcm1zLCBmZWVkYmFja01lc3NhZ2U6IFNjSUZlZWRiYWNrTWVzc2FnZSk6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0bVNlcnZpY2UuZ2V0VVRNJCgpLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKCh1dG0pID0+ICh1dG0gPyB7IC4uLmZlZWRiYWNrTWVzc2FnZSwgdXRtIH0gOiBmZWVkYmFja01lc3NhZ2UpKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoZGF0YSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmh0dHAucG9zdDx1bmRlZmluZWQ+KGAke3RoaXMuZmVlZGJhY2tBcGkuYXBpVXJsfS9mZWVkYmFjay8ke2Zvcm1TbHVnfWAsIGRhdGEsIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogbmV3IEh0dHBDb250ZXh0KCkuc2V0KFNDX0FVVEhfQUREX0hFQURFUl9SRVFVSVJFRCwgZmFsc2UpLnNldChTQ19JU19IRUFERVJfUkVRVUlSRUQsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMuZmVlZGJhY2tBcGkuYXV0aFRva2VuTmFtZV06IHRoaXMuZmVlZGJhY2tBcGkuYXV0aFRva2VuLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5mZWVkYmFja1NlbnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -25,11 +25,11 @@ export const ScIdOrSlugGuard = (route) => {
|
|
|
25
25
|
}
|
|
26
26
|
if (productIdOrSlug && /^\d+$/.test(productIdOrSlug) !== (idOrSlug === 'id')) {
|
|
27
27
|
return inject(ScCatalogService)
|
|
28
|
-
.
|
|
28
|
+
.getProductData$(productIdOrSlug)
|
|
29
29
|
.pipe(filter(tuiIsPresent),
|
|
30
30
|
// eslint-disable-next-line security/detect-object-injection
|
|
31
31
|
map((product) => router.createUrlTree(['/catalog', 'product', product[idOrSlug]])));
|
|
32
32
|
}
|
|
33
33
|
return true;
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaWQtb3Itc2x1Zy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZ3VhcmRzL3NjLWlkLW9yLXNsdWcuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQXlDLE1BQU0sRUFBVyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RDs7OztHQUlHO0FBQ0gsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBa0IsQ0FBQyxLQUE2QixFQUEyQyxFQUFFO0lBQ3JILE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDMUQsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sUUFBUSxHQUFrQixNQUFNLENBQWdCLHNCQUFzQixDQUFDLENBQUM7SUFDOUUsTUFBTSxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLElBQUksZ0JBQWdCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDN0UsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7YUFDMUIsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUM7YUFDcEMsSUFBSSxDQUNELE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDcEIsNERBQTREO1FBQzVELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVFLENBQUM7SUFDVixDQUFDO0lBRUQsSUFBSSxlQUFlLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNFLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDO2FBQzFCLGVBQWUsQ0FBQyxlQUFlLENBQUM7YUFDaEMsSUFBSSxDQUNELE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDcEIsNERBQTREO1FBQzVELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNyRixDQUFDO0lBQ1YsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVGbiwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSB9IGZyb20gJy4uL2NhdGFsb2cnO1xuaW1wb3J0IHsgU0NfSURfT1JfU0xVR19JTl9ST1VURSB9IGZyb20gJy4uL3Byb3ZpZGVycyc7XG5cbi8qKlxuICog0KHRgtGA0LDQtiDQstGL0L/QvtC70L3Rj9GO0YnQuNC5INC/0YDQvtCy0LXRgNC60YMg0LzQsNGA0YjRgNGD0YLQsCDRgtC+0LLQsNGA0LAg0Lgg0LrQsNGC0LXQs9C+0YDQuNC4LCDQuCDRgNC10LTQuNGA0LXQutGC0LAg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC90LDRgdGC0YDQvtC10Log0L7QutGA0YPQttC10L3QuNGPLlxuICpcbiAqIEBwYXJhbSByb3V0ZSDQodC10YDQstC40YEg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9GO0YnQuNC5INC00L7RgdGC0YPQvyDQuiDQtNCw0L3QvdGL0Lwg0L4g0LzQsNGA0YjRgNGD0YLQtS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvZnVuY3Rpb24tcmV0dXJuLXR5cGVcbmV4cG9ydCBjb25zdCBTY0lkT3JTbHVnR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHsgcGFyYW1NYXAgfSA9IHJvdXRlO1xuICAgIGNvbnN0IGNhdGVnb3J5SWRPclNsdWcgPSBwYXJhbU1hcC5nZXQoJ2NhdGVnb3J5SWRPclNsdWcnKTtcbiAgICBjb25zdCBwcm9kdWN0SWRPclNsdWcgPSBwYXJhbU1hcC5nZXQoJ3Byb2R1Y3RJZE9yU2x1ZycpO1xuICAgIGNvbnN0IGlkT3JTbHVnOiAnaWQnIHwgJ3NsdWcnID0gaW5qZWN0PCdpZCcgfCAnc2x1Zyc+KFNDX0lEX09SX1NMVUdfSU5fUk9VVEUpO1xuICAgIGNvbnN0IHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICBpZiAoY2F0ZWdvcnlJZE9yU2x1ZyAmJiAvXlxcZCskLy50ZXN0KGNhdGVnb3J5SWRPclNsdWcpICE9PSAoaWRPclNsdWcgPT09ICdpZCcpKSB7XG4gICAgICAgIHJldHVybiBpbmplY3QoU2NDYXRhbG9nU2VydmljZSlcbiAgICAgICAgICAgIC5nZXRDYXRlZ29yeUNhY2hlZCQoY2F0ZWdvcnlJZE9yU2x1ZylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgIG1hcCgoY2F0ZWdvcnkpID0+
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaWQtb3Itc2x1Zy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZ3VhcmRzL3NjLWlkLW9yLXNsdWcuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQXlDLE1BQU0sRUFBVyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RDs7OztHQUlHO0FBQ0gsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBa0IsQ0FBQyxLQUE2QixFQUEyQyxFQUFFO0lBQ3JILE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDMUQsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sUUFBUSxHQUFrQixNQUFNLENBQWdCLHNCQUFzQixDQUFDLENBQUM7SUFDOUUsTUFBTSxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLElBQUksZ0JBQWdCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDN0UsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7YUFDMUIsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUM7YUFDcEMsSUFBSSxDQUNELE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDcEIsNERBQTREO1FBQzVELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVFLENBQUM7SUFDVixDQUFDO0lBRUQsSUFBSSxlQUFlLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNFLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDO2FBQzFCLGVBQWUsQ0FBQyxlQUFlLENBQUM7YUFDaEMsSUFBSSxDQUNELE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDcEIsNERBQTREO1FBQzVELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNyRixDQUFDO0lBQ1YsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVGbiwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSB9IGZyb20gJy4uL2NhdGFsb2cnO1xuaW1wb3J0IHsgU0NfSURfT1JfU0xVR19JTl9ST1VURSB9IGZyb20gJy4uL3Byb3ZpZGVycyc7XG5cbi8qKlxuICog0KHRgtGA0LDQtiDQstGL0L/QvtC70L3Rj9GO0YnQuNC5INC/0YDQvtCy0LXRgNC60YMg0LzQsNGA0YjRgNGD0YLQsCDRgtC+0LLQsNGA0LAg0Lgg0LrQsNGC0LXQs9C+0YDQuNC4LCDQuCDRgNC10LTQuNGA0LXQutGC0LAg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC90LDRgdGC0YDQvtC10Log0L7QutGA0YPQttC10L3QuNGPLlxuICpcbiAqIEBwYXJhbSByb3V0ZSDQodC10YDQstC40YEg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9GO0YnQuNC5INC00L7RgdGC0YPQvyDQuiDQtNCw0L3QvdGL0Lwg0L4g0LzQsNGA0YjRgNGD0YLQtS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvZnVuY3Rpb24tcmV0dXJuLXR5cGVcbmV4cG9ydCBjb25zdCBTY0lkT3JTbHVnR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHsgcGFyYW1NYXAgfSA9IHJvdXRlO1xuICAgIGNvbnN0IGNhdGVnb3J5SWRPclNsdWcgPSBwYXJhbU1hcC5nZXQoJ2NhdGVnb3J5SWRPclNsdWcnKTtcbiAgICBjb25zdCBwcm9kdWN0SWRPclNsdWcgPSBwYXJhbU1hcC5nZXQoJ3Byb2R1Y3RJZE9yU2x1ZycpO1xuICAgIGNvbnN0IGlkT3JTbHVnOiAnaWQnIHwgJ3NsdWcnID0gaW5qZWN0PCdpZCcgfCAnc2x1Zyc+KFNDX0lEX09SX1NMVUdfSU5fUk9VVEUpO1xuICAgIGNvbnN0IHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICBpZiAoY2F0ZWdvcnlJZE9yU2x1ZyAmJiAvXlxcZCskLy50ZXN0KGNhdGVnb3J5SWRPclNsdWcpICE9PSAoaWRPclNsdWcgPT09ICdpZCcpKSB7XG4gICAgICAgIHJldHVybiBpbmplY3QoU2NDYXRhbG9nU2VydmljZSlcbiAgICAgICAgICAgIC5nZXRDYXRlZ29yeUNhY2hlZCQoY2F0ZWdvcnlJZE9yU2x1ZylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgIG1hcCgoY2F0ZWdvcnkpID0+IHJvdXRlci5jcmVhdGVVcmxUcmVlKFsnL2NhdGFsb2cnLCBjYXRlZ29yeVtpZE9yU2x1Z11dKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb2R1Y3RJZE9yU2x1ZyAmJiAvXlxcZCskLy50ZXN0KHByb2R1Y3RJZE9yU2x1ZykgIT09IChpZE9yU2x1ZyA9PT0gJ2lkJykpIHtcbiAgICAgICAgcmV0dXJuIGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKVxuICAgICAgICAgICAgLmdldFByb2R1Y3REYXRhJChwcm9kdWN0SWRPclNsdWcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICBtYXAoKHByb2R1Y3QpID0+IHJvdXRlci5jcmVhdGVVcmxUcmVlKFsnL2NhdGFsb2cnLCAncHJvZHVjdCcsIHByb2R1Y3RbaWRPclNsdWddXSkpXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufTtcbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
1
|
+
import { Inject, inject, Injectable } from '@angular/core';
|
|
2
|
+
import { format, parse } from 'date-fns';
|
|
2
3
|
import { filter, map, of, switchMap, tap } from 'rxjs';
|
|
3
|
-
import { SC_UPDATE_INTERVAL, SC_URLS } from '../../tokens';
|
|
4
|
+
import { SC_DATE_FORMAT, SC_UPDATE_INTERVAL, SC_URLS } from '../../tokens';
|
|
4
5
|
import { ScUserMetrikaGoalsEnum } from '../../user-metrika';
|
|
5
6
|
import { ScDeliveryCost, ScOrder, ScOrderShort } from '../dto';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
@@ -36,6 +37,10 @@ export class ScOrdersService {
|
|
|
36
37
|
* Коллекция пар ключ-значение для заказов пользователя.
|
|
37
38
|
*/
|
|
38
39
|
this.idOrderMap = new Map();
|
|
40
|
+
/**
|
|
41
|
+
* Формат дат.
|
|
42
|
+
*/
|
|
43
|
+
this.dateFormats = inject(SC_DATE_FORMAT);
|
|
39
44
|
authService
|
|
40
45
|
.getAuthChange()
|
|
41
46
|
.pipe(filter((state) => !state))
|
|
@@ -184,7 +189,10 @@ export class ScOrdersService {
|
|
|
184
189
|
date: date,
|
|
185
190
|
},
|
|
186
191
|
})
|
|
187
|
-
.pipe(map((ordersPaginateDTO) =>
|
|
192
|
+
.pipe(map((ordersPaginateDTO) => {
|
|
193
|
+
const formattedDate = format(parse(date, this.dateFormats.api, new Date()), this.dateFormats.uiDate);
|
|
194
|
+
return new ScDeliveryCost(ordersPaginateDTO, formattedDate);
|
|
195
|
+
}));
|
|
188
196
|
}
|
|
189
197
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScOrdersService, deps: [{ token: i1.HttpClient }, { token: i2.ScAuthService }, { token: SC_URLS }, { token: SC_UPDATE_INTERVAL }, { token: i3.ScCartService }, { token: i4.ScUIService }, { token: i5.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
190
198
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScOrdersService, providedIn: 'root' }); }
|
|
@@ -201,4 +209,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
201
209
|
type: Inject,
|
|
202
210
|
args: [SC_UPDATE_INTERVAL]
|
|
203
211
|
}] }, { type: i3.ScCartService }, { type: i4.ScUIService }, { type: i5.ScUserMetrikaService }] });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL3NlcnZpY2VzL3NjLW9yZGVycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTW5FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0QsT0FBTyxFQUFFLHNCQUFzQixFQUF3QixNQUFNLG9CQUFvQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQXFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7QUFHbEc7O0dBRUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQU14Qjs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFDcUIsSUFBZ0IsRUFDaEIsV0FBMEIsRUFDVCxJQUFhLEVBQ0YsY0FBaUMsRUFDN0QsV0FBMEIsRUFDMUIsU0FBc0IsRUFDdEIsa0JBQXdDO1FBTnhDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDVCxTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ0YsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQzdELGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFzQjtRQXZCN0Q7O1dBRUc7UUFDSyxlQUFVLEdBQXlCLElBQUksR0FBRyxFQUFtQixDQUFDO1FBc0JsRSxXQUFXO2FBQ04sYUFBYSxFQUFFO2FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUss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LENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDN0MsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFdBQW1CLEVBQUUsSUFBWTtRQUN4RSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUFxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxvQkFBb0IsU0FBUyxPQUFPLEVBQUU7WUFDOUUsTUFBTSxFQUFFO2dCQUNKLFlBQVksRUFBRSxXQUFXO2dCQUN6QixJQUFJLEVBQUUsSUFBSTthQUNiO1NBQ0osQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxjQUFjLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7K0dBMU5RLGVBQWUseUVBb0JaLE9BQU8sYUFDUCxrQkFBa0I7bUhBckJyQixlQUFlLGNBRlosTUFBTTs7NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQXFCUSxNQUFNOzJCQUFDLE9BQU87OzBCQUNkLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aCc7XG5pbXBvcnQgeyBTY0NhcnQsIFNjQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXJ0JztcbmltcG9ydCB7IFNjSVVwZGF0ZUludGVydmFsLCBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFNjSVBhZ2luYXRlIH0gZnJvbSAnLi4vLi4vcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBTQ19VUERBVEVfSU5URVJWQUwsIFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU2NVSVNlcnZpY2UgfSBmcm9tICcuLi8uLi91aSc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYSc7XG5pbXBvcnQgeyBTY0RlbGl2ZXJ5Q29zdCwgU2NJTmV3T3JkZXIsIFNjSU5ld09yZGVyRnJvbURyYWZ0LCBTY09yZGVyLCBTY09yZGVyU2hvcnQgfSBmcm9tICcuLi9kdG8nO1xuaW1wb3J0IHsgU2NJRGVsaXZlcnlDb3N0RFRPLCBTY0lPcmRlckRUTywgU2NJT3JkZXJTaG9ydERUTyB9IGZyb20gJy4uL2ludGVybmFsJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQt9Cw0LrQsNC30LDQvNC4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY09yZGVyc1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqINCa0L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LfQsNC60LDQt9C+0LIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIHByaXZhdGUgaWRPcmRlck1hcDogTWFwPG51bWJlciwgU2NPcmRlcj4gPSBuZXcgTWFwPG51bWJlciwgU2NPcmRlcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NPcmRlcnNTZXJ2aWNlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBodHRwINCh0LXRgNCy0LjRgSDQtNC70Y8g0LLRi9C/0L7Qu9C90LXQvdC40Y8gSFRUUC3Qt9Cw0L/RgNC+0YHQvtCyLlxuICAgICAqIEBwYXJhbSBhdXRoU2VydmljZSDQodC10YDQstC40YEg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKiBAcGFyYW0gdXJscyDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0YDQsNC30LTQtdC70YsgYmFja2VuZC5cbiAgICAgKiBAcGFyYW0gdXBkYXRlSW50ZXJ2YWwg0JjQvdGC0LXRgNCy0LDQu9GLINC+0LHQvdC+0LLQu9C10L3QuNGPINC00LDQvdC90YvRhS5cbiAgICAgKiBAcGFyYW0gY2FydFNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQvtGA0LfQuNC90L7QuS5cbiAgICAgKiBAcGFyYW0gdWlTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBIFVJLlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IFNjQXV0aFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUykgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBASW5qZWN0KFNDX1VQREFURV9JTlRFUlZBTCkgcHJpdmF0ZSByZWFkb25seSB1cGRhdGVJbnRlcnZhbDogU2NJVXBkYXRlSW50ZXJ2YWwsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IFNjQ2FydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdWlTZXJ2aWNlOiBTY1VJU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0QXV0aENoYW5nZSgpXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIoKHN0YXRlKSA9PiAhc3RhdGUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZE9yZGVyTWFwLmNsZWFyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L3QvtCy0L7Qs9C+INC30LDQutCw0LfQsCDQv9C+INGD0LrQsNC30LDQvdC90L7QvNGDINC90LDQv9GA0LDQstC70LXQvdC40Y4g0L/RgNC+0LTQsNC2LlxuICAgICAqXG4gICAgICogQHBhcmFtIGRpcmVjdGlvbklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC90LDQv9GA0LDQstC70LXQvdC40Y8g0L/RgNC+0LTQsNC2LlxuICAgICAqIEBwYXJhbSBuZXdPcmRlciDQlNCw0L3QvdGL0LUg0L3QvtCy0L7Qs9C+INC30LDQutCw0LfQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlT3JkZXIkKGRpcmVjdGlvbklkOiBudW1iZXIsIG5ld09yZGVyOiBTY0lOZXdPcmRlcik6IE9ic2VydmFibGU8U2NPcmRlclNob3J0W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFNjSU9yZGVyU2hvcnREVE9bXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzLyR7ZGlyZWN0aW9uSWR9YCwgbmV3T3JkZXIpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG9yZGVycykgPT4gb3JkZXJzLm1hcCgoaXRlbSkgPT4gbmV3IFNjT3JkZXJTaG9ydChpdGVtKSkpLFxuICAgICAgICAgICAgdGFwKChvcmRlcnM6IFNjT3JkZXJTaG9ydFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgb3JkZXJzLmZvckVhY2goKG9yZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5vcmRlckNyZWF0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgb3JkZXJfaWQ6IG9yZGVyLmlkIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudWlTZXJ2aWNlLnJlbW92ZU5ld09yZGVyTWV0YWRhdGEoZGlyZWN0aW9uSWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0LTQvtGB0YLRg9C/0L3Ri9GFINC00LDRgiDQtNC+0YHRgtCw0LLQutC4INC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0LPQviDQsNC00YDQtdGB0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzc0lkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCw0LTRgNC10YHQsCDQtNC+0YHRgtCw0LLQutC4INC60L7QvdGC0YDQsNCz0LXQvdGC0LAg0LrQu9C40LXQvdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldERlbGl2ZXJpZXNEYXRhJChhZGRyZXNzSWQ6IG51bWJlcik6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8c3RyaW5nW10+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy9kZWxpdmVyeS8ke2FkZHJlc3NJZH0vbmVhcmVzdC1kYXRlc2ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQtNC+0YHRgtGD0L/QvdGL0YUg0LTQsNGCINGB0LDQvNC+0LLRi9Cy0L7Qt9CwINC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0LPQviDRgdC60LvQsNC00LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2FyZWhvdXNlSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YHQutC70LDQtNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTZWxmRGVsaXZlcmllc0RhdGEkKHdhcmVob3VzZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHN0cmluZ1tdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvc2VsZi1kZWxpdmVyeS8ke3dhcmVob3VzZUlkfS9uZWFyZXN0LWRhdGVzYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INC30LDQutCw0LfQvtCyINGBINC/0LDQs9C40L3QsNGG0LjQtdC5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDQn9Cw0YDQsNC80LXRgtGA0Ysg0LfQsNC/0YDQvtGB0LAg0L/QvtC70YPRh9C10L3QuNGPINC30LDQutCw0LfQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcmRlcnMkKHBhcmFtczogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NPcmRlclNob3J0Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTY0lQYWdpbmF0ZTxTY0lPcmRlclNob3J0RFRPPj4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzYCwgeyBwYXJhbXM6IHBhcmFtcyB9KS5waXBlKFxuICAgICAgICAgICAgbWFwKChvcmRlcnNQYWdpbmF0ZURUTykgPT4ge1xuICAgICAgICAgICAgICAgIG9yZGVyc1BhZ2luYXRlRFRPLmRhdGEgPSBvcmRlcnNQYWdpbmF0ZURUTy5kYXRhLm1hcCgoaXRlbSkgPT4gbmV3IFNjT3JkZXJTaG9ydChpdGVtKSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXJzUGFnaW5hdGVEVE8gYXMgU2NJUGFnaW5hdGU8U2NPcmRlclNob3J0PjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKChvcmRlcnNQYWdpbmF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaWRPcmRlck1hcC5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3JkZXIuY2FjaGVkRGF0YUlzQWN0dWFsKHRoaXMudXBkYXRlSW50ZXJ2YWwub3JkZXJEYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZE9yZGVyID0gb3JkZXJzUGFnaW5hdGUuZGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBvcmRlci5pZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5kT3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlci51cGRhdGVEYXRhRnJvbVNob3J0T3JkZXIoZmluZE9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9C+0LvQvdGD0Y4g0LjQvdGE0L7RgNC80LDRhtC40Y4g0L4g0LfQsNC60LDQt9C1LlxuICAgICAqXG4gICAgICogQHBhcmFtIG9yZGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC60LDQt9CwLlxuICAgICAqIEBwYXJhbSBjYWNoZWFibGUg0J/RgNC40LfQvdCw0Log0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQv9C+0LvRg9GH0LXQvdC40Y8g0LfQsNC60LDQt9CwINC40Lcg0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9GFINC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T3JkZXIkKG9yZGVySWQ6IG51bWJlciwgY2FjaGVhYmxlOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8U2NPcmRlcj4ge1xuICAgICAgICBjb25zdCBvcmRlck1hcCA9IHRoaXMuaWRPcmRlck1hcC5nZXQob3JkZXJJZCk7XG5cbiAgICAgICAgaWYgKGNhY2hlYWJsZSAmJiBvcmRlck1hcD8uY2FjaGVkRGF0YUlzQWN0dWFsKHRoaXMudXBkYXRlSW50ZXJ2YWwub3JkZXJEYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG9yZGVyTWFwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNjSU9yZGVyRFRPPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvJHtvcmRlcklkfWApLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG9yZGVyRFRPKSA9PiBuZXcgU2NPcmRlcihvcmRlckRUTykpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChvcmRlcikgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRDaGFuZ2UkKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChjYXJ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlci5wcm9kdWN0cz8ubWFwKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5wcm9kdWN0LmNhcnRJdGVtID0gY2FydC5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLnByb2R1Y3QuaWQgPT09IHByb2R1Y3QucHJvZHVjdC5pZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvZHVjdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXI7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhcCgob3JkZXIpID0+IHRoaXMuaWRPcmRlck1hcC5zZXQob3JkZXIuaWQsIG9yZGVyKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0L/QuNGA0YPQtdGCINGC0L7QstCw0YDRiyDQt9Cw0LrQsNC30LAg0LIg0LrQvtGA0LfQuNC90YMg0YLQtdC60YPRidC10LPQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3JkZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIGNsb25lJChvcmRlcklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjQ2FydD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzLyR7b3JkZXJJZH0vY2xvbmVgLCB7fSkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ub3JkZXJDbG9uZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBvcmRlcl9pZDogb3JkZXJJZCB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jYXJ0U2VydmljZS51cGRhdGVDYXJ0JCgpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YLQvNC10L3Rj9C10YIg0LfQsNC60LDQty5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmRlcklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LDQutCw0LfQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuY2VsJChvcmRlcklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzLyR7b3JkZXJJZH0vY2FuY2VsYCwge30pLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLm9yZGVyQ2FuY2VsbGVkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgb3JkZXJfaWQ6IG9yZGVySWQgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC90L7QstC+0LPQviDQt9Cw0LrQsNC30LAg0LjQtyDQt9Cw0LrQsNC30LAg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9yZGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC60LDQt9CwINGH0LXRgNC90L7QstC40LrQsC5cbiAgICAgKiBAcGFyYW0gbmV3T3JkZXIg0JTQsNC90L3Ri9C1INC90L7QstC+0LPQviDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZU9yZGVyQnlEcmFmdCQob3JkZXJJZDogbnVtYmVyLCBuZXdPcmRlcjogU2NJTmV3T3JkZXJGcm9tRHJhZnQpOiBPYnNlcnZhYmxlPFNjT3JkZXJTaG9ydFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTY0lPcmRlclNob3J0RFRPW10+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy8ke29yZGVySWR9L2RyYWZ0YCwgbmV3T3JkZXIpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG9yZGVycykgPT4gb3JkZXJzLm1hcCgoaXRlbSkgPT4gbmV3IFNjT3JkZXJTaG9ydChpdGVtKSkpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5vcmRlckNyZWF0ZWRGcm9tRHJhZnQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBvcmRlcl9pZDogb3JkZXJJZCB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5pZE9yZGVyTWFwLmRlbGV0ZShvcmRlcklkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L3QsCDRg9C00LDQu9C10L3QuNC1INC30LDQutCw0LfQsCDRh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3JkZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0LrQsNC30LAg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVEcmFmdE9yZGVyJChvcmRlcklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy8ke29yZGVySWR9L2RyYWZ0YCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ub3JkZXJEZWxldGVkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgb3JkZXJfaWQ6IG9yZGVySWQsIGlzX2RyYWZ0OiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmlkT3JkZXJNYXAuZGVsZXRlKG9yZGVySWQpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INGB0YLQvtC40LzQvtGB0YLQuCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGFkZHJlc3NJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuCDQutC+0L3RgtGA0LDQs9C10L3RgtCwINC60LvQuNC10L3RgtCwLlxuICAgICAqIEBwYXJhbSB3YXJlaG91c2VJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdC60LvQsNC00LAuXG4gICAgICogQHBhcmFtIGRhdGUg0JTQsNGC0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGVsaXZlcnlDb3N0JChhZGRyZXNzSWQ6IG51bWJlciwgd2FyZWhvdXNlSWQ6IG51bWJlciwgZGF0ZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTY0RlbGl2ZXJ5Q29zdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PFNjSURlbGl2ZXJ5Q29zdERUTz4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzL2RlbGl2ZXJ5LyR7YWRkcmVzc0lkfS9jb3N0YCwge1xuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICB3YXJlaG91c2VfaWQ6IHdhcmVob3VzZUlkLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiBkYXRlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChvcmRlcnNQYWdpbmF0ZURUTykgPT4gbmV3IFNjRGVsaXZlcnlDb3N0KG9yZGVyc1BhZ2luYXRlRFRPLCBkYXRlKSkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL3NlcnZpY2VzL3NjLW9yZGVycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU1uRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBcUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQUdsRzs7R0FFRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBV3hCOzs7Ozs7Ozs7O09BVUc7SUFDSCxZQUNxQixJQUFnQixFQUNoQixXQUEwQixFQUNULElBQWEsRUFDRixjQUFpQyxFQUM3RCxXQUEwQixFQUMxQixTQUFzQixFQUN0QixrQkFBd0M7UUFOeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUNULFNBQUksR0FBSixJQUFJLENBQVM7UUFDRixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDN0QsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBNUI3RDs7V0FFRztRQUNLLGVBQVUsR0FBeUIsSUFBSSxHQUFHLEVB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bXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcm1hdCwgcGFyc2UgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoJztcbmltcG9ydCB7IFNjQ2FydCwgU2NDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2NhcnQnO1xuaW1wb3J0IHsgU2NJRGF0ZUZvcm1hdCwgU2NJVXBkYXRlSW50ZXJ2YWwsIFNjSVVybHMgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHsgU2NJUGFnaW5hdGUgfSBmcm9tICcuLi8uLi9wYWdpbmF0aW9uJztcbmltcG9ydCB7IFNDX0RBVEVfRk9STUFULCBTQ19VUERBVEVfSU5URVJWQUwsIFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU2NVSVNlcnZpY2UgfSBmcm9tICcuLi8uLi91aSc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYSc7XG5pbXBvcnQgeyBTY0RlbGl2ZXJ5Q29zdCwgU2NJTmV3T3JkZXIsIFNjSU5ld09yZGVyRnJvbURyYWZ0LCBTY09yZGVyLCBTY09yZGVyU2hvcnQgfSBmcm9tICcuLi9kdG8nO1xuaW1wb3J0IHsgU2NJRGVsaXZlcnlDb3N0RFRPLCBTY0lPcmRlckRUTywgU2NJT3JkZXJTaG9ydERUTyB9IGZyb20gJy4uL2ludGVybmFsJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQt9Cw0LrQsNC30LDQvNC4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY09yZGVyc1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqINCa0L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LfQsNC60LDQt9C+0LIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIHByaXZhdGUgaWRPcmRlck1hcDogTWFwPG51bWJlciwgU2NPcmRlcj4gPSBuZXcgTWFwPG51bWJlciwgU2NPcmRlcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCk0L7RgNC80LDRgiDQtNCw0YIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRlRm9ybWF0czogU2NJRGF0ZUZvcm1hdCA9IGluamVjdChTQ19EQVRFX0ZPUk1BVCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjT3JkZXJzU2VydmljZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaHR0cCDQodC10YDQstC40YEg0LTQu9GPINCy0YvQv9C+0LvQvdC10L3QuNGPIEhUVFAt0LfQsNC/0YDQvtGB0L7Qsi5cbiAgICAgKiBAcGFyYW0gYXV0aFNlcnZpY2Ug0KHQtdGA0LLQuNGBINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQuXG4gICAgICogQHBhcmFtIHVwZGF0ZUludGVydmFsINCY0L3RgtC10YDQstCw0LvRiyDQvtCx0L3QvtCy0LvQtdC90LjRjyDQtNCw0L3QvdGL0YUuXG4gICAgICogQHBhcmFtIGNhcnRTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7RgNC30LjQvdC+0LkuXG4gICAgICogQHBhcmFtIHVpU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBVSS5cbiAgICAgKiBAcGFyYW0gdXNlck1ldHJpa2FTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBTY0F1dGhTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgQEluamVjdChTQ19VUERBVEVfSU5URVJWQUwpIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlSW50ZXJ2YWw6IFNjSVVwZGF0ZUludGVydmFsLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBTY0NhcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVpU2VydmljZTogU2NVSVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZVxuICAgICkge1xuICAgICAgICBhdXRoU2VydmljZVxuICAgICAgICAgICAgLmdldEF1dGhDaGFuZ2UoKVxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChzdGF0ZSkgPT4gIXN0YXRlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaWRPcmRlck1hcC5jbGVhcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC90L7QstC+0LPQviDQt9Cw0LrQsNC30LAg0L/QviDRg9C60LDQt9Cw0L3QvdC+0LzRgyDQvdCw0L/RgNCw0LLQu9C10L3QuNGOINC/0YDQvtC00LDQti5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXJlY3Rpb25JZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCw0L/RgNCw0LLQu9C10L3QuNGPINC/0YDQvtC00LDQti5cbiAgICAgKiBAcGFyYW0gbmV3T3JkZXIg0JTQsNC90L3Ri9C1INC90L7QstC+0LPQviDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZU9yZGVyJChkaXJlY3Rpb25JZDogbnVtYmVyLCBuZXdPcmRlcjogU2NJTmV3T3JkZXIpOiBPYnNlcnZhYmxlPFNjT3JkZXJTaG9ydFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTY0lPcmRlclNob3J0RFRPW10+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy8ke2RpcmVjdGlvbklkfWAsIG5ld09yZGVyKS5waXBlKFxuICAgICAgICAgICAgbWFwKChvcmRlcnMpID0+IG9yZGVycy5tYXAoKGl0ZW0pID0+IG5ldyBTY09yZGVyU2hvcnQoaXRlbSkpKSxcbiAgICAgICAgICAgIHRhcCgob3JkZXJzOiBTY09yZGVyU2hvcnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgIG9yZGVycy5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ub3JkZXJDcmVhdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IG9yZGVyX2lkOiBvcmRlci5pZCB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVpU2VydmljZS5yZW1vdmVOZXdPcmRlck1ldGFkYXRhKGRpcmVjdGlvbklkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INC00L7RgdGC0YPQv9C90YvRhSDQtNCw0YIg0LTQvtGB0YLQsNCy0LrQuCDQtNC70Y8g0YPQutCw0LfQsNC90L3QvtCz0L4g0LDQtNGA0LXRgdCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFkZHJlc3NJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuCDQutC+0L3RgtGA0LDQs9C10L3RgtCwINC60LvQuNC10L3RgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREZWxpdmVyaWVzRGF0YSQoYWRkcmVzc0lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHN0cmluZ1tdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvZGVsaXZlcnkvJHthZGRyZXNzSWR9L25lYXJlc3QtZGF0ZXNgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0LTQvtGB0YLRg9C/0L3Ri9GFINC00LDRgiDRgdCw0LzQvtCy0YvQstC+0LfQsCDQtNC70Y8g0YPQutCw0LfQsNC90L3QvtCz0L4g0YHQutC70LDQtNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHdhcmVob3VzZUlkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0LrQu9Cw0LTQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VsZkRlbGl2ZXJpZXNEYXRhJCh3YXJlaG91c2VJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxzdHJpbmdbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzL3NlbGYtZGVsaXZlcnkvJHt3YXJlaG91c2VJZH0vbmVhcmVzdC1kYXRlc2ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQt9Cw0LrQsNC30L7QsiDRgSDQv9Cw0LPQuNC90LDRhtC40LXQuS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC30LDQv9GA0L7RgdCwINC/0L7Qu9GD0YfQtdC90LjRjyDQt9Cw0LrQsNC30L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T3JkZXJzJChwYXJhbXM6IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFNjSVBhZ2luYXRlPFNjT3JkZXJTaG9ydD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJUGFnaW5hdGU8U2NJT3JkZXJTaG9ydERUTz4+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVyc2AsIHsgcGFyYW1zOiBwYXJhbXMgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgob3JkZXJzUGFnaW5hdGVEVE8pID0+IHtcbiAgICAgICAgICAgICAgICBvcmRlcnNQYWdpbmF0ZURUTy5kYXRhID0gb3JkZXJzUGFnaW5hdGVEVE8uZGF0YS5tYXAoKGl0ZW0pID0+IG5ldyBTY09yZGVyU2hvcnQoaXRlbSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyc1BhZ2luYXRlRFRPIGFzIFNjSVBhZ2luYXRlPFNjT3JkZXJTaG9ydD47XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgob3JkZXJzUGFnaW5hdGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlkT3JkZXJNYXAuZm9yRWFjaCgob3JkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yZGVyLmNhY2hlZERhdGFJc0FjdHVhbCh0aGlzLnVwZGF0ZUludGVydmFsLm9yZGVyRGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRPcmRlciA9IG9yZGVyc1BhZ2luYXRlLmRhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3JkZXIuaWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZE9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIudXBkYXRlRGF0YUZyb21TaG9ydE9yZGVyKGZpbmRPcmRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/QvtC70L3Rg9GOINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INC30LDQutCw0LfQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmRlcklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LDQutCw0LfQsC5cbiAgICAgKiBAcGFyYW0gY2FjaGVhYmxlINCf0YDQuNC30L3QsNC6INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0L/QvtC70YPRh9C10L3QuNGPINC30LDQutCw0LfQsCDQuNC3INC60Y3RiNC40YDQvtCy0LDQvdC90YvRhSDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHVibGljIGdldE9yZGVyJChvcmRlcklkOiBudW1iZXIsIGNhY2hlYWJsZTogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPFNjT3JkZXI+IHtcbiAgICAgICAgY29uc3Qgb3JkZXJNYXAgPSB0aGlzLmlkT3JkZXJNYXAuZ2V0KG9yZGVySWQpO1xuXG4gICAgICAgIGlmIChjYWNoZWFibGUgJiYgb3JkZXJNYXA/LmNhY2hlZERhdGFJc0FjdHVhbCh0aGlzLnVwZGF0ZUludGVydmFsLm9yZGVyRGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihvcmRlck1hcCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTY0lPcmRlckRUTz4oYCR7dGhpcy51cmxzLmFwaVVybH0vb3JkZXJzLyR7b3JkZXJJZH1gKS5waXBlKFxuICAgICAgICAgICAgbWFwKChvcmRlckRUTykgPT4gbmV3IFNjT3JkZXIob3JkZXJEVE8pKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgob3JkZXIpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0Q2hhbmdlJCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoY2FydCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIucHJvZHVjdHM/Lm1hcCgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QucHJvZHVjdC5jYXJ0SXRlbSA9IGNhcnQuaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5wcm9kdWN0LmlkID09PSBwcm9kdWN0LnByb2R1Y3QuaWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YXAoKG9yZGVyKSA9PiB0aGlzLmlkT3JkZXJNYXAuc2V0KG9yZGVyLmlkLCBvcmRlcikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JrQvtC/0LjRgNGD0LXRgiDRgtC+0LLQsNGA0Ysg0LfQsNC60LDQt9CwINCyINC60L7RgNC30LjQvdGDINGC0LXQutGD0YnQtdCz0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9yZGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9uZSQob3JkZXJJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY0NhcnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy8ke29yZGVySWR9L2Nsb25lYCwge30pLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLm9yZGVyQ2xvbmVkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgb3JkZXJfaWQ6IG9yZGVySWQgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2FydFNlcnZpY2UudXBkYXRlQ2FydCQoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntGC0LzQtdC90Y/QtdGCINC30LDQutCw0LcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3JkZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbCQob3JkZXJJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy8ke29yZGVySWR9L2NhbmNlbGAsIHt9KS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5vcmRlckNhbmNlbGxlZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IG9yZGVyX2lkOiBvcmRlcklkIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvdC+0LLQvtCz0L4g0LfQsNC60LDQt9CwINC40Lcg0LfQsNC60LDQt9CwINGH0LXRgNC90L7QstC40LrQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmRlcklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LDQutCw0LfQsCDRh9C10YDQvdC+0LLQuNC60LAuXG4gICAgICogQHBhcmFtIG5ld09yZGVyINCU0LDQvdC90YvQtSDQvdC+0LLQvtCz0L4g0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVPcmRlckJ5RHJhZnQkKG9yZGVySWQ6IG51bWJlciwgbmV3T3JkZXI6IFNjSU5ld09yZGVyRnJvbURyYWZ0KTogT2JzZXJ2YWJsZTxTY09yZGVyU2hvcnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2NJT3JkZXJTaG9ydERUT1tdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvJHtvcmRlcklkfS9kcmFmdGAsIG5ld09yZGVyKS5waXBlKFxuICAgICAgICAgICAgbWFwKChvcmRlcnMpID0+IG9yZGVycy5tYXAoKGl0ZW0pID0+IG5ldyBTY09yZGVyU2hvcnQoaXRlbSkpKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ub3JkZXJDcmVhdGVkRnJvbURyYWZ0LFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgb3JkZXJfaWQ6IG9yZGVySWQgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuaWRPcmRlck1hcC5kZWxldGUob3JkZXJJZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC90LAg0YPQtNCw0LvQtdC90LjQtSDQt9Cw0LrQsNC30LAg0YfQtdGA0L3QvtCy0LjQutCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9yZGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC60LDQt9CwINGH0LXRgNC90L7QstC40LrQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlRHJhZnRPcmRlciQob3JkZXJJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9vcmRlcnMvJHtvcmRlcklkfS9kcmFmdGApLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLm9yZGVyRGVsZXRlZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IG9yZGVyX2lkOiBvcmRlcklkLCBpc19kcmFmdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5pZE9yZGVyTWFwLmRlbGV0ZShvcmRlcklkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDRgdGC0L7QuNC80L7RgdGC0Lgg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhZGRyZXNzSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60Lgg0LrQvtC90YLRgNCw0LPQtdC90YLQsCDQutC70LjQtdC90YLQsC5cbiAgICAgKiBAcGFyYW0gd2FyZWhvdXNlSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YHQutC70LDQtNCwLlxuICAgICAqIEBwYXJhbSBkYXRlINCU0LDRgtCwINC00L7RgdGC0LDQstC60LguXG4gICAgICovXG4gICAgcHVibGljIGdldERlbGl2ZXJ5Q29zdCQoYWRkcmVzc0lkOiBudW1iZXIsIHdhcmVob3VzZUlkOiBudW1iZXIsIGRhdGU6IHN0cmluZyk6IE9ic2VydmFibGU8U2NEZWxpdmVyeUNvc3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxTY0lEZWxpdmVyeUNvc3REVE8+KGAke3RoaXMudXJscy5hcGlVcmx9L29yZGVycy9kZWxpdmVyeS8ke2FkZHJlc3NJZH0vY29zdGAsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgd2FyZWhvdXNlX2lkOiB3YXJlaG91c2VJZCxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgob3JkZXJzUGFnaW5hdGVEVE8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGZvcm1hdChwYXJzZShkYXRlLCB0aGlzLmRhdGVGb3JtYXRzLmFwaSwgbmV3IERhdGUoKSksIHRoaXMuZGF0ZUZvcm1hdHMudWlEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNjRGVsaXZlcnlDb3N0KG9yZGVyc1BhZ2luYXRlRFRPLCBmb3JtYXR0ZWREYXRlKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
package/esm2022/tokens/index.mjs
CHANGED
|
@@ -12,4 +12,5 @@ export * from './sc-release';
|
|
|
12
12
|
export * from './sc-update-interval';
|
|
13
13
|
export * from './sc-urls';
|
|
14
14
|
export * from './sc-feedback-api';
|
|
15
|
-
|
|
15
|
+
export * from './sc-date-format';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uLW9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1hcGkta2V5cyc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWNhY2hlLWxpZmV0aW1lJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtY29tcGFueS1uYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtY29uZmlndXJhdG9yLWNvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1jb25maWd1cmF0b3Itc2V0dGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1kZWZhdWx0LXBhZ2UtbWV0YSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWlzLWhpZGRlbi1lcnJvci1hbGVydCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWxpbmVhci12YWx1ZXMtdG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1wYXRoLWltYWdlLW5vdC1mb3VuZCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLXJlbGVhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy11cGRhdGUtaW50ZXJ2YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy11cmxzJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZmVlZGJhY2stYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZGF0ZS1mb3JtYXQnO1xuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { tuiCreateToken } from '@taiga-ui/cdk';
|
|
2
|
+
/**
|
|
3
|
+
* Токен внедрения формата дат.
|
|
4
|
+
*/
|
|
5
|
+
export const SC_DATE_FORMAT = tuiCreateToken();
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGF0ZS1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Rva2Vucy9zYy1kYXRlLWZvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFrQyxjQUFjLEVBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHVpQ3JlYXRlVG9rZW4gfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcblxuaW1wb3J0IHsgU2NJRGF0ZUZvcm1hdCB9IGZyb20gJy4uL2NvbmZpZy9zYy1pLWRhdGUtZm9ybWF0JztcblxuLyoqXG4gKiDQotC+0LrQtdC9INCy0L3QtdC00YDQtdC90LjRjyDRhNC+0YDQvNCw0YLQsCDQtNCw0YIuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19EQVRFX0ZPUk1BVDogSW5qZWN0aW9uVG9rZW48U2NJRGF0ZUZvcm1hdD4gPSB0dWlDcmVhdGVUb2tlbjxTY0lEYXRlRm9ybWF0PigpO1xuIl19
|
|
@@ -4,7 +4,7 @@ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
|
|
4
4
|
import { WA_LOCAL_STORAGE } from '@ng-web-apis/common';
|
|
5
5
|
import { filterByKey, StorageService, toValue, WA_STORAGE_EVENT } from '@ng-web-apis/storage';
|
|
6
6
|
import { isMatch, isString } from 'lodash-es';
|
|
7
|
-
import { combineLatest,
|
|
7
|
+
import { combineLatest, filter, map, startWith, switchMap, tap } from 'rxjs';
|
|
8
8
|
import { ScAuthService } from '../../auth/services/sc-auth.service';
|
|
9
9
|
import { IS_BROWSER } from '../../providers';
|
|
10
10
|
import { SC_CACHE_LIFETIME, SC_URLS } from '../../tokens';
|
|
@@ -78,17 +78,12 @@ export class ScUTMService {
|
|
|
78
78
|
// При получении UTM-метки сохраняем ее в Storage и создаём запрос сохранения метки за клиентом.
|
|
79
79
|
this.authService
|
|
80
80
|
.getAuthChange()
|
|
81
|
-
.pipe(switchMap(() => this.utmParamsFromRoute
|
|
81
|
+
.pipe(switchMap(() => this.utmParamsFromRoute$), tap(() => {
|
|
82
|
+
this.updateTimestamp();
|
|
83
|
+
}), filter((utm) => !this.isExistingUTM(utm)), tap((utm) => {
|
|
82
84
|
this.setUTM(utm);
|
|
83
85
|
}), switchMap((utm) => this.saveUTM$(utm)))
|
|
84
86
|
.subscribe();
|
|
85
|
-
// Удаляем UTM при выходе из аккаунта.
|
|
86
|
-
this.authService
|
|
87
|
-
.getAuthChange()
|
|
88
|
-
.pipe(skip(1), filter((state) => !state))
|
|
89
|
-
.subscribe(() => {
|
|
90
|
-
this.removeUTM();
|
|
91
|
-
});
|
|
92
87
|
}
|
|
93
88
|
/**
|
|
94
89
|
* Возвращает строчное представление параметров UTM из {@link Storage}.
|
|
@@ -108,9 +103,8 @@ export class ScUTMService {
|
|
|
108
103
|
* @param utm Данные о UTM-метке.
|
|
109
104
|
*/
|
|
110
105
|
setUTM(utm) {
|
|
111
|
-
if (this.storage && this.isBrowser) {
|
|
106
|
+
if (this.storage && this.isBrowser && !this.isExistingUTM(utm)) {
|
|
112
107
|
this.storageService.setItem('utm', JSON.stringify(utm));
|
|
113
|
-
this.storageService.setItem('utmTimestamp', JSON.stringify(Date.now()));
|
|
114
108
|
}
|
|
115
109
|
}
|
|
116
110
|
/**
|
|
@@ -139,6 +133,23 @@ export class ScUTMService {
|
|
|
139
133
|
saveUTM$(utm) {
|
|
140
134
|
return this.http.post(`${this.urls.apiUrl}/utm`, utm);
|
|
141
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Проверяет, существует ли уже сохраненная UTM-метка.
|
|
138
|
+
*
|
|
139
|
+
* @param utm Данные о UTM-метке.
|
|
140
|
+
*/
|
|
141
|
+
isExistingUTM(utm) {
|
|
142
|
+
const existingUTM = this.getUTMParams();
|
|
143
|
+
return existingUTM ? isMatch(utm, JSON.parse(existingUTM)) : false;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Обновляет timestamp сохранения UTM в {@link Storage}.
|
|
147
|
+
*/
|
|
148
|
+
updateTimestamp() {
|
|
149
|
+
if (this.getUTMParams()) {
|
|
150
|
+
this.storageService.setItem('utmTimestamp', JSON.stringify(Date.now()));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
142
153
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScUTMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
143
154
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScUTMService, providedIn: 'root' }); }
|
|
144
155
|
}
|
|
@@ -148,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
148
159
|
providedIn: 'root',
|
|
149
160
|
}]
|
|
150
161
|
}], ctorParameters: () => [] });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXRtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3V0bS9zZXJ2aWNlcy9zYy11dG0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVySCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRzFEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUF1RnJCOztPQUVHO0lBQ0g7UUF6RkE7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsU0FBSSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV2RDs7V0FFRztRQUNjLGdCQUFXLEdBQWtCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVwRTs7V0FFRztRQUNjLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXpEOztXQUVHO1FBQ2MsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6Qzs7V0FFRztRQUNjLG1CQUFjLEdBQVksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ2MsY0FBUyxHQUFZLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6RDs7V0FFRztRQUNjLFlBQU8sR0FBbUIsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFeEY7O1dBRUc7UUFDYyxnQkFBVyxHQUFZLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUV0RTs7V0FFRztRQUNjLFNBQUksR0FBNkIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUMzRSxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQ2xCLE9BQU8sRUFBRSxFQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsRUFDOUIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQVcsQ0FBQyxDQUFDLENBQzFGLENBQUM7UUFFRjs7V0FFRztRQUNjLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUMxRCxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQzNCLE9BQU8sRUFBRSxFQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsRUFDakMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUM1RSxDQUFDO1FBRUY7O1dBRUc7UUFDYyx3QkFBbUIsR0FBc0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM3RSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLFlBQVksYUFBYSxDQUFDLEVBQzVGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQzlCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUMsK0RBQStEO1FBQy9ELE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBeUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQ2pILEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ1gsT0FBTztnQkFDSCxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQ3pCLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxZQUFZO2dCQUM3QixPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQzNCLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUTthQUN4QixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQU1FLGdHQUFnRztRQUNoRyxJQUFJLENBQUMsV0FBVzthQUNYLGFBQWEsRUFBRTthQUNmLElBQUksQ0FDRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3ZILEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDekM7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVqQixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLFdBQVc7YUFDWCxhQUFhLEVBQUU7YUFDZixJQUFJLENBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDNUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWTtRQUNoQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvRixDQUFDO0lBRUQ7O09BRUc7SUFDSyxlQUFlO1FBQ25CLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLEdBQVU7UUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVM7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1YsT0FBTyxhQUFhLENBQUM7WUFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2QsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2SSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxHQUFVO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBeEtRLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXQV9MT0NBTF9TVE9SQUdFIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQgeyBmaWx0ZXJCeUtleSwgU3RvcmFnZVNlcnZpY2UsIHRvVmFsdWUsIFdBX1NUT1JBR0VfRVZFTlQgfSBmcm9tICdAbmctd2ViLWFwaXMvc3RvcmFnZSc7XG5pbXBvcnQgeyBpc01hdGNoLCBpc1N0cmluZyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2F1dGgvc2VydmljZXMvc2MtYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFNjSVVybHMgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS11cmxzJztcbmltcG9ydCB7IElTX0JST1dTRVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgU0NfQ0FDSEVfTElGRVRJTUUsIFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU2NVVE0sIFNjVVRNUGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEgVVRNLdC80LXRgtC60L7QuSDRgdGC0YDQsNC90LjRhtGLLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY1VUTVNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0LLRi9C/0L7Qu9C90LXQvdC40Y8gSFRUUC3Qt9Cw0L/RgNC+0YHQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IFNjQXV0aFNlcnZpY2UgPSBpbmplY3QoU2NBdXRoU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9GO0YnQuNC5INC00L7RgdGC0YPQvyDQuiDQtNCw0L3QvdGL0Lwg0L4g0LzQsNGA0YjRgNGD0YLQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQvNCw0YDRiNGA0YPRgtC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEge0BsaW5rIFN0b3JhZ2V9INC4INCy0L3QtdC00YDQtdC90LjRjiDQtdCz0L4g0YfQtdGA0LXQtyBESS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlID0gaW5qZWN0KFN0b3JhZ2VTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0YHQutGA0LjQv9GCINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0LIg0LHRgNCw0YPQt9C10YDQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzQnJvd3NlcjogYm9vbGVhbiA9IGluamVjdChJU19CUk9XU0VSKTtcblxuICAgIC8qKlxuICAgICAqINCl0YDQsNC90LjQu9C40YnQtSB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlOiBTdG9yYWdlIHwgbnVsbCA9IGluamVjdChXQV9MT0NBTF9TVE9SQUdFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JLRgNC10LzRjyDQttC40LfQvdC4IFVUTSDQvNC10YLQutC4IChtcykuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1dG1MaWZlVGltZT86IG51bWJlciA9IGluamVjdChTQ19DQUNIRV9MSUZFVElNRSkudXRtO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9IFVUTS3QvNC10YLQutCwINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1dG0kOiBPYnNlcnZhYmxlPFNjVVRNIHwgbnVsbD4gPSBpbmplY3QoV0FfU1RPUkFHRV9FVkVOVCkucGlwZShcbiAgICAgICAgZmlsdGVyQnlLZXkoJ3V0bScpLFxuICAgICAgICB0b1ZhbHVlKCksXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldFVUTVBhcmFtcygpKSxcbiAgICAgICAgbWFwKCh1dG1TdHJpbmcpID0+ICh1dG1TdHJpbmcgPT09IG51bGwgPyB1dG1TdHJpbmcgOiAoSlNPTi5wYXJzZSh1dG1TdHJpbmcpIGFzIFNjVVRNKSkpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSB0aW1lc3RhbXAg0YHQvtGF0YDQsNC90LXQvdC40Y8gVVRNINCyIHtAbGluayBTdG9yYWdlfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHV0bVRpbWVzdGFtcCQgPSBpbmplY3QoV0FfU1RPUkFHRV9FVkVOVCkucGlwZShcbiAgICAgICAgZmlsdGVyQnlLZXkoJ3V0bVRpbWVzdGFtcCcpLFxuICAgICAgICB0b1ZhbHVlKCksXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldFVUTVRpbWVzdGFtcCgpKSxcbiAgICAgICAgbWFwKCh0aW1lc3RhbXApID0+IChpc1N0cmluZyh0aW1lc3RhbXApID8gTnVtYmVyKHRpbWVzdGFtcCkgOiB0aW1lc3RhbXApKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0gVVRNLdC80LXRgtC60Lgg0YHRgtGA0LDQvdC40YbRiyDQuNC3INC/0LDRgNCw0LzQtdGC0YDQvtCyINGA0L7Rg9GC0LjQvdCz0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1dG1QYXJhbXNGcm9tUm91dGUkOiBPYnNlcnZhYmxlPFNjVVRNPiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBCb29sZWFuKHRoaXMuc3RvcmFnZSkgJiYgdGhpcy5pc0Jyb3dzZXIgJiYgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuYWN0aXZhdGVkUm91dGUpLFxuICAgICAgICBzdGFydFdpdGgodGhpcy5hY3RpdmF0ZWRSb3V0ZSksXG4gICAgICAgIG1hcCgocm91dGUpID0+IHJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIGZpbHRlcigocGFyYW1zKTogcGFyYW1zIGlzIFNjVVRNUGFyYW1zID0+IHBhcmFtc1sndXRtX3NvdXJjZSddICYmIHBhcmFtc1sndXRtX21lZGl1bSddICYmIHBhcmFtc1sndXRtX2NhbXBhaWduJ10pLFxuICAgICAgICBtYXAoKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHBhcmFtcy51dG1fc291cmNlLFxuICAgICAgICAgICAgICAgIG1lZGl1bTogcGFyYW1zLnV0bV9tZWRpdW0sXG4gICAgICAgICAgICAgICAgY2FtcGFpZ246IHBhcmFtcy51dG1fY2FtcGFpZ24sXG4gICAgICAgICAgICAgICAgY29udGVudDogcGFyYW1zLnV0bV9jb250ZW50LFxuICAgICAgICAgICAgICAgIHRlcm06IHBhcmFtcy51dG1fdGVybSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NVVE1TZXJ2aWNlfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vINCf0YDQuCDQv9C+0LvRg9GH0LXQvdC40LggVVRNLdC80LXRgtC60Lgg0YHQvtGF0YDQsNC90Y/QtdC8INC10LUg0LIgU3RvcmFnZSDQuCDRgdC+0LfQtNCw0ZHQvCDQt9Cw0L/RgNC+0YEg0YHQvtGF0YDQsNC90LXQvdC40Y8g0LzQtdGC0LrQuCDQt9CwINC60LvQuNC10L3RgtC+0LwuXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBdXRoQ2hhbmdlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnV0bVBhcmFtc0Zyb21Sb3V0ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IGlzTWF0Y2gocHJldmlvdXMsIGN1cnJlbnQpKSkpLFxuICAgICAgICAgICAgICAgIHRhcCgodXRtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VVRNKHV0bSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh1dG0pID0+IHRoaXMuc2F2ZVVUTSQodXRtKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgICAgICAvLyDQo9C00LDQu9GP0LXQvCBVVE0g0L/RgNC4INCy0YvRhdC+0LTQtSDQuNC3INCw0LrQutCw0YPQvdGC0LAuXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBdXRoQ2hhbmdlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gIXN0YXRlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVVVE0oKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0YLRgNC+0YfQvdC+0LUg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LUg0L/QsNGA0LDQvNC10YLRgNC+0LIgVVRNINC40Lcge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VVRNUGFyYW1zKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLnN0b3JhZ2UpICYmIHRoaXMuaXNCcm93c2VyID8gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1dG0nKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHRgtGA0L7Rh9C90L7QtSDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtSB0aW1lc3RhbXAg0YHQvtGF0YDQsNC90LXQvdC40Y8gVVRNINC40Lcge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VVRNVGltZXN0YW1wKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLnN0b3JhZ2UpICYmIHRoaXMuaXNCcm93c2VyID8gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1dG1UaW1lc3RhbXAnKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgVVRNLdC80LXRgtC60YMg0YHRgtGA0LDQvdC40YbRiyDQsiB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXRtINCU0LDQvdC90YvQtSDQviBVVE0t0LzQtdGC0LrQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFVUTSh1dG06IFNjVVRNKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2UgJiYgdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgndXRtJywgSlNPTi5zdHJpbmdpZnkodXRtKSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ3V0bVRpbWVzdGFtcCcsIEpTT04uc3RyaW5naWZ5KERhdGUubm93KCkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCIFVUTS3QvNC10YLQutGDINGB0YLRgNCw0L3QuNGG0Ysg0LjQtyB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVVUTSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmFnZSAmJiB0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKCd1dG0nKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgndXRtVGltZXN0YW1wJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LTQsNC90L3Ri9GFINC+IFVUTS3QvNC10YLQutC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRVVE0kKCk6IE9ic2VydmFibGU8U2NVVE0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgICAgIHV0bTogdGhpcy51dG0kLFxuICAgICAgICAgICAgdGltZXN0YW1wOiB0aGlzLnV0bVRpbWVzdGFtcCQsXG4gICAgICAgIH0pLnBpcGUobWFwKCh7IHV0bSwgdGltZXN0YW1wIH0pID0+ICghdGhpcy51dG1MaWZlVGltZSB8fCAodGltZXN0YW1wICYmIHRpbWVzdGFtcCArIHRoaXMudXRtTGlmZVRpbWUgPiBEYXRlLm5vdygpKSA/IHV0bSA6IG51bGwpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7RhdGA0LDQvdC10L3QuNGPIHtAbGluayBTY1VUTX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXRtINCU0LDQvdC90YvQtSDQviBVVE0t0LzQtdGC0LrQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZVVUTSQodXRtOiBTY1VUTSk6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L3V0bWAsIHV0bSk7XG4gICAgfVxufVxuIl19
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXRtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3V0bS9zZXJ2aWNlcy9zYy11dG0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHMUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sWUFBWTtJQXVGckI7O09BRUc7SUFDSDtRQXpGQTs7V0FFRztRQUNjLFNBQUksR0FBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakQ7O1dBRUc7UUFDYyxTQUFJLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXZEOztXQUVHO1FBQ2MsZ0JBQVcsR0FBa0IsTUFBTSxD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QztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNuQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7K0dBbkxRLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXQV9MT0NBTF9TVE9SQUdFIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQgeyBmaWx0ZXJCeUtleSwgU3RvcmFnZVNlcnZpY2UsIHRvVmFsdWUsIFdBX1NUT1JBR0VfRVZFTlQgfSBmcm9tICdAbmctd2ViLWFwaXMvc3RvcmFnZSc7XG5pbXBvcnQgeyBpc01hdGNoLCBpc1N0cmluZyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aC9zZXJ2aWNlcy9zYy1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NJVXJscyB9IGZyb20gJy4uLy4uL2NvbmZpZy9zYy1pLXVybHMnO1xuaW1wb3J0IHsgSVNfQlJPV1NFUiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBTQ19DQUNIRV9MSUZFVElNRSwgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBTY1VUTSwgU2NVVE1QYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBVVE0t0LzQtdGC0LrQvtC5INGB0YLRgNCw0L3QuNGG0YsuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjVVRNU2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDQstGL0L/QvtC70L3QtdC90LjRjyBIVFRQLdC30LDQv9GA0L7RgdC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogU2NBdXRoU2VydmljZSA9IGluamVjdChTY0F1dGhTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQv9GA0LXQtNC+0YHRgtCw0LLQu9GP0Y7RidC40Lkg0LTQvtGB0YLRg9C/INC6INC00LDQvdC90YvQvCDQviDQvNCw0YDRiNGA0YPRgtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC80LDRgNGI0YDRg9GC0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSB7QGxpbmsgU3RvcmFnZX0g0Lgg0LLQvdC10LTRgNC10L3QuNGOINC10LPQviDRh9C10YDQtdC3IERJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDRgdC60YDQuNC/0YIg0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjyDQsiDQsdGA0LDRg9C30LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyOiBib29sZWFuID0gaW5qZWN0KElTX0JST1dTRVIpO1xuXG4gICAgLyoqXG4gICAgICog0KXRgNCw0L3QuNC70LjRidC1IHtAbGluayBTdG9yYWdlfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2U6IFN0b3JhZ2UgfCBudWxsID0gaW5qZWN0KFdBX0xPQ0FMX1NUT1JBR0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQktGA0LXQvNGPINC20LjQt9C90LggVVRNINC80LXRgtC60LggKG1zKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHV0bUxpZmVUaW1lPzogbnVtYmVyID0gaW5qZWN0KFNDX0NBQ0hFX0xJRkVUSU1FKS51dG07XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0gVVRNLdC80LXRgtC60LAg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHV0bSQ6IE9ic2VydmFibGU8U2NVVE0gfCBudWxsPiA9IGluamVjdChXQV9TVE9SQUdFX0VWRU5UKS5waXBlKFxuICAgICAgICBmaWx0ZXJCeUtleSgndXRtJyksXG4gICAgICAgIHRvVmFsdWUoKSxcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuZ2V0VVRNUGFyYW1zKCkpLFxuICAgICAgICBtYXAoKHV0bVN0cmluZykgPT4gKHV0bVN0cmluZyA9PT0gbnVsbCA/IHV0bVN0cmluZyA6IChKU09OLnBhcnNlKHV0bVN0cmluZykgYXMgU2NVVE0pKSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9IHRpbWVzdGFtcCDRgdC+0YXRgNCw0L3QtdC90LjRjyBVVE0g0LIge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXRtVGltZXN0YW1wJCA9IGluamVjdChXQV9TVE9SQUdFX0VWRU5UKS5waXBlKFxuICAgICAgICBmaWx0ZXJCeUtleSgndXRtVGltZXN0YW1wJyksXG4gICAgICAgIHRvVmFsdWUoKSxcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuZ2V0VVRNVGltZXN0YW1wKCkpLFxuICAgICAgICBtYXAoKHRpbWVzdGFtcCkgPT4gKGlzU3RyaW5nKHRpbWVzdGFtcCkgPyBOdW1iZXIodGltZXN0YW1wKSA6IHRpbWVzdGFtcCkpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSBVVE0t0LzQtdGC0LrQuCDRgdGC0YDQsNC90LjRhtGLINC40Lcg0L/QsNGA0LDQvNC10YLRgNC+0LIg0YDQvtGD0YLQuNC90LPQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHV0bVBhcmFtc0Zyb21Sb3V0ZSQ6IE9ic2VydmFibGU8U2NVVE0+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IEJvb2xlYW4odGhpcy5zdG9yYWdlKSAmJiB0aGlzLmlzQnJvd3NlciAmJiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZSksXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLmFjdGl2YXRlZFJvdXRlKSxcbiAgICAgICAgbWFwKChyb3V0ZSkgPT4gcm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgZmlsdGVyKChwYXJhbXMpOiBwYXJhbXMgaXMgU2NVVE1QYXJhbXMgPT4gcGFyYW1zWyd1dG1fc291cmNlJ10gJiYgcGFyYW1zWyd1dG1fbWVkaXVtJ10gJiYgcGFyYW1zWyd1dG1fY2FtcGFpZ24nXSksXG4gICAgICAgIG1hcCgocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogcGFyYW1zLnV0bV9zb3VyY2UsXG4gICAgICAgICAgICAgICAgbWVkaXVtOiBwYXJhbXMudXRtX21lZGl1bSxcbiAgICAgICAgICAgICAgICBjYW1wYWlnbjogcGFyYW1zLnV0bV9jYW1wYWlnbixcbiAgICAgICAgICAgICAgICBjb250ZW50OiBwYXJhbXMudXRtX2NvbnRlbnQsXG4gICAgICAgICAgICAgICAgdGVybTogcGFyYW1zLnV0bV90ZXJtLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1VUTVNlcnZpY2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8g0J/RgNC4INC/0L7Qu9GD0YfQtdC90LjQuCBVVE0t0LzQtdGC0LrQuCDRgdC+0YXRgNCw0L3Rj9C10Lwg0LXQtSDQsiBTdG9yYWdlINC4INGB0L7Qt9C00LDRkdC8INC30LDQv9GA0L7RgSDRgdC+0YXRgNCw0L3QtdC90LjRjyDQvNC10YLQutC4INC30LAg0LrQu9C40LXQvdGC0L7QvC5cbiAgICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAgICAgLmdldEF1dGhDaGFuZ2UoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXRtUGFyYW1zRnJvbVJvdXRlJCksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lc3RhbXAoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHV0bSkgPT4gIXRoaXMuaXNFeGlzdGluZ1VUTSh1dG0pKSxcbiAgICAgICAgICAgICAgICB0YXAoKHV0bSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFVUTSh1dG0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodXRtKSA9PiB0aGlzLnNhdmVVVE0kKHV0bSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHRgtGA0L7Rh9C90L7QtSDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtSDQv9Cw0YDQsNC80LXRgtGA0L7QsiBVVE0g0LjQtyB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRVVE1QYXJhbXMoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3RvcmFnZSkgJiYgdGhpcy5pc0Jyb3dzZXIgPyB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3V0bScpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdGC0YDQvtGH0L3QvtC1INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1IHRpbWVzdGFtcCDRgdC+0YXRgNCw0L3QtdC90LjRjyBVVE0g0LjQtyB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRVVE1UaW1lc3RhbXAoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3RvcmFnZSkgJiYgdGhpcy5pc0Jyb3dzZXIgPyB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3V0bVRpbWVzdGFtcCcpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBVVE0t0LzQtdGC0LrRgyDRgdGC0YDQsNC90LjRhtGLINCyIHtAbGluayBTdG9yYWdlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1dG0g0JTQsNC90L3Ri9C1INC+IFVUTS3QvNC10YLQutC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0VVRNKHV0bTogU2NVVE0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmFnZSAmJiB0aGlzLmlzQnJvd3NlciAmJiAhdGhpcy5pc0V4aXN0aW5nVVRNKHV0bSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgndXRtJywgSlNPTi5zdHJpbmdpZnkodXRtKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiBVVE0t0LzQtdGC0LrRgyDRgdGC0YDQsNC90LjRhtGLINC40Lcge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVVVE0oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2UgJiYgdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgndXRtJyk7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oJ3V0bVRpbWVzdGFtcCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC00LDQvdC90YvRhSDQviBVVE0t0LzQtdGC0LrQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VVRNJCgpOiBPYnNlcnZhYmxlPFNjVVRNIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICB1dG06IHRoaXMudXRtJCxcbiAgICAgICAgICAgIHRpbWVzdGFtcDogdGhpcy51dG1UaW1lc3RhbXAkLFxuICAgICAgICB9KS5waXBlKG1hcCgoeyB1dG0sIHRpbWVzdGFtcCB9KSA9PiAoIXRoaXMudXRtTGlmZVRpbWUgfHwgKHRpbWVzdGFtcCAmJiB0aW1lc3RhbXAgKyB0aGlzLnV0bUxpZmVUaW1lID4gRGF0ZS5ub3coKSkgPyB1dG0gOiBudWxsKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0YXRgNCw0L3QtdC90LjRjyB7QGxpbmsgU2NVVE19LlxuICAgICAqXG4gICAgICogQHBhcmFtIHV0bSDQlNCw0L3QvdGL0LUg0L4gVVRNLdC80LXRgtC60LUuXG4gICAgICovXG4gICAgcHVibGljIHNhdmVVVE0kKHV0bTogU2NVVE0pOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS91dG1gLCB1dG0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0YHRg9GJ0LXRgdGC0LLRg9C10YIg0LvQuCDRg9C20LUg0YHQvtGF0YDQsNC90LXQvdC90LDRjyBVVE0t0LzQtdGC0LrQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1dG0g0JTQsNC90L3Ri9C1INC+IFVUTS3QvNC10YLQutC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNFeGlzdGluZ1VUTSh1dG06IFNjVVRNKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVVRNID0gdGhpcy5nZXRVVE1QYXJhbXMoKTtcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nVVRNID8gaXNNYXRjaCh1dG0sIEpTT04ucGFyc2UoZXhpc3RpbmdVVE0pIGFzIFNjVVRNKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiB0aW1lc3RhbXAg0YHQvtGF0YDQsNC90LXQvdC40Y8gVVRNINCyIHtAbGluayBTdG9yYWdlfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVzdGFtcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VVRNUGFyYW1zKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgndXRtVGltZXN0YW1wJywgSlNPTi5zdHJpbmdpZnkoRGF0ZS5ub3coKSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|