197 lines
21 KiB
Plaintext
197 lines
21 KiB
Plaintext
import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/filters/filter/ConditionSelector.vue");/* Injection by vite-plugin-vue-inspector Start */
|
|
import { createElementVNode as __createElementVNode,createVNode as __createVNode,createBlock as __createBlock } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"
|
|
function _interopVNode(vnode) {
|
|
if (vnode && vnode.props && 'data-v-inspector' in vnode.props) {
|
|
const data = vnode.props['data-v-inspector']
|
|
delete vnode.props['data-v-inspector']
|
|
Object.defineProperty(vnode.props, '__v_inspector', { value: data, enumerable: false })
|
|
}
|
|
return vnode
|
|
}
|
|
function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) }
|
|
function _createVNode(...args) { return _interopVNode(__createVNode(...args)) }
|
|
function _createBlock(...args) { return _interopVNode(__createBlock(...args)) }
|
|
/* Injection by vite-plugin-vue-inspector End */
|
|
import { defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
import {
|
|
getConditionsForType,
|
|
getConditionLabel
|
|
} from "/_nuxt/lib/viewer/helpers/filters/constants.ts";
|
|
import {
|
|
FilterType,
|
|
StringFilterCondition,
|
|
NumericFilterCondition,
|
|
ExistenceFilterCondition,
|
|
isNumericFilter
|
|
} from "/_nuxt/lib/viewer/helpers/filters/types.ts";
|
|
import { LayoutMenu, FormButton } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
|
|
|
|
import { ref, computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
__name: "ViewerFiltersFilterConditionSelector",
|
|
props: {
|
|
filter: { type: Object, required: true },
|
|
noPadding: { type: Boolean, required: false }
|
|
},
|
|
emits: ["selectCondition"],
|
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
__expose();
|
|
const props = __props;
|
|
const emit = __emit;
|
|
const showMenu = ref(false);
|
|
const isConditionDisabled = (condition) => {
|
|
if (!isNumericFilter(props.filter)) return false;
|
|
const numericFilter = props.filter;
|
|
const hasProblematicRange = numericFilter.hasConstantValue || numericFilter.hasNearZeroRange;
|
|
if (hasProblematicRange) {
|
|
return condition === NumericFilterCondition.IsBetween || condition === NumericFilterCondition.IsGreaterThan || condition === NumericFilterCondition.IsLessThan || condition === NumericFilterCondition.IsEqualTo || condition === NumericFilterCondition.IsNotEqualTo;
|
|
}
|
|
return false;
|
|
};
|
|
const getDisabledReason = (condition) => {
|
|
if (!isConditionDisabled(condition)) return void 0;
|
|
if (isNumericFilter(props.filter)) {
|
|
const numericFilter = props.filter;
|
|
return numericFilter.rangeDisabledReason;
|
|
}
|
|
return void 0;
|
|
};
|
|
const conditionOptions = computed(() => {
|
|
const availableConditions = getConditionsForType(props.filter.type);
|
|
return availableConditions.map((condition) => ({
|
|
value: condition,
|
|
label: getConditionLabel(condition)
|
|
}));
|
|
});
|
|
const menuItems = computed(() => {
|
|
if (props.filter.type === FilterType.String) {
|
|
const basicConditions = conditionOptions.value.filter(
|
|
(option) => option.value === StringFilterCondition.Is || option.value === StringFilterCondition.IsNot
|
|
);
|
|
const specialConditions = conditionOptions.value.filter(
|
|
(option) => option.value === ExistenceFilterCondition.IsSet || option.value === ExistenceFilterCondition.IsNotSet
|
|
);
|
|
return [
|
|
basicConditions.map((conditionOption) => ({
|
|
id: conditionOption.value,
|
|
title: conditionOption.label,
|
|
active: conditionOption.value === props.filter.condition,
|
|
disabled: isConditionDisabled(conditionOption.value),
|
|
disabledTooltip: getDisabledReason(conditionOption.value)
|
|
})),
|
|
specialConditions.map((conditionOption) => ({
|
|
id: conditionOption.value,
|
|
title: conditionOption.label,
|
|
active: conditionOption.value === props.filter.condition,
|
|
disabled: isConditionDisabled(conditionOption.value),
|
|
disabledTooltip: getDisabledReason(conditionOption.value)
|
|
}))
|
|
];
|
|
} else {
|
|
const basicConditions = conditionOptions.value.filter(
|
|
(option) => option.value === NumericFilterCondition.IsEqualTo || option.value === NumericFilterCondition.IsNotEqualTo || option.value === NumericFilterCondition.IsGreaterThan || option.value === NumericFilterCondition.IsLessThan || option.value === NumericFilterCondition.IsBetween
|
|
);
|
|
const specialConditions = conditionOptions.value.filter(
|
|
(option) => option.value === ExistenceFilterCondition.IsSet || option.value === ExistenceFilterCondition.IsNotSet
|
|
);
|
|
return [
|
|
basicConditions.map((conditionOption) => ({
|
|
id: conditionOption.value,
|
|
title: conditionOption.label,
|
|
active: conditionOption.value === props.filter.condition,
|
|
disabled: isConditionDisabled(conditionOption.value),
|
|
disabledTooltip: getDisabledReason(conditionOption.value)
|
|
})),
|
|
specialConditions.map((conditionOption) => ({
|
|
id: conditionOption.value,
|
|
title: conditionOption.label,
|
|
active: conditionOption.value === props.filter.condition,
|
|
disabled: isConditionDisabled(conditionOption.value),
|
|
disabledTooltip: getDisabledReason(conditionOption.value)
|
|
}))
|
|
];
|
|
}
|
|
});
|
|
const onConditionChosen = ({ item }) => {
|
|
if (item.disabled) {
|
|
return;
|
|
}
|
|
emit("selectCondition", { value: item.id });
|
|
showMenu.value = false;
|
|
};
|
|
const __returned__ = { props, emit, showMenu, isConditionDisabled, getDisabledReason, conditionOptions, menuItems, onConditionChosen, get getConditionLabel() {
|
|
return getConditionLabel;
|
|
}, get FilterType() {
|
|
return FilterType;
|
|
}, get LayoutMenu() {
|
|
return LayoutMenu;
|
|
}, get FormButton() {
|
|
return FormButton;
|
|
} };
|
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
return __returned__;
|
|
}
|
|
});
|
|
import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _hoisted_1 = {
|
|
class: "text-foreground-2 font-medium text-body-2xs",
|
|
"data-v-inspector": "components/viewer/filters/filter/ConditionSelector.vue:21:7"
|
|
};
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
return _openBlock(), _createBlock($setup["LayoutMenu"], {
|
|
open: $setup.showMenu,
|
|
"onUpdate:open": _cache[1] || (_cache[1] = ($event) => $setup.showMenu = $event),
|
|
class: _normalizeClass($props.noPadding ? "" : "pl-9"),
|
|
items: $setup.menuItems,
|
|
"mount-menu-on-body": "",
|
|
"show-ticks": "right",
|
|
"custom-menu-items-classes": [
|
|
"!text-body-2xs",
|
|
$props.filter.type === $setup.FilterType.Numeric ? "!w-36" : "!w-28"
|
|
],
|
|
onChosen: $setup.onConditionChosen,
|
|
"data-v-inspector": "components/viewer/filters/filter/ConditionSelector.vue:2:3"
|
|
}, {
|
|
default: _withCtx(() => [
|
|
_createVNode($setup["FormButton"], {
|
|
class: _normalizeClass(["-ml-2", $setup.showMenu ? "!bg-highlight-2" : ""]),
|
|
color: "subtle",
|
|
size: "sm",
|
|
onClick: _cache[0] || (_cache[0] = ($event) => $setup.showMenu = !$setup.showMenu),
|
|
"data-v-inspector": "components/viewer/filters/filter/ConditionSelector.vue:14:5"
|
|
}, {
|
|
default: _withCtx(() => [
|
|
_createElementVNode(
|
|
"span",
|
|
_hoisted_1,
|
|
_toDisplayString($setup.getConditionLabel($setup.props.filter.condition)),
|
|
1
|
|
/* TEXT */
|
|
)
|
|
]),
|
|
_: 1
|
|
/* STABLE */
|
|
}, 8, ["class"])
|
|
]),
|
|
_: 1
|
|
/* STABLE */
|
|
}, 8, ["open", "class", "items", "custom-menu-items-classes"]);
|
|
}
|
|
_sfc_main.__hmrId = "754c5d5d";
|
|
typeof __VUE_HMR_RUNTIME__ !== "undefined" && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main);
|
|
import.meta.hot.on("file-changed", ({ file }) => {
|
|
__VUE_HMR_RUNTIME__.CHANGED_FILE = file;
|
|
});
|
|
import.meta.hot.accept((mod) => {
|
|
if (!mod) return;
|
|
const { default: updated, _rerender_only } = mod;
|
|
if (_rerender_only) {
|
|
__VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render);
|
|
} else {
|
|
__VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated);
|
|
}
|
|
});
|
|
import _export_sfc from "/_nuxt/@id/__x00__plugin-vue:export-helper";
|
|
export default /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "D:/speckle-server/packages/frontend-2/components/viewer/filters/filter/ConditionSelector.vue"]]);
|
|
|
|
//# sourceMappingURL=data:application/json;base64,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YUFVYTtBQUFBLFFBVFgsT0FBSyxpQkFBQyxTQUdFLGtCQUFRO0FBQUEsUUFGaEIsT0FBTTtBQUFBLFFBQ04sTUFBSztBQUFBLFFBRUosU0FBSyxzQ0FBRSxrQkFBUSxDQUFJO0FBQUEsUUFBVSxvQkFBaUI7QUFBQTswQkFFL0MsTUFFTztBQUFBLFVBRlA7QUFBQSxZQUVPO0FBQUEsWUFGUDtBQUFBLFlBRU8saUJBREYseUJBQWtCLGFBQU0sT0FBTyxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIkNvbmRpdGlvblNlbGVjdG9yLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgPExheW91dE1lbnVcclxuICAgIHYtbW9kZWw6b3Blbj1cInNob3dNZW51XCJcclxuICAgIDpjbGFzcz1cIm5vUGFkZGluZyA/ICcnIDogJ3BsLTknXCJcclxuICAgIDppdGVtcz1cIm1lbnVJdGVtc1wiXHJcbiAgICBtb3VudC1tZW51LW9uLWJvZHlcclxuICAgIHNob3ctdGlja3M9XCJyaWdodFwiXHJcbiAgICA6Y3VzdG9tLW1lbnUtaXRlbXMtY2xhc3Nlcz1cIltcclxuICAgICAgJyF0ZXh0LWJvZHktMnhzJyxcclxuICAgICAgZmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGUuTnVtZXJpYyA/ICchdy0zNicgOiAnIXctMjgnXHJcbiAgICBdXCJcclxuICAgIEBjaG9zZW49XCJvbkNvbmRpdGlvbkNob3NlblwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9Db25kaXRpb25TZWxlY3Rvci52dWU6MjozXCJcclxuICA+XHJcbiAgICA8Rm9ybUJ1dHRvblxyXG4gICAgICBjbGFzcz1cIi1tbC0yXCJcclxuICAgICAgY29sb3I9XCJzdWJ0bGVcIlxyXG4gICAgICBzaXplPVwic21cIlxyXG4gICAgICA6Y2xhc3M9XCJzaG93TWVudSA/ICchYmctaGlnaGxpZ2h0LTInIDogJydcIlxyXG4gICAgICBAY2xpY2s9XCJzaG93TWVudSA9ICFzaG93TWVudVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9Db25kaXRpb25TZWxlY3Rvci52dWU6MTQ6NVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kLTIgZm9udC1tZWRpdW0gdGV4dC1ib2R5LTJ4c1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9Db25kaXRpb25TZWxlY3Rvci52dWU6MjE6N1wiPlxyXG4gICAgICAgIHt7IGdldENvbmRpdGlvbkxhYmVsKHByb3BzLmZpbHRlci5jb25kaXRpb24pIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvRm9ybUJ1dHRvbj5cclxuICA8L0xheW91dE1lbnU+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgdHlwZSB7XHJcbiAgRmlsdGVyQ29uZGl0aW9uLFxyXG4gIEZpbHRlckRhdGEsXHJcbiAgQ29uZGl0aW9uT3B0aW9uLFxyXG4gIE51bWVyaWNGaWx0ZXJEYXRhXHJcbn0gZnJvbSAnfi9saWIvdmlld2VyL2hlbHBlcnMvZmlsdGVycy90eXBlcydcclxuaW1wb3J0IHtcclxuICBnZXRDb25kaXRpb25zRm9yVHlwZSxcclxuICBnZXRDb25kaXRpb25MYWJlbFxyXG59IGZyb20gJ34vbGliL3ZpZXdlci9oZWxwZXJzL2ZpbHRlcnMvY29uc3RhbnRzJ1xyXG5pbXBvcnQge1xyXG4gIEZpbHRlclR5cGUsXHJcbiAgU3RyaW5nRmlsdGVyQ29uZGl0aW9uLFxyXG4gIE51bWVyaWNGaWx0ZXJDb25kaXRpb24sXHJcbiAgRXhpc3RlbmNlRmlsdGVyQ29uZGl0aW9uLFxyXG4gIGlzTnVtZXJpY0ZpbHRlclxyXG59IGZyb20gJ34vbGliL3ZpZXdlci9oZWxwZXJzL2ZpbHRlcnMvdHlwZXMnXHJcbmltcG9ydCB7IExheW91dE1lbnUsIEZvcm1CdXR0b24sIHR5cGUgTGF5b3V0TWVudUl0ZW0gfSBmcm9tICdAc3BlY2tsZS91aS1jb21wb25lbnRzJ1xyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XHJcbiAgZmlsdGVyOiBGaWx0ZXJEYXRhXHJcbiAgbm9QYWRkaW5nPzogYm9vbGVhblxyXG59PigpXHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydzZWxlY3RDb25kaXRpb24nXSlcclxuXHJcbmNvbnN0IHNob3dNZW51ID0gcmVmKGZhbHNlKVxyXG5cclxuY29uc3QgaXNDb25kaXRpb25EaXNhYmxlZCA9IChjb25kaXRpb246IEZpbHRlckNvbmRpdGlvbik6IGJvb2xlYW4gPT4ge1xyXG4gIGlmICghaXNOdW1lcmljRmlsdGVyKHByb3BzLmZpbHRlcikpIHJldHVybiBmYWxzZVxyXG5cclxuICBjb25zdCBudW1lcmljRmlsdGVyID0gcHJvcHMuZmlsdGVyIGFzIE51bWVyaWNGaWx0ZXJEYXRhXHJcbiAgY29uc3QgaGFzUHJvYmxlbWF0aWNSYW5nZSA9XHJcbiAgICBudW1lcmljRmlsdGVyLmhhc0NvbnN0YW50VmFsdWUgfHwgbnVtZXJpY0ZpbHRlci5oYXNOZWFyWmVyb1JhbmdlXHJcblxyXG4gIGlmIChoYXNQcm9ibGVtYXRpY1JhbmdlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjb25kaXRpb24gPT09IE51bWVyaWNGaWx0ZXJDb25kaXRpb24uSXNCZXR3ZWVuIHx8XHJcbiAgICAgIGNvbmRpdGlvbiA9PT0gTnVtZXJpY0ZpbHRlckNvbmRpdGlvbi5Jc0dyZWF0ZXJUaGFuIHx8XHJcbiAgICAgIGNvbmRpdGlvbiA9PT0gTnVtZXJpY0ZpbHRlckNvbmRpdGlvbi5Jc0xlc3NUaGFuIHx8XHJcbiAgICAgIGNvbmRpdGlvbiA9PT0gTnVtZXJpY0ZpbHRlckNvbmRpdGlvbi5Jc0VxdWFsVG8gfHxcclxuICAgICAgY29uZGl0aW9uID09PSBOdW1lcmljRmlsdGVyQ29uZGl0aW9uLklzTm90RXF1YWxUb1xyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlXHJcbn1cclxuXHJcbmNvbnN0IGdldERpc2FibGVkUmVhc29uID0gKGNvbmRpdGlvbjogRmlsdGVyQ29uZGl0aW9uKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcclxuICBpZiAoIWlzQ29uZGl0aW9uRGlzYWJsZWQoY29uZGl0aW9uKSkgcmV0dXJuIHVuZGVmaW5lZFxyXG5cclxuICBpZiAoaXNOdW1lcmljRmlsdGVyKHByb3BzLmZpbHRlcikpIHtcclxuICAgIGNvbnN0IG51bWVyaWNGaWx0ZXIgPSBwcm9wcy5maWx0ZXIgYXMgTnVtZXJpY0ZpbHRlckRhdGFcclxuICAgIHJldHVybiBudW1lcmljRmlsdGVyLnJhbmdlRGlzYWJsZWRSZWFzb25cclxuICB9XHJcblxyXG4gIHJldHVybiB1bmRlZmluZWRcclxufVxyXG5cclxuY29uc3QgY29uZGl0aW9uT3B0aW9ucyA9IGNvbXB1dGVkPENvbmRpdGlvbk9wdGlvbltdPigoKSA9PiB7XHJcbiAgY29uc3QgYXZhaWxhYmxlQ29uZGl0aW9ucyA9IGdldENvbmRpdGlvbnNGb3JUeXBlKHByb3BzLmZpbHRlci50eXBlKVxyXG4gIHJldHVybiBhdmFpbGFibGVDb25kaXRpb25zLm1hcCgoY29uZGl0aW9uKSA9PiAoe1xyXG4gICAgdmFsdWU6IGNvbmRpdGlvbixcclxuICAgIGxhYmVsOiBnZXRDb25kaXRpb25MYWJlbChjb25kaXRpb24pXHJcbiAgfSkpXHJcbn0pXHJcblxyXG5jb25zdCBtZW51SXRlbXMgPSBjb21wdXRlZDxMYXlvdXRNZW51SXRlbVtdW10+KCgpID0+IHtcclxuICBpZiAocHJvcHMuZmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGUuU3RyaW5nKSB7XHJcbiAgICBjb25zdCBiYXNpY0NvbmRpdGlvbnMgPSBjb25kaXRpb25PcHRpb25zLnZhbHVlLmZpbHRlcihcclxuICAgICAgKG9wdGlvbikgPT5cclxuICAgICAgICBvcHRpb24udmFsdWUgPT09IFN0cmluZ0ZpbHRlckNvbmRpdGlvbi5JcyB8fFxyXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gU3RyaW5nRmlsdGVyQ29uZGl0aW9uLklzTm90XHJcbiAgICApXHJcbiAgICBjb25zdCBzcGVjaWFsQ29uZGl0aW9ucyA9IGNvbmRpdGlvbk9wdGlvbnMudmFsdWUuZmlsdGVyKFxyXG4gICAgICAob3B0aW9uKSA9PlxyXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gRXhpc3RlbmNlRmlsdGVyQ29uZGl0aW9uLklzU2V0IHx8XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSBFeGlzdGVuY2VGaWx0ZXJDb25kaXRpb24uSXNOb3RTZXRcclxuICAgIClcclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBiYXNpY0NvbmRpdGlvbnMubWFwKChjb25kaXRpb25PcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IGNvbmRpdGlvbk9wdGlvbi52YWx1ZSxcclxuICAgICAgICB0aXRsZTogY29uZGl0aW9uT3B0aW9uLmxhYmVsLFxyXG4gICAgICAgIGFjdGl2ZTogY29uZGl0aW9uT3B0aW9uLnZhbHVlID09PSBwcm9wcy5maWx0ZXIuY29uZGl0aW9uLFxyXG4gICAgICAgIGRpc2FibGVkOiBpc0NvbmRpdGlvbkRpc2FibGVkKGNvbmRpdGlvbk9wdGlvbi52YWx1ZSksXHJcbiAgICAgICAgZGlzYWJsZWRUb29sdGlwOiBnZXREaXNhYmxlZFJlYXNvbihjb25kaXRpb25PcHRpb24udmFsdWUpXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3BlY2lhbENvbmRpdGlvbnMubWFwKChjb25kaXRpb25PcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IGNvbmRpdGlvbk9wdGlvbi52YWx1ZSxcclxuICAgICAgICB0aXRsZTogY29uZGl0aW9uT3B0aW9uLmxhYmVsLFxyXG4gICAgICAgIGFjdGl2ZTogY29uZGl0aW9uT3B0aW9uLnZhbHVlID09PSBwcm9wcy5maWx0ZXIuY29uZGl0aW9uLFxyXG4gICAgICAgIGRpc2FibGVkOiBpc0NvbmRpdGlvbkRpc2FibGVkKGNvbmRpdGlvbk9wdGlvbi52YWx1ZSksXHJcbiAgICAgICAgZGlzYWJsZWRUb29sdGlwOiBnZXREaXNhYmxlZFJlYXNvbihjb25kaXRpb25PcHRpb24udmFsdWUpXHJcbiAgICAgIH0pKVxyXG4gICAgXVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBiYXNpY0NvbmRpdGlvbnMgPSBjb25kaXRpb25PcHRpb25zLnZhbHVlLmZpbHRlcihcclxuICAgICAgKG9wdGlvbikgPT5cclxuICAgICAgICBvcHRpb24udmFsdWUgPT09IE51bWVyaWNGaWx0ZXJDb25kaXRpb24uSXNFcXVhbFRvIHx8XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSBOdW1lcmljRmlsdGVyQ29uZGl0aW9uLklzTm90RXF1YWxUbyB8fFxyXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gTnVtZXJpY0ZpbHRlckNvbmRpdGlvbi5Jc0dyZWF0ZXJUaGFuIHx8XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSBOdW1lcmljRmlsdGVyQ29uZGl0aW9uLklzTGVzc1RoYW4gfHxcclxuICAgICAgICBvcHRpb24udmFsdWUgPT09IE51bWVyaWNGaWx0ZXJDb25kaXRpb24uSXNCZXR3ZWVuXHJcbiAgICApXHJcbiAgICBjb25zdCBzcGVjaWFsQ29uZGl0aW9ucyA9IGNvbmRpdGlvbk9wdGlvbnMudmFsdWUuZmlsdGVyKFxyXG4gICAgICAob3B0aW9uKSA9PlxyXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gRXhpc3RlbmNlRmlsdGVyQ29uZGl0aW9uLklzU2V0IHx8XHJcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSBFeGlzdGVuY2VGaWx0ZXJDb25kaXRpb24uSXNOb3RTZXRcclxuICAgIClcclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBiYXNpY0NvbmRpdGlvbnMubWFwKChjb25kaXRpb25PcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IGNvbmRpdGlvbk9wdGlvbi52YWx1ZSxcclxuICAgICAgICB0aXRsZTogY29uZGl0aW9uT3B0aW9uLmxhYmVsLFxyXG4gICAgICAgIGFjdGl2ZTogY29uZGl0aW9uT3B0aW9uLnZhbHVlID09PSBwcm9wcy5maWx0ZXIuY29uZGl0aW9uLFxyXG4gICAgICAgIGRpc2FibGVkOiBpc0NvbmRpdGlvbkRpc2FibGVkKGNvbmRpdGlvbk9wdGlvbi52YWx1ZSksXHJcbiAgICAgICAgZGlzYWJsZWRUb29sdGlwOiBnZXREaXNhYmxlZFJlYXNvbihjb25kaXRpb25PcHRpb24udmFsdWUpXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3BlY2lhbENvbmRpdGlvbnMubWFwKChjb25kaXRpb25PcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IGNvbmRpdGlvbk9wdGlvbi52YWx1ZSxcclxuICAgICAgICB0aXRsZTogY29uZGl0aW9uT3B0aW9uLmxhYmVsLFxyXG4gICAgICAgIGFjdGl2ZTogY29uZGl0aW9uT3B0aW9uLnZhbHVlID09PSBwcm9wcy5maWx0ZXIuY29uZGl0aW9uLFxyXG4gICAgICAgIGRpc2FibGVkOiBpc0NvbmRpdGlvbkRpc2FibGVkKGNvbmRpdGlvbk9wdGlvbi52YWx1ZSksXHJcbiAgICAgICAgZGlzYWJsZWRUb29sdGlwOiBnZXREaXNhYmxlZFJlYXNvbihjb25kaXRpb25PcHRpb24udmFsdWUpXHJcbiAgICAgIH0pKVxyXG4gICAgXVxyXG4gIH1cclxufSlcclxuXHJcbmNvbnN0IG9uQ29uZGl0aW9uQ2hvc2VuID0gKHsgaXRlbSB9OiB7IGl0ZW06IExheW91dE1lbnVJdGVtIH0pID0+IHtcclxuICBpZiAoaXRlbS5kaXNhYmxlZCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG5cclxuICBlbWl0KCdzZWxlY3RDb25kaXRpb24nLCB7IHZhbHVlOiBpdGVtLmlkIH0pXHJcbiAgc2hvd01lbnUudmFsdWUgPSBmYWxzZVxyXG59XHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy92aWV3ZXIvZmlsdGVycy9maWx0ZXIvQ29uZGl0aW9uU2VsZWN0b3IudnVlIn0= |