@grnsft/if
Version:
Impact Framework
124 lines • 13.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.debugLogger = void 0;
const config_1 = require("../../if-run/config");
const logMessagesKeys = [
'STARTING_IF',
'EXITING_IF',
'LOADING_MANIFEST',
'VALIDATING_MANIFEST',
'CAPTURING_RUNTIME_ENVIRONMENT_DATA',
'CHECKING_AGGREGATION_METHOD',
'INITIALIZING_PLUGINS',
'INITIALIZING_PLUGIN',
'LOADING_PLUGIN_FROM_PATH',
'COMPUTING_PIPELINE_FOR_NODE',
'COMPUTING_COMPONENT_PIPELINE',
'REGROUPING',
'OBSERVING',
'MERGING_DEFAULTS_WITH_INPUT_DATA',
'AGGREGATING_OUTPUTS',
'AGGREGATING_NODE',
'PREPARING_OUTPUT_DATA',
'EXPORTING_TO_YAML_FILE',
];
var LogLevel;
(function (LogLevel) {
LogLevel["Info"] = "INFO";
LogLevel["Warn"] = "WARN";
LogLevel["Error"] = "ERROR";
LogLevel["Debug"] = "DEBUG";
})(LogLevel || (LogLevel = {}));
const originalConsole = {
log: console.log,
info: console.info,
warn: console.warn,
error: console.error,
debug: console.debug,
};
/**
* Overrides console methods with custom debug logging.
*/
const overrideConsoleMethods = (debugMode) => {
console.log = (...args) => debugLog(LogLevel.Info, args, debugMode);
console.info = (...args) => debugLog(LogLevel.Info, args, debugMode);
console.warn = (...args) => debugLog(LogLevel.Warn, args, debugMode);
console.error = (...args) => debugLog(LogLevel.Error, args, debugMode);
console.debug = (...args) => debugLog(LogLevel.Debug, args, debugMode);
};
/**
* Creates an encapsulated object to retrieve the plugin name.
*/
const pluginNameManager = (() => {
let pluginName = '';
const manager = {
get currentPluginName() {
return pluginName;
},
set currentPluginName(value) {
pluginName = value;
},
};
return manager;
})();
/**
* Sets the name of the currently executing plugin.
*/
const setExecutingPluginName = (pluginName) => {
pluginNameManager.currentPluginName = pluginName;
};
/**
* Logs messages with the specified log level and format.
*/
const debugLog = (level, args, debugMode) => {
if (!debugMode) {
if (level === LogLevel.Debug) {
return;
}
const isDebugLog = typeof args[0] === 'string' &&
logMessagesKeys.some(key => {
const message = typeof config_1.STRINGS[key] === 'function'
? config_1.STRINGS[key].call(null, '')
: config_1.STRINGS[key];
return args[0].includes(message);
});
if (!isDebugLog) {
originalConsole.log(...args);
}
return;
}
if (typeof args[0] === 'string' && args[0].includes('# start')) {
originalConsole.log(...args);
return;
}
if (args[0] === '\n') {
originalConsole.log();
return;
}
const date = new Date().toISOString();
const plugin = pluginNameManager.currentPluginName;
const isExeption = typeof args[0] === 'string' && args[0].includes('**Computing');
const message = `${level}: ${date}: ${plugin ? plugin + ': ' : ''}${args.join(', ')}`;
const formattedMessage = isExeption ? args.join(', ') : message;
if (debugMode) {
switch (level) {
case LogLevel.Info:
originalConsole.info(formattedMessage);
break;
case LogLevel.Warn:
originalConsole.warn(formattedMessage);
break;
case LogLevel.Error:
originalConsole.error(formattedMessage);
break;
case LogLevel.Debug:
originalConsole.debug(formattedMessage);
break;
}
}
};
exports.debugLogger = {
overrideConsoleMethods,
setExecutingPluginName,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi91dGlsL2RlYnVnLWxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBNEM7QUFFNUMsTUFBTSxlQUFlLEdBQTZCO0lBQ2hELGFBQWE7SUFDYixZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLHFCQUFxQjtJQUNyQixvQ0FBb0M7SUFDcEMsNkJBQTZCO0lBQzdCLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3Qiw4QkFBOEI7SUFDOUIsWUFBWTtJQUNaLFdBQVc7SUFDWCxrQ0FBa0M7SUFDbEMscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQix1QkFBdUI7SUFDdkIsd0JBQXdCO0NBQ3pCLENBQUM7QUFFRixJQUFLLFFBS0o7QUFMRCxXQUFLLFFBQVE7SUFDWCx5QkFBYSxDQUFBO0lBQ2IseUJBQWEsQ0FBQTtJQUNiLDJCQUFlLENBQUE7SUFDZiwyQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFMSSxRQUFRLEtBQVIsUUFBUSxRQUtaO0FBRUQsTUFBTSxlQUFlLEdBQUc7SUFDdEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO0lBQ2hCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtJQUNsQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7SUFDbEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0lBQ3BCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztDQUNyQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsU0FBa0IsRUFBRSxFQUFFO0lBQ3BELE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUM5QixJQUFJLFVBQVUsR0FBdUIsRUFBRSxDQUFDO0lBRXhDLE1BQU0sT0FBTyxHQUFHO1FBQ2QsSUFBSSxpQkFBaUI7WUFDbkIsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksaUJBQWlCLENBQUMsS0FBeUI7WUFDN0MsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDO0tBQ0YsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFTDs7R0FFRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxVQUFtQixFQUFFLEVBQUU7SUFDckQsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFlLEVBQUUsSUFBVyxFQUFFLFNBQWtCLEVBQUUsRUFBRTtJQUNwRSxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2QsSUFBSSxLQUFLLEtBQUssUUFBUSxDQUFDLEtBQUssRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFFRCxNQUFNLFVBQVUsR0FDZCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO1lBQzNCLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLE1BQU0sT0FBTyxHQUNYLE9BQU8sZ0JBQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVO29CQUNoQyxDQUFDLENBQUUsZ0JBQU8sQ0FBQyxHQUFHLENBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDM0MsQ0FBQyxDQUFFLGdCQUFPLENBQUMsR0FBRyxDQUFZLENBQUM7Z0JBRS9CLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFFRCxPQUFPO0tBQ1I7SUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzlELGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3QixPQUFPO0tBQ1I7SUFFRCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDcEIsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE9BQU87S0FDUjtJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLENBQUM7SUFDbkQsTUFBTSxVQUFVLEdBQ2QsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakUsTUFBTSxPQUFPLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQzNFLElBQUksQ0FDTCxFQUFFLENBQUM7SUFFSixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBRWhFLElBQUksU0FBUyxFQUFFO1FBQ2IsUUFBUSxLQUFLLEVBQUU7WUFDYixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixlQUFlLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixlQUFlLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hDLE1BQU07U0FDVDtLQUNGO0FBQ0gsQ0FBQyxDQUFDO0FBRVcsUUFBQSxXQUFXLEdBQUc7SUFDekIsc0JBQXNCO0lBQ3RCLHNCQUFzQjtDQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi8uLi9pZi1ydW4vY29uZmlnJztcblxuY29uc3QgbG9nTWVzc2FnZXNLZXlzOiAoa2V5b2YgdHlwZW9mIFNUUklOR1MpW10gPSBbXG4gICdTVEFSVElOR19JRicsXG4gICdFWElUSU5HX0lGJyxcbiAgJ0xPQURJTkdfTUFOSUZFU1QnLFxuICAnVkFMSURBVElOR19NQU5JRkVTVCcsXG4gICdDQVBUVVJJTkdfUlVOVElNRV9FTlZJUk9OTUVOVF9EQVRBJyxcbiAgJ0NIRUNLSU5HX0FHR1JFR0FUSU9OX01FVEhPRCcsXG4gICdJTklUSUFMSVpJTkdfUExVR0lOUycsXG4gICdJTklUSUFMSVpJTkdfUExVR0lOJyxcbiAgJ0xPQURJTkdfUExVR0lOX0ZST01fUEFUSCcsXG4gICdDT01QVVRJTkdfUElQRUxJTkVfRk9SX05PREUnLFxuICAnQ09NUFVUSU5HX0NPTVBPTkVOVF9QSVBFTElORScsXG4gICdSRUdST1VQSU5HJyxcbiAgJ09CU0VSVklORycsXG4gICdNRVJHSU5HX0RFRkFVTFRTX1dJVEhfSU5QVVRfREFUQScsXG4gICdBR0dSRUdBVElOR19PVVRQVVRTJyxcbiAgJ0FHR1JFR0FUSU5HX05PREUnLFxuICAnUFJFUEFSSU5HX09VVFBVVF9EQVRBJyxcbiAgJ0VYUE9SVElOR19UT19ZQU1MX0ZJTEUnLFxuXTtcblxuZW51bSBMb2dMZXZlbCB7XG4gIEluZm8gPSAnSU5GTycsXG4gIFdhcm4gPSAnV0FSTicsXG4gIEVycm9yID0gJ0VSUk9SJyxcbiAgRGVidWcgPSAnREVCVUcnLFxufVxuXG5jb25zdCBvcmlnaW5hbENvbnNvbGUgPSB7XG4gIGxvZzogY29uc29sZS5sb2csXG4gIGluZm86IGNvbnNvbGUuaW5mbyxcbiAgd2FybjogY29uc29sZS53YXJuLFxuICBlcnJvcjogY29uc29sZS5lcnJvcixcbiAgZGVidWc6IGNvbnNvbGUuZGVidWcsXG59O1xuXG4vKipcbiAqIE92ZXJyaWRlcyBjb25zb2xlIG1ldGhvZHMgd2l0aCBjdXN0b20gZGVidWcgbG9nZ2luZy5cbiAqL1xuY29uc3Qgb3ZlcnJpZGVDb25zb2xlTWV0aG9kcyA9IChkZWJ1Z01vZGU6IGJvb2xlYW4pID0+IHtcbiAgY29uc29sZS5sb2cgPSAoLi4uYXJnczogYW55W10pID0+IGRlYnVnTG9nKExvZ0xldmVsLkluZm8sIGFyZ3MsIGRlYnVnTW9kZSk7XG4gIGNvbnNvbGUuaW5mbyA9ICguLi5hcmdzOiBhbnlbXSkgPT4gZGVidWdMb2coTG9nTGV2ZWwuSW5mbywgYXJncywgZGVidWdNb2RlKTtcbiAgY29uc29sZS53YXJuID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBkZWJ1Z0xvZyhMb2dMZXZlbC5XYXJuLCBhcmdzLCBkZWJ1Z01vZGUpO1xuICBjb25zb2xlLmVycm9yID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBkZWJ1Z0xvZyhMb2dMZXZlbC5FcnJvciwgYXJncywgZGVidWdNb2RlKTtcbiAgY29uc29sZS5kZWJ1ZyA9ICguLi5hcmdzOiBhbnlbXSkgPT4gZGVidWdMb2coTG9nTGV2ZWwuRGVidWcsIGFyZ3MsIGRlYnVnTW9kZSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZW5jYXBzdWxhdGVkIG9iamVjdCB0byByZXRyaWV2ZSB0aGUgcGx1Z2luIG5hbWUuXG4gKi9cbmNvbnN0IHBsdWdpbk5hbWVNYW5hZ2VyID0gKCgpID0+IHtcbiAgbGV0IHBsdWdpbk5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuXG4gIGNvbnN0IG1hbmFnZXIgPSB7XG4gICAgZ2V0IGN1cnJlbnRQbHVnaW5OYW1lKCkge1xuICAgICAgcmV0dXJuIHBsdWdpbk5hbWU7XG4gICAgfSxcbiAgICBzZXQgY3VycmVudFBsdWdpbk5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgcGx1Z2luTmFtZSA9IHZhbHVlO1xuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIG1hbmFnZXI7XG59KSgpO1xuXG4vKipcbiAqIFNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgcGx1Z2luLlxuICovXG5jb25zdCBzZXRFeGVjdXRpbmdQbHVnaW5OYW1lID0gKHBsdWdpbk5hbWU/OiBzdHJpbmcpID0+IHtcbiAgcGx1Z2luTmFtZU1hbmFnZXIuY3VycmVudFBsdWdpbk5hbWUgPSBwbHVnaW5OYW1lO1xufTtcblxuLyoqXG4gKiBMb2dzIG1lc3NhZ2VzIHdpdGggdGhlIHNwZWNpZmllZCBsb2cgbGV2ZWwgYW5kIGZvcm1hdC5cbiAqL1xuY29uc3QgZGVidWdMb2cgPSAobGV2ZWw6IExvZ0xldmVsLCBhcmdzOiBhbnlbXSwgZGVidWdNb2RlOiBib29sZWFuKSA9PiB7XG4gIGlmICghZGVidWdNb2RlKSB7XG4gICAgaWYgKGxldmVsID09PSBMb2dMZXZlbC5EZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRGVidWdMb2cgPVxuICAgICAgdHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnICYmXG4gICAgICBsb2dNZXNzYWdlc0tleXMuc29tZShrZXkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgICB0eXBlb2YgU1RSSU5HU1trZXldID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IChTVFJJTkdTW2tleV0gYXMgRnVuY3Rpb24pLmNhbGwobnVsbCwgJycpXG4gICAgICAgICAgICA6IChTVFJJTkdTW2tleV0gYXMgc3RyaW5nKTtcblxuICAgICAgICByZXR1cm4gYXJnc1swXS5pbmNsdWRlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKCFpc0RlYnVnTG9nKSB7XG4gICAgICBvcmlnaW5hbENvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgJiYgYXJnc1swXS5pbmNsdWRlcygnIyBzdGFydCcpKSB7XG4gICAgb3JpZ2luYWxDb25zb2xlLmxvZyguLi5hcmdzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoYXJnc1swXSA9PT0gJ1xcbicpIHtcbiAgICBvcmlnaW5hbENvbnNvbGUubG9nKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgY29uc3QgcGx1Z2luID0gcGx1Z2luTmFtZU1hbmFnZXIuY3VycmVudFBsdWdpbk5hbWU7XG4gIGNvbnN0IGlzRXhlcHRpb24gPVxuICAgIHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJyAmJiBhcmdzWzBdLmluY2x1ZGVzKCcqKkNvbXB1dGluZycpO1xuICBjb25zdCBtZXNzYWdlID0gYCR7bGV2ZWx9OiAke2RhdGV9OiAke3BsdWdpbiA/IHBsdWdpbiArICc6ICcgOiAnJ30ke2FyZ3Muam9pbihcbiAgICAnLCAnXG4gICl9YDtcblxuICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlID0gaXNFeGVwdGlvbiA/IGFyZ3Muam9pbignLCAnKSA6IG1lc3NhZ2U7XG5cbiAgaWYgKGRlYnVnTW9kZSkge1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nTGV2ZWwuSW5mbzpcbiAgICAgICAgb3JpZ2luYWxDb25zb2xlLmluZm8oZm9ybWF0dGVkTWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5XYXJuOlxuICAgICAgICBvcmlnaW5hbENvbnNvbGUud2Fybihmb3JtYXR0ZWRNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLkVycm9yOlxuICAgICAgICBvcmlnaW5hbENvbnNvbGUuZXJyb3IoZm9ybWF0dGVkTWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5EZWJ1ZzpcbiAgICAgICAgb3JpZ2luYWxDb25zb2xlLmRlYnVnKGZvcm1hdHRlZE1lc3NhZ2UpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWJ1Z0xvZ2dlciA9IHtcbiAgb3ZlcnJpZGVDb25zb2xlTWV0aG9kcyxcbiAgc2V0RXhlY3V0aW5nUGx1Z2luTmFtZSxcbn07XG4iXX0=