@recursyve/nice-ui-kit.v2 13.2.0-beta.99 → 14.0.0-beta.101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/api/interceptors/transform-response.interceptor.mjs +3 -3
- package/esm2020/lib/components/alert/alert.component.mjs +6 -6
- package/esm2020/lib/components/alert/alert.module.mjs +7 -9
- package/esm2020/lib/components/alert/alert.service.mjs +3 -3
- package/esm2020/lib/components/assets-carousel/assets-carousel.component.mjs +43 -23
- package/esm2020/lib/components/assets-carousel/assets-carousel.module.mjs +15 -16
- package/esm2020/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.mjs +14 -0
- package/esm2020/lib/components/assets-carousel/public-api.mjs +2 -1
- package/esm2020/lib/components/async-typeahead/async-typeahead.component.mjs +17 -15
- package/esm2020/lib/components/async-typeahead/async-typeahead.module.mjs +13 -15
- package/esm2020/lib/components/async-typeahead/providers/async-typeahead.service.mjs +3 -3
- package/esm2020/lib/components/base-form/base-form.component.mjs +3 -3
- package/esm2020/lib/components/base-form/base-form.module.mjs +4 -4
- package/esm2020/lib/components/base-form/form-submit.directive.mjs +3 -3
- package/esm2020/lib/components/card/card.component.mjs +4 -4
- package/esm2020/lib/components/card/card.module.mjs +5 -7
- package/esm2020/lib/components/carousel/carousel.component.mjs +3 -3
- package/esm2020/lib/components/carousel/carousel.module.mjs +9 -11
- package/esm2020/lib/components/carousel/picture-modal/picture-modal.component.mjs +3 -3
- package/esm2020/lib/components/carousel/picture-modal/picture-modal.service.mjs +3 -3
- package/esm2020/lib/components/carousel/pipe/carousel-layout.pipe.mjs +3 -3
- package/esm2020/lib/components/collapsable/collapsable.component.mjs +36 -0
- package/esm2020/lib/components/collapsable/collapsable.module.mjs +25 -0
- package/esm2020/lib/components/collapsable/index.mjs +2 -0
- package/esm2020/lib/components/collapsable/public-api.mjs +3 -0
- package/esm2020/lib/components/date-range-picker/components/header/header.component.mjs +57 -0
- package/esm2020/lib/components/date-range-picker/components/range-preset/range-preset.component.mjs +107 -0
- package/esm2020/lib/components/date-range-picker/date-range-picker.component.mjs +74 -0
- package/esm2020/lib/components/date-range-picker/date-range-picker.module.mjs +56 -0
- package/esm2020/lib/components/date-range-picker/index.mjs +2 -0
- package/esm2020/lib/components/date-range-picker/providers/date-range-picker.service.mjs +17 -0
- package/esm2020/lib/components/date-range-picker/public-api.mjs +3 -0
- package/esm2020/lib/components/drawer/drawer.component.mjs +4 -4
- package/esm2020/lib/components/drawer/drawer.module.mjs +6 -8
- package/esm2020/lib/components/drawer/drawer.service.mjs +3 -3
- package/esm2020/lib/components/export-bottom-sheet/export-bottom-sheet.component.mjs +5 -5
- package/esm2020/lib/components/export-bottom-sheet/export-bottom-sheet.module.mjs +6 -6
- package/esm2020/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.mjs +6 -6
- package/esm2020/lib/components/form-error/control-status.directive.mjs +4 -4
- package/esm2020/lib/components/form-error/form-error.component.mjs +5 -5
- package/esm2020/lib/components/form-error/form-error.module.mjs +5 -5
- package/esm2020/lib/components/horizontal-stepper/horizontal-stepper.component.mjs +4 -4
- package/esm2020/lib/components/horizontal-stepper/horizontal-stepper.module.mjs +7 -9
- package/esm2020/lib/components/horizontal-stepper/step.component.mjs +3 -3
- package/esm2020/lib/components/image-cropper/image-cropper.component.mjs +11 -11
- package/esm2020/lib/components/image-cropper/image-cropper.module.mjs +5 -5
- package/esm2020/lib/components/layout/layout.component.mjs +3 -3
- package/esm2020/lib/components/layout/layout.module.mjs +5 -5
- package/esm2020/lib/components/loading-spinner/loading-spinner.component.mjs +3 -3
- package/esm2020/lib/components/loading-spinner/loading-spinner.module.mjs +6 -8
- package/esm2020/lib/components/loading-spinner/loading.directive.mjs +3 -3
- package/esm2020/lib/components/lottie/lottie.component.mjs +3 -3
- package/esm2020/lib/components/lottie/lottie.module.mjs +5 -5
- package/esm2020/lib/components/navigation/directives/show-hint.directive.mjs +163 -0
- package/esm2020/lib/components/navigation/horizontal/components/basic/basic.component.mjs +9 -9
- package/esm2020/lib/components/navigation/horizontal/components/branch/branch.component.mjs +11 -10
- package/esm2020/lib/components/navigation/horizontal/components/divider/divider.component.mjs +5 -5
- package/esm2020/lib/components/navigation/horizontal/components/spacer/spacer.component.mjs +5 -5
- package/esm2020/lib/components/navigation/horizontal/horizontal.component.mjs +10 -9
- package/esm2020/lib/components/navigation/navigation.component.mjs +3 -3
- package/esm2020/lib/components/navigation/navigation.module.mjs +26 -17
- package/esm2020/lib/components/navigation/navigation.service.mjs +3 -3
- package/esm2020/lib/components/navigation/navigation.types.mjs +1 -1
- package/esm2020/lib/components/navigation/pipes/should-hide.pipe.mjs +31 -0
- package/esm2020/lib/components/navigation/pipes/should-show-hint.pipe.mjs +32 -0
- package/esm2020/lib/components/navigation/providers/hide-item.resolver.mjs +3 -0
- package/esm2020/lib/components/navigation/providers/hint.resolver.mjs +3 -0
- package/esm2020/lib/components/navigation/providers/hint.service.mjs +20 -0
- package/esm2020/lib/components/navigation/public-api.mjs +3 -1
- package/esm2020/lib/components/navigation/vertical/components/aside/aside.component.mjs +12 -12
- package/esm2020/lib/components/navigation/vertical/components/basic/basic.component.mjs +10 -8
- package/esm2020/lib/components/navigation/vertical/components/collapsable/collapsable.component.mjs +14 -22
- package/esm2020/lib/components/navigation/vertical/components/divider/divider.component.mjs +5 -5
- package/esm2020/lib/components/navigation/vertical/components/group/group.component.mjs +12 -11
- package/esm2020/lib/components/navigation/vertical/components/spacer/spacer.component.mjs +5 -5
- package/esm2020/lib/components/navigation/vertical/vertical.component.mjs +33 -16
- package/esm2020/lib/components/public-api.mjs +3 -1
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +8 -8
- package/esm2020/lib/components/search-bar/search-bar.module.mjs +9 -11
- package/esm2020/lib/components/sweet-alert/public-api.mjs +2 -1
- package/esm2020/lib/components/sweet-alert/sweet-alert.component.mjs +5 -5
- package/esm2020/lib/components/sweet-alert/sweet-alert.directive.mjs +37 -0
- package/esm2020/lib/components/sweet-alert/sweet-alert.module.mjs +9 -7
- package/esm2020/lib/components/sweet-alert/sweet-alert.service.mjs +24 -7
- package/esm2020/lib/components/toast/toast.component.mjs +5 -5
- package/esm2020/lib/components/toast/toast.module.mjs +5 -5
- package/esm2020/lib/components/toast/toast.service.mjs +3 -3
- package/esm2020/lib/components/toggle-button-group/toggle-button-group.component.mjs +4 -4
- package/esm2020/lib/components/toggle-button-group/toggle-button-group.module.mjs +6 -8
- package/esm2020/lib/components/toggle-button-group/toggle-button.component.mjs +3 -3
- package/esm2020/lib/components/typeahead/directives/options-scroll.directive.mjs +3 -3
- package/esm2020/lib/components/typeahead/directives/options-scroll.module.mjs +4 -4
- package/esm2020/lib/components/typeahead/typeahead.component.mjs +12 -12
- package/esm2020/lib/components/typeahead/typeahead.module.mjs +15 -17
- package/esm2020/lib/directives/autofocus/autofocus.directive.mjs +3 -3
- package/esm2020/lib/directives/autofocus/autofocus.module.mjs +4 -4
- package/esm2020/lib/directives/autogrow/autogrow.directive.mjs +3 -3
- package/esm2020/lib/directives/autogrow/autogrow.module.mjs +4 -4
- package/esm2020/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.mjs +3 -3
- package/esm2020/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.mjs +3 -3
- package/esm2020/lib/directives/chip-list/chip-list-items/chip-list-items.component.mjs +24 -10
- package/esm2020/lib/directives/chip-list/chip-list.constant.mjs +3 -0
- package/esm2020/lib/directives/chip-list/chip-list.directive.mjs +43 -12
- package/esm2020/lib/directives/chip-list/chip-list.module.mjs +24 -5
- package/esm2020/lib/directives/dropzone/dropzone.directive.mjs +3 -3
- package/esm2020/lib/directives/dropzone/dropzone.module.mjs +5 -5
- package/esm2020/lib/directives/image-error-placeholder/image-error-placeholder.directive.mjs +3 -3
- package/esm2020/lib/directives/image-error-placeholder/image-error-placeholder.module.mjs +4 -4
- package/esm2020/lib/directives/material/material.module.mjs +4 -4
- package/esm2020/lib/directives/material/nice-material-style.directive.mjs +3 -3
- package/esm2020/lib/directives/material/nice-rounded-style.directive.mjs +3 -3
- package/esm2020/lib/directives/modals/modal-on-click.directive.mjs +3 -3
- package/esm2020/lib/directives/modals/modal-opener.directive.mjs +3 -3
- package/esm2020/lib/directives/public-api.mjs +2 -1
- package/esm2020/lib/directives/scroll-reset/scroll-reset.directive.mjs +3 -3
- package/esm2020/lib/directives/scroll-reset/scroll-reset.module.mjs +4 -4
- package/esm2020/lib/directives/scrollbar/scrollbar.directive.mjs +3 -3
- package/esm2020/lib/directives/scrollbar/scrollbar.module.mjs +4 -4
- package/esm2020/lib/directives/stop-propagation/click-stop-propagation.directive.mjs +3 -3
- package/esm2020/lib/directives/stop-propagation/stop-propagation.module.mjs +4 -4
- package/esm2020/lib/directives/window/prevent-close-window.directive.mjs +3 -3
- package/esm2020/lib/directives/window/window-directive.module.mjs +4 -4
- package/esm2020/lib/nice.module.mjs +8 -10
- package/esm2020/lib/pipes/boolean.pipe.mjs +3 -3
- package/esm2020/lib/pipes/capitalize-first-letter.pipe.mjs +3 -3
- package/esm2020/lib/pipes/ceil.pipe.mjs +3 -3
- package/esm2020/lib/pipes/entries.pipe.mjs +3 -3
- package/esm2020/lib/pipes/find-by-key.pipe.mjs +3 -3
- package/esm2020/lib/pipes/first-letter.pipe.mjs +3 -3
- package/esm2020/lib/pipes/floor.pipe.mjs +3 -3
- package/esm2020/lib/pipes/join-if-defined.pipe.mjs +3 -3
- package/esm2020/lib/pipes/link.pipe.mjs +3 -3
- package/esm2020/lib/pipes/localized-boolean.pipe.mjs +3 -3
- package/esm2020/lib/pipes/localized-currency.pipe.mjs +3 -3
- package/esm2020/lib/pipes/localized-date-only.pipe.mjs +3 -3
- package/esm2020/lib/pipes/localized-date.pipe.mjs +3 -3
- package/esm2020/lib/pipes/minutes-to-time.pipe.mjs +3 -3
- package/esm2020/lib/pipes/number-to-ordinal-indicator.pipe.mjs +3 -3
- package/esm2020/lib/pipes/pad.pipe.mjs +3 -3
- package/esm2020/lib/pipes/phone.pipe.mjs +3 -3
- package/esm2020/lib/pipes/pipes.module.mjs +4 -4
- package/esm2020/lib/pipes/postal-code.pipe.mjs +3 -3
- package/esm2020/lib/pipes/range.pipe.mjs +3 -3
- package/esm2020/lib/pipes/round.pipe.mjs +3 -3
- package/esm2020/lib/pipes/sanitize-bypass.pipe.mjs +3 -3
- package/esm2020/lib/pipes/seconds-to-time.pipe.mjs +3 -3
- package/esm2020/lib/providers/config/config.module.mjs +4 -4
- package/esm2020/lib/providers/config/config.service.mjs +3 -3
- package/esm2020/lib/providers/media-watcher/media-watcher.module.mjs +4 -4
- package/esm2020/lib/providers/media-watcher/media-watcher.service.mjs +3 -3
- package/esm2020/lib/providers/overlay/dynamic-overlay-container.service.mjs +3 -3
- package/esm2020/lib/providers/overlay/dynamic-overlay.service.mjs +3 -3
- package/esm2020/lib/providers/splash-screen/splash-screen.module.mjs +4 -4
- package/esm2020/lib/providers/splash-screen/splash-screen.service.mjs +3 -3
- package/esm2020/lib/providers/utils/utils.module.mjs +4 -4
- package/esm2020/lib/providers/utils/utils.service.mjs +3 -3
- package/esm2020/lib/utils/keyboard.utils.mjs +2 -1
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs +3568 -2883
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs +3559 -2882
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/{recursyve-nice-ui-kit.v2.d.ts → index.d.ts} +0 -0
- package/lib/components/alert/alert.component.d.ts +1 -1
- package/lib/components/assets-carousel/assets-carousel.component.d.ts +8 -2
- package/lib/components/assets-carousel/assets-carousel.module.d.ts +9 -8
- package/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.d.ts +8 -0
- package/lib/components/assets-carousel/public-api.d.ts +1 -0
- package/lib/components/async-typeahead/async-typeahead.component.d.ts +3 -3
- package/lib/components/base-form/base-form.component.d.ts +1 -1
- package/lib/components/base-form/form-submit.directive.d.ts +1 -1
- package/lib/components/card/card.component.d.ts +1 -1
- package/lib/components/carousel/carousel.component.d.ts +1 -1
- package/lib/components/carousel/picture-modal/picture-modal.component.d.ts +1 -1
- package/lib/components/carousel/pipe/carousel-layout.pipe.d.ts +1 -1
- package/lib/components/collapsable/collapsable.component.d.ts +15 -0
- package/lib/components/collapsable/collapsable.module.d.ts +9 -0
- package/lib/components/collapsable/index.d.ts +1 -0
- package/lib/components/collapsable/public-api.d.ts +2 -0
- package/lib/components/date-range-picker/components/header/header.component.d.ts +20 -0
- package/lib/components/date-range-picker/components/range-preset/range-preset.component.d.ts +23 -0
- package/lib/components/date-range-picker/date-range-picker.component.d.ts +29 -0
- package/lib/components/date-range-picker/date-range-picker.module.d.ts +18 -0
- package/lib/components/date-range-picker/index.d.ts +1 -0
- package/lib/components/date-range-picker/providers/date-range-picker.service.d.ts +8 -0
- package/lib/components/date-range-picker/public-api.d.ts +2 -0
- package/lib/components/drawer/drawer.component.d.ts +1 -1
- package/lib/components/export-bottom-sheet/export-bottom-sheet.component.d.ts +1 -1
- package/lib/components/form-error/control-status.directive.d.ts +4 -6
- package/lib/components/form-error/form-error.component.d.ts +1 -1
- package/lib/components/horizontal-stepper/horizontal-stepper.component.d.ts +1 -1
- package/lib/components/horizontal-stepper/step.component.d.ts +1 -1
- package/lib/components/image-cropper/image-cropper.component.d.ts +2 -2
- package/lib/components/layout/layout.component.d.ts +1 -1
- package/lib/components/loading-spinner/loading-spinner.component.d.ts +1 -1
- package/lib/components/loading-spinner/loading.directive.d.ts +1 -1
- package/lib/components/lottie/lottie.component.d.ts +1 -1
- package/lib/components/navigation/directives/show-hint.directive.d.ts +36 -0
- package/lib/components/navigation/horizontal/components/basic/basic.component.d.ts +1 -1
- package/lib/components/navigation/horizontal/components/branch/branch.component.d.ts +1 -1
- package/lib/components/navigation/horizontal/components/divider/divider.component.d.ts +1 -1
- package/lib/components/navigation/horizontal/components/spacer/spacer.component.d.ts +1 -1
- package/lib/components/navigation/horizontal/horizontal.component.d.ts +1 -1
- package/lib/components/navigation/navigation.component.d.ts +1 -1
- package/lib/components/navigation/navigation.module.d.ts +13 -10
- package/lib/components/navigation/navigation.types.d.ts +8 -1
- package/lib/components/navigation/pipes/should-hide.pipe.d.ts +11 -0
- package/lib/components/navigation/pipes/should-show-hint.pipe.d.ts +12 -0
- package/lib/components/navigation/providers/hide-item.resolver.d.ts +5 -0
- package/lib/components/navigation/providers/hint.resolver.d.ts +4 -0
- package/lib/components/navigation/providers/hint.service.d.ts +9 -0
- package/lib/components/navigation/public-api.d.ts +2 -0
- package/lib/components/navigation/vertical/components/aside/aside.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/basic/basic.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/divider/divider.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/group/group.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/spacer/spacer.component.d.ts +1 -1
- package/lib/components/navigation/vertical/vertical.component.d.ts +6 -2
- package/lib/components/public-api.d.ts +2 -0
- package/lib/components/search-bar/search-bar.component.d.ts +1 -1
- package/lib/components/sweet-alert/public-api.d.ts +1 -0
- package/lib/components/sweet-alert/sweet-alert.component.d.ts +1 -1
- package/lib/components/sweet-alert/sweet-alert.directive.d.ts +13 -0
- package/lib/components/sweet-alert/sweet-alert.module.d.ts +7 -6
- package/lib/components/sweet-alert/sweet-alert.service.d.ts +11 -0
- package/lib/components/toast/toast.component.d.ts +1 -1
- package/lib/components/toggle-button-group/toggle-button-group.component.d.ts +1 -1
- package/lib/components/toggle-button-group/toggle-button.component.d.ts +1 -1
- package/lib/components/typeahead/directives/options-scroll.directive.d.ts +1 -1
- package/lib/components/typeahead/typeahead.component.d.ts +2 -2
- package/lib/directives/autofocus/autofocus.directive.d.ts +1 -1
- package/lib/directives/autogrow/autogrow.directive.d.ts +1 -1
- package/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.d.ts +1 -1
- package/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.d.ts +1 -1
- package/lib/directives/chip-list/chip-list-items/chip-list-items.component.d.ts +14 -2
- package/lib/directives/chip-list/chip-list.constant.d.ts +2 -0
- package/lib/directives/chip-list/chip-list.directive.d.ts +5 -1
- package/lib/directives/chip-list/chip-list.module.d.ts +3 -0
- package/lib/directives/dropzone/dropzone.directive.d.ts +1 -1
- package/lib/directives/image-error-placeholder/image-error-placeholder.directive.d.ts +1 -1
- package/lib/directives/material/nice-material-style.directive.d.ts +1 -1
- package/lib/directives/material/nice-rounded-style.directive.d.ts +1 -1
- package/lib/directives/modals/modal-on-click.directive.d.ts +1 -1
- package/lib/directives/modals/modal-opener.directive.d.ts +1 -1
- package/lib/directives/public-api.d.ts +1 -0
- package/lib/directives/scroll-reset/scroll-reset.directive.d.ts +1 -1
- package/lib/directives/scrollbar/scrollbar.directive.d.ts +1 -1
- package/lib/directives/stop-propagation/click-stop-propagation.directive.d.ts +1 -1
- package/lib/directives/window/prevent-close-window.directive.d.ts +1 -1
- package/lib/pipes/boolean.pipe.d.ts +1 -1
- package/lib/pipes/capitalize-first-letter.pipe.d.ts +1 -1
- package/lib/pipes/ceil.pipe.d.ts +1 -1
- package/lib/pipes/entries.pipe.d.ts +1 -1
- package/lib/pipes/find-by-key.pipe.d.ts +1 -1
- package/lib/pipes/first-letter.pipe.d.ts +1 -1
- package/lib/pipes/floor.pipe.d.ts +1 -1
- package/lib/pipes/join-if-defined.pipe.d.ts +1 -1
- package/lib/pipes/link.pipe.d.ts +1 -1
- package/lib/pipes/localized-boolean.pipe.d.ts +1 -1
- package/lib/pipes/localized-currency.pipe.d.ts +1 -1
- package/lib/pipes/localized-date-only.pipe.d.ts +1 -1
- package/lib/pipes/localized-date.pipe.d.ts +1 -1
- package/lib/pipes/minutes-to-time.pipe.d.ts +1 -1
- package/lib/pipes/number-to-ordinal-indicator.pipe.d.ts +1 -1
- package/lib/pipes/pad.pipe.d.ts +1 -1
- package/lib/pipes/phone.pipe.d.ts +1 -1
- package/lib/pipes/postal-code.pipe.d.ts +1 -1
- package/lib/pipes/range.pipe.d.ts +1 -1
- package/lib/pipes/round.pipe.d.ts +1 -1
- package/lib/pipes/sanitize-bypass.pipe.d.ts +1 -1
- package/lib/pipes/seconds-to-time.pipe.d.ts +1 -1
- package/lib/utils/array.utils.d.ts +1 -1
- package/lib/utils/keyboard.utils.d.ts +2 -1
- package/package.json +11 -11
- package/src/lib/components/assets-carousel/assets-carousel.theme.scss +44 -38
- package/src/lib/components/collapsable/collapsable.theme.scss +51 -0
- package/src/lib/components/date-range-picker/date-range-picker.theme.scss +47 -0
- package/src/lib/components/navigation/vertical/styles/appearances/default.theme.scss +38 -0
- package/src/lib/components/navigation/vertical/styles/appearances/dense.theme.scss +2 -2
- package/src/lib/nice.theme.scss +4 -0
|
@@ -20,9 +20,9 @@ export class NiceTransformResponseInterceptor {
|
|
|
20
20
|
}));
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
NiceTransformResponseInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
24
|
-
NiceTransformResponseInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
NiceTransformResponseInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceTransformResponseInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
NiceTransformResponseInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceTransformResponseInterceptor });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceTransformResponseInterceptor, decorators: [{
|
|
26
26
|
type: Injectable
|
|
27
27
|
}] });
|
|
28
28
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLXJlc3BvbnNlLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9hcGkvaW50ZXJjZXB0b3JzL3RyYW5zZm9ybS1yZXNwb25zZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQTZDLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFckMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQWdCLENBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFHMUUsTUFBTSxPQUFPLGdDQUFnQztJQUNsQyxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNyRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDUixJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQy9CLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNQLE9BQU8sS0FBSyxDQUFDO2lCQUNoQjtnQkFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQ2YsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQztpQkFDMUMsQ0FBQyxDQUFDO2FBQ047WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQzs7NkhBbEJRLGdDQUFnQztpSUFBaEMsZ0NBQWdDOzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ29udGV4dFRva2VuLCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHBsYWluVG9JbnN0YW5jZSB9IGZyb20gXCJjbGFzcy10cmFuc2Zvcm1lclwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmV4cG9ydCBjb25zdCBUUkFOU0ZPUk1fVFlQRSA9IG5ldyBIdHRwQ29udGV4dFRva2VuPFR5cGU8YW55Pj4oKCkgPT4gbnVsbCk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOaWNlVHJhbnNmb3JtUmVzcG9uc2VJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gICAgcHVibGljIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gcmVxLmNvbnRleHQuZ2V0KFRSQU5TRk9STV9UWVBFKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQuY2xvbmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogcGxhaW5Ub0luc3RhbmNlKHR5cGUsIGV2ZW50LmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -8,9 +8,9 @@ import { NiceAlertService } from "./alert.service";
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "./alert.service";
|
|
10
10
|
import * as i2 from "../../providers/utils";
|
|
11
|
-
import * as i3 from "@angular/
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
12
12
|
import * as i4 from "@angular/material/button";
|
|
13
|
-
import * as i5 from "@angular/
|
|
13
|
+
import * as i5 from "@angular/material/icon";
|
|
14
14
|
export class NiceAlertComponent {
|
|
15
15
|
/**
|
|
16
16
|
* Constructor
|
|
@@ -170,9 +170,9 @@ export class NiceAlertComponent {
|
|
|
170
170
|
this._changeDetectorRef.markForCheck();
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
NiceAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
174
|
-
NiceAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
175
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
173
|
+
NiceAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NiceAlertService }, { token: i2.NiceUtilsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
+
NiceAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.3", type: NiceAlertComponent, selector: "nice-alert", inputs: { appearance: "appearance", dismissed: "dismissed", dismissible: "dismissible", disableAnimation: "disableAnimation", name: "name", showIcon: "showIcon", type: "type", color: "color" }, outputs: { dismissedChanged: "dismissedChanged" }, host: { properties: { "class": "this.classList" } }, exportAs: ["niceAlert"], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"nice-alert-container\"\n *ngIf=\"!dismissible || dismissible && !dismissed\"\n [@fadeIn]=\"!dismissed && !disableAnimation\"\n [@fadeOut]=\"!dismissed && !disableAnimation\">\n\n <!-- Border -->\n <div\n class=\"nice-alert-border\"\n *ngIf=\"appearance === 'border'\"></div>\n\n <!-- Icon -->\n <div\n class=\"nice-alert-icon\"\n *ngIf=\"showIcon\">\n\n <!-- Custom icon -->\n <div class=\"nice-alert-custom-icon\">\n <ng-content select=\"[niceAlertIcon]\"></ng-content>\n </div>\n\n <!-- Default icons -->\n <div class=\"nice-alert-default-icon\">\n\n <mat-icon\n *ngIf=\"type === 'primary'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'accent'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warn'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'basic'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'info'\"\n [svgIcon]=\"'heroicons_solid:information-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'success'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warning'\"\n [svgIcon]=\"'heroicons_solid:exclamation'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'error'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n </div>\n\n </div>\n\n <!-- Content -->\n <div class=\"nice-alert-content\">\n\n <div class=\"nice-alert-title\">\n <ng-content select=\"[niceAlertTitle]\"></ng-content>\n </div>\n\n <div class=\"nice-alert-message\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n <!-- Dismiss button -->\n <button\n class=\"nice-alert-dismiss-button\"\n mat-icon-button\n (click)=\"dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_solid:x'\"></mat-icon>\n </button>\n\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], animations: niceAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertComponent, decorators: [{
|
|
176
176
|
type: Component,
|
|
177
177
|
args: [{ selector: "nice-alert", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: niceAnimations, exportAs: "niceAlert", template: "<div\n class=\"nice-alert-container\"\n *ngIf=\"!dismissible || dismissible && !dismissed\"\n [@fadeIn]=\"!dismissed && !disableAnimation\"\n [@fadeOut]=\"!dismissed && !disableAnimation\">\n\n <!-- Border -->\n <div\n class=\"nice-alert-border\"\n *ngIf=\"appearance === 'border'\"></div>\n\n <!-- Icon -->\n <div\n class=\"nice-alert-icon\"\n *ngIf=\"showIcon\">\n\n <!-- Custom icon -->\n <div class=\"nice-alert-custom-icon\">\n <ng-content select=\"[niceAlertIcon]\"></ng-content>\n </div>\n\n <!-- Default icons -->\n <div class=\"nice-alert-default-icon\">\n\n <mat-icon\n *ngIf=\"type === 'primary'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'accent'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warn'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'basic'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'info'\"\n [svgIcon]=\"'heroicons_solid:information-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'success'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warning'\"\n [svgIcon]=\"'heroicons_solid:exclamation'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'error'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n </div>\n\n </div>\n\n <!-- Content -->\n <div class=\"nice-alert-content\">\n\n <div class=\"nice-alert-title\">\n <ng-content select=\"[niceAlertTitle]\"></ng-content>\n </div>\n\n <div class=\"nice-alert-message\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n <!-- Dismiss button -->\n <button\n class=\"nice-alert-dismiss-button\"\n mat-icon-button\n (click)=\"dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_solid:x'\"></mat-icon>\n </button>\n\n</div>\n" }]
|
|
178
178
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.NiceAlertService }, { type: i2.NiceUtilsService }]; }, propDecorators: { appearance: [{
|
|
@@ -197,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
197
197
|
type: HostBinding,
|
|
198
198
|
args: ["class"]
|
|
199
199
|
}] } });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBV25ELE1BQU0sT0FBTyxrQkFBa0I7SUF1QzNCOztPQUVHO0lBQ0gsWUFDWSxrQkFBcUMsRUFDckMsaUJBQW1DLEVBQ25DLGlCQUFtQztRQUZuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQWxDeEMsZUFBVSxHQUF3QixNQUFNLENBQUM7UUFHekMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUds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V0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IG5pY2VBbmltYXRpb25zIH0gZnJvbSBcIi4uLy4uL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IE5pY2VVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vcHJvdmlkZXJzL3V0aWxzXCI7XG5pbXBvcnQgeyBOaWNlQWxlcnRTZXJ2aWNlIH0gZnJvbSBcIi4vYWxlcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZUFsZXJ0VHlwZSwgTmljZUFsZXJ0QXBwZWFyYW5jZSwgTmljZUFsZXJ0Q29sb3IgfSBmcm9tIFwiLi9hbGVydC50eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFsZXJ0XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9hbGVydC50ZW1wbGF0ZS5odG1sXCIsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBhbmltYXRpb25zOiBuaWNlQW5pbWF0aW9ucyxcbiAgICBleHBvcnRBczogXCJuaWNlQWxlcnRcIlxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzbWlzc2libGU6IEJvb2xlYW5JbnB1dDtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzbWlzc2VkOiBCb29sZWFuSW5wdXQ7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVBbmltYXRpb246IEJvb2xlYW5JbnB1dDtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2hvd0ljb246IEJvb2xlYW5JbnB1dDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFwcGVhcmFuY2U6IE5pY2VBbGVydEFwcGVhcmFuY2UgPSBcInNvZnRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc21pc3NlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzbWlzc2libGUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9IHRoaXMuX25pY2VVdGlsc1NlcnZpY2UucmFuZG9tSWQoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dJY29uID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR5cGU6IE5pY2VBbGVydFR5cGUgPSBcInByaW1hcnlcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbG9yPzogTmljZUFsZXJ0Q29sb3I7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzbWlzc2VkQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9uaWNlQWxlcnRTZXJ2aWNlOiBOaWNlQWxlcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uaWNlVXRpbHNTZXJ2aWNlOiBOaWNlVXRpbHNTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIEFjY2Vzc29yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBIb3N0IGJpbmRpbmcgZm9yIGNvbXBvbmVudCBjbGFzc2VzXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIilcbiAgICBwdWJsaWMgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xuICAgICAgICBsZXQgdHlwZXM6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtcHJpbWFyeVwiOiB0aGlzLnR5cGUgPT09IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtYWNjZW50XCI6IHRoaXMudHlwZSA9PT0gXCJhY2NlbnRcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXdhcm5cIjogdGhpcy50eXBlID09PSBcIndhcm5cIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWJhc2ljXCI6IHRoaXMudHlwZSA9PT0gXCJiYXNpY1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtaW5mb1wiOiB0aGlzLnR5cGUgPT09IFwiaW5mb1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtc3VjY2Vzc1wiOiB0aGlzLnR5cGUgPT09IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtd2FybmluZ1wiOiB0aGlzLnR5cGUgPT09IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtZXJyb3JcIjogdGhpcy50eXBlID09PSBcImVycm9yXCJcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgICAgICB0eXBlcyA9IHtcbiAgICAgICAgICAgICAgICBcIm5pY2UtYWxlcnQtdHlwZS1wcmltYXJ5XCI6IHRoaXMuY29sb3IgPT09IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWFjY2VudFwiOiB0aGlzLmNvbG9yID09PSBcImFjY2VudFwiLFxuICAgICAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXdhcm5cIjogdGhpcy5jb2xvciA9PT0gXCJ3YXJuXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LWFwcGVhcmFuY2UtYm9yZGVyXCI6IHRoaXMuYXBwZWFyYW5jZSA9PT0gXCJib3JkZXJcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLWZpbGxcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcImZpbGxcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLW91dGxpbmVcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcIm91dGxpbmVcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLXNvZnRcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcInNvZnRcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1kaXNtaXNzZWRcIjogdGhpcy5kaXNtaXNzZWQsXG4gICAgICAgICAgICBcIm5pY2UtYWxlcnQtZGlzbWlzc2libGVcIjogdGhpcy5kaXNtaXNzaWJsZSxcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1zaG93LWljb25cIjogdGhpcy5zaG93SWNvbixcbiAgICAgICAgICAgIC4uLnR5cGVzXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIExpZmVjeWNsZSBob29rc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBPbiBjaGFuZ2VzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIERpc21pc3NlZFxuICAgICAgICBpZiAoXCJkaXNtaXNzZWRcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxuICAgICAgICAgICAgdGhpcy5kaXNtaXNzZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5kaXNtaXNzZWQuY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgICAgLy8gRGlzbWlzcy9zaG93IHRoZSBhbGVydFxuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRGlzbWlzcyh0aGlzLmRpc21pc3NlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNtaXNzaWJsZVxuICAgICAgICBpZiAoXCJkaXNtaXNzaWJsZVwiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXG4gICAgICAgICAgICB0aGlzLmRpc21pc3NpYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZGlzbWlzc2libGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGUgYW5pbWF0aW9uXG4gICAgICAgIGlmIChcImRpc2FibGVBbmltYXRpb25cIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQW5pbWF0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZGlzYWJsZUFuaW1hdGlvbi5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hvdyBpY29uXG4gICAgICAgIGlmIChcInNob3dJY29uXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgLy8gQ29lcmNlIHRoZSB2YWx1ZSB0byBhIGJvb2xlYW5cbiAgICAgICAgICAgIHRoaXMuc2hvd0ljb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5zaG93SWNvbi5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gaW5pdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBkaXNtaXNzIGNhbGxzXG4gICAgICAgIHRoaXMuX25pY2VBbGVydFNlcnZpY2Uub25EaXNtaXNzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG5hbWUpID0+IHRoaXMubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBEaXNtaXNzIHRoZSBhbGVydFxuICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBzaG93IGNhbGxzXG4gICAgICAgIHRoaXMuX25pY2VBbGVydFNlcnZpY2Uub25TaG93XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG5hbWUpID0+IHRoaXMubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBTaG93IHRoZSBhbGVydFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gZGVzdHJveVxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIFB1YmxpYyBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3MgdGhlIGFsZXJ0XG4gICAgICovXG4gICAgcHVibGljIGRpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYWxlcnQgaXMgYWxyZWFkeSBkaXNtaXNzZWRcbiAgICAgICAgaWYgKHRoaXMuZGlzbWlzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNtaXNzIHRoZSBhbGVydFxuICAgICAgICB0aGlzLl90b2dnbGVEaXNtaXNzKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIGRpc21pc3NlZCBhbGVydFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIGFsZXJ0IGlzIGFscmVhZHkgc2hvd2luZ1xuICAgICAgICBpZiAoIXRoaXMuZGlzbWlzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaG93IHRoZSBhbGVydFxuICAgICAgICB0aGlzLl90b2dnbGVEaXNtaXNzKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEAgUHJpdmF0ZSBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3Mvc2hvdyB0aGUgYWxlcnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXNtaXNzZWRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3RvZ2dsZURpc21pc3MoZGlzbWlzc2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYWxlcnQgaXMgbm90IGRpc21pc3NpYmxlXG4gICAgICAgIGlmICghdGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBkaXNtaXNzZWRcbiAgICAgICAgdGhpcy5kaXNtaXNzZWQgPSBkaXNtaXNzZWQ7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgb2JzZXJ2YWJsZVxuICAgICAgICB0aGlzLmRpc21pc3NlZENoYW5nZWQubmV4dCh0aGlzLmRpc21pc3NlZCk7XG5cbiAgICAgICAgLy8gTm90aWZ5IHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwibmljZS1hbGVydC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiIWRpc21pc3NpYmxlIHx8IGRpc21pc3NpYmxlICYmICFkaXNtaXNzZWRcIlxuICAgIFtAZmFkZUluXT1cIiFkaXNtaXNzZWQgJiYgIWRpc2FibGVBbmltYXRpb25cIlxuICAgIFtAZmFkZU91dF09XCIhZGlzbWlzc2VkICYmICFkaXNhYmxlQW5pbWF0aW9uXCI+XG5cbiAgICA8IS0tIEJvcmRlciAtLT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibmljZS1hbGVydC1ib3JkZXJcIlxuICAgICAgICAqbmdJZj1cImFwcGVhcmFuY2UgPT09ICdib3JkZXInXCI+PC9kaXY+XG5cbiAgICA8IS0tIEljb24gLS0+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm5pY2UtYWxlcnQtaWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0ljb25cIj5cblxuICAgICAgICA8IS0tIEN1c3RvbSBpY29uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS1hbGVydC1jdXN0b20taWNvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25pY2VBbGVydEljb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIERlZmF1bHQgaWNvbnMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLWFsZXJ0LWRlZmF1bHQtaWNvblwiPlxuXG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGVjay1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGVjay1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnd2FybidcIlxuICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6eC1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnYmFzaWMnXCJcbiAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmNoZWNrLWNpcmNsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDppbmZvcm1hdGlvbi1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6Y2hlY2stY2lyY2xlJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmV4Y2xhbWF0aW9uJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDp4LWNpcmNsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm5pY2UtYWxlcnQtY29udGVudFwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLWFsZXJ0LXRpdGxlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmljZUFsZXJ0VGl0bGVdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS1hbGVydC1tZXNzYWdlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERpc21pc3MgYnV0dG9uIC0tPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJuaWNlLWFsZXJ0LWRpc21pc3MtYnV0dG9uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6eCdcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG48L2Rpdj5cbiJdfQ==
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBV25ELE1BQU0sT0FBTyxrQkFBa0I7SUF1QzNCOztPQUVHO0lBQ0gsWUFDWSxrQkFBcUMsRUFDckMsaUJBQW1DLEVBQ25DLGlCQUFtQztRQUZuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQWxDeEMsZUFBVSxHQUF3QixNQUFNLENBQUM7UUFHekMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUds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V0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IG5pY2VBbmltYXRpb25zIH0gZnJvbSBcIi4uLy4uL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IE5pY2VVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vcHJvdmlkZXJzL3V0aWxzXCI7XG5pbXBvcnQgeyBOaWNlQWxlcnRTZXJ2aWNlIH0gZnJvbSBcIi4vYWxlcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZUFsZXJ0VHlwZSwgTmljZUFsZXJ0QXBwZWFyYW5jZSwgTmljZUFsZXJ0Q29sb3IgfSBmcm9tIFwiLi9hbGVydC50eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFsZXJ0XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9hbGVydC50ZW1wbGF0ZS5odG1sXCIsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBhbmltYXRpb25zOiBuaWNlQW5pbWF0aW9ucyxcbiAgICBleHBvcnRBczogXCJuaWNlQWxlcnRcIlxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzbWlzc2libGU6IEJvb2xlYW5JbnB1dDtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzbWlzc2VkOiBCb29sZWFuSW5wdXQ7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVBbmltYXRpb246IEJvb2xlYW5JbnB1dDtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2hvd0ljb246IEJvb2xlYW5JbnB1dDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFwcGVhcmFuY2U6IE5pY2VBbGVydEFwcGVhcmFuY2UgPSBcInNvZnRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc21pc3NlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzbWlzc2libGUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9IHRoaXMuX25pY2VVdGlsc1NlcnZpY2UucmFuZG9tSWQoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dJY29uID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR5cGU6IE5pY2VBbGVydFR5cGUgPSBcInByaW1hcnlcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbG9yPzogTmljZUFsZXJ0Q29sb3I7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzbWlzc2VkQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9uaWNlQWxlcnRTZXJ2aWNlOiBOaWNlQWxlcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uaWNlVXRpbHNTZXJ2aWNlOiBOaWNlVXRpbHNTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIEFjY2Vzc29yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBIb3N0IGJpbmRpbmcgZm9yIGNvbXBvbmVudCBjbGFzc2VzXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIilcbiAgICBwdWJsaWMgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xuICAgICAgICBsZXQgdHlwZXM6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtcHJpbWFyeVwiOiB0aGlzLnR5cGUgPT09IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtYWNjZW50XCI6IHRoaXMudHlwZSA9PT0gXCJhY2NlbnRcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXdhcm5cIjogdGhpcy50eXBlID09PSBcIndhcm5cIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWJhc2ljXCI6IHRoaXMudHlwZSA9PT0gXCJiYXNpY1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtaW5mb1wiOiB0aGlzLnR5cGUgPT09IFwiaW5mb1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtc3VjY2Vzc1wiOiB0aGlzLnR5cGUgPT09IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtd2FybmluZ1wiOiB0aGlzLnR5cGUgPT09IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtZXJyb3JcIjogdGhpcy50eXBlID09PSBcImVycm9yXCJcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgICAgICB0eXBlcyA9IHtcbiAgICAgICAgICAgICAgICBcIm5pY2UtYWxlcnQtdHlwZS1wcmltYXJ5XCI6IHRoaXMuY29sb3IgPT09IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWFjY2VudFwiOiB0aGlzLmNvbG9yID09PSBcImFjY2VudFwiLFxuICAgICAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXdhcm5cIjogdGhpcy5jb2xvciA9PT0gXCJ3YXJuXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LWFwcGVhcmFuY2UtYm9yZGVyXCI6IHRoaXMuYXBwZWFyYW5jZSA9PT0gXCJib3JkZXJcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLWZpbGxcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcImZpbGxcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLW91dGxpbmVcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcIm91dGxpbmVcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLXNvZnRcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcInNvZnRcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1kaXNtaXNzZWRcIjogdGhpcy5kaXNtaXNzZWQsXG4gICAgICAgICAgICBcIm5pY2UtYWxlcnQtZGlzbWlzc2libGVcIjogdGhpcy5kaXNtaXNzaWJsZSxcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1zaG93LWljb25cIjogdGhpcy5zaG93SWNvbixcbiAgICAgICAgICAgIC4uLnR5cGVzXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIExpZmVjeWNsZSBob29rc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBPbiBjaGFuZ2VzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIERpc21pc3NlZFxuICAgICAgICBpZiAoXCJkaXNtaXNzZWRcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxuICAgICAgICAgICAgdGhpcy5kaXNtaXNzZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5kaXNtaXNzZWQuY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgICAgLy8gRGlzbWlzcy9zaG93IHRoZSBhbGVydFxuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRGlzbWlzcyh0aGlzLmRpc21pc3NlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNtaXNzaWJsZVxuICAgICAgICBpZiAoXCJkaXNtaXNzaWJsZVwiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXG4gICAgICAgICAgICB0aGlzLmRpc21pc3NpYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZGlzbWlzc2libGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGUgYW5pbWF0aW9uXG4gICAgICAgIGlmIChcImRpc2FibGVBbmltYXRpb25cIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQW5pbWF0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZGlzYWJsZUFuaW1hdGlvbi5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hvdyBpY29uXG4gICAgICAgIGlmIChcInNob3dJY29uXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgLy8gQ29lcmNlIHRoZSB2YWx1ZSB0byBhIGJvb2xlYW5cbiAgICAgICAgICAgIHRoaXMuc2hvd0ljb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5zaG93SWNvbi5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gaW5pdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBkaXNtaXNzIGNhbGxzXG4gICAgICAgIHRoaXMuX25pY2VBbGVydFNlcnZpY2Uub25EaXNtaXNzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG5hbWUpID0+IHRoaXMubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBEaXNtaXNzIHRoZSBhbGVydFxuICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBzaG93IGNhbGxzXG4gICAgICAgIHRoaXMuX25pY2VBbGVydFNlcnZpY2Uub25TaG93XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG5hbWUpID0+IHRoaXMubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBTaG93IHRoZSBhbGVydFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gZGVzdHJveVxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIFB1YmxpYyBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3MgdGhlIGFsZXJ0XG4gICAgICovXG4gICAgcHVibGljIGRpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYWxlcnQgaXMgYWxyZWFkeSBkaXNtaXNzZWRcbiAgICAgICAgaWYgKHRoaXMuZGlzbWlzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNtaXNzIHRoZSBhbGVydFxuICAgICAgICB0aGlzLl90b2dnbGVEaXNtaXNzKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIGRpc21pc3NlZCBhbGVydFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIGFsZXJ0IGlzIGFscmVhZHkgc2hvd2luZ1xuICAgICAgICBpZiAoIXRoaXMuZGlzbWlzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaG93IHRoZSBhbGVydFxuICAgICAgICB0aGlzLl90b2dnbGVEaXNtaXNzKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEAgUHJpdmF0ZSBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3Mvc2hvdyB0aGUgYWxlcnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXNtaXNzZWRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3RvZ2dsZURpc21pc3MoZGlzbWlzc2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYWxlcnQgaXMgbm90IGRpc21pc3NpYmxlXG4gICAgICAgIGlmICghdGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBkaXNtaXNzZWRcbiAgICAgICAgdGhpcy5kaXNtaXNzZWQgPSBkaXNtaXNzZWQ7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgb2JzZXJ2YWJsZVxuICAgICAgICB0aGlzLmRpc21pc3NlZENoYW5nZWQubmV4dCh0aGlzLmRpc21pc3NlZCk7XG5cbiAgICAgICAgLy8gTm90aWZ5IHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwibmljZS1hbGVydC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiIWRpc21pc3NpYmxlIHx8IGRpc21pc3NpYmxlICYmICFkaXNtaXNzZWRcIlxuICAgIFtAZmFkZUluXT1cIiFkaXNtaXNzZWQgJiYgIWRpc2FibGVBbmltYXRpb25cIlxuICAgIFtAZmFkZU91dF09XCIhZGlzbWlzc2VkICYmICFkaXNhYmxlQW5pbWF0aW9uXCI+XG5cbiAgICA8IS0tIEJvcmRlciAtLT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibmljZS1hbGVydC1ib3JkZXJcIlxuICAgICAgICAqbmdJZj1cImFwcGVhcmFuY2UgPT09ICdib3JkZXInXCI+PC9kaXY+XG5cbiAgICA8IS0tIEljb24gLS0+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm5pY2UtYWxlcnQtaWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0ljb25cIj5cblxuICAgICAgICA8IS0tIEN1c3RvbSBpY29uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS1hbGVydC1jdXN0b20taWNvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25pY2VBbGVydEljb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIERlZmF1bHQgaWNvbnMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLWFsZXJ0LWRlZmF1bHQtaWNvblwiPlxuXG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGVjay1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGVjay1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnd2FybidcIlxuICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6eC1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnYmFzaWMnXCJcbiAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmNoZWNrLWNpcmNsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDppbmZvcm1hdGlvbi1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6Y2hlY2stY2lyY2xlJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmV4Y2xhbWF0aW9uJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDp4LWNpcmNsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm5pY2UtYWxlcnQtY29udGVudFwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLWFsZXJ0LXRpdGxlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmljZUFsZXJ0VGl0bGVdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS1hbGVydC1tZXNzYWdlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERpc21pc3MgYnV0dG9uIC0tPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJuaWNlLWFsZXJ0LWRpc21pc3MtYnV0dG9uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6eCdcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG48L2Rpdj5cbiJdfQ==
|
|
@@ -6,16 +6,14 @@ import { NiceAlertComponent } from "./alert.component";
|
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class NiceAlertModule {
|
|
8
8
|
}
|
|
9
|
-
NiceAlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10
|
-
NiceAlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
9
|
+
NiceAlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
NiceAlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertModule, declarations: [NiceAlertComponent], imports: [CommonModule,
|
|
11
11
|
MatButtonModule,
|
|
12
12
|
MatIconModule], exports: [NiceAlertComponent] });
|
|
13
|
-
NiceAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
]] });
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAlertModule, decorators: [{
|
|
13
|
+
NiceAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertModule, imports: [CommonModule,
|
|
14
|
+
MatButtonModule,
|
|
15
|
+
MatIconModule] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertModule, decorators: [{
|
|
19
17
|
type: NgModule,
|
|
20
18
|
args: [{
|
|
21
19
|
imports: [
|
|
@@ -31,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
31
29
|
]
|
|
32
30
|
}]
|
|
33
31
|
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQWV2RCxNQUFNLE9BQU8sZUFBZTs7NEdBQWYsZUFBZTs2R0FBZixlQUFlLGlCQU5wQixrQkFBa0IsYUFMbEIsWUFBWTtRQUNaLGVBQWU7UUFDZixhQUFhLGFBTWIsa0JBQWtCOzZHQUdiLGVBQWUsWUFYcEIsWUFBWTtRQUNaLGVBQWU7UUFDZixhQUFhOzJGQVNSLGVBQWU7a0JBYjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3FCQUNoQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1Ysa0JBQWtCO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsa0JBQWtCO3FCQUNyQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTmljZUFsZXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4vYWxlcnQuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIE5pY2VBbGVydENvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBOaWNlQWxlcnRDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VBbGVydE1vZHVsZSB7XG59XG4iXX0=
|
|
@@ -47,9 +47,9 @@ export class NiceAlertService {
|
|
|
47
47
|
this._onShow.next(name);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
NiceAlertService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
51
|
-
NiceAlertService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
50
|
+
NiceAlertService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
51
|
+
NiceAlertService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertService, providedIn: "root" });
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAlertService, decorators: [{
|
|
53
53
|
type: Injectable,
|
|
54
54
|
args: [{
|
|
55
55
|
providedIn: "root"
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, forwardRef, Inject, Input, Optional, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from "@angular/core";
|
|
1
|
+
import { Component, ContentChild, ElementRef, EventEmitter, forwardRef, Inject, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from "@angular/core";
|
|
2
2
|
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
3
|
import { niceAnimations } from "../../animations";
|
|
4
4
|
import { FileUtils } from "../../utils";
|
|
5
5
|
import { NICE_ASSETS_CAROUSEL_OPTIONS } from "./assets-carousel.constant";
|
|
6
|
+
import { NiceAssetsCarouselActiveContentDirective } from "./directives/assets-carousel-active-content.directive";
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/
|
|
8
|
-
import * as i2 from "@angular/material/
|
|
9
|
-
import * as i3 from "@angular/material/
|
|
10
|
-
import * as i4 from "
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "@angular/material/icon";
|
|
10
|
+
import * as i3 from "@angular/material/button";
|
|
11
|
+
import * as i4 from "@angular/material/menu";
|
|
11
12
|
import * as i5 from "@angular/material/core";
|
|
12
|
-
import * as i6 from "
|
|
13
|
+
import * as i6 from "../../directives/dropzone/dropzone.directive";
|
|
13
14
|
import * as i7 from "@ngx-translate/core";
|
|
14
15
|
export class NiceAssetsCarouselComponent {
|
|
15
16
|
constructor(options) {
|
|
@@ -24,7 +25,11 @@ export class NiceAssetsCarouselComponent {
|
|
|
24
25
|
this.edit = false;
|
|
25
26
|
this.accept = ["image/*"];
|
|
26
27
|
this.customActions = [];
|
|
28
|
+
this.multipleUpload = false;
|
|
29
|
+
this.visiblePreviewAsset = 4;
|
|
30
|
+
this.showAddAssetContainer = true;
|
|
27
31
|
this.activeChange = new EventEmitter();
|
|
32
|
+
this.removedAsset = new EventEmitter();
|
|
28
33
|
this.listStyle = { transform: "translateX(0px)" };
|
|
29
34
|
if (!this.options) {
|
|
30
35
|
this.options = {
|
|
@@ -73,7 +78,7 @@ export class NiceAssetsCarouselComponent {
|
|
|
73
78
|
}
|
|
74
79
|
set activeTranslationPosition(position) {
|
|
75
80
|
this._activeTranslationPosition = position;
|
|
76
|
-
this.listStyle.transform = `translateX(${position}
|
|
81
|
+
this.listStyle.transform = `translateX(calc((var(--nice-assets-carousel-asset-width) + var(--nice-assets-carousel-asset-gap)) * ${position}))`;
|
|
77
82
|
}
|
|
78
83
|
set activeAsset(position) {
|
|
79
84
|
if (position < 0) {
|
|
@@ -82,17 +87,20 @@ export class NiceAssetsCarouselComponent {
|
|
|
82
87
|
this._active = position;
|
|
83
88
|
this._activeAsset = this._assets[this._active];
|
|
84
89
|
this._lastAsset = this._active === this._assets.length - 1 || !this._assets.length;
|
|
85
|
-
this._shouldTransform
|
|
90
|
+
this._shouldTransform
|
|
91
|
+
= ((this.edit && this.showAddAssetContainer) && this._active >= (this.visiblePreviewAsset - 1))
|
|
92
|
+
|| this._active >= this.visiblePreviewAsset;
|
|
86
93
|
this.activeChange.emit(this._active);
|
|
87
94
|
}
|
|
88
95
|
writeValue(assets) {
|
|
89
96
|
this._assets = assets ?? [];
|
|
90
|
-
if (this._assets
|
|
91
|
-
this._activeAsset =
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
97
|
+
if (this._assets.length === 0) {
|
|
98
|
+
this._activeAsset = null;
|
|
94
99
|
this._lastAsset = true;
|
|
95
100
|
}
|
|
101
|
+
else if (this._assets.length > 0) {
|
|
102
|
+
this._activeAsset = this._assets[this._active];
|
|
103
|
+
}
|
|
96
104
|
}
|
|
97
105
|
registerOnChange(fn) {
|
|
98
106
|
this.propagate = fn;
|
|
@@ -103,7 +111,7 @@ export class NiceAssetsCarouselComponent {
|
|
|
103
111
|
this.activeAsset = this._active - 1;
|
|
104
112
|
}
|
|
105
113
|
if (this._activeTranslationPosition < 0) {
|
|
106
|
-
this.activeTranslationPosition = this._activeTranslationPosition +
|
|
114
|
+
this.activeTranslationPosition = this._activeTranslationPosition + 1;
|
|
107
115
|
}
|
|
108
116
|
}
|
|
109
117
|
clickRight() {
|
|
@@ -112,23 +120,23 @@ export class NiceAssetsCarouselComponent {
|
|
|
112
120
|
}
|
|
113
121
|
this.activeAsset = this._active + 1;
|
|
114
122
|
if (this._shouldTransform) {
|
|
115
|
-
this.activeTranslationPosition = this._activeTranslationPosition -
|
|
123
|
+
this.activeTranslationPosition = this._activeTranslationPosition - 1;
|
|
116
124
|
}
|
|
117
125
|
}
|
|
118
126
|
clickAsset(index) {
|
|
119
|
-
let visibleAssets = this.edit ? 2 :
|
|
127
|
+
let visibleAssets = (this.edit && this.showAddAssetContainer) ? (this.visiblePreviewAsset - 2) : (this.visiblePreviewAsset - 1);
|
|
120
128
|
if (index < visibleAssets) {
|
|
121
129
|
visibleAssets = index;
|
|
122
130
|
}
|
|
123
131
|
if (index >= 0) {
|
|
124
|
-
this.activeTranslationPosition = (index - visibleAssets) * -
|
|
132
|
+
this.activeTranslationPosition = (index - visibleAssets) * -1;
|
|
125
133
|
}
|
|
126
134
|
this.activeAsset = index;
|
|
127
135
|
}
|
|
128
136
|
async onFilesChange(event) {
|
|
129
137
|
const files = event.target?.files;
|
|
130
138
|
await this.onFilesDrop(files);
|
|
131
|
-
this.inputElement.nativeElement.
|
|
139
|
+
this.inputElement.nativeElement.value = "";
|
|
132
140
|
}
|
|
133
141
|
async onFilesDrop(files) {
|
|
134
142
|
if (!files?.length) {
|
|
@@ -158,6 +166,7 @@ export class NiceAssetsCarouselComponent {
|
|
|
158
166
|
}
|
|
159
167
|
}
|
|
160
168
|
clickRemove() {
|
|
169
|
+
this.removedAsset.emit(this._assets[this._active]);
|
|
161
170
|
this._assets.splice(this._active, 1);
|
|
162
171
|
if (this._lastAsset) {
|
|
163
172
|
this.clickAsset(this._assets.length - 1);
|
|
@@ -178,15 +187,15 @@ export class NiceAssetsCarouselComponent {
|
|
|
178
187
|
await this._assetsElement.get(this._active).nativeElement.firstElementChild.play();
|
|
179
188
|
}
|
|
180
189
|
}
|
|
181
|
-
NiceAssetsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
182
|
-
NiceAssetsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
190
|
+
NiceAssetsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAssetsCarouselComponent, deps: [{ token: NICE_ASSETS_CAROUSEL_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
191
|
+
NiceAssetsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.3", type: NiceAssetsCarouselComponent, selector: "nice-assets-carousel", inputs: { color: "color", edit: "edit", accept: "accept", customActions: "customActions", multipleUpload: "multipleUpload", visiblePreviewAsset: "visiblePreviewAsset", showAddAssetContainer: "showAddAssetContainer", assets: "assets" }, outputs: { activeChange: "activeChange", removedAsset: "removedAsset" }, providers: [
|
|
183
192
|
{
|
|
184
193
|
provide: NG_VALUE_ACCESSOR,
|
|
185
194
|
useExisting: forwardRef(() => NiceAssetsCarouselComponent),
|
|
186
195
|
multi: true
|
|
187
196
|
}
|
|
188
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "activeVideoElement", first: true, predicate: ["activeVideo"], descendants: true }, { propertyName: "assetsElement", predicate: ["assets"], descendants: true }], ngImport: i0, template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div
|
|
189
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
197
|
+
], queries: [{ propertyName: "activeContent", first: true, predicate: NiceAssetsCarouselActiveContentDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "activeVideoElement", first: true, predicate: ["activeVideo"], descendants: true }, { propertyName: "assetsElement", predicate: ["assets"], descendants: true }], ngImport: i0, template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div\n class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click();\n $event.stopPropagation()\"\n >\n <ng-container\n *ngIf=\"_activeAsset && activeContent\"\n [ngTemplateOutlet]=\"activeContent\"\n [ngTemplateOutletContext]=\"{ $implicit: _activeAsset}\"\n ></ng-container>\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click(); $event.stopPropagation()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)\"\n >\n <mat-icon *ngIf=\"action.icon.matIcon\">{{ action.icon.matIcon }}</mat-icon>\n <mat-icon [svgIcon]=\"action.icon.svgIcon\" *ngIf=\"action.icon.svgIcon\"></mat-icon>\n <span>{{ action.name | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"clickRemove()\">\n <mat-icon *ngIf=\"options.actionButtons.remove.matIcon\">{{ options.actionButtons.remove.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.remove.svgIcon\" [svgIcon]=\"options.actionButtons.remove.svgIcon\"></mat-icon>\n <span>{{ \"nice_ui_kit.assets_carousel.delete\" | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <div class=\"carousel\">\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button left-arrow\" mat-icon-button [disabled]=\"!_active\" (click)=\"clickLeft()\">\n <mat-icon *ngIf=\"options.leftArrow.matIcon\">{{ options.leftArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.leftArrow.svgIcon\" [svgIcon]=\"options.leftArrow.svgIcon\"></mat-icon>\n </button>\n <div class=\"asset-list-container\">\n <div *ngIf=\"showAddAssetContainer && edit\" class=\"add-asset-container\">\n <div class=\"add-asset\" matRipple (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.addPhoto.matIcon\">{{ options.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.addPhoto.svgIcon\" [svgIcon]=\"options.addPhoto.svgIcon\"></mat-icon>\n </div>\n </div>\n <div class=\"asset-list\" [ngStyle]=\"listStyle\">\n <div #assets class=\"asset\" *ngFor=\"let asset of _assets; let i = index\" (click)=\"clickAsset(i)\" [ngClass]=\"color\" [class.active]=\"_active === i\">\n <img *ngIf=\"asset.type === 'image'\" draggable=\"false\" [src]=\"asset.url ?? asset.base64\" alt=\"add-image\">\n <video *ngIf=\"asset.type === 'video'\" draggable=\"false\" loop [src]=\"asset.url ?? asset.base64\"></video>\n </div>\n </div>\n </div>\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button right-arrow\" mat-icon-button [disabled]=\"_lastAsset\" (click)=\"clickRight()\">\n <mat-icon *ngIf=\"options.rightArrow.matIcon\">{{ options.rightArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.rightArrow.svgIcon\" [svgIcon]=\"options.rightArrow.svgIcon\"></mat-icon>\n </button>\n </div>\n</div>\n\n<input #fileInput type=\"file\" hidden [accept]=\"accept\" (change)=\"onFilesChange($event)\" [multiple]=\"multipleUpload\">\n", styles: [":root{--nice-assets-carousel-asset-width: 90px;--nice-assets-carousel-asset-height: 60px;--nice-assets-carousel-asset-gap: .75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i6.NiceDropzoneDirective, selector: "[niceDropzone]", outputs: ["filesDropped"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], animations: niceAnimations, encapsulation: i0.ViewEncapsulation.None });
|
|
198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceAssetsCarouselComponent, decorators: [{
|
|
190
199
|
type: Component,
|
|
191
200
|
args: [{ selector: "nice-assets-carousel", encapsulation: ViewEncapsulation.None, animations: niceAnimations, providers: [
|
|
192
201
|
{
|
|
@@ -194,7 +203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
194
203
|
useExisting: forwardRef(() => NiceAssetsCarouselComponent),
|
|
195
204
|
multi: true
|
|
196
205
|
}
|
|
197
|
-
], template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div
|
|
206
|
+
], template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div\n class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click();\n $event.stopPropagation()\"\n >\n <ng-container\n *ngIf=\"_activeAsset && activeContent\"\n [ngTemplateOutlet]=\"activeContent\"\n [ngTemplateOutletContext]=\"{ $implicit: _activeAsset}\"\n ></ng-container>\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click(); $event.stopPropagation()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)\"\n >\n <mat-icon *ngIf=\"action.icon.matIcon\">{{ action.icon.matIcon }}</mat-icon>\n <mat-icon [svgIcon]=\"action.icon.svgIcon\" *ngIf=\"action.icon.svgIcon\"></mat-icon>\n <span>{{ action.name | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"clickRemove()\">\n <mat-icon *ngIf=\"options.actionButtons.remove.matIcon\">{{ options.actionButtons.remove.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.remove.svgIcon\" [svgIcon]=\"options.actionButtons.remove.svgIcon\"></mat-icon>\n <span>{{ \"nice_ui_kit.assets_carousel.delete\" | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <div class=\"carousel\">\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button left-arrow\" mat-icon-button [disabled]=\"!_active\" (click)=\"clickLeft()\">\n <mat-icon *ngIf=\"options.leftArrow.matIcon\">{{ options.leftArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.leftArrow.svgIcon\" [svgIcon]=\"options.leftArrow.svgIcon\"></mat-icon>\n </button>\n <div class=\"asset-list-container\">\n <div *ngIf=\"showAddAssetContainer && edit\" class=\"add-asset-container\">\n <div class=\"add-asset\" matRipple (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.addPhoto.matIcon\">{{ options.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.addPhoto.svgIcon\" [svgIcon]=\"options.addPhoto.svgIcon\"></mat-icon>\n </div>\n </div>\n <div class=\"asset-list\" [ngStyle]=\"listStyle\">\n <div #assets class=\"asset\" *ngFor=\"let asset of _assets; let i = index\" (click)=\"clickAsset(i)\" [ngClass]=\"color\" [class.active]=\"_active === i\">\n <img *ngIf=\"asset.type === 'image'\" draggable=\"false\" [src]=\"asset.url ?? asset.base64\" alt=\"add-image\">\n <video *ngIf=\"asset.type === 'video'\" draggable=\"false\" loop [src]=\"asset.url ?? asset.base64\"></video>\n </div>\n </div>\n </div>\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button right-arrow\" mat-icon-button [disabled]=\"_lastAsset\" (click)=\"clickRight()\">\n <mat-icon *ngIf=\"options.rightArrow.matIcon\">{{ options.rightArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.rightArrow.svgIcon\" [svgIcon]=\"options.rightArrow.svgIcon\"></mat-icon>\n </button>\n </div>\n</div>\n\n<input #fileInput type=\"file\" hidden [accept]=\"accept\" (change)=\"onFilesChange($event)\" [multiple]=\"multipleUpload\">\n", styles: [":root{--nice-assets-carousel-asset-width: 90px;--nice-assets-carousel-asset-height: 60px;--nice-assets-carousel-asset-gap: .75rem}\n"] }]
|
|
198
207
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
199
208
|
type: Optional
|
|
200
209
|
}, {
|
|
@@ -211,8 +220,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
211
220
|
type: Input
|
|
212
221
|
}], customActions: [{
|
|
213
222
|
type: Input
|
|
223
|
+
}], multipleUpload: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], visiblePreviewAsset: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}], showAddAssetContainer: [{
|
|
228
|
+
type: Input
|
|
229
|
+
}], activeContent: [{
|
|
230
|
+
type: ContentChild,
|
|
231
|
+
args: [NiceAssetsCarouselActiveContentDirective, { read: TemplateRef }]
|
|
214
232
|
}], activeChange: [{
|
|
215
233
|
type: Output
|
|
234
|
+
}], removedAsset: [{
|
|
235
|
+
type: Output
|
|
216
236
|
}], activeVideoElement: [{
|
|
217
237
|
type: ViewChild,
|
|
218
238
|
args: ["activeVideo"]
|
|
@@ -222,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
222
242
|
}], assets: [{
|
|
223
243
|
type: Input
|
|
224
244
|
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3NldHMtY2Fyb3VzZWwvYXNzZXRzLWNhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3NldHMtY2Fyb3VzZWwvYXNzZXRzLWNhcm91c2VsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQUUsU0FBUyxFQUNqQixTQUFTLEVBQUUsWUFBWSxFQUN2QixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUE0QzFFLE1BQU0sT0FBTywyQkFBMkI7SUEyRXBDLFlBQThFLE9BQWtDO1FBQWxDLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBMUV6RywrQkFBMEIsR0FBRyxDQUFDLENBQUM7UUFDL0IsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBRTNCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR3pCLGlCQUFZLEdBQWlCLFNBQVMsQ0FBQztRQU12QyxVQUFL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QUR2QixZQUFZO3VCQUFDLFFBQVE7Z0JBV1gsTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCwgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IENhbkNvbG9yLCBUaGVtZVBhbGV0dGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHsgbmljZUFuaW1hdGlvbnMgfSBmcm9tIFwiLi4vLi4vYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHsgRmlsZVV0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBOSUNFX0FTU0VUU19DQVJPVVNFTF9PUFRJT05TIH0gZnJvbSBcIi4vYXNzZXRzLWNhcm91c2VsLmNvbnN0YW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmljZUFzc2V0cyB7XG4gICAgdHlwZTogXCJpbWFnZVwiIHwgXCJ2aWRlb1wiO1xuICAgIGlkPzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgICBiYXNlNjQ/OiBzdHJpbmc7XG4gICAgZmlsZT86IEZpbGU7XG59XG5cbmV4cG9ydCB0eXBlIE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb24gPSB7IG1hdEljb246IHN0cmluZzsgc3ZnSWNvbj86IHN0cmluZzsgfSB8IHsgbWF0SWNvbj86IHN0cmluZzsgc3ZnSWNvbjogc3RyaW5nOyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbnMge1xuICAgIGljb246IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGFjdGlvbjogKGFjdGl2ZTogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5pY2VBc3NldHNDYXJvdXNlbE9wdGlvbnMge1xuICAgIGFjdGlvbkJ1dHRvbnM/OiB7XG4gICAgICAgIG1vcmVPcHRpb25zPzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICAgICAgYWRkUGhvdG8/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgICAgICByZW1vdmU/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgIH07XG4gICAgYWRkUGhvdG8/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgIGxlZnRBcnJvdz86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG4gICAgcmlnaHRBcnJvdz86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG4gICAgdXBsb2FkPzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS1hc3NldHMtY2Fyb3VzZWxcIixcbiAgICB0ZW1wbGF0ZVVybDogXCJhc3NldHMtY2Fyb3VzZWwudGVtcGxhdGUuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiYXNzZXRzLWNhcm91c2VsLnRoZW1lLnNjc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBhbmltYXRpb25zOiBuaWNlQW5pbWF0aW9ucyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOaWNlQXNzZXRzQ2Fyb3VzZWxDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmljZUFzc2V0c0Nhcm91c2VsQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIENhbkNvbG9yIHtcbiAgICBwdWJsaWMgX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSAwO1xuICAgIHB1YmxpYyBfYWN0aXZlID0gMDtcbiAgICBwdWJsaWMgX2Fzc2V0czogTmljZUFzc2V0c1tdID0gW107XG4gICAgcHVibGljIF9hY3RpdmVBc3NldDogTmljZUFzc2V0cztcbiAgICBwdWJsaWMgX2xhc3RBc3NldCA9IHRydWU7XG4gICAgcHVibGljIF9zaG91bGRUcmFuc2Zvcm0gPSBmYWxzZTtcbiAgICBwdWJsaWMgX2FjdGl2ZVZpZGVvRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50PjtcbiAgICBwdWJsaWMgX2Fzc2V0c0VsZW1lbnQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XG4gICAgcHVibGljIGRlZmF1bHRDb2xvcjogVGhlbWVQYWxldHRlID0gXCJwcmltYXJ5XCI7XG5cbiAgICBAVmlld0NoaWxkKFwiZmlsZUlucHV0XCIpXG4gICAgcHVibGljIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSB0aGlzLmRlZmF1bHRDb2xvcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVkaXQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjY2VwdDogc3RyaW5nW10gPSBbXCJpbWFnZS8qXCJdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VzdG9tQWN0aW9uczogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uc1tdID0gW107XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBwdWJsaWMgbGlzdFN0eWxlOiB7IHRyYW5zZm9ybTogc3RyaW5nIH0gPSB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDBweClcIiB9O1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGU6IChhc3NldHM6IE5pY2VBc3NldHNbXSkgPT4gdm9pZDtcblxuICAgIEBWaWV3Q2hpbGQoXCJhY3RpdmVWaWRlb1wiKVxuICAgIHB1YmxpYyBzZXQgYWN0aXZlVmlkZW9FbGVtZW50KGFjdGl2ZVZpZGVvRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50Pikge1xuICAgICAgICB0aGlzLl9hY3RpdmVWaWRlb0VsZW1lbnQgPSBhY3RpdmVWaWRlb0VsZW1lbnQ7XG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlVmlkZW9FbGVtZW50IHx8ICF0aGlzLl9hc3NldHNFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXJ0U3luY1ZpZGVvKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZHJlbihcImFzc2V0c1wiKVxuICAgIHB1YmxpYyBzZXQgYXNzZXRzRWxlbWVudChhc3NldHNFbGVtZW50OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KSB7XG4gICAgICAgIHRoaXMuX2Fzc2V0c0VsZW1lbnQgPSBhc3NldHNFbGVtZW50O1xuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZVZpZGVvRWxlbWVudCB8fCAhdGhpcy5fYXNzZXRzRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGFydFN5bmNWaWRlbygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhc3NldHMoYXNzZXRzOiBOaWNlQXNzZXRzW10pIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKGFzc2V0cyA/PyBbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXQgYWN0aXZlVHJhbnNsYXRpb25Qb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgdGhpcy5saXN0U3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtwb3NpdGlvbn1weClgO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0IGFjdGl2ZUFzc2V0KHBvc2l0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgICAgcG9zaXRpb24gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlID0gcG9zaXRpb247XG4gICAgICAgIHRoaXMuX2FjdGl2ZUFzc2V0ID0gdGhpcy5fYXNzZXRzW3RoaXMuX2FjdGl2ZV07XG4gICAgICAgIHRoaXMuX2xhc3RBc3NldCA9IHRoaXMuX2FjdGl2ZSA9PT0gdGhpcy5fYXNzZXRzLmxlbmd0aCAtIDEgfHwgIXRoaXMuX2Fzc2V0cy5sZW5ndGg7XG4gICAgICAgIHRoaXMuX3Nob3VsZFRyYW5zZm9ybSA9ICh0aGlzLmVkaXQgJiYgdGhpcy5fYWN0aXZlID49IDMpIHx8IHRoaXMuX2FjdGl2ZSA+PSA0O1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChOSUNFX0FTU0VUU19DQVJPVVNFTF9PUFRJT05TKSBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogTmljZUFzc2V0c0Nhcm91c2VsT3B0aW9ucykge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGFjdGlvbkJ1dHRvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkUGhvdG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwicGhvdG9fY2FtZXJhXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9yZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwibW9yZV92ZXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJY29uOiBcImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFkZFBob3RvOiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwicGhvdG9fY2FtZXJhXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxlZnRBcnJvdzoge1xuICAgICAgICAgICAgICAgICAgICBtYXRJY29uOiBcImNoZXZyb25fbGVmdFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByaWdodEFycm93OiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwiY2hldnJvbl9yaWdodFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1cGxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgbWF0SWNvbjogXCJmaWxlX3VwbG9hZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKGFzc2V0czogTmljZUFzc2V0c1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Fzc2V0cyA9IGFzc2V0cyA/PyBbXTtcbiAgICAgICAgaWYgKHRoaXMuX2Fzc2V0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVBc3NldCA9IHRoaXMuX2Fzc2V0c1t0aGlzLl9hY3RpdmVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbGFzdEFzc2V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoYXNzZXRzOiBOaWNlQXNzZXRzW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IChhc3NldHM6IE5pY2VBc3NldHNbXSkgPT4gdm9pZCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBjbGlja0xlZnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQXNzZXQgPSB0aGlzLl9hY3RpdmUgLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSB0aGlzLl9hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uICsgMTAyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrUmlnaHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9sYXN0QXNzZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlQXNzZXQgPSB0aGlzLl9hY3RpdmUgKyAxO1xuICAgICAgICBpZiAodGhpcy5fc2hvdWxkVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSB0aGlzLl9hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uIC0gMTAyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrQXNzZXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgdmlzaWJsZUFzc2V0cyA9IHRoaXMuZWRpdCA/IDIgOiAzO1xuICAgICAgICBpZiAoaW5kZXggPCB2aXNpYmxlQXNzZXRzKSB7XG4gICAgICAgICAgICB2aXNpYmxlQXNzZXRzID0gaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uID0gKGluZGV4IC0gdmlzaWJsZUFzc2V0cykgKiAtMTAyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVBc3NldCA9IGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvbkZpbGVzQ2hhbmdlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWxlcyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LmZpbGVzO1xuICAgICAgICBhd2FpdCB0aGlzLm9uRmlsZXNEcm9wKGZpbGVzKTtcblxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZpbGVzID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25GaWxlc0Ryb3AoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld0Fzc2V0c0FkZGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFjY2VwdC5zb21lKChhY2NlcHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0LmVuZHNXaXRoKFwiKlwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgoYWNjZXB0LnJlcGxhY2UoXCIqXCIsIFwiXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjZXB0ID09PSBmaWxlLnR5cGU7XG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBuZXdBc3NldHNBZGRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9hc3NldHMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUuc3BsaXQoXCIvXCIpLnNoaWZ0KCkgYXMgXCJpbWFnZVwiIHwgXCJ2aWRlb1wiLFxuICAgICAgICAgICAgICAgIGJhc2U2NDogYXdhaXQgRmlsZVV0aWxzLmdldERhdGFVcmwoZmlsZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0Fzc2V0c0FkZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrQXNzZXQodGhpcy5fYXNzZXRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGU/Lih0aGlzLl9hc3NldHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrUmVtb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hc3NldHMuc3BsaWNlKHRoaXMuX2FjdGl2ZSwgMSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2xhc3RBc3NldCkge1xuICAgICAgICAgICAgdGhpcy5jbGlja0Fzc2V0KHRoaXMuX2Fzc2V0cy5sZW5ndGggLSAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tBc3NldCh0aGlzLl9hY3RpdmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9wYWdhdGU/Lih0aGlzLl9hc3NldHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja0N1c3RvbShhY3Rpb246IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgYWN0aW9uLmFjdGlvbih0aGlzLl9hY3RpdmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydFN5bmNWaWRlbygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgKHRoaXMuX2Fzc2V0c0VsZW1lbnQuZ2V0KHRoaXMuX2FjdGl2ZSkubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MVmlkZW9FbGVtZW50KS5wYXVzZSgpO1xuICAgICAgICAodGhpcy5fYXNzZXRzRWxlbWVudC5nZXQodGhpcy5fYWN0aXZlKS5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxWaWRlb0VsZW1lbnQpLmN1cnJlbnRUaW1lID0gMDtcblxuICAgICAgICB0aGlzLl9hY3RpdmVWaWRlb0VsZW1lbnQubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSA9IDA7XG4gICAgICAgIGF3YWl0IHRoaXMuX2FjdGl2ZVZpZGVvRWxlbWVudC5uYXRpdmVFbGVtZW50LnBsYXkoKTtcbiAgICAgICAgYXdhaXQgKHRoaXMuX2Fzc2V0c0VsZW1lbnQuZ2V0KHRoaXMuX2FjdGl2ZSkubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MVmlkZW9FbGVtZW50KS5wbGF5KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcm91c2VsLWNvbnRhaW5lclwiIG5pY2VEcm9wem9uZSAoZmlsZXNEcm9wcGVkKT1cIm9uRmlsZXNEcm9wKCRldmVudClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aXZlLWltYWdlXCIgW2NsYXNzLmVtcHR5LXN0YXRlXT1cIiFfYWN0aXZlQXNzZXRcIiBtYXRSaXBwbGUgW21hdFJpcHBsZURpc2FibGVkXT1cIiEhX2FjdGl2ZUFzc2V0XCIgKGNsaWNrKT1cIiFfYWN0aXZlQXNzZXQgJiYgZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cIl9hY3RpdmVBc3NldD8udHlwZSA9PT0gJ2ltYWdlJ1wiIGRyYWdnYWJsZT1cImZhbHNlXCIgW3NyY109XCJfYWN0aXZlQXNzZXQudXJsID8/IF9hY3RpdmVBc3NldC5iYXNlNjRcIj5cbiAgICAgICAgPHZpZGVvICNhY3RpdmVWaWRlbyAqbmdJZj1cIl9hY3RpdmVBc3NldD8udHlwZSA9PT0gJ3ZpZGVvJ1wiIGRyYWdnYWJsZT1cImZhbHNlXCIgbG9vcCBbc3JjXT1cIl9hY3RpdmVBc3NldC51cmwgPz8gX2FjdGl2ZUFzc2V0LmJhc2U2NFwiPjwvdmlkZW8+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlLWNvbnRlbnRcIiAqbmdJZj1cIiFfYWN0aXZlQXNzZXRcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMudXBsb2FkLm1hdEljb25cIj57eyBvcHRpb25zLnVwbG9hZC5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMudXBsb2FkLnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLnVwbG9hZC5zdmdJY29uXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICAgICAgICAgICAgICB7eyBcIm5pY2VfdWlfa2l0LmFzc2V0c19jYXJvdXNlbC51cGxvYWRfaGVyZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGl2ZS1idXR0b25zXCIgKm5nSWY9XCJlZGl0XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMuYWRkUGhvdG8ubWF0SWNvblwiPnt7IG9wdGlvbnMuYWN0aW9uQnV0dG9ucy5hZGRQaG90by5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMuYWRkUGhvdG8uc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5hZGRQaG90by5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFzc2V0QWN0aW9uc1wiIFtkaXNhYmxlZF09XCIhX2FjdGl2ZUFzc2V0XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLm1vcmVPcHRpb25zLm1hdEljb25cIj57eyBvcHRpb25zLmFjdGlvbkJ1dHRvbnMubW9yZU9wdGlvbnMubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLm1vcmVPcHRpb25zLnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMubW9yZU9wdGlvbnMuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1tZW51IGNsYXNzPVwibmljZS1hc3NldC1vcHRpb25zLW1lbnVcIiBbeFBvc2l0aW9uXT1cIidiZWZvcmUnXCIgI2Fzc2V0QWN0aW9ucz1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjdXN0b21BY3Rpb25zXCIgKGNsaWNrKT1cImNsaWNrQ3VzdG9tKGFjdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYWN0aW9uLmljb24ubWF0SWNvblwiPnt7IGFjdGlvbi5pY29uLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiYWN0aW9uLmljb24uc3ZnSWNvblwiICpuZ0lmPVwiYWN0aW9uLmljb24uc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFjdGlvbi5uYW1lIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2xpY2tSZW1vdmUoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMucmVtb3ZlLm1hdEljb25cIj57eyBvcHRpb25zLmFjdGlvbkJ1dHRvbnMucmVtb3ZlLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMucmVtb3ZlLnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMucmVtb3ZlLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBcIm5pY2VfdWlfa2l0LmFzc2V0c19jYXJvdXNlbC5kZWxldGVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtb3ZlcmxheVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy51cGxvYWQubWF0SWNvblwiPnt7IG9wdGlvbnMudXBsb2FkLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy51cGxvYWQuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMudXBsb2FkLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbZGlzYWJsZWRdPVwiIV9hY3RpdmVcIiAoY2xpY2spPVwiY2xpY2tMZWZ0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMubGVmdEFycm93Lm1hdEljb25cIj57eyBvcHRpb25zLmxlZnRBcnJvdy5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFycm93c1wiICpuZ0lmPVwib3B0aW9ucy5sZWZ0QXJyb3cuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMubGVmdEFycm93LnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXQtbGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtYXNzZXQtY29udGFpbmVyXCIgKm5nSWY9XCJlZGl0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1hc3NldFwiIG1hdFJpcHBsZSAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hZGRQaG90by5tYXRJY29uXCI+e3sgb3B0aW9ucy5hZGRQaG90by5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hZGRQaG90by5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy5hZGRQaG90by5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXQtbGlzdFwiIFtuZ1N0eWxlXT1cImxpc3RTdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgI2Fzc2V0cyBjbGFzcz1cImFzc2V0XCIgKm5nRm9yPVwibGV0IGFzc2V0IG9mIF9hc3NldHM7IGxldCBpID0gaW5kZXhcIiAoY2xpY2spPVwiY2xpY2tBc3NldChpKVwiIFtuZ0NsYXNzXT1cImNvbG9yXCIgW2NsYXNzLmFjdGl2ZV09XCJfYWN0aXZlID09PSBpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJhc3NldC50eXBlID09PSAnaW1hZ2UnXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiBbc3JjXT1cImFzc2V0LnVybCA/PyBhc3NldC5iYXNlNjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvICpuZ0lmPVwiYXNzZXQudHlwZSA9PT0gJ3ZpZGVvJ1wiIGRyYWdnYWJsZT1cImZhbHNlXCIgbG9vcCBbc3JjXT1cImFzc2V0LnVybCA/PyBhc3NldC5iYXNlNjRcIj48L3ZpZGVvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFtkaXNhYmxlZF09XCJfbGFzdEFzc2V0XCIgKGNsaWNrKT1cImNsaWNrUmlnaHQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5yaWdodEFycm93Lm1hdEljb25cIj57eyBvcHRpb25zLnJpZ2h0QXJyb3cubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhcnJvd3NcIiAqbmdJZj1cIm9wdGlvbnMucmlnaHRBcnJvdy5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy5yaWdodEFycm93LnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIGhpZGRlbiBbYWNjZXB0XT1cImFjY2VwdFwiIChjaGFuZ2UpPVwib25GaWxlc0NoYW5nZSgkZXZlbnQpXCI+XG4iXX0=
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3NldHMtY2Fyb3VzZWwvYXNzZXRzLWNhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3NldHMtY2Fyb3VzZWwvYXNzZXRzLWNhcm91c2VsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLFdBQVcsRUFDWCxTQUFTLEVBQUUsWUFBWSxFQUN2QixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7Ozs7QUE0Q2pILE1BQU0sT0FBTywyQkFBMkI7SUE4RnBDLFlBQThFLE9BQWtDO1FBQWxDLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBN0Z6RywrQkFBMEIsR0FBRyxDQUFDLENBQUM7UUFDL0IsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBRTNCLGVBQVUsR0FBRyxJQUFJLENBQUM7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O1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7WUFDMUQsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLHFFQXFDYSx3Q0FBd0MsMkJBQVUsV0FBVyx5VENqRy9FLHd6TEFnR0EsNDlERDNDZ0IsY0FBYzsyRkFTakIsMkJBQTJCO2tCQWR2QyxTQUFTOytCQUNJLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixjQUFjLGFBQ2Y7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUM7NEJBQzFELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzswQkFnR1ksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7NENBbEZyRCxZQUFZO3NCQURsQixTQUFTO3VCQUFDLFdBQVc7Z0JBSWYsS0FBSztzQkFEWCxLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxxQkFBcUI7c0JBRDNCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyx3Q0FBd0MsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSXRFLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsWUFBWTtzQkFEbEIsTUFBTTtnQkFVSSxrQkFBa0I7c0JBRDVCLFNBQVM7dUJBQUMsYUFBYTtnQkFXYixhQUFhO3NCQUR2QixZQUFZO3VCQUFDLFFBQVE7Z0JBV1gsTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LCBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQ2FuQ29sb3IsIFRoZW1lUGFsZXR0ZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBuaWNlQW5pbWF0aW9ucyB9IGZyb20gXCIuLi8uLi9hbmltYXRpb25zXCI7XG5pbXBvcnQgeyBGaWxlVXRpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE5JQ0VfQVNTRVRTX0NBUk9VU0VMX09QVElPTlMgfSBmcm9tIFwiLi9hc3NldHMtY2Fyb3VzZWwuY29uc3RhbnRcIjtcbmltcG9ydCB7IE5pY2VBc3NldHNDYXJvdXNlbEFjdGl2ZUNvbnRlbnREaXJlY3RpdmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL2Fzc2V0cy1jYXJvdXNlbC1hY3RpdmUtY29udGVudC5kaXJlY3RpdmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOaWNlQXNzZXRzIHtcbiAgICB0eXBlOiBcImltYWdlXCIgfCBcInZpZGVvXCI7XG4gICAgaWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIGJhc2U2ND86IHN0cmluZztcbiAgICBmaWxlPzogRmlsZTtcbn1cblxuZXhwb3J0IHR5cGUgTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbiA9IHsgbWF0SWNvbjogc3RyaW5nOyBzdmdJY29uPzogc3RyaW5nOyB9IHwgeyBtYXRJY29uPzogc3RyaW5nOyBzdmdJY29uOiBzdHJpbmc7IH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9ucyB7XG4gICAgaWNvbjogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uOiAoYWN0aXZlOiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmljZUFzc2V0c0Nhcm91c2VsT3B0aW9ucyB7XG4gICAgYWN0aW9uQnV0dG9ucz86IHtcbiAgICAgICAgbW9yZU9wdGlvbnM/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgICAgICBhZGRQaG90bz86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG4gICAgICAgIHJlbW92ZT86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG4gICAgfTtcbiAgICBhZGRQaG90bz86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG4gICAgbGVmdEFycm93PzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICByaWdodEFycm93PzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICB1cGxvYWQ/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFzc2V0cy1jYXJvdXNlbFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcImFzc2V0cy1jYXJvdXNlbC50ZW1wbGF0ZS5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCJhc3NldHMtY2Fyb3VzZWwudGhlbWUuc2Nzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGFuaW1hdGlvbnM6IG5pY2VBbmltYXRpb25zLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5pY2VBc3NldHNDYXJvdXNlbENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQXNzZXRzQ2Fyb3VzZWxDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQ2FuQ29sb3Ige1xuICAgIHB1YmxpYyBfYWN0aXZlVHJhbnNsYXRpb25Qb3NpdGlvbiA9IDA7XG4gICAgcHVibGljIF9hY3RpdmUgPSAwO1xuICAgIHB1YmxpYyBfYXNzZXRzOiBOaWNlQXNzZXRzW10gPSBbXTtcbiAgICBwdWJsaWMgX2FjdGl2ZUFzc2V0OiBOaWNlQXNzZXRzO1xuICAgIHB1YmxpYyBfbGFzdEFzc2V0ID0gdHJ1ZTtcbiAgICBwdWJsaWMgX3Nob3VsZFRyYW5zZm9ybSA9IGZhbHNlO1xuICAgIHB1YmxpYyBfYWN0aXZlVmlkZW9FbGVtZW50OiBFbGVtZW50UmVmPEhUTUxWaWRlb0VsZW1lbnQ+O1xuICAgIHB1YmxpYyBfYXNzZXRzRWxlbWVudDogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcbiAgICBwdWJsaWMgZGVmYXVsdENvbG9yOiBUaGVtZVBhbGV0dGUgPSBcInByaW1hcnlcIjtcblxuICAgIEBWaWV3Q2hpbGQoXCJmaWxlSW5wdXRcIilcbiAgICBwdWJsaWMgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sb3I6IFRoZW1lUGFsZXR0ZSA9IHRoaXMuZGVmYXVsdENvbG9yO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZWRpdCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWNjZXB0OiBzdHJpbmdbXSA9IFtcImltYWdlLypcIl07XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21BY3Rpb25zOiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25zW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlVXBsb2FkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aXNpYmxlUHJldmlld0Fzc2V0ID0gNDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dBZGRBc3NldENvbnRhaW5lciA9IHRydWU7XG5cbiAgICBAQ29udGVudENoaWxkKE5pY2VBc3NldHNDYXJvdXNlbEFjdGl2ZUNvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBwdWJsaWMgYWN0aXZlQ29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZW1vdmVkQXNzZXQgPSBuZXcgRXZlbnRFbWl0dGVyPE5pY2VBc3NldHM+KCk7XG5cbiAgICBwdWJsaWMgbGlzdFN0eWxlOiB7IHRyYW5zZm9ybTogc3RyaW5nIH0gPSB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDBweClcIiB9O1xuXG4gICAgcHVibGljIHNob3dPdmVybGF5OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGU6IChhc3NldHM6IE5pY2VBc3NldHNbXSkgPT4gdm9pZDtcblxuICAgIEBWaWV3Q2hpbGQoXCJhY3RpdmVWaWRlb1wiKVxuICAgIHB1YmxpYyBzZXQgYWN0aXZlVmlkZW9FbGVtZW50KGFjdGl2ZVZpZGVvRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50Pikge1xuICAgICAgICB0aGlzLl9hY3RpdmVWaWRlb0VsZW1lbnQgPSBhY3RpdmVWaWRlb0VsZW1lbnQ7XG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlVmlkZW9FbGVtZW50IHx8ICF0aGlzLl9hc3NldHNFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXJ0U3luY1ZpZGVvKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZHJlbihcImFzc2V0c1wiKVxuICAgIHB1YmxpYyBzZXQgYXNzZXRzRWxlbWVudChhc3NldHNFbGVtZW50OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KSB7XG4gICAgICAgIHRoaXMuX2Fzc2V0c0VsZW1lbnQgPSBhc3NldHNFbGVtZW50O1xuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZVZpZGVvRWxlbWVudCB8fCAhdGhpcy5fYXNzZXRzRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGFydFN5bmNWaWRlbygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhc3NldHMoYXNzZXRzOiBOaWNlQXNzZXRzW10pIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKGFzc2V0cyA/PyBbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXQgYWN0aXZlVHJhbnNsYXRpb25Qb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgdGhpcy5saXN0U3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoY2FsYygodmFyKC0tbmljZS1hc3NldHMtY2Fyb3VzZWwtYXNzZXQtd2lkdGgpICsgdmFyKC0tbmljZS1hc3NldHMtY2Fyb3VzZWwtYXNzZXQtZ2FwKSkgKiAke3Bvc2l0aW9ufSkpYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBhY3RpdmVBc3NldChwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHBvc2l0aW9uO1xuICAgICAgICB0aGlzLl9hY3RpdmVBc3NldCA9IHRoaXMuX2Fzc2V0c1t0aGlzLl9hY3RpdmVdO1xuICAgICAgICB0aGlzLl9sYXN0QXNzZXQgPSB0aGlzLl9hY3RpdmUgPT09IHRoaXMuX2Fzc2V0cy5sZW5ndGggLSAxIHx8ICF0aGlzLl9hc3NldHMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9zaG91bGRUcmFuc2Zvcm1cbiAgICAgICAgICAgID0gKCh0aGlzLmVkaXQgJiYgdGhpcy5zaG93QWRkQXNzZXRDb250YWluZXIpICYmIHRoaXMuX2FjdGl2ZSA+PSAodGhpcy52aXNpYmxlUHJldmlld0Fzc2V0IC0gMSkpXG4gICAgICAgICAgICB8fCB0aGlzLl9hY3RpdmUgPj0gdGhpcy52aXNpYmxlUHJldmlld0Fzc2V0O1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChOSUNFX0FTU0VUU19DQVJPVVNFTF9PUFRJT05TKSBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogTmljZUFzc2V0c0Nhcm91c2VsT3B0aW9ucykge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGFjdGlvbkJ1dHRvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkUGhvdG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwicGhvdG9fY2FtZXJhXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9yZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwibW9yZV92ZXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJY29uOiBcImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFkZFBob3RvOiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwicGhvdG9fY2FtZXJhXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxlZnRBcnJvdzoge1xuICAgICAgICAgICAgICAgICAgICBtYXRJY29uOiBcImNoZXZyb25fbGVmdFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByaWdodEFycm93OiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwiY2hldnJvbl9yaWdodFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1cGxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgbWF0SWNvbjogXCJmaWxlX3VwbG9hZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKGFzc2V0czogTmljZUFzc2V0c1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Fzc2V0cyA9IGFzc2V0cyA/PyBbXTtcblxuICAgICAgICBpZiAodGhpcy5fYXNzZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlQXNzZXQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fbGFzdEFzc2V0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9hc3NldHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlQXNzZXQgPSB0aGlzLl9hc3NldHNbdGhpcy5fYWN0aXZlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoYXNzZXRzOiBOaWNlQXNzZXRzW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IChhc3NldHM6IE5pY2VBc3NldHNbXSkgPT4gdm9pZCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBjbGlja0xlZnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQXNzZXQgPSB0aGlzLl9hY3RpdmUgLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSB0aGlzLl9hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uICsgMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja1JpZ2h0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbGFzdEFzc2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUFzc2V0ID0gdGhpcy5fYWN0aXZlICsgMTtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFRyYW5zZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uID0gdGhpcy5fYWN0aXZlVHJhbnNsYXRpb25Qb3NpdGlvbiAtIDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tBc3NldChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCB2aXNpYmxlQXNzZXRzID0gKHRoaXMuZWRpdCAmJiB0aGlzLnNob3dBZGRBc3NldENvbnRhaW5lcikgPyAodGhpcy52aXNpYmxlUHJldmlld0Fzc2V0IC0gMikgOiAodGhpcy52aXNpYmxlUHJldmlld0Fzc2V0IC0gMSk7XG4gICAgICAgIGlmIChpbmRleCA8IHZpc2libGVBc3NldHMpIHtcbiAgICAgICAgICAgIHZpc2libGVBc3NldHMgPSBpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSAoaW5kZXggLSB2aXNpYmxlQXNzZXRzKSAqIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVBc3NldCA9IGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvbkZpbGVzQ2hhbmdlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWxlcyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LmZpbGVzO1xuICAgICAgICBhd2FpdCB0aGlzLm9uRmlsZXNEcm9wKGZpbGVzKTtcblxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25GaWxlc0Ryb3AoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld0Fzc2V0c0FkZGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFjY2VwdC5zb21lKChhY2NlcHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0LmVuZHNXaXRoKFwiKlwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgoYWNjZXB0LnJlcGxhY2UoXCIqXCIsIFwiXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjZXB0ID09PSBmaWxlLnR5cGU7XG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBuZXdBc3NldHNBZGRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9hc3NldHMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUuc3BsaXQoXCIvXCIpLnNoaWZ0KCkgYXMgXCJpbWFnZVwiIHwgXCJ2aWRlb1wiLFxuICAgICAgICAgICAgICAgIGJhc2U2NDogYXdhaXQgRmlsZVV0aWxzLmdldERhdGFVcmwoZmlsZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0Fzc2V0c0FkZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrQXNzZXQodGhpcy5fYXNzZXRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGU/Lih0aGlzLl9hc3NldHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrUmVtb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZWRBc3NldC5lbWl0KHRoaXMuX2Fzc2V0c1t0aGlzLl9hY3RpdmVdKTtcbiAgICAgICAgdGhpcy5fYXNzZXRzLnNwbGljZSh0aGlzLl9hY3RpdmUsIDEpO1xuXG4gICAgICAgIGlmICh0aGlzLl9sYXN0QXNzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tBc3NldCh0aGlzLl9hc3NldHMubGVuZ3RoIC0gMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrQXNzZXQodGhpcy5fYWN0aXZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlPy4odGhpcy5fYXNzZXRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tDdXN0b20oYWN0aW9uOiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25zKTogdm9pZCB7XG4gICAgICAgIGFjdGlvbi5hY3Rpb24odGhpcy5fYWN0aXZlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc3RhcnRTeW5jVmlkZW8oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICh0aGlzLl9hc3NldHNFbGVtZW50LmdldCh0aGlzLl9hY3RpdmUpLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTFZpZGVvRWxlbWVudCkucGF1c2UoKTtcbiAgICAgICAgKHRoaXMuX2Fzc2V0c0VsZW1lbnQuZ2V0KHRoaXMuX2FjdGl2ZSkubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MVmlkZW9FbGVtZW50KS5jdXJyZW50VGltZSA9IDA7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlVmlkZW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUgPSAwO1xuICAgICAgICBhd2FpdCB0aGlzLl9hY3RpdmVWaWRlb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5KCk7XG4gICAgICAgIGF3YWl0ICh0aGlzLl9hc3NldHNFbGVtZW50LmdldCh0aGlzLl9hY3RpdmUpLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTFZpZGVvRWxlbWVudCkucGxheSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJvdXNlbC1jb250YWluZXJcIiBuaWNlRHJvcHpvbmUgKGZpbGVzRHJvcHBlZCk9XCJvbkZpbGVzRHJvcCgkZXZlbnQpXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFjdGl2ZS1pbWFnZVwiXG4gICAgICAgIG1hdFJpcHBsZVxuICAgICAgICBbY2xhc3MuZW1wdHktc3RhdGVdPVwiIV9hY3RpdmVBc3NldFwiXG4gICAgICAgIChjbGljayk9XCJlZGl0ICYmIGZpbGVJbnB1dC5jbGljaygpO1xuICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJfYWN0aXZlQXNzZXQgJiYgYWN0aXZlQ29udGVudFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhY3RpdmVDb250ZW50XCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogX2FjdGl2ZUFzc2V0fVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgKm5nSWY9XCJfYWN0aXZlQXNzZXQ/LnR5cGUgPT09ICdpbWFnZSdcIlxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJzaG93T3ZlcmxheT10cnVlXCJcbiAgICAgICAgICAgIFtzcmNdPVwiX2FjdGl2ZUFzc2V0LnVybCA/PyBfYWN0aXZlQXNzZXQuYmFzZTY0XCJcbiAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgYWx0PVwiYWN0aXZlLWltYWdlXCJcbiAgICAgICAgPlxuICAgICAgICA8dmlkZW8gI2FjdGl2ZVZpZGVvICpuZ0lmPVwiX2FjdGl2ZUFzc2V0Py50eXBlID09PSAndmlkZW8nXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiBsb29wIFtzcmNdPVwiX2FjdGl2ZUFzc2V0LnVybCA/PyBfYWN0aXZlQXNzZXQuYmFzZTY0XCI+PC92aWRlbz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGUtY29udGVudFwiICpuZ0lmPVwiIV9hY3RpdmVBc3NldFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy51cGxvYWQubWF0SWNvblwiPnt7IG9wdGlvbnMudXBsb2FkLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy51cGxvYWQuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMudXBsb2FkLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICAgICAgICAgICAgICB7eyBcIm5pY2VfdWlfa2l0LmFzc2V0c19jYXJvdXNlbC51cGxvYWRfaGVyZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIl9hY3RpdmVBc3NldCAmJiBzaG93T3ZlcmxheSAmJiBlZGl0XCIgY2xhc3M9XCJhY3RpdmUtaW1hZ2Utb3ZlcmxheVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIChtb3VzZW91dCk9XCJzaG93T3ZlcmxheT1mYWxzZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB3LWZ1bGwgaC1mdWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLnVwbG9hZC5tYXRJY29uXCI+e3sgb3B0aW9ucy51cGxvYWQubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy51cGxvYWQuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMudXBsb2FkLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJlZGl0XCIgY2xhc3M9XCJhY3RpdmUtYnV0dG9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMuYWRkUGhvdG8ubWF0SWNvblwiPnt7IG9wdGlvbnMuYWN0aW9uQnV0dG9ucy5hZGRQaG90by5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMuYWRkUGhvdG8uc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5hZGRQaG90by5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFzc2V0QWN0aW9uc1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBbZGlzYWJsZWRdPVwiIV9hY3RpdmVBc3NldFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5tb3JlT3B0aW9ucy5tYXRJY29uXCI+e3sgb3B0aW9ucy5hY3Rpb25CdXR0b25zLm1vcmVPcHRpb25zLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5tb3JlT3B0aW9ucy5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLm1vcmVPcHRpb25zLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bWF0LW1lbnUgY2xhc3M9XCJuaWNlLWFzc2V0LW9wdGlvbnMtbWVudVwiIFt4UG9zaXRpb25dPVwiJ2JlZm9yZSdcIiAjYXNzZXRBY3Rpb25zPVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGN1c3RvbUFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tDdXN0b20oYWN0aW9uKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJhY3Rpb24uaWNvbi5tYXRJY29uXCI+e3sgYWN0aW9uLmljb24ubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJhY3Rpb24uaWNvbi5zdmdJY29uXCIgKm5nSWY9XCJhY3Rpb24uaWNvbi5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aW9uLm5hbWUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjbGlja1JlbW92ZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5yZW1vdmUubWF0SWNvblwiPnt7IG9wdGlvbnMuYWN0aW9uQnV0dG9ucy5yZW1vdmUubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5yZW1vdmUuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5yZW1vdmUuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IFwibmljZV91aV9raXQuYXNzZXRzX2Nhcm91c2VsLmRlbGV0ZVwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWxcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dBZGRBc3NldENvbnRhaW5lciB8fCBfYWN0aXZlQXNzZXRcIiBjbGFzcz1cImFjdGlvbi1idXR0b24gbGVmdC1hcnJvd1wiIG1hdC1pY29uLWJ1dHRvbiBbZGlzYWJsZWRdPVwiIV9hY3RpdmVcIiAoY2xpY2spPVwiY2xpY2tMZWZ0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMubGVmdEFycm93Lm1hdEljb25cIj57eyBvcHRpb25zLmxlZnRBcnJvdy5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFycm93c1wiICpuZ0lmPVwib3B0aW9ucy5sZWZ0QXJyb3cuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMubGVmdEFycm93LnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFzc2V0LWxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FkZEFzc2V0Q29udGFpbmVyICYmIGVkaXRcIiBjbGFzcz1cImFkZC1hc3NldC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLWFzc2V0XCIgbWF0UmlwcGxlIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFkZFBob3RvLm1hdEljb25cIj57eyBvcHRpb25zLmFkZFBob3RvLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFkZFBob3RvLnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLmFkZFBob3RvLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXQtbGlzdFwiIFtuZ1N0eWxlXT1cImxpc3RTdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgI2Fzc2V0cyBjbGFzcz1cImFzc2V0XCIgKm5nRm9yPVwibGV0IGFzc2V0IG9mIF9hc3NldHM7IGxldCBpID0gaW5kZXhcIiAoY2xpY2spPVwiY2xpY2tBc3NldChpKVwiIFtuZ0NsYXNzXT1cImNvbG9yXCIgW2NsYXNzLmFjdGl2ZV09XCJfYWN0aXZlID09PSBpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJhc3NldC50eXBlID09PSAnaW1hZ2UnXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiBbc3JjXT1cImFzc2V0LnVybCA/PyBhc3NldC5iYXNlNjRcIiBhbHQ9XCJhZGQtaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvICpuZ0lmPVwiYXNzZXQudHlwZSA9PT0gJ3ZpZGVvJ1wiIGRyYWdnYWJsZT1cImZhbHNlXCIgbG9vcCBbc3JjXT1cImFzc2V0LnVybCA/PyBhc3NldC5iYXNlNjRcIj48L3ZpZGVvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0FkZEFzc2V0Q29udGFpbmVyIHx8IF9hY3RpdmVBc3NldFwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvbiByaWdodC1hcnJvd1wiIG1hdC1pY29uLWJ1dHRvbiBbZGlzYWJsZWRdPVwiX2xhc3RBc3NldFwiIChjbGljayk9XCJjbGlja1JpZ2h0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMucmlnaHRBcnJvdy5tYXRJY29uXCI+e3sgb3B0aW9ucy5yaWdodEFycm93Lm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXJyb3dzXCIgKm5nSWY9XCJvcHRpb25zLnJpZ2h0QXJyb3cuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMucmlnaHRBcnJvdy5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBoaWRkZW4gW2FjY2VwdF09XCJhY2NlcHRcIiAoY2hhbmdlKT1cIm9uRmlsZXNDaGFuZ2UoJGV2ZW50KVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVVwbG9hZFwiPlxuIl19
|