@kirbydesign/designsystem 5.2.2 → 5.4.1
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/bundles/kirbydesign-designsystem-testing-base.umd.js +1 -0
- package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-jest.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.js +95 -72
- package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js.map +1 -1
- package/esm2015/lib/components/avatar/avatar.component.js +1 -1
- package/esm2015/lib/components/button/button.component.js +1 -1
- package/esm2015/lib/components/calendar/calendar.component.js +2 -2
- package/esm2015/lib/components/card/card-header/card-header.component.js +1 -1
- package/esm2015/lib/components/card/card-header/card-header.component.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart-js/chart-js.service.js +38 -26
- package/esm2015/lib/components/chart/chart-js/chart-js.service.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js +1 -1
- package/esm2015/lib/components/chart/chart.component.js +1 -1
- package/esm2015/lib/components/chart/chart.component.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart.types.js +1 -1
- package/esm2015/lib/components/chart/chart.types.metadata.json +1 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.js +3 -3
- package/esm2015/lib/components/chart-deprecated/options/areaspline.js +1 -1
- package/esm2015/lib/components/chart-deprecated/options/timeseries.js +1 -1
- package/esm2015/lib/components/dropdown/dropdown.component.js +2 -2
- package/esm2015/lib/components/dropdown/dropdown.component.metadata.json +1 -1
- package/esm2015/lib/components/fab-sheet/fab-sheet.component.js +4 -3
- package/esm2015/lib/components/fab-sheet/fab-sheet.component.metadata.json +1 -1
- package/esm2015/lib/components/flag/flag.component.js +4 -6
- package/esm2015/lib/components/flag/flag.component.metadata.json +1 -1
- package/esm2015/lib/components/form-field/form-field.component.js +1 -1
- package/esm2015/lib/components/form-field/form-field.component.metadata.json +1 -1
- package/esm2015/lib/components/form-field/input/input.component.js +2 -2
- package/esm2015/lib/components/form-field/input/input.component.metadata.json +1 -1
- package/esm2015/lib/components/form-field/input-counter/input-counter.component.js +2 -3
- package/esm2015/lib/components/form-field/input-counter/input-counter.component.metadata.json +1 -1
- package/esm2015/lib/components/form-field/textarea/textarea.component.js +1 -1
- package/esm2015/lib/components/form-field/textarea/textarea.component.metadata.json +1 -1
- package/esm2015/lib/components/icon/icon.component.js +2 -2
- package/esm2015/lib/components/icon/icon.component.metadata.json +1 -1
- package/esm2015/lib/components/item/item.component.js +1 -1
- package/esm2015/lib/components/list/list-item/list-item.component.js +1 -1
- package/esm2015/lib/components/list/list-item/list-item.component.metadata.json +1 -1
- package/esm2015/lib/components/list/list-section-header/list-section-header.component.js +2 -3
- package/esm2015/lib/components/list/list-section-header/list-section-header.component.metadata.json +1 -1
- package/esm2015/lib/components/list/list.component.js +1 -1
- package/esm2015/lib/components/list/list.component.metadata.json +1 -1
- package/esm2015/lib/components/modal/action-sheet/action-sheet.component.js +1 -1
- package/esm2015/lib/components/modal/action-sheet/action-sheet.component.metadata.json +1 -1
- package/esm2015/lib/components/modal/footer/modal-footer.component.js +1 -1
- package/esm2015/lib/components/modal/footer/modal-footer.component.metadata.json +1 -1
- package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.js +2 -2
- package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.metadata.json +1 -1
- package/esm2015/lib/components/modal/services/modal-navigation.service.js +2 -4
- package/esm2015/lib/components/page/page.component.js +5 -13
- package/esm2015/lib/components/page/page.component.metadata.json +1 -1
- package/esm2015/lib/components/popover/popover.component.js +16 -18
- package/esm2015/lib/components/popover/popover.component.metadata.json +1 -1
- package/esm2015/lib/components/radio/radio.component.js +1 -1
- package/esm2015/lib/components/range/range.component.js +1 -1
- package/esm2015/lib/components/range/range.component.metadata.json +1 -1
- package/esm2015/lib/components/reorder-list/reorder-list.component.js +3 -3
- package/esm2015/lib/components/reorder-list/reorder-list.component.metadata.json +1 -1
- package/esm2015/lib/components/segmented-control/segmented-control.component.js +10 -2
- package/esm2015/lib/components/segmented-control/segmented-control.component.metadata.json +1 -1
- package/esm2015/lib/components/slide-button/slide-button.component.js +1 -1
- package/esm2015/lib/components/slide-button/slide-button.component.metadata.json +1 -1
- package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.js +1 -1
- package/esm2015/testing-base/lib/components/mock.accordion-item.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.action-sheet.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.app.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.avatar.component.js +2 -2
- package/esm2015/testing-base/lib/components/mock.button.component.js +2 -2
- package/esm2015/testing-base/lib/components/mock.calendar.component.js +2 -1
- package/esm2015/testing-base/lib/components/mock.calendar.component.metadata.json +1 -1
- package/esm2015/testing-base/lib/components/mock.card-footer.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.card-header.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.card.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.chart.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.chart.component.metadata.json +1 -1
- package/esm2015/testing-base/lib/components/mock.checkbox.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.chip.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.divider.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.dropdown.component.js +2 -2
- package/esm2015/testing-base/lib/components/mock.empty-state.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.fab-sheet.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.flag.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.form-field-message.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.form-field.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.grid.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.icon.component.js +2 -2
- package/esm2015/testing-base/lib/components/mock.input-counter.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.input.component.js +2 -2
- package/esm2015/testing-base/lib/components/mock.item-group.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.item-sliding.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.item.component.js +2 -2
- package/esm2015/testing-base/lib/components/mock.label.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.list-experimental.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.list-header.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.list-item.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.list-section-header.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.list.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.loading-overlay.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.modal-footer.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.page-footer.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.page.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.popover.component.js +2 -2
- package/esm2015/testing-base/lib/components/mock.progress-circle.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.radio-group.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.radio.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.range.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.reorder-list.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.router-outlet.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.section-header.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.segmented-control.component.js +2 -2
- package/esm2015/testing-base/lib/components/mock.slide-button.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.spinner.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.tab-button.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.tabs.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.textarea.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.toggle-button.component.js +1 -1
- package/esm2015/testing-base/lib/components/mock.toggle.component.js +1 -1
- package/esm2015/testing-base/lib/mock-components.js +1 -1
- package/esm2015/testing-jasmine/lib/mock-providers.js +1 -1
- package/esm2015/testing-jest/lib/mock-providers.js +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-base.js +1 -0
- package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-jasmine.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-jest.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem.js +88 -83
- package/fesm2015/kirbydesign-designsystem.js.map +1 -1
- package/icons/svg/more.svg +5 -7
- package/kirbydesign-designsystem.metadata.json +1 -1
- package/lib/components/avatar/avatar.component.d.ts +2 -2
- package/lib/components/button/button.component.d.ts +2 -2
- package/lib/components/chart/chart-js/chart-js.service.d.ts +4 -3
- package/lib/components/chart/chart.component.d.ts +3 -3
- package/lib/components/chart/chart.types.d.ts +1 -0
- package/lib/components/dropdown/dropdown.component.d.ts +2 -2
- package/lib/components/form-field/input/input.component.d.ts +1 -1
- package/lib/components/form-field/input-counter/input-counter.component.d.ts +2 -2
- package/lib/components/icon/icon.component.d.ts +1 -1
- package/lib/components/item/item.component.d.ts +1 -1
- package/lib/components/popover/popover.component.d.ts +2 -3
- package/lib/components/segmented-control/segmented-control.component.d.ts +4 -1
- package/package.json +2 -2
- package/polyfills/intersection-observer-polyfill-loader.js +12 -12
- package/polyfills/resize-observer-polyfill-loader.js +1 -1
- package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
- package/testing-base/lib/components/mock.avatar.component.d.ts +1 -1
- package/testing-base/lib/components/mock.button.component.d.ts +1 -1
- package/testing-base/lib/components/mock.calendar.component.d.ts +1 -0
- package/testing-base/lib/components/mock.chart.component.d.ts +2 -2
- package/testing-base/lib/components/mock.dropdown.component.d.ts +1 -1
- package/testing-base/lib/components/mock.icon.component.d.ts +1 -1
- package/testing-base/lib/components/mock.input.component.d.ts +1 -1
- package/testing-base/lib/components/mock.item.component.d.ts +1 -1
- package/testing-base/lib/components/mock.popover.component.d.ts +1 -1
- package/testing-base/lib/components/mock.segmented-control.component.d.ts +1 -1
|
@@ -32,4 +32,4 @@ AvatarComponent.propDecorators = {
|
|
|
32
32
|
themeColor: [{ type: Input }],
|
|
33
33
|
_cssClass: [{ type: HostBinding, args: ['class',] }]
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJdkYsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQix1QkFBUyxDQUFBO0lBQ1QsdUJBQVMsQ0FBQTtJQUNULHVCQUFTLENBQUE7SUFDVCx1QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBUUQsTUFBTSxPQUFPLGVBQWU7SUFONUI7UUFZVyxTQUFJLEdBQWlDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFROUQsQ0FBQztJQUpDLElBQ0ksU0FBUztRQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxDQUFDOzs7WUFuQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4Qiw0VkFBc0M7Z0JBRXRDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O3VCQUVFLEtBQUs7c0JBQ0wsS0FBSztxQkFDTCxLQUFLO21CQUNMLEtBQUs7c0JBQ0wsS0FBSzttQkFDTCxLQUFLO3lCQUNMLEtBQUs7d0JBR0wsV0FBVyxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnJhbmRDb2xvciwgTm90aWZpY2F0aW9uQ29sb3IgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmV4cG9ydCBlbnVtIEF2YXRhclNpemUge1xuICBYUyA9ICd4cycsXG4gIFNNID0gJ3NtJyxcbiAgTUQgPSAnbWQnLFxuICBMRyA9ICdsZycsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWF2YXRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGltYWdlU3JjOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFsdFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgc2hhZG93OiBib29sZWFuO1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG92ZXJsYXk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNpemU6IEF2YXRhclNpemUgfCBgJHtBdmF0YXJTaXplfWAgPSBBdmF0YXJTaXplLlNNO1xuICBASW5wdXQoKVxuICB0aGVtZUNvbG9yOiBOb3RpZmljYXRpb25Db2xvciB8IEJyYW5kQ29sb3IgfCAnbWVkaXVtJyB8ICd3aGl0ZScgfCAnZGFyaycgfCAnbGlnaHQnIHwgJ3NlbWktbGlnaHQnO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgX2Nzc0NsYXNzKCkge1xuICAgIHJldHVybiBbdGhpcy50aGVtZUNvbG9yLCB0aGlzLnNpemVdLmZpbHRlcigoY3NzQ2xhc3MpID0+ICEhY3NzQ2xhc3MpO1xuICB9XG59XG4iXX0=
|
|
@@ -82,4 +82,4 @@ ButtonComponent.propDecorators = {
|
|
|
82
82
|
icon: [{ type: ContentChild, args: [IconComponent,] }],
|
|
83
83
|
iconElementRef: [{ type: ContentChild, args: [IconComponent, { read: ElementRef },] }]
|
|
84
84
|
};
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsTUFBTSxDQUFOLElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNwQix1QkFBUyxDQUFBO0lBQ1QsdUJBQVMsQ0FBQTtJQUNULHVCQUFTLENBQUE7QUFDWCxDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckI7QUFRRCxNQUFNLE9BQU8sZUFBZTtJQTBEMUIsWUFBb0IsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUF4RHZELHNCQUFpQixHQUFZLElBQUksQ0FBQyxDQUFDLFVBQVU7UUFRN0MsZ0JBQVcsR0FBWSxLQUFLLENBQUMsQ0FBQyxVQUFVO1FBV2hDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBS3BCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBdUJwQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBRXJDLFNBQUksR0FBaUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUszQyxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWtDLENBQUM7SUE5QzNELElBQ1csZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFDVyxVQUFVO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUNXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQWEsY0FBYyxDQUFDLEtBQTRCO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFhLGFBQWEsQ0FBQyxLQUFjO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFlRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQzNELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNyRCxJQUFJLENBQUMsV0FBVztnQkFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7WUFDakYsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDdkM7SUFDSCxDQUFDOzs7WUF6RUYsU0FBUyxTQUFDO2dCQUNULDhDQUE4QztnQkFDOUMsUUFBUSxFQUFFLDJDQUEyQztnQkFDckQsdUNBQXNDOzthQUV2Qzs7OztZQXBCQyxVQUFVOzs7Z0NBc0JULFdBQVcsU0FBQyx3QkFBd0I7Z0NBRXBDLFdBQVcsU0FBQyx3QkFBd0I7Z0NBRXBDLFdBQVcsU0FBQyx3QkFBd0I7Z0NBRXBDLFdBQVcsU0FBQyx3QkFBd0I7MEJBRXBDLFdBQVcsU0FBQyxtQkFBbUI7K0JBRy9CLFdBQVcsU0FBQyxnQkFBZ0I7eUJBSzVCLFdBQVcsU0FBQyxpQkFBaUI7eUJBSzdCLFdBQVcsU0FBQyxpQkFBaUI7MEJBSzdCLFdBQVcsU0FBQyxrQkFBa0I7d0JBSzlCLFdBQVcsU0FBQyxPQUFPOzZCQUtuQixLQUFLOzRCQU1MLEtBQUs7eUJBR0wsS0FBSztxQkFFTCxLQUFLO3lCQUNMLEtBQUs7bUJBQ0wsS0FBSzttQkFHTCxZQUFZLFNBQUMsYUFBYTs2QkFDMUIsWUFBWSxTQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ29sb3IgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuZXhwb3J0IGVudW0gQnV0dG9uU2l6ZSB7XG4gIFNNID0gJ3NtJyxcbiAgTUQgPSAnbWQnLFxuICBMRyA9ICdsZycsXG59XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYnV0dG9uW2tpcmJ5LWJ1dHRvbl0sQnV0dG9uW2tpcmJ5LWJ1dHRvbl0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmF0dGVudGlvbi1sZXZlbDEnKVxuICBpc0F0dGVudGlvbkxldmVsMTogYm9vbGVhbiA9IHRydWU7IC8vIERlZmF1bHRcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hdHRlbnRpb24tbGV2ZWwyJylcbiAgaXNBdHRlbnRpb25MZXZlbDI6IGJvb2xlYW47XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYXR0ZW50aW9uLWxldmVsMycpXG4gIGlzQXR0ZW50aW9uTGV2ZWwzOiBib29sZWFuO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmF0dGVudGlvbi1sZXZlbDQnKVxuICBpc0F0dGVudGlvbkxldmVsNDogYm9vbGVhbjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kZXN0cnVjdGl2ZScpXG4gIGRlc3RydWN0aXZlOiBib29sZWFuID0gZmFsc2U7IC8vIERlZmF1bHRcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZsb2F0aW5nJylcbiAgcHVibGljIGdldCBpc0J1dHRvbkZsb2F0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRmxvYXRpbmc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmljb24tb25seScpXG4gIHB1YmxpYyBnZXQgaXNJY29uT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmljb24gJiYgIXRoaXMuaGFzVGV4dDtcbiAgfVxuICBwcml2YXRlIF9pc0ljb25MZWZ0ID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuaWNvbi1sZWZ0JylcbiAgcHVibGljIGdldCBpc0ljb25MZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLl9pc0ljb25MZWZ0O1xuICB9XG4gIHByaXZhdGUgX2lzSWNvblJpZ2h0ID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuaWNvbi1yaWdodCcpXG4gIHB1YmxpYyBnZXQgaXNJY29uUmlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSWNvblJpZ2h0O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfY3NzQ2xhc3MoKSB7XG4gICAgcmV0dXJuIFt0aGlzLnRoZW1lQ29sb3IsIHRoaXMuc2l6ZV0uZmlsdGVyKChjc3NDbGFzcykgPT4gISFjc3NDbGFzcyk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgYXR0ZW50aW9uTGV2ZWwobGV2ZWw6ICcxJyB8ICcyJyB8ICczJyB8ICc0Jykge1xuICAgIHRoaXMuaXNBdHRlbnRpb25MZXZlbDEgPSBsZXZlbCA9PT0gJzEnO1xuICAgIHRoaXMuaXNBdHRlbnRpb25MZXZlbDIgPSBsZXZlbCA9PT0gJzInO1xuICAgIHRoaXMuaXNBdHRlbnRpb25MZXZlbDMgPSBsZXZlbCA9PT0gJzMnO1xuICAgIHRoaXMuaXNBdHRlbnRpb25MZXZlbDQgPSBsZXZlbCA9PT0gJzQnO1xuICB9XG4gIEBJbnB1dCgpIHNldCBpc0Rlc3RydWN0aXZlKHN0YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kZXN0cnVjdGl2ZSA9IHN0YXRlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHRoZW1lQ29sb3I6IE5vdGlmaWNhdGlvbkNvbG9yO1xuICBASW5wdXQoKSBleHBhbmQ6ICdmdWxsJyB8ICdibG9jayc7XG4gIEBJbnB1dCgpIGlzRmxvYXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgc2l6ZTogQnV0dG9uU2l6ZSB8IGAke0J1dHRvblNpemV9YCA9IEJ1dHRvblNpemUuTUQ7XG5cbiAgQENvbnRlbnRDaGlsZChJY29uQ29tcG9uZW50KSBpY29uOiBJY29uQ29tcG9uZW50O1xuICBAQ29udGVudENoaWxkKEljb25Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBpY29uRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgaGFzVGV4dCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzVGV4dCA9ICEhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgaWYgKHRoaXMuaWNvbkVsZW1lbnRSZWYgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmhhc1RleHQpIHtcbiAgICAgIHRoaXMuX2lzSWNvbkxlZnQgPVxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdENoaWxkID09PSB0aGlzLmljb25FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB0aGlzLl9pc0ljb25SaWdodCA9ICF0aGlzLl9pc0ljb25MZWZ0O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -274,10 +274,10 @@ export class CalendarComponent {
|
|
|
274
274
|
_onDateSelected(newDay) {
|
|
275
275
|
if (newDay.isSelectable && newDay.date) {
|
|
276
276
|
let newDate = new Date(this.activeMonth);
|
|
277
|
+
newDate.setDate(newDay.date);
|
|
277
278
|
if (this.timezone === 'UTC') {
|
|
278
279
|
newDate = zonedTimeToUtc(this.subtractTimezoneOffset(newDate), this.timeZoneName);
|
|
279
280
|
}
|
|
280
|
-
newDate.setDate(newDay.date);
|
|
281
281
|
const dateToEmit = newDate;
|
|
282
282
|
if (this.hasDateChanged(newDate, this._selectedDate)) {
|
|
283
283
|
this.onSelectedDateChange(newDate);
|
|
@@ -391,4 +391,4 @@ CalendarComponent.propDecorators = {
|
|
|
391
391
|
maxDate: [{ type: Input }],
|
|
392
392
|
_hasYearNavigator: [{ type: HostBinding, args: ['class.has-year-navigator',] }]
|
|
393
393
|
};
|
|
394
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFDUCxPQUFPLEVBQ1AsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQWEzRCxJQUFLLFFBU0o7QUFURCxXQUFLLFFBQVE7SUFDWCwyQkFBZSxDQUFBO0lBQ2YsNkJBQWlCLENBQUE7SUFDakIsMkJBQWUsQ0FBQTtJQUNmLHlCQUFhLENBQUE7SUFDYiwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUNBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQVRJLFFBQVEsS0FBUixRQUFRLFFBU1o7QUFR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QUksRUFBRSxDQUFDO1FBQ3JGLE1BQU0sYUFBYSxHQUFHLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDMUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQzs7O1lBL2JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQix1NENBQXdDO2dCQUV4QyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7O2FBQzVCOzs7O1lBN0JRLGNBQWM7eUNBeUpnQyxNQUFNLFNBQUMsU0FBUzs7O2dDQTFIcEUsU0FBUyxTQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt5QkFDaEQsTUFBTTt5QkFDTixNQUFNO3lCQUNOLE1BQU07dUJBQ04sS0FBSzs4QkFDTCxLQUFLOytCQUNMLEtBQUs7aUNBQ0wsS0FBSztnQ0FDTCxLQUFLOzRCQUNMLEtBQUs7eUJBS0wsS0FBSzttQ0FRTCxLQUFLOzJCQXNCTCxLQUFLOzRCQWNMLEtBQUs7d0JBUUwsS0FBSztzQkFRTCxLQUFLO3NCQVdMLEtBQUs7Z0NBZ0NMLFdBQVcsU0FBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZCxcbiAgZGlmZmVyZW5jZUluRGF5cyxcbiAgZWFjaERheU9mSW50ZXJ2YWwsXG4gIGVuZE9mTW9udGgsXG4gIGVuZE9mV2VlayxcbiAgZm9ybWF0LFxuICBnZXRZZWFyLFxuICBpc0FmdGVyLFxuICBpc0JlZm9yZSxcbiAgaXNTYW1lRGF5LFxuICBpc1NhbWVNb250aCxcbiAgaXNXZWVrZW5kLFxuICBMb2NhbGUgYXMgTG9jYWxlRGF0ZUZucyxcbiAgc3RhcnRPZkRheSxcbiAgc3RhcnRPZk1vbnRoLFxuICBzdGFydE9mV2Vlayxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUsIHpvbmVkVGltZVRvVXRjIH0gZnJvbSAnZGF0ZS1mbnMtdHonO1xuaW1wb3J0IHsgZGEsIGVuR0IsIGVuVVMgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUnO1xuXG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmltcG9ydCB7IENhbGVuZGFyQ2VsbCB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1jZWxsLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1vcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2NhbGVuZGFyLmhlbHBlcic7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJOYXZpZ2F0b3JDb25maWcgfSBmcm9tICcuL29wdGlvbnMvY2FsZW5kYXIteWVhci1uYXZpZ2F0b3ItY29uZmlnJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlID0gTG9jYWxlRGF0ZUZucztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1RvZGF5OiBib29sZWFuO1xuICBpc1dlZWtlbmQ6IGJvb2xlYW47XG4gIGlzUGFzdDogYm9vbGVhbjtcbiAgaXNGdXR1cmU6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmVudW0gVGltZVVuaXQge1xuICB5ZWFycyA9ICd5ZWFycycsXG4gIG1vbnRocyA9ICdtb250aHMnLFxuICB3ZWVrcyA9ICd3ZWVrcycsXG4gIGRheXMgPSAnZGF5cycsXG4gIGhvdXJzID0gJ2hvdXJzJyxcbiAgbWludXRlcyA9ICdtaW51dGVzJyxcbiAgc2Vjb25kcyA9ICdzZWNvbmRzJyxcbiAgbWlsbGlzZWNvbmRzID0gJ21pbGxpc2Vjb25kcycsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ2FsZW5kYXJIZWxwZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY2FsZW5kYXJDb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIHllYXJTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQElucHV0KCkgdGltZXpvbmU6ICdsb2NhbCcgfCAnVVRDJyA9ICdsb2NhbCc7XG4gIEBJbnB1dCgpIGRpc2FibGVXZWVrZW5kcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlUGFzdERhdGVzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVGdXR1cmVEYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBhbHdheXNFbmFibGVUb2RheSA9IGZhbHNlO1xuICBASW5wdXQoKSBjdXN0b21Mb2NhbGVzOiB7IFtrZXk6IHN0cmluZ106IExvY2FsZSB9ID0ge307XG4gIC8qIFxuICAgIEV4cGVyaW1lbnRhbDogSW5wdXQgcHJvcGVydHkgbm90IGRvY3VtZW50ZWQgb24gcHVycG9zZS4gXG4gICAgRm9yIGNvbnRleHQgc2VlOiBodHRwczovL2dpdGh1Yi5jb20va2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2lzc3Vlcy8yMDg3XG4gICovXG4gIEBJbnB1dCgpIHVzZVBvcG92ZXIgPSBmYWxzZTtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB5ZWFyIG5hdmlnYXRvci5cbiAgICpcbiAgICogSW50ZXJuYWxseSwgY2FsZW5kYXIgY29tcG9uZW50OlxuICAgKiAtIGJhc2VzIHllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20gYW5kIHllYXJOYXZpZ2F0b3JPcHRpb25zLnRvIG9uIHRvZGF5RGF0ZSBpZiBhIG51bWJlciBpcyBwcm92aWRlZFxuICAgKiAtIHByaW9yaXRpemVzIG1pbkRhdGUgYW5kIG1heERhdGUgb3ZlciB5ZWFyTmF2aWdhdG9yT3B0aW9ucy5mcm9tIGFuZCB5ZWFyTmF2aWdhdG9yT3B0aW9ucy50b1xuICAgKi9cbiAgQElucHV0KCkgeWVhck5hdmlnYXRvck9wdGlvbnM6IENhbGVuZGFyWWVhck5hdmlnYXRvckNvbmZpZztcblxuICBfbW9udGg6IENhbGVuZGFyQ2VsbFtdW107XG4gIF93ZWVrRGF5czogc3RyaW5nW107XG4gIHByaXZhdGUgc2VsZWN0ZWREYXk6IENhbGVuZGFyQ2VsbDtcbiAgLy8gTk9URTogSW50ZXJuYWxseSwgYWxsIERhdGVzXG4gIC8vIGFyZSBub3JtYWxpemVkIHRvIHBvaW50IHRvIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0LCByZWdhcmRsZXNzIG9mIHRoZSB0aW1lem9uZVxuICAvLyBzZXR0aW5nLlxuICBwcml2YXRlIGFjdGl2ZU1vbnRoOiBEYXRlO1xuICBwcml2YXRlIF9zZWxlY3RlZERhdGU6IERhdGU7XG4gIHByaXZhdGUgX2Rpc2FibGVkRGF0ZXM6IERhdGVbXSA9IFtdO1xuICBwcml2YXRlIF90b2RheURhdGU6IERhdGU7XG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGU7XG4gIHByaXZhdGUgX21heERhdGU6IERhdGU7XG4gIHByaXZhdGUgbG9jYWxlOiBMb2NhbGU7XG4gIHByaXZhdGUgdGltZVpvbmVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgaW5jbHVkZWRMb2NhbGVzID0geyBkYSwgZW5HQiwgZW5VUyB9O1xuXG4gIGdldCBzZWxlY3RlZERhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZERhdGUodmFsdWVMb2NhbE9yVVRDOiBEYXRlKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWVMb2NhbE9yVVRDKTtcbiAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHZhbHVlKTtcblxuICAgIGlmICh0aGlzLmhhc0RhdGVDaGFuZ2VkKHZhbHVlLCB0aGlzLl9zZWxlY3RlZERhdGUpKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0ZWREYXRlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNhYmxlZERhdGVzKCk6IERhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRGF0ZXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWREYXRlcyh2YWx1ZTogRGF0ZVtdKSB7XG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9ICh2YWx1ZSB8fCBbXSkubWFwKChkYXRlKSA9PiB0aGlzLm5vcm1hbGl6ZURhdGUoZGF0ZSkpO1xuICB9XG5cbiAgZ2V0IHRvZGF5RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fdG9kYXlEYXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRvZGF5RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIHRoaXMuX3RvZGF5RGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWluRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuYWN0aXZlTW9udGggJiYgaXNCZWZvcmUodGhpcy5hY3RpdmVNb250aCwgdmFsdWUpKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fbWluRGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuYWN0aXZlTW9udGggJiYgaXNBZnRlcih0aGlzLmFjdGl2ZU1vbnRoLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVNb250aE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRoaXMuZm9ybWF0V2l0aExvY2FsZSh0aGlzLmFjdGl2ZU1vbnRoLCAnTU1NTScpKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVZZWFyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aExvY2FsZSh0aGlzLmFjdGl2ZU1vbnRoLCAneXl5eScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgbmF2aWdhYmxlIHllYXJzIGZvciB5ZWFyIG5hdmlnYXRvciBiYXNlZCBvbiB5ZWFyTmF2aWdhdG9yT3B0aW9ucy5cbiAgICovXG4gIGdldCBuYXZpZ2FibGVZZWFycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZGF0ZU9mRmlyc3ROYXZpZ2FibGVZZWFyID1cbiAgICAgIHRoaXMubWluRGF0ZSB8fCB0aGlzLmdldERhdGVGcm9tTmF2aWdhYmxlWWVhcih0aGlzLnllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20pO1xuXG4gICAgY29uc3QgZGF0ZU9mTGFzdE5hdmlnYWJsZVllYXIgPVxuICAgICAgdGhpcy5tYXhEYXRlIHx8IHRoaXMuZ2V0RGF0ZUZyb21OYXZpZ2FibGVZZWFyKHRoaXMueWVhck5hdmlnYXRvck9wdGlvbnMudG8pO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoZGF0ZU9mRmlyc3ROYXZpZ2FibGVZZWFyLCBkYXRlT2ZMYXN0TmF2aWdhYmxlWWVhcik7XG4gIH1cblxuICBnZXQgbmF2aWdhdGVkWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYWJsZVllYXJzLmluZGV4T2YodGhpcy5hY3RpdmVZZWFyKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLXllYXItbmF2aWdhdG9yJylcbiAgZ2V0IF9oYXNZZWFyTmF2aWdhdG9yKCkge1xuICAgIHJldHVybiAhIXRoaXMueWVhck5hdmlnYXRvck9wdGlvbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhbGVuZGFySGVscGVyOiBDYWxlbmRhckhlbHBlciwgQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLm1hcExvY2FsZShsb2NhbGUpO1xuICAgIHRoaXMudGltZVpvbmVOYW1lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRXaXRoTG9jYWxlKGRhdGU6IERhdGUsIGZvcm1hdFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGZvcm1hdFN0cmluZywge1xuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogTG9jYWxlIHtcbiAgICBpZiAobG9jYWxlID09PSAnZW4nKSB7XG4gICAgICBsb2NhbGUgPSAnZW5HQic7IC8vIGlmIGVuZ2xpc2ggbG9jYWxlIGlzIHByb3ZpZGVkIHdpdGhvdXQgcmVnaW9uLCB3ZSBkZWZhdWx0IHRvIEdCXG4gICAgfVxuICAgIGxvY2FsZSA9IGxvY2FsZS5yZXBsYWNlKCctJywgJycpO1xuICAgIGNvbnN0IGF2YWlsYWJsZUxvY2FsZXMgPSB7IC4uLnRoaXMuaW5jbHVkZWRMb2NhbGVzLCAuLi50aGlzLmN1c3RvbUxvY2FsZXMgfTtcblxuICAgIHJldHVybiBhdmFpbGFibGVMb2NhbGVzW2xvY2FsZV0gfHwgdGhpcy5pbmNsdWRlZExvY2FsZXMuZW5HQjsgLy8gRGVmYXVsdCB0byBlbkdCIGlmIGluamVjdGVkIGxvY2FsZSBkb2VzbnQgZXhpc3RcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3dlZWtEYXlzID0gdGhpcy5nZXRXZWVrRGF5cygpO1xuICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodGhpcy5zZWxlY3RlZERhdGUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIuaW5pdChcbiAgICAgIHRoaXMuY2FsZW5kYXJDb250YWluZXIsXG4gICAgICB0aGlzLmdldEhlbHBlck9wdGlvbnMoKSxcbiAgICAgIHRoaXMuX29uRGF0ZVNlbGVjdGVkLmJpbmQodGhpcyksXG4gICAgICB0aGlzLm9uQ2hhbmdlTW9udGguYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZU1vbnRoKSByZXR1cm47XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcy5kaXNhYmxlV2Vla2VuZHMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZVBhc3REYXRlcyB8fFxuICAgICAgY2hhbmdlcy5kaXNhYmxlRnV0dXJlRGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZWREYXRlcyB8fFxuICAgICAgY2hhbmdlcy5taW5EYXRlIHx8XG4gICAgICBjaGFuZ2VzLm1heERhdGUgfHxcbiAgICAgIGNoYW5nZXMudG9kYXlEYXRlIHx8XG4gICAgICBjaGFuZ2VzLnRpbWV6b25lXG4gICAgKSB7XG4gICAgICB0aGlzLnJlZnJlc2hBY3RpdmVNb250aCgpO1xuICAgICAgdGhpcy5jYWxlbmRhckhlbHBlci51cGRhdGUodGhpcy5nZXRIZWxwZXJPcHRpb25zKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlTW9udGgoZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCkpIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlTW9udGggfHwgIWlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIGRhdGUpKSB7XG4gICAgICB0aGlzLmFjdGl2ZU1vbnRoID0gc3RhcnRPZk1vbnRoKGRhdGUpO1xuICAgICAgdGhpcy5yZWZyZXNoQWN0aXZlTW9udGgoKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIudXBkYXRlKHRoaXMuZ2V0SGVscGVyT3B0aW9ucygpKTtcbiAgICB9XG4gIH1cblxuICAvLyBGb3IgbGVuaWVuY3ksIHRoZSBjb21wb25lbnQgd2lsbCBhY2NlcHQgYW55IERhdGUgdGhhdCBwb2ludHMgdG8gZWl0aGVyIFVUQyBtaWRuaWdodFxuICAvLyBvciB0byBsb2NhbCB0aW1lem9uZSBtaWRuaWdodCBhbHRob3VnaCB3ZSB3aWxsIGludGVybmFsbHkgbm9ybWFsaXplIHRoZSByZXByZXNlbnRhdGlvblxuICAvLyBvZiBhbGwgcmVjZWl2ZWQgZGF0ZXMgdG8gcG9pbnQgdG8gbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQuXG4gIC8vIFdlIGN1cnJlbnRseSBsb2cgbm8gd2FybmluZ3MgaWYgdGhlIGRhdGUgZG9lc24ndCBtYXRjaCB0aGUgdGltZXpvbmUgc2V0dGluZyBvclxuICAvLyBpZiBpdCBkb2Vzbid0IHBvaW50IHRvIG1pZG5pZ2h0LlxuICBwcml2YXRlIG5vcm1hbGl6ZURhdGUoZGF0ZUxvY2FsT3JVVEM6IERhdGUpIHtcbiAgICBpZiAoIWRhdGVMb2NhbE9yVVRDKSByZXR1cm47XG5cbiAgICBpZiAoc3RhcnRPZkRheShkYXRlTG9jYWxPclVUQykuZ2V0VGltZSgpID09PSBkYXRlTG9jYWxPclVUQy5nZXRUaW1lKCkpIHtcbiAgICAgIC8vIGRhdGUgaXMgbG9jYWwgdGltZXpvbmUgbWlkbmlnaHRcbiAgICAgIHJldHVybiBkYXRlTG9jYWxPclVUQztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgc3RhcnRPZkRheSh1dGNUb1pvbmVkVGltZShkYXRlTG9jYWxPclVUQywgdGhpcy50aW1lWm9uZU5hbWUpKS5nZXRUaW1lKCkgPT09XG4gICAgICB1dGNUb1pvbmVkVGltZShkYXRlTG9jYWxPclVUQywgdGhpcy50aW1lWm9uZU5hbWUpLmdldFRpbWUoKVxuICAgICkge1xuICAgICAgLy8gdGhlIGRhdGUgaXMgYSBVVEMgbWlkbmlnaHQ7IGNyZWF0ZSB0aGUgZXF1aXZhbGVudCBsb2NhbCB0aW1lem9uZSBtaWRuaWdodCBkYXRlXG4gICAgICBjb25zdCBub3JtYWxpemVkVVRDZGF0ZSA9IHV0Y1RvWm9uZWRUaW1lKGRhdGVMb2NhbE9yVVRDLCB0aGlzLnRpbWVab25lTmFtZSk7XG4gICAgICByZXR1cm4gbm9ybWFsaXplZFVUQ2RhdGU7XG4gICAgfVxuICAgIC8vIGRvZXMgbm90IHBvaW50IHRvIG1pZG5pZ2h0IHNvIHdlIG1ha2UgaXRcbiAgICByZXR1cm4gc3RhcnRPZkRheShkYXRlTG9jYWxPclVUQyk7XG4gIH1cblxuICBwcml2YXRlIGdldFdlZWtEYXlzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gICAgY29uc3Qgd2VlayA9IGVhY2hEYXlPZkludGVydmFsKHtcbiAgICAgIHN0YXJ0OiBzdGFydE9mV2Vlayhub3csIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KSxcbiAgICAgIGVuZDogZW5kT2ZXZWVrKG5vdywgeyBsb2NhbGU6IHRoaXMubG9jYWxlIH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHdlZWsubWFwKChkYXRlKSA9PiB0aGlzLmdldEZpcnN0TGV0dGVyT2ZXZWVrRGF5Q2FwaXRhbGl6ZWQoZGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaXJzdExldHRlck9mV2Vla0RheUNhcGl0YWxpemVkKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRXaXRoTG9jYWxlKGRhdGUsICdFRUVFRScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEYXRlQ2hhbmdlZChuZXdEYXRlOiBEYXRlLCBwcmV2aW91c0RhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAoIW5ld0RhdGUgJiYgIXByZXZpb3VzRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobmV3RGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIXByZXZpb3VzRGF0ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAhaXNTYW1lRGF5KG5ld0RhdGUsIHByZXZpb3VzRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzRGlzYWJsZWREYXRlKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGRpc2FibGVkRGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIGlzU2FtZURheShkaXNhYmxlZERhdGUsIGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVmcmVzaEFjdGl2ZU1vbnRoKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmVNb250aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbW9udGhTdGFydCA9IHN0YXJ0T2ZNb250aCh0aGlzLmFjdGl2ZU1vbnRoKTtcbiAgICBjb25zdCBtb250aEVuZCA9IGVuZE9mTW9udGgodGhpcy5hY3RpdmVNb250aCk7XG4gICAgY29uc3Qgc3RhcnRPZkZpcnN0V2VlayA9IHN0YXJ0T2ZXZWVrKG1vbnRoU3RhcnQsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KTtcbiAgICBjb25zdCBlbmRPZkxhc3RXZWVrID0gZW5kT2ZXZWVrKG1vbnRoRW5kLCB7IGxvY2FsZTogdGhpcy5sb2NhbGUgfSk7XG4gICAgY29uc3QgdG90YWxEYXlDb3VudCA9IGRpZmZlcmVuY2VJbkRheXMoZW5kT2ZMYXN0V2Vlaywgc3RhcnRPZkZpcnN0V2VlaykgKyAxO1xuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy50b2RheURhdGUgPyBzdGFydE9mRGF5KHRoaXMudG9kYXlEYXRlKSA6IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7XG5cbiAgICBjb25zdCBkYXlzQXJyYXkgPSBBcnJheS5mcm9tKEFycmF5KHRvdGFsRGF5Q291bnQpLmtleXMoKSk7XG5cbiAgICBjb25zdCBkYXlzOiBDYWxlbmRhckNlbGxbXSA9IGRheXNBcnJheS5tYXAoKG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgY2VsbERhdGUgPSBhZGQoc3RhcnRPZkZpcnN0V2VlaywgeyBbVGltZVVuaXQuZGF5c106IG51bWJlciB9KTtcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMuZ2V0Q2FsZW5kYXJEYXkoY2VsbERhdGUsIHRvZGF5LCBtb250aFN0YXJ0KTtcblxuICAgICAgY29uc3QgaXNTZWxlY3RhYmxlID0gdGhpcy5pc1NlbGVjdGFibGUoZGF5LCBjZWxsRGF0ZSk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlLCBjZWxsRGF0ZSk7XG4gICAgICBjb25zdCBjZWxsID0ge1xuICAgICAgICBkYXRlOiBjZWxsRGF0ZS5nZXREYXRlKCksXG4gICAgICAgIGlzQ3VycmVudE1vbnRoOiBkYXkuaXNDdXJyZW50TW9udGgsXG4gICAgICAgIGlzU2VsZWN0YWJsZSxcbiAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgY3NzQ2xhc3NlczogdGhpcy5nZXRDc3NDbGFzc2VzKGRheSwgaXNTZWxlY3RhYmxlLCBpc1NlbGVjdGVkKSxcbiAgICAgIH07XG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gY2VsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjZWxsO1xuICAgIH0pO1xuICAgIHRoaXMuX21vbnRoID0gdGhpcy5jaHVuayhkYXlzLCA3KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FsZW5kYXJEYXkoZGF0ZTogRGF0ZSwgdG9kYXk6IERhdGUsIG1vbnRoU3RhcnQ6IERhdGUpOiBDYWxlbmRhckRheSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVG9kYXk6IGlzU2FtZURheSh0b2RheSwgZGF0ZSksXG4gICAgICBpc1Bhc3Q6IGlzQmVmb3JlKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzRnV0dXJlOiBpc0FmdGVyKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzV2Vla2VuZDogaXNXZWVrZW5kKGRhdGUpLFxuICAgICAgaXNDdXJyZW50TW9udGg6IGlzU2FtZU1vbnRoKGRhdGUsIG1vbnRoU3RhcnQpLFxuICAgICAgaXNEaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkRGF0ZShkYXRlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NlbGVjdGFibGUoZGF5OiBDYWxlbmRhckRheSwgZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5hbHdheXNFbmFibGVUb2RheSAmJiBkYXkuaXNUb2RheSkgfHxcbiAgICAgICghZGF5LmlzRGlzYWJsZWQgJiZcbiAgICAgICAgZGF5LmlzQ3VycmVudE1vbnRoICYmXG4gICAgICAgICEodGhpcy5kaXNhYmxlV2Vla2VuZHMgJiYgZGF5LmlzV2Vla2VuZCkgJiZcbiAgICAgICAgISh0aGlzLmRpc2FibGVQYXN0RGF0ZXMgJiYgZGF5LmlzUGFzdCkgJiZcbiAgICAgICAgISh0aGlzLmRpc2FibGVGdXR1cmVEYXRlcyAmJiBkYXkuaXNGdXR1cmUpICYmXG4gICAgICAgICEodGhpcy5taW5EYXRlICYmIGlzQmVmb3JlKGRhdGUsIHRoaXMubWluRGF0ZSkpICYmXG4gICAgICAgICEodGhpcy5tYXhEYXRlICYmIGlzQWZ0ZXIoZGF0ZSwgdGhpcy5tYXhEYXRlKSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3NzQ2xhc3NlcyhkYXk6IENhbGVuZGFyRGF5LCBpc1NlbGVjdGFibGU6IGJvb2xlYW4sIGlzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjc3NDbGFzc2VzID0ge1xuICAgICAgJ2N1cnJlbnQtbW9udGgnOiBkYXkuaXNDdXJyZW50TW9udGgsXG4gICAgICB3ZWVrZW5kOiBkYXkuaXNXZWVrZW5kLFxuICAgICAgdG9kYXk6IGRheS5pc1RvZGF5LFxuICAgICAgc2VsZWN0YWJsZTogaXNTZWxlY3RhYmxlLFxuICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICBwYXN0OiBkYXkuaXNQYXN0LFxuICAgICAgZGlzYWJsZWQ6IGRheS5pc0Rpc2FibGVkLFxuICAgIH07XG4gICAgbGV0IGNzc0NsYXNzU3RyaW5nID0gJ2RheSc7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY3NzQ2xhc3Nlcykge1xuICAgICAgaWYgKGNzc0NsYXNzZXNba2V5XSkge1xuICAgICAgICBjc3NDbGFzc1N0cmluZyArPSAnICcgKyBrZXk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjc3NDbGFzc1N0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgY2h1bmsoYXJyYXk6IGFueVtdLCBzaXplOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgd2hpbGUgKGFycmF5Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0cy5wdXNoKGFycmF5LnNwbGljZSgwLCBzaXplKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNlbGVjdGVkRGF0ZUNoYW5nZShuZXdEYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXkuaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0RheSA9IHRoaXMuZ2V0Q2VsbChuZXdEYXRlKTtcbiAgICBpZiAobmV3RGF5KSB7XG4gICAgICBuZXdEYXkuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gbmV3RGF5O1xuICAgIH1cbiAgICB0aGlzLmNhbGVuZGFySGVscGVyLnNldFNlbGVjdGVkRGF5KG5ld0RhdGUuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIF9vbkRhdGVTZWxlY3RlZChuZXdEYXk6IENhbGVuZGFyQ2VsbCkge1xuICAgIGlmIChuZXdEYXkuaXNTZWxlY3RhYmxlICYmIG5ld0RheS5kYXRlKSB7XG4gICAgICBsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMuYWN0aXZlTW9udGgpO1xuXG4gICAgICBpZiAodGhpcy50aW1lem9uZSA9PT0gJ1VUQycpIHtcbiAgICAgICAgbmV3RGF0ZSA9IHpvbmVkVGltZVRvVXRjKHRoaXMuc3VidHJhY3RUaW1lem9uZU9mZnNldChuZXdEYXRlKSwgdGhpcy50aW1lWm9uZU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBuZXdEYXRlLnNldERhdGUobmV3RGF5LmRhdGUpO1xuICAgICAgY29uc3QgZGF0ZVRvRW1pdCA9IG5ld0RhdGU7XG5cbiAgICAgIGlmICh0aGlzLmhhc0RhdGVDaGFuZ2VkKG5ld0RhdGUsIHRoaXMuX3NlbGVjdGVkRGF0ZSkpIHtcbiAgICAgICAgdGhpcy5vblNlbGVjdGVkRGF0ZUNoYW5nZShuZXdEYXRlKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3RGF0ZTtcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoZGF0ZVRvRW1pdCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChkYXRlVG9FbWl0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlTW9udGgoZGlyZWN0aW9uOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jaGFuZ2VNb250aChkaXJlY3Rpb24pO1xuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIudXBkYXRlKHRoaXMuZ2V0SGVscGVyT3B0aW9ucygpKTtcbiAgfVxuXG4gIF9jaGFuZ2VNb250aChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGFuZ2VBY3RpdmVWaWV3KGluZGV4LCBUaW1lVW5pdC5tb250aHMpO1xuICB9XG5cbiAgX2NoYW5nZVllYXIoeWVhcjogc3RyaW5nKSB7XG4gICAgY29uc3QgeWVhck51bWVyaWMgPSBOdW1iZXIoeWVhcik7XG4gICAgdGhpcy5jaGFuZ2VBY3RpdmVWaWV3KHllYXJOdW1lcmljIC0gZ2V0WWVhcih0aGlzLmFjdGl2ZU1vbnRoKSwgVGltZVVuaXQueWVhcnMpO1xuICAgIHRoaXMueWVhclNlbGVjdC5lbWl0KHllYXJOdW1lcmljKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlQWN0aXZlVmlldyhpbmRleDogbnVtYmVyLCB1bml0OiBUaW1lVW5pdCkge1xuICAgIGlmIChpbmRleCA9PT0gMCkgcmV0dXJuO1xuICAgIHRoaXMuYWN0aXZlTW9udGggPSBhZGQodGhpcy5hY3RpdmVNb250aCwgeyBbdW5pdF06IGluZGV4IH0pO1xuXG4gICAgdGhpcy5yZWZyZXNoQWN0aXZlTW9udGgoKTtcbiAgfVxuXG4gIGdldCBfY2FuTmF2aWdhdGVCYWNrKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlYWNoZWRQYXN0RGF0ZXNMaW1pdCA9XG4gICAgICB0aGlzLmRpc2FibGVQYXN0RGF0ZXMgJiYgaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgdGhpcy50b2RheURhdGUpO1xuXG4gICAgY29uc3QgcmVhY2hlZE9yRXhjZWVkZWRNaW5EYXRlID1cbiAgICAgIHRoaXMubWluRGF0ZSAmJlxuICAgICAgKGlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMubWluRGF0ZSkgfHwgaXNCZWZvcmUodGhpcy5hY3RpdmVNb250aCwgdGhpcy5taW5EYXRlKSk7XG5cbiAgICByZXR1cm4gIXJlYWNoZWRQYXN0RGF0ZXNMaW1pdCAmJiAhcmVhY2hlZE9yRXhjZWVkZWRNaW5EYXRlO1xuICB9XG5cbiAgZ2V0IF9jYW5OYXZpZ2F0ZUZvcndhcmQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVhY2hlZEZ1dHVyZURhdGVzTGltaXQgPVxuICAgICAgdGhpcy5kaXNhYmxlRnV0dXJlRGF0ZXMgJiYgaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgdGhpcy50b2RheURhdGUpO1xuXG4gICAgY29uc3QgcmVhY2hlZE9yRXhjZWVkZWRNYXhEYXRlID1cbiAgICAgIHRoaXMubWF4RGF0ZSAmJlxuICAgICAgKGlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMubWF4RGF0ZSkgfHwgaXNBZnRlcih0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLm1heERhdGUpKTtcblxuICAgIHJldHVybiAhcmVhY2hlZEZ1dHVyZURhdGVzTGltaXQgJiYgIXJlYWNoZWRPckV4Y2VlZGVkTWF4RGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2VsbChkYXRlOiBEYXRlKSB7XG4gICAgbGV0IGZvdW5kRGF5ID0gbnVsbDtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgZm9yIChsZXQgd2VlayBvZiB0aGlzLl9tb250aCkge1xuICAgICAgICBmb3VuZERheSA9IHdlZWsuZmluZCgoZGF5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRheS5pc0N1cnJlbnRNb250aCAmJiBkYXkuZGF0ZSA9PT0gZGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZm91bmREYXkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm91bmREYXk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlbHBlck9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FuTmF2aWdhdGVCYWNrOiB0aGlzLl9jYW5OYXZpZ2F0ZUJhY2ssXG4gICAgICBjYW5OYXZpZ2F0ZUZvcndhcmQ6IHRoaXMuX2Nhbk5hdmlnYXRlRm9yd2FyZCxcbiAgICAgIHllYXI6IHRoaXMuYWN0aXZlWWVhcixcbiAgICAgIG1vbnRoTmFtZTogdGhpcy5hY3RpdmVNb250aE5hbWUsXG4gICAgICB3ZWVrRGF5czogdGhpcy5fd2Vla0RheXMsXG4gICAgICBtb250aDogdGhpcy5fbW9udGgsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3VidHJhY3RUaW1lem9uZU9mZnNldChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbk1zID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHRpbWV6b25lT2Zmc2V0SW5Ncyk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVGcm9tTmF2aWdhYmxlWWVhcihuYXZpZ2FibGVZZWFyOiBudW1iZXIgfCBEYXRlKTogRGF0ZSB7XG4gICAgaWYgKG5hdmlnYWJsZVllYXIgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gbmF2aWdhYmxlWWVhcjtcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudG9kYXlEYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyBuYXZpZ2FibGVZZWFyLCAwLCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nW10ge1xuICAgIC8vIEVuc3VyZSB5ZWFycyBhcmUgb3JkZXJlZCBjb3JyZWN0bHkgaWYgcGFyYW1ldGVycyBhcmUgc3dpdGNoZWQ6XG4gICAgY29uc3QgW3N0YXJ0WWVhciwgZW5kWWVhcl0gPSBbc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIGVuZERhdGUuZ2V0RnVsbFllYXIoKV0uc29ydCgpO1xuICAgIGNvbnN0IG51bWJlck9mWWVhcnMgPSBlbmRZZWFyIC0gc3RhcnRZZWFyO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1iZXJPZlllYXJzICsgMSB9LCAoXywgaSkgPT4gKHN0YXJ0WWVhciArIGkpLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iXX0=
|
|
394
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFDUCxPQUFPLEVBQ1AsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQWEzRCxJQUFLLFFBU0o7QUFURCxXQUFLLFFBQVE7SUFDWCwyQkFBZSxDQUFBO0lBQ2YsNkJBQWlCLENBQUE7SUFDakIsMkJBQWUsQ0FBQTtJQUNmLHlCQUFhLENBQUE7SUFDYiwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUNBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQVRJLFFBQVEsS0FBUixRQUFRLFFBU1o7QUFR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QUksRUFBRSxDQUFDO1FBQ3JGLE1BQU0sYUFBYSxHQUFHLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDMUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQzs7O1lBL2JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQix1NENBQXdDO2dCQUV4QyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7O2FBQzVCOzs7O1lBN0JRLGNBQWM7eUNBeUpnQyxNQUFNLFNBQUMsU0FBUzs7O2dDQTFIcEUsU0FBUyxTQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt5QkFDaEQsTUFBTTt5QkFDTixNQUFNO3lCQUNOLE1BQU07dUJBQ04sS0FBSzs4QkFDTCxLQUFLOytCQUNMLEtBQUs7aUNBQ0wsS0FBSztnQ0FDTCxLQUFLOzRCQUNMLEtBQUs7eUJBS0wsS0FBSzttQ0FRTCxLQUFLOzJCQXNCTCxLQUFLOzRCQWNMLEtBQUs7d0JBUUwsS0FBSztzQkFRTCxLQUFLO3NCQVdMLEtBQUs7Z0NBZ0NMLFdBQVcsU0FBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZCxcbiAgZGlmZmVyZW5jZUluRGF5cyxcbiAgZWFjaERheU9mSW50ZXJ2YWwsXG4gIGVuZE9mTW9udGgsXG4gIGVuZE9mV2VlayxcbiAgZm9ybWF0LFxuICBnZXRZZWFyLFxuICBpc0FmdGVyLFxuICBpc0JlZm9yZSxcbiAgaXNTYW1lRGF5LFxuICBpc1NhbWVNb250aCxcbiAgaXNXZWVrZW5kLFxuICBMb2NhbGUgYXMgTG9jYWxlRGF0ZUZucyxcbiAgc3RhcnRPZkRheSxcbiAgc3RhcnRPZk1vbnRoLFxuICBzdGFydE9mV2Vlayxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUsIHpvbmVkVGltZVRvVXRjIH0gZnJvbSAnZGF0ZS1mbnMtdHonO1xuaW1wb3J0IHsgZGEsIGVuR0IsIGVuVVMgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUnO1xuXG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmltcG9ydCB7IENhbGVuZGFyQ2VsbCB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1jZWxsLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1vcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2NhbGVuZGFyLmhlbHBlcic7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJOYXZpZ2F0b3JDb25maWcgfSBmcm9tICcuL29wdGlvbnMvY2FsZW5kYXIteWVhci1uYXZpZ2F0b3ItY29uZmlnJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlID0gTG9jYWxlRGF0ZUZucztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1RvZGF5OiBib29sZWFuO1xuICBpc1dlZWtlbmQ6IGJvb2xlYW47XG4gIGlzUGFzdDogYm9vbGVhbjtcbiAgaXNGdXR1cmU6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmVudW0gVGltZVVuaXQge1xuICB5ZWFycyA9ICd5ZWFycycsXG4gIG1vbnRocyA9ICdtb250aHMnLFxuICB3ZWVrcyA9ICd3ZWVrcycsXG4gIGRheXMgPSAnZGF5cycsXG4gIGhvdXJzID0gJ2hvdXJzJyxcbiAgbWludXRlcyA9ICdtaW51dGVzJyxcbiAgc2Vjb25kcyA9ICdzZWNvbmRzJyxcbiAgbWlsbGlzZWNvbmRzID0gJ21pbGxpc2Vjb25kcycsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ2FsZW5kYXJIZWxwZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY2FsZW5kYXJDb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIHllYXJTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQElucHV0KCkgdGltZXpvbmU6ICdsb2NhbCcgfCAnVVRDJyA9ICdsb2NhbCc7XG4gIEBJbnB1dCgpIGRpc2FibGVXZWVrZW5kcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlUGFzdERhdGVzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVGdXR1cmVEYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBhbHdheXNFbmFibGVUb2RheSA9IGZhbHNlO1xuICBASW5wdXQoKSBjdXN0b21Mb2NhbGVzOiB7IFtrZXk6IHN0cmluZ106IExvY2FsZSB9ID0ge307XG4gIC8qIFxuICAgIEV4cGVyaW1lbnRhbDogSW5wdXQgcHJvcGVydHkgbm90IGRvY3VtZW50ZWQgb24gcHVycG9zZS4gXG4gICAgRm9yIGNvbnRleHQgc2VlOiBodHRwczovL2dpdGh1Yi5jb20va2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2lzc3Vlcy8yMDg3XG4gICovXG4gIEBJbnB1dCgpIHVzZVBvcG92ZXIgPSBmYWxzZTtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB5ZWFyIG5hdmlnYXRvci5cbiAgICpcbiAgICogSW50ZXJuYWxseSwgY2FsZW5kYXIgY29tcG9uZW50OlxuICAgKiAtIGJhc2VzIHllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20gYW5kIHllYXJOYXZpZ2F0b3JPcHRpb25zLnRvIG9uIHRvZGF5RGF0ZSBpZiBhIG51bWJlciBpcyBwcm92aWRlZFxuICAgKiAtIHByaW9yaXRpemVzIG1pbkRhdGUgYW5kIG1heERhdGUgb3ZlciB5ZWFyTmF2aWdhdG9yT3B0aW9ucy5mcm9tIGFuZCB5ZWFyTmF2aWdhdG9yT3B0aW9ucy50b1xuICAgKi9cbiAgQElucHV0KCkgeWVhck5hdmlnYXRvck9wdGlvbnM6IENhbGVuZGFyWWVhck5hdmlnYXRvckNvbmZpZztcblxuICBfbW9udGg6IENhbGVuZGFyQ2VsbFtdW107XG4gIF93ZWVrRGF5czogc3RyaW5nW107XG4gIHByaXZhdGUgc2VsZWN0ZWREYXk6IENhbGVuZGFyQ2VsbDtcbiAgLy8gTk9URTogSW50ZXJuYWxseSwgYWxsIERhdGVzXG4gIC8vIGFyZSBub3JtYWxpemVkIHRvIHBvaW50IHRvIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0LCByZWdhcmRsZXNzIG9mIHRoZSB0aW1lem9uZVxuICAvLyBzZXR0aW5nLlxuICBwcml2YXRlIGFjdGl2ZU1vbnRoOiBEYXRlO1xuICBwcml2YXRlIF9zZWxlY3RlZERhdGU6IERhdGU7XG4gIHByaXZhdGUgX2Rpc2FibGVkRGF0ZXM6IERhdGVbXSA9IFtdO1xuICBwcml2YXRlIF90b2RheURhdGU6IERhdGU7XG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGU7XG4gIHByaXZhdGUgX21heERhdGU6IERhdGU7XG4gIHByaXZhdGUgbG9jYWxlOiBMb2NhbGU7XG4gIHByaXZhdGUgdGltZVpvbmVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgaW5jbHVkZWRMb2NhbGVzID0geyBkYSwgZW5HQiwgZW5VUyB9O1xuXG4gIGdldCBzZWxlY3RlZERhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZERhdGUodmFsdWVMb2NhbE9yVVRDOiBEYXRlKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWVMb2NhbE9yVVRDKTtcbiAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHZhbHVlKTtcblxuICAgIGlmICh0aGlzLmhhc0RhdGVDaGFuZ2VkKHZhbHVlLCB0aGlzLl9zZWxlY3RlZERhdGUpKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0ZWREYXRlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNhYmxlZERhdGVzKCk6IERhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRGF0ZXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWREYXRlcyh2YWx1ZTogRGF0ZVtdKSB7XG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9ICh2YWx1ZSB8fCBbXSkubWFwKChkYXRlKSA9PiB0aGlzLm5vcm1hbGl6ZURhdGUoZGF0ZSkpO1xuICB9XG5cbiAgZ2V0IHRvZGF5RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fdG9kYXlEYXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRvZGF5RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIHRoaXMuX3RvZGF5RGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWluRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuYWN0aXZlTW9udGggJiYgaXNCZWZvcmUodGhpcy5hY3RpdmVNb250aCwgdmFsdWUpKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fbWluRGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuYWN0aXZlTW9udGggJiYgaXNBZnRlcih0aGlzLmFjdGl2ZU1vbnRoLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVNb250aE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRoaXMuZm9ybWF0V2l0aExvY2FsZSh0aGlzLmFjdGl2ZU1vbnRoLCAnTU1NTScpKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVZZWFyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aExvY2FsZSh0aGlzLmFjdGl2ZU1vbnRoLCAneXl5eScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgbmF2aWdhYmxlIHllYXJzIGZvciB5ZWFyIG5hdmlnYXRvciBiYXNlZCBvbiB5ZWFyTmF2aWdhdG9yT3B0aW9ucy5cbiAgICovXG4gIGdldCBuYXZpZ2FibGVZZWFycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZGF0ZU9mRmlyc3ROYXZpZ2FibGVZZWFyID1cbiAgICAgIHRoaXMubWluRGF0ZSB8fCB0aGlzLmdldERhdGVGcm9tTmF2aWdhYmxlWWVhcih0aGlzLnllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20pO1xuXG4gICAgY29uc3QgZGF0ZU9mTGFzdE5hdmlnYWJsZVllYXIgPVxuICAgICAgdGhpcy5tYXhEYXRlIHx8IHRoaXMuZ2V0RGF0ZUZyb21OYXZpZ2FibGVZZWFyKHRoaXMueWVhck5hdmlnYXRvck9wdGlvbnMudG8pO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoZGF0ZU9mRmlyc3ROYXZpZ2FibGVZZWFyLCBkYXRlT2ZMYXN0TmF2aWdhYmxlWWVhcik7XG4gIH1cblxuICBnZXQgbmF2aWdhdGVkWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYWJsZVllYXJzLmluZGV4T2YodGhpcy5hY3RpdmVZZWFyKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLXllYXItbmF2aWdhdG9yJylcbiAgZ2V0IF9oYXNZZWFyTmF2aWdhdG9yKCkge1xuICAgIHJldHVybiAhIXRoaXMueWVhck5hdmlnYXRvck9wdGlvbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhbGVuZGFySGVscGVyOiBDYWxlbmRhckhlbHBlciwgQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLm1hcExvY2FsZShsb2NhbGUpO1xuICAgIHRoaXMudGltZVpvbmVOYW1lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRXaXRoTG9jYWxlKGRhdGU6IERhdGUsIGZvcm1hdFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGZvcm1hdFN0cmluZywge1xuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogTG9jYWxlIHtcbiAgICBpZiAobG9jYWxlID09PSAnZW4nKSB7XG4gICAgICBsb2NhbGUgPSAnZW5HQic7IC8vIGlmIGVuZ2xpc2ggbG9jYWxlIGlzIHByb3ZpZGVkIHdpdGhvdXQgcmVnaW9uLCB3ZSBkZWZhdWx0IHRvIEdCXG4gICAgfVxuICAgIGxvY2FsZSA9IGxvY2FsZS5yZXBsYWNlKCctJywgJycpO1xuICAgIGNvbnN0IGF2YWlsYWJsZUxvY2FsZXMgPSB7IC4uLnRoaXMuaW5jbHVkZWRMb2NhbGVzLCAuLi50aGlzLmN1c3RvbUxvY2FsZXMgfTtcblxuICAgIHJldHVybiBhdmFpbGFibGVMb2NhbGVzW2xvY2FsZV0gfHwgdGhpcy5pbmNsdWRlZExvY2FsZXMuZW5HQjsgLy8gRGVmYXVsdCB0byBlbkdCIGlmIGluamVjdGVkIGxvY2FsZSBkb2VzbnQgZXhpc3RcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3dlZWtEYXlzID0gdGhpcy5nZXRXZWVrRGF5cygpO1xuICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodGhpcy5zZWxlY3RlZERhdGUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIuaW5pdChcbiAgICAgIHRoaXMuY2FsZW5kYXJDb250YWluZXIsXG4gICAgICB0aGlzLmdldEhlbHBlck9wdGlvbnMoKSxcbiAgICAgIHRoaXMuX29uRGF0ZVNlbGVjdGVkLmJpbmQodGhpcyksXG4gICAgICB0aGlzLm9uQ2hhbmdlTW9udGguYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZU1vbnRoKSByZXR1cm47XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcy5kaXNhYmxlV2Vla2VuZHMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZVBhc3REYXRlcyB8fFxuICAgICAgY2hhbmdlcy5kaXNhYmxlRnV0dXJlRGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZWREYXRlcyB8fFxuICAgICAgY2hhbmdlcy5taW5EYXRlIHx8XG4gICAgICBjaGFuZ2VzLm1heERhdGUgfHxcbiAgICAgIGNoYW5nZXMudG9kYXlEYXRlIHx8XG4gICAgICBjaGFuZ2VzLnRpbWV6b25lXG4gICAgKSB7XG4gICAgICB0aGlzLnJlZnJlc2hBY3RpdmVNb250aCgpO1xuICAgICAgdGhpcy5jYWxlbmRhckhlbHBlci51cGRhdGUodGhpcy5nZXRIZWxwZXJPcHRpb25zKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlTW9udGgoZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCkpIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlTW9udGggfHwgIWlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIGRhdGUpKSB7XG4gICAgICB0aGlzLmFjdGl2ZU1vbnRoID0gc3RhcnRPZk1vbnRoKGRhdGUpO1xuICAgICAgdGhpcy5yZWZyZXNoQWN0aXZlTW9udGgoKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIudXBkYXRlKHRoaXMuZ2V0SGVscGVyT3B0aW9ucygpKTtcbiAgICB9XG4gIH1cblxuICAvLyBGb3IgbGVuaWVuY3ksIHRoZSBjb21wb25lbnQgd2lsbCBhY2NlcHQgYW55IERhdGUgdGhhdCBwb2ludHMgdG8gZWl0aGVyIFVUQyBtaWRuaWdodFxuICAvLyBvciB0byBsb2NhbCB0aW1lem9uZSBtaWRuaWdodCBhbHRob3VnaCB3ZSB3aWxsIGludGVybmFsbHkgbm9ybWFsaXplIHRoZSByZXByZXNlbnRhdGlvblxuICAvLyBvZiBhbGwgcmVjZWl2ZWQgZGF0ZXMgdG8gcG9pbnQgdG8gbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQuXG4gIC8vIFdlIGN1cnJlbnRseSBsb2cgbm8gd2FybmluZ3MgaWYgdGhlIGRhdGUgZG9lc24ndCBtYXRjaCB0aGUgdGltZXpvbmUgc2V0dGluZyBvclxuICAvLyBpZiBpdCBkb2Vzbid0IHBvaW50IHRvIG1pZG5pZ2h0LlxuICBwcml2YXRlIG5vcm1hbGl6ZURhdGUoZGF0ZUxvY2FsT3JVVEM6IERhdGUpIHtcbiAgICBpZiAoIWRhdGVMb2NhbE9yVVRDKSByZXR1cm47XG5cbiAgICBpZiAoc3RhcnRPZkRheShkYXRlTG9jYWxPclVUQykuZ2V0VGltZSgpID09PSBkYXRlTG9jYWxPclVUQy5nZXRUaW1lKCkpIHtcbiAgICAgIC8vIGRhdGUgaXMgbG9jYWwgdGltZXpvbmUgbWlkbmlnaHRcbiAgICAgIHJldHVybiBkYXRlTG9jYWxPclVUQztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgc3RhcnRPZkRheSh1dGNUb1pvbmVkVGltZShkYXRlTG9jYWxPclVUQywgdGhpcy50aW1lWm9uZU5hbWUpKS5nZXRUaW1lKCkgPT09XG4gICAgICB1dGNUb1pvbmVkVGltZShkYXRlTG9jYWxPclVUQywgdGhpcy50aW1lWm9uZU5hbWUpLmdldFRpbWUoKVxuICAgICkge1xuICAgICAgLy8gdGhlIGRhdGUgaXMgYSBVVEMgbWlkbmlnaHQ7IGNyZWF0ZSB0aGUgZXF1aXZhbGVudCBsb2NhbCB0aW1lem9uZSBtaWRuaWdodCBkYXRlXG4gICAgICBjb25zdCBub3JtYWxpemVkVVRDZGF0ZSA9IHV0Y1RvWm9uZWRUaW1lKGRhdGVMb2NhbE9yVVRDLCB0aGlzLnRpbWVab25lTmFtZSk7XG4gICAgICByZXR1cm4gbm9ybWFsaXplZFVUQ2RhdGU7XG4gICAgfVxuICAgIC8vIGRvZXMgbm90IHBvaW50IHRvIG1pZG5pZ2h0IHNvIHdlIG1ha2UgaXRcbiAgICByZXR1cm4gc3RhcnRPZkRheShkYXRlTG9jYWxPclVUQyk7XG4gIH1cblxuICBwcml2YXRlIGdldFdlZWtEYXlzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gICAgY29uc3Qgd2VlayA9IGVhY2hEYXlPZkludGVydmFsKHtcbiAgICAgIHN0YXJ0OiBzdGFydE9mV2Vlayhub3csIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KSxcbiAgICAgIGVuZDogZW5kT2ZXZWVrKG5vdywgeyBsb2NhbGU6IHRoaXMubG9jYWxlIH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHdlZWsubWFwKChkYXRlKSA9PiB0aGlzLmdldEZpcnN0TGV0dGVyT2ZXZWVrRGF5Q2FwaXRhbGl6ZWQoZGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaXJzdExldHRlck9mV2Vla0RheUNhcGl0YWxpemVkKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRXaXRoTG9jYWxlKGRhdGUsICdFRUVFRScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEYXRlQ2hhbmdlZChuZXdEYXRlOiBEYXRlLCBwcmV2aW91c0RhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAoIW5ld0RhdGUgJiYgIXByZXZpb3VzRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobmV3RGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIXByZXZpb3VzRGF0ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAhaXNTYW1lRGF5KG5ld0RhdGUsIHByZXZpb3VzRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzRGlzYWJsZWREYXRlKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGRpc2FibGVkRGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIGlzU2FtZURheShkaXNhYmxlZERhdGUsIGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVmcmVzaEFjdGl2ZU1vbnRoKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmVNb250aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbW9udGhTdGFydCA9IHN0YXJ0T2ZNb250aCh0aGlzLmFjdGl2ZU1vbnRoKTtcbiAgICBjb25zdCBtb250aEVuZCA9IGVuZE9mTW9udGgodGhpcy5hY3RpdmVNb250aCk7XG4gICAgY29uc3Qgc3RhcnRPZkZpcnN0V2VlayA9IHN0YXJ0T2ZXZWVrKG1vbnRoU3RhcnQsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KTtcbiAgICBjb25zdCBlbmRPZkxhc3RXZWVrID0gZW5kT2ZXZWVrKG1vbnRoRW5kLCB7IGxvY2FsZTogdGhpcy5sb2NhbGUgfSk7XG4gICAgY29uc3QgdG90YWxEYXlDb3VudCA9IGRpZmZlcmVuY2VJbkRheXMoZW5kT2ZMYXN0V2Vlaywgc3RhcnRPZkZpcnN0V2VlaykgKyAxO1xuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy50b2RheURhdGUgPyBzdGFydE9mRGF5KHRoaXMudG9kYXlEYXRlKSA6IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7XG5cbiAgICBjb25zdCBkYXlzQXJyYXkgPSBBcnJheS5mcm9tKEFycmF5KHRvdGFsRGF5Q291bnQpLmtleXMoKSk7XG5cbiAgICBjb25zdCBkYXlzOiBDYWxlbmRhckNlbGxbXSA9IGRheXNBcnJheS5tYXAoKG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgY2VsbERhdGUgPSBhZGQoc3RhcnRPZkZpcnN0V2VlaywgeyBbVGltZVVuaXQuZGF5c106IG51bWJlciB9KTtcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMuZ2V0Q2FsZW5kYXJEYXkoY2VsbERhdGUsIHRvZGF5LCBtb250aFN0YXJ0KTtcblxuICAgICAgY29uc3QgaXNTZWxlY3RhYmxlID0gdGhpcy5pc1NlbGVjdGFibGUoZGF5LCBjZWxsRGF0ZSk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlLCBjZWxsRGF0ZSk7XG4gICAgICBjb25zdCBjZWxsID0ge1xuICAgICAgICBkYXRlOiBjZWxsRGF0ZS5nZXREYXRlKCksXG4gICAgICAgIGlzQ3VycmVudE1vbnRoOiBkYXkuaXNDdXJyZW50TW9udGgsXG4gICAgICAgIGlzU2VsZWN0YWJsZSxcbiAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgY3NzQ2xhc3NlczogdGhpcy5nZXRDc3NDbGFzc2VzKGRheSwgaXNTZWxlY3RhYmxlLCBpc1NlbGVjdGVkKSxcbiAgICAgIH07XG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gY2VsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjZWxsO1xuICAgIH0pO1xuICAgIHRoaXMuX21vbnRoID0gdGhpcy5jaHVuayhkYXlzLCA3KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FsZW5kYXJEYXkoZGF0ZTogRGF0ZSwgdG9kYXk6IERhdGUsIG1vbnRoU3RhcnQ6IERhdGUpOiBDYWxlbmRhckRheSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVG9kYXk6IGlzU2FtZURheSh0b2RheSwgZGF0ZSksXG4gICAgICBpc1Bhc3Q6IGlzQmVmb3JlKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzRnV0dXJlOiBpc0FmdGVyKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzV2Vla2VuZDogaXNXZWVrZW5kKGRhdGUpLFxuICAgICAgaXNDdXJyZW50TW9udGg6IGlzU2FtZU1vbnRoKGRhdGUsIG1vbnRoU3RhcnQpLFxuICAgICAgaXNEaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkRGF0ZShkYXRlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NlbGVjdGFibGUoZGF5OiBDYWxlbmRhckRheSwgZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5hbHdheXNFbmFibGVUb2RheSAmJiBkYXkuaXNUb2RheSkgfHxcbiAgICAgICghZGF5LmlzRGlzYWJsZWQgJiZcbiAgICAgICAgZGF5LmlzQ3VycmVudE1vbnRoICYmXG4gICAgICAgICEodGhpcy5kaXNhYmxlV2Vla2VuZHMgJiYgZGF5LmlzV2Vla2VuZCkgJiZcbiAgICAgICAgISh0aGlzLmRpc2FibGVQYXN0RGF0ZXMgJiYgZGF5LmlzUGFzdCkgJiZcbiAgICAgICAgISh0aGlzLmRpc2FibGVGdXR1cmVEYXRlcyAmJiBkYXkuaXNGdXR1cmUpICYmXG4gICAgICAgICEodGhpcy5taW5EYXRlICYmIGlzQmVmb3JlKGRhdGUsIHRoaXMubWluRGF0ZSkpICYmXG4gICAgICAgICEodGhpcy5tYXhEYXRlICYmIGlzQWZ0ZXIoZGF0ZSwgdGhpcy5tYXhEYXRlKSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3NzQ2xhc3NlcyhkYXk6IENhbGVuZGFyRGF5LCBpc1NlbGVjdGFibGU6IGJvb2xlYW4sIGlzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjc3NDbGFzc2VzID0ge1xuICAgICAgJ2N1cnJlbnQtbW9udGgnOiBkYXkuaXNDdXJyZW50TW9udGgsXG4gICAgICB3ZWVrZW5kOiBkYXkuaXNXZWVrZW5kLFxuICAgICAgdG9kYXk6IGRheS5pc1RvZGF5LFxuICAgICAgc2VsZWN0YWJsZTogaXNTZWxlY3RhYmxlLFxuICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICBwYXN0OiBkYXkuaXNQYXN0LFxuICAgICAgZGlzYWJsZWQ6IGRheS5pc0Rpc2FibGVkLFxuICAgIH07XG4gICAgbGV0IGNzc0NsYXNzU3RyaW5nID0gJ2RheSc7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY3NzQ2xhc3Nlcykge1xuICAgICAgaWYgKGNzc0NsYXNzZXNba2V5XSkge1xuICAgICAgICBjc3NDbGFzc1N0cmluZyArPSAnICcgKyBrZXk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjc3NDbGFzc1N0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgY2h1bmsoYXJyYXk6IGFueVtdLCBzaXplOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgd2hpbGUgKGFycmF5Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0cy5wdXNoKGFycmF5LnNwbGljZSgwLCBzaXplKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNlbGVjdGVkRGF0ZUNoYW5nZShuZXdEYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXkuaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0RheSA9IHRoaXMuZ2V0Q2VsbChuZXdEYXRlKTtcbiAgICBpZiAobmV3RGF5KSB7XG4gICAgICBuZXdEYXkuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gbmV3RGF5O1xuICAgIH1cbiAgICB0aGlzLmNhbGVuZGFySGVscGVyLnNldFNlbGVjdGVkRGF5KG5ld0RhdGUuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIF9vbkRhdGVTZWxlY3RlZChuZXdEYXk6IENhbGVuZGFyQ2VsbCkge1xuICAgIGlmIChuZXdEYXkuaXNTZWxlY3RhYmxlICYmIG5ld0RheS5kYXRlKSB7XG4gICAgICBsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMuYWN0aXZlTW9udGgpO1xuICAgICAgbmV3RGF0ZS5zZXREYXRlKG5ld0RheS5kYXRlKTtcblxuICAgICAgaWYgKHRoaXMudGltZXpvbmUgPT09ICdVVEMnKSB7XG4gICAgICAgIG5ld0RhdGUgPSB6b25lZFRpbWVUb1V0Yyh0aGlzLnN1YnRyYWN0VGltZXpvbmVPZmZzZXQobmV3RGF0ZSksIHRoaXMudGltZVpvbmVOYW1lKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0ZVRvRW1pdCA9IG5ld0RhdGU7XG5cbiAgICAgIGlmICh0aGlzLmhhc0RhdGVDaGFuZ2VkKG5ld0RhdGUsIHRoaXMuX3NlbGVjdGVkRGF0ZSkpIHtcbiAgICAgICAgdGhpcy5vblNlbGVjdGVkRGF0ZUNoYW5nZShuZXdEYXRlKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3RGF0ZTtcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoZGF0ZVRvRW1pdCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChkYXRlVG9FbWl0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlTW9udGgoZGlyZWN0aW9uOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jaGFuZ2VNb250aChkaXJlY3Rpb24pO1xuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIudXBkYXRlKHRoaXMuZ2V0SGVscGVyT3B0aW9ucygpKTtcbiAgfVxuXG4gIF9jaGFuZ2VNb250aChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGFuZ2VBY3RpdmVWaWV3KGluZGV4LCBUaW1lVW5pdC5tb250aHMpO1xuICB9XG5cbiAgX2NoYW5nZVllYXIoeWVhcjogc3RyaW5nKSB7XG4gICAgY29uc3QgeWVhck51bWVyaWMgPSBOdW1iZXIoeWVhcik7XG4gICAgdGhpcy5jaGFuZ2VBY3RpdmVWaWV3KHllYXJOdW1lcmljIC0gZ2V0WWVhcih0aGlzLmFjdGl2ZU1vbnRoKSwgVGltZVVuaXQueWVhcnMpO1xuICAgIHRoaXMueWVhclNlbGVjdC5lbWl0KHllYXJOdW1lcmljKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlQWN0aXZlVmlldyhpbmRleDogbnVtYmVyLCB1bml0OiBUaW1lVW5pdCkge1xuICAgIGlmIChpbmRleCA9PT0gMCkgcmV0dXJuO1xuICAgIHRoaXMuYWN0aXZlTW9udGggPSBhZGQodGhpcy5hY3RpdmVNb250aCwgeyBbdW5pdF06IGluZGV4IH0pO1xuXG4gICAgdGhpcy5yZWZyZXNoQWN0aXZlTW9udGgoKTtcbiAgfVxuXG4gIGdldCBfY2FuTmF2aWdhdGVCYWNrKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlYWNoZWRQYXN0RGF0ZXNMaW1pdCA9XG4gICAgICB0aGlzLmRpc2FibGVQYXN0RGF0ZXMgJiYgaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgdGhpcy50b2RheURhdGUpO1xuXG4gICAgY29uc3QgcmVhY2hlZE9yRXhjZWVkZWRNaW5EYXRlID1cbiAgICAgIHRoaXMubWluRGF0ZSAmJlxuICAgICAgKGlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMubWluRGF0ZSkgfHwgaXNCZWZvcmUodGhpcy5hY3RpdmVNb250aCwgdGhpcy5taW5EYXRlKSk7XG5cbiAgICByZXR1cm4gIXJlYWNoZWRQYXN0RGF0ZXNMaW1pdCAmJiAhcmVhY2hlZE9yRXhjZWVkZWRNaW5EYXRlO1xuICB9XG5cbiAgZ2V0IF9jYW5OYXZpZ2F0ZUZvcndhcmQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVhY2hlZEZ1dHVyZURhdGVzTGltaXQgPVxuICAgICAgdGhpcy5kaXNhYmxlRnV0dXJlRGF0ZXMgJiYgaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgdGhpcy50b2RheURhdGUpO1xuXG4gICAgY29uc3QgcmVhY2hlZE9yRXhjZWVkZWRNYXhEYXRlID1cbiAgICAgIHRoaXMubWF4RGF0ZSAmJlxuICAgICAgKGlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMubWF4RGF0ZSkgfHwgaXNBZnRlcih0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLm1heERhdGUpKTtcblxuICAgIHJldHVybiAhcmVhY2hlZEZ1dHVyZURhdGVzTGltaXQgJiYgIXJlYWNoZWRPckV4Y2VlZGVkTWF4RGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2VsbChkYXRlOiBEYXRlKSB7XG4gICAgbGV0IGZvdW5kRGF5ID0gbnVsbDtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgZm9yIChsZXQgd2VlayBvZiB0aGlzLl9tb250aCkge1xuICAgICAgICBmb3VuZERheSA9IHdlZWsuZmluZCgoZGF5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRheS5pc0N1cnJlbnRNb250aCAmJiBkYXkuZGF0ZSA9PT0gZGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZm91bmREYXkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm91bmREYXk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlbHBlck9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FuTmF2aWdhdGVCYWNrOiB0aGlzLl9jYW5OYXZpZ2F0ZUJhY2ssXG4gICAgICBjYW5OYXZpZ2F0ZUZvcndhcmQ6IHRoaXMuX2Nhbk5hdmlnYXRlRm9yd2FyZCxcbiAgICAgIHllYXI6IHRoaXMuYWN0aXZlWWVhcixcbiAgICAgIG1vbnRoTmFtZTogdGhpcy5hY3RpdmVNb250aE5hbWUsXG4gICAgICB3ZWVrRGF5czogdGhpcy5fd2Vla0RheXMsXG4gICAgICBtb250aDogdGhpcy5fbW9udGgsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3VidHJhY3RUaW1lem9uZU9mZnNldChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbk1zID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHRpbWV6b25lT2Zmc2V0SW5Ncyk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVGcm9tTmF2aWdhYmxlWWVhcihuYXZpZ2FibGVZZWFyOiBudW1iZXIgfCBEYXRlKTogRGF0ZSB7XG4gICAgaWYgKG5hdmlnYWJsZVllYXIgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gbmF2aWdhYmxlWWVhcjtcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudG9kYXlEYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyBuYXZpZ2FibGVZZWFyLCAwLCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nW10ge1xuICAgIC8vIEVuc3VyZSB5ZWFycyBhcmUgb3JkZXJlZCBjb3JyZWN0bHkgaWYgcGFyYW1ldGVycyBhcmUgc3dpdGNoZWQ6XG4gICAgY29uc3QgW3N0YXJ0WWVhciwgZW5kWWVhcl0gPSBbc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIGVuZERhdGUuZ2V0RnVsbFllYXIoKV0uc29ydCgpO1xuICAgIGNvbnN0IG51bWJlck9mWWVhcnMgPSBlbmRZZWFyIC0gc3RhcnRZZWFyO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1iZXJPZlllYXJzICsgMSB9LCAoXywgaSkgPT4gKHN0YXJ0WWVhciArIGkpLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -8,7 +8,7 @@ CardHeaderComponent.decorators = [
|
|
|
8
8
|
{ type: Component, args: [{
|
|
9
9
|
selector: 'kirby-card-header',
|
|
10
10
|
template: "<header>\n <h2 *ngIf=\"title\" [class.bold]=\"isTitleBold\">{{ title }}</h2>\n <h4 *ngIf=\"subtitle\">{{ subtitle }}</h4>\n <ng-content></ng-content>\n</header>\n",
|
|
11
|
-
styles: [":host{display:block;border-top-left-radius:16px;border-top-right-radius:16px;text-align:center;padding:var(--
|
|
11
|
+
styles: [":host{display:block;border-top-left-radius:16px;border-top-right-radius:16px;text-align:center;padding:var(--kirby-internal-card-header-padding,16px);color:var(--kirby-card-header-color);background-color:var(--kirby-card-header-background-color)}h2{font-size:16px;font-weight:400;margin:0 0 var(--kirby-internal-card-header-margin-bottom,8px);line-height:var(--kirby-internal-card-header-line-height,28px)}h2.bold{font-weight:700}h4{font-size:14px;margin:0;font-weight:400}:host(.danger){--kirby-card-header-background-color:var(--kirby-danger);--kirby-card-header-color:var(--kirby-danger-contrast)}:host(.warning){--kirby-card-header-background-color:var(--kirby-warning);--kirby-card-header-color:var(--kirby-warning-contrast)}:host(.success){--kirby-card-header-background-color:var(--kirby-success);--kirby-card-header-color:var(--kirby-success-contrast)}:host(.info){--kirby-card-header-background-color:var(--kirby-semi-light);--kirby-card-header-color:var(--kirby-semi-light-contrast)}:host(.danger,.warning,.success,.info){--kirby-internal-card-header-padding:2px 8px}:host(.danger,.warning,.success,.info) h2{--kirby-internal-card-header-line-height:24px;--kirby-internal-card-header-margin-bottom:0px}"]
|
|
12
12
|
},] }
|
|
13
13
|
];
|
|
14
14
|
CardHeaderComponent.propDecorators = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"CardFlagLevel":{"__symbolic":"interface"},"CardHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"kirby-card-header","template":"<header>\n <h2 *ngIf=\"title\" [class.bold]=\"isTitleBold\">{{ title }}</h2>\n <h4 *ngIf=\"subtitle\">{{ subtitle }}</h4>\n <ng-content></ng-content>\n</header>\n","styles":[":host{display:block;border-top-left-radius:16px;border-top-right-radius:16px;text-align:center;padding:var(--
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"CardFlagLevel":{"__symbolic":"interface"},"CardHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"kirby-card-header","template":"<header>\n <h2 *ngIf=\"title\" [class.bold]=\"isTitleBold\">{{ title }}</h2>\n <h4 *ngIf=\"subtitle\">{{ subtitle }}</h4>\n <ng-content></ng-content>\n</header>\n","styles":[":host{display:block;border-top-left-radius:16px;border-top-right-radius:16px;text-align:center;padding:var(--kirby-internal-card-header-padding,16px);color:var(--kirby-card-header-color);background-color:var(--kirby-card-header-background-color)}h2{font-size:16px;font-weight:400;margin:0 0 var(--kirby-internal-card-header-margin-bottom,8px);line-height:var(--kirby-internal-card-header-line-height,28px)}h2.bold{font-weight:700}h4{font-size:14px;margin:0;font-weight:400}:host(.danger){--kirby-card-header-background-color:var(--kirby-danger);--kirby-card-header-color:var(--kirby-danger-contrast)}:host(.warning){--kirby-card-header-background-color:var(--kirby-warning);--kirby-card-header-color:var(--kirby-warning-contrast)}:host(.success){--kirby-card-header-background-color:var(--kirby-success);--kirby-card-header-color:var(--kirby-success-contrast)}:host(.info){--kirby-card-header-background-color:var(--kirby-semi-light);--kirby-card-header-color:var(--kirby-semi-light-contrast)}:host(.danger,.warning,.success,.info){--kirby-internal-card-header-padding:2px 8px}:host(.danger,.warning,.success,.info) h2{--kirby-internal-card-header-line-height:24px;--kirby-internal-card-header-margin-bottom:0px}"]}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"subtitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"isTitleBold":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"flagged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":15,"character":3},"arguments":["class"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}]}}}}]
|
|
@@ -32,6 +32,8 @@ export class ChartJSService {
|
|
|
32
32
|
this.chart.data.datasets = datasets;
|
|
33
33
|
}
|
|
34
34
|
updateLabels(labels) {
|
|
35
|
+
/* As labels provided via the 'labels' input property always has
|
|
36
|
+
highest priority - we can just set the property directly */
|
|
35
37
|
this.chart.data.labels = labels;
|
|
36
38
|
}
|
|
37
39
|
updateType(type, customOptions) {
|
|
@@ -83,7 +85,7 @@ export class ChartJSService {
|
|
|
83
85
|
}
|
|
84
86
|
destructivelyUpdateType(type, customOptions) {
|
|
85
87
|
const datasets = this.chart.data.datasets;
|
|
86
|
-
const labels = this.chart.data.labels;
|
|
88
|
+
const labels = this.chart.data.labels; // chart.js stores labels as unknown[]; cast it to ChartLabel[]
|
|
87
89
|
const annotations = this.getExistingChartAnnotations();
|
|
88
90
|
this.chartType = type;
|
|
89
91
|
const options = this.createOptionsObject({ customOptions, annotations });
|
|
@@ -190,32 +192,42 @@ export class ChartJSService {
|
|
|
190
192
|
day: 'numeric',
|
|
191
193
|
}));
|
|
192
194
|
}
|
|
195
|
+
getLabelsToApply(args) {
|
|
196
|
+
const { datasets, labels, type, indexAxis } = args;
|
|
197
|
+
const datasetHasLabels = ({ data }) => !!(data === null || data === void 0 ? void 0 : data.some((datapoint) => typeof datapoint === 'object' && typeof datapoint[indexAxis] === 'string'));
|
|
198
|
+
/*
|
|
199
|
+
Labels can be provided by the user two ways:
|
|
200
|
+
1. As a seperate ChartLabel[] via the 'labels' input prop - this has highest priority
|
|
201
|
+
2. Together with the dataset via the 'data' input prop - here each datapoint contains
|
|
202
|
+
a label for the indexAxis.
|
|
203
|
+
For example: { x: 'label1', y: 1} in the case where the index axis is 'x'.
|
|
204
|
+
|
|
205
|
+
If no labels are provided then default labels are used.
|
|
206
|
+
*/
|
|
207
|
+
const labelsAreGivenAsSeperateArray = labels !== undefined;
|
|
208
|
+
const labelsAreGivenTogetherWithDataset = datasets.some(datasetHasLabels);
|
|
209
|
+
if (labelsAreGivenAsSeperateArray) {
|
|
210
|
+
return labels;
|
|
211
|
+
}
|
|
212
|
+
else if (labelsAreGivenTogetherWithDataset) {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
/*
|
|
217
|
+
Chart.js requires labels along the index axis to render anything therefore
|
|
218
|
+
all other types than stock uses empty labels as default. The stock type
|
|
219
|
+
displays day & month as default.
|
|
220
|
+
*/
|
|
221
|
+
return type === 'stock'
|
|
222
|
+
? this.getDefaultStockLabels(datasets, this.locale)
|
|
223
|
+
: this.createBlankLabels(datasets);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
193
226
|
createConfigurationObject(type, datasets, options, labels) {
|
|
227
|
+
var _a, _b;
|
|
194
228
|
const typeConfig = this.chartConfigService.getTypeConfig(type);
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
if (type === 'stock') {
|
|
198
|
-
/*
|
|
199
|
-
The time scale will auto generate labels based on data.
|
|
200
|
-
It should be possible to pass an empty array to get the default
|
|
201
|
-
behaviour of chart.js when using stock chart.
|
|
202
|
-
|
|
203
|
-
TODO: Simplify to always pass labels, if given, to chart.js.
|
|
204
|
-
Would be a breaking change. See issue:
|
|
205
|
-
https://github.com/kirbydesign/designsystem/issues/2085
|
|
206
|
-
*/
|
|
207
|
-
const shouldUseTimescaleLabels = (labels === null || labels === void 0 ? void 0 : labels.length) === 0 && ((_b = (_a = options === null || options === void 0 ? void 0 : options.scales) === null || _a === void 0 ? void 0 : _a.x) === null || _b === void 0 ? void 0 : _b.type) === 'time';
|
|
208
|
-
if (shouldUseTimescaleLabels)
|
|
209
|
-
return labels;
|
|
210
|
-
return this.getDefaultStockLabels(datasets, this.locale);
|
|
211
|
-
}
|
|
212
|
-
else if ((labels === null || labels === void 0 ? void 0 : labels.length) > 0) {
|
|
213
|
-
return labels;
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
return this.createBlankLabels(datasets);
|
|
217
|
-
}
|
|
218
|
-
})();
|
|
229
|
+
const indexAxis = (_b = (_a = typeConfig === null || typeConfig === void 0 ? void 0 : typeConfig.options) === null || _a === void 0 ? void 0 : _a.indexAxis) !== null && _b !== void 0 ? _b : 'x';
|
|
230
|
+
const labelsToApply = this.getLabelsToApply({ labels, datasets, type, indexAxis });
|
|
219
231
|
return mergeDeepAll(typeConfig, {
|
|
220
232
|
data: {
|
|
221
233
|
labels: labelsToApply,
|
|
@@ -311,4 +323,4 @@ ChartJSService.decorators = [
|
|
|
311
323
|
ChartJSService.ctorParameters = () => [
|
|
312
324
|
{ type: ChartConfigService }
|
|
313
325
|
];
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQU1MLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5QyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUdyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFdkQsV0FBVyxDQUFDLElBU2xCO1FBQ0MsTUFBTSxFQUNKLGFBQWEsRUFDYixJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixtQkFBbUIsR0FDcEIsR0FBRyxJQUFJLENBQUM7UUFFVCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsSUFBSSxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixD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LEtBQUssRUFBRSxFQUFFO1lBQ3hDLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDN0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtZQUNELElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDOUQsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7WUE3WUYsVUFBVTs7OztZQU5GLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUVsZW1lbnQsIENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRPcHRpb25zLCBTY2F0dGVyRGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk9wdGlvbnMgfSBmcm9tICdjaGFydGpzLXBsdWdpbi1hbm5vdGF0aW9uJztcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgbWVyZ2VEZWVwQWxsIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwJztcbmltcG9ydCB7XG4gIENoYXJ0RGF0YUxhYmVsT3B0aW9ucyxcbiAgQ2hhcnREYXRhc2V0LFxuICBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gIENoYXJ0TG9jYWxlLFxuICBDaGFydFR5cGUsXG4gIGlzTnVtYmVyQXJyYXksXG59IGZyb20gJy4uL2NoYXJ0LnR5cGVzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZ3MvY2hhcnQtY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJy4vY29uZmlndXJlZC1jaGFydC1qcyc7XG5cbmNvbnN0IENIQVJUX0xPQ0FMRV9ERUZBVUxUID0gJ2VuLVVTJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFydDogQ2hhcnQ7XG4gIHByaXZhdGUgZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICBwcml2YXRlIGhpZ2hsaWdodGVkRWxlbWVudHM6IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgcHJpdmF0ZSBjaGFydFR5cGU6IENoYXJ0VHlwZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IENoYXJ0TG9jYWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhcnRDb25maWdTZXJ2aWNlOiBDaGFydENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIHJlbmRlckNoYXJ0KGFyZ3M6IHtcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXTtcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSB8IHN0cmluZ1tdW107XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgZGF0YUxhYmVsT3B0aW9ucz86IENoYXJ0RGF0YUxhYmVsT3B0aW9ucztcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgdGFyZ2V0RWxlbWVudCxcbiAgICAgIHR5cGUsXG4gICAgICBkYXRhLFxuICAgICAgbGFiZWxzLFxuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgfSA9IGFyZ3M7XG5cbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zIHx8IG51bGw7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cyB8fCBudWxsO1xuICAgIHRoaXMuY2hhcnRUeXBlID0gdHlwZTtcbiAgICB0aGlzLmxvY2FsZSA9IGRhdGFMYWJlbE9wdGlvbnM/LmxvY2FsZSB8fCBDSEFSVF9MT0NBTEVfREVGQVVMVDtcblxuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3Qoe1xuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICB9KTtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5jcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KHR5cGUsIGRhdGFzZXRzLCBvcHRpb25zLCBsYWJlbHMpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQodGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlZHJhd0NoYXJ0KCkge1xuICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEpO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gZGF0YXNldHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFiZWxzKGxhYmVsczogc3RyaW5nW10gfCBzdHJpbmdbXVtdKSB7XG4gICAgdGhpcy5jaGFydC5kYXRhLmxhYmVscyA9IGxhYmVscztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IENoYXJ0VHlwZSwgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucykge1xuICAgIGlmICh0eXBlID09PSAnYmFyJyB8fCB0eXBlID09PSAnY29sdW1uJykge1xuICAgICAgLyogaW5kZXhBeGlzIGRvZXMgbm90IHVwZGF0ZSBwcmVkaWN0YWJseTsgdXBkYXRlIGJ5IHJlcGxhY2luZyBcbiAgICAgICAgIHRoZSBjaGFydCBlbnRpcmVseSBpbnN0ZWFkICovXG4gICAgICB0aGlzLmRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGUsIGN1c3RvbU9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vbkRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGUsIGN1c3RvbU9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhTGFiZWxPcHRpb25zKGRhdGFMYWJlbE9wdGlvbnM6IENoYXJ0RGF0YUxhYmVsT3B0aW9ucykge1xuICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucyA9IGRhdGFMYWJlbE9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlT3B0aW9ucyhjdXN0b21PcHRpb25zOiBDaGFydE9wdGlvbnMsIHR5cGU6IENoYXJ0VHlwZSkge1xuICAgIGNvbnN0IGFubm90YXRpb25zID0gdGhpcy5nZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTtcbiAgICB0aGlzLmNoYXJ0VHlwZSA9IHR5cGU7XG4gICAgdGhpcy5jaGFydC5vcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zT2JqZWN0KHsgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHRoaXMuY2hhcnQub3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVIaWdobGlnaHRlZEVsZW1lbnRzKGhpZ2hsaWdodGVkRWxlbWVudHM/OiBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMpIHtcbiAgICB0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHMgPSBoaWdobGlnaHRlZEVsZW1lbnRzO1xuICAgIGNvbnN0IG9sZERhdGFzZXRzID0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzIGFzIENoYXJ0RGF0YXNldFtdO1xuXG4gICAgLy8gQ2xlYXIgb2xkIGRhdGFzZXRzIG9mIGhpZ2hsaWdodGVkIGVsZW1lbnRzXG4gICAgb2xkRGF0YXNldHMubWFwKChkYXRhc2V0KSA9PiB7XG4gICAgICBpZiAoZGF0YXNldD8ua2lyYnlPcHRpb25zPy5oaWdobGlnaHRlZEVsZW1lbnRzKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhc2V0LmtpcmJ5T3B0aW9ucy5oaWdobGlnaHRlZEVsZW1lbnRzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhvbGREYXRhc2V0cyk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpOiBBbm5vdGF0aW9uT3B0aW9uc1tdIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuY2hhcnQub3B0aW9ucy5wbHVnaW5zPy5hbm5vdGF0aW9uPy5hbm5vdGF0aW9ucztcbiAgICAvKiBJbiBicm93c2VyIGNoYXJ0LmpzIG1pZ2h0IHJldHVybiBhbm5vdGF0aW9ucyBhcyBhIFByb3h5IG9iamVjdDsgZm9yY2UgaXQgdG8gYmUgYW4gYXJyYXkuXG4gICAgICAgRWFjaCBhbm5vdGF0aW9uT3B0aW9uIGluIHRoZSByZXN1bHRpbmcgYXJyYXkgIHdpbGwgYWxzbyBiZSBhIFByb3h5IG9iamVjdC4gXG4gICAgICAgQnV0IGludGVybmFsbHkgY2hhcnQuanMgd2lsbCBqdXN0IHdvcmsgd2l0aCB0aGVtIGFzIG5vcm1hbCB2YWx1ZXMgKi9cbiAgICBpZiAoYW5ub3RhdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGFubm90YXRpb25zKS5tYXAoKGtleSkgPT4gYW5ub3RhdGlvbnNba2V5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGU6IENoYXJ0VHlwZSwgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucykge1xuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzIGFzIENoYXJ0RGF0YXNldFtdO1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuY2hhcnQuZGF0YS5sYWJlbHM7XG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3QoeyBjdXN0b21PcHRpb25zLCBhbm5vdGF0aW9ucyB9KTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QodHlwZSwgZGF0YXNldHMsIG9wdGlvbnMsIGxhYmVscyk7XG4gICAgY29uc3QgY2FudmFzRWxlbWVudCA9IHRoaXMuY2hhcnQuY2FudmFzO1xuXG4gICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQoY2FudmFzRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9uRGVzdHJ1Y3RpdmVseVVwZGF0ZVR5cGUoY2hhcnRUeXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSBjaGFydFR5cGU7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7XG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhcnQuY29uZmlnLnR5cGUgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5jaGFydFR5cGVUb0NoYXJ0SlNUeXBlKGNoYXJ0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVOZXdDaGFydChjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCwgY29uZmlnOiBDaGFydENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KGNhbnZhc0VsZW1lbnQsIGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBBcnJheShsYXJnZXN0RGF0YXNldC5kYXRhLmxlbmd0aCkuZmlsbCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgcmV0dXJuIGFubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xuICAgICAgY29uc3QgYW5ub3RhdGlvblR5cGVEZWZhdWx0cyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEFubm90YXRpb25EZWZhdWx0cyhhbm5vdGF0aW9uLnR5cGUpO1xuICAgICAgcmV0dXJuIG1lcmdlRGVlcEFsbChhbm5vdGF0aW9uVHlwZURlZmF1bHRzLCBhbm5vdGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5ub3RhdGlvblBsdWdpbk9wdGlvbnNPYmplY3QoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIGFubm90YXRpb246IHtcbiAgICAgICAgICBhbm5vdGF0aW9uczogYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKG9wdGlvbnM6IENoYXJ0T3B0aW9ucyk6IENoYXJ0T3B0aW9ucyB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKCk7XG4gICAgT2JqZWN0LmVudHJpZXMoaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKS5mb3JFYWNoKChba2V5LCBfXSkgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSBvcHRpb25zW2tleV07XG4gICAgICBvcHRpb25zW2tleV0gPSAoZTogRXZlbnQsIGE6IEFjdGl2ZUVsZW1lbnRbXSwgYzogQ2hhcnQpID0+IHtcbiAgICAgICAgaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zW2tleV0oZSwgYSwgYywgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3RvY2tPcHRpb25zT2JqZWN0KGRhdGFMYWJlbE9wdGlvbnM6IENoYXJ0RGF0YUxhYmVsT3B0aW9ucykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBkYXRlID0gdG9EYXRlKCh0b29sdGlwSXRlbXNbMF0/LnJhdyBhcyBhbnkpPy54KTtcbiAgICAgICAgICAgICAgaWYgKGRhdGUudmFsdWVPZigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCB7XG4gICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgLy8gSXQncyBub3QgcG9zc2libGUgdG8gYWRkIHNwYWNpbmcgYmV0d2VlbiBjb2xvciBsZWdlbmQgYW5kIHRleHQgc28gd2VcbiAgICAgICAgICAgICAgLy8gcHJlZml4IHdpdGggYSBzcGFjZS5cbiAgICAgICAgICAgICAgcmV0dXJuICcgJyArIGNvbnRleHQuZm9ybWF0dGVkVmFsdWUgKyAoZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHk6IHtcbiAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgKyAoZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU9wdGlvbnNPYmplY3QoYXJnczoge1xuICAgIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnM7XG4gICAgYW5ub3RhdGlvbnM/OiBBbm5vdGF0aW9uT3B0aW9uc1tdO1xuICAgIGRhdGFMYWJlbE9wdGlvbnM/OiBDaGFydERhdGFMYWJlbE9wdGlvbnM7XG4gIH0pOiBDaGFydE9wdGlvbnMge1xuICAgIGNvbnN0IHsgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMsIGRhdGFMYWJlbE9wdGlvbnM6IGNoYXJ0RGF0YUxhYmVsT3B0aW9ucyB9ID0gYXJncztcblxuICAgIGNvbnN0IHR5cGVDb25maWcgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5nZXRUeXBlQ29uZmlnKHRoaXMuY2hhcnRUeXBlKTtcbiAgICBjb25zdCB0eXBlQ29uZmlnT3B0aW9ucyA9IHR5cGVDb25maWc/Lm9wdGlvbnM7XG4gICAgY29uc3QgYW5ub3RhdGlvblBsdWdpbk9wdGlvbnMgPSBhbm5vdGF0aW9uc1xuICAgICAgPyB0aGlzLmNyZWF0ZUFubm90YXRpb25QbHVnaW5PcHRpb25zT2JqZWN0KGFubm90YXRpb25zKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBzdG9ja09wdGlvbnM6IENoYXJ0T3B0aW9ucyA9XG4gICAgICB0aGlzLmNoYXJ0VHlwZSA9PT0gJ3N0b2NrJyA/IHRoaXMuY3JlYXRlU3RvY2tPcHRpb25zT2JqZWN0KGNoYXJ0RGF0YUxhYmVsT3B0aW9ucykgOiB7fTtcblxuICAgIGxldCBvcHRpb25zOiBDaGFydE9wdGlvbnMgPSBtZXJnZURlZXBBbGwoXG4gICAgICBzdG9ja09wdGlvbnMsXG4gICAgICB0eXBlQ29uZmlnT3B0aW9ucyxcbiAgICAgIGN1c3RvbU9wdGlvbnMsXG4gICAgICBhbm5vdGF0aW9uUGx1Z2luT3B0aW9uc1xuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hcHBseUludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFN0b2NrTGFiZWxzKGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSwgbG9jYWxlOiBDaGFydExvY2FsZSkge1xuICAgIGNvbnN0IGxhcmdlc3REYXRhc2V0ID0gZGF0YXNldHMucmVkdWNlKChwcmV2aW91c0RhdGFzZXQsIGN1cnJlbnREYXRhc2V0KSA9PlxuICAgICAgcHJldmlvdXNEYXRhc2V0LmRhdGEubGVuZ3RoID4gY3VycmVudERhdGFzZXQuZGF0YS5sZW5ndGggPyBwcmV2aW91c0RhdGFzZXQgOiBjdXJyZW50RGF0YXNldFxuICAgICk7XG4gICAgcmV0dXJuIGxhcmdlc3REYXRhc2V0LmRhdGEubWFwKChwb2ludDogU2NhdHRlckRhdGFQb2ludCkgPT5cbiAgICAgIHRvRGF0ZShwb2ludC54KS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29uZmlndXJhdGlvbk9iamVjdChcbiAgICB0eXBlOiBDaGFydFR5cGUsXG4gICAgZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdLFxuICAgIG9wdGlvbnM6IENoYXJ0T3B0aW9ucyxcbiAgICBsYWJlbHM/OiB1bmtub3duW11cbiAgKTogQ2hhcnRDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0eXBlKTtcblxuICAgIGNvbnN0IGxhYmVsc1RvQXBwbHkgPSAoKCkgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICdzdG9jaycpIHtcbiAgICAgICAgLyogXG4gICAgICAgICAgIFRoZSB0aW1lIHNjYWxlIHdpbGwgYXV0byBnZW5lcmF0ZSBsYWJlbHMgYmFzZWQgb24gZGF0YS4gXG4gICAgICAgICAgIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGFycmF5IHRvIGdldCB0aGUgZGVmYXVsdCBcbiAgICAgICAgICAgYmVoYXZpb3VyIG9mIGNoYXJ0LmpzIHdoZW4gdXNpbmcgc3RvY2sgY2hhcnQuIFxuXG4gICAgICAgICAgIFRPRE86IFNpbXBsaWZ5IHRvIGFsd2F5cyBwYXNzIGxhYmVscywgaWYgZ2l2ZW4sIHRvIGNoYXJ0LmpzLlxuICAgICAgICAgICBXb3VsZCBiZSBhIGJyZWFraW5nIGNoYW5nZS4gU2VlIGlzc3VlOiBcbiAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2tpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pc3N1ZXMvMjA4NVxuICAgICAgICAqL1xuICAgICAgICBjb25zdCBzaG91bGRVc2VUaW1lc2NhbGVMYWJlbHMgPVxuICAgICAgICAgIGxhYmVscz8ubGVuZ3RoID09PSAwICYmIG9wdGlvbnM/LnNjYWxlcz8ueD8udHlwZSA9PT0gJ3RpbWUnO1xuICAgICAgICBpZiAoc2hvdWxkVXNlVGltZXNjYWxlTGFiZWxzKSByZXR1cm4gbGFiZWxzO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0U3RvY2tMYWJlbHMoZGF0YXNldHMsIHRoaXMubG9jYWxlKTtcbiAgICAgIH0gZWxzZSBpZiAobGFiZWxzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBsYWJlbHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVCbGFua0xhYmVscyhkYXRhc2V0cyk7XG4gICAgICB9XG4gICAgfSkoKTtcblxuICAgIHJldHVybiBtZXJnZURlZXBBbGwodHlwZUNvbmZpZywge1xuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbHM6IGxhYmVsc1RvQXBwbHksXG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgfSkgYXMgQ2hhcnRDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIaWdobGlnaHRlZEVsZW1lbnRzVG9EYXRhc2V0cyhcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzOiBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdXG4gICkge1xuICAgIGhpZ2hsaWdodGVkRWxlbWVudHMuZm9yRWFjaCgoW2RhdGFzZXRJbmRleCwgZGF0YUluZGV4XSkgPT4ge1xuICAgICAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFzZXRJbmRleF07XG4gICAgICBpZiAoIWRhdGFzZXQpIHJldHVybjtcblxuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucy5oaWdobGlnaHRlZEVsZW1lbnRzLnB1c2goZGF0YUluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFzZXQua2lyYnlPcHRpb25zID0ge1xuICAgICAgICAgIC4uLmRhdGFzZXQua2lyYnlPcHRpb25zLFxuICAgICAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHM6IFtkYXRhSW5kZXhdLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlRGF0YXNldHMoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICAvLyBXZSBuZWVkIHRvIG1vZGlmeSB0aGUgZGF0YXNldHMgaW4gb3JkZXIgdG8gYWRkIGRhdGFsYWJlbHMuXG4gICAgaWYgKFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93Q3VycmVudCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWF4IHx8XG4gICAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnM/LnNob3dNaW5cbiAgICApIHtcbiAgICAgIGRhdGEgPSB0aGlzLmFkZERhdGFMYWJlbHNEYXRhKGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGF0YXNldHMgPSBpc051bWJlckFycmF5KGRhdGEpID8gW3sgZGF0YSB9XSA6IGRhdGE7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRFbGVtZW50cylcbiAgICAgIHRoaXMuYWRkSGlnaGxpZ2h0ZWRFbGVtZW50c1RvRGF0YXNldHModGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzLCBkYXRhc2V0cyk7XG5cbiAgICAvKiBcbiAgICAgICBIYWNreSBzb2x1dGlvbi4gU2hvdWxkIGJlIGZpeGVkIGluIHRoaXMgaXNzdWU6XG4gICAgICBodHRwczovL2dpdGh1Yi5jb20va2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2lzc3Vlcy8xOTY3IFxuICAgICovXG4gICAgaWYgKHRoaXMuY2hhcnRUeXBlID09PSAnc3RvY2snKSB7XG4gICAgICBkYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0KSA9PiB7XG4gICAgICAgIGRhdGFzZXQua2lyYnlPcHRpb25zID0ge1xuICAgICAgICAgIC4uLmRhdGFzZXQua2lyYnlPcHRpb25zLFxuICAgICAgICAgIGlzU3RvY2tDaGFydDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhc2V0cztcbiAgfVxuICAvKipcbiAgICogRGVjb3JhdGUgQ2hhcnREYXRhc2V0IHdpdGggcHJvcGVydGllcyB0byBhbGxvdyBmb3IgZGF0YWxhYmVscy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHJldHVybnMgQ2hhcnREYXRhc2V0W11cbiAgICovXG4gIHB1YmxpYyBhZGREYXRhTGFiZWxzRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogQ2hhcnREYXRhc2V0W10ge1xuICAgIGlmIChpc051bWJlckFycmF5KGRhdGEpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkN1cnJlbnRseSBpdCdzIGltcG9zc2libGUgdG8gYWRkIGRhdGFMYWJlbHMgdG8gbm9uIFNjYXR0ZXJEYXRhUG9pbnQgZGF0YXNldHNcIik7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjb3JhdGVEYXRhUG9pbnQgPSAoXG4gICAgICBzZXQ6IENoYXJ0RGF0YXNldCxcbiAgICAgIGF4aXM6ICd4JyB8ICd5JyxcbiAgICAgIGRpcmVjdGlvbjogJ2hpZ2gnIHwgJ2xvdycsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbScgfCAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCdcbiAgICApOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIHBvaW50ZXIgfSA9IHRoaXMubG9jYXRlVmFsdWVJbmRleEluRGF0YXNldChzZXQsIGF4aXMsIGRpcmVjdGlvbik7XG4gICAgICBzZXQuZGF0YVtwb2ludGVyXSA9IHtcbiAgICAgICAgLi4uKHNldC5kYXRhW3BvaW50ZXJdIGFzIFNjYXR0ZXJEYXRhUG9pbnQpLFxuICAgICAgICBkYXRhbGFiZWw6IHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWUgKyAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnZhbHVlU3VmZml4IHx8ICcnKSxcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgU2NhdHRlckRhdGFQb2ludDtcbiAgICB9O1xuXG4gICAgZGF0YS5tYXAoKHNldCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy5zaG93TWluKSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3knLCAnbG93JywgJ2JvdHRvbScpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy5zaG93TWF4KSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3knLCAnaGlnaCcsICd0b3AnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd0N1cnJlbnQpIHtcbiAgICAgICAgZGVjb3JhdGVEYXRhUG9pbnQoc2V0LCAneCcsICdoaWdoJywgJ3JpZ2h0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGxvY2F0ZVZhbHVlSW5kZXhJbkRhdGFzZXQoXG4gICAgZGF0YXNldDogQ2hhcnREYXRhc2V0LFxuICAgIGF4aXM6IHN0cmluZyxcbiAgICBkaXJlY3Rpb246ICdsb3cnIHwgJ2hpZ2gnXG4gICk6IHsgdmFsdWU6IG51bWJlcjsgcG9pbnRlcjogbnVtYmVyIH0ge1xuICAgIGxldCBwb2ludGVyOiBudW1iZXI7XG4gICAgbGV0IHZhbHVlOiBudW1iZXI7XG4gICAgZGF0YXNldC5kYXRhLmZvckVhY2goKGRhdGFwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gJ2xvdycgJiYgKCF2YWx1ZSB8fCBkYXRhcG9pbnRbYXhpc10gPCB2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBkYXRhcG9pbnRbJ3knXTtcbiAgICAgICAgcG9pbnRlciA9IGluZGV4O1xuICAgICAgfVxuICAgICAgaWYgKGRpcmVjdGlvbiA9PSAnaGlnaCcgJiYgKCF2YWx1ZSB8fCBkYXRhcG9pbnRbYXhpc10gPiB2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBkYXRhcG9pbnRbJ3knXTtcbiAgICAgICAgcG9pbnRlciA9IGluZGV4O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IHZhbHVlLCBwb2ludGVyIH07XG4gIH1cbn1cbiJdfQ==
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQU9MLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5QyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUdyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFdkQsV0FBVyxDQUFDLElBU2xCO1FBQ0MsTUFBTSxFQUNKLGFBQWEsRUFDYixJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixtQkFBbUIsR0FDcEIsR0FBRyxJQUFJLENBQUM7UUFFVCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsSUFBSSxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixD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QkFDakMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDNUM7WUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzlDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyx5QkFBeUIsQ0FDL0IsT0FBcUIsRUFDckIsSUFBWSxFQUNaLFNBQXlCO1FBRXpCLElBQUksT0FBZSxDQUFDO1FBQ3BCLElBQUksS0FBYSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hDLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDN0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtZQUNELElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDOUQsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7WUF0YUYsVUFBVTs7OztZQU5GLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUVsZW1lbnQsIENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRPcHRpb25zLCBTY2F0dGVyRGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk9wdGlvbnMgfSBmcm9tICdjaGFydGpzLXBsdWdpbi1hbm5vdGF0aW9uJztcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgbWVyZ2VEZWVwQWxsIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwJztcbmltcG9ydCB7XG4gIENoYXJ0RGF0YUxhYmVsT3B0aW9ucyxcbiAgQ2hhcnREYXRhc2V0LFxuICBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gIENoYXJ0TGFiZWwsXG4gIENoYXJ0TG9jYWxlLFxuICBDaGFydFR5cGUsXG4gIGlzTnVtYmVyQXJyYXksXG59IGZyb20gJy4uL2NoYXJ0LnR5cGVzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZ3MvY2hhcnQtY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJy4vY29uZmlndXJlZC1jaGFydC1qcyc7XG5cbmNvbnN0IENIQVJUX0xPQ0FMRV9ERUZBVUxUID0gJ2VuLVVTJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFydDogQ2hhcnQ7XG4gIHByaXZhdGUgZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICBwcml2YXRlIGhpZ2hsaWdodGVkRWxlbWVudHM6IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgcHJpdmF0ZSBjaGFydFR5cGU6IENoYXJ0VHlwZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IENoYXJ0TG9jYWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhcnRDb25maWdTZXJ2aWNlOiBDaGFydENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIHJlbmRlckNoYXJ0KGFyZ3M6IHtcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXTtcbiAgICBsYWJlbHM/OiBDaGFydExhYmVsW107XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgZGF0YUxhYmVsT3B0aW9ucz86IENoYXJ0RGF0YUxhYmVsT3B0aW9ucztcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgdGFyZ2V0RWxlbWVudCxcbiAgICAgIHR5cGUsXG4gICAgICBkYXRhLFxuICAgICAgbGFiZWxzLFxuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgfSA9IGFyZ3M7XG5cbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zIHx8IG51bGw7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cyB8fCBudWxsO1xuICAgIHRoaXMuY2hhcnRUeXBlID0gdHlwZTtcbiAgICB0aGlzLmxvY2FsZSA9IGRhdGFMYWJlbE9wdGlvbnM/LmxvY2FsZSB8fCBDSEFSVF9MT0NBTEVfREVGQVVMVDtcblxuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3Qoe1xuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICB9KTtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5jcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KHR5cGUsIGRhdGFzZXRzLCBvcHRpb25zLCBsYWJlbHMpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQodGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlZHJhd0NoYXJ0KCkge1xuICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEpO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gZGF0YXNldHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFiZWxzKGxhYmVsczogQ2hhcnRMYWJlbFtdKSB7XG4gICAgLyogQXMgbGFiZWxzIHByb3ZpZGVkIHZpYSB0aGUgJ2xhYmVscycgaW5wdXQgcHJvcGVydHkgYWx3YXlzIGhhcyBcbiAgICBoaWdoZXN0IHByaW9yaXR5IC0gd2UgY2FuIGp1c3Qgc2V0IHRoZSBwcm9wZXJ0eSBkaXJlY3RseSAqL1xuICAgIHRoaXMuY2hhcnQuZGF0YS5sYWJlbHMgPSBsYWJlbHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBpZiAodHlwZSA9PT0gJ2JhcicgfHwgdHlwZSA9PT0gJ2NvbHVtbicpIHtcbiAgICAgIC8qIGluZGV4QXhpcyBkb2VzIG5vdCB1cGRhdGUgcHJlZGljdGFibHk7IHVwZGF0ZSBieSByZXBsYWNpbmcgXG4gICAgICAgICB0aGUgY2hhcnQgZW50aXJlbHkgaW5zdGVhZCAqL1xuICAgICAgdGhpcy5kZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlLCBjdXN0b21PcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub25EZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlLCBjdXN0b21PcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RGF0YUxhYmVsT3B0aW9ucyhkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnMpIHtcbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU9wdGlvbnMoY3VzdG9tT3B0aW9uczogQ2hhcnRPcHRpb25zLCB0eXBlOiBDaGFydFR5cGUpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIHRoaXMuY2hhcnQub3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7IGN1c3RvbU9wdGlvbnMsIGFubm90YXRpb25zIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMgPSB0aGlzLmFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zKTtcbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uLmFubm90YXRpb25zID0gYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSGlnaGxpZ2h0ZWRFbGVtZW50cyhoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzKSB7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICBjb25zdCBvbGREYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcblxuICAgIC8vIENsZWFyIG9sZCBkYXRhc2V0cyBvZiBoaWdobGlnaHRlZCBlbGVtZW50c1xuICAgIG9sZERhdGFzZXRzLm1hcCgoZGF0YXNldCkgPT4ge1xuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkZWxldGUgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyA9IHRoaXMuY3JlYXRlRGF0YXNldHMob2xkRGF0YXNldHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTogQW5ub3RhdGlvbk9wdGlvbnNbXSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucz8uYW5ub3RhdGlvbj8uYW5ub3RhdGlvbnM7XG4gICAgLyogSW4gYnJvd3NlciBjaGFydC5qcyBtaWdodCByZXR1cm4gYW5ub3RhdGlvbnMgYXMgYSBQcm94eSBvYmplY3Q7IGZvcmNlIGl0IHRvIGJlIGFuIGFycmF5LlxuICAgICAgIEVhY2ggYW5ub3RhdGlvbk9wdGlvbiBpbiB0aGUgcmVzdWx0aW5nIGFycmF5ICB3aWxsIGFsc28gYmUgYSBQcm94eSBvYmplY3QuIFxuICAgICAgIEJ1dCBpbnRlcm5hbGx5IGNoYXJ0LmpzIHdpbGwganVzdCB3b3JrIHdpdGggdGhlbSBhcyBub3JtYWwgdmFsdWVzICovXG4gICAgaWYgKGFubm90YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhhbm5vdGF0aW9ucykubWFwKChrZXkpID0+IGFubm90YXRpb25zW2tleV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmNoYXJ0LmRhdGEubGFiZWxzIGFzIENoYXJ0TGFiZWxbXTsgLy8gY2hhcnQuanMgc3RvcmVzIGxhYmVscyBhcyB1bmtub3duW107IGNhc3QgaXQgdG8gQ2hhcnRMYWJlbFtdXG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3QoeyBjdXN0b21PcHRpb25zLCBhbm5vdGF0aW9ucyB9KTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QodHlwZSwgZGF0YXNldHMsIG9wdGlvbnMsIGxhYmVscyk7XG4gICAgY29uc3QgY2FudmFzRWxlbWVudCA9IHRoaXMuY2hhcnQuY2FudmFzO1xuXG4gICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQoY2FudmFzRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9uRGVzdHJ1Y3RpdmVseVVwZGF0ZVR5cGUoY2hhcnRUeXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSBjaGFydFR5cGU7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7XG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhcnQuY29uZmlnLnR5cGUgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5jaGFydFR5cGVUb0NoYXJ0SlNUeXBlKGNoYXJ0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVOZXdDaGFydChjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCwgY29uZmlnOiBDaGFydENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KGNhbnZhc0VsZW1lbnQsIGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBBcnJheShsYXJnZXN0RGF0YXNldC5kYXRhLmxlbmd0aCkuZmlsbCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgcmV0dXJuIGFubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xuICAgICAgY29uc3QgYW5ub3RhdGlvblR5cGVEZWZhdWx0cyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEFubm90YXRpb25EZWZhdWx0cyhhbm5vdGF0aW9uLnR5cGUpO1xuICAgICAgcmV0dXJuIG1lcmdlRGVlcEFsbChhbm5vdGF0aW9uVHlwZURlZmF1bHRzLCBhbm5vdGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5ub3RhdGlvblBsdWdpbk9wdGlvbnNPYmplY3QoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIGFubm90YXRpb246IHtcbiAgICAgICAgICBhbm5vdGF0aW9uczogYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKG9wdGlvbnM6IENoYXJ0T3B0aW9ucyk6IENoYXJ0T3B0aW9ucyB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zID1cbiAgICAgIHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucygpO1xuICAgIE9iamVjdC5lbnRyaWVzKGludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucykuZm9yRWFjaCgoW2tleSwgX10pID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gb3B0aW9uc1trZXldO1xuICAgICAgb3B0aW9uc1trZXldID0gKGU6IEV2ZW50LCBhOiBBY3RpdmVFbGVtZW50W10sIGM6IENoYXJ0KSA9PiB7XG4gICAgICAgIGludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9uc1trZXldKGUsIGEsIGMsIGNhbGxiYWNrKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0b2NrT3B0aW9uc09iamVjdChkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgICAgdGl0bGU6ICh0b29sdGlwSXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRvRGF0ZSgodG9vbHRpcEl0ZW1zWzBdPy5yYXcgYXMgYW55KT8ueCk7XG4gICAgICAgICAgICAgIGlmIChkYXRlLnZhbHVlT2YoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZSwge1xuICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGFkZCBzcGFjaW5nIGJldHdlZW4gY29sb3IgbGVnZW5kIGFuZCB0ZXh0IHNvIHdlXG4gICAgICAgICAgICAgIC8vIHByZWZpeCB3aXRoIGEgc3BhY2UuXG4gICAgICAgICAgICAgIHJldHVybiAnICcgKyBjb250ZXh0LmZvcm1hdHRlZFZhbHVlICsgKGRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB5OiB7XG4gICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgKGRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPcHRpb25zT2JqZWN0KGFyZ3M6IHtcbiAgICBjdXN0b21PcHRpb25zPzogQ2hhcnRPcHRpb25zO1xuICAgIGFubm90YXRpb25zPzogQW5ub3RhdGlvbk9wdGlvbnNbXTtcbiAgICBkYXRhTGFiZWxPcHRpb25zPzogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICB9KTogQ2hhcnRPcHRpb25zIHtcbiAgICBjb25zdCB7IGN1c3RvbU9wdGlvbnMsIGFubm90YXRpb25zLCBkYXRhTGFiZWxPcHRpb25zOiBjaGFydERhdGFMYWJlbE9wdGlvbnMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0aGlzLmNoYXJ0VHlwZSk7XG4gICAgY29uc3QgdHlwZUNvbmZpZ09wdGlvbnMgPSB0eXBlQ29uZmlnPy5vcHRpb25zO1xuICAgIGNvbnN0IGFubm90YXRpb25QbHVnaW5PcHRpb25zID0gYW5ub3RhdGlvbnNcbiAgICAgID8gdGhpcy5jcmVhdGVBbm5vdGF0aW9uUGx1Z2luT3B0aW9uc09iamVjdChhbm5vdGF0aW9ucylcbiAgICAgIDoge307XG4gICAgY29uc3Qgc3RvY2tPcHRpb25zOiBDaGFydE9wdGlvbnMgPVxuICAgICAgdGhpcy5jaGFydFR5cGUgPT09ICdzdG9jaycgPyB0aGlzLmNyZWF0ZVN0b2NrT3B0aW9uc09iamVjdChjaGFydERhdGFMYWJlbE9wdGlvbnMpIDoge307XG5cbiAgICBsZXQgb3B0aW9uczogQ2hhcnRPcHRpb25zID0gbWVyZ2VEZWVwQWxsKFxuICAgICAgc3RvY2tPcHRpb25zLFxuICAgICAgdHlwZUNvbmZpZ09wdGlvbnMsXG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvblBsdWdpbk9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBwbHlJbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMob3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRTdG9ja0xhYmVscyhkYXRhc2V0czogQ2hhcnREYXRhc2V0W10sIGxvY2FsZTogQ2hhcnRMb2NhbGUpIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBsYXJnZXN0RGF0YXNldC5kYXRhLm1hcCgocG9pbnQ6IFNjYXR0ZXJEYXRhUG9pbnQpID0+XG4gICAgICB0b0RhdGUocG9pbnQueCkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsc1RvQXBwbHkoYXJnczoge1xuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXTtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgaW5kZXhBeGlzOiAneCcgfCAneSc7XG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdO1xuICB9KSB7XG4gICAgY29uc3QgeyBkYXRhc2V0cywgbGFiZWxzLCB0eXBlLCBpbmRleEF4aXMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCBkYXRhc2V0SGFzTGFiZWxzID0gKHsgZGF0YSB9OiBDaGFydERhdGFzZXQpID0+XG4gICAgICAhIWRhdGE/LnNvbWUoXG4gICAgICAgIChkYXRhcG9pbnQpID0+IHR5cGVvZiBkYXRhcG9pbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBkYXRhcG9pbnRbaW5kZXhBeGlzXSA9PT0gJ3N0cmluZydcbiAgICAgICk7XG5cbiAgICAvKlxuICAgICAgIExhYmVscyBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdHdvIHdheXM6XG4gICAgICAgMS4gQXMgYSBzZXBlcmF0ZSBDaGFydExhYmVsW10gdmlhIHRoZSAnbGFiZWxzJyBpbnB1dCBwcm9wIC0gdGhpcyBoYXMgaGlnaGVzdCBwcmlvcml0eVxuICAgICAgIDIuIFRvZ2V0aGVyIHdpdGggdGhlIGRhdGFzZXQgdmlhIHRoZSAnZGF0YScgaW5wdXQgcHJvcCAtIGhlcmUgZWFjaCBkYXRhcG9pbnQgY29udGFpbnMgXG4gICAgICAgYSBsYWJlbCBmb3IgdGhlIGluZGV4QXhpcy4gXG4gICAgICAgRm9yIGV4YW1wbGU6IHsgeDogJ2xhYmVsMScsIHk6IDF9IGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbmRleCBheGlzIGlzICd4Jy4gXG5cbiAgICAgICBJZiBubyBsYWJlbHMgYXJlIHByb3ZpZGVkIHRoZW4gZGVmYXVsdCBsYWJlbHMgYXJlIHVzZWQuIFxuICAgICovXG4gICAgY29uc3QgbGFiZWxzQXJlR2l2ZW5Bc1NlcGVyYXRlQXJyYXkgPSBsYWJlbHMgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsYWJlbHNBcmVHaXZlblRvZ2V0aGVyV2l0aERhdGFzZXQgPSBkYXRhc2V0cy5zb21lKGRhdGFzZXRIYXNMYWJlbHMpO1xuXG4gICAgaWYgKGxhYmVsc0FyZUdpdmVuQXNTZXBlcmF0ZUFycmF5KSB7XG4gICAgICByZXR1cm4gbGFiZWxzO1xuICAgIH0gZWxzZSBpZiAobGFiZWxzQXJlR2l2ZW5Ub2dldGhlcldpdGhEYXRhc2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogXG4gICAgICAgIENoYXJ0LmpzIHJlcXVpcmVzIGxhYmVscyBhbG9uZyB0aGUgaW5kZXggYXhpcyB0byByZW5kZXIgYW55dGhpbmcgdGhlcmVmb3JlXG4gICAgICAgIGFsbCBvdGhlciB0eXBlcyB0aGFuIHN0b2NrIHVzZXMgZW1wdHkgbGFiZWxzIGFzIGRlZmF1bHQuIFRoZSBzdG9jayB0eXBlIFxuICAgICAgICBkaXNwbGF5cyBkYXkgJiBtb250aCBhcyBkZWZhdWx0LiBcbiAgICAgICovXG4gICAgICByZXR1cm4gdHlwZSA9PT0gJ3N0b2NrJ1xuICAgICAgICA/IHRoaXMuZ2V0RGVmYXVsdFN0b2NrTGFiZWxzKGRhdGFzZXRzLCB0aGlzLmxvY2FsZSlcbiAgICAgICAgOiB0aGlzLmNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QoXG4gICAgdHlwZTogQ2hhcnRUeXBlLFxuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSxcbiAgICBvcHRpb25zOiBDaGFydE9wdGlvbnMsXG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdXG4gICk6IENoYXJ0Q29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgdHlwZUNvbmZpZyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldFR5cGVDb25maWcodHlwZSk7XG5cbiAgICBjb25zdCBpbmRleEF4aXMgPSB0eXBlQ29uZmlnPy5vcHRpb25zPy5pbmRleEF4aXMgPz8gJ3gnO1xuICAgIGNvbnN0IGxhYmVsc1RvQXBwbHkgPSB0aGlzLmdldExhYmVsc1RvQXBwbHkoeyBsYWJlbHMsIGRhdGFzZXRzLCB0eXBlLCBpbmRleEF4aXMgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VEZWVwQWxsKHR5cGVDb25maWcsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWxzOiBsYWJlbHNUb0FwcGx5LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgIH0pIGFzIENoYXJ0Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSGlnaGxpZ2h0ZWRFbGVtZW50c1RvRGF0YXNldHMoXG4gICAgaGlnaGxpZ2h0ZWRFbGVtZW50czogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzLFxuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXVxuICApIHtcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzLmZvckVhY2goKFtkYXRhc2V0SW5kZXgsIGRhdGFJbmRleF0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhc2V0SW5kZXhdO1xuICAgICAgaWYgKCFkYXRhc2V0KSByZXR1cm47XG5cbiAgICAgIGlmIChkYXRhc2V0Py5raXJieU9wdGlvbnM/LmhpZ2hsaWdodGVkRWxlbWVudHMpIHtcbiAgICAgICAgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cy5wdXNoKGRhdGFJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LmtpcmJ5T3B0aW9ucyxcbiAgICAgICAgICBoaWdobGlnaHRlZEVsZW1lbnRzOiBbZGF0YUluZGV4XSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZURhdGFzZXRzKGRhdGE6IENoYXJ0RGF0YXNldFtdIHwgbnVtYmVyW10pOiBDaGFydERhdGFzZXRbXSB7XG4gICAgLy8gV2UgbmVlZCB0byBtb2RpZnkgdGhlIGRhdGFzZXRzIGluIG9yZGVyIHRvIGFkZCBkYXRhbGFiZWxzLlxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd0N1cnJlbnQgfHxcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd01heCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWluXG4gICAgKSB7XG4gICAgICBkYXRhID0gdGhpcy5hZGREYXRhTGFiZWxzRGF0YShkYXRhKTtcbiAgICB9XG4gICAgbGV0IGRhdGFzZXRzID0gaXNOdW1iZXJBcnJheShkYXRhKSA/IFt7IGRhdGEgfV0gOiBkYXRhO1xuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHMpXG4gICAgICB0aGlzLmFkZEhpZ2hsaWdodGVkRWxlbWVudHNUb0RhdGFzZXRzKHRoaXMuaGlnaGxpZ2h0ZWRFbGVtZW50cywgZGF0YXNldHMpO1xuXG4gICAgLyogXG4gICAgICAgSGFja3kgc29sdXRpb24uIFNob3VsZCBiZSBmaXhlZCBpbiB0aGlzIGlzc3VlOlxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2tpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pc3N1ZXMvMTk2NyBcbiAgICAqL1xuICAgIGlmICh0aGlzLmNoYXJ0VHlwZSA9PT0gJ3N0b2NrJykge1xuICAgICAgZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCkgPT4ge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LmtpcmJ5T3B0aW9ucyxcbiAgICAgICAgICBpc1N0b2NrQ2hhcnQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YXNldHM7XG4gIH1cbiAgLyoqXG4gICAqIERlY29yYXRlIENoYXJ0RGF0YXNldCB3aXRoIHByb3BlcnRpZXMgdG8gYWxsb3cgZm9yIGRhdGFsYWJlbHMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIENoYXJ0RGF0YXNldFtdXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0YUxhYmVsc0RhdGEoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICBpZiAoaXNOdW1iZXJBcnJheShkYXRhKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJDdXJyZW50bHkgaXQncyBpbXBvc3NpYmxlIHRvIGFkZCBkYXRhTGFiZWxzIHRvIG5vbiBTY2F0dGVyRGF0YVBvaW50IGRhdGFzZXRzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY29yYXRlRGF0YVBvaW50ID0gKFxuICAgICAgc2V0OiBDaGFydERhdGFzZXQsXG4gICAgICBheGlzOiAneCcgfCAneScsXG4gICAgICBkaXJlY3Rpb246ICdoaWdoJyB8ICdsb3cnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nIHwgJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAgKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBwb2ludGVyIH0gPSB0aGlzLmxvY2F0ZVZhbHVlSW5kZXhJbkRhdGFzZXQoc2V0LCBheGlzLCBkaXJlY3Rpb24pO1xuICAgICAgc2V0LmRhdGFbcG9pbnRlcl0gPSB7XG4gICAgICAgIC4uLihzZXQuZGF0YVtwb2ludGVyXSBhcyBTY2F0dGVyRGF0YVBvaW50KSxcbiAgICAgICAgZGF0YWxhYmVsOiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlICsgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyksXG4gICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIFNjYXR0ZXJEYXRhUG9pbnQ7XG4gICAgfTtcblxuICAgIGRhdGEubWFwKChzZXQpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01pbikge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2xvdycsICdib3R0b20nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01heCkge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2hpZ2gnLCAndG9wJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dDdXJyZW50KSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3gnLCAnaGlnaCcsICdyaWdodCcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2NhdGVWYWx1ZUluZGV4SW5EYXRhc2V0KFxuICAgIGRhdGFzZXQ6IENoYXJ0RGF0YXNldCxcbiAgICBheGlzOiBzdHJpbmcsXG4gICAgZGlyZWN0aW9uOiAnbG93JyB8ICdoaWdoJ1xuICApOiB7IHZhbHVlOiBudW1iZXI7IHBvaW50ZXI6IG51bWJlciB9IHtcbiAgICBsZXQgcG9pbnRlcjogbnVtYmVyO1xuICAgIGxldCB2YWx1ZTogbnVtYmVyO1xuICAgIGRhdGFzZXQuZGF0YS5mb3JFYWNoKChkYXRhcG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09ICdsb3cnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdIDwgdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gJ2hpZ2gnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdID4gdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyB2YWx1ZSwgcG9pbnRlciB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"ChartJSService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"ChartJSService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"../configs/chart-config.service","name":"ChartConfigService","line":29,"character":42}]}],"renderChart":[{"__symbolic":"method"}],"redrawChart":[{"__symbolic":"method"}],"updateData":[{"__symbolic":"method"}],"updateLabels":[{"__symbolic":"method"}],"updateType":[{"__symbolic":"method"}],"setDataLabelOptions":[{"__symbolic":"method"}],"updateOptions":[{"__symbolic":"method"}],"updateAnnotations":[{"__symbolic":"method"}],"updateHighlightedElements":[{"__symbolic":"method"}],"getExistingChartAnnotations":[{"__symbolic":"method"}],"destructivelyUpdateType":[{"__symbolic":"method"}],"nonDestructivelyUpdateType":[{"__symbolic":"method"}],"initializeNewChart":[{"__symbolic":"method"}],"createBlankLabels":[{"__symbolic":"method"}],"applyDefaultsToAnnotations":[{"__symbolic":"method"}],"createAnnotationPluginOptionsObject":[{"__symbolic":"method"}],"applyInteractionFunctionsExtensions":[{"__symbolic":"method"}],"createStockOptionsObject":[{"__symbolic":"method"}],"createOptionsObject":[{"__symbolic":"method"}],"getDefaultStockLabels":[{"__symbolic":"method"}],"getLabelsToApply":[{"__symbolic":"method"}],"createConfigurationObject":[{"__symbolic":"method"}],"addHighlightedElementsToDatasets":[{"__symbolic":"method"}],"createDatasets":[{"__symbolic":"method"}],"addDataLabelsData":[{"__symbolic":"method"}],"locateValueIndexInDataset":[{"__symbolic":"method"}]}}}}]
|