@myclub_se/data-access 2.5.8 → 2.5.10
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/esm2020/lib/models/activity.mjs +4 -4
- package/esm2020/lib/services/booking-calendar.service.mjs +55 -1
- package/fesm2015/myclub_se-data-access.mjs +57 -3
- package/fesm2015/myclub_se-data-access.mjs.map +1 -1
- package/fesm2020/myclub_se-data-access.mjs +57 -3
- package/fesm2020/myclub_se-data-access.mjs.map +1 -1
- package/lib/services/booking-calendar.service.d.ts +3 -0
- package/package.json +1 -1
|
@@ -60,13 +60,13 @@ export class Activity {
|
|
|
60
60
|
end_time: new FormControl(activity?.end_time || '', [Validators.required]),
|
|
61
61
|
file: new FormControl(''),
|
|
62
62
|
invitation_text: new FormControl(activity?.invitation_text || ''),
|
|
63
|
-
invite_first_days: new FormControl(activity?.invite_first_days
|
|
63
|
+
invite_first_days: new FormControl(Number.isInteger(activity?.invite_first_days) ? activity?.invite_first_days : 7),
|
|
64
64
|
invite_groups: new FormControl(activity?.invite_groups || []),
|
|
65
65
|
invite_hide_before_sent: new FormControl(typeof activity?.invite_hide_before_sent !== 'undefined' ? activity?.invite_hide_before_sent : false),
|
|
66
66
|
invite_last_response_date: new FormControl(activity?.invite_last_response_date || ''),
|
|
67
67
|
invite_remind: new FormControl(activity?.invite_remind || 0),
|
|
68
68
|
invite_remind_receivers: new FormControl(activity?.invite_remind_receivers || ''),
|
|
69
|
-
invite_second_days: new FormControl(activity?.invite_second_days
|
|
69
|
+
invite_second_days: new FormControl(Number.isInteger(activity?.invite_second_days) ? activity?.invite_second_days : 2),
|
|
70
70
|
invite_settings: new FormControl(activity?.invite_settings || ''),
|
|
71
71
|
last_response_date: new FormControl(activity?.last_response_date || ''),
|
|
72
72
|
max_num_attendants: new FormControl(activity?.max_num_attendants || 0),
|
|
@@ -74,7 +74,7 @@ export class Activity {
|
|
|
74
74
|
meet_up_place: new FormControl(activity?.meet_up_place || ''),
|
|
75
75
|
meet_up_time: new FormControl(activity?.meet_up_time || 0),
|
|
76
76
|
repeat: new FormControl(activity?.repeat || 'none'),
|
|
77
|
-
repeat_num: new FormControl(activity?.repeat_num
|
|
77
|
+
repeat_num: new FormControl(Number.isInteger(activity?.repeat_num) ? activity?.repeat_num : 6),
|
|
78
78
|
repeat_to_day: new FormControl(activity?.repeat_to_day || ''),
|
|
79
79
|
repeat_type: new FormControl(activity?.repeat_type || ''),
|
|
80
80
|
show_other_invited: new FormControl(activity?.show_other_invited || 'all'),
|
|
@@ -85,4 +85,4 @@ export class Activity {
|
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL21vZGVscy9hY3Rpdml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxNQUFNLE9BQU8sUUFBUTtJQTRDbkIsWUFBbUIsRUFBVSxFQUFTLGlCQUFnQyxFQUFTLGdCQUF3QixFQUNwRixPQUFlLEVBQVMsV0FBbUIsRUFBUyxPQUFlLEVBQ25FLGlCQUF5QixFQUFTLGtCQUEwQixFQUM1RCxXQUFvQixFQUFTLGFBQXFCLEVBQVMsT0FBZSxFQUMxRSxzQkFBOEIsRUFBUyxHQUFXLEVBQVMsV0FBbUIsRUFDOUUsUUFBZ0IsRUFBUyxJQUFtQixFQUFTLGVBQXVCLEVBQzVFLGlCQUF5QixFQUFTLGFBQTRCLEVBQzlELHVCQUFnQyxFQUFTLHlCQUF3QyxFQUNqRixhQUFxQixFQUFTLHVCQUErQixFQUFTLGtCQUEwQixFQUNoRyxlQUF1QixFQUFTLGVBQTRDLEVBQzVFLGtCQUEwQixFQUFTLGtCQUEwQixFQUM3RCx1QkFBK0IsRUFBUyxhQUFxQixFQUFTLFlBQW9CLEVBQzFGLG9CQUE0QixFQUFTLE1BQWMsRUFBUyxVQUFrQixFQUM5RSxhQUFxQixFQUFTLFdBQW1CLEVBQVMsa0JBQTBCLEVBQ3BGLFVBQWtCLEVBQVMsS0FBYSxFQUFTLE9BQWUsRUFDaEUsVUFBbUIsRUFBUyxnQkFBeUI7UUFmckQsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUNwRixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ25FLHNCQUFp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QVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNoSCxnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBVSxPQUFPLFFBQVEsRUFBRSxnQkFBZ0IsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ25JLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FtQkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZW1iZXJBY3Rpdml0eUludml0ZSB9IGZyb20gXCIuL21lbWJlci1hY3Rpdml0eS1pbnZpdGVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjbGFzcyBBY3Rpdml0eSB7XG4gIHN0YXRpYyBhc0Zvcm1Hcm91cChhY3Rpdml0eTogQWN0aXZpdHkgfCBudWxsID0gbnVsbCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoXG4gICAgICB7XG4gICAgICAgIGlkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uaWQgfHwgJycpLFxuICAgICAgICBhY3Rpdml0eV9ncm91cF9pZDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KGFjdGl2aXR5Py5hY3Rpdml0eV9ncm91cF9pZCB8fCBudWxsLCB7bm9uTnVsbGFibGU6IGZhbHNlfSksXG4gICAgICAgIGFjdGl2aXR5X3R5cGVfaWQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5hY3Rpdml0eV90eXBlX2lkIHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBjbHViX2lkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uY2x1Yl9pZCB8fCAnJyksXG4gICAgICAgIGxvY2F0aW9uX2lkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8ubG9jYXRpb25faWQgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIHRlYW1faWQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py50ZWFtX2lkIHx8ICcnKSxcbiAgICAgICAgYWN0aXZpdHlfbG9jYXRpb246IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5hY3Rpdml0eV9sb2NhdGlvbiB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgYWN0aXZpdHlfdHlwZV9uYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uYWN0aXZpdHlfdHlwZV9uYW1lIHx8ICcnKSxcbiAgICAgICAgYWxsb3dfbWF5YmU6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPih0eXBlb2YgYWN0aXZpdHk/LmFsbG93X21heWJlICE9PSAndW5kZWZpbmVkJyA/IGFjdGl2aXR5LmFsbG93X21heWJlIDogZmFsc2UpLFxuICAgICAgICBkYXk6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5kYXkgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uZGVzY3JpcHRpb24gfHwgJycpLFxuICAgICAgICBlbmRfdGltZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LmVuZF90aW1lIHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBmaWxlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyksXG4gICAgICAgIGludml0YXRpb25fdGV4dDogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/Lmludml0YXRpb25fdGV4dCB8fCAnJyksXG4gICAgICAgIGludml0ZV9maXJzdF9kYXlzOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihhY3Rpdml0eT8uaW52aXRlX2ZpcnN0X2RheXMgfHwgNyksXG4gICAgICAgIGludml0ZV9ncm91cHM6IG5ldyBGb3JtQ29udHJvbDxBcnJheTxzdHJpbmc+PihhY3Rpdml0eT8uaW52aXRlX2dyb3VwcyB8fCBbXSksXG4gICAgICAgIGludml0ZV9oaWRlX2JlZm9yZV9zZW50OiBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4odHlwZW9mIGFjdGl2aXR5Py5pbnZpdGVfaGlkZV9iZWZvcmVfc2VudCAhPT0gJ3VuZGVmaW5lZCcgPyBhY3Rpdml0eT8uaW52aXRlX2hpZGVfYmVmb3JlX3NlbnQgOiBmYWxzZSksXG4gICAgICAgIGludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5pbnZpdGVfbGFzdF9yZXNwb25zZV9kYXRlIHx8ICcnKSxcbiAgICAgICAgaW52aXRlX3JlbWluZDogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oYWN0aXZpdHk/Lmludml0ZV9yZW1pbmQgfHwgMCksXG4gICAgICAgIGludml0ZV9yZW1pbmRfcmVjZWl2ZXJzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uaW52aXRlX3JlbWluZF9yZWNlaXZlcnMgfHwgJycpLFxuICAgICAgICBpbnZpdGVfc2Vjb25kX2RheXM6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KGFjdGl2aXR5Py5pbnZpdGVfc2Vjb25kX2RheXMgfHwgMiksXG4gICAgICAgIGludml0ZV9zZXR0aW5nczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/Lmludml0ZV9zZXR0aW5ncyB8fCAnJyksXG4gICAgICAgIGxhc3RfcmVzcG9uc2VfZGF0ZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/Lmxhc3RfcmVzcG9uc2VfZGF0ZSB8fCAnJyksXG4gICAgICAgIG1heF9udW1fYXR0ZW5kYW50czogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oYWN0aXZpdHk/Lm1heF9udW1fYXR0ZW5kYW50cyB8fCAwKSxcbiAgICAgICAgbWF4X251bV9hdHRlbmRhbnRzX3R5cGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5tYXhfbnVtX2F0dGVuZGFudHNfdHlwZSB8fCAnb25seV9wYXJ0aWNpcGFudHMnKSxcbiAgICAgICAgbWVldF91cF9wbGFjZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/Lm1lZXRfdXBfcGxhY2UgfHwgJycpLFxuICAgICAgICBtZWV0X3VwX3RpbWU6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KGFjdGl2aXR5Py5tZWV0X3VwX3RpbWUgfHwgMCksXG4gICAgICAgIHJlcGVhdDogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LnJlcGVhdCB8fCAnbm9uZScpLFxuICAgICAgICByZXBlYXRfbnVtOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihhY3Rpdml0eT8ucmVwZWF0X251bSB8fCA2KSxcbiAgICAgICAgcmVwZWF0X3RvX2RheTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LnJlcGVhdF90b19kYXkgfHwgJycpLFxuICAgICAgICByZXBlYXRfdHlwZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LnJlcGVhdF90eXBlIHx8ICcnKSxcbiAgICAgICAgc2hvd19vdGhlcl9pbnZpdGVkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uc2hvd19vdGhlcl9pbnZpdGVkIHx8ICdhbGwnKSxcbiAgICAgICAgc3RhcnRfdGltZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LnN0YXJ0X3RpbWUgfHwnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgdGl0bGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py50aXRsZSB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgdXNlX2ludml0ZTogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KHR5cGVvZiBhY3Rpdml0eT8udXNlX2ludml0ZSAhPT0gJ3VuZGVmaW5lZCcgPyBhY3Rpdml0eT8udXNlX2ludml0ZSA6IGZhbHNlKSxcbiAgICAgICAgdXBkYXRlX3JlcGVhdGluZzogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KHR5cGVvZiBhY3Rpdml0eT8udXBkYXRlX3JlcGVhdGluZyAhPT0gJ3VuZGVmaW5lZCcgPyBhY3Rpdml0eT8udXBkYXRlX3JlcGVhdGluZyA6IGZhbHNlKVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IHN0cmluZywgcHVibGljIGFjdGl2aXR5X2dyb3VwX2lkOiBzdHJpbmcgfCBudWxsLCBwdWJsaWMgYWN0aXZpdHlfdHlwZV9pZDogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgY2x1Yl9pZDogc3RyaW5nLCBwdWJsaWMgbG9jYXRpb25faWQ6IHN0cmluZywgcHVibGljIHRlYW1faWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIGFjdGl2aXR5X2xvY2F0aW9uOiBzdHJpbmcsIHB1YmxpYyBhY3Rpdml0eV90eXBlX25hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIGFsbG93X21heWJlOiBib29sZWFuLCBwdWJsaWMgY2FsZW5kYXJfbmFtZTogc3RyaW5nLCBwdWJsaWMgY3JlYXRlZDogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgY3VycmVudF9udW1fYXR0ZW5kYW50czogbnVtYmVyLCBwdWJsaWMgZGF5OiBzdHJpbmcsIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgZW5kX3RpbWU6IHN0cmluZywgcHVibGljIGZpbGU6IHN0cmluZyB8IG51bGwsIHB1YmxpYyBpbnZpdGF0aW9uX3RleHQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIGludml0ZV9maXJzdF9kYXlzOiBudW1iZXIsIHB1YmxpYyBpbnZpdGVfZ3JvdXBzOiBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgICBwdWJsaWMgaW52aXRlX2hpZGVfYmVmb3JlX3NlbnQ6IGJvb2xlYW4sIHB1YmxpYyBpbnZpdGVfbGFzdF9yZXNwb25zZV9kYXRlOiBzdHJpbmcgfCBudWxsLFxuICAgICAgICAgICAgICBwdWJsaWMgaW52aXRlX3JlbWluZDogbnVtYmVyLCBwdWJsaWMgaW52aXRlX3JlbWluZF9yZWNlaXZlcnM6IHN0cmluZywgcHVibGljIGludml0ZV9zZWNvbmRfZGF5czogbnVtYmVyLFxuICAgICAgICAgICAgICBwdWJsaWMgaW52aXRlX3NldHRpbmdzOiBzdHJpbmcsIHB1YmxpYyBpbnZpdGVkX21lbWJlcnM6IEFycmF5PE1lbWJlckFjdGl2aXR5SW52aXRlPixcbiAgICAgICAgICAgICAgcHVibGljIGxhc3RfcmVzcG9uc2VfZGF0ZTogc3RyaW5nLCBwdWJsaWMgbWF4X251bV9hdHRlbmRhbnRzOiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBtYXhfbnVtX2F0dGVuZGFudHNfdHlwZTogc3RyaW5nLCBwdWJsaWMgbWVldF91cF9wbGFjZTogc3RyaW5nLCBwdWJsaWMgbWVldF91cF90aW1lOiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBtZWV0X3VwX3RpbWVfZGlzcGxheTogc3RyaW5nLCBwdWJsaWMgcmVwZWF0OiBzdHJpbmcsIHB1YmxpYyByZXBlYXRfbnVtOiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyByZXBlYXRfdG9fZGF5OiBzdHJpbmcsIHB1YmxpYyByZXBlYXRfdHlwZTogc3RyaW5nLCBwdWJsaWMgc2hvd19vdGhlcl9pbnZpdGVkOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBzdGFydF90aW1lOiBzdHJpbmcsIHB1YmxpYyB0aXRsZTogc3RyaW5nLCBwdWJsaWMgdXBkYXRlZDogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgdXNlX2ludml0ZTogYm9vbGVhbiwgcHVibGljIHVwZGF0ZV9yZXBlYXRpbmc6IGJvb2xlYW4pIHtcbiAgfVxufVxuIl19
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL21vZGVscy9hY3Rpdml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxNQUFNLE9BQU8sUUFBUTtJQTRDbkIsWUFBbUIsRUFBVSxFQUFTLGlCQUFnQyxFQUFTLGdCQUF3QixFQUNwRixPQUFlLEVBQVMsV0FBbUIsRUFBUyxPQUFlLEVBQ25FLGlCQUF5QixFQUFTLGtCQUEwQixFQUM1RCxXQUFvQixFQUFTLGFBQXFCLEVBQVMsT0FBZSxFQUMxRSxzQkFBOEIsRUFBUyxHQUFXLEVBQVMsV0FBbUIsRUFDOUUsUUFBZ0IsRUFBUyxJQUFtQixFQUFTLGVBQXVCLEVBQzVFLGlCQUF5QixFQUFTLGFBQTRCLEVBQzlELHVCQUFnQyxFQUFTLHlCQUF3QyxFQUNqRixhQUFxQixFQUFTLHVCQUErQixFQUFTLGtCQUEwQixFQUNoRyxlQUF1QixFQUFTLGVBQTRDLEVBQzVFLGtCQUEwQixFQUFTLGtCQUEwQixFQUM3RCx1QkFBK0IsRUFBUyxhQUFxQixFQUFTLFlBQW9CLEVBQzFGLG9CQUE0QixFQUFTLE1BQWMsRUFBUyxVQUFrQixFQUM5RSxhQUFxQixFQUFTLFdBQW1CLEVBQVMsa0JBQTBCLEVBQ3BGLFVBQWtCLEVBQVMsS0FBYSxFQUFTLE9BQWUsRUFDaEUsVUFBbUIsRUFBUyxnQkFBeUI7UUFmckQsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUNwRixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ25FLHNCQUFp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LENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JGLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBUyxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1RSxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQVUsT0FBTyxRQUFRLEVBQUUsVUFBVSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2hILGdCQUFnQixFQUFFLElBQUksV0FBVyxDQUFVLE9BQU8sUUFBUSxFQUFFLGdCQUFnQixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDbkksQ0FDRixDQUFDO0lBQ0osQ0FBQztDQW1CRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbWJlckFjdGl2aXR5SW52aXRlIH0gZnJvbSBcIi4vbWVtYmVyLWFjdGl2aXR5LWludml0ZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5IHtcbiAgc3RhdGljIGFzRm9ybUdyb3VwKGFjdGl2aXR5OiBBY3Rpdml0eSB8IG51bGwgPSBudWxsKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChcbiAgICAgIHtcbiAgICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5pZCB8fCAnJyksXG4gICAgICAgIGFjdGl2aXR5X2dyb3VwX2lkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4oYWN0aXZpdHk/LmFjdGl2aXR5X2dyb3VwX2lkIHx8IG51bGwsIHtub25OdWxsYWJsZTogZmFsc2V9KSxcbiAgICAgICAgYWN0aXZpdHlfdHlwZV9pZDogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LmFjdGl2aXR5X3R5cGVfaWQgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIGNsdWJfaWQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5jbHViX2lkIHx8ICcnKSxcbiAgICAgICAgbG9jYXRpb25faWQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5sb2NhdGlvbl9pZCB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgdGVhbV9pZDogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LnRlYW1faWQgfHwgJycpLFxuICAgICAgICBhY3Rpdml0eV9sb2NhdGlvbjogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LmFjdGl2aXR5X2xvY2F0aW9uIHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBhY3Rpdml0eV90eXBlX25hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5hY3Rpdml0eV90eXBlX25hbWUgfHwgJycpLFxuICAgICAgICBhbGxvd19tYXliZTogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KHR5cGVvZiBhY3Rpdml0eT8uYWxsb3dfbWF5YmUgIT09ICd1bmRlZmluZWQnID8gYWN0aXZpdHkuYWxsb3dfbWF5YmUgOiBmYWxzZSksXG4gICAgICAgIGRheTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LmRheSB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5kZXNjcmlwdGlvbiB8fCAnJyksXG4gICAgICAgIGVuZF90aW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uZW5kX3RpbWUgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIGZpbGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICAgICAgaW52aXRhdGlvbl90ZXh0OiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uaW52aXRhdGlvbl90ZXh0IHx8ICcnKSxcbiAgICAgICAgaW52aXRlX2ZpcnN0X2RheXM6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KE51bWJlci5pc0ludGVnZXIoYWN0aXZpdHk/Lmludml0ZV9maXJzdF9kYXlzKSA/IGFjdGl2aXR5Py5pbnZpdGVfZmlyc3RfZGF5cyBhcyBudW1iZXIgOiA3KSxcbiAgICAgICAgaW52aXRlX2dyb3VwczogbmV3IEZvcm1Db250cm9sPEFycmF5PHN0cmluZz4+KGFjdGl2aXR5Py5pbnZpdGVfZ3JvdXBzIHx8IFtdKSxcbiAgICAgICAgaW52aXRlX2hpZGVfYmVmb3JlX3NlbnQ6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPih0eXBlb2YgYWN0aXZpdHk/Lmludml0ZV9oaWRlX2JlZm9yZV9zZW50ICE9PSAndW5kZWZpbmVkJyA/IGFjdGl2aXR5Py5pbnZpdGVfaGlkZV9iZWZvcmVfc2VudCA6IGZhbHNlKSxcbiAgICAgICAgaW52aXRlX2xhc3RfcmVzcG9uc2VfZGF0ZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/Lmludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGUgfHwgJycpLFxuICAgICAgICBpbnZpdGVfcmVtaW5kOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihhY3Rpdml0eT8uaW52aXRlX3JlbWluZCB8fCAwKSxcbiAgICAgICAgaW52aXRlX3JlbWluZF9yZWNlaXZlcnM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5pbnZpdGVfcmVtaW5kX3JlY2VpdmVycyB8fCAnJyksXG4gICAgICAgIGludml0ZV9zZWNvbmRfZGF5czogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oTnVtYmVyLmlzSW50ZWdlcihhY3Rpdml0eT8uaW52aXRlX3NlY29uZF9kYXlzKSA/IGFjdGl2aXR5Py5pbnZpdGVfc2Vjb25kX2RheXMgYXMgbnVtYmVyIDogMiksXG4gICAgICAgIGludml0ZV9zZXR0aW5nczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/Lmludml0ZV9zZXR0aW5ncyB8fCAnJyksXG4gICAgICAgIGxhc3RfcmVzcG9uc2VfZGF0ZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/Lmxhc3RfcmVzcG9uc2VfZGF0ZSB8fCAnJyksXG4gICAgICAgIG1heF9udW1fYXR0ZW5kYW50czogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oYWN0aXZpdHk/Lm1heF9udW1fYXR0ZW5kYW50cyB8fCAwKSxcbiAgICAgICAgbWF4X251bV9hdHRlbmRhbnRzX3R5cGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5tYXhfbnVtX2F0dGVuZGFudHNfdHlwZSB8fCAnb25seV9wYXJ0aWNpcGFudHMnKSxcbiAgICAgICAgbWVldF91cF9wbGFjZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/Lm1lZXRfdXBfcGxhY2UgfHwgJycpLFxuICAgICAgICBtZWV0X3VwX3RpbWU6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KGFjdGl2aXR5Py5tZWV0X3VwX3RpbWUgfHwgMCksXG4gICAgICAgIHJlcGVhdDogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LnJlcGVhdCB8fCAnbm9uZScpLFxuICAgICAgICByZXBlYXRfbnVtOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihOdW1iZXIuaXNJbnRlZ2VyKGFjdGl2aXR5Py5yZXBlYXRfbnVtKSA/IGFjdGl2aXR5Py5yZXBlYXRfbnVtIGFzIG51bWJlciA6IDYpLFxuICAgICAgICByZXBlYXRfdG9fZGF5OiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8ucmVwZWF0X3RvX2RheSB8fCAnJyksXG4gICAgICAgIHJlcGVhdF90eXBlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8ucmVwZWF0X3R5cGUgfHwgJycpLFxuICAgICAgICBzaG93X290aGVyX2ludml0ZWQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KGFjdGl2aXR5Py5zaG93X290aGVyX2ludml0ZWQgfHwgJ2FsbCcpLFxuICAgICAgICBzdGFydF90aW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihhY3Rpdml0eT8uc3RhcnRfdGltZSB8fCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICB0aXRsZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oYWN0aXZpdHk/LnRpdGxlIHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICB1c2VfaW52aXRlOiBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4odHlwZW9mIGFjdGl2aXR5Py51c2VfaW52aXRlICE9PSAndW5kZWZpbmVkJyA/IGFjdGl2aXR5Py51c2VfaW52aXRlIDogZmFsc2UpLFxuICAgICAgICB1cGRhdGVfcmVwZWF0aW5nOiBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4odHlwZW9mIGFjdGl2aXR5Py51cGRhdGVfcmVwZWF0aW5nICE9PSAndW5kZWZpbmVkJyA/IGFjdGl2aXR5Py51cGRhdGVfcmVwZWF0aW5nIDogZmFsc2UpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpZDogc3RyaW5nLCBwdWJsaWMgYWN0aXZpdHlfZ3JvdXBfaWQ6IHN0cmluZyB8IG51bGwsIHB1YmxpYyBhY3Rpdml0eV90eXBlX2lkOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBjbHViX2lkOiBzdHJpbmcsIHB1YmxpYyBsb2NhdGlvbl9pZDogc3RyaW5nLCBwdWJsaWMgdGVhbV9pZDogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgYWN0aXZpdHlfbG9jYXRpb246IHN0cmluZywgcHVibGljIGFjdGl2aXR5X3R5cGVfbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgYWxsb3dfbWF5YmU6IGJvb2xlYW4sIHB1YmxpYyBjYWxlbmRhcl9uYW1lOiBzdHJpbmcsIHB1YmxpYyBjcmVhdGVkOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBjdXJyZW50X251bV9hdHRlbmRhbnRzOiBudW1iZXIsIHB1YmxpYyBkYXk6IHN0cmluZywgcHVibGljIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBlbmRfdGltZTogc3RyaW5nLCBwdWJsaWMgZmlsZTogc3RyaW5nIHwgbnVsbCwgcHVibGljIGludml0YXRpb25fdGV4dDogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgaW52aXRlX2ZpcnN0X2RheXM6IG51bWJlciwgcHVibGljIGludml0ZV9ncm91cHM6IEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICAgIHB1YmxpYyBpbnZpdGVfaGlkZV9iZWZvcmVfc2VudDogYm9vbGVhbiwgcHVibGljIGludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGU6IHN0cmluZyB8IG51bGwsXG4gICAgICAgICAgICAgIHB1YmxpYyBpbnZpdGVfcmVtaW5kOiBudW1iZXIsIHB1YmxpYyBpbnZpdGVfcmVtaW5kX3JlY2VpdmVyczogc3RyaW5nLCBwdWJsaWMgaW52aXRlX3NlY29uZF9kYXlzOiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBpbnZpdGVfc2V0dGluZ3M6IHN0cmluZywgcHVibGljIGludml0ZWRfbWVtYmVyczogQXJyYXk8TWVtYmVyQWN0aXZpdHlJbnZpdGU+LFxuICAgICAgICAgICAgICBwdWJsaWMgbGFzdF9yZXNwb25zZV9kYXRlOiBzdHJpbmcsIHB1YmxpYyBtYXhfbnVtX2F0dGVuZGFudHM6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIG1heF9udW1fYXR0ZW5kYW50c190eXBlOiBzdHJpbmcsIHB1YmxpYyBtZWV0X3VwX3BsYWNlOiBzdHJpbmcsIHB1YmxpYyBtZWV0X3VwX3RpbWU6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIG1lZXRfdXBfdGltZV9kaXNwbGF5OiBzdHJpbmcsIHB1YmxpYyByZXBlYXQ6IHN0cmluZywgcHVibGljIHJlcGVhdF9udW06IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIHJlcGVhdF90b19kYXk6IHN0cmluZywgcHVibGljIHJlcGVhdF90eXBlOiBzdHJpbmcsIHB1YmxpYyBzaG93X290aGVyX2ludml0ZWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIHN0YXJ0X3RpbWU6IHN0cmluZywgcHVibGljIHRpdGxlOiBzdHJpbmcsIHB1YmxpYyB1cGRhdGVkOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyB1c2VfaW52aXRlOiBib29sZWFuLCBwdWJsaWMgdXBkYXRlX3JlcGVhdGluZzogYm9vbGVhbikge1xuICB9XG59XG4iXX0=
|
|
@@ -9,6 +9,7 @@ const CLUB_BOOKING_CALENDAR_SLOTS_PATH = ':clubId/activities/slots/';
|
|
|
9
9
|
const CLUB_BOOKING_CALENDAR_SLOTS_APPLICATION_TIMES_PATH = ':clubId/activities/slots/application-times/';
|
|
10
10
|
const CLUB_BOOKING_CALENDAR_SLOTS_COPY_PATH = ':clubId/activities/slots/copy/';
|
|
11
11
|
const CLUB_BOOKING_CALENDAR_SLOTS_CLEAR_PATH = ':clubId/activities/slots/clear/';
|
|
12
|
+
const CLUB_BOOKING_CALENDAR_SLOTS_SYNC_PATH = ':clubId/activities/slots/sync/';
|
|
12
13
|
const CLUB_BOOKING_CALENDAR_SLOT_PATH = ':clubId/activities/slots/:id/';
|
|
13
14
|
const CLUB_BOOKING_CALENDAR_REPEATABLE_SLOT_PATH = ':clubId/activities/slots/:id/all/';
|
|
14
15
|
const CLUB_BOOKING_CALENDAR_SLOT_SESSIONS_PATH = ':clubId/activities/sessions/';
|
|
@@ -17,6 +18,7 @@ const CLUB_BOOKING_SETTINGS_PATH = ':clubId/activities/booking-settings/';
|
|
|
17
18
|
const CLUB_BOOKING_CALENDAR_APPLICATION_TIME_PATH = ':clubId/activities/application-times/:id/';
|
|
18
19
|
const TEAM_BOOKING_CALENDARS_PATH = ':teamId/activities/calendars/';
|
|
19
20
|
const TEAM_BOOKING_CALENDAR_SLOTS_PATH = ':teamId/activities/slots/';
|
|
21
|
+
const TEAM_BOOKING_CALENDAR_SLOTS_SYNC_PATH = ':teamId/activities/slots/sync/';
|
|
20
22
|
const TEAM_BOOKING_CALENDAR_SLOTS_APPLICATION_TIMES_PATH = ':teamId/activities/slots/application-times/';
|
|
21
23
|
const TEAM_BOOKING_SETTINGS_PATH = ':teamId/activities/booking-settings/';
|
|
22
24
|
const TEAM_BOOKING_CALENDAR_SLOT_SESSIONS_PATH = ':teamId/activities/sessions/';
|
|
@@ -258,6 +260,58 @@ export class BookingCalendarService {
|
|
|
258
260
|
params,
|
|
259
261
|
});
|
|
260
262
|
}
|
|
263
|
+
syncBookingCalendarSlots(role, clubOrTeamId, currentWeekStartDate, weekRelativeIndexes, startDate = null, endDate = null, calendarIds = null, locationIds = null, teamIds = null) {
|
|
264
|
+
if (role == Role.ClubAdmin) {
|
|
265
|
+
return this.syncClubBookingCalendarSlots(clubOrTeamId, currentWeekStartDate, weekRelativeIndexes, startDate, endDate, calendarIds, locationIds, teamIds);
|
|
266
|
+
}
|
|
267
|
+
return this.syncTeamBookingCalendarSlots(clubOrTeamId, currentWeekStartDate, weekRelativeIndexes, startDate, endDate, calendarIds, locationIds, teamIds);
|
|
268
|
+
}
|
|
269
|
+
syncClubBookingCalendarSlots(clubId, currentWeekStartDate, weekRelativeIndexes, startDate = null, endDate = null, calendarIds = null, locationIds = null, teamIds = null) {
|
|
270
|
+
const params = { limit: 'null' };
|
|
271
|
+
if (startDate) {
|
|
272
|
+
params['day__gte'] = startDate;
|
|
273
|
+
}
|
|
274
|
+
if (endDate) {
|
|
275
|
+
params['day__lte'] = endDate;
|
|
276
|
+
}
|
|
277
|
+
if (calendarIds && calendarIds.length) {
|
|
278
|
+
params['calendar_id'] = calendarIds.join(',');
|
|
279
|
+
}
|
|
280
|
+
if (locationIds && locationIds.length) {
|
|
281
|
+
params['location_id'] = locationIds.join(',');
|
|
282
|
+
}
|
|
283
|
+
if (teamIds && teamIds.length) {
|
|
284
|
+
params['team_id'] = teamIds.join(',');
|
|
285
|
+
}
|
|
286
|
+
return this.apiService
|
|
287
|
+
.postResourceNoResponse(Role.ClubAdmin, CLUB_BOOKING_CALENDAR_SLOTS_SYNC_PATH, { clubId }, {
|
|
288
|
+
current_week_start_date: currentWeekStartDate,
|
|
289
|
+
week_relative_indexes: weekRelativeIndexes,
|
|
290
|
+
}, { params });
|
|
291
|
+
}
|
|
292
|
+
syncTeamBookingCalendarSlots(teamId, currentWeekStartDate, weekRelativeIndexes, startDate = null, endDate = null, calendarIds = null, locationIds = null, teamIds = null) {
|
|
293
|
+
const params = { limit: 'null' };
|
|
294
|
+
if (startDate) {
|
|
295
|
+
params['day__gte'] = startDate;
|
|
296
|
+
}
|
|
297
|
+
if (endDate) {
|
|
298
|
+
params['day__lte'] = endDate;
|
|
299
|
+
}
|
|
300
|
+
if (calendarIds && calendarIds.length) {
|
|
301
|
+
params['calendar_id'] = calendarIds.join(',');
|
|
302
|
+
}
|
|
303
|
+
if (locationIds && locationIds.length) {
|
|
304
|
+
params['location_id'] = locationIds.join(',');
|
|
305
|
+
}
|
|
306
|
+
if (teamIds && teamIds.length) {
|
|
307
|
+
params['team_id'] = teamIds.join(',');
|
|
308
|
+
}
|
|
309
|
+
return this.apiService
|
|
310
|
+
.postResourceNoResponse(Role.TeamAdmin, TEAM_BOOKING_CALENDAR_SLOTS_SYNC_PATH, { teamId }, {
|
|
311
|
+
current_week_start_date: currentWeekStartDate,
|
|
312
|
+
week_relative_indexes: weekRelativeIndexes,
|
|
313
|
+
}, { params });
|
|
314
|
+
}
|
|
261
315
|
getClubBookingCalendarSlot(clubId, id) {
|
|
262
316
|
return this.apiService
|
|
263
317
|
.getResource(bookingCalendarSlotFactory, Role.ClubAdmin, CLUB_BOOKING_CALENDAR_SLOT_PATH, { clubId, id });
|
|
@@ -423,4 +477,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
|
|
|
423
477
|
providedIn: 'root'
|
|
424
478
|
}]
|
|
425
479
|
}], ctorParameters: function () { return [{ type: i1.ApiService }]; } });
|
|
426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYWxlbmRhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zZXJ2aWNlcy9ib29raW5nLWNhbGVuZGFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBTUwsSUFBSSxHQUNMLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUMxQixpQ0FBaUMsRUFDakMsc0JBQXNCLEVBQ3ZCLE1BQU0sYUFBYSxDQUFDOzs7QUFFckIsTUFBTSwyQkFBMkIsR0FBRywrQkFBK0IsQ0FBQztBQUNwRSxNQUFNLDBCQUEwQixHQUFHLG1DQUFtQyxDQUFDO0FBQ3ZFLE1BQU0sZ0NBQWdDLEdBQUcsMkJBQTJCLENBQUM7QUFDckUsTUFBTSxrREFBa0QsR0FBRyw2Q0FBNkMsQ0FBQztBQUN6RyxNQUFNLHFDQUFxQyxHQUFHLGdDQUFnQyxDQUFDO0FBQy9FLE1BQU0sc0NBQXNDLEdBQUcsaUNBQWlDLENBQUM7QUFDakYsTUFBTSwrQkFBK0IsR0FBRywrQkFBK0IsQ0FBQztBQUN4RSxNQUFNLDBDQUEwQyxHQUFHLG1DQUFtQyxDQUFDO0FBQ3ZGLE1BQU0sd0NBQXdDLEdBQUcsOEJBQThCLENBQUM7QUFDaEYsTUFBTSx1Q0FBdUMsR0FBRyxrQ0FBa0MsQ0FBQztBQUNuRixNQUFNLDBCQUEwQixHQUFHLHNDQUFzQyxDQUFDO0FBQzFFLE1BQU0sMkNBQTJDLEdBQUcsMkNBQTJDLENBQUM7QUFFaEcsTUFBTSwyQkFBMkIsR0FBRywrQkFBK0IsQ0FBQztBQUNwRSxNQUFNLGdDQUFnQyxHQUFHLDJCQUEyQixDQUFDO0FBQ3JFLE1BQU0sa0RBQWtELEdBQUcsNkNBQTZDLENBQUM7QUFDekcsTUFBTSww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QUNOLENBQUM7SUFFRCx3Q0FBd0MsQ0FBQyxNQUFjLEVBQUUsRUFBVTtRQUNqRSxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGNBQWMsQ0FDYixJQUFJLENBQUMsU0FBUyxFQUNkLDJDQUEyQyxFQUMzQztZQUNFLE1BQU07WUFDTixFQUFFO1NBQ0gsQ0FDRixDQUFDO0lBQ04sQ0FBQzs7b0hBeHRCVSxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBcGlTZXJ2aWNlfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEJvb2tpbmdDYWxlbmRhcixcbiAgQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lLFxuICBCb29raW5nQ2FsZW5kYXJTbG90LFxuICBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgQm9va2luZ1NldHRpbmdzLFxuICBSb2xlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgYm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lRmFjdG9yeSxcbiAgYm9va2luZ0NhbGVuZGFyRmFjdG9yeSxcbiAgYm9va2luZ0NhbGVuZGFyU2xvdEZhY3RvcnksXG4gIGJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFjdG9yeSxcbiAgYm9va2luZ1NldHRpbmdzRmFjdG9yeVxufSBmcm9tIFwiLi9mYWN0b3JpZXNcIjtcblxuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9jYWxlbmRhcnMvJztcbmNvbnN0IENMVUJfQk9PS0lOR19DQUxFTkRBUl9QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9jYWxlbmRhcnMvOmlkLyc7XG5jb25zdCBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2xvdHMvJztcbmNvbnN0IENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UU19BUFBMSUNBVElPTl9USU1FU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9zbG90cy9hcHBsaWNhdGlvbi10aW1lcy8nO1xuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RTX0NPUFlfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2xvdHMvY29weS8nO1xuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RTX0NMRUFSX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL3Nsb3RzL2NsZWFyLyc7XG5jb25zdCBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9zbG90cy86aWQvJztcbmNvbnN0IENMVUJfQk9PS0lOR19DQUxFTkRBUl9SRVBFQVRBQkxFX1NMT1RfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2xvdHMvOmlkL2FsbC8nO1xuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RfU0VTU0lPTlNfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2Vzc2lvbnMvJztcbmNvbnN0IENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05fUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2Vzc2lvbnMvOmlkLyc7XG5jb25zdCBDTFVCX0JPT0tJTkdfU0VUVElOR1NfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvYm9va2luZy1zZXR0aW5ncy8nO1xuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSX0FQUExJQ0FUSU9OX1RJTUVfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvYXBwbGljYXRpb24tdGltZXMvOmlkLyc7XG5cbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUlNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvY2FsZW5kYXJzLyc7XG5jb25zdCBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvc2xvdHMvJztcbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUl9TTE9UU19BUFBMSUNBVElPTl9USU1FU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9zbG90cy9hcHBsaWNhdGlvbi10aW1lcy8nO1xuY29uc3QgVEVBTV9CT09LSU5HX1NFVFRJTkdTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2Jvb2tpbmctc2V0dGluZ3MvJztcbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05TX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3Nlc3Npb25zLyc7XG5jb25zdCBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9TRVNTSU9OX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3Nlc3Npb25zLzppZC8nO1xuXG5jb25zdCBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfQVBQTElDQVRJT05fVElNRVNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvYXBwbGljYXRpb24tdGltZXMvJztcbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUl9BUFBMSUNBVElPTl9USU1FX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2FwcGxpY2F0aW9uLXRpbWVzLzppZC8nO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tpbmdDYWxlbmRhclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UpIHtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBCb29raW5nIGNhbGVuZGFyXG5cbiAgY3JlYXRlQ2x1YkJvb2tpbmdDYWxlbmRhcihjbHViSWQ6IHN0cmluZywgY2FsZW5kYXI6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyPikge1xuICAgIGRlbGV0ZSBjYWxlbmRhci5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhclxuICAgICAgKVxuICB9XG5cbiAgZ2V0Qm9va2luZ0NhbGVuZGFycyhyb2xlOiBSb2xlLCBjbHViT3JUZWFtSWQ6IHN0cmluZywgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBpZiAocm9sZSA9PSBSb2xlLkNsdWJBZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2x1YkJvb2tpbmdDYWxlbmRhcnMoY2x1Yk9yVGVhbUlkLCBuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUJvb2tpbmdDYWxlbmRhcnMoY2x1Yk9yVGVhbUlkLCBuYW1lKTtcbiAgfVxuXG4gIGdldENsdWJCb29raW5nQ2FsZW5kYXJzKGNsdWJJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChuYW1lKSB7XG4gICAgICBwYXJhbXNbJ25hbWUnXSA9IG5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhckZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJTX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldFRlYW1Cb29raW5nQ2FsZW5kYXJzKHRlYW1JZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChuYW1lKSB7XG4gICAgICBwYXJhbXNbJ25hbWUnXSA9IG5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhckZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfQ0FMRU5EQVJTX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldENsdWJCb29raW5nQ2FsZW5kYXIoY2x1YklkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhckZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfUEFUSCxcbiAgICAgICAge2NsdWJJZCwgaWR9XG4gICAgICApXG4gIH1cblxuICB1cGRhdGVDbHViQm9va2luZ0NhbGVuZGFyKGNsdWJJZDogc3RyaW5nLCBjYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgaWQ6IGNhbGVuZGFyLmlkXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyXG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlQ2x1YkJvb2tpbmdDYWxlbmRhcihjbHViSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gQm9va2luZyBjYWxlbmRhciBzbG90XG5cbiAgY3JlYXRlQ2x1YkJvb2tpbmdDYWxlbmRhclNsb3QoY2x1YklkOiBzdHJpbmcsIHNsb3Q6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD4pIHtcbiAgICBkZWxldGUgc2xvdC5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90RmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICB9LFxuICAgICAgICBzbG90XG4gICAgICApXG4gIH1cblxuICBnZXRCb29raW5nQ2FsZW5kYXJTbG90cyhcbiAgICByb2xlOiBSb2xlLFxuICAgIGNsdWJPclRlYW1JZDogc3RyaW5nLFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgbG9jYXRpb25JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgdGVhbUlkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBoYXNPcGVuU2Vzc2lvbnM6IGJvb2xlYW4gfCBudWxsID0gbnVsbCwpIHtcbiAgICBpZiAocm9sZSA9PSBSb2xlLkNsdWJBZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2x1YkJvb2tpbmdDYWxlbmRhclNsb3RzKGNsdWJPclRlYW1JZCwgc3RhcnREYXRlLCBlbmREYXRlLCBjYWxlbmRhcklkcywgbG9jYXRpb25JZHMsIHRlYW1JZHMsIGhhc09wZW5TZXNzaW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFRlYW1Cb29raW5nQ2FsZW5kYXJTbG90cyhjbHViT3JUZWFtSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsZW5kYXJJZHMsIGxvY2F0aW9uSWRzLCB0ZWFtSWRzLCBoYXNPcGVuU2Vzc2lvbnMpXG4gIH1cblxuICBnZXRDbHViQm9va2luZ0NhbGVuZGFyU2xvdHMoXG4gICAgY2x1YklkOiBzdHJpbmcsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBsb2NhdGlvbklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICB0ZWFtSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGhhc09wZW5TZXNzaW9uczogYm9vbGVhbiB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fZ3RlJ10gPSBzdGFydERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19sdGUnXSA9IGVuZERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNhbGVuZGFySWRzICYmIGNhbGVuZGFySWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydjYWxlbmRhcl9pZCddID0gY2FsZW5kYXJJZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKGxvY2F0aW9uSWRzICYmIGxvY2F0aW9uSWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydsb2NhdGlvbl9pZCddID0gbG9jYXRpb25JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHRlYW1JZHMgJiYgdGVhbUlkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1sndGVhbV9pZCddID0gdGVhbUlkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGhhc09wZW5TZXNzaW9ucyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBwYXJhbXNbJ2hhc19vcGVuX3Nlc3Npb25zJ10gPSBTdHJpbmcoaGFzT3BlblNlc3Npb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyU2xvdEZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0VGVhbUJvb2tpbmdDYWxlbmRhclNsb3RzKFxuICAgIHRlYW1JZDogc3RyaW5nLFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgbG9jYXRpb25JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgdGVhbUlkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBoYXNPcGVuU2Vzc2lvbnM6IGJvb2xlYW4gfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2d0ZSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fbHRlJ10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIGlmIChjYWxlbmRhcklkcyAmJiBjYWxlbmRhcklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snY2FsZW5kYXJfaWQnXSA9IGNhbGVuZGFySWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbklkcyAmJiBsb2NhdGlvbklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snbG9jYXRpb25faWQnXSA9IGxvY2F0aW9uSWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmICh0ZWFtSWRzICYmIHRlYW1JZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ3RlYW1faWQnXSA9IHRlYW1JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBoYXNPcGVuU2Vzc2lvbnMgPT09ICdib29sZWFuJykge1xuICAgICAgcGFyYW1zWydoYXNfb3Blbl9zZXNzaW9ucyddID0gU3RyaW5nKGhhc09wZW5TZXNzaW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9CT09LSU5HX0NBTEVOREFSX1NMT1RTX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldEJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZVNsb3RzKHJvbGU6IFJvbGUsXG4gICAgY2x1Yk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBsb2NhdGlvbklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICB0ZWFtSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGhhc09wZW5TZXNzaW9uczogYm9vbGVhbiB8IG51bGwgPSBudWxsLCkge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lU2xvdHMoY2x1Yk9yVGVhbUlkLCBzdGFydERhdGUsIGVuZERhdGUsIGNhbGVuZGFySWRzLCBsb2NhdGlvbklkcywgdGVhbUlkcywgaGFzT3BlblNlc3Npb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZVNsb3RzKGNsdWJPclRlYW1JZCwgc3RhcnREYXRlLCBlbmREYXRlLCBjYWxlbmRhcklkcywgbG9jYXRpb25JZHMsIHRlYW1JZHMsIGhhc09wZW5TZXNzaW9ucylcbiAgfVxuXG4gIGdldENsdWJCb29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWVTbG90cyhcbiAgICBjbHViSWQ6IHN0cmluZyxcbiAgICBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGVuZERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGNhbGVuZGFySWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGxvY2F0aW9uSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIHRlYW1JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgaGFzT3BlblNlc3Npb25zOiBib29sZWFuIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19ndGUnXSA9IHN0YXJ0RGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2x0ZSddID0gZW5kRGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoY2FsZW5kYXJJZHMgJiYgY2FsZW5kYXJJZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ2NhbGVuZGFyX2lkJ10gPSBjYWxlbmRhcklkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAobG9jYXRpb25JZHMgJiYgbG9jYXRpb25JZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ2xvY2F0aW9uX2lkJ10gPSBsb2NhdGlvbklkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAodGVhbUlkcyAmJiB0ZWFtSWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWyd0ZWFtX2lkJ10gPSB0ZWFtSWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaGFzT3BlblNlc3Npb25zID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHBhcmFtc1snaGFzX29wZW5fc2Vzc2lvbnMnXSA9IFN0cmluZyhoYXNPcGVuU2Vzc2lvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90RmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UU19BUFBMSUNBVElPTl9USU1FU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRUZWFtQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lU2xvdHMoXG4gICAgdGVhbUlkOiBzdHJpbmcsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBsb2NhdGlvbklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICB0ZWFtSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGhhc09wZW5TZXNzaW9uczogYm9vbGVhbiB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fZ3RlJ10gPSBzdGFydERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19sdGUnXSA9IGVuZERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNhbGVuZGFySWRzICYmIGNhbGVuZGFySWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydjYWxlbmRhcl9pZCddID0gY2FsZW5kYXJJZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKGxvY2F0aW9uSWRzICYmIGxvY2F0aW9uSWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydsb2NhdGlvbl9pZCddID0gbG9jYXRpb25JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHRlYW1JZHMgJiYgdGVhbUlkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1sndGVhbV9pZCddID0gdGVhbUlkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGhhc09wZW5TZXNzaW9ucyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBwYXJhbXNbJ2hhc19vcGVuX3Nlc3Npb25zJ10gPSBTdHJpbmcoaGFzT3BlblNlc3Npb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyU2xvdEZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfQVBQTElDQVRJT05fVElNRVNfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgY29weUNsdWJCb29raW5nQ2FsZW5kYXJTbG90cyhcbiAgICBjbHViSWQ6IHN0cmluZyxcbiAgICB3ZWVrUmVsYXRpdmVJbmRleGVzOiBudW1iZXJbXSxcbiAgICBvbmx5Q29weVNsb3RzOiBib29sZWFuID0gZmFsc2UsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBsb2NhdGlvbklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICB0ZWFtSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGhhc09wZW5TZXNzaW9uczogYm9vbGVhbiB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fZ3RlJ10gPSBzdGFydERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19sdGUnXSA9IGVuZERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNhbGVuZGFySWRzICYmIGNhbGVuZGFySWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydjYWxlbmRhcl9pZCddID0gY2FsZW5kYXJJZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKGxvY2F0aW9uSWRzICYmIGxvY2F0aW9uSWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydsb2NhdGlvbl9pZCddID0gbG9jYXRpb25JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHRlYW1JZHMgJiYgdGVhbUlkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1sndGVhbV9pZCddID0gdGVhbUlkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGhhc09wZW5TZXNzaW9ucyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBwYXJhbXNbJ2hhc19vcGVuX3Nlc3Npb25zJ10gPSBTdHJpbmcoaGFzT3BlblNlc3Npb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlTm9SZXNwb25zZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UU19DT1BZX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgd2Vla19yZWxhdGl2ZV9pbmRleGVzOiB3ZWVrUmVsYXRpdmVJbmRleGVzLFxuICAgICAgICAgIG9ubHlfY29weV9zbG90czogb25seUNvcHlTbG90cyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBjbGVhckNsdWJCb29raW5nQ2FsZW5kYXJTbG90cyhcbiAgICBjbHViSWQ6IHN0cmluZyxcbiAgICBjdXJyZW50V2Vla1N0YXJ0RGF0ZTogc3RyaW5nLFxuICAgIHdlZWtSZWxhdGl2ZUluZGV4ZXM6IG51bWJlcltdLFxuICAgIG9ubHlEZWxldGVTZXNzaW9uczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgbG9jYXRpb25JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgdGVhbUlkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBoYXNPcGVuU2Vzc2lvbnM6IGJvb2xlYW4gfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2d0ZSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fbHRlJ10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIGlmIChjYWxlbmRhcklkcyAmJiBjYWxlbmRhcklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snY2FsZW5kYXJfaWQnXSA9IGNhbGVuZGFySWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbklkcyAmJiBsb2NhdGlvbklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snbG9jYXRpb25faWQnXSA9IGxvY2F0aW9uSWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmICh0ZWFtSWRzICYmIHRlYW1JZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ3RlYW1faWQnXSA9IHRlYW1JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBoYXNPcGVuU2Vzc2lvbnMgPT09ICdib29sZWFuJykge1xuICAgICAgcGFyYW1zWydoYXNfb3Blbl9zZXNzaW9ucyddID0gU3RyaW5nKGhhc09wZW5TZXNzaW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlV2l0aEJvZHkoXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfQ0xFQVJfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICBjdXJyZW50X3dlZWtfc3RhcnRfZGF0ZTogY3VycmVudFdlZWtTdGFydERhdGUsXG4gICAgICAgICAgICB3ZWVrX3JlbGF0aXZlX2luZGV4ZXM6IHdlZWtSZWxhdGl2ZUluZGV4ZXMsXG4gICAgICAgICAgICBvbmx5X2RlbGV0ZV9zZXNzaW9uczogb25seURlbGV0ZVNlc3Npb25zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICB9LFxuICAgICAgKVxuICB9XG5cbiAgZ2V0Q2x1YkJvb2tpbmdDYWxlbmRhclNsb3QoY2x1YklkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RfUEFUSCxcbiAgICAgICAge2NsdWJJZCwgaWR9XG4gICAgICApXG4gIH1cblxuICB1cGRhdGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdChjbHViSWQ6IHN0cmluZywgc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyU2xvdEZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGlkOiBzbG90LmlkXG4gICAgICAgIH0sXG4gICAgICAgIHNsb3RcbiAgICAgICk7XG4gIH1cblxuICBkZWxldGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdChjbHViSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZUNsdWJCb29raW5nQ2FsZW5kYXJTbG90UmVwZWF0YWJsZShjbHViSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9SRVBFQVRBQkxFX1NMT1RfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIEJvb2tpbmcgY2FsZW5kYXIgc2xvdCBzZXNzaW9uXG5cbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZTogUm9sZSwgY2x1Yk9yVGVhbUlkOiBzdHJpbmcsIHNlc3Npb246IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+KSB7XG4gICAgaWYgKHJvbGUgPT09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1Yk9yVGVhbUlkLCBzZXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlVGVhbUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKGNsdWJPclRlYW1JZCwgc2Vzc2lvbik7XG4gIH1cblxuICBjcmVhdGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1YklkOiBzdHJpbmcsIHNlc3Npb246IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+KSB7XG4gICAgZGVsZXRlIHNlc3Npb24uaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RfU0VTU0lPTlNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgfSxcbiAgICAgICAgc2Vzc2lvblxuICAgICAgKVxuICB9XG5cbiAgY3JlYXRlVGVhbUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHRlYW1JZDogc3RyaW5nLCBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPikge1xuICAgIGRlbGV0ZSBzZXNzaW9uLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05TX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHNlc3Npb25cbiAgICAgIClcbiAgfVxuXG4gIGdldENsdWJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnMoY2x1YklkOiBzdHJpbmcsIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGVuZERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2d0ZSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fbHRlJ10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9TRVNTSU9OU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRDbHViQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1YklkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05fUEFUSCxcbiAgICAgICAge2NsdWJJZCwgaWR9XG4gICAgICApXG4gIH1cblxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihyb2xlOiBSb2xlLCBjbHViT3JUZWFtSWQ6IHN0cmluZywgc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pIHtcbiAgICBpZiAocm9sZSA9PT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNsdWJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihjbHViT3JUZWFtSWQsIHNlc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51cGRhdGVUZWFtQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1Yk9yVGVhbUlkLCBzZXNzaW9uKTtcbiAgfVxuXG4gIHVwZGF0ZUNsdWJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihjbHViSWQ6IHN0cmluZywgc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05fUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBpZDogc2Vzc2lvbi5pZFxuICAgICAgICB9LFxuICAgICAgICBzZXNzaW9uXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlVGVhbUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHRlYW1JZDogc3RyaW5nLCBzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9CT09LSU5HX0NBTEVOREFSX1NMT1RfU0VTU0lPTl9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGlkOiBzZXNzaW9uLmlkXG4gICAgICAgIH0sXG4gICAgICAgIHNlc3Npb25cbiAgICAgICk7XG4gIH1cblxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihyb2xlOiBSb2xlLCBjbHViT3JUZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxldGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1Yk9yVGVhbUlkLCBpZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRlYW1Cb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihjbHViT3JUZWFtSWQsIGlkKTtcbiAgfVxuXG4gIGRlbGV0ZUNsdWJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihjbHViSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05fUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlVGVhbUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHRlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlKFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9CT09LSU5HX0NBTEVOREFSX1NMT1RfU0VTU0lPTl9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gQm9va2luZyBTZXR0aW5nXG5cbiAgZ2V0Qm9va2luZ1NldHRpbmdzKHJvbGU6IFJvbGUsIGNsdWJPclRlYW1JZDogc3RyaW5nKSB7XG4gICAgaWYgKHJvbGUgPT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsdWJCb29raW5nU2V0dGluZ3MoY2x1Yk9yVGVhbUlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUJvb2tpbmdTZXR0aW5ncyhjbHViT3JUZWFtSWQpO1xuICB9XG5cbiAgZ2V0Q2x1YkJvb2tpbmdTZXR0aW5ncyhjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYm9va2luZ1NldHRpbmdzRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19TRVRUSU5HU19QQVRILFxuICAgICAgICB7Y2x1YklkfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0VGVhbUJvb2tpbmdTZXR0aW5ncyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYm9va2luZ1NldHRpbmdzRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0lOR19TRVRUSU5HU19QQVRILFxuICAgICAgICB7dGVhbUlkfVxuICAgICAgKVxuICB9XG5cbiAgdXBkYXRlQ2x1YkJvb2tpbmdTZXR0aW5ncyhjbHViSWQ6IHN0cmluZywgYm9va2luZ1NldHRpbmdzOiBCb29raW5nU2V0dGluZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdTZXR0aW5nc0ZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfU0VUVElOR1NfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgfSxcbiAgICAgICAgYm9va2luZ1NldHRpbmdzXG4gICAgICApO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIEJvb2tpbmcgQ2FsZW5kYXIgQXBwbGljYXRpb24gVGltZXNcblxuICB1cGRhdGVDbHViQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lKGNsdWJJZDogc3RyaW5nLCBhdmFpbGFibGVUaW1lOiBCb29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWUpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZUZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfQVBQTElDQVRJT05fVElNRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGlkOiBhdmFpbGFibGVUaW1lLmlkXG4gICAgICAgIH0sXG4gICAgICAgIGF2YWlsYWJsZVRpbWVcbiAgICAgICk7XG4gIH1cblxuICBjcmVhdGVUZWFtQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lKHRlYW1JZDogc3RyaW5nLCBhdmFpbGFibGVUaW1lOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZT4pIHtcbiAgICBkZWxldGUgYXZhaWxhYmxlVGltZS5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9CT09LSU5HX0NBTEVOREFSX0FQUExJQ0FUSU9OX1RJTUVTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGF2YWlsYWJsZVRpbWVcbiAgICAgIClcbiAgfVxuXG4gIHVwZGF0ZVRlYW1Cb29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWUodGVhbUlkOiBzdHJpbmcsIGF2YWlsYWJsZVRpbWU6IEJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0lOR19DQUxFTkRBUl9BUFBMSUNBVElPTl9USU1FX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgaWQ6IGF2YWlsYWJsZVRpbWUuaWRcbiAgICAgICAgfSxcbiAgICAgICAgYXZhaWxhYmxlVGltZVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVRlYW1Cb29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWUodGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfQVBQTElDQVRJT05fVElNRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
480
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYWxlbmRhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zZXJ2aWNlcy9ib29raW5nLWNhbGVuZGFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBTUwsSUFBSSxHQUNMLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUMxQixpQ0FBaUMsRUFDakMsc0JBQXNCLEVBQ3ZCLE1BQU0sYUFBYSxDQUFDOzs7QUFFckIsTUFBTSwyQkFBMkIsR0FBRywrQkFBK0IsQ0FBQztBQUNwRSxNQUFNLDBCQUEwQixHQUFHLG1DQUFtQyxDQUFDO0FBQ3ZFLE1BQU0sZ0NBQWdDLEdBQUcsMkJBQTJCLENBQUM7QUFDckUsTUFBTSxrREFBa0QsR0FBRyw2Q0FBNkMsQ0FBQztBQUN6RyxNQUFNLHFDQUFxQyxHQUFHLGdDQUFnQyxDQUFDO0FBQy9FLE1BQU0sc0NBQXNDLEdBQUcsaUNBQWlDLENBQUM7QUFDakYsTUFBTSxxQ0FBcUMsR0FBRyxnQ0FBZ0MsQ0FBQztBQUMvRSxNQUFNLCtCQUErQixHQUFHLCtCQUErQixDQUFDO0FBQ3hFLE1BQU0sMENBQTBDLEdBQUcsbUNBQW1DLENBQUM7QUFDdkYsTUFBTSx3Q0FBd0MsR0FBRyw4QkFBOEIsQ0FBQztBQUNoRixNQUFNLHVDQUF1QyxHQUFHLGtDQUFrQyxDQUFDO0FBQ25GLE1BQU0sMEJBQTBCLEdBQUcsc0NBQXNDLENBQUM7QUFDMUUsTUFBTSwyQ0FBMkMsR0FBRywyQ0FBMkMsQ0FBQztBQUVoRyxNQUFNLDJCQUEyQixHQUFHLCtCQUErQixDQUFDO0FBQ3BFLE1BQU0sZ0NBQWdDLEdBQUcsMkJBQTJCLENBQUM7QUFDckUsTUFBTSxx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QWEsQ0FDZCxDQUFDO0lBQ04sQ0FBQztJQUVELHdDQUF3QyxDQUFDLE1BQWMsRUFBRSxhQUFzRDtRQUM3RyxPQUFPLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixZQUFZLENBQ1gscUNBQXFDLEVBQ3JDLElBQUksQ0FBQyxTQUFTLEVBQ2QsNENBQTRDLEVBQzVDO1lBQ0UsTUFBTTtTQUNQLEVBQ0QsYUFBYSxDQUNkLENBQUE7SUFDTCxDQUFDO0lBRUQsd0NBQXdDLENBQUMsTUFBYyxFQUFFLGFBQTZDO1FBQ3BHLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLHFDQUFxQyxFQUNyQyxJQUFJLENBQUMsU0FBUyxFQUNkLDJDQUEyQyxFQUMzQztZQUNFLE1BQU07WUFDTixFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUU7U0FDckIsRUFDRCxhQUFhLENBQ2QsQ0FBQztJQUNOLENBQUM7SUFFRCx3Q0FBd0MsQ0FBQyxNQUFjLEVBQUUsRUFBVTtRQUNqRSxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGNBQWMsQ0FDYixJQUFJLENBQUMsU0FBUyxFQUNkLDJDQUEyQyxFQUMzQztZQUNFLE1BQU07WUFDTixFQUFFO1NBQ0gsQ0FDRixDQUFDO0lBQ04sQ0FBQzs7b0hBcDBCVSxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBcGlTZXJ2aWNlfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEJvb2tpbmdDYWxlbmRhcixcbiAgQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lLFxuICBCb29raW5nQ2FsZW5kYXJTbG90LFxuICBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgQm9va2luZ1NldHRpbmdzLFxuICBSb2xlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgYm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lRmFjdG9yeSxcbiAgYm9va2luZ0NhbGVuZGFyRmFjdG9yeSxcbiAgYm9va2luZ0NhbGVuZGFyU2xvdEZhY3RvcnksXG4gIGJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFjdG9yeSxcbiAgYm9va2luZ1NldHRpbmdzRmFjdG9yeVxufSBmcm9tIFwiLi9mYWN0b3JpZXNcIjtcblxuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9jYWxlbmRhcnMvJztcbmNvbnN0IENMVUJfQk9PS0lOR19DQUxFTkRBUl9QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9jYWxlbmRhcnMvOmlkLyc7XG5jb25zdCBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2xvdHMvJztcbmNvbnN0IENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UU19BUFBMSUNBVElPTl9USU1FU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9zbG90cy9hcHBsaWNhdGlvbi10aW1lcy8nO1xuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RTX0NPUFlfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2xvdHMvY29weS8nO1xuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RTX0NMRUFSX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL3Nsb3RzL2NsZWFyLyc7XG5jb25zdCBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfU1lOQ19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9zbG90cy9zeW5jLyc7XG5jb25zdCBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9zbG90cy86aWQvJztcbmNvbnN0IENMVUJfQk9PS0lOR19DQUxFTkRBUl9SRVBFQVRBQkxFX1NMT1RfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2xvdHMvOmlkL2FsbC8nO1xuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RfU0VTU0lPTlNfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2Vzc2lvbnMvJztcbmNvbnN0IENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05fUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2Vzc2lvbnMvOmlkLyc7XG5jb25zdCBDTFVCX0JPT0tJTkdfU0VUVElOR1NfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvYm9va2luZy1zZXR0aW5ncy8nO1xuY29uc3QgQ0xVQl9CT09LSU5HX0NBTEVOREFSX0FQUExJQ0FUSU9OX1RJTUVfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvYXBwbGljYXRpb24tdGltZXMvOmlkLyc7XG5cbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUlNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvY2FsZW5kYXJzLyc7XG5jb25zdCBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvc2xvdHMvJztcbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUl9TTE9UU19TWU5DX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3Nsb3RzL3N5bmMvJztcbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUl9TTE9UU19BUFBMSUNBVElPTl9USU1FU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9zbG90cy9hcHBsaWNhdGlvbi10aW1lcy8nO1xuY29uc3QgVEVBTV9CT09LSU5HX1NFVFRJTkdTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2Jvb2tpbmctc2V0dGluZ3MvJztcbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05TX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3Nlc3Npb25zLyc7XG5jb25zdCBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9TRVNTSU9OX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3Nlc3Npb25zLzppZC8nO1xuXG5jb25zdCBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfQVBQTElDQVRJT05fVElNRVNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvYXBwbGljYXRpb24tdGltZXMvJztcbmNvbnN0IFRFQU1fQk9PS0lOR19DQUxFTkRBUl9BUFBMSUNBVElPTl9USU1FX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2FwcGxpY2F0aW9uLXRpbWVzLzppZC8nO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tpbmdDYWxlbmRhclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UpIHtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBCb29raW5nIGNhbGVuZGFyXG5cbiAgY3JlYXRlQ2x1YkJvb2tpbmdDYWxlbmRhcihjbHViSWQ6IHN0cmluZywgY2FsZW5kYXI6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyPikge1xuICAgIGRlbGV0ZSBjYWxlbmRhci5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhclxuICAgICAgKVxuICB9XG5cbiAgZ2V0Qm9va2luZ0NhbGVuZGFycyhyb2xlOiBSb2xlLCBjbHViT3JUZWFtSWQ6IHN0cmluZywgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBpZiAocm9sZSA9PSBSb2xlLkNsdWJBZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2x1YkJvb2tpbmdDYWxlbmRhcnMoY2x1Yk9yVGVhbUlkLCBuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUJvb2tpbmdDYWxlbmRhcnMoY2x1Yk9yVGVhbUlkLCBuYW1lKTtcbiAgfVxuXG4gIGdldENsdWJCb29raW5nQ2FsZW5kYXJzKGNsdWJJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChuYW1lKSB7XG4gICAgICBwYXJhbXNbJ25hbWUnXSA9IG5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhckZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJTX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldFRlYW1Cb29raW5nQ2FsZW5kYXJzKHRlYW1JZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChuYW1lKSB7XG4gICAgICBwYXJhbXNbJ25hbWUnXSA9IG5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhckZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfQ0FMRU5EQVJTX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldENsdWJCb29raW5nQ2FsZW5kYXIoY2x1YklkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhckZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfUEFUSCxcbiAgICAgICAge2NsdWJJZCwgaWR9XG4gICAgICApXG4gIH1cblxuICB1cGRhdGVDbHViQm9va2luZ0NhbGVuZGFyKGNsdWJJZDogc3RyaW5nLCBjYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgaWQ6IGNhbGVuZGFyLmlkXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyXG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlQ2x1YkJvb2tpbmdDYWxlbmRhcihjbHViSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gQm9va2luZyBjYWxlbmRhciBzbG90XG5cbiAgY3JlYXRlQ2x1YkJvb2tpbmdDYWxlbmRhclNsb3QoY2x1YklkOiBzdHJpbmcsIHNsb3Q6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD4pIHtcbiAgICBkZWxldGUgc2xvdC5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90RmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICB9LFxuICAgICAgICBzbG90XG4gICAgICApXG4gIH1cblxuICBnZXRCb29raW5nQ2FsZW5kYXJTbG90cyhcbiAgICByb2xlOiBSb2xlLFxuICAgIGNsdWJPclRlYW1JZDogc3RyaW5nLFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgbG9jYXRpb25JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgdGVhbUlkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBoYXNPcGVuU2Vzc2lvbnM6IGJvb2xlYW4gfCBudWxsID0gbnVsbCwpIHtcbiAgICBpZiAocm9sZSA9PSBSb2xlLkNsdWJBZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2x1YkJvb2tpbmdDYWxlbmRhclNsb3RzKGNsdWJPclRlYW1JZCwgc3RhcnREYXRlLCBlbmREYXRlLCBjYWxlbmRhcklkcywgbG9jYXRpb25JZHMsIHRlYW1JZHMsIGhhc09wZW5TZXNzaW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFRlYW1Cb29raW5nQ2FsZW5kYXJTbG90cyhjbHViT3JUZWFtSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsZW5kYXJJZHMsIGxvY2F0aW9uSWRzLCB0ZWFtSWRzLCBoYXNPcGVuU2Vzc2lvbnMpXG4gIH1cblxuICBnZXRDbHViQm9va2luZ0NhbGVuZGFyU2xvdHMoXG4gICAgY2x1YklkOiBzdHJpbmcsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBsb2NhdGlvbklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICB0ZWFtSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGhhc09wZW5TZXNzaW9uczogYm9vbGVhbiB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fZ3RlJ10gPSBzdGFydERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19sdGUnXSA9IGVuZERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNhbGVuZGFySWRzICYmIGNhbGVuZGFySWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydjYWxlbmRhcl9pZCddID0gY2FsZW5kYXJJZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKGxvY2F0aW9uSWRzICYmIGxvY2F0aW9uSWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydsb2NhdGlvbl9pZCddID0gbG9jYXRpb25JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHRlYW1JZHMgJiYgdGVhbUlkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1sndGVhbV9pZCddID0gdGVhbUlkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGhhc09wZW5TZXNzaW9ucyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBwYXJhbXNbJ2hhc19vcGVuX3Nlc3Npb25zJ10gPSBTdHJpbmcoaGFzT3BlblNlc3Npb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyU2xvdEZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0VGVhbUJvb2tpbmdDYWxlbmRhclNsb3RzKFxuICAgIHRlYW1JZDogc3RyaW5nLFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgbG9jYXRpb25JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgdGVhbUlkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBoYXNPcGVuU2Vzc2lvbnM6IGJvb2xlYW4gfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2d0ZSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fbHRlJ10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIGlmIChjYWxlbmRhcklkcyAmJiBjYWxlbmRhcklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snY2FsZW5kYXJfaWQnXSA9IGNhbGVuZGFySWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbklkcyAmJiBsb2NhdGlvbklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snbG9jYXRpb25faWQnXSA9IGxvY2F0aW9uSWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmICh0ZWFtSWRzICYmIHRlYW1JZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ3RlYW1faWQnXSA9IHRlYW1JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBoYXNPcGVuU2Vzc2lvbnMgPT09ICdib29sZWFuJykge1xuICAgICAgcGFyYW1zWydoYXNfb3Blbl9zZXNzaW9ucyddID0gU3RyaW5nKGhhc09wZW5TZXNzaW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9CT09LSU5HX0NBTEVOREFSX1NMT1RTX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldEJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZVNsb3RzKFxuICAgIHJvbGU6IFJvbGUsXG4gICAgY2x1Yk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBsb2NhdGlvbklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICB0ZWFtSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGhhc09wZW5TZXNzaW9uczogYm9vbGVhbiB8IG51bGwgPSBudWxsLCkge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lU2xvdHMoY2x1Yk9yVGVhbUlkLCBzdGFydERhdGUsIGVuZERhdGUsIGNhbGVuZGFySWRzLCBsb2NhdGlvbklkcywgdGVhbUlkcywgaGFzT3BlblNlc3Npb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZVNsb3RzKGNsdWJPclRlYW1JZCwgc3RhcnREYXRlLCBlbmREYXRlLCBjYWxlbmRhcklkcywgbG9jYXRpb25JZHMsIHRlYW1JZHMsIGhhc09wZW5TZXNzaW9ucylcbiAgfVxuXG4gIGdldENsdWJCb29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWVTbG90cyhcbiAgICBjbHViSWQ6IHN0cmluZyxcbiAgICBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGVuZERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGNhbGVuZGFySWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGxvY2F0aW9uSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIHRlYW1JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgaGFzT3BlblNlc3Npb25zOiBib29sZWFuIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19ndGUnXSA9IHN0YXJ0RGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2x0ZSddID0gZW5kRGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoY2FsZW5kYXJJZHMgJiYgY2FsZW5kYXJJZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ2NhbGVuZGFyX2lkJ10gPSBjYWxlbmRhcklkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAobG9jYXRpb25JZHMgJiYgbG9jYXRpb25JZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ2xvY2F0aW9uX2lkJ10gPSBsb2NhdGlvbklkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAodGVhbUlkcyAmJiB0ZWFtSWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWyd0ZWFtX2lkJ10gPSB0ZWFtSWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaGFzT3BlblNlc3Npb25zID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHBhcmFtc1snaGFzX29wZW5fc2Vzc2lvbnMnXSA9IFN0cmluZyhoYXNPcGVuU2Vzc2lvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90RmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UU19BUFBMSUNBVElPTl9USU1FU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRUZWFtQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lU2xvdHMoXG4gICAgdGVhbUlkOiBzdHJpbmcsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBsb2NhdGlvbklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICB0ZWFtSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGhhc09wZW5TZXNzaW9uczogYm9vbGVhbiB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fZ3RlJ10gPSBzdGFydERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19sdGUnXSA9IGVuZERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNhbGVuZGFySWRzICYmIGNhbGVuZGFySWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydjYWxlbmRhcl9pZCddID0gY2FsZW5kYXJJZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKGxvY2F0aW9uSWRzICYmIGxvY2F0aW9uSWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydsb2NhdGlvbl9pZCddID0gbG9jYXRpb25JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHRlYW1JZHMgJiYgdGVhbUlkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1sndGVhbV9pZCddID0gdGVhbUlkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGhhc09wZW5TZXNzaW9ucyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBwYXJhbXNbJ2hhc19vcGVuX3Nlc3Npb25zJ10gPSBTdHJpbmcoaGFzT3BlblNlc3Npb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyU2xvdEZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfQVBQTElDQVRJT05fVElNRVNfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgY29weUNsdWJCb29raW5nQ2FsZW5kYXJTbG90cyhcbiAgICBjbHViSWQ6IHN0cmluZyxcbiAgICB3ZWVrUmVsYXRpdmVJbmRleGVzOiBudW1iZXJbXSxcbiAgICBvbmx5Q29weVNsb3RzOiBib29sZWFuID0gZmFsc2UsXG4gICAgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBsb2NhdGlvbklkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICB0ZWFtSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGhhc09wZW5TZXNzaW9uczogYm9vbGVhbiB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fZ3RlJ10gPSBzdGFydERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19sdGUnXSA9IGVuZERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNhbGVuZGFySWRzICYmIGNhbGVuZGFySWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydjYWxlbmRhcl9pZCddID0gY2FsZW5kYXJJZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKGxvY2F0aW9uSWRzICYmIGxvY2F0aW9uSWRzLmxlbmd0aCkge1xuICAgICAgcGFyYW1zWydsb2NhdGlvbl9pZCddID0gbG9jYXRpb25JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHRlYW1JZHMgJiYgdGVhbUlkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1sndGVhbV9pZCddID0gdGVhbUlkcy5qb2luKCcsJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGhhc09wZW5TZXNzaW9ucyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBwYXJhbXNbJ2hhc19vcGVuX3Nlc3Npb25zJ10gPSBTdHJpbmcoaGFzT3BlblNlc3Npb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlTm9SZXNwb25zZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UU19DT1BZX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgd2Vla19yZWxhdGl2ZV9pbmRleGVzOiB3ZWVrUmVsYXRpdmVJbmRleGVzLFxuICAgICAgICAgIG9ubHlfY29weV9zbG90czogb25seUNvcHlTbG90cyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBjbGVhckNsdWJCb29raW5nQ2FsZW5kYXJTbG90cyhcbiAgICBjbHViSWQ6IHN0cmluZyxcbiAgICBjdXJyZW50V2Vla1N0YXJ0RGF0ZTogc3RyaW5nLFxuICAgIHdlZWtSZWxhdGl2ZUluZGV4ZXM6IG51bWJlcltdLFxuICAgIG9ubHlEZWxldGVTZXNzaW9uczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgbG9jYXRpb25JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgdGVhbUlkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgICBoYXNPcGVuU2Vzc2lvbnM6IGJvb2xlYW4gfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2d0ZSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fbHRlJ10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIGlmIChjYWxlbmRhcklkcyAmJiBjYWxlbmRhcklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snY2FsZW5kYXJfaWQnXSA9IGNhbGVuZGFySWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbklkcyAmJiBsb2NhdGlvbklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snbG9jYXRpb25faWQnXSA9IGxvY2F0aW9uSWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmICh0ZWFtSWRzICYmIHRlYW1JZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ3RlYW1faWQnXSA9IHRlYW1JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBoYXNPcGVuU2Vzc2lvbnMgPT09ICdib29sZWFuJykge1xuICAgICAgcGFyYW1zWydoYXNfb3Blbl9zZXNzaW9ucyddID0gU3RyaW5nKGhhc09wZW5TZXNzaW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlV2l0aEJvZHkoXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfQ0xFQVJfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICBjdXJyZW50X3dlZWtfc3RhcnRfZGF0ZTogY3VycmVudFdlZWtTdGFydERhdGUsXG4gICAgICAgICAgICB3ZWVrX3JlbGF0aXZlX2luZGV4ZXM6IHdlZWtSZWxhdGl2ZUluZGV4ZXMsXG4gICAgICAgICAgICBvbmx5X2RlbGV0ZV9zZXNzaW9uczogb25seURlbGV0ZVNlc3Npb25zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICB9LFxuICAgICAgKVxuICB9XG5cbiAgc3luY0Jvb2tpbmdDYWxlbmRhclNsb3RzKFxuICAgIHJvbGU6IFJvbGUsXG4gICAgY2x1Yk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgY3VycmVudFdlZWtTdGFydERhdGU6IHN0cmluZyxcbiAgICB3ZWVrUmVsYXRpdmVJbmRleGVzOiBudW1iZXJbXSxcbiAgICBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGVuZERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGNhbGVuZGFySWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIGxvY2F0aW9uSWRzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxuICAgIHRlYW1JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5zeW5jQ2x1YkJvb2tpbmdDYWxlbmRhclNsb3RzKGNsdWJPclRlYW1JZCwgY3VycmVudFdlZWtTdGFydERhdGUsICB3ZWVrUmVsYXRpdmVJbmRleGVzLCBzdGFydERhdGUsIGVuZERhdGUsIGNhbGVuZGFySWRzLCBsb2NhdGlvbklkcywgdGVhbUlkcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN5bmNUZWFtQm9va2luZ0NhbGVuZGFyU2xvdHMoY2x1Yk9yVGVhbUlkLCBjdXJyZW50V2Vla1N0YXJ0RGF0ZSwgIHdlZWtSZWxhdGl2ZUluZGV4ZXMsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsZW5kYXJJZHMsIGxvY2F0aW9uSWRzLCB0ZWFtSWRzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0NsdWJCb29raW5nQ2FsZW5kYXJTbG90cyhcbiAgICBjbHViSWQ6IHN0cmluZyxcbiAgICBjdXJyZW50V2Vla1N0YXJ0RGF0ZTogc3RyaW5nLFxuICAgIHdlZWtSZWxhdGl2ZUluZGV4ZXM6IG51bWJlcltdLFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgbG9jYXRpb25JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgdGVhbUlkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2d0ZSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fbHRlJ10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIGlmIChjYWxlbmRhcklkcyAmJiBjYWxlbmRhcklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snY2FsZW5kYXJfaWQnXSA9IGNhbGVuZGFySWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbklkcyAmJiBsb2NhdGlvbklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snbG9jYXRpb25faWQnXSA9IGxvY2F0aW9uSWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmICh0ZWFtSWRzICYmIHRlYW1JZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ3RlYW1faWQnXSA9IHRlYW1JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZU5vUmVzcG9uc2UoXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfU1lOQ19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY3VycmVudF93ZWVrX3N0YXJ0X2RhdGU6IGN1cnJlbnRXZWVrU3RhcnREYXRlLFxuICAgICAgICAgICAgd2Vla19yZWxhdGl2ZV9pbmRleGVzOiB3ZWVrUmVsYXRpdmVJbmRleGVzLFxuICAgICAgICB9LFxuICAgICAgICB7cGFyYW1zfSxcbiAgICAgIClcbiAgfVxuXG4gIHByaXZhdGUgc3luY1RlYW1Cb29raW5nQ2FsZW5kYXJTbG90cyhcbiAgICB0ZWFtSWQ6IHN0cmluZyxcbiAgICBjdXJyZW50V2Vla1N0YXJ0RGF0ZTogc3RyaW5nLFxuICAgIHdlZWtSZWxhdGl2ZUluZGV4ZXM6IG51bWJlcltdLFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgbG9jYXRpb25JZHM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXG4gICAgdGVhbUlkczogc3RyaW5nW10gfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2d0ZSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2RheV9fbHRlJ10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIGlmIChjYWxlbmRhcklkcyAmJiBjYWxlbmRhcklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snY2FsZW5kYXJfaWQnXSA9IGNhbGVuZGFySWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbklkcyAmJiBsb2NhdGlvbklkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtc1snbG9jYXRpb25faWQnXSA9IGxvY2F0aW9uSWRzLmpvaW4oJywnKVxuICAgIH1cblxuICAgIGlmICh0ZWFtSWRzICYmIHRlYW1JZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXNbJ3RlYW1faWQnXSA9IHRlYW1JZHMuam9pbignLCcpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZU5vUmVzcG9uc2UoXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVFNfU1lOQ19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY3VycmVudF93ZWVrX3N0YXJ0X2RhdGU6IGN1cnJlbnRXZWVrU3RhcnREYXRlLFxuICAgICAgICAgICAgd2Vla19yZWxhdGl2ZV9pbmRleGVzOiB3ZWVrUmVsYXRpdmVJbmRleGVzLFxuICAgICAgICB9LFxuICAgICAgICB7cGFyYW1zfSxcbiAgICAgIClcbiAgfVxuXG4gIGdldENsdWJCb29raW5nQ2FsZW5kYXJTbG90KGNsdWJJZDogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90RmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UX1BBVEgsXG4gICAgICAgIHtjbHViSWQsIGlkfVxuICAgICAgKVxuICB9XG5cbiAgdXBkYXRlQ2x1YkJvb2tpbmdDYWxlbmRhclNsb3QoY2x1YklkOiBzdHJpbmcsIHNsb3Q6IEJvb2tpbmdDYWxlbmRhclNsb3QpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBpZDogc2xvdC5pZFxuICAgICAgICB9LFxuICAgICAgICBzbG90XG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlQ2x1YkJvb2tpbmdDYWxlbmRhclNsb3QoY2x1YklkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBkZWxldGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdFJlcGVhdGFibGUoY2x1YklkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfUkVQRUFUQUJMRV9TTE9UX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBCb29raW5nIGNhbGVuZGFyIHNsb3Qgc2Vzc2lvblxuXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGU6IFJvbGUsIGNsdWJPclRlYW1JZDogc3RyaW5nLCBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPikge1xuICAgIGlmIChyb2xlID09PSBSb2xlLkNsdWJBZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2x1YkJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKGNsdWJPclRlYW1JZCwgc2Vzc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVRlYW1Cb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihjbHViT3JUZWFtSWQsIHNlc3Npb24pO1xuICB9XG5cbiAgY3JlYXRlQ2x1YkJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKGNsdWJJZDogc3RyaW5nLCBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPikge1xuICAgIGRlbGV0ZSBzZXNzaW9uLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05TX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHNlc3Npb25cbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVRlYW1Cb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbih0ZWFtSWQ6IHN0cmluZywgc2Vzc2lvbjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4pIHtcbiAgICBkZWxldGUgc2Vzc2lvbi5pZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9TRVNTSU9OU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICB9LFxuICAgICAgICBzZXNzaW9uXG4gICAgICApXG4gIH1cblxuICBnZXRDbHViQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zKGNsdWJJZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snZGF5X19ndGUnXSA9IHN0YXJ0RGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zWydkYXlfX2x0ZSddID0gZW5kRGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSX1NMT1RfU0VTU0lPTlNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0Q2x1YkJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKGNsdWJJZDogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9TRVNTSU9OX1BBVEgsXG4gICAgICAgIHtjbHViSWQsIGlkfVxuICAgICAgKVxuICB9XG5cbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZTogUm9sZSwgY2x1Yk9yVGVhbUlkOiBzdHJpbmcsIHNlc3Npb246IEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKSB7XG4gICAgaWYgKHJvbGUgPT09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1Yk9yVGVhbUlkLCBzZXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlVGVhbUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKGNsdWJPclRlYW1JZCwgc2Vzc2lvbik7XG4gIH1cblxuICB1cGRhdGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1YklkOiBzdHJpbmcsIHNlc3Npb246IEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9TRVNTSU9OX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgaWQ6IHNlc3Npb24uaWRcbiAgICAgICAgfSxcbiAgICAgICAgc2Vzc2lvblxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVRlYW1Cb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbih0ZWFtSWQ6IHN0cmluZywgc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05fUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBpZDogc2Vzc2lvbi5pZFxuICAgICAgICB9LFxuICAgICAgICBzZXNzaW9uXG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZTogUm9sZSwgY2x1Yk9yVGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICBpZiAocm9sZSA9PSBSb2xlLkNsdWJBZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlQ2x1YkJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKGNsdWJPclRlYW1JZCwgaWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWxldGVUZWFtQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1Yk9yVGVhbUlkLCBpZCk7XG4gIH1cblxuICBkZWxldGVDbHViQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24oY2x1YklkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfQ0FMRU5EQVJfU0xPVF9TRVNTSU9OX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVRlYW1Cb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbih0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0lOR19DQUxFTkRBUl9TTE9UX1NFU1NJT05fUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIEJvb2tpbmcgU2V0dGluZ1xuXG4gIGdldEJvb2tpbmdTZXR0aW5ncyhyb2xlOiBSb2xlLCBjbHViT3JUZWFtSWQ6IHN0cmluZykge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQm9va2luZ1NldHRpbmdzKGNsdWJPclRlYW1JZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFRlYW1Cb29raW5nU2V0dGluZ3MoY2x1Yk9yVGVhbUlkKTtcbiAgfVxuXG4gIGdldENsdWJCb29raW5nU2V0dGluZ3MoY2x1YklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdTZXR0aW5nc0ZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0JPT0tJTkdfU0VUVElOR1NfUEFUSCxcbiAgICAgICAge2NsdWJJZH1cbiAgICAgIClcbiAgfVxuXG4gIGdldFRlYW1Cb29raW5nU2V0dGluZ3ModGVhbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdTZXR0aW5nc0ZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfU0VUVElOR1NfUEFUSCxcbiAgICAgICAge3RlYW1JZH1cbiAgICAgIClcbiAgfVxuXG4gIHVwZGF0ZUNsdWJCb29raW5nU2V0dGluZ3MoY2x1YklkOiBzdHJpbmcsIGJvb2tpbmdTZXR0aW5nczogQm9va2luZ1NldHRpbmdzKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29raW5nU2V0dGluZ3NGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX1NFVFRJTkdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGJvb2tpbmdTZXR0aW5nc1xuICAgICAgKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBCb29raW5nIENhbGVuZGFyIEFwcGxpY2F0aW9uIFRpbWVzXG5cbiAgdXBkYXRlQ2x1YkJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZShjbHViSWQ6IHN0cmluZywgYXZhaWxhYmxlVGltZTogQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBib29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWVGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9CT09LSU5HX0NBTEVOREFSX0FQUExJQ0FUSU9OX1RJTUVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBpZDogYXZhaWxhYmxlVGltZS5pZFxuICAgICAgICB9LFxuICAgICAgICBhdmFpbGFibGVUaW1lXG4gICAgICApO1xuICB9XG5cbiAgY3JlYXRlVGVhbUJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZSh0ZWFtSWQ6IHN0cmluZywgYXZhaWxhYmxlVGltZTogUGFydGlhbDxCb29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWU+KSB7XG4gICAgZGVsZXRlIGF2YWlsYWJsZVRpbWUuaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQk9PS0lOR19DQUxFTkRBUl9BUFBMSUNBVElPTl9USU1FU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICB9LFxuICAgICAgICBhdmFpbGFibGVUaW1lXG4gICAgICApXG4gIH1cblxuICB1cGRhdGVUZWFtQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lKHRlYW1JZDogc3RyaW5nLCBhdmFpbGFibGVUaW1lOiBCb29raW5nQ2FsZW5kYXJBcHBsaWNhdGlvblRpbWUpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGJvb2tpbmdDYWxlbmRhckFwcGxpY2F0aW9uVGltZUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0JPT0tJTkdfQ0FMRU5EQVJfQVBQTElDQVRJT05fVElNRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGlkOiBhdmFpbGFibGVUaW1lLmlkXG4gICAgICAgIH0sXG4gICAgICAgIGF2YWlsYWJsZVRpbWVcbiAgICAgICk7XG4gIH1cblxuICBkZWxldGVUZWFtQm9va2luZ0NhbGVuZGFyQXBwbGljYXRpb25UaW1lKHRlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlKFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9CT09LSU5HX0NBTEVOREFSX0FQUExJQ0FUSU9OX1RJTUVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cblxufVxuIl19
|
|
@@ -69,13 +69,13 @@ class Activity {
|
|
|
69
69
|
end_time: new FormControl((activity === null || activity === void 0 ? void 0 : activity.end_time) || '', [Validators.required]),
|
|
70
70
|
file: new FormControl(''),
|
|
71
71
|
invitation_text: new FormControl((activity === null || activity === void 0 ? void 0 : activity.invitation_text) || ''),
|
|
72
|
-
invite_first_days: new FormControl((activity === null || activity === void 0 ? void 0 : activity.invite_first_days) || 7),
|
|
72
|
+
invite_first_days: new FormControl(Number.isInteger(activity === null || activity === void 0 ? void 0 : activity.invite_first_days) ? activity === null || activity === void 0 ? void 0 : activity.invite_first_days : 7),
|
|
73
73
|
invite_groups: new FormControl((activity === null || activity === void 0 ? void 0 : activity.invite_groups) || []),
|
|
74
74
|
invite_hide_before_sent: new FormControl(typeof (activity === null || activity === void 0 ? void 0 : activity.invite_hide_before_sent) !== 'undefined' ? activity === null || activity === void 0 ? void 0 : activity.invite_hide_before_sent : false),
|
|
75
75
|
invite_last_response_date: new FormControl((activity === null || activity === void 0 ? void 0 : activity.invite_last_response_date) || ''),
|
|
76
76
|
invite_remind: new FormControl((activity === null || activity === void 0 ? void 0 : activity.invite_remind) || 0),
|
|
77
77
|
invite_remind_receivers: new FormControl((activity === null || activity === void 0 ? void 0 : activity.invite_remind_receivers) || ''),
|
|
78
|
-
invite_second_days: new FormControl((activity === null || activity === void 0 ? void 0 : activity.invite_second_days) || 2),
|
|
78
|
+
invite_second_days: new FormControl(Number.isInteger(activity === null || activity === void 0 ? void 0 : activity.invite_second_days) ? activity === null || activity === void 0 ? void 0 : activity.invite_second_days : 2),
|
|
79
79
|
invite_settings: new FormControl((activity === null || activity === void 0 ? void 0 : activity.invite_settings) || ''),
|
|
80
80
|
last_response_date: new FormControl((activity === null || activity === void 0 ? void 0 : activity.last_response_date) || ''),
|
|
81
81
|
max_num_attendants: new FormControl((activity === null || activity === void 0 ? void 0 : activity.max_num_attendants) || 0),
|
|
@@ -83,7 +83,7 @@ class Activity {
|
|
|
83
83
|
meet_up_place: new FormControl((activity === null || activity === void 0 ? void 0 : activity.meet_up_place) || ''),
|
|
84
84
|
meet_up_time: new FormControl((activity === null || activity === void 0 ? void 0 : activity.meet_up_time) || 0),
|
|
85
85
|
repeat: new FormControl((activity === null || activity === void 0 ? void 0 : activity.repeat) || 'none'),
|
|
86
|
-
repeat_num: new FormControl((activity === null || activity === void 0 ? void 0 : activity.repeat_num) || 6),
|
|
86
|
+
repeat_num: new FormControl(Number.isInteger(activity === null || activity === void 0 ? void 0 : activity.repeat_num) ? activity === null || activity === void 0 ? void 0 : activity.repeat_num : 6),
|
|
87
87
|
repeat_to_day: new FormControl((activity === null || activity === void 0 ? void 0 : activity.repeat_to_day) || ''),
|
|
88
88
|
repeat_type: new FormControl((activity === null || activity === void 0 ? void 0 : activity.repeat_type) || ''),
|
|
89
89
|
show_other_invited: new FormControl((activity === null || activity === void 0 ? void 0 : activity.show_other_invited) || 'all'),
|
|
@@ -1920,6 +1920,7 @@ const CLUB_BOOKING_CALENDAR_SLOTS_PATH = ':clubId/activities/slots/';
|
|
|
1920
1920
|
const CLUB_BOOKING_CALENDAR_SLOTS_APPLICATION_TIMES_PATH = ':clubId/activities/slots/application-times/';
|
|
1921
1921
|
const CLUB_BOOKING_CALENDAR_SLOTS_COPY_PATH = ':clubId/activities/slots/copy/';
|
|
1922
1922
|
const CLUB_BOOKING_CALENDAR_SLOTS_CLEAR_PATH = ':clubId/activities/slots/clear/';
|
|
1923
|
+
const CLUB_BOOKING_CALENDAR_SLOTS_SYNC_PATH = ':clubId/activities/slots/sync/';
|
|
1923
1924
|
const CLUB_BOOKING_CALENDAR_SLOT_PATH = ':clubId/activities/slots/:id/';
|
|
1924
1925
|
const CLUB_BOOKING_CALENDAR_REPEATABLE_SLOT_PATH = ':clubId/activities/slots/:id/all/';
|
|
1925
1926
|
const CLUB_BOOKING_CALENDAR_SLOT_SESSIONS_PATH = ':clubId/activities/sessions/';
|
|
@@ -1928,6 +1929,7 @@ const CLUB_BOOKING_SETTINGS_PATH = ':clubId/activities/booking-settings/';
|
|
|
1928
1929
|
const CLUB_BOOKING_CALENDAR_APPLICATION_TIME_PATH = ':clubId/activities/application-times/:id/';
|
|
1929
1930
|
const TEAM_BOOKING_CALENDARS_PATH = ':teamId/activities/calendars/';
|
|
1930
1931
|
const TEAM_BOOKING_CALENDAR_SLOTS_PATH = ':teamId/activities/slots/';
|
|
1932
|
+
const TEAM_BOOKING_CALENDAR_SLOTS_SYNC_PATH = ':teamId/activities/slots/sync/';
|
|
1931
1933
|
const TEAM_BOOKING_CALENDAR_SLOTS_APPLICATION_TIMES_PATH = ':teamId/activities/slots/application-times/';
|
|
1932
1934
|
const TEAM_BOOKING_SETTINGS_PATH = ':teamId/activities/booking-settings/';
|
|
1933
1935
|
const TEAM_BOOKING_CALENDAR_SLOT_SESSIONS_PATH = ':teamId/activities/sessions/';
|
|
@@ -2169,6 +2171,58 @@ class BookingCalendarService {
|
|
|
2169
2171
|
params,
|
|
2170
2172
|
});
|
|
2171
2173
|
}
|
|
2174
|
+
syncBookingCalendarSlots(role, clubOrTeamId, currentWeekStartDate, weekRelativeIndexes, startDate = null, endDate = null, calendarIds = null, locationIds = null, teamIds = null) {
|
|
2175
|
+
if (role == Role.ClubAdmin) {
|
|
2176
|
+
return this.syncClubBookingCalendarSlots(clubOrTeamId, currentWeekStartDate, weekRelativeIndexes, startDate, endDate, calendarIds, locationIds, teamIds);
|
|
2177
|
+
}
|
|
2178
|
+
return this.syncTeamBookingCalendarSlots(clubOrTeamId, currentWeekStartDate, weekRelativeIndexes, startDate, endDate, calendarIds, locationIds, teamIds);
|
|
2179
|
+
}
|
|
2180
|
+
syncClubBookingCalendarSlots(clubId, currentWeekStartDate, weekRelativeIndexes, startDate = null, endDate = null, calendarIds = null, locationIds = null, teamIds = null) {
|
|
2181
|
+
const params = { limit: 'null' };
|
|
2182
|
+
if (startDate) {
|
|
2183
|
+
params['day__gte'] = startDate;
|
|
2184
|
+
}
|
|
2185
|
+
if (endDate) {
|
|
2186
|
+
params['day__lte'] = endDate;
|
|
2187
|
+
}
|
|
2188
|
+
if (calendarIds && calendarIds.length) {
|
|
2189
|
+
params['calendar_id'] = calendarIds.join(',');
|
|
2190
|
+
}
|
|
2191
|
+
if (locationIds && locationIds.length) {
|
|
2192
|
+
params['location_id'] = locationIds.join(',');
|
|
2193
|
+
}
|
|
2194
|
+
if (teamIds && teamIds.length) {
|
|
2195
|
+
params['team_id'] = teamIds.join(',');
|
|
2196
|
+
}
|
|
2197
|
+
return this.apiService
|
|
2198
|
+
.postResourceNoResponse(Role.ClubAdmin, CLUB_BOOKING_CALENDAR_SLOTS_SYNC_PATH, { clubId }, {
|
|
2199
|
+
current_week_start_date: currentWeekStartDate,
|
|
2200
|
+
week_relative_indexes: weekRelativeIndexes,
|
|
2201
|
+
}, { params });
|
|
2202
|
+
}
|
|
2203
|
+
syncTeamBookingCalendarSlots(teamId, currentWeekStartDate, weekRelativeIndexes, startDate = null, endDate = null, calendarIds = null, locationIds = null, teamIds = null) {
|
|
2204
|
+
const params = { limit: 'null' };
|
|
2205
|
+
if (startDate) {
|
|
2206
|
+
params['day__gte'] = startDate;
|
|
2207
|
+
}
|
|
2208
|
+
if (endDate) {
|
|
2209
|
+
params['day__lte'] = endDate;
|
|
2210
|
+
}
|
|
2211
|
+
if (calendarIds && calendarIds.length) {
|
|
2212
|
+
params['calendar_id'] = calendarIds.join(',');
|
|
2213
|
+
}
|
|
2214
|
+
if (locationIds && locationIds.length) {
|
|
2215
|
+
params['location_id'] = locationIds.join(',');
|
|
2216
|
+
}
|
|
2217
|
+
if (teamIds && teamIds.length) {
|
|
2218
|
+
params['team_id'] = teamIds.join(',');
|
|
2219
|
+
}
|
|
2220
|
+
return this.apiService
|
|
2221
|
+
.postResourceNoResponse(Role.TeamAdmin, TEAM_BOOKING_CALENDAR_SLOTS_SYNC_PATH, { teamId }, {
|
|
2222
|
+
current_week_start_date: currentWeekStartDate,
|
|
2223
|
+
week_relative_indexes: weekRelativeIndexes,
|
|
2224
|
+
}, { params });
|
|
2225
|
+
}
|
|
2172
2226
|
getClubBookingCalendarSlot(clubId, id) {
|
|
2173
2227
|
return this.apiService
|
|
2174
2228
|
.getResource(bookingCalendarSlotFactory, Role.ClubAdmin, CLUB_BOOKING_CALENDAR_SLOT_PATH, { clubId, id });
|