@norwegian/core-components 6.59.0 → 7.0.0
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/assets/fonts/NorwegianDisplay-Bold.ttf +0 -0
- package/assets/fonts/NorwegianDisplay-Regular.ttf +0 -0
- package/assets/fonts/NorwegianDisplayPro-Bold.otf +0 -0
- package/assets/fonts/NorwegianDisplayPro-Bold.woff +0 -0
- package/assets/fonts/NorwegianDisplayPro-Bold.woff2 +0 -0
- package/assets/fonts/NorwegianDisplayPro-Regular.otf +0 -0
- package/assets/fonts/NorwegianDisplayPro-Regular.woff +0 -0
- package/assets/fonts/NorwegianDisplayPro-Regular.woff2 +0 -0
- package/assets/fonts/NorwegianText-Bold.ttf +0 -0
- package/assets/fonts/NorwegianText-BoldItalic.ttf +0 -0
- package/assets/fonts/NorwegianText-Regular.ttf +0 -0
- package/assets/fonts/NorwegianText-RegularItalic.ttf +0 -0
- package/assets/fonts/NorwegianTextPro-Bold.otf +0 -0
- package/assets/fonts/NorwegianTextPro-Bold.woff +0 -0
- package/assets/fonts/NorwegianTextPro-Bold.woff2 +0 -0
- package/assets/fonts/NorwegianTextPro-BoldItalic.otf +0 -0
- package/assets/fonts/NorwegianTextPro-BoldItalic.woff +0 -0
- package/assets/fonts/NorwegianTextPro-BoldItalic.woff2 +0 -0
- package/assets/fonts/NorwegianTextPro-Regular.otf +0 -0
- package/assets/fonts/NorwegianTextPro-Regular.woff +0 -0
- package/assets/fonts/NorwegianTextPro-Regular.woff2 +0 -0
- package/assets/fonts/NorwegianTextPro-RegularItalic.otf +0 -0
- package/assets/fonts/NorwegianTextPro-RegularItalic.woff +0 -0
- package/assets/fonts/NorwegianTextPro-RegularItalic.woff2 +0 -0
- package/esm2022/lib/components/accordion/accordion.component.mjs +3 -3
- package/esm2022/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.mjs +10 -7
- package/esm2022/lib/components/airport-select/airport-select.component.mjs +43 -12
- package/esm2022/lib/components/airport-select/airport-select.module.mjs +4 -4
- package/esm2022/lib/components/airport-select/index.mjs +1 -2
- package/esm2022/lib/components/airport-select/models/results-labels.model.mjs +1 -1
- package/esm2022/lib/components/airport-select/services/airport-select-dropdown.service.mjs +2 -2
- package/esm2022/lib/components/airport-select/services/airport-select.service.mjs +3 -3
- package/esm2022/lib/components/alert/alert.component.mjs +5 -5
- package/esm2022/lib/components/alert/alert.module.mjs +4 -4
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +25 -5
- package/esm2022/lib/components/autocomplete/autocomplete.module.mjs +4 -4
- package/esm2022/lib/components/autocomplete/index.mjs +1 -2
- package/esm2022/lib/components/box/box.component.mjs +2 -2
- package/esm2022/lib/components/button/button.component.mjs +16 -11
- package/esm2022/lib/components/button/button.module.mjs +1 -1
- package/esm2022/lib/components/campaign-header/campaign-header.component.mjs +2 -2
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/lib/components/checkbox/checkbox.module.mjs +1 -1
- package/esm2022/lib/components/continue/continue.component.mjs +2 -2
- package/esm2022/lib/components/continue/continue.module.mjs +1 -1
- package/esm2022/lib/components/cover/cover.component.mjs +2 -2
- package/esm2022/lib/components/cover/cover.module.mjs +1 -1
- package/esm2022/lib/components/datepicker/calendar/calendar.component.mjs +29 -5
- package/esm2022/lib/components/datepicker/calendar/models/day.model.mjs +1 -1
- package/esm2022/lib/components/datepicker/calendar/models/select-option.model.mjs +1 -1
- package/esm2022/lib/components/datepicker/calendar/models/week.model.mjs +1 -1
- package/esm2022/lib/components/datepicker/datepicker.component.mjs +25 -11
- package/esm2022/lib/components/datepicker/datepicker.module.mjs +4 -4
- package/esm2022/lib/components/datepicker/index.mjs +2 -1
- package/esm2022/lib/components/datepicker/services/calendar.service.mjs +7 -5
- package/esm2022/lib/components/datepicker-combo/datepicker-combo.component.mjs +38 -11
- package/esm2022/lib/components/datepicker-combo/datepicker-combo.module.mjs +14 -6
- package/esm2022/lib/components/divider/divider.component.mjs +4 -4
- package/esm2022/lib/components/divider/divider.module.mjs +6 -6
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +2 -2
- package/esm2022/lib/components/filter/filter.component.mjs +139 -72
- package/esm2022/lib/components/filter/filter.module.mjs +23 -11
- package/esm2022/lib/components/filter/index.mjs +2 -1
- package/esm2022/lib/components/icon-list/icon-list.component.mjs +2 -2
- package/esm2022/lib/components/index.mjs +13 -15
- package/esm2022/lib/components/info/info.component.mjs +2 -2
- package/esm2022/lib/components/input/input.component.mjs +61 -14
- package/esm2022/lib/components/input/input.module.mjs +2 -2
- package/esm2022/lib/components/journey/journey.component.mjs +2 -2
- package/esm2022/lib/components/journey-availability/journey-availability.component.mjs +2 -2
- package/esm2022/lib/components/journey-availability-list/journey-availability-list.component.mjs +2 -2
- package/esm2022/lib/components/journey-selection/journey-selection.component.mjs +2 -2
- package/esm2022/lib/components/journey-stopover/journey-stopover.component.mjs +2 -2
- package/esm2022/lib/components/list/list.component.mjs +3 -3
- package/esm2022/lib/components/micro-button/micro-button.component.mjs +2 -2
- package/esm2022/lib/components/modal/modal.component.mjs +2 -2
- package/esm2022/lib/components/number-field/number-field.component.mjs +11 -4
- package/esm2022/lib/components/number-field/number-field.module.mjs +1 -1
- package/esm2022/lib/components/page-footer/page-footer.component.mjs +2 -2
- package/esm2022/lib/components/page-header/page-header.component.mjs +2 -2
- package/esm2022/lib/components/page-header/page-header.module.mjs +2 -6
- package/esm2022/lib/components/page-header/search/search.component.mjs +2 -2
- package/esm2022/lib/components/page-header/wallet/wallet.component.mjs +9 -6
- package/esm2022/lib/components/passenger-select/index.mjs +3 -1
- package/esm2022/lib/components/passenger-select/models/passengers.model.mjs +1 -1
- package/esm2022/lib/components/passenger-select/passenger-select.component.mjs +12 -6
- package/esm2022/lib/components/passenger-select/passenger-select.module.mjs +14 -6
- package/esm2022/lib/components/phone-number/phone-number.component.mjs +2 -2
- package/esm2022/lib/components/radio/radio.component.mjs +4 -4
- package/esm2022/lib/components/ribbon-banner/ribbon-banner.component.mjs +2 -2
- package/esm2022/lib/components/select/select.component.mjs +2 -2
- package/esm2022/lib/components/simple-list/simple-list.component.mjs +2 -2
- package/esm2022/lib/components/slide-toggle/slide-toggle.component.mjs +14 -14
- package/esm2022/lib/components/slide-toggle/slide-toggle.module.mjs +1 -1
- package/esm2022/lib/components/slider/slider.component.mjs +4 -4
- package/esm2022/lib/components/sort/sort.component.mjs +2 -2
- package/esm2022/lib/components/sort/sort.module.mjs +1 -1
- package/esm2022/lib/components/spinner/spinner.component.mjs +2 -2
- package/esm2022/lib/components/status-box/status-box.component.mjs +5 -6
- package/esm2022/lib/components/status-box/status-box.module.mjs +5 -5
- package/esm2022/lib/components/subsidy-discount/subsidy-discount.component.mjs +2 -2
- package/esm2022/lib/components/suggestions/suggestions.component.mjs +3 -3
- package/esm2022/lib/components/tab-group/tab/tab.component.mjs +2 -2
- package/esm2022/lib/components/table/table.component.mjs +2 -2
- package/esm2022/lib/components/tag/tag.component.mjs +2 -2
- package/esm2022/lib/components/textarea/textarea.component.mjs +2 -2
- package/esm2022/lib/components/toggle/models/options.model.mjs +1 -1
- package/esm2022/lib/components/toggle/toggle.component.mjs +11 -3
- package/esm2022/lib/components/trip-summary/trip-summary.component.mjs +2 -2
- package/esm2022/lib/core/directives/nas-class/nas-class.module.mjs +1 -1
- package/fesm2022/norwegian-core-components.mjs +4614 -10814
- package/fesm2022/norwegian-core-components.mjs.map +1 -1
- package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +3 -2
- package/lib/components/airport-select/airport-select.component.d.ts +21 -6
- package/lib/components/airport-select/index.d.ts +0 -1
- package/lib/components/alert/alert.module.d.ts +4 -4
- package/lib/components/autocomplete/autocomplete.component.d.ts +8 -4
- package/lib/components/autocomplete/index.d.ts +0 -1
- package/lib/components/button/button.component.d.ts +35 -26
- package/lib/components/checkbox/checkbox.component.d.ts +1 -1
- package/lib/components/datepicker/calendar/calendar.component.d.ts +11 -1
- package/lib/components/datepicker/calendar/models/day.model.d.ts +1 -0
- package/lib/components/datepicker/datepicker.component.d.ts +20 -2
- package/lib/components/datepicker/index.d.ts +1 -0
- package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +26 -3
- package/lib/components/divider/divider.module.d.ts +3 -3
- package/lib/components/filter/filter.component.d.ts +80 -24
- package/lib/components/filter/filter.module.d.ts +10 -7
- package/lib/components/filter/index.d.ts +1 -0
- package/lib/components/index.d.ts +12 -14
- package/lib/components/input/input.component.d.ts +21 -17
- package/lib/components/list/list.component.d.ts +1 -1
- package/lib/components/number-field/number-field.component.d.ts +10 -2
- package/lib/components/page-header/page-header.module.d.ts +2 -3
- package/lib/components/page-header/wallet/wallet.component.d.ts +1 -0
- package/lib/components/passenger-select/index.d.ts +2 -0
- package/lib/components/passenger-select/models/passengers.model.d.ts +1 -0
- package/lib/components/passenger-select/passenger-select.component.d.ts +2 -2
- package/lib/components/radio/radio.component.d.ts +1 -1
- package/lib/components/slide-toggle/slide-toggle.component.d.ts +9 -9
- package/lib/components/slider/slider.component.d.ts +3 -3
- package/lib/components/status-box/status-box.component.d.ts +3 -3
- package/lib/components/status-box/status-box.module.d.ts +2 -2
- package/lib/components/toggle/models/options.model.d.ts +1 -0
- package/lib/components/toggle/toggle.component.d.ts +1 -0
- package/package.json +1 -1
- package/styles/1__settings/_colors.scss +107 -53
- package/styles/1__settings/_mixins.scss +78 -30
- package/styles/1__settings/_type.scss +17 -43
- package/styles/2__generic/_fonts.scss +16 -28
- package/styles/3__base/_body.scss +3 -3
- package/styles/3__base/_heading.scss +28 -20
- package/styles/3__base/_hr.scss +4 -4
- package/styles/3__base/_input.scss +3 -3
- package/styles/3__base/_link.scss +17 -17
- package/styles/3__base/_table.scss +9 -5
- package/styles/3__base/_type.scss +4 -4
- package/assets/documentation/autocomplete-new/autocomplete-new.md +0 -1
- package/assets/documentation/datepicker/calendar/calendar.md +0 -3
- package/assets/documentation/filter-new/filter-new.md +0 -0
- package/assets/documentation/number-field-new/number-field-new.md +0 -1
- package/assets/documentation/page-header-old/page-header-old.md +0 -1
- package/assets/documentation/weather-icon/weather-icon.md +0 -1
- package/assets/fonts/apercu_bold_italic_pro-web.eot +0 -0
- package/assets/fonts/apercu_bold_italic_pro-web.svg +0 -12420
- package/assets/fonts/apercu_bold_italic_pro-web.ttf +0 -0
- package/assets/fonts/apercu_bold_italic_pro-web.woff +0 -0
- package/assets/fonts/apercu_bold_italic_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_bold_italic_pro.otf +0 -0
- package/assets/fonts/apercu_bold_pro-web.eot +0 -0
- package/assets/fonts/apercu_bold_pro-web.svg +0 -10193
- package/assets/fonts/apercu_bold_pro-web.ttf +0 -0
- package/assets/fonts/apercu_bold_pro-web.woff +0 -0
- package/assets/fonts/apercu_bold_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_bold_pro.otf +0 -0
- package/assets/fonts/apercu_light_italic_pro-web.eot +0 -0
- package/assets/fonts/apercu_light_italic_pro-web.svg +0 -12831
- package/assets/fonts/apercu_light_italic_pro-web.ttf +0 -0
- package/assets/fonts/apercu_light_italic_pro-web.woff +0 -0
- package/assets/fonts/apercu_light_italic_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_light_pro-web.eot +0 -0
- package/assets/fonts/apercu_light_pro-web.svg +0 -9704
- package/assets/fonts/apercu_light_pro-web.ttf +0 -0
- package/assets/fonts/apercu_light_pro-web.woff +0 -0
- package/assets/fonts/apercu_light_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_medium_italic_pro-web.eot +0 -0
- package/assets/fonts/apercu_medium_italic_pro-web.svg +0 -12354
- package/assets/fonts/apercu_medium_italic_pro-web.ttf +0 -0
- package/assets/fonts/apercu_medium_italic_pro-web.woff +0 -0
- package/assets/fonts/apercu_medium_italic_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_medium_italic_pro.otf +0 -0
- package/assets/fonts/apercu_medium_pro-web.eot +0 -0
- package/assets/fonts/apercu_medium_pro-web.svg +0 -12254
- package/assets/fonts/apercu_medium_pro-web.ttf +0 -0
- package/assets/fonts/apercu_medium_pro-web.woff +0 -0
- package/assets/fonts/apercu_medium_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_medium_pro.otf +0 -0
- package/assets/fonts/apercu_mono_pro-web.eot +0 -0
- package/assets/fonts/apercu_mono_pro-web.svg +0 -538
- package/assets/fonts/apercu_mono_pro-web.ttf +0 -0
- package/assets/fonts/apercu_mono_pro-web.woff +0 -0
- package/assets/fonts/apercu_mono_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_regular_italic_pro-web.eot +0 -0
- package/assets/fonts/apercu_regular_italic_pro-web.svg +0 -13059
- package/assets/fonts/apercu_regular_italic_pro-web.ttf +0 -0
- package/assets/fonts/apercu_regular_italic_pro-web.woff +0 -0
- package/assets/fonts/apercu_regular_italic_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_regular_italic_pro.otf +0 -0
- package/assets/fonts/apercu_regular_pro-web.eot +0 -0
- package/assets/fonts/apercu_regular_pro-web.svg +0 -11356
- package/assets/fonts/apercu_regular_pro-web.ttf +0 -0
- package/assets/fonts/apercu_regular_pro-web.woff +0 -0
- package/assets/fonts/apercu_regular_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_regular_pro.otf +0 -0
- package/esm2022/lib/components/airport-select-new/airport-select-dropdown/airport-select-dropdown.component.mjs +0 -611
- package/esm2022/lib/components/airport-select-new/airport-select-new.component.mjs +0 -477
- package/esm2022/lib/components/airport-select-new/airport-select-new.module.mjs +0 -42
- package/esm2022/lib/components/airport-select-new/index.mjs +0 -4
- package/esm2022/lib/components/airport-select-new/models/airport.model.mjs +0 -2
- package/esm2022/lib/components/airport-select-new/models/results-labels.model.mjs +0 -3
- package/esm2022/lib/components/airport-select-new/services/airport-select-dropdown.service.mjs +0 -35
- package/esm2022/lib/components/airport-select-new/services/airport-select.service.mjs +0 -38
- package/esm2022/lib/components/autocomplete-new/autocomplete-new.component.mjs +0 -309
- package/esm2022/lib/components/autocomplete-new/autocomplete-new.module.mjs +0 -43
- package/esm2022/lib/components/autocomplete-new/index.mjs +0 -3
- package/esm2022/lib/components/autocomplete-new/models/autocomplete-new.model.mjs +0 -2
- package/esm2022/lib/components/button-new/button-new.component.mjs +0 -176
- package/esm2022/lib/components/button-new/button-new.module.mjs +0 -21
- package/esm2022/lib/components/button-new/index.mjs +0 -3
- package/esm2022/lib/components/checkbox-new/checkbox-new.component.mjs +0 -150
- package/esm2022/lib/components/checkbox-new/checkbox-new.module.mjs +0 -20
- package/esm2022/lib/components/checkbox-new/index.mjs +0 -3
- package/esm2022/lib/components/datepicker-combo-new/datepicker-combo-new.component.mjs +0 -397
- package/esm2022/lib/components/datepicker-combo-new/datepicker-combo-new.module.mjs +0 -31
- package/esm2022/lib/components/datepicker-combo-new/index.mjs +0 -3
- package/esm2022/lib/components/datepicker-new/calendar-new/calendar-date.model.mjs +0 -2
- package/esm2022/lib/components/datepicker-new/calendar-new/calendar-new.component.mjs +0 -594
- package/esm2022/lib/components/datepicker-new/calendar-new/enums/week-start.enum.mjs +0 -6
- package/esm2022/lib/components/datepicker-new/calendar-new/models/day.model.mjs +0 -2
- package/esm2022/lib/components/datepicker-new/calendar-new/models/select-option.model.mjs +0 -2
- package/esm2022/lib/components/datepicker-new/calendar-new/models/week.model.mjs +0 -2
- package/esm2022/lib/components/datepicker-new/datepicker-new.component.mjs +0 -572
- package/esm2022/lib/components/datepicker-new/datepicker-new.module.mjs +0 -55
- package/esm2022/lib/components/datepicker-new/index.mjs +0 -5
- package/esm2022/lib/components/datepicker-new/services/calendar.service.mjs +0 -215
- package/esm2022/lib/components/filter-new/enums/trip-type.enum.mjs +0 -8
- package/esm2022/lib/components/filter-new/filter-new.component.mjs +0 -1349
- package/esm2022/lib/components/filter-new/filter-new.module.mjs +0 -105
- package/esm2022/lib/components/filter-new/index.mjs +0 -4
- package/esm2022/lib/components/input-text/index.mjs +0 -3
- package/esm2022/lib/components/input-text/input-text.component.mjs +0 -231
- package/esm2022/lib/components/input-text/input-text.module.mjs +0 -35
- package/esm2022/lib/components/number-field-new/index.mjs +0 -3
- package/esm2022/lib/components/number-field-new/models/number-field-new.model.mjs +0 -2
- package/esm2022/lib/components/number-field-new/number-field-new.component.mjs +0 -155
- package/esm2022/lib/components/number-field-new/number-field-new.module.mjs +0 -39
- package/esm2022/lib/components/page-header-old/index.mjs +0 -5
- package/esm2022/lib/components/page-header-old/old-hamburger/old-hamburger.component.mjs +0 -22
- package/esm2022/lib/components/page-header-old/old-search/old-search.component.mjs +0 -49
- package/esm2022/lib/components/page-header-old/page-header-old.component.mjs +0 -160
- package/esm2022/lib/components/page-header-old/page-header-old.module.mjs +0 -44
- package/esm2022/lib/components/passenger-select-new/enums/passenger-type.enum.mjs +0 -9
- package/esm2022/lib/components/passenger-select-new/index.mjs +0 -5
- package/esm2022/lib/components/passenger-select-new/models/passengers.model.mjs +0 -2
- package/esm2022/lib/components/passenger-select-new/passenger-select-new.component.mjs +0 -417
- package/esm2022/lib/components/passenger-select-new/passenger-select-new.module.mjs +0 -28
- package/esm2022/lib/components/radio-new/index.mjs +0 -3
- package/esm2022/lib/components/radio-new/radio-new.component.mjs +0 -100
- package/esm2022/lib/components/radio-new/radio-new.module.mjs +0 -20
- package/esm2022/lib/components/slide-toggle-new/index.mjs +0 -3
- package/esm2022/lib/components/slide-toggle-new/slide-toggle-new.component.mjs +0 -115
- package/esm2022/lib/components/slide-toggle-new/slide-toggle-new.module.mjs +0 -20
- package/esm2022/lib/components/weather-icon/index.mjs +0 -3
- package/esm2022/lib/components/weather-icon/weather-icon.component.mjs +0 -61
- package/esm2022/lib/components/weather-icon/weather-icon.module.mjs +0 -19
- package/lib/components/airport-select-new/airport-select-dropdown/airport-select-dropdown.component.d.ts +0 -97
- package/lib/components/airport-select-new/airport-select-new.component.d.ts +0 -302
- package/lib/components/airport-select-new/airport-select-new.module.d.ts +0 -13
- package/lib/components/airport-select-new/index.d.ts +0 -2
- package/lib/components/airport-select-new/models/airport.model.d.ts +0 -11
- package/lib/components/airport-select-new/models/results-labels.model.d.ts +0 -7
- package/lib/components/airport-select-new/services/airport-select-dropdown.service.d.ts +0 -10
- package/lib/components/airport-select-new/services/airport-select.service.d.ts +0 -8
- package/lib/components/autocomplete-new/autocomplete-new.component.d.ts +0 -135
- package/lib/components/autocomplete-new/autocomplete-new.module.d.ts +0 -13
- package/lib/components/autocomplete-new/index.d.ts +0 -2
- package/lib/components/autocomplete-new/models/autocomplete-new.model.d.ts +0 -5
- package/lib/components/button-new/button-new.component.d.ts +0 -276
- package/lib/components/button-new/button-new.module.d.ts +0 -11
- package/lib/components/button-new/index.d.ts +0 -2
- package/lib/components/checkbox-new/checkbox-new.component.d.ts +0 -138
- package/lib/components/checkbox-new/checkbox-new.module.d.ts +0 -10
- package/lib/components/checkbox-new/index.d.ts +0 -2
- package/lib/components/datepicker-combo-new/datepicker-combo-new.component.d.ts +0 -309
- package/lib/components/datepicker-combo-new/datepicker-combo-new.module.d.ts +0 -10
- package/lib/components/datepicker-combo-new/index.d.ts +0 -2
- package/lib/components/datepicker-new/calendar-new/calendar-date.model.d.ts +0 -5
- package/lib/components/datepicker-new/calendar-new/calendar-new.component.d.ts +0 -159
- package/lib/components/datepicker-new/calendar-new/enums/week-start.enum.d.ts +0 -4
- package/lib/components/datepicker-new/calendar-new/models/day.model.d.ts +0 -10
- package/lib/components/datepicker-new/calendar-new/models/select-option.model.d.ts +0 -4
- package/lib/components/datepicker-new/calendar-new/models/week.model.d.ts +0 -5
- package/lib/components/datepicker-new/datepicker-new.component.d.ts +0 -278
- package/lib/components/datepicker-new/datepicker-new.module.d.ts +0 -16
- package/lib/components/datepicker-new/index.d.ts +0 -4
- package/lib/components/datepicker-new/services/calendar.service.d.ts +0 -27
- package/lib/components/filter-new/enums/trip-type.enum.d.ts +0 -6
- package/lib/components/filter-new/filter-new.component.d.ts +0 -838
- package/lib/components/filter-new/filter-new.module.d.ts +0 -28
- package/lib/components/filter-new/index.d.ts +0 -3
- package/lib/components/input-text/index.d.ts +0 -2
- package/lib/components/input-text/input-text.component.d.ts +0 -203
- package/lib/components/input-text/input-text.module.d.ts +0 -11
- package/lib/components/number-field-new/index.d.ts +0 -2
- package/lib/components/number-field-new/models/number-field-new.model.d.ts +0 -5
- package/lib/components/number-field-new/number-field-new.component.d.ts +0 -116
- package/lib/components/number-field-new/number-field-new.module.d.ts +0 -12
- package/lib/components/page-header-old/index.d.ts +0 -4
- package/lib/components/page-header-old/old-hamburger/old-hamburger.component.d.ts +0 -12
- package/lib/components/page-header-old/old-search/old-search.component.d.ts +0 -26
- package/lib/components/page-header-old/page-header-old.component.d.ts +0 -112
- package/lib/components/page-header-old/page-header-old.module.d.ts +0 -14
- package/lib/components/passenger-select-new/enums/passenger-type.enum.d.ts +0 -7
- package/lib/components/passenger-select-new/index.d.ts +0 -4
- package/lib/components/passenger-select-new/models/passengers.model.d.ts +0 -10
- package/lib/components/passenger-select-new/passenger-select-new.component.d.ts +0 -141
- package/lib/components/passenger-select-new/passenger-select-new.module.d.ts +0 -10
- package/lib/components/radio-new/index.d.ts +0 -2
- package/lib/components/radio-new/radio-new.component.d.ts +0 -135
- package/lib/components/radio-new/radio-new.module.d.ts +0 -10
- package/lib/components/slide-toggle-new/index.d.ts +0 -2
- package/lib/components/slide-toggle-new/slide-toggle-new.component.d.ts +0 -70
- package/lib/components/slide-toggle-new/slide-toggle-new.module.d.ts +0 -10
- package/lib/components/weather-icon/index.d.ts +0 -2
- package/lib/components/weather-icon/weather-icon.component.d.ts +0 -60
- package/lib/components/weather-icon/weather-icon.module.d.ts +0 -9
|
@@ -11,6 +11,7 @@ import * as i3 from "../services/calendar.service";
|
|
|
11
11
|
import * as i4 from "../../select/select.component";
|
|
12
12
|
import * as i5 from "../../icon/icon.component";
|
|
13
13
|
import * as i6 from "../../../core/directives/nas-class/nas-class.directive";
|
|
14
|
+
let nextId = 0;
|
|
14
15
|
export class CalendarComponent extends NasComponentBase {
|
|
15
16
|
/**
|
|
16
17
|
* @description
|
|
@@ -149,7 +150,7 @@ export class CalendarComponent extends NasComponentBase {
|
|
|
149
150
|
if (!this.currentMonth) {
|
|
150
151
|
return '';
|
|
151
152
|
}
|
|
152
|
-
return `${this.monthNames[this.currentMonth.toDate().getUTCMonth()]}
|
|
153
|
+
return `${this.monthNames[this.currentMonth.toDate().getUTCMonth()]} ${this.currentMonth.toDate().getUTCFullYear()}`;
|
|
153
154
|
}
|
|
154
155
|
/**
|
|
155
156
|
* @description
|
|
@@ -158,6 +159,15 @@ export class CalendarComponent extends NasComponentBase {
|
|
|
158
159
|
get activeDateCell() {
|
|
159
160
|
return document.querySelector('.nas-calendar__item--active');
|
|
160
161
|
}
|
|
162
|
+
get inputId() {
|
|
163
|
+
return this.id ? this.id : `nas-calendar-${this.componentId}`;
|
|
164
|
+
}
|
|
165
|
+
get prevMonthId() {
|
|
166
|
+
return `${this.inputId}__prev-month`;
|
|
167
|
+
}
|
|
168
|
+
get nextMonthId() {
|
|
169
|
+
return `${this.inputId}__next-month`;
|
|
170
|
+
}
|
|
161
171
|
constructor(dateService, datePipe, calendarService) {
|
|
162
172
|
super('nas-calendar');
|
|
163
173
|
this.dateService = dateService;
|
|
@@ -200,6 +210,7 @@ export class CalendarComponent extends NasComponentBase {
|
|
|
200
210
|
this.maxMonthIndex = 13;
|
|
201
211
|
this.monthNames = new Array();
|
|
202
212
|
this.shouldFocusCalendarOnAvailableDatesUpdate = false;
|
|
213
|
+
this.componentId = nextId++;
|
|
203
214
|
}
|
|
204
215
|
ngOnInit() {
|
|
205
216
|
if (!this.ariaLabelPreviousMonth) {
|
|
@@ -394,10 +405,20 @@ export class CalendarComponent extends NasComponentBase {
|
|
|
394
405
|
this.activeDate = this.dateService.utcDate(day.date);
|
|
395
406
|
}
|
|
396
407
|
onDayClick(day) {
|
|
408
|
+
if (this.dateService.isGreaterThan(this.dateService.utcDate(day.date), this.activeDate)) {
|
|
409
|
+
}
|
|
397
410
|
if (!day.isAvailable) {
|
|
398
411
|
return;
|
|
399
412
|
}
|
|
400
413
|
this.setSelectedDate(this.dateService.utcDate(day.date));
|
|
414
|
+
this.availableDays.forEach(date => {
|
|
415
|
+
if (this.activeDate && this.selectedDate) {
|
|
416
|
+
const utcDate = this.dateService.utcDate(day.date);
|
|
417
|
+
const withinRange = this.dateService.isGreaterThan(utcDate, this.selectedDate) &&
|
|
418
|
+
this.dateService.isLessThan(utcDate, this.activeDate);
|
|
419
|
+
date.isWithinRange = withinRange;
|
|
420
|
+
}
|
|
421
|
+
});
|
|
401
422
|
}
|
|
402
423
|
setSelectedDate(date) {
|
|
403
424
|
if (!date) {
|
|
@@ -437,7 +458,8 @@ export class CalendarComponent extends NasComponentBase {
|
|
|
437
458
|
!this.dateService.isSameMonth(this.dateService.utcDate(day.date), this.currentMonth) && 'empty',
|
|
438
459
|
day.isAvailable && 'available',
|
|
439
460
|
'large',
|
|
440
|
-
day.isActive && 'active'
|
|
461
|
+
day.isActive && 'active',
|
|
462
|
+
day.isWithinRange && 'within-range'
|
|
441
463
|
]);
|
|
442
464
|
}
|
|
443
465
|
getNextMonth() {
|
|
@@ -502,7 +524,7 @@ export class CalendarComponent extends NasComponentBase {
|
|
|
502
524
|
this.weeks = this.calendarService.getWeeks(this.availableDays, this.weekStart);
|
|
503
525
|
}
|
|
504
526
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.DateHelper }, { token: i2.DatePipe }, { token: i3.CalendarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
505
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: CalendarComponent, selector: "nas-calendar", inputs: { noAvailableFlightsLabel: "noAvailableFlightsLabel", availableFlightsLabel: "availableFlightsLabel", disablePastSelection: "disablePastSelection", lowerLimitDate: "lowerLimitDate", date: "date", weekStart: "weekStart", displayWeekNumbers: "displayWeekNumbers", availability: "availability", locale: "locale", availableDates: "availableDates", activeDate: "activeDate", selectedDate: "selectedDate", nasFormGroup: "nasFormGroup", nasFormControlName: "nasFormControlName", dateDisplayFormat: "dateDisplayFormat", ariaLabelPreviousMonth: "ariaLabelPreviousMonth", ariaLabelNextMonth: "ariaLabelNextMonth" }, outputs: { monthChange: "monthChange", focusOnNextChange: "focusOnNextChange", selectedDateChange: "selectedDateChange", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "previousMonthRef", first: true, predicate: ["previousMonthRef"], descendants: true }, { propertyName: "nextMonthRef", first: true, predicate: ["nextMonthRef"], descendants: true }, { propertyName: "calendarContent", first: true, predicate: ["calendarContent"], descendants: true }, { propertyName: "monthSelectRef", first: true, predicate: ["monthSelect"], descendants: true }, { propertyName: "tableCells", predicate: ["tableCells"], descendants: true }, { propertyName: "dateButtons", predicate: ["dateButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [nasClass]=\"getClass()\">\n <span [nasClass]=\"getClass('arrow')\"></span>\n <div #calendarContent\n tabindex=\"0\"\n [nasClass]=\"getClass('content')\">\n <header [nasClass]=\"getClass('header')\">\n <button type=\"button\"\n #previousMonthRef\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelPreviousMonth\"\n [nasClass]=\"getClass('nav')\"\n [disabled]=\"isPreviousMonthDisabled === true\"\n (keydown)=\"onPreviousMonthKeydown($event)\"\n (mousedown)=\"onPreviousMonthMousedown()\">\n <nas-icon tabindex=\"-1\"\n [type]=\"'arrow-left--light'\"></nas-icon>\n </button>\n <ng-container *ngIf=\"months?.length > 0; else currentMonthTemplate\">\n <nas-select #monthSelect\n [cssClass]=\"getClass('month')\"\n [inline]=\"true\"\n [simple]=\"true\"\n [options]=\"months\"\n [(selected)]=\"selectedMonth\"\n (keydown)=\"onMonthSelectKeydown($event)\"></nas-select>\n </ng-container>\n <ng-template #currentMonthTemplate>\n {{currentMonthModel}}\n </ng-template>\n <button type=\"button\"\n tabindex=\"0\"\n #nextMonthRef\n [nasClass]=\"getClass('nav')\"\n [attr.aria-label]=\"ariaLabelNextMonth\"\n [disabled]=\"nextMonthDisabled\"\n (keydown)=\"onNextMonthKeydown($event)\"\n (mousedown)=\"onNextMonthMousedown()\">\n <nas-icon [type]=\"'arrow-right--light'\"></nas-icon>\n </button>\n </header>\n <table [nasClass]=\"getClass('table')\">\n <thead>\n <tr>\n <th *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\"></th>\n <th [nasClass]=\"getClass('cell')\"\n *ngFor=\"let weekday of weekdays\">\n <div [nasClass]=\"getClass('item', 'header')\">{{weekday}}</div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of weeks\"\n [nasClass]=\"getClass('row', 'animate')\">\n <td *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\">\n <span [nasClass]=\"getClass('date', 'week-number')\">{{week.weekNumber}}</span>\n </td>\n <td [nasClass]=\"getClass('cell')\"\n *ngFor=\"let day of week?.days\"\n #tableCells>\n <div [nasClass]=\"getClass('item', 'dummy')\"\n *ngIf=\"day === null; else dayTemplate\"></div>\n <ng-template #dayTemplate\n tabindex=\"0\">\n <button type=\"button\"\n #dateButton\n (keydown)=\"dateKeyDown($event)\"\n tabIndex=\"0\"\n [nasClass]=\"getCellButtonClass(day)\"\n (mousedown)=\"onMouseDown(day.date, $event)\"\n (click)=\"onDayClick(day)\"\n (focus)=\"onDayFocus(day)\">\n <div [nasClass]=\"getClass('date-wrapper')\">\n <span [nasClass]=\"getClass('date')\"\n [attr.aria-label]=\"day.date | date : 'dd':'UTC'\">{{day.date | date : 'dd':'UTC':locale}}</span>\n </div>\n </button>\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n <div [nasClass]=\"getClass('footer')\">\n <div *ngIf=\"availableDates?.length === 0 && noAvailableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <nas-icon [icon]=\"'alert'\"></nas-icon>\n {{noAvailableFlightsLabel}}\n </div>\n <div *ngIf=\"availableDates?.length > 0 && noAvailableFlightsLabel && availableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <div [nasClass]=\"getClass('item', 'available')\"></div>\n <div [nasClass]=\"getClass('footer', 'label')\">{{availableFlightsLabel}}</div>\n <span [nasClass]=\"getClass('item', 'unavailable')\"></span>\n <div [nasClass]=\"getClass('footer', 'label')\">{{noAvailableFlightsLabel}}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-calendar{max-width:375px;float:right;border:3px solid #15273f;padding:10px;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:flip-in .55s ease both;margin-top:3px;position:relative}.nas-calendar__content:active{outline:none;box-shadow:none}.nas-calendar__content:focus{outline:none;box-shadow:none}@media (min-width: 640px){.nas-calendar{margin-right:15px}}.nas-calendar__cover{margin-bottom:16px}.nas-calendar__header{position:relative;display:flex;justify-content:center;height:48px}.nas-calendar__month{max-width:200px;margin:0 auto 21px}.nas-calendar__table{table-layout:fixed;width:100%}.nas-calendar__week-number{font-size:14px;line-height:20px;position:relative;width:20px;display:none}@media (min-width: 640px){.nas-calendar__week-number{display:table-cell}}.nas-calendar__cell{padding:0}.nas-calendar__nav{position:absolute;margin:0 2px 12px;flex-shrink:0;width:24px;height:24px;border-radius:50%;background-color:#15273f;transition:transform .2s cubic-bezier(0,0,.1,1),opacity .2s ease-out}.nas-calendar__nav .nas-icon-arrow-left--light,.nas-calendar__nav .nas-icon-arrow-right--light{position:absolute;top:50%;left:50%}.nas-calendar__nav .nas-icon-arrow-left--light{transform:translate(-60%,-50%)}.nas-calendar__nav .nas-icon-arrow-right--light{transform:translate(-40%,-50%)}.nas-calendar__nav:first-child{left:0}.nas-calendar__nav:last-child{right:0}.nas-calendar__nav:hover,.nas-calendar__nav:focus{background-color:#002a3a;outline:none;border:3px solid #3b99fc}.nas-calendar__nav:active{transform:translateY(2px)}.nas-calendar__nav[disabled]{pointer-events:none;opacity:.5}.nas-calendar__item{font-size:14px;line-height:20px;display:flex;flex-direction:column;cursor:pointer;overflow:hidden;width:100%;height:36px;text-align:left;outline:0;padding:2px;border:1px solid #fff;transition:transform .17s cubic-bezier(0,0,.1,1);border-radius:0;align-items:center;justify-content:center;pointer-events:none;opacity:.5;background-color:#fff}.nas-calendar__item .nas-calendar__date{color:#002a3a}@media (min-width: 640px){.nas-calendar__item{padding:2px 6px}}@media (min-width: 1000px){.nas-calendar__item{padding:2px 3px}}@media (min-width: 1180px){.nas-calendar__item{padding:2px 6px}}.nas-calendar__item--large{height:36px}.nas-calendar__item--header{pointer-events:none;height:auto;background-color:transparent;border:0;opacity:1}@media (min-width: 640px){.nas-calendar__item--header{padding-left:11px}}.nas-calendar__item--dummy{visibility:hidden}.nas-calendar__item--today .nas-calendar__date{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#002a3a}.nas-calendar__item--cheapest{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#e5212d}.nas-calendar__item--empty{pointer-events:none;opacity:.3;border-color:#fff;background-color:#fff}.nas-calendar__item--empty .nas-calendar__date{color:inherit}.nas-calendar__item--available{pointer-events:all;opacity:1;border-color:#fff;background-color:#c3c3c3}.nas-calendar__item--available .nas-calendar__date{color:#002a3a}.nas-calendar__item--active{border-color:#15273f;border-width:3px}.nas-calendar__item--before{pointer-events:none;color:#a9a9a9;opacity:.55}.nas-calendar__item:hover,.nas-calendar__item:focus{border-color:#15273f;border-width:3px;box-shadow:inset 0 0 2px #c3c3c3,inset 0 0 2px 3px #3b99fc}.nas-calendar__item:active{transform:translateY(3px)}.nas-calendar__item--selected,.nas-calendar__item:active{color:#fff;background-color:#e5212d}.nas-calendar__item--selected:hover,.nas-calendar__item--selected:focus,.nas-calendar__item:active:hover,.nas-calendar__item:active:focus{border-color:#15273f;border-width:3px}.nas-calendar__item--selected .nas-calendar__date,.nas-calendar__item:active .nas-calendar__date{color:inherit}.nas-calendar__item--sold-out{pointer-events:none;opacity:.8;border-color:#fff;background-color:#fff}.nas-calendar__item--sold-out .nas-calendar__date{color:#002a3a}.nas-calendar__item[disabled]{pointer-events:none}.nas-calendar__date{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#6f6f6f}.nas-calendar__date--week-number{top:6px;right:6px}.nas-calendar__price{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:inherit;letter-spacing:-.04em}@media (min-width: 640px){.nas-calendar__price{font-size:14px;line-height:1.1}}@media (min-width: 1280px){.nas-calendar__price{font-size:16px}}.nas-calendar__price--before{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;text-decoration:line-through;font-size:.8em;line-height:1}@media (min-width: 1000px){.nas-calendar__price--before{margin-bottom:2px}}.nas-calendar__sold-out{position:absolute;bottom:2px;left:2px;line-height:1;overflow-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;letter-spacing:-.015em;color:#8c8c8c;font-size:.75em}@media (min-width: 640px){.nas-calendar__sold-out{font-size:.9em;bottom:6px;left:6px}}@media (min-width: 1000px){.nas-calendar__sold-out{left:3px}}@media (min-width: 1180px){.nas-calendar__sold-out{left:6px}}.nas-calendar__transit{position:relative;display:flex;max-width:3.8em;width:calc(100% - 12px);padding:0 .5em 0 .3em;height:8px;justify-content:space-around;margin-bottom:2px;transform:scale(.85);transform-origin:left;background-color:inherit}@media (min-width: 640px){.nas-calendar__transit{transform:none;padding:0 .5em 0 .3em;margin-bottom:3px}}.nas-calendar__transit:before,.nas-calendar__transit:after{content:\"\";position:absolute}.nas-calendar__transit:before{top:calc(50% - 1px);width:100%;left:0;height:2px;background-color:currentColor}.nas-calendar__transit:after{width:8px;height:8px;right:0;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg)}.nas-calendar__transit-indicator{position:relative;width:8px;height:8px;flex-shrink:0;border-radius:50%;border:2px solid currentColor;background-color:#fff}.nas-calendar__asterisk{font-size:.67em;top:-.36em;margin-left:.1em}.nas-calendar__footer{display:flex;justify-content:center}.nas-calendar__footer .nas-calendar__item{width:25px;height:25px;margin-right:3px}.nas-calendar__footer .nas-calendar__item--unavailable{border:1px solid #15273f}.nas-calendar__footer--item{margin-top:12px}.nas-calendar__footer--label{flex-shrink:0;margin-right:12px;display:flex;flex-direction:column;justify-content:center;font-size:14px;line-height:20px}.nas-calendar__arrow{position:absolute;width:16px;height:16px;top:-10px;left:calc(50% - 8px);background-color:inherit;transform:rotate(45deg);border-top:3px solid #15273f;border-left:3px solid #15273f}@keyframes lowfare-item-in{0%{opacity:0;transform:scale(0)}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SelectComponent, selector: "nas-select", inputs: ["id", "inline", "label", "block", "spaceless", "stretch", "compact", "simple", "light", "fill", "error", "errorMessage", "disabled", "autogrow", "cssClass", "nasFormControlName", "nasFormGroup", "options", "selectedValue", "selected"], outputs: ["selectedChange", "keyDownEvent"] }, { kind: "component", type: i5.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "directive", type: i6.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
527
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: CalendarComponent, selector: "nas-calendar", inputs: { id: "id", noAvailableFlightsLabel: "noAvailableFlightsLabel", availableFlightsLabel: "availableFlightsLabel", disablePastSelection: "disablePastSelection", lowerLimitDate: "lowerLimitDate", date: "date", weekStart: "weekStart", displayWeekNumbers: "displayWeekNumbers", availability: "availability", locale: "locale", availableDates: "availableDates", activeDate: "activeDate", selectedDate: "selectedDate", nasFormGroup: "nasFormGroup", nasFormControlName: "nasFormControlName", dateDisplayFormat: "dateDisplayFormat", ariaLabelPreviousMonth: "ariaLabelPreviousMonth", ariaLabelNextMonth: "ariaLabelNextMonth" }, outputs: { monthChange: "monthChange", focusOnNextChange: "focusOnNextChange", selectedDateChange: "selectedDateChange", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "previousMonthRef", first: true, predicate: ["previousMonthRef"], descendants: true }, { propertyName: "nextMonthRef", first: true, predicate: ["nextMonthRef"], descendants: true }, { propertyName: "calendarContent", first: true, predicate: ["calendarContent"], descendants: true }, { propertyName: "monthSelectRef", first: true, predicate: ["monthSelect"], descendants: true }, { propertyName: "tableCells", predicate: ["tableCells"], descendants: true }, { propertyName: "dateButtons", predicate: ["dateButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [nasClass]=\"getClass()\">\n <div #calendarContent tabindex=\"0\" [nasClass]=\"getClass('content')\">\n <header [nasClass]=\"getClass('header')\">\n <button [id]=\"prevMonthId\" type=\"button\" #previousMonthRef tabindex=\"0\" [attr.aria-label]=\"ariaLabelPreviousMonth\"\n [nasClass]=\"getClass('nav')\" [disabled]=\"isPreviousMonthDisabled === true\"\n (keydown)=\"onPreviousMonthKeydown($event)\" (mousedown)=\"onPreviousMonthMousedown()\">\n <nas-icon tabindex=\"-1\" [type]=\"'arrow-left'\"></nas-icon>\n </button>\n <ng-container *ngIf=\"months?.length > 0; else currentMonthTemplate\">\n <nas-select #monthSelect [cssClass]=\"getClass('month')\" [inline]=\"true\" [simple]=\"true\" [options]=\"months\"\n [(selected)]=\"selectedMonth\" (keydown)=\"onMonthSelectKeydown($event)\"></nas-select>\n </ng-container>\n <ng-template #currentMonthTemplate>\n {{currentMonthModel}}\n </ng-template>\n <button [id]=\"nextMonthId\" type=\"button\" tabindex=\"0\" #nextMonthRef [nasClass]=\"getClass('nav')\"\n [attr.aria-label]=\"ariaLabelNextMonth\" [disabled]=\"nextMonthDisabled\" (keydown)=\"onNextMonthKeydown($event)\"\n (mousedown)=\"onNextMonthMousedown()\">\n <nas-icon [type]=\"'arrow-right'\"></nas-icon>\n </button>\n </header>\n\n <!-- Weekdays + Dates -->\n <table [nasClass]=\"getClass('table')\">\n <thead>\n <tr [nasClass]=\"getClass('week')\">\n <th *ngIf=\"exists(displayWeekNumbers)\" [nasClass]=\"getClass('week-number')\"></th>\n <th [nasClass]=\"getClass('cell')\" *ngFor=\"let weekday of weekdays\">\n <div [nasClass]=\"getClass('item', 'header')\">{{weekday}}</div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of weeks\" [nasClass]=\"getClass('row', 'animate')\">\n <td *ngIf=\"exists(displayWeekNumbers)\" [nasClass]=\"getClass('week-number')\">\n <span [nasClass]=\"getClass('date', 'week-number')\">{{week.weekNumber}}</span>\n </td>\n <td [nasClass]=\"getClass('cell')\" *ngFor=\"let day of week?.days\" #tableCells>\n <div [nasClass]=\"getClass('item', 'dummy')\" *ngIf=\"day === null; else dayTemplate\"></div>\n <ng-template #dayTemplate tabindex=\"0\">\n <button id=\"day-{{day.date | date : 'd':'UTC':locale}}\" type=\"button\" #dateButton (keydown)=\"dateKeyDown($event)\" tabIndex=\"0\"\n [nasClass]=\"getCellButtonClass(day)\" (mousedown)=\"onMouseDown(day.date, $event)\"\n (click)=\"onDayClick(day)\" (focus)=\"onDayFocus(day)\">\n <div [nasClass]=\"getClass('date-wrapper')\">\n <span [nasClass]=\"getClass('date')\" [attr.aria-label]=\"day.date | date : 'd':'UTC'\">{{ day.date | date\n : 'd':'UTC':locale }}</span>\n </div>\n </button>\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div [nasClass]=\"getClass('footer')\">\n <div *ngIf=\"availableDates?.length === 0 && noAvailableFlightsLabel\" [nasClass]=\"getClass('footer', 'item')\">\n <nas-icon [icon]=\"'alert'\"></nas-icon>\n {{noAvailableFlightsLabel}}\n </div>\n <div *ngIf=\"availableDates?.length > 0 && noAvailableFlightsLabel && availableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <div [nasClass]=\"getClass('item', 'available')\"></div>\n <div [nasClass]=\"getClass('footer', 'label')\">{{availableFlightsLabel}}</div>\n <span [nasClass]=\"getClass('item', 'unavailable')\"></span>\n <div [nasClass]=\"getClass('footer', 'label')\">{{noAvailableFlightsLabel}}</div>\n </div>\n </div>\n </div>\n</div>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-calendar{z-index:3;width:100%;min-width:300px;float:right;padding:16px 8px;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:flip-in .55s ease both;position:relative;border-left:2px solid #15273F;border-right:2px solid #15273F;border-bottom:2px solid #15273F;z-index:4}@media (min-width: 640px){.nas-calendar{max-width:350px}}@media (min-width: 380px){.nas-calendar{min-width:325px}}.nas-calendar__content:active{outline:none;box-shadow:none}.nas-calendar__content:focus{outline:none;box-shadow:none}.nas-calendar__cover{margin-bottom:16px}.nas-calendar__header{height:30px;font-size:16px;line-height:24px;font-weight:700;display:flex;justify-content:space-between}.nas-calendar__month{margin:0 auto 21px}.nas-calendar__months{background-color:#fff;max-width:350px;display:flex;flex-wrap:wrap;gap:15px}.nas-calendar__months--item{text-transform:uppercase}.nas-calendar__table{table-layout:fixed;width:100%}.nas-calendar__week-number{font-size:14px;line-height:20px;position:relative;width:20px;display:none}@media (min-width: 640px){.nas-calendar__week-number{display:table-cell}}.nas-calendar__cell{padding:0;font-weight:400;color:#15273f}.nas-calendar__nav{margin:-3px 2px 12px;width:24px;height:24px;border-radius:50%;transition:transform .2s cubic-bezier(0,0,.1,1),opacity .2s ease-out}.nas-calendar__nav .nas-icon-arrow-left--light,.nas-calendar__nav .nas-icon-arrow-right--light{position:absolute;top:50%;left:50%}.nas-calendar__nav .nas-icon-arrow-left--light{transform:translate(-60%,-50%)}.nas-calendar__nav .nas-icon-arrow-right--light{transform:translate(-40%,-50%)}.nas-calendar__nav:active{transform:translateY(2px)}.nas-calendar__nav[disabled]{pointer-events:none;opacity:.5}.nas-calendar__item{font-size:14px;line-height:20px;display:flex;flex-direction:column;margin-left:5px;cursor:pointer;overflow:hidden;width:100%;height:40px;text-align:left;outline:0;padding:2px;border:1px solid #FFFFFF;transition:transform .17s cubic-bezier(0,0,.1,1);border-radius:0;align-items:center;justify-content:center;pointer-events:none;opacity:.5;background-color:#fff}.nas-calendar__item .nas-calendar__date{color:#0a2033}@media (min-width: 640px){.nas-calendar__item{padding:2px 6px}}@media (min-width: 1000px){.nas-calendar__item{padding:2px 3px}}@media (min-width: 1180px){.nas-calendar__item{padding:2px 6px}}.nas-calendar__item--large{height:40px;width:37px;height:37px;margin-top:8px;margin-left:2px}@media (min-width: 400px){.nas-calendar__item--large{width:39px;height:39px}}@media (min-width: 415px){.nas-calendar__item--large{width:40px;margin-top:8px;margin-left:6px}}.nas-calendar__item--header{pointer-events:none;background-color:transparent;border:0;opacity:1;padding-bottom:9px;margin-left:0!important}.nas-calendar__item--dummy{visibility:hidden}.nas-calendar__item--today .nas-calendar__date{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#15273f}.nas-calendar__item--cheapest{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#b12a0b}.nas-calendar__item--empty{pointer-events:none;opacity:.3;border-color:#fff;background-color:#fff}.nas-calendar__item--empty .nas-calendar__date{color:inherit}.nas-calendar__item--available{pointer-events:all;opacity:1;border-color:#e9e7e4;background-color:#f8f8f8;border-radius:2px}.nas-calendar__item--available .nas-calendar__date{color:#0a2033}.nas-calendar__item--active{border:2px solid #15273F;background-color:#ebf4ff}.nas-calendar__item--within-range{background-color:#ebf4ff}.nas-calendar__item--before{pointer-events:none;color:#a9a9a9;opacity:.55}.nas-calendar__item:hover,.nas-calendar__item:focus{border-color:#e9e7e4;border-width:2px}.nas-calendar__item:hover .nas-calendar__date,.nas-calendar__item:focus .nas-calendar__date{font-weight:700}.nas-calendar__item:active{transform:translateY(3px)}.nas-calendar__item--selected,.nas-calendar__item:active{color:#fff;background-color:#15273f;height:37px;width:37px;margin-left:5px}@media (min-width: 380px){.nas-calendar__item--selected,.nas-calendar__item:active{height:40px;width:40px}}.nas-calendar__item--selected:hover,.nas-calendar__item--selected:focus,.nas-calendar__item:active:hover,.nas-calendar__item:active:focus{border-color:#15273f;border-width:3px}.nas-calendar__item--selected .nas-calendar__date,.nas-calendar__item:active .nas-calendar__date{color:inherit}.nas-calendar__item--sold-out{pointer-events:none;opacity:.8;border-color:#fff;background-color:#fff}.nas-calendar__item--sold-out .nas-calendar__date{color:#0a2033}.nas-calendar__item[disabled]{pointer-events:none}.nas-calendar__week{border-bottom:1px solid #E9E7E4}.nas-calendar__date{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#6f6f6f}.nas-calendar__date--week-number{top:6px;right:6px}.nas-calendar__date:hover,.nas-calendar__date:focus{font-weight:700}.nas-calendar__price{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:inherit;letter-spacing:-.04em;font-size:14px}@media (min-width: 640px){.nas-calendar__price{font-size:14px;line-height:1.1}}@media (min-width: 1280px){.nas-calendar__price{font-size:16px}}.nas-calendar__price--before{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;text-decoration:line-through;font-size:.8em;line-height:1}@media (min-width: 1000px){.nas-calendar__price--before{margin-bottom:2px}}.nas-calendar__sold-out{position:absolute;bottom:2px;left:2px;line-height:1;overflow-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;letter-spacing:-.015em;color:#8c8c8c;font-size:.75em}@media (min-width: 640px){.nas-calendar__sold-out{font-size:.9em;bottom:6px;left:6px}}@media (min-width: 1000px){.nas-calendar__sold-out{left:3px}}@media (min-width: 1180px){.nas-calendar__sold-out{left:6px}}.nas-calendar__transit{position:relative;display:flex;max-width:3.8em;width:calc(100% - 12px);padding:0 .5em 0 .3em;height:8px;justify-content:space-around;margin-bottom:2px;transform:scale(.85);transform-origin:left;background-color:inherit}@media (min-width: 640px){.nas-calendar__transit{transform:none;padding:0 .5em 0 .3em;margin-bottom:3px}}.nas-calendar__transit:before,.nas-calendar__transit:after{content:\"\";position:absolute}.nas-calendar__transit:before{top:calc(50% - 1px);width:100%;left:0;height:2px;background-color:currentColor}.nas-calendar__transit:after{width:8px;height:8px;right:0;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg)}.nas-calendar__transit-indicator{position:relative;width:8px;height:8px;flex-shrink:0;border-radius:50%;border:2px solid currentColor;background-color:#fff}.nas-calendar__asterisk{font-size:.67em;top:-.36em;margin-left:.1em}.nas-calendar__footer{display:flex;justify-content:center}.nas-calendar__footer .nas-calendar__item{width:25px;height:25px;margin-right:3px}.nas-calendar__footer .nas-calendar__item--unavailable{border:1px solid #15273F}.nas-calendar__footer--item{margin-bottom:6px}.nas-calendar__footer--label{flex-shrink:0;margin-right:12px;display:flex;flex-direction:column;justify-content:center;font-size:14px;line-height:20px}@keyframes lowfare-item-in{0%{opacity:0;transform:scale(0)}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SelectComponent, selector: "nas-select", inputs: ["id", "inline", "label", "block", "spaceless", "stretch", "compact", "simple", "light", "fill", "error", "errorMessage", "disabled", "autogrow", "cssClass", "nasFormControlName", "nasFormGroup", "options", "selectedValue", "selected"], outputs: ["selectedChange", "keyDownEvent"] }, { kind: "component", type: i5.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "directive", type: i6.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
506
528
|
}
|
|
507
529
|
__decorate([
|
|
508
530
|
Debounce(150)
|
|
@@ -518,7 +540,7 @@ __decorate([
|
|
|
518
540
|
], CalendarComponent.prototype, "onPreviousMonthMousedown", null);
|
|
519
541
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
520
542
|
type: Component,
|
|
521
|
-
args: [{ selector: 'nas-calendar', encapsulation: ViewEncapsulation.None, template: "<div [nasClass]=\"getClass()\">\n <span [nasClass]=\"getClass('arrow')\"></span>\n <div #calendarContent\n tabindex=\"0\"\n [nasClass]=\"getClass('content')\">\n <header [nasClass]=\"getClass('header')\">\n <button type=\"button\"\n #previousMonthRef\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelPreviousMonth\"\n [nasClass]=\"getClass('nav')\"\n [disabled]=\"isPreviousMonthDisabled === true\"\n (keydown)=\"onPreviousMonthKeydown($event)\"\n (mousedown)=\"onPreviousMonthMousedown()\">\n <nas-icon tabindex=\"-1\"\n [type]=\"'arrow-left--light'\"></nas-icon>\n </button>\n <ng-container *ngIf=\"months?.length > 0; else currentMonthTemplate\">\n <nas-select #monthSelect\n [cssClass]=\"getClass('month')\"\n [inline]=\"true\"\n [simple]=\"true\"\n [options]=\"months\"\n [(selected)]=\"selectedMonth\"\n (keydown)=\"onMonthSelectKeydown($event)\"></nas-select>\n </ng-container>\n <ng-template #currentMonthTemplate>\n {{currentMonthModel}}\n </ng-template>\n <button type=\"button\"\n tabindex=\"0\"\n #nextMonthRef\n [nasClass]=\"getClass('nav')\"\n [attr.aria-label]=\"ariaLabelNextMonth\"\n [disabled]=\"nextMonthDisabled\"\n (keydown)=\"onNextMonthKeydown($event)\"\n (mousedown)=\"onNextMonthMousedown()\">\n <nas-icon [type]=\"'arrow-right--light'\"></nas-icon>\n </button>\n </header>\n <table [nasClass]=\"getClass('table')\">\n <thead>\n <tr>\n <th *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\"></th>\n <th [nasClass]=\"getClass('cell')\"\n *ngFor=\"let weekday of weekdays\">\n <div [nasClass]=\"getClass('item', 'header')\">{{weekday}}</div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of weeks\"\n [nasClass]=\"getClass('row', 'animate')\">\n <td *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\">\n <span [nasClass]=\"getClass('date', 'week-number')\">{{week.weekNumber}}</span>\n </td>\n <td [nasClass]=\"getClass('cell')\"\n *ngFor=\"let day of week?.days\"\n #tableCells>\n <div [nasClass]=\"getClass('item', 'dummy')\"\n *ngIf=\"day === null; else dayTemplate\"></div>\n <ng-template #dayTemplate\n tabindex=\"0\">\n <button type=\"button\"\n #dateButton\n (keydown)=\"dateKeyDown($event)\"\n tabIndex=\"0\"\n [nasClass]=\"getCellButtonClass(day)\"\n (mousedown)=\"onMouseDown(day.date, $event)\"\n (click)=\"onDayClick(day)\"\n (focus)=\"onDayFocus(day)\">\n <div [nasClass]=\"getClass('date-wrapper')\">\n <span [nasClass]=\"getClass('date')\"\n [attr.aria-label]=\"day.date | date : 'dd':'UTC'\">{{day.date | date : 'dd':'UTC':locale}}</span>\n </div>\n </button>\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n <div [nasClass]=\"getClass('footer')\">\n <div *ngIf=\"availableDates?.length === 0 && noAvailableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <nas-icon [icon]=\"'alert'\"></nas-icon>\n {{noAvailableFlightsLabel}}\n </div>\n <div *ngIf=\"availableDates?.length > 0 && noAvailableFlightsLabel && availableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <div [nasClass]=\"getClass('item', 'available')\"></div>\n <div [nasClass]=\"getClass('footer', 'label')\">{{availableFlightsLabel}}</div>\n <span [nasClass]=\"getClass('item', 'unavailable')\"></span>\n <div [nasClass]=\"getClass('footer', 'label')\">{{noAvailableFlightsLabel}}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-calendar{max-width:375px;float:right;border:3px solid #15273f;padding:10px;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:flip-in .55s ease both;margin-top:3px;position:relative}.nas-calendar__content:active{outline:none;box-shadow:none}.nas-calendar__content:focus{outline:none;box-shadow:none}@media (min-width: 640px){.nas-calendar{margin-right:15px}}.nas-calendar__cover{margin-bottom:16px}.nas-calendar__header{position:relative;display:flex;justify-content:center;height:48px}.nas-calendar__month{max-width:200px;margin:0 auto 21px}.nas-calendar__table{table-layout:fixed;width:100%}.nas-calendar__week-number{font-size:14px;line-height:20px;position:relative;width:20px;display:none}@media (min-width: 640px){.nas-calendar__week-number{display:table-cell}}.nas-calendar__cell{padding:0}.nas-calendar__nav{position:absolute;margin:0 2px 12px;flex-shrink:0;width:24px;height:24px;border-radius:50%;background-color:#15273f;transition:transform .2s cubic-bezier(0,0,.1,1),opacity .2s ease-out}.nas-calendar__nav .nas-icon-arrow-left--light,.nas-calendar__nav .nas-icon-arrow-right--light{position:absolute;top:50%;left:50%}.nas-calendar__nav .nas-icon-arrow-left--light{transform:translate(-60%,-50%)}.nas-calendar__nav .nas-icon-arrow-right--light{transform:translate(-40%,-50%)}.nas-calendar__nav:first-child{left:0}.nas-calendar__nav:last-child{right:0}.nas-calendar__nav:hover,.nas-calendar__nav:focus{background-color:#002a3a;outline:none;border:3px solid #3b99fc}.nas-calendar__nav:active{transform:translateY(2px)}.nas-calendar__nav[disabled]{pointer-events:none;opacity:.5}.nas-calendar__item{font-size:14px;line-height:20px;display:flex;flex-direction:column;cursor:pointer;overflow:hidden;width:100%;height:36px;text-align:left;outline:0;padding:2px;border:1px solid #fff;transition:transform .17s cubic-bezier(0,0,.1,1);border-radius:0;align-items:center;justify-content:center;pointer-events:none;opacity:.5;background-color:#fff}.nas-calendar__item .nas-calendar__date{color:#002a3a}@media (min-width: 640px){.nas-calendar__item{padding:2px 6px}}@media (min-width: 1000px){.nas-calendar__item{padding:2px 3px}}@media (min-width: 1180px){.nas-calendar__item{padding:2px 6px}}.nas-calendar__item--large{height:36px}.nas-calendar__item--header{pointer-events:none;height:auto;background-color:transparent;border:0;opacity:1}@media (min-width: 640px){.nas-calendar__item--header{padding-left:11px}}.nas-calendar__item--dummy{visibility:hidden}.nas-calendar__item--today .nas-calendar__date{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#002a3a}.nas-calendar__item--cheapest{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#e5212d}.nas-calendar__item--empty{pointer-events:none;opacity:.3;border-color:#fff;background-color:#fff}.nas-calendar__item--empty .nas-calendar__date{color:inherit}.nas-calendar__item--available{pointer-events:all;opacity:1;border-color:#fff;background-color:#c3c3c3}.nas-calendar__item--available .nas-calendar__date{color:#002a3a}.nas-calendar__item--active{border-color:#15273f;border-width:3px}.nas-calendar__item--before{pointer-events:none;color:#a9a9a9;opacity:.55}.nas-calendar__item:hover,.nas-calendar__item:focus{border-color:#15273f;border-width:3px;box-shadow:inset 0 0 2px #c3c3c3,inset 0 0 2px 3px #3b99fc}.nas-calendar__item:active{transform:translateY(3px)}.nas-calendar__item--selected,.nas-calendar__item:active{color:#fff;background-color:#e5212d}.nas-calendar__item--selected:hover,.nas-calendar__item--selected:focus,.nas-calendar__item:active:hover,.nas-calendar__item:active:focus{border-color:#15273f;border-width:3px}.nas-calendar__item--selected .nas-calendar__date,.nas-calendar__item:active .nas-calendar__date{color:inherit}.nas-calendar__item--sold-out{pointer-events:none;opacity:.8;border-color:#fff;background-color:#fff}.nas-calendar__item--sold-out .nas-calendar__date{color:#002a3a}.nas-calendar__item[disabled]{pointer-events:none}.nas-calendar__date{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#6f6f6f}.nas-calendar__date--week-number{top:6px;right:6px}.nas-calendar__price{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:inherit;letter-spacing:-.04em}@media (min-width: 640px){.nas-calendar__price{font-size:14px;line-height:1.1}}@media (min-width: 1280px){.nas-calendar__price{font-size:16px}}.nas-calendar__price--before{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;text-decoration:line-through;font-size:.8em;line-height:1}@media (min-width: 1000px){.nas-calendar__price--before{margin-bottom:2px}}.nas-calendar__sold-out{position:absolute;bottom:2px;left:2px;line-height:1;overflow-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;letter-spacing:-.015em;color:#8c8c8c;font-size:.75em}@media (min-width: 640px){.nas-calendar__sold-out{font-size:.9em;bottom:6px;left:6px}}@media (min-width: 1000px){.nas-calendar__sold-out{left:3px}}@media (min-width: 1180px){.nas-calendar__sold-out{left:6px}}.nas-calendar__transit{position:relative;display:flex;max-width:3.8em;width:calc(100% - 12px);padding:0 .5em 0 .3em;height:8px;justify-content:space-around;margin-bottom:2px;transform:scale(.85);transform-origin:left;background-color:inherit}@media (min-width: 640px){.nas-calendar__transit{transform:none;padding:0 .5em 0 .3em;margin-bottom:3px}}.nas-calendar__transit:before,.nas-calendar__transit:after{content:\"\";position:absolute}.nas-calendar__transit:before{top:calc(50% - 1px);width:100%;left:0;height:2px;background-color:currentColor}.nas-calendar__transit:after{width:8px;height:8px;right:0;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg)}.nas-calendar__transit-indicator{position:relative;width:8px;height:8px;flex-shrink:0;border-radius:50%;border:2px solid currentColor;background-color:#fff}.nas-calendar__asterisk{font-size:.67em;top:-.36em;margin-left:.1em}.nas-calendar__footer{display:flex;justify-content:center}.nas-calendar__footer .nas-calendar__item{width:25px;height:25px;margin-right:3px}.nas-calendar__footer .nas-calendar__item--unavailable{border:1px solid #15273f}.nas-calendar__footer--item{margin-top:12px}.nas-calendar__footer--label{flex-shrink:0;margin-right:12px;display:flex;flex-direction:column;justify-content:center;font-size:14px;line-height:20px}.nas-calendar__arrow{position:absolute;width:16px;height:16px;top:-10px;left:calc(50% - 8px);background-color:inherit;transform:rotate(45deg);border-top:3px solid #15273f;border-left:3px solid #15273f}@keyframes lowfare-item-in{0%{opacity:0;transform:scale(0)}}\n"] }]
|
|
543
|
+
args: [{ selector: 'nas-calendar', encapsulation: ViewEncapsulation.None, template: "<div [nasClass]=\"getClass()\">\n <div #calendarContent tabindex=\"0\" [nasClass]=\"getClass('content')\">\n <header [nasClass]=\"getClass('header')\">\n <button [id]=\"prevMonthId\" type=\"button\" #previousMonthRef tabindex=\"0\" [attr.aria-label]=\"ariaLabelPreviousMonth\"\n [nasClass]=\"getClass('nav')\" [disabled]=\"isPreviousMonthDisabled === true\"\n (keydown)=\"onPreviousMonthKeydown($event)\" (mousedown)=\"onPreviousMonthMousedown()\">\n <nas-icon tabindex=\"-1\" [type]=\"'arrow-left'\"></nas-icon>\n </button>\n <ng-container *ngIf=\"months?.length > 0; else currentMonthTemplate\">\n <nas-select #monthSelect [cssClass]=\"getClass('month')\" [inline]=\"true\" [simple]=\"true\" [options]=\"months\"\n [(selected)]=\"selectedMonth\" (keydown)=\"onMonthSelectKeydown($event)\"></nas-select>\n </ng-container>\n <ng-template #currentMonthTemplate>\n {{currentMonthModel}}\n </ng-template>\n <button [id]=\"nextMonthId\" type=\"button\" tabindex=\"0\" #nextMonthRef [nasClass]=\"getClass('nav')\"\n [attr.aria-label]=\"ariaLabelNextMonth\" [disabled]=\"nextMonthDisabled\" (keydown)=\"onNextMonthKeydown($event)\"\n (mousedown)=\"onNextMonthMousedown()\">\n <nas-icon [type]=\"'arrow-right'\"></nas-icon>\n </button>\n </header>\n\n <!-- Weekdays + Dates -->\n <table [nasClass]=\"getClass('table')\">\n <thead>\n <tr [nasClass]=\"getClass('week')\">\n <th *ngIf=\"exists(displayWeekNumbers)\" [nasClass]=\"getClass('week-number')\"></th>\n <th [nasClass]=\"getClass('cell')\" *ngFor=\"let weekday of weekdays\">\n <div [nasClass]=\"getClass('item', 'header')\">{{weekday}}</div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of weeks\" [nasClass]=\"getClass('row', 'animate')\">\n <td *ngIf=\"exists(displayWeekNumbers)\" [nasClass]=\"getClass('week-number')\">\n <span [nasClass]=\"getClass('date', 'week-number')\">{{week.weekNumber}}</span>\n </td>\n <td [nasClass]=\"getClass('cell')\" *ngFor=\"let day of week?.days\" #tableCells>\n <div [nasClass]=\"getClass('item', 'dummy')\" *ngIf=\"day === null; else dayTemplate\"></div>\n <ng-template #dayTemplate tabindex=\"0\">\n <button id=\"day-{{day.date | date : 'd':'UTC':locale}}\" type=\"button\" #dateButton (keydown)=\"dateKeyDown($event)\" tabIndex=\"0\"\n [nasClass]=\"getCellButtonClass(day)\" (mousedown)=\"onMouseDown(day.date, $event)\"\n (click)=\"onDayClick(day)\" (focus)=\"onDayFocus(day)\">\n <div [nasClass]=\"getClass('date-wrapper')\">\n <span [nasClass]=\"getClass('date')\" [attr.aria-label]=\"day.date | date : 'd':'UTC'\">{{ day.date | date\n : 'd':'UTC':locale }}</span>\n </div>\n </button>\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div [nasClass]=\"getClass('footer')\">\n <div *ngIf=\"availableDates?.length === 0 && noAvailableFlightsLabel\" [nasClass]=\"getClass('footer', 'item')\">\n <nas-icon [icon]=\"'alert'\"></nas-icon>\n {{noAvailableFlightsLabel}}\n </div>\n <div *ngIf=\"availableDates?.length > 0 && noAvailableFlightsLabel && availableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <div [nasClass]=\"getClass('item', 'available')\"></div>\n <div [nasClass]=\"getClass('footer', 'label')\">{{availableFlightsLabel}}</div>\n <span [nasClass]=\"getClass('item', 'unavailable')\"></span>\n <div [nasClass]=\"getClass('footer', 'label')\">{{noAvailableFlightsLabel}}</div>\n </div>\n </div>\n </div>\n</div>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-calendar{z-index:3;width:100%;min-width:300px;float:right;padding:16px 8px;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:flip-in .55s ease both;position:relative;border-left:2px solid #15273F;border-right:2px solid #15273F;border-bottom:2px solid #15273F;z-index:4}@media (min-width: 640px){.nas-calendar{max-width:350px}}@media (min-width: 380px){.nas-calendar{min-width:325px}}.nas-calendar__content:active{outline:none;box-shadow:none}.nas-calendar__content:focus{outline:none;box-shadow:none}.nas-calendar__cover{margin-bottom:16px}.nas-calendar__header{height:30px;font-size:16px;line-height:24px;font-weight:700;display:flex;justify-content:space-between}.nas-calendar__month{margin:0 auto 21px}.nas-calendar__months{background-color:#fff;max-width:350px;display:flex;flex-wrap:wrap;gap:15px}.nas-calendar__months--item{text-transform:uppercase}.nas-calendar__table{table-layout:fixed;width:100%}.nas-calendar__week-number{font-size:14px;line-height:20px;position:relative;width:20px;display:none}@media (min-width: 640px){.nas-calendar__week-number{display:table-cell}}.nas-calendar__cell{padding:0;font-weight:400;color:#15273f}.nas-calendar__nav{margin:-3px 2px 12px;width:24px;height:24px;border-radius:50%;transition:transform .2s cubic-bezier(0,0,.1,1),opacity .2s ease-out}.nas-calendar__nav .nas-icon-arrow-left--light,.nas-calendar__nav .nas-icon-arrow-right--light{position:absolute;top:50%;left:50%}.nas-calendar__nav .nas-icon-arrow-left--light{transform:translate(-60%,-50%)}.nas-calendar__nav .nas-icon-arrow-right--light{transform:translate(-40%,-50%)}.nas-calendar__nav:active{transform:translateY(2px)}.nas-calendar__nav[disabled]{pointer-events:none;opacity:.5}.nas-calendar__item{font-size:14px;line-height:20px;display:flex;flex-direction:column;margin-left:5px;cursor:pointer;overflow:hidden;width:100%;height:40px;text-align:left;outline:0;padding:2px;border:1px solid #FFFFFF;transition:transform .17s cubic-bezier(0,0,.1,1);border-radius:0;align-items:center;justify-content:center;pointer-events:none;opacity:.5;background-color:#fff}.nas-calendar__item .nas-calendar__date{color:#0a2033}@media (min-width: 640px){.nas-calendar__item{padding:2px 6px}}@media (min-width: 1000px){.nas-calendar__item{padding:2px 3px}}@media (min-width: 1180px){.nas-calendar__item{padding:2px 6px}}.nas-calendar__item--large{height:40px;width:37px;height:37px;margin-top:8px;margin-left:2px}@media (min-width: 400px){.nas-calendar__item--large{width:39px;height:39px}}@media (min-width: 415px){.nas-calendar__item--large{width:40px;margin-top:8px;margin-left:6px}}.nas-calendar__item--header{pointer-events:none;background-color:transparent;border:0;opacity:1;padding-bottom:9px;margin-left:0!important}.nas-calendar__item--dummy{visibility:hidden}.nas-calendar__item--today .nas-calendar__date{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#15273f}.nas-calendar__item--cheapest{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#b12a0b}.nas-calendar__item--empty{pointer-events:none;opacity:.3;border-color:#fff;background-color:#fff}.nas-calendar__item--empty .nas-calendar__date{color:inherit}.nas-calendar__item--available{pointer-events:all;opacity:1;border-color:#e9e7e4;background-color:#f8f8f8;border-radius:2px}.nas-calendar__item--available .nas-calendar__date{color:#0a2033}.nas-calendar__item--active{border:2px solid #15273F;background-color:#ebf4ff}.nas-calendar__item--within-range{background-color:#ebf4ff}.nas-calendar__item--before{pointer-events:none;color:#a9a9a9;opacity:.55}.nas-calendar__item:hover,.nas-calendar__item:focus{border-color:#e9e7e4;border-width:2px}.nas-calendar__item:hover .nas-calendar__date,.nas-calendar__item:focus .nas-calendar__date{font-weight:700}.nas-calendar__item:active{transform:translateY(3px)}.nas-calendar__item--selected,.nas-calendar__item:active{color:#fff;background-color:#15273f;height:37px;width:37px;margin-left:5px}@media (min-width: 380px){.nas-calendar__item--selected,.nas-calendar__item:active{height:40px;width:40px}}.nas-calendar__item--selected:hover,.nas-calendar__item--selected:focus,.nas-calendar__item:active:hover,.nas-calendar__item:active:focus{border-color:#15273f;border-width:3px}.nas-calendar__item--selected .nas-calendar__date,.nas-calendar__item:active .nas-calendar__date{color:inherit}.nas-calendar__item--sold-out{pointer-events:none;opacity:.8;border-color:#fff;background-color:#fff}.nas-calendar__item--sold-out .nas-calendar__date{color:#0a2033}.nas-calendar__item[disabled]{pointer-events:none}.nas-calendar__week{border-bottom:1px solid #E9E7E4}.nas-calendar__date{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#6f6f6f}.nas-calendar__date--week-number{top:6px;right:6px}.nas-calendar__date:hover,.nas-calendar__date:focus{font-weight:700}.nas-calendar__price{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:inherit;letter-spacing:-.04em;font-size:14px}@media (min-width: 640px){.nas-calendar__price{font-size:14px;line-height:1.1}}@media (min-width: 1280px){.nas-calendar__price{font-size:16px}}.nas-calendar__price--before{font-family:NorwegianTextPro,Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;text-decoration:line-through;font-size:.8em;line-height:1}@media (min-width: 1000px){.nas-calendar__price--before{margin-bottom:2px}}.nas-calendar__sold-out{position:absolute;bottom:2px;left:2px;line-height:1;overflow-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;letter-spacing:-.015em;color:#8c8c8c;font-size:.75em}@media (min-width: 640px){.nas-calendar__sold-out{font-size:.9em;bottom:6px;left:6px}}@media (min-width: 1000px){.nas-calendar__sold-out{left:3px}}@media (min-width: 1180px){.nas-calendar__sold-out{left:6px}}.nas-calendar__transit{position:relative;display:flex;max-width:3.8em;width:calc(100% - 12px);padding:0 .5em 0 .3em;height:8px;justify-content:space-around;margin-bottom:2px;transform:scale(.85);transform-origin:left;background-color:inherit}@media (min-width: 640px){.nas-calendar__transit{transform:none;padding:0 .5em 0 .3em;margin-bottom:3px}}.nas-calendar__transit:before,.nas-calendar__transit:after{content:\"\";position:absolute}.nas-calendar__transit:before{top:calc(50% - 1px);width:100%;left:0;height:2px;background-color:currentColor}.nas-calendar__transit:after{width:8px;height:8px;right:0;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg)}.nas-calendar__transit-indicator{position:relative;width:8px;height:8px;flex-shrink:0;border-radius:50%;border:2px solid currentColor;background-color:#fff}.nas-calendar__asterisk{font-size:.67em;top:-.36em;margin-left:.1em}.nas-calendar__footer{display:flex;justify-content:center}.nas-calendar__footer .nas-calendar__item{width:25px;height:25px;margin-right:3px}.nas-calendar__footer .nas-calendar__item--unavailable{border:1px solid #15273F}.nas-calendar__footer--item{margin-bottom:6px}.nas-calendar__footer--label{flex-shrink:0;margin-right:12px;display:flex;flex-direction:column;justify-content:center;font-size:14px;line-height:20px}@keyframes lowfare-item-in{0%{opacity:0;transform:scale(0)}}\n"] }]
|
|
522
544
|
}], ctorParameters: function () { return [{ type: i1.DateHelper }, { type: i2.DatePipe }, { type: i3.CalendarService }]; }, propDecorators: { previousMonthRef: [{
|
|
523
545
|
type: ViewChild,
|
|
524
546
|
args: ['previousMonthRef']
|
|
@@ -537,6 +559,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
537
559
|
}], monthSelectRef: [{
|
|
538
560
|
type: ViewChild,
|
|
539
561
|
args: ['monthSelect']
|
|
562
|
+
}], id: [{
|
|
563
|
+
type: Input
|
|
540
564
|
}], noAvailableFlightsLabel: [{
|
|
541
565
|
type: Input
|
|
542
566
|
}], availableFlightsLabel: [{
|
|
@@ -580,4 +604,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
580
604
|
}], activeDateChange: [{
|
|
581
605
|
type: Output
|
|
582
606
|
}], onPreviousMonthKeydown: [], onNextMonthKeydown: [], onNextMonthMousedown: [], onPreviousMonthMousedown: [] } });
|
|
583
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUVsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBSTlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7QUFRdkUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGdCQUFnQjtJQStCckQ7OztPQUdHO0lBQ0gsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxJQUFhO1FBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRWhDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFD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LGlCQUFpQixDQUFDLElBQUk7c0pBUU4sZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDRixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0csVUFBVTtzQkFBckMsWUFBWTt1QkFBQyxZQUFZO2dCQUNFLFdBQVc7c0JBQXRDLFlBQVk7dUJBQUMsWUFBWTtnQkFDSSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRixjQUFjO3NCQUF2QyxTQUFTO3VCQUFDLGFBQWE7Z0JBTWYsdUJBQXVCO3NCQUEvQixLQUFLO2dCQU1HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFNRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBT0YsY0FBYztzQkFEakIsS0FBSztnQkE0QkcsSUFBSTtzQkFBWixLQUFLO2dCQU1HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU9GLGNBQWM7c0JBRGpCLEtBQUs7Z0JBNkNGLFVBQVU7c0JBRGIsS0FBSztnQkEyQ0YsWUFBWTtzQkFEZixLQUFLO2dCQXFCRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNO2dCQU1HLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFNRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBTUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQXlKUCxzQkFBc0IsTUE0QnRCLGtCQUFrQixNQTBCbEIsb0JBQW9CLE1BS3BCLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXRlTW9kZWwgfSBmcm9tICcuL2NhbGVuZGFyLWRhdGUubW9kZWwnO1xuaW1wb3J0IHsgV2Vla1N0YXJ0IH0gZnJvbSAnLi9lbnVtcy93ZWVrLXN0YXJ0LmVudW0nO1xuaW1wb3J0IHsgRGF5TW9kZWwgfSBmcm9tICcuL21vZGVscy9kYXkubW9kZWwnO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9zZWxlY3Qtb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IFdlZWtNb2RlbCB9IGZyb20gJy4vbW9kZWxzL3dlZWsubW9kZWwnO1xuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYmFzZS9uYXMtY29tcG9uZW50LmJhc2UnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2NsYXNzLm1vZGVsJztcbmltcG9ydCB7IFV0Y0RhdGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91dGMtZGF0ZS5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9kYXRlL2RhdGUtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZGVjb3JhdG9ycy9kZWJvdW5jZS5kZWNvcmF0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHdlZWtzOiBBcnJheTxXZWVrTW9kZWw+O1xuICBtb250aHMgPSBuZXcgQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+KCk7XG4gIHdlZWtkYXlzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgncHJldmlvdXNNb250aFJlZicpIHByZXZpb3VzTW9udGhSZWY6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCduZXh0TW9udGhSZWYnKSBuZXh0TW9udGhSZWY6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKCd0YWJsZUNlbGxzJykgdGFibGVDZWxsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBAVmlld0NoaWxkcmVuKCdkYXRlQnV0dG9uJykgZGF0ZUJ1dHRvbnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJDb250ZW50JykgY2FsZW5kYXJDb250ZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdtb250aFNlbGVjdCcpIG1vbnRoU2VsZWN0UmVmOiBTZWxlY3RDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBMYWJlbCBmb3Igbm8gYXZhaWxhYmxlIGZsaWdodHMuXG4gICAqL1xuICBASW5wdXQoKSBub0F2YWlsYWJsZUZsaWdodHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTGFiZWwgZm9yIGF2YWlsYWJsZSBmbGlnaHRzLlxuICAgKi9cbiAgQElucHV0KCkgYXZhaWxhYmxlRmxpZ2h0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNhYmxlIHBvc3NpYmlsaXR5IHRvIHNlbGVjdCBkYXRlcyBpbiB0aGUgcGFzdC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVQYXN0U2VsZWN0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBsb3dlc3QgZGF0ZSBhbGxvd2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGxvd2VyTGltaXREYXRlKCk6IFV0Y0RhdGUge1xuICAgIHJldHVybiB0aGlzLmxvd2VyTGltaXREYXRlVmFsdWU7XG4gIH1cbiAgc2V0IGxvd2VyTGltaXREYXRlKGRhdGU6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvd2VyTGltaXREYXRlVmFsdWUgPSBkYXRlO1xuXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVWYWx1ZSA9IHRoaXMubG93ZXJMaW1pdERhdGVWYWx1ZTtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMubG93ZXJMaW1pdERhdGVWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNHcmVhdGVyVGhhbihkYXRlLCB0aGlzLnNlbGVjdGVkRGF0ZSwgZmFsc2UsIHRydWUsIHRydWUpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVZhbHVlID0gdGhpcy5sb3dlckxpbWl0RGF0ZVZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5sb3dlckxpbWl0RGF0ZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVEYXRlICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNHcmVhdGVyVGhhbihkYXRlLCB0aGlzLmFjdGl2ZURhdGUsIGZhbHNlLCB0cnVlLCB0cnVlKSkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5sb3dlckxpbWl0RGF0ZVZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuYXBwbHlTZWxlY3RlZERhdGVDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgKiBAZGVzY3JpcHRpb25cbiAgKiBDdXJyZW50IG1vbnRoIGRhdGUgdG8gYmUgZGlzcGxheWVkLiBJdCB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHNlbGVjdGVkIGRhdGUgaW5wdXQsIGlmIGl0IGlzIHNldC5cbiAgKi9cbiAgQElucHV0KCkgZGF0ZTogVXRjRGF0ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERlc2lkZXMgaWYgdGhlIHdlZWsgc2hvdWxkIHN0YXJ0IG9uIGEgbW9uZGF5IG9yIHN1bmRheS4gRGVmYXVsdHMgdG8gbW9uZGF5LlxuICAgKi9cbiAgQElucHV0KCkgd2Vla1N0YXJ0ID0gV2Vla1N0YXJ0Lm1vbmRheTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc3BsYXkgd2VlayBudW1iZXJzLlxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheVdlZWtOdW1iZXJzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyB0aGUgZGF0ZXBpY2tlciBpbiBhdmFpbGFiaWxpdHkgbW9kZSB3aGVyZSBhdmFpbGFibGUgZGF0ZXMgY2FuIGJlIGFkZGVkLlxuICAgKi9cbiAgQElucHV0KCkgYXZhaWxhYmlsaXR5OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLiBXaGVuIG5vdCBzdXBwbGllZCwgdXNlcyB0aGUgdmFsdWUgb2YgTE9DQUxFX0lELCB3aGljaCBpcyBlbi1VUyBieSBkZWZhdWx0LlxuICAgKiBUaGlzIHJlcXVpcmVzIHRoYXQgcmVnaXN0ZXJMb2NhbGVEYXRhIGlzIGNhbGxlZCB3aXRoIHRoZSByZXNwZWN0aXZlIGxvY2FsZS5cbiAgICovXG4gIEBJbnB1dCgpIGxvY2FsZSA9ICdlbi1VUyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSB3aXRoIGFsbCB0aGUgYXZhaWxhYmxlIGRhdGVzIG9mIHRoZSBtb250aCBmb3Igc2VhdHMuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgYXZhaWxhYmxlRGF0ZXMoKTogQXJyYXk8VXRjRGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZURhdGVzVmFsdWU7XG4gIH1cbiAgc2V0IGF2YWlsYWJsZURhdGVzKGRhdGVzOiBBcnJheTxVdGNEYXRlPikge1xuICAgIGlmICghZGF0ZXMgfHwgIXRoaXMuZXhpc3RzKHRoaXMuYXZhaWxhYmlsaXR5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaXJzdERhdGUgPSBkYXRlc1swXTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZmlyc3REYXRlO1xuICAgICAgdGhpcy5zZXRQcmV2aW91c01vbnRoRGlzYWJsZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmF2YWlsYWJsZURhdGVzVmFsdWUgPSBkYXRlcztcblxuICAgIHRoaXMuYXBwbHlTZWxlY3RlZERhdGVDaGFuZ2VzKCk7XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkRm9jdXNDYWxlbmRhck9uQXZhaWxhYmxlRGF0ZXNVcGRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5uZXh0TW9udGhSZWYubmF0aXZlRWxlbWVudCB8fFxuICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQgfHxcbiAgICAgIHRoaXMubW9udGhTZWxlY3RSZWYgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5tb250aFNlbGVjdFJlZi5zZWxlY3QubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZWxtZW1lbnRUb0ZvY3VzID0gdGhpcy5hY3RpdmVEYXRlQ2VsbDtcblxuICAgICAgaWYgKGVsbWVtZW50VG9Gb2N1cykge1xuICAgICAgICBlbG1lbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zaG91bGRGb2N1c0NhbGVuZGFyT25BdmFpbGFibGVEYXRlc1VwZGF0ZSA9IGZhbHNlO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgYWN0aXZlIGRhdGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBhY3RpdmVEYXRlKCk6IFV0Y0RhdGUge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGVWYWx1ZTtcbiAgfVxuICBzZXQgYWN0aXZlRGF0ZShkYXRlOiBVdGNEYXRlKSB7XG4gICAgaWYgKCFkYXRlIHx8IHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZShkYXRlLCB0aGlzLmFjdGl2ZURhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRNb250aCkge1xuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBkYXRlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aChkYXRlLCB0aGlzLmN1cnJlbnRNb250aCkpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZGF0ZTtcblxuICAgICAgdGhpcy5hcHBseVNlbGVjdGVkRGF0ZUNoYW5nZXMoKTtcbiAgICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRNb250aCk7XG4gICAgICB0aGlzLnNldFByZXZpb3VzTW9udGhEaXNhYmxlZCgpO1xuXG4gICAgICBjb25zdCBlbG1lbWVudFRvRm9jdXMgPSB0aGlzLmFjdGl2ZURhdGVDZWxsO1xuICAgICAgaWYgKGVsbWVtZW50VG9Gb2N1cykge1xuICAgICAgICBlbG1lbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy53ZWVrcykge1xuICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2Uuc2V0QWN0aXZlRGF0ZShkYXRlLCB0aGlzLndlZWtzKTtcblxuICAgICAgZm9yIChjb25zdCBkYXkgb2YgdGhpcy5jYWxlbmRhclNlcnZpY2UuZ2V0RGF5cyh0aGlzLndlZWtzKSkge1xuICAgICAgICBpZiAoIWRheSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRheS5pc0FjdGl2ZSkge1xuICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZVZhbHVlID0gZGF0ZTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZURhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlVmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkRGF0ZShkYXRlOiBVdGNEYXRlKSB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZERhdGVWYWx1ZSA9IGRhdGU7XG5cbiAgICBpZiAoIXRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lTW9udGgoZGF0ZSwgdGhpcy5hY3RpdmVEYXRlKVxuICAgICAgfHwgIXRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lTW9udGgoZGF0ZSwgdGhpcy5jdXJyZW50TW9udGgpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGRhdGU7XG4gICAgICB0aGlzLmFjdGl2ZURhdGVWYWx1ZSA9IGRhdGU7XG4gICAgICB0aGlzLmFwcGx5U2VsZWN0ZWREYXRlQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKGRhdGUpO1xuICB9XG5cbiAgQElucHV0KCkgbmFzRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBkYXRlRGlzcGxheUZvcm1hdCA9ICdFRUVFIGQsIE1NTU0geXl5eSc7XG4gIEBJbnB1dCgpIGFyaWFMYWJlbFByZXZpb3VzTW9udGg6IHN0cmluZztcbiAgQElucHV0KCkgYXJpYUxhYmVsTmV4dE1vbnRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb250aCBzZWxlY3RlZCBieSB0aGUgdXNlciBieSBjbGlja2luZyBpbiBkcm9wIGRvd24gZm9yIG1vbnRoIHNlbGVjdGlvbiBvciBtb250aCBuYXZpZ2F0aW9uIGJ1dHRvbnMuXG4gICAqL1xuICBAT3V0cHV0KCkgbW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGVuIGEgdXNlciBoYXMgYWN0aXZlbHkgY2hhbmdlZCB0aGUgZGF0ZS5cbiAgICovXG4gIEBPdXRwdXQoKSBmb2N1c09uTmV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQgfCBudWxsPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hlbiBzZWxlY3RlZCBkYXRlIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxVdGNEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hlbiBhY3RpdmUgZGF0ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGFjdGl2ZURhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cbiAgZ2V0IHNlbGVjdGVkTW9udGgoKTogU2VsZWN0T3B0aW9uTW9kZWwge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkTW9udGgob3B0aW9uOiBTZWxlY3RPcHRpb25Nb2RlbCkge1xuICAgIGlmICghb3B0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG9wdGlvbjtcbiAgICBjb25zdCBvcHRpb25EYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKG9wdGlvbi52YWx1ZSk7XG5cbiAgICBpZiAoIXRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lTW9udGgob3B0aW9uRGF0ZSwgdGhpcy5jdXJyZW50TW9udGgpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IG9wdGlvbkRhdGU7XG4gICAgICB0aGlzLmFwcGx5U2VsZWN0ZWREYXRlQ2hhbmdlcygpO1xuICAgICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHRoaXMuY3VycmVudE1vbnRoKTtcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNNb250aERpc2FibGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG5leHRNb250aERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5leHRNb250aEluZGV4ID0gdGhpcy5jdXJyZW50TW9udGhcbiAgICAgICYmIHRoaXMuZGF0ZVNlcnZpY2UuZ2V0VXRjTnVtYmVyT2ZNb250aEJldHdlZW4odGhpcy5kYXRlU2VydmljZS51dGNEYXRlKCksIHRoaXMuY3VycmVudE1vbnRoKTtcblxuICAgIHJldHVybiAobmV4dE1vbnRoSW5kZXggKyAyKSA+PSB0aGlzLm1heE1vbnRoSW5kZXg7XG4gIH1cblxuICBnZXQgY3VycmVudE1vbnRoTW9kZWwoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudE1vbnRoKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3RoaXMubW9udGhOYW1lc1t0aGlzLmN1cnJlbnRNb250aC50b0RhdGUoKS5nZXRVVENNb250aCgpXX0gLSAke3RoaXMuY3VycmVudE1vbnRoLnRvRGF0ZSgpLmdldFVUQ0Z1bGxZZWFyKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSXMgaW4gdXNlIGJ5IERhdGVwaWNrZXJDb21wb25lbnRcbiAgICovXG4gIGdldCBhY3RpdmVEYXRlQ2VsbCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uYXMtY2FsZW5kYXJfX2l0ZW0tLWFjdGl2ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXhNb250aEluZGV4ID0gMTM7XG4gIHByaXZhdGUgYWN0aXZlRGF0ZVZhbHVlOiBVdGNEYXRlO1xuICBwcml2YXRlIGF2YWlsYWJsZURhdGVzVmFsdWU6IEFycmF5PFV0Y0RhdGU+O1xuICBwcml2YXRlIGN1cnJlbnRNb250aDogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBzZWxlY3RlZFZhbHVlOiBTZWxlY3RPcHRpb25Nb2RlbDtcbiAgcHJpdmF0ZSBhdmFpbGFibGVEYXlzOiBBcnJheTxEYXlNb2RlbD47XG4gIHByaXZhdGUgbW9udGhOYW1lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIHByaXZhdGUgbG93ZXJMaW1pdERhdGVWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBzZWxlY3RlZERhdGVWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBzaG91bGRGb2N1c0NhbGVuZGFyT25BdmFpbGFibGVEYXRlc1VwZGF0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkYXRlU2VydmljZTogRGF0ZUhlbHBlcixcbiAgICBwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2UpIHtcbiAgICBzdXBlcignbmFzLWNhbGVuZGFyJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXJpYUxhYmVsUHJldmlvdXNNb250aCkge1xuICAgICAgdGhpcy53YXJuTWlzc2luZ0FjY2Vzc2liaWx0eUlucHV0KCdhcmlhTGFiZWxQcmV2aW91c01vbnRoJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFyaWFMYWJlbE5leHRNb250aCkge1xuICAgICAgdGhpcy53YXJuTWlzc2luZ0FjY2Vzc2liaWx0eUlucHV0KCdhcmlhTGFiZWxOZXh0TW9udGgnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXAgJiYgdGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpIHtcblxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZTogQ2FsZW5kYXJEYXRlTW9kZWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICAgIGlmIChjYWxlbmRhckRhdGUpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGNhbGVuZGFyRGF0ZS5kYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZSB8fCAhdGhpcy5jdXJyZW50TW9udGgpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuZ2V0Q3VycmVudE1vbnRoKHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5hdmFpbGFibGVEYXlzID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuZ2V0QXZhaWxhYmxlRGF5cyhcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoLFxuICAgICAgdGhpcy5hdmFpbGFibGVEYXRlcyxcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5LFxuICAgICAgdGhpcy5kaXNhYmxlUGFzdFNlbGVjdGlvbixcbiAgICAgIHRoaXMubG93ZXJMaW1pdERhdGUsXG4gICAgICB0aGlzLmFjdGl2ZURhdGUsXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSk7XG5cbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGVBdmFpbGFibGVEYXlzV2l0aFNlbGVjdGVkRGF0ZSh0aGlzLmF2YWlsYWJsZURheXMsIHRoaXMuc2VsZWN0ZWREYXRlKTtcblxuICAgIHRoaXMud2Vla3MgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5nZXRXZWVrcyh0aGlzLmF2YWlsYWJsZURheXMsIHRoaXMud2Vla1N0YXJ0KTtcbiAgICB0aGlzLm1vbnRoTmFtZXMgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5nZXRNb250aE5hbWVzKHRoaXMubG9jYWxlKTtcbiAgICB0aGlzLm1vbnRocyA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmdldE1vbnRoc1NlbGVjdE9wdGlvbnModGhpcy5kaXNhYmxlUGFzdFNlbGVjdGlvbiwgdGhpcy5tYXhNb250aEluZGV4LCB0aGlzLm1vbnRoTmFtZXMpO1xuICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmdldFNlbGVjdGVkTW9udGgodGhpcy5tb250aHMsIHRoaXMuY3VycmVudE1vbnRoKTtcbiAgICB0aGlzLndlZWtkYXlzID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuZ2V0V2Vla2RheXModGhpcy53ZWVrU3RhcnQsIHRoaXMubG9jYWxlKTtcblxuICAgIHRoaXMuc2V0UHJldmlvdXNNb250aERpc2FibGVkKCk7XG4gIH1cblxuICBkYXRlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCBlbGVtZW50VG9Gb2N1czogSFRNTEVsZW1lbnQ7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5zaG91bGRGb2N1c0NhbGVuZGFyT25BdmFpbGFibGVEYXRlc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzTW9udGhSZWYgJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vbnRoU2VsZWN0UmVmICYmIHRoaXMubW9udGhzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5tb250aFNlbGVjdFJlZi5zZWxlY3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubmV4dE1vbnRoUmVmICYmICF0aGlzLm5leHRNb250aERpc2FibGVkKSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMubmV4dE1vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLm5leHRNb250aFJlZiAmJiAhdGhpcy5uZXh0TW9udGhEaXNhYmxlZCkge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMgPSB0aGlzLm5leHRNb250aFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb250aFNlbGVjdFJlZiAmJiB0aGlzLm1vbnRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMubW9udGhTZWxlY3RSZWYuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzTW9udGhSZWYgJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1c0VsZW1lbnQoZXZlbnQsIGVsZW1lbnRUb0ZvY3VzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgYWN0aXZlRGF5ID0gdGhpcy5jYWxlbmRhclNlcnZpY2VcbiAgICAgICAgICAuZ2V0RGF5cyh0aGlzLndlZWtzKVxuICAgICAgICAgIC5maW5kKHggPT4geCAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHguZGF0ZSksIHRoaXMuYWN0aXZlRGF0ZSkpO1xuXG4gICAgICAgIGlmICh0aGlzLmF2YWlsYWJpbGl0eSAmJiBhY3RpdmVEYXk/LmlzQXZhaWxhYmxlICYmICFhY3RpdmVEYXk/LmlzRGlzYWJsZWQgfHwgIXRoaXMuYXZhaWxhYmlsaXR5KSB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUodGhpcy5hY3RpdmVEYXRlKTtcbiAgICAgICAgICB0aGlzLmZvY3VzT25OZXh0Q2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBEZWJvdW5jZSgxNTApXG4gIG9uUHJldmlvdXNNb250aEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudFRvRm9jdXM6IEhUTUxFbGVtZW50O1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgaWYgKHRoaXMubW9udGhTZWxlY3RSZWYgJiYgdGhpcy5tb250aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMgPSB0aGlzLm1vbnRoU2VsZWN0UmVmLnNlbGVjdC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0TW9udGhSZWYgJiYgIXRoaXMubmV4dE1vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5uZXh0TW9udGhSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMgPSB0aGlzLmFjdGl2ZURhdGVDZWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMuYWN0aXZlRGF0ZUNlbGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzRWxlbWVudChldmVudCwgZWxlbWVudFRvRm9jdXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgdGhpcy5nZXRQcmV2aW91c01vbnRoKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgQERlYm91bmNlKDE1MClcbiAgb25OZXh0TW9udGhLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudDtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5hY3RpdmVEYXRlQ2VsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5tb250aFNlbGVjdFJlZiAmJiB0aGlzLm1vbnRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMubW9udGhTZWxlY3RSZWYuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9uUHJldmlvdXNNb250aEtleWRvd24gJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5hY3RpdmVEYXRlQ2VsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzRWxlbWVudChldmVudCwgZWxlbWVudFRvRm9jdXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5nZXROZXh0TW9udGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgQERlYm91bmNlKDIwMClcbiAgb25OZXh0TW9udGhNb3VzZWRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5nZXROZXh0TW9udGgoKTtcbiAgfVxuXG4gIEBEZWJvdW5jZSgyMDApXG4gIG9uUHJldmlvdXNNb250aE1vdXNlZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmdldFByZXZpb3VzTW9udGgoKTtcbiAgfVxuXG4gIG9uTW9udGhTZWxlY3RLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudDtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGlmICh0aGlzLm5leHRNb250aFJlZiAmJiAhdGhpcy5uZXh0TW9udGhEaXNhYmxlZCkge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMgPSB0aGlzLm5leHRNb250aFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMuYWN0aXZlRGF0ZUNlbGw7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLm9uUHJldmlvdXNNb250aEtleWRvd24gJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5hY3RpdmVEYXRlQ2VsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzRWxlbWVudChldmVudCwgZWxlbWVudFRvRm9jdXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBmb2N1c0VsZW1lbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xuICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0QWN0aXZlRGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudE1vbnRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdG9kYXkgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoKTtcbiAgICBjb25zdCBsYXN0RGF5ID0gbmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGggKyAxLCAwKTtcbiAgICBjb25zdCBuZXdEYXRlID0gdGhpcy5hY3RpdmVEYXRlPy5kYXRlID4gbGFzdERheS5nZXREYXRlKCkgPyBsYXN0RGF5LmdldERhdGUoKSA6IHRoaXMuYWN0aXZlRGF0ZT8uZGF0ZTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aC5tb250aCAhPT0gdG9kYXkubW9udGggfHwgdGhpcy5jdXJyZW50TW9udGgueWVhciAhPT0gdG9kYXkueWVhcikge1xuICAgICAgY29uc3QgbmV4dE1vbnRoID0gdGhpcy5jdXJyZW50TW9udGgubW9udGg7XG4gICAgICBjb25zdCBuZXh0WWVhciA9IHRoaXMuY3VycmVudE1vbnRoLnllYXI7XG5cbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBVdGNEYXRlKG5leHRZZWFyLCBuZXh0TW9udGgsIG5ld0RhdGUpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZURhdGUgJiYgdGhpcy5hY3RpdmVEYXRlLm1vbnRoICE9PSB0aGlzLmN1cnJlbnRNb250aC5tb250aCkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IFV0Y0RhdGUodGhpcy5hY3RpdmVEYXRlVmFsdWUueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGgsIG5ld0RhdGUpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VEb3duKGRhdGU6IHN0cmluZywgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF0ZSkpO1xuICAgIHRoaXMuZm9jdXNPbk5leHRDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkRheUZvY3VzKGRheTogRGF5TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpO1xuICB9XG5cbiAgb25EYXlDbGljayhkYXk6IERheU1vZGVsKTogdm9pZCB7XG4gICAgaWYgKCFkYXkuaXNBdmFpbGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkRGF0ZShkYXRlOiBVdGNEYXRlKTogdm9pZCB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwICYmIHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgY29uc3QgY2FsZW5kYXJEYXRlOiBDYWxlbmRhckRhdGVNb2RlbCA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZShkYXRlKSwgdGhpcy5kYXRlRGlzcGxheUZvcm1hdCwgJ1VUQycsIHRoaXMubG9jYWxlKSxcbiAgICAgICAgZGF0ZTogZGF0ZVxuICAgICAgfTtcblxuICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGNhbGVuZGFyRGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcblxuICAgIGlmICh0aGlzLndlZWtzICYmIHRoaXMud2Vla3MubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCB3ZWVrIG9mIHRoaXMud2Vla3MpIHtcbiAgICAgICAgaWYgKCF3ZWVrKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGRheSBvZiB3ZWVrLmRheXMpIHtcbiAgICAgICAgICBpZiAoIWRheSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGF5LmlzU2VsZWN0ZWQgPSBkYXkuaXNBdmFpbGFibGVcbiAgICAgICAgICAgICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpLCBkYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldENlbGxCdXR0b25DbGFzcyhkYXk6IERheU1vZGVsKTogQ2xhc3NNb2RlbCB7XG4gICAgaWYgKCFkYXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCdpdGVtJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJ2l0ZW0nLCBbXG4gICAgICBkYXkuaXNEaXNhYmxlZCAmJiAnYmVmb3JlJyxcbiAgICAgIGRheS5pc1NlbGVjdGVkICYmICdzZWxlY3RlZCcsXG4gICAgICAhdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aCh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpLCB0aGlzLmN1cnJlbnRNb250aCkgJiYgJ2VtcHR5JyxcbiAgICAgIGRheS5pc0F2YWlsYWJsZSAmJiAnYXZhaWxhYmxlJyxcbiAgICAgICdsYXJnZScsXG4gICAgICBkYXkuaXNBY3RpdmUgJiYgJ2FjdGl2ZSdcbiAgICBdKTtcbiAgfVxuXG4gIGdldE5leHRNb250aCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2Vla3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdFdlZWsgPSB0aGlzLndlZWtzWzBdO1xuXG4gICAgaWYgKCFmaXJzdFdlZWspIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdFZhbGlkRGF5ID0gZmlyc3RXZWVrLmRheXNcbiAgICAgIC5maW5kKGRheSA9PiBkYXkgJiYgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aCh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpLCB0aGlzLmN1cnJlbnRNb250aCkpO1xuXG4gICAgaWYgKCFmaXJzdFZhbGlkRGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dE1vbnRoID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKGZpcnN0VmFsaWREYXkuZGF0ZSk7XG4gICAgY29uc3QgbW9udGggPSBuZXh0TW9udGgubW9udGggKyAxO1xuICAgIG5leHRNb250aC5zZXRNb250aChtb250aCk7XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IG5leHRNb250aDtcblxuICAgIHRoaXMuYXBwbHlTZWxlY3RlZERhdGVDaGFuZ2VzKCk7XG4gICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHRoaXMuY3VycmVudE1vbnRoKTtcbiAgICB0aGlzLnNldFByZXZpb3VzTW9udGhEaXNhYmxlZCgpO1xuXG4gICAgaWYgKCF0aGlzLmF2YWlsYWJpbGl0eSkge1xuICAgICAgdGhpcy5tYXhNb250aEluZGV4Kys7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJldmlvdXNNb250aCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2Vla3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdFdlZWsgPSB0aGlzLndlZWtzWzBdO1xuXG4gICAgaWYgKCFmaXJzdFdlZWspIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdFZhbGlkRGF5ID0gZmlyc3RXZWVrLmRheXNcbiAgICAgIC5maW5kKGRheSA9PiBkYXkgJiYgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aCh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpLCB0aGlzLmN1cnJlbnRNb250aCkpO1xuXG4gICAgY29uc3QgcHJldmlvdXNNb250aCA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShmaXJzdFZhbGlkRGF5LmRhdGUpO1xuICAgIGNvbnN0IG1vbnRoID0gcHJldmlvdXNNb250aC5tb250aCAtIDE7XG4gICAgcHJldmlvdXNNb250aC5zZXRNb250aChtb250aCk7XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHByZXZpb3VzTW9udGg7XG5cbiAgICB0aGlzLmFwcGx5U2VsZWN0ZWREYXRlQ2hhbmdlcygpO1xuICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRNb250aCk7XG4gICAgdGhpcy5zZXRQcmV2aW91c01vbnRoRGlzYWJsZWQoKTtcbiAgfVxuXG4gIHNldFByZXZpb3VzTW9udGhEaXNhYmxlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzTW9udGggPSBuZXcgVXRjRGF0ZSh0aGlzLmN1cnJlbnRNb250aC55ZWFyLCB0aGlzLmN1cnJlbnRNb250aC5tb250aCwgdGhpcy5jdXJyZW50TW9udGguZGF0ZSk7XG4gICAgICBjb25zdCBtb250aCA9IHByZXZpb3VzTW9udGgubW9udGggLSAxO1xuICAgICAgcHJldmlvdXNNb250aC5zZXRNb250aChtb250aCk7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVQYXN0U2VsZWN0aW9uICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNJblRoZVBhc3QocHJldmlvdXNNb250aCwgdHJ1ZSkpIHtcbiAgICAgICAgdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmlzUHJldmlvdXNNb250aERpc2FibGVkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2VsZWN0ZWREYXRlQ2hhbmdlcygpIHtcbiAgICB0aGlzLmF2YWlsYWJsZURheXMgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5nZXRBdmFpbGFibGVEYXlzKFxuICAgICAgdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICB0aGlzLmF2YWlsYWJsZURhdGVzLFxuICAgICAgdGhpcy5hdmFpbGFiaWxpdHksXG4gICAgICB0aGlzLmRpc2FibGVQYXN0U2VsZWN0aW9uLFxuICAgICAgdGhpcy5sb3dlckxpbWl0RGF0ZSxcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSxcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMubW9udGhzXG4gICAgICAuZmluZCh4ID0+IHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lTW9udGgodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHgudmFsdWUpLCB0aGlzLmN1cnJlbnRNb250aCkpO1xuXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlQXZhaWxhYmxlRGF5c1dpdGhTZWxlY3RlZERhdGUodGhpcy5hdmFpbGFibGVEYXlzLCB0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgdGhpcy53ZWVrcyA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmdldFdlZWtzKHRoaXMuYXZhaWxhYmxlRGF5cywgdGhpcy53ZWVrU3RhcnQpO1xuICB9XG59XG4iLCI8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygpXCI+XG4gIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnYXJyb3cnKVwiPjwvc3Bhbj5cbiAgPGRpdiAjY2FsZW5kYXJDb250ZW50XG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2NvbnRlbnQnKVwiPlxuICAgIDxoZWFkZXIgW25hc0NsYXNzXT1cImdldENsYXNzKCdoZWFkZXInKVwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgI3ByZXZpb3VzTW9udGhSZWZcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxQcmV2aW91c01vbnRoXCJcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCduYXYnKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCA9PT0gdHJ1ZVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uUHJldmlvdXNNb250aEtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25QcmV2aW91c01vbnRoTW91c2Vkb3duKClcIj5cbiAgICAgICAgPG5hcy1pY29uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIFt0eXBlXT1cIidhcnJvdy1sZWZ0LS1saWdodCdcIj48L25hcy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhzPy5sZW5ndGggPiAwOyBlbHNlIGN1cnJlbnRNb250aFRlbXBsYXRlXCI+XG4gICAgICAgIDxuYXMtc2VsZWN0ICNtb250aFNlbGVjdFxuICAgICAgICAgIFtjc3NDbGFzc109XCJnZXRDbGFzcygnbW9udGgnKVwiXG4gICAgICAgICAgW2lubGluZV09XCJ0cnVlXCJcbiAgICAgICAgICBbc2ltcGxlXT1cInRydWVcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm1vbnRoc1wiXG4gICAgICAgICAgWyhzZWxlY3RlZCldPVwic2VsZWN0ZWRNb250aFwiXG4gICAgICAgICAgKGtleWRvd24pPVwib25Nb250aFNlbGVjdEtleWRvd24oJGV2ZW50KVwiPjwvbmFzLXNlbGVjdD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW50TW9udGhUZW1wbGF0ZT5cbiAgICAgICAge3tjdXJyZW50TW9udGhNb2RlbH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgI25leHRNb250aFJlZlxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ25hdicpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxOZXh0TW9udGhcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibmV4dE1vbnRoRGlzYWJsZWRcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbk5leHRNb250aEtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25OZXh0TW9udGhNb3VzZWRvd24oKVwiPlxuICAgICAgICA8bmFzLWljb24gW3R5cGVdPVwiJ2Fycm93LXJpZ2h0LS1saWdodCdcIj48L25hcy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG4gICAgPHRhYmxlIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGFibGUnKVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoICpuZ0lmPVwiZXhpc3RzKGRpc3BsYXlXZWVrTnVtYmVycylcIlxuICAgICAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCd3ZWVrLW51bWJlcicpXCI+PC90aD5cbiAgICAgICAgICA8dGggW25hc0NsYXNzXT1cImdldENsYXNzKCdjZWxsJylcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHdlZWtkYXkgb2Ygd2Vla2RheXNcIj5cbiAgICAgICAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdpdGVtJywgJ2hlYWRlcicpXCI+e3t3ZWVrZGF5fX08L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIHdlZWtzXCJcbiAgICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3JvdycsICdhbmltYXRlJylcIj5cbiAgICAgICAgICA8dGQgKm5nSWY9XCJleGlzdHMoZGlzcGxheVdlZWtOdW1iZXJzKVwiXG4gICAgICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3dlZWstbnVtYmVyJylcIj5cbiAgICAgICAgICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnZGF0ZScsICd3ZWVrLW51bWJlcicpXCI+e3t3ZWVrLndlZWtOdW1iZXJ9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2NlbGwnKVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWs/LmRheXNcIlxuICAgICAgICAgICAgI3RhYmxlQ2VsbHM+XG4gICAgICAgICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnaXRlbScsICdkdW1teScpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXkgPT09IG51bGw7IGVsc2UgZGF5VGVtcGxhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF5VGVtcGxhdGVcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgI2RhdGVCdXR0b25cbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJkYXRlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIFtuYXNDbGFzc109XCJnZXRDZWxsQnV0dG9uQ2xhc3MoZGF5KVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bihkYXkuZGF0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGF5Q2xpY2soZGF5KVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRGF5Rm9jdXMoZGF5KVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdkYXRlLXdyYXBwZXInKVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdkYXRlJylcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRheS5kYXRlIHwgZGF0ZSA6ICdkZCc6J1VUQydcIj57e2RheS5kYXRlIHwgZGF0ZSA6ICdkZCc6J1VUQyc6bG9jYWxlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdmb290ZXInKVwiPlxuICAgICAgPGRpdiAqbmdJZj1cImF2YWlsYWJsZURhdGVzPy5sZW5ndGggPT09IDAgJiYgbm9BdmFpbGFibGVGbGlnaHRzTGFiZWxcIlxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2Zvb3RlcicsICdpdGVtJylcIj5cbiAgICAgICAgPG5hcy1pY29uIFtpY29uXT1cIidhbGVydCdcIj48L25hcy1pY29uPlxuICAgICAgICB7e25vQXZhaWxhYmxlRmxpZ2h0c0xhYmVsfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImF2YWlsYWJsZURhdGVzPy5sZW5ndGggPiAwICYmIG5vQXZhaWxhYmxlRmxpZ2h0c0xhYmVsICYmIGF2YWlsYWJsZUZsaWdodHNMYWJlbFwiXG4gICAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnZm9vdGVyJywgJ2l0ZW0nKVwiPlxuICAgICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnaXRlbScsICdhdmFpbGFibGUnKVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnZm9vdGVyJywgJ2xhYmVsJylcIj57e2F2YWlsYWJsZUZsaWdodHNMYWJlbH19PC9kaXY+XG4gICAgICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnaXRlbScsICd1bmF2YWlsYWJsZScpXCI+PC9zcGFuPlxuICAgICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnZm9vdGVyJywgJ2xhYmVsJylcIj57e25vQXZhaWxhYmxlRmxpZ2h0c0xhYmVsfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
607
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUVsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBSTlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7QUFFdkUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBUWYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGdCQUFnQjtJQXNDckQ7OztPQUdHO0lBQ0gsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxJQUFhO1FBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRWhDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIs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O3NKQVFOLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ0YsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNHLFVBQVU7c0JBQXJDLFlBQVk7dUJBQUMsWUFBWTtnQkFDRSxXQUFXO3NCQUF0QyxZQUFZO3VCQUFDLFlBQVk7Z0JBQ0ksZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0YsY0FBYztzQkFBdkMsU0FBUzt1QkFBQyxhQUFhO2dCQU9mLEVBQUU7c0JBQVYsS0FBSztnQkFNRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBTUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQU1HLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFPRixjQUFjO3NCQURqQixLQUFLO2dCQTRCRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0YsY0FBYztzQkFEakIsS0FBSztnQkE2Q0YsVUFBVTtzQkFEYixLQUFLO2dCQTJDRixZQUFZO3NCQURmLEtBQUs7Z0JBcUJHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQU1JLFdBQVc7c0JBQXBCLE1BQU07Z0JBTUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQU1HLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFNRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBdUtQLHNCQUFzQixNQTRCdEIsa0JBQWtCLE1BMEJsQixvQkFBb0IsTUFLcEIsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYWxlbmRhckRhdGVNb2RlbCB9IGZyb20gJy4vY2FsZW5kYXItZGF0ZS5tb2RlbCc7XG5pbXBvcnQgeyBXZWVrU3RhcnQgfSBmcm9tICcuL2VudW1zL3dlZWstc3RhcnQuZW51bSc7XG5pbXBvcnQgeyBEYXlNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2RheS5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25Nb2RlbCB9IGZyb20gJy4vbW9kZWxzL3NlbGVjdC1vcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgV2Vla01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvd2Vlay5tb2RlbCc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBDbGFzc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvY2xhc3MubW9kZWwnO1xuaW1wb3J0IHsgVXRjRGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3V0Yy1kYXRlLm1vZGVsJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IERlYm91bmNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9kZWNvcmF0b3JzL2RlYm91bmNlLmRlY29yYXRvcic7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHdlZWtzOiBBcnJheTxXZWVrTW9kZWw+O1xuICBtb250aHMgPSBuZXcgQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+KCk7XG4gIHdlZWtkYXlzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgncHJldmlvdXNNb250aFJlZicpIHByZXZpb3VzTW9udGhSZWY6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCduZXh0TW9udGhSZWYnKSBuZXh0TW9udGhSZWY6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKCd0YWJsZUNlbGxzJykgdGFibGVDZWxsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBAVmlld0NoaWxkcmVuKCdkYXRlQnV0dG9uJykgZGF0ZUJ1dHRvbnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJDb250ZW50JykgY2FsZW5kYXJDb250ZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdtb250aFNlbGVjdCcpIG1vbnRoU2VsZWN0UmVmOiBTZWxlY3RDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIElEIG9mIHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudFxuICAgKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIExhYmVsIGZvciBubyBhdmFpbGFibGUgZmxpZ2h0cy5cbiAgICovXG4gIEBJbnB1dCgpIG5vQXZhaWxhYmxlRmxpZ2h0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBMYWJlbCBmb3IgYXZhaWxhYmxlIGZsaWdodHMuXG4gICAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVGbGlnaHRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc2FibGUgcG9zc2liaWxpdHkgdG8gc2VsZWN0IGRhdGVzIGluIHRoZSBwYXN0LlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVBhc3RTZWxlY3Rpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIGxvd2VzdCBkYXRlIGFsbG93ZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgbG93ZXJMaW1pdERhdGUoKTogVXRjRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMubG93ZXJMaW1pdERhdGVWYWx1ZTtcbiAgfVxuICBzZXQgbG93ZXJMaW1pdERhdGUoZGF0ZTogVXRjRGF0ZSkge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG93ZXJMaW1pdERhdGVWYWx1ZSA9IGRhdGU7XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVZhbHVlID0gdGhpcy5sb3dlckxpbWl0RGF0ZVZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5sb3dlckxpbWl0RGF0ZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy5kYXRlU2VydmljZS5pc0dyZWF0ZXJUaGFuKGRhdGUsIHRoaXMuc2VsZWN0ZWREYXRlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlVmFsdWUgPSB0aGlzLmxvd2VyTGltaXREYXRlVmFsdWU7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmxvd2VyTGltaXREYXRlVmFsdWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZURhdGUgJiYgdGhpcy5kYXRlU2VydmljZS5pc0dyZWF0ZXJUaGFuKGRhdGUsIHRoaXMuYWN0aXZlRGF0ZSwgZmFsc2UsIHRydWUsIHRydWUpKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmxvd2VyTGltaXREYXRlVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBseVNlbGVjdGVkRGF0ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvblxuICAqIEN1cnJlbnQgbW9udGggZGF0ZSB0byBiZSBkaXNwbGF5ZWQuIEl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgc2VsZWN0ZWQgZGF0ZSBpbnB1dCwgaWYgaXQgaXMgc2V0LlxuICAqL1xuICBASW5wdXQoKSBkYXRlOiBVdGNEYXRlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGVzaWRlcyBpZiB0aGUgd2VlayBzaG91bGQgc3RhcnQgb24gYSBtb25kYXkgb3Igc3VuZGF5LiBEZWZhdWx0cyB0byBtb25kYXkuXG4gICAqL1xuICBASW5wdXQoKSB3ZWVrU3RhcnQgPSBXZWVrU3RhcnQubW9uZGF5O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzcGxheSB3ZWVrIG51bWJlcnMuXG4gICAqL1xuICBASW5wdXQoKSBkaXNwbGF5V2Vla051bWJlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHRoZSBkYXRlcGlja2VyIGluIGF2YWlsYWJpbGl0eSBtb2RlIHdoZXJlIGF2YWlsYWJsZSBkYXRlcyBjYW4gYmUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBhdmFpbGFiaWxpdHk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxvY2FsZSBjb2RlIGZvciB0aGUgbG9jYWxlIGZvcm1hdCBydWxlcyB0byB1c2UuIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBMT0NBTEVfSUQsIHdoaWNoIGlzIGVuLVVTIGJ5IGRlZmF1bHQuXG4gICAqIFRoaXMgcmVxdWlyZXMgdGhhdCByZWdpc3RlckxvY2FsZURhdGEgaXMgY2FsbGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgbG9jYWxlLlxuICAgKi9cbiAgQElucHV0KCkgbG9jYWxlID0gJ2VuLVVTJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGFycmF5IHdpdGggYWxsIHRoZSBhdmFpbGFibGUgZGF0ZXMgb2YgdGhlIG1vbnRoIGZvciBzZWF0cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBhdmFpbGFibGVEYXRlcygpOiBBcnJheTxVdGNEYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlRGF0ZXNWYWx1ZTtcbiAgfVxuICBzZXQgYXZhaWxhYmxlRGF0ZXMoZGF0ZXM6IEFycmF5PFV0Y0RhdGU+KSB7XG4gICAgaWYgKCFkYXRlcyB8fCAhdGhpcy5leGlzdHModGhpcy5hdmFpbGFiaWxpdHkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0RGF0ZSA9IGRhdGVzWzBdO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBmaXJzdERhdGU7XG4gICAgICB0aGlzLnNldFByZXZpb3VzTW9udGhEaXNhYmxlZCgpO1xuICAgIH1cblxuICAgIHRoaXMuYXZhaWxhYmxlRGF0ZXNWYWx1ZSA9IGRhdGVzO1xuXG4gICAgdGhpcy5hcHBseVNlbGVjdGVkRGF0ZUNoYW5nZXMoKTtcblxuICAgIGlmICghdGhpcy5zaG91bGRGb2N1c0NhbGVuZGFyT25BdmFpbGFibGVEYXRlc1VwZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLm5leHRNb250aFJlZi5uYXRpdmVFbGVtZW50IHx8XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLnByZXZpb3VzTW9udGhSZWYubmF0aXZlRWxlbWVudCB8fFxuICAgICAgdGhpcy5tb250aFNlbGVjdFJlZiAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLm1vbnRoU2VsZWN0UmVmLnNlbGVjdC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbG1lbWVudFRvRm9jdXMgPSB0aGlzLmFjdGl2ZURhdGVDZWxsO1xuXG4gICAgICBpZiAoZWxtZW1lbnRUb0ZvY3VzKSB7XG4gICAgICAgIGVsbWVtZW50VG9Gb2N1cy5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNob3VsZEZvY3VzQ2FsZW5kYXJPbkF2YWlsYWJsZURhdGVzVXBkYXRlID0gZmFsc2U7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyBvciBzZXRzIHRoZSBhY3RpdmUgZGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGFjdGl2ZURhdGUoKTogVXRjRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0ZVZhbHVlO1xuICB9XG4gIHNldCBhY3RpdmVEYXRlKGRhdGU6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIWRhdGUgfHwgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVEYXRlKGRhdGUsIHRoaXMuYWN0aXZlRGF0ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVudE1vbnRoKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGRhdGU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZU1vbnRoKGRhdGUsIHRoaXMuY3VycmVudE1vbnRoKSkge1xuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBkYXRlO1xuXG4gICAgICB0aGlzLmFwcGx5U2VsZWN0ZWREYXRlQ2hhbmdlcygpO1xuICAgICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHRoaXMuY3VycmVudE1vbnRoKTtcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNNb250aERpc2FibGVkKCk7XG5cbiAgICAgIGNvbnN0IGVsbWVtZW50VG9Gb2N1cyA9IHRoaXMuYWN0aXZlRGF0ZUNlbGw7XG4gICAgICBpZiAoZWxtZW1lbnRUb0ZvY3VzKSB7XG4gICAgICAgIGVsbWVtZW50VG9Gb2N1cy5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLndlZWtzKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5zZXRBY3RpdmVEYXRlKGRhdGUsIHRoaXMud2Vla3MpO1xuXG4gICAgICBmb3IgKGNvbnN0IGRheSBvZiB0aGlzLmNhbGVuZGFyU2VydmljZS5nZXREYXlzKHRoaXMud2Vla3MpKSB7XG4gICAgICAgIGlmICghZGF5KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF5LmlzQWN0aXZlKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVEYXRlVmFsdWUgPSBkYXRlO1xuICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZUNoYW5nZS5lbWl0KGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGVWYWx1ZTtcbiAgfVxuICBzZXQgc2VsZWN0ZWREYXRlKGRhdGU6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVZhbHVlID0gZGF0ZTtcblxuICAgIGlmICghdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aChkYXRlLCB0aGlzLmFjdGl2ZURhdGUpXG4gICAgICB8fCAhdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aChkYXRlLCB0aGlzLmN1cnJlbnRNb250aCkpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZGF0ZTtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZVZhbHVlID0gZGF0ZTtcbiAgICAgIHRoaXMuYXBwbHlTZWxlY3RlZERhdGVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTZWxlY3RlZERhdGUoZGF0ZSk7XG4gIH1cblxuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGVEaXNwbGF5Rm9ybWF0ID0gJ0VFRUUgZCwgTU1NTSB5eXl5JztcbiAgQElucHV0KCkgYXJpYUxhYmVsUHJldmlvdXNNb250aDogc3RyaW5nO1xuICBASW5wdXQoKSBhcmlhTGFiZWxOZXh0TW9udGg6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1vbnRoIHNlbGVjdGVkIGJ5IHRoZSB1c2VyIGJ5IGNsaWNraW5nIGluIGRyb3AgZG93biBmb3IgbW9udGggc2VsZWN0aW9uIG9yIG1vbnRoIG5hdmlnYXRpb24gYnV0dG9ucy5cbiAgICovXG4gIEBPdXRwdXQoKSBtb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXRjRGF0ZT4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZW4gYSB1c2VyIGhhcyBhY3RpdmVseSBjaGFuZ2VkIHRoZSBkYXRlLlxuICAgKi9cbiAgQE91dHB1dCgpIGZvY3VzT25OZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudCB8IG51bGw+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGVuIHNlbGVjdGVkIGRhdGUgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGVuIGFjdGl2ZSBkYXRlIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgYWN0aXZlRGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXRjRGF0ZT4oKTtcblxuICBnZXQgc2VsZWN0ZWRNb250aCgpOiBTZWxlY3RPcHRpb25Nb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZTtcbiAgfVxuICBzZXQgc2VsZWN0ZWRNb250aChvcHRpb246IFNlbGVjdE9wdGlvbk1vZGVsKSB7XG4gICAgaWYgKCFvcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gb3B0aW9uO1xuICAgIGNvbnN0IG9wdGlvbkRhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUob3B0aW9uLnZhbHVlKTtcblxuICAgIGlmICghdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aChvcHRpb25EYXRlLCB0aGlzLmN1cnJlbnRNb250aCkpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gb3B0aW9uRGF0ZTtcbiAgICAgIHRoaXMuYXBwbHlTZWxlY3RlZERhdGVDaGFuZ2VzKCk7XG4gICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50TW9udGgpO1xuICAgICAgdGhpcy5zZXRQcmV2aW91c01vbnRoRGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbmV4dE1vbnRoRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmV4dE1vbnRoSW5kZXggPSB0aGlzLmN1cnJlbnRNb250aFxuICAgICAgJiYgdGhpcy5kYXRlU2VydmljZS5nZXRVdGNOdW1iZXJPZk1vbnRoQmV0d2Vlbih0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoKSwgdGhpcy5jdXJyZW50TW9udGgpO1xuXG4gICAgcmV0dXJuIChuZXh0TW9udGhJbmRleCArIDIpID49IHRoaXMubWF4TW9udGhJbmRleDtcbiAgfVxuXG4gIGdldCBjdXJyZW50TW9udGhNb2RlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5jdXJyZW50TW9udGgpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dGhpcy5tb250aE5hbWVzW3RoaXMuY3VycmVudE1vbnRoLnRvRGF0ZSgpLmdldFVUQ01vbnRoKCldfSAke3RoaXMuY3VycmVudE1vbnRoLnRvRGF0ZSgpLmdldFVUQ0Z1bGxZZWFyKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSXMgaW4gdXNlIGJ5IERhdGVwaWNrZXJDb21wb25lbnRcbiAgICovXG4gIGdldCBhY3RpdmVEYXRlQ2VsbCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uYXMtY2FsZW5kYXJfX2l0ZW0tLWFjdGl2ZScpO1xuICB9XG5cbiAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZCA/IHRoaXMuaWQgOiBgbmFzLWNhbGVuZGFyLSR7dGhpcy5jb21wb25lbnRJZH1gO1xuICB9XG5cbiAgZ2V0IHByZXZNb250aElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaW5wdXRJZH1fX3ByZXYtbW9udGhgO1xuICB9XG5cbiAgZ2V0IG5leHRNb250aElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaW5wdXRJZH1fX25leHQtbW9udGhgO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXhNb250aEluZGV4ID0gMTM7XG4gIHByaXZhdGUgYWN0aXZlRGF0ZVZhbHVlOiBVdGNEYXRlO1xuICBwcml2YXRlIGF2YWlsYWJsZURhdGVzVmFsdWU6IEFycmF5PFV0Y0RhdGU+O1xuICBwcml2YXRlIGN1cnJlbnRNb250aDogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBzZWxlY3RlZFZhbHVlOiBTZWxlY3RPcHRpb25Nb2RlbDtcbiAgcHJpdmF0ZSBhdmFpbGFibGVEYXlzOiBBcnJheTxEYXlNb2RlbD47XG4gIHByaXZhdGUgbW9udGhOYW1lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIHByaXZhdGUgbG93ZXJMaW1pdERhdGVWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBzZWxlY3RlZERhdGVWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBzaG91bGRGb2N1c0NhbGVuZGFyT25BdmFpbGFibGVEYXRlc1VwZGF0ZSA9IGZhbHNlO1xuICBwcml2YXRlIGNvbXBvbmVudElkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRhdGVTZXJ2aWNlOiBEYXRlSGVscGVyLFxuICAgIHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZSkge1xuICAgIHN1cGVyKCduYXMtY2FsZW5kYXInKTtcbiAgICB0aGlzLmNvbXBvbmVudElkID0gbmV4dElkKys7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXJpYUxhYmVsUHJldmlvdXNNb250aCkge1xuICAgICAgdGhpcy53YXJuTWlzc2luZ0FjY2Vzc2liaWx0eUlucHV0KCdhcmlhTGFiZWxQcmV2aW91c01vbnRoJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFyaWFMYWJlbE5leHRNb250aCkge1xuICAgICAgdGhpcy53YXJuTWlzc2luZ0FjY2Vzc2liaWx0eUlucHV0KCdhcmlhTGFiZWxOZXh0TW9udGgnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXAgJiYgdGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpIHtcblxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZTogQ2FsZW5kYXJEYXRlTW9kZWwgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICAgIGlmIChjYWxlbmRhckRhdGUpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGNhbGVuZGFyRGF0ZS5kYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZSB8fCAhdGhpcy5jdXJyZW50TW9udGgpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuZ2V0Q3VycmVudE1vbnRoKHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5hdmFpbGFibGVEYXlzID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuZ2V0QXZhaWxhYmxlRGF5cyhcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoLFxuICAgICAgdGhpcy5hdmFpbGFibGVEYXRlcyxcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5LFxuICAgICAgdGhpcy5kaXNhYmxlUGFzdFNlbGVjdGlvbixcbiAgICAgIHRoaXMubG93ZXJMaW1pdERhdGUsXG4gICAgICB0aGlzLmFjdGl2ZURhdGUsXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSk7XG5cbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGVBdmFpbGFibGVEYXlzV2l0aFNlbGVjdGVkRGF0ZSh0aGlzLmF2YWlsYWJsZURheXMsIHRoaXMuc2VsZWN0ZWREYXRlKTtcblxuICAgIHRoaXMud2Vla3MgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5nZXRXZWVrcyh0aGlzLmF2YWlsYWJsZURheXMsIHRoaXMud2Vla1N0YXJ0KTtcbiAgICB0aGlzLm1vbnRoTmFtZXMgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5nZXRNb250aE5hbWVzKHRoaXMubG9jYWxlKTtcbiAgICB0aGlzLm1vbnRocyA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmdldE1vbnRoc1NlbGVjdE9wdGlvbnModGhpcy5kaXNhYmxlUGFzdFNlbGVjdGlvbiwgdGhpcy5tYXhNb250aEluZGV4LCB0aGlzLm1vbnRoTmFtZXMpO1xuICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmdldFNlbGVjdGVkTW9udGgodGhpcy5tb250aHMsIHRoaXMuY3VycmVudE1vbnRoKTtcbiAgICB0aGlzLndlZWtkYXlzID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuZ2V0V2Vla2RheXModGhpcy53ZWVrU3RhcnQsIHRoaXMubG9jYWxlKTtcblxuICAgIHRoaXMuc2V0UHJldmlvdXNNb250aERpc2FibGVkKCk7XG4gIH1cblxuICBkYXRlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCBlbGVtZW50VG9Gb2N1czogSFRNTEVsZW1lbnQ7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5zaG91bGRGb2N1c0NhbGVuZGFyT25BdmFpbGFibGVEYXRlc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzTW9udGhSZWYgJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vbnRoU2VsZWN0UmVmICYmIHRoaXMubW9udGhzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5tb250aFNlbGVjdFJlZi5zZWxlY3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubmV4dE1vbnRoUmVmICYmICF0aGlzLm5leHRNb250aERpc2FibGVkKSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMubmV4dE1vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLm5leHRNb250aFJlZiAmJiAhdGhpcy5uZXh0TW9udGhEaXNhYmxlZCkge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMgPSB0aGlzLm5leHRNb250aFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb250aFNlbGVjdFJlZiAmJiB0aGlzLm1vbnRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMubW9udGhTZWxlY3RSZWYuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzTW9udGhSZWYgJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1c0VsZW1lbnQoZXZlbnQsIGVsZW1lbnRUb0ZvY3VzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgYWN0aXZlRGF5ID0gdGhpcy5jYWxlbmRhclNlcnZpY2VcbiAgICAgICAgICAuZ2V0RGF5cyh0aGlzLndlZWtzKVxuICAgICAgICAgIC5maW5kKHggPT4geCAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHguZGF0ZSksIHRoaXMuYWN0aXZlRGF0ZSkpO1xuXG4gICAgICAgIGlmICh0aGlzLmF2YWlsYWJpbGl0eSAmJiBhY3RpdmVEYXk/LmlzQXZhaWxhYmxlICYmICFhY3RpdmVEYXk/LmlzRGlzYWJsZWQgfHwgIXRoaXMuYXZhaWxhYmlsaXR5KSB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUodGhpcy5hY3RpdmVEYXRlKTtcbiAgICAgICAgICB0aGlzLmZvY3VzT25OZXh0Q2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBEZWJvdW5jZSgxNTApXG4gIG9uUHJldmlvdXNNb250aEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudFRvRm9jdXM6IEhUTUxFbGVtZW50O1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgaWYgKHRoaXMubW9udGhTZWxlY3RSZWYgJiYgdGhpcy5tb250aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMgPSB0aGlzLm1vbnRoU2VsZWN0UmVmLnNlbGVjdC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0TW9udGhSZWYgJiYgIXRoaXMubmV4dE1vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5uZXh0TW9udGhSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMgPSB0aGlzLmFjdGl2ZURhdGVDZWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMuYWN0aXZlRGF0ZUNlbGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzRWxlbWVudChldmVudCwgZWxlbWVudFRvRm9jdXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgdGhpcy5nZXRQcmV2aW91c01vbnRoKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgQERlYm91bmNlKDE1MClcbiAgb25OZXh0TW9udGhLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudDtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5hY3RpdmVEYXRlQ2VsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5tb250aFNlbGVjdFJlZiAmJiB0aGlzLm1vbnRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMubW9udGhTZWxlY3RSZWYuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9uUHJldmlvdXNNb250aEtleWRvd24gJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5hY3RpdmVEYXRlQ2VsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzRWxlbWVudChldmVudCwgZWxlbWVudFRvRm9jdXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5nZXROZXh0TW9udGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgQERlYm91bmNlKDIwMClcbiAgb25OZXh0TW9udGhNb3VzZWRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5nZXROZXh0TW9udGgoKTtcbiAgfVxuXG4gIEBEZWJvdW5jZSgyMDApXG4gIG9uUHJldmlvdXNNb250aE1vdXNlZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmdldFByZXZpb3VzTW9udGgoKTtcbiAgfVxuXG4gIG9uTW9udGhTZWxlY3RLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudDtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGlmICh0aGlzLm5leHRNb250aFJlZiAmJiAhdGhpcy5uZXh0TW9udGhEaXNhYmxlZCkge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMgPSB0aGlzLm5leHRNb250aFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9IHRoaXMuYWN0aXZlRGF0ZUNlbGw7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLm9uUHJldmlvdXNNb250aEtleWRvd24gJiYgIXRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5wcmV2aW91c01vbnRoUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzID0gdGhpcy5hY3RpdmVEYXRlQ2VsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzRWxlbWVudChldmVudCwgZWxlbWVudFRvRm9jdXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBmb2N1c0VsZW1lbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xuICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0QWN0aXZlRGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudE1vbnRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdG9kYXkgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoKTtcbiAgICBjb25zdCBsYXN0RGF5ID0gbmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGggKyAxLCAwKTtcbiAgICBjb25zdCBuZXdEYXRlID0gdGhpcy5hY3RpdmVEYXRlPy5kYXRlID4gbGFzdERheS5nZXREYXRlKCkgPyBsYXN0RGF5LmdldERhdGUoKSA6IHRoaXMuYWN0aXZlRGF0ZT8uZGF0ZTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aC5tb250aCAhPT0gdG9kYXkubW9udGggfHwgdGhpcy5jdXJyZW50TW9udGgueWVhciAhPT0gdG9kYXkueWVhcikge1xuICAgICAgY29uc3QgbmV4dE1vbnRoID0gdGhpcy5jdXJyZW50TW9udGgubW9udGg7XG4gICAgICBjb25zdCBuZXh0WWVhciA9IHRoaXMuY3VycmVudE1vbnRoLnllYXI7XG5cbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBVdGNEYXRlKG5leHRZZWFyLCBuZXh0TW9udGgsIG5ld0RhdGUpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZURhdGUgJiYgdGhpcy5hY3RpdmVEYXRlLm1vbnRoICE9PSB0aGlzLmN1cnJlbnRNb250aC5tb250aCkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IFV0Y0RhdGUodGhpcy5hY3RpdmVEYXRlVmFsdWUueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGgsIG5ld0RhdGUpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VEb3duKGRhdGU6IHN0cmluZywgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF0ZSkpO1xuICAgIHRoaXMuZm9jdXNPbk5leHRDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkRheUZvY3VzKGRheTogRGF5TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpO1xuICB9XG5cbiAgb25EYXlDbGljayhkYXk6IERheU1vZGVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0ZVNlcnZpY2UuaXNHcmVhdGVyVGhhbih0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpLCB0aGlzLmFjdGl2ZURhdGUpKSB7XG5cbiAgICB9XG4gICAgaWYgKCFkYXkuaXNBdmFpbGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpKTtcbiAgICB0aGlzLmF2YWlsYWJsZURheXMuZm9yRWFjaChkYXRlID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZURhdGUgJiYgdGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgICAgY29uc3QgdXRjRGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShkYXkuZGF0ZSk7XG4gICAgICAgIGNvbnN0IHdpdGhpblJhbmdlID0gdGhpcy5kYXRlU2VydmljZS5pc0dyZWF0ZXJUaGFuKHV0Y0RhdGUsIHRoaXMuc2VsZWN0ZWREYXRlKSAmJlxuICAgICAgICAgIHRoaXMuZGF0ZVNlcnZpY2UuaXNMZXNzVGhhbih1dGNEYXRlLCB0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICBkYXRlLmlzV2l0aGluUmFuZ2UgPSB3aXRoaW5SYW5nZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkRGF0ZShkYXRlOiBVdGNEYXRlKTogdm9pZCB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwICYmIHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgY29uc3QgY2FsZW5kYXJEYXRlOiBDYWxlbmRhckRhdGVNb2RlbCA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZShkYXRlKSwgdGhpcy5kYXRlRGlzcGxheUZvcm1hdCwgJ1VUQycsIHRoaXMubG9jYWxlKSxcbiAgICAgICAgZGF0ZTogZGF0ZVxuICAgICAgfTtcblxuICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGNhbGVuZGFyRGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcblxuICAgIGlmICh0aGlzLndlZWtzICYmIHRoaXMud2Vla3MubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCB3ZWVrIG9mIHRoaXMud2Vla3MpIHtcbiAgICAgICAgaWYgKCF3ZWVrKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGRheSBvZiB3ZWVrLmRheXMpIHtcbiAgICAgICAgICBpZiAoIWRheSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGF5LmlzU2VsZWN0ZWQgPSBkYXkuaXNBdmFpbGFibGVcbiAgICAgICAgICAgICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpLCBkYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldENlbGxCdXR0b25DbGFzcyhkYXk6IERheU1vZGVsKTogQ2xhc3NNb2RlbCB7XG4gICAgaWYgKCFkYXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCdpdGVtJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJ2l0ZW0nLCBbXG4gICAgICBkYXkuaXNEaXNhYmxlZCAmJiAnYmVmb3JlJyxcbiAgICAgIGRheS5pc1NlbGVjdGVkICYmICdzZWxlY3RlZCcsXG4gICAgICAhdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aCh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZGF5LmRhdGUpLCB0aGlzLmN1cnJlbnRNb250aCkgJiYgJ2VtcHR5JyxcbiAgICAgIGRheS5pc0F2YWlsYWJsZSAmJiAnYXZhaWxhYmxlJyxcbiAgICAgICdsYXJnZScsXG4gICAgICBkYXkuaXNBY3RpdmUgJiYgJ2FjdGl2ZScsXG4gICAgICBkYXkuaXNXaXRoaW5SYW5nZSAmJiAnd2l0aGluLXJhbmdlJ1xuICAgIF0pO1xuICB9XG5cbiAgZ2V0TmV4dE1vbnRoKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53ZWVrcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0V2VlayA9IHRoaXMud2Vla3NbMF07XG5cbiAgICBpZiAoIWZpcnN0V2Vlaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0VmFsaWREYXkgPSBmaXJzdFdlZWsuZGF5c1xuICAgICAgLmZpbmQoZGF5ID0+IGRheSAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZU1vbnRoKHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShkYXkuZGF0ZSksIHRoaXMuY3VycmVudE1vbnRoKSk7XG5cbiAgICBpZiAoIWZpcnN0VmFsaWREYXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0TW9udGggPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZmlyc3RWYWxpZERheS5kYXRlKTtcbiAgICBjb25zdCBtb250aCA9IG5leHRNb250aC5tb250aCArIDE7XG4gICAgbmV4dE1vbnRoLnNldE1vbnRoKG1vbnRoKTtcblxuICAgIHRoaXMuY3VycmVudE1vbnRoID0gbmV4dE1vbnRoO1xuXG4gICAgdGhpcy5hcHBseVNlbGVjdGVkRGF0ZUNoYW5nZXMoKTtcbiAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50TW9udGgpO1xuICAgIHRoaXMuc2V0UHJldmlvdXNNb250aERpc2FibGVkKCk7XG5cbiAgICBpZiAoIXRoaXMuYXZhaWxhYmlsaXR5KSB7XG4gICAgICB0aGlzLm1heE1vbnRoSW5kZXgrKztcbiAgICB9XG4gIH1cblxuICBnZXRQcmV2aW91c01vbnRoKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53ZWVrcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0V2VlayA9IHRoaXMud2Vla3NbMF07XG5cbiAgICBpZiAoIWZpcnN0V2Vlaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0VmFsaWREYXkgPSBmaXJzdFdlZWsuZGF5c1xuICAgICAgLmZpbmQoZGF5ID0+IGRheSAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZU1vbnRoKHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShkYXkuZGF0ZSksIHRoaXMuY3VycmVudE1vbnRoKSk7XG5cbiAgICBjb25zdCBwcmV2aW91c01vbnRoID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKGZpcnN0VmFsaWREYXkuZGF0ZSk7XG4gICAgY29uc3QgbW9udGggPSBwcmV2aW91c01vbnRoLm1vbnRoIC0gMTtcbiAgICBwcmV2aW91c01vbnRoLnNldE1vbnRoKG1vbnRoKTtcblxuICAgIHRoaXMuY3VycmVudE1vbnRoID0gcHJldmlvdXNNb250aDtcblxuICAgIHRoaXMuYXBwbHlTZWxlY3RlZERhdGVDaGFuZ2VzKCk7XG4gICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHRoaXMuY3VycmVudE1vbnRoKTtcbiAgICB0aGlzLnNldFByZXZpb3VzTW9udGhEaXNhYmxlZCgpO1xuICB9XG5cbiAgc2V0UHJldmlvdXNNb250aERpc2FibGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCkge1xuICAgICAgY29uc3QgcHJldmlvdXNNb250aCA9IG5ldyBVdGNEYXRlKHRoaXMuY3VycmVudE1vbnRoLnllYXIsIHRoaXMuY3VycmVudE1vbnRoLm1vbnRoLCB0aGlzLmN1cnJlbnRNb250aC5kYXRlKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gcHJldmlvdXNNb250aC5tb250aCAtIDE7XG4gICAgICBwcmV2aW91c01vbnRoLnNldE1vbnRoKG1vbnRoKTtcblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZVBhc3RTZWxlY3Rpb24gJiYgdGhpcy5kYXRlU2VydmljZS5pc0luVGhlUGFzdChwcmV2aW91c01vbnRoLCB0cnVlKSkge1xuICAgICAgICB0aGlzLmlzUHJldmlvdXNNb250aERpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZWxlY3RlZERhdGVDaGFuZ2VzKCkge1xuICAgIHRoaXMuYXZhaWxhYmxlRGF5cyA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmdldEF2YWlsYWJsZURheXMoXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCxcbiAgICAgIHRoaXMuYXZhaWxhYmxlRGF0ZXMsXG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eSxcbiAgICAgIHRoaXMuZGlzYWJsZVBhc3RTZWxlY3Rpb24sXG4gICAgICB0aGlzLmxvd2VyTGltaXREYXRlLFxuICAgICAgdGhpcy5hY3RpdmVEYXRlLFxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUpO1xuXG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy5tb250aHNcbiAgICAgIC5maW5kKHggPT4gdGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aCh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoeC52YWx1ZSksIHRoaXMuY3VycmVudE1vbnRoKSk7XG5cbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGVBdmFpbGFibGVEYXlzV2l0aFNlbGVjdGVkRGF0ZSh0aGlzLmF2YWlsYWJsZURheXMsIHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB0aGlzLndlZWtzID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuZ2V0V2Vla3ModGhpcy5hdmFpbGFibGVEYXlzLCB0aGlzLndlZWtTdGFydCk7XG4gIH1cbn1cbiIsIjxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKClcIj5cbiAgPGRpdiAjY2FsZW5kYXJDb250ZW50IHRhYmluZGV4PVwiMFwiIFtuYXNDbGFzc109XCJnZXRDbGFzcygnY29udGVudCcpXCI+XG4gICAgPGhlYWRlciBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2hlYWRlcicpXCI+XG4gICAgICA8YnV0dG9uIFtpZF09XCJwcmV2TW9udGhJZFwiIHR5cGU9XCJidXR0b25cIiAjcHJldmlvdXNNb250aFJlZiB0YWJpbmRleD1cIjBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFByZXZpb3VzTW9udGhcIlxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ25hdicpXCIgW2Rpc2FibGVkXT1cImlzUHJldmlvdXNNb250aERpc2FibGVkID09PSB0cnVlXCJcbiAgICAgICAgKGtleWRvd24pPVwib25QcmV2aW91c01vbnRoS2V5ZG93bigkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJvblByZXZpb3VzTW9udGhNb3VzZWRvd24oKVwiPlxuICAgICAgICA8bmFzLWljb24gdGFiaW5kZXg9XCItMVwiIFt0eXBlXT1cIidhcnJvdy1sZWZ0J1wiPjwvbmFzLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb250aHM/Lmxlbmd0aCA+IDA7IGVsc2UgY3VycmVudE1vbnRoVGVtcGxhdGVcIj5cbiAgICAgICAgPG5hcy1zZWxlY3QgI21vbnRoU2VsZWN0IFtjc3NDbGFzc109XCJnZXRDbGFzcygnbW9udGgnKVwiIFtpbmxpbmVdPVwidHJ1ZVwiIFtzaW1wbGVdPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm1vbnRoc1wiXG4gICAgICAgICAgWyhzZWxlY3RlZCldPVwic2VsZWN0ZWRNb250aFwiIChrZXlkb3duKT1cIm9uTW9udGhTZWxlY3RLZXlkb3duKCRldmVudClcIj48L25hcy1zZWxlY3Q+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVudE1vbnRoVGVtcGxhdGU+XG4gICAgICAgIHt7Y3VycmVudE1vbnRoTW9kZWx9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxidXR0b24gW2lkXT1cIm5leHRNb250aElkXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiICNuZXh0TW9udGhSZWYgW25hc0NsYXNzXT1cImdldENsYXNzKCduYXYnKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsTmV4dE1vbnRoXCIgW2Rpc2FibGVkXT1cIm5leHRNb250aERpc2FibGVkXCIgKGtleWRvd24pPVwib25OZXh0TW9udGhLZXlkb3duKCRldmVudClcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uTmV4dE1vbnRoTW91c2Vkb3duKClcIj5cbiAgICAgICAgPG5hcy1pY29uIFt0eXBlXT1cIidhcnJvdy1yaWdodCdcIj48L25hcy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8IS0tIFdlZWtkYXlzICsgRGF0ZXMgLS0+XG4gICAgPHRhYmxlIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGFibGUnKVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHIgW25hc0NsYXNzXT1cImdldENsYXNzKCd3ZWVrJylcIj5cbiAgICAgICAgICA8dGggKm5nSWY9XCJleGlzdHMoZGlzcGxheVdlZWtOdW1iZXJzKVwiIFtuYXNDbGFzc109XCJnZXRDbGFzcygnd2Vlay1udW1iZXInKVwiPjwvdGg+XG4gICAgICAgICAgPHRoIFtuYXNDbGFzc109XCJnZXRDbGFzcygnY2VsbCcpXCIgKm5nRm9yPVwibGV0IHdlZWtkYXkgb2Ygd2Vla2RheXNcIj5cbiAgICAgICAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdpdGVtJywgJ2hlYWRlcicpXCI+e3t3ZWVrZGF5fX08L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIHdlZWtzXCIgW25hc0NsYXNzXT1cImdldENsYXNzKCdyb3cnLCAnYW5pbWF0ZScpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwiZXhpc3RzKGRpc3BsYXlXZWVrTnVtYmVycylcIiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3dlZWstbnVtYmVyJylcIj5cbiAgICAgICAgICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnZGF0ZScsICd3ZWVrLW51bWJlcicpXCI+e3t3ZWVrLndlZWtOdW1iZXJ9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2NlbGwnKVwiICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vlaz8uZGF5c1wiICN0YWJsZUNlbGxzPlxuICAgICAgICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2l0ZW0nLCAnZHVtbXknKVwiICpuZ0lmPVwiZGF5ID09PSBudWxsOyBlbHNlIGRheVRlbXBsYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RheVRlbXBsYXRlIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiZGF5LXt7ZGF5LmRhdGUgfCBkYXRlIDogJ2QnOidVVEMnOmxvY2FsZX19XCIgdHlwZT1cImJ1dHRvblwiICNkYXRlQnV0dG9uIChrZXlkb3duKT1cImRhdGVLZXlEb3duKCRldmVudClcIiB0YWJJbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIFtuYXNDbGFzc109XCJnZXRDZWxsQnV0dG9uQ2xhc3MoZGF5KVwiIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oZGF5LmRhdGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRheUNsaWNrKGRheSlcIiAoZm9jdXMpPVwib25EYXlGb2N1cyhkYXkpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2RhdGUtd3JhcHBlcicpXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2RhdGUnKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZGF5LmRhdGUgfCBkYXRlIDogJ2QnOidVVEMnXCI+e3sgZGF5LmRhdGUgfCBkYXRlXG4gICAgICAgICAgICAgICAgICAgIDogJ2QnOidVVEMnOmxvY2FsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnZm9vdGVyJylcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhdmFpbGFibGVEYXRlcz8ubGVuZ3RoID09PSAwICYmIG5vQXZhaWxhYmxlRmxpZ2h0c0xhYmVsXCIgW25hc0NsYXNzXT1cImdldENsYXNzKCdmb290ZXInLCAnaXRlbScpXCI+XG4gICAgICAgIDxuYXMtaWNvbiBbaWNvbl09XCInYWxlcnQnXCI+PC9uYXMtaWNvbj5cbiAgICAgICAge3tub0F2YWlsYWJsZUZsaWdodHNMYWJlbH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhdmFpbGFibGVEYXRlcz8ubGVuZ3RoID4gMCAmJiBub0F2YWlsYWJsZUZsaWdodHNMYWJlbCAmJiBhdmFpbGFibGVGbGlnaHRzTGFiZWxcIlxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2Zvb3RlcicsICdpdGVtJylcIj5cbiAgICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2l0ZW0nLCAnYXZhaWxhYmxlJylcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2Zvb3RlcicsICdsYWJlbCcpXCI+e3thdmFpbGFibGVGbGlnaHRzTGFiZWx9fTwvZGl2PlxuICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2l0ZW0nLCAndW5hdmFpbGFibGUnKVwiPjwvc3Bhbj5cbiAgICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2Zvb3RlcicsICdsYWJlbCcpXCI+e3tub0F2YWlsYWJsZUZsaWdodHNMYWJlbH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2NhbGVuZGFyL21vZGVscy9kYXkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF5TW9kZWwge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICBpbmRleD86IG51bWJlcjtcbiAgICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBpc0VtcHR5PzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpc0F2YWlsYWJsZT86IGJvb2xlYW47XG4gICAgaXNBY3RpdmU/OiBib29sZWFuO1xuICAgIGlzV2l0aGluUmFuZ2U/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9jYWxlbmRhci9tb2RlbHMvc2VsZWN0LW9wdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb25Nb2RlbCB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9jYWxlbmRhci9tb2RlbHMvd2Vlay5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF5TW9kZWwgfSBmcm9tICcuL2RheS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2Vla01vZGVsIHtcbiAgICBkYXlzOiBBcnJheTxEYXlNb2RlbD47XG4gICAgd2Vla051bWJlcjogbnVtYmVyO1xufVxuIl19
|