ngx-bootstrap 10.3.0 → 11.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -5
- package/accordion/accordion-group.component.d.ts +1 -1
- package/accordion/accordion.component.d.ts +1 -1
- package/accordion/esm2022/accordion-group.component.mjs +84 -0
- package/accordion/{esm2020 → esm2022}/accordion.component.mjs +4 -4
- package/accordion/{esm2020 → esm2022}/accordion.config.mjs +4 -4
- package/accordion/{esm2020 → esm2022}/accordion.module.mjs +5 -5
- package/accordion/{fesm2020 → fesm2022}/ngx-bootstrap-accordion.mjs +29 -29
- package/accordion/fesm2022/ngx-bootstrap-accordion.mjs.map +1 -0
- package/accordion/package.json +8 -14
- package/alert/alert.component.d.ts +1 -1
- package/alert/esm2022/alert.component.mjs +77 -0
- package/alert/{esm2020 → esm2022}/alert.config.mjs +4 -4
- package/alert/{esm2020 → esm2022}/alert.module.mjs +5 -5
- package/alert/{fesm2015 → fesm2022}/ngx-bootstrap-alert.mjs +10 -10
- package/alert/fesm2022/ngx-bootstrap-alert.mjs.map +1 -0
- package/alert/package.json +8 -14
- package/buttons/button-checkbox.directive.d.ts +2 -2
- package/buttons/button-radio.directive.d.ts +1 -1
- package/buttons/{esm2020 → esm2022}/button-checkbox.directive.mjs +4 -4
- package/buttons/{esm2020 → esm2022}/button-radio-group.directive.mjs +4 -4
- package/buttons/esm2022/button-radio.directive.mjs +188 -0
- package/buttons/{esm2020 → esm2022}/buttons.module.mjs +5 -5
- package/buttons/{fesm2020 → fesm2022}/ngx-bootstrap-buttons.mjs +26 -26
- package/buttons/fesm2022/ngx-bootstrap-buttons.mjs.map +1 -0
- package/buttons/package.json +7 -13
- package/carousel/carousel.component.d.ts +1 -1
- package/carousel/esm2022/carousel.component.mjs +713 -0
- package/carousel/{esm2020 → esm2022}/carousel.config.mjs +4 -4
- package/carousel/{esm2020 → esm2022}/carousel.module.mjs +5 -5
- package/carousel/{esm2020 → esm2022}/slide.component.mjs +6 -6
- package/carousel/{fesm2020 → fesm2022}/ngx-bootstrap-carousel.mjs +65 -56
- package/carousel/fesm2022/ngx-bootstrap-carousel.mjs.map +1 -0
- package/carousel/package.json +8 -14
- package/carousel/slide.component.d.ts +1 -1
- package/chronos/duration/create.d.ts +1 -1
- package/chronos/{fesm2020 → fesm2022}/ngx-bootstrap-chronos.mjs +4 -0
- package/chronos/fesm2022/ngx-bootstrap-chronos.mjs.map +1 -0
- package/chronos/locale/locale.class.d.ts +3 -3
- package/chronos/moment/calendar.d.ts +1 -1
- package/chronos/package.json +5 -11
- package/chronos/parse/regex.d.ts +1 -1
- package/chronos/testing/chain.d.ts +3 -3
- package/chronos/types.d.ts +4 -4
- package/chronos/units/aliases.d.ts +1 -1
- package/collapse/collapse.directive.d.ts +1 -1
- package/collapse/esm2022/collapse.directive.mjs +168 -0
- package/collapse/{esm2020 → esm2022}/collapse.module.mjs +5 -5
- package/collapse/{fesm2020 → fesm2022}/ngx-bootstrap-collapse.mjs +26 -26
- package/collapse/fesm2022/ngx-bootstrap-collapse.mjs.map +1 -0
- package/collapse/package.json +8 -14
- package/component-loader/{esm2020 → esm2022}/component-loader.factory.mjs +4 -4
- package/component-loader/{fesm2020 → fesm2022}/ngx-bootstrap-component-loader.mjs +5 -3
- package/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs.map +1 -0
- package/component-loader/listen-options.model.d.ts +1 -1
- package/component-loader/package.json +7 -13
- package/datepicker/bs-datepicker-inline.component.d.ts +1 -1
- package/datepicker/bs-datepicker.component.d.ts +1 -1
- package/datepicker/bs-daterangepicker-inline.component.d.ts +1 -1
- package/datepicker/bs-daterangepicker.component.d.ts +1 -1
- package/datepicker/{esm2020 → esm2022}/bs-datepicker-inline.component.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-datepicker-inline.config.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-datepicker-input.directive.mjs +4 -4
- package/datepicker/esm2022/bs-datepicker.component.mjs +303 -0
- package/datepicker/{esm2020 → esm2022}/bs-datepicker.config.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-datepicker.module.mjs +32 -32
- package/datepicker/esm2022/bs-daterangepicker-inline.component.mjs +163 -0
- package/datepicker/{esm2020 → esm2022}/bs-daterangepicker-inline.config.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-daterangepicker-input.directive.mjs +4 -4
- package/datepicker/esm2022/bs-daterangepicker.component.mjs +296 -0
- package/datepicker/{esm2020 → esm2022}/bs-daterangepicker.config.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-locale.service.mjs +4 -4
- package/datepicker/esm2022/reducer/bs-datepicker.actions.mjs +143 -0
- package/datepicker/{esm2020 → esm2022}/reducer/bs-datepicker.effects.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/reducer/bs-datepicker.store.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-calendar-layout.component.mjs +6 -6
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-current-date-view.component.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-custom-dates-view.component.mjs +6 -6
- package/datepicker/esm2022/themes/bs/bs-datepicker-container.component.mjs +192 -0
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-datepicker-day-decorator.directive.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-datepicker-inline-container.component.mjs +9 -9
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-datepicker-navigation-view.component.mjs +6 -6
- package/datepicker/esm2022/themes/bs/bs-daterangepicker-container.component.mjs +261 -0
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-daterangepicker-inline-container.component.mjs +9 -9
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-days-calendar-view.component.mjs +6 -6
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-months-calendar-view.component.mjs +6 -6
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-timepicker-view.component.mjs +6 -6
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-years-calendar-view.component.mjs +6 -6
- package/datepicker/{fesm2020 → fesm2022}/ngx-bootstrap-datepicker.mjs +226 -226
- package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs.map +1 -0
- package/datepicker/models/index.d.ts +1 -1
- package/datepicker/package.json +13 -19
- package/datepicker/themes/bs/bs-current-date-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +1 -1
- package/datepicker/utils/matrix-utils.d.ts +1 -1
- package/dropdown/bs-dropdown.directive.d.ts +1 -1
- package/dropdown/esm2022/bs-dropdown-container.component.mjs +79 -0
- package/dropdown/{esm2020 → esm2022}/bs-dropdown-menu.directive.mjs +4 -4
- package/dropdown/{esm2020 → esm2022}/bs-dropdown-toggle.directive.mjs +4 -4
- package/dropdown/{esm2020 → esm2022}/bs-dropdown.config.mjs +4 -4
- package/dropdown/esm2022/bs-dropdown.directive.mjs +340 -0
- package/dropdown/{esm2020 → esm2022}/bs-dropdown.module.mjs +10 -10
- package/dropdown/{esm2020 → esm2022}/bs-dropdown.state.mjs +4 -4
- package/dropdown/{fesm2020 → fesm2022}/ngx-bootstrap-dropdown.mjs +62 -62
- package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs.map +1 -0
- package/dropdown/package.json +10 -16
- package/fesm2022/ngx-bootstrap.mjs.map +1 -0
- package/focus-trap/boolean-property.d.ts +1 -1
- package/focus-trap/{esm2020 → esm2022}/focus-trap-manager.mjs +4 -4
- package/focus-trap/esm2022/focus-trap.mjs +399 -0
- package/focus-trap/{esm2020 → esm2022}/focus-trap.module.mjs +5 -5
- package/focus-trap/{esm2020 → esm2022}/interactivity-checker.mjs +4 -4
- package/focus-trap/{esm2020 → esm2022}/platform.mjs +4 -4
- package/focus-trap/{fesm2020 → fesm2022}/ngx-bootstrap-focus-trap.mjs +43 -39
- package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs.map +1 -0
- package/focus-trap/focus-trap.d.ts +1 -1
- package/focus-trap/package.json +8 -14
- package/locale/fesm2022/ngx-bootstrap-locale.mjs.map +1 -0
- package/locale/package.json +6 -12
- package/mini-ngrx/fesm2022/ngx-bootstrap-mini-ngrx.mjs.map +1 -0
- package/mini-ngrx/package.json +6 -12
- package/mini-ngrx/public_api.d.ts +1 -1
- package/modal/{esm2020 → esm2022}/bs-modal-ref.service.mjs +4 -4
- package/modal/{esm2020 → esm2022}/bs-modal.service.mjs +4 -4
- package/modal/esm2022/modal-backdrop.component.mjs +50 -0
- package/modal/{esm2020 → esm2022}/modal-container.component.mjs +6 -6
- package/modal/{esm2020 → esm2022}/modal-options.class.mjs +4 -4
- package/modal/esm2022/modal.directive.mjs +364 -0
- package/modal/{esm2020 → esm2022}/modal.module.mjs +7 -7
- package/modal/{fesm2020 → fesm2022}/ngx-bootstrap-modal.mjs +44 -42
- package/modal/fesm2022/ngx-bootstrap-modal.mjs.map +1 -0
- package/modal/modal.directive.d.ts +1 -1
- package/modal/models/index.d.ts +1 -1
- package/modal/package.json +8 -14
- package/package.json +81 -87
- package/pagination/{esm2020 → esm2022}/pager.component.mjs +4 -4
- package/pagination/{esm2020 → esm2022}/pagination.component.mjs +4 -4
- package/pagination/{esm2020 → esm2022}/pagination.config.mjs +4 -4
- package/pagination/{esm2020 → esm2022}/pagination.module.mjs +5 -5
- package/pagination/{fesm2020 → fesm2022}/ngx-bootstrap-pagination.mjs +13 -13
- package/pagination/fesm2022/ngx-bootstrap-pagination.mjs.map +1 -0
- package/pagination/package.json +8 -14
- package/pagination/pager.component.d.ts +1 -1
- package/pagination/pagination.component.d.ts +1 -1
- package/popover/esm2022/popover-container.component.mjs +46 -0
- package/popover/{esm2020 → esm2022}/popover.config.mjs +4 -4
- package/popover/esm2022/popover.directive.mjs +241 -0
- package/popover/{esm2020 → esm2022}/popover.module.mjs +5 -5
- package/popover/{fesm2020 → fesm2022}/ngx-bootstrap-popover.mjs +31 -31
- package/popover/fesm2022/ngx-bootstrap-popover.mjs.map +1 -0
- package/popover/package.json +9 -15
- package/popover/popover-container.component.d.ts +1 -1
- package/popover/popover.directive.d.ts +1 -1
- package/positioning/{esm2020 → esm2022}/positioning.service.mjs +4 -4
- package/positioning/{fesm2020 → fesm2022}/ngx-bootstrap-positioning.mjs +3 -3
- package/positioning/fesm2022/ngx-bootstrap-positioning.mjs.map +1 -0
- package/positioning/models/index.d.ts +1 -1
- package/positioning/package.json +10 -16
- package/progressbar/bar.component.d.ts +1 -1
- package/progressbar/{esm2020 → esm2022}/bar.component.mjs +4 -4
- package/progressbar/esm2022/progressbar.component.mjs +53 -0
- package/progressbar/{esm2020 → esm2022}/progressbar.config.mjs +4 -4
- package/progressbar/{esm2020 → esm2022}/progressbar.module.mjs +5 -5
- package/progressbar/{fesm2020 → fesm2022}/ngx-bootstrap-progressbar.mjs +24 -24
- package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs.map +1 -0
- package/progressbar/package.json +7 -13
- package/progressbar/progressbar-type.interface.d.ts +1 -1
- package/progressbar/progressbar.component.d.ts +1 -1
- package/rating/{esm2020 → esm2022}/rating.component.mjs +4 -4
- package/rating/{esm2020 → esm2022}/rating.config.mjs +4 -4
- package/rating/{esm2020 → esm2022}/rating.module.mjs +5 -5
- package/rating/{fesm2015 → fesm2022}/ngx-bootstrap-rating.mjs +10 -10
- package/rating/fesm2022/ngx-bootstrap-rating.mjs.map +1 -0
- package/rating/package.json +8 -14
- package/rating/rating.component.d.ts +1 -1
- package/schematics/collection.json +1 -1
- package/schematics/package.json +7 -7
- package/schematics/utils/current_dependency_versions.json +1 -1
- package/schematics/utils/index.d.ts +0 -2
- package/schematics/utils/index.js +1 -13
- package/schematics/utils/index.js.map +1 -1
- package/sortable/{esm2020 → esm2022}/draggable-item.service.mjs +4 -4
- package/sortable/esm2022/sortable.component.mjs +266 -0
- package/sortable/{esm2020 → esm2022}/sortable.module.mjs +5 -5
- package/sortable/{fesm2020 → fesm2022}/ngx-bootstrap-sortable.mjs +28 -28
- package/sortable/fesm2022/ngx-bootstrap-sortable.mjs.map +1 -0
- package/sortable/package.json +10 -16
- package/sortable/sortable.component.d.ts +1 -1
- package/tabs/esm2022/ng-transclude.directive.mjs +28 -0
- package/tabs/{esm2020 → esm2022}/tab-heading.directive.mjs +4 -4
- package/tabs/esm2022/tab.directive.mjs +115 -0
- package/tabs/{esm2020 → esm2022}/tabs.module.mjs +11 -11
- package/tabs/esm2022/tabset.component.mjs +216 -0
- package/tabs/{esm2020 → esm2022}/tabset.config.mjs +4 -4
- package/tabs/{fesm2015 → fesm2022}/ngx-bootstrap-tabs.mjs +63 -63
- package/tabs/fesm2022/ngx-bootstrap-tabs.mjs.map +1 -0
- package/tabs/ng-transclude.directive.d.ts +1 -1
- package/tabs/package.json +7 -13
- package/tabs/tab.directive.d.ts +1 -1
- package/tabs/tabset.component.d.ts +1 -1
- package/timepicker/esm2022/reducer/timepicker.actions.mjs +53 -0
- package/timepicker/{esm2020 → esm2022}/reducer/timepicker.store.mjs +4 -4
- package/timepicker/{esm2020 → esm2022}/timepicker.component.mjs +4 -4
- package/timepicker/{esm2020 → esm2022}/timepicker.config.mjs +4 -4
- package/timepicker/{esm2020 → esm2022}/timepicker.module.mjs +5 -5
- package/timepicker/{fesm2020 → fesm2022}/ngx-bootstrap-timepicker.mjs +22 -22
- package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs.map +1 -0
- package/timepicker/package.json +10 -16
- package/timepicker/reducer/timepicker.reducer.d.ts +1 -3
- package/timepicker/timepicker.component.d.ts +1 -1
- package/timepicker/timepicker.models.d.ts +1 -1
- package/tooltip/{esm2020 → esm2022}/tooltip-container.component.mjs +9 -9
- package/tooltip/{esm2020 → esm2022}/tooltip.config.mjs +4 -4
- package/tooltip/esm2022/tooltip.directive.mjs +342 -0
- package/tooltip/{esm2020 → esm2022}/tooltip.module.mjs +5 -5
- package/tooltip/{fesm2020 → fesm2022}/ngx-bootstrap-tooltip.mjs +61 -61
- package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs.map +1 -0
- package/tooltip/package.json +10 -16
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/typeahead/esm2022/typeahead-container.component.mjs +311 -0
- package/typeahead/{esm2020 → esm2022}/typeahead.config.mjs +4 -4
- package/typeahead/{esm2020 → esm2022}/typeahead.directive.mjs +4 -4
- package/typeahead/{esm2020 → esm2022}/typeahead.module.mjs +5 -5
- package/typeahead/{fesm2020 → fesm2022}/ngx-bootstrap-typeahead.mjs +20 -20
- package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs.map +1 -0
- package/typeahead/package.json +12 -18
- package/typeahead/typeahead.directive.d.ts +3 -3
- package/utils/fesm2022/ngx-bootstrap-utils.mjs.map +1 -0
- package/utils/package.json +6 -12
- package/utils/theme-provider.d.ts +1 -1
- package/utils/triggers.d.ts +1 -1
- package/accordion/esm2020/accordion-group.component.mjs +0 -84
- package/accordion/fesm2015/ngx-bootstrap-accordion.mjs +0 -182
- package/accordion/fesm2015/ngx-bootstrap-accordion.mjs.map +0 -1
- package/accordion/fesm2020/ngx-bootstrap-accordion.mjs.map +0 -1
- package/alert/esm2020/alert.component.mjs +0 -77
- package/alert/fesm2015/ngx-bootstrap-alert.mjs.map +0 -1
- package/alert/fesm2020/ngx-bootstrap-alert.mjs +0 -119
- package/alert/fesm2020/ngx-bootstrap-alert.mjs.map +0 -1
- package/buttons/esm2020/button-radio.directive.mjs +0 -188
- package/buttons/fesm2015/ngx-bootstrap-buttons.mjs +0 -448
- package/buttons/fesm2015/ngx-bootstrap-buttons.mjs.map +0 -1
- package/buttons/fesm2020/ngx-bootstrap-buttons.mjs.map +0 -1
- package/carousel/esm2020/carousel.component.mjs +0 -713
- package/carousel/fesm2015/ngx-bootstrap-carousel.mjs +0 -851
- package/carousel/fesm2015/ngx-bootstrap-carousel.mjs.map +0 -1
- package/carousel/fesm2020/ngx-bootstrap-carousel.mjs.map +0 -1
- package/chronos/fesm2015/ngx-bootstrap-chronos.mjs +0 -7384
- package/chronos/fesm2015/ngx-bootstrap-chronos.mjs.map +0 -1
- package/chronos/fesm2020/ngx-bootstrap-chronos.mjs.map +0 -1
- package/collapse/esm2020/collapse.directive.mjs +0 -168
- package/collapse/fesm2015/ngx-bootstrap-collapse.mjs +0 -200
- package/collapse/fesm2015/ngx-bootstrap-collapse.mjs.map +0 -1
- package/collapse/fesm2020/ngx-bootstrap-collapse.mjs.map +0 -1
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.mjs +0 -345
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.mjs.map +0 -1
- package/component-loader/fesm2020/ngx-bootstrap-component-loader.mjs.map +0 -1
- package/datepicker/esm2020/bs-datepicker.component.mjs +0 -303
- package/datepicker/esm2020/bs-daterangepicker-inline.component.mjs +0 -163
- package/datepicker/esm2020/bs-daterangepicker.component.mjs +0 -296
- package/datepicker/esm2020/reducer/bs-datepicker.actions.mjs +0 -143
- package/datepicker/esm2020/themes/bs/bs-datepicker-container.component.mjs +0 -192
- package/datepicker/esm2020/themes/bs/bs-daterangepicker-container.component.mjs +0 -261
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs +0 -3971
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs.map +0 -1
- package/datepicker/fesm2020/ngx-bootstrap-datepicker.mjs.map +0 -1
- package/dropdown/esm2020/bs-dropdown-container.component.mjs +0 -79
- package/dropdown/esm2020/bs-dropdown.directive.mjs +0 -340
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.mjs +0 -603
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.mjs.map +0 -1
- package/dropdown/fesm2020/ngx-bootstrap-dropdown.mjs.map +0 -1
- package/fesm2015/ngx-bootstrap.mjs.map +0 -1
- package/fesm2020/ngx-bootstrap.mjs +0 -6
- package/fesm2020/ngx-bootstrap.mjs.map +0 -1
- package/focus-trap/esm2020/focus-trap.mjs +0 -399
- package/focus-trap/fesm2015/ngx-bootstrap-focus-trap.mjs +0 -800
- package/focus-trap/fesm2015/ngx-bootstrap-focus-trap.mjs.map +0 -1
- package/focus-trap/fesm2020/ngx-bootstrap-focus-trap.mjs.map +0 -1
- package/locale/fesm2015/ngx-bootstrap-locale.mjs.map +0 -1
- package/locale/fesm2020/ngx-bootstrap-locale.mjs +0 -6
- package/locale/fesm2020/ngx-bootstrap-locale.mjs.map +0 -1
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.mjs +0 -64
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.mjs.map +0 -1
- package/mini-ngrx/fesm2020/ngx-bootstrap-mini-ngrx.mjs.map +0 -1
- package/modal/esm2020/modal-backdrop.component.mjs +0 -50
- package/modal/esm2020/modal.directive.mjs +0 -364
- package/modal/fesm2015/ngx-bootstrap-modal.mjs +0 -888
- package/modal/fesm2015/ngx-bootstrap-modal.mjs.map +0 -1
- package/modal/fesm2020/ngx-bootstrap-modal.mjs.map +0 -1
- package/pagination/fesm2015/ngx-bootstrap-pagination.mjs +0 -565
- package/pagination/fesm2015/ngx-bootstrap-pagination.mjs.map +0 -1
- package/pagination/fesm2020/ngx-bootstrap-pagination.mjs.map +0 -1
- package/popover/esm2020/popover-container.component.mjs +0 -46
- package/popover/esm2020/popover.directive.mjs +0 -241
- package/popover/fesm2015/ngx-bootstrap-popover.mjs +0 -339
- package/popover/fesm2015/ngx-bootstrap-popover.mjs.map +0 -1
- package/popover/fesm2020/ngx-bootstrap-popover.mjs.map +0 -1
- package/positioning/fesm2015/ngx-bootstrap-positioning.mjs +0 -1018
- package/positioning/fesm2015/ngx-bootstrap-positioning.mjs.map +0 -1
- package/positioning/fesm2020/ngx-bootstrap-positioning.mjs.map +0 -1
- package/progressbar/esm2020/progressbar.component.mjs +0 -53
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.mjs +0 -163
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.mjs.map +0 -1
- package/progressbar/fesm2020/ngx-bootstrap-progressbar.mjs.map +0 -1
- package/rating/fesm2015/ngx-bootstrap-rating.mjs.map +0 -1
- package/rating/fesm2020/ngx-bootstrap-rating.mjs +0 -163
- package/rating/fesm2020/ngx-bootstrap-rating.mjs.map +0 -1
- package/sortable/esm2020/sortable.component.mjs +0 -266
- package/sortable/fesm2015/ngx-bootstrap-sortable.mjs +0 -324
- package/sortable/fesm2015/ngx-bootstrap-sortable.mjs.map +0 -1
- package/sortable/fesm2020/ngx-bootstrap-sortable.mjs.map +0 -1
- package/tabs/esm2020/ng-transclude.directive.mjs +0 -28
- package/tabs/esm2020/tab.directive.mjs +0 -115
- package/tabs/esm2020/tabset.component.mjs +0 -216
- package/tabs/fesm2015/ngx-bootstrap-tabs.mjs.map +0 -1
- package/tabs/fesm2020/ngx-bootstrap-tabs.mjs +0 -427
- package/tabs/fesm2020/ngx-bootstrap-tabs.mjs.map +0 -1
- package/timepicker/esm2020/reducer/timepicker.actions.mjs +0 -53
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.mjs +0 -830
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.mjs.map +0 -1
- package/timepicker/fesm2020/ngx-bootstrap-timepicker.mjs.map +0 -1
- package/tooltip/esm2020/tooltip.directive.mjs +0 -342
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs +0 -431
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs.map +0 -1
- package/tooltip/fesm2020/ngx-bootstrap-tooltip.mjs.map +0 -1
- package/typeahead/esm2020/typeahead-container.component.mjs +0 -311
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.mjs +0 -1890
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.mjs.map +0 -1
- package/typeahead/fesm2020/ngx-bootstrap-typeahead.mjs.map +0 -1
- package/utils/fesm2015/ngx-bootstrap-utils.mjs +0 -523
- package/utils/fesm2015/ngx-bootstrap-utils.mjs.map +0 -1
- package/utils/fesm2020/ngx-bootstrap-utils.mjs.map +0 -1
- /package/accordion/{esm2020 → esm2022}/index.mjs +0 -0
- /package/accordion/{esm2020 → esm2022}/ngx-bootstrap-accordion.mjs +0 -0
- /package/accordion/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/alert/{esm2020 → esm2022}/index.mjs +0 -0
- /package/alert/{esm2020 → esm2022}/ngx-bootstrap-alert.mjs +0 -0
- /package/alert/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/buttons/{esm2020 → esm2022}/index.mjs +0 -0
- /package/buttons/{esm2020 → esm2022}/ngx-bootstrap-buttons.mjs +0 -0
- /package/buttons/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/index.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/ngx-bootstrap-carousel.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/utils.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/check-overflow.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/clone.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/date-from-array.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-anything.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-array.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-object.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-string-and-array.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-string-and-format.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-string.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/local.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/parsing-flags.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/parsing.types.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/valid.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/bubble.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/constructor.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/create.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/humanize.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/valid.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/format/format.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/format.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ar.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/bg.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ca.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/cs.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/da.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/de.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/en-gb.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/es-do.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/es-pr.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/es-us.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/es.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/et.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/fi.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/fr.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/gl.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/he.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/hi.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/hr.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/hu.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/id.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/it.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ja.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ka.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/kk.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ko.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/lt.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/lv.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/mn.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/nb.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/nl-be.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/nl.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/pl.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/pt-br.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ro.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ru.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/sk.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/sl.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/sq.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/sv.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/th-be.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/th.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/tr.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/uk.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/vi.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/zh-cn.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/index.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/locale/calendar.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/locale/locale.class.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/locale/locale.defaults.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/locale/locales.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/moment/add-subtract.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/moment/calendar.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/moment/diff.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/moment/min-max.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/ngx-bootstrap-chronos.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/parse/regex.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/parse/token.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/testing/chain.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/types.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/aliases.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/constants.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/day-of-month.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/day-of-week.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/day-of-year.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/hour.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/index.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/millisecond.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/minute.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/month.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/offset.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/priorities.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/quarter.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/second.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/timestamp.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/timezone.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/week-calendar-utils.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/week-year.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/week.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/year.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/abs-ceil.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/abs-round.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/compare-arrays.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/date-compare.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/date-getters.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/date-setters.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/defaults.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/start-end-of.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/type-checks.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/zero-fill.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils.mjs +0 -0
- /package/collapse/{esm2020 → esm2022}/collapse-animations.mjs +0 -0
- /package/collapse/{esm2020 → esm2022}/index.mjs +0 -0
- /package/collapse/{esm2020 → esm2022}/ngx-bootstrap-collapse.mjs +0 -0
- /package/collapse/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/bs-component-ref.class.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/component-loader.class.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/content-ref.class.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/index.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/listen-options.model.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/ngx-bootstrap-component-loader.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/base/bs-datepicker-container.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/datepicker-animations.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/calc-days-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/flag-days-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/flag-months-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/flag-years-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/format-days-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/format-months-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/format-years-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/view-mode.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/index.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/ngx-bootstrap-datepicker.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/reducer/_defaults.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/reducer/bs-datepicker.reducer.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/reducer/bs-datepicker.state.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/utils/bs-calendar-utils.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/utils/copy-time-utils.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/utils/matrix-utils.mjs +0 -0
- /package/dropdown/{esm2020 → esm2022}/dropdown-animations.mjs +0 -0
- /package/dropdown/{esm2020 → esm2022}/index.mjs +0 -0
- /package/dropdown/{esm2020 → esm2022}/ngx-bootstrap-dropdown.mjs +0 -0
- /package/dropdown/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/ngx-bootstrap.mjs +0 -0
- /package/{fesm2015 → fesm2022}/ngx-bootstrap.mjs +0 -0
- /package/focus-trap/{esm2020 → esm2022}/boolean-property.mjs +0 -0
- /package/focus-trap/{esm2020 → esm2022}/index.mjs +0 -0
- /package/focus-trap/{esm2020 → esm2022}/ngx-bootstrap-focus-trap.mjs +0 -0
- /package/focus-trap/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/locale/{esm2020 → esm2022}/index.mjs +0 -0
- /package/locale/{esm2020 → esm2022}/ngx-bootstrap-locale.mjs +0 -0
- /package/locale/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/locale/{fesm2015 → fesm2022}/ngx-bootstrap-locale.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/index.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/ngx-bootstrap-mini-ngrx.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/state.class.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/store.class.mjs +0 -0
- /package/mini-ngrx/{fesm2020 → fesm2022}/ngx-bootstrap-mini-ngrx.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/index.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/modal-backdrop.options.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/ngx-bootstrap-modal.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/pagination/{esm2020 → esm2022}/index.mjs +0 -0
- /package/pagination/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/pagination/{esm2020 → esm2022}/ngx-bootstrap-pagination.mjs +0 -0
- /package/pagination/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/popover/{esm2020 → esm2022}/index.mjs +0 -0
- /package/popover/{esm2020 → esm2022}/ngx-bootstrap-popover.mjs +0 -0
- /package/popover/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/index.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/arrow.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/flip.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/index.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/initData.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/preventOverflow.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/shift.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/ng-positioning.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/ngx-bootstrap-positioning.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/checkMargin.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/computeAutoPlacement.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/findCommonOffsetParent.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getBordersSize.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getBoundaries.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getBoundingClientRect.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getClientRect.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getFixedPositionOffsetParent.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOffsetParent.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOffsetRectRelativeToArbitraryNode.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOffsets.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOppositePlacement.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOppositeVariation.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOuterSizes.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getParentNode.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getReferenceOffsets.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getRoot.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getScroll.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getScrollParent.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getStyleComputedProperty.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getTargetOffsets.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getViewportOffsetRectRelativeToArtbitraryNode.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getWindowSizes.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/includeScroll.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/index.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/isFixed.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/isModifierEnabled.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/isNumeric.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/isOffsetContainer.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/setStyles.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/updateContainerClass.mjs +0 -0
- /package/progressbar/{esm2020 → esm2022}/index.mjs +0 -0
- /package/progressbar/{esm2020 → esm2022}/ngx-bootstrap-progressbar.mjs +0 -0
- /package/progressbar/{esm2020 → esm2022}/progressbar-type.interface.mjs +0 -0
- /package/progressbar/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/rating/{esm2020 → esm2022}/index.mjs +0 -0
- /package/rating/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/rating/{esm2020 → esm2022}/ngx-bootstrap-rating.mjs +0 -0
- /package/rating/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/sortable/{esm2020 → esm2022}/draggable-item.mjs +0 -0
- /package/sortable/{esm2020 → esm2022}/index.mjs +0 -0
- /package/sortable/{esm2020 → esm2022}/ngx-bootstrap-sortable.mjs +0 -0
- /package/sortable/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/tabs/{esm2020 → esm2022}/index.mjs +0 -0
- /package/tabs/{esm2020 → esm2022}/ngx-bootstrap-tabs.mjs +0 -0
- /package/tabs/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/index.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/ngx-bootstrap-timepicker.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/reducer/timepicker.reducer.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/timepicker-controls.util.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/timepicker.models.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/timepicker.utils.mjs +0 -0
- /package/tooltip/{esm2020 → esm2022}/index.mjs +0 -0
- /package/tooltip/{esm2020 → esm2022}/ngx-bootstrap-tooltip.mjs +0 -0
- /package/tooltip/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/index.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/latin-map.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/ngx-bootstrap-typeahead.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-animations.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-match.class.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-options.class.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-order.class.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-utils.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/decorators.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/facade/browser.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/index.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/linked-list.class.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/ngx-bootstrap-utils.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/theme-provider.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/trigger.class.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/triggers.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/utils.class.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/warn-once.mjs +0 -0
- /package/utils/{fesm2020 → fesm2022}/ngx-bootstrap-utils.mjs +0 -0
@@ -0,0 +1,399 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
4
|
+
*
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
7
|
+
*/
|
8
|
+
/* eslint-disable */
|
9
|
+
import { coerceBooleanProperty } from './boolean-property';
|
10
|
+
import { DOCUMENT } from '@angular/common';
|
11
|
+
import { Directive, ElementRef, Inject, Injectable, Input, NgZone } from '@angular/core';
|
12
|
+
import { take } from 'rxjs/operators';
|
13
|
+
import { InteractivityChecker } from './interactivity-checker';
|
14
|
+
import * as i0 from "@angular/core";
|
15
|
+
import * as i1 from "./interactivity-checker";
|
16
|
+
/**
|
17
|
+
* Class that allows for trapping focus within a DOM element.
|
18
|
+
*
|
19
|
+
* This class currently uses a relatively simple approach to focus trapping.
|
20
|
+
* It assumes that the tab order is the same as DOM order, which is not necessarily true.
|
21
|
+
* Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to misalign.
|
22
|
+
*
|
23
|
+
* @deprecated Use `ConfigurableFocusTrap` instead.
|
24
|
+
* @breaking-change for 11.0.0 Remove this class.
|
25
|
+
*/
|
26
|
+
export class FocusTrap {
|
27
|
+
/** Whether the focus trap is active. */
|
28
|
+
get enabled() {
|
29
|
+
return this._enabled;
|
30
|
+
}
|
31
|
+
set enabled(value) {
|
32
|
+
this._enabled = value;
|
33
|
+
if (this._startAnchor && this._endAnchor) {
|
34
|
+
this._toggleAnchorTabIndex(value, this._startAnchor);
|
35
|
+
this._toggleAnchorTabIndex(value, this._endAnchor);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {
|
39
|
+
this._element = _element;
|
40
|
+
this._checker = _checker;
|
41
|
+
this._ngZone = _ngZone;
|
42
|
+
this._document = _document;
|
43
|
+
this._hasAttached = false;
|
44
|
+
// Event listeners for the anchors. Need to be regular functions so that we can unbind them later.
|
45
|
+
this.startAnchorListener = () => this.focusLastTabbableElement();
|
46
|
+
this.endAnchorListener = () => this.focusFirstTabbableElement();
|
47
|
+
this._enabled = true;
|
48
|
+
if (!deferAnchors) {
|
49
|
+
this.attachAnchors();
|
50
|
+
}
|
51
|
+
}
|
52
|
+
/** Destroys the focus trap by cleaning up the anchors. */
|
53
|
+
destroy() {
|
54
|
+
const startAnchor = this._startAnchor;
|
55
|
+
const endAnchor = this._endAnchor;
|
56
|
+
if (startAnchor) {
|
57
|
+
startAnchor.removeEventListener('focus', this.startAnchorListener);
|
58
|
+
if (startAnchor.parentNode) {
|
59
|
+
startAnchor.parentNode.removeChild(startAnchor);
|
60
|
+
}
|
61
|
+
}
|
62
|
+
if (endAnchor) {
|
63
|
+
endAnchor.removeEventListener('focus', this.endAnchorListener);
|
64
|
+
if (endAnchor.parentNode) {
|
65
|
+
endAnchor.parentNode.removeChild(endAnchor);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
this._startAnchor = this._endAnchor = null;
|
69
|
+
this._hasAttached = false;
|
70
|
+
}
|
71
|
+
/**
|
72
|
+
* Inserts the anchors into the DOM. This is usually done automatically
|
73
|
+
* in the constructor, but can be deferred for cases like directives with `*ngIf`.
|
74
|
+
* @returns Whether the focus trap managed to attach successfuly. This may not be the case
|
75
|
+
* if the target element isn't currently in the DOM.
|
76
|
+
*/
|
77
|
+
attachAnchors() {
|
78
|
+
// If we're not on the browser, there can be no focus to trap.
|
79
|
+
if (this._hasAttached) {
|
80
|
+
return true;
|
81
|
+
}
|
82
|
+
this._ngZone.runOutsideAngular(() => {
|
83
|
+
if (!this._startAnchor) {
|
84
|
+
this._startAnchor = this._createAnchor();
|
85
|
+
this._startAnchor.addEventListener('focus', this.startAnchorListener);
|
86
|
+
}
|
87
|
+
if (!this._endAnchor) {
|
88
|
+
this._endAnchor = this._createAnchor();
|
89
|
+
this._endAnchor.addEventListener('focus', this.endAnchorListener);
|
90
|
+
}
|
91
|
+
});
|
92
|
+
if (this._element.parentNode) {
|
93
|
+
this._element.parentNode.insertBefore(this._startAnchor, this._element);
|
94
|
+
this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);
|
95
|
+
this._hasAttached = true;
|
96
|
+
}
|
97
|
+
return this._hasAttached;
|
98
|
+
}
|
99
|
+
/**
|
100
|
+
* Waits for the zone to stabilize, then either focuses the first element that the
|
101
|
+
* user specified, or the first tabbable element.
|
102
|
+
* @returns Returns a promise that resolves with a boolean, depending
|
103
|
+
* on whether focus was moved successfully.
|
104
|
+
*/
|
105
|
+
focusInitialElementWhenReady() {
|
106
|
+
return new Promise(resolve => {
|
107
|
+
this._executeOnStable(() => resolve(this.focusInitialElement()));
|
108
|
+
});
|
109
|
+
}
|
110
|
+
/**
|
111
|
+
* Waits for the zone to stabilize, then focuses
|
112
|
+
* the first tabbable element within the focus trap region.
|
113
|
+
* @returns Returns a promise that resolves with a boolean, depending
|
114
|
+
* on whether focus was moved successfully.
|
115
|
+
*/
|
116
|
+
focusFirstTabbableElementWhenReady() {
|
117
|
+
return new Promise(resolve => {
|
118
|
+
this._executeOnStable(() => resolve(this.focusFirstTabbableElement()));
|
119
|
+
});
|
120
|
+
}
|
121
|
+
/**
|
122
|
+
* Waits for the zone to stabilize, then focuses
|
123
|
+
* the last tabbable element within the focus trap region.
|
124
|
+
* @returns Returns a promise that resolves with a boolean, depending
|
125
|
+
* on whether focus was moved successfully.
|
126
|
+
*/
|
127
|
+
focusLastTabbableElementWhenReady() {
|
128
|
+
return new Promise(resolve => {
|
129
|
+
this._executeOnStable(() => resolve(this.focusLastTabbableElement()));
|
130
|
+
});
|
131
|
+
}
|
132
|
+
/**
|
133
|
+
* Get the specified boundary element of the trapped region.
|
134
|
+
* @param bound The boundary to get (start or end of trapped region).
|
135
|
+
* @returns The boundary element.
|
136
|
+
*/
|
137
|
+
_getRegionBoundary(bound) {
|
138
|
+
// Contains the deprecated version of selector, for temporary backwards comparability.
|
139
|
+
let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` +
|
140
|
+
`[cdkFocusRegion${bound}], ` +
|
141
|
+
`[cdk-focus-${bound}]`);
|
142
|
+
for (let i = 0; i < markers.length; i++) {
|
143
|
+
// @breaking-change 8.0.0
|
144
|
+
if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {
|
145
|
+
console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +
|
146
|
+
`use 'cdkFocusRegion${bound}' instead. The deprecated ` +
|
147
|
+
`attribute will be removed in 8.0.0.`, markers[i]);
|
148
|
+
}
|
149
|
+
else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {
|
150
|
+
console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +
|
151
|
+
`use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +
|
152
|
+
`will be removed in 8.0.0.`, markers[i]);
|
153
|
+
}
|
154
|
+
}
|
155
|
+
if (bound == 'start') {
|
156
|
+
return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);
|
157
|
+
}
|
158
|
+
return markers.length ?
|
159
|
+
markers[markers.length - 1] : this._getLastTabbableElement(this._element);
|
160
|
+
}
|
161
|
+
/**
|
162
|
+
* Focuses the element that should be focused when the focus trap is initialized.
|
163
|
+
* @returns Whether focus was moved successfully.
|
164
|
+
*/
|
165
|
+
focusInitialElement() {
|
166
|
+
// Contains the deprecated version of selector, for temporary backwards comparability.
|
167
|
+
const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` +
|
168
|
+
`[cdkFocusInitial]`);
|
169
|
+
if (redirectToElement) {
|
170
|
+
// @breaking-change 8.0.0
|
171
|
+
if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {
|
172
|
+
console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +
|
173
|
+
`use 'cdkFocusInitial' instead. The deprecated attribute ` +
|
174
|
+
`will be removed in 8.0.0`, redirectToElement);
|
175
|
+
}
|
176
|
+
// Warn the consumer if the element they've pointed to
|
177
|
+
// isn't focusable, when not in production mode.
|
178
|
+
if (!this._checker.isFocusable(redirectToElement)) {
|
179
|
+
const focusableChild = this._getFirstTabbableElement(redirectToElement);
|
180
|
+
focusableChild?.focus();
|
181
|
+
return !!focusableChild;
|
182
|
+
}
|
183
|
+
redirectToElement.focus();
|
184
|
+
return true;
|
185
|
+
}
|
186
|
+
return this.focusFirstTabbableElement();
|
187
|
+
}
|
188
|
+
/**
|
189
|
+
* Focuses the first tabbable element within the focus trap region.
|
190
|
+
* @returns Whether focus was moved successfully.
|
191
|
+
*/
|
192
|
+
focusFirstTabbableElement() {
|
193
|
+
const redirectToElement = this._getRegionBoundary('start');
|
194
|
+
if (redirectToElement) {
|
195
|
+
redirectToElement.focus();
|
196
|
+
}
|
197
|
+
return !!redirectToElement;
|
198
|
+
}
|
199
|
+
/**
|
200
|
+
* Focuses the last tabbable element within the focus trap region.
|
201
|
+
* @returns Whether focus was moved successfully.
|
202
|
+
*/
|
203
|
+
focusLastTabbableElement() {
|
204
|
+
const redirectToElement = this._getRegionBoundary('end');
|
205
|
+
if (redirectToElement) {
|
206
|
+
redirectToElement.focus();
|
207
|
+
}
|
208
|
+
return !!redirectToElement;
|
209
|
+
}
|
210
|
+
/**
|
211
|
+
* Checks whether the focus trap has successfully been attached.
|
212
|
+
*/
|
213
|
+
hasAttached() {
|
214
|
+
return this._hasAttached;
|
215
|
+
}
|
216
|
+
/** Get the first tabbable element from a DOM subtree (inclusive). */
|
217
|
+
_getFirstTabbableElement(root) {
|
218
|
+
if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {
|
219
|
+
return root;
|
220
|
+
}
|
221
|
+
// Iterate in DOM order. Note that IE doesn't have `children` for SVG so we fall
|
222
|
+
// back to `childNodes` which includes text nodes, comments etc.
|
223
|
+
let children = root.children || root.childNodes;
|
224
|
+
for (let i = 0; i < children.length; i++) {
|
225
|
+
let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?
|
226
|
+
this._getFirstTabbableElement(children[i]) :
|
227
|
+
null;
|
228
|
+
if (tabbableChild) {
|
229
|
+
return tabbableChild;
|
230
|
+
}
|
231
|
+
}
|
232
|
+
return null;
|
233
|
+
}
|
234
|
+
/** Get the last tabbable element from a DOM subtree (inclusive). */
|
235
|
+
_getLastTabbableElement(root) {
|
236
|
+
if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {
|
237
|
+
return root;
|
238
|
+
}
|
239
|
+
// Iterate in reverse DOM order.
|
240
|
+
let children = root.children || root.childNodes;
|
241
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
242
|
+
let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?
|
243
|
+
this._getLastTabbableElement(children[i]) :
|
244
|
+
null;
|
245
|
+
if (tabbableChild) {
|
246
|
+
return tabbableChild;
|
247
|
+
}
|
248
|
+
}
|
249
|
+
return null;
|
250
|
+
}
|
251
|
+
/** Creates an anchor element. */
|
252
|
+
_createAnchor() {
|
253
|
+
const anchor = this._document.createElement('div');
|
254
|
+
this._toggleAnchorTabIndex(this._enabled, anchor);
|
255
|
+
anchor.classList.add('cdk-visually-hidden');
|
256
|
+
anchor.classList.add('cdk-focus-trap-anchor');
|
257
|
+
anchor.setAttribute('aria-hidden', 'true');
|
258
|
+
return anchor;
|
259
|
+
}
|
260
|
+
/**
|
261
|
+
* Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.
|
262
|
+
* @param isEnabled Whether the focus trap is enabled.
|
263
|
+
* @param anchor Anchor on which to toggle the tabindex.
|
264
|
+
*/
|
265
|
+
_toggleAnchorTabIndex(isEnabled, anchor) {
|
266
|
+
// Remove the tabindex completely, rather than setting it to -1, because if the
|
267
|
+
// element has a tabindex, the user might still hit it when navigating with the arrow keys.
|
268
|
+
isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');
|
269
|
+
}
|
270
|
+
/**
|
271
|
+
* Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.
|
272
|
+
* @param enabled: Whether the anchors should trap Tab.
|
273
|
+
*/
|
274
|
+
toggleAnchors(enabled) {
|
275
|
+
if (this._startAnchor && this._endAnchor) {
|
276
|
+
this._toggleAnchorTabIndex(enabled, this._startAnchor);
|
277
|
+
this._toggleAnchorTabIndex(enabled, this._endAnchor);
|
278
|
+
}
|
279
|
+
}
|
280
|
+
/** Executes a function when the zone is stable. */
|
281
|
+
_executeOnStable(fn) {
|
282
|
+
if (this._ngZone.isStable) {
|
283
|
+
fn();
|
284
|
+
}
|
285
|
+
else {
|
286
|
+
this._ngZone.onStable.pipe(take(1)).subscribe(fn);
|
287
|
+
}
|
288
|
+
}
|
289
|
+
}
|
290
|
+
/**
|
291
|
+
* Factory that allows easy instantiation of focus traps.
|
292
|
+
* @deprecated Use `ConfigurableFocusTrapFactory` instead.
|
293
|
+
* @breaking-change for 11.0.0 Remove this class.
|
294
|
+
*/
|
295
|
+
export class FocusTrapFactory {
|
296
|
+
constructor(_checker, _ngZone, _document) {
|
297
|
+
this._checker = _checker;
|
298
|
+
this._ngZone = _ngZone;
|
299
|
+
this._document = _document;
|
300
|
+
}
|
301
|
+
/**
|
302
|
+
* Creates a focus-trapped region around the given element.
|
303
|
+
* @param element The element around which focus will be trapped.
|
304
|
+
* @param deferCaptureElements Defers the creation of focus-capturing elements to be done
|
305
|
+
* manually by the user.
|
306
|
+
* @returns The created focus trap instance.
|
307
|
+
*/
|
308
|
+
create(element, deferCaptureElements = false) {
|
309
|
+
return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);
|
310
|
+
}
|
311
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapFactory, deps: [{ token: i1.InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
312
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' }); }
|
313
|
+
}
|
314
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapFactory, decorators: [{
|
315
|
+
type: Injectable,
|
316
|
+
args: [{ providedIn: 'root' }]
|
317
|
+
}], ctorParameters: function () { return [{ type: i1.InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
318
|
+
type: Inject,
|
319
|
+
args: [DOCUMENT]
|
320
|
+
}] }]; } });
|
321
|
+
/** Directive for trapping focus within a region. */
|
322
|
+
export class FocusTrapDirective {
|
323
|
+
/** Whether the focus trap is active. */
|
324
|
+
get enabled() {
|
325
|
+
return this.focusTrap.enabled;
|
326
|
+
}
|
327
|
+
set enabled(value) {
|
328
|
+
this.focusTrap.enabled = coerceBooleanProperty(value);
|
329
|
+
}
|
330
|
+
/**
|
331
|
+
* Whether the directive should automatically move focus into the trapped region upon
|
332
|
+
* initialization and return focus to the previous activeElement upon destruction.
|
333
|
+
*/
|
334
|
+
get autoCapture() {
|
335
|
+
return this._autoCapture;
|
336
|
+
}
|
337
|
+
set autoCapture(value) {
|
338
|
+
this._autoCapture = coerceBooleanProperty(value);
|
339
|
+
}
|
340
|
+
constructor(_elementRef, _focusTrapFactory, _document) {
|
341
|
+
this._elementRef = _elementRef;
|
342
|
+
this._focusTrapFactory = _focusTrapFactory;
|
343
|
+
/** Previously focused element to restore focus to upon destroy when using autoCapture. */
|
344
|
+
this._previouslyFocusedElement = null;
|
345
|
+
this._autoCapture = false;
|
346
|
+
this._document = _document;
|
347
|
+
this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);
|
348
|
+
}
|
349
|
+
ngOnDestroy() {
|
350
|
+
this.focusTrap.destroy();
|
351
|
+
// If we stored a previously focused element when using autoCapture, return focus to that
|
352
|
+
// element now that the trapped region is being destroyed.
|
353
|
+
if (this._previouslyFocusedElement) {
|
354
|
+
this._previouslyFocusedElement.focus();
|
355
|
+
this._previouslyFocusedElement = null;
|
356
|
+
}
|
357
|
+
}
|
358
|
+
ngAfterContentInit() {
|
359
|
+
this.focusTrap.attachAnchors();
|
360
|
+
if (this.autoCapture) {
|
361
|
+
this._captureFocus();
|
362
|
+
}
|
363
|
+
}
|
364
|
+
ngDoCheck() {
|
365
|
+
if (!this.focusTrap.hasAttached()) {
|
366
|
+
this.focusTrap.attachAnchors();
|
367
|
+
}
|
368
|
+
}
|
369
|
+
ngOnChanges(changes) {
|
370
|
+
const autoCaptureChange = changes['autoCapture'];
|
371
|
+
if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture &&
|
372
|
+
this.focusTrap.hasAttached()) {
|
373
|
+
this._captureFocus();
|
374
|
+
}
|
375
|
+
}
|
376
|
+
_captureFocus() {
|
377
|
+
this._previouslyFocusedElement = this._document.activeElement;
|
378
|
+
this.focusTrap.focusInitialElementWhenReady();
|
379
|
+
}
|
380
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapDirective, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
381
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: FocusTrapDirective, selector: "[focusTrap]", inputs: { enabled: ["cdkTrapFocus", "enabled"], autoCapture: ["cdkTrapFocusAutoCapture", "autoCapture"] }, exportAs: ["focusTrap"], usesOnChanges: true, ngImport: i0 }); }
|
382
|
+
}
|
383
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapDirective, decorators: [{
|
384
|
+
type: Directive,
|
385
|
+
args: [{
|
386
|
+
selector: '[focusTrap]',
|
387
|
+
exportAs: 'focusTrap'
|
388
|
+
}]
|
389
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{
|
390
|
+
type: Inject,
|
391
|
+
args: [DOCUMENT]
|
392
|
+
}] }]; }, propDecorators: { enabled: [{
|
393
|
+
type: Input,
|
394
|
+
args: ['cdkTrapFocus']
|
395
|
+
}], autoCapture: [{
|
396
|
+
type: Input,
|
397
|
+
args: ['cdkTrapFocusAutoCapture']
|
398
|
+
}] } });
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsb0JBQW9CO0FBRXBCLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUtQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRy9EOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBU3BCLHdDQUF3QztJQUN4QyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBSUQsWUFDVyxRQUFxQixFQUN0QixRQUE4QixFQUM3QixPQUFlLEVBQ2YsU0FBbUIsRUFDNUIsWUFBWSxHQUFHLEtBQUs7UUFKWCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3RCLGFBQVEsR0FB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QUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWpELElBQUksaUJBQWlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVc7WUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUE0QixDQUFDO1FBQzdFLElBQUksQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUNoRCxDQUFDOzhHQWhGVSxrQkFBa0IseUVBcUNuQixRQUFRO2tHQXJDUCxrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxXQUFXO2lCQUN0Qjs7MEJBc0NJLE1BQU07MkJBQUMsUUFBUTs0Q0ExQmQsT0FBTztzQkFEVixLQUFLO3VCQUFDLGNBQWM7Z0JBY2pCLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cblxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICcuL2Jvb2xlYW4tcHJvcGVydHknO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgRG9DaGVjayxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEludGVyYWN0aXZpdHlDaGVja2VyIH0gZnJvbSAnLi9pbnRlcmFjdGl2aXR5LWNoZWNrZXInO1xuXG5cbi8qKlxuICogQ2xhc3MgdGhhdCBhbGxvd3MgZm9yIHRyYXBwaW5nIGZvY3VzIHdpdGhpbiBhIERPTSBlbGVtZW50LlxuICpcbiAqIFRoaXMgY2xhc3MgY3VycmVudGx5IHVzZXMgYSByZWxhdGl2ZWx5IHNpbXBsZSBhcHByb2FjaCB0byBmb2N1cyB0cmFwcGluZy5cbiAqIEl0IGFzc3VtZXMgdGhhdCB0aGUgdGFiIG9yZGVyIGlzIHRoZSBzYW1lIGFzIERPTSBvcmRlciwgd2hpY2ggaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUuXG4gKiBUaGluZ3MgbGlrZSBgdGFiSW5kZXggPiAwYCwgZmxleCBgb3JkZXJgLCBhbmQgc2hhZG93IHJvb3RzIGNhbiBjYXVzZSB0aGUgdHdvIHRvIG1pc2FsaWduLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBgQ29uZmlndXJhYmxlRm9jdXNUcmFwYCBpbnN0ZWFkLlxuICogQGJyZWFraW5nLWNoYW5nZSBmb3IgMTEuMC4wIFJlbW92ZSB0aGlzIGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgRm9jdXNUcmFwIHtcbiAgcHJpdmF0ZSBfc3RhcnRBbmNob3I/OiBIVE1MRWxlbWVudCB8IG51bGw7XG4gIHByaXZhdGUgX2VuZEFuY2hvcj86IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgcHJpdmF0ZSBfaGFzQXR0YWNoZWQgPSBmYWxzZTtcblxuICAvLyBFdmVudCBsaXN0ZW5lcnMgZm9yIHRoZSBhbmNob3JzLiBOZWVkIHRvIGJlIHJlZ3VsYXIgZnVuY3Rpb25zIHNvIHRoYXQgd2UgY2FuIHVuYmluZCB0aGVtIGxhdGVyLlxuICBwcm90ZWN0ZWQgc3RhcnRBbmNob3JMaXN0ZW5lciA9ICgpID0+IHRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KCk7XG4gIHByb3RlY3RlZCBlbmRBbmNob3JMaXN0ZW5lciA9ICgpID0+IHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBmb2N1cyB0cmFwIGlzIGFjdGl2ZS4gKi9cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBzZXQgZW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2VuYWJsZWQgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLl9zdGFydEFuY2hvciAmJiB0aGlzLl9lbmRBbmNob3IpIHtcbiAgICAgIHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHZhbHVlLCB0aGlzLl9zdGFydEFuY2hvcik7XG4gICAgICB0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh2YWx1ZSwgdGhpcy5fZW5kQW5jaG9yKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IF9lbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBwcml2YXRlIF9jaGVja2VyOiBJbnRlcmFjdGl2aXR5Q2hlY2tlcixcbiAgICByZWFkb25seSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcmVhZG9ubHkgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgICBkZWZlckFuY2hvcnMgPSBmYWxzZSkge1xuXG4gICAgaWYgKCFkZWZlckFuY2hvcnMpIHtcbiAgICAgIHRoaXMuYXR0YWNoQW5jaG9ycygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXN0cm95cyB0aGUgZm9jdXMgdHJhcCBieSBjbGVhbmluZyB1cCB0aGUgYW5jaG9ycy4gKi9cbiAgZGVzdHJveSgpIHtcbiAgICBjb25zdCBzdGFydEFuY2hvciA9IHRoaXMuX3N0YXJ0QW5jaG9yO1xuICAgIGNvbnN0IGVuZEFuY2hvciA9IHRoaXMuX2VuZEFuY2hvcjtcblxuICAgIGlmIChzdGFydEFuY2hvcikge1xuICAgICAgc3RhcnRBbmNob3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXIpO1xuXG4gICAgICBpZiAoc3RhcnRBbmNob3IucGFyZW50Tm9kZSkge1xuICAgICAgICBzdGFydEFuY2hvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0YXJ0QW5jaG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kQW5jaG9yKSB7XG4gICAgICBlbmRBbmNob3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmVuZEFuY2hvckxpc3RlbmVyKTtcblxuICAgICAgaWYgKGVuZEFuY2hvci5wYXJlbnROb2RlKSB7XG4gICAgICAgIGVuZEFuY2hvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVuZEFuY2hvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhcnRBbmNob3IgPSB0aGlzLl9lbmRBbmNob3IgPSBudWxsO1xuICAgIHRoaXMuX2hhc0F0dGFjaGVkID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyB0aGUgYW5jaG9ycyBpbnRvIHRoZSBET00uIFRoaXMgaXMgdXN1YWxseSBkb25lIGF1dG9tYXRpY2FsbHlcbiAgICogaW4gdGhlIGNvbnN0cnVjdG9yLCBidXQgY2FuIGJlIGRlZmVycmVkIGZvciBjYXNlcyBsaWtlIGRpcmVjdGl2ZXMgd2l0aCBgKm5nSWZgLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmb2N1cyB0cmFwIG1hbmFnZWQgdG8gYXR0YWNoIHN1Y2Nlc3NmdWx5LiBUaGlzIG1heSBub3QgYmUgdGhlIGNhc2VcbiAgICogaWYgdGhlIHRhcmdldCBlbGVtZW50IGlzbid0IGN1cnJlbnRseSBpbiB0aGUgRE9NLlxuICAgKi9cbiAgYXR0YWNoQW5jaG9ycygpOiBib29sZWFuIHtcbiAgICAvLyBJZiB3ZSdyZSBub3Qgb24gdGhlIGJyb3dzZXIsIHRoZXJlIGNhbiBiZSBubyBmb2N1cyB0byB0cmFwLlxuICAgIGlmICh0aGlzLl9oYXNBdHRhY2hlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhcnRBbmNob3IpIHtcbiAgICAgICAgdGhpcy5fc3RhcnRBbmNob3IgPSB0aGlzLl9jcmVhdGVBbmNob3IoKTtcbiAgICAgICAgdGhpcy5fc3RhcnRBbmNob3IhLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5zdGFydEFuY2hvckxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9lbmRBbmNob3IpIHtcbiAgICAgICAgdGhpcy5fZW5kQW5jaG9yID0gdGhpcy5fY3JlYXRlQW5jaG9yKCk7XG4gICAgICAgIHRoaXMuX2VuZEFuY2hvciEuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmVuZEFuY2hvckxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fc3RhcnRBbmNob3IhLCB0aGlzLl9lbGVtZW50KTtcbiAgICAgIHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fZW5kQW5jaG9yISwgdGhpcy5fZWxlbWVudC5uZXh0U2libGluZyk7XG4gICAgICB0aGlzLl9oYXNBdHRhY2hlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2hhc0F0dGFjaGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhaXRzIGZvciB0aGUgem9uZSB0byBzdGFiaWxpemUsIHRoZW4gZWl0aGVyIGZvY3VzZXMgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCB0aGVcbiAgICogdXNlciBzcGVjaWZpZWQsIG9yIHRoZSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYSBib29sZWFuLCBkZXBlbmRpbmdcbiAgICogb24gd2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgZm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLl9leGVjdXRlT25TdGFibGUoKCkgPT4gcmVzb2x2ZSh0aGlzLmZvY3VzSW5pdGlhbEVsZW1lbnQoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhaXRzIGZvciB0aGUgem9uZSB0byBzdGFiaWxpemUsIHRoZW4gZm9jdXNlc1xuICAgKiB0aGUgZmlyc3QgdGFiYmFibGUgZWxlbWVudCB3aXRoaW4gdGhlIGZvY3VzIHRyYXAgcmVnaW9uLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYSBib29sZWFuLCBkZXBlbmRpbmdcbiAgICogb24gd2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudFdoZW5SZWFkeSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLl9leGVjdXRlT25TdGFibGUoKCkgPT4gcmVzb2x2ZSh0aGlzLmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhaXRzIGZvciB0aGUgem9uZSB0byBzdGFiaWxpemUsIHRoZW4gZm9jdXNlc1xuICAgKiB0aGUgbGFzdCB0YWJiYWJsZSBlbGVtZW50IHdpdGhpbiB0aGUgZm9jdXMgdHJhcCByZWdpb24uXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIGJvb2xlYW4sIGRlcGVuZGluZ1xuICAgKiBvbiB3aGV0aGVyIGZvY3VzIHdhcyBtb3ZlZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBmb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnRXaGVuUmVhZHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KHJlc29sdmUgPT4ge1xuICAgICAgdGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgpID0+IHJlc29sdmUodGhpcy5mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnQoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3BlY2lmaWVkIGJvdW5kYXJ5IGVsZW1lbnQgb2YgdGhlIHRyYXBwZWQgcmVnaW9uLlxuICAgKiBAcGFyYW0gYm91bmQgVGhlIGJvdW5kYXJ5IHRvIGdldCAoc3RhcnQgb3IgZW5kIG9mIHRyYXBwZWQgcmVnaW9uKS5cbiAgICogQHJldHVybnMgVGhlIGJvdW5kYXJ5IGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIF9nZXRSZWdpb25Cb3VuZGFyeShib3VuZDogJ3N0YXJ0JyB8ICdlbmQnKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAvLyBDb250YWlucyB0aGUgZGVwcmVjYXRlZCB2ZXJzaW9uIG9mIHNlbGVjdG9yLCBmb3IgdGVtcG9yYXJ5IGJhY2t3YXJkcyBjb21wYXJhYmlsaXR5LlxuICAgIGxldCBtYXJrZXJzID0gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbY2RrLWZvY3VzLXJlZ2lvbi0ke2JvdW5kfV0sIGAgK1xuICAgICAgYFtjZGtGb2N1c1JlZ2lvbiR7Ym91bmR9XSwgYCArXG4gICAgICBgW2Nkay1mb2N1cy0ke2JvdW5kfV1gKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuICAgICAgaWYgKG1hcmtlcnNbaV0uaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtJHtib3VuZH1gKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLSR7Ym91bmR9JywgYCArXG4gICAgICAgICAgYHVzZSAnY2RrRm9jdXNSZWdpb24ke2JvdW5kfScgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYCArXG4gICAgICAgICAgYGF0dHJpYnV0ZSB3aWxsIGJlIHJlbW92ZWQgaW4gOC4wLjAuYCwgbWFya2Vyc1tpXSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlcnNbaV0uaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtcmVnaW9uLSR7Ym91bmR9YCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBGb3VuZCB1c2Ugb2YgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgJ2Nkay1mb2N1cy1yZWdpb24tJHtib3VuZH0nLCBgICtcbiAgICAgICAgICBgdXNlICdjZGtGb2N1c1JlZ2lvbiR7Ym91bmR9JyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgYCArXG4gICAgICAgICAgYHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMC5gLCBtYXJrZXJzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYm91bmQgPT0gJ3N0YXJ0Jykge1xuICAgICAgcmV0dXJuIG1hcmtlcnMubGVuZ3RoID8gbWFya2Vyc1swXSA6IHRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gbWFya2Vycy5sZW5ndGggP1xuICAgICAgbWFya2Vyc1ttYXJrZXJzLmxlbmd0aCAtIDFdIDogdGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIGZvY3VzZWQgd2hlbiB0aGUgZm9jdXMgdHJhcCBpcyBpbml0aWFsaXplZC5cbiAgICogQHJldHVybnMgV2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgZm9jdXNJbml0aWFsRWxlbWVudCgpOiBib29sZWFuIHtcbiAgICAvLyBDb250YWlucyB0aGUgZGVwcmVjYXRlZCB2ZXJzaW9uIG9mIHNlbGVjdG9yLCBmb3IgdGVtcG9yYXJ5IGJhY2t3YXJkcyBjb21wYXJhYmlsaXR5LlxuICAgIGNvbnN0IHJlZGlyZWN0VG9FbGVtZW50ID0gdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbY2RrLWZvY3VzLWluaXRpYWxdLCBgICtcbiAgICAgIGBbY2RrRm9jdXNJbml0aWFsXWApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHJlZGlyZWN0VG9FbGVtZW50KSB7XG4gICAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4gICAgICBpZiAocmVkaXJlY3RUb0VsZW1lbnQuaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtaW5pdGlhbGApKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRm91bmQgdXNlIG9mIGRlcHJlY2F0ZWQgYXR0cmlidXRlICdjZGstZm9jdXMtaW5pdGlhbCcsIGAgK1xuICAgICAgICAgIGB1c2UgJ2Nka0ZvY3VzSW5pdGlhbCcgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYXR0cmlidXRlIGAgK1xuICAgICAgICAgIGB3aWxsIGJlIHJlbW92ZWQgaW4gOC4wLjBgLCByZWRpcmVjdFRvRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdhcm4gdGhlIGNvbnN1bWVyIGlmIHRoZSBlbGVtZW50IHRoZXkndmUgcG9pbnRlZCB0b1xuICAgICAgLy8gaXNuJ3QgZm9jdXNhYmxlLCB3aGVuIG5vdCBpbiBwcm9kdWN0aW9uIG1vZGUuXG5cbiAgICAgIGlmICghdGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShyZWRpcmVjdFRvRWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlQ2hpbGQgPSB0aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudChyZWRpcmVjdFRvRWxlbWVudCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGZvY3VzYWJsZUNoaWxkPy5mb2N1cygpO1xuICAgICAgICByZXR1cm4gISFmb2N1c2FibGVDaGlsZDtcbiAgICAgIH1cblxuICAgICAgcmVkaXJlY3RUb0VsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50IHdpdGhpbiB0aGUgZm9jdXMgdHJhcCByZWdpb24uXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgZm9jdXMgd2FzIG1vdmVkIHN1Y2Nlc3NmdWxseS5cbiAgICovXG4gIGZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVkaXJlY3RUb0VsZW1lbnQgPSB0aGlzLl9nZXRSZWdpb25Cb3VuZGFyeSgnc3RhcnQnKTtcblxuICAgIGlmIChyZWRpcmVjdFRvRWxlbWVudCkge1xuICAgICAgcmVkaXJlY3RUb0VsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gISFyZWRpcmVjdFRvRWxlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSBsYXN0IHRhYmJhYmxlIGVsZW1lbnQgd2l0aGluIHRoZSBmb2N1cyB0cmFwIHJlZ2lvbi5cbiAgICogQHJldHVybnMgV2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZGlyZWN0VG9FbGVtZW50ID0gdGhpcy5fZ2V0UmVnaW9uQm91bmRhcnkoJ2VuZCcpO1xuXG4gICAgaWYgKHJlZGlyZWN0VG9FbGVtZW50KSB7XG4gICAgICByZWRpcmVjdFRvRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJlZGlyZWN0VG9FbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBmb2N1cyB0cmFwIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBhdHRhY2hlZC5cbiAgICovXG4gIGhhc0F0dGFjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNBdHRhY2hlZDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQgZnJvbSBhIERPTSBzdWJ0cmVlIChpbmNsdXNpdmUpLiAqL1xuICBwcml2YXRlIF9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudChyb290OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUocm9vdCkgJiYgdGhpcy5fY2hlY2tlci5pc1RhYmJhYmxlKHJvb3QpKSB7XG4gICAgICByZXR1cm4gcm9vdDtcbiAgICB9XG5cbiAgICAvLyBJdGVyYXRlIGluIERPTSBvcmRlci4gTm90ZSB0aGF0IElFIGRvZXNuJ3QgaGF2ZSBgY2hpbGRyZW5gIGZvciBTVkcgc28gd2UgZmFsbFxuICAgIC8vIGJhY2sgdG8gYGNoaWxkTm9kZXNgIHdoaWNoIGluY2x1ZGVzIHRleHQgbm9kZXMsIGNvbW1lbnRzIGV0Yy5cbiAgICBsZXQgY2hpbGRyZW4gPSByb290LmNoaWxkcmVuIHx8IHJvb3QuY2hpbGROb2RlcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCB0YWJiYWJsZUNoaWxkID0gY2hpbGRyZW5baV0ubm9kZVR5cGUgPT09IHRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERSA/XG4gICAgICAgIHRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KGNoaWxkcmVuW2ldIGFzIEhUTUxFbGVtZW50KSA6XG4gICAgICAgIG51bGw7XG5cbiAgICAgIGlmICh0YWJiYWJsZUNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0YWJiYWJsZUNoaWxkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgbGFzdCB0YWJiYWJsZSBlbGVtZW50IGZyb20gYSBET00gc3VidHJlZSAoaW5jbHVzaXZlKS4gKi9cbiAgcHJpdmF0ZSBfZ2V0TGFzdFRhYmJhYmxlRWxlbWVudChyb290OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUocm9vdCkgJiYgdGhpcy5fY2hlY2tlci5pc1RhYmJhYmxlKHJvb3QpKSB7XG4gICAgICByZXR1cm4gcm9vdDtcbiAgICB9XG5cbiAgICAvLyBJdGVyYXRlIGluIHJldmVyc2UgRE9NIG9yZGVyLlxuICAgIGxldCBjaGlsZHJlbiA9IHJvb3QuY2hpbGRyZW4gfHwgcm9vdC5jaGlsZE5vZGVzO1xuXG4gICAgZm9yIChsZXQgaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgdGFiYmFibGVDaGlsZCA9IGNoaWxkcmVuW2ldLm5vZGVUeXBlID09PSB0aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREUgP1xuICAgICAgICB0aGlzLl9nZXRMYXN0VGFiYmFibGVFbGVtZW50KGNoaWxkcmVuW2ldIGFzIEhUTUxFbGVtZW50KSA6XG4gICAgICAgIG51bGw7XG5cbiAgICAgIGlmICh0YWJiYWJsZUNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0YWJiYWJsZUNoaWxkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYW4gYW5jaG9yIGVsZW1lbnQuICovXG4gIHByaXZhdGUgX2NyZWF0ZUFuY2hvcigpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYW5jaG9yID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodGhpcy5fZW5hYmxlZCwgYW5jaG9yKTtcbiAgICBhbmNob3IuY2xhc3NMaXN0LmFkZCgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xuICAgIGFuY2hvci5jbGFzc0xpc3QuYWRkKCdjZGstZm9jdXMtdHJhcC1hbmNob3InKTtcbiAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgcmV0dXJuIGFuY2hvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBgdGFiaW5kZXhgIG9mIGFuIGFuY2hvciwgYmFzZWQgb24gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGZvY3VzIHRyYXAuXG4gICAqIEBwYXJhbSBpc0VuYWJsZWQgV2hldGhlciB0aGUgZm9jdXMgdHJhcCBpcyBlbmFibGVkLlxuICAgKiBAcGFyYW0gYW5jaG9yIEFuY2hvciBvbiB3aGljaCB0byB0b2dnbGUgdGhlIHRhYmluZGV4LlxuICAgKi9cbiAgcHJpdmF0ZSBfdG9nZ2xlQW5jaG9yVGFiSW5kZXgoaXNFbmFibGVkOiBib29sZWFuLCBhbmNob3I6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gUmVtb3ZlIHRoZSB0YWJpbmRleCBjb21wbGV0ZWx5LCByYXRoZXIgdGhhbiBzZXR0aW5nIGl0IHRvIC0xLCBiZWNhdXNlIGlmIHRoZVxuICAgIC8vIGVsZW1lbnQgaGFzIGEgdGFiaW5kZXgsIHRoZSB1c2VyIG1pZ2h0IHN0aWxsIGhpdCBpdCB3aGVuIG5hdmlnYXRpbmcgd2l0aCB0aGUgYXJyb3cga2V5cy5cbiAgICBpc0VuYWJsZWQgPyBhbmNob3Iuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJykgOiBhbmNob3IucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlYHRhYmluZGV4YCBvZiBib3RoIGFuY2hvcnMgdG8gZWl0aGVyIHRyYXAgVGFiIGZvY3VzIG9yIGFsbG93IGl0IHRvIGVzY2FwZS5cbiAgICogQHBhcmFtIGVuYWJsZWQ6IFdoZXRoZXIgdGhlIGFuY2hvcnMgc2hvdWxkIHRyYXAgVGFiLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRvZ2dsZUFuY2hvcnMoZW5hYmxlZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl9zdGFydEFuY2hvciAmJiB0aGlzLl9lbmRBbmNob3IpIHtcbiAgICAgIHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KGVuYWJsZWQsIHRoaXMuX3N0YXJ0QW5jaG9yKTtcbiAgICAgIHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KGVuYWJsZWQsIHRoaXMuX2VuZEFuY2hvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2hlbiB0aGUgem9uZSBpcyBzdGFibGUuICovXG4gIHByaXZhdGUgX2V4ZWN1dGVPblN0YWJsZShmbjogKCkgPT4gYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX25nWm9uZS5pc1N0YWJsZSkge1xuICAgICAgZm4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGYWN0b3J5IHRoYXQgYWxsb3dzIGVhc3kgaW5zdGFudGlhdGlvbiBvZiBmb2N1cyB0cmFwcy5cbiAqIEBkZXByZWNhdGVkIFVzZSBgQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeWAgaW5zdGVhZC5cbiAqIEBicmVha2luZy1jaGFuZ2UgZm9yIDExLjAuMCBSZW1vdmUgdGhpcyBjbGFzcy5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGb2N1c1RyYXBGYWN0b3J5IHtcbiAgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NoZWNrZXI6IEludGVyYWN0aXZpdHlDaGVja2VyLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55KSB7XG5cbiAgICB0aGlzLl9kb2N1bWVudCA9IF9kb2N1bWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZm9jdXMtdHJhcHBlZCByZWdpb24gYXJvdW5kIHRoZSBnaXZlbiBlbGVtZW50LlxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCBhcm91bmQgd2hpY2ggZm9jdXMgd2lsbCBiZSB0cmFwcGVkLlxuICAgKiBAcGFyYW0gZGVmZXJDYXB0dXJlRWxlbWVudHMgRGVmZXJzIHRoZSBjcmVhdGlvbiBvZiBmb2N1cy1jYXB0dXJpbmcgZWxlbWVudHMgdG8gYmUgZG9uZVxuICAgKiAgICAgbWFudWFsbHkgYnkgdGhlIHVzZXIuXG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIGZvY3VzIHRyYXAgaW5zdGFuY2UuXG4gICAqL1xuICBjcmVhdGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIGRlZmVyQ2FwdHVyZUVsZW1lbnRzOiBib29sZWFuID0gZmFsc2UpOiBGb2N1c1RyYXAge1xuICAgIHJldHVybiBuZXcgRm9jdXNUcmFwKFxuICAgICAgZWxlbWVudCwgdGhpcy5fY2hlY2tlciwgdGhpcy5fbmdab25lLCB0aGlzLl9kb2N1bWVudCwgZGVmZXJDYXB0dXJlRWxlbWVudHMpO1xuICB9XG59XG5cbi8qKiBEaXJlY3RpdmUgZm9yIHRyYXBwaW5nIGZvY3VzIHdpdGhpbiBhIHJlZ2lvbi4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmb2N1c1RyYXBdJyxcbiAgZXhwb3J0QXM6ICdmb2N1c1RyYXAnXG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzVHJhcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBEb0NoZWNrIHtcbiAgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50O1xuXG4gIC8qKiBVbmRlcmx5aW5nIEZvY3VzVHJhcCBpbnN0YW5jZS4gKi9cbiAgZm9jdXNUcmFwOiBGb2N1c1RyYXA7XG5cbiAgLyoqIFByZXZpb3VzbHkgZm9jdXNlZCBlbGVtZW50IHRvIHJlc3RvcmUgZm9jdXMgdG8gdXBvbiBkZXN0cm95IHdoZW4gdXNpbmcgYXV0b0NhcHR1cmUuICovXG4gIHByaXZhdGUgX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgZm9jdXMgdHJhcCBpcyBhY3RpdmUuICovXG4gIEBJbnB1dCgnY2RrVHJhcEZvY3VzJylcbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNUcmFwLmVuYWJsZWQ7XG4gIH1cblxuICBzZXQgZW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZm9jdXNUcmFwLmVuYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGRpcmVjdGl2ZSBzaG91bGQgYXV0b21hdGljYWxseSBtb3ZlIGZvY3VzIGludG8gdGhlIHRyYXBwZWQgcmVnaW9uIHVwb25cbiAgICogaW5pdGlhbGl6YXRpb24gYW5kIHJldHVybiBmb2N1cyB0byB0aGUgcHJldmlvdXMgYWN0aXZlRWxlbWVudCB1cG9uIGRlc3RydWN0aW9uLlxuICAgKi9cbiAgQElucHV0KCdjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZScpXG4gIGdldCBhdXRvQ2FwdHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0b0NhcHR1cmU7XG4gIH1cblxuICBzZXQgYXV0b0NhcHR1cmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hdXRvQ2FwdHVyZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9hdXRvQ2FwdHVyZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX2ZvY3VzVHJhcEZhY3Rvcnk6IEZvY3VzVHJhcEZhY3RvcnksXG4gICAgQEluamVjdChET0NVTUVOVCkgX2RvY3VtZW50OiBhbnkpIHtcblxuICAgIHRoaXMuX2RvY3VtZW50ID0gX2RvY3VtZW50O1xuICAgIHRoaXMuZm9jdXNUcmFwID0gdGhpcy5fZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9jdXNUcmFwLmRlc3Ryb3koKTtcblxuICAgIC8vIElmIHdlIHN0b3JlZCBhIHByZXZpb3VzbHkgZm9jdXNlZCBlbGVtZW50IHdoZW4gdXNpbmcgYXV0b0NhcHR1cmUsIHJldHVybiBmb2N1cyB0byB0aGF0XG4gICAgLy8gZWxlbWVudCBub3cgdGhhdCB0aGUgdHJhcHBlZCByZWdpb24gaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgIGlmICh0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpO1xuICAgICAgdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5mb2N1c1RyYXAuYXR0YWNoQW5jaG9ycygpO1xuXG4gICAgaWYgKHRoaXMuYXV0b0NhcHR1cmUpIHtcbiAgICAgIHRoaXMuX2NhcHR1cmVGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAoIXRoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHRoaXMuZm9jdXNUcmFwLmF0dGFjaEFuY2hvcnMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgYXV0b0NhcHR1cmVDaGFuZ2UgPSBjaGFuZ2VzWydhdXRvQ2FwdHVyZSddO1xuXG4gICAgaWYgKGF1dG9DYXB0dXJlQ2hhbmdlICYmICFhdXRvQ2FwdHVyZUNoYW5nZS5maXJzdENoYW5nZSAmJiB0aGlzLmF1dG9DYXB0dXJlICYmXG4gICAgICB0aGlzLmZvY3VzVHJhcC5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICB0aGlzLl9jYXB0dXJlRm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jYXB0dXJlRm9jdXMoKSB7XG4gICAgdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLmZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZW5hYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYXV0b0NhcHR1cmU6IEJvb2xlYW5JbnB1dDtcbn1cbiJdfQ==
|
@@ -16,11 +16,11 @@ export class FocusTrapModule {
|
|
16
16
|
]
|
17
17
|
};
|
18
18
|
}
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
20
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrapDirective], imports: [CommonModule], exports: [FocusTrapDirective] }); }
|
21
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapModule, imports: [CommonModule] }); }
|
19
22
|
}
|
20
|
-
|
21
|
-
FocusTrapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.3", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrapDirective], imports: [CommonModule], exports: [FocusTrapDirective] });
|
22
|
-
FocusTrapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: FocusTrapModule, imports: [CommonModule] });
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: FocusTrapModule, decorators: [{
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FocusTrapModule, decorators: [{
|
24
24
|
type: NgModule,
|
25
25
|
args: [{
|
26
26
|
imports: [CommonModule],
|
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
28
28
|
exports: [FocusTrapDirective]
|
29
29
|
}]
|
30
30
|
}] });
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZm9jdXMtdHJhcC9mb2N1cy10cmFwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBT3RDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFNBQVMsRUFBRTtnQkFDVCxnQkFBZ0I7Z0JBQ2hCLFFBQVE7Z0JBQ1Isb0JBQW9CO2FBQ3JCO1NBQ0YsQ0FBQztJQUNKLENBQUM7OEdBVlUsZUFBZTsrR0FBZixlQUFlLGlCQUhYLGtCQUFrQixhQUR2QixZQUFZLGFBRVosa0JBQWtCOytHQUVqQixlQUFlLFlBSmhCLFlBQVk7OzJGQUlYLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDbEMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEZvY3VzVHJhcE1hbmFnZXIgfSBmcm9tICcuL2ZvY3VzLXRyYXAtbWFuYWdlcic7XG5pbXBvcnQgeyBJbnRlcmFjdGl2aXR5Q2hlY2tlciB9IGZyb20gJy4vaW50ZXJhY3Rpdml0eS1jaGVja2VyJztcbmltcG9ydCB7IEZvY3VzVHJhcERpcmVjdGl2ZSB9IGZyb20gJy4vZm9jdXMtdHJhcCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJy4vcGxhdGZvcm0nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbRm9jdXNUcmFwRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0ZvY3VzVHJhcERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNUcmFwTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGb2N1c1RyYXBNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZvY3VzVHJhcE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBGb2N1c1RyYXBNYW5hZ2VyLFxuICAgICAgICBQbGF0Zm9ybSxcbiAgICAgICAgSW50ZXJhY3Rpdml0eUNoZWNrZXJcbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
@@ -135,10 +135,10 @@ export class InteractivityChecker {
|
|
135
135
|
return isPotentiallyFocusable(element) && !this.isDisabled(element) &&
|
136
136
|
(config?.ignoreVisibility || this.isVisible(element));
|
137
137
|
}
|
138
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
139
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: InteractivityChecker, providedIn: 'root' }); }
|
138
140
|
}
|
139
|
-
|
140
|
-
InteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: InteractivityChecker, decorators: [{
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: InteractivityChecker, decorators: [{
|
142
142
|
type: Injectable,
|
143
143
|
args: [{ providedIn: 'root' }]
|
144
144
|
}], ctorParameters: function () { return [{ type: i1.Platform }]; } });
|
@@ -238,4 +238,4 @@ function getWindow(node) {
|
|
238
238
|
// ownerDocument is null if `node` itself *is* a document.
|
239
239
|
return node.ownerDocument && node.ownerDocument.defaultView || window;
|
240
240
|
}
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpdml0eS1jaGVja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ZvY3VzLXRyYXAvaW50ZXJhY3Rpdml0eS1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILG9CQUFvQjtBQUVwQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUUzQzs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDRTs7V0FFRztRQUNILHFCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNwQyxDQUFDO0NBQUE7QUFFRCxpRkFBaUY7QUFDakYsNkZBQTZGO0FBQzdGLGFBQWE7QUFFYjs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLE9BQW9CO1FBQzdCLDRGQUE0RjtRQUM1RixzRkFBc0Y7UUFDdEYsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLE9BQW9CO1FBQzVCLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxPQUFvQjtRQUM3Qix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FB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bEQsbUVBQW1FO0lBQ25FLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztRQUNqQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDekIsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztRQUN2QyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLFNBQVMsU0FBUyxDQUFDLElBQWlCO0lBQ2xDLDBEQUEwRDtJQUMxRCxPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cblxuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICcuL3BsYXRmb3JtJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgaXNGb2N1c2FibGUgbWV0aG9kLlxuICovXG5leHBvcnQgY2xhc3MgSXNGb2N1c2FibGVDb25maWcge1xuICAvKipcbiAgICogV2hldGhlciB0byBjb3VudCBhbiBlbGVtZW50IGFzIGZvY3VzYWJsZSBldmVuIGlmIGl0IGlzIG5vdCBjdXJyZW50bHkgdmlzaWJsZS5cbiAgICovXG4gIGlnbm9yZVZpc2liaWxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcbn1cblxuLy8gVGhlIEludGVyYWN0aXZpdHlDaGVja2VyIGxlYW5zIGhlYXZpbHkgb24gdGhlIGFsbHkuanMgYWNjZXNzaWJpbGl0eSB1dGlsaXRpZXMuXG4vLyBNZXRob2RzIGxpa2UgYGlzVGFiYmFibGVgIGFyZSBvbmx5IGNvdmVyaW5nIHNwZWNpZmljIGVkZ2UtY2FzZXMgZm9yIHRoZSBicm93c2VycyB3aGljaCBhcmVcbi8vIHN1cHBvcnRlZC5cblxuLyoqXG4gKiBVdGlsaXR5IGZvciBjaGVja2luZyB0aGUgaW50ZXJhY3Rpdml0eSBvZiBhbiBlbGVtZW50LCBzdWNoIGFzIHdoZXRoZXIgaXMgaXMgZm9jdXNhYmxlIG9yXG4gKiB0YWJiYWJsZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGl2aXR5Q2hlY2tlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtKSB7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZWxlbWVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIGlzRGlzYWJsZWQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAvLyBUaGlzIGRvZXMgbm90IGNhcHR1cmUgc29tZSBjYXNlcywgc3VjaCBhcyBhIG5vbi1mb3JtIGNvbnRyb2wgd2l0aCBhIGRpc2FibGVkIGF0dHJpYnV0ZSBvclxuICAgIC8vIGEgZm9ybSBjb250cm9sIGluc2lkZSBvZiBhIGRpc2FibGVkIGZvcm0sIGJ1dCBzaG91bGQgY2FwdHVyZSB0aGUgbW9zdCBjb21tb24gY2FzZXMuXG4gICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIHZpc2libGUgZm9yIHRoZSBwdXJwb3NlcyBvZiBpbnRlcmFjdGl2aXR5LlxuICAgKlxuICAgKiBUaGlzIHdpbGwgY2FwdHVyZSBzdGF0ZXMgbGlrZSBgZGlzcGxheTogbm9uZWAgYW5kIGB2aXNpYmlsaXR5OiBoaWRkZW5gLCBidXQgbm90IHRoaW5ncyBsaWtlXG4gICAqIGJlaW5nIGNsaXBwZWQgYnkgYW4gYG92ZXJmbG93OiBoaWRkZW5gIHBhcmVudCBvciBiZWluZyBvdXRzaWRlIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLlxuICAgKi9cbiAgaXNWaXNpYmxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGhhc0dlb21ldHJ5KGVsZW1lbnQpICYmIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkudmlzaWJpbGl0eSA9PT0gJ3Zpc2libGUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGNhbiBiZSByZWFjaGVkIHZpYSBUYWIga2V5LlxuICAgKiBBc3N1bWVzIHRoYXQgdGhlIGVsZW1lbnQgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkIHdpdGggaXNGb2N1c2FibGUuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZWxlbWVudCBpcyB0YWJiYWJsZS5cbiAgICovXG4gIGlzVGFiYmFibGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAvLyBOb3RoaW5nIGlzIHRhYmJhYmxlIG9uIHRoZSBzZXJ2ZXIg8J+YjlxuICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KGdldFdpbmRvdyhlbGVtZW50KSk7XG5cbiAgICBpZiAoZnJhbWVFbGVtZW50KSB7XG4gICAgICAvLyBGcmFtZSBlbGVtZW50cyBpbmhlcml0IHRoZWlyIHRhYmluZGV4IG9udG8gYWxsIGNoaWxkIGVsZW1lbnRzLlxuICAgICAgaWYgKGdldFRhYkluZGV4VmFsdWUoZnJhbWVFbGVtZW50KSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBCcm93c2VycyBkaXNhYmxlIHRhYmJpbmcgdG8gYW4gZWxlbWVudCBpbnNpZGUgb2YgYW4gaW52aXNpYmxlIGZyYW1lLlxuICAgICAgaWYgKCF0aGlzLmlzVmlzaWJsZShmcmFtZUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgbGV0IHRhYkluZGV4VmFsdWUgPSBnZXRUYWJJbmRleFZhbHVlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSkge1xuICAgICAgcmV0dXJuIHRhYkluZGV4VmFsdWUgIT09IC0xO1xuICAgIH1cblxuICAgIGlmIChub2RlTmFtZSA9PT0gJ2lmcmFtZScgfHwgbm9kZU5hbWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBUaGUgZnJhbWUgb3Igb2JqZWN0J3MgY29udGVudCBtYXkgYmUgdGFiYmFibGUgZGVwZW5kaW5nIG9uIHRoZSBjb250ZW50LCBidXQgaXQnc1xuICAgICAgLy8gbm90IHBvc3NpYmx5IHRvIHJlbGlhYmx5IGRldGVjdCB0aGUgY29udGVudCBvZiB0aGUgZnJhbWVzLiBXZSBhbHdheXMgY29uc2lkZXIgc3VjaFxuICAgICAgLy8gZWxlbWVudHMgYXMgbm9uLXRhYmJhYmxlLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEluIGlPUywgdGhlIGJyb3dzZXIgb25seSBjb25zaWRlcnMgc29tZSBzcGVjaWZpYyBlbGVtZW50cyBhcyB0YWJiYWJsZS5cbiAgICBpZiAodGhpcy5fcGxhdGZvcm0uV0VCS0lUICYmIHRoaXMuX3BsYXRmb3JtLklPUyAmJiAhaXNQb3RlbnRpYWxseVRhYmJhYmxlSU9TKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG5vZGVOYW1lID09PSAnYXVkaW8nKSB7XG4gICAgICAvLyBBdWRpbyBlbGVtZW50cyB3aXRob3V0IGNvbnRyb2xzIGVuYWJsZWQgYXJlIG5ldmVyIHRhYmJhYmxlLCByZWdhcmRsZXNzXG4gICAgICAvLyBvZiB0aGUgdGFiaW5kZXggYXR0cmlidXRlIGV4cGxpY2l0bHkgYmVpbmcgc2V0LlxuICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnY29udHJvbHMnKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBdWRpbyBlbGVtZW50cyB3aXRoIGNvbnRyb2xzIGFyZSBieSBkZWZhdWx0IHRhYmJhYmxlIHVubGVzcyB0aGVcbiAgICAgIC8vIHRhYmluZGV4IGF0dHJpYnV0ZSBpcyBzZXQgdG8gYC0xYCBleHBsaWNpdGx5LlxuICAgICAgcmV0dXJuIHRhYkluZGV4VmFsdWUgIT09IC0xO1xuICAgIH1cblxuICAgIGlmIChub2RlTmFtZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgLy8gRm9yIGFsbCB2aWRlbyBlbGVtZW50cywgaWYgdGhlIHRhYmluZGV4IGF0dHJpYnV0ZSBpcyBzZXQgdG8gYC0xYCwgdGhlIHZpZGVvXG4gICAgICAvLyBpcyBub3QgdGFiYmFibGUuIE5vdGU6IFdlIGNhbm5vdCByZWx5IG9uIHRoZSBkZWZhdWx0IGBIVE1MRWxlbWVudC50YWJJbmRleGBcbiAgICAgIC8vIHByb3BlcnR5IGFzIHRoYXQgb25lIGlzIHNldCB0byBgLTFgIGluIENocm9tZSwgRWRnZSBhbmQgU2FmYXJpIHYxMy4xLiBUaGVcbiAgICAgIC8vIHRhYmluZGV4IGF0dHJpYnV0ZSBpcyB0aGUgc291cmNlIG9mIHRydXRoIGhlcmUuXG4gICAgICBpZiAodGFiSW5kZXhWYWx1ZSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHRhYmluZGV4IGlzIGV4cGxpY2l0bHkgc2V0LCBhbmQgbm90IGAtMWAgKGFzIHBlciBjaGVjayBiZWZvcmUpLCB0aGVcbiAgICAgIC8vIHZpZGVvIGVsZW1lbnQgaXMgYWx3YXlzIHRhYmJhYmxlIChyZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaGFzIGNvbnRyb2xzIG9yIG5vdCkuXG4gICAgICBpZiAodGFiSW5kZXhWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIE90aGVyd2lzZSAod2hlbiBubyBleHBsaWNpdCB0YWJpbmRleCBpcyBzZXQpLCBhIHZpZGVvIGlzIG9ubHkgdGFiYmFibGUgaWYgaXRcbiAgICAgIC8vIGhhcyBjb250cm9scyBlbmFibGVkLiBGaXJlZm94IGlzIHNwZWNpYWwgYXMgdmlkZW9zIGFyZSBhbHdheXMgdGFiYmFibGUgcmVnYXJkbGVzc1xuICAgICAgLy8gb2Ygd2hldGhlciB0aGVyZSBhcmUgY29udHJvbHMgb3Igbm90LlxuICAgICAgcmV0dXJuIHRoaXMuX3BsYXRmb3JtLkZJUkVGT1ggfHwgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2NvbnRyb2xzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnQudGFiSW5kZXggPj0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHdoZXRoZXIgYW4gZWxlbWVudCBjYW4gYmUgZm9jdXNlZCBieSB0aGUgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB0byBiZSBjaGVja2VkLlxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWcgb2JqZWN0IHdpdGggb3B0aW9ucyB0byBjdXN0b21pemUgdGhpcyBtZXRob2QncyBiZWhhdmlvclxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIGZvY3VzYWJsZS5cbiAgICovXG4gIGlzRm9jdXNhYmxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc/OiBJc0ZvY3VzYWJsZUNvbmZpZyk6IGJvb2xlYW4ge1xuICAgIC8vIFBlcmZvcm0gY2hlY2tzIGluIG9yZGVyIG9mIGxlZnQgdG8gbW9zdCBleHBlbnNpdmUuXG4gICAgLy8gQWdhaW4sIG5haXZlIGFwcHJvYWNoIHRoYXQgZG9lcyBub3QgY2FwdHVyZSBtYW55IGVkZ2UgY2FzZXMgYW5kIGJyb3dzZXIgcXVpcmtzLlxuICAgIHJldHVybiBpc1BvdGVudGlhbGx5Rm9jdXNhYmxlKGVsZW1lbnQpICYmICF0aGlzLmlzRGlzYWJsZWQoZWxlbWVudCkgJiZcbiAgICAgIChjb25maWc/Lmlnbm9yZVZpc2liaWxpdHkgfHwgdGhpcy5pc1Zpc2libGUoZWxlbWVudCkpO1xuICB9XG5cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmcmFtZSBlbGVtZW50IGZyb20gYSB3aW5kb3cgb2JqZWN0LiBTaW5jZSBicm93c2VycyBsaWtlIE1TIEVkZ2UgdGhyb3cgZXJyb3JzIGlmXG4gKiB0aGUgZnJhbWVFbGVtZW50IHByb3BlcnR5IGlzIGJlaW5nIGFjY2Vzc2VkIGZyb20gYSBkaWZmZXJlbnQgaG9zdCBhZGRyZXNzLCB0aGlzIHByb3BlcnR5XG4gKiBzaG91bGQgYmUgYWNjZXNzZWQgY2FyZWZ1bGx5LlxuICovXG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luZG93OiBXaW5kb3cpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gd2luZG93LmZyYW1lRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBoYXMgYW55IGdlb21ldHJ5IC8gcmVjdGFuZ2xlcy4gKi9cbmZ1bmN0aW9uIGhhc0dlb21ldHJ5KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIC8vIFVzZSBsb2dpYyBmcm9tIGpRdWVyeSB0byBjaGVjayBmb3IgYW4gaW52aXNpYmxlIGVsZW1lbnQuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iL21hc3Rlci9zcmMvY3NzL2hpZGRlblZpc2libGVTZWxlY3RvcnMuanMjTDEyXG4gIHJldHVybiAhIShlbGVtZW50Lm9mZnNldFdpZHRoIHx8IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8XG4gICAgKHR5cGVvZiBlbGVtZW50LmdldENsaWVudFJlY3RzID09PSAnZnVuY3Rpb24nICYmIGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpKTtcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBlbGVtZW50J3MgICovXG5mdW5jdGlvbiBpc05hdGl2ZUZvcm1FbGVtZW50KGVsZW1lbnQ6IE5vZGUpIHtcbiAgbGV0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbm9kZU5hbWUgPT09ICdpbnB1dCcgfHxcbiAgICBub2RlTmFtZSA9PT0gJ3NlbGVjdCcgfHxcbiAgICBub2RlTmFtZSA9PT0gJ2J1dHRvbicgfHxcbiAgICBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJztcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIGFuIGA8aW5wdXQgdHlwZT1cImhpZGRlblwiPmAuICovXG5mdW5jdGlvbiBpc0hpZGRlbklucHV0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0lucHV0RWxlbWVudChlbGVtZW50KSAmJiBlbGVtZW50LnR5cGUgPT0gJ2hpZGRlbic7XG59XG5cbi8qKiBHZXRzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBhbiBhbmNob3IgdGhhdCBoYXMgYW4gaHJlZiBhdHRyaWJ1dGUuICovXG5mdW5jdGlvbiBpc0FuY2hvcldpdGhIcmVmKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0FuY2hvckVsZW1lbnQoZWxlbWVudCkgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2hyZWYnKTtcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIGFuIGlucHV0IGVsZW1lbnQuICovXG5mdW5jdGlvbiBpc0lucHV0RWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgSFRNTElucHV0RWxlbWVudCB7XG4gIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2lucHV0Jztcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIGFuIGFuY2hvciBlbGVtZW50LiAqL1xuZnVuY3Rpb24gaXNBbmNob3JFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogZWxlbWVudCBpcyBIVE1MQW5jaG9yRWxlbWVudCB7XG4gIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2EnO1xufVxuXG4vKiogR2V0cyB3aGV0aGVyIGFuIGVsZW1lbnQgaGFzIGEgdmFsaWQgdGFiaW5kZXguICovXG5mdW5jdGlvbiBoYXNWYWxpZFRhYkluZGV4KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHwgZWxlbWVudC50YWJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IHRhYkluZGV4ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG5cbiAgLy8gSUUxMSBwYXJzZXMgdGFiaW5kZXg9XCJcIiBhcyB0aGUgdmFsdWUgXCItMzI3NjhcIlxuICBpZiAodGFiSW5kZXggPT0gJy0zMjc2OCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gISEodGFiSW5kZXggJiYgIWlzTmFOKHBhcnNlSW50KHRhYkluZGV4LCAxMCkpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJzZWQgdGFiaW5kZXggZnJvbSB0aGUgZWxlbWVudCBhdHRyaWJ1dGVzIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZVxuICogZXZhbHVhdGVkIHRhYmluZGV4IGZyb20gdGhlIGJyb3dzZXJzIGRlZmF1bHRzLlxuICovXG5mdW5jdGlvbiBnZXRUYWJJbmRleFZhbHVlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICghaGFzVmFsaWRUYWJJbmRleChlbGVtZW50KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gU2VlIGJyb3dzZXIgaXNzdWUgaW4gR2Vja28gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyODA1NFxuICBjb25zdCB0YWJJbmRleCA9IHBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpIHx8ICcnLCAxMCk7XG5cbiAgcmV0dXJuIGlzTmFOKHRhYkluZGV4KSA/IC0xIDogdGFiSW5kZXg7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgaXMgcG90ZW50aWFsbHkgdGFiYmFibGUgb24gaU9TICovXG5mdW5jdGlvbiBpc1BvdGVudGlhbGx5VGFiYmFibGVJT1MoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgbGV0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICBsZXQgaW5wdXRUeXBlID0gbm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgKGVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZTtcblxuICByZXR1cm4gaW5wdXRUeXBlID09PSAndGV4dCdcbiAgICB8fCBpbnB1dFR5cGUgPT09ICdwYXNzd29yZCdcbiAgICB8fCBub2RlTmFtZSA9PT0gJ3NlbGVjdCdcbiAgICB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJztcbn1cblxuLyoqXG4gKiBHZXRzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBwb3RlbnRpYWxseSBmb2N1c2FibGUgd2l0aG91dCB0YWtpbmcgY3VycmVudCB2aXNpYmxlL2Rpc2FibGVkIHN0YXRlXG4gKiBpbnRvIGFjY291bnQuXG4gKi9cbmZ1bmN0aW9uIGlzUG90ZW50aWFsbHlGb2N1c2FibGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgLy8gSW5wdXRzIGFyZSBwb3RlbnRpYWxseSBmb2N1c2FibGUgKnVubGVzcyogdGhleSdyZSB0eXBlPVwiaGlkZGVuXCIuXG4gIGlmIChpc0hpZGRlbklucHV0KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzTmF0aXZlRm9ybUVsZW1lbnQoZWxlbWVudCkgfHxcbiAgICBpc0FuY2hvcldpdGhIcmVmKGVsZW1lbnQpIHx8XG4gICAgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpIHx8XG4gICAgaGFzVmFsaWRUYWJJbmRleChlbGVtZW50KTtcbn1cblxuLyoqIEdldHMgdGhlIHBhcmVudCB3aW5kb3cgb2YgYSBET00gbm9kZSB3aXRoIHJlZ2FyZHMgb2YgYmVpbmcgaW5zaWRlIG9mIGFuIGlmcmFtZS4gKi9cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlOiBIVE1MRWxlbWVudCk6IFdpbmRvdyB7XG4gIC8vIG93bmVyRG9jdW1lbnQgaXMgbnVsbCBpZiBgbm9kZWAgaXRzZWxmICppcyogYSBkb2N1bWVudC5cbiAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCAmJiBub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufVxuIl19
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpdml0eS1jaGVja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ZvY3VzLXRyYXAvaW50ZXJhY3Rpdml0eS1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILG9CQUFvQjtBQUVwQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUUzQzs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDRTs7V0FFRztRQUNILHFCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNwQyxDQUFDO0NBQUE7QUFFRCxpRkFBaUY7QUFDakYsNkZBQTZGO0FBQzdGLGFBQWE7QUFFYjs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLE9BQW9CO1FBQzdCLDRGQUE0RjtRQUM1RixzRkFBc0Y7UUFDdEYsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLE9BQW9CO1FBQzVCLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxPQUFvQjtRQUM3Qix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FB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bEQsbUVBQW1FO0lBQ25FLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztRQUNqQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDekIsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztRQUN2QyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLFNBQVMsU0FBUyxDQUFDLElBQWlCO0lBQ2xDLDBEQUEwRDtJQUMxRCxPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cblxuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICcuL3BsYXRmb3JtJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgaXNGb2N1c2FibGUgbWV0aG9kLlxuICovXG5leHBvcnQgY2xhc3MgSXNGb2N1c2FibGVDb25maWcge1xuICAvKipcbiAgICogV2hldGhlciB0byBjb3VudCBhbiBlbGVtZW50IGFzIGZvY3VzYWJsZSBldmVuIGlmIGl0IGlzIG5vdCBjdXJyZW50bHkgdmlzaWJsZS5cbiAgICovXG4gIGlnbm9yZVZpc2liaWxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcbn1cblxuLy8gVGhlIEludGVyYWN0aXZpdHlDaGVja2VyIGxlYW5zIGhlYXZpbHkgb24gdGhlIGFsbHkuanMgYWNjZXNzaWJpbGl0eSB1dGlsaXRpZXMuXG4vLyBNZXRob2RzIGxpa2UgYGlzVGFiYmFibGVgIGFyZSBvbmx5IGNvdmVyaW5nIHNwZWNpZmljIGVkZ2UtY2FzZXMgZm9yIHRoZSBicm93c2VycyB3aGljaCBhcmVcbi8vIHN1cHBvcnRlZC5cblxuLyoqXG4gKiBVdGlsaXR5IGZvciBjaGVja2luZyB0aGUgaW50ZXJhY3Rpdml0eSBvZiBhbiBlbGVtZW50LCBzdWNoIGFzIHdoZXRoZXIgaXMgaXMgZm9jdXNhYmxlIG9yXG4gKiB0YWJiYWJsZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGl2aXR5Q2hlY2tlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtKSB7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZWxlbWVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIGlzRGlzYWJsZWQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAvLyBUaGlzIGRvZXMgbm90IGNhcHR1cmUgc29tZSBjYXNlcywgc3VjaCBhcyBhIG5vbi1mb3JtIGNvbnRyb2wgd2l0aCBhIGRpc2FibGVkIGF0dHJpYnV0ZSBvclxuICAgIC8vIGEgZm9ybSBjb250cm9sIGluc2lkZSBvZiBhIGRpc2FibGVkIGZvcm0sIGJ1dCBzaG91bGQgY2FwdHVyZSB0aGUgbW9zdCBjb21tb24gY2FzZXMuXG4gICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIHZpc2libGUgZm9yIHRoZSBwdXJwb3NlcyBvZiBpbnRlcmFjdGl2aXR5LlxuICAgKlxuICAgKiBUaGlzIHdpbGwgY2FwdHVyZSBzdGF0ZXMgbGlrZSBgZGlzcGxheTogbm9uZWAgYW5kIGB2aXNpYmlsaXR5OiBoaWRkZW5gLCBidXQgbm90IHRoaW5ncyBsaWtlXG4gICAqIGJlaW5nIGNsaXBwZWQgYnkgYW4gYG92ZXJmbG93OiBoaWRkZW5gIHBhcmVudCBvciBiZWluZyBvdXRzaWRlIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLlxuICAgKi9cbiAgaXNWaXNpYmxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGhhc0dlb21ldHJ5KGVsZW1lbnQpICYmIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkudmlzaWJpbGl0eSA9PT0gJ3Zpc2libGUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGNhbiBiZSByZWFjaGVkIHZpYSBUYWIga2V5LlxuICAgKiBBc3N1bWVzIHRoYXQgdGhlIGVsZW1lbnQgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkIHdpdGggaXNGb2N1c2FibGUuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZWxlbWVudCBpcyB0YWJiYWJsZS5cbiAgICovXG4gIGlzVGFiYmFibGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAvLyBOb3RoaW5nIGlzIHRhYmJhYmxlIG9uIHRoZSBzZXJ2ZXIg8J+YjlxuICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KGdldFdpbmRvdyhlbGVtZW50KSk7XG5cbiAgICBpZiAoZnJhbWVFbGVtZW50KSB7XG4gICAgICAvLyBGcmFtZSBlbGVtZW50cyBpbmhlcml0IHRoZWlyIHRhYmluZGV4IG9udG8gYWxsIGNoaWxkIGVsZW1lbnRzLlxuICAgICAgaWYgKGdldFRhYkluZGV4VmFsdWUoZnJhbWVFbGVtZW50KSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBCcm93c2VycyBkaXNhYmxlIHRhYmJpbmcgdG8gYW4gZWxlbWVudCBpbnNpZGUgb2YgYW4gaW52aXNpYmxlIGZyYW1lLlxuICAgICAgaWYgKCF0aGlzLmlzVmlzaWJsZShmcmFtZUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgbGV0IHRhYkluZGV4VmFsdWUgPSBnZXRUYWJJbmRleFZhbHVlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSkge1xuICAgICAgcmV0dXJuIHRhYkluZGV4VmFsdWUgIT09IC0xO1xuICAgIH1cblxuICAgIGlmIChub2RlTmFtZSA9PT0gJ2lmcmFtZScgfHwgbm9kZU5hbWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBUaGUgZnJhbWUgb3Igb2JqZWN0J3MgY29udGVudCBtYXkgYmUgdGFiYmFibGUgZGVwZW5kaW5nIG9uIHRoZSBjb250ZW50LCBidXQgaXQnc1xuICAgICAgLy8gbm90IHBvc3NpYmx5IHRvIHJlbGlhYmx5IGRldGVjdCB0aGUgY29udGVudCBvZiB0aGUgZnJhbWVzLiBXZSBhbHdheXMgY29uc2lkZXIgc3VjaFxuICAgICAgLy8gZWxlbWVudHMgYXMgbm9uLXRhYmJhYmxlLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEluIGlPUywgdGhlIGJyb3dzZXIgb25seSBjb25zaWRlcnMgc29tZSBzcGVjaWZpYyBlbGVtZW50cyBhcyB0YWJiYWJsZS5cbiAgICBpZiAodGhpcy5fcGxhdGZvcm0uV0VCS0lUICYmIHRoaXMuX3BsYXRmb3JtLklPUyAmJiAhaXNQb3RlbnRpYWxseVRhYmJhYmxlSU9TKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG5vZGVOYW1lID09PSAnYXVkaW8nKSB7XG4gICAgICAvLyBBdWRpbyBlbGVtZW50cyB3aXRob3V0IGNvbnRyb2xzIGVuYWJsZWQgYXJlIG5ldmVyIHRhYmJhYmxlLCByZWdhcmRsZXNzXG4gICAgICAvLyBvZiB0aGUgdGFiaW5kZXggYXR0cmlidXRlIGV4cGxpY2l0bHkgYmVpbmcgc2V0LlxuICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnY29udHJvbHMnKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBdWRpbyBlbGVtZW50cyB3aXRoIGNvbnRyb2xzIGFyZSBieSBkZWZhdWx0IHRhYmJhYmxlIHVubGVzcyB0aGVcbiAgICAgIC8vIHRhYmluZGV4IGF0dHJpYnV0ZSBpcyBzZXQgdG8gYC0xYCBleHBsaWNpdGx5LlxuICAgICAgcmV0dXJuIHRhYkluZGV4VmFsdWUgIT09IC0xO1xuICAgIH1cblxuICAgIGlmIChub2RlTmFtZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgLy8gRm9yIGFsbCB2aWRlbyBlbGVtZW50cywgaWYgdGhlIHRhYmluZGV4IGF0dHJpYnV0ZSBpcyBzZXQgdG8gYC0xYCwgdGhlIHZpZGVvXG4gICAgICAvLyBpcyBub3QgdGFiYmFibGUuIE5vdGU6IFdlIGNhbm5vdCByZWx5IG9uIHRoZSBkZWZhdWx0IGBIVE1MRWxlbWVudC50YWJJbmRleGBcbiAgICAgIC8vIHByb3BlcnR5IGFzIHRoYXQgb25lIGlzIHNldCB0byBgLTFgIGluIENocm9tZSwgRWRnZSBhbmQgU2FmYXJpIHYxMy4xLiBUaGVcbiAgICAgIC8vIHRhYmluZGV4IGF0dHJpYnV0ZSBpcyB0aGUgc291cmNlIG9mIHRydXRoIGhlcmUuXG4gICAgICBpZiAodGFiSW5kZXhWYWx1ZSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHRhYmluZGV4IGlzIGV4cGxpY2l0bHkgc2V0LCBhbmQgbm90IGAtMWAgKGFzIHBlciBjaGVjayBiZWZvcmUpLCB0aGVcbiAgICAgIC8vIHZpZGVvIGVsZW1lbnQgaXMgYWx3YXlzIHRhYmJhYmxlIChyZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaGFzIGNvbnRyb2xzIG9yIG5vdCkuXG4gICAgICBpZiAodGFiSW5kZXhWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIE90aGVyd2lzZSAod2hlbiBubyBleHBsaWNpdCB0YWJpbmRleCBpcyBzZXQpLCBhIHZpZGVvIGlzIG9ubHkgdGFiYmFibGUgaWYgaXRcbiAgICAgIC8vIGhhcyBjb250cm9scyBlbmFibGVkLiBGaXJlZm94IGlzIHNwZWNpYWwgYXMgdmlkZW9zIGFyZSBhbHdheXMgdGFiYmFibGUgcmVnYXJkbGVzc1xuICAgICAgLy8gb2Ygd2hldGhlciB0aGVyZSBhcmUgY29udHJvbHMgb3Igbm90LlxuICAgICAgcmV0dXJuIHRoaXMuX3BsYXRmb3JtLkZJUkVGT1ggfHwgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2NvbnRyb2xzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnQudGFiSW5kZXggPj0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHdoZXRoZXIgYW4gZWxlbWVudCBjYW4gYmUgZm9jdXNlZCBieSB0aGUgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB0byBiZSBjaGVja2VkLlxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWcgb2JqZWN0IHdpdGggb3B0aW9ucyB0byBjdXN0b21pemUgdGhpcyBtZXRob2QncyBiZWhhdmlvclxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIGZvY3VzYWJsZS5cbiAgICovXG4gIGlzRm9jdXNhYmxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc/OiBJc0ZvY3VzYWJsZUNvbmZpZyk6IGJvb2xlYW4ge1xuICAgIC8vIFBlcmZvcm0gY2hlY2tzIGluIG9yZGVyIG9mIGxlZnQgdG8gbW9zdCBleHBlbnNpdmUuXG4gICAgLy8gQWdhaW4sIG5haXZlIGFwcHJvYWNoIHRoYXQgZG9lcyBub3QgY2FwdHVyZSBtYW55IGVkZ2UgY2FzZXMgYW5kIGJyb3dzZXIgcXVpcmtzLlxuICAgIHJldHVybiBpc1BvdGVudGlhbGx5Rm9jdXNhYmxlKGVsZW1lbnQpICYmICF0aGlzLmlzRGlzYWJsZWQoZWxlbWVudCkgJiZcbiAgICAgIChjb25maWc/Lmlnbm9yZVZpc2liaWxpdHkgfHwgdGhpcy5pc1Zpc2libGUoZWxlbWVudCkpO1xuICB9XG5cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmcmFtZSBlbGVtZW50IGZyb20gYSB3aW5kb3cgb2JqZWN0LiBTaW5jZSBicm93c2VycyBsaWtlIE1TIEVkZ2UgdGhyb3cgZXJyb3JzIGlmXG4gKiB0aGUgZnJhbWVFbGVtZW50IHByb3BlcnR5IGlzIGJlaW5nIGFjY2Vzc2VkIGZyb20gYSBkaWZmZXJlbnQgaG9zdCBhZGRyZXNzLCB0aGlzIHByb3BlcnR5XG4gKiBzaG91bGQgYmUgYWNjZXNzZWQgY2FyZWZ1bGx5LlxuICovXG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luZG93OiBXaW5kb3cpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gd2luZG93LmZyYW1lRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBoYXMgYW55IGdlb21ldHJ5IC8gcmVjdGFuZ2xlcy4gKi9cbmZ1bmN0aW9uIGhhc0dlb21ldHJ5KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIC8vIFVzZSBsb2dpYyBmcm9tIGpRdWVyeSB0byBjaGVjayBmb3IgYW4gaW52aXNpYmxlIGVsZW1lbnQuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iL21hc3Rlci9zcmMvY3NzL2hpZGRlblZpc2libGVTZWxlY3RvcnMuanMjTDEyXG4gIHJldHVybiAhIShlbGVtZW50Lm9mZnNldFdpZHRoIHx8IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8XG4gICAgKHR5cGVvZiBlbGVtZW50LmdldENsaWVudFJlY3RzID09PSAnZnVuY3Rpb24nICYmIGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpKTtcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBlbGVtZW50J3MgICovXG5mdW5jdGlvbiBpc05hdGl2ZUZvcm1FbGVtZW50KGVsZW1lbnQ6IE5vZGUpIHtcbiAgbGV0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbm9kZU5hbWUgPT09ICdpbnB1dCcgfHxcbiAgICBub2RlTmFtZSA9PT0gJ3NlbGVjdCcgfHxcbiAgICBub2RlTmFtZSA9PT0gJ2J1dHRvbicgfHxcbiAgICBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJztcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIGFuIGA8aW5wdXQgdHlwZT1cImhpZGRlblwiPmAuICovXG5mdW5jdGlvbiBpc0hpZGRlbklucHV0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0lucHV0RWxlbWVudChlbGVtZW50KSAmJiBlbGVtZW50LnR5cGUgPT0gJ2hpZGRlbic7XG59XG5cbi8qKiBHZXRzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBhbiBhbmNob3IgdGhhdCBoYXMgYW4gaHJlZiBhdHRyaWJ1dGUuICovXG5mdW5jdGlvbiBpc0FuY2hvcldpdGhIcmVmKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0FuY2hvckVsZW1lbnQoZWxlbWVudCkgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2hyZWYnKTtcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIGFuIGlucHV0IGVsZW1lbnQuICovXG5mdW5jdGlvbiBpc0lucHV0RWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgSFRNTElucHV0RWxlbWVudCB7XG4gIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2lucHV0Jztcbn1cblxuLyoqIEdldHMgd2hldGhlciBhbiBlbGVtZW50IGlzIGFuIGFuY2hvciBlbGVtZW50LiAqL1xuZnVuY3Rpb24gaXNBbmNob3JFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogZWxlbWVudCBpcyBIVE1MQW5jaG9yRWxlbWVudCB7XG4gIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2EnO1xufVxuXG4vKiogR2V0cyB3aGV0aGVyIGFuIGVsZW1lbnQgaGFzIGEgdmFsaWQgdGFiaW5kZXguICovXG5mdW5jdGlvbiBoYXNWYWxpZFRhYkluZGV4KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHwgZWxlbWVudC50YWJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IHRhYkluZGV4ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG5cbiAgLy8gSUUxMSBwYXJzZXMgdGFiaW5kZXg9XCJcIiBhcyB0aGUgdmFsdWUgXCItMzI3NjhcIlxuICBpZiAodGFiSW5kZXggPT0gJy0zMjc2OCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gISEodGFiSW5kZXggJiYgIWlzTmFOKHBhcnNlSW50KHRhYkluZGV4LCAxMCkpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJzZWQgdGFiaW5kZXggZnJvbSB0aGUgZWxlbWVudCBhdHRyaWJ1dGVzIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZVxuICogZXZhbHVhdGVkIHRhYmluZGV4IGZyb20gdGhlIGJyb3dzZXJzIGRlZmF1bHRzLlxuICovXG5mdW5jdGlvbiBnZXRUYWJJbmRleFZhbHVlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICghaGFzVmFsaWRUYWJJbmRleChlbGVtZW50KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gU2VlIGJyb3dzZXIgaXNzdWUgaW4gR2Vja28gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyODA1NFxuICBjb25zdCB0YWJJbmRleCA9IHBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpIHx8ICcnLCAxMCk7XG5cbiAgcmV0dXJuIGlzTmFOKHRhYkluZGV4KSA/IC0xIDogdGFiSW5kZXg7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgaXMgcG90ZW50aWFsbHkgdGFiYmFibGUgb24gaU9TICovXG5mdW5jdGlvbiBpc1BvdGVudGlhbGx5VGFiYmFibGVJT1MoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgbGV0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICBsZXQgaW5wdXRUeXBlID0gbm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgKGVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZTtcblxuICByZXR1cm4gaW5wdXRUeXBlID09PSAndGV4dCdcbiAgICB8fCBpbnB1dFR5cGUgPT09ICdwYXNzd29yZCdcbiAgICB8fCBub2RlTmFtZSA9PT0gJ3NlbGVjdCdcbiAgICB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJztcbn1cblxuLyoqXG4gKiBHZXRzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBwb3RlbnRpYWxseSBmb2N1c2FibGUgd2l0aG91dCB0YWtpbmcgY3VycmVudCB2aXNpYmxlL2Rpc2FibGVkIHN0YXRlXG4gKiBpbnRvIGFjY291bnQuXG4gKi9cbmZ1bmN0aW9uIGlzUG90ZW50aWFsbHlGb2N1c2FibGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgLy8gSW5wdXRzIGFyZSBwb3RlbnRpYWxseSBmb2N1c2FibGUgKnVubGVzcyogdGhleSdyZSB0eXBlPVwiaGlkZGVuXCIuXG4gIGlmIChpc0hpZGRlbklucHV0KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzTmF0aXZlRm9ybUVsZW1lbnQoZWxlbWVudCkgfHxcbiAgICBpc0FuY2hvcldpdGhIcmVmKGVsZW1lbnQpIHx8XG4gICAgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpIHx8XG4gICAgaGFzVmFsaWRUYWJJbmRleChlbGVtZW50KTtcbn1cblxuLyoqIEdldHMgdGhlIHBhcmVudCB3aW5kb3cgb2YgYSBET00gbm9kZSB3aXRoIHJlZ2FyZHMgb2YgYmVpbmcgaW5zaWRlIG9mIGFuIGlmcmFtZS4gKi9cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlOiBIVE1MRWxlbWVudCk6IFdpbmRvdyB7XG4gIC8vIG93bmVyRG9jdW1lbnQgaXMgbnVsbCBpZiBgbm9kZWAgaXRzZWxmICppcyogYSBkb2N1bWVudC5cbiAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCAmJiBub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufVxuIl19
|