@sbb-esta/lyne-elements 1.11.3 → 1.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.scss +1 -1
- package/core/i18n/i18n.d.ts +5 -0
- package/core/i18n/i18n.d.ts.map +1 -1
- package/core/i18n.js +85 -55
- package/core/styles/core/functions.scss +1 -1
- package/core/styles/lists.scss +4 -0
- package/core/styles/mixins/helpers.scss +1 -1
- package/core/styles/mixins/lists.scss +128 -77
- package/core/styles/mixins/scrollbar.scss +2 -2
- package/core/styles/mixins/table.scss +4 -6
- package/core/styles/normalize.scss +62 -131
- package/core.css +0 -5
- package/custom-elements.json +781 -77
- package/development/accordion.js +2 -9
- package/development/action-group.js +2 -9
- package/development/alert/alert-group.js +2 -9
- package/development/alert/alert.js +2 -9
- package/development/autocomplete-grid/autocomplete-grid-button.js +2 -9
- package/development/autocomplete-grid/autocomplete-grid-cell.js +2 -9
- package/development/autocomplete-grid/autocomplete-grid-option.js +2 -9
- package/development/autocomplete-grid/autocomplete-grid-row.js +2 -9
- package/development/autocomplete.js +2 -12
- package/development/breadcrumb/breadcrumb-group.js +2 -9
- package/development/breadcrumb/breadcrumb.js +2 -9
- package/development/button/common.js +2 -11
- package/development/button/mini-button-group.js +2 -9
- package/development/button/mini-button.js +2 -9
- package/development/calendar.js +2 -9
- package/development/card/card-badge.js +2 -9
- package/development/card/card.js +2 -9
- package/development/card/common.js +2 -9
- package/development/checkbox/checkbox-group.js +2 -9
- package/development/checkbox/checkbox.js +2 -9
- package/development/checkbox/common.js +1 -8
- package/development/chip.js +2 -9
- package/development/clock.js +2 -9
- package/development/container/container.js +1 -8
- package/development/container/sticky-bar.js +2 -9
- package/development/core/i18n/i18n.d.ts +5 -0
- package/development/core/i18n/i18n.d.ts.map +1 -1
- package/development/core/i18n.js +36 -1
- package/development/core/mixins.js +2 -9
- package/development/datepicker/datepicker-next-day.js +2 -9
- package/development/datepicker/datepicker-previous-day.js +2 -9
- package/development/datepicker/datepicker-toggle.js +2 -9
- package/development/datepicker/datepicker.js +2 -9
- package/development/dialog/dialog-actions.js +2 -9
- package/development/dialog/dialog-content.js +2 -11
- package/development/dialog/dialog-title.js +2 -9
- package/development/dialog/dialog.js +2 -9
- package/development/divider.js +2 -9
- package/development/expansion-panel/expansion-panel-content.js +2 -9
- package/development/expansion-panel/expansion-panel-header.js +2 -9
- package/development/expansion-panel/expansion-panel.js +2 -9
- package/development/file-selector.js +2 -9
- package/development/flip-card/flip-card-details.js +2 -9
- package/development/flip-card/flip-card-summary.js +2 -9
- package/development/flip-card/flip-card.js +2 -9
- package/development/footer.js +2 -9
- package/development/form-error.js +2 -9
- package/development/form-field/form-field-clear.js +2 -9
- package/development/form-field/form-field.js +1 -12
- package/development/header/common.js +2 -9
- package/development/header/header.js +2 -9
- package/development/icon.js +2 -9
- package/development/image/image.d.ts +1 -0
- package/development/image/image.d.ts.map +1 -1
- package/development/image.js +13 -13
- package/development/journey-header.js +2 -9
- package/development/lead-container.js +2 -9
- package/development/link/common.js +4 -25
- package/development/link-list/common.js +2 -9
- package/development/link-list/link-list-anchor.js +2 -9
- package/development/link-list/link-list.js +2 -9
- package/development/loading-indicator.js +2 -10
- package/development/logo.js +2 -9
- package/development/map-container.js +2 -11
- package/development/menu/common.js +2 -9
- package/development/menu/menu.js +2 -11
- package/development/message.js +2 -9
- package/development/navigation/common.js +2 -9
- package/development/navigation/navigation-list.js +2 -9
- package/development/navigation/navigation-marker.js +2 -9
- package/development/navigation/navigation-section.js +2 -11
- package/development/navigation/navigation.js +2 -11
- package/development/notification.js +2 -10
- package/development/option/optgroup.js +2 -9
- package/development/option/option.js +2 -9
- package/development/overlay.js +2 -11
- package/development/paginator/index.d.ts +2 -0
- package/development/paginator/index.d.ts.map +1 -0
- package/development/paginator/paginator.d.ts +91 -0
- package/development/paginator/paginator.d.ts.map +1 -0
- package/development/paginator.d.ts +2 -0
- package/development/paginator.d.ts.map +1 -0
- package/development/paginator.js +519 -0
- package/development/popover/popover-trigger.js +2 -9
- package/development/popover/popover.js +2 -9
- package/development/radio-button/common.js +2 -9
- package/development/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/development/radio-button/radio-button-group.js +19 -22
- package/development/radio-button/radio-button.js +2 -9
- package/development/screen-reader-only.js +2 -9
- package/development/select/select.d.ts +6 -0
- package/development/select/select.d.ts.map +1 -1
- package/development/select.js +23 -18
- package/development/selection-expansion-panel.js +2 -9
- package/development/signet.js +2 -9
- package/development/skiplink-list.js +2 -9
- package/development/slider/slider.d.ts +35 -16
- package/development/slider/slider.d.ts.map +1 -1
- package/development/slider.js +102 -88
- package/development/status.js +2 -9
- package/development/stepper/step-label.js +2 -9
- package/development/stepper/step.js +2 -9
- package/development/stepper/stepper.js +2 -9
- package/development/table/table-wrapper.js +2 -11
- package/development/tabs/tab-group.js +2 -9
- package/development/tabs/tab-label.js +2 -9
- package/development/tabs/tab.js +1 -8
- package/development/tag/tag-group.js +2 -9
- package/development/tag/tag.js +2 -9
- package/development/teaser-hero.js +2 -9
- package/development/teaser-product/common.js +2 -9
- package/development/teaser-product/teaser-product.js +2 -9
- package/development/teaser.js +12 -11
- package/development/time-input.js +2 -9
- package/development/timetable-occupancy-icon.js +2 -9
- package/development/timetable-occupancy.js +2 -9
- package/development/title.js +3 -17
- package/development/toast.js +2 -9
- package/development/toggle/toggle-option.js +2 -9
- package/development/toggle/toggle.js +2 -9
- package/development/toggle-check.js +1 -8
- package/development/train/train-blocked-passage.js +2 -9
- package/development/train/train-formation.js +2 -11
- package/development/train/train-wagon.js +2 -9
- package/development/train/train.js +2 -9
- package/development/visual-checkbox.js +2 -9
- package/image/image.d.ts +1 -0
- package/image/image.d.ts.map +1 -1
- package/image.js +7 -7
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/lists.css +97 -38
- package/normalize.css +21 -113
- package/package.json +6 -1
- package/paginator/index.d.ts +2 -0
- package/paginator/index.d.ts.map +1 -0
- package/paginator/paginator.d.ts +91 -0
- package/paginator/paginator.d.ts.map +1 -0
- package/paginator.d.ts +2 -0
- package/paginator.d.ts.map +1 -0
- package/paginator.js +263 -0
- package/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/radio-button/radio-button-group.js +13 -8
- package/select/select.d.ts +6 -0
- package/select/select.d.ts.map +1 -1
- package/select.js +40 -24
- package/slider/slider.d.ts +35 -16
- package/slider/slider.d.ts.map +1 -1
- package/slider.js +111 -78
- package/standard-theme.css +116 -160
- package/teaser.js +16 -16
package/development/core/i18n.js
CHANGED
|
@@ -608,6 +608,36 @@ const i18nFileSelectorCurrentlySelected = (filesName) => {
|
|
|
608
608
|
it: "Nessun file selezionato."
|
|
609
609
|
};
|
|
610
610
|
};
|
|
611
|
+
const i18nNextPage = {
|
|
612
|
+
de: "Nächste Seite",
|
|
613
|
+
en: "Next page",
|
|
614
|
+
fr: "Prochaine page",
|
|
615
|
+
it: "Pagina successiva"
|
|
616
|
+
};
|
|
617
|
+
const i18nPreviousPage = {
|
|
618
|
+
de: "Vorherige Seite",
|
|
619
|
+
en: "Previous page",
|
|
620
|
+
fr: "Page précédente",
|
|
621
|
+
it: "Pagina precedente"
|
|
622
|
+
};
|
|
623
|
+
const i18nPage = {
|
|
624
|
+
de: "Seite",
|
|
625
|
+
en: "Page",
|
|
626
|
+
fr: "Page",
|
|
627
|
+
it: "Pagina"
|
|
628
|
+
};
|
|
629
|
+
const i18nItemsPerPage = {
|
|
630
|
+
de: "Einträge pro Seite",
|
|
631
|
+
en: "Items per page",
|
|
632
|
+
fr: "Entrées par page",
|
|
633
|
+
it: "Elementi per pagina"
|
|
634
|
+
};
|
|
635
|
+
const i18nSelectedPage = (pageNumber) => ({
|
|
636
|
+
de: `Seite ${pageNumber} ausgewählt.`,
|
|
637
|
+
en: `Page ${pageNumber} selected.`,
|
|
638
|
+
fr: `Page ${pageNumber} sélectionnée.`,
|
|
639
|
+
it: `Pagina ${pageNumber} selezionata.`
|
|
640
|
+
});
|
|
611
641
|
export {
|
|
612
642
|
i18nAdditionalWagonInformationHeading,
|
|
613
643
|
i18nArrival,
|
|
@@ -643,18 +673,22 @@ export {
|
|
|
643
673
|
i18nFlipCard,
|
|
644
674
|
i18nFromPlatform,
|
|
645
675
|
i18nGoBack,
|
|
676
|
+
i18nItemsPerPage,
|
|
646
677
|
i18nLocomotiveLabel,
|
|
647
678
|
i18nMapContainerButtonLabel,
|
|
648
679
|
i18nMeansOfTransport,
|
|
649
680
|
i18nNew,
|
|
650
681
|
i18nNextDay,
|
|
651
682
|
i18nNextMonth,
|
|
683
|
+
i18nNextPage,
|
|
652
684
|
i18nNextYear,
|
|
653
685
|
i18nNextYearRange,
|
|
654
686
|
i18nOccupancy,
|
|
655
687
|
i18nOptional,
|
|
688
|
+
i18nPage,
|
|
656
689
|
i18nPreviousDay,
|
|
657
690
|
i18nPreviousMonth,
|
|
691
|
+
i18nPreviousPage,
|
|
658
692
|
i18nPreviousYear,
|
|
659
693
|
i18nPreviousYearRange,
|
|
660
694
|
i18nRealTimeInfo,
|
|
@@ -663,6 +697,7 @@ export {
|
|
|
663
697
|
i18nSectorShort,
|
|
664
698
|
i18nSelectNextDay,
|
|
665
699
|
i18nSelectPreviousDay,
|
|
700
|
+
i18nSelectedPage,
|
|
666
701
|
i18nShowCalendar,
|
|
667
702
|
i18nSupersaver,
|
|
668
703
|
i18nTargetOpensInNewWindow,
|
|
@@ -681,4 +716,4 @@ export {
|
|
|
681
716
|
i18nWalkingDistanceDeparture,
|
|
682
717
|
i18nYearMonthSelection
|
|
683
718
|
};
|
|
684
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvaTE4bi9pMThuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2JiTGFuZ3VhZ2UsIFNiYk9jY3VwYW5jeSB9IGZyb20gJy4uL2ludGVyZmFjZXMuanMnO1xuXG5leHBvcnQgY29uc3QgaTE4bkRpcmVjdGlvbjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdSaWNodHVuZycsXG4gIGVuOiAnRGlyZWN0aW9uJyxcbiAgZnI6ICdEaXJlY3Rpb24nLFxuICBpdDogJ0RpcmV6aW9uZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkFycml2YWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnQW5rdW5mdCcsXG4gIGVuOiAnQXJyaXZhbCcsXG4gIGZyOiAnQXJyaXbDqWUnLFxuICBpdDogJ0Fycml2bycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blNlY3RvcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdTZWt0b3InLFxuICBlbjogJ1NlY3RvcicsXG4gIGZyOiAnU2VjdGV1cicsXG4gIGl0OiAnU2V0dG9yZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blNlY3RvclNob3J0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1NrdC4nLFxuICBlbjogJ1NlYy4nLFxuICBmcjogJ1NlY3QuJyxcbiAgaXQ6ICdTZXQuJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuQ2xhc3M6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBmaXJzdDoge1xuICAgIGRlOiAnRXJzdGUgS2xhc3NlJyxcbiAgICBlbjogJ0ZpcnN0IENsYXNzJyxcbiAgICBmcjogJ1ByZW1pw6hyZSBjbGFzc2UnLFxuICAgIGl0OiAnUHJpbWEgY2xhc3NlJyxcbiAgfSxcbiAgc2Vjb25kOiB7XG4gICAgZGU6ICdad2VpdGUgS2xhc3NlJyxcbiAgICBlbjogJ1NlY29uZCBDbGFzcycsXG4gICAgZnI6ICdEZXV4acOobWUgY2xhc3NlJyxcbiAgICBpdDogJ1NlY29uZGEgY2xhc3NlJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVHJhaW46IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnWnVnJyxcbiAgZW46ICdUcmFpbicsXG4gIGZyOiAnVHJhaW4nLFxuICBpdDogJ1RyZW5vJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVHJhaW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1rDvGdlJyxcbiAgZW46ICdUcmFpbnMnLFxuICBmcjogJ1RyYWlucycsXG4gIGl0OiAnVHJlbmknLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5XYWdvbnNMYWJlbDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdXYWdlbiBkZXMgWnVnZXMnLFxuICBlbjogJ0NvYWNoZXMgb2YgdGhlIHRyYWluJyxcbiAgZnI6ICdXYWdvbnMgZGUgdHJhaW4nLFxuICBpdDogJ0NhcnJvenplIGRlbCB0cmVubycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bldhZ29uTGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnV2FnZW4nLFxuICBlbjogJ1RyYWluIGNvYWNoJyxcbiAgZnI6ICdXYWdvbiBkZSB0cmFpbicsXG4gIGl0OiAnQ2Fycm96emEgZGVsIHRyZW5vJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuV2Fnb25MYWJlbE51bWJlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6IGBOdW1tZXJgLFxuICBlbjogYE51bWJlcmAsXG4gIGZyOiBgTnVtw6lyb2AsXG4gIGl0OiBgTnVtZXJvYCxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuQ2xvc2VkQ29tcGFydG1lbnRMYWJlbCA9ICh3YWdvbk51bWJlcj86IG51bWJlcik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBpZiAod2Fnb25OdW1iZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGU6IGBHZXNjaGxvc3NlbmVyIFdhZ2VuIG1pdCBkZXIgTnVtbWVyICR7d2Fnb25OdW1iZXJ9YCxcbiAgICAgIGVuOiBgQ2xvc2VkIHRyYWluIGNvYWNoIHdpdGggdGhlIG51bWJlciAke3dhZ29uTnVtYmVyfWAsXG4gICAgICBmcjogYFdhZ29uIGRlIHRyYWluIGZlcm3DqSBhdmVjIGxlIG51bcOpcm8gJHt3YWdvbk51bWJlcn1gLFxuICAgICAgaXQ6IGBDYXJyb3p6YSBkZWwgdHJlbm8gY2hpdXNvIGNvbiBpbCBudW1lcm8gJHt3YWdvbk51bWJlcn1gLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBkZTogJ0dlc2NobG9zc2VuZXIgWnVnd2FnZ29uJyxcbiAgICBlbjogJ0Nsb3NlZCB0cmFpbiBjb2FjaCcsXG4gICAgZnI6ICdXYWdvbiBkZSB0cmFpbiBmZXJtw6knLFxuICAgIGl0OiAnQ2Fycm96emEgZGVsIHRyZW5vIGNoaXVzbycsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkxvY29tb3RpdmVMYWJlbDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdMb2tvbW90aXZlJyxcbiAgZW46ICdMb2NvbW90aXZlJyxcbiAgZnI6ICdMb2NvbW90aXZlJyxcbiAgaXQ6ICdMb2NvbW90aXZhJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuQmxvY2tlZFBhc3NhZ2U6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBwcmV2aW91czoge1xuICAgIGRlOiAnS2VpbiBEdXJjaGdhbmcgenVtIHZvcmhlcmlnZW4gV2FnZW4nLFxuICAgIGVuOiAnTm8gcGFzc2FnZSB0byB0aGUgcHJldmlvdXMgdHJhaW4gY29hY2gnLFxuICAgIGZyOiAnUGFzIGRlIHBhc3NhZ2UgYXUgd2Fnb24gZHUgdHJhaW4gcHLDqWPDqWRlbnQnLFxuICAgIGl0OiAnTmVzc3VuIHBhc3NhZ2dpbyBhbGxhIGNhcnJvenphIGRlbCB0cmVubyBwcmVjZWRlbnRlJyxcbiAgfSxcbiAgbmV4dDoge1xuICAgIGRlOiAnS2VpbiBEdXJjaGdhbmcgenVtIG7DpGNoc3RlbiBXYWdlbicsXG4gICAgZW46ICdObyBwYXNzYWdlIHRvIHRoZSBuZXh0IHRyYWluIGNvYWNoJyxcbiAgICBmcjogJ1BhcyBkZSBwYXNzYWdlIGF1IHdhZ29uIGRlIHRyYWluIHN1aXZhbnQnLFxuICAgIGl0OiAnTmVzc3VuIHBhc3NhZ2dpbyBhbGxhIGNhcnJvenphIGRlbCB0cmVubyBzdWNjZXNzaXZvJyxcbiAgfSxcbiAgYm90aDoge1xuICAgIGRlOiAnS2VpbiBEdXJjaGdhbmcgenVtIG7DpGNoc3RlbiB1bmQgdm9yaGVyaWdlbiBXYWdlbicsXG4gICAgZW46ICdObyBwYXNzYWdlIHRvIHRoZSBuZXh0IGFuZCBwcmV2aW91cyB0cmFpbiBjb2FjaCcsXG4gICAgZnI6ICdQYXMgZGUgcGFzc2FnZSBhdSB3YWdvbiBkZSB0cmFpbiBzdWl2YW50IGV0IHByw6ljw6lkZW50JyxcbiAgICBpdDogJ05lc3N1biBwYXNzYWdnaW8gYWxsYSBjYXJyb3p6YSBkZWwgdHJlbm8gc3VjY2Vzc2l2byBlIHByZWNlZGVudGUnLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5BZGRpdGlvbmFsV2Fnb25JbmZvcm1hdGlvbkhlYWRpbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnWnVzw6R0emxpY2hlIFdhZ2VuaW5mb3JtYXRpb24nLFxuICBlbjogJ0FkZGl0aW9uYWwgd2Fnb24gaW5mb3JtYXRpb24nLFxuICBmcjogJ0luZm9ybWF0aW9ucyBzdXBwbMOpbWVudGFpcmVzIHN1ciBsZXMgd2Fnb25zJyxcbiAgaXQ6ICdJbmZvcm1hemlvbmkgYWdnaXVudGl2ZSBzdWxsYSBjYXJyb3p6YSBkZWwgdHJlbm8nLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5EZXBhcnR1cmU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnQWJmYWhydCcsXG4gIGVuOiAnRGVwYXJ0dXJlJyxcbiAgZnI6ICdEw6lwYXJ0JyxcbiAgaXQ6ICdQYXJ0ZW56YScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkR1cmF0aW9uTWludXRlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj4gPSB7XG4gIHNpbmdsZToge1xuICAgIGxvbmc6IHtcbiAgICAgIGRlOiAnTWludXRlJyxcbiAgICAgIGVuOiAnTWludXRlJyxcbiAgICAgIGZyOiAnTWludXRlJyxcbiAgICAgIGl0OiAnTWludXRvJyxcbiAgICB9LFxuICAgIHNob3J0OiB7XG4gICAgICBkZTogJ20nLFxuICAgICAgZW46ICdtJyxcbiAgICAgIGZyOiAnbScsXG4gICAgICBpdDogJ20nLFxuICAgIH0sXG4gIH0sXG4gIG11bHRpcGxlOiB7XG4gICAgbG9uZzoge1xuICAgICAgZGU6ICdNaW51dGVuJyxcbiAgICAgIGVuOiAnTWludXRlcycsXG4gICAgICBmcjogJ01pbnV0ZXMnLFxuICAgICAgaXQ6ICdNaW51dGknLFxuICAgIH0sXG4gICAgc2hvcnQ6IHtcbiAgICAgIGRlOiAnTWluJyxcbiAgICAgIGVuOiAnbWluJyxcbiAgICAgIGZyOiAnbWluLicsXG4gICAgICBpdDogJ21pbnMnLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkR1cmF0aW9uSG91cjogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4+ID0ge1xuICBzaW5nbGU6IHtcbiAgICBsb25nOiB7XG4gICAgICBkZTogJ1N0dW5kZScsXG4gICAgICBlbjogJ0hvdXInLFxuICAgICAgZnI6ICdIZXVyZScsXG4gICAgICBpdDogJ09yYScsXG4gICAgfSxcbiAgICBzaG9ydDoge1xuICAgICAgZGU6ICdTdGQuJyxcbiAgICAgIGVuOiAnaCcsXG4gICAgICBmcjogJ29yZScsXG4gICAgICBpdDogJ2hycycsXG4gICAgfSxcbiAgfSxcbiAgbXVsdGlwbGU6IHtcbiAgICBsb25nOiB7XG4gICAgICBkZTogJ1N0dW5kZW4nLFxuICAgICAgZW46ICdIb3VycycsXG4gICAgICBmcjogJ0hldXJlcycsXG4gICAgICBpdDogJ09yZScsXG4gICAgfSxcbiAgICBzaG9ydDoge1xuICAgICAgZGU6ICdTdGQuJyxcbiAgICAgIGVuOiAnaCcsXG4gICAgICBmcjogJ29yZScsXG4gICAgICBpdDogJ2hycycsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRHVyYXRpb25EYXk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHtcbiAgc2luZ2xlOiB7XG4gICAgbG9uZzoge1xuICAgICAgZGU6ICdUYWcnLFxuICAgICAgZW46ICdEYXknLFxuICAgICAgZnI6ICdKb3VyJyxcbiAgICAgIGl0OiAnR2lvcm5vJyxcbiAgICB9LFxuICB9LFxuICBtdWx0aXBsZToge1xuICAgIGxvbmc6IHtcbiAgICAgIGRlOiAnVGFnZScsXG4gICAgICBlbjogJ0RheXMnLFxuICAgICAgZnI6ICdKb3VycycsXG4gICAgICBpdDogJ0dpb3JuaScsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVHJpcFF1YXlDaGFuZ2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnR2xlaXPDpG5kZXJ1bmcgaW0gVmVybGF1ZiBkaWVzZXIgVmVyYmluZHVuZycsXG4gIGVuOiAnVHJhY2sgY2hhbmdlIGluIHRoZSBjb3Vyc2Ugb2YgdGhpcyBjb25uZWN0aW9uJyxcbiAgZnI6ICdDaGFuZ2VtZW50IGRlIHZvaWUgc3VyIGxlIHBhcmNvdXJzIGRlIGNldHRlIGNvbm5leGlvbicsXG4gIGl0OiAnQ2FtYmlhbWVudG8gZGkgYmluYXJpbyBuZWwgY29yc28gZGkgcXVlc3RhIGNvbm5lc3Npb25lJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVHJpcER1cmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1JlaXNlZGF1ZXInLFxuICBlbjogJ1RyYXZlbCB0aW1lJyxcbiAgZnI6ICdEdXLDqWUgZHUgdm95YWdlJyxcbiAgaXQ6ICdEdXJhdGEgZGVsIHZpYWdnaW8nLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5UcmF2ZWxoaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdSZWlzZWhpbndlaXNlJyxcbiAgZW46ICdUcmF2ZWxoaW50cycsXG4gIGZyOiAnSW5kaWNhdGlvbnMgc3VyIGxlIHZveWFnZScsXG4gIGl0OiAnSWRpaWNhemlvbmkgZGkgdmlhZ2dpbycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blJlYWxUaW1lSW5mbzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdFY2h0emVpdGluZm9ybWF0aW9uZW4nLFxuICBlbjogJ1JlYWwgdGltZSBpbmZvcm1hdGlvbicsXG4gIGZyOiAnSW5mb3JtYXRpb25zIGVuIHRlbXBzIHLDqWVsJyxcbiAgaXQ6ICdJbmZvcm1hemlvbmkgaW4gdGVtcG8gcmVhbGUnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5UcmFuc2ZlclByb2NlZHVyZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnbWFsIHVtc3RlaWdlbicsXG4gIGVuOiAnY2hhbmdlcycsXG4gIGZyOiAnY2hhbmdlbWVudChzKSBkZSB0cmFpbicsXG4gIGl0OiAnY2FtYmknLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5OZXc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnbmV1JyxcbiAgZW46ICduZXcnLFxuICBmcjogJ25vdXZlYXUnLFxuICBpdDogJ251b3ZvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRnJvbVBsYXRmb3JtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ0F1ZicsXG4gIGVuOiAnb24nLFxuICBmcjogJ3N1cicsXG4gIGl0OiAnc3UnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5TdXBlcnNhdmVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1NwYXJiaWxsZXR0ZScsXG4gIGVuOiAnU3VwZXJzYXZlciB0aWNrZXRzJyxcbiAgZnI6ICdCaWxsZXRzIGTDqWdyaWZmw6lzJyxcbiAgaXQ6ICdCaWdsaWV0dGkgcmlzcGFybWlvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuT2NjdXBhbmN5OiBSZWNvcmQ8U2JiT2NjdXBhbmN5LCBSZWNvcmQ8U2JiTGFuZ3VhZ2UsIHN0cmluZz4+ID0ge1xuICBub25lOiB7XG4gICAgZGU6ICdLZWluZSBCZWxlZ3VuZ3Nwcm9nbm9zZSB2ZXJmw7xnYmFyJyxcbiAgICBlbjogJ05vIG9jY3VwYW5jeSBmb3JlY2FzdCBhdmFpbGFibGUnLFxuICAgIGZyOiBcIkF1Y3VuZSBwcsOpdmlzaW9uIGQnb2NjdXBhdGlvbiBkaXNwb25pYmxlXCIsXG4gICAgaXQ6ICdOZXNzdW5hIHByZXZpc2lvbmUgZGkgb2NjdXBhemlvbmUgZGlzcG9uaWJpbGUnLFxuICB9LFxuICBsb3c6IHtcbiAgICBkZTogJ1RpZWZlIGJpcyBtaXR0bGVyZSBCZWxlZ3VuZyBlcndhcnRldCcsXG4gICAgZW46ICdMb3cgdG8gbWVkaXVtIG9jY3VwYW5jeSBleHBlY3RlZCcsXG4gICAgZnI6IFwiT24gcydhdHRlbmQgw6AgdW4gdGF1eCBkJ29jY3VwYXRpb24gZmFpYmxlIMOgIG1veWVuXCIsXG4gICAgaXQ6IFwiU2kgcHJldmVkZSB1bidvY2N1cGF6aW9uZSBtZWRpby1iYXNzYVwiLFxuICB9LFxuICBtZWRpdW06IHtcbiAgICBkZTogJ0hvaGUgQmVsZWd1bmcgZXJ3YXJ0ZXQnLFxuICAgIGVuOiAnSGlnaCBvY2N1cGFuY3kgZXhwZWN0ZWQnLFxuICAgIGZyOiBcIlVuIHRhdXggZCdvY2N1cGF0aW9uIMOpbGV2w6kgZXN0IGF0dGVuZHVcIixcbiAgICBpdDogXCJDaSBzaSBhc3BldHRhIHVuJ2FsdGEgb2NjdXBhemlvbmVcIixcbiAgfSxcbiAgaGlnaDoge1xuICAgIGRlOiAnU2VociBob2hlIEJlbGVndW5nIGVyd2FydGV0JyxcbiAgICBlbjogJ1ZlcnkgaGlnaCBvY2N1cGFuY3kgZXhwZWN0ZWQnLFxuICAgIGZyOiBcIlVuIHRhdXggZCdvY2N1cGF0aW9uIHRyw6hzIMOpbGV2w6kgZXN0IGF0dGVuZHVcIixcbiAgICBpdDogXCJDaSBzaSBhc3BldHRhIHVuJ29jY3VwYXppb25lIG1vbHRvIGFsdGFcIixcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuTWVhbnNPZlRyYW5zcG9ydDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gIGZ1bmljdWxhcjoge1xuICAgIGRlOiAnU2VpbGJhaG4vWmFobnJhZGJhaG4nLFxuICAgIGVuOiAnRnVuaWN1bGFyL0NvZyByYWlsd2F5JyxcbiAgICBmcjogJ0Z1bmljdWxhaXJlL0NoZW1pbiBkZSBmZXIgw6AgY3LDqW1haWxsw6hyZScsXG4gICAgaXQ6ICdGdW5pdmlhL0ZlcnJvdmlhIGEgY3JlbWFnbGllcmEnLFxuICB9LFxuICBlY19pZDoge1xuICAgIGRlOiAnRUMvSUMnLFxuICAgIGVuOiAnRUMvSUMnLFxuICAgIGZyOiAnRUMvSUMnLFxuICAgIGl0OiAnRUMvSUMnLFxuICB9LFxuICBidXM6IHtcbiAgICBkZTogJ0J1cycsXG4gICAgZW46ICdCdXMnLFxuICAgIGZyOiAnQnVzJyxcbiAgICBpdDogJ0J1cycsXG4gIH0sXG4gIHJlOiB7XG4gICAgZGU6ICdSRScsXG4gICAgZW46ICdSRScsXG4gICAgZnI6ICdSRScsXG4gICAgaXQ6ICdSRScsXG4gIH0sXG4gIGFyel9leHQ6IHtcbiAgICBkZTogJ0FSWi9FWFQnLFxuICAgIGVuOiAnQVJaL0VYVCcsXG4gICAgZnI6ICdBUlovRVhUJyxcbiAgICBpdDogJ0FSWi9FWFQnLFxuICB9LFxuICBpY2VfdGd2X3JqeDoge1xuICAgIGRlOiAnSUNFL1RHVi9SSlgnLFxuICAgIGVuOiAnSUNFL1RHVi9SSlgnLFxuICAgIGZyOiAnSUNFL1RHVi9SSlgnLFxuICAgIGl0OiAnSUNFL1RHVi9SSlgnLFxuICB9LFxuICBpcl9wZToge1xuICAgIGRlOiAnSVIvUEUnLFxuICAgIGVuOiAnSVIvUEUnLFxuICAgIGZyOiAnSVIvUEUnLFxuICAgIGl0OiAnSVIvUEUnLFxuICB9LFxuICBzX3NuX3I6IHtcbiAgICBkZTogJ1MvU04vUicsXG4gICAgZW46ICdTL1NOL1InLFxuICAgIGZyOiAnUy9TTi9SJyxcbiAgICBpdDogJ1MvU04vUicsXG4gIH0sXG4gIHRyYW13YXk6IHtcbiAgICBkZTogJ1RyYW0vTWV0cm8nLFxuICAgIGVuOiAnVHJhbXdheS9VbmRlcmdyb3VuZCcsXG4gICAgZnI6ICdUcmFtL03DqXRybycsXG4gICAgaXQ6ICdUcmFtL01ldHJvJyxcbiAgfSxcbiAgc2hpcDoge1xuICAgIGRlOiAnU2NoaWZmJyxcbiAgICBlbjogJ1NoaXAnLFxuICAgIGZyOiAnQmF0ZWF1JyxcbiAgICBpdDogJ0JhdHRlbGxvJyxcbiAgfSxcbiAgdHJhaW46IHtcbiAgICBkZTogJ1p1ZycsXG4gICAgZW46ICdUcmFpbicsXG4gICAgZnI6ICdUcmFpbicsXG4gICAgaXQ6ICdUcmVubycsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bk9wdGlvbmFsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJyhvcHRpb25hbCknLFxuICBlbjogJyhvcHRpb25hbCknLFxuICBmcjogJyhmYWN1bHRhdGlmKScsXG4gIGl0OiAnKGZhY29sdGF0aXZvKScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blRhcmdldE9wZW5zSW5OZXdXaW5kb3c6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnTGlua3ppZWwgw7ZmZm5ldCBpbiBuZXVlbSBGZW5zdGVyLicsXG4gIGVuOiAnTGluayB0YXJnZXQgb3BlbnMgaW4gYSBuZXcgd2luZG93LicsXG4gIGZyOiBcIkxlIGxpZW4gcydvdXZyZSBkYW5zIHVuZSBub3V2ZWxsZSBmZW7DqnRyZS5cIixcbiAgaXQ6IFwiTCdvYmlldHRpdm8gZGVsIGxpbmsgc2kgYXByZSBpbiB1bmEgbnVvdmEgZmluZXN0cmEuXCIsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnTWludXRlbiBGdXNzd2VnIG5hY2ggQW5rdW5mdDonLFxuICBlbjogJ21pbnV0ZXMgb2Ygd2Fsa2luZyB0aW1lIGFmdGVyIGFycml2YWw6JyxcbiAgZnI6ICdtaW51dGVzIGRlIHRyYWpldCDDoCBwaWVkIGFwcsOocyBs4oCZYXJyaXbDqWU6JyxcbiAgaXQ6ICdtaW51dGkgYSBwaWVkaSBhbGzigJlhcnJpdm86Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuV2Fsa2luZ0Rpc3RhbmNlRGVwYXJ0dXJlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ01pbnV0ZW4gRnVzc3dlZyB2b3IgQWJmYWhydDonLFxuICBlbjogJ21pbnV0ZXMgb2Ygd2Fsa2luZyB0aW1lIGJlZm9yZSBkZXBhcnR1cmU6JyxcbiAgZnI6ICdtaW51dGVzIHRyYWpldCDDoCBwaWVkIGF2YW50IGxlIGTDqXBhcnQ6JyxcbiAgaXQ6ICdtaW51dGkgYSBwaWVkaSBwcmltYSBkZWxsYSBwYXJ0ZW56YTonLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5DbG9zZUFsZXJ0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ01lbGR1bmcgc2NobGllc3NlbicsXG4gIGVuOiAnQ2xvc2UgbWVzc2FnZScsXG4gIGZyOiAnRmVybWVyIG1lc3NhZ2UnLFxuICBpdDogJ0NoaXVkZXJlIGlsIG1lc3NhZ2dpbycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNsb3NlTm90aWZpY2F0aW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ05hY2hyaWNodCBzY2hsaWVzc2VuJyxcbiAgZW46ICdDbG9zZSBtZXNzYWdlJyxcbiAgZnI6ICdGZXJtZXIgbWVzc2FnZScsXG4gIGl0OiAnQ2hpdWRlcmUgaWwgbWVzc2FnZ2lvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRGlhbG9nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ0RpYWxvZycsXG4gIGVuOiAnRGlhbG9nJyxcbiAgZnI6ICdEaWFsb2d1ZScsXG4gIGl0OiAnRGlhbG9nbycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNsb3NlRGlhbG9nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ8OcYmVyZ2VsYWdlcnRlcyBGZW5zdGVyIHNjaGxpZXNzZW4nLFxuICBlbjogJ0Nsb3NlIHNlY29uZGFyeSB3aW5kb3cnLFxuICBmcjogJ0Zlcm1lciBsYSBmZW7DqnRyZSBzdXBlcnBvc8OpZScsXG4gIGl0OiAnQ2hpdWRlcmUgbGEgZmluZXN0cmEgc292cmFwcG9zdGEnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5DbG9zZU5hdmlnYXRpb246IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnTmF2aWdhdGlvbiBzY2hsaWVzc2VuJyxcbiAgZW46ICdDbG9zZSBuYXZpZ2F0aW9uJyxcbiAgZnI6ICdGZXJtZXIgbGEgbmF2aWdhdGlvbicsXG4gIGl0OiAnQ2hpdWRlcmUgbGEgbmF2aWdhemlvbmUnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5DbG9zZVBvcG92ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnSGlud2VpcyBzY2hsaWVzc2VuJyxcbiAgZW46ICdDbG9zZSBub3RlJyxcbiAgZnI6ICdGZXJtZXIgbGEgbm90ZScsXG4gIGl0OiAnQ2hpdWRlcmUgbGEgbm90YScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkdvQmFjazogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdadXLDvGNrJyxcbiAgZW46ICdHbyBiYWNrJyxcbiAgZnI6ICdSZXRvdXJuZXInLFxuICBpdDogJ1ZhaSBpbmRpZXRybycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkZpbmRPdXRNb3JlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ01laHIgZXJmYWhyZW4nLFxuICBlbjogJ0ZpbmQgb3V0IG1vcmUnLFxuICBmcjogJ0VuIHNhdm9pciBwbHVzJyxcbiAgaXQ6ICdQZXIgc2FwZXJuZSBkaSBwacO5Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVG9kYXk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnSGV1dGUnLFxuICBlbjogJ1RvZGF5JyxcbiAgZnI6ICdBdWpvdXJk4oCZaHVpJyxcbiAgaXQ6ICdPZ2dpJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuTmV4dE1vbnRoOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1p1bSBuw6RjaHN0ZW4gTW9uYXQgd2VjaHNlbG4nLFxuICBlbjogJ0NoYW5nZSB0byB0aGUgbmV4dCBtb250aCcsXG4gIGZyOiAnUGFzc2VyIGF1IG1vaXMgc3VpdmFudCcsXG4gIGl0OiAnUGFzc2FyZSBhbCBtZXNlIHN1Y2Nlc3Npdm8nLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5QcmV2aW91c01vbnRoOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1p1bSBsZXR6dGVuIE1vbmF0IHdlY2hzZWxuJyxcbiAgZW46ICdDaGFuZ2UgdG8gdGhlIHByZXZpb3VzIG1vbnRoJyxcbiAgZnI6ICdQYXNzZXIgYXUgbW9pcyBwcsOpY8OpZGVudCcsXG4gIGl0OiAnUGFzc2FyZSBhbCBtZXNlIHByZWNlZGVudGUnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5OZXh0RGF5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ07DpGNoc3RlciBUYWcnLFxuICBlbjogJ05leHQgZGF5JyxcbiAgZnI6ICdMZSBwcm9jaGFpbiBqb3VyJyxcbiAgaXQ6ICdHaW9ybm8gc3VjY2Vzc2l2bycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blByZXZpb3VzRGF5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1ZvcmhlcmlnZXIgVGFnJyxcbiAgZW46ICdQcmV2aW91cyBkYXknLFxuICBmcjogJ0pvdXIgcHLDqWPDqWRlbnQnLFxuICBpdDogJ0dpb3JubyBwcmVjZWRlbnRlJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuWWVhck1vbnRoU2VsZWN0aW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ0phaHIgdW5kIE1vbmF0IGF1c3fDpGhsZW4nLFxuICBlbjogJ0Nob29zZSB5ZWFyIGFuZCBtb250aCcsXG4gIGZyOiBcIkNob2lzaXNzZXogbCdhbm7DqWUgZXQgbGUgbW9pc1wiLFxuICBpdDogJ1NlbGV6aW9uYSBhbm5vIGUgbWVzZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNhbGVuZGFyRGF0ZVNlbGVjdGlvbjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdEYXR1bSBhdXN3w6RobGVuJyxcbiAgZW46ICdDaG9vc2UgZGF0ZScsXG4gIGZyOiAnQ2hvaXNpciB1bmUgZGF0ZScsXG4gIGl0OiAnU2VsZXppb25hIHVuYSBkYXRhJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuTmV4dFllYXJSYW5nZSA9ICh5ZWFyUmFuZ2U6IG51bWJlcik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4gKHtcbiAgZGU6IGBXZWNoc2VsIHp1IGRlbiBuw6RjaHN0ZW4gJHt5ZWFyUmFuZ2V9IEphaHJlbmAsXG4gIGVuOiBgQ2hhbmdlIHRvIHRoZSBuZXh0ICR7eWVhclJhbmdlfSB5ZWFyc2AsXG4gIGZyOiBgUGFzc2VyIGF1eCAke3llYXJSYW5nZX0gcHJvY2hhaW5lcyBhbm7DqWVzYCxcbiAgaXQ6IGBQYXNzYXJlIGFpIHN1Y2Nlc3NpdmkgJHt5ZWFyUmFuZ2V9IGFubmlgLFxufSk7XG5cbmV4cG9ydCBjb25zdCBpMThuUHJldmlvdXNZZWFyUmFuZ2UgPSAoeWVhclJhbmdlOiBudW1iZXIpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+ICh7XG4gIGRlOiBgV2VjaHNlbCB6dSBkZW4gdm9yaGVyaWdlbiAke3llYXJSYW5nZX0gSmFocmVuYCxcbiAgZW46IGBDaGFuZ2UgdG8gdGhlIHByZXZpb3VzICR7eWVhclJhbmdlfSB5ZWFyc2AsXG4gIGZyOiBgUGFzc2FnZSBhdXggJHt5ZWFyUmFuZ2V9IHByw6ljw6lkZW50ZXMgYW5uw6llc2AsXG4gIGl0OiBgUGFzc2FyZSBhaSBwcmVjZWRlbnRpICR7eWVhclJhbmdlfSBhbm5pYCxcbn0pO1xuXG5leHBvcnQgY29uc3QgaTE4bk5leHRZZWFyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1p1bSBuw6RjaHN0ZW4gSmFociB3ZWNoc2VsbicsXG4gIGVuOiAnQ2hhbmdlIHRvIHRoZSBuZXh0IHllYXInLFxuICBmcjogXCJQYXNzZXIgw6AgbCdhbm7DqWUgc3VpdmFudGVcIixcbiAgaXQ6IFwiUGFzc2FyZSBhbGwnYW5ubyBzdWNjZXNzaXZvXCIsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blByZXZpb3VzWWVhcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdadW0gbGV0enRlbiBKYWhyIHdlY2hzZWxuJyxcbiAgZW46ICdDaGFuZ2UgdG8gdGhlIHByZXZpb3VzIHllYXInLFxuICBmcjogXCJQYXNzZXIgw6AgbCdhbm7DqWUgcHLDqWPDqWRlbnRcIixcbiAgaXQ6IFwiUGFzc2FyZSBhbGwnYW5ubyBwcmVjZWRlbnRlXCIsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blNlbGVjdE5leHREYXkgPSAoY3VycmVudERhdGU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4gKHtcbiAgZGU6IGBadW0gbsOkY2hzdGVuIFRhZyB3ZWNoc2VsbiwgZGVyemVpdCBhdXNnZXfDpGhsdCAke2N1cnJlbnREYXRlfS5gLFxuICBlbjogYENoYW5nZSB0byB0aGUgbmV4dCBkYXksIGN1cnJlbnRseSBzZWxlY3RlZCAke2N1cnJlbnREYXRlfS5gLFxuICBmcjogYFBhc3NlciBhdSBqb3VyIHN1aXZhbnQsIGFjdHVlbGxlbWVudCBzw6lsZWN0aW9ubsOpICR7Y3VycmVudERhdGV9LmAsXG4gIGl0OiBgUGFzc2FyZSBhbCBnaW9ybm8gc3VjY2Vzc2l2bywgYXR0dWFsbWVudGUgc2VsZXppb25hdG8gJHtjdXJyZW50RGF0ZX0uYCxcbn0pO1xuXG5leHBvcnQgY29uc3QgaTE4blNlbGVjdFByZXZpb3VzRGF5ID0gKGN1cnJlbnREYXRlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+ICh7XG4gIGRlOiBgWnVtIHZvcmhlcmlnZW4gVGFnIHdlY2hzZWxuLCBkZXJ6ZWl0IGF1c2dld8OkaGx0ICR7Y3VycmVudERhdGV9LmAsXG4gIGVuOiBgQ2hhbmdlIHRvIHRoZSBwcmV2aW91cyBkYXksIGN1cnJlbnRseSBzZWxlY3RlZCAke2N1cnJlbnREYXRlfS5gLFxuICBmcjogYFBhc3NlciBhdSBqb3VyIHByw6ljw6lkZW50LCBhY3R1ZWxsZW1lbnQgc8OpbGVjdGlvbm7DqSAke2N1cnJlbnREYXRlfS5gLFxuICBpdDogYFBhc3NhcmUgYWwgZ2lvcm5vIHByZWNlZGVudGUsIGF0dHVhbG1lbnRlIHNlbGV6aW9uYXRvICR7Y3VycmVudERhdGV9LmAsXG59KTtcblxuZXhwb3J0IGNvbnN0IGkxOG5TaG93Q2FsZW5kYXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnS2FsZW5kZXIgYW56ZWlnZW4nLFxuICBlbjogJ1Nob3cgY2FsZW5kYXInLFxuICBmcjogJ0FmZmljaGVyIGxlIGNhbGVuZHJpZXInLFxuICBpdDogJ1Zpc3VhbGl6emFyZSBjYWxlbmRhcmlvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1RULk1NLkpKSkonLFxuICBlbjogJ0RELk1NLllZWVknLFxuICBmcjogJ0pKLk1NLkFBQUEnLFxuICBpdDogJ0dHLk1NLkFBQUEnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5EYXRlQ2hhbmdlZFRvOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ0RhdHVtIGdlw6RuZGVydCBhdWYnLFxuICBlbjogJ0RhdGUgY2hhbmdlZCB0bycsXG4gIGZyOiAnRGF0ZSBtb2RpZmnDqWUgYXUnLFxuICBpdDogJ0RhdGEgbW9kaWZpY2F0YSBpbicsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNvbm5lY3Rpb25Gcm9tOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1ZlcmJpbmR1bmcgdm9uJyxcbiAgZW46ICdDb25uZWN0aW9uIGZyb20nLFxuICBmcjogJ0xpYWlzb24gZGUnLFxuICBpdDogJ0NvbGxlZ2FtZW50byBkYScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNvbm5lY3Rpb25UbzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICduYWNoJyxcbiAgZW46ICd0bycsXG4gIGZyOiAnw6AnLFxuICBpdDogJ2EnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5Db25uZWN0aW9uUm91bmR0cmlwID0gKHJldHVybkNpdHk6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4gKHtcbiAgZGU6IGB1bmQgenVyw7xjayBuYWNoICR7cmV0dXJuQ2l0eX0uYCxcbiAgZW46IGBhbmQgYmFjayB0byAke3JldHVybkNpdHl9LmAsXG4gIGZyOiBgZXQgcmV0b3VyIMOgICR7cmV0dXJuQ2l0eX0uYCxcbiAgaXQ6IGBlIHJpdG9ybm8gYSAke3JldHVybkNpdHl9LmAsXG59KTtcblxuZXhwb3J0IGNvbnN0IGkxOG5FeHBhbmRlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdlcndlaXRlcnQnLFxuICBlbjogJ2V4cGFuZGVkJyxcbiAgZnI6ICdlc3QgdGlyw6knLFxuICBpdDogJ2VzYXBuc28nLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5Db2xsYXBzZWQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAncmVkdXppZXJ0JyxcbiAgZW46ICdjb2xsYXBzZWQnLFxuICBmcjogJ2NvbmRlbnPDqScsXG4gIGl0OiAnY29tcHJlc3NvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuTWFwQ29udGFpbmVyQnV0dG9uTGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnS2FydGUgemVpZ2VuJyxcbiAgZW46ICdTaG93IG1hcCcsXG4gIGZyOiAnQWZmaWNoZXIgbGEgY2FydGUnLFxuICBpdDogJ01vc3RyYSBsYSBtYXBwYScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkJyZWFkY3J1bWJFbGxpcHNpc0J1dHRvbkxhYmVsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ01laHIgQnJlYWRjcnVtYnMgYW56ZWlnZW4nLFxuICBlbjogJ1Nob3cgbW9yZSBicmVhZGNydW1icycsXG4gIGZyOiAnQWZmaWNoZXIgcGx1cyBicmVhZGNydW1icycsXG4gIGl0OiAnTW9zdHJhIHBpw7kgYnJlYWRjcnVtYnMnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5UaW1lSW5wdXRDaGFuZ2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnWmVpdCBnZcOkbmRlcnQgenUnLFxuICBlbjogJ1RpbWUgY2hhbmdlZCB0bycsXG4gIGZyOiAnSGV1cmUgbW9kaWZpw6llOicsXG4gIGl0OiAnT3JhcmlvIG1vZGlmaWNhdGEgYWxsZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNsZWFySW5wdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnRmVsZGluaGFsdCBsw7ZzY2hlbicsXG4gIGVuOiAnQ2xlYXIgaW5wdXQgdmFsdWUnLFxuICBmcjogJ0VmZmFjZXIgbGEgdmFsZXVyIGTigJllbnRyw6llJyxcbiAgaXQ6ICdDYW5jZWxsYSBpbCB2YWxvcmUgZGVsbOKAmWlucHV0Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRmxpcENhcmQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnS2xpY2tlbiBTaWUgYXVmIGRpZXNlIEthcnRlIGbDvHIgRGV0YWlscycsXG4gIGVuOiAnQ2xpY2sgb24gdGhpcyBjYXJkIGZvciBkZXRhaWxzJyxcbiAgZnI6ICdDbGlxdWV6IHN1ciBjZXR0ZSBjYXJ0ZSBwb3VyIHBsdXMgZGUgZMOpdGFpbHMnLFxuICBpdDogJ0NsaWNjYSBzdSBxdWVzdGEgc2NoZWRhIHBlciBpIGRldHRhZ2xpJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuUmV2ZXJzZUNhcmQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnS2xpY2tlbiBTaWUgYXVmIGRpZXNlIEthcnRlLCB1bSB6dXLDvGNrIHp1ciBadXNhbW1lbmZhc3N1bmcgenUgZ2VsYW5nZW4nLFxuICBlbjogJ0NsaWNrIG9uIHRoaXMgY2FyZCB0byBnbyBiYWNrIHRvIHRoZSBzdW1tYXJ5JyxcbiAgZnI6ICdDbGlxdWV6IHN1ciBjZXR0ZSBjYXJ0ZSBwb3VyIHJldmVuaXIgYXUgcsOpc3Vtw6knLFxuICBpdDogJ0NsaWNjYSBzdSBxdWVzdGEgc2NoZWRhIHBlciB0b3JuYXJlIGFsIHNvbW1hcmlvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRmlsZVNlbGVjdG9yQnV0dG9uTGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnRGF0ZWkgYXVzd8OkaGxlbicsXG4gIGVuOiAnQ2hvb3NlIGEgZmlsZScsXG4gIGZyOiAnQ2hvaXNpc3NleiB1biBmaWNoaWVyJyxcbiAgaXQ6ICdTY2VnbGkgdW4gZmlsZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkZpbGVTZWxlY3RvclN1YnRpdGxlTGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnWmllaGUgZGVpbmUgRGF0ZWllbiBoaWVyIGhpbiAoRHJhZyAmIERyb3ApJyxcbiAgZW46ICdEcmFnICYgRHJvcCB5b3VyIGZpbGVzIGhlcmUnLFxuICBmcjogJ0ZhaXRlcyBnbGlzc2VyIGV0IGTDqXBvc2V6IHZvcyBmaWNoaWVycyBpY2knLFxuICBpdDogJ1RyYXNjaW5hIGUgcmlsYXNjaWEgaSB0dW9pIGZpbGUgcXVpJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRmlsZVNlbGVjdG9yRGVsZXRlRmlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdEYXRlaSBlbnRmZXJuZW4nLFxuICBlbjogJ1JlbW92ZSBmaWxlJyxcbiAgZnI6ICdFZmZhY2VyIGxlIGZpY2hpZXInLFxuICBpdDogJ1JpbXVvdmkgaWwgZmlsZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkZpbGVTZWxlY3RvckN1cnJlbnRseVNlbGVjdGVkID0gKGZpbGVzTmFtZTogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+IHtcbiAgaWYgKGZpbGVzTmFtZSAmJiBmaWxlc05hbWUubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZTogYEFrdHVlbGwgYXVzZ2V3w6RobHRlIERhdGVpOiAke2ZpbGVzTmFtZS5qb2luKCcsICcpfS5gLFxuICAgICAgZW46IGBDdXJyZW50bHkgc2VsZWN0ZWQgZmlsZXM6ICR7ZmlsZXNOYW1lLmpvaW4oJywgJyl9LmAsXG4gICAgICBmcjogYEZpY2hpZXIgYWN0dWVsbGVtZW50IHPDqWxlY3Rpb25uw6k6ICR7ZmlsZXNOYW1lLmpvaW4oJywgJyl9LmAsXG4gICAgICBpdDogYEZpbGUgYXR0dWFsbWVudGUgc2VsZXppb25hdG86ICR7ZmlsZXNOYW1lLmpvaW4oJywgJyl9LmAsXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRlOiAnS2VpbmUgRGF0ZWkgYXVzZ2V3w6RobHQuJyxcbiAgICBlbjogJ05vIGZpbGVzIHNlbGVjdGVkLicsXG4gICAgZnI6ICdOZXNzdW4gZmljaGllciBzw6lsZWN0aW9ubsOpLicsXG4gICAgaXQ6ICdOZXNzdW4gZmlsZSBzZWxlemlvbmF0by4nLFxuICB9O1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFTyxNQUFNLGdCQUF3QztBQUFBLEVBQ25ELElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTjtBQUVPLE1BQU0sY0FBc0M7QUFBQSxFQUNqRCxJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQ047QUFFTyxNQUFNLGFBQXFDO0FBQUEsRUFDaEQsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUNOO0FBRU8sTUFBTSxrQkFBMEM7QUFBQSxFQUNyRCxJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQ047QUFFTyxNQUFNLFlBQW9EO0FBQUEsRUFDL0QsT0FBTztBQUFBLElBQ0wsSUFBSTtBQUFBLElBQ0osSUFBSTtBQUFBLElBQ0osSUFBSTtBQUFBLElBQ0osSUFBSTtBQUFBLEVBQ047QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLElBQUk7QUFBQSxJQUNKLElBQUk7QUFBQSxJQUNKLElBQUk7QUFBQSxJQUNKLElBQUk7QUFBQSxFQUNOO0FBQ0Y7QUFFTyxNQUFNLFlBQW9DO0FBQUEsRUFDL0MsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUNOO0FBRU8sTUFBTSxhQUFxQztBQUFBLEVBQ2hELElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTjtBQUVPLE1BQU0sa0JBQTBDO0FBQUEsRUFDckQsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUNOO0FBRU8sTUFBTSxpQkFBeUM7QUFB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
|
|
719
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvaTE4bi9pMThuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2JiTGFuZ3VhZ2UsIFNiYk9jY3VwYW5jeSB9IGZyb20gJy4uL2ludGVyZmFjZXMuanMnO1xuXG5leHBvcnQgY29uc3QgaTE4bkRpcmVjdGlvbjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdSaWNodHVuZycsXG4gIGVuOiAnRGlyZWN0aW9uJyxcbiAgZnI6ICdEaXJlY3Rpb24nLFxuICBpdDogJ0RpcmV6aW9uZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkFycml2YWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnQW5rdW5mdCcsXG4gIGVuOiAnQXJyaXZhbCcsXG4gIGZyOiAnQXJyaXbDqWUnLFxuICBpdDogJ0Fycml2bycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blNlY3RvcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdTZWt0b3InLFxuICBlbjogJ1NlY3RvcicsXG4gIGZyOiAnU2VjdGV1cicsXG4gIGl0OiAnU2V0dG9yZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blNlY3RvclNob3J0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1NrdC4nLFxuICBlbjogJ1NlYy4nLFxuICBmcjogJ1NlY3QuJyxcbiAgaXQ6ICdTZXQuJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuQ2xhc3M6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBmaXJzdDoge1xuICAgIGRlOiAnRXJzdGUgS2xhc3NlJyxcbiAgICBlbjogJ0ZpcnN0IENsYXNzJyxcbiAgICBmcjogJ1ByZW1pw6hyZSBjbGFzc2UnLFxuICAgIGl0OiAnUHJpbWEgY2xhc3NlJyxcbiAgfSxcbiAgc2Vjb25kOiB7XG4gICAgZGU6ICdad2VpdGUgS2xhc3NlJyxcbiAgICBlbjogJ1NlY29uZCBDbGFzcycsXG4gICAgZnI6ICdEZXV4acOobWUgY2xhc3NlJyxcbiAgICBpdDogJ1NlY29uZGEgY2xhc3NlJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVHJhaW46IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnWnVnJyxcbiAgZW46ICdUcmFpbicsXG4gIGZyOiAnVHJhaW4nLFxuICBpdDogJ1RyZW5vJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVHJhaW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1rDvGdlJyxcbiAgZW46ICdUcmFpbnMnLFxuICBmcjogJ1RyYWlucycsXG4gIGl0OiAnVHJlbmknLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5XYWdvbnNMYWJlbDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdXYWdlbiBkZXMgWnVnZXMnLFxuICBlbjogJ0NvYWNoZXMgb2YgdGhlIHRyYWluJyxcbiAgZnI6ICdXYWdvbnMgZGUgdHJhaW4nLFxuICBpdDogJ0NhcnJvenplIGRlbCB0cmVubycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bldhZ29uTGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnV2FnZW4nLFxuICBlbjogJ1RyYWluIGNvYWNoJyxcbiAgZnI6ICdXYWdvbiBkZSB0cmFpbicsXG4gIGl0OiAnQ2Fycm96emEgZGVsIHRyZW5vJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuV2Fnb25MYWJlbE51bWJlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6IGBOdW1tZXJgLFxuICBlbjogYE51bWJlcmAsXG4gIGZyOiBgTnVtw6lyb2AsXG4gIGl0OiBgTnVtZXJvYCxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuQ2xvc2VkQ29tcGFydG1lbnRMYWJlbCA9ICh3YWdvbk51bWJlcj86IG51bWJlcik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBpZiAod2Fnb25OdW1iZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGU6IGBHZXNjaGxvc3NlbmVyIFdhZ2VuIG1pdCBkZXIgTnVtbWVyICR7d2Fnb25OdW1iZXJ9YCxcbiAgICAgIGVuOiBgQ2xvc2VkIHRyYWluIGNvYWNoIHdpdGggdGhlIG51bWJlciAke3dhZ29uTnVtYmVyfWAsXG4gICAgICBmcjogYFdhZ29uIGRlIHRyYWluIGZlcm3DqSBhdmVjIGxlIG51bcOpcm8gJHt3YWdvbk51bWJlcn1gLFxuICAgICAgaXQ6IGBDYXJyb3p6YSBkZWwgdHJlbm8gY2hpdXNvIGNvbiBpbCBudW1lcm8gJHt3YWdvbk51bWJlcn1gLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBkZTogJ0dlc2NobG9zc2VuZXIgWnVnd2FnZ29uJyxcbiAgICBlbjogJ0Nsb3NlZCB0cmFpbiBjb2FjaCcsXG4gICAgZnI6ICdXYWdvbiBkZSB0cmFpbiBmZXJtw6knLFxuICAgIGl0OiAnQ2Fycm96emEgZGVsIHRyZW5vIGNoaXVzbycsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkxvY29tb3RpdmVMYWJlbDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdMb2tvbW90aXZlJyxcbiAgZW46ICdMb2NvbW90aXZlJyxcbiAgZnI6ICdMb2NvbW90aXZlJyxcbiAgaXQ6ICdMb2NvbW90aXZhJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuQmxvY2tlZFBhc3NhZ2U6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBwcmV2aW91czoge1xuICAgIGRlOiAnS2VpbiBEdXJjaGdhbmcgenVtIHZvcmhlcmlnZW4gV2FnZW4nLFxuICAgIGVuOiAnTm8gcGFzc2FnZSB0byB0aGUgcHJldmlvdXMgdHJhaW4gY29hY2gnLFxuICAgIGZyOiAnUGFzIGRlIHBhc3NhZ2UgYXUgd2Fnb24gZHUgdHJhaW4gcHLDqWPDqWRlbnQnLFxuICAgIGl0OiAnTmVzc3VuIHBhc3NhZ2dpbyBhbGxhIGNhcnJvenphIGRlbCB0cmVubyBwcmVjZWRlbnRlJyxcbiAgfSxcbiAgbmV4dDoge1xuICAgIGRlOiAnS2VpbiBEdXJjaGdhbmcgenVtIG7DpGNoc3RlbiBXYWdlbicsXG4gICAgZW46ICdObyBwYXNzYWdlIHRvIHRoZSBuZXh0IHRyYWluIGNvYWNoJyxcbiAgICBmcjogJ1BhcyBkZSBwYXNzYWdlIGF1IHdhZ29uIGRlIHRyYWluIHN1aXZhbnQnLFxuICAgIGl0OiAnTmVzc3VuIHBhc3NhZ2dpbyBhbGxhIGNhcnJvenphIGRlbCB0cmVubyBzdWNjZXNzaXZvJyxcbiAgfSxcbiAgYm90aDoge1xuICAgIGRlOiAnS2VpbiBEdXJjaGdhbmcgenVtIG7DpGNoc3RlbiB1bmQgdm9yaGVyaWdlbiBXYWdlbicsXG4gICAgZW46ICdObyBwYXNzYWdlIHRvIHRoZSBuZXh0IGFuZCBwcmV2aW91cyB0cmFpbiBjb2FjaCcsXG4gICAgZnI6ICdQYXMgZGUgcGFzc2FnZSBhdSB3YWdvbiBkZSB0cmFpbiBzdWl2YW50IGV0IHByw6ljw6lkZW50JyxcbiAgICBpdDogJ05lc3N1biBwYXNzYWdnaW8gYWxsYSBjYXJyb3p6YSBkZWwgdHJlbm8gc3VjY2Vzc2l2byBlIHByZWNlZGVudGUnLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5BZGRpdGlvbmFsV2Fnb25JbmZvcm1hdGlvbkhlYWRpbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnWnVzw6R0emxpY2hlIFdhZ2VuaW5mb3JtYXRpb24nLFxuICBlbjogJ0FkZGl0aW9uYWwgd2Fnb24gaW5mb3JtYXRpb24nLFxuICBmcjogJ0luZm9ybWF0aW9ucyBzdXBwbMOpbWVudGFpcmVzIHN1ciBsZXMgd2Fnb25zJyxcbiAgaXQ6ICdJbmZvcm1hemlvbmkgYWdnaXVudGl2ZSBzdWxsYSBjYXJyb3p6YSBkZWwgdHJlbm8nLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5EZXBhcnR1cmU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnQWJmYWhydCcsXG4gIGVuOiAnRGVwYXJ0dXJlJyxcbiAgZnI6ICdEw6lwYXJ0JyxcbiAgaXQ6ICdQYXJ0ZW56YScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkR1cmF0aW9uTWludXRlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj4gPSB7XG4gIHNpbmdsZToge1xuICAgIGxvbmc6IHtcbiAgICAgIGRlOiAnTWludXRlJyxcbiAgICAgIGVuOiAnTWludXRlJyxcbiAgICAgIGZyOiAnTWludXRlJyxcbiAgICAgIGl0OiAnTWludXRvJyxcbiAgICB9LFxuICAgIHNob3J0OiB7XG4gICAgICBkZTogJ20nLFxuICAgICAgZW46ICdtJyxcbiAgICAgIGZyOiAnbScsXG4gICAgICBpdDogJ20nLFxuICAgIH0sXG4gIH0sXG4gIG11bHRpcGxlOiB7XG4gICAgbG9uZzoge1xuICAgICAgZGU6ICdNaW51dGVuJyxcbiAgICAgIGVuOiAnTWludXRlcycsXG4gICAgICBmcjogJ01pbnV0ZXMnLFxuICAgICAgaXQ6ICdNaW51dGknLFxuICAgIH0sXG4gICAgc2hvcnQ6IHtcbiAgICAgIGRlOiAnTWluJyxcbiAgICAgIGVuOiAnbWluJyxcbiAgICAgIGZyOiAnbWluLicsXG4gICAgICBpdDogJ21pbnMnLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkR1cmF0aW9uSG91cjogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4+ID0ge1xuICBzaW5nbGU6IHtcbiAgICBsb25nOiB7XG4gICAgICBkZTogJ1N0dW5kZScsXG4gICAgICBlbjogJ0hvdXInLFxuICAgICAgZnI6ICdIZXVyZScsXG4gICAgICBpdDogJ09yYScsXG4gICAgfSxcbiAgICBzaG9ydDoge1xuICAgICAgZGU6ICdTdGQuJyxcbiAgICAgIGVuOiAnaCcsXG4gICAgICBmcjogJ29yZScsXG4gICAgICBpdDogJ2hycycsXG4gICAgfSxcbiAgfSxcbiAgbXVsdGlwbGU6IHtcbiAgICBsb25nOiB7XG4gICAgICBkZTogJ1N0dW5kZW4nLFxuICAgICAgZW46ICdIb3VycycsXG4gICAgICBmcjogJ0hldXJlcycsXG4gICAgICBpdDogJ09yZScsXG4gICAgfSxcbiAgICBzaG9ydDoge1xuICAgICAgZGU6ICdTdGQuJyxcbiAgICAgIGVuOiAnaCcsXG4gICAgICBmcjogJ29yZScsXG4gICAgICBpdDogJ2hycycsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRHVyYXRpb25EYXk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHtcbiAgc2luZ2xlOiB7XG4gICAgbG9uZzoge1xuICAgICAgZGU6ICdUYWcnLFxuICAgICAgZW46ICdEYXknLFxuICAgICAgZnI6ICdKb3VyJyxcbiAgICAgIGl0OiAnR2lvcm5vJyxcbiAgICB9LFxuICB9LFxuICBtdWx0aXBsZToge1xuICAgIGxvbmc6IHtcbiAgICAgIGRlOiAnVGFnZScsXG4gICAgICBlbjogJ0RheXMnLFxuICAgICAgZnI6ICdKb3VycycsXG4gICAgICBpdDogJ0dpb3JuaScsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVHJpcFF1YXlDaGFuZ2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnR2xlaXPDpG5kZXJ1bmcgaW0gVmVybGF1ZiBkaWVzZXIgVmVyYmluZHVuZycsXG4gIGVuOiAnVHJhY2sgY2hhbmdlIGluIHRoZSBjb3Vyc2Ugb2YgdGhpcyBjb25uZWN0aW9uJyxcbiAgZnI6ICdDaGFuZ2VtZW50IGRlIHZvaWUgc3VyIGxlIHBhcmNvdXJzIGRlIGNldHRlIGNvbm5leGlvbicsXG4gIGl0OiAnQ2FtYmlhbWVudG8gZGkgYmluYXJpbyBuZWwgY29yc28gZGkgcXVlc3RhIGNvbm5lc3Npb25lJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVHJpcER1cmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1JlaXNlZGF1ZXInLFxuICBlbjogJ1RyYXZlbCB0aW1lJyxcbiAgZnI6ICdEdXLDqWUgZHUgdm95YWdlJyxcbiAgaXQ6ICdEdXJhdGEgZGVsIHZpYWdnaW8nLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5UcmF2ZWxoaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdSZWlzZWhpbndlaXNlJyxcbiAgZW46ICdUcmF2ZWxoaW50cycsXG4gIGZyOiAnSW5kaWNhdGlvbnMgc3VyIGxlIHZveWFnZScsXG4gIGl0OiAnSWRpaWNhemlvbmkgZGkgdmlhZ2dpbycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blJlYWxUaW1lSW5mbzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdFY2h0emVpdGluZm9ybWF0aW9uZW4nLFxuICBlbjogJ1JlYWwgdGltZSBpbmZvcm1hdGlvbicsXG4gIGZyOiAnSW5mb3JtYXRpb25zIGVuIHRlbXBzIHLDqWVsJyxcbiAgaXQ6ICdJbmZvcm1hemlvbmkgaW4gdGVtcG8gcmVhbGUnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5UcmFuc2ZlclByb2NlZHVyZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnbWFsIHVtc3RlaWdlbicsXG4gIGVuOiAnY2hhbmdlcycsXG4gIGZyOiAnY2hhbmdlbWVudChzKSBkZSB0cmFpbicsXG4gIGl0OiAnY2FtYmknLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5OZXc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnbmV1JyxcbiAgZW46ICduZXcnLFxuICBmcjogJ25vdXZlYXUnLFxuICBpdDogJ251b3ZvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRnJvbVBsYXRmb3JtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ0F1ZicsXG4gIGVuOiAnb24nLFxuICBmcjogJ3N1cicsXG4gIGl0OiAnc3UnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5TdXBlcnNhdmVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1NwYXJiaWxsZXR0ZScsXG4gIGVuOiAnU3VwZXJzYXZlciB0aWNrZXRzJyxcbiAgZnI6ICdCaWxsZXRzIGTDqWdyaWZmw6lzJyxcbiAgaXQ6ICdCaWdsaWV0dGkgcmlzcGFybWlvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuT2NjdXBhbmN5OiBSZWNvcmQ8U2JiT2NjdXBhbmN5LCBSZWNvcmQ8U2JiTGFuZ3VhZ2UsIHN0cmluZz4+ID0ge1xuICBub25lOiB7XG4gICAgZGU6ICdLZWluZSBCZWxlZ3VuZ3Nwcm9nbm9zZSB2ZXJmw7xnYmFyJyxcbiAgICBlbjogJ05vIG9jY3VwYW5jeSBmb3JlY2FzdCBhdmFpbGFibGUnLFxuICAgIGZyOiBcIkF1Y3VuZSBwcsOpdmlzaW9uIGQnb2NjdXBhdGlvbiBkaXNwb25pYmxlXCIsXG4gICAgaXQ6ICdOZXNzdW5hIHByZXZpc2lvbmUgZGkgb2NjdXBhemlvbmUgZGlzcG9uaWJpbGUnLFxuICB9LFxuICBsb3c6IHtcbiAgICBkZTogJ1RpZWZlIGJpcyBtaXR0bGVyZSBCZWxlZ3VuZyBlcndhcnRldCcsXG4gICAgZW46ICdMb3cgdG8gbWVkaXVtIG9jY3VwYW5jeSBleHBlY3RlZCcsXG4gICAgZnI6IFwiT24gcydhdHRlbmQgw6AgdW4gdGF1eCBkJ29jY3VwYXRpb24gZmFpYmxlIMOgIG1veWVuXCIsXG4gICAgaXQ6IFwiU2kgcHJldmVkZSB1bidvY2N1cGF6aW9uZSBtZWRpby1iYXNzYVwiLFxuICB9LFxuICBtZWRpdW06IHtcbiAgICBkZTogJ0hvaGUgQmVsZWd1bmcgZXJ3YXJ0ZXQnLFxuICAgIGVuOiAnSGlnaCBvY2N1cGFuY3kgZXhwZWN0ZWQnLFxuICAgIGZyOiBcIlVuIHRhdXggZCdvY2N1cGF0aW9uIMOpbGV2w6kgZXN0IGF0dGVuZHVcIixcbiAgICBpdDogXCJDaSBzaSBhc3BldHRhIHVuJ2FsdGEgb2NjdXBhemlvbmVcIixcbiAgfSxcbiAgaGlnaDoge1xuICAgIGRlOiAnU2VociBob2hlIEJlbGVndW5nIGVyd2FydGV0JyxcbiAgICBlbjogJ1ZlcnkgaGlnaCBvY2N1cGFuY3kgZXhwZWN0ZWQnLFxuICAgIGZyOiBcIlVuIHRhdXggZCdvY2N1cGF0aW9uIHRyw6hzIMOpbGV2w6kgZXN0IGF0dGVuZHVcIixcbiAgICBpdDogXCJDaSBzaSBhc3BldHRhIHVuJ29jY3VwYXppb25lIG1vbHRvIGFsdGFcIixcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuTWVhbnNPZlRyYW5zcG9ydDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gIGZ1bmljdWxhcjoge1xuICAgIGRlOiAnU2VpbGJhaG4vWmFobnJhZGJhaG4nLFxuICAgIGVuOiAnRnVuaWN1bGFyL0NvZyByYWlsd2F5JyxcbiAgICBmcjogJ0Z1bmljdWxhaXJlL0NoZW1pbiBkZSBmZXIgw6AgY3LDqW1haWxsw6hyZScsXG4gICAgaXQ6ICdGdW5pdmlhL0ZlcnJvdmlhIGEgY3JlbWFnbGllcmEnLFxuICB9LFxuICBlY19pZDoge1xuICAgIGRlOiAnRUMvSUMnLFxuICAgIGVuOiAnRUMvSUMnLFxuICAgIGZyOiAnRUMvSUMnLFxuICAgIGl0OiAnRUMvSUMnLFxuICB9LFxuICBidXM6IHtcbiAgICBkZTogJ0J1cycsXG4gICAgZW46ICdCdXMnLFxuICAgIGZyOiAnQnVzJyxcbiAgICBpdDogJ0J1cycsXG4gIH0sXG4gIHJlOiB7XG4gICAgZGU6ICdSRScsXG4gICAgZW46ICdSRScsXG4gICAgZnI6ICdSRScsXG4gICAgaXQ6ICdSRScsXG4gIH0sXG4gIGFyel9leHQ6IHtcbiAgICBkZTogJ0FSWi9FWFQnLFxuICAgIGVuOiAnQVJaL0VYVCcsXG4gICAgZnI6ICdBUlovRVhUJyxcbiAgICBpdDogJ0FSWi9FWFQnLFxuICB9LFxuICBpY2VfdGd2X3JqeDoge1xuICAgIGRlOiAnSUNFL1RHVi9SSlgnLFxuICAgIGVuOiAnSUNFL1RHVi9SSlgnLFxuICAgIGZyOiAnSUNFL1RHVi9SSlgnLFxuICAgIGl0OiAnSUNFL1RHVi9SSlgnLFxuICB9LFxuICBpcl9wZToge1xuICAgIGRlOiAnSVIvUEUnLFxuICAgIGVuOiAnSVIvUEUnLFxuICAgIGZyOiAnSVIvUEUnLFxuICAgIGl0OiAnSVIvUEUnLFxuICB9LFxuICBzX3NuX3I6IHtcbiAgICBkZTogJ1MvU04vUicsXG4gICAgZW46ICdTL1NOL1InLFxuICAgIGZyOiAnUy9TTi9SJyxcbiAgICBpdDogJ1MvU04vUicsXG4gIH0sXG4gIHRyYW13YXk6IHtcbiAgICBkZTogJ1RyYW0vTWV0cm8nLFxuICAgIGVuOiAnVHJhbXdheS9VbmRlcmdyb3VuZCcsXG4gICAgZnI6ICdUcmFtL03DqXRybycsXG4gICAgaXQ6ICdUcmFtL01ldHJvJyxcbiAgfSxcbiAgc2hpcDoge1xuICAgIGRlOiAnU2NoaWZmJyxcbiAgICBlbjogJ1NoaXAnLFxuICAgIGZyOiAnQmF0ZWF1JyxcbiAgICBpdDogJ0JhdHRlbGxvJyxcbiAgfSxcbiAgdHJhaW46IHtcbiAgICBkZTogJ1p1ZycsXG4gICAgZW46ICdUcmFpbicsXG4gICAgZnI6ICdUcmFpbicsXG4gICAgaXQ6ICdUcmVubycsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bk9wdGlvbmFsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJyhvcHRpb25hbCknLFxuICBlbjogJyhvcHRpb25hbCknLFxuICBmcjogJyhmYWN1bHRhdGlmKScsXG4gIGl0OiAnKGZhY29sdGF0aXZvKScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blRhcmdldE9wZW5zSW5OZXdXaW5kb3c6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnTGlua3ppZWwgw7ZmZm5ldCBpbiBuZXVlbSBGZW5zdGVyLicsXG4gIGVuOiAnTGluayB0YXJnZXQgb3BlbnMgaW4gYSBuZXcgd2luZG93LicsXG4gIGZyOiBcIkxlIGxpZW4gcydvdXZyZSBkYW5zIHVuZSBub3V2ZWxsZSBmZW7DqnRyZS5cIixcbiAgaXQ6IFwiTCdvYmlldHRpdm8gZGVsIGxpbmsgc2kgYXByZSBpbiB1bmEgbnVvdmEgZmluZXN0cmEuXCIsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnTWludXRlbiBGdXNzd2VnIG5hY2ggQW5rdW5mdDonLFxuICBlbjogJ21pbnV0ZXMgb2Ygd2Fsa2luZyB0aW1lIGFmdGVyIGFycml2YWw6JyxcbiAgZnI6ICdtaW51dGVzIGRlIHRyYWpldCDDoCBwaWVkIGFwcsOocyBs4oCZYXJyaXbDqWU6JyxcbiAgaXQ6ICdtaW51dGkgYSBwaWVkaSBhbGzigJlhcnJpdm86Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuV2Fsa2luZ0Rpc3RhbmNlRGVwYXJ0dXJlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ01pbnV0ZW4gRnVzc3dlZyB2b3IgQWJmYWhydDonLFxuICBlbjogJ21pbnV0ZXMgb2Ygd2Fsa2luZyB0aW1lIGJlZm9yZSBkZXBhcnR1cmU6JyxcbiAgZnI6ICdtaW51dGVzIHRyYWpldCDDoCBwaWVkIGF2YW50IGxlIGTDqXBhcnQ6JyxcbiAgaXQ6ICdtaW51dGkgYSBwaWVkaSBwcmltYSBkZWxsYSBwYXJ0ZW56YTonLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5DbG9zZUFsZXJ0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ01lbGR1bmcgc2NobGllc3NlbicsXG4gIGVuOiAnQ2xvc2UgbWVzc2FnZScsXG4gIGZyOiAnRmVybWVyIG1lc3NhZ2UnLFxuICBpdDogJ0NoaXVkZXJlIGlsIG1lc3NhZ2dpbycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNsb3NlTm90aWZpY2F0aW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ05hY2hyaWNodCBzY2hsaWVzc2VuJyxcbiAgZW46ICdDbG9zZSBtZXNzYWdlJyxcbiAgZnI6ICdGZXJtZXIgbWVzc2FnZScsXG4gIGl0OiAnQ2hpdWRlcmUgaWwgbWVzc2FnZ2lvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRGlhbG9nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ0RpYWxvZycsXG4gIGVuOiAnRGlhbG9nJyxcbiAgZnI6ICdEaWFsb2d1ZScsXG4gIGl0OiAnRGlhbG9nbycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNsb3NlRGlhbG9nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ8OcYmVyZ2VsYWdlcnRlcyBGZW5zdGVyIHNjaGxpZXNzZW4nLFxuICBlbjogJ0Nsb3NlIHNlY29uZGFyeSB3aW5kb3cnLFxuICBmcjogJ0Zlcm1lciBsYSBmZW7DqnRyZSBzdXBlcnBvc8OpZScsXG4gIGl0OiAnQ2hpdWRlcmUgbGEgZmluZXN0cmEgc292cmFwcG9zdGEnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5DbG9zZU5hdmlnYXRpb246IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnTmF2aWdhdGlvbiBzY2hsaWVzc2VuJyxcbiAgZW46ICdDbG9zZSBuYXZpZ2F0aW9uJyxcbiAgZnI6ICdGZXJtZXIgbGEgbmF2aWdhdGlvbicsXG4gIGl0OiAnQ2hpdWRlcmUgbGEgbmF2aWdhemlvbmUnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5DbG9zZVBvcG92ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnSGlud2VpcyBzY2hsaWVzc2VuJyxcbiAgZW46ICdDbG9zZSBub3RlJyxcbiAgZnI6ICdGZXJtZXIgbGEgbm90ZScsXG4gIGl0OiAnQ2hpdWRlcmUgbGEgbm90YScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkdvQmFjazogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdadXLDvGNrJyxcbiAgZW46ICdHbyBiYWNrJyxcbiAgZnI6ICdSZXRvdXJuZXInLFxuICBpdDogJ1ZhaSBpbmRpZXRybycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkZpbmRPdXRNb3JlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ01laHIgZXJmYWhyZW4nLFxuICBlbjogJ0ZpbmQgb3V0IG1vcmUnLFxuICBmcjogJ0VuIHNhdm9pciBwbHVzJyxcbiAgaXQ6ICdQZXIgc2FwZXJuZSBkaSBwacO5Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuVG9kYXk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnSGV1dGUnLFxuICBlbjogJ1RvZGF5JyxcbiAgZnI6ICdBdWpvdXJk4oCZaHVpJyxcbiAgaXQ6ICdPZ2dpJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuTmV4dE1vbnRoOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1p1bSBuw6RjaHN0ZW4gTW9uYXQgd2VjaHNlbG4nLFxuICBlbjogJ0NoYW5nZSB0byB0aGUgbmV4dCBtb250aCcsXG4gIGZyOiAnUGFzc2VyIGF1IG1vaXMgc3VpdmFudCcsXG4gIGl0OiAnUGFzc2FyZSBhbCBtZXNlIHN1Y2Nlc3Npdm8nLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5QcmV2aW91c01vbnRoOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1p1bSBsZXR6dGVuIE1vbmF0IHdlY2hzZWxuJyxcbiAgZW46ICdDaGFuZ2UgdG8gdGhlIHByZXZpb3VzIG1vbnRoJyxcbiAgZnI6ICdQYXNzZXIgYXUgbW9pcyBwcsOpY8OpZGVudCcsXG4gIGl0OiAnUGFzc2FyZSBhbCBtZXNlIHByZWNlZGVudGUnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5OZXh0RGF5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ07DpGNoc3RlciBUYWcnLFxuICBlbjogJ05leHQgZGF5JyxcbiAgZnI6ICdMZSBwcm9jaGFpbiBqb3VyJyxcbiAgaXQ6ICdHaW9ybm8gc3VjY2Vzc2l2bycsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blByZXZpb3VzRGF5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1ZvcmhlcmlnZXIgVGFnJyxcbiAgZW46ICdQcmV2aW91cyBkYXknLFxuICBmcjogJ0pvdXIgcHLDqWPDqWRlbnQnLFxuICBpdDogJ0dpb3JubyBwcmVjZWRlbnRlJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuWWVhck1vbnRoU2VsZWN0aW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ0phaHIgdW5kIE1vbmF0IGF1c3fDpGhsZW4nLFxuICBlbjogJ0Nob29zZSB5ZWFyIGFuZCBtb250aCcsXG4gIGZyOiBcIkNob2lzaXNzZXogbCdhbm7DqWUgZXQgbGUgbW9pc1wiLFxuICBpdDogJ1NlbGV6aW9uYSBhbm5vIGUgbWVzZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNhbGVuZGFyRGF0ZVNlbGVjdGlvbjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdEYXR1bSBhdXN3w6RobGVuJyxcbiAgZW46ICdDaG9vc2UgZGF0ZScsXG4gIGZyOiAnQ2hvaXNpciB1bmUgZGF0ZScsXG4gIGl0OiAnU2VsZXppb25hIHVuYSBkYXRhJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuTmV4dFllYXJSYW5nZSA9ICh5ZWFyUmFuZ2U6IG51bWJlcik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4gKHtcbiAgZGU6IGBXZWNoc2VsIHp1IGRlbiBuw6RjaHN0ZW4gJHt5ZWFyUmFuZ2V9IEphaHJlbmAsXG4gIGVuOiBgQ2hhbmdlIHRvIHRoZSBuZXh0ICR7eWVhclJhbmdlfSB5ZWFyc2AsXG4gIGZyOiBgUGFzc2VyIGF1eCAke3llYXJSYW5nZX0gcHJvY2hhaW5lcyBhbm7DqWVzYCxcbiAgaXQ6IGBQYXNzYXJlIGFpIHN1Y2Nlc3NpdmkgJHt5ZWFyUmFuZ2V9IGFubmlgLFxufSk7XG5cbmV4cG9ydCBjb25zdCBpMThuUHJldmlvdXNZZWFyUmFuZ2UgPSAoeWVhclJhbmdlOiBudW1iZXIpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+ICh7XG4gIGRlOiBgV2VjaHNlbCB6dSBkZW4gdm9yaGVyaWdlbiAke3llYXJSYW5nZX0gSmFocmVuYCxcbiAgZW46IGBDaGFuZ2UgdG8gdGhlIHByZXZpb3VzICR7eWVhclJhbmdlfSB5ZWFyc2AsXG4gIGZyOiBgUGFzc2FnZSBhdXggJHt5ZWFyUmFuZ2V9IHByw6ljw6lkZW50ZXMgYW5uw6llc2AsXG4gIGl0OiBgUGFzc2FyZSBhaSBwcmVjZWRlbnRpICR7eWVhclJhbmdlfSBhbm5pYCxcbn0pO1xuXG5leHBvcnQgY29uc3QgaTE4bk5leHRZZWFyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1p1bSBuw6RjaHN0ZW4gSmFociB3ZWNoc2VsbicsXG4gIGVuOiAnQ2hhbmdlIHRvIHRoZSBuZXh0IHllYXInLFxuICBmcjogXCJQYXNzZXIgw6AgbCdhbm7DqWUgc3VpdmFudGVcIixcbiAgaXQ6IFwiUGFzc2FyZSBhbGwnYW5ubyBzdWNjZXNzaXZvXCIsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blByZXZpb3VzWWVhcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdadW0gbGV0enRlbiBKYWhyIHdlY2hzZWxuJyxcbiAgZW46ICdDaGFuZ2UgdG8gdGhlIHByZXZpb3VzIHllYXInLFxuICBmcjogXCJQYXNzZXIgw6AgbCdhbm7DqWUgcHLDqWPDqWRlbnRcIixcbiAgaXQ6IFwiUGFzc2FyZSBhbGwnYW5ubyBwcmVjZWRlbnRlXCIsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4blNlbGVjdE5leHREYXkgPSAoY3VycmVudERhdGU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4gKHtcbiAgZGU6IGBadW0gbsOkY2hzdGVuIFRhZyB3ZWNoc2VsbiwgZGVyemVpdCBhdXNnZXfDpGhsdCAke2N1cnJlbnREYXRlfS5gLFxuICBlbjogYENoYW5nZSB0byB0aGUgbmV4dCBkYXksIGN1cnJlbnRseSBzZWxlY3RlZCAke2N1cnJlbnREYXRlfS5gLFxuICBmcjogYFBhc3NlciBhdSBqb3VyIHN1aXZhbnQsIGFjdHVlbGxlbWVudCBzw6lsZWN0aW9ubsOpICR7Y3VycmVudERhdGV9LmAsXG4gIGl0OiBgUGFzc2FyZSBhbCBnaW9ybm8gc3VjY2Vzc2l2bywgYXR0dWFsbWVudGUgc2VsZXppb25hdG8gJHtjdXJyZW50RGF0ZX0uYCxcbn0pO1xuXG5leHBvcnQgY29uc3QgaTE4blNlbGVjdFByZXZpb3VzRGF5ID0gKGN1cnJlbnREYXRlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+ICh7XG4gIGRlOiBgWnVtIHZvcmhlcmlnZW4gVGFnIHdlY2hzZWxuLCBkZXJ6ZWl0IGF1c2dld8OkaGx0ICR7Y3VycmVudERhdGV9LmAsXG4gIGVuOiBgQ2hhbmdlIHRvIHRoZSBwcmV2aW91cyBkYXksIGN1cnJlbnRseSBzZWxlY3RlZCAke2N1cnJlbnREYXRlfS5gLFxuICBmcjogYFBhc3NlciBhdSBqb3VyIHByw6ljw6lkZW50LCBhY3R1ZWxsZW1lbnQgc8OpbGVjdGlvbm7DqSAke2N1cnJlbnREYXRlfS5gLFxuICBpdDogYFBhc3NhcmUgYWwgZ2lvcm5vIHByZWNlZGVudGUsIGF0dHVhbG1lbnRlIHNlbGV6aW9uYXRvICR7Y3VycmVudERhdGV9LmAsXG59KTtcblxuZXhwb3J0IGNvbnN0IGkxOG5TaG93Q2FsZW5kYXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnS2FsZW5kZXIgYW56ZWlnZW4nLFxuICBlbjogJ1Nob3cgY2FsZW5kYXInLFxuICBmcjogJ0FmZmljaGVyIGxlIGNhbGVuZHJpZXInLFxuICBpdDogJ1Zpc3VhbGl6emFyZSBjYWxlbmRhcmlvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1RULk1NLkpKSkonLFxuICBlbjogJ0RELk1NLllZWVknLFxuICBmcjogJ0pKLk1NLkFBQUEnLFxuICBpdDogJ0dHLk1NLkFBQUEnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5EYXRlQ2hhbmdlZFRvOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ0RhdHVtIGdlw6RuZGVydCBhdWYnLFxuICBlbjogJ0RhdGUgY2hhbmdlZCB0bycsXG4gIGZyOiAnRGF0ZSBtb2RpZmnDqWUgYXUnLFxuICBpdDogJ0RhdGEgbW9kaWZpY2F0YSBpbicsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNvbm5lY3Rpb25Gcm9tOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1ZlcmJpbmR1bmcgdm9uJyxcbiAgZW46ICdDb25uZWN0aW9uIGZyb20nLFxuICBmcjogJ0xpYWlzb24gZGUnLFxuICBpdDogJ0NvbGxlZ2FtZW50byBkYScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNvbm5lY3Rpb25UbzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICduYWNoJyxcbiAgZW46ICd0bycsXG4gIGZyOiAnw6AnLFxuICBpdDogJ2EnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5Db25uZWN0aW9uUm91bmR0cmlwID0gKHJldHVybkNpdHk6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4gKHtcbiAgZGU6IGB1bmQgenVyw7xjayBuYWNoICR7cmV0dXJuQ2l0eX0uYCxcbiAgZW46IGBhbmQgYmFjayB0byAke3JldHVybkNpdHl9LmAsXG4gIGZyOiBgZXQgcmV0b3VyIMOgICR7cmV0dXJuQ2l0eX0uYCxcbiAgaXQ6IGBlIHJpdG9ybm8gYSAke3JldHVybkNpdHl9LmAsXG59KTtcblxuZXhwb3J0IGNvbnN0IGkxOG5FeHBhbmRlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdlcndlaXRlcnQnLFxuICBlbjogJ2V4cGFuZGVkJyxcbiAgZnI6ICdlc3QgdGlyw6knLFxuICBpdDogJ2VzYXBuc28nLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5Db2xsYXBzZWQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAncmVkdXppZXJ0JyxcbiAgZW46ICdjb2xsYXBzZWQnLFxuICBmcjogJ2NvbmRlbnPDqScsXG4gIGl0OiAnY29tcHJlc3NvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuTWFwQ29udGFpbmVyQnV0dG9uTGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnS2FydGUgemVpZ2VuJyxcbiAgZW46ICdTaG93IG1hcCcsXG4gIGZyOiAnQWZmaWNoZXIgbGEgY2FydGUnLFxuICBpdDogJ01vc3RyYSBsYSBtYXBwYScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkJyZWFkY3J1bWJFbGxpcHNpc0J1dHRvbkxhYmVsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ01laHIgQnJlYWRjcnVtYnMgYW56ZWlnZW4nLFxuICBlbjogJ1Nob3cgbW9yZSBicmVhZGNydW1icycsXG4gIGZyOiAnQWZmaWNoZXIgcGx1cyBicmVhZGNydW1icycsXG4gIGl0OiAnTW9zdHJhIHBpw7kgYnJlYWRjcnVtYnMnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5UaW1lSW5wdXRDaGFuZ2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnWmVpdCBnZcOkbmRlcnQgenUnLFxuICBlbjogJ1RpbWUgY2hhbmdlZCB0bycsXG4gIGZyOiAnSGV1cmUgbW9kaWZpw6llOicsXG4gIGl0OiAnT3JhcmlvIG1vZGlmaWNhdGEgYWxsZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkNsZWFySW5wdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnRmVsZGluaGFsdCBsw7ZzY2hlbicsXG4gIGVuOiAnQ2xlYXIgaW5wdXQgdmFsdWUnLFxuICBmcjogJ0VmZmFjZXIgbGEgdmFsZXVyIGTigJllbnRyw6llJyxcbiAgaXQ6ICdDYW5jZWxsYSBpbCB2YWxvcmUgZGVsbOKAmWlucHV0Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRmxpcENhcmQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnS2xpY2tlbiBTaWUgYXVmIGRpZXNlIEthcnRlIGbDvHIgRGV0YWlscycsXG4gIGVuOiAnQ2xpY2sgb24gdGhpcyBjYXJkIGZvciBkZXRhaWxzJyxcbiAgZnI6ICdDbGlxdWV6IHN1ciBjZXR0ZSBjYXJ0ZSBwb3VyIHBsdXMgZGUgZMOpdGFpbHMnLFxuICBpdDogJ0NsaWNjYSBzdSBxdWVzdGEgc2NoZWRhIHBlciBpIGRldHRhZ2xpJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuUmV2ZXJzZUNhcmQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnS2xpY2tlbiBTaWUgYXVmIGRpZXNlIEthcnRlLCB1bSB6dXLDvGNrIHp1ciBadXNhbW1lbmZhc3N1bmcgenUgZ2VsYW5nZW4nLFxuICBlbjogJ0NsaWNrIG9uIHRoaXMgY2FyZCB0byBnbyBiYWNrIHRvIHRoZSBzdW1tYXJ5JyxcbiAgZnI6ICdDbGlxdWV6IHN1ciBjZXR0ZSBjYXJ0ZSBwb3VyIHJldmVuaXIgYXUgcsOpc3Vtw6knLFxuICBpdDogJ0NsaWNjYSBzdSBxdWVzdGEgc2NoZWRhIHBlciB0b3JuYXJlIGFsIHNvbW1hcmlvJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRmlsZVNlbGVjdG9yQnV0dG9uTGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnRGF0ZWkgYXVzd8OkaGxlbicsXG4gIGVuOiAnQ2hvb3NlIGEgZmlsZScsXG4gIGZyOiAnQ2hvaXNpc3NleiB1biBmaWNoaWVyJyxcbiAgaXQ6ICdTY2VnbGkgdW4gZmlsZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkZpbGVTZWxlY3RvclN1YnRpdGxlTGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnWmllaGUgZGVpbmUgRGF0ZWllbiBoaWVyIGhpbiAoRHJhZyAmIERyb3ApJyxcbiAgZW46ICdEcmFnICYgRHJvcCB5b3VyIGZpbGVzIGhlcmUnLFxuICBmcjogJ0ZhaXRlcyBnbGlzc2VyIGV0IGTDqXBvc2V6IHZvcyBmaWNoaWVycyBpY2knLFxuICBpdDogJ1RyYXNjaW5hIGUgcmlsYXNjaWEgaSB0dW9pIGZpbGUgcXVpJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuRmlsZVNlbGVjdG9yRGVsZXRlRmlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdEYXRlaSBlbnRmZXJuZW4nLFxuICBlbjogJ1JlbW92ZSBmaWxlJyxcbiAgZnI6ICdFZmZhY2VyIGxlIGZpY2hpZXInLFxuICBpdDogJ1JpbXVvdmkgaWwgZmlsZScsXG59O1xuXG5leHBvcnQgY29uc3QgaTE4bkZpbGVTZWxlY3RvckN1cnJlbnRseVNlbGVjdGVkID0gKGZpbGVzTmFtZTogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+IHtcbiAgaWYgKGZpbGVzTmFtZSAmJiBmaWxlc05hbWUubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZTogYEFrdHVlbGwgYXVzZ2V3w6RobHRlIERhdGVpOiAke2ZpbGVzTmFtZS5qb2luKCcsICcpfS5gLFxuICAgICAgZW46IGBDdXJyZW50bHkgc2VsZWN0ZWQgZmlsZXM6ICR7ZmlsZXNOYW1lLmpvaW4oJywgJyl9LmAsXG4gICAgICBmcjogYEZpY2hpZXIgYWN0dWVsbGVtZW50IHPDqWxlY3Rpb25uw6k6ICR7ZmlsZXNOYW1lLmpvaW4oJywgJyl9LmAsXG4gICAgICBpdDogYEZpbGUgYXR0dWFsbWVudGUgc2VsZXppb25hdG86ICR7ZmlsZXNOYW1lLmpvaW4oJywgJyl9LmAsXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRlOiAnS2VpbmUgRGF0ZWkgYXVzZ2V3w6RobHQuJyxcbiAgICBlbjogJ05vIGZpbGVzIHNlbGVjdGVkLicsXG4gICAgZnI6ICdOZXNzdW4gZmljaGllciBzw6lsZWN0aW9ubsOpLicsXG4gICAgaXQ6ICdOZXNzdW4gZmlsZSBzZWxlemlvbmF0by4nLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5OZXh0UGFnZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgZGU6ICdOw6RjaHN0ZSBTZWl0ZScsXG4gIGVuOiAnTmV4dCBwYWdlJyxcbiAgZnI6ICdQcm9jaGFpbmUgcGFnZScsXG4gIGl0OiAnUGFnaW5hIHN1Y2Nlc3NpdmEnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5QcmV2aW91c1BhZ2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnVm9yaGVyaWdlIFNlaXRlJyxcbiAgZW46ICdQcmV2aW91cyBwYWdlJyxcbiAgZnI6ICdQYWdlIHByw6ljw6lkZW50ZScsXG4gIGl0OiAnUGFnaW5hIHByZWNlZGVudGUnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5QYWdlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkZTogJ1NlaXRlJyxcbiAgZW46ICdQYWdlJyxcbiAgZnI6ICdQYWdlJyxcbiAgaXQ6ICdQYWdpbmEnLFxufTtcblxuZXhwb3J0IGNvbnN0IGkxOG5JdGVtc1BlclBhZ2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRlOiAnRWludHLDpGdlIHBybyBTZWl0ZScsXG4gIGVuOiAnSXRlbXMgcGVyIHBhZ2UnLFxuICBmcjogJ0VudHLDqWVzIHBhciBwYWdlJyxcbiAgaXQ6ICdFbGVtZW50aSBwZXIgcGFnaW5hJyxcbn07XG5cbmV4cG9ydCBjb25zdCBpMThuU2VsZWN0ZWRQYWdlID0gKHBhZ2VOdW1iZXI6IG51bWJlcik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4gKHtcbiAgZGU6IGBTZWl0ZSAke3BhZ2VOdW1iZXJ9IGF1c2dld8OkaGx0LmAsXG4gIGVuOiBgUGFnZSAke3BhZ2VOdW1iZXJ9IHNlbGVjdGVkLmAsXG4gIGZyOiBgUGFnZSAke3BhZ2VOdW1iZXJ9IHPDqWxlY3Rpb25uw6llLmAsXG4gIGl0OiBgUGFnaW5hICR7cGFnZU51bWJlcn0gc2VsZXppb25hdGEuYCxcbn0pO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVPLE1BQU0sZ0JBQXdDO0FBQUEsRUFDbkQsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUNOO0FBRU8sTUFBTSxjQUFzQztBQUFBLEVBQ2pELElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTjtBQUVPLE1BQU0sYUFBcUM7QUFBQSxFQUNoRCxJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQ047QUFFTyxNQUFNLGtCQUEwQztBQUFBLEVBQ3JELElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTjtBQUVPLE1BQU0sWUFBb0Q7QUFBQSxFQUMvRCxPQUFPO0FBQUEsSUFDTCxJQUFJO0FBQUEsSUFDSixJQUFJO0FBQUEsSUFDSixJQUFJO0FBQUEsSUFDSixJQUFJO0FBQUEsRUFDTjtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sSUFBSTtBQUFBLElBQ0osSUFBSTtBQUFBLElBQ0osSUFBSTtBQUFBLElBQ0osSUFBSTtBQUFBLEVBQ047QUFDRjtBQUVPLE1BQU0sWUFBb0M7QUFBQSxFQUMvQyxJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQ047QUFFTyxNQUFNLGFBQXFDO0FBQUEsRUFDaEQsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUNOO0FBRU8sTUFBTSxrQkFBMEM7QUFBQSxFQUNyRCxJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQ047QUFFTyxNQUFNLGlCQUF5QztBQUFBLEVBQ3BELElB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
|
|
@@ -621,14 +621,7 @@ const SbbUpdateSchedulerMixin = (base) => {
|
|
|
621
621
|
}
|
|
622
622
|
return SbbUpdateSchedulerElement;
|
|
623
623
|
};
|
|
624
|
-
const panelCommon = css
|
|
625
|
-
/*
|
|
626
|
-
* SBB table mixin
|
|
627
|
-
* Notes:
|
|
628
|
-
* We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
|
|
629
|
-
* Therefore, we have to build the grid avoiding double borders.
|
|
630
|
-
*/
|
|
631
|
-
:host {
|
|
624
|
+
const panelCommon = css`:host {
|
|
632
625
|
--sbb-selection-panel-background: var(
|
|
633
626
|
--sbb-selection-expansion-panel-inner-background,
|
|
634
627
|
var(--sbb-color-white)
|
|
@@ -747,4 +740,4 @@ export {
|
|
|
747
740
|
SbbUpdateSchedulerMixin,
|
|
748
741
|
panelCommon as panelCommonStyle
|
|
749
742
|
};
|
|
750
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW5zLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZGlzYWJsZWQtbWl4aW4udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3JlcXVpcmVkLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL2Zvcm0tYXNzb2NpYXRlZC1jaGVja2JveC1taXhpbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL21peGlucy9oeWRyYXRpb24tbWl4aW4udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvbmFtZWQtc2xvdC1saXN0LW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL25lZ2F0aXZlLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3BhbmVsLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3VwZGF0ZS1zY2hlZHVsZXItbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50LCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkRpc2FibGVkTWl4aW5UeXBlIHtcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbik7XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGUge1xuICBwdWJsaWMgZGlzYWJsZWRJbnRlcmFjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFbmhhbmNlIHlvdXIgY29tcG9uZW50IHdpdGggYSBkaXNhYmxlZCBwcm9wZXJ0eS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkRpc2FibGVkTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRGlzYWJsZWRFbGVtZW50IGV4dGVuZHMgc3VwZXJDbGFzcyBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiRGlzYWJsZWRNaXhpblR5cGU+IHtcbiAgICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLiAqL1xuICAgIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAvLyBUbyBwcm92aWRlIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSBuYXRpdmUgZGlzYWJsZWQgc3RhdGUsXG4gICAgICAvLyBhbnkgdmFsdWUgaXMgY29udmVydGVkIHRvIGEgYm9vbGVhbi5cbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gQm9vbGVhbih2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgdGhpcy5pc0Rpc2FibGVkRXh0ZXJuYWxseSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2lsbCBiZSB1c2VkIGFzICdvcicgY2hlY2sgdG8gdGhlIGN1cnJlbnQgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQ2FuIGUuZy4gYmUgdXNlZCB0byByZWFkIGRpc2FibGVkIHN0YXRlIG9mIGEgZ3JvdXAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTYmJEaXNhYmxlZEVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkRpc2FibGVkTWl4aW5UeXBlPiAmIFQ7XG59O1xuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIGRpc2FibGVkIGludGVyYWN0aXZlIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluID0gPFxuICBUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50ICYgU2JiRGlzYWJsZWRNaXhpblR5cGU+LFxuPihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZUVsZW1lbnRcbiAgICBleHRlbmRzIHN1cGVyQ2xhc3NcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZT5cbiAge1xuICAgIC8qKiBXaGV0aGVyIGRpc2FibGVkIGJ1dHRvbnMgc2hvdWxkIGJlIGludGVyYWN0aXZlLiAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGVkLWludGVyYWN0aXZlJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgZGlzYWJsZWRJbnRlcmFjdGl2ZSA9XG4gICAgICBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBTYmJEaXNhYmxlZEludGVyYWN0aXZlRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZT4gJlxuICAgIFQ7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRGlzYWJsZWRUYWJJbmRleEFjdGlvbk1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGUgJiBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJEaXNhYmxlZFRhYkluZGV4QWN0aW9uXG4gICAgZXh0ZW5kcyBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW4oU2JiRGlzYWJsZWRNaXhpbihzdXBlckNsYXNzKSlcbiAgICBpbXBsZW1lbnRzIFNiYkRpc2FibGVkTWl4aW5UeXBlLCBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlXG4gIHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSAmJiAhY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZEludGVyYWN0aXZlJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEludGVyYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkRpc2FibGVkVGFiSW5kZXhBY3Rpb24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxcbiAgICBTYmJEaXNhYmxlZE1peGluVHlwZSAmIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGVcbiAgPiAmXG4gICAgVDtcbn07XG5cbi8qKlxuICogRXh0ZW5kcyBgU2JiRGlzYWJsZWRNaXhpbmAgd2l0aCB0aGUgYGFyaWEtZGlzYWJsZWRgIGF0dHJpYnV0ZS5cbiAqIEZvciBhMTF5IHB1cnBvc2VzLCBrZWVwcyB0aGUgZWxlbWVudCBmb2N1c2FibGUgZXZlbiB3aGVuIGRpc2FibGVkLlxuICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIHdpdGggbmV4dCBtYWpvciB2ZXJzaW9uXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJGb2N1c2FibGVEaXNhYmxlZEFjdGlvbk1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkZvY3VzYWJsZURpc2FibGVkQWN0aW9uXG4gICAgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKHN1cGVyQ2xhc3MpXG4gICAgaW1wbGVtZW50cyBTYmJEaXNhYmxlZE1peGluVHlwZVxuICB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gU2JiRm9jdXNhYmxlRGlzYWJsZWRBY3Rpb24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGUge1xuICBwdWJsaWMgZ2V0IGZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbDtcbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZztcbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpO1xuICBwdWJsaWMgZ2V0IHR5cGUoKTogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpO1xuXG4gIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZTtcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGZvcm1EaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscztcblxuICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuO1xuICBwdWJsaWMgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgZm9ybUFzc29jaWF0ZWRDYWxsYmFjaz8oZm9ybTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtRGlzYWJsZWRDYWxsYmFjayhkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgRm9ybUFzc29jaWF0ZWRNaXhpbiBlbmFibGVzIG5hdGl2ZSBmb3JtIHN1cHBvcnQgZm9yIGN1c3RvbSBjb250cm9scy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4gPSA8VCBleHRlbmRzIENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZEVsZW1lbnRcbiAgICBleHRlbmRzIHN1cGVyQ2xhc3NcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIGZvcm1Bc3NvY2lhdGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGZvcm0gb3duZXIgb2YgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZm9ybSgpOiBIVE1MRm9ybUVsZW1lbnQgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5mb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZvcm0gZWxlbWVudC4gV2lsbCBiZSByZWFkIGZyb20gbmFtZSBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV2ZWxvcGVyIG5vdGU6IEluIHRoaXMgY2FzZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlIG11c3QgYmUgc3luY2hyb25vdXMuXG4gICAgICogRHVlIHRvIHRoaXMgaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBnZXR0ZXIvc2V0dGVyIGFuZCB0aGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgaGFuZGxlcyB0aGUgZGlmZiBjaGVjay5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoKVxuICAgIHB1YmxpYyBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCduYW1lJywgYCR7bmFtZX1gKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ25hbWUnKSA/PyAnJztcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbE5hbWU7XG4gICAgfVxuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBmb3JtIGVsZW1lbnQuICovXG4gICAgQHByb3BlcnR5KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgVmFsaWRpdHlTdGF0ZSBvYmplY3QgZm9yIGludGVybmFscyB0YXJnZXQgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbHMudmFsaWRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSB0aGF0IHdvdWxkIGJlIHNob3duIHRvIHRoZSB1c2VyXG4gICAgICogaWYgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50IHdhcyB0byBiZSBjaGVja2VkIGZvciB2YWxpZGl0eS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRhdGlvbk1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50IHdpbGwgYmUgdmFsaWRhdGVkXG4gICAgICogd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQ7IGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLndpbGxWYWxpZGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscyA9IHRoaXMuYXR0YWNoSW50ZXJuYWxzKCk7XG5cbiAgICAvKiogV2hlbmV2ZXIgYSBzdXJyb3VuZGluZyBmb3JtIG9yIGZpZWxkc2V0IGlzIGNoYW5naW5nIGl0cyBkaXNhYmxlZCBzdGF0ZS4gKi9cbiAgICBAc3RhdGUoKSBwcm90ZWN0ZWQgZm9ybURpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bGwsXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAobmFtZSAhPT0gJ25hbWUnIHx8IG9sZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiBpbnRlcm5hbHMgdGFyZ2V0IGVsZW1lbnQgaGFzIG5vIHZhbGlkaXR5IHByb2JsZW1zOyBmYWxzZSBvdGhlcndpc2UuXG4gICAgICogRmlyZXMgYW4gaW52YWxpZCBldmVudCBhdCB0aGUgZWxlbWVudCBpbiB0aGUgbGF0dGVyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5jaGVja1ZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIGludGVybmFscyB0YXJnZXQgZWxlbWVudCBoYXMgbm8gdmFsaWRpdHkgcHJvYmxlbXM7IG90aGVyd2lzZSxcbiAgICAgKiByZXR1cm5zIGZhbHNlLCBmaXJlcyBhbiBpbnZhbGlkIGV2ZW50IGF0IHRoZSBlbGVtZW50LFxuICAgICAqIGFuZCAoaWYgdGhlIGV2ZW50IGlzbid0IGNhbmNlbGVkKSByZXBvcnRzIHRoZSBwcm9ibGVtIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHJlcG9ydFZhbGlkaXR5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgZm9ybSBlbGVtZW50IGNoYW5nZXMuXG4gICAgICogRWxlbWVudEludGVybmFscy5mb3JtIHJldHVybnMgdGhlIGFzc29jaWF0ZWQgZnJvbSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2s/KGZvcm06IEhUTUxGb3JtRWxlbWVudCB8IG51bGwpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIGEgc3Vycm91bmRpbmcgZm9ybSAvIGZpZWxkc2V0IGNoYW5nZXMgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQHBhcmFtIGRpc2FibGVkXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybURpc2FibGVkQ2FsbGJhY2soZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGlmIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eSBjaGFuZ2VzIG9yIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb2YgYSBmaWVsZHNldCBvciBmb3JtIGNoYW5nZXMuXG4gICAgICAvLyBXZSBuZWVkIHRvIHBvc3Rwb25lIHRoZSBhc3NpZ25tZW50LCBvdGhlcndpc2UgaXQgaW50ZXJmZXJlcyB3aXRoIGRpc2FibGVkIHN0YXR1cyBzZXR0aW5nXG4gICAgICAvLyBhbmQgbGVhZHMgdG8gYSB3cm9uZyBzdGF0ZSAoZS5nLiBlbWJlZGRlZCBzYmItdmlzdWFsLWNoZWNrYm94KS5cbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiAgQ2FsbGVkIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIHJlc3RvcmUgZWxlbWVudOKAmXMgc3RhdGUgdG8gc3RhdGUgaW4gd2hpY2ggY2FzZVxuICAgICAqICByZWFzb24gaXMg4oCccmVzdG9yZeKAnSwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyDigJxhdXRvY29tcGxldGXigJ0uXG4gICAgICogIEluIHRoZSBjYXNlIG9mIOKAnHJlc3RvcmXigJ0sIHN0YXRlIGlzIGEgc3RyaW5nLCBGaWxlLCBvciBGb3JtRGF0YSBvYmplY3RcbiAgICAgKiAgcHJldmlvdXNseSBzZXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzZXRGb3JtVmFsdWUuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgICAgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkO1xuXG4gICAgLyoqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBmb3JtIHZhbHVlIGlzIGNoYW5nZWQuICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPiAmIFQ7XG59O1xuXG4vKipcbiAqIEEgdmFsdWUgdG8gYmUgcmVzdG9yZWQgZm9yIGEgY29tcG9uZW50J3MgZm9ybSB2YWx1ZS4gSWYgYSBjb21wb25lbnQncyBmb3JtXG4gKiBzdGF0ZSBpcyBhIGBGb3JtRGF0YWAgb2JqZWN0LCBpdHMgZW50cnkgbGlzdCBvZiBuYW1lIGFuZCB2YWx1ZXMgd2lsbCBiZVxuICogcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1SZXN0b3JlU3RhdGUgPSBGaWxlIHwgc3RyaW5nIHwgW3N0cmluZywgRm9ybURhdGFFbnRyeVZhbHVlXVtdO1xuXG4vKipcbiAqIFRoZSByZWFzb24gYSBmb3JtIGNvbXBvbmVudCBpcyBiZWluZyByZXN0b3JlZCBmb3IsIGVpdGhlciBgJ3Jlc3RvcmUnYCBmb3JcbiAqIGJyb3dzZXIgcmVzdG9yYXRpb24gb3IgYCdhdXRvY29tcGxldGUnYCBmb3IgcmVzdG9yaW5nIHVzZXIgdmFsdWVzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbiA9ICdyZXN0b3JlJyB8ICdhdXRvY29tcGxldGUnO1xuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50LCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlIH0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJSZXF1aXJlZE1peGluVHlwZSB7XG4gIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pO1xuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIHJlcXVpcmVkIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUmVxdWlyZWRNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudCAmIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlJlcXVpcmVkTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJSZXF1aXJlZEVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT4ge1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgcmVxdWlyZWQuICovXG4gICAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgIC8vIFRvIHByb3ZpZGUgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIG5hdGl2ZSByZXF1aXJlZCBzdGF0ZSxcbiAgICAgIC8vIGFueSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYSBib29sZWFuLlxuICAgICAgdGhpcy5fcmVxdWlyZWQgPSBCb29sZWFuKHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCB8fCB0aGlzLmlzUmVxdWlyZWRFeHRlcm5hbGx5KCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgZXhwbGljaXRseSBzZXQgYXJpYS1yZXF1aXJlZCB2YWx1ZS5cbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYVJlcXVpcmVkID0gYCR7dGhpcy5yZXF1aXJlZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdpbGwgYmUgdXNlZCBhcyAnb3InIGNoZWNrIHRvIHRoZSBjdXJyZW50IHJlcXVpcmVkIHN0YXRlLlxuICAgICAqIENhbiBlLmcuIGJlIHVzZWQgdG8gcmVhZCByZXF1aXJlZCBzdGF0ZSBvZiBhIGdyb3VwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiUmVxdWlyZWRFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJSZXF1aXJlZE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB7IGRlZmF1bHRDb252ZXJ0ZXIsIHR5cGUgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4sIHR5cGUgU2JiRGlzYWJsZWRNaXhpblR5cGUgfSBmcm9tICcuL2Rpc2FibGVkLW1peGluLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgdHlwZSBTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZSxcbn0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVxdWlyZWRNaXhpbiwgdHlwZSBTYmJSZXF1aXJlZE1peGluVHlwZSB9IGZyb20gJy4vcmVxdWlyZWQtbWl4aW4uanMnO1xuXG50eXBlIENoZWNrZWRTZXR0ZXJWYWx1ZSA9IHsgdmFsdWU6IGJvb2xlYW47IGF0dHJpYnV0ZTogYm9vbGVhbiB9O1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlXG4gIGV4dGVuZHMgU2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGVcbiAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiwgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT5cbntcbiAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW47XG4gIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbik7XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbik7XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKTtcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuO1xuXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCwgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbik6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgd2l0aFVzZXJJbnRlcmFjdGlvbj8oKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgY2hlY2tib3ggY29udHJvbHMuXG4gKlxuICogSW5oZXJpdGVkIGNsYXNzZXMgTVVTVCBpbXBsZW1lbnQgdGhlIGFyaWFDaGVja2VkIHN0YXRlIChFbGVtZW50SW50ZXJuYWxzKSB0aGVtc2VsdmVzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluID0gPFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBAaG9zdEF0dHJpYnV0ZXMoe1xuICAgIHRhYmluZGV4OiAnMCcsXG4gIH0pXG4gIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hFbGVtZW50XG4gICAgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFNiYlJlcXVpcmVkTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihzdXBlckNsYXNzKSkpXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGU+XG4gIHtcbiAgICBwcml2YXRlIF9hdHRyaWJ1dGVNdXRhdGlvbkJsb2NrZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLiAqL1xuICAgIEBwcm9wZXJ0eSh7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgY29udmVydGVyOiB7XG4gICAgICAgIC4uLmRlZmF1bHRDb252ZXJ0ZXIsXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUgc2V0dGVyIHNvIHRoYXQgd2Uga25vdyBpdCB3YXMgY2FsbGVkIGJ5IGF0dHJpYnV0ZSBjaGFuZ2UuXG4gICAgICAgIGZyb21BdHRyaWJ1dGU6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgdHlwZT86IHVua25vd24pOiBDaGVja2VkU2V0dGVyVmFsdWUgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRDb252ZXJ0ZXIuZnJvbUF0dHJpYnV0ZT8uKHZhbHVlLCB0eXBlKTtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBhdHRyaWJ1dGU6IHRydWUgfSBhcyBDaGVja2VkU2V0dGVyVmFsdWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gICAgcHVibGljIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVTZXR0ZXIgPVxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gKHZhbHVlIGFzIHVua25vd24gYXMgQ2hlY2tlZFNldHRlclZhbHVlKS5hdHRyaWJ1dGUgOiBmYWxzZTtcbiAgICAgIGlmIChhdHRyaWJ1dGVTZXR0ZXIpIHtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgYXMgdW5rbm93biBhcyBDaGVja2VkU2V0dGVyVmFsdWUpLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBcyBzb29uIGFzIG11dGF0aW9uIHdhcyBkb25lIG5vdCBieSBzZXR0aW5nIGF0dHJpYnV0ZSxcbiAgICAgIC8vIHdlIG5lZWQgdG8gYmxvY2sgc3luY2luZyBhdHRyaWJ1dGUuXG4gICAgICBpZiAodGhpcy5oYXNVcGRhdGVkICYmICFhdHRyaWJ1dGVTZXR0ZXIpIHtcbiAgICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NoZWNrZWQgPSBCb29sZWFuKHZhbHVlKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGVja2VkID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgdGhpcy5pbnRlcm5hbHMucm9sZSA9ICdjaGVja2JveCc7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2hhbmRsZVVzZXJJbnRlcmFjdGlvbik7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcmV2ZW50U2Nyb2xsT25TcGFjZWJhclByZXNzKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9oYW5kbGVLZXlib2FyZEludGVyYWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlVXNlckludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MpO1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuX2hhbmRsZUtleWJvYXJkSW50ZXJhY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICBvbGQ6IHN0cmluZyB8IG51bGwsXG4gICAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgIC8vIEF0dHJpYnV0ZSBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFmdGVyIHByb2dyYW1tYXRpYyBvciBtYW51YWwgc3RhdGUgY2hhbmdlLlxuICAgICAgaWYgKG5hbWUgIT09ICdjaGVja2VkJyB8fCAhdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkKSB7XG4gICAgICAgIHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGQsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGZvcm0gaXMgYmVpbmcgcmVzZXQuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLmhhc0F0dHJpYnV0ZSgnY2hlY2tlZCcpO1xuICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENhbGxlZCB3aGVuIHRoZSBicm93c2VyIGlzIHRyeWluZyB0byByZXN0b3JlIGVsZW1lbnTigJlzIHN0YXRlIHRvIHN0YXRlIGluIHdoaWNoIGNhc2VcbiAgICAgKiAgcmVhc29uIGlzIOKAnHJlc3RvcmXigJ0sIG9yIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIGZ1bGZpbGwgYXV0b2ZpbGwgb24gYmVoYWxmIG9mXG4gICAgICogIHVzZXIgaW4gd2hpY2ggY2FzZSByZWFzb24gaXMg4oCcYXV0b2NvbXBsZXRl4oCdLlxuICAgICAqICBJbiB0aGUgY2FzZSBvZiDigJxyZXN0b3Jl4oCdLCBzdGF0ZSBpcyBhIHN0cmluZywgRmlsZSwgb3IgRm9ybURhdGEgb2JqZWN0XG4gICAgICogIHByZXZpb3VzbHkgc2V0IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gc2V0Rm9ybVZhbHVlLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICAgICk6IHZvaWQge1xuICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IHN0YXRlID09PSAndHJ1ZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkaXRpb25hbCBsb2dpYyB3aGljaCBpcyBiZWluZyBleGVjdXRlZCB3aGVuIHVzZXJcbiAgICAgKiBpbnRlcmFjdGlvbiBoYXBwZW5zIGFuZCBzdGF0ZSBpcyBub3QgZGlzYWJsZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHdpdGhVc2VySW50ZXJhY3Rpb24/KCk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlRm9ybVZhbHVlKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgICB0aGlzLmludGVybmFscy5zZXRGb3JtVmFsdWUodGhpcy52YWx1ZSwgYCR7dGhpcy5jaGVja2VkfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuc2V0Rm9ybVZhbHVlKG51bGwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIG9uIGtleWJvYXJkIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjaGVja2JveC4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVLZXlib2FyZEludGVyYWN0aW9uID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgdGhpcy5faGFuZGxlVXNlckludGVyYWN0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIG9uIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjaGVja2JveC4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVVc2VySW50ZXJhY3Rpb24gPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLndpdGhVc2VySW50ZXJhY3Rpb24/LigpO1xuICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZU11dGF0aW9uQmxvY2tlZCA9IHRydWU7XG5cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdkaWRDaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveEVsZW1lbnQgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iLCJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQsIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbi8vIERlZmluZSB0aGUgaW50ZXJmYWNlIGZvciB0aGUgbWl4aW5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYkh5ZHJhdGlvbk1peGluVHlwZSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGNvbXBsZXRlZCBoeWRyYXRpb24uXG4gICAqIFRoZSBQcm9taXNlIHZhbHVlIGlzIGEgYm9vbGVhbiB0aGF0IGlzIGB0cnVlYCBpZiB0aGUgZWxlbWVudCByZXF1aXJlZCBoeWRyYXRpb25cbiAgICogYW5kIGBmYWxzZWAgaWYgbm90LlxuICAgKlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSBvZiBhIGJvb2xlYW4gdGhhdCByZXNvbHZlcyB0byB0cnVlIG9uY2UgdGhlIGh5ZHJhdGlvbiBjb21wbGV0ZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGh5ZHJhdGlvbkNvbXBsZXRlKCk6IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgLyoqIFJldHVybnMgd2hldGhlciBoeWRyYXRpb24gaXMgcmVxdWlyZWQgYW5kIG5vdCBjb21wbGV0ZWQuICovXG4gIHByb3RlY3RlZCBnZXQgaHlkcmF0aW9uUmVxdWlyZWQoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGlzIG1peGluIGV4dGVuZHMgYSBiYXNlIGNsYXNzIHdpdGggZnVuY3Rpb25hbGl0eSB0byBjaGVjayBpZiBoeWRyYXRpb24gaXMgY29tcGxldGVkLlxuICogSXQgYWxzbyBkZWxheXMgc2xvdGNoYW5nZSBldmVudHMgdW50aWwgaHlkcmF0aW9uIGlzIGNvbXBsZXRlLlxuICpcbiAqIEBwYXJhbSBiYXNlIFRoZSBjbGFzcyB0byBleHRlbmQuXG4gKiBAcmV0dXJucyBBIGNsYXNzIGV4dGVuZGVkIHdpdGggdGhlIGh5ZHJhdGlvbiBjaGVjayBmdW5jdGlvbmFsaXR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiSHlkcmF0aW9uTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBiYXNlOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJIeWRyYXRpb25NaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkh5ZHJhdGlvbk1peGluQ2xhc3MgZXh0ZW5kcyBiYXNlIGltcGxlbWVudHMgUGFydGlhbDxTYmJIeWRyYXRpb25NaXhpblR5cGU+IHtcbiAgICBwcml2YXRlIF9oeWRyYXRpb25SZXF1aXJlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9oeWRyYXRpb25Db21wbGV0ZSA9IG5ldyBQcm9taXNlPGJvb2xlYW4+KFxuICAgICAgKHJlc29sdmUpID0+ICh0aGlzLl9yZXNvbHZlSHlkcmF0aW9uID0gcmVzb2x2ZSksXG4gICAgKTtcbiAgICBwcml2YXRlIF9yZXNvbHZlSHlkcmF0aW9uITogKGh5ZHJhdGlvblJlcXVpcmVkOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbGVtZW50IGhhcyBjb21wbGV0ZWQgaHlkcmF0aW9uLlxuICAgICAqIFRoZSBQcm9taXNlIHZhbHVlIGlzIGEgYm9vbGVhbiB0aGF0IGlzIGB0cnVlYCBpZiB0aGUgZWxlbWVudCByZXF1aXJlZCBoeWRyYXRpb25cbiAgICAgKiBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIEEgcHJvbWlzZSBvZiBhIGJvb2xlYW4gdGhhdCByZXNvbHZlcyB0byB0cnVlIG9uY2UgdGhlIGh5ZHJhdGlvbiBjb21wbGV0ZWQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBoeWRyYXRpb25Db21wbGV0ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25Db21wbGV0ZTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyB3aGV0aGVyIGh5ZHJhdGlvbiBpcyByZXF1aXJlZCBhbmQgbm90IGNvbXBsZXRlZC4gKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGh5ZHJhdGlvblJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgICAvLyBDaGVjayB3aGV0aGVyIGh5ZHJhdGlvbiBpcyBuZWVkZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgc2hhZG93IHJvb3RcbiAgICAgIC8vIGlzIGF2YWlsYWJsZSBkdXJpbmcgY29uc3RydWN0aW9uL3VwZ3JhZGUgcGhhc2UuXG4gICAgICB0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCA9ICEhdGhpcy5zaGFkb3dSb290O1xuICAgICAgaWYgKCF0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgICB0aGlzLl9yZXNvbHZlSHlkcmF0aW9uKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIER1cmluZyBoeWRyYXRpb24gcGhhc2UsIHdlIHdhbnQgdG8gc3VwcHJlc3Mgc2xvdGNoYW5nZSBldmVudHMgYXMgdGhleVxuICAgICAgICAvLyBjYW4gY2F1c2UgcmVuZGVyIGRpZmZlcmVuY2VzLCB3aGljaCB3b3VsZCBicmVhayBoeWRyYXRpb24uIEFmdGVyXG4gICAgICAgIC8vIGh5ZHJhdGlvbiBpcyBjb21wbGV0ZSwgd2UgZGlzcGF0Y2ggYSBtYW51YWwgc2xvdGNoYW5nZSBldmVudCwgaWYgdGhlcmVcbiAgICAgICAgLy8gYXJlIGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2xvdC5cbiAgICAgICAgY29uc3Qgc3VwcHJlc3NTbG90Y2hhbmdlRXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uczogRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IGNhcHR1cmU6IHRydWUgfTtcbiAgICAgICAgY29uc3Qgc2xvdHMgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3Nsb3QnKTtcbiAgICAgICAgaWYgKHNsb3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PlxuICAgICAgICAgICAgc2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgc3VwcHJlc3NTbG90Y2hhbmdlRXZlbnQsIGV2ZW50T3B0aW9ucyksXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHNsb3RzLmZvckVhY2goKHNsb3QpID0+IHtcbiAgICAgICAgICAgICAgc2xvdC5yZW1vdmVFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgc3VwcHJlc3NTbG90Y2hhbmdlRXZlbnQsIGV2ZW50T3B0aW9ucyk7XG4gICAgICAgICAgICAgIGlmIChzbG90LmFzc2lnbmVkTm9kZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzbG90LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdzbG90Y2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICAvLyBXaGVuIGh5ZHJhdGlvbiBpcyBuZWVkZWQsIHdlIHdhaXQgdGhlIGh5ZHJhdGlvbiBwcm9jZXNzIHRvIGZpbmlzaCwgd2hpY2ggaXMgcGF0Y2hlZFxuICAgICAgLy8gaW50byB0aGUgdXBkYXRlIG1ldGhvZCBvZiB0aGUgTGl0RWxlbWVudCBiYXNlIGNsYXNzLlxuICAgICAgc3VwZXIudXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3Jlc29sdmVIeWRyYXRpb24odHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJIeWRyYXRpb25NaXhpbkNsYXNzIGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJIeWRyYXRpb25NaXhpblR5cGU+ICYgVDtcbn07XG4iLCJpbXBvcnQgeyBodG1sLCB0eXBlIExpdEVsZW1lbnQsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3IuanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIHR5cGUgU2JiSHlkcmF0aW9uTWl4aW5UeXBlIH0gZnJvbSAnLi9oeWRyYXRpb24tbWl4aW4uanMnO1xuXG5pbXBvcnQgJy4uLy4uL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5cbmNvbnN0IFNTUl9DSElMRF9DT1VOVF9BVFRSSUJVVEUgPSAnZGF0YS1zc3ItY2hpbGQtY291bnQnO1xuY29uc3QgU0xPVE5BTUVfUFJFRklYID0gJ2xpJztcblxuZXhwb3J0IHR5cGUgU2JiTmFtZWRTbG90UHJvcGVydGllcyA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcmlhSGlkZGVuOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBIZWxwZXIgdHlwZSBmb3Igd2lsbFVwZGF0ZSBvciBzaW1pbGFyIGNoZWNrcy5cbiAqIEFsbG93cyB0aGUgdXNhZ2Ugb2YgdGhlIHN0cmluZyBsaXRlcmFsICdsaXN0Q2hpbGRyZW4nLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8V2l0aExpc3RDaGlsZHJlbjx0aGlzPj4pOiB2b2lkIHtcbiAqICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGlzdENoaWxkcmVuJykpIHtcbiAqICAgICAuLi5cbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgdHlwZSBXaXRoTGlzdENoaWxkcmVuPFxuICBUIGV4dGVuZHMgU2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxDPixcbiAgQyBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQsXG4+ID0gVCAmIHsgbGlzdENoaWxkcmVuOiBDW10gfTtcblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxcbiAgQyBleHRlbmRzIEhUTUxFbGVtZW50LFxuPiBleHRlbmRzIFNiYkh5ZHJhdGlvbk1peGluVHlwZSB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzOiBzdHJpbmdbXTtcbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGxpc3RDaGlsZHJlbjogQ1tdO1xuICBwcm90ZWN0ZWQgcmVuZGVyTGlzdChcbiAgICBhdHRyaWJ1dGVzPzoge1xuICAgICAgY2xhc3M/OiBzdHJpbmc7XG4gICAgICBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gICAgICBhcmlhTGFiZWxsZWRieT86IHN0cmluZztcbiAgICB9LFxuICAgIGxpc3RJdGVtQXR0cmlidXRlcz86IHtcbiAgICAgIGxvY2FsTmFtZVZpc3VhbE9ubHk/OiBzdHJpbmdbXTtcbiAgICB9LFxuICApOiBUZW1wbGF0ZVJlc3VsdDtcbiAgcHJvdGVjdGVkIGxpc3RTbG90RW50cmllcygpOiBTYmJOYW1lZFNsb3RQcm9wZXJ0aWVzW107XG4gIHByb3RlY3RlZCByZW5kZXJIaWRkZW5TbG90KCk6IFRlbXBsYXRlUmVzdWx0O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiTmFtZWRTbG90TGlzdE1peGluID0gPFxuICBDIGV4dGVuZHMgSFRNTEVsZW1lbnQsXG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+LFxuPihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxDPj4gJiBUID0+IHtcbiAgLyoqXG4gICAqIFRoaXMgYmFzZSBjbGFzcyBwcm92aWRlcyBuYW1lZCBzbG90IGxpc3Qgb2JzZXJ2ZXIgZnVuY3Rpb25hbGl0eS5cbiAgICogVGhpcyBhbGxvd3MgdXNpbmcgdGhlIHBhdHRlcm4gb2YgcmVuZGVyaW5nIGEgbmFtZWQgc2xvdCBmb3IgZWFjaCBjaGlsZCwgd2hpY2ggYWxsb3dzXG4gICAqIHdyYXBwaW5nIGNoaWxkcmVuIGluIGFuIHVsL2xpIGxpc3QuXG4gICAqL1xuICBhYnN0cmFjdCBjbGFzcyBOYW1lZFNsb3RMaXN0RWxlbWVudDxDIGV4dGVuZHMgSFRNTEVsZW1lbnQgPSBIVE1MRWxlbWVudD5cbiAgICBleHRlbmRzIFNiYkh5ZHJhdGlvbk1peGluKHN1cGVyQ2xhc3MpXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYk5hbWVkU2xvdExpc3RNaXhpblR5cGU8Qz4+XG4gIHtcbiAgICAvKiogQSBsaXN0IG9mIGxvd2VyLWNhc2VkIHRhZyBuYW1lcyB0byBtYXRjaCBhZ2FpbnN0LiAoZS5nLiBgc2JiLWxpbmtgKSAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEEgbGlzdCBvZiBjaGlsZHJlbiB3aXRoIHRoZSBkZWZpbmVkIHRhZyBuYW1lcy5cbiAgICAgKiBUaGlzIGFycmF5IGlzIG9ubHkgdXBkYXRlZCBpZiB0aGVyZSBpcyBhbiBhY3R1YWwgY2hhbmdlXG4gICAgICogdG8gdGhlIGNoaWxkIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIEBzdGF0ZSgpIHByb3RlY3RlZCBsaXN0Q2hpbGRyZW46IENbXSA9IFtdO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICAgIHRoaXMuc2hhZG93Um9vdD8uYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHRoaXMuX2hhbmRsZVNsb3RjaGFuZ2UsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5zaGFkb3dSb290Py5yZW1vdmVFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgdGhpcy5faGFuZGxlU2xvdGNoYW5nZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGxpc3RDaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbiA/PyBbXSkuZmlsdGVyKChlKTogZSBpcyBDID0+XG4gICAgICAgIHRoaXMubGlzdENoaWxkTG9jYWxOYW1lcy5pbmNsdWRlcyhlLmxvY2FsTmFtZSksXG4gICAgICApO1xuICAgICAgLy8gSWYgdGhlIHNsb3R0ZWQgY2hpbGQgaW5zdGFuY2VzIGhhdmUgbm90IGNoYW5nZWQsIHdlIGNhbiBza2lwIHN5bmNpbmcgYW5kIHVwZGF0aW5nXG4gICAgICAvLyB0aGUgbGluayByZWZlcmVuY2UgbGlzdC5cbiAgICAgIGlmIChcbiAgICAgICAgbGlzdENoaWxkcmVuLmxlbmd0aCA9PT0gdGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoICYmXG4gICAgICAgIHRoaXMubGlzdENoaWxkcmVuLmV2ZXJ5KChlLCBpKSA9PiBsaXN0Q2hpbGRyZW5baV0gPT09IGUpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxpc3RDaGlsZHJlblxuICAgICAgICAuZmlsdGVyKChjKSA9PiAhbGlzdENoaWxkcmVuLmluY2x1ZGVzKGMpKVxuICAgICAgICAuZm9yRWFjaCgoYykgPT4gYy5yZW1vdmVBdHRyaWJ1dGUoJ3Nsb3QnKSk7XG4gICAgICB0aGlzLmxpc3RDaGlsZHJlbiA9IGxpc3RDaGlsZHJlbjtcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuLmZvckVhY2goKGMsIGluZGV4KSA9PlxuICAgICAgICBjLnNldEF0dHJpYnV0ZSgnc2xvdCcsIGAke1NMT1ROQU1FX1BSRUZJWH0tJHtpbmRleH1gKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgc3NyIGF0dHJpYnV0ZSwgb25jZSB3ZSBoYXZlIGFjdHVhbGx5IGluaXRpYWxpemVkIHRoZSBjaGlsZHJlbiBlbGVtZW50cy5cbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKFNTUl9DSElMRF9DT1VOVF9BVFRSSUJVVEUpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIGxpc3QgYW5kIGxpc3Qgc2xvdHMgZm9yIHNsb3R0ZWQgY2hpbGRyZW4gb3IgYSBudW1iZXIgb2YgbGlzdCBzbG90c1xuICAgICAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGBkYXRhLXNzci1jaGlsZC1jb3VudGAgYXR0cmlidXRlIHZhbHVlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyBhIHBvc3NpYmxlIG9wdGltaXphdGlvbiBmb3IgU1NSLCBhcyBpbiBhbiBTU1IgTGl0IGVudmlyb25tZW50XG4gICAgICogb3RoZXIgZWxlbWVudHMgYXJlIG5vdCBhdmFpbGFibGUsIGJ1dCBtaWdodCBiZSBhdmFpbGFibGUgaW4gdGhlIG1ldGFcbiAgICAgKiBmcmFtZXdvcmsgd3JhcHBlciAobGlrZSBlLmcuIFJlYWN0KS4gVGhpcyBhbGxvd3MgdG8gcHJvdmlkZSB0aGUgbnVtYmVyIG9mXG4gICAgICogY2hpbGRyZW4gdG8gYmUgcGFzc2VkIHZpYSB0aGUgYGRhdGEtc3NyLWNoaWxkLWNvdW50YCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlbmRlckxpc3QoXG4gICAgICBhdHRyaWJ1dGVzOiB7IGNsYXNzPzogc3RyaW5nOyBhcmlhTGFiZWw/OiBzdHJpbmc7IGFyaWFMYWJlbGxlZGJ5Pzogc3RyaW5nIH0gPSB7fSxcbiAgICAgIGxpc3RJdGVtQXR0cmlidXRlczogeyBsb2NhbE5hbWVWaXN1YWxPbmx5Pzogc3RyaW5nW10gfSA9IHt9LFxuICAgICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIGNvbnN0IGxpc3RTbG90TmFtZXM6IFNiYk5hbWVkU2xvdFByb3BlcnRpZXNbXSA9IHRoaXMubGlzdFNsb3RFbnRyaWVzKGxpc3RJdGVtQXR0cmlidXRlcyk7XG5cbiAgICAgIGlmIChsaXN0U2xvdE5hbWVzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx1bFxuICAgICAgICAgICAgY2xhc3M9JHthdHRyaWJ1dGVzLmNsYXNzIHx8IHRoaXMubG9jYWxOYW1lfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD0ke2F0dHJpYnV0ZXMuYXJpYUxhYmVsIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9JHthdHRyaWJ1dGVzLmFyaWFMYWJlbGxlZGJ5IHx8IG5vdGhpbmd9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgJHtsaXN0U2xvdE5hbWVzLm1hcChcbiAgICAgICAgICAgICAgKHNsb3QpID0+IGh0bWxgXG4gICAgICAgICAgICAgICAgPGxpIGFyaWEtaGlkZGVuPSR7c2xvdC5hcmlhSGlkZGVuIHx8IG5vdGhpbmd9PlxuICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT0ke3Nsb3QubmFtZX0+PC9zbG90PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgJHt0aGlzLnJlbmRlckhpZGRlblNsb3QoKX1cbiAgICAgICAgYDtcbiAgICAgIH0gZWxzZSBpZiAobGlzdFNsb3ROYW1lcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGh0bWxgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHthdHRyaWJ1dGVzLmFyaWFMYWJlbH08L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9JHthdHRyaWJ1dGVzLmNsYXNzIHx8IHRoaXMubG9jYWxOYW1lfT5cbiAgICAgICAgICAgIDxzcGFuPjxzbG90IG5hbWU9JHtsaXN0U2xvdE5hbWVzWzBdLm5hbWV9Pjwvc2xvdD48L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICR7dGhpcy5yZW5kZXJIaWRkZW5TbG90KCl9IGA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJIaWRkZW5TbG90KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBTYmJOYW1lZFNsb3RQcm9wZXJ0aWVzLCB3aGljaCBob2xkcyB0aGUgbGlzdCBzbG90IG5hbWVzIGFuZCB0aGUgaGlkZGVuIHByb3BlcnR5O1xuICAgICAqIGl0cyBsZW5ndGggY29ycmVzcG9uZHMgdG8gdGhlIG51bWJlciBvZiBtYXRjaGVkIGNoaWxkcmVuIG9yIHRoZSBgZGF0YS1zc3ItY2hpbGQtY291bnRgIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwb3NzaWJsZSBvcHRpbWl6YXRpb24gZm9yIFNTUiwgYXMgaW4gYW4gU1NSIExpdCBlbnZpcm9ubWVudFxuICAgICAqIG90aGVyIGVsZW1lbnRzIGFyZSBub3QgYXZhaWxhYmxlLCBidXQgbWlnaHQgYmUgYXZhaWxhYmxlIGluIHRoZSBtZXRhXG4gICAgICogZnJhbWV3b3JrIHdyYXBwZXIgKGxpa2UgZS5nLiBSZWFjdCkuIFRoaXMgYWxsb3dzIHRvIHByb3ZpZGUgdGhlIG51bWJlciBvZlxuICAgICAqIGNoaWxkcmVuIHRvIGJlIHBhc3NlZCB2aWEgdGhlIGBkYXRhLXNzci1jaGlsZC1jb3VudGAgYXR0cmlidXRlIHZhbHVlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBsaXN0U2xvdEVudHJpZXMobGlzdEl0ZW1BdHRyaWJ1dGVzOiB7XG4gICAgICBsb2NhbE5hbWVWaXN1YWxPbmx5Pzogc3RyaW5nW107XG4gICAgfSk6IFNiYk5hbWVkU2xvdFByb3BlcnRpZXNbXSB7XG4gICAgICBjb25zdCBsaXN0Q2hpbGRyZW4gPSB0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmxpc3RDaGlsZHJlblxuICAgICAgICA6IEFycmF5LmZyb20oeyBsZW5ndGg6ICsodGhpcy5nZXRBdHRyaWJ1dGUoU1NSX0NISUxEX0NPVU5UX0FUVFJJQlVURSkgPz8gMCkgfSk7XG4gICAgICByZXR1cm4gbGlzdENoaWxkcmVuLm1hcCgoZSwgaSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IGAke1NMT1ROQU1FX1BSRUZJWH0tJHtpfWAsXG4gICAgICAgICAgYXJpYUhpZGRlbjpcbiAgICAgICAgICAgIGxpc3RJdGVtQXR0cmlidXRlcz8ubG9jYWxOYW1lVmlzdWFsT25seT8uaW5jbHVkZXMoKGUgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSkgPz9cbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGhpZGRlbiBzbG90LCB3aGljaCBpcyBpbnRlbmRlZCBhcyB0aGUgY2hpbGRyZW4gY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgKiBXaGVuIGFuIGVsZW1lbnQgd2l0aG91dCBhIHNsb3QgYXR0cmlidXRlIGlzIHNsb3R0ZWQgdG8gdGhlIGVsZW1lbnQsIGl0IHRyaWdnZXJzXG4gICAgICogdGhlIHNsb3RjaGFuZ2UgZXZlbnQsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFzc2lnbiBpdCB0byB0aGUgYXBwcm9wcmlhdGUgbmFtZWQgc2xvdC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVuZGVySGlkZGVuU2xvdCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGA8c3BhbiBoaWRkZW4+PHNsb3Q+PC9zbG90Pjwvc3Bhbj5gO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBOYW1lZFNsb3RMaXN0RWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxDPj4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYk5lZ2F0aXZlTWl4aW5UeXBlIHtcbiAgcHVibGljIG5lZ2F0aXZlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIG5lZ2F0aXZlIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiTmVnYXRpdmVNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk5lZ2F0aXZlTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJOZWdhdGl2ZUVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgU2JiTmVnYXRpdmVNaXhpblR5cGUge1xuICAgIC8qKiBOZWdhdGl2ZSBjb2xvcmluZyB2YXJpYW50IGZsYWcuICovXG4gICAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgbmVnYXRpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBTYmJOZWdhdGl2ZUVsZW1lbnQgYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJOZWdhdGl2ZU1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vZXZlbnRpbmcuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiUGFuZWxNaXhpblR5cGUge1xuICBwdWJsaWMgY29sb3I6ICd3aGl0ZScgfCAnbWlsayc7XG4gIHB1YmxpYyBib3JkZXJsZXNzOiBib29sZWFuO1xuICBwdWJsaWMgZXhwYW5zaW9uU3RhdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFNiYlBhbmVsU2l6ZSA9ICdzJyB8ICdtJztcblxuLyoqXG4gKiBNaXhpbiBmb3IgY29tbW9uIHBhbmVsIGJlaGF2aW9yc1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUGFuZWxNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlBhbmVsTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJQYW5lbEVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgU2JiUGFuZWxNaXhpblR5cGUge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgICAgcGFuZWxDb25uZWN0ZWQ6ICdwYW5lbENvbm5lY3RlZCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIC8qKiBUaGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgcGFuZWwuICovXG4gICAgQHByb3BlcnR5KCkgcHVibGljIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnID0gJ3doaXRlJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB1bnNlbGVjdGVkIHBhbmVsIGhhcyBhIGJvcmRlci4gKi9cbiAgICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBib3JkZXJsZXNzID0gZmFsc2U7XG5cbiAgICAvKiogQGludGVybmFsIHVzZWQgZm9yIGFjY2Vzc2liaWxpdHkgbGFiZWwgd2hlbiBpbiBleHBhbnNpb24gcGFuZWwgKi9cbiAgICBAcHJvcGVydHkoKSBwdWJsaWMgZXhwYW5zaW9uU3RhdGU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBJbnRlcm5hbCBldmVudCB0aGF0IGVtaXRzIHdoZW4gdGhlIGNoZWNrYm94IGlzIGxvYWRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9wYW5lbENvbm5lY3RlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICAgIHRoaXMsXG4gICAgICBTYmJQYW5lbEVsZW1lbnQuZXZlbnRzLnBhbmVsQ29ubmVjdGVkLFxuICAgICAgeyBidWJibGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAgIHRoaXMuX3BhbmVsQ29ubmVjdGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiUGFuZWxFbGVtZW50IGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiUGFuZWxNaXhpblR5cGU+ICYgVDtcbn07XG4iLCJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuLy8gRGVmaW5lIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBtaXhpblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW5UeXBlIHtcbiAgcHJvdGVjdGVkIHN0YXJ0VXBkYXRlKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBjb21wbGV0ZVVwZGF0ZSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIFRoaXMgbWl4aW4gYWxsb3dzIHNjaGVkdWxpbmcgbWFudWFsIHVwZGF0ZXMsIHdoaWNoIGFmZmVjdCB1cGRhdGVDb21wbGV0ZS5cbiAqIEBwYXJhbSBiYXNlIFRoZSBjbGFzcyB0byBleHRlbmQuXG4gKiBAcmV0dXJucyBBIGNsYXNzIGV4dGVuZGVkIHdpdGggdGhlIHNsb3QgY2hpbGQgb2JzZXJ2ZXIgZnVuY3Rpb25hbGl0eS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYlVwZGF0ZVNjaGVkdWxlck1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgYmFzZTogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiVXBkYXRlU2NoZWR1bGVyTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJVcGRhdGVTY2hlZHVsZXJFbGVtZW50XG4gICAgZXh0ZW5kcyBiYXNlXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYlVwZGF0ZVNjaGVkdWxlck1peGluVHlwZT5cbiAge1xuICAgIHByaXZhdGUgX3VwZGF0ZVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBwcml2YXRlIF91cGRhdGVSZXNvbHZlID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICBwcm90ZWN0ZWQgc3RhcnRVcGRhdGUoKTogdm9pZCB7XG4gICAgICB0aGlzLl91cGRhdGVQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHIpID0+ICh0aGlzLl91cGRhdGVSZXNvbHZlID0gcikpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21wbGV0ZVVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZ2V0VXBkYXRlQ29tcGxldGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzdXBlci5nZXRVcGRhdGVDb21wbGV0ZSgpO1xuICAgICAgYXdhaXQgdGhpcy5fdXBkYXRlUHJvbWlzZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJVcGRhdGVTY2hlZHVsZXJFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJVcGRhdGVTY2hlZHVsZXJNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiJdLCJuYW1lcyI6WyJfX2RlY29yYXRlQ2xhc3MiLCJzdGF0ZSJdLCJtYXBwaW5ncyI6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
|
|
743
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW5zLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZGlzYWJsZWQtbWl4aW4udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3JlcXVpcmVkLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL2Zvcm0tYXNzb2NpYXRlZC1jaGVja2JveC1taXhpbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL21peGlucy9oeWRyYXRpb24tbWl4aW4udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvbmFtZWQtc2xvdC1saXN0LW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL25lZ2F0aXZlLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3BhbmVsLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3VwZGF0ZS1zY2hlZHVsZXItbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50LCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkRpc2FibGVkTWl4aW5UeXBlIHtcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbik7XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGUge1xuICBwdWJsaWMgZGlzYWJsZWRJbnRlcmFjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFbmhhbmNlIHlvdXIgY29tcG9uZW50IHdpdGggYSBkaXNhYmxlZCBwcm9wZXJ0eS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkRpc2FibGVkTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRGlzYWJsZWRFbGVtZW50IGV4dGVuZHMgc3VwZXJDbGFzcyBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiRGlzYWJsZWRNaXhpblR5cGU+IHtcbiAgICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLiAqL1xuICAgIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAvLyBUbyBwcm92aWRlIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSBuYXRpdmUgZGlzYWJsZWQgc3RhdGUsXG4gICAgICAvLyBhbnkgdmFsdWUgaXMgY29udmVydGVkIHRvIGEgYm9vbGVhbi5cbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gQm9vbGVhbih2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgdGhpcy5pc0Rpc2FibGVkRXh0ZXJuYWxseSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2lsbCBiZSB1c2VkIGFzICdvcicgY2hlY2sgdG8gdGhlIGN1cnJlbnQgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQ2FuIGUuZy4gYmUgdXNlZCB0byByZWFkIGRpc2FibGVkIHN0YXRlIG9mIGEgZ3JvdXAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTYmJEaXNhYmxlZEVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkRpc2FibGVkTWl4aW5UeXBlPiAmIFQ7XG59O1xuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIGRpc2FibGVkIGludGVyYWN0aXZlIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluID0gPFxuICBUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50ICYgU2JiRGlzYWJsZWRNaXhpblR5cGU+LFxuPihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZUVsZW1lbnRcbiAgICBleHRlbmRzIHN1cGVyQ2xhc3NcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZT5cbiAge1xuICAgIC8qKiBXaGV0aGVyIGRpc2FibGVkIGJ1dHRvbnMgc2hvdWxkIGJlIGludGVyYWN0aXZlLiAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGVkLWludGVyYWN0aXZlJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgZGlzYWJsZWRJbnRlcmFjdGl2ZSA9XG4gICAgICBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBTYmJEaXNhYmxlZEludGVyYWN0aXZlRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZT4gJlxuICAgIFQ7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRGlzYWJsZWRUYWJJbmRleEFjdGlvbk1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGUgJiBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJEaXNhYmxlZFRhYkluZGV4QWN0aW9uXG4gICAgZXh0ZW5kcyBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW4oU2JiRGlzYWJsZWRNaXhpbihzdXBlckNsYXNzKSlcbiAgICBpbXBsZW1lbnRzIFNiYkRpc2FibGVkTWl4aW5UeXBlLCBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlXG4gIHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSAmJiAhY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZEludGVyYWN0aXZlJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEludGVyYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkRpc2FibGVkVGFiSW5kZXhBY3Rpb24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxcbiAgICBTYmJEaXNhYmxlZE1peGluVHlwZSAmIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGVcbiAgPiAmXG4gICAgVDtcbn07XG5cbi8qKlxuICogRXh0ZW5kcyBgU2JiRGlzYWJsZWRNaXhpbmAgd2l0aCB0aGUgYGFyaWEtZGlzYWJsZWRgIGF0dHJpYnV0ZS5cbiAqIEZvciBhMTF5IHB1cnBvc2VzLCBrZWVwcyB0aGUgZWxlbWVudCBmb2N1c2FibGUgZXZlbiB3aGVuIGRpc2FibGVkLlxuICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIHdpdGggbmV4dCBtYWpvciB2ZXJzaW9uXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJGb2N1c2FibGVEaXNhYmxlZEFjdGlvbk1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkZvY3VzYWJsZURpc2FibGVkQWN0aW9uXG4gICAgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKHN1cGVyQ2xhc3MpXG4gICAgaW1wbGVtZW50cyBTYmJEaXNhYmxlZE1peGluVHlwZVxuICB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gU2JiRm9jdXNhYmxlRGlzYWJsZWRBY3Rpb24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGUge1xuICBwdWJsaWMgZ2V0IGZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbDtcbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZztcbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpO1xuICBwdWJsaWMgZ2V0IHR5cGUoKTogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpO1xuXG4gIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZTtcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGZvcm1EaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscztcblxuICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuO1xuICBwdWJsaWMgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgZm9ybUFzc29jaWF0ZWRDYWxsYmFjaz8oZm9ybTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtRGlzYWJsZWRDYWxsYmFjayhkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgRm9ybUFzc29jaWF0ZWRNaXhpbiBlbmFibGVzIG5hdGl2ZSBmb3JtIHN1cHBvcnQgZm9yIGN1c3RvbSBjb250cm9scy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4gPSA8VCBleHRlbmRzIENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZEVsZW1lbnRcbiAgICBleHRlbmRzIHN1cGVyQ2xhc3NcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIGZvcm1Bc3NvY2lhdGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGZvcm0gb3duZXIgb2YgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZm9ybSgpOiBIVE1MRm9ybUVsZW1lbnQgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5mb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZvcm0gZWxlbWVudC4gV2lsbCBiZSByZWFkIGZyb20gbmFtZSBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV2ZWxvcGVyIG5vdGU6IEluIHRoaXMgY2FzZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlIG11c3QgYmUgc3luY2hyb25vdXMuXG4gICAgICogRHVlIHRvIHRoaXMgaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBnZXR0ZXIvc2V0dGVyIGFuZCB0aGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgaGFuZGxlcyB0aGUgZGlmZiBjaGVjay5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoKVxuICAgIHB1YmxpYyBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCduYW1lJywgYCR7bmFtZX1gKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ25hbWUnKSA/PyAnJztcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbE5hbWU7XG4gICAgfVxuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBmb3JtIGVsZW1lbnQuICovXG4gICAgQHByb3BlcnR5KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgVmFsaWRpdHlTdGF0ZSBvYmplY3QgZm9yIGludGVybmFscyB0YXJnZXQgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbHMudmFsaWRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSB0aGF0IHdvdWxkIGJlIHNob3duIHRvIHRoZSB1c2VyXG4gICAgICogaWYgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50IHdhcyB0byBiZSBjaGVja2VkIGZvciB2YWxpZGl0eS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRhdGlvbk1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50IHdpbGwgYmUgdmFsaWRhdGVkXG4gICAgICogd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQ7IGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLndpbGxWYWxpZGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscyA9IHRoaXMuYXR0YWNoSW50ZXJuYWxzKCk7XG5cbiAgICAvKiogV2hlbmV2ZXIgYSBzdXJyb3VuZGluZyBmb3JtIG9yIGZpZWxkc2V0IGlzIGNoYW5naW5nIGl0cyBkaXNhYmxlZCBzdGF0ZS4gKi9cbiAgICBAc3RhdGUoKSBwcm90ZWN0ZWQgZm9ybURpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bGwsXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAobmFtZSAhPT0gJ25hbWUnIHx8IG9sZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiBpbnRlcm5hbHMgdGFyZ2V0IGVsZW1lbnQgaGFzIG5vIHZhbGlkaXR5IHByb2JsZW1zOyBmYWxzZSBvdGhlcndpc2UuXG4gICAgICogRmlyZXMgYW4gaW52YWxpZCBldmVudCBhdCB0aGUgZWxlbWVudCBpbiB0aGUgbGF0dGVyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5jaGVja1ZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIGludGVybmFscyB0YXJnZXQgZWxlbWVudCBoYXMgbm8gdmFsaWRpdHkgcHJvYmxlbXM7IG90aGVyd2lzZSxcbiAgICAgKiByZXR1cm5zIGZhbHNlLCBmaXJlcyBhbiBpbnZhbGlkIGV2ZW50IGF0IHRoZSBlbGVtZW50LFxuICAgICAqIGFuZCAoaWYgdGhlIGV2ZW50IGlzbid0IGNhbmNlbGVkKSByZXBvcnRzIHRoZSBwcm9ibGVtIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHJlcG9ydFZhbGlkaXR5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgZm9ybSBlbGVtZW50IGNoYW5nZXMuXG4gICAgICogRWxlbWVudEludGVybmFscy5mb3JtIHJldHVybnMgdGhlIGFzc29jaWF0ZWQgZnJvbSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2s/KGZvcm06IEhUTUxGb3JtRWxlbWVudCB8IG51bGwpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIGEgc3Vycm91bmRpbmcgZm9ybSAvIGZpZWxkc2V0IGNoYW5nZXMgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQHBhcmFtIGRpc2FibGVkXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybURpc2FibGVkQ2FsbGJhY2soZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGlmIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eSBjaGFuZ2VzIG9yIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb2YgYSBmaWVsZHNldCBvciBmb3JtIGNoYW5nZXMuXG4gICAgICAvLyBXZSBuZWVkIHRvIHBvc3Rwb25lIHRoZSBhc3NpZ25tZW50LCBvdGhlcndpc2UgaXQgaW50ZXJmZXJlcyB3aXRoIGRpc2FibGVkIHN0YXR1cyBzZXR0aW5nXG4gICAgICAvLyBhbmQgbGVhZHMgdG8gYSB3cm9uZyBzdGF0ZSAoZS5nLiBlbWJlZGRlZCBzYmItdmlzdWFsLWNoZWNrYm94KS5cbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiAgQ2FsbGVkIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIHJlc3RvcmUgZWxlbWVudOKAmXMgc3RhdGUgdG8gc3RhdGUgaW4gd2hpY2ggY2FzZVxuICAgICAqICByZWFzb24gaXMg4oCccmVzdG9yZeKAnSwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyDigJxhdXRvY29tcGxldGXigJ0uXG4gICAgICogIEluIHRoZSBjYXNlIG9mIOKAnHJlc3RvcmXigJ0sIHN0YXRlIGlzIGEgc3RyaW5nLCBGaWxlLCBvciBGb3JtRGF0YSBvYmplY3RcbiAgICAgKiAgcHJldmlvdXNseSBzZXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzZXRGb3JtVmFsdWUuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgICAgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkO1xuXG4gICAgLyoqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBmb3JtIHZhbHVlIGlzIGNoYW5nZWQuICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPiAmIFQ7XG59O1xuXG4vKipcbiAqIEEgdmFsdWUgdG8gYmUgcmVzdG9yZWQgZm9yIGEgY29tcG9uZW50J3MgZm9ybSB2YWx1ZS4gSWYgYSBjb21wb25lbnQncyBmb3JtXG4gKiBzdGF0ZSBpcyBhIGBGb3JtRGF0YWAgb2JqZWN0LCBpdHMgZW50cnkgbGlzdCBvZiBuYW1lIGFuZCB2YWx1ZXMgd2lsbCBiZVxuICogcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1SZXN0b3JlU3RhdGUgPSBGaWxlIHwgc3RyaW5nIHwgW3N0cmluZywgRm9ybURhdGFFbnRyeVZhbHVlXVtdO1xuXG4vKipcbiAqIFRoZSByZWFzb24gYSBmb3JtIGNvbXBvbmVudCBpcyBiZWluZyByZXN0b3JlZCBmb3IsIGVpdGhlciBgJ3Jlc3RvcmUnYCBmb3JcbiAqIGJyb3dzZXIgcmVzdG9yYXRpb24gb3IgYCdhdXRvY29tcGxldGUnYCBmb3IgcmVzdG9yaW5nIHVzZXIgdmFsdWVzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbiA9ICdyZXN0b3JlJyB8ICdhdXRvY29tcGxldGUnO1xuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50LCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlIH0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJSZXF1aXJlZE1peGluVHlwZSB7XG4gIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pO1xuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIHJlcXVpcmVkIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUmVxdWlyZWRNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudCAmIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlJlcXVpcmVkTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJSZXF1aXJlZEVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT4ge1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgcmVxdWlyZWQuICovXG4gICAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgIC8vIFRvIHByb3ZpZGUgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIG5hdGl2ZSByZXF1aXJlZCBzdGF0ZSxcbiAgICAgIC8vIGFueSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYSBib29sZWFuLlxuICAgICAgdGhpcy5fcmVxdWlyZWQgPSBCb29sZWFuKHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCB8fCB0aGlzLmlzUmVxdWlyZWRFeHRlcm5hbGx5KCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgZXhwbGljaXRseSBzZXQgYXJpYS1yZXF1aXJlZCB2YWx1ZS5cbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYVJlcXVpcmVkID0gYCR7dGhpcy5yZXF1aXJlZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdpbGwgYmUgdXNlZCBhcyAnb3InIGNoZWNrIHRvIHRoZSBjdXJyZW50IHJlcXVpcmVkIHN0YXRlLlxuICAgICAqIENhbiBlLmcuIGJlIHVzZWQgdG8gcmVhZCByZXF1aXJlZCBzdGF0ZSBvZiBhIGdyb3VwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiUmVxdWlyZWRFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJSZXF1aXJlZE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB7IGRlZmF1bHRDb252ZXJ0ZXIsIHR5cGUgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4sIHR5cGUgU2JiRGlzYWJsZWRNaXhpblR5cGUgfSBmcm9tICcuL2Rpc2FibGVkLW1peGluLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgdHlwZSBTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZSxcbn0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVxdWlyZWRNaXhpbiwgdHlwZSBTYmJSZXF1aXJlZE1peGluVHlwZSB9IGZyb20gJy4vcmVxdWlyZWQtbWl4aW4uanMnO1xuXG50eXBlIENoZWNrZWRTZXR0ZXJWYWx1ZSA9IHsgdmFsdWU6IGJvb2xlYW47IGF0dHJpYnV0ZTogYm9vbGVhbiB9O1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlXG4gIGV4dGVuZHMgU2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGVcbiAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiwgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT5cbntcbiAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW47XG4gIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbik7XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbik7XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKTtcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuO1xuXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCwgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbik6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgd2l0aFVzZXJJbnRlcmFjdGlvbj8oKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgY2hlY2tib3ggY29udHJvbHMuXG4gKlxuICogSW5oZXJpdGVkIGNsYXNzZXMgTVVTVCBpbXBsZW1lbnQgdGhlIGFyaWFDaGVja2VkIHN0YXRlIChFbGVtZW50SW50ZXJuYWxzKSB0aGVtc2VsdmVzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluID0gPFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBAaG9zdEF0dHJpYnV0ZXMoe1xuICAgIHRhYmluZGV4OiAnMCcsXG4gIH0pXG4gIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hFbGVtZW50XG4gICAgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFNiYlJlcXVpcmVkTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihzdXBlckNsYXNzKSkpXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGU+XG4gIHtcbiAgICBwcml2YXRlIF9hdHRyaWJ1dGVNdXRhdGlvbkJsb2NrZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLiAqL1xuICAgIEBwcm9wZXJ0eSh7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgY29udmVydGVyOiB7XG4gICAgICAgIC4uLmRlZmF1bHRDb252ZXJ0ZXIsXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUgc2V0dGVyIHNvIHRoYXQgd2Uga25vdyBpdCB3YXMgY2FsbGVkIGJ5IGF0dHJpYnV0ZSBjaGFuZ2UuXG4gICAgICAgIGZyb21BdHRyaWJ1dGU6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgdHlwZT86IHVua25vd24pOiBDaGVja2VkU2V0dGVyVmFsdWUgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRDb252ZXJ0ZXIuZnJvbUF0dHJpYnV0ZT8uKHZhbHVlLCB0eXBlKTtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBhdHRyaWJ1dGU6IHRydWUgfSBhcyBDaGVja2VkU2V0dGVyVmFsdWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gICAgcHVibGljIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVTZXR0ZXIgPVxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gKHZhbHVlIGFzIHVua25vd24gYXMgQ2hlY2tlZFNldHRlclZhbHVlKS5hdHRyaWJ1dGUgOiBmYWxzZTtcbiAgICAgIGlmIChhdHRyaWJ1dGVTZXR0ZXIpIHtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgYXMgdW5rbm93biBhcyBDaGVja2VkU2V0dGVyVmFsdWUpLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBcyBzb29uIGFzIG11dGF0aW9uIHdhcyBkb25lIG5vdCBieSBzZXR0aW5nIGF0dHJpYnV0ZSxcbiAgICAgIC8vIHdlIG5lZWQgdG8gYmxvY2sgc3luY2luZyBhdHRyaWJ1dGUuXG4gICAgICBpZiAodGhpcy5oYXNVcGRhdGVkICYmICFhdHRyaWJ1dGVTZXR0ZXIpIHtcbiAgICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NoZWNrZWQgPSBCb29sZWFuKHZhbHVlKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGVja2VkID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgdGhpcy5pbnRlcm5hbHMucm9sZSA9ICdjaGVja2JveCc7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2hhbmRsZVVzZXJJbnRlcmFjdGlvbik7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcmV2ZW50U2Nyb2xsT25TcGFjZWJhclByZXNzKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9oYW5kbGVLZXlib2FyZEludGVyYWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlVXNlckludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MpO1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuX2hhbmRsZUtleWJvYXJkSW50ZXJhY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICBvbGQ6IHN0cmluZyB8IG51bGwsXG4gICAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgIC8vIEF0dHJpYnV0ZSBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFmdGVyIHByb2dyYW1tYXRpYyBvciBtYW51YWwgc3RhdGUgY2hhbmdlLlxuICAgICAgaWYgKG5hbWUgIT09ICdjaGVja2VkJyB8fCAhdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkKSB7XG4gICAgICAgIHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGQsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGZvcm0gaXMgYmVpbmcgcmVzZXQuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLmhhc0F0dHJpYnV0ZSgnY2hlY2tlZCcpO1xuICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENhbGxlZCB3aGVuIHRoZSBicm93c2VyIGlzIHRyeWluZyB0byByZXN0b3JlIGVsZW1lbnTigJlzIHN0YXRlIHRvIHN0YXRlIGluIHdoaWNoIGNhc2VcbiAgICAgKiAgcmVhc29uIGlzIOKAnHJlc3RvcmXigJ0sIG9yIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIGZ1bGZpbGwgYXV0b2ZpbGwgb24gYmVoYWxmIG9mXG4gICAgICogIHVzZXIgaW4gd2hpY2ggY2FzZSByZWFzb24gaXMg4oCcYXV0b2NvbXBsZXRl4oCdLlxuICAgICAqICBJbiB0aGUgY2FzZSBvZiDigJxyZXN0b3Jl4oCdLCBzdGF0ZSBpcyBhIHN0cmluZywgRmlsZSwgb3IgRm9ybURhdGEgb2JqZWN0XG4gICAgICogIHByZXZpb3VzbHkgc2V0IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gc2V0Rm9ybVZhbHVlLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICAgICk6IHZvaWQge1xuICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IHN0YXRlID09PSAndHJ1ZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkaXRpb25hbCBsb2dpYyB3aGljaCBpcyBiZWluZyBleGVjdXRlZCB3aGVuIHVzZXJcbiAgICAgKiBpbnRlcmFjdGlvbiBoYXBwZW5zIGFuZCBzdGF0ZSBpcyBub3QgZGlzYWJsZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHdpdGhVc2VySW50ZXJhY3Rpb24/KCk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlRm9ybVZhbHVlKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgICB0aGlzLmludGVybmFscy5zZXRGb3JtVmFsdWUodGhpcy52YWx1ZSwgYCR7dGhpcy5jaGVja2VkfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuc2V0Rm9ybVZhbHVlKG51bGwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIG9uIGtleWJvYXJkIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjaGVja2JveC4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVLZXlib2FyZEludGVyYWN0aW9uID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgdGhpcy5faGFuZGxlVXNlckludGVyYWN0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIG9uIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjaGVja2JveC4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVVc2VySW50ZXJhY3Rpb24gPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLndpdGhVc2VySW50ZXJhY3Rpb24/LigpO1xuICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZU11dGF0aW9uQmxvY2tlZCA9IHRydWU7XG5cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGNvbXBvc2VkOiB0cnVlLCBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdkaWRDaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveEVsZW1lbnQgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iLCJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQsIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbi8vIERlZmluZSB0aGUgaW50ZXJmYWNlIGZvciB0aGUgbWl4aW5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYkh5ZHJhdGlvbk1peGluVHlwZSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGNvbXBsZXRlZCBoeWRyYXRpb24uXG4gICAqIFRoZSBQcm9taXNlIHZhbHVlIGlzIGEgYm9vbGVhbiB0aGF0IGlzIGB0cnVlYCBpZiB0aGUgZWxlbWVudCByZXF1aXJlZCBoeWRyYXRpb25cbiAgICogYW5kIGBmYWxzZWAgaWYgbm90LlxuICAgKlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSBvZiBhIGJvb2xlYW4gdGhhdCByZXNvbHZlcyB0byB0cnVlIG9uY2UgdGhlIGh5ZHJhdGlvbiBjb21wbGV0ZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGh5ZHJhdGlvbkNvbXBsZXRlKCk6IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgLyoqIFJldHVybnMgd2hldGhlciBoeWRyYXRpb24gaXMgcmVxdWlyZWQgYW5kIG5vdCBjb21wbGV0ZWQuICovXG4gIHByb3RlY3RlZCBnZXQgaHlkcmF0aW9uUmVxdWlyZWQoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGlzIG1peGluIGV4dGVuZHMgYSBiYXNlIGNsYXNzIHdpdGggZnVuY3Rpb25hbGl0eSB0byBjaGVjayBpZiBoeWRyYXRpb24gaXMgY29tcGxldGVkLlxuICogSXQgYWxzbyBkZWxheXMgc2xvdGNoYW5nZSBldmVudHMgdW50aWwgaHlkcmF0aW9uIGlzIGNvbXBsZXRlLlxuICpcbiAqIEBwYXJhbSBiYXNlIFRoZSBjbGFzcyB0byBleHRlbmQuXG4gKiBAcmV0dXJucyBBIGNsYXNzIGV4dGVuZGVkIHdpdGggdGhlIGh5ZHJhdGlvbiBjaGVjayBmdW5jdGlvbmFsaXR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiSHlkcmF0aW9uTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBiYXNlOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJIeWRyYXRpb25NaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkh5ZHJhdGlvbk1peGluQ2xhc3MgZXh0ZW5kcyBiYXNlIGltcGxlbWVudHMgUGFydGlhbDxTYmJIeWRyYXRpb25NaXhpblR5cGU+IHtcbiAgICBwcml2YXRlIF9oeWRyYXRpb25SZXF1aXJlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9oeWRyYXRpb25Db21wbGV0ZSA9IG5ldyBQcm9taXNlPGJvb2xlYW4+KFxuICAgICAgKHJlc29sdmUpID0+ICh0aGlzLl9yZXNvbHZlSHlkcmF0aW9uID0gcmVzb2x2ZSksXG4gICAgKTtcbiAgICBwcml2YXRlIF9yZXNvbHZlSHlkcmF0aW9uITogKGh5ZHJhdGlvblJlcXVpcmVkOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbGVtZW50IGhhcyBjb21wbGV0ZWQgaHlkcmF0aW9uLlxuICAgICAqIFRoZSBQcm9taXNlIHZhbHVlIGlzIGEgYm9vbGVhbiB0aGF0IGlzIGB0cnVlYCBpZiB0aGUgZWxlbWVudCByZXF1aXJlZCBoeWRyYXRpb25cbiAgICAgKiBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIEEgcHJvbWlzZSBvZiBhIGJvb2xlYW4gdGhhdCByZXNvbHZlcyB0byB0cnVlIG9uY2UgdGhlIGh5ZHJhdGlvbiBjb21wbGV0ZWQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBoeWRyYXRpb25Db21wbGV0ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25Db21wbGV0ZTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyB3aGV0aGVyIGh5ZHJhdGlvbiBpcyByZXF1aXJlZCBhbmQgbm90IGNvbXBsZXRlZC4gKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGh5ZHJhdGlvblJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgICAvLyBDaGVjayB3aGV0aGVyIGh5ZHJhdGlvbiBpcyBuZWVkZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgc2hhZG93IHJvb3RcbiAgICAgIC8vIGlzIGF2YWlsYWJsZSBkdXJpbmcgY29uc3RydWN0aW9uL3VwZ3JhZGUgcGhhc2UuXG4gICAgICB0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCA9ICEhdGhpcy5zaGFkb3dSb290O1xuICAgICAgaWYgKCF0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgICB0aGlzLl9yZXNvbHZlSHlkcmF0aW9uKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIER1cmluZyBoeWRyYXRpb24gcGhhc2UsIHdlIHdhbnQgdG8gc3VwcHJlc3Mgc2xvdGNoYW5nZSBldmVudHMgYXMgdGhleVxuICAgICAgICAvLyBjYW4gY2F1c2UgcmVuZGVyIGRpZmZlcmVuY2VzLCB3aGljaCB3b3VsZCBicmVhayBoeWRyYXRpb24uIEFmdGVyXG4gICAgICAgIC8vIGh5ZHJhdGlvbiBpcyBjb21wbGV0ZSwgd2UgZGlzcGF0Y2ggYSBtYW51YWwgc2xvdGNoYW5nZSBldmVudCwgaWYgdGhlcmVcbiAgICAgICAgLy8gYXJlIGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2xvdC5cbiAgICAgICAgY29uc3Qgc3VwcHJlc3NTbG90Y2hhbmdlRXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uczogRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IGNhcHR1cmU6IHRydWUgfTtcbiAgICAgICAgY29uc3Qgc2xvdHMgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3Nsb3QnKTtcbiAgICAgICAgaWYgKHNsb3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PlxuICAgICAgICAgICAgc2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgc3VwcHJlc3NTbG90Y2hhbmdlRXZlbnQsIGV2ZW50T3B0aW9ucyksXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHNsb3RzLmZvckVhY2goKHNsb3QpID0+IHtcbiAgICAgICAgICAgICAgc2xvdC5yZW1vdmVFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgc3VwcHJlc3NTbG90Y2hhbmdlRXZlbnQsIGV2ZW50T3B0aW9ucyk7XG4gICAgICAgICAgICAgIGlmIChzbG90LmFzc2lnbmVkTm9kZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzbG90LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdzbG90Y2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICAvLyBXaGVuIGh5ZHJhdGlvbiBpcyBuZWVkZWQsIHdlIHdhaXQgdGhlIGh5ZHJhdGlvbiBwcm9jZXNzIHRvIGZpbmlzaCwgd2hpY2ggaXMgcGF0Y2hlZFxuICAgICAgLy8gaW50byB0aGUgdXBkYXRlIG1ldGhvZCBvZiB0aGUgTGl0RWxlbWVudCBiYXNlIGNsYXNzLlxuICAgICAgc3VwZXIudXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3Jlc29sdmVIeWRyYXRpb24odHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJIeWRyYXRpb25NaXhpbkNsYXNzIGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJIeWRyYXRpb25NaXhpblR5cGU+ICYgVDtcbn07XG4iLCJpbXBvcnQgeyBodG1sLCB0eXBlIExpdEVsZW1lbnQsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3IuanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIHR5cGUgU2JiSHlkcmF0aW9uTWl4aW5UeXBlIH0gZnJvbSAnLi9oeWRyYXRpb24tbWl4aW4uanMnO1xuXG5pbXBvcnQgJy4uLy4uL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5cbmNvbnN0IFNTUl9DSElMRF9DT1VOVF9BVFRSSUJVVEUgPSAnZGF0YS1zc3ItY2hpbGQtY291bnQnO1xuY29uc3QgU0xPVE5BTUVfUFJFRklYID0gJ2xpJztcblxuZXhwb3J0IHR5cGUgU2JiTmFtZWRTbG90UHJvcGVydGllcyA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcmlhSGlkZGVuOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBIZWxwZXIgdHlwZSBmb3Igd2lsbFVwZGF0ZSBvciBzaW1pbGFyIGNoZWNrcy5cbiAqIEFsbG93cyB0aGUgdXNhZ2Ugb2YgdGhlIHN0cmluZyBsaXRlcmFsICdsaXN0Q2hpbGRyZW4nLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8V2l0aExpc3RDaGlsZHJlbjx0aGlzPj4pOiB2b2lkIHtcbiAqICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGlzdENoaWxkcmVuJykpIHtcbiAqICAgICAuLi5cbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgdHlwZSBXaXRoTGlzdENoaWxkcmVuPFxuICBUIGV4dGVuZHMgU2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxDPixcbiAgQyBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQsXG4+ID0gVCAmIHsgbGlzdENoaWxkcmVuOiBDW10gfTtcblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxcbiAgQyBleHRlbmRzIEhUTUxFbGVtZW50LFxuPiBleHRlbmRzIFNiYkh5ZHJhdGlvbk1peGluVHlwZSB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzOiBzdHJpbmdbXTtcbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGxpc3RDaGlsZHJlbjogQ1tdO1xuICBwcm90ZWN0ZWQgcmVuZGVyTGlzdChcbiAgICBhdHRyaWJ1dGVzPzoge1xuICAgICAgY2xhc3M/OiBzdHJpbmc7XG4gICAgICBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gICAgICBhcmlhTGFiZWxsZWRieT86IHN0cmluZztcbiAgICB9LFxuICAgIGxpc3RJdGVtQXR0cmlidXRlcz86IHtcbiAgICAgIGxvY2FsTmFtZVZpc3VhbE9ubHk/OiBzdHJpbmdbXTtcbiAgICB9LFxuICApOiBUZW1wbGF0ZVJlc3VsdDtcbiAgcHJvdGVjdGVkIGxpc3RTbG90RW50cmllcygpOiBTYmJOYW1lZFNsb3RQcm9wZXJ0aWVzW107XG4gIHByb3RlY3RlZCByZW5kZXJIaWRkZW5TbG90KCk6IFRlbXBsYXRlUmVzdWx0O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiTmFtZWRTbG90TGlzdE1peGluID0gPFxuICBDIGV4dGVuZHMgSFRNTEVsZW1lbnQsXG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+LFxuPihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxDPj4gJiBUID0+IHtcbiAgLyoqXG4gICAqIFRoaXMgYmFzZSBjbGFzcyBwcm92aWRlcyBuYW1lZCBzbG90IGxpc3Qgb2JzZXJ2ZXIgZnVuY3Rpb25hbGl0eS5cbiAgICogVGhpcyBhbGxvd3MgdXNpbmcgdGhlIHBhdHRlcm4gb2YgcmVuZGVyaW5nIGEgbmFtZWQgc2xvdCBmb3IgZWFjaCBjaGlsZCwgd2hpY2ggYWxsb3dzXG4gICAqIHdyYXBwaW5nIGNoaWxkcmVuIGluIGFuIHVsL2xpIGxpc3QuXG4gICAqL1xuICBhYnN0cmFjdCBjbGFzcyBOYW1lZFNsb3RMaXN0RWxlbWVudDxDIGV4dGVuZHMgSFRNTEVsZW1lbnQgPSBIVE1MRWxlbWVudD5cbiAgICBleHRlbmRzIFNiYkh5ZHJhdGlvbk1peGluKHN1cGVyQ2xhc3MpXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYk5hbWVkU2xvdExpc3RNaXhpblR5cGU8Qz4+XG4gIHtcbiAgICAvKiogQSBsaXN0IG9mIGxvd2VyLWNhc2VkIHRhZyBuYW1lcyB0byBtYXRjaCBhZ2FpbnN0LiAoZS5nLiBgc2JiLWxpbmtgKSAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEEgbGlzdCBvZiBjaGlsZHJlbiB3aXRoIHRoZSBkZWZpbmVkIHRhZyBuYW1lcy5cbiAgICAgKiBUaGlzIGFycmF5IGlzIG9ubHkgdXBkYXRlZCBpZiB0aGVyZSBpcyBhbiBhY3R1YWwgY2hhbmdlXG4gICAgICogdG8gdGhlIGNoaWxkIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIEBzdGF0ZSgpIHByb3RlY3RlZCBsaXN0Q2hpbGRyZW46IENbXSA9IFtdO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICAgIHRoaXMuc2hhZG93Um9vdD8uYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHRoaXMuX2hhbmRsZVNsb3RjaGFuZ2UsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5zaGFkb3dSb290Py5yZW1vdmVFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgdGhpcy5faGFuZGxlU2xvdGNoYW5nZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGxpc3RDaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbiA/PyBbXSkuZmlsdGVyKChlKTogZSBpcyBDID0+XG4gICAgICAgIHRoaXMubGlzdENoaWxkTG9jYWxOYW1lcy5pbmNsdWRlcyhlLmxvY2FsTmFtZSksXG4gICAgICApO1xuICAgICAgLy8gSWYgdGhlIHNsb3R0ZWQgY2hpbGQgaW5zdGFuY2VzIGhhdmUgbm90IGNoYW5nZWQsIHdlIGNhbiBza2lwIHN5bmNpbmcgYW5kIHVwZGF0aW5nXG4gICAgICAvLyB0aGUgbGluayByZWZlcmVuY2UgbGlzdC5cbiAgICAgIGlmIChcbiAgICAgICAgbGlzdENoaWxkcmVuLmxlbmd0aCA9PT0gdGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoICYmXG4gICAgICAgIHRoaXMubGlzdENoaWxkcmVuLmV2ZXJ5KChlLCBpKSA9PiBsaXN0Q2hpbGRyZW5baV0gPT09IGUpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxpc3RDaGlsZHJlblxuICAgICAgICAuZmlsdGVyKChjKSA9PiAhbGlzdENoaWxkcmVuLmluY2x1ZGVzKGMpKVxuICAgICAgICAuZm9yRWFjaCgoYykgPT4gYy5yZW1vdmVBdHRyaWJ1dGUoJ3Nsb3QnKSk7XG4gICAgICB0aGlzLmxpc3RDaGlsZHJlbiA9IGxpc3RDaGlsZHJlbjtcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuLmZvckVhY2goKGMsIGluZGV4KSA9PlxuICAgICAgICBjLnNldEF0dHJpYnV0ZSgnc2xvdCcsIGAke1NMT1ROQU1FX1BSRUZJWH0tJHtpbmRleH1gKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgc3NyIGF0dHJpYnV0ZSwgb25jZSB3ZSBoYXZlIGFjdHVhbGx5IGluaXRpYWxpemVkIHRoZSBjaGlsZHJlbiBlbGVtZW50cy5cbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKFNTUl9DSElMRF9DT1VOVF9BVFRSSUJVVEUpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIGxpc3QgYW5kIGxpc3Qgc2xvdHMgZm9yIHNsb3R0ZWQgY2hpbGRyZW4gb3IgYSBudW1iZXIgb2YgbGlzdCBzbG90c1xuICAgICAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGBkYXRhLXNzci1jaGlsZC1jb3VudGAgYXR0cmlidXRlIHZhbHVlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyBhIHBvc3NpYmxlIG9wdGltaXphdGlvbiBmb3IgU1NSLCBhcyBpbiBhbiBTU1IgTGl0IGVudmlyb25tZW50XG4gICAgICogb3RoZXIgZWxlbWVudHMgYXJlIG5vdCBhdmFpbGFibGUsIGJ1dCBtaWdodCBiZSBhdmFpbGFibGUgaW4gdGhlIG1ldGFcbiAgICAgKiBmcmFtZXdvcmsgd3JhcHBlciAobGlrZSBlLmcuIFJlYWN0KS4gVGhpcyBhbGxvd3MgdG8gcHJvdmlkZSB0aGUgbnVtYmVyIG9mXG4gICAgICogY2hpbGRyZW4gdG8gYmUgcGFzc2VkIHZpYSB0aGUgYGRhdGEtc3NyLWNoaWxkLWNvdW50YCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlbmRlckxpc3QoXG4gICAgICBhdHRyaWJ1dGVzOiB7IGNsYXNzPzogc3RyaW5nOyBhcmlhTGFiZWw/OiBzdHJpbmc7IGFyaWFMYWJlbGxlZGJ5Pzogc3RyaW5nIH0gPSB7fSxcbiAgICAgIGxpc3RJdGVtQXR0cmlidXRlczogeyBsb2NhbE5hbWVWaXN1YWxPbmx5Pzogc3RyaW5nW10gfSA9IHt9LFxuICAgICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIGNvbnN0IGxpc3RTbG90TmFtZXM6IFNiYk5hbWVkU2xvdFByb3BlcnRpZXNbXSA9IHRoaXMubGlzdFNsb3RFbnRyaWVzKGxpc3RJdGVtQXR0cmlidXRlcyk7XG5cbiAgICAgIGlmIChsaXN0U2xvdE5hbWVzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx1bFxuICAgICAgICAgICAgY2xhc3M9JHthdHRyaWJ1dGVzLmNsYXNzIHx8IHRoaXMubG9jYWxOYW1lfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD0ke2F0dHJpYnV0ZXMuYXJpYUxhYmVsIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9JHthdHRyaWJ1dGVzLmFyaWFMYWJlbGxlZGJ5IHx8IG5vdGhpbmd9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgJHtsaXN0U2xvdE5hbWVzLm1hcChcbiAgICAgICAgICAgICAgKHNsb3QpID0+IGh0bWxgXG4gICAgICAgICAgICAgICAgPGxpIGFyaWEtaGlkZGVuPSR7c2xvdC5hcmlhSGlkZGVuIHx8IG5vdGhpbmd9PlxuICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT0ke3Nsb3QubmFtZX0+PC9zbG90PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgJHt0aGlzLnJlbmRlckhpZGRlblNsb3QoKX1cbiAgICAgICAgYDtcbiAgICAgIH0gZWxzZSBpZiAobGlzdFNsb3ROYW1lcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGh0bWxgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHthdHRyaWJ1dGVzLmFyaWFMYWJlbH08L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9JHthdHRyaWJ1dGVzLmNsYXNzIHx8IHRoaXMubG9jYWxOYW1lfT5cbiAgICAgICAgICAgIDxzcGFuPjxzbG90IG5hbWU9JHtsaXN0U2xvdE5hbWVzWzBdLm5hbWV9Pjwvc2xvdD48L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICR7dGhpcy5yZW5kZXJIaWRkZW5TbG90KCl9IGA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJIaWRkZW5TbG90KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBTYmJOYW1lZFNsb3RQcm9wZXJ0aWVzLCB3aGljaCBob2xkcyB0aGUgbGlzdCBzbG90IG5hbWVzIGFuZCB0aGUgaGlkZGVuIHByb3BlcnR5O1xuICAgICAqIGl0cyBsZW5ndGggY29ycmVzcG9uZHMgdG8gdGhlIG51bWJlciBvZiBtYXRjaGVkIGNoaWxkcmVuIG9yIHRoZSBgZGF0YS1zc3ItY2hpbGQtY291bnRgIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwb3NzaWJsZSBvcHRpbWl6YXRpb24gZm9yIFNTUiwgYXMgaW4gYW4gU1NSIExpdCBlbnZpcm9ubWVudFxuICAgICAqIG90aGVyIGVsZW1lbnRzIGFyZSBub3QgYXZhaWxhYmxlLCBidXQgbWlnaHQgYmUgYXZhaWxhYmxlIGluIHRoZSBtZXRhXG4gICAgICogZnJhbWV3b3JrIHdyYXBwZXIgKGxpa2UgZS5nLiBSZWFjdCkuIFRoaXMgYWxsb3dzIHRvIHByb3ZpZGUgdGhlIG51bWJlciBvZlxuICAgICAqIGNoaWxkcmVuIHRvIGJlIHBhc3NlZCB2aWEgdGhlIGBkYXRhLXNzci1jaGlsZC1jb3VudGAgYXR0cmlidXRlIHZhbHVlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBsaXN0U2xvdEVudHJpZXMobGlzdEl0ZW1BdHRyaWJ1dGVzOiB7XG4gICAgICBsb2NhbE5hbWVWaXN1YWxPbmx5Pzogc3RyaW5nW107XG4gICAgfSk6IFNiYk5hbWVkU2xvdFByb3BlcnRpZXNbXSB7XG4gICAgICBjb25zdCBsaXN0Q2hpbGRyZW4gPSB0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmxpc3RDaGlsZHJlblxuICAgICAgICA6IEFycmF5LmZyb20oeyBsZW5ndGg6ICsodGhpcy5nZXRBdHRyaWJ1dGUoU1NSX0NISUxEX0NPVU5UX0FUVFJJQlVURSkgPz8gMCkgfSk7XG4gICAgICByZXR1cm4gbGlzdENoaWxkcmVuLm1hcCgoZSwgaSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IGAke1NMT1ROQU1FX1BSRUZJWH0tJHtpfWAsXG4gICAgICAgICAgYXJpYUhpZGRlbjpcbiAgICAgICAgICAgIGxpc3RJdGVtQXR0cmlidXRlcz8ubG9jYWxOYW1lVmlzdWFsT25seT8uaW5jbHVkZXMoKGUgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSkgPz9cbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGhpZGRlbiBzbG90LCB3aGljaCBpcyBpbnRlbmRlZCBhcyB0aGUgY2hpbGRyZW4gY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgKiBXaGVuIGFuIGVsZW1lbnQgd2l0aG91dCBhIHNsb3QgYXR0cmlidXRlIGlzIHNsb3R0ZWQgdG8gdGhlIGVsZW1lbnQsIGl0IHRyaWdnZXJzXG4gICAgICogdGhlIHNsb3RjaGFuZ2UgZXZlbnQsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFzc2lnbiBpdCB0byB0aGUgYXBwcm9wcmlhdGUgbmFtZWQgc2xvdC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVuZGVySGlkZGVuU2xvdCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGA8c3BhbiBoaWRkZW4+PHNsb3Q+PC9zbG90Pjwvc3Bhbj5gO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBOYW1lZFNsb3RMaXN0RWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxDPj4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYk5lZ2F0aXZlTWl4aW5UeXBlIHtcbiAgcHVibGljIG5lZ2F0aXZlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIG5lZ2F0aXZlIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiTmVnYXRpdmVNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk5lZ2F0aXZlTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJOZWdhdGl2ZUVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgU2JiTmVnYXRpdmVNaXhpblR5cGUge1xuICAgIC8qKiBOZWdhdGl2ZSBjb2xvcmluZyB2YXJpYW50IGZsYWcuICovXG4gICAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgbmVnYXRpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBTYmJOZWdhdGl2ZUVsZW1lbnQgYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJOZWdhdGl2ZU1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vZXZlbnRpbmcuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiUGFuZWxNaXhpblR5cGUge1xuICBwdWJsaWMgY29sb3I6ICd3aGl0ZScgfCAnbWlsayc7XG4gIHB1YmxpYyBib3JkZXJsZXNzOiBib29sZWFuO1xuICBwdWJsaWMgZXhwYW5zaW9uU3RhdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFNiYlBhbmVsU2l6ZSA9ICdzJyB8ICdtJztcblxuLyoqXG4gKiBNaXhpbiBmb3IgY29tbW9uIHBhbmVsIGJlaGF2aW9yc1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUGFuZWxNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlBhbmVsTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJQYW5lbEVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgU2JiUGFuZWxNaXhpblR5cGUge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgICAgcGFuZWxDb25uZWN0ZWQ6ICdwYW5lbENvbm5lY3RlZCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIC8qKiBUaGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgcGFuZWwuICovXG4gICAgQHByb3BlcnR5KCkgcHVibGljIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnID0gJ3doaXRlJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB1bnNlbGVjdGVkIHBhbmVsIGhhcyBhIGJvcmRlci4gKi9cbiAgICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBib3JkZXJsZXNzID0gZmFsc2U7XG5cbiAgICAvKiogQGludGVybmFsIHVzZWQgZm9yIGFjY2Vzc2liaWxpdHkgbGFiZWwgd2hlbiBpbiBleHBhbnNpb24gcGFuZWwgKi9cbiAgICBAcHJvcGVydHkoKSBwdWJsaWMgZXhwYW5zaW9uU3RhdGU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBJbnRlcm5hbCBldmVudCB0aGF0IGVtaXRzIHdoZW4gdGhlIGNoZWNrYm94IGlzIGxvYWRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9wYW5lbENvbm5lY3RlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICAgIHRoaXMsXG4gICAgICBTYmJQYW5lbEVsZW1lbnQuZXZlbnRzLnBhbmVsQ29ubmVjdGVkLFxuICAgICAgeyBidWJibGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAgIHRoaXMuX3BhbmVsQ29ubmVjdGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiUGFuZWxFbGVtZW50IGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiUGFuZWxNaXhpblR5cGU+ICYgVDtcbn07XG4iLCJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuLy8gRGVmaW5lIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBtaXhpblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW5UeXBlIHtcbiAgcHJvdGVjdGVkIHN0YXJ0VXBkYXRlKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBjb21wbGV0ZVVwZGF0ZSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIFRoaXMgbWl4aW4gYWxsb3dzIHNjaGVkdWxpbmcgbWFudWFsIHVwZGF0ZXMsIHdoaWNoIGFmZmVjdCB1cGRhdGVDb21wbGV0ZS5cbiAqIEBwYXJhbSBiYXNlIFRoZSBjbGFzcyB0byBleHRlbmQuXG4gKiBAcmV0dXJucyBBIGNsYXNzIGV4dGVuZGVkIHdpdGggdGhlIHNsb3QgY2hpbGQgb2JzZXJ2ZXIgZnVuY3Rpb25hbGl0eS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYlVwZGF0ZVNjaGVkdWxlck1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgYmFzZTogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiVXBkYXRlU2NoZWR1bGVyTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJVcGRhdGVTY2hlZHVsZXJFbGVtZW50XG4gICAgZXh0ZW5kcyBiYXNlXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYlVwZGF0ZVNjaGVkdWxlck1peGluVHlwZT5cbiAge1xuICAgIHByaXZhdGUgX3VwZGF0ZVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBwcml2YXRlIF91cGRhdGVSZXNvbHZlID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICBwcm90ZWN0ZWQgc3RhcnRVcGRhdGUoKTogdm9pZCB7XG4gICAgICB0aGlzLl91cGRhdGVQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHIpID0+ICh0aGlzLl91cGRhdGVSZXNvbHZlID0gcikpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21wbGV0ZVVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZ2V0VXBkYXRlQ29tcGxldGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzdXBlci5nZXRVcGRhdGVDb21wbGV0ZSgpO1xuICAgICAgYXdhaXQgdGhpcy5fdXBkYXRlUHJvbWlzZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJVcGRhdGVTY2hlZHVsZXJFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJVcGRhdGVTY2hlZHVsZXJNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiJdLCJuYW1lcyI6WyJfX2RlY29yYXRlQ2xhc3MiLCJzdGF0ZSJdLCJtYXBwaW5ncyI6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
|
|
@@ -5,14 +5,7 @@ import { SbbDatepickerButton } from "./common.js";
|
|
|
5
5
|
import { findNextAvailableDate } from "./datepicker.js";
|
|
6
6
|
import "../icon.js";
|
|
7
7
|
import { css } from "lit";
|
|
8
|
-
const style = css
|
|
9
|
-
/*
|
|
10
|
-
* SBB table mixin
|
|
11
|
-
* Notes:
|
|
12
|
-
* We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
|
|
13
|
-
* Therefore, we have to build the grid avoiding double borders.
|
|
14
|
-
*/
|
|
15
|
-
*,
|
|
8
|
+
const style = css`*,
|
|
16
9
|
::before,
|
|
17
10
|
::after {
|
|
18
11
|
box-sizing: border-box;
|
|
@@ -157,4 +150,4 @@ SbbDatepickerNextDayElement = __decorateClass([
|
|
|
157
150
|
export {
|
|
158
151
|
SbbDatepickerNextDayElement
|
|
159
152
|
};
|
|
160
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uZXh0LWRheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1uZXh0LWRheS9kYXRlcGlja2VyLW5leHQtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4bk5leHREYXksIGkxOG5TZWxlY3ROZXh0RGF5IH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkRhdGVwaWNrZXJCdXR0b24gfSBmcm9tICcuLi9jb21tb24uanMnO1xuaW1wb3J0IHsgZmluZE5leHRBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItbmV4dC1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gbW92ZSB0aGUgZGF0ZSBhaGVhZC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdzdWZmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByb3RlY3RlZCBpY29uTmFtZTogc3RyaW5nID0gJ2NoZXZyb24tc21hbGwtcmlnaHQtc21hbGwnO1xuICBwcm90ZWN0ZWQgaTE4bk9mZkJvdW5kYXJ5RGF5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+
|
|
153
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uZXh0LWRheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1uZXh0LWRheS9kYXRlcGlja2VyLW5leHQtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4bk5leHREYXksIGkxOG5TZWxlY3ROZXh0RGF5IH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkRhdGVwaWNrZXJCdXR0b24gfSBmcm9tICcuLi9jb21tb24uanMnO1xuaW1wb3J0IHsgZmluZE5leHRBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItbmV4dC1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gbW92ZSB0aGUgZGF0ZSBhaGVhZC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdzdWZmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByb3RlY3RlZCBpY29uTmFtZTogc3RyaW5nID0gJ2NoZXZyb24tc21hbGwtcmlnaHQtc21hbGwnO1xuICBwcm90ZWN0ZWQgaTE4bk9mZkJvdW5kYXJ5RGF5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gaTE4bk5leHREYXk7XG4gIHByb3RlY3RlZCBpMThuU2VsZWN0T2ZmQm91bmRhcnlEYXkgPSBpMThuU2VsZWN0TmV4dERheTtcbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlID0gZmluZE5leHRBdmFpbGFibGVEYXRlO1xuXG4gIHByb3RlY3RlZCBvbklucHV0VXBkYXRlZChldmVudDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3VuZGFyeSAhPT0gZXZlbnQuZGV0YWlsLm1heCkge1xuICAgICAgdGhpcy5ib3VuZGFyeSA9IGV2ZW50LmRldGFpbC5tYXghO1xuICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGF0ZVBpY2tlckVsZW1lbnQhKTtcbiAgICB9XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JzogU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCYSxJQUFBLDhCQUFOLGNBQW9ELG9CQUF1QjtBQUFBLEVBQTNFLGNBQUE7QUFBQSxVQUFBLEdBQUEsU0FBQTtBQUdMLFNBQVUsV0FBbUI7QUFDN0IsU0FBVSxxQkFBNkM7QUFDdkQsU0FBVSwyQkFBMkI7QUFDckMsU0FBVSxvQkFBb0I7QUFBQSxFQUFBO0FBQUEsRUFFcEIsZUFBZSxPQUErQztBQUN0RSxRQUFJLEtBQUssYUFBYSxNQUFNLE9BQU8sS0FBSztBQUNqQyxXQUFBLFdBQVcsTUFBTSxPQUFPO0FBQ3hCLFdBQUEsaUJBQWlCLEtBQUssaUJBQWtCO0FBQUEsSUFDL0M7QUFBQSxFQUNGO0FBQ0Y7QUFkYSw0QkFDWSxTQUF5QjtBQURyQyw4QkFBTixnQkFBQTtBQUFBLEVBSk4sY0FBYyx5QkFBeUI7QUFBQSxFQUN2QyxlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQO0FBQUEsR0FDWSwyQkFBQTsifQ==
|
|
@@ -5,14 +5,7 @@ import { SbbDatepickerButton } from "./common.js";
|
|
|
5
5
|
import { findPreviousAvailableDate } from "./datepicker.js";
|
|
6
6
|
import "../icon.js";
|
|
7
7
|
import { css } from "lit";
|
|
8
|
-
const style = css
|
|
9
|
-
/*
|
|
10
|
-
* SBB table mixin
|
|
11
|
-
* Notes:
|
|
12
|
-
* We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
|
|
13
|
-
* Therefore, we have to build the grid avoiding double borders.
|
|
14
|
-
*/
|
|
15
|
-
*,
|
|
8
|
+
const style = css`*,
|
|
16
9
|
::before,
|
|
17
10
|
::after {
|
|
18
11
|
box-sizing: border-box;
|
|
@@ -157,4 +150,4 @@ SbbDatepickerPreviousDayElement = __decorateClass([
|
|
|
157
150
|
export {
|
|
158
151
|
SbbDatepickerPreviousDayElement
|
|
159
152
|
};
|
|
160
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5L2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4blByZXZpb3VzRGF5LCBpMThuU2VsZWN0UHJldmlvdXNEYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIG1vdmUgdGhlIGRhdGUgYmFjay5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAncHJlZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJEYXRlcGlja2VyQnV0dG9uPFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJvdGVjdGVkIGljb25OYW1lOiBzdHJpbmcgPSAnY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsJztcbiAgcHJvdGVjdGVkIGkxOG5PZmZCb3VuZGFyeURheTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGkxOG5QcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGkxOG5TZWxlY3RPZmZCb3VuZGFyeURheSA9IGkxOG5TZWxlY3RQcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlID0gZmluZFByZXZpb3VzQXZhaWxhYmxlRGF0ZTtcblxuICBwcm90ZWN0ZWQgb25JbnB1dFVwZGF0ZWQoZXZlbnQ6IEN1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+
|
|
153
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5L2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4blByZXZpb3VzRGF5LCBpMThuU2VsZWN0UHJldmlvdXNEYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIG1vdmUgdGhlIGRhdGUgYmFjay5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAncHJlZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJEYXRlcGlja2VyQnV0dG9uPFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJvdGVjdGVkIGljb25OYW1lOiBzdHJpbmcgPSAnY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsJztcbiAgcHJvdGVjdGVkIGkxOG5PZmZCb3VuZGFyeURheTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGkxOG5QcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGkxOG5TZWxlY3RPZmZCb3VuZGFyeURheSA9IGkxOG5TZWxlY3RQcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlID0gZmluZFByZXZpb3VzQXZhaWxhYmxlRGF0ZTtcblxuICBwcm90ZWN0ZWQgb25JbnB1dFVwZGF0ZWQoZXZlbnQ6IEN1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYm91bmRhcnkgIT09IGV2ZW50LmRldGFpbC5taW4pIHtcbiAgICAgIHRoaXMuYm91bmRhcnkgPSBldmVudC5kZXRhaWwubWluITtcbiAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRhdGVQaWNrZXJFbGVtZW50ISk7XG4gICAgfVxuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXknOiBTYmJEYXRlcGlja2VyUHJldmlvdXNEYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCYSxJQUFBLGtDQUFOLGNBQXdELG9CQUF1QjtBQUFBLEVBQS9FLGNBQUE7QUFBQSxVQUFBLEdBQUEsU0FBQTtBQUdMLFNBQVUsV0FBbUI7QUFDN0IsU0FBVSxxQkFBNkM7QUFDdkQsU0FBVSwyQkFBMkI7QUFDckMsU0FBVSxvQkFBb0I7QUFBQSxFQUFBO0FBQUEsRUFFcEIsZUFBZSxPQUErQztBQUN0RSxRQUFJLEtBQUssYUFBYSxNQUFNLE9BQU8sS0FBSztBQUNqQyxXQUFBLFdBQVcsTUFBTSxPQUFPO0FBQ3hCLFdBQUEsaUJBQWlCLEtBQUssaUJBQWtCO0FBQUEsSUFDL0M7QUFBQSxFQUNGO0FBQ0Y7QUFkYSxnQ0FDWSxTQUF5QjtBQURyQyxrQ0FBTixnQkFBQTtBQUFBLEVBSk4sY0FBYyw2QkFBNkI7QUFBQSxFQUMzQyxlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQO0FBQUEsR0FDWSwrQkFBQTsifQ==
|