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=