ca-components 0.0.55 → 0.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2022/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.mjs +2 -2
  2. package/esm2022/lib/components/ca-input/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +6 -3
  3. package/esm2022/lib/components/ca-input/services/ca-input-state.service.mjs +1 -3
  4. package/esm2022/lib/components/ca-period-content/ca-period-content.component.mjs +7 -7
  5. package/esm2022/lib/components/ca-period-content/components/ca-period-content-extra-info/ca-period-content-extra-info.component.mjs +1 -1
  6. package/esm2022/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.mjs +16 -10
  7. package/esm2022/lib/components/ca-period-content/components/ca-period-content-user-info/ca-period-content-user-info.component.mjs +13 -38
  8. package/esm2022/lib/components/ca-period-content/models/payroll-report-tables.type.mjs +2 -0
  9. package/esm2022/lib/components/ca-period-content/models/payroll-report.type.mjs +2 -0
  10. package/esm2022/lib/components/ca-period-content/pipes/period_status.pipe.mjs +44 -0
  11. package/esm2022/lib/components/ca-period-content/utils/helpers/payroll-period-content.helper.mjs +7 -9
  12. package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +3 -3
  13. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.mjs +6 -4
  14. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.mjs +3 -3
  15. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.mjs +3 -3
  16. package/esm2022/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.mjs +20 -20
  17. package/esm2022/lib/components/ca-search-multiple-states/utils/pipes/chip-class.pipe.mjs +4 -4
  18. package/esm2022/lib/pipes/date-from-string.pipe.mjs +4 -1
  19. package/esm2022/lib/pipes/user-initials.pipe.mjs +22 -0
  20. package/fesm2022/ca-components.mjs +121 -76
  21. package/fesm2022/ca-components.mjs.map +1 -1
  22. package/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.d.ts +3 -3
  23. package/lib/components/ca-input/components/ca-input-datetime-picker/ca-input-datetime-picker.component.d.ts +1 -0
  24. package/lib/components/ca-period-content/ca-period-content.component.d.ts +3 -2
  25. package/lib/components/ca-period-content/components/ca-period-content-extra-info/ca-period-content-extra-info.component.d.ts +2 -2
  26. package/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.d.ts +4 -3
  27. package/lib/components/ca-period-content/components/ca-period-content-user-info/ca-period-content-user-info.component.d.ts +3 -7
  28. package/lib/components/ca-period-content/models/payroll-report-tables.type.d.ts +8 -0
  29. package/lib/components/ca-period-content/models/payroll-report.type.d.ts +40 -0
  30. package/lib/components/ca-period-content/pipes/period_status.pipe.d.ts +13 -0
  31. package/lib/components/ca-period-content/utils/helpers/payroll-period-content.helper.d.ts +4 -1
  32. package/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.d.ts +2 -3
  33. package/lib/pipes/user-initials.pipe.d.ts +7 -0
  34. package/package.json +1 -1
  35. package/src/assets/ca-components/svg/comment/exclamation-mark.svg +3 -0
  36. package/src/assets/ca-components/svg/comment/trash.svg +32 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cm9sbC1yZXBvcnQtdGFibGVzLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1wZXJpb2QtY29udGVudC9tb2RlbHMvcGF5cm9sbC1yZXBvcnQtdGFibGVzLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGF5cm9sbFJlcG9ydFRhYmxlUmVzcG9uc2Uge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICBzdWJ0b3RhbD86IG51bWJlcjtcbiAgICBkYXRlPzogc3RyaW5nO1xuICAgIHJlY3VycmluZz86IGJvb2xlYW47XG4gICAgY3VycmVudFJlY3VycmFuY2U/OiBudW1iZXIgfCBudWxsO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cm9sbC1yZXBvcnQudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXBlcmlvZC1jb250ZW50L21vZGVscy9wYXlyb2xsLXJlcG9ydC50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxlUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZmlsZS1yZXNwb25zZSc7XG5pbXBvcnQgeyBQYXlyb2xsQm9udXNNaW5pbWFsUmVzcG9uc2UgfSBmcm9tICcuL3BheXJvbGwtYm9udXMtbWluaW1hbC1yZXNwb25zZSc7XG5pbXBvcnQgeyBQYXlyb2xsQ3JlZGl0TWluaW1hbFJlc3BvbnNlIH0gZnJvbSAnLi9wYXlyb2xsLWNyZWRpdC1taW5pbWFsLXJlc3BvbnNlJztcbmltcG9ydCB7IFBheXJvbGxEZWR1Y3Rpb25NaW5pbWFsUmVzcG9uc2UgfSBmcm9tICcuL3BheXJvbGwtZGVkdWN0aW9uLW1pbmltYWwtcmVzcG9uc2UnO1xuaW1wb3J0IHsgUGF5cm9sbExvYWRNaW5pbWFsUmVzcG9uc2UgfSBmcm9tICcuL3BheXJvbGwtbG9hZC1taW5pbWFsLXJlc3BvbnNlJztcbmltcG9ydCB7IFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlIH0gZnJvbSAnLi9wYXlyb2xsLXJlcG9ydC10YWJsZXMudHlwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF5cm9sbFJlcG9ydCB7XG4gIGlkPzogbnVtYmVyO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICB1c2VySWQ6IG51bWJlcjtcbiAgYXZhdGFyOiBzdHJpbmcgfCBudWxsO1xuICBwZXJpb2RTdGFydD86IHN0cmluZztcbiAgcGVyaW9kRW5kPzogc3RyaW5nO1xuICBwYXlyb2xsTnVtYmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgZGF5c1VudGlsUGF5bWVudDogbnVtYmVyO1xuICBtaWxlYWdlUGF5PzogbnVtYmVyO1xuICB0b3RhbEVhcm5pbmdzPzogbnVtYmVyO1xuICBzYWxhcnk/OiBudW1iZXIgfCBudWxsO1xuICBleHRyYVN0b3BQYXk/OiBudW1iZXI7XG4gIGV4dHJhU3RvcENvdW50PzogbnVtYmVyO1xuICBsb2FkQ291bnQ/OiBudW1iZXI7XG4gIHBheXJvbGxEZWFkTGluZToge1xuICAgIG51bWJlck9mRGF5czogbnVtYmVyO1xuICAgIHBlcmlvZDogc3RyaW5nO1xuICB9XG4gIHBlck1pbGVzRW50aXR5Pzoge1xuICAgIGVtcHR5TWlsZTogbnVtYmVyO1xuICAgIGxvYWRlZE1pbGU6IG51bWJlcjtcbiAgICBwZXJTdG9wOiBudW1iZXI7XG4gIH07XG4gIGluY2x1ZGVkRGVkdWN0aW9ucz86IEFycmF5PFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlPiB8IG51bGw7XG4gIGV4Y2x1ZGVkRGVkdWN0aW9ucz86IEFycmF5PFBheXJvbGxSZXBvcnRUYWJsZVJlc3BvbnNlPiB8IG51bGw7XG4gIHRvdGFsRGVkdWN0aW9uPzogbnVtYmVyO1xuICBpbmNsdWRlZENyZWRpdHM/OiBBcnJheTxQYXlyb2xsUmVwb3J0VGFibGVSZXNwb25zZT4gfCBudWxsO1xuICBleGNsdWRlZENyZWRpdHM/OiBBcnJheTxQYXlyb2xsUmVwb3J0VGFibGVSZXNwb25zZT4gfCBudWxsO1xuICB0b3RhbENyZWRpdHM/OiBudW1iZXI7XG4gIGluY2x1ZGVkQm9udXM/OiBBcnJheTxQYXlyb2xsUmVwb3J0VGFibGVSZXNwb25zZT4gfCBudWxsO1xuICBleGNsdWRlZEJvbnVzPzogQXJyYXk8UGF5cm9sbFJlcG9ydFRhYmxlUmVzcG9uc2U+IHwgbnVsbDtcbiAgdG90YWxCb251cz86IG51bWJlcjtcbiAgaW5jbHVkZWRMb2Fkcz86IEFycmF5PFBheXJvbGxMb2FkTWluaW1hbFJlc3BvbnNlPiB8IG51bGw7XG4gIGV4Y2x1ZGVkTG9hZHM/OiBBcnJheTxQYXlyb2xsTG9hZE1pbmltYWxSZXNwb25zZT4gfCBudWxsO1xuICBtYXBMb2NhdGlvbnM/OiBBcnJheTxhbnk+IHwgbnVsbDtcbiAgc3Vtcz86IGFueSB8IG51bGw7XG59XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { PayrollPeriodContentHelper } from '../utils/helpers';
