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

135 lines
21 KiB
Plaintext

import { Kind } from "/_nuxt/node_modules/graphql/index.mjs?v=e4f18c29";
import { getFragmentMaskMode, maybeDeepFreeze, resultKeyNameFromField, } from "/_nuxt/node_modules/@apollo/client/utilities/index.js?v=e4f18c29";
import { disableWarningsSlot } from "/_nuxt/node_modules/@apollo/client/masking/utils.js?v=e4f18c29";
import { invariant } from "/_nuxt/node_modules/@apollo/client/utilities/globals/index.js?v=e4f18c29";
export function maskDefinition(data, selectionSet, context) {
return disableWarningsSlot.withValue(true, function () {
var masked = maskSelectionSet(data, selectionSet, context, false);
if (Object.isFrozen(data)) {
maybeDeepFreeze(masked);
}
return masked;
});
}
function getMutableTarget(data, mutableTargets) {
if (mutableTargets.has(data)) {
return mutableTargets.get(data);
}
var mutableTarget = Array.isArray(data) ? [] : Object.create(null);
mutableTargets.set(data, mutableTarget);
return mutableTarget;
}
function maskSelectionSet(data, selectionSet, context, migration, path) {
var _a;
var knownChanged = context.knownChanged;
var memo = getMutableTarget(data, context.mutableTargets);
if (Array.isArray(data)) {
for (var _i = 0, _b = Array.from(data.entries()); _i < _b.length; _i++) {
var _c = _b[_i], index = _c[0], item = _c[1];
if (item === null) {
memo[index] = null;
continue;
}
var masked = maskSelectionSet(item, selectionSet, context, migration, globalThis.__DEV__ !== false ? "".concat(path || "", "[").concat(index, "]") : void 0);
if (knownChanged.has(masked)) {
knownChanged.add(memo);
}
memo[index] = masked;
}
return knownChanged.has(memo) ? memo : data;
}
for (var _d = 0, _e = selectionSet.selections; _d < _e.length; _d++) {
var selection = _e[_d];
var value = void 0;
// we later want to add acessor warnings to the final result
// so we need a new object to add the accessor warning to
if (migration) {
knownChanged.add(memo);
}
if (selection.kind === Kind.FIELD) {
var keyName = resultKeyNameFromField(selection);
var childSelectionSet = selection.selectionSet;
value = memo[keyName] || data[keyName];
if (value === void 0) {
continue;
}
if (childSelectionSet && value !== null) {
var masked = maskSelectionSet(data[keyName], childSelectionSet, context, migration, globalThis.__DEV__ !== false ? "".concat(path || "", ".").concat(keyName) : void 0);
if (knownChanged.has(masked)) {
value = masked;
}
}
if (!(globalThis.__DEV__ !== false)) {
memo[keyName] = value;
}
if (globalThis.__DEV__ !== false) {
if (migration &&
keyName !== "__typename" &&
// either the field is not present in the memo object
// or it has a `get` descriptor, not a `value` descriptor
// => it is a warning accessor and we can overwrite it
// with another accessor
!((_a = Object.getOwnPropertyDescriptor(memo, keyName)) === null || _a === void 0 ? void 0 : _a.value)) {
Object.defineProperty(memo, keyName, getAccessorWarningDescriptor(keyName, value, path || "", context.operationName, context.operationType));
}
else {
delete memo[keyName];
memo[keyName] = value;
}
}
}
if (selection.kind === Kind.INLINE_FRAGMENT &&
(!selection.typeCondition ||
context.cache.fragmentMatches(selection, data.__typename))) {
value = maskSelectionSet(data, selection.selectionSet, context, migration, path);
}
if (selection.kind === Kind.FRAGMENT_SPREAD) {
var fragmentName = selection.name.value;
var fragment = context.fragmentMap[fragmentName] ||
(context.fragmentMap[fragmentName] =
context.cache.lookupFragment(fragmentName));
invariant(fragment, 47, fragmentName);
var mode = getFragmentMaskMode(selection);
if (mode !== "mask") {
value = maskSelectionSet(data, fragment.selectionSet, context, mode === "migrate", path);
}
}
if (knownChanged.has(value)) {
knownChanged.add(memo);
}
}
if ("__typename" in data && !("__typename" in memo)) {
memo.__typename = data.__typename;
}
// This check prevents cases where masked fields may accidentally be
// returned as part of this object when the fragment also selects
// additional fields from the same child selection.
if (Object.keys(memo).length !== Object.keys(data).length) {
knownChanged.add(memo);
}
return knownChanged.has(memo) ? memo : data;
}
function getAccessorWarningDescriptor(fieldName, value, path, operationName, operationType) {
var getValue = function () {
if (disableWarningsSlot.getValue()) {
return value;
}
globalThis.__DEV__ !== false && invariant.warn(48, operationName ?
"".concat(operationType, " '").concat(operationName, "'")
: "anonymous ".concat(operationType), "".concat(path, ".").concat(fieldName).replace(/^\./, ""));
getValue = function () { return value; };
return value;
};
return {
get: function () {
return getValue();
},
set: function (newValue) {
getValue = function () { return newValue; };
},
enumerable: true,
configurable: true,
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza0RlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFza2luZy9tYXNrRGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRS9CLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHNCQUFzQixHQUN2QixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFXMUQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsSUFBeUIsRUFDekIsWUFBOEIsRUFDOUIsT0FBdUI7SUFFdkIsT0FBTyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO1FBQ3pDLElBQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzFCLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FDdkIsSUFBeUIsRUFDekIsY0FBaUM7SUFFakMsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMs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SSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDOUMsQ0FBQztBQUVELFNBQVMsNEJBQTRCLENBQ25DLFNBQWlCLEVBQ2pCLEtBQVUsRUFDVixJQUFZLEVBQ1osYUFBaUMsRUFDakMsYUFBcUI7SUFFckIsSUFBSSxRQUFRLEdBQUc7UUFDYixJQUFJLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsU0FBUyxDQUFDLElBQUksQ0FDWix5SkFBeUosRUFDekosYUFBYSxDQUFDLENBQUM7WUFDYixVQUFHLGFBQWEsZUFBSyxhQUFhLE1BQUc7WUFDdkMsQ0FBQyxDQUFDLG9CQUFhLGFBQWEsQ0FBRSxFQUM5QixVQUFHLElBQUksY0FBSSxTQUFTLENBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUMxQyxDQUFDO1FBRUYsUUFBUSxHQUFHLGNBQU0sT0FBQSxLQUFLLEVBQUwsQ0FBSyxDQUFDO1FBRXZCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLEdBQUc7WUFDRCxPQUFPLFFBQVEsRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxHQUFHLFlBQUMsUUFBUTtZQUNWLFFBQVEsR0FBRyxjQUFNLE9BQUEsUUFBUSxFQUFSLENBQVEsQ0FBQztRQUM1QixDQUFDO1FBQ0QsVUFBVSxFQUFFLElBQUk7UUFDaEIsWUFBWSxFQUFFLElBQUk7S0FDbkIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLaW5kIH0gZnJvbSBcImdyYXBocWxcIjtcbmltcG9ydCB0eXBlIHsgRnJhZ21lbnREZWZpbml0aW9uTm9kZSwgU2VsZWN0aW9uU2V0Tm9kZSB9IGZyb20gXCJncmFwaHFsXCI7XG5pbXBvcnQge1xuICBnZXRGcmFnbWVudE1hc2tNb2RlLFxuICBtYXliZURlZXBGcmVlemUsXG4gIHJlc3VsdEtleU5hbWVGcm9tRmllbGQsXG59IGZyb20gXCIuLi91dGlsaXRpZXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgRnJhZ21lbnRNYXAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0NhY2hlIH0gZnJvbSBcIi4uL2NhY2hlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBkaXNhYmxlV2FybmluZ3NTbG90IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuXG5pbnRlcmZhY2UgTWFza2luZ0NvbnRleHQge1xuICBvcGVyYXRpb25UeXBlOiBcInF1ZXJ5XCIgfCBcIm11dGF0aW9uXCIgfCBcInN1YnNjcmlwdGlvblwiIHwgXCJmcmFnbWVudFwiO1xuICBvcGVyYXRpb25OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZyYWdtZW50TWFwOiBGcmFnbWVudE1hcDtcbiAgY2FjaGU6IEFwb2xsb0NhY2hlPHVua25vd24+O1xuICBtdXRhYmxlVGFyZ2V0czogV2Vha01hcDxhbnksIGFueT47XG4gIGtub3duQ2hhbmdlZDogV2Vha1NldDxhbnk+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFza0RlZmluaXRpb24oXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIHNlbGVjdGlvblNldDogU2VsZWN0aW9uU2V0Tm9kZSxcbiAgY29udGV4dDogTWFza2luZ0NvbnRleHRcbikge1xuICByZXR1cm4gZGlzYWJsZVdhcm5pbmdzU2xvdC53aXRoVmFsdWUodHJ1ZSwgKCkgPT4ge1xuICAgIGNvbnN0IG1hc2tlZCA9IG1hc2tTZWxlY3Rpb25TZXQoZGF0YSwgc2VsZWN0aW9uU2V0LCBjb250ZXh0LCBmYWxzZSk7XG5cbiAgICBpZiAoT2JqZWN0LmlzRnJvemVuKGRhdGEpKSB7XG4gICAgICBtYXliZURlZXBGcmVlemUobWFza2VkKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hc2tlZDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE11dGFibGVUYXJnZXQoXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIG11dGFibGVUYXJnZXRzOiBXZWFrTWFwPGFueSwgYW55PlxuKTogdHlwZW9mIGRhdGEge1xuICBpZiAobXV0YWJsZVRhcmdldHMuaGFzKGRhdGEpKSB7XG4gICAgcmV0dXJuIG11dGFibGVUYXJnZXRzLmdldChkYXRhKTtcbiAgfVxuXG4gIGNvbnN0IG11dGFibGVUYXJnZXQgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gW10gOiBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBtdXRhYmxlVGFyZ2V0cy5zZXQoZGF0YSwgbXV0YWJsZVRhcmdldCk7XG4gIHJldHVybiBtdXRhYmxlVGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBtYXNrU2VsZWN0aW9uU2V0KFxuICBkYXRhOiBhbnksXG4gIHNlbGVjdGlvblNldDogU2VsZWN0aW9uU2V0Tm9kZSxcbiAgY29udGV4dDogTWFza2luZ0NvbnRleHQsXG4gIG1pZ3JhdGlvbjogYm9vbGVhbixcbiAgcGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogdHlwZW9mIGRhdGEge1xuICBjb25zdCB7IGtub3duQ2hhbmdlZCB9ID0gY29udGV4dDtcbiAgY29uc3QgbWVtbyA9IGdldE11dGFibGVUYXJnZXQoZGF0YSwgY29udGV4dC5tdXRhYmxlVGFyZ2V0cyk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgaXRlbV0gb2YgQXJyYXkuZnJvbShkYXRhLmVudHJpZXMoKSkpIHtcbiAgICAgIGlmIChpdGVtID09PSBudWxsKSB7XG4gICAgICAgIG1lbW9baW5kZXhdID0gbnVsbDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hc2tlZCA9IG1hc2tTZWxlY3Rpb25TZXQoXG4gICAgICAgIGl0ZW0sXG4gICAgICAgIHNlbGVjdGlvblNldCxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgbWlncmF0aW9uLFxuICAgICAgICBfX0RFVl9fID8gYCR7cGF0aCB8fCBcIlwifVske2luZGV4fV1gIDogdm9pZCAwXG4gICAgICApO1xuICAgICAgaWYgKGtub3duQ2hhbmdlZC5oYXMobWFza2VkKSkge1xuICAgICAgICBrbm93bkNoYW5nZWQuYWRkKG1lbW8pO1xuICAgICAgfVxuXG4gICAgICBtZW1vW2luZGV4XSA9IG1hc2tlZDtcbiAgICB9XG5cbiAgICByZXR1cm4ga25vd25DaGFuZ2VkLmhhcyhtZW1vKSA/IG1lbW8gOiBkYXRhO1xuICB9XG5cbiAgZm9yIChjb25zdCBzZWxlY3Rpb24gb2Ygc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMpIHtcbiAgICBsZXQgdmFsdWU6IGFueTtcblxuICAgIC8vIHdlIGxhdGVyIHdhbnQgdG8gYWRkIGFjZXNzb3Igd2FybmluZ3MgdG8gdGhlIGZpbmFsIHJlc3VsdFxuICAgIC8vIHNvIHdlIG5lZWQgYSBuZXcgb2JqZWN0IHRvIGFkZCB0aGUgYWNjZXNzb3Igd2FybmluZyB0b1xuICAgIGlmIChtaWdyYXRpb24pIHtcbiAgICAgIGtub3duQ2hhbmdlZC5hZGQobWVtbyk7XG4gICAgfVxuXG4gICAgaWYgKHNlbGVjdGlvbi5raW5kID09PSBLaW5kLkZJRUxEKSB7XG4gICAgICBjb25zdCBrZXlOYW1lID0gcmVzdWx0S2V5TmFtZUZyb21GaWVsZChzZWxlY3Rpb24pO1xuICAgICAgY29uc3QgY2hpbGRTZWxlY3Rpb25TZXQgPSBzZWxlY3Rpb24uc2VsZWN0aW9uU2V0O1xuXG4gICAgICB2YWx1ZSA9IG1lbW9ba2V5TmFtZV0gfHwgZGF0YVtrZXlOYW1lXTtcblxuICAgICAgaWYgKHZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZFNlbGVjdGlvblNldCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtYXNrZWQgPSBtYXNrU2VsZWN0aW9uU2V0KFxuICAgICAgICAgIGRhdGFba2V5TmFtZV0sXG4gICAgICAgICAgY2hpbGRTZWxlY3Rpb25TZXQsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBtaWdyYXRpb24sXG4gICAgICAgICAgX19ERVZfXyA/IGAke3BhdGggfHwgXCJcIn0uJHtrZXlOYW1lfWAgOiB2b2lkIDBcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoa25vd25DaGFuZ2VkLmhhcyhtYXNrZWQpKSB7XG4gICAgICAgICAgdmFsdWUgPSBtYXNrZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFfX0RFVl9fKSB7XG4gICAgICAgIG1lbW9ba2V5TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBtaWdyYXRpb24gJiZcbiAgICAgICAgICBrZXlOYW1lICE9PSBcIl9fdHlwZW5hbWVcIiAmJlxuICAgICAgICAgIC8vIGVpdGhlciB0aGUgZmllbGQgaXMgbm90IHByZXNlbnQgaW4gdGhlIG1lbW8gb2JqZWN0XG4gICAgICAgICAgLy8gb3IgaXQgaGFzIGEgYGdldGAgZGVzY3JpcHRvciwgbm90IGEgYHZhbHVlYCBkZXNjcmlwdG9yXG4gICAgICAgICAgLy8gPT4gaXQgaXMgYSB3YXJuaW5nIGFjY2Vzc29yIGFuZCB3ZSBjYW4gb3ZlcndyaXRlIGl0XG4gICAgICAgICAgLy8gd2l0aCBhbm90aGVyIGFjY2Vzc29yXG4gICAgICAgICAgIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobWVtbywga2V5TmFtZSk/LnZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShcbiAgICAgICAgICAgIG1lbW8sXG4gICAgICAgICAgICBrZXlOYW1lLFxuICAgICAgICAgICAgZ2V0QWNjZXNzb3JXYXJuaW5nRGVzY3JpcHRvcihcbiAgICAgICAgICAgICAga2V5TmFtZSxcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIHBhdGggfHwgXCJcIixcbiAgICAgICAgICAgICAgY29udGV4dC5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICBjb250ZXh0Lm9wZXJhdGlvblR5cGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBtZW1vW2tleU5hbWVdO1xuICAgICAgICAgIG1lbW9ba2V5TmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbi5raW5kID09PSBLaW5kLklOTElORV9GUkFHTUVOVCAmJlxuICAgICAgKCFzZWxlY3Rpb24udHlwZUNvbmRpdGlvbiB8fFxuICAgICAgICBjb250ZXh0LmNhY2hlLmZyYWdtZW50TWF0Y2hlcyEoc2VsZWN0aW9uLCBkYXRhLl9fdHlwZW5hbWUpKVxuICAgICkge1xuICAgICAgdmFsdWUgPSBtYXNrU2VsZWN0aW9uU2V0KFxuICAgICAgICBkYXRhLFxuICAgICAgICBzZWxlY3Rpb24uc2VsZWN0aW9uU2V0LFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBtaWdyYXRpb24sXG4gICAgICAgIHBhdGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHNlbGVjdGlvbi5raW5kID09PSBLaW5kLkZSQUdNRU5UX1NQUkVBRCkge1xuICAgICAgY29uc3QgZnJhZ21lbnROYW1lID0gc2VsZWN0aW9uLm5hbWUudmFsdWU7XG4gICAgICBjb25zdCBmcmFnbWVudDogRnJhZ21lbnREZWZpbml0aW9uTm9kZSB8IG51bGwgPVxuICAgICAgICBjb250ZXh0LmZyYWdtZW50TWFwW2ZyYWdtZW50TmFtZV0gfHxcbiAgICAgICAgKGNvbnRleHQuZnJhZ21lbnRNYXBbZnJhZ21lbnROYW1lXSA9XG4gICAgICAgICAgY29udGV4dC5jYWNoZS5sb29rdXBGcmFnbWVudChmcmFnbWVudE5hbWUpISk7XG4gICAgICBpbnZhcmlhbnQoXG4gICAgICAgIGZyYWdtZW50LFxuICAgICAgICBcIkNvdWxkIG5vdCBmaW5kIGZyYWdtZW50IHdpdGggbmFtZSAnJXMnLlwiLFxuICAgICAgICBmcmFnbWVudE5hbWVcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IG1vZGUgPSBnZXRGcmFnbWVudE1hc2tNb2RlKHNlbGVjdGlvbik7XG5cbiAgICAgIGlmIChtb2RlICE9PSBcIm1hc2tcIikge1xuICAgICAgICB2YWx1ZSA9IG1hc2tTZWxlY3Rpb25TZXQoXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBmcmFnbWVudC5zZWxlY3Rpb25TZXQsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBtb2RlID09PSBcIm1pZ3JhdGVcIixcbiAgICAgICAgICBwYXRoXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtub3duQ2hhbmdlZC5oYXModmFsdWUpKSB7XG4gICAgICBrbm93bkNoYW5nZWQuYWRkKG1lbW8pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcIl9fdHlwZW5hbWVcIiBpbiBkYXRhICYmICEoXCJfX3R5cGVuYW1lXCIgaW4gbWVtbykpIHtcbiAgICBtZW1vLl9fdHlwZW5hbWUgPSBkYXRhLl9fdHlwZW5hbWU7XG4gIH1cblxuICAvLyBUaGlzIGNoZWNrIHByZXZlbnRzIGNhc2VzIHdoZXJlIG1hc2tlZCBmaWVsZHMgbWF5IGFjY2lkZW50YWxseSBiZVxuICAvLyByZXR1cm5lZCBhcyBwYXJ0IG9mIHRoaXMgb2JqZWN0IHdoZW4gdGhlIGZyYWdtZW50IGFsc28gc2VsZWN0c1xuICAvLyBhZGRpdGlvbmFsIGZpZWxkcyBmcm9tIHRoZSBzYW1lIGNoaWxkIHNlbGVjdGlvbi5cbiAgaWYgKE9iamVjdC5rZXlzKG1lbW8pLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoKSB7XG4gICAga25vd25DaGFuZ2VkLmFkZChtZW1vKTtcbiAgfVxuXG4gIHJldHVybiBrbm93bkNoYW5nZWQuaGFzKG1lbW8pID8gbWVtbyA6IGRhdGE7XG59XG5cbmZ1bmN0aW9uIGdldEFjY2Vzc29yV2FybmluZ0Rlc2NyaXB0b3IoXG4gIGZpZWxkTmFtZTogc3RyaW5nLFxuICB2YWx1ZTogYW55LFxuICBwYXRoOiBzdHJpbmcsXG4gIG9wZXJhdGlvbk5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3BlcmF0aW9uVHlwZTogc3RyaW5nXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3Ige1xuICBsZXQgZ2V0VmFsdWUgPSAoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVXYXJuaW5nc1Nsb3QuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGludmFyaWFudC53YXJuKFxuICAgICAgXCJBY2Nlc3NpbmcgdW5tYXNrZWQgZmllbGQgb24gJXMgYXQgcGF0aCAnJXMnLiBUaGlzIGZpZWxkIHdpbGwgbm90IGJlIGF2YWlsYWJsZSB3aGVuIG1hc2tpbmcgaXMgZW5hYmxlZC4gUGxlYXNlIHJlYWQgdGhlIGZpZWxkIGZyb20gdGhlIGZyYWdtZW50IGluc3RlYWQuXCIsXG4gICAgICBvcGVyYXRpb25OYW1lID9cbiAgICAgICAgYCR7b3BlcmF0aW9uVHlwZX0gJyR7b3BlcmF0aW9uTmFtZX0nYFxuICAgICAgOiBgYW5vbnltb3VzICR7b3BlcmF0aW9uVHlwZX1gLFxuICAgICAgYCR7cGF0aH0uJHtmaWVsZE5hbWV9YC5yZXBsYWNlKC9eXFwuLywgXCJcIilcbiAgICApO1xuXG4gICAgZ2V0VmFsdWUgPSAoKSA9PiB2YWx1ZTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBnZXRWYWx1ZSgpO1xuICAgIH0sXG4gICAgc2V0KG5ld1ZhbHVlKSB7XG4gICAgICBnZXRWYWx1ZSA9ICgpID0+IG5ld1ZhbHVlO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH07XG59XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdfQ==