import { LogicError } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { upperFirst, values } from "/_nuxt/node_modules/.cache/vite/client/deps/lodash-es.js?v=e4f18c29"; import { computed, unref, ref, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; export const useMultiStepDialog = (params) => { const steps = computed(() => unref(params.steps).filter((s) => !s.skippable)); const stepId = ref(steps.value[0].id); const step = computed(() => { const currentStep = steps.value.find((s) => s.id === stepId.value); if (!currentStep) { throw new LogicError("Invalid steps array or stepId provided"); } return currentStep; }); const nextOrderedStep = computed(() => { const currentIndex = steps.value.findIndex((s) => s.id === stepId.value); if (currentIndex === -1) { return void 0; } const nextStep2 = steps.value[currentIndex + 1]; if (nextStep2?.id === stepId.value) { return void 0; } return nextStep2; }); const previousOrderedStep = computed(() => { const currentIndex = steps.value.findIndex((s) => s.id === stepId.value); if (currentIndex === -1) { return void 0; } const previousStep2 = steps.value[currentIndex - 1]; if (previousStep2?.id === stepId.value) { return void 0; } return previousStep2; }); const nextStep = computed(() => { if (params.resolveNextStep) { const nextStepId = params.resolveNextStep({ currentStep: step.value, reset: false }); const nextStep2 = steps.value.find((s) => s.id === nextStepId); if (nextStep2?.id === stepId.value) { return void 0; } return nextStep2; } else { return nextOrderedStep.value; } }); const previousStep = computed(() => { if (params.resolvePreviousStep) { const previousStepId = params.resolvePreviousStep({ currentStep: step.value }); const previousStep2 = steps.value.find((s) => s.id === previousStepId); if (previousStep2?.id === stepId.value) { return void 0; } return previousStep2; } else { return previousOrderedStep.value; } }); const walkToAdjacentStep = (forward) => { const adjacentStep = forward ? nextOrderedStep.value : previousOrderedStep.value; if (adjacentStep) { stepId.value = adjacentStep.id; } }; const goToNextOrderedStep = () => walkToAdjacentStep(true); const goToPreviousOrderedStep = () => walkToAdjacentStep(false); const goToStep = (id) => { const stepIndex = steps.value.findIndex((s) => s.id === id); if (stepIndex === -1) { return; } stepId.value = steps.value[stepIndex].id; }; const goToNextStep = () => { const nextStepId = nextStep.value?.id; if (nextStepId) { goToStep(nextStepId); } }; const goToPreviousStep = () => { const previousStepId = previousStep.value?.id; if (previousStepId) { goToStep(previousStepId); } }; const resetStep = () => { if (params.resolveNextStep) { const nextStepId = params.resolveNextStep({ currentStep: step.value, reset: true }); goToStep(nextStepId); } else { stepId.value = steps.value[0].id; } }; return { stepId, step, nextStep, previousStep, nextOrderedStep, previousOrderedStep, goToNextOrderedStep, goToPreviousOrderedStep, goToStep, goToNextStep, goToPreviousStep, resetStep }; }; export const useMultipleDialogBranching = (params) => { const open = params.open; const conditionOpenComputeds = Object.entries(params.conditions).reduce( (acc, entry) => { const key = `open${upperFirst( entry[0] )}`; const condition = entry[1]; acc[key] = computed({ get: () => { if (!condition.value) return false; return open.value; }, set: (value) => { if (!value) return open.value = false; if (!condition.value) return false; condition.value = value; } }); return acc; }, {} ); const isDefaultBranch = computed(() => { return !params.noDefault && values(conditionOpenComputeds).every((c) => !c.value); }); const openDefault = computed({ get: () => { if (!isDefaultBranch.value) return false; return open.value; }, set: (value) => { if (!value) return open.value = false; if (!isDefaultBranch.value) return false; open.value = value; } }); watch( () => values(params.conditions).map((c) => c.value.toString()).join("-"), (newVal, oldVal) => { if (newVal !== oldVal && open.value) { open.value = false; } } ); return { open, openDefault, ...conditionOpenComputeds }; }; //# sourceMappingURL=data:application/json;base64,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QUEsUUFDQSxLQUFLLENBQUMsVUFBVTtBQUNkLGNBQUksQ0FBQyxNQUFPLFFBQVEsS0FBSyxRQUFRO0FBQ2pDLGNBQUksQ0FBQyxVQUFVLE1BQU8sUUFBTztBQUU3QixvQkFBVSxRQUFRO0FBQUEsUUFDcEI7QUFBQSxNQUNGLENBQUM7QUFDRCxhQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLGtCQUFrQixTQUFTLE1BQU07QUFDckMsV0FDRSxDQUFDLE9BQU8sYUFDUixPQUFxQixzQkFBc0IsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSztBQUFBLEVBRXRFLENBQUM7QUFFRCxRQUFNLGNBQWMsU0FBUztBQUFBLElBQzNCLEtBQUssTUFBTTtBQUNULFVBQUksQ0FBQyxnQkFBZ0IsTUFBTyxRQUFPO0FBQ25DLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFBQSxJQUNBLEtBQUssQ0FBQyxVQUFVO0FBQ2QsVUFBSSxDQUFDLE1BQU8sUUFBUSxLQUFLLFFBQVE7QUFDakMsVUFBSSxDQUFDLGdCQUFnQixNQUFPLFFBQU87QUFFbkMsV0FBSyxRQUFRO0FBQUEsSUFDZjtBQUFBLEVBQ0YsQ0FBQztBQUtEO0FBQUEsSUFDRSxNQUNFLE9BQXFCLE9BQU8sVUFBVSxFQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDLEVBQzdCLEtBQUssR0FBRztBQUFBLElBQ2IsQ0FBQyxRQUFRLFdBQVc7QUFDbEIsVUFBSSxXQUFXLFVBQVUsS0FBSyxPQUFPO0FBQ25DLGFBQUssUUFBUTtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBRztBQUFBLEVBQ0w7QUFDRiIsIm5hbWVzIjpbIm5leHRTdGVwIiwicHJldmlvdXNTdGVwIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbImRpYWxvZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dpY0Vycm9yIH0gZnJvbSAnQHNwZWNrbGUvdWktY29tcG9uZW50cydcclxuaW1wb3J0IHsgdXBwZXJGaXJzdCwgdmFsdWVzIH0gZnJvbSAnbG9kYXNoLWVzJ1xyXG5pbXBvcnQgdHlwZSB7IE1vZGVsUmVmLCBSZWYgfSBmcm9tICd2dWUnXHJcblxyXG5leHBvcnQgdHlwZSBEaWFsb2dTdGVwPElEIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9IHtcclxuICBpZDogSURcclxuICB0aXRsZTogc3RyaW5nXHJcbiAgLyoqXHJcbiAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBzdGVwIHdpbGwgYmUgc2tpcHBlZCBhbmQgdXNlciB3aWxsIGJlIHNlbnQgdG8gbmV4dCBzdGVwIGluc3RlYWRcclxuICAgKi9cclxuICBza2lwcGFibGU/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB1c2VNdWx0aVN0ZXBEaWFsb2cgPSA8SUQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHBhcmFtczoge1xyXG4gIHN0ZXBzOiBNYXliZVJlZjxBcnJheTxEaWFsb2dTdGVwPElEPj4+XHJcbiAgcmVzb2x2ZU5leHRTdGVwPzogKHBhcmFtczogeyBjdXJyZW50U3RlcDogRGlhbG9nU3RlcDxJRD47IHJlc2V0OiBib29sZWFuIH0pID0+IElEXHJcbiAgcmVzb2x2ZVByZXZpb3VzU3RlcD86IChwYXJhbXM6IHsgY3VycmVudFN0ZXA6IERpYWxvZ1N0ZXA8SUQ+IH0pID0+IElEXHJcbn0pID0+IHtcclxuICBjb25zdCBzdGVwcyA9IGNvbXB1dGVkKCgpID0+IHVucmVmKHBhcmFtcy5zdGVwcykuZmlsdGVyKChzKSA9PiAhcy5za2lwcGFibGUpKVxyXG5cclxuICBjb25zdCBzdGVwSWQgPSByZWY8SUQ+KHN0ZXBzLnZhbHVlWzBdIS5pZClcclxuICBjb25zdCBzdGVwID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudFN0ZXAgPSBzdGVwcy52YWx1ZS5maW5kKChzKSA9PiBzLmlkID09PSBzdGVwSWQudmFsdWUpXHJcbiAgICBpZiAoIWN1cnJlbnRTdGVwKSB7XHJcbiAgICAgIHRocm93IG5ldyBMb2dpY0Vycm9yKCdJbnZhbGlkIHN0ZXBzIGFycmF5IG9yIHN0ZXBJZCBwcm92aWRlZCcpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnRTdGVwXHJcbiAgfSlcclxuXHJcbiAgY29uc3QgbmV4dE9yZGVyZWRTdGVwID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gc3RlcHMudmFsdWUuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSBzdGVwSWQudmFsdWUpXHJcbiAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV4dFN0ZXAgPSBzdGVwcy52YWx1ZVtjdXJyZW50SW5kZXggKyAxXVxyXG4gICAgaWYgKG5leHRTdGVwPy5pZCA9PT0gc3RlcElkLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV4dFN0ZXBcclxuICB9KVxyXG5cclxuICBjb25zdCBwcmV2aW91c09yZGVyZWRTdGVwID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gc3RlcHMudmFsdWUuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSBzdGVwSWQudmFsdWUpXHJcbiAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJldmlvdXNTdGVwID0gc3RlcHMudmFsdWVbY3VycmVudEluZGV4IC0gMV1cclxuICAgIGlmIChwcmV2aW91c1N0ZXA/LmlkID09PSBzdGVwSWQudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwcmV2aW91c1N0ZXBcclxuICB9KVxyXG5cclxuICBjb25zdCBuZXh0U3RlcCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmIChwYXJhbXMucmVzb2x2ZU5leHRTdGVwKSB7XHJcbiAgICAgIGNvbnN0IG5leHRTdGVwSWQgPSBwYXJhbXMucmVzb2x2ZU5leHRTdGVwKHtcclxuICAgICAgICBjdXJyZW50U3RlcDogc3RlcC52YWx1ZSxcclxuICAgICAgICByZXNldDogZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgY29uc3QgbmV4dFN0ZXAgPSBzdGVwcy52YWx1ZS5maW5kKChzKSA9PiBzLmlkID09PSBuZXh0U3RlcElkKVxyXG4gICAgICBpZiAobmV4dFN0ZXA/LmlkID09PSBzdGVwSWQudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuZXh0U3RlcFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5leHRPcmRlcmVkU3RlcC52YWx1ZVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIGNvbnN0IHByZXZpb3VzU3RlcCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmIChwYXJhbXMucmVzb2x2ZVByZXZpb3VzU3RlcCkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1N0ZXBJZCA9IHBhcmFtcy5yZXNvbHZlUHJldmlvdXNTdGVwKHsgY3VycmVudFN0ZXA6IHN0ZXAudmFsdWUgfSlcclxuICAgICAgY29uc3QgcHJldmlvdXNTdGVwID0gc3RlcHMudmFsdWUuZmluZCgocykgPT4gcy5pZCA9PT0gcHJldmlvdXNTdGVwSWQpXHJcbiAgICAgIGlmIChwcmV2aW91c1N0ZXA/LmlkID09PSBzdGVwSWQudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHByZXZpb3VzU3RlcFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHByZXZpb3VzT3JkZXJlZFN0ZXAudmFsdWVcclxuICAgIH1cclxuICB9KVxyXG5cclxuICBjb25zdCB3YWxrVG9BZGphY2VudFN0ZXAgPSAoZm9yd2FyZDogYm9vbGVhbikgPT4ge1xyXG4gICAgY29uc3QgYWRqYWNlbnRTdGVwID0gZm9yd2FyZCA/IG5leHRPcmRlcmVkU3RlcC52YWx1ZSA6IHByZXZpb3VzT3JkZXJlZFN0ZXAudmFsdWVcclxuICAgIGlmIChhZGphY2VudFN0ZXApIHtcclxuICAgICAgc3RlcElkLnZhbHVlID0gYWRqYWNlbnRTdGVwLmlkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBnb1RvTmV4dE9yZGVyZWRTdGVwID0gKCkgPT4gd2Fsa1RvQWRqYWNlbnRTdGVwKHRydWUpXHJcbiAgY29uc3QgZ29Ub1ByZXZpb3VzT3JkZXJlZFN0ZXAgPSAoKSA9PiB3YWxrVG9BZGphY2VudFN0ZXAoZmFsc2UpXHJcbiAgY29uc3QgZ29Ub1N0ZXAgPSAoaWQ6IElEKSA9PiB7XHJcbiAgICBjb25zdCBzdGVwSW5kZXggPSBzdGVwcy52YWx1ZS5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IGlkKVxyXG4gICAgaWYgKHN0ZXBJbmRleCA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgc3RlcElkLnZhbHVlID0gc3RlcHMudmFsdWVbc3RlcEluZGV4XS5pZFxyXG4gIH1cclxuICBjb25zdCBnb1RvTmV4dFN0ZXAgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXh0U3RlcElkID0gbmV4dFN0ZXAudmFsdWU/LmlkXHJcbiAgICBpZiAobmV4dFN0ZXBJZCkge1xyXG4gICAgICBnb1RvU3RlcChuZXh0U3RlcElkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3QgZ29Ub1ByZXZpb3VzU3RlcCA9ICgpID0+IHtcclxuICAgIGNvbnN0IHByZXZpb3VzU3RlcElkID0gcHJldmlvdXNTdGVwLnZhbHVlPy5pZFxyXG4gICAgaWYgKHByZXZpb3VzU3RlcElkKSB7XHJcbiAgICAgIGdvVG9TdGVwKHByZXZpb3VzU3RlcElkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVzZXRTdGVwID0gKCkgPT4ge1xyXG4gICAgaWYgKHBhcmFtcy5yZXNvbHZlTmV4dFN0ZXApIHtcclxuICAgICAgY29uc3QgbmV4dFN0ZXBJZCA9IHBhcmFtcy5yZXNvbHZlTmV4dFN0ZXAoe1xyXG4gICAgICAgIGN1cnJlbnRTdGVwOiBzdGVwLnZhbHVlLFxyXG4gICAgICAgIHJlc2V0OiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIGdvVG9TdGVwKG5leHRTdGVwSWQpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdGVwSWQudmFsdWUgPSBzdGVwcy52YWx1ZVswXSEuaWRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBzdGVwSWQsXHJcbiAgICBzdGVwLFxyXG4gICAgbmV4dFN0ZXAsXHJcbiAgICBwcmV2aW91c1N0ZXAsXHJcbiAgICBuZXh0T3JkZXJlZFN0ZXAsXHJcbiAgICBwcmV2aW91c09yZGVyZWRTdGVwLFxyXG4gICAgZ29Ub05leHRPcmRlcmVkU3RlcCxcclxuICAgIGdvVG9QcmV2aW91c09yZGVyZWRTdGVwLFxyXG4gICAgZ29Ub1N0ZXAsXHJcbiAgICBnb1RvTmV4dFN0ZXAsXHJcbiAgICBnb1RvUHJldmlvdXNTdGVwLFxyXG4gICAgcmVzZXRTdGVwXHJcbiAgfVxyXG59XHJcblxyXG4vLyBGb3Igc29tZSByZWFzb24gUGFzY2FsQ2FzZSBvZmYgdHlwZS1mZXN0IGJyZWFrcyB2dWUtdHNjIGluIHRoaXMgc2NlbmFyaW9cclxudHlwZSBVcHBlckZpcnN0PFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGAke2luZmVyIFR9JHtpbmZlciBVfWBcclxuICA/IGAke1VwcGVyY2FzZTxUPn0ke1V9YFxyXG4gIDogU1xyXG5cclxuZXhwb3J0IGNvbnN0IHVzZU11bHRpcGxlRGlhbG9nQnJhbmNoaW5nID0gPFNwZWNpYWxDb25kaXRpb25zIGV4dGVuZHMgc3RyaW5nPihwYXJhbXM6IHtcclxuICBvcGVuOiBNb2RlbFJlZjxib29sZWFuLCBzdHJpbmcsIGJvb2xlYW4sIGJvb2xlYW4+XHJcbiAgY29uZGl0aW9uczogeyBba2V5IGluIFNwZWNpYWxDb25kaXRpb25zXTogUmVmPGJvb2xlYW4+IH1cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGNvbmRpdGlvbiBpcyBkaXNhYmxlZCBhbmQgd2lsbCBhbHdheXMgYmUgZmFsc2UuXHJcbiAgICogRGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBub0RlZmF1bHQ/OiBib29sZWFuXHJcbn0pID0+IHtcclxuICBjb25zdCBvcGVuID0gcGFyYW1zLm9wZW5cclxuICBjb25zdCBjb25kaXRpb25PcGVuQ29tcHV0ZWRzID0gT2JqZWN0LmVudHJpZXMocGFyYW1zLmNvbmRpdGlvbnMpLnJlZHVjZShcclxuICAgIChhY2MsIGVudHJ5KSA9PiB7XHJcbiAgICAgIGNvbnN0IGtleSA9IGBvcGVuJHt1cHBlckZpcnN0KFxyXG4gICAgICAgIGVudHJ5WzBdXHJcbiAgICAgICl9YCBhcyBgb3BlbiR7VXBwZXJGaXJzdDxTcGVjaWFsQ29uZGl0aW9ucz59YFxyXG4gICAgICBjb25zdCBjb25kaXRpb24gPSBlbnRyeVsxXSBhcyBSZWY8Ym9vbGVhbj5cclxuXHJcbiAgICAgIGFjY1trZXldID0gY29tcHV0ZWQoe1xyXG4gICAgICAgIGdldDogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFjb25kaXRpb24udmFsdWUpIHJldHVybiBmYWxzZVxyXG5cclxuICAgICAgICAgIHJldHVybiBvcGVuLnZhbHVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIChvcGVuLnZhbHVlID0gZmFsc2UpXHJcbiAgICAgICAgICBpZiAoIWNvbmRpdGlvbi52YWx1ZSkgcmV0dXJuIGZhbHNlXHJcblxyXG4gICAgICAgICAgY29uZGl0aW9uLnZhbHVlID0gdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiBhY2NcclxuICAgIH0sXHJcbiAgICB7fSBhcyBSZWNvcmQ8YG9wZW4ke1VwcGVyRmlyc3Q8U3BlY2lhbENvbmRpdGlvbnM+fWAsIFdyaXRhYmxlQ29tcHV0ZWRSZWY8Ym9vbGVhbj4+XHJcbiAgKVxyXG5cclxuICBjb25zdCBpc0RlZmF1bHRCcmFuY2ggPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAhcGFyYW1zLm5vRGVmYXVsdCAmJlxyXG4gICAgICB2YWx1ZXM8UmVmPGJvb2xlYW4+Pihjb25kaXRpb25PcGVuQ29tcHV0ZWRzKS5ldmVyeSgoYykgPT4gIWMudmFsdWUpXHJcbiAgICApXHJcbiAgfSlcclxuXHJcbiAgY29uc3Qgb3BlbkRlZmF1bHQgPSBjb21wdXRlZCh7XHJcbiAgICBnZXQ6ICgpID0+IHtcclxuICAgICAgaWYgKCFpc0RlZmF1bHRCcmFuY2gudmFsdWUpIHJldHVybiBmYWxzZVxyXG4gICAgICByZXR1cm4gb3Blbi52YWx1ZVxyXG4gICAgfSxcclxuICAgIHNldDogKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHJldHVybiAob3Blbi52YWx1ZSA9IGZhbHNlKVxyXG4gICAgICBpZiAoIWlzRGVmYXVsdEJyYW5jaC52YWx1ZSkgcmV0dXJuIGZhbHNlXHJcblxyXG4gICAgICBvcGVuLnZhbHVlID0gdmFsdWVcclxuICAgIH1cclxuICB9KVxyXG5cclxuICAvLyBJZiBhbnkgb2YgdGhlIGNvbmRpdGlvbnMgY2hhbmdlLCBjbG9zZSBvcGVuZXJcclxuICAvLyAoc29tZXRpbWVzIGEgZmxvdyBtYXkgZmluaXNoIGFuZCB1cGRhdGUgdG8gJ29wZW4nIG1heSBub3QgaGF2ZSBlbm91Z2ggdGltZSB0byBwcm9wYWdhdGUsXHJcbiAgLy8gc28gc29tZSBkaWFsb2cgbWF5IHN0YXkgb3BlbilcclxuICB3YXRjaChcclxuICAgICgpID0+XHJcbiAgICAgIHZhbHVlczxSZWY8Ym9vbGVhbj4+KHBhcmFtcy5jb25kaXRpb25zKVxyXG4gICAgICAgIC5tYXAoKGMpID0+IGMudmFsdWUudG9TdHJpbmcoKSlcclxuICAgICAgICAuam9pbignLScpLFxyXG4gICAgKG5ld1ZhbCwgb2xkVmFsKSA9PiB7XHJcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCAmJiBvcGVuLnZhbHVlKSB7XHJcbiAgICAgICAgb3Blbi52YWx1ZSA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICApXHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBvcGVuLFxyXG4gICAgb3BlbkRlZmF1bHQsXHJcbiAgICAuLi5jb25kaXRpb25PcGVuQ29tcHV0ZWRzXHJcbiAgfVxyXG59XHJcbiJdLCJmaWxlIjoiRDovc3BlY2tsZS1zZXJ2ZXIvcGFja2FnZXMvZnJvbnRlbmQtMi9saWIvY29tbW9uL2NvbXBvc2FibGVzL2RpYWxvZy50cyJ9