3
+ import { userInfoEnum } from '../enums';
4
+ import { PeriodContentSvgRoutes } from '../utils/svg-routes';
5
+ import * as i0 from "@angular/core";
6
+ export class PeriodStatusPipe {
7
+ transform(paymentStatus, isOpen, status) {
8
+ if (isOpen) {
9
+ const { title, url } = PayrollPeriodContentHelper.getIcon(status);
10
+ return { url, title };
11
+ }
12
+ else {
13
+ if (paymentStatus === userInfoEnum.SHORT_PAID ||
14
+ paymentStatus === userInfoEnum.CLOSED_UNPAID) {
15
+ return {
16
+ title: paymentStatus,
17
+ url: PeriodContentSvgRoutes.pending,
18
+ };
19
+ }
20
+ else if (paymentStatus === userInfoEnum.PAID_IN_FULL) {
21
+ return {
22
+ title: paymentStatus,
23
+ url: PeriodContentSvgRoutes.active,
24
+ };
25
+ }
26
+ else {
27
+ return {
28
+ title: paymentStatus,
29
+ url: PeriodContentSvgRoutes.warning,
30
+ };
31
+ }
32
+ }
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PeriodStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
35
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PeriodStatusPipe, isStandalone: true, name: "periodStatus" }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PeriodStatusPipe, decorators: [{
38
+ type: Pipe,
39
+ args: [{
40
+ standalone: true,
41
+ name: 'periodStatus',
42
+ }]
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyaW9kX3N0YXR1cy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtcGVyaW9kLWNvbnRlbnQvcGlwZXMvcGVyaW9kX3N0YXR1cy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBTTdELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsU0FBUyxDQUNQLGFBQXFCLEVBQ3JCLE1BQWUsRUFDZixNQUdDO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxJQUNFLGFBQWEsS0FBSyxZQUFZLENBQUMsVUFBVTtnQkFDekMsYUFBYSxLQUFLLFlBQVksQ0FBQyxhQUFhLEVBQzVDO2dCQUNBLE9BQU87b0JBQ0wsS0FBSyxFQUFFLGFBQWE7b0JBQ3BCLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxPQUFPO2lCQUNwQyxDQUFDO2FBQ0g7aUJBQU0sSUFBSSxhQUFhLEtBQUssWUFBWSxDQUFDLFlBQVksRUFBRTtnQkFDdEQsT0FBTztvQkFDTCxLQUFLLEVBQUUsYUFBYTtvQkFDcEIsR0FBRyxFQUFFLHNCQUFzQixDQUFDLE1BQU07aUJBQ25DLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxPQUFPO29CQUNMLEtBQUssRUFBRSxhQUFhO29CQUNwQixHQUFHLEVBQUUsc0JBQXNCLENBQUMsT0FBTztpQkFDcEMsQ0FBQzthQUNIO1NBQ0Y7SUFDSCxDQUFDOytHQWpDVSxnQkFBZ0I7NkdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLGNBQWM7aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGF5cm9sbFBlcmlvZENvbnRlbnRIZWxwZXIgfSBmcm9tICcuLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IHVzZXJJbmZvRW51bSB9IGZyb20gJy4uL2VudW1zJztcbmltcG9ydCB7IFBlcmlvZENvbnRlbnRTdmdSb3V0ZXMgfSBmcm9tICcuLi91dGlscy9zdmctcm91dGVzJztcblxuQFBpcGUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBuYW1lOiAncGVyaW9kU3RhdHVzJyxcbn0pXG5leHBvcnQgY2xhc3MgUGVyaW9kU3RhdHVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgcGF5bWVudFN0YXR1czogc3RyaW5nLFxuICAgIGlzT3BlbjogYm9vbGVhbixcbiAgICBzdGF0dXM6IHtcbiAgICAgIG51bWJlck9mRGF5czogbnVtYmVyO1xuICAgICAgcGVyaW9kOiBzdHJpbmc7XG4gICAgfVxuICApOiB7IHRpdGxlOiBzdHJpbmc7IHVybDogc3RyaW5nIH0ge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIGNvbnN0IHsgdGl0bGUsIHVybCB9ID0gUGF5cm9sbFBlcmlvZENvbnRlbnRIZWxwZXIuZ2V0SWNvbihzdGF0dXMpO1xuICAgICAgcmV0dXJuIHsgdXJsLCB0aXRsZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIHBheW1lbnRTdGF0dXMgPT09IHVzZXJJbmZvRW51bS5TSE9SVF9QQUlEIHx8XG4gICAgICAgIHBheW1lbnRTdGF0dXMgPT09IHVzZXJJbmZvRW51bS5DTE9TRURfVU5QQUlEXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogcGF5bWVudFN0YXR1cyxcbiAgICAgICAgICB1cmw6IFBlcmlvZENvbnRlbnRTdmdSb3V0ZXMucGVuZGluZyxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAocGF5bWVudFN0YXR1cyA9PT0gdXNlckluZm9FbnVtLlBBSURfSU5fRlVMTCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiBwYXltZW50U3RhdHVzLFxuICAgICAgICAgIHVybDogUGVyaW9kQ29udGVudFN2Z1JvdXRlcy5hY3RpdmUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiBwYXltZW50U3RhdHVzLFxuICAgICAgICAgIHVybDogUGVyaW9kQ29udGVudFN2Z1JvdXRlcy53YXJuaW5nLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -107,14 +107,12 @@ export class PayrollPeriodContentHelper {
107
107
  static extractDriverOrOwnerInfo(componentData, payrollNumber) {
108
108
  if ('driver' in componentData && componentData.driver) {
109
109
  const fullName = componentData.driver.fullName || '';
110
- const driverAvatar = componentData.driver.avatarFile?.url ||
111
- undefined;
110
+ const driverAvatar = componentData.driver.avatarFile?.url || undefined;
112
111
  return { driverAvatar, fullName, payrollNumber };
113
112
  }
114
113
  if ('driverName' in componentData && componentData.driverName) {
115
114
  const fullName = componentData.driverName;
116
- const driverAvatar = componentData.driverAvatar?.url ||
117
- undefined;
115
+ const driverAvatar = componentData.driverAvatar?.url || undefined;
118
116
  return { driverAvatar, fullName, payrollNumber };
119
117
  }
120
118
  return {
@@ -124,13 +122,13 @@ export class PayrollPeriodContentHelper {
124
122
  };
125
123
  }
126
124
  static getIcon(status) {
127
- if (status > 0) {
125
+ if (status?.numberOfDays > 0) {
128
126
  return {
129
- title: `READY IN ${status} DAYS`,
127
+ title: `READY IN ${status.numberOfDays} DAYS`,
130
128
  url: PeriodContentSvgRoutes.pending,
131
129
  };
132
130
  }
133
- else if (status === 0) {
131
+ else if (status?.numberOfDays === 0) {
134
132
  return {
135
133
  title: userInfoEnum.READY_TO_PROCESS,
136
134
  url: PeriodContentSvgRoutes.active,
@@ -138,7 +136,7 @@ export class PayrollPeriodContentHelper {
138
136
  }
139
137
  else {
140
138
  return {
141
- title: `${-status} DAYS OVERDUE`,
139
+ title: `${-status?.numberOfDays} DAYS OVERDUE`,
142
140
  url: PeriodContentSvgRoutes.warning,
143
141
  };
144
142
  }
@@ -147,4 +145,4 @@ export class PayrollPeriodContentHelper {
147
145
  return PeriodContentSvgRoutes[propertyName];
148
146
  }
149
147
  }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cm9sbC1wZXJpb2QtY29udGVudC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1wZXJpb2QtY29udGVudC91dGlscy9oZWxwZXJzL3BheXJvbGwtcGVyaW9kLWNvbnRlbnQuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU07QUFDTixPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1RCxZQUFZO0FBQ1osT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE1BQU0sT0FBTywwQkFBMEI7SUFDOUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUE0QjtRQUNsRCxJQUFJLGNBQWMsSUFBSSxhQUFhLEVBQUU7WUFDbkMsT0FBTyxhQUFhLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksUUFBUSxJQUFJLGFBQWEsRUFBRTtZQUNwQyxPQUFPLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sTUFBTSxDQUFDLHNCQUFzQixDQUNsQyxhQUE0QixFQUM1QixXQUE0QztRQU01QyxJQUFJLFNBQVMsR0FBVyxDQUFDLENBQUM7UUFDMUIsSUFBSSxZQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLElBQUksT0FBTyxHQUFXLENBQUMsQ0FBQztRQUN4QixJQUFJLFVBQVUsR0FBVyxDQUFDLENBQUM7UUFDM0IsSUFBSSxhQUFxQixDQUFDO1FBQzFCLElBQUksSUFBWSxDQUFDO1FBRWpCLElBQUksTUFBTSxHQUFHLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVqRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBbUMs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SW5mbyxcbiAgRXh0cmFQYXltZW50cyxcbiAgUGF5cm9sbEJvbnVzUmVzcG9uc2UsXG4gIFBheXJvbGxDcmVkaXRSZXNwb25zZSxcbiAgUGF5cm9sbERlZHVjdGlvblJlc3BvbnNlLFxuICBQYXlyb2xsRnVlbE1pbmltYWxSZXNwb25zZSxcbiAgUGF5cm9sbFBlcmlvZERyaXZlclJlc3BvbnNlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG4vL2VudW1cbmltcG9ydCB7IHVzZXJJbmZvRW51bSwgUGF5cm9sbFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG4vL3N2Zy1yb3V0ZXNcbmltcG9ydCB7IFBlcmlvZENvbnRlbnRTdmdSb3V0ZXMgfSBmcm9tICcuLi9zdmctcm91dGVzJztcblxuZXhwb3J0IGNsYXNzIFBheXJvbGxQZXJpb2RDb250ZW50SGVscGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTYWxhcnkoY29tcG9uZW50RGF0YTogQ29tcG9uZW50RGF0YSk6IG51bWJlciB7XG4gICAgaWYgKCdzYWxhcnlBbW91bnQnIGluIGNvbXBvbmVudERhdGEpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnREYXRhLnNhbGFyeUFtb3VudCA/PyAwO1xuICAgIH0gZWxzZSBpZiAoJ3NhbGFyeScgaW4gY29tcG9uZW50RGF0YSkge1xuICAgICAgcmV0dXJuIGNvbXBvbmVudERhdGEuc2FsYXJ5ID8/IDA7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjYWxjdWxhdGVUb3RhbEVhcm5pbmdzKFxuICAgIGNvbXBvbmVudERhdGE6IENvbXBvbmVudERhdGEsXG4gICAgcGF5bWVudFN1bXM6IHsgc3VtOiBudW1iZXI7IHR5cGU6IHN0cmluZyB9W11cbiAgKToge1xuICAgIHRvdGFsRWFybmluZ3M6IG51bWJlcjtcbiAgICBkZWJ0OiBudW1iZXI7XG4gICAgc2FsYXJ5OiBudW1iZXI7XG4gIH0ge1xuICAgIGxldCBjcmVkaXRTdW06IG51bWJlciA9IDA7XG4gICAgbGV0IGRlZHVjdGlvblN1bTogbnVtYmVyID0gMDtcbiAgICBsZXQgZnVlbFN1bTogbnVtYmVyID0gMDtcbiAgICBsZXQgcGF5bWVudFN1bTogbnVtYmVyID0gMDtcbiAgICBsZXQgdG90YWxFYXJuaW5nczogbnVtYmVyO1xuICAgIGxldCBkZWJ0OiBudW1iZXI7XG5cbiAgICBsZXQgc2FsYXJ5ID0gUGF5cm9sbFBlcmlvZENvbnRlbnRIZWxwZXIuZ2V0U2FsYXJ5KGNvbXBvbmVudERhdGEpO1xuXG4gICAgcGF5bWVudFN1bXMuZm9yRWFjaCgoaXRlbTogeyBzdW06IG51bWJlcjsgdHlwZTogc3RyaW5nIH0pID0+IHtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdDcmVkaXQnKSB7XG4gICAgICAgIGNyZWRpdFN1bSArPSBpdGVtLnN1bTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnRGVkdWN0aW9uJykge1xuICAgICAgICBkZWR1Y3Rpb25TdW0gKz0gaXRlbS5zdW07XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ0Z1ZWwnKSB7XG4gICAgICAgIGZ1ZWxTdW0gKz0gaXRlbS5zdW07XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ1BheW1lbnQnKSB7XG4gICAgICAgIHBheW1lbnRTdW0gKz0gaXRlbS5zdW07XG4gICAgICB9XG4gICAgfSk7XG4gICAgdG90YWxFYXJuaW5ncyA9IHNhbGFyeSArIGNyZWRpdFN1bSAtIGRlZHVjdGlvblN1bSAtIGZ1ZWxTdW07XG4gICAgZGVidCA9IHRvdGFsRWFybmluZ3MgLSBwYXltZW50U3VtO1xuXG4gICAgcmV0dXJuIHsgc2FsYXJ5LCB0b3RhbEVhcm5pbmdzLCBkZWJ0IH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN1bVN1YnRvdGFscyhcbiAgICBpdGVtczogKFxuICAgICAgfCBQYXlyb2xsQm9udXNSZXNwb25zZVxuICAgICAgfCBQYXlyb2xsRGVkdWN0aW9uUmVzcG9uc2VcbiAgICAgIHwgUGF5cm9sbENyZWRpdFJlc3BvbnNlXG4gICAgICB8IFBheXJvbGxGdWVsTWluaW1hbFJlc3BvbnNlXG4gICAgKVtdXG4gICk6IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbS5zdWJ0b3RhbCA/PyAwKSwgMCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldERlYnRUaXRsZShcbiAgICBkZWJ0OiBudW1iZXIsXG4gICAgdG90YWxFYXJuaW5nczogbnVtYmVyXG4gICk6IHsgZGVidFRpdGxlOiBzdHJpbmc7IGlzSW5EZWJ0OiBib29sZWFuOyBwYXltZW50U3RhdHVzOiBzdHJpbmcgfSB7XG4gICAgaWYgKGRlYnQgPD0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVidFRpdGxlOiB1c2VySW5mb0VudW0uUEFJRF9JTl9GVUxMLFxuICAgICAgICBwYXltZW50U3RhdHVzOiB1c2VySW5mb0VudW0uUEFJRF9JTl9GVUxMLFxuICAgICAgICBpc0luRGVidDogZmFsc2UsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoZGVidCA9PT0gdG90YWxFYXJuaW5ncykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVidFRpdGxlOiAnREVCVCcsXG4gICAgICAgIHBheW1lbnRTdGF0dXM6IHVzZXJJbmZvRW51bS5DTE9TRURfVU5QQUlELFxuICAgICAgICBpc0luRGVidDogdHJ1ZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlYnRUaXRsZTogJ0RFQlQnLFxuICAgICAgICBwYXltZW50U3RhdHVzOiB1c2VySW5mb0VudW0uU0hPUlRfUEFJRCxcbiAgICAgICAgaXNJbkRlYnQ6IHRydWUsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlRHJpdmVyQW5kUGF5bWVudEluZm8oXG4gICAgY29tcG9uZW50RGF0YTogUGF5cm9sbFBlcmlvZERyaXZlclJlc3BvbnNlLFxuICAgIHR5cGU6IFBheXJvbGxUeXBlRW51bVxuICApOiB7XG4gICAgZHJpdmVySW5mbzogRHJpdmVySW5mbztcbiAgICBleHRyYVBheW1lbnRzOiBFeHRyYVBheW1lbnRzO1xuICB9IHtcbiAgICBjb25zdCBkcml2ZXJJbmZvOiBEcml2ZXJJbmZvID0gdGhpcy5leHRyYWN0RHJpdmVySW5mbyhjb21wb25lbnREYXRhLCB0eXBlKTtcbiAgICBjb25zdCBleHRyYVBheW1lbnRzOiBFeHRyYVBheW1lbnRzID1cbiAgICAgIHRoaXMuZXh0cmFjdEV4dHJhUGF5bWVudHMoY29tcG9uZW50RGF0YSk7XG5cbiAgICByZXR1cm4geyBkcml2ZXJJbmZvLCBleHRyYVBheW1lbnRzIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0RHJpdmVySW5mbyhcbiAgICBjb21wb25lbnREYXRhOiBDb21wb25lbnREYXRhLFxuICAgIHR5cGU6IFBheXJvbGxUeXBlRW51bVxuICApOiBEcml2ZXJJbmZvIHtcbiAgICBjb25zdCBwYXlyb2xsTnVtYmVyID0gY29tcG9uZW50RGF0YS5wYXlyb2xsTnVtYmVyIHx8ICcwJztcblxuICAgIGlmICh0eXBlID09PSBQYXlyb2xsVHlwZUVudW0uT1dORVJfQ09NTUlTU0lPTikge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0cmFjdE93bmVyQ29tbWlzc2lvbkluZm8oY29tcG9uZW50RGF0YSwgcGF5cm9sbE51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmV4dHJhY3REcml2ZXJPck93bmVySW5mbyhjb21wb25lbnREYXRhLCBwYXlyb2xsTnVtYmVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0RXh0cmFQYXltZW50cyhcbiAgICBjb21wb25lbnREYXRhOiBQYXlyb2xsUGVyaW9kRHJpdmVyUmVzcG9uc2VcbiAgKTogRXh0cmFQYXltZW50cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvbnVzZXM6IHtcbiAgICAgICAgaW5jbHVkZWQ6IGNvbXBvbmVudERhdGEuaW5jbHVkZWRCb251cyA/PyBbXSxcbiAgICAgICAgZXhjbHVkZWQ6IGNvbXBvbmVudERhdGEuZXhjbHVkZWRCb251cyA/PyBbXSxcbiAgICAgIH0sXG4gICAgICBjcmVkaXRzOiB7XG4gICAgICAgIGluY2x1ZGVkOiBjb21wb25lbnREYXRhLmluY2x1ZGVkQ3JlZGl0cyA/PyBbXSxcbiAgICAgICAgZXhjbHVkZWQ6IGNvbXBvbmVudERhdGEuZXhjbHVkZWRDcmVkaXRzID8/IFtdLFxuICAgICAgfSxcbiAgICAgIGRlZHVjdGlvbnM6IHtcbiAgICAgICAgaW5jbHVkZWQ6IGNvbXBvbmVudERhdGEuaW5jbHVkZWREZWR1Y3Rpb25zID8/IFtdLFxuICAgICAgICBleGNsdWRlZDogY29tcG9uZW50RGF0YS5leGNsdWRlZERlZHVjdGlvbnMgPz8gW10sXG4gICAgICB9LFxuICAgICAgcGF5bWVudHM6IHsgZXhjbHVkZWQ6IFtdLCBpbmNsdWRlZDogW10gfSxcbiAgICAgIGZ1ZWxzOiB7IGV4Y2x1ZGVkOiBbXSwgaW5jbHVkZWQ6IFtdIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RPd25lckNvbW1pc3Npb25JbmZvKFxuICAgIGNvbXBvbmVudERhdGE6IENvbXBvbmVudERhdGEsXG4gICAgcGF5cm9sbE51bWJlcjogc3RyaW5nXG4gICk6IERyaXZlckluZm8ge1xuICAgIGNvbnN0IHRydWNrTnVtYmVyOiBzdHJpbmcgPVxuICAgICAgJ3RydWNrTnVtYmVyJyBpbiBjb21wb25lbnREYXRhID8gKGNvbXBvbmVudERhdGEudHJ1Y2tOdW1iZXIgPz8gJzAnKSA6ICcwJztcblxuICAgIGNvbnN0IHRydWNrVHlwZTogc3RyaW5nID1cbiAgICAgICd0cnVja1R5cGUnIGluIGNvbXBvbmVudERhdGEgPyAoY29tcG9uZW50RGF0YS50cnVja1R5cGUgPz8gJzAnKSA6ICcwJztcblxuICAgIHJldHVybiB7XG4gICAgICBmdWxsTmFtZTogYCR7dHJ1Y2tOdW1iZXJ9IC0gJHt0cnVja1R5cGV9YCxcbiAgICAgIHBheXJvbGxOdW1iZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3REcml2ZXJPck93bmVySW5mbyhcbiAgICBjb21wb25lbnREYXRhOiBDb21wb25lbnREYXRhLFxuICAgIHBheXJvbGxOdW1iZXI6IHN0cmluZ1xuICApOiBEcml2ZXJJbmZvIHtcbiAgICBpZiAoJ2RyaXZlcicgaW4gY29tcG9uZW50RGF0YSAmJiBjb21wb25lbnREYXRhLmRyaXZlcikge1xuICAgICAgY29uc3QgZnVsbE5hbWUgPSBjb21wb25lbnREYXRhLmRyaXZlci5mdWxsTmFtZSB8fCAnJztcbiAgICAgIGNvbnN0IGRyaXZlckF2YXRhciA9XG4gICAgICAgIGNvbXBvbmVudERhdGEuZHJpdmVyLmF2YXRhckZpbGU/LnVybCB8fFxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiB7IGRyaXZlckF2YXRhciwgZnVsbE5hbWUsIHBheXJvbGxOdW1iZXIgfTtcbiAgICB9XG5cbiAgICBpZiAoJ2RyaXZlck5hbWUnIGluIGNvbXBvbmVudERhdGEgJiYgY29tcG9uZW50RGF0YS5kcml2ZXJOYW1lKSB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbXBvbmVudERhdGEuZHJpdmVyTmFtZTtcbiAgICAgIGNvbnN0IGRyaXZlckF2YXRhciA9XG4gICAgICAgIGNvbXBvbmVudERhdGEuZHJpdmVyQXZhdGFyPy51cmwgfHxcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm4geyBkcml2ZXJBdmF0YXIsIGZ1bGxOYW1lLCBwYXlyb2xsTnVtYmVyIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBkcml2ZXJBdmF0YXI6IHVuZGVmaW5lZCxcbiAgICAgIGZ1bGxOYW1lOiAnJyxcbiAgICAgIHBheXJvbGxOdW1iZXIsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SWNvbihzdGF0dXM6IG51bWJlcik6IHsgdGl0bGU6IHN0cmluZzsgdXJsOiBzdHJpbmcgfSB7XG4gICAgaWYgKHN0YXR1cyA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBgUkVBRFkgSU4gJHtzdGF0dXN9IERBWVNgLFxuICAgICAgICB1cmw6IFBlcmlvZENvbnRlbnRTdmdSb3V0ZXMucGVuZGluZyxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB1c2VySW5mb0VudW0uUkVBRFlfVE9fUFJPQ0VTUyxcbiAgICAgICAgdXJsOiBQZXJpb2RDb250ZW50U3ZnUm91dGVzLmFjdGl2ZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBgJHstc3RhdHVzfSBEQVlTIE9WRVJEVUVgLFxuICAgICAgICB1cmw6IFBlcmlvZENvbnRlbnRTdmdSb3V0ZXMud2FybmluZyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTdmdQYXRoKFxuICAgIHByb3BlcnR5TmFtZToga2V5b2YgdHlwZW9mIFBlcmlvZENvbnRlbnRTdmdSb3V0ZXNcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGVyaW9kQ29udGVudFN2Z1JvdXRlc1twcm9wZXJ0eU5hbWVdIGFzIHN0cmluZztcbiAgfVxufVxuIl19
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cm9sbC1wZXJpb2QtY29udGVudC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1wZXJpb2QtY29udGVudC91dGlscy9oZWxwZXJzL3BheXJvbGwtcGVyaW9kLWNvbnRlbnQuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU07QUFDTixPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1RCxZQUFZO0FBQ1osT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE1BQU0sT0FBTywwQkFBMEI7SUFDOUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUE0QjtRQUNsRCxJQUFJLGNBQWMsSUFBSSxhQUFhLEVBQUU7WUFDbkMsT0FBTyxhQUFhLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksUUFBUSxJQUFJLGFBQWEsRUFBRTtZQUNwQyxPQUFPLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sTUFBTSxDQUFDLHNCQUFzQixDQUNsQyxhQUE0QixFQUM1QixXQUE0QztRQU01QyxJQUFJLFNBQVMsR0FBVyxDQUFDLENBQUM7UUFDMUIsSUFBSSxZQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLElBQUksT0FBTyxHQUFXLENBQUMsQ0FBQztRQUN4QixJQUFJLFVBQVUsR0FBVyxDQUFDLENBQUM7UUFDM0IsSUFBSSxhQUFxQixDQUFDO1FBQzFCLElBQUksSUFBWSxDQUFDO1FBRWpCLElBQUksTUFBTSxHQUFHLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVqRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBbUMs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XG5pbXBvcnQge1xuICBDb21wb25lbnREYXRhLFxuICBEcml2ZXJJbmZvLFxuICBFeHRyYVBheW1lbnRzLFxuICBQYXlyb2xsQm9udXNSZXNwb25zZSxcbiAgUGF5cm9sbENyZWRpdFJlc3BvbnNlLFxuICBQYXlyb2xsRGVkdWN0aW9uUmVzcG9uc2UsXG4gIFBheXJvbGxGdWVsTWluaW1hbFJlc3BvbnNlLFxuICBQYXlyb2xsUGVyaW9kRHJpdmVyUmVzcG9uc2UsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbi8vZW51bVxuaW1wb3J0IHsgdXNlckluZm9FbnVtLCBQYXlyb2xsVHlwZUVudW0gfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5cbi8vc3ZnLXJvdXRlc1xuaW1wb3J0IHsgUGVyaW9kQ29udGVudFN2Z1JvdXRlcyB9IGZyb20gJy4uL3N2Zy1yb3V0ZXMnO1xuXG5leHBvcnQgY2xhc3MgUGF5cm9sbFBlcmlvZENvbnRlbnRIZWxwZXIge1xuICBwdWJsaWMgc3RhdGljIGdldFNhbGFyeShjb21wb25lbnREYXRhOiBDb21wb25lbnREYXRhKTogbnVtYmVyIHtcbiAgICBpZiAoJ3NhbGFyeUFtb3VudCcgaW4gY29tcG9uZW50RGF0YSkge1xuICAgICAgcmV0dXJuIGNvbXBvbmVudERhdGEuc2FsYXJ5QW1vdW50ID8/IDA7XG4gICAgfSBlbHNlIGlmICgnc2FsYXJ5JyBpbiBjb21wb25lbnREYXRhKSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50RGF0YS5zYWxhcnkgPz8gMDtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZVRvdGFsRWFybmluZ3MoXG4gICAgY29tcG9uZW50RGF0YTogQ29tcG9uZW50RGF0YSxcbiAgICBwYXltZW50U3VtczogeyBzdW06IG51bWJlcjsgdHlwZTogc3RyaW5nIH1bXVxuICApOiB7XG4gICAgdG90YWxFYXJuaW5nczogbnVtYmVyO1xuICAgIGRlYnQ6IG51bWJlcjtcbiAgICBzYWxhcnk6IG51bWJlcjtcbiAgfSB7XG4gICAgbGV0IGNyZWRpdFN1bTogbnVtYmVyID0gMDtcbiAgICBsZXQgZGVkdWN0aW9uU3VtOiBudW1iZXIgPSAwO1xuICAgIGxldCBmdWVsU3VtOiBudW1iZXIgPSAwO1xuICAgIGxldCBwYXltZW50U3VtOiBudW1iZXIgPSAwO1xuICAgIGxldCB0b3RhbEVhcm5pbmdzOiBudW1iZXI7XG4gICAgbGV0IGRlYnQ6IG51bWJlcjtcblxuICAgIGxldCBzYWxhcnkgPSBQYXlyb2xsUGVyaW9kQ29udGVudEhlbHBlci5nZXRTYWxhcnkoY29tcG9uZW50RGF0YSk7XG5cbiAgICBwYXltZW50U3Vtcy5mb3JFYWNoKChpdGVtOiB7IHN1bTogbnVtYmVyOyB0eXBlOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ0NyZWRpdCcpIHtcbiAgICAgICAgY3JlZGl0U3VtICs9IGl0ZW0uc3VtO1xuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdEZWR1Y3Rpb24nKSB7XG4gICAgICAgIGRlZHVjdGlvblN1bSArPSBpdGVtLnN1bTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnRnVlbCcpIHtcbiAgICAgICAgZnVlbFN1bSArPSBpdGVtLnN1bTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnUGF5bWVudCcpIHtcbiAgICAgICAgcGF5bWVudFN1bSArPSBpdGVtLnN1bTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0b3RhbEVhcm5pbmdzID0gc2FsYXJ5ICsgY3JlZGl0U3VtIC0gZGVkdWN0aW9uU3VtIC0gZnVlbFN1bTtcbiAgICBkZWJ0ID0gdG90YWxFYXJuaW5ncyAtIHBheW1lbnRTdW07XG5cbiAgICByZXR1cm4geyBzYWxhcnksIHRvdGFsRWFybmluZ3MsIGRlYnQgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3VtU3VidG90YWxzKFxuICAgIGl0ZW1zOiAoXG4gICAgICB8IFBheXJvbGxCb251c1Jlc3BvbnNlXG4gICAgICB8IFBheXJvbGxEZWR1Y3Rpb25SZXNwb25zZVxuICAgICAgfCBQYXlyb2xsQ3JlZGl0UmVzcG9uc2VcbiAgICAgIHwgUGF5cm9sbEZ1ZWxNaW5pbWFsUmVzcG9uc2VcbiAgICApW11cbiAgKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaXRlbXMucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIChpdGVtLnN1YnRvdGFsID8/IDApLCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0RGVidFRpdGxlKFxuICAgIGRlYnQ6IG51bWJlcixcbiAgICB0b3RhbEVhcm5pbmdzOiBudW1iZXJcbiAgKTogeyBkZWJ0VGl0bGU6IHN0cmluZzsgaXNJbkRlYnQ6IGJvb2xlYW47IHBheW1lbnRTdGF0dXM6IHN0cmluZyB9IHtcbiAgICBpZiAoZGVidCA8PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWJ0VGl0bGU6IHVzZXJJbmZvRW51bS5QQUlEX0lOX0ZVTEwsXG4gICAgICAgIHBheW1lbnRTdGF0dXM6IHVzZXJJbmZvRW51bS5QQUlEX0lOX0ZVTEwsXG4gICAgICAgIGlzSW5EZWJ0OiBmYWxzZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChkZWJ0ID09PSB0b3RhbEVhcm5pbmdzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWJ0VGl0bGU6ICdERUJUJyxcbiAgICAgICAgcGF5bWVudFN0YXR1czogdXNlckluZm9FbnVtLkNMT1NFRF9VTlBBSUQsXG4gICAgICAgIGlzSW5EZWJ0OiB0cnVlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVidFRpdGxlOiAnREVCVCcsXG4gICAgICAgIHBheW1lbnRTdGF0dXM6IHVzZXJJbmZvRW51bS5TSE9SVF9QQUlELFxuICAgICAgICBpc0luRGVidDogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjYWxjdWxhdGVEcml2ZXJBbmRQYXltZW50SW5mbyhcbiAgICBjb21wb25lbnREYXRhOiBQYXlyb2xsUGVyaW9kRHJpdmVyUmVzcG9uc2UsXG4gICAgdHlwZTogUGF5cm9sbFR5cGVFbnVtXG4gICk6IHtcbiAgICBkcml2ZXJJbmZvOiBEcml2ZXJJbmZvO1xuICAgIGV4dHJhUGF5bWVudHM6IEV4dHJhUGF5bWVudHM7XG4gIH0ge1xuICAgIGNvbnN0IGRyaXZlckluZm86IERyaXZlckluZm8gPSB0aGlzLmV4dHJhY3REcml2ZXJJbmZvKGNvbXBvbmVudERhdGEsIHR5cGUpO1xuICAgIGNvbnN0IGV4dHJhUGF5bWVudHM6IEV4dHJhUGF5bWVudHMgPVxuICAgICAgdGhpcy5leHRyYWN0RXh0cmFQYXltZW50cyhjb21wb25lbnREYXRhKTtcblxuICAgIHJldHVybiB7IGRyaXZlckluZm8sIGV4dHJhUGF5bWVudHMgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3REcml2ZXJJbmZvKFxuICAgIGNvbXBvbmVudERhdGE6IENvbXBvbmVudERhdGEsXG4gICAgdHlwZTogUGF5cm9sbFR5cGVFbnVtXG4gICk6IERyaXZlckluZm8ge1xuICAgIGNvbnN0IHBheXJvbGxOdW1iZXIgPSBjb21wb25lbnREYXRhLnBheXJvbGxOdW1iZXIgfHwgJzAnO1xuXG4gICAgaWYgKHR5cGUgPT09IFBheXJvbGxUeXBlRW51bS5PV05FUl9DT01NSVNTSU9OKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRyYWN0T3duZXJDb21taXNzaW9uSW5mbyhjb21wb25lbnREYXRhLCBwYXlyb2xsTnVtYmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0cmFjdERyaXZlck9yT3duZXJJbmZvKGNvbXBvbmVudERhdGEsIHBheXJvbGxOdW1iZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RFeHRyYVBheW1lbnRzKFxuICAgIGNvbXBvbmVudERhdGE6IFBheXJvbGxQZXJpb2REcml2ZXJSZXNwb25zZVxuICApOiBFeHRyYVBheW1lbnRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgYm9udXNlczoge1xuICAgICAgICBpbmNsdWRlZDogY29tcG9uZW50RGF0YS5pbmNsdWRlZEJvbnVzID8/IFtdLFxuICAgICAgICBleGNsdWRlZDogY29tcG9uZW50RGF0YS5leGNsdWRlZEJvbnVzID8/IFtdLFxuICAgICAgfSxcbiAgICAgIGNyZWRpdHM6IHtcbiAgICAgICAgaW5jbHVkZWQ6IGNvbXBvbmVudERhdGEuaW5jbHVkZWRDcmVkaXRzID8/IFtdLFxuICAgICAgICBleGNsdWRlZDogY29tcG9uZW50RGF0YS5leGNsdWRlZENyZWRpdHMgPz8gW10sXG4gICAgICB9LFxuICAgICAgZGVkdWN0aW9uczoge1xuICAgICAgICBpbmNsdWRlZDogY29tcG9uZW50RGF0YS5pbmNsdWRlZERlZHVjdGlvbnMgPz8gW10sXG4gICAgICAgIGV4Y2x1ZGVkOiBjb21wb25lbnREYXRhLmV4Y2x1ZGVkRGVkdWN0aW9ucyA/PyBbXSxcbiAgICAgIH0sXG4gICAgICBwYXltZW50czogeyBleGNsdWRlZDogW10sIGluY2x1ZGVkOiBbXSB9LFxuICAgICAgZnVlbHM6IHsgZXhjbHVkZWQ6IFtdLCBpbmNsdWRlZDogW10gfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZXh0cmFjdE93bmVyQ29tbWlzc2lvbkluZm8oXG4gICAgY29tcG9uZW50RGF0YTogQ29tcG9uZW50RGF0YSxcbiAgICBwYXlyb2xsTnVtYmVyOiBzdHJpbmdcbiAgKTogRHJpdmVySW5mbyB7XG4gICAgY29uc3QgdHJ1Y2tOdW1iZXI6IHN0cmluZyA9XG4gICAgICAndHJ1Y2tOdW1iZXInIGluIGNvbXBvbmVudERhdGEgPyAoY29tcG9uZW50RGF0YS50cnVja051bWJlciA/PyAnMCcpIDogJzAnO1xuXG4gICAgY29uc3QgdHJ1Y2tUeXBlOiBzdHJpbmcgPVxuICAgICAgJ3RydWNrVHlwZScgaW4gY29tcG9uZW50RGF0YSA/IChjb21wb25lbnREYXRhLnRydWNrVHlwZSA/PyAnMCcpIDogJzAnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZ1bGxOYW1lOiBgJHt0cnVja051bWJlcn0gLSAke3RydWNrVHlwZX1gLFxuICAgICAgcGF5cm9sbE51bWJlcixcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZXh0cmFjdERyaXZlck9yT3duZXJJbmZvKFxuICAgIGNvbXBvbmVudERhdGE6IENvbXBvbmVudERhdGEsXG4gICAgcGF5cm9sbE51bWJlcjogc3RyaW5nXG4gICk6IERyaXZlckluZm8ge1xuICAgIGlmICgnZHJpdmVyJyBpbiBjb21wb25lbnREYXRhICYmIGNvbXBvbmVudERhdGEuZHJpdmVyKSB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbXBvbmVudERhdGEuZHJpdmVyLmZ1bGxOYW1lIHx8ICcnO1xuICAgICAgY29uc3QgZHJpdmVyQXZhdGFyID0gY29tcG9uZW50RGF0YS5kcml2ZXIuYXZhdGFyRmlsZT8udXJsIHx8IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIHsgZHJpdmVyQXZhdGFyLCBmdWxsTmFtZSwgcGF5cm9sbE51bWJlciB9O1xuICAgIH1cblxuICAgIGlmICgnZHJpdmVyTmFtZScgaW4gY29tcG9uZW50RGF0YSAmJiBjb21wb25lbnREYXRhLmRyaXZlck5hbWUpIHtcbiAgICAgIGNvbnN0IGZ1bGxOYW1lID0gY29tcG9uZW50RGF0YS5kcml2ZXJOYW1lO1xuICAgICAgY29uc3QgZHJpdmVyQXZhdGFyID0gY29tcG9uZW50RGF0YS5kcml2ZXJBdmF0YXI/LnVybCB8fCB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiB7IGRyaXZlckF2YXRhciwgZnVsbE5hbWUsIHBheXJvbGxOdW1iZXIgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGRyaXZlckF2YXRhcjogdW5kZWZpbmVkLFxuICAgICAgZnVsbE5hbWU6ICcnLFxuICAgICAgcGF5cm9sbE51bWJlcixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJY29uKHN0YXR1czogeyBudW1iZXJPZkRheXM6IG51bWJlcjsgcGVyaW9kOiBzdHJpbmcgfSk6IHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICB9IHtcbiAgICBpZiAoc3RhdHVzPy5udW1iZXJPZkRheXMgPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogYFJFQURZIElOICR7c3RhdHVzLm51bWJlck9mRGF5c30gREFZU2AsXG4gICAgICAgIHVybDogUGVyaW9kQ29udGVudFN2Z1JvdXRlcy5wZW5kaW5nLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHN0YXR1cz8ubnVtYmVyT2ZEYXlzID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdXNlckluZm9FbnVtLlJFQURZX1RPX1BST0NFU1MsXG4gICAgICAgIHVybDogUGVyaW9kQ29udGVudFN2Z1JvdXRlcy5hY3RpdmUsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogYCR7LXN0YXR1cz8ubnVtYmVyT2ZEYXlzfSBEQVlTIE9WRVJEVUVgLFxuICAgICAgICB1cmw6IFBlcmlvZENvbnRlbnRTdmdSb3V0ZXMud2FybmluZyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTdmdQYXRoKFxuICAgIHByb3BlcnR5TmFtZToga2V5b2YgdHlwZW9mIFBlcmlvZENvbnRlbnRTdmdSb3V0ZXNcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGVyaW9kQ29udGVudFN2Z1JvdXRlc1twcm9wZXJ0eU5hbWVdIGFzIHN0cmluZztcbiAgfVxufVxuIl19