cmat 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/breadcrumb/breadcrumb.component.d.ts +18 -20
- package/components/card/card.component.d.ts +0 -5
- package/components/cascade/cascade-list/cascade-list.component.d.ts +12 -9
- package/components/cascade/cascade-menu/cascade-menu.component.d.ts +0 -1
- package/components/chip-input/chip-input.component.d.ts +34 -0
- package/components/chip-input/index.d.ts +5 -0
- package/components/chip-input/public-api.d.ts +1 -0
- package/components/date-range/date-range.component.d.ts +3 -2
- package/components/json-editor/index.d.ts +5 -0
- package/components/json-editor/json-editor.component.d.ts +25 -0
- package/components/json-editor/public-api.d.ts +1 -0
- package/components/navigation/vertical/components/aside/aside.component.d.ts +2 -2
- package/components/navigation/vertical/components/basic/basic.component.d.ts +2 -2
- package/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +2 -2
- package/components/navigation/vertical/components/divider/divider.component.d.ts +2 -2
- package/components/navigation/vertical/components/group/group.component.d.ts +2 -2
- package/components/navigation/vertical/components/spacer/spacer.component.d.ts +2 -2
- package/components/navigation/vertical/vertical.component.d.ts +2 -2
- package/components/progress-bar/progress-bar.component.d.ts +3 -2
- package/components/rating/rating.component.d.ts +3 -2
- package/components/select-search/select-search.component.d.ts +1 -2
- package/components/select-tree/select-tree.component.d.ts +5 -12
- package/components/timeline/timeline-item/timeline-item.component.d.ts +1 -1
- package/components/transfer-picker/interface.d.ts +1 -1
- package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +4 -4
- package/components/transfer-picker/transfer-picker.service.d.ts +2 -1
- package/directives/autofocus/autofocus.directive.d.ts +1 -3
- package/directives/debounce/debounce-keyup.directive.d.ts +1 -1
- package/directives/digit-only/digit-only.directive.d.ts +2 -0
- package/esm2022/animations/dropdown.mjs +26 -0
- package/esm2022/animations/public-api.mjs +2 -2
- package/esm2022/components/adapter/dayjs-date-adapter.mjs +3 -3
- package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +3 -3
- package/esm2022/components/adapter/native-datetime-adapter.mjs +3 -3
- package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +16 -17
- package/esm2022/components/breadcrumb/breadcrumb.service.mjs +4 -4
- package/esm2022/components/card/card.component.mjs +5 -14
- package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -6
- package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +65 -39
- package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -9
- package/esm2022/components/chip-input/chip-input.component.mjs +144 -0
- package/esm2022/components/chip-input/cmat-components-chip-input.mjs +5 -0
- package/esm2022/components/chip-input/public-api.mjs +2 -0
- package/esm2022/components/date-range/date-range.component.mjs +13 -9
- package/esm2022/components/drawer/drawer.component.mjs +4 -4
- package/esm2022/components/drawer/drawer.service.mjs +3 -3
- package/esm2022/components/fullscreen/fullscreen.component.mjs +3 -3
- package/esm2022/components/highlight/highlight.component.mjs +3 -3
- package/esm2022/components/highlight/highlight.service.mjs +3 -3
- package/esm2022/components/json-editor/cmat-components-json-editor.mjs +5 -0
- package/esm2022/components/json-editor/json-editor.component.mjs +176 -0
- package/esm2022/components/json-editor/public-api.mjs +2 -0
- package/esm2022/components/masonry/masonry.component.mjs +3 -3
- package/esm2022/components/material-color-picker/material-color-picker.component.mjs +6 -6
- package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -6
- package/esm2022/components/material-datetimepicker/calendar.mjs +7 -8
- package/esm2022/components/material-datetimepicker/clock.mjs +6 -6
- package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +3 -3
- package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
- package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +8 -9
- package/esm2022/components/material-datetimepicker/datetimepicker.mjs +7 -7
- package/esm2022/components/material-datetimepicker/month-view.mjs +5 -6
- package/esm2022/components/material-datetimepicker/multi-year-view.mjs +3 -3
- package/esm2022/components/material-datetimepicker/time.mjs +8 -9
- package/esm2022/components/material-datetimepicker/year-view.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +6 -6
- package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +7 -8
- package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/horizontal.component.mjs +5 -6
- package/esm2022/components/navigation/navigation.service.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +9 -9
- package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +8 -7
- package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +9 -11
- package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +6 -6
- package/esm2022/components/navigation/vertical/components/group/group.component.mjs +10 -11
- package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +7 -7
- package/esm2022/components/navigation/vertical/vertical.component.mjs +9 -11
- package/esm2022/components/pagination/pagination.component.mjs +6 -7
- package/esm2022/components/pagination/pagination.directive.mjs +3 -3
- package/esm2022/components/pagination/pagination.pipe.mjs +5 -5
- package/esm2022/components/pagination/pagination.service.mjs +3 -3
- package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +3 -3
- package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +6 -6
- package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +8 -9
- package/esm2022/components/popover/popover.component.mjs +5 -5
- package/esm2022/components/progress-bar/progress-bar.component.mjs +11 -8
- package/esm2022/components/rating/rating.component.mjs +14 -6
- package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
- package/esm2022/components/select-search/select-search-clear.directive.mjs +3 -3
- package/esm2022/components/select-search/select-search.component.mjs +8 -11
- package/esm2022/components/select-tree/select-tree.component.mjs +13 -29
- package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +18 -16
- package/esm2022/components/timeline/timeline.component.mjs +3 -3
- package/esm2022/components/toast/toast-modal.component.mjs +7 -7
- package/esm2022/components/toast/toast.component.mjs +6 -6
- package/esm2022/components/toast/toast.service.mjs +3 -3
- package/esm2022/components/transfer-picker/filter/filter.component.mjs +17 -8
- package/esm2022/components/transfer-picker/interface.mjs +1 -1
- package/esm2022/components/transfer-picker/search/search.component.mjs +9 -5
- package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +44 -21
- package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +7 -6
- package/esm2022/components/transfer-picker/transfer-picker.component.mjs +9 -7
- package/esm2022/components/transfer-picker/transfer-picker.service.mjs +10 -7
- package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +3 -3
- package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
- package/esm2022/directives/autofocus/autofocus.directive.mjs +7 -7
- package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
- package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
- package/esm2022/directives/debounce/debounce-keyup.directive.mjs +5 -5
- package/esm2022/directives/digit-only/digit-only.directive.mjs +20 -4
- package/esm2022/directives/digit-only/mask.directive.mjs +3 -3
- package/esm2022/directives/digit-only/public-api.mjs +1 -1
- package/esm2022/directives/equal-validator/equal-validator.directive.mjs +3 -3
- package/esm2022/lib/mock-api/mock-api.interceptor.mjs +3 -3
- package/esm2022/lib/mock-api/mock-api.service.mjs +3 -3
- package/esm2022/pipes/bytes/bytes.pipe.mjs +3 -3
- package/esm2022/pipes/date-format/date-format.pipe.mjs +3 -3
- package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +3 -3
- package/esm2022/pipes/group-by/group-by.pipe.mjs +3 -3
- package/esm2022/pipes/keys/keys.pipe.mjs +3 -3
- package/esm2022/pipes/secure/secure-pipe.mjs +5 -5
- package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
- package/esm2022/services/alert/alert.service.mjs +16 -16
- package/esm2022/services/config/config.constants.mjs +1 -1
- package/esm2022/services/config/config.service.mjs +3 -3
- package/esm2022/services/config/urlStateConfig.service.mjs +5 -5
- package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
- package/esm2022/services/confirmation/dialog/dialog.component.mjs +6 -6
- package/esm2022/services/data/data.service.mjs +4 -4
- package/esm2022/services/loading/loading.interceptor.mjs +3 -3
- package/esm2022/services/loading/loading.service.mjs +3 -3
- package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
- package/esm2022/services/media-watcher/media-watcher.service.mjs +3 -3
- package/esm2022/services/platform/platform.service.mjs +3 -3
- package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
- package/esm2022/services/title/title.service.mjs +3 -3
- package/esm2022/services/translation/translation.service.mjs +3 -3
- package/esm2022/services/utils/utils.service.mjs +3 -3
- package/fesm2022/cmat-animations.mjs.map +1 -1
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-breadcrumb.mjs +21 -22
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +4 -13
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +72 -49
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +151 -0
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -0
- package/fesm2022/cmat-components-date-range.mjs +12 -8
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +7 -7
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +3 -3
- package/fesm2022/cmat-components-highlight.mjs +6 -6
- package/fesm2022/cmat-components-json-editor.mjs +183 -0
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -0
- package/fesm2022/cmat-components-masonry.mjs +3 -3
- package/fesm2022/cmat-components-material-color-picker.mjs +5 -5
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +51 -52
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +70 -74
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-pagination.mjs +15 -16
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +14 -15
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +4 -4
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-progress-bar.mjs +10 -7
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +13 -5
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +13 -16
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +12 -28
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs +21 -19
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +13 -13
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +81 -45
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
- package/fesm2022/cmat-directives-autofocus.mjs +6 -6
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
- package/fesm2022/cmat-directives-debounce.mjs +10 -10
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +22 -6
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-lib-mock-api.mjs +6 -6
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-secure.mjs +4 -4
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs +15 -15
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-config.mjs +7 -7
- package/fesm2022/cmat-services-config.mjs.map +1 -1
- package/fesm2022/cmat-services-confirmation.mjs +8 -8
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs +3 -3
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-loading.mjs +6 -6
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-translation.mjs +3 -3
- package/fesm2022/cmat-services-utils.mjs +3 -3
- package/package.json +46 -36
- package/pipes/secure/secure-pipe.d.ts +1 -1
- package/services/alert/alert.service.d.ts +4 -4
- package/services/config/config.constants.d.ts +1 -1
- package/services/config/urlStateConfig.service.d.ts +3 -2
- package/styles/components/bundle.scss +559 -0
- package/styles/overrides/angular-material.scss +16 -16
- package/styles/styles.scss +6 -1
- package/styles/tailwind.scss +4 -2
- package/components/breadcrumb/breadcrumb.component.scss +0 -18
- package/components/card/card.component.scss +0 -63
- package/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.scss +0 -43
- package/components/cascade/cascade-list/cascade-list.component.scss +0 -22
- package/components/cascade/cascade-menu/cascade-menu.component.scss +0 -48
- package/components/date-range/date-range.component.scss +0 -232
- package/components/drawer/drawer.component.scss +0 -133
- package/components/highlight/highlight.component.scss +0 -3
- package/components/material-color-picker/material-color-picker.component.scss +0 -5
- package/components/material-datetimepicker/calendar-body.scss +0 -58
- package/components/material-datetimepicker/calendar.scss +0 -194
- package/components/material-datetimepicker/clock.scss +0 -90
- package/components/material-datetimepicker/datetimepicker-content.scss +0 -151
- package/components/material-datetimepicker/datetimepicker.scss +0 -145
- package/components/material-datetimepicker/time.scss +0 -82
- package/components/navigation/horizontal/horizontal.component.scss +0 -167
- package/components/navigation/vertical/styles/appearances/compact.scss +0 -103
- package/components/navigation/vertical/styles/appearances/default.scss +0 -550
- package/components/navigation/vertical/styles/appearances/dense.scss +0 -171
- package/components/navigation/vertical/styles/appearances/thin.scss +0 -91
- package/components/navigation/vertical/vertical.component.scss +0 -4
- package/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.scss +0 -19
- package/components/popover/popover.component.scss +0 -174
- package/components/progress-bar/progress-bar.component.scss +0 -7
- package/components/rating/rating.component.scss +0 -33
- package/components/select-search/select-search.component.scss +0 -126
- package/components/select-tree/select-tree.component.scss +0 -54
- package/components/timeline/timeline-item/timeline-item.component.scss +0 -329
- package/components/timeline/timeline.component.scss +0 -42
- package/components/toast/toast-modal.component.scss +0 -119
- package/components/toast/toast.component.scss +0 -62
- package/components/transfer-picker/filter/filter.component.scss +0 -40
- package/components/transfer-picker/search/search.component.scss +0 -7
- package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.scss +0 -25
- package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.scss +0 -27
- package/components/transfer-picker/transfer-picker.component.scss +0 -8
- package/esm2022/animations/drop.mjs +0 -26
- package/styles/main.scss +0 -9
- /package/animations/{drop.d.ts → dropdown.d.ts} +0 -0
|
@@ -11,12 +11,14 @@ export declare class CmatDigitOnlyDirective implements OnChanges {
|
|
|
11
11
|
max: number;
|
|
12
12
|
pattern?: string | RegExp;
|
|
13
13
|
inputElement: HTMLInputElement;
|
|
14
|
+
value: string;
|
|
14
15
|
private _regex;
|
|
15
16
|
private _hasDecimalPoint;
|
|
16
17
|
private _hasNegativeSign;
|
|
17
18
|
private _navigationKeys;
|
|
18
19
|
constructor(el: ElementRef);
|
|
19
20
|
onBeforeInput(e: InputEvent): any;
|
|
21
|
+
onInputChange(event: any): void;
|
|
20
22
|
onKeyDown(e: KeyboardEvent): any;
|
|
21
23
|
onPaste(event: any): void;
|
|
22
24
|
onDrop(event: DragEvent): void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
export const dropdown = trigger('dropdown', [
|
|
3
|
+
state('*', style({
|
|
4
|
+
opacity: 0,
|
|
5
|
+
height: 0,
|
|
6
|
+
border: 0,
|
|
7
|
+
padding: 0,
|
|
8
|
+
visibility: 'hidden',
|
|
9
|
+
})),
|
|
10
|
+
state('false', style({
|
|
11
|
+
opacity: 0,
|
|
12
|
+
height: 0,
|
|
13
|
+
border: 0,
|
|
14
|
+
padding: 0,
|
|
15
|
+
visibility: 'hidden',
|
|
16
|
+
})),
|
|
17
|
+
state('true', style({
|
|
18
|
+
opacity: 1,
|
|
19
|
+
height: '*',
|
|
20
|
+
border: '*',
|
|
21
|
+
padding: '*',
|
|
22
|
+
visibility: 'inherit',
|
|
23
|
+
})),
|
|
24
|
+
transition('* => *', animate('250ms ease-out'))
|
|
25
|
+
]);
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2FuaW1hdGlvbnMvZHJvcGRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBNEIsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFekcsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUE2QixPQUFPLENBQ3JELFVBQVUsRUFBRTtJQUNSLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ2IsT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLEVBQUUsQ0FBQztRQUNULE1BQU0sRUFBRSxDQUFDO1FBQ1QsT0FBTyxFQUFFLENBQUM7UUFDVixVQUFVLEVBQUUsUUFBUTtLQUN2QixDQUFDLENBQUM7SUFDSCxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNWLE1BQU0sRUFBRSxDQUFDO1FBQ1QsTUFBTSxFQUFFLENBQUM7UUFDVCxPQUFPLEVBQUUsQ0FBQztRQUNWLFVBQVUsRUFBRSxRQUFRO0tBQ3ZCLENBQUMsQ0FBQztJQUNILEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsTUFBTSxFQUFFLEdBQUc7UUFDWCxNQUFNLEVBQUUsR0FBRztRQUNYLE9BQU8sRUFBRSxHQUFHO1FBQ1osVUFBVSxFQUFFLFNBQVM7S0FDeEIsQ0FBQyxDQUFDO0lBQ0gsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztDQUNsRCxDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FuaW1hdGUsIEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duOiBBbmltYXRpb25UcmlnZ2VyTWV0YWRhdGEgPSB0cmlnZ2VyKFxuICAgICdkcm9wZG93bicsIFtcbiAgICAgICAgc3RhdGUoJyonLCBzdHlsZSh7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICAgICAgICB9KSksXG4gICAgICAgIHN0YXRlKCdmYWxzZScsIHN0eWxlKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgIH0pKSxcbiAgICAgICAgc3RhdGUoJ3RydWUnLCBzdHlsZSh7XG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgaGVpZ2h0OiAnKicsXG4gICAgICAgICAgICBib3JkZXI6ICcqJyxcbiAgICAgICAgICAgIHBhZGRpbmc6ICcqJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICdpbmhlcml0JyxcbiAgICAgICAgfSkpLFxuICAgICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKCcyNTBtcyBlYXNlLW91dCcpKVxuICAgIF1cbik7XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dropdown } from './
|
|
1
|
+
import { dropdown } from './dropdown';
|
|
2
2
|
import { expandCollapse } from './expand-collapse';
|
|
3
3
|
import { fadeIn, fadeInBottom, fadeInLeft, fadeInRight, fadeInTop, fadeOut, fadeOutBottom, fadeOutLeft, fadeOutRight, fadeOutTop } from './fade';
|
|
4
4
|
import { shake } from './shake';
|
|
@@ -16,4 +16,4 @@ export const cmatAnimations = [
|
|
|
16
16
|
dropdown,
|
|
17
17
|
transform
|
|
18
18
|
];
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvYW5pbWF0aW9ucy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFDSCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsU0FBUyxFQUNULE9BQU8sRUFDUCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ2IsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQ0gsYUFBYSxFQUNiLFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEVBQ1osYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixjQUFjO0lBQ2QsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVc7SUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVk7SUFDN0QsS0FBSztJQUNMLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVk7SUFDcEQsV0FBVyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYTtJQUN4RCxNQUFNLEVBQUUsT0FBTztJQUNmLFFBQVE7SUFDUixTQUFTO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRyb3Bkb3duIH0gZnJvbSAnLi9kcm9wZG93bic7XHJcbmltcG9ydCB7IGV4cGFuZENvbGxhcHNlIH0gZnJvbSAnLi9leHBhbmQtY29sbGFwc2UnO1xyXG5pbXBvcnQge1xyXG4gICAgZmFkZUluLFxyXG4gICAgZmFkZUluQm90dG9tLFxyXG4gICAgZmFkZUluTGVmdCxcclxuICAgIGZhZGVJblJpZ2h0LFxyXG4gICAgZmFkZUluVG9wLFxyXG4gICAgZmFkZU91dCxcclxuICAgIGZhZGVPdXRCb3R0b20sXHJcbiAgICBmYWRlT3V0TGVmdCxcclxuICAgIGZhZGVPdXRSaWdodCxcclxuICAgIGZhZGVPdXRUb3BcclxufSBmcm9tICcuL2ZhZGUnO1xyXG5pbXBvcnQgeyBzaGFrZSB9IGZyb20gJy4vc2hha2UnO1xyXG5pbXBvcnQge1xyXG4gICAgc2xpZGVJbkJvdHRvbSxcclxuICAgIHNsaWRlSW5MZWZ0LFxyXG4gICAgc2xpZGVJblJpZ2h0LFxyXG4gICAgc2xpZGVJblRvcCxcclxuICAgIHNsaWRlT3V0Qm90dG9tLFxyXG4gICAgc2xpZGVPdXRMZWZ0LFxyXG4gICAgc2xpZGVPdXRSaWdodCxcclxuICAgIHNsaWRlT3V0VG9wXHJcbn0gZnJvbSAnLi9zbGlkZSc7XHJcbmltcG9ydCB7IHpvb21Jbiwgem9vbU91dCB9IGZyb20gJy4vem9vbSc7XHJcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4vdHJhbnNmb3JtJztcclxuXHJcbmV4cG9ydCBjb25zdCBjbWF0QW5pbWF0aW9ucyA9IFtcclxuICAgIGV4cGFuZENvbGxhcHNlLFxyXG4gICAgZmFkZUluLCBmYWRlSW5Ub3AsIGZhZGVJbkJvdHRvbSwgZmFkZUluTGVmdCwgZmFkZUluUmlnaHQsXHJcbiAgICBmYWRlT3V0LCBmYWRlT3V0VG9wLCBmYWRlT3V0Qm90dG9tLCBmYWRlT3V0TGVmdCwgZmFkZU91dFJpZ2h0LFxyXG4gICAgc2hha2UsXHJcbiAgICBzbGlkZUluVG9wLCBzbGlkZUluQm90dG9tLCBzbGlkZUluTGVmdCwgc2xpZGVJblJpZ2h0LFxyXG4gICAgc2xpZGVPdXRUb3AsIHNsaWRlT3V0Qm90dG9tLCBzbGlkZU91dExlZnQsIHNsaWRlT3V0UmlnaHQsXHJcbiAgICB6b29tSW4sIHpvb21PdXQsXHJcbiAgICBkcm9wZG93bixcclxuICAgIHRyYW5zZm9ybVxyXG5dO1xyXG4iXX0=
|
|
@@ -179,10 +179,10 @@ export class DayjsDateAdapter extends DateAdapter {
|
|
|
179
179
|
dayjs.extend(localeData);
|
|
180
180
|
this.setLocale(dateLocale);
|
|
181
181
|
}
|
|
182
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
183
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
182
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: CMAT_DAYJS_DATE_ADAPTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
183
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDateAdapter }); }
|
|
184
184
|
}
|
|
185
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDateAdapter, decorators: [{
|
|
186
186
|
type: Injectable
|
|
187
187
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
188
188
|
type: Optional
|
|
@@ -86,10 +86,10 @@ export class DayjsDatetimeAdapter extends DatetimeAdapter {
|
|
|
86
86
|
_getDateInNextMonth(date) {
|
|
87
87
|
return super.clone(date).date(1).add(1, 'month');
|
|
88
88
|
}
|
|
89
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
90
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDatetimeAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
90
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDatetimeAdapter }); }
|
|
91
91
|
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDatetimeAdapter, decorators: [{
|
|
93
93
|
type: Injectable
|
|
94
94
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
95
95
|
type: Optional
|
|
@@ -116,10 +116,10 @@ export class CNativeDatetimeAdapter extends DatetimeAdapter {
|
|
|
116
116
|
}
|
|
117
117
|
return result;
|
|
118
118
|
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
120
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
119
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CNativeDatetimeAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
120
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CNativeDatetimeAdapter }); }
|
|
121
121
|
}
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CNativeDatetimeAdapter, decorators: [{
|
|
123
123
|
type: Injectable
|
|
124
124
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
125
125
|
type: Optional
|
|
@@ -6,10 +6,10 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
* Usage: refer to the demo - app.component.html
|
|
7
7
|
*/
|
|
8
8
|
export class CmatBreadcrumbItemDirective {
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
10
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatBreadcrumbItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: CmatBreadcrumbItemDirective, isStandalone: true, selector: "[cmatBreadcrumbItem]", ngImport: i0 }); }
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatBreadcrumbItemDirective, decorators: [{
|
|
13
13
|
type: Directive,
|
|
14
14
|
args: [{
|
|
15
15
|
selector: '[cmatBreadcrumbItem]',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { map } from 'rxjs/operators';
|
|
3
3
|
import { CmatBreadcrumbItemDirective } from './breadcrumb-item.directive';
|
|
4
|
-
import { AsyncPipe, NgClass,
|
|
4
|
+
import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';
|
|
5
5
|
import { RouterLink } from '@angular/router';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "./breadcrumb.service";
|
|
@@ -9,21 +9,20 @@ export class CmatBreadcrumbComponent {
|
|
|
9
9
|
constructor(_breadcrumbService) {
|
|
10
10
|
this._breadcrumbService = _breadcrumbService;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* 如果为true,即使没有任何映射标签,面包屑也会自动生成
|
|
13
|
+
* 默认标签与路由segment相同
|
|
14
14
|
*/
|
|
15
15
|
this.autoGenerate = true;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* 默认情况下,查询参数将与breadcrumbs一起保留
|
|
18
18
|
*/
|
|
19
19
|
this.preserveQueryParams = true;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* 默认情况下,fragments参数将与breadcrumbs一起保留
|
|
22
22
|
*/
|
|
23
23
|
this.preserveFragment = true;
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
26
|
-
* This will benefit to override styles that are conflicting
|
|
25
|
+
* 可提供覆盖样式,增加特异性
|
|
27
26
|
*/
|
|
28
27
|
this.class = '';
|
|
29
28
|
this._separator = '/';
|
|
@@ -32,12 +31,12 @@ export class CmatBreadcrumbComponent {
|
|
|
32
31
|
return this._separator;
|
|
33
32
|
}
|
|
34
33
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
34
|
+
* 面包屑分隔符, 默认'/'.
|
|
35
|
+
* 用户可以通过传递字符串或模板来自定义分隔符
|
|
37
36
|
*
|
|
38
|
-
*
|
|
37
|
+
* 字符串 --> Ex: <cmat-breadcrumb separator="-"></cmat-breadcrumb>
|
|
39
38
|
*
|
|
40
|
-
*
|
|
39
|
+
* 模板 --> Ex: <cmat-breadcrumb [separator]="separatorTemplate"></cmat-breadcrumb>
|
|
41
40
|
* <ng-template #separatorTemplate><mat-icon>arrow_right</mat-icon></ng-template>
|
|
42
41
|
*/
|
|
43
42
|
set separator(value) {
|
|
@@ -46,7 +45,7 @@ export class CmatBreadcrumbComponent {
|
|
|
46
45
|
this._separator = undefined;
|
|
47
46
|
}
|
|
48
47
|
else {
|
|
49
|
-
this.separatorTemplate =
|
|
48
|
+
this.separatorTemplate = null;
|
|
50
49
|
this._separator = value || '/';
|
|
51
50
|
}
|
|
52
51
|
}
|
|
@@ -70,12 +69,12 @@ export class CmatBreadcrumbComponent {
|
|
|
70
69
|
};
|
|
71
70
|
})));
|
|
72
71
|
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatBreadcrumbComponent, deps: [{ token: i1.CmatBreadcrumbService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CmatBreadcrumbComponent, isStandalone: true, selector: "cmat-breadcrumb", inputs: { autoGenerate: "autoGenerate", preserveQueryParams: "preserveQueryParams", preserveFragment: "preserveFragment", class: "class", anchorTarget: "anchorTarget", separator: "separator" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: CmatBreadcrumbItemDirective, descendants: true, read: TemplateRef }], exportAs: ["cmatBreadcrumb"], ngImport: i0, template: "<nav aria-label=\"breadcrumb\" class=\"m-0\" [ngClass]=\"class\">\n <ol class=\"flex items-center flex-wrap m-0 p-0\">\n @for (\n breadcrumb of breadcrumbs$ | async; track\n breadcrumb; let isLast = $last; let isFirst = $first; let index = $index; let count = $count) {\n <li class=\"list-none\">\n @if (!isLast) {\n <a class=\"cmat-breadcrumb-link\"\n [ngClass]=\"{ 'pointer-events-none cursor-not-allowed': breadcrumb.disable }\"\n [attr.aria-disabled]=\"breadcrumb.disable\" [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\"\n rel=\"noopener noreferrer\" [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor( breadcrumb,breadcrumb.routeLink)\r\n : breadcrumb.routeLink\" [queryParams]=\"preserveQueryParams ? breadcrumb.queryParams : undefined\"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\n [target]=\"anchorTarget ? anchorTarget : '_self'\">\n <ng-container *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count\r\n }\r\n \"></ng-container>\r\n @if (!itemTemplate) {\n {{\n breadcrumb.label\n }}\n }\n </a>\n }\n @if (isLast) {\n <span class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count\r\n }\r\n \"></ng-container>\r\n @if (!itemTemplate) {\n {{\n breadcrumb.label\n }}\n }\n </span>\n }\n </li>\n @if (!isLast) {\n <li class=\"flex select-none mx-4\" aria-hidden=\"true\" role=\"separator\">\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\n @if (separatorTemplate===null) {\n {{ separator }}\n }\n </li>\n }\n}\n</ol>\n</nav>", styles: ["cmat-breadcrumb .cmat-breadcrumb-link{display:flex;align-items:center;white-space:nowrap;color:inherit;text-decoration:none;transition:text-decoration .3s;cursor:pointer}cmat-breadcrumb .cmat-breadcrumb-link:hover{text-decoration-line:underline}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
75
74
|
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatBreadcrumbComponent, decorators: [{
|
|
77
76
|
type: Component,
|
|
78
|
-
args: [{ selector: 'cmat-breadcrumb', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatBreadcrumb', standalone: true, imports: [
|
|
77
|
+
args: [{ selector: 'cmat-breadcrumb', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatBreadcrumb', standalone: true, imports: [NgClass, AsyncPipe, RouterLink, NgTemplateOutlet], template: "<nav aria-label=\"breadcrumb\" class=\"m-0\" [ngClass]=\"class\">\n <ol class=\"flex items-center flex-wrap m-0 p-0\">\n @for (\n breadcrumb of breadcrumbs$ | async; track\n breadcrumb; let isLast = $last; let isFirst = $first; let index = $index; let count = $count) {\n <li class=\"list-none\">\n @if (!isLast) {\n <a class=\"cmat-breadcrumb-link\"\n [ngClass]=\"{ 'pointer-events-none cursor-not-allowed': breadcrumb.disable }\"\n [attr.aria-disabled]=\"breadcrumb.disable\" [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\"\n rel=\"noopener noreferrer\" [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor( breadcrumb,breadcrumb.routeLink)\r\n : breadcrumb.routeLink\" [queryParams]=\"preserveQueryParams ? breadcrumb.queryParams : undefined\"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\n [target]=\"anchorTarget ? anchorTarget : '_self'\">\n <ng-container *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count\r\n }\r\n \"></ng-container>\r\n @if (!itemTemplate) {\n {{\n breadcrumb.label\n }}\n }\n </a>\n }\n @if (isLast) {\n <span class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count\r\n }\r\n \"></ng-container>\r\n @if (!itemTemplate) {\n {{\n breadcrumb.label\n }}\n }\n </span>\n }\n </li>\n @if (!isLast) {\n <li class=\"flex select-none mx-4\" aria-hidden=\"true\" role=\"separator\">\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\n @if (separatorTemplate===null) {\n {{ separator }}\n }\n </li>\n }\n}\n</ol>\n</nav>", styles: ["cmat-breadcrumb .cmat-breadcrumb-link{display:flex;align-items:center;white-space:nowrap;color:inherit;text-decoration:none;transition:text-decoration .3s;cursor:pointer}cmat-breadcrumb .cmat-breadcrumb-link:hover{text-decoration-line:underline}\n"] }]
|
|
79
78
|
}], ctorParameters: () => [{ type: i1.CmatBreadcrumbService }], propDecorators: { itemTemplate: [{
|
|
80
79
|
type: ContentChild,
|
|
81
80
|
args: [CmatBreadcrumbItemDirective, { static: false, read: TemplateRef }]
|
|
@@ -92,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
92
91
|
}], separator: [{
|
|
93
92
|
type: Input
|
|
94
93
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxpQkFBaUIsR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUVqSSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBWTdDLE1BQU0sT0FBTyx1QkFBdUI7SUE2Q2hDLFlBQ1ksa0JBQXlDO1FBQXpDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFsQ3JEOzs7V0FHRztRQUNNLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRTdCOztXQUVHO1FBQ00sd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRXBDOztXQUVHO1FBQ00scUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRWpDOzs7V0FHRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7UUFXWixlQUFVLEdBQWtCLEdBQUcsQ0FBQztJQUdpQixDQUFDO0lBRTFELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBQ0Q7Ozs7Ozs7O09BUUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFpQztRQUMzQyxJQUFJLEtBQUssWUFBWSxXQUFXLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztTQUMvQjthQUFNO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLFdBQXVDLEVBQUUsRUFBRSxDQUFDLFdBQVc7YUFDdkQsTUFBTSxDQUFDLENBQUMsVUFBb0MsRUFBRSxFQUFFO1lBQzdDLGlHQUFpRztZQUNqRyx1RUFBdUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztRQUM1QyxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxVQUFvQyxFQUFFLEVBQUU7WUFDMUMsbURBQW1EO1lBQ25ELHNGQUFzRjtZQUN0RixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBQ25ELE9BQU87Z0JBQ0gsR0FBRyxVQUFVO2dCQUNiLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsSUFBSSxTQUFTO2FBQ25FLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUM7SUFDTixDQUFDOzhHQTVGUSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix1VEFTbEIsMkJBQTJCLDJCQUF5QixXQUFXLDJEQzNCakYsZ2dGQTJETSw0WEQzQ1EsSUFBSSw2RkFBRSxLQUFLLG1IQUFFLE9BQU8sK0VBQUUsU0FBUyw4Q0FBRSxVQUFVOzsyRkFFNUMsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNJLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUM7MEZBWXRELFlBQVk7c0JBRFgsWUFBWTt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFPdEUsWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBS0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQXdCRixTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9icmVhZGNydW1iLWl0ZW0uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uLCBDbWF0QnJlYWRjcnVtYlNlcnZpY2UgfSBmcm9tICcuL2JyZWFkY3J1bWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LWJyZWFkY3J1bWInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0QnJlYWRjcnVtYicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nSWYsIE5nRm9yLCBOZ0NsYXNzLCBBc3luY1BpcGUsIFJvdXRlckxpbmtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0QnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIEJyZWFkY3J1bWIgaXRlbSBjYW4gYmUgY3VzdG9taXplZCB3aXRoIHRoaXMgdGVtcGxhdGVcclxuICAgICAqIFRlbXBsYXRlIGNvbnRleHQgaXMgcHJvdmlkZWQgbGFiZWwsIGFkZGl0aW9uYWwgaW5mbywgZmlyc3QgYW5kIGxhc3QgaW5kZXhlc1xyXG4gICAgICogVXNlIGNhc2VzOlxyXG4gICAgICogMSkgQWRkIGFuIGljb24gYWxvbmcgd2l0aCBsYWJlbFxyXG4gICAgICogMikgaTE4bi4ge3ticmVhZGNydW1iIHwgdHJhbnNsYXRlfX0gb3Ige3ticmVhZGNydW1iIHwgdHJhbnNsb2NvfX1cclxuICAgICAqIDMpIENoYW5nZSB0ZXh0IGNhc2Uge3ticmVhZGNydW1iIHwgdGl0bGVjYXNlfX1cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChDbWF0QnJlYWRjcnVtYkl0ZW1EaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICAgIGl0ZW1UZW1wbGF0ZTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgdHJ1ZSwgYnJlYWRjcnVtYiBpcyBhdXRvIGdlbmVyYXRlZCBldmVuIHdpdGhvdXQgYW55IG1hcHBpbmcgbGFiZWxcclxuICAgICAqIERlZmF1bHQgbGFiZWwgaXMgc2FtZSBhcyByb3V0ZSBzZWdtZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGF1dG9HZW5lcmF0ZSA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCeSBkZWZhdWx0IHF1ZXJ5IHBhcmFtcyB3aWxsIGJlIHByZXNlcnZlZCB3aXRoIGJyZWFkY3J1bWJzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHByZXNlcnZlUXVlcnlQYXJhbXMgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnkgZGVmYXVsdCBxdWVyeSBmcmFnbWVudHMgd2lsbCBiZSBwcmVzZXJ2ZWQgd2l0aCBicmVhZGNydW1ic1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwcmVzZXJ2ZUZyYWdtZW50ID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGN1c3RvbSBjbGFzcyBwcm92aWRlZCBieSBjb25zdW1lciB0byBpbmNyZWFzZSBzcGVjaWZpY2l0eVxyXG4gICAgICogVGhpcyB3aWxsIGJlbmVmaXQgdG8gb3ZlcnJpZGUgc3R5bGVzIHRoYXQgYXJlIGNvbmZsaWN0aW5nXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGNsYXNzID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhbmNob3JUYXJnZXQgPSBcIl9ibGFua1wiIG1ha2VzIHRoZSBicmVhZGNydW1iIGxpbmsgb3BlbiBpbiBhIG5ldyB0YWJcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgYW5jaG9yVGFyZ2V0OiAnX2JsYW5rJyB8IHZvaWQ7XHJcblxyXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBicmVhZGNydW1icyQ6IE9ic2VydmFibGU8Q21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10+O1xyXG4gICAgc2VwYXJhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgdm9pZDtcclxuXHJcbiAgICBwcml2YXRlIF9zZXBhcmF0b3I6IHN0cmluZyB8IHZvaWQgPSAnLyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfYnJlYWRjcnVtYlNlcnZpY2U6IENtYXRCcmVhZGNydW1iU2VydmljZSkgeyB9XHJcblxyXG4gICAgZ2V0IHNlcGFyYXRvcigpOiBzdHJpbmcgfCB2b2lkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXBhcmF0b3IgYmV0d2VlbiBicmVhZGNydW1icywgZGVmYXVsdHMgdG8gJy8nLlxyXG4gICAgICogVXNlciBjYW4gY3VzdG9taXplIHNlcGFyYXRvciBlaXRoZXIgYnkgcGFzc2luZyBhIFN0cmluZyBvciBUZW1wbGF0ZVxyXG4gICAgICpcclxuICAgICAqIFN0cmluZyAtLT4gRXg6IDxjbWF0LWJyZWFkY3J1bWIgc2VwYXJhdG9yPVwiLVwiPiA8L2NtYXQtYnJlYWRjcnVtYj5cclxuICAgICAqXHJcbiAgICAgKiBUZW1wbGF0ZSAtLT4gRXg6IDxjbWF0LWJyZWFkY3J1bWIgW3NlcGFyYXRvcl09XCJzZXBhcmF0b3JUZW1wbGF0ZVwiPiA8L2NtYXQtYnJlYWRjcnVtYj5cclxuICAgICAqIDxuZy10ZW1wbGF0ZSAjc2VwYXJhdG9yVGVtcGxhdGU+PG1hdC1pY29uPmFycm93X3JpZ2h0PC9tYXQtaWNvbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHNlcGFyYXRvcih2YWx1ZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD4pIHtcclxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLnNlcGFyYXRvclRlbXBsYXRlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlcGFyYXRvciA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlcGFyYXRvclRlbXBsYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXBhcmF0b3IgPSB2YWx1ZSB8fCAnLyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYnMkID0gdGhpcy5fYnJlYWRjcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoYnJlYWRjcnVtYnM6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdKSA9PiBicmVhZGNydW1ic1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYnJlYWRjcnVtYjogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXN1YWxseSwgYnJlYWRjcnVtYiBsaXN0IGNhbiBjb250YWluIGEgY29tYmluYXRpb24gb2YgYXV0byBnZW5lcmF0ZWQgYW5kIHVzZXIgc3BlY2lmaWVkIGxhYmVsc1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZmlsdGVycyBhdXRvZ2VuZXJhdGVkIGxhYmVscyBpbiBjYXNlIG9mIFwiW2F1dG9HZW5lcmF0ZV06IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvR2VuZXJhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhYnJlYWRjcnVtYi5pc0F1dG9HZW5lcmF0ZWRMYWJlbDtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAubWFwKChicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgbXV0YXRlIGJyZWFkY3J1bWIgYXMgaXRzIHNvdXJjZSBvZiB0cnV0aC5cclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBjYW4gYmUgc2NlbmFyaW9zIHdoZXJlIHdlIGNhbiBoYXZlIG11bHRpcGxlIGNtYXQtYnJlYWRjcnVtYiBpbnN0YW5jZXMgaW4gcGFnZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcm91dGVJbnRlcmNlcHRvciwgcm91dGVMaW5rIH0gPSBicmVhZGNydW1iO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlTGluazogcm91dGVJbnRlcmNlcHRvcj8uKGJyZWFkY3J1bWIscm91dGVMaW5rKSB8fCByb3V0ZUxpbmssXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5hdiBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiIGNsYXNzPVwiY21hdC1icmVhZGNydW1iLXJvb3QgbS0wXCIgW25nQ2xhc3NdPVwiY2xhc3NcIj5cclxuICA8b2wgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgbS0wIHAtMFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJcclxuICAgICAgICBsZXQgYnJlYWRjcnVtYiBvZiBicmVhZGNydW1icyQgfCBhc3luYztcclxuICAgICAgICBsYXN0IGFzIGlzTGFzdDtcclxuICAgICAgICBmaXJzdCBhcyBpc0ZpcnN0O1xyXG4gICAgICAgIGluZGV4IGFzIGluZGV4O1xyXG4gICAgICAgIGNvdW50IGFzIGNvdW50XHJcbiAgICAgIFwiPlxyXG4gICAgICA8bGkgY2xhc3M9XCJsaXN0LW5vbmVcIj5cclxuICAgICAgICA8YSAqbmdJZj1cIiFpc0xhc3RcIiBjbGFzcz1cImNtYXQtYnJlYWRjcnVtYi1saW5rXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3BvaW50ZXItZXZlbnRzLW5vbmUgY3Vyc29yLW5vdC1hbGxvd2VkJzogYnJlYWRjcnVtYi5kaXNhYmxlIH1cIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJicmVhZGNydW1iLmRpc2FibGVcIiBbYXR0ci50YWJJbmRleF09XCJicmVhZGNydW1iLmRpc2FibGUgPyAtMSA6IDBcIlxyXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIFtyb3V0ZXJMaW5rXT1cIlxyXG4gICAgICAgICAgICBicmVhZGNydW1iLnJvdXRlSW50ZXJjZXB0b3JcclxuICAgICAgICAgICAgICA/IGJyZWFkY3J1bWIucm91dGVJbnRlcmNlcHRvciggYnJlYWRjcnVtYixicmVhZGNydW1iLnJvdXRlTGluaylcclxuICAgICAgICAgICAgICA6IGJyZWFkY3J1bWIucm91dGVMaW5rXCIgW3F1ZXJ5UGFyYW1zXT1cInByZXNlcnZlUXVlcnlQYXJhbXMgPyBicmVhZGNydW1iLnF1ZXJ5UGFyYW1zIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgIFtmcmFnbWVudF09XCJwcmVzZXJ2ZUZyYWdtZW50ID8gYnJlYWRjcnVtYi5mcmFnbWVudCA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICBbdGFyZ2V0XT1cImFuY2hvclRhcmdldCA/IGFuY2hvclRhcmdldCA6ICdfc2VsZidcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgJGltcGxpY2l0OiBicmVhZGNydW1iLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgaW5mbzogYnJlYWRjcnVtYi5pbmZvLFxyXG4gICAgICAgICAgICAgICAgbGFzdDogaXNMYXN0LFxyXG4gICAgICAgICAgICAgICAgZmlyc3Q6IGlzRmlyc3QsXHJcbiAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgICAgICAgICBjb3VudDogY291bnRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtVGVtcGxhdGVcIj57e1xyXG4gICAgICAgICAgICBicmVhZGNydW1iLmxhYmVsXHJcbiAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTGFzdFwiIGNsYXNzPVwiY21hdC1icmVhZGNydW1iLXRyYWlsIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICRpbXBsaWNpdDogYnJlYWRjcnVtYi5sYWJlbCxcclxuICAgICAgICAgICAgICAgIGluZm86IGJyZWFkY3J1bWIuaW5mbyxcclxuICAgICAgICAgICAgICAgIGxhc3Q6IGlzTGFzdCxcclxuICAgICAgICAgICAgICAgIGZpcnN0OiBpc0ZpcnN0LFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxyXG4gICAgICAgICAgICAgICAgY291bnQ6IGNvdW50XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbVRlbXBsYXRlXCI+e3tcclxuICAgICAgICAgICAgYnJlYWRjcnVtYi5sYWJlbFxyXG4gICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9saT5cclxuXHJcbiAgICAgIDxsaSAqbmdJZj1cIiFpc0xhc3RcIiBjbGFzcz1cImZsZXggc2VsZWN0LW5vbmUgbXgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHJvbGU9XCJzZXBhcmF0b3JcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VwYXJhdG9yVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlcGFyYXRvclRlbXBsYXRlXCI+e3sgc2VwYXJhdG9yIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L29sPlxyXG48L25hdj4iXX0=
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxpQkFBaUIsR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUVqSSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVk3QyxNQUFNLE9BQU8sdUJBQXVCO0lBMkNoQyxZQUNZLGtCQUF5QztRQUF6Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBaENyRDs7O1dBR0c7UUFDTSxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUU3Qjs7V0FFRztRQUNNLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUVwQzs7V0FFRztRQUNNLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUVqQzs7V0FFRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7UUFVWixlQUFVLEdBQWtCLEdBQUcsQ0FBQztJQUdpQixDQUFDO0lBRTFELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBQ0Q7Ozs7Ozs7O09BUUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFpQztRQUMzQyxJQUFJLEtBQUssWUFBWSxXQUFXLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztTQUMvQjthQUFNO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLFdBQXVDLEVBQUUsRUFBRSxDQUFDLFdBQVc7YUFDdkQsTUFBTSxDQUFDLENBQUMsVUFBb0MsRUFBRSxFQUFFO1lBQzdDLGlHQUFpRztZQUNqRyx1RUFBdUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztRQUM1QyxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxVQUFvQyxFQUFFLEVBQUU7WUFDMUMsbURBQW1EO1lBQ25ELHNGQUFzRjtZQUN0RixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBQ25ELE9BQU87Z0JBQ0gsR0FBRyxVQUFVO2dCQUNiLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxTQUFTO2FBQ3BFLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUM7SUFDTixDQUFDOzhHQTFGUSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix1VEFTbEIsMkJBQTJCLDJCQUF5QixXQUFXLDJEQzNCakYsbzJFQWlFTSxpVERqRFEsT0FBTywrRUFBRSxTQUFTLDhDQUFFLFVBQVUsb09BQUUsZ0JBQWdCOzsyRkFFakQsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNJLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDOzBGQVkzRCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBT3RFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUtHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkF1QkYsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24sIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDbWF0QnJlYWRjcnVtYkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2JyZWFkY3J1bWItaXRlbS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24sIENtYXRCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4vYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1icmVhZGNydW1iJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGV4cG9ydEFzOiAnY21hdEJyZWFkY3J1bWInLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBBc3luY1BpcGUsIFJvdXRlckxpbmssIE5nVGVtcGxhdGVPdXRsZXRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0QnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIOmdouWMheWxkemhueebruWPr+S7peS9v+eUqOatpOaooeadv+i/m+ihjOiHquWumuS5iVxyXG4gICAgICog5qih5p2/5LiK5LiL5paH5o+Q5L6b5qCH562+44CB6ZmE5Yqg5L+h5oGv44CB56ys5LiA5Liq5ZKM5pyA5ZCO5LiA5Liq57Si5byVXHJcbiAgICAgKiDnlKjkvos6XHJcbiAgICAgKiAxKSDmt7vliqDlm77moIflkozmoIfnrb5cclxuICAgICAqIDIpIGkxOG4uIHt7YnJlYWRjcnVtYiB8IHRyYW5zbGF0ZX19XHJcbiAgICAgKiAzKSDmm7TmlLnmlofmnKzlpKflsI/lhpkge3ticmVhZGNydW1iIHwgdGl0bGVjYXNlfX1cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChDbWF0QnJlYWRjcnVtYkl0ZW1EaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICAgIGl0ZW1UZW1wbGF0ZTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog5aaC5p6c5Li6dHJ1Ze+8jOWNs+S9v+ayoeacieS7u+S9leaYoOWwhOagh+etvu+8jOmdouWMheWxkeS5n+S8muiHquWKqOeUn+aIkFxyXG4gICAgICog6buY6K6k5qCH562+5LiO6Lev55Sxc2VnbWVudOebuOWQjFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBhdXRvR2VuZXJhdGUgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog6buY6K6k5oOF5Ya15LiL77yM5p+l6K+i5Y+C5pWw5bCG5LiOYnJlYWRjcnVtYnPkuIDotbfkv53nlZlcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHJlc2VydmVRdWVyeVBhcmFtcyA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpu5jorqTmg4XlhrXkuIvvvIxmcmFnbWVudHPlj4LmlbDlsIbkuI5icmVhZGNydW1ic+S4gOi1t+S/neeVmVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwcmVzZXJ2ZUZyYWdtZW50ID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIOWPr+aPkOS+m+imhuebluagt+W8j++8jOWinuWKoOeJueW8guaAp1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBjbGFzcyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogYW5jaG9yVGFyZ2V0ID0gXCJfYmxhbmtcIiDkvb9icmVhZGNydW1i6ZO+5o6l5Zyo5paw6YCJ6aG55Y2h5Lit5omT5byAXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGFuY2hvclRhcmdldDogJ19ibGFuaycgfCB2b2lkO1xyXG5cclxuICAgIGJyZWFkY3J1bWJzJDogT2JzZXJ2YWJsZTxDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXT47XHJcbiAgICBzZXBhcmF0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XHJcblxyXG4gICAgcHJpdmF0ZSBfc2VwYXJhdG9yOiBzdHJpbmcgfCB2b2lkID0gJy8nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX2JyZWFkY3J1bWJTZXJ2aWNlOiBDbWF0QnJlYWRjcnVtYlNlcnZpY2UpIHsgfVxyXG5cclxuICAgIGdldCBzZXBhcmF0b3IoKTogc3RyaW5nIHwgdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlcGFyYXRvcjtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog6Z2i5YyF5bGR5YiG6ZqU56ymLCDpu5jorqQnLycuXHJcbiAgICAgKiDnlKjmiLflj6/ku6XpgJrov4fkvKDpgJLlrZfnrKbkuLLmiJbmqKHmnb/mnaXoh6rlrprkuYnliIbpmpTnrKZcclxuICAgICAqXHJcbiAgICAgKiDlrZfnrKbkuLIgLS0+IEV4OiA8Y21hdC1icmVhZGNydW1iIHNlcGFyYXRvcj1cIi1cIj48L2NtYXQtYnJlYWRjcnVtYj5cclxuICAgICAqXHJcbiAgICAgKiDmqKHmnb8gLS0+IEV4OiA8Y21hdC1icmVhZGNydW1iIFtzZXBhcmF0b3JdPVwic2VwYXJhdG9yVGVtcGxhdGVcIj48L2NtYXQtYnJlYWRjcnVtYj5cclxuICAgICAqIDxuZy10ZW1wbGF0ZSAjc2VwYXJhdG9yVGVtcGxhdGU+PG1hdC1pY29uPmFycm93X3JpZ2h0PC9tYXQtaWNvbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHNlcGFyYXRvcih2YWx1ZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD4pIHtcclxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLnNlcGFyYXRvclRlbXBsYXRlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlcGFyYXRvciA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlcGFyYXRvclRlbXBsYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5fc2VwYXJhdG9yID0gdmFsdWUgfHwgJy8nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJyZWFkY3J1bWJzJCA9IHRoaXMuX2JyZWFkY3J1bWJTZXJ2aWNlLmJyZWFkY3J1bWJzJC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGJyZWFkY3J1bWJzOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXSkgPT4gYnJlYWRjcnVtYnNcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGJyZWFkY3J1bWI6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzdWFsbHksIGJyZWFkY3J1bWIgbGlzdCBjYW4gY29udGFpbiBhIGNvbWJpbmF0aW9uIG9mIGF1dG8gZ2VuZXJhdGVkIGFuZCB1c2VyIHNwZWNpZmllZCBsYWJlbHNcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGZpbHRlcnMgYXV0b2dlbmVyYXRlZCBsYWJlbHMgaW4gY2FzZSBvZiBcIlthdXRvR2VuZXJhdGVdOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0dlbmVyYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWJyZWFkY3J1bWIuaXNBdXRvR2VuZXJhdGVkTGFiZWw7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLm1hcCgoYnJlYWRjcnVtYjogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IG11dGF0ZSBicmVhZGNydW1iIGFzIGl0cyBzb3VyY2Ugb2YgdHJ1dGguXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgY2FuIGJlIHNjZW5hcmlvcyB3aGVyZSB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBjbWF0LWJyZWFkY3J1bWIgaW5zdGFuY2VzIGluIHBhZ2VcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJvdXRlSW50ZXJjZXB0b3IsIHJvdXRlTGluayB9ID0gYnJlYWRjcnVtYjtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZUxpbms6IHJvdXRlSW50ZXJjZXB0b3I/LihicmVhZGNydW1iLCByb3V0ZUxpbmspIHx8IHJvdXRlTGluayxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iLCI8bmF2IGFyaWEtbGFiZWw9XCJicmVhZGNydW1iXCIgY2xhc3M9XCJtLTBcIiBbbmdDbGFzc109XCJjbGFzc1wiPlxuICA8b2wgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgbS0wIHAtMFwiPlxuICAgIEBmb3IgKFxuICAgICAgYnJlYWRjcnVtYiBvZiBicmVhZGNydW1icyQgfCBhc3luYzsgdHJhY2tcbiAgICAgIGJyZWFkY3J1bWI7IGxldCBpc0xhc3QgPSAkbGFzdDsgbGV0IGlzRmlyc3QgPSAkZmlyc3Q7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGNvdW50ID0gJGNvdW50KSB7XG4gICAgICA8bGkgY2xhc3M9XCJsaXN0LW5vbmVcIj5cbiAgICAgICAgQGlmICghaXNMYXN0KSB7XG4gICAgICAgICAgPGEgY2xhc3M9XCJjbWF0LWJyZWFkY3J1bWItbGlua1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwb2ludGVyLWV2ZW50cy1ub25lIGN1cnNvci1ub3QtYWxsb3dlZCc6IGJyZWFkY3J1bWIuZGlzYWJsZSB9XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYnJlYWRjcnVtYi5kaXNhYmxlXCIgW2F0dHIudGFiSW5kZXhdPVwiYnJlYWRjcnVtYi5kaXNhYmxlID8gLTEgOiAwXCJcbiAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgW3JvdXRlckxpbmtdPVwiXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWIucm91dGVJbnRlcmNlcHRvclxyXG4gICAgICAgICAgICAgID8gYnJlYWRjcnVtYi5yb3V0ZUludGVyY2VwdG9yKCBicmVhZGNydW1iLGJyZWFkY3J1bWIucm91dGVMaW5rKVxyXG4gICAgICAgICAgICAgIDogYnJlYWRjcnVtYi5yb3V0ZUxpbmtcIiBbcXVlcnlQYXJhbXNdPVwicHJlc2VydmVRdWVyeVBhcmFtcyA/IGJyZWFkY3J1bWIucXVlcnlQYXJhbXMgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICBbZnJhZ21lbnRdPVwicHJlc2VydmVGcmFnbWVudCA/IGJyZWFkY3J1bWIuZnJhZ21lbnQgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW3RhcmdldF09XCJhbmNob3JUYXJnZXQgPyBhbmNob3JUYXJnZXQgOiAnX3NlbGYnXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGJyZWFkY3J1bWIubGFiZWwsXHJcbiAgICAgICAgICAgICAgICBpbmZvOiBicmVhZGNydW1iLmluZm8sXHJcbiAgICAgICAgICAgICAgICBsYXN0OiBpc0xhc3QsXHJcbiAgICAgICAgICAgICAgICBmaXJzdDogaXNGaXJzdCxcclxuICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgICAgICAgIGNvdW50OiBjb3VudFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICBAaWYgKCFpdGVtVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICBicmVhZGNydW1iLmxhYmVsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIH1cbiAgICAgICAgPC9hPlxuICAgICAgfVxuICAgICAgQGlmIChpc0xhc3QpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgJGltcGxpY2l0OiBicmVhZGNydW1iLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgaW5mbzogYnJlYWRjcnVtYi5pbmZvLFxyXG4gICAgICAgICAgICAgICAgbGFzdDogaXNMYXN0LFxyXG4gICAgICAgICAgICAgICAgZmlyc3Q6IGlzRmlyc3QsXHJcbiAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgICAgICAgICBjb3VudDogY291bnRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIEBpZiAoIWl0ZW1UZW1wbGF0ZSkge1xuICAgICAgICAgIHt7XG4gICAgICAgICAgYnJlYWRjcnVtYi5sYWJlbFxuICAgICAgICAgIH19XG4gICAgICAgIH1cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gIDwvbGk+XG4gIEBpZiAoIWlzTGFzdCkge1xuICAgIDxsaSBjbGFzcz1cImZsZXggc2VsZWN0LW5vbmUgbXgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHJvbGU9XCJzZXBhcmF0b3JcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZXBhcmF0b3JUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgQGlmIChzZXBhcmF0b3JUZW1wbGF0ZT09PW51bGwpIHtcbiAgICAgICAge3sgc2VwYXJhdG9yIH19XG4gICAgICB9XG4gICAgPC9saT5cbiAgfVxufVxuPC9vbD5cbjwvbmF2PiJdfQ==
|
|
@@ -324,13 +324,13 @@ export class CmatBreadcrumbService {
|
|
|
324
324
|
}
|
|
325
325
|
return config || {};
|
|
326
326
|
}
|
|
327
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
328
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
327
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatBreadcrumbService, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
328
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatBreadcrumbService, providedIn: 'root' }); }
|
|
329
329
|
}
|
|
330
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatBreadcrumbService, decorators: [{
|
|
331
331
|
type: Injectable,
|
|
332
332
|
args: [{
|
|
333
333
|
providedIn: 'root',
|
|
334
334
|
}]
|
|
335
335
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }] });
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUEwQyxjQUFjLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFNbkMseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxHQUFHO0lBQ2YsTUFBTSxFQUFFLEdBQUc7SUFDWCxnQkFBZ0IsRUFBRSxTQUFTO0lBQzNCLGNBQWMsRUFBRSxRQUFRO0NBQzNCLENBQUM7QUFDRix5REFBeUQ7QUFFekQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBUSxFQUFXLEVBQUUsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBSzdFLE1BQU0sT0FBTyxxQkFBcUI7SUF5QjlCLFlBQW9CLGVBQStCLEVBQVUsT0FBZTtRQUF4RCxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBeEJwRSxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBRWhCLG9CQUFlLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDN0Q7Ozs7V0FJRztRQUNLLDRCQUF1QixHQUErQixFQUFFLENBQUM7UUFFakU7Ozs7V0FJRztRQUNLLHdCQUFt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LENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUM5RDtZQUNFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDNUI7UUFDRCxPQUFRLE1BQStCLElBQUksRUFBRSxDQUFDO0lBQ2xELENBQUM7OEdBellRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRmxCLE1BQU07OzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgR3VhcmRzQ2hlY2tFbmQsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENtYXRCcmVhZGNydW1iIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJGdW5jdGlvbiwgQ21hdEJyZWFkY3J1bWJPYmplY3QsIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iLmNvbmZpZyc7XHJcbmltcG9ydCB7IGlzTnVsbCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcblxyXG50eXBlIENtYXRCcmVhZGNydW1iQ29uZmlnID0gQ21hdEJyZWFkY3J1bWJPYmplY3QgfCBDbWF0QnJlYWRjcnVtYkZ1bmN0aW9uIHwgc3RyaW5nO1xyXG50eXBlIFN0b3JlTWF0Y2hlcktleSA9ICdyb3V0ZUxpbmsnIHwgJ3JvdXRlUmVnZXgnIHwgJ2FsaWFzJztcclxuZXhwb3J0IHR5cGUgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uID0gQ21hdEJyZWFkY3J1bWIgJiBDbWF0QnJlYWRjcnVtYk9iamVjdDtcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG5jb25zdCBQQVRIX1BBUkFNID0geyAgICBcclxuICAgIFBSRUZJWDogJzonLFxyXG4gICAgUkVHRVhfSURFTlRJRklFUjogJy86W14vXSsnLFxyXG4gICAgUkVHRVhfUkVQTEFDRVI6ICcvW14vXSsnLFxyXG59O1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuXHJcbmNvbnN0IEFMSUFTX1BSRUZJWCA9ICdAJztcclxuY29uc3QgaXNOb25FbXB0eSA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4gb2JqICYmIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID4gMDtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXRCcmVhZGNydW1iU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBwcml2YXRlIF9iYXNlSHJlZiA9ICcvJztcclxuXHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAvKipcclxuICAgICAqIGR5bmFtaWNCcmVhZGNydW1iU3RvcmUgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgZHluYW1pY2FsbHkgdXBkYXRlZCBicmVhZGNydW1icy5cclxuICAgICAqIEJyZWFkY3J1bWJzIGNhbiBiZSBzZXQgZnJvbSBhbnl3aGVyZSAoY29tcG9uZW50LCBzZXJ2aWNlKSBpbiB0aGUgYXBwLlxyXG4gICAgICogT24gZXZlcnkgYnJlYWRjcnVtYiB1cGRhdGUgY2hlY2sgdGhpcyBzdG9yZSBhbmQgdXNlIHRoZSBpbmZvIGlmIGF2YWlsYWJsZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZHluYW1pY0JyZWFkY3J1bWJTdG9yZTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGJyZWFkY3J1bWJMaXN0IGZvciB0aGUgY3VycmVudCByb3V0ZVxyXG4gICAgICogV2hlbiBicmVhZGNydW1iIGluZm8gaXMgY2hhbmdlZCBkeW5hbWljYWxseSwgY2hlY2sgaWYgdGhlIGN1cnJlbnRCcmVhZGNydW1icyBpcyBlZmZlY3RlZFxyXG4gICAgICogSWYgZWZmZWN0ZWQsIHVwZGF0ZSB0aGUgY2hhbmdlIGFuZCBlbWl0IGEgbmV3IHN0cmVhbVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jdXJyZW50QnJlYWRjcnVtYnM6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIF9wcmV2aW91c0JyZWFkY3J1bWJzOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnJlYWRjcnVtYnMgb2JzZXJ2YWJsZSB0byBiZSBzdWJzY3JpYmVkIGJ5IEJyZWFkY3J1bWJDb21wb25lbnRcclxuICAgICAqIEVtaXRzIG9uIGV2ZXJ5IHJvdXRlIGNoYW5nZSBPUiBkeW5hbWljIHVwZGF0ZSBvZiBicmVhZGNydW1iXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2JyZWFkY3J1bWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXT4oW10pO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgICAgICB0aGlzLl9kZXRlY3RSb3V0ZUNoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJlYWRjcnVtYnMkKCk6IE9ic2VydmFibGU8Q21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnMuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dCh2b2lkIDApO1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgYnJlYWRjcnVtYiBkeW5hbWljYWxseVxyXG4gICAgICpcclxuICAgICAqIGtleSBjYW4gYmUgYSBwYXRoIHwgYWxpYXNcclxuICAgICAqXHJcbiAgICAgKiAxKSBVc2luZyBjb21wbGV0ZSByb3V0ZSBwYXRoLiByb3V0ZSBjYW4gYmUgcGFzc2VkIHRoZSBzYW1lIHdheSB5b3UgZGVmaW5lIGFuZ3VsYXIgcm91dGVzXHJcbiAgICAgKiAtIHBhdGggY2FuIGJlIHBhc3NlZCBhcyAnZXhhY3QgcGF0aChyb3V0ZUxpbmspJyBvciAncGF0aCB3aXRoIHBhcmFtcyhyb3V0ZVJlZ2V4KSdcclxuICAgICAqIC0gdXBkYXRlIGxhYmVsIEV4OiBzZXQoJy9tZW50b3InLCAnTWVudG9yJyksIHNldCgnL21lbnRvci86aWQnLCAnTWVudG9yIERldGFpbHMnKVxyXG4gICAgICogLSBjaGFuZ2UgdmlzaWJpbGl0eSBFeDogc2V0KCcvbWVudG9yLzppZC9lZGl0JywgeyBza2lwOiB0cnVlIH0pXHJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT1IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgKiAyKSBVc2luZyByb3V0ZSBhbGlhcyAocHJlZml4ZWQgd2l0aCAnQCcpLiBhbGlhcyBzaG91bGQgYmUgdW5pcXVlIGZvciBhIHJvdXRlXHJcbiAgICAgKiAtIHVwZGF0ZSBsYWJlbCBFeDogc2V0KCdAbWVudG9yJywgJ0VuYWJsZXInKVxyXG4gICAgICogLSBjaGFuZ2UgdmlzaWJpbGl0eSBFeDogc2V0KCdAbWVudG9yRWRpdCcsIHsgc2tpcDogdHJ1ZSB9KVxyXG4gICAgICpcclxuICAgICAqXHJcbiAgICAgKiB2YWx1ZSBjYW4gYmUgc3RyaW5nIHwgQnJlYWRjcnVtYk9iamVjdCB8IEJyZWFkY3J1bWJGdW5jdGlvblxyXG4gICAgICovXHJcbiAgICBzZXQoa2V5OiBzdHJpbmcsIGJyZWFkY3J1bWI6IHN0cmluZyB8IENtYXRCcmVhZGNydW1iT2JqZWN0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYk9iamVjdCA9IHRoaXMuX2V4dHJhY3RPYmplY3QoYnJlYWRjcnVtYik7XHJcbiAgICAgICAgbGV0IHVwZGF0ZUFyZ3M6IFtTdG9yZU1hdGNoZXJLZXksIENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbl07XHJcblxyXG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChBTElBU19QUkVGSVgpKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUFyZ3MgPSBbJ2FsaWFzJywgeyAuLi5icmVhZGNydW1iT2JqZWN0LCBhbGlhczoga2V5LnNsaWNlKDEpIH1dO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LmluY2x1ZGVzKFBBVEhfUEFSQU0uUFJFRklYKSkge1xyXG4gICAgICAgICAgICB1cGRhdGVBcmdzID0gW1xyXG4gICAgICAgICAgICAgICAgJ3JvdXRlUmVnZXgnLFxyXG4gICAgICAgICAgICAgICAgeyAuLi5icmVhZGNydW1iT2JqZWN0LCByb3V0ZVJlZ2V4OiB0aGlzLl9idWlsZFJlZ2V4KGtleSkgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB1cGRhdGVBcmdzID0gW1xyXG4gICAgICAgICAgICAgICAgJ3JvdXRlTGluaycsXHJcbiAgICAgICAgICAgICAgICB7IC4uLmJyZWFkY3J1bWJPYmplY3QsIHJvdXRlTGluazogdGhpcy5fZW5zdXJlTGVhZGluZ1NsYXNoKGtleSkgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZvciB0aGlzIHJvdXRlIGlmIHByZXZpb3VzbHkgYSBicmVhZGNydW1iIGlzIG5vdCBkZWZpbmVkIHRoYXQgc2V0cyBpc0F1dG9HZW5lcmF0ZWRMYWJlbDogdHJ1ZVxyXG4gICAgICAgIC8vIGNoYW5nZSBpdCB0byBmYWxzZSBzaW5jZSB0aGlzIGlzIHVzZXIgc3VwcGxpZWQgdmFsdWVcclxuICAgICAgICB1cGRhdGVBcmdzWzFdLmlzQXV0b0dlbmVyYXRlZExhYmVsID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVN0b3JlKC4uLnVwZGF0ZUFyZ3MpO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRCcmVhZGNydW1icyguLi51cGRhdGVBcmdzKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbmV2ZXIgcm91dGUgY2hhbmdlcyBidWlsZCBicmVhZGNydW1iIGxpc3QgYWdhaW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0Um91dGVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFNwZWNpYWwgY2FzZSB3aGVyZSBicmVhZGNydW1iIHNlcnZpY2UgJiBjb21wb25lbnQgaW5zdGFudGlhdGVzIGFmdGVyIGEgcm91dGUgaXMgbmF2aWdhdGVkLlxyXG4gICAgICAgIC8vIEV4OiBwdXQgYnJlYWRjcnVtYnMgd2l0aGluICpuZ0lmIGFuZCB0aGlzLnJvdXRlci5ldmVudHMgd291bGQgYmUgZW1wdHlcclxuICAgICAgICAvLyBUaGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hlcmUgIHsgaW5pdGlhbE5hdmlnYXRpb246ICdlbmFibGVkQmxvY2tpbmcnIH0gaXMgYXBwbGllZCB0byByb3V0ZXNcclxuICAgICAgICB0aGlzLl9zZXR1cEJyZWFkY3J1bWJzKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50c1xyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgR3VhcmRzQ2hlY2tFbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBHdWFyZHNDaGVja0VuZCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBhY3RpdmF0ZWRSb3V0ZSBkb2Vzbid0IGNhcnJ5IGRhdGEgd2hlbiBzaG91bGRSZXVzZVJvdXRlIHJldHVybnMgZmFsc2VcclxuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgZXZlbnQgZGF0YSB3aXRoIEd1YXJkc0NoZWNrRW5kIGFzIHdvcmthcm91bmRcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBzaG91bGRBY3RpdmF0ZSBpbiBjYXNlIHdoZXJlIHRoZSBhdXRoR3VhcmQgcmV0dXJucyBmYWxzZSB0aGUgYnJlYWRjcnVtYnMgc2hvdWxkbid0IGJlIGNoYW5nZWRcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC5zaG91bGRBY3RpdmF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwQnJlYWRjcnVtYnMoZXZlbnQuc3RhdGUucm9vdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NldHVwQnJlYWRjcnVtYnMoYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzQnJlYWRjcnVtYnMgPSB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnM7XHJcbiAgICAgICAgLy8gYnJlYWRjcnVtYiBsYWJlbCBmb3IgYmFzZSBPUiByb290IHBhdGguIFVzdWFsbHksIHRoaXMgY2FuIGJlIHNldCBhcyAnSG9tZSdcclxuICAgICAgICBjb25zdCByb290QnJlYWRjcnVtYiA9IHRoaXMuX2dldFJvb3RCcmVhZGNydW1iKCk7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzID0gcm9vdEJyZWFkY3J1bWIgPyBbcm9vdEJyZWFkY3J1bWJdIDogW107XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KGFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHRoaXMuX2Jhc2VIcmVmKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRSb290QnJlYWRjcnVtYigpOiBDbWF0QnJlYWRjcnVtYiB8IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHJvb3RDb25maWcgPSB0aGlzLl9yb3V0ZXIuY29uZmlnLmZpbmQoY29uZmlnID0+IGNvbmZpZy5wYXRoID09PSAnJyk7XHJcbiAgICAgICAgY29uc3Qgcm9vdEJyZWFkY3J1bWIgPSB0aGlzLl9leHRyYWN0T2JqZWN0KHJvb3RDb25maWc/LmRhdGE/LlsnYnJlYWRjcnVtYiddKTtcclxuICAgICAgICBjb25zdCBzdG9yZUl0ZW0gPSB0aGlzLl9nZXRGcm9tU3RvcmUoJy8nLCByb290QnJlYWRjcnVtYi5hbGlhcyk7XHJcblxyXG4gICAgICAgIGlmIChpc05vbkVtcHR5KHJvb3RCcmVhZGNydW1iKSB8fCBpc05vbkVtcHR5KHN0b3JlSXRlbSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0b3JlSXRlbSxcclxuICAgICAgICAgICAgICAgIC4uLnJvb3RCcmVhZGNydW1iLFxyXG4gICAgICAgICAgICAgICAgcm91dGVMaW5rOiB0aGlzLl9iYXNlSHJlZixcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2dldFF1ZXJ5UGFyYW1zRnJvbVByZXZpb3VzTGlzdCgnLycpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQnJlYWRjcnVtYkl0ZW0oXHJcbiAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICByb3V0ZUxpbmtQcmVmaXg6IHN0cmluZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uIHtcclxuICAgICAgICBjb25zdCB7IHBhdGgsIGJyZWFkY3J1bWIgfSA9IHRoaXMuX3BhcnNlUm91dGVEYXRhKFxyXG4gICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnJvdXRlQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCByZXNvbHZlZFNlZ21lbnQgPSB0aGlzLl9yZXNvbHZlUGF0aFNlZ21lbnQocGF0aCwgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCk7XHJcbiAgICAgICAgY29uc3Qgcm91dGVMaW5rID0gYCR7cm91dGVMaW5rUHJlZml4fSR7cmVzb2x2ZWRTZWdtZW50fWA7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVJdGVtID0gdGhpcy5fZ2V0RnJvbVN0b3JlKHJvdXRlTGluaywgYnJlYWRjcnVtYi5hbGlhcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5fZXh0cmFjdExhYmVsKFxyXG4gICAgICAgICAgICBzdG9yZUl0ZW0/LmxhYmVsIHx8IGJyZWFkY3J1bWI/LmxhYmVsLFxyXG4gICAgICAgICAgICByZXNvbHZlZFNlZ21lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBpc0F1dG9HZW5lcmF0ZWRMYWJlbCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBhdXRvR2VuZXJhdGVkTGFiZWwgPSAnJztcclxuICAgICAgICBpZiAoIWxhYmVsKSB7XHJcbiAgICAgICAgICAgIGlzQXV0b0dlbmVyYXRlZExhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgYXV0b0dlbmVyYXRlZExhYmVsID0gcmVzb2x2ZWRTZWdtZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uc3RvcmVJdGVtLFxyXG4gICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICBsYWJlbDogaXNBdXRvR2VuZXJhdGVkTGFiZWwgPyBhdXRvR2VuZXJhdGVkTGFiZWwgOiBsYWJlbCxcclxuICAgICAgICAgICAgcm91dGVMaW5rLFxyXG4gICAgICAgICAgICBpc0F1dG9HZW5lcmF0ZWRMYWJlbCxcclxuICAgICAgICAgICAgLi4udGhpcy5fZ2V0UXVlcnlQYXJhbXNGcm9tUHJldmlvdXNMaXN0KHJvdXRlTGluayksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQnJlYWRjcnVtYkxpc3QoXHJcbiAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICByb3V0ZUxpbmtQcmVmaXg6IHN0cmluZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJbXSB8IHZvaWQge1xyXG4gICAgICAgIGlmIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnJvdXRlQ29uZmlnICYmIGFjdGl2YXRlZFJvdXRlU25hcHNob3Qucm91dGVDb25maWcucGF0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iSXRlbSA9IHRoaXMuX3ByZXBhcmVCcmVhZGNydW1iSXRlbShcclxuICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICAgICAgICAgICAgICByb3V0ZUxpbmtQcmVmaXhcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYkl0ZW0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVCcmVhZGNydW1iTGlzdChcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW0ucm91dGVMaW5rICsgJy8nXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVCcmVhZGNydW1iTGlzdChcclxuICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCxcclxuICAgICAgICAgICAgICAgIHJvdXRlTGlua1ByZWZpeFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsYXN0Q3J1bWIgPSB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnNbXHJcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5sZW5ndGggLSAxXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLl9zZXRRdWVyeVBhcmFtc0ZvckFjdGl2ZUJyZWFkY3J1bWIobGFzdENydW1iLCBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTtcclxuXHJcbiAgICAgICAgLy8gcmVtb3ZlIGJyZWFkY3J1bWIgaXRlbXMgdGhhdCBuZWVkcyB0byBiZSBoaWRkZW5cclxuICAgICAgICBjb25zdCBicmVhZGNydW1ic1RvU2hvdyA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGl0ZW0gPT4gIWl0ZW0uc2tpcFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuX2JyZWFkY3J1bWJzLm5leHQoYnJlYWRjcnVtYnNUb1Nob3cpO1xyXG5cclxuICAgICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldEZyb21TdG9yZShyb3V0ZUxpbms6IHN0cmluZywgYWxpYXM/OiBzdHJpbmcpOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24gfCB2b2lkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZS5maW5kKGl0ZW0gPT4gKFxyXG4gICAgICAgICAgICAoYWxpYXMgJiYgYWxpYXMgPT09IGl0ZW0uYWxpYXMpIHx8XHJcbiAgICAgICAgICAgIChyb3V0ZUxpbmsgJiYgcm91dGVMaW5rID09PSBpdGVtLnJvdXRlTGluaykgfHxcclxuICAgICAgICAgICAgdGhpcy5fbWF0Y2hSZWdleChyb3V0ZUxpbmssIGl0ZW0ucm91dGVSZWdleClcclxuICAgICAgICApKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHVzZSBleGFjdCBtYXRjaCBpbnN0ZWFkIG9mIHJlZ2V4cC50ZXN0XHJcbiAgICAgKiBmb3IgL21lbnRvci9bXi9dKyB3ZSBzaG91bGQgbWF0Y2ggJy9tZW50b3IvMTInIGJ1dCBub3QgJy9tZW50b3IvMTIvYWJjJ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tYXRjaFJlZ2V4KHJvdXRlTGluaz86IHN0cmluZywgcm91dGVSZWdleD86IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgICAgICBpZiAocm91dGVSZWdleCAmJiByb3V0ZUxpbmspIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSByb3V0ZUxpbmsubWF0Y2gobmV3IFJlZ0V4cChyb3V0ZVJlZ2V4KSk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaFswXSA9PT0gcm91dGVMaW5rO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpZiB0aGUgcGF0aCBzZWdtZW50IGhhcyByb3V0ZSBwYXJhbXMsIHJlYWQgdGhlIHBhcmFtIHZhbHVlIGZyb20gdXJsXHJcbiAgICAgKiBmb3IgZWFjaCBzZWdtZW50IG9mIHJvdXRlIHRoaXMgZ2V0cyBjYWxsZWRcclxuICAgICAqXHJcbiAgICAgKiBmb3IgbWVudG9yLzppZC92aWV3IC0gaXQgZ2V0cyBjYWxsZWQgd2l0aCBtZW50b3IsIDppZCwgdmlldyAzIHRpbWVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Jlc29sdmVQYXRoU2VnbWVudChzZWdtZW50OiBzdHJpbmcsIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vcXVpcmsgLXNlZ21lbnQgY2FuIGJlIGRlZmluZWQgYXMgdmlldy86aWQgaW4gcm91dGUgY29uZmlnIGluIHdoaWNoIGNhc2UgeW91IG5lZWQgdG8gbWFrZSBpdCB2aWV3LzxyZXNvbHZlZC1wYXJhbT5cclxuICAgICAgICBpZiAoc2VnbWVudC5pbmNsdWRlcyhQQVRIX1BBUkFNLlBSRUZJWCkpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudCA9IHNlZ21lbnQucmVwbGFjZShgOiR7a2V5fWAsIGAke3ZhbHVlfWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlZ21lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBxdWVyeVBhcmFtcyAmIGZyYWdtZW50cyBmb3IgcHJldmlvdXMgYnJlYWRjcnVtYiBwYXRoIGFyZSBjb3BpZWQgb3ZlciB0byBuZXcgbGlzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRRdWVyeVBhcmFtc0Zyb21QcmV2aW91c0xpc3Qocm91dGVMaW5rOiBzdHJpbmcpOiBDbWF0QnJlYWRjcnVtYiB7XHJcbiAgICAgICAgY29uc3QgeyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfSA9XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzQnJlYWRjcnVtYnMuZmluZChpdGVtID0+IGl0ZW0ucm91dGVMaW5rID09PSByb3V0ZUxpbmspIHx8XHJcbiAgICAgICAgICAgIHt9O1xyXG4gICAgICAgIHJldHVybiB7IHF1ZXJ5UGFyYW1zLCBmcmFnbWVudCB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlIHF1ZXJ5IHBhcmFtcyB0byB0aGUgbGFzdCBicmVhZGNydW1iIGl0ZW1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc2V0UXVlcnlQYXJhbXNGb3JBY3RpdmVCcmVhZGNydW1iKFxyXG4gICAgICAgIGxhc3RJdGVtOiBDbWF0QnJlYWRjcnVtYixcclxuICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAobGFzdEl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgeyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfSA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3Q7XHJcbiAgICAgICAgICAgIGxhc3RJdGVtLnF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgPyB7IC4uLnF1ZXJ5UGFyYW1zIH0gOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGxhc3RJdGVtLmZyYWdtZW50ID0gZnJhZ21lbnQgPT09IG51bGwgPyB2b2lkIDAgOiBmcmFnbWVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3IgYSBzcGVjaWZpYyByb3V0ZSwgYnJlYWRjcnVtYiBjYW4gYmUgZGVmaW5lZCBlaXRoZXIgb24gcGFyZW50IE9SIGl0J3MgY2hpbGQod2hpY2ggaGFzIGVtcHR5IHBhdGgpXHJcbiAgICAgKiBXaGVuIGJvdGggYXJlIGRlZmluZWQsIGNoaWxkIHRha2VzIHByZWNlZGVuY2VcclxuICAgICAqXHJcbiAgICAgKiBFeDogQmVsb3cgd2UgYXJlIHNldHRpbmcgYnJlYWRjcnVtYiBvbiBib3RoIHBhcmVudCBhbmQgY2hpbGQuXHJcbiAgICAgKiBTbywgY2hpbGQgdGFrZXMgcHJlY2VkZW5jZSBhbmQgXCJEZWZpbmVkIE9uIENoaWxkXCIgaXMgZGlzcGxheWVkIGZvciB0aGUgcm91dGUgJ2hvbWUnXHJcbiAgICAgKiB7IHBhdGg6ICdob21lJywgbG9hZENoaWxkcmVuOiAnLi9ob21lL2hvbWUubW9kdWxlI0hvbWVNb2R1bGUnICwgZGF0YToge2JyZWFkY3J1bWI6IFwiRGVmaW5lZCBPbiBNb2R1bGVcIn19XHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFORFxyXG4gICAgICogY2hpbGRyZW46IFtcclxuICAgICAqICAgeyBwYXRoOiAnJywgY29tcG9uZW50OiBTaG93VXNlckNvbXBvbmVudCwgZGF0YToge2JyZWFkY3J1bWI6IFwiRGVmaW5lZCBPbiBDaGlsZFwiIH1cclxuICAgICAqIF1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcGFyc2VSb3V0ZURhdGEocm91dGVDb25maWc6IFJvdXRlIHwgbnVsbCk6IGFueSB7XHJcbiAgICAgICAgaWYgKGlzTnVsbChyb3V0ZUNvbmZpZykpXHJcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgcGF0aCwgZGF0YSB9ID0gcm91dGVDb25maWc7XHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYiA9IHRoaXMuX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoXHJcbiAgICAgICAgICAgIHJvdXRlQ29uZmlnLFxyXG4gICAgICAgICAgICBkYXRhPy5bJ2JyZWFkY3J1bWInXVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB7IHBhdGgsIGJyZWFkY3J1bWIgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGdldCBlbXB0eSBjaGlsZHJlbiBvZiBhIG1vZHVsZSBvciBDb21wb25lbnQuIEVtcHR5IGNoaWxkIGlzIHRoZSBvbmUgd2l0aCBwYXRoOiAnJ1xyXG4gICAgICogV2hlbiBwYXJlbnQgYW5kIGl0J3MgY2hpbGRyZW4gKHRoYXQgaGFzIGVtcHR5IHJvdXRlIHBhdGgpIGRlZmluZSBkYXRhIG1lcmdlIHRoZW0gYm90aCB3aXRoIGNoaWxkIHRha2luZyBwcmVjZWRlbmNlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoXHJcbiAgICAgICAgcm91dGVDb25maWc6IGFueSxcclxuICAgICAgICBjb25maWc6IENtYXRCcmVhZGNydW1iQ29uZmlnXHJcbiAgICApOiBDbWF0QnJlYWRjcnVtYk9iamVjdCB7XHJcbiAgICAgICAgaWYgKCFyb3V0ZUNvbmZpZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXh0cmFjdE9iamVjdChjb25maWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGJhc2VDaGlsZDogUm91dGUgfCB2b2lkID0gdm9pZCAwO1xyXG4gICAgICAgIGlmIChyb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgLy8gVG8gaGFuZGxlIGEgbW9kdWxlIHdpdGggZW1wdHkgY2hpbGQgcm91dGVcclxuICAgICAgICAgICAgYmFzZUNoaWxkID0gcm91dGVDb25maWcuX2xvYWRlZFJvdXRlcy5maW5kKChyb3V0ZTogeyBwYXRoOiBzdHJpbmc7IH0pID0+IHJvdXRlLnBhdGggPT09ICcnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJvdXRlQ29uZmlnLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIC8vIFRvIGhhbmRsZSBhIGNvbXBvbmVudCB3aXRoIGVtcHR5IGNoaWxkIHJvdXRlXHJcbiAgICAgICAgICAgIGJhc2VDaGlsZCA9IHJvdXRlQ29uZmlnLmNoaWxkcmVuLmZpbmQoKHJvdXRlOiB7IHBhdGg6IHN0cmluZzsgfSkgPT4gcm91dGUucGF0aCA9PT0gJycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2hpbGRDb25maWcgPSBiYXNlQ2hpbGQ/LmRhdGE/LlsnYnJlYWRjcnVtYiddO1xyXG4gICAgICAgIHJldHVybiBjaGlsZENvbmZpZ1xyXG4gICAgICAgICAgICA/IHRoaXMuX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoYmFzZUNoaWxkLCB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9leHRyYWN0T2JqZWN0KGNvbmZpZyksXHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9leHRyYWN0T2JqZWN0KGNoaWxkQ29uZmlnKSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgOiB0aGlzLl9leHRyYWN0T2JqZWN0KGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIHN0b3JlIHRvIHJldXNlIGZvciBkeW5hbWljIGRlY2xhcmF0aW9uc1xyXG4gICAgICogSWYgdGhlIHN0b3JlIGFscmVhZHkgaGFzIHRoaXMgcm91dGUgZGVmaW5pdGlvbiB1cGRhdGUgaXQsIGVsc2UgYWRkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3VwZGF0ZVN0b3JlKGtleTogc3RyaW5nLCBicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdG9yZUl0ZW1JbmRleCA9IHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUuZmluZEluZGV4KGl0ZW0gPT4gKGJyZWFkY3J1bWIgYXMgYW55KVtrZXldID09PSAoaXRlbSBhcyBhbnkpW2tleV0pO1xyXG4gICAgICAgIGlmIChzdG9yZUl0ZW1JbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmVbc3RvcmVJdGVtSW5kZXhdID0ge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZVtzdG9yZUl0ZW1JbmRleF0sXHJcbiAgICAgICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUucHVzaCh7IC4uLmJyZWFkY3J1bWIgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgYnJlYWRjcnVtYiBpcyBwcmVzZW50IGluIGN1cnJlbnQgYnJlYWRjcnVtYnMgdXBkYXRlIGl0IGFuZCBlbWl0IG5ldyBzdHJlYW1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ3VycmVudEJyZWFkY3J1bWJzKFxyXG4gICAgICAgIGtleTogc3RyaW5nLFxyXG4gICAgICAgIGJyZWFkY3J1bWI6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvblxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbmRJbmRleChpdGVtID0+IGtleSA9PT0gJ3JvdXRlUmVnZXgnXHJcbiAgICAgICAgICAgID8gdGhpcy5fbWF0Y2hSZWdleChpdGVtLnJvdXRlTGluaywgYnJlYWRjcnVtYltrZXldKVxyXG4gICAgICAgICAgICA6IChicmVhZGNydW1iIGFzIGFueSlba2V5XSA9PT0gKGl0ZW0gYXMgYW55KVtrZXldKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzW2l0ZW1JbmRleF0gPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9jdXJyZW50QnJlYWRjcnVtYnNbaXRlbUluZGV4XSxcclxuICAgICAgICAgICAgICAgIC4uLmJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzVG9TaG93ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIGl0ZW0gPT4gIWl0ZW0uc2tpcFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9icmVhZGNydW1icy5uZXh0KFsuLi5icmVhZGNydW1ic1RvU2hvd10pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvciBhIHJvdXRlIHdpdGggcGF0aCBwYXJhbSwgd2UgY3JlYXRlIHJlZ2V4IGR5bmFtaWNhbGx5IGZyb20gYW5ndWxhciByb3V0ZSBzeW50YXhcclxuICAgICAqICcvbWVudG9yLzppZCcgYmVjb21lcyAnL21lbnRvci9bXi9dJyxcclxuICAgICAqIGJyZWFkY3J1bWJTZXJ2aWNlLnNldCgnL21lbnRvci86aWQnLCAnVWRheScpIHNob3VsZCB1cGRhdGUgJ1VkYXknIGFzIGxhYmVsIGZvciAnL21lbnRvci8yJyBPUiAnbWVudG9yL2FkYSdcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYnVpbGRSZWdleChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbnN1cmVMZWFkaW5nU2xhc2gocGF0aCkucmVwbGFjZShcclxuICAgICAgICAgICAgbmV3IFJlZ0V4cChQQVRIX1BBUkFNLlJFR0VYX0lERU5USUZJRVIsICdnJyksXHJcbiAgICAgICAgICAgIFBBVEhfUEFSQU0uUkVHRVhfUkVQTEFDRVJcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2Vuc3VyZUxlYWRpbmdTbGFzaChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IHBhdGggOiBgLyR7cGF0aH1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW4gQXBwJ3MgUm91dGVDb25maWcsIGJyZWFkY3J1bWIgY2FuIGJlIGRlZmluZWQgYXMgYSBzdHJpbmcgT1IgYSBmdW5jdGlvbiBPUiBhbiBvYmplY3RcclxuICAgICAqXHJcbiAgICAgKiBzdHJpbmc6IHNpbXBsZSBzdGF0aWMgYnJlYWRjcnVtYiBsYWJlbCBmb3IgYSBwYXRoXHJcbiAgICAgKiBmdW5jdGlvbjogY2FsbGJhY2sgdGhhdCBnZXRzIGludm9rZWQgd2l0aCByZXNvbHZlZCBwYXRoIHBhcmFtXHJcbiAgICAgKiBvYmplY3Q6IGFkZGl0aW9uYWwgZGF0YSBkZWZpbmVkIGFsb25nIHdpdGggYnJlYWRjcnVtYiBsYWJlbCB0aGF0IGdldHMgcGFzc2VkIHRvICpjbWF0QnJlYWRjcnVtYkl0ZW0gZGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2V4dHJhY3RMYWJlbChjb25maWc6IENtYXRCcmVhZGNydW1iQ29uZmlnLCByZXNvbHZlZFBhcmFtPzogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyA/IGNvbmZpZy5sYWJlbCA6IGNvbmZpZztcclxuICAgICAgICBpZiAodHlwZW9mIGxhYmVsID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsYWJlbChyZXNvbHZlZFBhcmFtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2V4dHJhY3RPYmplY3QoY29uZmlnOiBDbWF0QnJlYWRjcnVtYkNvbmZpZyk6IENtYXRCcmVhZGNydW1iT2JqZWN0IHtcclxuICAgICAgICAvLyBkb24ndCBpbmNsdWRlIHtsYWJlbH0gaWYgY29uZmlnIGlzIHVuZGVmaW5lZC4gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2Ugd2UgbWVyZ2UgdGhlIGNvbmZpZ3NcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGNvbmZpZyAmJlxyXG4gICAgICAgICAgICAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNvbmZpZyA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGNvbmZpZyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKGNvbmZpZyBhcyBDbWF0QnJlYWRjcnVtYk9iamVjdCkgfHwge307XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUEwQyxjQUFjLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFNbkMseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxHQUFHO0lBQ2YsTUFBTSxFQUFFLEdBQUc7SUFDWCxnQkFBZ0IsRUFBRSxTQUFTO0lBQzNCLGNBQWMsRUFBRSxRQUFRO0NBQzNCLENBQUM7QUFDRix5REFBeUQ7QUFFekQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBUSxFQUFXLEVBQUUsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBSzdFLE1BQU0sT0FBTyxxQkFBcUI7SUF5QjlCLFlBQW9CLGVBQStCLEVBQVUsT0FBZTtRQUF4RCxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBeEJwRSxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBRWhCLG9CQUFlLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDN0Q7Ozs7V0FJRztRQUNLLDRCQUF1QixHQUErQixFQUFFLENBQUM7UUFFakU7Ozs7V0FJRztRQUNLLHdCQUFt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LENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUM5RDtZQUNFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDNUI7UUFDRCxPQUFRLE1BQStCLElBQUksRUFBRSxDQUFDO0lBQ2xELENBQUM7OEdBellRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRmxCLE1BQU07OzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgR3VhcmRzQ2hlY2tFbmQsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENtYXRCcmVhZGNydW1iIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJGdW5jdGlvbiwgQ21hdEJyZWFkY3J1bWJPYmplY3QsIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iLmNvbmZpZyc7XHJcbmltcG9ydCB7IGlzTnVsbCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcblxyXG50eXBlIENtYXRCcmVhZGNydW1iQ29uZmlnID0gQ21hdEJyZWFkY3J1bWJPYmplY3QgfCBDbWF0QnJlYWRjcnVtYkZ1bmN0aW9uIHwgc3RyaW5nO1xyXG50eXBlIFN0b3JlTWF0Y2hlcktleSA9ICdyb3V0ZUxpbmsnIHwgJ3JvdXRlUmVnZXgnIHwgJ2FsaWFzJztcclxuZXhwb3J0IHR5cGUgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uID0gQ21hdEJyZWFkY3J1bWIgJiBDbWF0QnJlYWRjcnVtYk9iamVjdDtcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG5jb25zdCBQQVRIX1BBUkFNID0geyAgICBcclxuICAgIFBSRUZJWDogJzonLFxyXG4gICAgUkVHRVhfSURFTlRJRklFUjogJy86W14vXSsnLFxyXG4gICAgUkVHRVhfUkVQTEFDRVI6ICcvW14vXSsnLFxyXG59O1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuXHJcbmNvbnN0IEFMSUFTX1BSRUZJWCA9ICdAJztcclxuY29uc3QgaXNOb25FbXB0eSA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4gb2JqICYmIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID4gMDtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXRCcmVhZGNydW1iU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBwcml2YXRlIF9iYXNlSHJlZiA9ICcvJztcclxuXHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAvKipcclxuICAgICAqIGR5bmFtaWNCcmVhZGNydW1iU3RvcmUgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgZHluYW1pY2FsbHkgdXBkYXRlZCBicmVhZGNydW1icy5cclxuICAgICAqIEJyZWFkY3J1bWJzIGNhbiBiZSBzZXQgZnJvbSBhbnl3aGVyZSAoY29tcG9uZW50LCBzZXJ2aWNlKSBpbiB0aGUgYXBwLlxyXG4gICAgICogT24gZXZlcnkgYnJlYWRjcnVtYiB1cGRhdGUgY2hlY2sgdGhpcyBzdG9yZSBhbmQgdXNlIHRoZSBpbmZvIGlmIGF2YWlsYWJsZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZHluYW1pY0JyZWFkY3J1bWJTdG9yZTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGJyZWFkY3J1bWJMaXN0IGZvciB0aGUgY3VycmVudCByb3V0ZVxyXG4gICAgICogV2hlbiBicmVhZGNydW1iIGluZm8gaXMgY2hhbmdlZCBkeW5hbWljYWxseSwgY2hlY2sgaWYgdGhlIGN1cnJlbnRCcmVhZGNydW1icyBpcyBlZmZlY3RlZFxyXG4gICAgICogSWYgZWZmZWN0ZWQsIHVwZGF0ZSB0aGUgY2hhbmdlIGFuZCBlbWl0IGEgbmV3IHN0cmVhbVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jdXJyZW50QnJlYWRjcnVtYnM6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIF9wcmV2aW91c0JyZWFkY3J1bWJzOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnJlYWRjcnVtYnMgb2JzZXJ2YWJsZSB0byBiZSBzdWJzY3JpYmVkIGJ5IEJyZWFkY3J1bWJDb21wb25lbnRcclxuICAgICAqIEVtaXRzIG9uIGV2ZXJ5IHJvdXRlIGNoYW5nZSBPUiBkeW5hbWljIHVwZGF0ZSBvZiBicmVhZGNydW1iXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2JyZWFkY3J1bWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXT4oW10pO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgICAgICB0aGlzLl9kZXRlY3RSb3V0ZUNoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJlYWRjcnVtYnMkKCk6IE9ic2VydmFibGU8Q21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnMuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dCh2b2lkIDApO1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgYnJlYWRjcnVtYiBkeW5hbWljYWxseVxyXG4gICAgICpcclxuICAgICAqIGtleSBjYW4gYmUgYSBwYXRoIHwgYWxpYXNcclxuICAgICAqXHJcbiAgICAgKiAxKSBVc2luZyBjb21wbGV0ZSByb3V0ZSBwYXRoLiByb3V0ZSBjYW4gYmUgcGFzc2VkIHRoZSBzYW1lIHdheSB5b3UgZGVmaW5lIGFuZ3VsYXIgcm91dGVzXHJcbiAgICAgKiAtIHBhdGggY2FuIGJlIHBhc3NlZCBhcyAnZXhhY3QgcGF0aChyb3V0ZUxpbmspJyBvciAncGF0aCB3aXRoIHBhcmFtcyhyb3V0ZVJlZ2V4KSdcclxuICAgICAqIC0gdXBkYXRlIGxhYmVsIEV4OiBzZXQoJy9tZW50b3InLCAnTWVudG9yJyksIHNldCgnL21lbnRvci86aWQnLCAnTWVudG9yIERldGFpbHMnKVxyXG4gICAgICogLSBjaGFuZ2UgdmlzaWJpbGl0eSBFeDogc2V0KCcvbWVudG9yLzppZC9lZGl0JywgeyBza2lwOiB0cnVlIH0pXHJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT1IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgKiAyKSBVc2luZyByb3V0ZSBhbGlhcyAocHJlZml4ZWQgd2l0aCAnQCcpLiBhbGlhcyBzaG91bGQgYmUgdW5pcXVlIGZvciBhIHJvdXRlXHJcbiAgICAgKiAtIHVwZGF0ZSBsYWJlbCBFeDogc2V0KCdAbWVudG9yJywgJ0VuYWJsZXInKVxyXG4gICAgICogLSBjaGFuZ2UgdmlzaWJpbGl0eSBFeDogc2V0KCdAbWVudG9yRWRpdCcsIHsgc2tpcDogdHJ1ZSB9KVxyXG4gICAgICpcclxuICAgICAqXHJcbiAgICAgKiB2YWx1ZSBjYW4gYmUgc3RyaW5nIHwgQnJlYWRjcnVtYk9iamVjdCB8IEJyZWFkY3J1bWJGdW5jdGlvblxyXG4gICAgICovXHJcbiAgICBzZXQoa2V5OiBzdHJpbmcsIGJyZWFkY3J1bWI6IHN0cmluZyB8IENtYXRCcmVhZGNydW1iT2JqZWN0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYk9iamVjdCA9IHRoaXMuX2V4dHJhY3RPYmplY3QoYnJlYWRjcnVtYik7XHJcbiAgICAgICAgbGV0IHVwZGF0ZUFyZ3M6IFtTdG9yZU1hdGNoZXJLZXksIENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbl07XHJcblxyXG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChBTElBU19QUkVGSVgpKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUFyZ3MgPSBbJ2FsaWFzJywgeyAuLi5icmVhZGNydW1iT2JqZWN0LCBhbGlhczoga2V5LnNsaWNlKDEpIH1dO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LmluY2x1ZGVzKFBBVEhfUEFSQU0uUFJFRklYKSkge1xyXG4gICAgICAgICAgICB1cGRhdGVBcmdzID0gW1xyXG4gICAgICAgICAgICAgICAgJ3JvdXRlUmVnZXgnLFxyXG4gICAgICAgICAgICAgICAgeyAuLi5icmVhZGNydW1iT2JqZWN0LCByb3V0ZVJlZ2V4OiB0aGlzLl9idWlsZFJlZ2V4KGtleSkgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB1cGRhdGVBcmdzID0gW1xyXG4gICAgICAgICAgICAgICAgJ3JvdXRlTGluaycsXHJcbiAgICAgICAgICAgICAgICB7IC4uLmJyZWFkY3J1bWJPYmplY3QsIHJvdXRlTGluazogdGhpcy5fZW5zdXJlTGVhZGluZ1NsYXNoKGtleSkgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZvciB0aGlzIHJvdXRlIGlmIHByZXZpb3VzbHkgYSBicmVhZGNydW1iIGlzIG5vdCBkZWZpbmVkIHRoYXQgc2V0cyBpc0F1dG9HZW5lcmF0ZWRMYWJlbDogdHJ1ZVxyXG4gICAgICAgIC8vIGNoYW5nZSBpdCB0byBmYWxzZSBzaW5jZSB0aGlzIGlzIHVzZXIgc3VwcGxpZWQgdmFsdWVcclxuICAgICAgICB1cGRhdGVBcmdzWzFdLmlzQXV0b0dlbmVyYXRlZExhYmVsID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVN0b3JlKC4uLnVwZGF0ZUFyZ3MpO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRCcmVhZGNydW1icyguLi51cGRhdGVBcmdzKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbmV2ZXIgcm91dGUgY2hhbmdlcyBidWlsZCBicmVhZGNydW1iIGxpc3QgYWdhaW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0Um91dGVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFNwZWNpYWwgY2FzZSB3aGVyZSBicmVhZGNydW1iIHNlcnZpY2UgJiBjb21wb25lbnQgaW5zdGFudGlhdGVzIGFmdGVyIGEgcm91dGUgaXMgbmF2aWdhdGVkLlxyXG4gICAgICAgIC8vIEV4OiBwdXQgYnJlYWRjcnVtYnMgd2l0aGluICpuZ0lmIGFuZCB0aGlzLnJvdXRlci5ldmVudHMgd291bGQgYmUgZW1wdHlcclxuICAgICAgICAvLyBUaGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hlcmUgIHsgaW5pdGlhbE5hdmlnYXRpb246ICdlbmFibGVkQmxvY2tpbmcnIH0gaXMgYXBwbGllZCB0byByb3V0ZXNcclxuICAgICAgICB0aGlzLl9zZXR1cEJyZWFkY3J1bWJzKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50c1xyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgR3VhcmRzQ2hlY2tFbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBHdWFyZHNDaGVja0VuZCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBhY3RpdmF0ZWRSb3V0ZSBkb2Vzbid0IGNhcnJ5IGRhdGEgd2hlbiBzaG91bGRSZXVzZVJvdXRlIHJldHVybnMgZmFsc2VcclxuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgZXZlbnQgZGF0YSB3aXRoIEd1YXJkc0NoZWNrRW5kIGFzIHdvcmthcm91bmRcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBzaG91bGRBY3RpdmF0ZSBpbiBjYXNlIHdoZXJlIHRoZSBhdXRoR3VhcmQgcmV0dXJucyBmYWxzZSB0aGUgYnJlYWRjcnVtYnMgc2hvdWxkbid0IGJlIGNoYW5nZWRcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC5zaG91bGRBY3RpdmF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwQnJlYWRjcnVtYnMoZXZlbnQuc3RhdGUucm9vdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NldHVwQnJlYWRjcnVtYnMoYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzQnJlYWRjcnVtYnMgPSB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnM7XHJcbiAgICAgICAgLy8gYnJlYWRjcnVtYiBsYWJlbCBmb3IgYmFzZSBPUiByb290IHBhdGguIFVzdWFsbHksIHRoaXMgY2FuIGJlIHNldCBhcyAnSG9tZSdcclxuICAgICAgICBjb25zdCByb290QnJlYWRjcnVtYiA9IHRoaXMuX2dldFJvb3RCcmVhZGNydW1iKCk7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzID0gcm9vdEJyZWFkY3J1bWIgPyBbcm9vdEJyZWFkY3J1bWJdIDogW107XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KGFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHRoaXMuX2Jhc2VIcmVmKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRSb290QnJlYWRjcnVtYigpOiBDbWF0QnJlYWRjcnVtYiB8IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHJvb3RDb25maWcgPSB0aGlzLl9yb3V0ZXIuY29uZmlnLmZpbmQoY29uZmlnID0+IGNvbmZpZy5wYXRoID09PSAnJyk7XHJcbiAgICAgICAgY29uc3Qgcm9vdEJyZWFkY3J1bWIgPSB0aGlzLl9leHRyYWN0T2JqZWN0KHJvb3RDb25maWc/LmRhdGE/LlsnYnJlYWRjcnVtYiddKTtcclxuICAgICAgICBjb25zdCBzdG9yZUl0ZW0gPSB0aGlzLl9nZXRGcm9tU3RvcmUoJy8nLCByb290QnJlYWRjcnVtYi5hbGlhcyk7XHJcblxyXG4gICAgICAgIGlmIChpc05vbkVtcHR5KHJvb3RCcmVhZGNydW1iKSB8fCBpc05vbkVtcHR5KHN0b3JlSXRlbSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0b3JlSXRlbSxcclxuICAgICAgICAgICAgICAgIC4uLnJvb3RCcmVhZGNydW1iLFxyXG4gICAgICAgICAgICAgICAgcm91dGVMaW5rOiB0aGlzLl9iYXNlSHJlZixcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2dldFF1ZXJ5UGFyYW1zRnJvbVByZXZpb3VzTGlzdCgnLycpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQnJlYWRjcnVtYkl0ZW0oXHJcbiAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICByb3V0ZUxpbmtQcmVmaXg6IHN0cmluZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uIHtcclxuICAgICAgICBjb25zdCB7IHBhdGgsIGJyZWFkY3J1bWIgfSA9IHRoaXMuX3BhcnNlUm91dGVEYXRhKFxyXG4gICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnJvdXRlQ29uZmlnXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRTZWdtZW50ID0gdGhpcy5fcmVzb2x2ZVBhdGhTZWdtZW50KHBhdGgsIGFjdGl2YXRlZFJvdXRlU25hcHNob3QpO1xyXG4gICAgICAgIGNvbnN0IHJvdXRlTGluayA9IGAke3JvdXRlTGlua1ByZWZpeH0ke3Jlc29sdmVkU2VnbWVudH1gO1xyXG4gICAgICAgIGNvbnN0IHN0b3JlSXRlbSA9IHRoaXMuX2dldEZyb21TdG9yZShyb3V0ZUxpbmssIGJyZWFkY3J1bWIuYWxpYXMpO1xyXG5cclxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuX2V4dHJhY3RMYWJlbChcclxuICAgICAgICAgICAgc3RvcmVJdGVtPy5sYWJlbCB8fCBicmVhZGNydW1iPy5sYWJlbCxcclxuICAgICAgICAgICAgcmVzb2x2ZWRTZWdtZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgaXNBdXRvR2VuZXJhdGVkTGFiZWwgPSBmYWxzZTtcclxuICAgICAgICBsZXQgYXV0b0dlbmVyYXRlZExhYmVsID0gJyc7XHJcbiAgICAgICAgaWYgKCFsYWJlbCkge1xyXG4gICAgICAgICAgICBpc0F1dG9HZW5lcmF0ZWRMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICAgIGF1dG9HZW5lcmF0ZWRMYWJlbCA9IHJlc29sdmVkU2VnbWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnN0b3JlSXRlbSxcclxuICAgICAgICAgICAgLi4uYnJlYWRjcnVtYixcclxuICAgICAgICAgICAgbGFiZWw6IGlzQXV0b0dlbmVyYXRlZExhYmVsID8gYXV0b0dlbmVyYXRlZExhYmVsIDogbGFiZWwsXHJcbiAgICAgICAgICAgIHJvdXRlTGluayxcclxuICAgICAgICAgICAgaXNBdXRvR2VuZXJhdGVkTGFiZWwsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuX2dldFF1ZXJ5UGFyYW1zRnJvbVByZXZpb3VzTGlzdChyb3V0ZUxpbmspLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUJyZWFkY3J1bWJMaXN0KFxyXG4gICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICAgICAgcm91dGVMaW5rUHJlZml4OiBzdHJpbmdcclxuICAgICk6IENtYXRCcmVhZGNydW1iW10gfCB2b2lkIHtcclxuICAgICAgICBpZiAoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5yb3V0ZUNvbmZpZyAmJiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGgpIHtcclxuICAgICAgICAgICAgY29uc3QgYnJlYWRjcnVtYkl0ZW0gPSB0aGlzLl9wcmVwYXJlQnJlYWRjcnVtYkl0ZW0oXHJcbiAgICAgICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgICAgICAgICAgICAgcm91dGVMaW5rUHJlZml4XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWJJdGVtKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcmVwYXJlQnJlYWRjcnVtYkxpc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJJdGVtLnJvdXRlTGluayArICcvJ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcmVwYXJlQnJlYWRjcnVtYkxpc3QoXHJcbiAgICAgICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQsXHJcbiAgICAgICAgICAgICAgICByb3V0ZUxpbmtQcmVmaXhcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbGFzdENydW1iID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzW1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMubGVuZ3RoIC0gMVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5fc2V0UXVlcnlQYXJhbXNGb3JBY3RpdmVCcmVhZGNydW1iKGxhc3RDcnVtYiwgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCk7XHJcblxyXG4gICAgICAgIC8vIHJlbW92ZSBicmVhZGNydW1iIGl0ZW1zIHRoYXQgbmVlZHMgdG8gYmUgaGlkZGVuXHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYnNUb1Nob3cgPSB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMuZmlsdGVyKFxyXG4gICAgICAgICAgICBpdGVtID0+ICFpdGVtLnNraXBcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuX2JyZWFkY3J1bWJzLm5leHQoYnJlYWRjcnVtYnNUb1Nob3cpO1xyXG5cclxuICAgICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldEZyb21TdG9yZShyb3V0ZUxpbms6IHN0cmluZywgYWxpYXM/OiBzdHJpbmcpOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24gfCB2b2lkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZS5maW5kKGl0ZW0gPT4gKFxyXG4gICAgICAgICAgICAoYWxpYXMgJiYgYWxpYXMgPT09IGl0ZW0uYWxpYXMpIHx8XHJcbiAgICAgICAgICAgIChyb3V0ZUxpbmsgJiYgcm91dGVMaW5rID09PSBpdGVtLnJvdXRlTGluaykgfHxcclxuICAgICAgICAgICAgdGhpcy5fbWF0Y2hSZWdleChyb3V0ZUxpbmssIGl0ZW0ucm91dGVSZWdleClcclxuICAgICAgICApKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHVzZSBleGFjdCBtYXRjaCBpbnN0ZWFkIG9mIHJlZ2V4cC50ZXN0XHJcbiAgICAgKiBmb3IgL21lbnRvci9bXi9dKyB3ZSBzaG91bGQgbWF0Y2ggJy9tZW50b3IvMTInIGJ1dCBub3QgJy9tZW50b3IvMTIvYWJjJ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tYXRjaFJlZ2V4KHJvdXRlTGluaz86IHN0cmluZywgcm91dGVSZWdleD86IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgICAgICBpZiAocm91dGVSZWdleCAmJiByb3V0ZUxpbmspIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSByb3V0ZUxpbmsubWF0Y2gobmV3IFJlZ0V4cChyb3V0ZVJlZ2V4KSk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaFswXSA9PT0gcm91dGVMaW5rO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpZiB0aGUgcGF0aCBzZWdtZW50IGhhcyByb3V0ZSBwYXJhbXMsIHJlYWQgdGhlIHBhcmFtIHZhbHVlIGZyb20gdXJsXHJcbiAgICAgKiBmb3IgZWFjaCBzZWdtZW50IG9mIHJvdXRlIHRoaXMgZ2V0cyBjYWxsZWRcclxuICAgICAqXHJcbiAgICAgKiBmb3IgbWVudG9yLzppZC92aWV3IC0gaXQgZ2V0cyBjYWxsZWQgd2l0aCBtZW50b3IsIDppZCwgdmlldyAzIHRpbWVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Jlc29sdmVQYXRoU2VnbWVudChzZWdtZW50OiBzdHJpbmcsIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vcXVpcmsgLXNlZ21lbnQgY2FuIGJlIGRlZmluZWQgYXMgdmlldy86aWQgaW4gcm91dGUgY29uZmlnIGluIHdoaWNoIGNhc2UgeW91IG5lZWQgdG8gbWFrZSBpdCB2aWV3LzxyZXNvbHZlZC1wYXJhbT5cclxuICAgICAgICBpZiAoc2VnbWVudC5pbmNsdWRlcyhQQVRIX1BBUkFNLlBSRUZJWCkpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudCA9IHNlZ21lbnQucmVwbGFjZShgOiR7a2V5fWAsIGAke3ZhbHVlfWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlZ21lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBxdWVyeVBhcmFtcyAmIGZyYWdtZW50cyBmb3IgcHJldmlvdXMgYnJlYWRjcnVtYiBwYXRoIGFyZSBjb3BpZWQgb3ZlciB0byBuZXcgbGlzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRRdWVyeVBhcmFtc0Zyb21QcmV2aW91c0xpc3Qocm91dGVMaW5rOiBzdHJpbmcpOiBDbWF0QnJlYWRjcnVtYiB7XHJcbiAgICAgICAgY29uc3QgeyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfSA9XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzQnJlYWRjcnVtYnMuZmluZChpdGVtID0+IGl0ZW0ucm91dGVMaW5rID09PSByb3V0ZUxpbmspIHx8XHJcbiAgICAgICAgICAgIHt9O1xyXG4gICAgICAgIHJldHVybiB7IHF1ZXJ5UGFyYW1zLCBmcmFnbWVudCB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlIHF1ZXJ5IHBhcmFtcyB0byB0aGUgbGFzdCBicmVhZGNydW1iIGl0ZW1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc2V0UXVlcnlQYXJhbXNGb3JBY3RpdmVCcmVhZGNydW1iKFxyXG4gICAgICAgIGxhc3RJdGVtOiBDbWF0QnJlYWRjcnVtYixcclxuICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAobGFzdEl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgeyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfSA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3Q7XHJcbiAgICAgICAgICAgIGxhc3RJdGVtLnF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgPyB7IC4uLnF1ZXJ5UGFyYW1zIH0gOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGxhc3RJdGVtLmZyYWdtZW50ID0gZnJhZ21lbnQgPT09IG51bGwgPyB2b2lkIDAgOiBmcmFnbWVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3IgYSBzcGVjaWZpYyByb3V0ZSwgYnJlYWRjcnVtYiBjYW4gYmUgZGVmaW5lZCBlaXRoZXIgb24gcGFyZW50IE9SIGl0J3MgY2hpbGQod2hpY2ggaGFzIGVtcHR5IHBhdGgpXHJcbiAgICAgKiBXaGVuIGJvdGggYXJlIGRlZmluZWQsIGNoaWxkIHRha2VzIHByZWNlZGVuY2VcclxuICAgICAqXHJcbiAgICAgKiBFeDogQmVsb3cgd2UgYXJlIHNldHRpbmcgYnJlYWRjcnVtYiBvbiBib3RoIHBhcmVudCBhbmQgY2hpbGQuXHJcbiAgICAgKiBTbywgY2hpbGQgdGFrZXMgcHJlY2VkZW5jZSBhbmQgXCJEZWZpbmVkIE9uIENoaWxkXCIgaXMgZGlzcGxheWVkIGZvciB0aGUgcm91dGUgJ2hvbWUnXHJcbiAgICAgKiB7IHBhdGg6ICdob21lJywgbG9hZENoaWxkcmVuOiAnLi9ob21lL2hvbWUubW9kdWxlI0hvbWVNb2R1bGUnICwgZGF0YToge2JyZWFkY3J1bWI6IFwiRGVmaW5lZCBPbiBNb2R1bGVcIn19XHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFORFxyXG4gICAgICogY2hpbGRyZW46IFtcclxuICAgICAqICAgeyBwYXRoOiAnJywgY29tcG9uZW50OiBTaG93VXNlckNvbXBvbmVudCwgZGF0YToge2JyZWFkY3J1bWI6IFwiRGVmaW5lZCBPbiBDaGlsZFwiIH1cclxuICAgICAqIF1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcGFyc2VSb3V0ZURhdGEocm91dGVDb25maWc6IFJvdXRlIHwgbnVsbCk6IGFueSB7XHJcbiAgICAgICAgaWYgKGlzTnVsbChyb3V0ZUNvbmZpZykpXHJcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgcGF0aCwgZGF0YSB9ID0gcm91dGVDb25maWc7XHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYiA9IHRoaXMuX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoXHJcbiAgICAgICAgICAgIHJvdXRlQ29uZmlnLFxyXG4gICAgICAgICAgICBkYXRhPy5bJ2JyZWFkY3J1bWInXVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB7IHBhdGgsIGJyZWFkY3J1bWIgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGdldCBlbXB0eSBjaGlsZHJlbiBvZiBhIG1vZHVsZSBvciBDb21wb25lbnQuIEVtcHR5IGNoaWxkIGlzIHRoZSBvbmUgd2l0aCBwYXRoOiAnJ1xyXG4gICAgICogV2hlbiBwYXJlbnQgYW5kIGl0J3MgY2hpbGRyZW4gKHRoYXQgaGFzIGVtcHR5IHJvdXRlIHBhdGgpIGRlZmluZSBkYXRhIG1lcmdlIHRoZW0gYm90aCB3aXRoIGNoaWxkIHRha2luZyBwcmVjZWRlbmNlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoXHJcbiAgICAgICAgcm91dGVDb25maWc6IGFueSxcclxuICAgICAgICBjb25maWc6IENtYXRCcmVhZGNydW1iQ29uZmlnXHJcbiAgICApOiBDbWF0QnJlYWRjcnVtYk9iamVjdCB7XHJcbiAgICAgICAgaWYgKCFyb3V0ZUNvbmZpZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXh0cmFjdE9iamVjdChjb25maWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGJhc2VDaGlsZDogUm91dGUgfCB2b2lkID0gdm9pZCAwO1xyXG4gICAgICAgIGlmIChyb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgLy8gVG8gaGFuZGxlIGEgbW9kdWxlIHdpdGggZW1wdHkgY2hpbGQgcm91dGVcclxuICAgICAgICAgICAgYmFzZUNoaWxkID0gcm91dGVDb25maWcuX2xvYWRlZFJvdXRlcy5maW5kKChyb3V0ZTogeyBwYXRoOiBzdHJpbmc7IH0pID0+IHJvdXRlLnBhdGggPT09ICcnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJvdXRlQ29uZmlnLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIC8vIFRvIGhhbmRsZSBhIGNvbXBvbmVudCB3aXRoIGVtcHR5IGNoaWxkIHJvdXRlXHJcbiAgICAgICAgICAgIGJhc2VDaGlsZCA9IHJvdXRlQ29uZmlnLmNoaWxkcmVuLmZpbmQoKHJvdXRlOiB7IHBhdGg6IHN0cmluZzsgfSkgPT4gcm91dGUucGF0aCA9PT0gJycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2hpbGRDb25maWcgPSBiYXNlQ2hpbGQ/LmRhdGE/LlsnYnJlYWRjcnVtYiddO1xyXG4gICAgICAgIHJldHVybiBjaGlsZENvbmZpZ1xyXG4gICAgICAgICAgICA/IHRoaXMuX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoYmFzZUNoaWxkLCB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9leHRyYWN0T2JqZWN0KGNvbmZpZyksXHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9leHRyYWN0T2JqZWN0KGNoaWxkQ29uZmlnKSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgOiB0aGlzLl9leHRyYWN0T2JqZWN0KGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIHN0b3JlIHRvIHJldXNlIGZvciBkeW5hbWljIGRlY2xhcmF0aW9uc1xyXG4gICAgICogSWYgdGhlIHN0b3JlIGFscmVhZHkgaGFzIHRoaXMgcm91dGUgZGVmaW5pdGlvbiB1cGRhdGUgaXQsIGVsc2UgYWRkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3VwZGF0ZVN0b3JlKGtleTogc3RyaW5nLCBicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdG9yZUl0ZW1JbmRleCA9IHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUuZmluZEluZGV4KGl0ZW0gPT4gKGJyZWFkY3J1bWIgYXMgYW55KVtrZXldID09PSAoaXRlbSBhcyBhbnkpW2tleV0pO1xyXG4gICAgICAgIGlmIChzdG9yZUl0ZW1JbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmVbc3RvcmVJdGVtSW5kZXhdID0ge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZVtzdG9yZUl0ZW1JbmRleF0sXHJcbiAgICAgICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUucHVzaCh7IC4uLmJyZWFkY3J1bWIgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgYnJlYWRjcnVtYiBpcyBwcmVzZW50IGluIGN1cnJlbnQgYnJlYWRjcnVtYnMgdXBkYXRlIGl0IGFuZCBlbWl0IG5ldyBzdHJlYW1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ3VycmVudEJyZWFkY3J1bWJzKFxyXG4gICAgICAgIGtleTogc3RyaW5nLFxyXG4gICAgICAgIGJyZWFkY3J1bWI6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvblxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbmRJbmRleChpdGVtID0+IGtleSA9PT0gJ3JvdXRlUmVnZXgnXHJcbiAgICAgICAgICAgID8gdGhpcy5fbWF0Y2hSZWdleChpdGVtLnJvdXRlTGluaywgYnJlYWRjcnVtYltrZXldKVxyXG4gICAgICAgICAgICA6IChicmVhZGNydW1iIGFzIGFueSlba2V5XSA9PT0gKGl0ZW0gYXMgYW55KVtrZXldKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzW2l0ZW1JbmRleF0gPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9jdXJyZW50QnJlYWRjcnVtYnNbaXRlbUluZGV4XSxcclxuICAgICAgICAgICAgICAgIC4uLmJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzVG9TaG93ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIGl0ZW0gPT4gIWl0ZW0uc2tpcFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9icmVhZGNydW1icy5uZXh0KFsuLi5icmVhZGNydW1ic1RvU2hvd10pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvciBhIHJvdXRlIHdpdGggcGF0aCBwYXJhbSwgd2UgY3JlYXRlIHJlZ2V4IGR5bmFtaWNhbGx5IGZyb20gYW5ndWxhciByb3V0ZSBzeW50YXhcclxuICAgICAqICcvbWVudG9yLzppZCcgYmVjb21lcyAnL21lbnRvci9bXi9dJyxcclxuICAgICAqIGJyZWFkY3J1bWJTZXJ2aWNlLnNldCgnL21lbnRvci86aWQnLCAnVWRheScpIHNob3VsZCB1cGRhdGUgJ1VkYXknIGFzIGxhYmVsIGZvciAnL21lbnRvci8yJyBPUiAnbWVudG9yL2FkYSdcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYnVpbGRSZWdleChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbnN1cmVMZWFkaW5nU2xhc2gocGF0aCkucmVwbGFjZShcclxuICAgICAgICAgICAgbmV3IFJlZ0V4cChQQVRIX1BBUkFNLlJFR0VYX0lERU5USUZJRVIsICdnJyksXHJcbiAgICAgICAgICAgIFBBVEhfUEFSQU0uUkVHRVhfUkVQTEFDRVJcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2Vuc3VyZUxlYWRpbmdTbGFzaChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IHBhdGggOiBgLyR7cGF0aH1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW4gQXBwJ3MgUm91dGVDb25maWcsIGJyZWFkY3J1bWIgY2FuIGJlIGRlZmluZWQgYXMgYSBzdHJpbmcgT1IgYSBmdW5jdGlvbiBPUiBhbiBvYmplY3RcclxuICAgICAqXHJcbiAgICAgKiBzdHJpbmc6IHNpbXBsZSBzdGF0aWMgYnJlYWRjcnVtYiBsYWJlbCBmb3IgYSBwYXRoXHJcbiAgICAgKiBmdW5jdGlvbjogY2FsbGJhY2sgdGhhdCBnZXRzIGludm9rZWQgd2l0aCByZXNvbHZlZCBwYXRoIHBhcmFtXHJcbiAgICAgKiBvYmplY3Q6IGFkZGl0aW9uYWwgZGF0YSBkZWZpbmVkIGFsb25nIHdpdGggYnJlYWRjcnVtYiBsYWJlbCB0aGF0IGdldHMgcGFzc2VkIHRvICpjbWF0QnJlYWRjcnVtYkl0ZW0gZGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2V4dHJhY3RMYWJlbChjb25maWc6IENtYXRCcmVhZGNydW1iQ29uZmlnLCByZXNvbHZlZFBhcmFtPzogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyA/IGNvbmZpZy5sYWJlbCA6IGNvbmZpZztcclxuICAgICAgICBpZiAodHlwZW9mIGxhYmVsID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsYWJlbChyZXNvbHZlZFBhcmFtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2V4dHJhY3RPYmplY3QoY29uZmlnOiBDbWF0QnJlYWRjcnVtYkNvbmZpZyk6IENtYXRCcmVhZGNydW1iT2JqZWN0IHtcclxuICAgICAgICAvLyBkb24ndCBpbmNsdWRlIHtsYWJlbH0gaWYgY29uZmlnIGlzIHVuZGVmaW5lZC4gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2Ugd2UgbWVyZ2UgdGhlIGNvbmZpZ3NcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGNvbmZpZyAmJlxyXG4gICAgICAgICAgICAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNvbmZpZyA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGNvbmZpZyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKGNvbmZpZyBhcyBDbWF0QnJlYWRjcnVtYk9iamVjdCkgfHwge307XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
|
-
import { NgIf } from '@angular/common';
|
|
4
3
|
import { cmatAnimations } from 'cmat/animations';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
export class CmatCardComponent {
|
|
@@ -19,14 +18,6 @@ export class CmatCardComponent {
|
|
|
19
18
|
};
|
|
20
19
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
21
20
|
}
|
|
22
|
-
// -----------------------------------------------------------------------------------------------------
|
|
23
|
-
// @ Lifecycle hooks
|
|
24
|
-
// -----------------------------------------------------------------------------------------------------
|
|
25
|
-
/**
|
|
26
|
-
* On changes
|
|
27
|
-
*
|
|
28
|
-
* @param changes
|
|
29
|
-
*/
|
|
30
21
|
ngOnChanges(changes) {
|
|
31
22
|
// Expanded
|
|
32
23
|
if ('expanded' in changes) {
|
|
@@ -39,12 +30,12 @@ export class CmatCardComponent {
|
|
|
39
30
|
this.flippable = coerceBooleanProperty(changes['flippable'].currentValue);
|
|
40
31
|
}
|
|
41
32
|
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
43
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CmatCardComponent, isStandalone: true, selector: "cmat-card", inputs: { expanded: "expanded", face: "face", flippable: "flippable" }, host: { properties: { "class": "this.classList" } }, exportAs: ["cmatCard"], usesOnChanges: true, ngImport: i0, template: "<!-- Flippable card -->\n@if (flippable) {\n <!-- Front -->\n <div class=\"cmat-card-front\">\n <ng-content select=\"[cmatCardFront]\"></ng-content>\n </div>\n <!-- Back -->\n <div class=\"cmat-card-back overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\n <ng-content select=\"[cmatCardBack]\"></ng-content>\n </div>\n}\n\n<!-- Normal card -->\n@if (!flippable) {\n <!-- Content -->\n <ng-content></ng-content>\n <!-- Expansion -->\n @if (expanded) {\n <div class=\"cmat-card-expansion\" [@expandCollapse]>\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\n </div>\n }\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n"], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
44
35
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatCardComponent, decorators: [{
|
|
46
37
|
type: Component,
|
|
47
|
-
args: [{ selector: 'cmat-card', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: cmatAnimations, exportAs: 'cmatCard', standalone: true, imports: [
|
|
38
|
+
args: [{ selector: 'cmat-card', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: cmatAnimations, exportAs: 'cmatCard', standalone: true, imports: [], template: "<!-- Flippable card -->\n@if (flippable) {\n <!-- Front -->\n <div class=\"cmat-card-front\">\n <ng-content select=\"[cmatCardFront]\"></ng-content>\n </div>\n <!-- Back -->\n <div class=\"cmat-card-back overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\n <ng-content select=\"[cmatCardBack]\"></ng-content>\n </div>\n}\n\n<!-- Normal card -->\n@if (!flippable) {\n <!-- Content -->\n <ng-content></ng-content>\n <!-- Expansion -->\n @if (expanded) {\n <div class=\"cmat-card-expansion\" [@expandCollapse]>\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\n </div>\n }\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n"] }]
|
|
48
39
|
}], propDecorators: { expanded: [{
|
|
49
40
|
type: Input
|
|
50
41
|
}], face: [{
|
|
@@ -55,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
55
46
|
type: HostBinding,
|
|
56
47
|
args: ['class']
|
|
57
48
|
}] } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWFqRCxNQUFNLE9BQU8saUJBQWlCO0lBWDlCO1FBaUJhLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsU0FBSSxHQUFpQixPQUFPLENBQUM7UUFDN0IsY0FBUyxHQUFZLEtBQUssQ0FBQztLQTBCdkM7SUF4QkcsSUFBMEIsU0FBUztRQUMvQix5REFBeUQ7UUFDekQsT0FBTztZQUNILG9CQUFvQixFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ25DLHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNO1lBQzdELHNCQUFzQixFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPO1lBQy9ELHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3hDLENBQUM7UUFDRix3REFBd0Q7SUFDNUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixXQUFXO1FBQ1gsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFO1lBQ3ZCLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzRTtRQUVELFlBQVk7UUFDWixJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7WUFDeEIsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzdFO0lBQ0wsQ0FBQzs4R0FqQ1EsaUJBQWlCO2tHQUFqQixpQkFBaUIsK09DakI5Qixtb0JBc0JDLGtqQ0RWZSxjQUFjOzsyRkFLakIsaUJBQWlCO2tCQVg3QixTQUFTOytCQUNJLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxjQUFjLFlBQ2hCLFVBQVUsY0FDUixJQUFJLFdBQ1AsRUFBRTs4QkFRRixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVvQixTQUFTO3NCQUFsQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBDbWF0Q2FyZEZhY2UgfSBmcm9tICcuL2NhcmQudHlwZXMnO1xyXG5cclxuaW1wb3J0IHsgY21hdEFuaW1hdGlvbnMgfSBmcm9tICdjbWF0L2FuaW1hdGlvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtY2FyZCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jYXJkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBhbmltYXRpb25zOiBjbWF0QW5pbWF0aW9ucyxcclxuICAgIGV4cG9ydEFzOiAnY21hdENhcmQnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0Q2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXhwYW5kZWQ6IEJvb2xlYW5JbnB1dDtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cclxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9mbGlwcGFibGU6IEJvb2xlYW5JbnB1dDtcclxuXHJcbiAgICBASW5wdXQoKSBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZmFjZTogQ21hdENhcmRGYWNlID0gJ2Zyb250JztcclxuICAgIEBJbnB1dCgpIGZsaXBwYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgY2xhc3NMaXN0KCk6IGFueSB7XHJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ2NtYXQtY2FyZC1leHBhbmRlZCc6IHRoaXMuZXhwYW5kZWQsXHJcbiAgICAgICAgICAgICdjbWF0LWNhcmQtZmFjZS1iYWNrJzogdGhpcy5mbGlwcGFibGUgJiYgdGhpcy5mYWNlID09PSAnYmFjaycsXHJcbiAgICAgICAgICAgICdjbWF0LWNhcmQtZmFjZS1mcm9udCc6IHRoaXMuZmxpcHBhYmxlICYmIHRoaXMuZmFjZSA9PT0gJ2Zyb250JyxcclxuICAgICAgICAgICAgJ2NtYXQtY2FyZC1mbGlwcGFibGUnOiB0aGlzLmZsaXBwYWJsZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgLy8gRXhwYW5kZWRcclxuICAgICAgICBpZiAoJ2V4cGFuZGVkJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXHJcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlc1snZXhwYW5kZWQnXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRmxpcHBhYmxlXHJcbiAgICAgICAgaWYgKCdmbGlwcGFibGUnIGluIGNoYW5nZXMpIHtcclxuICAgICAgICAgICAgLy8gQ29lcmNlIHRoZSB2YWx1ZSB0byBhIGJvb2xlYW5cclxuICAgICAgICAgICAgdGhpcy5mbGlwcGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlc1snZmxpcHBhYmxlJ10uY3VycmVudFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPCEtLSBGbGlwcGFibGUgY2FyZCAtLT5cbkBpZiAoZmxpcHBhYmxlKSB7XG4gIDwhLS0gRnJvbnQgLS0+XG4gIDxkaXYgY2xhc3M9XCJjbWF0LWNhcmQtZnJvbnRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY21hdENhcmRGcm9udF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8IS0tIEJhY2sgLS0+XG4gIDxkaXYgY2xhc3M9XCJjbWF0LWNhcmQtYmFjayBvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY21hdENhcmRCYWNrXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG59XG5cbjwhLS0gTm9ybWFsIGNhcmQgLS0+XG5AaWYgKCFmbGlwcGFibGUpIHtcbiAgPCEtLSBDb250ZW50IC0tPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwhLS0gRXhwYW5zaW9uIC0tPlxuICBAaWYgKGV4cGFuZGVkKSB7XG4gICAgPGRpdiBjbGFzcz1cImNtYXQtY2FyZC1leHBhbnNpb25cIiBbQGV4cGFuZENvbGxhcHNlXT5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbWF0Q2FyZEV4cGFuc2lvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIH1cbn0iXX0=
|