import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/filters/filter/string/ValueItem.vue");import { FormCheckbox as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; /* Injection by vite-plugin-vue-inspector Start */ import { createVNode as __createVNode,createElementBlock as __createElementBlock,createElementVNode as __createElementVNode } 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 _createVNode(...args) { return _interopVNode(__createVNode(...args)) } function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) } function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...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 { useFilterUtilities } from "/_nuxt/lib/viewer/composables/filtering/filtering.ts"; import { getFilterValueCount } from "/_nuxt/lib/viewer/helpers/filters/utils.ts"; import { useInjectedViewerState } from "/_nuxt/lib/viewer/composables/setup.ts"; import { useFilterColoringHelpers } from "/_nuxt/lib/viewer/composables/filtering/coloringHelpers.ts"; import { useHighlightedObjectsUtilities } from "/_nuxt/lib/viewer/composables/ui.ts"; import { computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "ViewerFiltersFilterStringValueItem", props: { filter: { type: Object, required: true }, value: { type: String, required: true } }, emits: ["toggle"], setup(__props, { expose: __expose }) { __expose(); const props = __props; const { isActiveFilterValueSelected, filters } = useFilterUtilities(); const { getFilterValueColor } = useFilterColoringHelpers(); const { highlightObjects, unhighlightObjects } = useHighlightedObjectsUtilities(); const { ui } = useInjectedViewerState(); const valueGroup = computed(() => { if (!props.filter.filter || !("valueGroups" in props.filter.filter)) return null; const valueGroups = props.filter.filter.valueGroups; return valueGroups.find((vg) => String(vg.value) === props.value); }); const isSelected = computed(() => { if (props.filter.isDefaultAllSelected && props.filter.selectedValues.length === 0) { return true; } return isActiveFilterValueSelected(props.filter.id, props.value); }); const totalCount = computed(() => { if (!props.filter.filter) return null; return getFilterValueCount(props.filter.filter, props.value); }); const { isolatedObjectsSet } = ui.filters; const availableCount = computed(() => { if (!props.filter.filter || !totalCount.value) return null; const appliedFilters = filters.propertyFilters.value.filter((f) => f.isApplied); if (appliedFilters.length <= 1) { return totalCount.value; } const isolatedSet = isolatedObjectsSet.value; if (!isolatedSet) { return totalCount.value; } const currentValueGroup = valueGroup.value; if (!currentValueGroup) { return totalCount.value; } const valueObjectIds = currentValueGroup.ids || []; const availableIds = valueObjectIds.filter((id) => isolatedSet.has(id)); const result = availableIds.length; return result; }); const count = computed(() => { const total = totalCount.value; const available = availableCount.value; if (total === null || available === null) return null; const appliedFilters = filters.propertyFilters.value.filter((f) => f.isApplied); if (appliedFilters.length > 1) { return `${available} (${total})`; } return String(total); }); const color = computed(() => { if (filters.activeColorFilterId.value !== props.filter.id) { return null; } return getFilterValueColor(props.value); }); const isDefaultSelected = computed(() => { return props.filter.isDefaultAllSelected && props.filter.selectedValues.length === 0; }); const highlight = () => { const objectIds = valueGroup.value?.ids; if (objectIds && objectIds.length > 0) { highlightObjects(objectIds); } }; const unhighlight = () => { const objectIds = valueGroup.value?.ids; if (objectIds && objectIds.length > 0) { unhighlightObjects(objectIds); } }; const __returned__ = { props, isActiveFilterValueSelected, filters, getFilterValueColor, highlightObjects, unhighlightObjects, ui, valueGroup, isSelected, totalCount, isolatedObjectsSet, availableCount, count, color, isDefaultSelected, highlight, unhighlight }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, openBlock as _openBlock, normalizeStyle as _normalizeStyle } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { class: "px-1 h-full", "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:5:3" }; const _hoisted_2 = { class: "flex items-center min-w-0", "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:12:7" }; const _hoisted_3 = { key: 0, class: "flex-1 truncate text-foreground ml-0.5", "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:25:9" }; const _hoisted_4 = { key: 1, class: "flex-1 text-foreground ml-0.5 italic", "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:28:9" }; const _hoisted_5 = { class: "flex items-center shrink-0", "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:30:7" }; const _hoisted_6 = { key: 0, class: "shrink-0 text-foreground-2 text-body-3xs", "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:31:9" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_FormCheckbox = __nuxt_component_0; return _openBlock(), _createElementBlock("div", _hoisted_1, [ _createElementVNode( "div", { class: "group/checkbox flex items-center justify-between gap-2 text-body-3xs py-0.5 px-2 hover:bg-highlight-1 rounded-md cursor-pointer h-full", onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("toggle")), onMouseenter: $setup.highlight, onMouseleave: $setup.unhighlight, "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:6:5" }, [ _createElementVNode("div", _hoisted_2, [ _createCommentVNode(" Checkbox is purely visual - so pointer-events-none "), _createVNode(_component_FormCheckbox, { class: _normalizeClass(["pointer-events-none", { "border-transparent group-hover/checkbox:border-outline-5": !$setup.isSelected, "opacity-50 dark:!bg-transparent !border dark:!border-outline-5 !group-hover/checkbox:border-outline-5": $setup.isDefaultSelected }]), name: `filter-${$props.filter.id}-${$props.value}`, "model-value": $setup.isSelected, "hide-label": "", "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:14:9" }, null, 8, ["class", "name", "model-value"]), $props.value ? (_openBlock(), _createElementBlock( "span", _hoisted_3, _toDisplayString($props.value), 1 /* TEXT */ )) : (_openBlock(), _createElementBlock("span", _hoisted_4, "null")) ]), _createElementVNode("div", _hoisted_5, [ $setup.count ? (_openBlock(), _createElementBlock( "div", _hoisted_6, _toDisplayString($setup.count), 1 /* TEXT */ )) : _createCommentVNode("v-if", true), $setup.color ? (_openBlock(), _createElementBlock( "div", { key: 1, class: "w-3 h-3 rounded-full border border-outline-3 ml-2 shrink-0", style: _normalizeStyle({ backgroundColor: $setup.color }), "data-v-inspector": "components/viewer/filters/filter/string/ValueItem.vue:34:9" }, null, 4 /* STYLE */ )) : _createCommentVNode("v-if", true) ]) ], 32 /* NEED_HYDRATION */ ) ]); } _sfc_main.__hmrId = "e96930b6"; 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/string/ValueItem.vue"]]); //# sourceMappingURL=data:application/json;base64,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QUZOO0FBQUEsWUFFTSxpQkFERCxZQUFLO0FBQUE7QUFBQTtBQUFBO1VBR0YsOEJBRFI7QUFBQSxZQUlFO0FBQUE7QUFBQTtjQUZBLE9BQU07QUFBQSxjQUNMLE9BQUssbUNBQXFCLGFBQUs7QUFBQSxjQUFJLG9CQUFpQjtBQUFBIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJWYWx1ZUl0ZW0udnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjwhLS0gZXNsaW50LWRpc2FibGUgdnVlanMtYWNjZXNzaWJpbGl0eS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgLS0+XHJcbjwhLS0gZXNsaW50LWRpc2FibGUgdnVlanMtYWNjZXNzaWJpbGl0eS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzIC0tPlxyXG48IS0tIGVzbGludC1kaXNhYmxlIHZ1ZWpzLWFjY2Vzc2liaWxpdHkvbW91c2UtZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAtLT5cclxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJweC0xIGgtZnVsbFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZTo1OjNcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJncm91cC9jaGVja2JveCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgdGV4dC1ib2R5LTN4cyBweS0wLjUgcHgtMiBob3ZlcjpiZy1oaWdobGlnaHQtMSByb3VuZGVkLW1kIGN1cnNvci1wb2ludGVyIGgtZnVsbFwiXHJcbiAgICAgIEBjbGljaz1cIiRlbWl0KCd0b2dnbGUnKVwiXHJcbiAgICAgIEBtb3VzZWVudGVyPVwiaGlnaGxpZ2h0XCJcclxuICAgICAgQG1vdXNlbGVhdmU9XCJ1bmhpZ2hsaWdodFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZTo2OjVcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbWluLXctMFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZToxMjo3XCI+XHJcbiAgICAgICAgPCEtLSBDaGVja2JveCBpcyBwdXJlbHkgdmlzdWFsIC0gc28gcG9pbnRlci1ldmVudHMtbm9uZSAtLT5cclxuICAgICAgICA8Rm9ybUNoZWNrYm94XHJcbiAgICAgICAgICBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmVcIlxyXG4gICAgICAgICAgOmNsYXNzPVwie1xyXG4gICAgICAgICAgICAnYm9yZGVyLXRyYW5zcGFyZW50IGdyb3VwLWhvdmVyL2NoZWNrYm94OmJvcmRlci1vdXRsaW5lLTUnOiAhaXNTZWxlY3RlZCxcclxuICAgICAgICAgICAgJ29wYWNpdHktNTAgZGFyazohYmctdHJhbnNwYXJlbnQgIWJvcmRlciBkYXJrOiFib3JkZXItb3V0bGluZS01ICFncm91cC1ob3Zlci9jaGVja2JveDpib3JkZXItb3V0bGluZS01JzpcclxuICAgICAgICAgICAgICBpc0RlZmF1bHRTZWxlY3RlZFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICA6bmFtZT1cImBmaWx0ZXItJHtmaWx0ZXIuaWR9LSR7dmFsdWV9YFwiXHJcbiAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJpc1NlbGVjdGVkXCJcclxuICAgICAgICAgIGhpZGUtbGFiZWwgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2ZpbHRlcnMvZmlsdGVyL3N0cmluZy9WYWx1ZUl0ZW0udnVlOjE0OjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gdi1pZj1cInZhbHVlXCIgY2xhc3M9XCJmbGV4LTEgdHJ1bmNhdGUgdGV4dC1mb3JlZ3JvdW5kIG1sLTAuNVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZToyNTo5XCI+XHJcbiAgICAgICAgICB7eyB2YWx1ZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJmbGV4LTEgdGV4dC1mb3JlZ3JvdW5kIG1sLTAuNSBpdGFsaWNcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZmlsdGVycy9maWx0ZXIvc3RyaW5nL1ZhbHVlSXRlbS52dWU6Mjg6OVwiPm51bGw8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTBcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZmlsdGVycy9maWx0ZXIvc3RyaW5nL1ZhbHVlSXRlbS52dWU6MzA6N1wiPlxyXG4gICAgICAgIDxkaXYgdi1pZj1cImNvdW50XCIgY2xhc3M9XCJzaHJpbmstMCB0ZXh0LWZvcmVncm91bmQtMiB0ZXh0LWJvZHktM3hzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2ZpbHRlcnMvZmlsdGVyL3N0cmluZy9WYWx1ZUl0ZW0udnVlOjMxOjlcIj5cclxuICAgICAgICAgIHt7IGNvdW50IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgdi1pZj1cImNvbG9yXCJcclxuICAgICAgICAgIGNsYXNzPVwidy0zIGgtMyByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1vdXRsaW5lLTMgbWwtMiBzaHJpbmstMFwiXHJcbiAgICAgICAgICA6c3R5bGU9XCJ7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9maWx0ZXJzL2ZpbHRlci9zdHJpbmcvVmFsdWVJdGVtLnZ1ZTozNDo5XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgdXNlRmlsdGVyVXRpbGl0aWVzIH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL2ZpbHRlcmluZy9maWx0ZXJpbmcnXHJcbmltcG9ydCB7IGdldEZpbHRlclZhbHVlQ291bnQgfSBmcm9tICd+L2xpYi92aWV3ZXIvaGVscGVycy9maWx0ZXJzL3V0aWxzJ1xyXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0ZpbHRlckRhdGEgfSBmcm9tICd+L2xpYi92aWV3ZXIvaGVscGVycy9maWx0ZXJzL3R5cGVzJ1xyXG5pbXBvcnQgeyB1c2VJbmplY3RlZFZpZXdlclN0YXRlIH0gZnJvbSAnfn4vbGliL3ZpZXdlci9jb21wb3NhYmxlcy9zZXR1cCdcclxuaW1wb3J0IHsgdXNlRmlsdGVyQ29sb3JpbmdIZWxwZXJzIH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL2ZpbHRlcmluZy9jb2xvcmluZ0hlbHBlcnMnXHJcbmltcG9ydCB7IHVzZUhpZ2hsaWdodGVkT2JqZWN0c1V0aWxpdGllcyB9IGZyb20gJ34vbGliL3ZpZXdlci9jb21wb3NhYmxlcy91aSdcclxuXHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xyXG4gIGZpbHRlcjogU3RyaW5nRmlsdGVyRGF0YVxyXG4gIHZhbHVlOiBzdHJpbmdcclxufT4oKVxyXG5cclxuZGVmaW5lRW1pdHM8e1xyXG4gIHRvZ2dsZTogW11cclxufT4oKVxyXG5cclxuY29uc3QgeyBpc0FjdGl2ZUZpbHRlclZhbHVlU2VsZWN0ZWQsIGZpbHRlcnMgfSA9IHVzZUZpbHRlclV0aWxpdGllcygpXHJcblxyXG5jb25zdCB7IGdldEZpbHRlclZhbHVlQ29sb3IgfSA9IHVzZUZpbHRlckNvbG9yaW5nSGVscGVycygpXHJcblxyXG5jb25zdCB7IGhpZ2hsaWdodE9iamVjdHMsIHVuaGlnaGxpZ2h0T2JqZWN0cyB9ID0gdXNlSGlnaGxpZ2h0ZWRPYmplY3RzVXRpbGl0aWVzKClcclxuXHJcbmNvbnN0IHsgdWkgfSA9IHVzZUluamVjdGVkVmlld2VyU3RhdGUoKVxyXG5cclxuY29uc3QgdmFsdWVHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICBpZiAoIXByb3BzLmZpbHRlci5maWx0ZXIgfHwgISgndmFsdWVHcm91cHMnIGluIHByb3BzLmZpbHRlci5maWx0ZXIpKSByZXR1cm4gbnVsbFxyXG5cclxuICBjb25zdCB2YWx1ZUdyb3VwcyA9IHByb3BzLmZpbHRlci5maWx0ZXIudmFsdWVHcm91cHMgYXMgQXJyYXk8e1xyXG4gICAgdmFsdWU6IHVua25vd25cclxuICAgIGlkcz86IHN0cmluZ1tdXHJcbiAgfT5cclxuICByZXR1cm4gdmFsdWVHcm91cHMuZmluZCgodmcpID0+IFN0cmluZyh2Zy52YWx1ZSkgPT09IHByb3BzLnZhbHVlKVxyXG59KVxyXG5cclxuY29uc3QgaXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICBpZiAocHJvcHMuZmlsdGVyLmlzRGVmYXVsdEFsbFNlbGVjdGVkICYmIHByb3BzLmZpbHRlci5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG4gIHJldHVybiBpc0FjdGl2ZUZpbHRlclZhbHVlU2VsZWN0ZWQocHJvcHMuZmlsdGVyLmlkLCBwcm9wcy52YWx1ZSlcclxufSlcclxuXHJcbmNvbnN0IHRvdGFsQ291bnQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgaWYgKCFwcm9wcy5maWx0ZXIuZmlsdGVyKSByZXR1cm4gbnVsbFxyXG4gIHJldHVybiBnZXRGaWx0ZXJWYWx1ZUNvdW50KHByb3BzLmZpbHRlci5maWx0ZXIsIHByb3BzLnZhbHVlKVxyXG59KVxyXG5cclxuLy8gVXNlIHNpbmdsZXRvbiBpc29sYXRlZE9iamVjdHNTZXQgZnJvbSB2aWV3ZXIgc3RhdGVcclxuY29uc3QgeyBpc29sYXRlZE9iamVjdHNTZXQgfSA9IHVpLmZpbHRlcnNcclxuXHJcbmNvbnN0IGF2YWlsYWJsZUNvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGlmICghcHJvcHMuZmlsdGVyLmZpbHRlciB8fCAhdG90YWxDb3VudC52YWx1ZSkgcmV0dXJuIG51bGxcclxuXHJcbiAgY29uc3QgYXBwbGllZEZpbHRlcnMgPSBmaWx0ZXJzLnByb3BlcnR5RmlsdGVycy52YWx1ZS5maWx0ZXIoKGYpID0+IGYuaXNBcHBsaWVkKVxyXG5cclxuICBpZiAoYXBwbGllZEZpbHRlcnMubGVuZ3RoIDw9IDEpIHtcclxuICAgIHJldHVybiB0b3RhbENvdW50LnZhbHVlXHJcbiAgfVxyXG5cclxuICBjb25zdCBpc29sYXRlZFNldCA9IGlzb2xhdGVkT2JqZWN0c1NldC52YWx1ZVxyXG4gIGlmICghaXNvbGF0ZWRTZXQpIHtcclxuICAgIHJldHVybiB0b3RhbENvdW50LnZhbHVlXHJcbiAgfVxyXG5cclxuICBjb25zdCBjdXJyZW50VmFsdWVHcm91cCA9IHZhbHVlR3JvdXAudmFsdWVcclxuICBpZiAoIWN1cnJlbnRWYWx1ZUdyb3VwKSB7XHJcbiAgICByZXR1cm4gdG90YWxDb3VudC52YWx1ZVxyXG4gIH1cclxuXHJcbiAgY29uc3QgdmFsdWVPYmplY3RJZHMgPSBjdXJyZW50VmFsdWVHcm91cC5pZHMgfHwgW11cclxuXHJcbiAgY29uc3QgYXZhaWxhYmxlSWRzID0gdmFsdWVPYmplY3RJZHMuZmlsdGVyKChpZCkgPT4gaXNvbGF0ZWRTZXQuaGFzKGlkKSlcclxuICBjb25zdCByZXN1bHQgPSBhdmFpbGFibGVJZHMubGVuZ3RoXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59KVxyXG5cclxuY29uc3QgY291bnQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgY29uc3QgdG90YWwgPSB0b3RhbENvdW50LnZhbHVlXHJcbiAgY29uc3QgYXZhaWxhYmxlID0gYXZhaWxhYmxlQ291bnQudmFsdWVcclxuXHJcbiAgaWYgKHRvdGFsID09PSBudWxsIHx8IGF2YWlsYWJsZSA9PT0gbnVsbCkgcmV0dXJuIG51bGxcclxuXHJcbiAgY29uc3QgYXBwbGllZEZpbHRlcnMgPSBmaWx0ZXJzLnByb3BlcnR5RmlsdGVycy52YWx1ZS5maWx0ZXIoKGYpID0+IGYuaXNBcHBsaWVkKVxyXG4gIGlmIChhcHBsaWVkRmlsdGVycy5sZW5ndGggPiAxKSB7XHJcbiAgICByZXR1cm4gYCR7YXZhaWxhYmxlfSAoJHt0b3RhbH0pYFxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIFN0cmluZyh0b3RhbClcclxufSlcclxuXHJcbmNvbnN0IGNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGlmIChmaWx0ZXJzLmFjdGl2ZUNvbG9yRmlsdGVySWQudmFsdWUgIT09IHByb3BzLmZpbHRlci5pZCkge1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcbiAgcmV0dXJuIGdldEZpbHRlclZhbHVlQ29sb3IocHJvcHMudmFsdWUpXHJcbn0pXHJcblxyXG5jb25zdCBpc0RlZmF1bHRTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4gcHJvcHMuZmlsdGVyLmlzRGVmYXVsdEFsbFNlbGVjdGVkICYmIHByb3BzLmZpbHRlci5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDBcclxufSlcclxuXHJcbmNvbnN0IGhpZ2hsaWdodCA9ICgpID0+IHtcclxuICBjb25zdCBvYmplY3RJZHMgPSB2YWx1ZUdyb3VwLnZhbHVlPy5pZHNcclxuICBpZiAob2JqZWN0SWRzICYmIG9iamVjdElkcy5sZW5ndGggPiAwKSB7XHJcbiAgICBoaWdobGlnaHRPYmplY3RzKG9iamVjdElkcylcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IHVuaGlnaGxpZ2h0ID0gKCkgPT4ge1xyXG4gIGNvbnN0IG9iamVjdElkcyA9IHZhbHVlR3JvdXAudmFsdWU/Lmlkc1xyXG4gIGlmIChvYmplY3RJZHMgJiYgb2JqZWN0SWRzLmxlbmd0aCA+IDApIHtcclxuICAgIHVuaGlnaGxpZ2h0T2JqZWN0cyhvYmplY3RJZHMpXHJcbiAgfVxyXG59XHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy92aWV3ZXIvZmlsdGVycy9maWx0ZXIvc3RyaW5nL1ZhbHVlSXRlbS52dWUifQ==