@provoly/dashboard 1.4.14 → 1.4.16
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/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +7 -7
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +7 -7
- package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +10 -10
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +6 -6
- package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +3 -3
- package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +10 -10
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +10 -15
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +8 -8
- package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +6 -6
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +6 -6
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +3 -3
- package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +6 -6
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +7 -7
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +3 -3
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +3 -3
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +5 -5
- package/esm2022/admin/components/admin-links/admin-links.component.mjs +5 -5
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +4 -5
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +5 -6
- package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +4 -5
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +5 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +4 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +6 -6
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +6 -6
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +5 -5
- package/esm2022/admin/components/association/association.component.mjs +4 -5
- package/esm2022/components/card/card.component.mjs +5 -6
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +6 -6
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +7 -7
- package/esm2022/components/stepper/stepper.component.mjs +3 -4
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +5 -5
- package/esm2022/dataset/components/dataset-version-form/dataset-version-form.component.mjs +6 -7
- package/esm2022/filters/date/date-filter.component.mjs +5 -6
- package/esm2022/filters/list/list-filter.component.mjs +6 -7
- package/esm2022/filters/number/number-filter.component.mjs +5 -6
- package/esm2022/filters/text/text-filter.component.mjs +5 -6
- package/esm2022/lib/core/components/about/about.component.mjs +3 -3
- package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +7 -7
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +6 -6
- package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +6 -6
- package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +6 -7
- package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +3 -4
- package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +6 -6
- package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +7 -8
- package/esm2022/lib/core/components/icon/icon.component.mjs +3 -3
- package/esm2022/lib/core/components/modal/modal.component.mjs +5 -6
- package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +5 -5
- package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +3 -3
- package/esm2022/lib/core/components/range/range.component.mjs +5 -6
- package/esm2022/lib/core/components/select/select.component.mjs +3 -3
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +5 -5
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +6 -6
- package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +3 -3
- package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +5 -5
- package/esm2022/lib/core/components/tabs/tab-group.component.mjs +3 -3
- package/esm2022/lib/core/components/toggle/toggle.component.mjs +4 -4
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +9 -9
- package/esm2022/lib/core/store/search/search.effects.mjs +4 -2
- package/esm2022/lib/core/store/search/search.service.mjs +3 -7
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +3 -3
- package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +2 -2
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +8 -8
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +12 -12
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +5 -6
- package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +3 -3
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +6 -6
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +10 -10
- package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +2 -2
- package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +2 -2
- package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +7 -7
- package/esm2022/lib/dashboard/resultset-utils.mjs +7 -8
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +4 -4
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +13 -24
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +3 -3
- package/esm2022/notification/components/notification/notification.component.mjs +5 -5
- package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +7 -7
- package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +2 -2
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +5 -5
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +9 -9
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +6 -6
- package/esm2022/presentation/components/presentation.component.mjs +6 -6
- package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +5 -5
- package/esm2022/restitution/components/restitution/restitution.component.mjs +3 -3
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +9 -9
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +3 -3
- package/esm2022/search/components/choose-widget/choose-widget.component.mjs +5 -5
- package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +9 -9
- package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +3 -3
- package/esm2022/search/search-home/search-home.component.mjs +3 -3
- package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +3 -3
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +3 -3
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +8 -8
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +6 -6
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +3 -3
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +7 -7
- package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +6 -6
- package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +7 -7
- package/esm2022/search/search-tools/search-tools.component.mjs +13 -13
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +5 -5
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +10 -10
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +8 -8
- package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +5 -6
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +3 -3
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +4 -4
- package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +2 -2
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +12 -12
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +13 -7
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +7 -7
- package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +7 -7
- package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +2 -2
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +10 -10
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +2 -2
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +2 -2
- package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +4 -5
- package/esm2022/widgets/widget-template/component/widget-template.component.mjs +7 -7
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +10 -10
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +9 -9
- package/fesm2022/provoly-dashboard-admin.mjs +171 -175
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-card.mjs +4 -5
- package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +4 -4
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +6 -6
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-stepper.mjs +2 -3
- package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +14 -14
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-date.mjs +4 -5
- package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs +4 -5
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-number.mjs +4 -5
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-text.mjs +4 -5
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +4 -4
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +21 -21
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +14 -14
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +6 -6
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +35 -35
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +25 -25
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +2 -2
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +3 -3
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +10 -10
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +11 -5
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +5 -5
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +8 -8
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +9 -9
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +6 -6
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +7 -7
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +11 -11
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +7 -7
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +204 -219
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -166,11 +166,11 @@ export class PrySearchFulltextComponent {
|
|
|
166
166
|
this.searchChange.emit(payload);
|
|
167
167
|
}
|
|
168
168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrySearchFulltextComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
169
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PrySearchFulltextComponent, selector: "pry-search-fulltext", inputs: { mode: "mode", launchButton: "launchButton", currentEdit: "currentEdit" }, outputs: { searchChange: "searchChange" }, host: { listeners: { "document:click": "clickout($event)", "window:keyup.enter": "keyEvent($event)" } }, viewQueries: [{ propertyName: "searchButton", first: true, predicate: ["searchButton"], descendants: true, read: ElementRef }, { propertyName: "searchTrigger", first: true, predicate: ["searchTrigger"], descendants: true, read: ElementRef }, { propertyName: "searchInputRef", first: true, predicate: ["searchInput"], descendants: true, read: ElementRef }, { propertyName: "searchOverlayRef", first: true, predicate: ["searchOverlay"], descendants: true, read: ElementRef }, { propertyName: "searchClass", first: true, predicate: ["searchClass"], descendants: true }, { propertyName: "chooseClasses", first: true, predicate: ["chooseClasses"], descendants: true }], ngImport: i0, template: "<pry-search-css></pry-search-css>\n<div class=\"o-search-fulltext\" [class.o-search-fulltext--vertical]=\"mode === 'vertical'\">\n <div class=\"o-search-fulltext__container\">\n <button\n #searchClass\n type=\"button\"\n class=\"o-search-fulltext__classes\"\n [class.o-search-fulltext__classes--inline]=\"mode === 'inline'\"\n [pryOverlay]=\"classesOverlay\"\n [(overlayOpen)]=\"panelClassesOpen\"\n pryOverlayPosition=\"start-top\"\n [pryOverlaySticky]=\"true\"\n [pryOverlayNoPadding]=\"true\"\n (click)=\"panelClassesOpen = true\"\n >\n <span\n class=\"o-search-fulltext__classes__content a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.selectClass' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon\n [iconSvg]=\"classesSelected.length === 0 ? 'apps' : 'detail'\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n ></pry-icon>\n @if (mode === 'inline') {\n <span class=\"o-search-fulltext__classes__content__label\">\n {{ classesSelectedLabel | i18n : { nb: classesSelected.length } }}\n </span>\n }\n </span>\n\n <span class=\"o-search-fulltext__classes__arrow\">\n <pry-icon\n iconSvg=\"fleche_bas\"\n [width]=\"17\"\n [height]=\"17\"\n [animation]=\"false\"\n class=\"o-search-fulltext__classes__arrow__icon\"\n [class.is-open]=\"panelClassesOpen\"\n ></pry-icon>\n </span>\n </button>\n\n <pry-choose-widget\n [mode]=\"'input'\"\n [class.m-choose-widget__input__inline]=\"mode === 'inline'\"\n [panelOpen]=\"panelSearchOpen\"\n [width]=\"searchPanelWidth ?? 200\"\n (selected)=\"onSelectWidget($event)\"\n >\n <input\n #searchInput\n [(ngModel)]=\"search\"\n (input)=\"onChangeSearch($event)\"\n (focusin)=\"onOpenSearchPanel()\"\n (focusout)=\"onFocusOut()\"\n />\n @if (!searchDisabled) {\n <div class=\"o-search-fulltext__input__clear\">\n <div class=\"o-search-fulltext__input__clear__wrapper\" (click)=\"onClearSearch($event)\">\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.clear' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"16\" [width]=\"16\" [animation]=\"false\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.fulltext.clear' | i18n }}</span>\n </div>\n </div>\n </div>\n }\n </pry-choose-widget>\n </div>\n\n @if (launchButton) {\n <button\n #searchButton\n class=\"a-btn a-btn--primary a-tooltip\"\n (click)=\"onSearch()\"\n [class.o-search-fulltext__button__inline]=\"mode === 'inline'\"\n [ngClass]=\"{ ' -width-full': mode === 'vertical' }\"\n [disabled]=\"searchDisabled\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.search' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"search-line\" [animation]=\"false\"></pry-icon>\n @if (mode === 'vertical') {\n <span>{{ '@pry.search.fulltext.search' | i18n }}</span>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.search.fulltext.search' | i18n }}</span>\n </button>\n }\n</div>\n\n<ng-template #classesOverlay>\n <div\n class=\"o-search-fulltext__classes-overlay\"\n #chooseClasses\n (keydown.escape)=\"closeFocus()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n >\n <button class=\"o-search-fulltext__classes-overlay__item\" (click)=\"onSelectAllClasses()\">\n <pry-icon iconSvg=\"apps\" [width]=\"20\" [height]=\"20\"></pry-icon>\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{\n '@pry.search.fulltext.allClasses' | i18n\n }}</span>\n </button>\n @for (clazz of classes$ | async; track clazz; let last = $last) {\n <button\n type=\"button\"\n class=\"o-search-fulltext__classes-overlay__item\"\n (click)=\"onSelectClass(clazz)\"\n [class.o-search-fulltext__classes-overlay__item__selected]=\"classesSelected.includes(clazz.id)\"\n (keydown.tab)=\"last ? closeFocus() : null\"\n >\n <img\n alt=\"class\"\n [height]=\"20\"\n [width]=\"20\"\n [src]=\"clazz.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{ clazz.name }}</span>\n </button>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.PryOverlayDirective, selector: "[pryOverlay]", inputs: ["pryOverlay", "styleReversed", "pryOverlaySticky", "pryOverlayNoPadding", "pryOverlayPosition", "overlayOpen", "hasBackdrop"], outputs: ["overlayOpenChange"] }, { kind: "component", type: i5.ChooseWidgetComponent, selector: "pry-choose-widget", inputs: ["panelOpen", "mode", "width"], outputs: ["selected"] }, { kind: "component", type: i6.PrySearchCssComponent, selector: "pry-search-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
170
170
|
}
|
|
171
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrySearchFulltextComponent, decorators: [{
|
|
172
172
|
type: Component,
|
|
173
|
-
args: [{ selector: 'pry-search-fulltext', template: "<pry-search-css></pry-search-css>\n<div class=\"o-search-fulltext\" [class.o-search-fulltext--vertical]=\"mode === 'vertical'\">\n <div class=\"o-search-fulltext__container\">\n <button\n #searchClass\n type=\"button\"\n class=\"o-search-fulltext__classes\"\n [class.o-search-fulltext__classes--inline]=\"mode === 'inline'\"\n [pryOverlay]=\"classesOverlay\"\n [(overlayOpen)]=\"panelClassesOpen\"\n pryOverlayPosition=\"start-top\"\n [pryOverlaySticky]=\"true\"\n [pryOverlayNoPadding]=\"true\"\n (click)=\"panelClassesOpen = true\"\n
|
|
173
|
+
args: [{ selector: 'pry-search-fulltext', template: "<pry-search-css></pry-search-css>\n<div class=\"o-search-fulltext\" [class.o-search-fulltext--vertical]=\"mode === 'vertical'\">\n <div class=\"o-search-fulltext__container\">\n <button\n #searchClass\n type=\"button\"\n class=\"o-search-fulltext__classes\"\n [class.o-search-fulltext__classes--inline]=\"mode === 'inline'\"\n [pryOverlay]=\"classesOverlay\"\n [(overlayOpen)]=\"panelClassesOpen\"\n pryOverlayPosition=\"start-top\"\n [pryOverlaySticky]=\"true\"\n [pryOverlayNoPadding]=\"true\"\n (click)=\"panelClassesOpen = true\"\n >\n <span\n class=\"o-search-fulltext__classes__content a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.selectClass' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon\n [iconSvg]=\"classesSelected.length === 0 ? 'apps' : 'detail'\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n ></pry-icon>\n @if (mode === 'inline') {\n <span class=\"o-search-fulltext__classes__content__label\">\n {{ classesSelectedLabel | i18n : { nb: classesSelected.length } }}\n </span>\n }\n </span>\n\n <span class=\"o-search-fulltext__classes__arrow\">\n <pry-icon\n iconSvg=\"fleche_bas\"\n [width]=\"17\"\n [height]=\"17\"\n [animation]=\"false\"\n class=\"o-search-fulltext__classes__arrow__icon\"\n [class.is-open]=\"panelClassesOpen\"\n ></pry-icon>\n </span>\n </button>\n\n <pry-choose-widget\n [mode]=\"'input'\"\n [class.m-choose-widget__input__inline]=\"mode === 'inline'\"\n [panelOpen]=\"panelSearchOpen\"\n [width]=\"searchPanelWidth ?? 200\"\n (selected)=\"onSelectWidget($event)\"\n >\n <input\n #searchInput\n [(ngModel)]=\"search\"\n (input)=\"onChangeSearch($event)\"\n (focusin)=\"onOpenSearchPanel()\"\n (focusout)=\"onFocusOut()\"\n />\n @if (!searchDisabled) {\n <div class=\"o-search-fulltext__input__clear\">\n <div class=\"o-search-fulltext__input__clear__wrapper\" (click)=\"onClearSearch($event)\">\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.clear' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"16\" [width]=\"16\" [animation]=\"false\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.fulltext.clear' | i18n }}</span>\n </div>\n </div>\n </div>\n }\n </pry-choose-widget>\n </div>\n\n @if (launchButton) {\n <button\n #searchButton\n class=\"a-btn a-btn--primary a-tooltip\"\n (click)=\"onSearch()\"\n [class.o-search-fulltext__button__inline]=\"mode === 'inline'\"\n [ngClass]=\"{ ' -width-full': mode === 'vertical' }\"\n [disabled]=\"searchDisabled\"\n [attr.data-tooltip]=\"'@pry.search.fulltext.search' | i18n\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"search-line\" [animation]=\"false\"></pry-icon>\n @if (mode === 'vertical') {\n <span>{{ '@pry.search.fulltext.search' | i18n }}</span>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.search.fulltext.search' | i18n }}</span>\n </button>\n }\n</div>\n\n<ng-template #classesOverlay>\n <div\n class=\"o-search-fulltext__classes-overlay\"\n #chooseClasses\n (keydown.escape)=\"closeFocus()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n >\n <button class=\"o-search-fulltext__classes-overlay__item\" (click)=\"onSelectAllClasses()\">\n <pry-icon iconSvg=\"apps\" [width]=\"20\" [height]=\"20\"></pry-icon>\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{\n '@pry.search.fulltext.allClasses' | i18n\n }}</span>\n </button>\n @for (clazz of classes$ | async; track clazz; let last = $last) {\n <button\n type=\"button\"\n class=\"o-search-fulltext__classes-overlay__item\"\n (click)=\"onSelectClass(clazz)\"\n [class.o-search-fulltext__classes-overlay__item__selected]=\"classesSelected.includes(clazz.id)\"\n (keydown.tab)=\"last ? closeFocus() : null\"\n >\n <img\n alt=\"class\"\n [height]=\"20\"\n [width]=\"20\"\n [src]=\"clazz.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{ clazz.name }}</span>\n </button>\n }\n </div>\n</ng-template>\n" }]
|
|
174
174
|
}], ctorParameters: () => [{ type: i1.Store }], propDecorators: { searchButton: [{
|
|
175
175
|
type: ViewChild,
|
|
176
176
|
args: ['searchButton', { read: ElementRef }]
|
|
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
204
204
|
type: HostListener,
|
|
205
205
|
args: ['window:keyup.enter', ['$event']]
|
|
206
206
|
}] } });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZ1bGx0ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtZnVsbHRleHQvc2VhcmNoLWZ1bGx0ZXh0L3NlYXJjaC1mdWxsdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9zZWFyY2gvc2VhcmNoLWZ1bGx0ZXh0L3NlYXJjaC1mdWxsdGV4dC9zZWFyY2gtZnVsbHRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBRUwsY0FBYyxFQUVkLGdCQUFnQixFQUNoQixzQkFBc0IsRUFHdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7OztBQVd6RSxNQUFNLE9BQU8sMEJBQTBCO0lBZXJDLElBQWEsV0FBVyxDQUFDLEVBQWlDO1FBQ3hELElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBZ0MsQ0FBQztZQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUE2QkQsWUFBb0IsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUEvQzVDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUdmLFNBQUksR0FBMEIsUUFBUSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBZXRDLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ1IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUVqRCxvQkFBZSxHQUFzQjtZQUNwRCxPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDO1FBQ2UsaUJBQVksR0FBc0I7WUFDakQsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDO1FBQ0YsY0FBUyxHQUF3QixDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBSTNFLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBRy9CLHlCQUFvQixHQUFHLGlDQUFpQyxDQUFDO1FBQ3pELG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBSXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO1FBQ3RFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxzQkFBc0IsQ0FBQztRQUMxRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUM7UUFDdkMsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBc0MsQ0FBQztRQUNqRSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztRQUN4RSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7UUFDdEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQXNDLENBQUM7UUFDakUsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxRQUFRLENBQUMsS0FBVTtRQUNqQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQztZQUNoRixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDUCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBR0QsUUFBUSxDQUFDLEtBQW9CO1FBQzNCLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQztRQUM5RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7Z0JBQzFDLEVBQUUsRUFBRSxzQkFBc0I7Z0JBQzFCLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU87YUFDM0MsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFRO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDeEYsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUUsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsaUNBQWlDLENBQUM7SUFDaEUsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZO1FBQ3hCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRW5ELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxvQkFBb0I7b0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSwrQkFBK0IsQ0FBQztZQUNuRyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxrQ0FBa0MsQ0FBQztRQUNqRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxpQ0FBaUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFhLEVBQUUsT0FBaUI7UUFDakQsTUFBTSxPQUFPLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs4R0E1TFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsNFhBQ0YsVUFBVSx5R0FDVCxVQUFVLHdHQUNaLFVBQVUsNEdBQ1IsVUFBVSwyTkM1QmhELHlqSkEwSEE7OzJGRGxHYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0UscUJBQXFCOzBFQUlrQixZQUFZO3NCQUE1RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ0csYUFBYTtzQkFBOUQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNBLGNBQWM7c0JBQTdELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDSSxnQkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDdEIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNJLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFNakIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRU8sV0FBVztzQkFBdkIsS0FBSztnQkFlSSxZQUFZO3NCQUFyQixNQUFNO2dCQXdEUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUIxQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIENsYXNzLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgQ2xhc3NTdGF0ZSxcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgREVGQVVMVF9OQU1FRF9RVUVSWV9JRCxcbiAgRnVsbFRleHRTZWFyY2hQYXlsb2FkLFxuICBOYW1lZFF1ZXJ5XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzZWFyY2hGdWxsdGV4dEFjdGlvbnMgfSBmcm9tICcuLi9zdG9yZS9zZWFyY2gtZnVsbHRleHQuYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoRnVsbHRleHRDaGFuZ2Uge1xuICBjbGFzc2VzOiBzdHJpbmdbXTtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXNlYXJjaC1mdWxsdGV4dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZnVsbHRleHQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVNlYXJjaEZ1bGx0ZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNlYXJjaEJ1dHRvbj86IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaFRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgc2VhcmNoVHJpZ2dlciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNlYXJjaElucHV0UmVmITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoT3ZlcmxheScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBzZWFyY2hPdmVybGF5UmVmITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoQ2xhc3MnKSBzZWFyY2hDbGFzcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjaG9vc2VDbGFzc2VzJykgY2hvb3NlQ2xhc3NlcyE6IEVsZW1lbnRSZWY7XG4gIHNlbGVjdGVkQ2xhc3NJdGVtPzogRWxlbWVudCB8IG51bGw7XG4gIHBhbmVsQ2xhc3Nlc09wZW4gPSBmYWxzZTtcbiAgcGFuZWxTZWFyY2hPcGVuID0gZmFsc2U7XG4gIHNlYXJjaFBhbmVsV2lkdGg/OiBudW1iZXI7XG5cbiAgQElucHV0KCkgbW9kZTogJ2lubGluZScgfCAndmVydGljYWwnID0gJ2lubGluZSc7XG4gIEBJbnB1dCgpIGxhdW5jaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgc2V0IGN1cnJlbnRFZGl0KG5xOiBOYW1lZFF1ZXJ5IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChucSkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IG5xLnJlcXVlc3QgYXMgRnVsbFRleHRTZWFyY2hQYXlsb2FkO1xuICAgICAgdGhpcy5zZWFyY2ggPSByZXF1ZXN0LmZ1bGxTZWFyY2g/LnZhbHVlO1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWQgPSByZXF1ZXN0Lm9DbGFzc2VzID8/IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaCA9ICcnO1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWQgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRoaXMuc2VhcmNoID09PSAnJztcbiAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zZWFyY2gsIHRoaXMuY2xhc3Nlc1NlbGVjdGVkKTtcbiAgfVxuXG4gIHNlYXJjaCA9ICcnO1xuICBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHNlYXJjaENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2VhcmNoRnVsbHRleHRDaGFuZ2U+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBCT1RUT01fUE9TSVRJT046IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgb3ZlcmxheVk6ICd0b3AnXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgVE9QX1BPU0lUSU9OOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgIG9yaWdpblk6ICd0b3AnLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICB9O1xuICBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbdGhpcy5CT1RUT01fUE9TSVRJT04sIHRoaXMuVE9QX1BPU0lUSU9OXTtcblxuICB3aWRnZXRTZWxlY3RlZD86IHN0cmluZztcblxuICBjbGFzc2VzU2VsZWN0ZWQ6IHN0cmluZ1tdID0gW107XG5cbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIGNsYXNzZXNTZWxlY3RlZExhYmVsID0gJ0Bwcnkuc2VhcmNoLmZ1bGx0ZXh0LmFsbENsYXNzZXMnO1xuICBzZWFyY2hEaXNhYmxlZCA9IHRydWU7XG4gIHBhbmVsQm90dG9tOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8Q2xhc3NTdGF0ZT4pIHtcbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zZWFyY2gsIHRoaXMuY2xhc3Nlc1NlbGVjdGVkKTtcbiAgfVxuXG4gIG9uQXJyb3dVcCgpIHtcbiAgICBjb25zdCBsYXN0RWxlbWVudCA9IHRoaXMuY2hvb3NlQ2xhc3Nlcy5uYXRpdmVFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDbGFzc0l0ZW0/LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDbGFzc0l0ZW0gPSB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtPy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtID0gbGFzdEVsZW1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRDbGFzc0l0ZW0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgZm9jdXNFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBvbkFycm93RG93bigpIHtcbiAgICBjb25zdCBmaXJzdEVsZW1lbnQgPSB0aGlzLmNob29zZUNsYXNzZXMubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENsYXNzSXRlbT8ubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtID0gdGhpcy5zZWxlY3RlZENsYXNzSXRlbT8ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtID0gZmlyc3RFbGVtZW50O1xuICAgIH1cbiAgICBjb25zdCBmb2N1c0VsZW1lbnQgPSB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgIGZvY3VzRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBjbGlja291dChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMucGFuZWxTZWFyY2hPcGVuKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENsYXNzSXRlbSA9IHRoaXMuY2hvb3NlQ2xhc3Nlcz8ubmF0aXZlRWxlbWVudD8uZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICB9LCAxMCk7XG4gICAgICBjb25zdCBjbGlja0lucHV0ID0gdGhpcy5zZWFyY2hJbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgIGlmICghY2xpY2tJbnB1dCkge1xuICAgICAgICBjb25zdCBjbGlja1BhbmVsID0gdGhpcy5zZWFyY2hPdmVybGF5UmVmPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICBpZiAoIWNsaWNrUGFuZWwpIHtcbiAgICAgICAgICB0aGlzLnBhbmVsU2VhcmNoT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwLmVudGVyJywgWyckZXZlbnQnXSlcbiAga2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmNob29zZUNsYXNzZXM/Lm5hdGl2ZUVsZW1lbnQ/LmZpcnN0RWxlbWVudENoaWxkLmZvY3VzKCk7XG4gICAgdGhpcy5zZWxlY3RlZENsYXNzSXRlbSA9IHRoaXMuY2hvb3NlQ2xhc3Nlcz8ubmF0aXZlRWxlbWVudD8uZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2g7XG4gICAgaWYgKChzZWFyY2ggPz8gJycpICE9PSAnJyAmJiAodGhpcy5wYW5lbFNlYXJjaE9wZW4gfHwgdGhpcy5pc0ZvY3VzZWQpKSB7XG4gICAgICB0aGlzLnNlYXJjaEJ1dHRvbj8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMucGFuZWxDbGFzc2VzT3Blbikge1xuICAgICAgdGhpcy5wYW5lbENsYXNzZXNPcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLnNlYXJjaENsYXNzPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKCkge1xuICAgIHRoaXMucGFuZWxTZWFyY2hPcGVuID0gZmFsc2U7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2g7XG4gICAgaWYgKChzZWFyY2ggPz8gJycpICE9PSAnJykge1xuICAgICAgY29uc3QgY2xhc3NlcyA9IHRoaXMuY2xhc3Nlc1NlbGVjdGVkO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZWFyY2hGdWxsdGV4dEFjdGlvbnMuc2VhcmNoKHsgY2xhc3Nlcywgc2VhcmNoIH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24oe1xuICAgICAgICAgIGlkOiBERUZBVUxUX05BTUVEX1FVRVJZX0lELFxuICAgICAgICAgIHdpZGdldFR5cGU6IHRoaXMud2lkZ2V0U2VsZWN0ZWQgPz8gJ3RhYmxlJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZVNlYXJjaChldnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZ0Py50YXJnZXQ/LnZhbHVlID8/ICcnO1xuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB2YWx1ZSA9PT0gJyc7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKHZhbHVlLCB0aGlzLmNsYXNzZXNTZWxlY3RlZCk7XG4gIH1cblxuICBvbkNsZWFyU2VhcmNoKGV2dDogYW55KSB7XG4gICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zZWFyY2gsIHRoaXMuY2xhc3Nlc1NlbGVjdGVkKTtcbiAgfVxuXG4gIG9uT3BlblNlYXJjaFBhbmVsKCkge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLnNlYXJjaFBhbmVsV2lkdGggPSB0aGlzLnNlYXJjaElucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgdGhpcy5wYW5lbFNlYXJjaE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgb25Gb2N1c091dCgpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWxlY3RXaWRnZXQod2lkZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLndpZGdldFNlbGVjdGVkID0gdGhpcy53aWRnZXRTZWxlY3RlZCA9PT0gd2lkZ2V0ID8gdW5kZWZpbmVkIDogd2lkZ2V0O1xuICB9XG5cbiAgb25TZWxlY3RBbGxDbGFzc2VzKCkge1xuICAgIHRoaXMuY2xhc3Nlc1NlbGVjdGVkID0gW107XG4gICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWRMYWJlbCA9ICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5hbGxDbGFzc2VzJztcbiAgfVxuXG4gIG9uU2VsZWN0Q2xhc3MoY2xheno6IENsYXNzKSB7XG4gICAgaWYgKHRoaXMuY2xhc3Nlc1NlbGVjdGVkLmluZGV4T2YoY2xhenouaWQpICE9PSAtMSkge1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWQgPSB0aGlzLmNsYXNzZXNTZWxlY3RlZC5maWx0ZXIoKGMpID0+IGNsYXp6LmlkICE9PSBjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWQgPSBbLi4udGhpcy5jbGFzc2VzU2VsZWN0ZWQsIGNsYXp6LmlkXTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zZWFyY2gsIHRoaXMuY2xhc3Nlc1NlbGVjdGVkKTtcblxuICAgIGlmICh0aGlzLmNsYXNzZXNTZWxlY3RlZD8ubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmNsYXNzZXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjbGFzc2VzKSA9PiB7XG4gICAgICAgIHRoaXMuY2xhc3Nlc1NlbGVjdGVkTGFiZWwgPVxuICAgICAgICAgIGNsYXNzZXMuZmluZCgoYykgPT4gdGhpcy5jbGFzc2VzU2VsZWN0ZWRbMF0gPT09IGMuaWQpPy5uYW1lID8/ICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5vbmVDbGFzcyc7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2xhc3Nlc1NlbGVjdGVkPy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmNsYXNzZXNTZWxlY3RlZExhYmVsID0gJ0Bwcnkuc2VhcmNoLmZ1bGx0ZXh0Lm1hbnlDbGFzc2VzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWRMYWJlbCA9ICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5hbGxDbGFzc2VzJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRDaGFuZ2UodmFsdWU6IHN0cmluZywgY2xhc3Nlczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBwYXlsb2FkID0geyB2YWx1ZSwgY2xhc3NlcyB9O1xuICAgIHRoaXMuc2VhcmNoQ2hhbmdlLmVtaXQocGF5bG9hZCk7XG4gIH1cbn1cbiIsIjxwcnktc2VhcmNoLWNzcz48L3ByeS1zZWFyY2gtY3NzPlxuPGRpdiBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0XCIgW2NsYXNzLm8tc2VhcmNoLWZ1bGx0ZXh0LS12ZXJ0aWNhbF09XCJtb2RlID09PSAndmVydGljYWwnXCI+XG4gIDxkaXYgY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgI3NlYXJjaENsYXNzXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiby1zZWFyY2gtZnVsbHRleHRfX2NsYXNzZXNcIlxuICAgICAgW2NsYXNzLm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzLS1pbmxpbmVdPVwibW9kZSA9PT0gJ2lubGluZSdcIlxuICAgICAgW3ByeU92ZXJsYXldPVwiY2xhc3Nlc092ZXJsYXlcIlxuICAgICAgWyhvdmVybGF5T3BlbildPVwicGFuZWxDbGFzc2VzT3BlblwiXG4gICAgICBwcnlPdmVybGF5UG9zaXRpb249XCJzdGFydC10b3BcIlxuICAgICAgW3ByeU92ZXJsYXlTdGlja3ldPVwidHJ1ZVwiXG4gICAgICBbcHJ5T3ZlcmxheU5vUGFkZGluZ109XCJ0cnVlXCJcbiAgICAgIChjbGljayk9XCJwYW5lbENsYXNzZXNPcGVuID0gdHJ1ZVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY2xhc3Nlc19fY29udGVudCBhLXRvb2x0aXBcIlxuICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0Bwcnkuc2VhcmNoLmZ1bGx0ZXh0LnNlbGVjdENsYXNzJyB8IGkxOG5cIlxuICAgICAgICBkYXRhLXRvb2x0aXAtcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgPlxuICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICBbaWNvblN2Z109XCJjbGFzc2VzU2VsZWN0ZWQubGVuZ3RoID09PSAwID8gJ2FwcHMnIDogJ2RldGFpbCdcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMjBcIlxuICAgICAgICAgIFt3aWR0aF09XCIyMFwiXG4gICAgICAgICAgW2FuaW1hdGlvbl09XCJmYWxzZVwiXG4gICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzX19jb250ZW50X19sYWJlbFwiICpuZ0lmPVwibW9kZSA9PT0gJ2lubGluZSdcIj5cbiAgICAgICAgICB7eyBjbGFzc2VzU2VsZWN0ZWRMYWJlbCB8IGkxOG4gOiB7IG5iOiBjbGFzc2VzU2VsZWN0ZWQubGVuZ3RoIH0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzX19hcnJvd1wiPlxuICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICBpY29uU3ZnPVwiZmxlY2hlX2Jhc1wiXG4gICAgICAgICAgW3dpZHRoXT1cIjE3XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE3XCJcbiAgICAgICAgICBbYW5pbWF0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzX19hcnJvd19faWNvblwiXG4gICAgICAgICAgW2NsYXNzLmlzLW9wZW5dPVwicGFuZWxDbGFzc2VzT3BlblwiXG4gICAgICAgID48L3ByeS1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPHByeS1jaG9vc2Utd2lkZ2V0XG4gICAgICBbbW9kZV09XCInaW5wdXQnXCJcbiAgICAgIFtjbGFzcy5tLWNob29zZS13aWRnZXRfX2lucHV0X19pbmxpbmVdPVwibW9kZSA9PT0gJ2lubGluZSdcIlxuICAgICAgW3BhbmVsT3Blbl09XCJwYW5lbFNlYXJjaE9wZW5cIlxuICAgICAgW3dpZHRoXT1cInNlYXJjaFBhbmVsV2lkdGggPz8gMjAwXCJcbiAgICAgIChzZWxlY3RlZCk9XCJvblNlbGVjdFdpZGdldCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoXCJcbiAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlU2VhcmNoKCRldmVudClcIlxuICAgICAgICAoZm9jdXNpbik9XCJvbk9wZW5TZWFyY2hQYW5lbCgpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiXG4gICAgICAvPlxuICAgICAgPGRpdiAqbmdJZj1cIiFzZWFyY2hEaXNhYmxlZFwiIGNsYXNzPVwiby1zZWFyY2gtZnVsbHRleHRfX2lucHV0X19jbGVhclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZWFyY2gtZnVsbHRleHRfX2lucHV0X19jbGVhcl9fd3JhcHBlclwiIChjbGljayk9XCJvbkNsZWFyU2VhcmNoKCRldmVudClcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImEtdG9vbHRpcFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0Bwcnkuc2VhcmNoLmZ1bGx0ZXh0LmNsZWFyJyB8IGkxOG5cIlxuICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIxNlwiIFt3aWR0aF09XCIxNlwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5jbGVhcicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvcHJ5LWNob29zZS13aWRnZXQ+XG4gIDwvZGl2PlxuXG4gIDxidXR0b25cbiAgICAjc2VhcmNoQnV0dG9uXG4gICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSBhLXRvb2x0aXBcIlxuICAgIChjbGljayk9XCJvblNlYXJjaCgpXCJcbiAgICBbY2xhc3Muby1zZWFyY2gtZnVsbHRleHRfX2J1dHRvbl9faW5saW5lXT1cIm1vZGUgPT09ICdpbmxpbmUnXCJcbiAgICBbbmdDbGFzc109XCJ7ICcgLXdpZHRoLWZ1bGwnOiBtb2RlID09PSAndmVydGljYWwnIH1cIlxuICAgIFtkaXNhYmxlZF09XCJzZWFyY2hEaXNhYmxlZFwiXG4gICAgKm5nSWY9XCJsYXVuY2hCdXR0b25cIlxuICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5zZWFyY2guZnVsbHRleHQuc2VhcmNoJyB8IGkxOG5cIlxuICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4gID5cbiAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNlYXJjaC1saW5lXCIgW2FuaW1hdGlvbl09XCJmYWxzZVwiPjwvcHJ5LWljb24+XG4gICAgPHNwYW4gKm5nSWY9XCJtb2RlID09PSAndmVydGljYWwnXCI+e3sgJ0Bwcnkuc2VhcmNoLmZ1bGx0ZXh0LnNlYXJjaCcgfCBpMThuIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5zZWFyY2guZnVsbHRleHQuc2VhcmNoJyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2xhc3Nlc092ZXJsYXk+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzLW92ZXJsYXlcIlxuICAgICNjaG9vc2VDbGFzc2VzXG4gICAgKGtleWRvd24uZXNjYXBlKT1cImNsb3NlRm9jdXMoKVwiXG4gICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm9uQXJyb3dEb3duKClcIlxuICAgIChrZXlkb3duLmFycm93VXApPVwib25BcnJvd1VwKClcIlxuICA+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzLW92ZXJsYXlfX2l0ZW1cIiAoY2xpY2spPVwib25TZWxlY3RBbGxDbGFzc2VzKClcIj5cbiAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYXBwc1wiIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIj48L3ByeS1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY2xhc3Nlcy1vdmVybGF5X19pdGVtX19sYWJlbFwiPnt7XG4gICAgICAgICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5hbGxDbGFzc2VzJyB8IGkxOG5cbiAgICAgIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNsYXp6IG9mIGNsYXNzZXMkIHwgYXN5bmM7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY2xhc3Nlcy1vdmVybGF5X19pdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Q2xhc3MoY2xhenopXCJcbiAgICAgICAgW2NsYXNzLm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzLW92ZXJsYXlfX2l0ZW1fX3NlbGVjdGVkXT1cImNsYXNzZXNTZWxlY3RlZC5pbmNsdWRlcyhjbGF6ei5pZClcIlxuICAgICAgICAoa2V5ZG93bi50YWIpPVwibGFzdCA/IGNsb3NlRm9jdXMoKSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgYWx0PVwiY2xhc3NcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMjBcIlxuICAgICAgICAgIFt3aWR0aF09XCIyMFwiXG4gICAgICAgICAgW3NyY109XCJjbGF6ei5pZCB8IHRyYW5zbGF0ZUlkIDogeyB0eXBlOiAnY2xhc3MnLCBvdXRwdXQ6ICdpY29uJyB9IHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzLW92ZXJsYXlfX2l0ZW1fX2xhYmVsXCI+e3sgY2xhenoubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZ1bGx0ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtZnVsbHRleHQvc2VhcmNoLWZ1bGx0ZXh0L3NlYXJjaC1mdWxsdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9zZWFyY2gvc2VhcmNoLWZ1bGx0ZXh0L3NlYXJjaC1mdWxsdGV4dC9zZWFyY2gtZnVsbHRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBRUwsY0FBYyxFQUVkLGdCQUFnQixFQUNoQixzQkFBc0IsRUFHdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7OztBQVd6RSxNQUFNLE9BQU8sMEJBQTBCO0lBZXJDLElBQWEsV0FBVyxDQUFDLEVBQWlDO1FBQ3hELElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBZ0MsQ0FBQztZQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENB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QVUsRUFBRTtnQkFDdEIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNJLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFNakIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRU8sV0FBVztzQkFBdkIsS0FBSztnQkFlSSxZQUFZO3NCQUFyQixNQUFNO2dCQXdEUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUIxQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIENsYXNzLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgQ2xhc3NTdGF0ZSxcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgREVGQVVMVF9OQU1FRF9RVUVSWV9JRCxcbiAgRnVsbFRleHRTZWFyY2hQYXlsb2FkLFxuICBOYW1lZFF1ZXJ5XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzZWFyY2hGdWxsdGV4dEFjdGlvbnMgfSBmcm9tICcuLi9zdG9yZS9zZWFyY2gtZnVsbHRleHQuYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoRnVsbHRleHRDaGFuZ2Uge1xuICBjbGFzc2VzOiBzdHJpbmdbXTtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXNlYXJjaC1mdWxsdGV4dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZnVsbHRleHQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVNlYXJjaEZ1bGx0ZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNlYXJjaEJ1dHRvbj86IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaFRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgc2VhcmNoVHJpZ2dlciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNlYXJjaElucHV0UmVmITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoT3ZlcmxheScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBzZWFyY2hPdmVybGF5UmVmITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoQ2xhc3MnKSBzZWFyY2hDbGFzcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjaG9vc2VDbGFzc2VzJykgY2hvb3NlQ2xhc3NlcyE6IEVsZW1lbnRSZWY7XG4gIHNlbGVjdGVkQ2xhc3NJdGVtPzogRWxlbWVudCB8IG51bGw7XG4gIHBhbmVsQ2xhc3Nlc09wZW4gPSBmYWxzZTtcbiAgcGFuZWxTZWFyY2hPcGVuID0gZmFsc2U7XG4gIHNlYXJjaFBhbmVsV2lkdGg/OiBudW1iZXI7XG5cbiAgQElucHV0KCkgbW9kZTogJ2lubGluZScgfCAndmVydGljYWwnID0gJ2lubGluZSc7XG4gIEBJbnB1dCgpIGxhdW5jaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgc2V0IGN1cnJlbnRFZGl0KG5xOiBOYW1lZFF1ZXJ5IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChucSkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IG5xLnJlcXVlc3QgYXMgRnVsbFRleHRTZWFyY2hQYXlsb2FkO1xuICAgICAgdGhpcy5zZWFyY2ggPSByZXF1ZXN0LmZ1bGxTZWFyY2g/LnZhbHVlO1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWQgPSByZXF1ZXN0Lm9DbGFzc2VzID8/IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaCA9ICcnO1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWQgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRoaXMuc2VhcmNoID09PSAnJztcbiAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zZWFyY2gsIHRoaXMuY2xhc3Nlc1NlbGVjdGVkKTtcbiAgfVxuXG4gIHNlYXJjaCA9ICcnO1xuICBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHNlYXJjaENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2VhcmNoRnVsbHRleHRDaGFuZ2U+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBCT1RUT01fUE9TSVRJT046IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgb3ZlcmxheVk6ICd0b3AnXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgVE9QX1BPU0lUSU9OOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgIG9yaWdpblk6ICd0b3AnLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICB9O1xuICBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbdGhpcy5CT1RUT01fUE9TSVRJT04sIHRoaXMuVE9QX1BPU0lUSU9OXTtcblxuICB3aWRnZXRTZWxlY3RlZD86IHN0cmluZztcblxuICBjbGFzc2VzU2VsZWN0ZWQ6IHN0cmluZ1tdID0gW107XG5cbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIGNsYXNzZXNTZWxlY3RlZExhYmVsID0gJ0Bwcnkuc2VhcmNoLmZ1bGx0ZXh0LmFsbENsYXNzZXMnO1xuICBzZWFyY2hEaXNhYmxlZCA9IHRydWU7XG4gIHBhbmVsQm90dG9tOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8Q2xhc3NTdGF0ZT4pIHtcbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zZWFyY2gsIHRoaXMuY2xhc3Nlc1NlbGVjdGVkKTtcbiAgfVxuXG4gIG9uQXJyb3dVcCgpIHtcbiAgICBjb25zdCBsYXN0RWxlbWVudCA9IHRoaXMuY2hvb3NlQ2xhc3Nlcy5uYXRpdmVFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDbGFzc0l0ZW0/LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDbGFzc0l0ZW0gPSB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtPy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtID0gbGFzdEVsZW1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRDbGFzc0l0ZW0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgZm9jdXNFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBvbkFycm93RG93bigpIHtcbiAgICBjb25zdCBmaXJzdEVsZW1lbnQgPSB0aGlzLmNob29zZUNsYXNzZXMubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENsYXNzSXRlbT8ubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtID0gdGhpcy5zZWxlY3RlZENsYXNzSXRlbT8ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtID0gZmlyc3RFbGVtZW50O1xuICAgIH1cbiAgICBjb25zdCBmb2N1c0VsZW1lbnQgPSB0aGlzLnNlbGVjdGVkQ2xhc3NJdGVtIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgIGZvY3VzRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBjbGlja291dChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMucGFuZWxTZWFyY2hPcGVuKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENsYXNzSXRlbSA9IHRoaXMuY2hvb3NlQ2xhc3Nlcz8ubmF0aXZlRWxlbWVudD8uZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICB9LCAxMCk7XG4gICAgICBjb25zdCBjbGlja0lucHV0ID0gdGhpcy5zZWFyY2hJbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgIGlmICghY2xpY2tJbnB1dCkge1xuICAgICAgICBjb25zdCBjbGlja1BhbmVsID0gdGhpcy5zZWFyY2hPdmVybGF5UmVmPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICBpZiAoIWNsaWNrUGFuZWwpIHtcbiAgICAgICAgICB0aGlzLnBhbmVsU2VhcmNoT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwLmVudGVyJywgWyckZXZlbnQnXSlcbiAga2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmNob29zZUNsYXNzZXM/Lm5hdGl2ZUVsZW1lbnQ/LmZpcnN0RWxlbWVudENoaWxkLmZvY3VzKCk7XG4gICAgdGhpcy5zZWxlY3RlZENsYXNzSXRlbSA9IHRoaXMuY2hvb3NlQ2xhc3Nlcz8ubmF0aXZlRWxlbWVudD8uZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2g7XG4gICAgaWYgKChzZWFyY2ggPz8gJycpICE9PSAnJyAmJiAodGhpcy5wYW5lbFNlYXJjaE9wZW4gfHwgdGhpcy5pc0ZvY3VzZWQpKSB7XG4gICAgICB0aGlzLnNlYXJjaEJ1dHRvbj8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMucGFuZWxDbGFzc2VzT3Blbikge1xuICAgICAgdGhpcy5wYW5lbENsYXNzZXNPcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLnNlYXJjaENsYXNzPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKCkge1xuICAgIHRoaXMucGFuZWxTZWFyY2hPcGVuID0gZmFsc2U7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2g7XG4gICAgaWYgKChzZWFyY2ggPz8gJycpICE9PSAnJykge1xuICAgICAgY29uc3QgY2xhc3NlcyA9IHRoaXMuY2xhc3Nlc1NlbGVjdGVkO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZWFyY2hGdWxsdGV4dEFjdGlvbnMuc2VhcmNoKHsgY2xhc3Nlcywgc2VhcmNoIH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24oe1xuICAgICAgICAgIGlkOiBERUZBVUxUX05BTUVEX1FVRVJZX0lELFxuICAgICAgICAgIHdpZGdldFR5cGU6IHRoaXMud2lkZ2V0U2VsZWN0ZWQgPz8gJ3RhYmxlJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZVNlYXJjaChldnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZ0Py50YXJnZXQ/LnZhbHVlID8/ICcnO1xuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB2YWx1ZSA9PT0gJyc7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKHZhbHVlLCB0aGlzLmNsYXNzZXNTZWxlY3RlZCk7XG4gIH1cblxuICBvbkNsZWFyU2VhcmNoKGV2dDogYW55KSB7XG4gICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zZWFyY2gsIHRoaXMuY2xhc3Nlc1NlbGVjdGVkKTtcbiAgfVxuXG4gIG9uT3BlblNlYXJjaFBhbmVsKCkge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLnNlYXJjaFBhbmVsV2lkdGggPSB0aGlzLnNlYXJjaElucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgdGhpcy5wYW5lbFNlYXJjaE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgb25Gb2N1c091dCgpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWxlY3RXaWRnZXQod2lkZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLndpZGdldFNlbGVjdGVkID0gdGhpcy53aWRnZXRTZWxlY3RlZCA9PT0gd2lkZ2V0ID8gdW5kZWZpbmVkIDogd2lkZ2V0O1xuICB9XG5cbiAgb25TZWxlY3RBbGxDbGFzc2VzKCkge1xuICAgIHRoaXMuY2xhc3Nlc1NlbGVjdGVkID0gW107XG4gICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWRMYWJlbCA9ICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5hbGxDbGFzc2VzJztcbiAgfVxuXG4gIG9uU2VsZWN0Q2xhc3MoY2xheno6IENsYXNzKSB7XG4gICAgaWYgKHRoaXMuY2xhc3Nlc1NlbGVjdGVkLmluZGV4T2YoY2xhenouaWQpICE9PSAtMSkge1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWQgPSB0aGlzLmNsYXNzZXNTZWxlY3RlZC5maWx0ZXIoKGMpID0+IGNsYXp6LmlkICE9PSBjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWQgPSBbLi4udGhpcy5jbGFzc2VzU2VsZWN0ZWQsIGNsYXp6LmlkXTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zZWFyY2gsIHRoaXMuY2xhc3Nlc1NlbGVjdGVkKTtcblxuICAgIGlmICh0aGlzLmNsYXNzZXNTZWxlY3RlZD8ubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmNsYXNzZXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjbGFzc2VzKSA9PiB7XG4gICAgICAgIHRoaXMuY2xhc3Nlc1NlbGVjdGVkTGFiZWwgPVxuICAgICAgICAgIGNsYXNzZXMuZmluZCgoYykgPT4gdGhpcy5jbGFzc2VzU2VsZWN0ZWRbMF0gPT09IGMuaWQpPy5uYW1lID8/ICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5vbmVDbGFzcyc7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2xhc3Nlc1NlbGVjdGVkPy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmNsYXNzZXNTZWxlY3RlZExhYmVsID0gJ0Bwcnkuc2VhcmNoLmZ1bGx0ZXh0Lm1hbnlDbGFzc2VzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGFzc2VzU2VsZWN0ZWRMYWJlbCA9ICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5hbGxDbGFzc2VzJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRDaGFuZ2UodmFsdWU6IHN0cmluZywgY2xhc3Nlczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBwYXlsb2FkID0geyB2YWx1ZSwgY2xhc3NlcyB9O1xuICAgIHRoaXMuc2VhcmNoQ2hhbmdlLmVtaXQocGF5bG9hZCk7XG4gIH1cbn1cbiIsIjxwcnktc2VhcmNoLWNzcz48L3ByeS1zZWFyY2gtY3NzPlxuPGRpdiBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0XCIgW2NsYXNzLm8tc2VhcmNoLWZ1bGx0ZXh0LS12ZXJ0aWNhbF09XCJtb2RlID09PSAndmVydGljYWwnXCI+XG4gIDxkaXYgY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgI3NlYXJjaENsYXNzXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiby1zZWFyY2gtZnVsbHRleHRfX2NsYXNzZXNcIlxuICAgICAgW2NsYXNzLm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzLS1pbmxpbmVdPVwibW9kZSA9PT0gJ2lubGluZSdcIlxuICAgICAgW3ByeU92ZXJsYXldPVwiY2xhc3Nlc092ZXJsYXlcIlxuICAgICAgWyhvdmVybGF5T3BlbildPVwicGFuZWxDbGFzc2VzT3BlblwiXG4gICAgICBwcnlPdmVybGF5UG9zaXRpb249XCJzdGFydC10b3BcIlxuICAgICAgW3ByeU92ZXJsYXlTdGlja3ldPVwidHJ1ZVwiXG4gICAgICBbcHJ5T3ZlcmxheU5vUGFkZGluZ109XCJ0cnVlXCJcbiAgICAgIChjbGljayk9XCJwYW5lbENsYXNzZXNPcGVuID0gdHJ1ZVwiXG4gICAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzX19jb250ZW50IGEtdG9vbHRpcFwiXG4gICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5zZWFyY2guZnVsbHRleHQuc2VsZWN0Q2xhc3MnIHwgaTE4blwiXG4gICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgID5cbiAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgW2ljb25TdmddPVwiY2xhc3Nlc1NlbGVjdGVkLmxlbmd0aCA9PT0gMCA/ICdhcHBzJyA6ICdkZXRhaWwnXCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMjBcIlxuICAgICAgICAgIFthbmltYXRpb25dPVwiZmFsc2VcIlxuICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgQGlmIChtb2RlID09PSAnaW5saW5lJykge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiby1zZWFyY2gtZnVsbHRleHRfX2NsYXNzZXNfX2NvbnRlbnRfX2xhYmVsXCI+XG4gICAgICAgICAgICB7eyBjbGFzc2VzU2VsZWN0ZWRMYWJlbCB8IGkxOG4gOiB7IG5iOiBjbGFzc2VzU2VsZWN0ZWQubGVuZ3RoIH0gfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY2xhc3Nlc19fYXJyb3dcIj5cbiAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgaWNvblN2Zz1cImZsZWNoZV9iYXNcIlxuICAgICAgICAgIFt3aWR0aF09XCIxN1wiXG4gICAgICAgICAgW2hlaWdodF09XCIxN1wiXG4gICAgICAgICAgW2FuaW1hdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY2xhc3Nlc19fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIFtjbGFzcy5pcy1vcGVuXT1cInBhbmVsQ2xhc3Nlc09wZW5cIlxuICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxwcnktY2hvb3NlLXdpZGdldFxuICAgICAgW21vZGVdPVwiJ2lucHV0J1wiXG4gICAgICBbY2xhc3MubS1jaG9vc2Utd2lkZ2V0X19pbnB1dF9faW5saW5lXT1cIm1vZGUgPT09ICdpbmxpbmUnXCJcbiAgICAgIFtwYW5lbE9wZW5dPVwicGFuZWxTZWFyY2hPcGVuXCJcbiAgICAgIFt3aWR0aF09XCJzZWFyY2hQYW5lbFdpZHRoID8/IDIwMFwiXG4gICAgICAoc2VsZWN0ZWQpPVwib25TZWxlY3RXaWRnZXQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoXCJcbiAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlU2VhcmNoKCRldmVudClcIlxuICAgICAgICAoZm9jdXNpbik9XCJvbk9wZW5TZWFyY2hQYW5lbCgpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiXG4gICAgICAgIC8+XG4gICAgICBAaWYgKCFzZWFyY2hEaXNhYmxlZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZWFyY2gtZnVsbHRleHRfX2lucHV0X19jbGVhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9faW5wdXRfX2NsZWFyX193cmFwcGVyXCIgKGNsaWNrKT1cIm9uQ2xlYXJTZWFyY2goJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImEtdG9vbHRpcFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5zZWFyY2guZnVsbHRleHQuY2xlYXInIHwgaTE4blwiXG4gICAgICAgICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMTZcIiBbd2lkdGhdPVwiMTZcIiBbYW5pbWF0aW9uXT1cImZhbHNlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnNlYXJjaC5mdWxsdGV4dC5jbGVhcicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvcHJ5LWNob29zZS13aWRnZXQ+XG4gIDwvZGl2PlxuXG4gIEBpZiAobGF1bmNoQnV0dG9uKSB7XG4gICAgPGJ1dHRvblxuICAgICAgI3NlYXJjaEJ1dHRvblxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSBhLXRvb2x0aXBcIlxuICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoKClcIlxuICAgICAgW2NsYXNzLm8tc2VhcmNoLWZ1bGx0ZXh0X19idXR0b25fX2lubGluZV09XCJtb2RlID09PSAnaW5saW5lJ1wiXG4gICAgICBbbmdDbGFzc109XCJ7ICcgLXdpZHRoLWZ1bGwnOiBtb2RlID09PSAndmVydGljYWwnIH1cIlxuICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaERpc2FibGVkXCJcbiAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5zZWFyY2guZnVsbHRleHQuc2VhcmNoJyB8IGkxOG5cIlxuICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgID5cbiAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2VhcmNoLWxpbmVcIiBbYW5pbWF0aW9uXT1cImZhbHNlXCI+PC9wcnktaWNvbj5cbiAgICAgIEBpZiAobW9kZSA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICA8c3Bhbj57eyAnQHByeS5zZWFyY2guZnVsbHRleHQuc2VhcmNoJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICB9XG4gICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Bwcnkuc2VhcmNoLmZ1bGx0ZXh0LnNlYXJjaCcgfCBpMThuIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjbGFzc2VzT3ZlcmxheT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1zZWFyY2gtZnVsbHRleHRfX2NsYXNzZXMtb3ZlcmxheVwiXG4gICAgI2Nob29zZUNsYXNzZXNcbiAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2xvc2VGb2N1cygpXCJcbiAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwib25BcnJvd0Rvd24oKVwiXG4gICAgKGtleWRvd24uYXJyb3dVcCk9XCJvbkFycm93VXAoKVwiXG4gICAgPlxuICAgIDxidXR0b24gY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY2xhc3Nlcy1vdmVybGF5X19pdGVtXCIgKGNsaWNrKT1cIm9uU2VsZWN0QWxsQ2xhc3NlcygpXCI+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFwcHNcIiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCI+PC9wcnktaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiby1zZWFyY2gtZnVsbHRleHRfX2NsYXNzZXMtb3ZlcmxheV9faXRlbV9fbGFiZWxcIj57e1xuICAgICAgICAnQHByeS5zZWFyY2guZnVsbHRleHQuYWxsQ2xhc3NlcycgfCBpMThuXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICBAZm9yIChjbGF6eiBvZiBjbGFzc2VzJCB8IGFzeW5jOyB0cmFjayBjbGF6ejsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY2xhc3Nlcy1vdmVybGF5X19pdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Q2xhc3MoY2xhenopXCJcbiAgICAgICAgW2NsYXNzLm8tc2VhcmNoLWZ1bGx0ZXh0X19jbGFzc2VzLW92ZXJsYXlfX2l0ZW1fX3NlbGVjdGVkXT1cImNsYXNzZXNTZWxlY3RlZC5pbmNsdWRlcyhjbGF6ei5pZClcIlxuICAgICAgICAoa2V5ZG93bi50YWIpPVwibGFzdCA/IGNsb3NlRm9jdXMoKSA6IG51bGxcIlxuICAgICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBhbHQ9XCJjbGFzc1wiXG4gICAgICAgICAgW2hlaWdodF09XCIyMFwiXG4gICAgICAgICAgW3dpZHRoXT1cIjIwXCJcbiAgICAgICAgICBbc3JjXT1cImNsYXp6LmlkIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdjbGFzcycsIG91dHB1dDogJ2ljb24nIH0gfCBhc3luY1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvLXNlYXJjaC1mdWxsdGV4dF9fY2xhc3Nlcy1vdmVybGF5X19pdGVtX19sYWJlbFwiPnt7IGNsYXp6Lm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -176,11 +176,11 @@ export class PrySearchHomeComponent {
|
|
|
176
176
|
this.subscription.unsubscribe();
|
|
177
177
|
}
|
|
178
178
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrySearchHomeComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
179
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: PrySearchHomeComponent, selector: "pry-search-home", inputs: { searchFulltextTpl: "searchFulltextTpl", isMoreList: "isMoreList" }, outputs: { changeListView: "changeListView", changeSearchCriteria: "changeSearchCriteria" }, viewQueries: [{ propertyName: "templateSpot", first: true, predicate: ["templateSpot"], descendants: true, read: TemplateRef }, { propertyName: "templateRefresh", first: true, predicate: ["templateRefresh"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<pry-search-css></pry-search-css>\n<div class=\"o-pry-search-home__named-query\">\n <ng-container *ngIf=\"namedQueryList$ | async as namedQuery\">\n <ng-container *ngIf=\"namedQuery.length > 0; else noNamedQuery\">\n <div class=\"o-pry-search-home__named-query__card\">\n <pry-expand-panel [open]=\"true\">\n <pry-expand-panel-title>{{ '@pry.search.home.title' | i18n }}</pry-expand-panel-title>\n\n <pry-card *ngFor=\"let nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery\">\n <pry-card-header [marker]=\"true\">\n <pry-card-icon>\n <pry-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></pry-nq-color-selector>\n <img\n [alt]=\"nq.id | translateId : { type: 'datasource', output: 'name' } | async\"\n [height]=\"22\"\n [width]=\"22\"\n [src]=\"nq.id | translateId : { type: 'datasource', output: 'icon' } | async\"\n />\n </pry-card-icon>\n\n <pry-card-title>\n <div class=\"o-pry-card-title__text\" aria-describedby=\"infoTooltip_searchHome\">\n <div class=\"a-p o-pry-card-title__text__title\">{{ nq.name }}</div>\n <div class=\"a-p o-pry-card-title__text__description\" *ngIf=\"nq.description\">{{ nq.description }}</div>\n </div>\n <ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n <span class=\"m-tooltip__text\">\n {{ nq.name }}\n </span>\n <span class=\"m-tooltip__description\" *ngIf=\"nq.description\">\n {{ nq.description }}\n </span>\n </div>\n </ng-template>\n <pry-icon\n class=\"o-pry-card-title__pin\"\n *ngIf=\"nq.favorite\"\n [width]=\"18\"\n [height]=\"18\"\n aria-label=\"favorite\"\n iconSvg=\"epingle\"\n ></pry-icon>\n\n <button\n [attr.data-tooltip]=\"'@pry.search.home.showAssociatedWidget' | i18n\"\n data-tooltip-position=\"bottom\"\n class=\"a-tooltip a-btn a-btn--secondary -size-sm -override-tooltip-position\"\n (click)=\"onSearchNamedQuery(nq.id)\"\n *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\"\n >\n {{ '@pry.search.namedQuery.display' | i18n }}\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.associatedWidget' | i18n }}</span>\n </button>\n </pry-card-title>\n\n <pry-card-menu>\n <div class=\"o-pry-card-menu__nav\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onFavorite(nq.id, nq.favorite)\"\n >\n <pry-icon iconSvg=\"epingle\"></pry-icon>\n {{ (nq.favorite ? '@pry.search.namedQuery.noFavorite' : '@pry.search.namedQuery.favorite') | i18n }}\n </button>\n <pry-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n {{ '@pry.search.namedQuery.refreshData' | i18n }}\n </button>\n </pry-card-menu>\n <pry-card-menu *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n cdkOverlayOrigin\n #triggerLoad=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n {{ '@pry.search.namedQuery.display' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"loadOpened = undefined\"\n >\n <div class=\"o-draggable-menu -search-home\">\n <ul class=\"o-draggable-menu__list\">\n <ng-container *ngFor=\"let menu of structure\">\n <li class=\"o-draggable-menu__list__item\">\n <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <pry-icon [iconSvg]=\"menu.icon\"></pry-icon>\n {{ menu.label | i18n }}\n </button>\n\n <ul class=\"o-draggable-menu__list__submenu\">\n <ng-container *ngFor=\"let sub of menu.sub\">\n <li class=\"o-draggable-menu__list__submenu__item\">\n <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n <pry-icon [iconSvg]=\"sub.icon\"></pry-icon>\n {{ sub.label | i18n }}\n </button>\n </li>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n </pry-card-menu>\n\n <pry-card-menu class=\"o-pry-card-menu__nav__item\">\n <pry-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></pry-nq-color-selector>\n </pry-card-menu>\n\n <pry-card-menu (click)=\"onSpot(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"mode_clic\"></pry-icon>\n {{ '@pry.search.namedQuery.spot' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <pry-card-menu (click)=\"onRefresh(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"history-line\"></pry-icon>\n {{ '@pry.search.namedQuery.refresh.title' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onDelete(nq)\"\n *ngIf=\"nq.owner\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n {{ '@pry.search.namedQuery.delete' | i18n }}\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onRename(nq)\"\n *ngIf=\"nq.owner\"\n >\n <pry-icon iconSvg=\"renamed\"></pry-icon>\n {{ '@pry.search.namedQuery.rename' | i18n }}\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onEdit(nq)\"\n (keydown.tab)=\"hideSpot()\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n {{ '@pry.search.namedQuery.edit' | i18n }}\n </button>\n </div>\n </pry-card-menu>\n </pry-card-header>\n </pry-card>\n </pry-expand-panel>\n </div>\n <button\n class=\"a-btn -link-like\"\n aria-pressed=\"false\"\n id=\"btn_view_more\"\n *ngIf=\"namedQuery.length > 2\"\n (click)=\"onChangeListView(isMoreList)\"\n >\n {{ isMoreList ? ('@pry.search.namedQuery.seeLess' | i18n) : ('@pry.search.namedQuery.seeMore' | i18n) }}\n </button>\n </ng-container>\n\n <ng-template #noNamedQuery>\n <p class=\"search-home__container-search\">{{ '@pry.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n </ng-template>\n </ng-container>\n</div>\n\n<div class=\"o-pry-search-home__search\">\n <h3 class=\"a-h3\">{{ '@pry.search.home.ssTitle' | i18n }}</h3>\n <ng-container *ngIf=\"searchFulltextTpl\">\n <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n <p class=\"a-p o-pry-search-home__search__or\">{{ '@pry.search.home.or' | i18n }}</p>\n </ng-container>\n <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></pry-icon>\n {{ '@pry.search.home.searchByCriteria' | i18n }}\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n</div>\n\n<ng-template #templateSpot>\n <div (mouseleave)=\"hideSpot()\">\n {{\n ((spottingWidget$ | async)?.length ?? 0 > 0\n ? '@pry.search.namedQuery.spotTitle'\n : '@pry.search.namedQuery.noSpot'\n ) | i18n : { length: (spottingWidget$ | async)?.length }\n }}\n <div *ngFor=\"let use of spottingWidget$ | async\" class=\"spot-line\">\n <pry-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></pry-icon>\n {{ '@pry.search.namedQuery.type.' + use.type | i18n }} - {{ '@pry.search.namedQuery.use' | i18n : use }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n <div>\n <button\n *ngFor=\"let option of refreshOptions\"\n class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n (click)=\"selectRefresh(option)\"\n >\n <pry-icon\n [width]=\"20\"\n [height]=\"20\"\n iconSvg=\"check\"\n *ngIf=\"(((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option\"\n ></pry-icon>\n {{ '@pry.search.namedQuery.refresh.' + option | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.PryNqColorSelectorComponent, selector: "pry-nq-color-selector", inputs: ["disabled", "datasource"], outputs: ["colorChanged"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i5.PryExpandPanelComponent, selector: "pry-expand-panel", inputs: ["open"] }, { kind: "directive", type: i5.PryExpansionPanelTitleDirective, selector: "pry-expand-panel-title" }, { kind: "component", type: i6.PryCardComponent, selector: "pry-card", inputs: ["selected"], outputs: ["statusChange"] }, { kind: "directive", type: i6.PryCardIconDirective, selector: "pry-card-icon, [pry-card-icon], [pryCardIcon]" }, { kind: "directive", type: i6.PryCardTitleDirective, selector: "pry-card-title, [o-pry-card-title], [pryCardTitle]" }, { kind: "directive", type: i6.PryCardMenuDirective, selector: "pry-card-menu", outputs: ["closeMenu$"], exportAs: ["pryCardMenu"] }, { kind: "component", type: i6.PryCardHeaderComponent, selector: "pry-card-header", inputs: ["marker"] }, { kind: "component", type: i7.PrySearchCssComponent, selector: "pry-search-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
179
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PrySearchHomeComponent, selector: "pry-search-home", inputs: { searchFulltextTpl: "searchFulltextTpl", isMoreList: "isMoreList" }, outputs: { changeListView: "changeListView", changeSearchCriteria: "changeSearchCriteria" }, viewQueries: [{ propertyName: "templateSpot", first: true, predicate: ["templateSpot"], descendants: true, read: TemplateRef }, { propertyName: "templateRefresh", first: true, predicate: ["templateRefresh"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<pry-search-css></pry-search-css>\n<div class=\"o-pry-search-home__named-query\">\n @if (namedQueryList$ | async; as namedQuery) {\n @if (namedQuery.length > 0) {\n <div class=\"o-pry-search-home__named-query__card\">\n <pry-expand-panel [open]=\"true\">\n <pry-expand-panel-title>{{ '@pry.search.home.title' | i18n }}</pry-expand-panel-title>\n @for (nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery; track nq) {\n <pry-card>\n <pry-card-header [marker]=\"true\">\n <pry-card-icon>\n <pry-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></pry-nq-color-selector>\n <img\n [alt]=\"nq.id | translateId : { type: 'datasource', output: 'name' } | async\"\n [height]=\"22\"\n [width]=\"22\"\n [src]=\"nq.id | translateId : { type: 'datasource', output: 'icon' } | async\"\n />\n </pry-card-icon>\n <pry-card-title>\n <div class=\"o-pry-card-title__text\" aria-describedby=\"infoTooltip_searchHome\">\n <div class=\"a-p o-pry-card-title__text__title\">{{ nq.name }}</div>\n @if (nq.description) {\n <div class=\"a-p o-pry-card-title__text__description\">{{ nq.description }}</div>\n }\n </div>\n <ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n <span class=\"m-tooltip__text\">\n {{ nq.name }}\n </span>\n @if (nq.description) {\n <span class=\"m-tooltip__description\">\n {{ nq.description }}\n </span>\n }\n </div>\n </ng-template>\n @if (nq.favorite) {\n <pry-icon\n class=\"o-pry-card-title__pin\"\n [width]=\"18\"\n [height]=\"18\"\n aria-label=\"favorite\"\n iconSvg=\"epingle\"\n ></pry-icon>\n }\n @if ((layout$ | async) !== DashboardGridLayout.MANUAL) {\n <button\n [attr.data-tooltip]=\"'@pry.search.home.showAssociatedWidget' | i18n\"\n data-tooltip-position=\"bottom\"\n class=\"a-tooltip a-btn a-btn--secondary -size-sm -override-tooltip-position\"\n (click)=\"onSearchNamedQuery(nq.id)\"\n >\n {{ '@pry.search.namedQuery.display' | i18n }}\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.associatedWidget' | i18n }}</span>\n </button>\n }\n </pry-card-title>\n <pry-card-menu>\n <div class=\"o-pry-card-menu__nav\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onFavorite(nq.id, nq.favorite)\"\n >\n <pry-icon iconSvg=\"epingle\"></pry-icon>\n {{ (nq.favorite ? '@pry.search.namedQuery.noFavorite' : '@pry.search.namedQuery.favorite') | i18n }}\n </button>\n <pry-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n {{ '@pry.search.namedQuery.refreshData' | i18n }}\n </button>\n </pry-card-menu>\n @if ((layout$ | async) !== DashboardGridLayout.MANUAL) {\n <pry-card-menu>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n cdkOverlayOrigin\n #triggerLoad=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n {{ '@pry.search.namedQuery.display' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"loadOpened = undefined\"\n >\n <div class=\"o-draggable-menu -search-home\">\n <ul class=\"o-draggable-menu__list\">\n @for (menu of structure; track menu) {\n <li class=\"o-draggable-menu__list__item\">\n <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <pry-icon [iconSvg]=\"menu.icon\"></pry-icon>\n {{ menu.label | i18n }}\n </button>\n <ul class=\"o-draggable-menu__list__submenu\">\n @for (sub of menu.sub; track sub) {\n <li class=\"o-draggable-menu__list__submenu__item\">\n <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n <pry-icon [iconSvg]=\"sub.icon\"></pry-icon>\n {{ sub.label | i18n }}\n </button>\n </li>\n }\n </ul>\n </li>\n }\n </ul>\n </div>\n </ng-template>\n </pry-card-menu>\n }\n <pry-card-menu class=\"o-pry-card-menu__nav__item\">\n <pry-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></pry-nq-color-selector>\n </pry-card-menu>\n <pry-card-menu (click)=\"onSpot(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"mode_clic\"></pry-icon>\n {{ '@pry.search.namedQuery.spot' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <pry-card-menu (click)=\"onRefresh(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"history-line\"></pry-icon>\n {{ '@pry.search.namedQuery.refresh.title' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n @if (nq.owner) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onDelete(nq)\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n {{ '@pry.search.namedQuery.delete' | i18n }}\n </button>\n }\n @if (nq.owner) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onRename(nq)\"\n >\n <pry-icon iconSvg=\"renamed\"></pry-icon>\n {{ '@pry.search.namedQuery.rename' | i18n }}\n </button>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onEdit(nq)\"\n (keydown.tab)=\"hideSpot()\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n {{ '@pry.search.namedQuery.edit' | i18n }}\n </button>\n </div>\n </pry-card-menu>\n </pry-card-header>\n </pry-card>\n }\n </pry-expand-panel>\n </div>\n @if (namedQuery.length > 2) {\n <button\n class=\"a-btn -link-like\"\n aria-pressed=\"false\"\n id=\"btn_view_more\"\n (click)=\"onChangeListView(isMoreList)\"\n >\n {{ isMoreList ? ('@pry.search.namedQuery.seeLess' | i18n) : ('@pry.search.namedQuery.seeMore' | i18n) }}\n </button>\n }\n } @else {\n <p class=\"search-home__container-search\">{{ '@pry.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n }\n }\n</div>\n\n<div class=\"o-pry-search-home__search\">\n <h3 class=\"a-h3\">{{ '@pry.search.home.ssTitle' | i18n }}</h3>\n @if (searchFulltextTpl) {\n <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n <p class=\"a-p o-pry-search-home__search__or\">{{ '@pry.search.home.or' | i18n }}</p>\n }\n <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></pry-icon>\n {{ '@pry.search.home.searchByCriteria' | i18n }}\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n</div>\n\n<ng-template #templateSpot>\n <div (mouseleave)=\"hideSpot()\">\n {{\n ((spottingWidget$ | async)?.length ?? 0 > 0\n ? '@pry.search.namedQuery.spotTitle'\n : '@pry.search.namedQuery.noSpot'\n ) | i18n : { length: (spottingWidget$ | async)?.length }\n }}\n @for (use of spottingWidget$ | async; track use) {\n <div class=\"spot-line\">\n <pry-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></pry-icon>\n {{ '@pry.search.namedQuery.type.' + use.type | i18n }} - {{ '@pry.search.namedQuery.use' | i18n : use }}\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n <div>\n @for (option of refreshOptions; track option) {\n <button\n class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n (click)=\"selectRefresh(option)\"\n >\n @if ((((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option) {\n <pry-icon\n [width]=\"20\"\n [height]=\"20\"\n iconSvg=\"check\"\n ></pry-icon>\n }\n {{ '@pry.search.namedQuery.refresh.' + option | i18n }}\n </button>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.PryNqColorSelectorComponent, selector: "pry-nq-color-selector", inputs: ["disabled", "datasource"], outputs: ["colorChanged"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i5.PryExpandPanelComponent, selector: "pry-expand-panel", inputs: ["open"] }, { kind: "directive", type: i5.PryExpansionPanelTitleDirective, selector: "pry-expand-panel-title" }, { kind: "component", type: i6.PryCardComponent, selector: "pry-card", inputs: ["selected"], outputs: ["statusChange"] }, { kind: "directive", type: i6.PryCardIconDirective, selector: "pry-card-icon, [pry-card-icon], [pryCardIcon]" }, { kind: "directive", type: i6.PryCardTitleDirective, selector: "pry-card-title, [o-pry-card-title], [pryCardTitle]" }, { kind: "directive", type: i6.PryCardMenuDirective, selector: "pry-card-menu", outputs: ["closeMenu$"], exportAs: ["pryCardMenu"] }, { kind: "component", type: i6.PryCardHeaderComponent, selector: "pry-card-header", inputs: ["marker"] }, { kind: "component", type: i7.PrySearchCssComponent, selector: "pry-search-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
180
180
|
}
|
|
181
181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrySearchHomeComponent, decorators: [{
|
|
182
182
|
type: Component,
|
|
183
|
-
args: [{ selector: 'pry-search-home', template: "<pry-search-css></pry-search-css>\n<div class=\"o-pry-search-home__named-query\">\n <ng-container *ngIf=\"namedQueryList$ | async as namedQuery\">\n <ng-container *ngIf=\"namedQuery.length > 0; else noNamedQuery\">\n <div class=\"o-pry-search-home__named-query__card\">\n <pry-expand-panel [open]=\"true\">\n <pry-expand-panel-title>{{ '@pry.search.home.title' | i18n }}</pry-expand-panel-title>\n\n <pry-card *ngFor=\"let nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery\">\n <pry-card-header [marker]=\"true\">\n <pry-card-icon>\n <pry-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></pry-nq-color-selector>\n <img\n [alt]=\"nq.id | translateId : { type: 'datasource', output: 'name' } | async\"\n [height]=\"22\"\n [width]=\"22\"\n [src]=\"nq.id | translateId : { type: 'datasource', output: 'icon' } | async\"\n />\n </pry-card-icon>\n\n <pry-card-title>\n <div class=\"o-pry-card-title__text\" aria-describedby=\"infoTooltip_searchHome\">\n <div class=\"a-p o-pry-card-title__text__title\">{{ nq.name }}</div>\n <div class=\"a-p o-pry-card-title__text__description\" *ngIf=\"nq.description\">{{ nq.description }}</div>\n </div>\n <ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n <span class=\"m-tooltip__text\">\n {{ nq.name }}\n </span>\n <span class=\"m-tooltip__description\" *ngIf=\"nq.description\">\n {{ nq.description }}\n </span>\n </div>\n </ng-template>\n <pry-icon\n class=\"o-pry-card-title__pin\"\n *ngIf=\"nq.favorite\"\n [width]=\"18\"\n [height]=\"18\"\n aria-label=\"favorite\"\n iconSvg=\"epingle\"\n ></pry-icon>\n\n <button\n [attr.data-tooltip]=\"'@pry.search.home.showAssociatedWidget' | i18n\"\n data-tooltip-position=\"bottom\"\n class=\"a-tooltip a-btn a-btn--secondary -size-sm -override-tooltip-position\"\n (click)=\"onSearchNamedQuery(nq.id)\"\n *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\"\n >\n {{ '@pry.search.namedQuery.display' | i18n }}\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.associatedWidget' | i18n }}</span>\n </button>\n </pry-card-title>\n\n <pry-card-menu>\n <div class=\"o-pry-card-menu__nav\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onFavorite(nq.id, nq.favorite)\"\n >\n <pry-icon iconSvg=\"epingle\"></pry-icon>\n {{ (nq.favorite ? '@pry.search.namedQuery.noFavorite' : '@pry.search.namedQuery.favorite') | i18n }}\n </button>\n <pry-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n {{ '@pry.search.namedQuery.refreshData' | i18n }}\n </button>\n </pry-card-menu>\n <pry-card-menu *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n cdkOverlayOrigin\n #triggerLoad=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n {{ '@pry.search.namedQuery.display' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"loadOpened = undefined\"\n >\n <div class=\"o-draggable-menu -search-home\">\n <ul class=\"o-draggable-menu__list\">\n <ng-container *ngFor=\"let menu of structure\">\n <li class=\"o-draggable-menu__list__item\">\n <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <pry-icon [iconSvg]=\"menu.icon\"></pry-icon>\n {{ menu.label | i18n }}\n </button>\n\n <ul class=\"o-draggable-menu__list__submenu\">\n <ng-container *ngFor=\"let sub of menu.sub\">\n <li class=\"o-draggable-menu__list__submenu__item\">\n <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n <pry-icon [iconSvg]=\"sub.icon\"></pry-icon>\n {{ sub.label | i18n }}\n </button>\n </li>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n </pry-card-menu>\n\n <pry-card-menu class=\"o-pry-card-menu__nav__item\">\n <pry-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></pry-nq-color-selector>\n </pry-card-menu>\n\n <pry-card-menu (click)=\"onSpot(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"mode_clic\"></pry-icon>\n {{ '@pry.search.namedQuery.spot' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <pry-card-menu (click)=\"onRefresh(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"history-line\"></pry-icon>\n {{ '@pry.search.namedQuery.refresh.title' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onDelete(nq)\"\n *ngIf=\"nq.owner\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n {{ '@pry.search.namedQuery.delete' | i18n }}\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onRename(nq)\"\n *ngIf=\"nq.owner\"\n >\n <pry-icon iconSvg=\"renamed\"></pry-icon>\n {{ '@pry.search.namedQuery.rename' | i18n }}\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onEdit(nq)\"\n (keydown.tab)=\"hideSpot()\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n {{ '@pry.search.namedQuery.edit' | i18n }}\n </button>\n </div>\n </pry-card-menu>\n </pry-card-header>\n </pry-card>\n </pry-expand-panel>\n </div>\n <button\n class=\"a-btn -link-like\"\n aria-pressed=\"false\"\n id=\"btn_view_more\"\n *ngIf=\"namedQuery.length > 2\"\n (click)=\"onChangeListView(isMoreList)\"\n >\n {{ isMoreList ? ('@pry.search.namedQuery.seeLess' | i18n) : ('@pry.search.namedQuery.seeMore' | i18n) }}\n </button>\n </ng-container>\n\n <ng-template #noNamedQuery>\n <p class=\"search-home__container-search\">{{ '@pry.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n </ng-template>\n </ng-container>\n</div>\n\n<div class=\"o-pry-search-home__search\">\n <h3 class=\"a-h3\">{{ '@pry.search.home.ssTitle' | i18n }}</h3>\n <ng-container *ngIf=\"searchFulltextTpl\">\n <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n <p class=\"a-p o-pry-search-home__search__or\">{{ '@pry.search.home.or' | i18n }}</p>\n </ng-container>\n <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></pry-icon>\n {{ '@pry.search.home.searchByCriteria' | i18n }}\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n</div>\n\n<ng-template #templateSpot>\n <div (mouseleave)=\"hideSpot()\">\n {{\n ((spottingWidget$ | async)?.length ?? 0 > 0\n ? '@pry.search.namedQuery.spotTitle'\n : '@pry.search.namedQuery.noSpot'\n ) | i18n : { length: (spottingWidget$ | async)?.length }\n }}\n <div *ngFor=\"let use of spottingWidget$ | async\" class=\"spot-line\">\n <pry-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></pry-icon>\n {{ '@pry.search.namedQuery.type.' + use.type | i18n }} - {{ '@pry.search.namedQuery.use' | i18n : use }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n <div>\n <button\n *ngFor=\"let option of refreshOptions\"\n class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n (click)=\"selectRefresh(option)\"\n >\n <pry-icon\n [width]=\"20\"\n [height]=\"20\"\n iconSvg=\"check\"\n *ngIf=\"(((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option\"\n ></pry-icon>\n {{ '@pry.search.namedQuery.refresh.' + option | i18n }}\n </button>\n </div>\n</ng-template>\n" }]
|
|
183
|
+
args: [{ selector: 'pry-search-home', template: "<pry-search-css></pry-search-css>\n<div class=\"o-pry-search-home__named-query\">\n @if (namedQueryList$ | async; as namedQuery) {\n @if (namedQuery.length > 0) {\n <div class=\"o-pry-search-home__named-query__card\">\n <pry-expand-panel [open]=\"true\">\n <pry-expand-panel-title>{{ '@pry.search.home.title' | i18n }}</pry-expand-panel-title>\n @for (nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery; track nq) {\n <pry-card>\n <pry-card-header [marker]=\"true\">\n <pry-card-icon>\n <pry-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></pry-nq-color-selector>\n <img\n [alt]=\"nq.id | translateId : { type: 'datasource', output: 'name' } | async\"\n [height]=\"22\"\n [width]=\"22\"\n [src]=\"nq.id | translateId : { type: 'datasource', output: 'icon' } | async\"\n />\n </pry-card-icon>\n <pry-card-title>\n <div class=\"o-pry-card-title__text\" aria-describedby=\"infoTooltip_searchHome\">\n <div class=\"a-p o-pry-card-title__text__title\">{{ nq.name }}</div>\n @if (nq.description) {\n <div class=\"a-p o-pry-card-title__text__description\">{{ nq.description }}</div>\n }\n </div>\n <ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n <span class=\"m-tooltip__text\">\n {{ nq.name }}\n </span>\n @if (nq.description) {\n <span class=\"m-tooltip__description\">\n {{ nq.description }}\n </span>\n }\n </div>\n </ng-template>\n @if (nq.favorite) {\n <pry-icon\n class=\"o-pry-card-title__pin\"\n [width]=\"18\"\n [height]=\"18\"\n aria-label=\"favorite\"\n iconSvg=\"epingle\"\n ></pry-icon>\n }\n @if ((layout$ | async) !== DashboardGridLayout.MANUAL) {\n <button\n [attr.data-tooltip]=\"'@pry.search.home.showAssociatedWidget' | i18n\"\n data-tooltip-position=\"bottom\"\n class=\"a-tooltip a-btn a-btn--secondary -size-sm -override-tooltip-position\"\n (click)=\"onSearchNamedQuery(nq.id)\"\n >\n {{ '@pry.search.namedQuery.display' | i18n }}\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.associatedWidget' | i18n }}</span>\n </button>\n }\n </pry-card-title>\n <pry-card-menu>\n <div class=\"o-pry-card-menu__nav\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onFavorite(nq.id, nq.favorite)\"\n >\n <pry-icon iconSvg=\"epingle\"></pry-icon>\n {{ (nq.favorite ? '@pry.search.namedQuery.noFavorite' : '@pry.search.namedQuery.favorite') | i18n }}\n </button>\n <pry-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n {{ '@pry.search.namedQuery.refreshData' | i18n }}\n </button>\n </pry-card-menu>\n @if ((layout$ | async) !== DashboardGridLayout.MANUAL) {\n <pry-card-menu>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n cdkOverlayOrigin\n #triggerLoad=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n {{ '@pry.search.namedQuery.display' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"loadOpened = undefined\"\n >\n <div class=\"o-draggable-menu -search-home\">\n <ul class=\"o-draggable-menu__list\">\n @for (menu of structure; track menu) {\n <li class=\"o-draggable-menu__list__item\">\n <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <pry-icon [iconSvg]=\"menu.icon\"></pry-icon>\n {{ menu.label | i18n }}\n </button>\n <ul class=\"o-draggable-menu__list__submenu\">\n @for (sub of menu.sub; track sub) {\n <li class=\"o-draggable-menu__list__submenu__item\">\n <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n <pry-icon [iconSvg]=\"sub.icon\"></pry-icon>\n {{ sub.label | i18n }}\n </button>\n </li>\n }\n </ul>\n </li>\n }\n </ul>\n </div>\n </ng-template>\n </pry-card-menu>\n }\n <pry-card-menu class=\"o-pry-card-menu__nav__item\">\n <pry-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></pry-nq-color-selector>\n </pry-card-menu>\n <pry-card-menu (click)=\"onSpot(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"mode_clic\"></pry-icon>\n {{ '@pry.search.namedQuery.spot' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <pry-card-menu (click)=\"onRefresh(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"history-line\"></pry-icon>\n {{ '@pry.search.namedQuery.refresh.title' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n @if (nq.owner) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onDelete(nq)\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n {{ '@pry.search.namedQuery.delete' | i18n }}\n </button>\n }\n @if (nq.owner) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onRename(nq)\"\n >\n <pry-icon iconSvg=\"renamed\"></pry-icon>\n {{ '@pry.search.namedQuery.rename' | i18n }}\n </button>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onEdit(nq)\"\n (keydown.tab)=\"hideSpot()\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n {{ '@pry.search.namedQuery.edit' | i18n }}\n </button>\n </div>\n </pry-card-menu>\n </pry-card-header>\n </pry-card>\n }\n </pry-expand-panel>\n </div>\n @if (namedQuery.length > 2) {\n <button\n class=\"a-btn -link-like\"\n aria-pressed=\"false\"\n id=\"btn_view_more\"\n (click)=\"onChangeListView(isMoreList)\"\n >\n {{ isMoreList ? ('@pry.search.namedQuery.seeLess' | i18n) : ('@pry.search.namedQuery.seeMore' | i18n) }}\n </button>\n }\n } @else {\n <p class=\"search-home__container-search\">{{ '@pry.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n }\n }\n</div>\n\n<div class=\"o-pry-search-home__search\">\n <h3 class=\"a-h3\">{{ '@pry.search.home.ssTitle' | i18n }}</h3>\n @if (searchFulltextTpl) {\n <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n <p class=\"a-p o-pry-search-home__search__or\">{{ '@pry.search.home.or' | i18n }}</p>\n }\n <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></pry-icon>\n {{ '@pry.search.home.searchByCriteria' | i18n }}\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n</div>\n\n<ng-template #templateSpot>\n <div (mouseleave)=\"hideSpot()\">\n {{\n ((spottingWidget$ | async)?.length ?? 0 > 0\n ? '@pry.search.namedQuery.spotTitle'\n : '@pry.search.namedQuery.noSpot'\n ) | i18n : { length: (spottingWidget$ | async)?.length }\n }}\n @for (use of spottingWidget$ | async; track use) {\n <div class=\"spot-line\">\n <pry-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></pry-icon>\n {{ '@pry.search.namedQuery.type.' + use.type | i18n }} - {{ '@pry.search.namedQuery.use' | i18n : use }}\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n <div>\n @for (option of refreshOptions; track option) {\n <button\n class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n (click)=\"selectRefresh(option)\"\n >\n @if ((((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option) {\n <pry-icon\n [width]=\"20\"\n [height]=\"20\"\n iconSvg=\"check\"\n ></pry-icon>\n }\n {{ '@pry.search.namedQuery.refresh.' + option | i18n }}\n </button>\n }\n </div>\n</ng-template>\n" }]
|
|
184
184
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.PryDialogService }], propDecorators: { templateSpot: [{
|
|
185
185
|
type: ViewChild,
|
|
186
186
|
args: ['templateSpot', { read: TemplateRef }]
|
|
@@ -196,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
196
196
|
}], changeSearchCriteria: [{
|
|
197
197
|
type: Output
|
|
198
198
|
}] } });
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhvbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvc2VhcmNoL3NlYXJjaC1ob21lL3NlYXJjaC1ob21lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtaG9tZS9zZWFyY2gtaG9tZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThCLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixvQkFBb0IsRUFHcEIsZUFBZSxFQUNmLHlCQUF5QixFQUd6QixhQUFhLEVBRWQsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQWMsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7Ozs7QUFPdEYsTUFBTSxPQUFPLHNCQUFzQjtJQThDakMsWUFDVSxLQUFZLEVBQ1osT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFNBQTJCO1FB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LElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQVU7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLENBQ3RHLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs4R0EzTlUsc0JBQXNCO2tHQUF0QixzQkFBc0IsMlRBQ0UsV0FBVyw2R0FDUixXQUFXLDZCQzNDbkQsNDdXQWtQQTs7MkZEek1hLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDRSxpQkFBaUI7OEpBSXVCLFlBQVk7c0JBQTdELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDSyxlQUFlO3NCQUFuRSxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFMUMsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIENvbmZpZ0FjdGlvbnMsXG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgRGF0YVNvdXJjZUFjdGlvbnMsXG4gIERhdGFTb3VyY2VTZWxlY3RvcnMsXG4gIERhdGFzb3VyY2VVdGlscyxcbiAgZGVmYXVsdE1lbnVTdHJ1Y3R1cmUsXG4gIEZ1bGxUZXh0U2VhcmNoUGF5bG9hZCxcbiAgTmFtZWRRdWVyeSxcbiAgTmFtZWRRdWVyeVR5cGVzLFxuICBQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LFxuICBQcnlEaWFsb2dDb25maXJtRGF0YSxcbiAgUHJ5RGlhbG9nU2VydmljZSxcbiAgU2VhcmNoQWN0aW9ucyxcbiAgV2lkZ2V0TGF5b3V0XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGNvbWJpbmVMYXRlc3RXaXRoLCBmaWx0ZXIsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcnlTYXZlUXVlcnlDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NhdmUtcXVlcnkvc2F2ZS1xdWVyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoRnVsbHRleHRDaGFuZ2UgfSBmcm9tICcuLi9zZWFyY2gtZnVsbHRleHQvc2VhcmNoLWZ1bGx0ZXh0L3NlYXJjaC1mdWxsdGV4dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktc2VhcmNoLWhvbWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWhvbWUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVNlYXJjaEhvbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlU3BvdCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVTcG90ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVSZWZyZXNoJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZVJlZnJlc2ghOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIHNlYXJjaEZ1bGx0ZXh0VHBsPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgaXNNb3JlTGlzdCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2VMaXN0VmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNoYW5nZVNlYXJjaENyaXRlcmlhID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIG5hbWVkUXVlcnlMaXN0JD86IE9ic2VydmFibGU8TmFtZWRRdWVyeVtdPjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBuYW1lZFF1ZXJpZXNVc2VzJCE6IE9ic2VydmFibGU8eyBbcDogc3RyaW5nXTogeyB3aW5kb3dJbmRleDogbnVtYmVyOyB0eXBlOiBzdHJpbmc7IGxheW91dDogV2lkZ2V0TGF5b3V0IH1bXSB9PjtcbiAgc3BvdHRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgc3BvdHRpbmdXaWRnZXQkITogT2JzZXJ2YWJsZTx7IHdpbmRvd0luZGV4OiBudW1iZXI7IHR5cGU6IHN0cmluZzsgbGF5b3V0OiBXaWRnZXRMYXlvdXQgfVtdPjtcbiAgcmVmcmVzaE9wdGlvbnMgPSBbMCwgMTAsIDMwLCA2MF07XG5cbiAgaWNvbnMgPSB7XG4gICAgbWFwOiAnc2hhcmVfbG9jYXRpb24nLFxuICAgIHRhYmxlOiAndGFibGVfY2hhcnQnLFxuICAgIGNoYXJ0OiAnc2hvd19jaGFydCcsXG4gICAgZ3JhcGg6ICdncmFwaCdcbiAgfSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIGxvYWRPcGVuZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuXG4gIHJlYWRvbmx5IGNvbm5lY3RlZFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAndG9wJ1xuICB9O1xuICBzdHJ1Y3R1cmUgPSBkZWZhdWx0TWVudVN0cnVjdHVyZS5tYXAoKGl0ZW1zKSA9PiAoe1xuICAgIC4uLml0ZW1zLFxuICAgIHN1YjogaXRlbXMuc3ViLmZpbHRlcigocykgPT4gcy50eXBlICE9PSAnaWZyYW1lJyAmJiBzLnR5cGUgIT09ICdkZXRhaWwnKVxuICB9KSk7XG5cbiAgcmVmcmVzaFJhdGVzJCE6IE9ic2VydmFibGU8eyBbcDogc3RyaW5nXTogbnVtYmVyIH0+O1xuICByZWZyZXNoSWQ6IHN0cmluZyA9ICcnO1xuICBkZWxldGVFcnJvciQ/OiBPYnNlcnZhYmxlPGFueT47XG4gIGxheW91dCQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIERhc2hib2FyZEdyaWRMYXlvdXQgPSBEYXNoYm9hcmRHcmlkTGF5b3V0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBwcnlEaWFsb2c6IFByeURpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLm5hbWVkUXVlcnlMaXN0JCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZ2V0TmFtZWRRdWVyeVNvcnRlZCk7XG4gICAgdGhpcy5uYW1lZFF1ZXJpZXNVc2VzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5uYW1lZFF1ZXJpZXNVc2VzKTtcbiAgICB0aGlzLnNwb3R0aW5nV2lkZ2V0JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubmFtZWRRdWVyaWVzVXNlcyQsIHRoaXMuc3BvdHRpbmckXSkucGlwZShcbiAgICAgIG1hcCgoW3VzZXMsIHNwb3R0aW5nXSkgPT4gdXNlc1tzcG90dGluZ10gPz8gW10pLFxuICAgICAgbWFwKCh1c2VzKSA9PiB1c2VzLm1hcCgodXNlKSA9PiAoeyAuLi51c2UsIHdpbmRvd0luZGV4OiB1c2Uud2luZG93SW5kZXggKyAxIH0pKSlcbiAgICApO1xuICAgIHRoaXMucmVmcmVzaFJhdGVzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZWZyZXNoUmF0ZXMpO1xuICAgIHRoaXMubGF5b3V0JCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5ncmlkTGF5b3V0KTtcbiAgICB0aGlzLmRlbGV0ZUVycm9yJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZXJyb3JzKS5waXBlKGRlYm91bmNlVGltZSgxMDApKTtcbiAgfVxuXG4gIG9uU2VhcmNoTmFtZWRRdWVyeShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uKHsgaWQsIHdpZGdldFR5cGU6ICd0YWJsZScgfSkpO1xuICB9XG5cbiAgb25GYXZvcml0ZShpZDogc3RyaW5nLCBpc0Zhdm9yaXRlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFpc0Zhdm9yaXRlKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuYWRkRmF2b3JpdGUoeyBpZCB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5kZWxldGVGYXZvcml0ZSh7IGlkIH0pKTtcbiAgICB9XG4gIH1cblxuICBvblNwb3QoaWQ6IHN0cmluZywgJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5zcG90dGluZyQubmV4dChpZCk7XG5cbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3Nwb3QtcnMnXVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlU3BvdCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgICBjb25zdCBzcG90RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zcG90LXJzJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBpZiAoISFzcG90RWxlbWVudCkge1xuICAgICAgICBzcG90RWxlbWVudC5zdHlsZS5sZWZ0ID0gJGV2ZW50LmNsaWVudFggLSAxMCArICdweCc7XG4gICAgICAgIHNwb3RFbGVtZW50LnN0eWxlLnRvcCA9ICRldmVudC5jbGllbnRZIC0gMTAgKyAncHgnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhpZGVTcG90KCkge1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBvbkVkaXQobmFtZWRRdWVyeTogTmFtZWRRdWVyeSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5lZGl0KHsgY3VycmVudEVkaXQ6IG5hbWVkUXVlcnkgfSkpO1xuICB9XG5cbiAgb25DaGFuZ2VMaXN0Vmlldyhpc01vcmVMaXN0OiBib29sZWFuKSB7XG4gICAgdGhpcy5jaGFuZ2VMaXN0Vmlldy5lbWl0KGlzTW9yZUxpc3QpO1xuICB9XG5cbiAgb25TZWFyY2hDcml0ZXJpYSgpIHtcbiAgICB0aGlzLmNoYW5nZVNlYXJjaENyaXRlcmlhLmVtaXQoKTtcbiAgfVxuXG4gIGxvYWRXaWRnZXQoaWQ6IHN0cmluZywgc3ViOiB7IGljb246IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24oeyBpZCwgd2lkZ2V0VHlwZTogc3ViLnR5cGUgfSkpO1xuICAgIHRoaXMubG9hZE9wZW5lZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIG9uRGVsZXRlKG5xOiBOYW1lZFF1ZXJ5KSB7XG4gICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICB0aXRsZTogJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuZGVsZXRlJyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgeyBpZDogMCwgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnLCBjb2xvcjogJ3NlY29uZGFyeScgfSxcbiAgICAgICAgeyBpZDogMSwgbGFiZWw6ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LmRlbGV0ZScgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XG4gICAgICBkYXRhXG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgZGlhbG9nLmNsb3NlVmFsdWUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGFjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6ICdQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50JyB9KSk7XG4gICAgICAgIGlmIChhY3Rpb24uaWQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZGVsZXRlKHsgaWQ6IG5xLmlkID8/ICcnIH0pKTtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUVycm9yJFxuICAgICAgICAgICAgICA/LnBpcGUoXG4gICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5pc0xvYWRpbmcpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKFssIGlzTG9hZGluZ10pID0+ICFpc0xvYWRpbmcpLFxuICAgICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbZXJyb3JdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yPy5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQHByeS5tYW5pZmVzdC5kZWxldGVFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFt7IGlkOiAxLCBsYWJlbDogJ0BwcnkudG9vbGJveC5jbG9zZScgfV1cbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBjb25zdCBlcnJvckRpYWxvZyA9IHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEaWFsb2cuY2xvc2VWYWx1ZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiAnUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCcgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb25SZW5hbWUobnE6IE5hbWVkUXVlcnkpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkub3BlblJlbmFtZSgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZWRpdCh7IGN1cnJlbnRFZGl0OiBucSB9KSk7XG4gICAgY29uc3Qgc2F2ZSA9IGZhbHNlO1xuICAgIGNvbnN0IHR5cGUgPSBEYXRhc291cmNlVXRpbHMuZ2V0VHlwZUZyb21QYXlsb2FkKG5xLnJlcXVlc3QpO1xuICAgIGNvbnN0IGRhdGEgPVxuICAgICAgdHlwZSA9PT0gTmFtZWRRdWVyeVR5cGVzLkZVTExfVEVYVFxuICAgICAgICA/IHsgc2F2ZSwgdHlwZSwgcGF5bG9hZDogdGhpcy5leHRyYWN0UGF5bG9hZChucS5yZXF1ZXN0IGFzIEZ1bGxUZXh0U2VhcmNoUGF5bG9hZCkgfVxuICAgICAgICA6IHsgc2F2ZSwgdHlwZSB9O1xuICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5U2F2ZVF1ZXJ5Q29tcG9uZW50LCB7IGRhdGEgfSk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RQYXlsb2FkKHBheWxvYWQ6IEZ1bGxUZXh0U2VhcmNoUGF5bG9hZCk6IFNlYXJjaEZ1bGx0ZXh0Q2hhbmdlIHtcbiAgICBjb25zdCB7IGZ1bGxTZWFyY2gsIG9DbGFzc2VzIH0gPSBwYXlsb2FkO1xuICAgIHJldHVybiB7IHZhbHVlOiBmdWxsU2VhcmNoLnZhbHVlLCBjbGFzc2VzOiBvQ2xhc3NlcyA/PyBbXSB9O1xuICB9XG5cbiAgb25SZWZyZXNoKGlkOiBzdHJpbmcsICRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMucmVmcmVzaElkID0gaWQ7XG5cbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsncmVmcmVzaC1ycyddXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmFkZGluZ092ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVSZWZyZXNoLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLmhpZGVTcG90KCkpO1xuICAgICAgY29uc3QgcmVmcmVzaEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucmVmcmVzaC1ycycpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgY29uc3QgcmVmcmVzaCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yZWZyZXNoYnQnKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGlmICghIXJlZnJlc2hFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSByZWZyZXNoLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZWZyZXNoRWxlbWVudC5zdHlsZS5sZWZ0ID0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCArIDEwICsgJ3B4JztcbiAgICAgICAgcmVmcmVzaEVsZW1lbnQuc3R5bGUudG9wID0gcmVjdC50b3AgKyAxMzcgKyAncHgnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJlZnJlc2goJGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2V0UmVmcmVzaFJhdGUoeyBpZDogdGhpcy5yZWZyZXNoSWQgPz8gJycsIHJhdGU6ICRldmVudCB9KSk7XG4gICAgdGhpcy5oaWRlU3BvdCgpO1xuICB9XG5cbiAgcmVmcmVzaChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHsgaWQsIGV4Y2x1ZGVHZW86IGZhbHNlLCBmcm9tOiAnUHJ5U2VhcmNoSG9tZUNvbXBvbmVudC5yZWZyZXNoKCknIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxwcnktc2VhcmNoLWNzcz48L3ByeS1zZWFyY2gtY3NzPlxuPGRpdiBjbGFzcz1cIm8tcHJ5LXNlYXJjaC1ob21lX19uYW1lZC1xdWVyeVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibmFtZWRRdWVyeUxpc3QkIHwgYXN5bmMgYXMgbmFtZWRRdWVyeVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYW1lZFF1ZXJ5Lmxlbmd0aCA+IDA7IGVsc2Ugbm9OYW1lZFF1ZXJ5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcnktc2VhcmNoLWhvbWVfX25hbWVkLXF1ZXJ5X19jYXJkXCI+XG4gICAgICAgIDxwcnktZXhwYW5kLXBhbmVsIFtvcGVuXT1cInRydWVcIj5cbiAgICAgICAgICA8cHJ5LWV4cGFuZC1wYW5lbC10aXRsZT57eyAnQHByeS5zZWFyY2guaG9tZS50aXRsZScgfCBpMThuIH19PC9wcnktZXhwYW5kLXBhbmVsLXRpdGxlPlxuXG4gICAgICAgICAgPHByeS1jYXJkICpuZ0Zvcj1cImxldCBucSBvZiBuYW1lZFF1ZXJ5Lmxlbmd0aCA+IDEgJiYgIWlzTW9yZUxpc3QgPyBuYW1lZFF1ZXJ5LnNsaWNlKDAsIDIpIDogbmFtZWRRdWVyeVwiPlxuICAgICAgICAgICAgPHByeS1jYXJkLWhlYWRlciBbbWFya2VyXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgPHByeS1jYXJkLWljb24+XG4gICAgICAgICAgICAgICAgPHByeS1ucS1jb2xvci1zZWxlY3RvciBbZGF0YXNvdXJjZV09XCJucVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9wcnktbnEtY29sb3Itc2VsZWN0b3I+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgW2FsdF09XCJucS5pZCB8IHRyYW5zbGF0ZUlkIDogeyB0eXBlOiAnZGF0YXNvdXJjZScsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjIyXCJcbiAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIyMlwiXG4gICAgICAgICAgICAgICAgICBbc3JjXT1cIm5xLmlkIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdkYXRhc291cmNlJywgb3V0cHV0OiAnaWNvbicgfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3ByeS1jYXJkLWljb24+XG5cbiAgICAgICAgICAgICAgPHByeS1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByeS1jYXJkLXRpdGxlX190ZXh0XCIgYXJpYS1kZXNjcmliZWRieT1cImluZm9Ub29sdGlwX3NlYXJjaEhvbWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLXAgby1wcnktY2FyZC10aXRsZV9fdGV4dF9fdGl0bGVcIj57eyBucS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1wIG8tcHJ5LWNhcmQtdGl0bGVfX3RleHRfX2Rlc2NyaXB0aW9uXCIgKm5nSWY9XCJucS5kZXNjcmlwdGlvblwiPnt7IG5xLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbmZvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiIGlkPVwiaW5mb1Rvb2x0aXBfc2VhcmNoSG9tZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tdG9vbHRpcF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IG5xLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tdG9vbHRpcF9fZGVzY3JpcHRpb25cIiAqbmdJZj1cIm5xLmRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgbnEuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiby1wcnktY2FyZC10aXRsZV9fcGluXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibnEuZmF2b3JpdGVcIlxuICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE4XCJcbiAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMThcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImZhdm9yaXRlXCJcbiAgICAgICAgICAgICAgICAgIGljb25Tdmc9XCJlcGluZ2xlXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5zZWFyY2guaG9tZS5zaG93QXNzb2NpYXRlZFdpZGdldCcgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImEtdG9vbHRpcCBhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1zaXplLXNtIC1vdmVycmlkZS10b29sdGlwLXBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlYXJjaE5hbWVkUXVlcnkobnEuaWQpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGxheW91dCQgfCBhc3luYykgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5kaXNwbGF5JyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5zZWFyY2guaG9tZS5hc3NvY2lhdGVkV2lkZ2V0JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvcHJ5LWNhcmQtdGl0bGU+XG5cbiAgICAgICAgICAgICAgPHByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJ5LWNhcmQtbWVudV9fbmF2XCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgby1wcnktY2FyZC1tZW51X19uYXZfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25GYXZvcml0ZShucS5pZCwgbnEuZmF2b3JpdGUpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJlcGluZ2xlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgKG5xLmZhdm9yaXRlID8gJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkubm9GYXZvcml0ZScgOiAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5mYXZvcml0ZScpIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWNhcmQtbWVudSAoY2xpY2spPVwicmVmcmVzaChucS5pZClcIiBjbGFzcz1cInJlZnJlc2hidFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgby1wcnktY2FyZC1tZW51X19uYXZfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInN5bmNocm9cIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnJlZnJlc2hEYXRhJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L3ByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWNhcmQtbWVudSAqbmdJZj1cIihsYXlvdXQkIHwgYXN5bmMpICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi10ZXh0IG8tcHJ5LWNhcmQtbWVudV9fbmF2X19pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibG9hZE9wZW5lZCA9IG5xLmlkOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgICAjdHJpZ2dlckxvYWQ9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZmlsZV9kb3dubG9hZFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuZGlzcGxheScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uU3ZnPVwiZmxlY2hlX2hhdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyB0cmFuc2Zvcm06ICdyb3RhdGUoOTBkZWcpJywgbWFyZ2luTGVmdDogJ2F1dG8nIH1cIlxuICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlckxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJsb2FkT3BlbmVkID09PSBucS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJbY29ubmVjdGVkUG9zaXRpb25dXCJcbiAgICAgICAgICAgICAgICAgICAgICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAoYmFja2Ryb3BDbGljayk9XCJsb2FkT3BlbmVkID0gdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51IC1zZWFyY2gtaG9tZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudV9fbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIHN0cnVjdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBbaWNvblN2Z109XCJtZW51Lmljb25cIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtZW51LmxhYmVsIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX3N1Ym1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViIG9mIG1lbnUuc3ViXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudV9fbGlzdF9fc3VibWVudV9faXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuXCIgKGNsaWNrKT1cImxvYWRXaWRnZXQobnEuaWQsIHN1YilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIFtpY29uU3ZnXT1cInN1Yi5pY29uXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3ViLmxhYmVsIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvcHJ5LWNhcmQtbWVudT5cblxuICAgICAgICAgICAgICAgICAgPHByeS1jYXJkLW1lbnUgY2xhc3M9XCJvLXByeS1jYXJkLW1lbnVfX25hdl9faXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LW5xLWNvbG9yLXNlbGVjdG9yIFtuZ1N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCIgW2RhdGFzb3VyY2VdPVwibnFcIj48L3ByeS1ucS1jb2xvci1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICAgIDwvcHJ5LWNhcmQtbWVudT5cblxuICAgICAgICAgICAgICAgICAgPHByeS1jYXJkLW1lbnUgKGNsaWNrKT1cIm9uU3BvdChucS5pZCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgby1wcnktY2FyZC1tZW51X19uYXZfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cIm1vZGVfY2xpY1wiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuc3BvdCcgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uU3ZnPVwiZmxlY2hlX2hhdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyB0cmFuc2Zvcm06ICdyb3RhdGUoOTBkZWcpJywgbWFyZ2luTGVmdDogJ2F1dG8nIH1cIlxuICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvcHJ5LWNhcmQtbWVudT5cbiAgICAgICAgICAgICAgICAgIDxwcnktY2FyZC1tZW51IChjbGljayk9XCJvblJlZnJlc2gobnEuaWQsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi10ZXh0IG8tcHJ5LWNhcmQtbWVudV9fbmF2X19pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJoaXN0b3J5LWxpbmVcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnJlZnJlc2gudGl0bGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN2Zz1cImZsZWNoZV9oYXV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgdHJhbnNmb3JtOiAncm90YXRlKDkwZGVnKScsIG1hcmdpbkxlZnQ6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L3ByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgby1wcnktY2FyZC1tZW51X19uYXZfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUobnEpXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJucS5vd25lclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZGVsZXRlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuZGVsZXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi10ZXh0IG8tcHJ5LWNhcmQtbWVudV9fbmF2X19pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVuYW1lKG5xKVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibnEub3duZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInJlbmFtZWRcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5yZW5hbWUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgby1wcnktY2FyZC1tZW51X19uYXZfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0KG5xKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJoaWRlU3BvdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJlZGl0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuZWRpdCcgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9wcnktY2FyZC1tZW51PlxuICAgICAgICAgICAgPC9wcnktY2FyZC1oZWFkZXI+XG4gICAgICAgICAgPC9wcnktY2FyZD5cbiAgICAgICAgPC9wcnktZXhwYW5kLXBhbmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiXG4gICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgaWQ9XCJidG5fdmlld19tb3JlXCJcbiAgICAgICAgKm5nSWY9XCJuYW1lZFF1ZXJ5Lmxlbmd0aCA+IDJcIlxuICAgICAgICAoY2xpY2spPVwib25DaGFuZ2VMaXN0Vmlldyhpc01vcmVMaXN0KVwiXG4gICAgICA+XG4gICAgICAgIHt7IGlzTW9yZUxpc3QgPyAoJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuc2VlTGVzcycgfCBpMThuKSA6ICgnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5zZWVNb3JlJyB8IGkxOG4pIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbm9OYW1lZFF1ZXJ5PlxuICAgICAgPHAgY2xhc3M9XCJzZWFyY2gtaG9tZV9fY29udGFpbmVyLXNlYXJjaFwiPnt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LmVtcHR5TmFtZWRRdWVyeScgfCBpMThuIH19PC9wPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvLXByeS1zZWFyY2gtaG9tZV9fc2VhcmNoXCI+XG4gIDxoMyBjbGFzcz1cImEtaDNcIj57eyAnQHByeS5zZWFyY2guaG9tZS5zc1RpdGxlJyB8IGkxOG4gfX08L2gzPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoRnVsbHRleHRUcGxcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlYXJjaEZ1bGx0ZXh0VHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPHAgY2xhc3M9XCJhLXAgby1wcnktc2VhcmNoLWhvbWVfX3NlYXJjaF9fb3JcIj57eyAnQHByeS5zZWFyY2guaG9tZS5vcicgfCBpMThuIH19PC9wPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IC13aWR0aC1mdWxsXCIgKGNsaWNrKT1cIm9uU2VhcmNoQ3JpdGVyaWEoKVwiPlxuICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCIgaWNvblN2Zz1cInNlYXJjaC1jcml0ZXJpYVwiPjwvcHJ5LWljb24+XG4gICAge3sgJ0Bwcnkuc2VhcmNoLmhvbWUuc2VhcmNoQnlDcml0ZXJpYScgfCBpMThuIH19XG4gICAgPHByeS1pY29uIGljb25Tdmc9XCJhcnJvd19yaWdodFwiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVTcG90PlxuICA8ZGl2IChtb3VzZWxlYXZlKT1cImhpZGVTcG90KClcIj5cbiAgICB7e1xuICAgICAgKChzcG90dGluZ1dpZGdldCQgfCBhc3luYyk/Lmxlbmd0aCA/PyAwID4gMFxuICAgICAgICA/ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnNwb3RUaXRsZSdcbiAgICAgICAgOiAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5ub1Nwb3QnXG4gICAgICApIHwgaTE4biA6IHsgbGVuZ3RoOiAoc3BvdHRpbmdXaWRnZXQkIHwgYXN5bmMpPy5sZW5ndGggfVxuICAgIH19XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgdXNlIG9mIHNwb3R0aW5nV2lkZ2V0JCB8IGFzeW5jXCIgY2xhc3M9XCJzcG90LWxpbmVcIj5cbiAgICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCIgW2ljb25TdmddPVwiaWNvbnNbdXNlLnR5cGVdXCI+PC9wcnktaWNvbj5cbiAgICAgIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnR5cGUuJyArIHVzZS50eXBlIHwgaTE4biB9fSAtIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnVzZScgfCBpMThuIDogdXNlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVJlZnJlc2g+XG4gIDxkaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiByZWZyZXNoT3B0aW9uc1wiXG4gICAgICBjbGFzcz1cInJlZnJlc2gtbGluZSBhLWJ0biBhLWJ0bi0taWNvbi10ZXh0IC1zaXplLXNtXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RSZWZyZXNoKG9wdGlvbilcIlxuICAgID5cbiAgICAgIDxwcnktaWNvblxuICAgICAgICBbd2lkdGhdPVwiMjBcIlxuICAgICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICAgaWNvblN2Zz1cImNoZWNrXCJcbiAgICAgICAgKm5nSWY9XCIoKChyZWZyZXNoUmF0ZXMkIHwgYXN5bmMpID8/IHt9KVtyZWZyZXNoSWRdID8/IDApID09PSBvcHRpb25cIlxuICAgICAgPjwvcHJ5LWljb24+XG4gICAgICB7eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5yZWZyZXNoLicgKyBvcHRpb24gfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhvbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvc2VhcmNoL3NlYXJjaC1ob21lL3NlYXJjaC1ob21lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3NlYXJjaC9zZWFyY2gtaG9tZS9zZWFyY2gtaG9tZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThCLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixvQkFBb0IsRUFHcEIsZUFBZSxFQUNmLHlCQUF5QixFQUd6QixhQUFhLEVBRWQsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQWMsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7Ozs7QUFPdEYsTUFBTSxPQUFPLHNCQUFzQjtJQThDakMsWUFDVSxLQUFZLEVBQ1osT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFNBQTJCO1FB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LElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQVU7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLENBQ3RHLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs4R0EzTlUsc0JBQXNCO2tHQUF0QixzQkFBc0IsMlRBQ0UsV0FBVyw2R0FDUixXQUFXLDZCQzNDbkQsc2lZQXlQQTs7MkZEaE5hLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDRSxpQkFBaUI7OEpBSXVCLFlBQVk7c0JBQTdELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDSyxlQUFlO3NCQUFuRSxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFMUMsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIENvbmZpZ0FjdGlvbnMsXG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgRGF0YVNvdXJjZUFjdGlvbnMsXG4gIERhdGFTb3VyY2VTZWxlY3RvcnMsXG4gIERhdGFzb3VyY2VVdGlscyxcbiAgZGVmYXVsdE1lbnVTdHJ1Y3R1cmUsXG4gIEZ1bGxUZXh0U2VhcmNoUGF5bG9hZCxcbiAgTmFtZWRRdWVyeSxcbiAgTmFtZWRRdWVyeVR5cGVzLFxuICBQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LFxuICBQcnlEaWFsb2dDb25maXJtRGF0YSxcbiAgUHJ5RGlhbG9nU2VydmljZSxcbiAgU2VhcmNoQWN0aW9ucyxcbiAgV2lkZ2V0TGF5b3V0XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGNvbWJpbmVMYXRlc3RXaXRoLCBmaWx0ZXIsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcnlTYXZlUXVlcnlDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NhdmUtcXVlcnkvc2F2ZS1xdWVyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoRnVsbHRleHRDaGFuZ2UgfSBmcm9tICcuLi9zZWFyY2gtZnVsbHRleHQvc2VhcmNoLWZ1bGx0ZXh0L3NlYXJjaC1mdWxsdGV4dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktc2VhcmNoLWhvbWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWhvbWUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVNlYXJjaEhvbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlU3BvdCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVTcG90ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVSZWZyZXNoJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZVJlZnJlc2ghOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIHNlYXJjaEZ1bGx0ZXh0VHBsPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgaXNNb3JlTGlzdCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2VMaXN0VmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNoYW5nZVNlYXJjaENyaXRlcmlhID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIG5hbWVkUXVlcnlMaXN0JD86IE9ic2VydmFibGU8TmFtZWRRdWVyeVtdPjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBuYW1lZFF1ZXJpZXNVc2VzJCE6IE9ic2VydmFibGU8eyBbcDogc3RyaW5nXTogeyB3aW5kb3dJbmRleDogbnVtYmVyOyB0eXBlOiBzdHJpbmc7IGxheW91dDogV2lkZ2V0TGF5b3V0IH1bXSB9PjtcbiAgc3BvdHRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgc3BvdHRpbmdXaWRnZXQkITogT2JzZXJ2YWJsZTx7IHdpbmRvd0luZGV4OiBudW1iZXI7IHR5cGU6IHN0cmluZzsgbGF5b3V0OiBXaWRnZXRMYXlvdXQgfVtdPjtcbiAgcmVmcmVzaE9wdGlvbnMgPSBbMCwgMTAsIDMwLCA2MF07XG5cbiAgaWNvbnMgPSB7XG4gICAgbWFwOiAnc2hhcmVfbG9jYXRpb24nLFxuICAgIHRhYmxlOiAndGFibGVfY2hhcnQnLFxuICAgIGNoYXJ0OiAnc2hvd19jaGFydCcsXG4gICAgZ3JhcGg6ICdncmFwaCdcbiAgfSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIGxvYWRPcGVuZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuXG4gIHJlYWRvbmx5IGNvbm5lY3RlZFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAndG9wJ1xuICB9O1xuICBzdHJ1Y3R1cmUgPSBkZWZhdWx0TWVudVN0cnVjdHVyZS5tYXAoKGl0ZW1zKSA9PiAoe1xuICAgIC4uLml0ZW1zLFxuICAgIHN1YjogaXRlbXMuc3ViLmZpbHRlcigocykgPT4gcy50eXBlICE9PSAnaWZyYW1lJyAmJiBzLnR5cGUgIT09ICdkZXRhaWwnKVxuICB9KSk7XG5cbiAgcmVmcmVzaFJhdGVzJCE6IE9ic2VydmFibGU8eyBbcDogc3RyaW5nXTogbnVtYmVyIH0+O1xuICByZWZyZXNoSWQ6IHN0cmluZyA9ICcnO1xuICBkZWxldGVFcnJvciQ/OiBPYnNlcnZhYmxlPGFueT47XG4gIGxheW91dCQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIERhc2hib2FyZEdyaWRMYXlvdXQgPSBEYXNoYm9hcmRHcmlkTGF5b3V0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBwcnlEaWFsb2c6IFByeURpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLm5hbWVkUXVlcnlMaXN0JCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZ2V0TmFtZWRRdWVyeVNvcnRlZCk7XG4gICAgdGhpcy5uYW1lZFF1ZXJpZXNVc2VzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5uYW1lZFF1ZXJpZXNVc2VzKTtcbiAgICB0aGlzLnNwb3R0aW5nV2lkZ2V0JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubmFtZWRRdWVyaWVzVXNlcyQsIHRoaXMuc3BvdHRpbmckXSkucGlwZShcbiAgICAgIG1hcCgoW3VzZXMsIHNwb3R0aW5nXSkgPT4gdXNlc1tzcG90dGluZ10gPz8gW10pLFxuICAgICAgbWFwKCh1c2VzKSA9PiB1c2VzLm1hcCgodXNlKSA9PiAoeyAuLi51c2UsIHdpbmRvd0luZGV4OiB1c2Uud2luZG93SW5kZXggKyAxIH0pKSlcbiAgICApO1xuICAgIHRoaXMucmVmcmVzaFJhdGVzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZWZyZXNoUmF0ZXMpO1xuICAgIHRoaXMubGF5b3V0JCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5ncmlkTGF5b3V0KTtcbiAgICB0aGlzLmRlbGV0ZUVycm9yJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZXJyb3JzKS5waXBlKGRlYm91bmNlVGltZSgxMDApKTtcbiAgfVxuXG4gIG9uU2VhcmNoTmFtZWRRdWVyeShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uKHsgaWQsIHdpZGdldFR5cGU6ICd0YWJsZScgfSkpO1xuICB9XG5cbiAgb25GYXZvcml0ZShpZDogc3RyaW5nLCBpc0Zhdm9yaXRlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFpc0Zhdm9yaXRlKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuYWRkRmF2b3JpdGUoeyBpZCB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5kZWxldGVGYXZvcml0ZSh7IGlkIH0pKTtcbiAgICB9XG4gIH1cblxuICBvblNwb3QoaWQ6IHN0cmluZywgJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5zcG90dGluZyQubmV4dChpZCk7XG5cbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3Nwb3QtcnMnXVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlU3BvdCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgICBjb25zdCBzcG90RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zcG90LXJzJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBpZiAoISFzcG90RWxlbWVudCkge1xuICAgICAgICBzcG90RWxlbWVudC5zdHlsZS5sZWZ0ID0gJGV2ZW50LmNsaWVudFggLSAxMCArICdweCc7XG4gICAgICAgIHNwb3RFbGVtZW50LnN0eWxlLnRvcCA9ICRldmVudC5jbGllbnRZIC0gMTAgKyAncHgnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhpZGVTcG90KCkge1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBvbkVkaXQobmFtZWRRdWVyeTogTmFtZWRRdWVyeSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubmFtZWRRdWVyeS5lZGl0KHsgY3VycmVudEVkaXQ6IG5hbWVkUXVlcnkgfSkpO1xuICB9XG5cbiAgb25DaGFuZ2VMaXN0Vmlldyhpc01vcmVMaXN0OiBib29sZWFuKSB7XG4gICAgdGhpcy5jaGFuZ2VMaXN0Vmlldy5lbWl0KGlzTW9yZUxpc3QpO1xuICB9XG5cbiAgb25TZWFyY2hDcml0ZXJpYSgpIHtcbiAgICB0aGlzLmNoYW5nZVNlYXJjaENyaXRlcmlhLmVtaXQoKTtcbiAgfVxuXG4gIGxvYWRXaWRnZXQoaWQ6IHN0cmluZywgc3ViOiB7IGljb246IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24oeyBpZCwgd2lkZ2V0VHlwZTogc3ViLnR5cGUgfSkpO1xuICAgIHRoaXMubG9hZE9wZW5lZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIG9uRGVsZXRlKG5xOiBOYW1lZFF1ZXJ5KSB7XG4gICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICB0aXRsZTogJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuZGVsZXRlJyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgeyBpZDogMCwgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnLCBjb2xvcjogJ3NlY29uZGFyeScgfSxcbiAgICAgICAgeyBpZDogMSwgbGFiZWw6ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LmRlbGV0ZScgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XG4gICAgICBkYXRhXG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgZGlhbG9nLmNsb3NlVmFsdWUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGFjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6ICdQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50JyB9KSk7XG4gICAgICAgIGlmIChhY3Rpb24uaWQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZGVsZXRlKHsgaWQ6IG5xLmlkID8/ICcnIH0pKTtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUVycm9yJFxuICAgICAgICAgICAgICA/LnBpcGUoXG4gICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5pc0xvYWRpbmcpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKFssIGlzTG9hZGluZ10pID0+ICFpc0xvYWRpbmcpLFxuICAgICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbZXJyb3JdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yPy5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQHByeS5tYW5pZmVzdC5kZWxldGVFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFt7IGlkOiAxLCBsYWJlbDogJ0BwcnkudG9vbGJveC5jbG9zZScgfV1cbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBjb25zdCBlcnJvckRpYWxvZyA9IHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEaWFsb2cuY2xvc2VWYWx1ZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiAnUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCcgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb25SZW5hbWUobnE6IE5hbWVkUXVlcnkpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkub3BlblJlbmFtZSgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkuZWRpdCh7IGN1cnJlbnRFZGl0OiBucSB9KSk7XG4gICAgY29uc3Qgc2F2ZSA9IGZhbHNlO1xuICAgIGNvbnN0IHR5cGUgPSBEYXRhc291cmNlVXRpbHMuZ2V0VHlwZUZyb21QYXlsb2FkKG5xLnJlcXVlc3QpO1xuICAgIGNvbnN0IGRhdGEgPVxuICAgICAgdHlwZSA9PT0gTmFtZWRRdWVyeVR5cGVzLkZVTExfVEVYVFxuICAgICAgICA/IHsgc2F2ZSwgdHlwZSwgcGF5bG9hZDogdGhpcy5leHRyYWN0UGF5bG9hZChucS5yZXF1ZXN0IGFzIEZ1bGxUZXh0U2VhcmNoUGF5bG9hZCkgfVxuICAgICAgICA6IHsgc2F2ZSwgdHlwZSB9O1xuICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5U2F2ZVF1ZXJ5Q29tcG9uZW50LCB7IGRhdGEgfSk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RQYXlsb2FkKHBheWxvYWQ6IEZ1bGxUZXh0U2VhcmNoUGF5bG9hZCk6IFNlYXJjaEZ1bGx0ZXh0Q2hhbmdlIHtcbiAgICBjb25zdCB7IGZ1bGxTZWFyY2gsIG9DbGFzc2VzIH0gPSBwYXlsb2FkO1xuICAgIHJldHVybiB7IHZhbHVlOiBmdWxsU2VhcmNoLnZhbHVlLCBjbGFzc2VzOiBvQ2xhc3NlcyA/PyBbXSB9O1xuICB9XG5cbiAgb25SZWZyZXNoKGlkOiBzdHJpbmcsICRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMucmVmcmVzaElkID0gaWQ7XG5cbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsncmVmcmVzaC1ycyddXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmFkZGluZ092ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVSZWZyZXNoLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLmhpZGVTcG90KCkpO1xuICAgICAgY29uc3QgcmVmcmVzaEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucmVmcmVzaC1ycycpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgY29uc3QgcmVmcmVzaCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yZWZyZXNoYnQnKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGlmICghIXJlZnJlc2hFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSByZWZyZXNoLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZWZyZXNoRWxlbWVudC5zdHlsZS5sZWZ0ID0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCArIDEwICsgJ3B4JztcbiAgICAgICAgcmVmcmVzaEVsZW1lbnQuc3R5bGUudG9wID0gcmVjdC50b3AgKyAxMzcgKyAncHgnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJlZnJlc2goJGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2V0UmVmcmVzaFJhdGUoeyBpZDogdGhpcy5yZWZyZXNoSWQgPz8gJycsIHJhdGU6ICRldmVudCB9KSk7XG4gICAgdGhpcy5oaWRlU3BvdCgpO1xuICB9XG5cbiAgcmVmcmVzaChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHsgaWQsIGV4Y2x1ZGVHZW86IGZhbHNlLCBmcm9tOiAnUHJ5U2VhcmNoSG9tZUNvbXBvbmVudC5yZWZyZXNoKCknIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxwcnktc2VhcmNoLWNzcz48L3ByeS1zZWFyY2gtY3NzPlxuPGRpdiBjbGFzcz1cIm8tcHJ5LXNlYXJjaC1ob21lX19uYW1lZC1xdWVyeVwiPlxuICBAaWYgKG5hbWVkUXVlcnlMaXN0JCB8IGFzeW5jOyBhcyBuYW1lZFF1ZXJ5KSB7XG4gICAgQGlmIChuYW1lZFF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJvLXByeS1zZWFyY2gtaG9tZV9fbmFtZWQtcXVlcnlfX2NhcmRcIj5cbiAgICAgICAgPHByeS1leHBhbmQtcGFuZWwgW29wZW5dPVwidHJ1ZVwiPlxuICAgICAgICAgIDxwcnktZXhwYW5kLXBhbmVsLXRpdGxlPnt7ICdAcHJ5LnNlYXJjaC5ob21lLnRpdGxlJyB8IGkxOG4gfX08L3ByeS1leHBhbmQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgQGZvciAobnEgb2YgbmFtZWRRdWVyeS5sZW5ndGggPiAxICYmICFpc01vcmVMaXN0ID8gbmFtZWRRdWVyeS5zbGljZSgwLCAyKSA6IG5hbWVkUXVlcnk7IHRyYWNrIG5xKSB7XG4gICAgICAgICAgICA8cHJ5LWNhcmQ+XG4gICAgICAgICAgICAgIDxwcnktY2FyZC1oZWFkZXIgW21hcmtlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPHByeS1jYXJkLWljb24+XG4gICAgICAgICAgICAgICAgICA8cHJ5LW5xLWNvbG9yLXNlbGVjdG9yIFtkYXRhc291cmNlXT1cIm5xXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L3ByeS1ucS1jb2xvci1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJucS5pZCB8IHRyYW5zbGF0ZUlkIDogeyB0eXBlOiAnZGF0YXNvdXJjZScsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMjJcIlxuICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMjJcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm5xLmlkIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdkYXRhc291cmNlJywgb3V0cHV0OiAnaWNvbicgfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3ByeS1jYXJkLWljb24+XG4gICAgICAgICAgICAgICAgPHByeS1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJ5LWNhcmQtdGl0bGVfX3RleHRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiaW5mb1Rvb2x0aXBfc2VhcmNoSG9tZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1wIG8tcHJ5LWNhcmQtdGl0bGVfX3RleHRfX3RpdGxlXCI+e3sgbnEubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG5xLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtcCBvLXByeS1jYXJkLXRpdGxlX190ZXh0X19kZXNjcmlwdGlvblwiPnt7IG5xLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbmZvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCIgaWQ9XCJpbmZvVG9vbHRpcF9zZWFyY2hIb21lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5xLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChucS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5xLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICBAaWYgKG5xLmZhdm9yaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiby1wcnktY2FyZC10aXRsZV9fcGluXCJcbiAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMThcIlxuICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMThcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJmYXZvcml0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWNvblN2Zz1cImVwaW5nbGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoKGxheW91dCQgfCBhc3luYykgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0Bwcnkuc2VhcmNoLmhvbWUuc2hvd0Fzc29jaWF0ZWRXaWRnZXQnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtdG9vbHRpcCBhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1zaXplLXNtIC1vdmVycmlkZS10b29sdGlwLXBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2hOYW1lZFF1ZXJ5KG5xLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LmRpc3BsYXknIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5zZWFyY2guaG9tZS5hc3NvY2lhdGVkV2lkZ2V0JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvcHJ5LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPHByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcnktY2FyZC1tZW51X19uYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCBvLXByeS1jYXJkLW1lbnVfX25hdl9faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmF2b3JpdGUobnEuaWQsIG5xLmZhdm9yaXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZXBpbmdsZVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAge3sgKG5xLmZhdm9yaXRlID8gJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkubm9GYXZvcml0ZScgOiAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5mYXZvcml0ZScpIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1jYXJkLW1lbnUgKGNsaWNrKT1cInJlZnJlc2gobnEuaWQpXCIgY2xhc3M9XCJyZWZyZXNoYnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgby1wcnktY2FyZC1tZW51X19uYXZfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic3luY2hyb1wiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5yZWZyZXNoRGF0YScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvcHJ5LWNhcmQtbWVudT5cbiAgICAgICAgICAgICAgICAgICAgQGlmICgobGF5b3V0JCB8IGFzeW5jKSAhPT0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWNhcmQtbWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCBvLXByeS1jYXJkLW1lbnVfX25hdl9faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJsb2FkT3BlbmVkID0gbnEuaWQ7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgI3RyaWdnZXJMb2FkPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJmaWxlX2Rvd25sb2FkXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuZGlzcGxheScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Tdmc9XCJmbGVjaGVfaGF1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyB0cmFuc2Zvcm06ICdyb3RhdGUoOTBkZWcpJywgbWFyZ2luTGVmdDogJ2F1dG8nIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlckxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwibG9hZE9wZW5lZCA9PT0gbnEuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJbY29ubmVjdGVkUG9zaXRpb25dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrZHJvcENsaWNrKT1cImxvYWRPcGVuZWQgPSB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51IC1zZWFyY2gtaG9tZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG1lbnUgb2Ygc3RydWN0dXJlOyB0cmFjayBtZW51KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG5cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIFtpY29uU3ZnXT1cIm1lbnUuaWNvblwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtZW51LmxhYmVsIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX3N1Ym1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHN1YiBvZiBtZW51LnN1YjsgdHJhY2sgc3ViKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX3N1Ym1lbnVfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG5cIiAoY2xpY2spPVwibG9hZFdpZGdldChucS5pZCwgc3ViKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIFtpY29uU3ZnXT1cInN1Yi5pY29uXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN1Yi5sYWJlbCB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3ByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPHByeS1jYXJkLW1lbnUgY2xhc3M9XCJvLXByeS1jYXJkLW1lbnVfX25hdl9faXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcnktbnEtY29sb3Itc2VsZWN0b3IgW25nU3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIiBbZGF0YXNvdXJjZV09XCJucVwiPjwvcHJ5LW5xLWNvbG9yLXNlbGVjdG9yPlxuICAgICAgICAgICAgICAgICAgICA8L3ByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktY2FyZC1tZW51IChjbGljayk9XCJvblNwb3QobnEuaWQsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgby1wcnktY2FyZC1tZW51X19uYXZfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwibW9kZV9jbGljXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnNwb3QnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Tdmc9XCJmbGVjaGVfaGF1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgdHJhbnNmb3JtOiAncm90YXRlKDkwZGVnKScsIG1hcmdpbkxlZnQ6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L3ByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktY2FyZC1tZW51IChjbGljayk9XCJvblJlZnJlc2gobnEuaWQsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgby1wcnktY2FyZC1tZW51X19uYXZfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiaGlzdG9yeS1saW5lXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnJlZnJlc2gudGl0bGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Tdmc9XCJmbGVjaGVfaGF1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgdHJhbnNmb3JtOiAncm90YXRlKDkwZGVnKScsIG1hcmdpbkxlZnQ6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L3ByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAobnEub3duZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCBvLXByeS1jYXJkLW1lbnVfX25hdl9faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUobnEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZGVsZXRlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LmRlbGV0ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChucS5vd25lcikge1xuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi10ZXh0IG8tcHJ5LWNhcmQtbWVudV9fbmF2X19pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlbmFtZShucSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJyZW5hbWVkXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnJlbmFtZScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCBvLXByeS1jYXJkLW1lbnVfX25hdl9faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdChucSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJoaWRlU3BvdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJlZGl0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5lZGl0JyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3ByeS1jYXJkLW1lbnU+XG4gICAgICAgICAgICAgIDwvcHJ5LWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPC9wcnktY2FyZD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvcHJ5LWV4cGFuZC1wYW5lbD5cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChuYW1lZFF1ZXJ5Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiXG4gICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgIGlkPVwiYnRuX3ZpZXdfbW9yZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2hhbmdlTGlzdFZpZXcoaXNNb3JlTGlzdClcIlxuICAgICAgICAgID5cbiAgICAgICAgICB7eyBpc01vcmVMaXN0ID8gKCdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnNlZUxlc3MnIHwgaTE4bikgOiAoJ0Bwcnkuc2VhcmNoLm5hbWVkUXVlcnkuc2VlTW9yZScgfCBpMThuKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxwIGNsYXNzPVwic2VhcmNoLWhvbWVfX2NvbnRhaW5lci1zZWFyY2hcIj57eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5lbXB0eU5hbWVkUXVlcnknIHwgaTE4biB9fTwvcD5cbiAgICB9XG4gIH1cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiby1wcnktc2VhcmNoLWhvbWVfX3NlYXJjaFwiPlxuICA8aDMgY2xhc3M9XCJhLWgzXCI+e3sgJ0Bwcnkuc2VhcmNoLmhvbWUuc3NUaXRsZScgfCBpMThuIH19PC9oMz5cbiAgQGlmIChzZWFyY2hGdWxsdGV4dFRwbCkge1xuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoRnVsbHRleHRUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8cCBjbGFzcz1cImEtcCBvLXByeS1zZWFyY2gtaG9tZV9fc2VhcmNoX19vclwiPnt7ICdAcHJ5LnNlYXJjaC5ob21lLm9yJyB8IGkxOG4gfX08L3A+XG4gIH1cbiAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IC13aWR0aC1mdWxsXCIgKGNsaWNrKT1cIm9uU2VhcmNoQ3JpdGVyaWEoKVwiPlxuICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCIgaWNvblN2Zz1cInNlYXJjaC1jcml0ZXJpYVwiPjwvcHJ5LWljb24+XG4gICAge3sgJ0Bwcnkuc2VhcmNoLmhvbWUuc2VhcmNoQnlDcml0ZXJpYScgfCBpMThuIH19XG4gICAgPHByeS1pY29uIGljb25Tdmc9XCJhcnJvd19yaWdodFwiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVTcG90PlxuICA8ZGl2IChtb3VzZWxlYXZlKT1cImhpZGVTcG90KClcIj5cbiAgICB7e1xuICAgICgoc3BvdHRpbmdXaWRnZXQkIHwgYXN5bmMpPy5sZW5ndGggPz8gMCA+IDBcbiAgICA/ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5LnNwb3RUaXRsZSdcbiAgICA6ICdAcHJ5LnNlYXJjaC5uYW1lZFF1ZXJ5Lm5vU3BvdCdcbiAgICApIHwgaTE4biA6IHsgbGVuZ3RoOiAoc3BvdHRpbmdXaWRnZXQkIHwgYXN5bmMpPy5sZW5ndGggfVxuICAgIH19XG4gICAgQGZvciAodXNlIG9mIHNwb3R0aW5nV2lkZ2V0JCB8IGFzeW5jOyB0cmFjayB1c2UpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzcG90LWxpbmVcIj5cbiAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIiBbaWNvblN2Z109XCJpY29uc1t1c2UudHlwZV1cIj48L3ByeS1pY29uPlxuICAgICAgICB7eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS50eXBlLicgKyB1c2UudHlwZSB8IGkxOG4gfX0gLSB7eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS51c2UnIHwgaTE4biA6IHVzZSB9fVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVSZWZyZXNoPlxuICA8ZGl2PlxuICAgIEBmb3IgKG9wdGlvbiBvZiByZWZyZXNoT3B0aW9uczsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwicmVmcmVzaC1saW5lIGEtYnRuIGEtYnRuLS1pY29uLXRleHQgLXNpemUtc21cIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVmcmVzaChvcHRpb24pXCJcbiAgICAgICAgPlxuICAgICAgICBAaWYgKCgoKHJlZnJlc2hSYXRlcyQgfCBhc3luYykgPz8ge30pW3JlZnJlc2hJZF0gPz8gMCkgPT09IG9wdGlvbikge1xuICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgW3dpZHRoXT1cIjIwXCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMjBcIlxuICAgICAgICAgICAgaWNvblN2Zz1cImNoZWNrXCJcbiAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgfVxuICAgICAgICB7eyAnQHByeS5zZWFyY2gubmFtZWRRdWVyeS5yZWZyZXNoLicgKyBvcHRpb24gfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|