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

170 lines
17 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/common/tiptap/TextEditor.vue");/* Injection by vite-plugin-vue-inspector Start */
import { createVNode as __createVNode,createElementBlock as __createElementBlock } 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)) }
/* 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 { EditorContent, Editor } from "/_nuxt/node_modules/.cache/vite/client/deps/@tiptap_vue-3.js?v=e4f18c29";
import { getEditorExtensions } from "/_nuxt/lib/common/helpers/tiptap.ts";
import { onKeyDown } from "/_nuxt/node_modules/@vueuse/core/index.mjs?v=e4f18c29";
import { noop } from "/_nuxt/node_modules/.cache/vite/client/deps/lodash-es.js?v=e4f18c29";
import { ref, computed, watch, onBeforeUnmount } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "CommonTiptapTextEditor",
props: {
modelValue: { type: [Object, null], required: false },
schemaOptions: { type: Object, required: false },
maxHeight: { type: String, required: false },
autofocus: { type: Boolean, required: false },
disabled: { type: Boolean, required: false },
placeholder: { type: String, required: false },
readonly: { type: Boolean, required: false },
projectId: { type: String, required: false }
},
emits: ["update:modelValue", "submit", "created", "keydown"],
setup(__props, { expose: __expose, emit: __emit }) {
__expose();
const emit = __emit;
const props = __props;
const editorContentRef = ref(null);
const isMultiLine = computed(() => !!props.schemaOptions?.multiLine);
const isEditable = computed(() => !props.disabled && !props.readonly);
const hasEnterTracking = computed(() => !props.readonly && !isMultiLine.value);
const editor = new Editor({
content: props.modelValue,
autofocus: props.autofocus,
editable: isEditable.value,
extensions: getEditorExtensions(props.schemaOptions, {
placeholder: props.placeholder,
projectId: props.projectId
}),
onUpdate: () => {
const data = getData();
if (!data || Object.keys(data).length < 1) return;
emit("update:modelValue", data);
},
onCreate: () => {
emit("created");
}
});
const enterKeypressTracker = editor.storage.enterKeypressTracker;
const getData = () => editor.getJSON();
const onEnter = () => {
if (isMultiLine.value || props.readonly) return;
emit("submit", { data: getData() });
};
const onKeyDownHandler = (e) => emit("keydown", e);
const onEditorContentClick = (e) => {
const closestSelectorTarget = e.target.closest(
".editor-mention"
);
if (!closestSelectorTarget) return;
onMentionClick(closestSelectorTarget.dataset.id, e);
e.stopPropagation();
};
const onMentionClick = noop;
onKeyDown(
"Escape",
(e) => {
e.stopImmediatePropagation();
e.stopPropagation();
},
{ target: editorContentRef }
);
watch(
() => hasEnterTracking.value,
(hasEnterTracking2) => {
if (hasEnterTracking2) {
enterKeypressTracker.subscribe(editor, onEnter);
} else {
enterKeypressTracker.unsubscribe(editor, onEnter);
}
},
{ immediate: true }
);
watch(
() => props.modelValue,
(newVal) => {
const isSame = JSON.stringify(newVal) === JSON.stringify(getData());
if (isSame) return;
editor.commands.setContent(newVal || "");
}
);
watch(
() => isEditable.value,
(isEditable2) => {
editor.setEditable(isEditable2);
}
);
onBeforeUnmount(() => {
editor.destroy();
enterKeypressTracker.unsubscribe(editor, onEnter);
});
const __returned__ = { emit, props, editorContentRef, isMultiLine, isEditable, hasEnterTracking, editor, enterKeypressTracker, getData, onEnter, onKeyDownHandler, onEditorContentClick, onMentionClick, get EditorContent() {
return EditorContent;
} };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, renderSlot as _renderSlot, openBlock as _openBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = {
key: 0,
"data-v-inspector": "components/common/tiptap/TextEditor.vue:16:5"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return _openBlock(), _createElementBlock(
"div",
{
class: _normalizeClass([
"text-editor flex flex-col relative text-foreground",
!!$props.readonly ? "text-editor--read-only" : ""
]),
"data-v-inspector": "components/common/tiptap/TextEditor.vue:2:3"
},
[
_createVNode($setup["EditorContent"], {
ref: "editorContentRef",
class: "simple-scrollbar flex flex-1",
editor: $setup.editor,
style: _normalizeStyle($props.maxHeight ? `max-height: ${$props.maxHeight}; overflow-y: auto;` : ""),
onClick: $setup.onEditorContentClick,
onKeydown: _withModifiers($setup.onKeyDownHandler, ["stop"]),
"data-v-inspector": "components/common/tiptap/TextEditor.vue:8:5"
}, null, 8, ["editor", "style"]),
_ctx.$slots.actions && !$props.readonly ? (_openBlock(), _createElementBlock("div", _hoisted_1, [
_renderSlot(_ctx.$slots, "actions")
])) : _createCommentVNode("v-if", true)
],
2
/* CLASS */
);
}
import "/_nuxt/components/common/tiptap/TextEditor.vue?vue&type=style&index=0&lang.postcss";
_sfc_main.__hmrId = "e78618be";
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/common/tiptap/TextEditor.vue"]]);
//# sourceMappingURL=data:application/json;base64,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QUFBQTtBQUFBLE1BaEJILE9BQUs7QUFBQTtVQUEwRSxrQkFBUTtBQUFBO01BR3JGLG9CQUFpQjtBQUFBOztNQUVwQixhQU9FO0FBQUEsUUFOQSxLQUFJO0FBQUEsUUFDSixPQUFNO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixPQUFLLGdCQUFFLG1CQUFTLGVBQWtCLGdCQUFTO0FBQUEsUUFDM0MsU0FBTztBQUFBLFFBQ1AsV0FBTyxlQUFPLHlCQUFnQjtBQUFBLFFBQUUsb0JBQWlCO0FBQUE7TUFFekMsWUFBTyxXQUFPLENBQUssaUNBQTlCLG9CQUVNLE9BRk4sWUFFTTtBQUFBLFFBREosWUFBdUI7QUFBQSIsIm5hbWVzIjpbImhhc0VudGVyVHJhY2tpbmciLCJpc0VkaXRhYmxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIlRleHRFZGl0b3IudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8ZGl2XHJcbiAgICA6Y2xhc3M9XCJbXHJcbiAgICAgICd0ZXh0LWVkaXRvciBmbGV4IGZsZXgtY29sIHJlbGF0aXZlIHRleHQtZm9yZWdyb3VuZCcsXHJcbiAgICAgICEhcmVhZG9ubHkgPyAndGV4dC1lZGl0b3ItLXJlYWQtb25seScgOiAnJ1xyXG4gICAgXVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2NvbW1vbi90aXB0YXAvVGV4dEVkaXRvci52dWU6MjozXCJcclxuICA+XHJcbiAgICA8RWRpdG9yQ29udGVudFxyXG4gICAgICByZWY9XCJlZGl0b3JDb250ZW50UmVmXCJcclxuICAgICAgY2xhc3M9XCJzaW1wbGUtc2Nyb2xsYmFyIGZsZXggZmxleC0xXCJcclxuICAgICAgOmVkaXRvcj1cImVkaXRvclwiXHJcbiAgICAgIDpzdHlsZT1cIm1heEhlaWdodCA/IGBtYXgtaGVpZ2h0OiAke21heEhlaWdodH07IG92ZXJmbG93LXk6IGF1dG87YCA6ICcnXCJcclxuICAgICAgQGNsaWNrPVwib25FZGl0b3JDb250ZW50Q2xpY2tcIlxyXG4gICAgICBAa2V5ZG93bi5zdG9wPVwib25LZXlEb3duSGFuZGxlclwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2NvbW1vbi90aXB0YXAvVGV4dEVkaXRvci52dWU6ODo1XCJcclxuICAgIC8+XHJcbiAgICA8ZGl2IHYtaWY9XCIkc2xvdHMuYWN0aW9ucyAmJiAhcmVhZG9ubHlcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9jb21tb24vdGlwdGFwL1RleHRFZGl0b3IudnVlOjE2OjVcIj5cclxuICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbnNcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IEVkaXRvckNvbnRlbnQsIEVkaXRvciB9IGZyb20gJ0B0aXB0YXAvdnVlLTMnXHJcbmltcG9ydCB0eXBlIHsgSlNPTkNvbnRlbnQgfSBmcm9tICdAdGlwdGFwL2NvcmUnXHJcbmltcG9ydCB7IGdldEVkaXRvckV4dGVuc2lvbnMgfSBmcm9tICd+fi9saWIvY29tbW9uL2hlbHBlcnMvdGlwdGFwJ1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgRW50ZXJLZXlwcmVzc1RyYWNrZXJFeHRlbnNpb25TdG9yYWdlLFxyXG4gIFRpcHRhcEVkaXRvclNjaGVtYU9wdGlvbnNcclxufSBmcm9tICd+fi9saWIvY29tbW9uL2hlbHBlcnMvdGlwdGFwJ1xyXG5pbXBvcnQgdHlwZSB7IE51bGxhYmxlIH0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkJ1xyXG5pbXBvcnQgeyBvbktleURvd24gfSBmcm9tICdAdnVldXNlL2NvcmUnXHJcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdsb2Rhc2gtZXMnXHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xyXG4gIChlOiAndXBkYXRlOm1vZGVsVmFsdWUnLCB2YWw6IEpTT05Db250ZW50KTogdm9pZFxyXG4gIChlOiAnc3VibWl0JywgdmFsOiB7IGRhdGE6IEpTT05Db250ZW50IH0pOiB2b2lkXHJcbiAgKGU6ICdjcmVhdGVkJyk6IHZvaWRcclxuICAoZTogJ2tleWRvd24nLCB2YWw6IEtleWJvYXJkRXZlbnQpOiB2b2lkXHJcbn0+KClcclxuXHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xyXG4gIG1vZGVsVmFsdWU/OiBKU09OQ29udGVudCB8IG51bGxcclxuICBzY2hlbWFPcHRpb25zPzogVGlwdGFwRWRpdG9yU2NoZW1hT3B0aW9uc1xyXG4gIG1heEhlaWdodD86IHN0cmluZ1xyXG4gIGF1dG9mb2N1cz86IGJvb2xlYW5cclxuICBkaXNhYmxlZD86IGJvb2xlYW5cclxuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xyXG4gIHJlYWRvbmx5PzogYm9vbGVhblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gc2NvcGUgdGhpbmdzIGxpa2UgdXNlciBtZW50aW9ucyB0byBwcm9qZWN0IGNvbGxhYm9yYXRvcnMgZXRjLlxyXG4gICAqL1xyXG4gIHByb2plY3RJZD86IHN0cmluZ1xyXG59PigpXHJcblxyXG5jb25zdCBlZGl0b3JDb250ZW50UmVmID0gcmVmKG51bGwgYXMgTnVsbGFibGU8SFRNTEVsZW1lbnQ+KVxyXG5cclxuY29uc3QgaXNNdWx0aUxpbmUgPSBjb21wdXRlZCgoKSA9PiAhIXByb3BzLnNjaGVtYU9wdGlvbnM/Lm11bHRpTGluZSlcclxuY29uc3QgaXNFZGl0YWJsZSA9IGNvbXB1dGVkKCgpID0+ICFwcm9wcy5kaXNhYmxlZCAmJiAhcHJvcHMucmVhZG9ubHkpXHJcbmNvbnN0IGhhc0VudGVyVHJhY2tpbmcgPSBjb21wdXRlZCgoKSA9PiAhcHJvcHMucmVhZG9ubHkgJiYgIWlzTXVsdGlMaW5lLnZhbHVlKVxyXG5cclxuY29uc3QgZWRpdG9yID0gbmV3IEVkaXRvcih7XHJcbiAgY29udGVudDogcHJvcHMubW9kZWxWYWx1ZSxcclxuICBhdXRvZm9jdXM6IHByb3BzLmF1dG9mb2N1cyxcclxuICBlZGl0YWJsZTogaXNFZGl0YWJsZS52YWx1ZSxcclxuICBleHRlbnNpb25zOiBnZXRFZGl0b3JFeHRlbnNpb25zKHByb3BzLnNjaGVtYU9wdGlvbnMsIHtcclxuICAgIHBsYWNlaG9sZGVyOiBwcm9wcy5wbGFjZWhvbGRlcixcclxuICAgIHByb2plY3RJZDogcHJvcHMucHJvamVjdElkXHJcbiAgfSksXHJcbiAgb25VcGRhdGU6ICgpID0+IHtcclxuICAgIGNvbnN0IGRhdGEgPSBnZXREYXRhKClcclxuICAgIGlmICghZGF0YSB8fCBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggPCAxKSByZXR1cm5cclxuICAgIGVtaXQoJ3VwZGF0ZTptb2RlbFZhbHVlJywgZGF0YSlcclxuICB9LFxyXG4gIG9uQ3JlYXRlOiAoKSA9PiB7XHJcbiAgICBlbWl0KCdjcmVhdGVkJylcclxuICB9XHJcbn0pXHJcblxyXG5jb25zdCBlbnRlcktleXByZXNzVHJhY2tlciA9IGVkaXRvci5zdG9yYWdlXHJcbiAgLmVudGVyS2V5cHJlc3NUcmFja2VyIGFzIEVudGVyS2V5cHJlc3NUcmFja2VyRXh0ZW5zaW9uU3RvcmFnZVxyXG5jb25zdCBnZXREYXRhID0gKCk6IEpTT05Db250ZW50ID0+IGVkaXRvci5nZXRKU09OKClcclxuY29uc3Qgb25FbnRlciA9ICgpID0+IHtcclxuICBpZiAoaXNNdWx0aUxpbmUudmFsdWUgfHwgcHJvcHMucmVhZG9ubHkpIHJldHVyblxyXG4gIGVtaXQoJ3N1Ym1pdCcsIHsgZGF0YTogZ2V0RGF0YSgpIH0pXHJcbn1cclxuY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiBlbWl0KCdrZXlkb3duJywgZSlcclxuXHJcbmNvbnN0IG9uRWRpdG9yQ29udGVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcclxuICBjb25zdCBjbG9zZXN0U2VsZWN0b3JUYXJnZXQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXHJcbiAgICAnLmVkaXRvci1tZW50aW9uJ1xyXG4gICkgYXMgTnVsbGFibGU8SFRNTEVsZW1lbnQ+XHJcbiAgaWYgKCFjbG9zZXN0U2VsZWN0b3JUYXJnZXQpIHJldHVyblxyXG5cclxuICBvbk1lbnRpb25DbGljayhjbG9zZXN0U2VsZWN0b3JUYXJnZXQuZGF0YXNldC5pZCBhcyBzdHJpbmcsIGUpXHJcbiAgZS5zdG9wUHJvcGFnYXRpb24oKVxyXG59XHJcblxyXG5jb25zdCBvbk1lbnRpb25DbGljayA9IG5vb3BcclxuXHJcbm9uS2V5RG93bihcclxuICAnRXNjYXBlJyxcclxuICAoZSkgPT4ge1xyXG4gICAgLy8gVGlwVGFwIGhhbmRsZXMgRXNjYXBlLCB3ZSBkb24ndCB3YW50IHRoaXMgdG8gYnViYmxlIHVwIGFuZCBjbG9zZSB0aGUgdGhyZWFkXHJcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgfSxcclxuICB7IHRhcmdldDogZWRpdG9yQ29udGVudFJlZiB9XHJcbilcclxuXHJcbndhdGNoKFxyXG4gICgpID0+IGhhc0VudGVyVHJhY2tpbmcudmFsdWUsXHJcbiAgKGhhc0VudGVyVHJhY2tpbmcpID0+IHtcclxuICAgIGlmIChoYXNFbnRlclRyYWNraW5nKSB7XHJcbiAgICAgIGVudGVyS2V5cHJlc3NUcmFja2VyLnN1YnNjcmliZShlZGl0b3IsIG9uRW50ZXIpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbnRlcktleXByZXNzVHJhY2tlci51bnN1YnNjcmliZShlZGl0b3IsIG9uRW50ZXIpXHJcbiAgICB9XHJcbiAgfSxcclxuICB7IGltbWVkaWF0ZTogdHJ1ZSB9XHJcbilcclxuXHJcbndhdGNoKFxyXG4gICgpID0+IHByb3BzLm1vZGVsVmFsdWUsXHJcbiAgKG5ld1ZhbCkgPT4ge1xyXG4gICAgY29uc3QgaXNTYW1lID0gSlNPTi5zdHJpbmdpZnkobmV3VmFsKSA9PT0gSlNPTi5zdHJpbmdpZnkoZ2V0RGF0YSgpKVxyXG4gICAgaWYgKGlzU2FtZSkgcmV0dXJuXHJcblxyXG4gICAgZWRpdG9yLmNvbW1hbmRzLnNldENvbnRlbnQobmV3VmFsIHx8ICcnKVxyXG4gIH1cclxuKVxyXG5cclxud2F0Y2goXHJcbiAgKCkgPT4gaXNFZGl0YWJsZS52YWx1ZSxcclxuICAoaXNFZGl0YWJsZSkgPT4ge1xyXG4gICAgZWRpdG9yLnNldEVkaXRhYmxlKGlzRWRpdGFibGUpXHJcbiAgfVxyXG4pXHJcblxyXG5vbkJlZm9yZVVubW91bnQoKCkgPT4ge1xyXG4gIGVkaXRvci5kZXN0cm95KClcclxuICBlbnRlcktleXByZXNzVHJhY2tlci51bnN1YnNjcmliZShlZGl0b3IsIG9uRW50ZXIpXHJcbn0pXHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cInBvc3Rjc3NcIj5cclxuLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAqL1xyXG4uUHJvc2VNaXJyb3ItZm9jdXNlZCB7XHJcbiAgb3V0bGluZTogbm9uZTtcclxufVxyXG5cclxuLlByb3NlTWlycm9yIHtcclxuICBmbGV4OiAxO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAmIHA6bGFzdC1vZi10eXBlIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG5cclxuICAmIHAuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkOjpiZWZvcmUge1xyXG4gICAgY29udGVudDogYXR0cihkYXRhLXBsYWNlaG9sZGVyKTtcclxuICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgICBAYXBwbHkgdGV4dC1mb3JlZ3JvdW5kLWRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgJiAuZWRpdG9yLW1lbnRpb24ge1xyXG4gICAgYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xyXG4gICAgQGFwcGx5IHRleHQtcHJpbWFyeSBkYXJrOnRleHQtYmx1ZS00MDAgdGV4dC1ib2R5LTJ4cztcclxuICB9XHJcblxyXG4gICYgYSB7XHJcbiAgICBAYXBwbHkgYm9yZGVyLWIgYm9yZGVyLW91dGxpbmUtMztcclxuICB9XHJcbn1cclxuXHJcbi50ZXh0LWVkaXRvciB7XHJcbiAgJi0tcmVhZC1vbmx5IHtcclxuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldCAhaW1wb3J0YW50O1xyXG4gICAgYm94LXNoYWRvdzogdW5zZXQgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvY29tbW9uL3RpcHRhcC9UZXh0RWRpdG9yLnZ1ZSJ9