251 lines
26 KiB
Plaintext
251 lines
26 KiB
Plaintext
import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/project/page/models/CardView.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/project/models/BasicCardView.vue";
|
|
import { default as __nuxt_component_1 } from "/_nuxt/components/form/ButtonSecondaryViewAll.vue";
|
|
import { default as __nuxt_component_2 } from "/_nuxt/components/common/EmptySearchState.vue";
|
|
import { default as __nuxt_component_3 } from "/_nuxt/components/project/CardImportFileArea.vue";
|
|
import { InfiniteLoading as __nuxt_component_4 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
|
|
/* Injection by vite-plugin-vue-inspector Start */
|
|
import { createVNode as __createVNode,createBlock as __createBlock,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 _createBlock(...args) { return _interopVNode(__createBlock(...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 { useQuery, useQueryLoading } from "/_nuxt/node_modules/@vue/apollo-composable/dist/index.mjs?v=e4f18c29";
|
|
import {
|
|
latestModelsPaginationQuery,
|
|
latestModelsQuery
|
|
} from "/_nuxt/lib/projects/graphql/queries.ts";
|
|
import { allProjectModelsRoute } from "/_nuxt/lib/common/helpers/route.ts";
|
|
|
|
import { useLogger } from "/_nuxt/composables/logging.ts";
|
|
import { computed, ref, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
__name: "ProjectPageModelsCardView",
|
|
props: {
|
|
projectId: { type: String, required: true },
|
|
project: { type: null, required: true },
|
|
search: { type: String, required: false },
|
|
showActions: { type: Boolean, required: false, default: true },
|
|
showVersions: { type: Boolean, required: false, default: true },
|
|
disableDefaultLinks: { type: Boolean, required: false },
|
|
excludedIds: { type: Array, required: false },
|
|
excludeEmptyModels: { type: Boolean, required: false },
|
|
disablePagination: { type: Boolean, required: false },
|
|
sourceApps: { type: Array, required: false },
|
|
contributors: { type: Array, required: false },
|
|
smallView: { type: Boolean, required: false },
|
|
hideFileUpload: { type: Boolean, required: false }
|
|
},
|
|
emits: ["update:loading", "model-clicked", "clear-search"],
|
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
__expose();
|
|
const emit = __emit;
|
|
const props = __props;
|
|
const logger = useLogger();
|
|
const areQueriesLoading = useQueryLoading();
|
|
const latestModelsQueryVariables = computed(
|
|
() => {
|
|
const shouldHaveFilter = props.search?.length || props.excludedIds?.length || props.sourceApps?.length || props.contributors?.length || !!props.excludeEmptyModels;
|
|
return {
|
|
projectId: props.projectId,
|
|
filter: shouldHaveFilter ? {
|
|
search: props.search || null,
|
|
excludeIds: props.excludedIds || null,
|
|
onlyWithVersions: !!props.excludeEmptyModels,
|
|
sourceApps: props.sourceApps?.length ? props.sourceApps.map((a) => a.searchKey) : null,
|
|
contributors: props.contributors?.length ? props.contributors.map((c) => c.id) : null
|
|
} : null
|
|
};
|
|
}
|
|
);
|
|
const infiniteLoaderId = ref("");
|
|
const isModelUploading = ref(false);
|
|
const {
|
|
result: baseResult,
|
|
variables: latestModelsVariables,
|
|
onResult: onBaseResult
|
|
} = useQuery(latestModelsQuery, () => latestModelsQueryVariables.value);
|
|
const {
|
|
result: extraPagesResult,
|
|
fetchMore: fetchMorePages,
|
|
onResult: onExtraPagesResult
|
|
} = useQuery(
|
|
latestModelsPaginationQuery,
|
|
() => ({
|
|
...latestModelsQueryVariables.value,
|
|
cursor: null
|
|
}),
|
|
() => ({ enabled: !props.disablePagination })
|
|
);
|
|
const isFiltering = computed(() => {
|
|
const filter = latestModelsVariables.value?.filter;
|
|
if (filter?.contributors?.length) return true;
|
|
if (filter?.search?.length) return true;
|
|
if (filter?.sourceApps?.length) return true;
|
|
return false;
|
|
});
|
|
const models = computed(
|
|
() => extraPagesResult.value ? extraPagesResult.value?.project?.models?.items || [] : baseResult.value?.project?.models?.items || []
|
|
);
|
|
const pendingModels = computed(
|
|
() => isFiltering.value ? [] : baseResult.value?.project?.pendingImportedModels || []
|
|
);
|
|
const items = computed(
|
|
() => [...pendingModels.value, ...models.value].slice(
|
|
0,
|
|
props.disablePagination ? 16 : void 0
|
|
)
|
|
);
|
|
const itemsCount = computed(() => items.value.length);
|
|
const moreToLoad = computed(
|
|
() => !baseResult.value?.project || baseResult.value.project.models.items.length < baseResult.value.project.models.totalCount
|
|
);
|
|
const showViewAll = computed(() => moreToLoad.value && props.disablePagination);
|
|
const infiniteLoad = async (state) => {
|
|
const cursor = extraPagesResult.value?.project?.models.cursor || baseResult.value?.project?.models.cursor || null;
|
|
if (!moreToLoad.value || !cursor) return state.complete();
|
|
try {
|
|
await fetchMorePages({
|
|
variables: {
|
|
cursor
|
|
}
|
|
});
|
|
} catch (e) {
|
|
logger.error(e);
|
|
state.error();
|
|
return;
|
|
}
|
|
state.loaded();
|
|
if (!moreToLoad.value) {
|
|
state.complete();
|
|
}
|
|
};
|
|
const calculateLoaderId = () => {
|
|
const vars = latestModelsQueryVariables.value;
|
|
const id = JSON.stringify(vars.filter);
|
|
infiniteLoaderId.value = id;
|
|
};
|
|
const onModelUploading = (payload) => {
|
|
isModelUploading.value = payload.isUploading;
|
|
};
|
|
watch(areQueriesLoading, (newVal) => {
|
|
emit("update:loading", newVal);
|
|
});
|
|
onBaseResult(calculateLoaderId);
|
|
onExtraPagesResult(calculateLoaderId);
|
|
const __returned__ = { emit, props, logger, areQueriesLoading, latestModelsQueryVariables, infiniteLoaderId, isModelUploading, baseResult, latestModelsVariables, onBaseResult, extraPagesResult, fetchMorePages, onExtraPagesResult, isFiltering, models, pendingModels, items, itemsCount, moreToLoad, showViewAll, infiniteLoad, calculateLoaderId, onModelUploading, get allProjectModelsRoute() {
|
|
return allProjectModelsRoute;
|
|
} };
|
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
return __returned__;
|
|
}
|
|
});
|
|
import { resolveComponent as _resolveComponent, openBlock as _openBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _hoisted_1 = { "data-v-inspector": "components/project/page/models/CardView.vue:2:3" };
|
|
const _hoisted_2 = {
|
|
key: 1,
|
|
"data-v-inspector": "components/project/page/models/CardView.vue:25:7"
|
|
};
|
|
const _hoisted_3 = {
|
|
key: 2,
|
|
class: "text-center my-6",
|
|
"data-v-inspector": "components/project/page/models/CardView.vue:33:7"
|
|
};
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
const _component_ProjectModelsBasicCardView = __nuxt_component_0;
|
|
const _component_FormButtonSecondaryViewAll = __nuxt_component_1;
|
|
const _component_CommonEmptySearchState = __nuxt_component_2;
|
|
const _component_ProjectCardImportFileArea = __nuxt_component_3;
|
|
const _component_InfiniteLoading = __nuxt_component_4;
|
|
return _openBlock(), _createElementBlock("div", _hoisted_1, [
|
|
$setup.itemsCount && !$setup.isModelUploading ? (_openBlock(), _createElementBlock(
|
|
_Fragment,
|
|
{ key: 0 },
|
|
[
|
|
_createVNode(_component_ProjectModelsBasicCardView, {
|
|
items: $setup.items,
|
|
project: $props.project,
|
|
"project-id": $props.projectId,
|
|
"small-view": $props.smallView,
|
|
"show-actions": $props.showActions,
|
|
"show-versions": $props.showVersions,
|
|
"disable-default-links": $props.disableDefaultLinks,
|
|
onModelClicked: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("model-clicked", $event)),
|
|
"data-v-inspector": "components/project/page/models/CardView.vue:4:7"
|
|
}, null, 8, ["items", "project", "project-id", "small-view", "show-actions", "show-versions", "disable-default-links"]),
|
|
$setup.showViewAll ? (_openBlock(), _createBlock(_component_FormButtonSecondaryViewAll, {
|
|
key: 0,
|
|
class: "mt-4",
|
|
to: $setup.allProjectModelsRoute($props.projectId),
|
|
"data-v-inspector": "components/project/page/models/CardView.vue:14:7"
|
|
}, null, 8, ["to"])) : _createCommentVNode("v-if", true)
|
|
],
|
|
64
|
|
/* STABLE_FRAGMENT */
|
|
)) : !$setup.areQueriesLoading ? (_openBlock(), _createElementBlock(
|
|
_Fragment,
|
|
{ key: 1 },
|
|
[
|
|
$setup.isFiltering ? (_openBlock(), _createBlock(_component_CommonEmptySearchState, {
|
|
key: 0,
|
|
onClearSearch: _cache[1] || (_cache[1] = () => _ctx.$emit("clear-search")),
|
|
"data-v-inspector": "components/project/page/models/CardView.vue:21:7"
|
|
})) : !$props.hideFileUpload ? (_openBlock(), _createElementBlock("div", _hoisted_2, [
|
|
$props.project ? (_openBlock(), _createBlock(_component_ProjectCardImportFileArea, {
|
|
key: 0,
|
|
project: $props.project,
|
|
class: "h-36 col-span-4",
|
|
onUploading: $setup.onModelUploading,
|
|
"data-v-inspector": "components/project/page/models/CardView.vue:26:9"
|
|
}, null, 8, ["project"])) : _createCommentVNode("v-if", true)
|
|
])) : (_openBlock(), _createElementBlock("div", _hoisted_3, [..._cache[2] || (_cache[2] = [
|
|
_createElementVNode(
|
|
"p",
|
|
{
|
|
class: "text-heading-sm text-foreground",
|
|
"data-v-inspector": "components/project/page/models/CardView.vue:34:9"
|
|
},
|
|
"No models",
|
|
-1
|
|
/* CACHED */
|
|
)
|
|
])]))
|
|
],
|
|
64
|
|
/* STABLE_FRAGMENT */
|
|
)) : _createCommentVNode("v-if", true),
|
|
$setup.items?.length && !$props.disablePagination ? (_openBlock(), _createBlock(_component_InfiniteLoading, {
|
|
key: 2,
|
|
settings: { identifier: $setup.infiniteLoaderId },
|
|
onInfinite: $setup.infiniteLoad,
|
|
"data-v-inspector": "components/project/page/models/CardView.vue:37:5"
|
|
}, null, 8, ["settings"])) : _createCommentVNode("v-if", true)
|
|
]);
|
|
}
|
|
_sfc_main.__hmrId = "81b1fc00";
|
|
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/project/page/models/CardView.vue"]]);
|
|
|
|
//# sourceMappingURL=data:application/json;base64,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QUUsV0FBSyxpQkFBa0IsTUFBTTtBQUFBLFVBQUcsb0JBQWlCO0FBQUE7UUFHM0Qsb0NBRFIsYUFJRTtBQUFBO1VBRkEsT0FBTTtBQUFBLFVBQ0wsSUFBSSw2QkFBc0IsZ0JBQVM7QUFBQSxVQUFHLG9CQUFpQjtBQUFBOzs7O1VBR3RDLDBDQUF0QjtBQUFBLE1BZ0JXO0FBQUE7QUFBQTtBQUFBLFFBZEQsb0NBRFIsYUFHRTtBQUFBO1VBREMsZUFBWSxnQ0FBUSxXQUFLO0FBQUEsVUFBa0Isb0JBQWlCO0FBQUEsZUFFOUMsdUNBQWpCLG9CQU9NLE9BUE4sWUFPTTtBQUFBLFVBTEksZ0NBRFIsYUFLRTtBQUFBO1lBSEMsU0FBUztBQUFBLFlBQ1YsT0FBTTtBQUFBLFlBQ0wsYUFBVztBQUFBLFlBQWtCLG9CQUFpQjtBQUFBOzZCQUduRCxvQkFFTSxPQUZOLFlBRU07QUFBQSxVQURKO0FBQUEsWUFBNEg7QUFBQTtBQUFBLGNBQXpILE9BQU07QUFBQSxjQUFrQyxvQkFBaUI7QUFBQTtZQUFtRDtBQUFBLFlBQVM7QUFBQTtBQUFBO0FBQUE7Ozs7O0lBSXBILGNBQU8sVUFBTSxDQUFLLDBDQUQxQixhQUlFO0FBQUE7TUFGQyxVQUFRLGNBQWdCLHdCQUFnQjtBQUFBLE1BQ3hDLFlBQVU7QUFBQSxNQUFjLG9CQUFpQjtBQUFBIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJDYXJkVmlldy52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gIDxkaXYgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdC9wYWdlL21vZGVscy9DYXJkVmlldy52dWU6MjozXCI+XHJcbiAgICA8dGVtcGxhdGUgdi1pZj1cIml0ZW1zQ291bnQgJiYgIWlzTW9kZWxVcGxvYWRpbmdcIj5cclxuICAgICAgPFByb2plY3RNb2RlbHNCYXNpY0NhcmRWaWV3XHJcbiAgICAgICAgOml0ZW1zPVwiaXRlbXNcIlxyXG4gICAgICAgIDpwcm9qZWN0PVwicHJvamVjdFwiXHJcbiAgICAgICAgOnByb2plY3QtaWQ9XCJwcm9qZWN0SWRcIlxyXG4gICAgICAgIDpzbWFsbC12aWV3PVwic21hbGxWaWV3XCJcclxuICAgICAgICA6c2hvdy1hY3Rpb25zPVwic2hvd0FjdGlvbnNcIlxyXG4gICAgICAgIDpzaG93LXZlcnNpb25zPVwic2hvd1ZlcnNpb25zXCJcclxuICAgICAgICA6ZGlzYWJsZS1kZWZhdWx0LWxpbmtzPVwiZGlzYWJsZURlZmF1bHRMaW5rc1wiXHJcbiAgICAgICAgQG1vZGVsLWNsaWNrZWQ9XCIkZW1pdCgnbW9kZWwtY2xpY2tlZCcsICRldmVudClcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9wcm9qZWN0L3BhZ2UvbW9kZWxzL0NhcmRWaWV3LnZ1ZTo0OjdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8Rm9ybUJ1dHRvblNlY29uZGFyeVZpZXdBbGxcclxuICAgICAgICB2LWlmPVwic2hvd1ZpZXdBbGxcIlxyXG4gICAgICAgIGNsYXNzPVwibXQtNFwiXHJcbiAgICAgICAgOnRvPVwiYWxsUHJvamVjdE1vZGVsc1JvdXRlKHByb2plY3RJZClcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9wcm9qZWN0L3BhZ2UvbW9kZWxzL0NhcmRWaWV3LnZ1ZToxNDo3XCJcclxuICAgICAgLz5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwiIWFyZVF1ZXJpZXNMb2FkaW5nXCI+XHJcbiAgICAgIDxDb21tb25FbXB0eVNlYXJjaFN0YXRlXHJcbiAgICAgICAgdi1pZj1cImlzRmlsdGVyaW5nXCJcclxuICAgICAgICBAY2xlYXItc2VhcmNoPVwiKCkgPT4gJGVtaXQoJ2NsZWFyLXNlYXJjaCcpXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdC9wYWdlL21vZGVscy9DYXJkVmlldy52dWU6MjE6N1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxkaXYgdi1lbHNlLWlmPVwiIWhpZGVGaWxlVXBsb2FkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdC9wYWdlL21vZGVscy9DYXJkVmlldy52dWU6MjU6N1wiPlxyXG4gICAgICAgIDxQcm9qZWN0Q2FyZEltcG9ydEZpbGVBcmVhXHJcbiAgICAgICAgICB2LWlmPVwicHJvamVjdFwiXHJcbiAgICAgICAgICA6cHJvamVjdD1cInByb2plY3RcIlxyXG4gICAgICAgICAgY2xhc3M9XCJoLTM2IGNvbC1zcGFuLTRcIlxyXG4gICAgICAgICAgQHVwbG9hZGluZz1cIm9uTW9kZWxVcGxvYWRpbmdcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9wcm9qZWN0L3BhZ2UvbW9kZWxzL0NhcmRWaWV3LnZ1ZToyNjo5XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJ0ZXh0LWNlbnRlciBteS02XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdC9wYWdlL21vZGVscy9DYXJkVmlldy52dWU6MzM6N1wiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1oZWFkaW5nLXNtIHRleHQtZm9yZWdyb3VuZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3QvcGFnZS9tb2RlbHMvQ2FyZFZpZXcudnVlOjM0OjlcIj5ObyBtb2RlbHM8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDxJbmZpbml0ZUxvYWRpbmdcclxuICAgICAgdi1pZj1cIml0ZW1zPy5sZW5ndGggJiYgIWRpc2FibGVQYWdpbmF0aW9uXCJcclxuICAgICAgOnNldHRpbmdzPVwieyBpZGVudGlmaWVyOiBpbmZpbml0ZUxvYWRlcklkIH1cIlxyXG4gICAgICBAaW5maW5pdGU9XCJpbmZpbml0ZUxvYWRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9wcm9qZWN0L3BhZ2UvbW9kZWxzL0NhcmRWaWV3LnZ1ZTozNzo1XCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB0eXBlIHtcclxuICBGb3JtVXNlcnNTZWxlY3RJdGVtRnJhZ21lbnQsXHJcbiAgUHJvamVjdExhdGVzdE1vZGVsc1BhZ2luYXRpb25RdWVyeVZhcmlhYmxlcyxcclxuICBQcm9qZWN0UGFnZUxhdGVzdEl0ZW1zTW9kZWxJdGVtRnJhZ21lbnQsXHJcbiAgUHJvamVjdFBhZ2VMYXRlc3RJdGVtc01vZGVsc0ZyYWdtZW50XHJcbn0gZnJvbSAnfn4vbGliL2NvbW1vbi9nZW5lcmF0ZWQvZ3FsL2dyYXBocWwnXHJcbmltcG9ydCB7IHVzZVF1ZXJ5LCB1c2VRdWVyeUxvYWRpbmcgfSBmcm9tICdAdnVlL2Fwb2xsby1jb21wb3NhYmxlJ1xyXG5pbXBvcnQge1xyXG4gIGxhdGVzdE1vZGVsc1BhZ2luYXRpb25RdWVyeSxcclxuICBsYXRlc3RNb2RlbHNRdWVyeVxyXG59IGZyb20gJ35+L2xpYi9wcm9qZWN0cy9ncmFwaHFsL3F1ZXJpZXMnXHJcbmltcG9ydCB0eXBlIHsgTnVsbGFibGUsIE9wdGlvbmFsLCBTb3VyY2VBcHBEZWZpbml0aW9uIH0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkJ1xyXG5pbXBvcnQgdHlwZSB7IEluZmluaXRlTG9hZGVyU3RhdGUgfSBmcm9tICd+fi9saWIvZ2xvYmFsL2hlbHBlcnMvY29tcG9uZW50cydcclxuaW1wb3J0IHsgYWxsUHJvamVjdE1vZGVsc1JvdXRlIH0gZnJvbSAnfn4vbGliL2NvbW1vbi9oZWxwZXJzL3JvdXRlJ1xyXG5pbXBvcnQgdHlwZSB7IEZpbGVBcmVhVXBsb2FkaW5nUGF5bG9hZCB9IGZyb20gJ34vbGliL2Zvcm0vaGVscGVycy9maWxlVXBsb2FkJ1xyXG5cclxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcclxuICAoZTogJ3VwZGF0ZTpsb2FkaW5nJywgdjogYm9vbGVhbik6IHZvaWRcclxuICAoXHJcbiAgICBlOiAnbW9kZWwtY2xpY2tlZCcsXHJcbiAgICB2OiB7XHJcbiAgICAgIGlkOiBzdHJpbmdcclxuICAgICAgZTogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnRcclxuICAgICAgbW9kZWw6IFByb2plY3RQYWdlTGF0ZXN0SXRlbXNNb2RlbEl0ZW1GcmFnbWVudCB8IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gICk6IHZvaWRcclxuICAoZTogJ2NsZWFyLXNlYXJjaCcpOiB2b2lkXHJcbn0+KClcclxuXHJcbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKFxyXG4gIGRlZmluZVByb3BzPHtcclxuICAgIHByb2plY3RJZDogc3RyaW5nXHJcbiAgICBwcm9qZWN0OiBPcHRpb25hbDxQcm9qZWN0UGFnZUxhdGVzdEl0ZW1zTW9kZWxzRnJhZ21lbnQ+XHJcbiAgICBzZWFyY2g/OiBzdHJpbmdcclxuICAgIHNob3dBY3Rpb25zPzogYm9vbGVhblxyXG4gICAgc2hvd1ZlcnNpb25zPzogYm9vbGVhblxyXG4gICAgZGlzYWJsZURlZmF1bHRMaW5rcz86IGJvb2xlYW5cclxuICAgIGV4Y2x1ZGVkSWRzPzogc3RyaW5nW11cclxuICAgIGV4Y2x1ZGVFbXB0eU1vZGVscz86IGJvb2xlYW5cclxuICAgIGRpc2FibGVQYWdpbmF0aW9uPzogYm9vbGVhblxyXG4gICAgc291cmNlQXBwcz86IFNvdXJjZUFwcERlZmluaXRpb25bXVxyXG4gICAgY29udHJpYnV0b3JzPzogRm9ybVVzZXJzU2VsZWN0SXRlbUZyYWdtZW50W11cclxuICAgIHNtYWxsVmlldz86IGJvb2xlYW5cclxuICAgIGhpZGVGaWxlVXBsb2FkPzogYm9vbGVhblxyXG4gIH0+KCksXHJcbiAge1xyXG4gICAgc2hvd0FjdGlvbnM6IHRydWUsXHJcbiAgICBzaG93VmVyc2lvbnM6IHRydWVcclxuICB9XHJcbilcclxuXHJcbmNvbnN0IGxvZ2dlciA9IHVzZUxvZ2dlcigpXHJcbmNvbnN0IGFyZVF1ZXJpZXNMb2FkaW5nID0gdXNlUXVlcnlMb2FkaW5nKClcclxuXHJcbmNvbnN0IGxhdGVzdE1vZGVsc1F1ZXJ5VmFyaWFibGVzID0gY29tcHV0ZWQoXHJcbiAgKCk6IFByb2plY3RMYXRlc3RNb2RlbHNQYWdpbmF0aW9uUXVlcnlWYXJpYWJsZXMgPT4ge1xyXG4gICAgY29uc3Qgc2hvdWxkSGF2ZUZpbHRlciA9XHJcbiAgICAgIHByb3BzLnNlYXJjaD8ubGVuZ3RoIHx8XHJcbiAgICAgIHByb3BzLmV4Y2x1ZGVkSWRzPy5sZW5ndGggfHxcclxuICAgICAgcHJvcHMuc291cmNlQXBwcz8ubGVuZ3RoIHx8XHJcbiAgICAgIHByb3BzLmNvbnRyaWJ1dG9ycz8ubGVuZ3RoIHx8XHJcbiAgICAgICEhcHJvcHMuZXhjbHVkZUVtcHR5TW9kZWxzXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcHJvamVjdElkOiBwcm9wcy5wcm9qZWN0SWQsXHJcbiAgICAgIGZpbHRlcjogc2hvdWxkSGF2ZUZpbHRlclxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBzZWFyY2g6IHByb3BzLnNlYXJjaCB8fCBudWxsLFxyXG4gICAgICAgICAgICBleGNsdWRlSWRzOiBwcm9wcy5leGNsdWRlZElkcyB8fCBudWxsLFxyXG4gICAgICAgICAgICBvbmx5V2l0aFZlcnNpb25zOiAhIXByb3BzLmV4Y2x1ZGVFbXB0eU1vZGVscyxcclxuICAgICAgICAgICAgc291cmNlQXBwczogcHJvcHMuc291cmNlQXBwcz8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgPyBwcm9wcy5zb3VyY2VBcHBzLm1hcCgoYSkgPT4gYS5zZWFyY2hLZXkpXHJcbiAgICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgICBjb250cmlidXRvcnM6IHByb3BzLmNvbnRyaWJ1dG9ycz8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgPyBwcm9wcy5jb250cmlidXRvcnMubWFwKChjKSA9PiBjLmlkKVxyXG4gICAgICAgICAgICAgIDogbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogbnVsbFxyXG4gICAgfVxyXG4gIH1cclxuKVxyXG5cclxuY29uc3QgaW5maW5pdGVMb2FkZXJJZCA9IHJlZignJylcclxuY29uc3QgaXNNb2RlbFVwbG9hZGluZyA9IHJlZihmYWxzZSlcclxuXHJcbi8vIEJhc2UgcXVlcnkgKGFsbCBwZW5kaW5nIHVwbG9hZHMgKyBmaXJzdCBwYWdlIG9mIG1vZGVscylcclxuY29uc3Qge1xyXG4gIHJlc3VsdDogYmFzZVJlc3VsdCxcclxuICB2YXJpYWJsZXM6IGxhdGVzdE1vZGVsc1ZhcmlhYmxlcyxcclxuICBvblJlc3VsdDogb25CYXNlUmVzdWx0XHJcbn0gPSB1c2VRdWVyeShsYXRlc3RNb2RlbHNRdWVyeSwgKCkgPT4gbGF0ZXN0TW9kZWxzUXVlcnlWYXJpYWJsZXMudmFsdWUpXHJcblxyXG4vLyBQYWdpbmF0aW9uIHF1ZXJ5XHJcbmNvbnN0IHtcclxuICByZXN1bHQ6IGV4dHJhUGFnZXNSZXN1bHQsXHJcbiAgZmV0Y2hNb3JlOiBmZXRjaE1vcmVQYWdlcyxcclxuICBvblJlc3VsdDogb25FeHRyYVBhZ2VzUmVzdWx0XHJcbn0gPSB1c2VRdWVyeShcclxuICBsYXRlc3RNb2RlbHNQYWdpbmF0aW9uUXVlcnksXHJcbiAgKCkgPT4gKHtcclxuICAgIC4uLmxhdGVzdE1vZGVsc1F1ZXJ5VmFyaWFibGVzLnZhbHVlLFxyXG4gICAgY3Vyc29yOiBudWxsIGFzIE51bGxhYmxlPHN0cmluZz5cclxuICB9KSxcclxuICAoKSA9PiAoeyBlbmFibGVkOiAhcHJvcHMuZGlzYWJsZVBhZ2luYXRpb24gfSlcclxuKVxyXG5cclxuY29uc3QgaXNGaWx0ZXJpbmcgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgY29uc3QgZmlsdGVyID0gbGF0ZXN0TW9kZWxzVmFyaWFibGVzLnZhbHVlPy5maWx0ZXJcclxuICBpZiAoZmlsdGVyPy5jb250cmlidXRvcnM/Lmxlbmd0aCkgcmV0dXJuIHRydWVcclxuICBpZiAoZmlsdGVyPy5zZWFyY2g/Lmxlbmd0aCkgcmV0dXJuIHRydWVcclxuICBpZiAoZmlsdGVyPy5zb3VyY2VBcHBzPy5sZW5ndGgpIHJldHVybiB0cnVlXHJcbiAgcmV0dXJuIGZhbHNlXHJcbn0pXHJcblxyXG5jb25zdCBtb2RlbHMgPSBjb21wdXRlZCgoKSA9PlxyXG4gIGV4dHJhUGFnZXNSZXN1bHQudmFsdWVcclxuICAgID8gZXh0cmFQYWdlc1Jlc3VsdC52YWx1ZT8ucHJvamVjdD8ubW9kZWxzPy5pdGVtcyB8fCBbXVxyXG4gICAgOiBiYXNlUmVzdWx0LnZhbHVlPy5wcm9qZWN0Py5tb2RlbHM/Lml0ZW1zIHx8IFtdXHJcbilcclxuY29uc3QgcGVuZGluZ01vZGVscyA9IGNvbXB1dGVkKCgpID0+XHJcbiAgaXNGaWx0ZXJpbmcudmFsdWUgPyBbXSA6IGJhc2VSZXN1bHQudmFsdWU/LnByb2plY3Q/LnBlbmRpbmdJbXBvcnRlZE1vZGVscyB8fCBbXVxyXG4pXHJcblxyXG5jb25zdCBpdGVtcyA9IGNvbXB1dGVkKCgpID0+XHJcbiAgWy4uLnBlbmRpbmdNb2RlbHMudmFsdWUsIC4uLm1vZGVscy52YWx1ZV0uc2xpY2UoXHJcbiAgICAwLFxyXG4gICAgcHJvcHMuZGlzYWJsZVBhZ2luYXRpb24gPyAxNiA6IHVuZGVmaW5lZFxyXG4gIClcclxuKVxyXG5jb25zdCBpdGVtc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gaXRlbXMudmFsdWUubGVuZ3RoKVxyXG5jb25zdCBtb3JlVG9Mb2FkID0gY29tcHV0ZWQoXHJcbiAgKCkgPT5cclxuICAgICFiYXNlUmVzdWx0LnZhbHVlPy5wcm9qZWN0IHx8XHJcbiAgICBiYXNlUmVzdWx0LnZhbHVlLnByb2plY3QubW9kZWxzLml0ZW1zLmxlbmd0aCA8XHJcbiAgICAgIGJhc2VSZXN1bHQudmFsdWUucHJvamVjdC5tb2RlbHMudG90YWxDb3VudFxyXG4pXHJcbmNvbnN0IHNob3dWaWV3QWxsID0gY29tcHV0ZWQoKCkgPT4gbW9yZVRvTG9hZC52YWx1ZSAmJiBwcm9wcy5kaXNhYmxlUGFnaW5hdGlvbilcclxuXHJcbmNvbnN0IGluZmluaXRlTG9hZCA9IGFzeW5jIChzdGF0ZTogSW5maW5pdGVMb2FkZXJTdGF0ZSkgPT4ge1xyXG4gIGNvbnN0IGN1cnNvciA9XHJcbiAgICBleHRyYVBhZ2VzUmVzdWx0LnZhbHVlPy5wcm9qZWN0Py5tb2RlbHMuY3Vyc29yIHx8XHJcbiAgICBiYXNlUmVzdWx0LnZhbHVlPy5wcm9qZWN0Py5tb2RlbHMuY3Vyc29yIHx8XHJcbiAgICBudWxsXHJcbiAgaWYgKCFtb3JlVG9Mb2FkLnZhbHVlIHx8ICFjdXJzb3IpIHJldHVybiBzdGF0ZS5jb21wbGV0ZSgpXHJcblxyXG4gIHRyeSB7XHJcbiAgICBhd2FpdCBmZXRjaE1vcmVQYWdlcyh7XHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGN1cnNvclxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH0gY2F0Y2ggKGUpIHtcclxuICAgIGxvZ2dlci5lcnJvcihlKVxyXG4gICAgc3RhdGUuZXJyb3IoKVxyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG5cclxuICBzdGF0ZS5sb2FkZWQoKVxyXG4gIGlmICghbW9yZVRvTG9hZC52YWx1ZSkge1xyXG4gICAgc3RhdGUuY29tcGxldGUoKVxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgY2FsY3VsYXRlTG9hZGVySWQgPSAoKSA9PiB7XHJcbiAgY29uc3QgdmFycyA9IGxhdGVzdE1vZGVsc1F1ZXJ5VmFyaWFibGVzLnZhbHVlXHJcbiAgY29uc3QgaWQgPSBKU09OLnN0cmluZ2lmeSh2YXJzLmZpbHRlcilcclxuICBpbmZpbml0ZUxvYWRlcklkLnZhbHVlID0gaWRcclxufVxyXG5cclxuY29uc3Qgb25Nb2RlbFVwbG9hZGluZyA9IChwYXlsb2FkOiBGaWxlQXJlYVVwbG9hZGluZ1BheWxvYWQpID0+IHtcclxuICBpc01vZGVsVXBsb2FkaW5nLnZhbHVlID0gcGF5bG9hZC5pc1VwbG9hZGluZ1xyXG59XHJcblxyXG53YXRjaChhcmVRdWVyaWVzTG9hZGluZywgKG5ld1ZhbCkgPT4ge1xyXG4gIGVtaXQoJ3VwZGF0ZTpsb2FkaW5nJywgbmV3VmFsKVxyXG59KVxyXG5cclxub25CYXNlUmVzdWx0KGNhbGN1bGF0ZUxvYWRlcklkKVxyXG5vbkV4dHJhUGFnZXNSZXN1bHQoY2FsY3VsYXRlTG9hZGVySWQpXHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy9wcm9qZWN0L3BhZ2UvbW9kZWxzL0NhcmRWaWV3LnZ1ZSJ9 |