Files
speckle-server/scratch/edge-debug-selection/Default/Cache/Cache_Data/f_000101
T

219 lines
21 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/common/TransitioningContents.vue");import {
waitIntervalUntil,
timeoutAt,
WaitIntervalUntilCanceledError,
TimeoutError,
TIME_MS
} from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/index.js";
import { until } from "/_nuxt/node_modules/@vueuse/core/index.mjs?v=e4f18c29";
import { defineComponent, ref, shallowRef, h } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
import { useLogger } from "/_nuxt/composables/logging.ts";
const _sfc_main = defineComponent({
props: {
duration: {
type: Number,
default: TIME_MS.second
},
debug: {
type: Boolean,
default: false
}
},
setup(props, { slots, expose }) {
const logger = useLogger();
const transitioning = ref(false);
const newWrapperRef = ref(null);
const oldWrapperRef = ref(null);
const newContents = shallowRef(slots.default?.());
const oldContents = shallowRef(void 0);
const newOpacity = ref(1);
const oldOpacity = ref(1);
const newTransitionEnabled = ref(false);
const oldTransitionEnabled = ref(false);
const waitForDomUpdate = async (params) => {
const { ref: ref2, expectClasses, expectStyle, shouldNotHaveClasses } = params;
let attempt = 0;
const promise = waitIntervalUntil(100, () => {
if (attempt > 20) {
promise.cancel();
}
attempt++;
const el = ref2.value;
if (!el) return false;
if (expectStyle) {
for (const [key, value] of Object.entries(expectStyle)) {
if (el.style[key] !== value) {
return false;
}
}
}
if (expectClasses) {
for (const className of expectClasses) {
if (!el.classList.contains(className)) {
return false;
}
}
}
if (shouldNotHaveClasses) {
for (const className of shouldNotHaveClasses) {
if (el.classList.contains(className)) {
return false;
}
}
}
return true;
});
try {
await promise;
} catch (e) {
if (e instanceof WaitIntervalUntilCanceledError) {
if (props.debug) {
throw e;
}
} else {
throw e;
}
}
};
const updateContents = async () => {
transitioning.value = true;
oldContents.value = newContents.value;
newContents.value = slots.default?.();
newTransitionEnabled.value = false;
newOpacity.value = 0;
oldTransitionEnabled.value = false;
oldOpacity.value = 1;
await Promise.all([
waitForDomUpdate({
ref: newWrapperRef,
expectStyle: { opacity: "0" },
shouldNotHaveClasses: ["transition-opacity"]
}),
waitForDomUpdate({
ref: oldWrapperRef,
expectStyle: { opacity: "1" },
shouldNotHaveClasses: ["transition-opacity"]
})
]);
oldTransitionEnabled.value = newTransitionEnabled.value = true;
await Promise.all([
waitForDomUpdate({
ref: newWrapperRef,
expectClasses: ["transition-opacity"]
}),
waitForDomUpdate({
ref: oldWrapperRef,
expectClasses: ["transition-opacity"]
})
]);
newOpacity.value = 1;
oldOpacity.value = 0;
await Promise.all([
waitForDomUpdate({
ref: newWrapperRef,
expectStyle: { opacity: "1" }
}),
waitForDomUpdate({
ref: oldWrapperRef,
expectStyle: { opacity: "0" }
})
]);
};
const triggerTransition = async () => {
if (!transitioning.value) {
await updateContents();
return;
}
try {
await Promise.race([
until(transitioning).toBe(false),
timeoutAt(
props.duration + TIME_MS.second,
"Waiting for transition to finish timed out"
)
]);
} catch (e) {
if (!(e instanceof TimeoutError)) {
throw e;
} else {
logger.warn(e);
}
}
await updateContents();
};
const buildItemProps = (params) => {
const { zIndex, withTransitions, opacity } = params;
const classParts = ["absolute inset-0"];
const style = {
zIndex,
opacity,
...withTransitions ? {
transitionDuration: `${props.duration}ms`
} : {}
};
if (withTransitions) {
classParts.push("transition-opacity");
}
return {
class: classParts.join(" "),
style
};
};
expose({
triggerTransition
});
return () => {
return h("div", { class: "relative" }, [
h(
"div",
{
...buildItemProps({
zIndex: 2,
withTransitions: newTransitionEnabled.value,
opacity: newOpacity.value
}),
ref: newWrapperRef
},
[newContents.value]
),
...oldContents.value ? [
h(
"div",
{
...buildItemProps({
zIndex: 1,
withTransitions: oldTransitionEnabled.value,
opacity: oldOpacity.value
}),
ref: oldWrapperRef,
onTransitionend: () => {
oldContents.value = void 0;
transitioning.value = false;
}
},
[oldContents.value]
)
] : []
]);
};
}
});
_sfc_main.__hmrId = "b0b85ad7";
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__ */ Object.assign(_export_sfc(_sfc_main, [["__file", "D:/speckle-server/packages/frontend-2/components/common/TransitioningContents.vue"]]), { __name: "CommonTransitioningContents" });
//# sourceMappingURL=data:application/json;base64,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IjpbXSwic291cmNlcyI6WyJUcmFuc2l0aW9uaW5nQ29udGVudHMudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7XHJcbiAgd2FpdEludGVydmFsVW50aWwsXHJcbiAgdHlwZSBOdWxsYWJsZSxcclxuICB0aW1lb3V0QXQsXHJcbiAgV2FpdEludGVydmFsVW50aWxDYW5jZWxlZEVycm9yLFxyXG4gIFRpbWVvdXRFcnJvcixcclxuICBUSU1FX01TXHJcbn0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkJ1xyXG5pbXBvcnQgeyB1bnRpbCB9IGZyb20gJ0B2dWV1c2UvY29yZSdcclxuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSAndnVlJ1xyXG5cclxuLyoqXHJcbiAqIEEgY29tcG9uZW50IHRoYXQgdHJhbnNpdGlvbnMgYmV0d2VlbiB0d28gc2V0cyBvZiBjb250ZW50cyB3aXRoIGEgY3Jvc3NmYWRlIGVmZmVjdC4gWW91IG9ubHlcclxuICogaGF2ZSB0byB1c2UgYSBzaW5nbGUgc2xvdCAtIHRoZSBjb21wb25lbnQgd2lsbCBub3QgdXBkYXRlIGFueSBjb250ZW50cyBpbnNpZGUgb2YgdGhlIHNsb3RcclxuICogdW50aWwgeW91IGNhbGwgdGhlIGB0cmlnZ2VyVHJhbnNpdGlvbmAgbWV0aG9kLCBhbmQgdGhlbiB0aGUgdXBkYXRlIHdpbGwgaGFwcGVuIHdpdGggYSBzbW9vdGhcclxuICogdHJhbnNpdGlvbi5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgcHJvcHM6IHtcclxuICAgIGR1cmF0aW9uOiB7XHJcbiAgICAgIHR5cGU6IE51bWJlcixcclxuICAgICAgZGVmYXVsdDogVElNRV9NUy5zZWNvbmRcclxuICAgIH0sXHJcbiAgICBkZWJ1Zzoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGV4cG9zZSB9KSB7XHJcbiAgICBjb25zdCBsb2dnZXIgPSB1c2VMb2dnZXIoKVxyXG5cclxuICAgIGNvbnN0IHRyYW5zaXRpb25pbmcgPSByZWYoZmFsc2UpXHJcbiAgICBjb25zdCBuZXdXcmFwcGVyUmVmID0gcmVmKG51bGwgYXMgTnVsbGFibGU8SFRNTERpdkVsZW1lbnQ+KVxyXG4gICAgY29uc3Qgb2xkV3JhcHBlclJlZiA9IHJlZihudWxsIGFzIE51bGxhYmxlPEhUTUxEaXZFbGVtZW50PilcclxuXHJcbiAgICBjb25zdCBuZXdDb250ZW50cyA9IHNoYWxsb3dSZWYoc2xvdHMuZGVmYXVsdD8uKCkpXHJcbiAgICBjb25zdCBvbGRDb250ZW50czogdHlwZW9mIG5ld0NvbnRlbnRzID0gc2hhbGxvd1JlZih1bmRlZmluZWQpXHJcblxyXG4gICAgY29uc3QgbmV3T3BhY2l0eSA9IHJlZigxKVxyXG4gICAgY29uc3Qgb2xkT3BhY2l0eSA9IHJlZigxKVxyXG5cclxuICAgIGNvbnN0IG5ld1RyYW5zaXRpb25FbmFibGVkID0gcmVmKGZhbHNlKVxyXG4gICAgY29uc3Qgb2xkVHJhbnNpdGlvbkVuYWJsZWQgPSByZWYoZmFsc2UpXHJcblxyXG4gICAgY29uc3Qgd2FpdEZvckRvbVVwZGF0ZSA9IGFzeW5jIChwYXJhbXM6IHtcclxuICAgICAgcmVmOiBSZWY8TnVsbGFibGU8SFRNTEVsZW1lbnQ+PlxyXG4gICAgICBleHBlY3RTdHlsZT86IFBhcnRpYWw8Q1NTUHJvcGVydGllcz5cclxuICAgICAgZXhwZWN0Q2xhc3Nlcz86IHN0cmluZ1tdXHJcbiAgICAgIHNob3VsZE5vdEhhdmVDbGFzc2VzPzogc3RyaW5nW11cclxuICAgIH0pID0+IHtcclxuICAgICAgY29uc3QgeyByZWYsIGV4cGVjdENsYXNzZXMsIGV4cGVjdFN0eWxlLCBzaG91bGROb3RIYXZlQ2xhc3NlcyB9ID0gcGFyYW1zXHJcblxyXG4gICAgICBsZXQgYXR0ZW1wdCA9IDBcclxuICAgICAgY29uc3QgcHJvbWlzZSA9IHdhaXRJbnRlcnZhbFVudGlsKDEwMCwgKCkgPT4ge1xyXG4gICAgICAgIGlmIChhdHRlbXB0ID4gMjApIHtcclxuICAgICAgICAgIHByb21pc2UuY2FuY2VsKClcclxuICAgICAgICB9XHJcbiAgICAgICAgYXR0ZW1wdCsrXHJcblxyXG4gICAgICAgIGNvbnN0IGVsID0gcmVmLnZhbHVlXHJcbiAgICAgICAgaWYgKCFlbCkgcmV0dXJuIGZhbHNlXHJcblxyXG4gICAgICAgIGlmIChleHBlY3RTdHlsZSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZXhwZWN0U3R5bGUpKSB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAgIGlmIChlbC5zdHlsZVtrZXkgYXMgYW55XSAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGV4cGVjdENsYXNzZXMpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgY2xhc3NOYW1lIG9mIGV4cGVjdENsYXNzZXMpIHtcclxuICAgICAgICAgICAgaWYgKCFlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2hvdWxkTm90SGF2ZUNsYXNzZXMpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgY2xhc3NOYW1lIG9mIHNob3VsZE5vdEhhdmVDbGFzc2VzKSB7XHJcbiAgICAgICAgICAgIGlmIChlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBhd2FpdCBwcm9taXNlXHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFdhaXRJbnRlcnZhbFVudGlsQ2FuY2VsZWRFcnJvcikge1xyXG4gICAgICAgICAgaWYgKHByb3BzLmRlYnVnKSB7XHJcbiAgICAgICAgICAgIHRocm93IGVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhyb3cgZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2F1c2UgZGVmYXVsdCBzbG90IHRvIHVwZGF0ZSB3aXRoIGFuIG9wYWNpdHkgdHJhbnNpdGlvblxyXG4gICAgICovXHJcbiAgICBjb25zdCB1cGRhdGVDb250ZW50cyA9IGFzeW5jICgpID0+IHtcclxuICAgICAgdHJhbnNpdGlvbmluZy52YWx1ZSA9IHRydWVcclxuXHJcbiAgICAgIC8vIFN0YWdlIDE6IEp1c3QgbW92ZSBuZXcgLT4gb2xkIHcvbyBhbnkgdHJhbnNpdGlvbnMgKHZpc3VhbGx5IHNob3VsZCBsb29rIHRoZSBzYW1lKVxyXG4gICAgICBvbGRDb250ZW50cy52YWx1ZSA9IG5ld0NvbnRlbnRzLnZhbHVlXHJcbiAgICAgIG5ld0NvbnRlbnRzLnZhbHVlID0gc2xvdHMuZGVmYXVsdD8uKClcclxuXHJcbiAgICAgIG5ld1RyYW5zaXRpb25FbmFibGVkLnZhbHVlID0gZmFsc2VcclxuICAgICAgbmV3T3BhY2l0eS52YWx1ZSA9IDBcclxuXHJcbiAgICAgIG9sZFRyYW5zaXRpb25FbmFibGVkLnZhbHVlID0gZmFsc2VcclxuICAgICAgb2xkT3BhY2l0eS52YWx1ZSA9IDFcclxuXHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcclxuICAgICAgICB3YWl0Rm9yRG9tVXBkYXRlKHtcclxuICAgICAgICAgIHJlZjogbmV3V3JhcHBlclJlZixcclxuICAgICAgICAgIGV4cGVjdFN0eWxlOiB7IG9wYWNpdHk6ICcwJyB9LFxyXG4gICAgICAgICAgc2hvdWxkTm90SGF2ZUNsYXNzZXM6IFsndHJhbnNpdGlvbi1vcGFjaXR5J11cclxuICAgICAgICB9KSxcclxuICAgICAgICB3YWl0Rm9yRG9tVXBkYXRlKHtcclxuICAgICAgICAgIHJlZjogb2xkV3JhcHBlclJlZixcclxuICAgICAgICAgIGV4cGVjdFN0eWxlOiB7IG9wYWNpdHk6ICcxJyB9LFxyXG4gICAgICAgICAgc2hvdWxkTm90SGF2ZUNsYXNzZXM6IFsndHJhbnNpdGlvbi1vcGFjaXR5J11cclxuICAgICAgICB9KVxyXG4gICAgICBdKVxyXG5cclxuICAgICAgLy8gU3RhZ2UgMjogVHJhbnNpdGlvbiBib3RoXHJcbiAgICAgIG9sZFRyYW5zaXRpb25FbmFibGVkLnZhbHVlID0gbmV3VHJhbnNpdGlvbkVuYWJsZWQudmFsdWUgPSB0cnVlXHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcclxuICAgICAgICB3YWl0Rm9yRG9tVXBkYXRlKHtcclxuICAgICAgICAgIHJlZjogbmV3V3JhcHBlclJlZixcclxuICAgICAgICAgIGV4cGVjdENsYXNzZXM6IFsndHJhbnNpdGlvbi1vcGFjaXR5J11cclxuICAgICAgICB9KSxcclxuICAgICAgICB3YWl0Rm9yRG9tVXBkYXRlKHtcclxuICAgICAgICAgIHJlZjogb2xkV3JhcHBlclJlZixcclxuICAgICAgICAgIGV4cGVjdENsYXNzZXM6IFsndHJhbnNpdGlvbi1vcGFjaXR5J11cclxuICAgICAgICB9KVxyXG4gICAgICBdKVxyXG5cclxuICAgICAgbmV3T3BhY2l0eS52YWx1ZSA9IDFcclxuICAgICAgb2xkT3BhY2l0eS52YWx1ZSA9IDBcclxuXHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcclxuICAgICAgICB3YWl0Rm9yRG9tVXBkYXRlKHtcclxuICAgICAgICAgIHJlZjogbmV3V3JhcHBlclJlZixcclxuICAgICAgICAgIGV4cGVjdFN0eWxlOiB7IG9wYWNpdHk6ICcxJyB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgd2FpdEZvckRvbVVwZGF0ZSh7XHJcbiAgICAgICAgICByZWY6IG9sZFdyYXBwZXJSZWYsXHJcbiAgICAgICAgICBleHBlY3RTdHlsZTogeyBvcGFjaXR5OiAnMCcgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIF0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdHJpZ2dlclRyYW5zaXRpb24gPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGlmICghdHJhbnNpdGlvbmluZy52YWx1ZSkge1xyXG4gICAgICAgIGF3YWl0IHVwZGF0ZUNvbnRlbnRzKClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xyXG4gICAgICAgICAgdW50aWwodHJhbnNpdGlvbmluZykudG9CZShmYWxzZSksXHJcbiAgICAgICAgICB0aW1lb3V0QXQoXHJcbiAgICAgICAgICAgIHByb3BzLmR1cmF0aW9uICsgVElNRV9NUy5zZWNvbmQsXHJcbiAgICAgICAgICAgICdXYWl0aW5nIGZvciB0cmFuc2l0aW9uIHRvIGZpbmlzaCB0aW1lZCBvdXQnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXSlcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IpKSB7XHJcbiAgICAgICAgICB0aHJvdyBlXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZ2dlci53YXJuKGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBhd2FpdCB1cGRhdGVDb250ZW50cygpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYnVpbGRJdGVtUHJvcHMgPSAocGFyYW1zOiB7XHJcbiAgICAgIHpJbmRleDogbnVtYmVyXHJcbiAgICAgIHdpdGhUcmFuc2l0aW9uczogYm9vbGVhblxyXG4gICAgICBvcGFjaXR5OiBudW1iZXJcclxuICAgIH0pID0+IHtcclxuICAgICAgY29uc3QgeyB6SW5kZXgsIHdpdGhUcmFuc2l0aW9ucywgb3BhY2l0eSB9ID0gcGFyYW1zXHJcbiAgICAgIGNvbnN0IGNsYXNzUGFydHMgPSBbJ2Fic29sdXRlIGluc2V0LTAnXVxyXG4gICAgICBjb25zdCBzdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcclxuICAgICAgICB6SW5kZXgsXHJcbiAgICAgICAgb3BhY2l0eSxcclxuICAgICAgICAuLi4od2l0aFRyYW5zaXRpb25zXHJcbiAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246IGAke3Byb3BzLmR1cmF0aW9ufW1zYFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA6IHt9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAod2l0aFRyYW5zaXRpb25zKSB7XHJcbiAgICAgICAgY2xhc3NQYXJ0cy5wdXNoKCd0cmFuc2l0aW9uLW9wYWNpdHknKVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNsYXNzOiBjbGFzc1BhcnRzLmpvaW4oJyAnKSxcclxuICAgICAgICBzdHlsZVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3NlKHtcclxuICAgICAgdHJpZ2dlclRyYW5zaXRpb25cclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgcmV0dXJuIGgoJ2RpdicsIHsgY2xhc3M6ICdyZWxhdGl2ZScgfSwgW1xyXG4gICAgICAgIGgoXHJcbiAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgLi4uYnVpbGRJdGVtUHJvcHMoe1xyXG4gICAgICAgICAgICAgIHpJbmRleDogMixcclxuICAgICAgICAgICAgICB3aXRoVHJhbnNpdGlvbnM6IG5ld1RyYW5zaXRpb25FbmFibGVkLnZhbHVlLFxyXG4gICAgICAgICAgICAgIG9wYWNpdHk6IG5ld09wYWNpdHkudmFsdWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHJlZjogbmV3V3JhcHBlclJlZlxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIFtuZXdDb250ZW50cy52YWx1ZV1cclxuICAgICAgICApLFxyXG4gICAgICAgIC4uLihvbGRDb250ZW50cy52YWx1ZVxyXG4gICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgaChcclxuICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAuLi5idWlsZEl0ZW1Qcm9wcyh7XHJcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpdGhUcmFuc2l0aW9uczogb2xkVHJhbnNpdGlvbkVuYWJsZWQudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogb2xkT3BhY2l0eS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgcmVmOiBvbGRXcmFwcGVyUmVmLFxyXG4gICAgICAgICAgICAgICAgICBvblRyYW5zaXRpb25lbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBTdGFnZSAzOiBDbGVhbiB1cFxyXG4gICAgICAgICAgICAgICAgICAgIG9sZENvbnRlbnRzLnZhbHVlID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbmluZy52YWx1ZSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBbb2xkQ29udGVudHMudmFsdWVdXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICA6IFtdKVxyXG4gICAgICBdKVxyXG4gICAgfVxyXG4gIH1cclxufSlcclxuPC9zY3JpcHQ+XHJcbiJdLCJmaWxlIjoiRDovc3BlY2tsZS1zZXJ2ZXIvcGFja2FnZXMvZnJvbnRlbmQtMi9jb21wb25lbnRzL2NvbW1vbi9UcmFuc2l0aW9uaW5nQ29udGVudHMudnVlIn0=