@studiokloek/vite-config 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5 -1
- package/dist/utils/interfaces.d.ts +1 -0
- package/package.json +20 -20
package/dist/index.js
CHANGED
|
@@ -87,6 +87,8 @@ function defineBuildConfig(options) {
|
|
|
87
87
|
chunkSizeWarningLimit: 1000,
|
|
88
88
|
outDir: '../public',
|
|
89
89
|
assetsDir: 'generated',
|
|
90
|
+
minify: 'terser',
|
|
91
|
+
sourcemap: options.config.build.sourceMaps === true,
|
|
90
92
|
rollupOptions: {
|
|
91
93
|
input,
|
|
92
94
|
output: {
|
|
@@ -451,6 +453,8 @@ async function defineKloekViteConfig(environment) {
|
|
|
451
453
|
'@fonts': path.resolve(cwd, 'source', 'static', 'fonts'),
|
|
452
454
|
},
|
|
453
455
|
dedupe: [
|
|
456
|
+
'@studiokloek/ts-core-lib',
|
|
457
|
+
'@capacitor/app',
|
|
454
458
|
'@capacitor/app',
|
|
455
459
|
'@capacitor/core',
|
|
456
460
|
'@capacitor/device',
|
|
@@ -558,4 +562,4 @@ async function kloekBuild(flags) {
|
|
|
558
562
|
}
|
|
559
563
|
|
|
560
564
|
export { kloekBuild, kloekDevelopment };
|
|
561
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy9nYW1lLnRzIiwiLi4vc3JjL3V0aWxzL2J1aWxkLnRzIiwiLi4vc3JjL3V0aWxzL2luZGV4LnRzIiwiLi4vc3JjL3BsdWdpbnMvbGliL2hhbmRsZWJhcnMtcGx1Z2luLnRzIiwiLi4vc3JjL3BsdWdpbnMvbGliL2h0bWwtcGx1Z2luLnRzIiwiLi4vc3JjL3BsdWdpbnMvYmFzZS50cyIsIi4uL3NyYy9wbHVnaW5zL2xpYi9pbWFnZS1wbHVnaW4udHMiLCIuLi9zcmMvcGx1Z2lucy9saWIvbWFuaWZlc3QtcGx1Z2luLnRzIiwiLi4vc3JjL3BsdWdpbnMvYnVpbGQudHMiLCIuLi9zcmMvcGx1Z2lucy9zZXJ2ZS50cyIsIi4uL3NyYy9jb25maWcudHMiLCIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHtcbiAgR2FtZVNldHRpbmdzLFxuICBHYW1lU2V0dGluZ3NQcm9wZXJ0eSxcbiAgR2FtZXNTZXR0aW5ncyxcbiAgR2FtZXNTZXR0aW5nc0RhdGEsXG4gIEtsb2VrVml0ZUNvbmZpZyxcbiAgUGFja2FnZUdhbWVzU2V0dGluZ3MsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmZ1bmN0aW9uIG1lcmdlR2FtZVNldHRpbmdzKFxuICBnZW5lcmljOiBHYW1lU2V0dGluZ3MsXG4gIGdhbWU6IEdhbWVTZXR0aW5ncyxcbiAgaW5mb1R5cGVzOiBHYW1lU2V0dGluZ3NQcm9wZXJ0eVtdLFxuKTogR2FtZVNldHRpbmdzIHtcbiAgY29uc3Qgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgLy8gQWxsZSBwcm9wcyBvcCDDqcOpbiBsZXZlbCBkaWVwIG1lcmdlblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGluZm9UeXBlcykge1xuICAgIHNldHRpbmdzW3Byb3BlcnR5XSA9IHtcbiAgICAgIC4uLmdlbmVyaWNbcHJvcGVydHldLFxuICAgICAgLi4uZ2FtZVtwcm9wZXJ0eV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzZXR0aW5ncyBhcyB1bmtub3duIGFzIEdhbWVTZXR0aW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MoXG4gIHBhY2thZ2VTZXR0aW5nczogUGFja2FnZUdhbWVzU2V0dGluZ3MsXG4pOiBHYW1lc1NldHRpbmdzRGF0YSB7XG4gIC8vIE1lcmdlIHNldHRpbmdzXG4gIGNvbnN0IGluZm9UeXBlcyA9IE9iamVjdC5rZXlzKFxuICAgIHBhY2thZ2VTZXR0aW5ncy5nZW5lcmljLFxuICApIGFzIEdhbWVTZXR0aW5nc1Byb3BlcnR5W107XG4gIGNvbnN0IHtnZW5lcmljfSA9IHBhY2thZ2VTZXR0aW5ncztcbiAgY29uc3QgYWxsU2V0dGluZ3M6IEdhbWVzU2V0dGluZ3NEYXRhID0ge1xuICAgIGRldmVsb3BtZW50OiBnZW5lcmljLFxuICAgIGdhbWVzOiB7fSxcbiAgfTtcblxuICBmb3IgKGNvbnN0IGdhbWUgb2YgcGFja2FnZVNldHRpbmdzLmdhbWVzID8/IFtdKSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSBtZXJnZUdhbWVTZXR0aW5ncyhnZW5lcmljLCBnYW1lLCBpbmZvVHlwZXMpO1xuXG4gICAgLy8gWm9yZyBlciB2b29yIGRhdCBwYWdlIGFsdGlqZCBnZXpldCBpc1xuICAgIGNvbnN0IHBhZ2VJZCA9IHNldHRpbmdzLmluZm8ucGFnZSA/PyBzZXR0aW5ncy5pbmZvLmlkID8/ICd1bmtub3duJztcbiAgICBzZXR0aW5ncy5pbmZvLnBhZ2UgPSBwYWdlSWQ7XG5cbiAgICAvLyBTbGEgc2V0dGluZ3Mgb3Agb25kZXIgcGFnZSBpZFxuICAgIGFsbFNldHRpbmdzLmdhbWVzW3BhZ2VJZF0gPSBzZXR0aW5ncztcbiAgfVxuXG4gIHJldHVybiBhbGxTZXR0aW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhUb0dhbWVEYXRhKFxuICBmdWxsRmlsZVBhdGg6IHN0cmluZyxcbiAgc2V0dGluZ3M6IEdhbWVzU2V0dGluZ3MsXG4pOiBHYW1lU2V0dGluZ3MgfCB1bmRlZmluZWQge1xuICAvLyBEZXRlcm1pbmUgZmlsZW5hbWUgd2l0aG91dCBleHRlbnNpb25cbiAgbGV0IGZpbGVQYXRoID0gcGF0aC5iYXNlbmFtZShmdWxsRmlsZVBhdGgsIHBhdGguZXh0bmFtZShmdWxsRmlsZVBhdGgpKTtcblxuICAvLyBEZXRlcm1pbmUgZGlyICYgcmVtb3ZlIGxlYWRpbmcgc2xhc2hcbiAgbGV0IGZpbGVEaXJlY3RvcnkgPSBwYXRoLmRpcm5hbWUoZnVsbEZpbGVQYXRoKTtcbiAgZmlsZURpcmVjdG9yeSA9IGZpbGVEaXJlY3RvcnkucmVwbGFjZSgvXlxcLysvZywgJycpO1xuXG4gIGlmIChmaWxlRGlyZWN0b3J5KSB7XG4gICAgZmlsZVBhdGggPSBgJHtmaWxlRGlyZWN0b3J5fS8ke2ZpbGVQYXRofWA7XG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3NbZmlsZVBhdGhdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZVRvU2VydmUoXG4gIGNvbmZpZzogS2xvZWtWaXRlQ29uZmlnLFxuICBzZXR0aW5nczogR2FtZXNTZXR0aW5ncyxcbik6IHN0cmluZyB7XG4gIC8vIEhvZXZlZWwgcGFnZXMgemlqbiBlcj9cbiAgY29uc3QgcGFnZUlkcyA9IE9iamVjdC5rZXlzKHNldHRpbmdzKTtcbiAgY29uc3QgcGFnZSA9IHBhZ2VJZHMubGVuZ3RoID09PSAxID8gcGFnZUlkc1swXSA6ICdkZXZlbG9wbWVudCc7XG5cbiAgcmV0dXJuIHBhdGgucG9zaXguam9pbihcbiAgICBjb25maWcuYnVpbGQuYmFzZVBhdGgsXG4gICAgYCR7cGFnZX0uaHRtbCR7Y29uZmlnLmRldi5zZXJ2ZVBhcmFtcyA/PyAnJ31gLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZUlkRnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbGV0IHBhdGhuYW1lOiBzdHJpbmc7XG5cbiAgdHJ5IHtcbiAgICBwYXRobmFtZSA9IG5ldyBVUkwodXJsLCAnaHR0cHM6Ly9zdHVkaW9rbG9lay5ubCcpLnBhdGhuYW1lO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBJZiByZXF1ZXN0IGlzIG5vdCBodG1sICwgZGlyZWN0bHkgcmV0dXJuIG5leHQoKVxuICBpZiAoIXBhdGhuYW1lLmVuZHNXaXRoKCcuaHRtbCcpICYmIHBhdGhuYW1lICE9PSAnLycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBQYWdpbmEgaWQgb3B2cmFnZW5cbiAgY29uc3QgaW5kZXggPSBwYXRobmFtZS5sYXN0SW5kZXhPZignLycpO1xuICBjb25zdCBmaWxlTmFtZSA9IGluZGV4ID09PSAtMSA/IHBhdGhuYW1lIDogcGF0aG5hbWUuc2xpY2UoaW5kZXggKyAxKTtcblxuICByZXR1cm4gZmlsZU5hbWUucmVwbGFjZSgnLmh0bWwnLCAnJyk7XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUge0J1aWxkT3B0aW9uc30gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHlwZSB7Vml0ZU9wdGlvbnN9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVCdWlsZENvbmZpZyhvcHRpb25zOiBWaXRlT3B0aW9ucyk6IEJ1aWxkT3B0aW9ucyB7XG4gIGNvbnN0IGlucHV0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgZm9yIChjb25zdCBnYW1lSWQgb2YgT2JqZWN0LmtleXMob3B0aW9ucy5zZXR0aW5ncy5nYW1lcykpIHtcbiAgICBpbnB1dFtnYW1lSWRdID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgYCR7Z2FtZUlkfS5odG1sYCk7XG4gIH1cblxuICAvLyBMaWJzIGRpZSBhcGFydGUganMga3JpamdlbjpcbiAgY29uc3QgdmVuZG9yQ2h1bmtzID0gWydwaXhpJywgJ2NhcGFjaXRvcicsICdmaXJlYmFzZScsICdsb2Rhc2gnLCAnZ3NhcCcsICdzdHVkaW9rbG9layddO1xuXG4gIHJldHVybiB7XG4gICAgcmVwb3J0Q29tcHJlc3NlZFNpemU6IHRydWUsXG4gICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAxMDAwLFxuICAgIG91dERpcjogJy4uL3B1YmxpYycsXG4gICAgYXNzZXRzRGlyOiAnZ2VuZXJhdGVkJyxcbiAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICBpbnB1dCxcbiAgICAgIG91dHB1dDoge1xuICAgICAgICBtYW51YWxDaHVua3MoaWQpIHtcbiAgICAgICAgICBpZiAoaWQuaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gaWRcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgLnNwbGl0KCdub2RlX21vZHVsZXMvJylbMV1cbiAgICAgICAgICAgICAgLnNwbGl0KCcvJylbMF1cbiAgICAgICAgICAgICAgLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmVuZG9yQ2h1bmtzKSB7XG4gICAgICAgICAgICAgIGlmIChuYW1lLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJ3ZlbmRvcic7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cbiIsImltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQge25vcm1hbGl6ZVBhdGh9IGZyb20gJ3ZpdGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEpTT04ocGF0aDogc3RyaW5nKTogdW5rbm93biB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IHJlYWRGaWxlU3luYyhwYXRoKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhLnRvU3RyaW5nKCkpO1xuICB9IGNhdGNoIHtcbiAgICAvL1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgY29uc3QgY3dkID0gbm9ybWFsaXplUGF0aChwcm9jZXNzLmN3ZCgpKTtcblxuZXhwb3J0ICogZnJvbSAnLi9nYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vYnVpbGQnO1xuIiwiaW1wb3J0IG9zIGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHtQbHVnaW59IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHZpdGVIYW5kbGViYXJzUGx1Z2luIGZyb20gJ3ZpdGUtcGx1Z2luLWhhbmRsZWJhcnMnO1xuaW1wb3J0IHR5cGUge1ZpdGVPcHRpb25zfSBmcm9tICcuLi8uLi91dGlscy9pbnRlcmZhY2VzJztcbmltcG9ydCB7Z2V0UGFnZUlkRnJvbVVybH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG4vLyBIZWxwZXJzIHZvb3IgaGFuZGxlYmFyc1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZWJhcnNQbHVnaW4oXG4gIHBhcnRpYWxEaXJlY3Rvcnk6IHN0cmluZyB8IHN0cmluZ1tdLFxuICBvcHRpb25zOiBWaXRlT3B0aW9ucyxcbik6IFBsdWdpbiB7XG4gIHJldHVybiB2aXRlSGFuZGxlYmFyc1BsdWdpbih7XG4gICAgcGFydGlhbERpcmVjdG9yeSxcblxuICAgIGhlbHBlcnM6IHtcbiAgICAgIGpzb246IChvYmplY3Q6IGFueSwgaW5kZW50ID0gMCkgPT5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkob2JqZWN0LCB1bmRlZmluZWQsIGluZGVudCksXG4gICAgICBjb25jYXQ6ICguLi5hcmd1bWVudHNfOiBhbnlbXSkgPT4gYXJndW1lbnRzXy5zbGljZSgwLCAtMSkuam9pbignJyksXG4gICAgICBlcTogKGE6IGFueSwgYjogYW55KSA9PiBhID09PSBiLFxuICAgICAgbmVxOiAoYTogYW55LCBiOiBhbnkpID0+IGEgIT09IGIsXG4gICAgICBpc2RlZmluZWQ6ICh2YWx1ZTogdW5kZWZpbmVkKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgJ3Jlc29sdmUtcm9vdCcocDogc3RyaW5nKSB7XG4gICAgICAgIC8vIFRpamRlbGlqa2UgaGFjayB2b29yIGJ1ZyBpbiBoYW5kbGViYXJzIHBsdWdpblxuICAgICAgICAvLyB6aWUgb29rIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4bGFmcm9zY2lhL3ZpdGUtcGx1Z2luLWhhbmRsZWJhcnMvcHVsbC8xMjlcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgcCk7XG4gICAgICAgIHJldHVybiBvcy5wbGF0Zm9ybSgpID09PSAnd2luMzInID8gYC8ke3Jlc29sdmVkUGF0aH1gIDogcmVzb2x2ZWRQYXRoO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgY29udGV4dChwYWdlUGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgICAgY29uc3QgZ2FtZUlkID0gZ2V0UGFnZUlkRnJvbVVybChwYWdlUGF0aCk7XG5cbiAgICAgIGlmICghZ2FtZUlkKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdhbWVJZCA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAvLyBQYWdpbmEgc2V0dGluZ3MgdGVydWdnZXZlblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVudjogb3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgICAgICBkYXRhOiBvcHRpb25zLnNldHRpbmdzLmRldmVsb3BtZW50LFxuICAgICAgICAgIGdhbWVzOiBvcHRpb25zLnNldHRpbmdzLmdhbWVzLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBPcCBiYXNpcyB2YW4gcGFkIGRhdGEgYmVwYWxlblxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBvcHRpb25zLnNldHRpbmdzLmdhbWVzW2dhbWVJZF07XG5cbiAgICAgIC8vIFBhZ2luYSBzZXR0aW5ncyB0ZXJ1Z2dldmVuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnY6IG9wdGlvbnMuZW52aXJvbm1lbnQsXG4gICAgICAgIGRhdGE6IHNldHRpbmdzID8/IHt9LFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbn1cbiIsImltcG9ydCB7ZXhpc3RzU3luYywgcHJvbWlzZXN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHtDb25maWdFbnYsIFBsdWdpbiwgVXNlckNvbmZpZywgVml0ZURldlNlcnZlcn0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHlwZSB7R2FtZXNTZXR0aW5nc30gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5pbXBvcnQge2N3ZCwgZ2V0UGFnZUlkRnJvbVVybH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5jb25zdCBQQUdFX1RFTVBMQVRFID0gJ3t7PiBnYW1lIGRhdGE9ZGF0YX19JztcbmNvbnN0IERFVkVMT1BNRU5UX1RFTVBMQVRFID0gJ3t7PiBkZXZlbG9wbWVudCBkYXRhPWRhdGF9fSc7XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclRlbXBvcmFyeUZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBCZXN0YWF0IGRpZSBmaWxlIG5vZyBuaWV0P1xuICBpZiAoIWV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XG4gICAgLy8gQWFubWFrZW5cbiAgICBhd2FpdCBwcm9taXNlcy53cml0ZUZpbGUoZmlsZVBhdGgsIFBBR0VfVEVNUExBVEUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodG1sUGx1Z2luKGdhbWVzOiBHYW1lc1NldHRpbmdzKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAndml0ZS1wbHVnaW4ta2xvZWstaHRtbCcsXG4gICAgZW5mb3JjZTogJ3ByZScsXG5cbiAgICBhc3luYyBjb25maWcoX2NvbmZpZzogVXNlckNvbmZpZywgZW52aXJvbm1lbnQ6IENvbmZpZ0Vudikge1xuICAgICAgLy8gQmlqIGVlbiBidWlsZCBtYWtlbiB3ZSB0aWpkZWxpamsgZmlsZXMgYWFuXG4gICAgICBpZiAoZW52aXJvbm1lbnQuY29tbWFuZCA9PT0gJ2J1aWxkJykge1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxQcm9taXNlPHZvaWQ+PiA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgcGFnZUlkIG9mIE9iamVjdC5rZXlzKGdhbWVzKSkge1xuICAgICAgICAgIC8vIFBhZCBuYWFyIGZpbGVcbiAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShjd2QsICdzb3VyY2UnLCBgJHtwYWdlSWR9Lmh0bWxgKTtcbiAgICAgICAgICBhY3Rpb25zLnB1c2gocmVuZGVyVGVtcG9yYXJ5RmlsZShmaWxlUGF0aCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYWN0aW9ucyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbmZpZ3VyZVNlcnZlcihzZXJ2ZXI6IFZpdGVEZXZTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIFpvcmcgZXIgdm9vciBkYXQgdGlqZGVucyBkZXZlbG9wbWVudCBkZSBwYWdpbmEgZ2UtcmVuZGVyZWQgdGVydWcgZ2VnZXZlbiB3b3JkdCB3b3JkdFxuICAgICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKCcvJywgYXN5bmMgKHJlcXVlc3QsIHJlc3BvbnNlLCBuZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXJsID0gcmVxdWVzdD8udXJsID8/ICcnO1xuICAgICAgICAgIGNvbnN0IHBhZ2VJZCA9IGdldFBhZ2VJZEZyb21VcmwodXJsKTtcblxuICAgICAgICAgIGlmICghcGFnZUlkKSB7XG4gICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhZ2VJZCA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgLy8gRGV2ZWxvcG1lbnQ/IGdlZWYgdGVydWcuLi5cbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChcbiAgICAgICAgICAgICAgYXdhaXQgc2VydmVyLnRyYW5zZm9ybUluZGV4SHRtbChcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgREVWRUxPUE1FTlRfVEVNUExBVEUsXG4gICAgICAgICAgICAgICAgcmVxdWVzdC5vcmlnaW5hbFVybCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIGlmIChPYmplY3Qua2V5cyhnYW1lcykuaW5jbHVkZXMocGFnZUlkKSkge1xuICAgICAgICAgICAgLy8gQmVzdGFhbmRlIGdhbWU/IHpvcmcgZXIgdm9vciBkYXQgZGUgdGVtcGxhdGUgZ2UtcmVuZGVyZWQgd29yZHRcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChcbiAgICAgICAgICAgICAgYXdhaXQgc2VydmVyLnRyYW5zZm9ybUluZGV4SHRtbChcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgUEFHRV9URU1QTEFURSxcbiAgICAgICAgICAgICAgICByZXF1ZXN0Lm9yaWdpbmFsVXJsLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTmlrcyBnZXZvbmRlblxuICAgICAgICAgICAgcmVzcG9uc2UuZW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSxcblxuICAgIGFzeW5jIGNsb3NlQnVuZGxlKCkge1xuICAgICAgLy8gVmVyd2lqZGVyIGRlIGFhbmdlbWFha3RlIGZpbGVzXG4gICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxQcm9taXNlPHZvaWQ+PiA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwYWdlSWQgb2YgT2JqZWN0LmtleXMoZ2FtZXMpKSB7XG4gICAgICAgIC8vIFBhZCBuYWFyIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgYCR7cGFnZUlkfS5odG1sYCk7XG4gICAgICAgIGlmIChleGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhY3Rpb25zLnB1c2gocHJvbWlzZXMucm0oZmlsZVBhdGgpKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGFjdGlvbnMpO1xuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHtzdmVsdGUsIHZpdGVQcmVwcm9jZXNzfSBmcm9tICdAc3ZlbHRlanMvdml0ZS1wbHVnaW4tc3ZlbHRlJztcbmltcG9ydCB7dHlwZSBQbHVnaW4sIHR5cGUgUGx1Z2luT3B0aW9ufSBmcm9tICd2aXRlJztcbmltcG9ydCB0c2NvbmZpZ1BhdGhzUGx1Z2luIGZyb20gJ3ZpdGUtdHNjb25maWctcGF0aHMnO1xuaW1wb3J0IHt0eXBlIFZpdGVPcHRpb25zfSBmcm9tICcuLi91dGlscy9pbnRlcmZhY2VzJztcbmltcG9ydCB7Y3dkfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2hhbmRsZWJhcnNQbHVnaW59IGZyb20gJy4vbGliL2hhbmRsZWJhcnMtcGx1Z2luJztcbmltcG9ydCB7aHRtbFBsdWdpbn0gZnJvbSAnLi9saWIvaHRtbC1wbHVnaW4nO1xuXG5leHBvcnQgZnVuY3Rpb24gYmFzZVBsdWdpbnMoXG4gIG9wdGlvbnM6IFZpdGVPcHRpb25zLFxuKTogQXJyYXk8UGx1Z2luIHwgUGx1Z2luT3B0aW9uPiB7XG4gIHJldHVybiBbXG4gICAgaHRtbFBsdWdpbihvcHRpb25zLnNldHRpbmdzLmdhbWVzKSxcblxuICAgIC4uLnN2ZWx0ZSh7XG4gICAgICBwcmVwcm9jZXNzOnZpdGVQcmVwcm9jZXNzKCksXG5cbiAgICAgIG9ud2Fybih3YXJuaW5nLCB3YXJuKSB7XG4gICAgICAgIGlmICghd2Fybikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vIGExMXkgd2FybmluZ3MuLi5cbiAgICAgICAgaWYgKHdhcm5pbmcuY29kZS5zdGFydHNXaXRoKCdhMTF5LScpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgd2Fybih3YXJuaW5nKTtcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICB0c2NvbmZpZ1BhdGhzUGx1Z2luKHtcbiAgICAgIHJvb3Q6IHBhdGgucmVzb2x2ZShjd2QpLFxuICAgICAgLy8gZXh0ZW5zaW9uczogWycudHMnLCAnLmpzb24nXSxcbiAgICAgIGxvb3NlOiB0cnVlLFxuICAgIH0pLFxuICBcbiAgICBoYW5kbGViYXJzUGx1Z2luKG9wdGlvbnMuY29uZmlnLnNlcnZlLnBhcnRpYWxzLCBvcHRpb25zKSxcbiAgXTtcbn1cbiIsIlxuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7Y3dkfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgdHlwZSB7Q29uZmlnRW52LCBQbHVnaW59IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHR5cGUge0ltYWdlUXVhbGl0eUNvbmZpZ30gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7IFxuXG5pbXBvcnQgdml0ZUltYWdlbWluIGZyb20gJ0B2aGVlbXN0cmEvdml0ZS1wbHVnaW4taW1hZ2VtaW4nXG5cbi8vIFRoZSBtaW5pZmllcnMgeW91IHdhbnQgdG8gdXNlOlxuaW1wb3J0IGltYWdlbWluTW96anBlZyBmcm9tICdpbWFnZW1pbi1tb3pqcGVnJ1xuaW1wb3J0IGltYWdlbWluUG5nUXVhbnQgZnJvbSAnaW1hZ2VtaW4tcG5ncXVhbnQnXG5pbXBvcnQgaW1hZ2VtaW5PcHRpUG5nIGZyb20gJ2ltYWdlbWluLW9wdGlwbmcnXG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZW1pblBsdWdpbihcbiAgZW52aXJvbm1lbnQ6IENvbmZpZ0VudixcbiAgb3B0aW9uczogSW1hZ2VRdWFsaXR5Q29uZmlnLFxuKTogUGx1Z2luIHwgdW5kZWZpbmVkIHtcblxuICBpZiAoZW52aXJvbm1lbnQubW9kZSAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIHZpdGVJbWFnZW1pbih7XG4gICAgc2tpcElmTGFyZ2VyOiB0cnVlLFxuICAgIHZlcmJvc2U6IHRydWUsXG4gICAgcm9vdDogcGF0aC5qb2luKHBhdGgucmVzb2x2ZShjd2QpLCAncHVibGljJyksXG4gICAgcGx1Z2luczoge1xuICAgICAganBnOiBbXG4gICAgICAgIGltYWdlbWluTW96anBlZyh7XG4gICAgICAgICAgcXVhbGl0eTogb3B0aW9ucz8uanBlZyA/PyA4MCxcbiAgICAgICAgfSlcbiAgICAgIF0sXG4gICAgICBwbmc6IFtcbiAgICAgICAgaW1hZ2VtaW5QbmdRdWFudCh7XG4gICAgICAgICAgc3RyaXA6IHRydWUsXG4gICAgICAgICAgc3BlZWQ6IDIsXG4gICAgICAgICAgZGl0aGVyaW5nOiAwLjI1LFxuICAgICAgICAgIHF1YWxpdHk6IG9wdGlvbnM/LnBuZyA/PyBbMC41LCAwLjddLFxuICAgICAgICB9KSwgXG4gICAgICAgIGltYWdlbWluT3B0aVBuZygpXG4gICAgICBdXG4gICAgfVxuICB9KSBhcyBQbHVnaW47XG59O1xuIiwiaW1wb3J0IHR5cGUge1BsdWdpbiwgUmVzb2x2ZWRDb25maWd9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHR5cGUge0dhbWVTZXR0aW5ncywgR2FtZXNTZXR0aW5nc30gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5cbmZ1bmN0aW9uIHJlbmRlckdhbWVNYW5pZmVzdChcbiAgcGFnZUlkOiBzdHJpbmcsXG4gIHNldHRpbmdzOiBHYW1lU2V0dGluZ3MsXG4gIGNvbmZpZzogUmVzb2x2ZWRDb25maWcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBtYW5pZmVzdCA9IHtcbiAgICBzaG9ydF9uYW1lOiBgJHtzZXR0aW5ncy5tZXRhLmFwcHRpdGxlfWAsXG4gICAgbmFtZTogYCR7c2V0dGluZ3MubWV0YS50aXRsZX1gLFxuICAgIGRlc2NyaXB0aW9uOiBgJHtzZXR0aW5ncy5tZXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgc2NvcGU6IGAke2NvbmZpZy5iYXNlfSR7cGFnZUlkfS5odG1sYCxcbiAgICBzdGFydF91cmw6IGAke2NvbmZpZy5iYXNlfSR7cGFnZUlkfS5odG1sYCxcbiAgICBkaXNwbGF5OiAnZnVsbHNjcmVlbicsXG4gICAgb3JpZW50YXRpb246IGAke3NldHRpbmdzLm9wdGlvbnMub3JpZW50YXRpb24gPz8gJ2xhbmRzY2FwZSd9YCxcbiAgICBpY29uczogW1xuICAgICAge1xuICAgICAgICBzcmM6IGAke2NvbmZpZy5iYXNlfW1ldGEvJHtzZXR0aW5ncy5pbmZvLmlkfS9pY29ucy9jaHJvbWUtdG91Y2gtaWNvbi0xOTJ4MTkyLnBuZ2AsXG4gICAgICAgIHR5cGU6ICdpbWFnZS9wbmcnLFxuICAgICAgICBzaXplczogJzE5MngxOTInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3JjOiBgJHtjb25maWcuYmFzZX1tZXRhLyR7c2V0dGluZ3MuaW5mby5pZH0vaWNvbnMvaWNvbi5wbmdgLFxuICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgc2l6ZXM6ICcxMDI0eDEwMjQnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGJhY2tncm91bmRfY29sb3I6IGAke3NldHRpbmdzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yfWAsXG4gICAgdGhlbWVfY29sb3I6IGAke3NldHRpbmdzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yfWAsXG4gIH07XG5cbiAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKX1cXG5gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFuaWZlc3RQbHVnaW4oZ2FtZXM6IEdhbWVzU2V0dGluZ3MpOiBQbHVnaW4ge1xuICBsZXQgY29uZmlnOiBSZXNvbHZlZENvbmZpZztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1rbG9lay1tYW5pZmVzdCcsXG4gICAgZW5mb3JjZTogJ3Bvc3QnLFxuICAgIGFwcGx5OiAnYnVpbGQnLFxuICAgIGFzeW5jIGNvbmZpZ1Jlc29sdmVkKHJlc29sdmVkQ29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICAgICAgY29uZmlnID0gcmVzb2x2ZWRDb25maWc7XG4gICAgfSxcbiAgICBnZW5lcmF0ZUJ1bmRsZShfLCBidW5kbGUpIHtcbiAgICAgIC8vIFZvb3IgaWVkZXJlIGFwcCBlZW4gbWFuaWZlc3QgbWFrZW46XG4gICAgICBmb3IgKGNvbnN0IFtwYWdlSWQsIHNldHRpbmdzXSBvZiBPYmplY3QuZW50cmllcyhnYW1lcykpIHtcbiAgICAgICAgYnVuZGxlW2Ake3BhZ2VJZH0ud2VibWFuaWZlc3RgXSA9IHtcbiAgICAgICAgICBuZWVkc0NvZGVSZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdhc3NldCcsXG4gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNvdXJjZTogcmVuZGVyR2FtZU1hbmlmZXN0KHBhZ2VJZCwgc2V0dGluZ3MsIGNvbmZpZyksXG4gICAgICAgICAgZmlsZU5hbWU6IGAke3BhZ2VJZH0ud2VibWFuaWZlc3RgLFxuICAgICAgICB9O1xuXG4gICAgICAgIGJ1bmRsZVtgJHtwYWdlSWR9LXNlcnZpY2V3b3JrZXIuanNgXSA9IHtcbiAgICAgICAgICBuZWVkc0NvZGVSZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdhc3NldCcsXG4gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNvdXJjZTogXCJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZnVuY3Rpb24oKSB7IHJldHVybjsgfSk7XCIsXG4gICAgICAgICAgZmlsZU5hbWU6IGAke3BhZ2VJZH0tc2VydmljZXdvcmtlci5qc2AsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiIsImltcG9ydCBsZWdhY3lQbHVnaW4gZnJvbSAnQHZpdGVqcy9wbHVnaW4tbGVnYWN5JztcbmltcG9ydCB0eXBlIHtQbHVnaW4sIFBsdWdpbk9wdGlvbn0gZnJvbSAndml0ZSc7XG5pbXBvcnQgYmFubmVyUGx1Z2luIGZyb20gJ3ZpdGUtcGx1Z2luLWJhbm5lcic7XG5pbXBvcnQge2NyZWF0ZUh0bWxQbHVnaW59IGZyb20gJ3ZpdGUtcGx1Z2luLWh0bWwnO1xuaW1wb3J0IHR5cGUge1ZpdGVPcHRpb25zfSBmcm9tICcuLi91dGlscy9pbnRlcmZhY2VzJztcbmltcG9ydCB7aW1hZ2VtaW5QbHVnaW59IGZyb20gJy4vbGliL2ltYWdlLXBsdWdpbic7XG5pbXBvcnQge21hbmlmZXN0UGx1Z2lufSBmcm9tICcuL2xpYi9tYW5pZmVzdC1wbHVnaW4nO1xuaW1wb3J0IHt2aXN1YWxpemVyfSBmcm9tICdyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXInO1xuXG4vLyBCdWlsZCBwbHVnaW5zXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQbHVnaW5zKFxuICBvcHRpb25zOiBWaXRlT3B0aW9ucyxcbik6IEFycmF5PFBsdWdpbiB8IFBsdWdpbk9wdGlvbj4ge1xuICAvLyBObyBidWlsZD8gbm8gcGx1Z2lucy4uXG4gIGlmIChvcHRpb25zLmVudmlyb25tZW50LmNvbW1hbmQgIT09ICdidWlsZCcpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwbHVnaW5zOiBBcnJheTxQbHVnaW4gfCBQbHVnaW5PcHRpb24gfCB1bmRlZmluZWQ+ID0gW107XG5cbiAgaWYgKG9wdGlvbnMuY29uZmlnLmJ1aWxkLmxlZ2FjeSkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFnZSB3b3JrcyBpbiBvbGRlciBicm93c2Vyc1xuICAgIHBsdWdpbnMucHVzaChcbiAgICAgIC4uLmxlZ2FjeVBsdWdpbih7XG4gICAgICAgIHRhcmdldHM6IChvcHRpb25zLmNvbmZpZy5idWlsZC5icm93c2Vyc2xpc3QgYXMgc3RyaW5nW10pID8/ICdkZWZhdWx0cycsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgcGFnZXMgPSBPYmplY3Qua2V5cyhvcHRpb25zLnNldHRpbmdzLmdhbWVzKS5tYXAoKGdhbWVJZCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBmaWxlbmFtZTogYCR7Z2FtZUlkfS5odG1sYCxcbiAgICAgIHRlbXBsYXRlOiBgJHtnYW1lSWR9Lmh0bWxgLFxuICAgIH07XG4gIH0pO1xuXG4gIHBsdWdpbnMucHVzaChcbiAgICAvLyBNaW5pZnkgaW1hZ2UgYXNzZXRzXG4gICAgaW1hZ2VtaW5QbHVnaW4ob3B0aW9ucy5lbnZpcm9ubWVudCwgb3B0aW9ucy5jb25maWcuYnVpbGQuaW1hZ2VRdWFsaXR5KSxcblxuICAgIC8vIE1ha2UgdGhlIGh0bWwgb3V0cHV0IHNtYWxsZXJcbiAgICAuLi4oY3JlYXRlSHRtbFBsdWdpbih7bWluaWZ5OiB0cnVlLCBwYWdlc30pIGFzIFBsdWdpbltdKSxcblxuICAgIC8vIEFkZCBhIGJhbm5lciB0byBnZW5lcmF0ZWQganMvY3NzXG4gICAgYmFubmVyUGx1Z2luKFxuICAgICAgYFxuICAgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC5cblxuICAgICAgICAgX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgICAgICBfICAgICAgICAgICAgX1xuICAgICAgICAvICApICAgICAgICAgICAgICB8ICBvICAgICAgICAgL3wgICAvIHwgfCAgICAgICAgICB8IHxcbiAgICAgICAgXFxcXF9fIF98XyAgICAgICAgIF9ffCAgICAgIF9fICAgICB8X18vICB8IHwgIF9fICAgXyAgfCB8XG4gICAgICAgICAgIFxcXFwgfCAgfCAgIHwgIC8gIHwgIHwgIC8gIFxcXFxfICAgfCBcXFxcICAgfC8gIC8gIFxcXFxffC8gIHwvXylcbiAgICAgICAoX19fLyB8Xy8gXFxcXF8vfF8vXFxcXF8vfF8vfF8vXFxcXF9fLyAgICB8ICBcXFxcXy98X18vXFxcXF9fLyB8X18vfCBcXFxcXy9cblxuICAgICAgICBDb25jZXB0LCBvbnR3ZXJwICYgb250d2lra2VsaW5nXG4gICAgICAgIGh0dHBzOi8vc3R1ZGlva2xvZWsubmxcblxuICAgICAgICBTdHVkaW8gS2xvZWsg4p2kIFBpeGlKUywgR1NBUCAmIGhvd2xlci5qc1xuXG4gICAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLlxuXG4gICAgYCxcbiAgICApLFxuICApO1xuXG4gIC8vIENyZWF0ZSBhIG1hbmlmZXN0IGFuZCBtaW5pbWFsIHdlYndvcmtlciBmb3IgZXZlcnkgZ2FtZVxuICBpZiAob3B0aW9ucy5jb25maWcuYnVpbGQubWFuaWZlc3QpIHtcbiAgICBwbHVnaW5zLnB1c2gobWFuaWZlc3RQbHVnaW4ob3B0aW9ucy5zZXR0aW5ncy5nYW1lcykpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuY29uZmlnLmJ1aWxkLmFuYWx5emVCdW5kbGUpIHtcbiAgICBwbHVnaW5zLnB1c2godmlzdWFsaXplcih7XG4gICAgICB0ZW1wbGF0ZTogXCJ0cmVlbWFwXCIsIC8vIG9yIHN1bmJ1cnN0XG4gICAgICBvcGVuOiB0cnVlLFxuICAgICAgZ3ppcFNpemU6IHRydWUsXG4gICAgICBmaWxlbmFtZTogXCJidW5kbGUtYW5hbHlzZS5odG1sXCIsIC8vIHdpbGwgYmUgc2F2ZWQgaW4gcHJvamVjdCdzIHJvb3RcbiAgICB9KSBhcyBQbHVnaW5PcHRpb24pO1xuICB9XG5cbiAgcmV0dXJuIHBsdWdpbnMuZmlsdGVyKHBsdWdpbiA9PiBwbHVnaW4gIT09IHVuZGVmaW5lZCk7XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHt0eXBlIFBsdWdpbiwgdHlwZSBQbHVnaW5PcHRpb259IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IGZ1bGxSZWxvYWQgZnJvbSAndml0ZS1wbHVnaW4tZnVsbC1yZWxvYWQnO1xuaW1wb3J0IG1rY2VydCBmcm9tICd2aXRlLXBsdWdpbi1ta2NlcnQnO1xuaW1wb3J0IGNoZWNrZXIgZnJvbSAndml0ZS1wbHVnaW4tY2hlY2tlcic7XG5pbXBvcnQge2N3ZH0gZnJvbSAnLi4vdXRpbHMnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlcnZlUGx1Z2lucygpOiBBcnJheTxQbHVnaW4gfCBQbHVnaW5PcHRpb24+IHtcbiAgcmV0dXJuIFtcbiAgICBmdWxsUmVsb2FkKFsnc2NyaXB0LyoqLyoudHMnLCAnc3ZlbHRlLyoqLyouc3ZlbHRlJ10sIHtcbiAgICAgIHJvb3Q6IHBhdGguam9pbihwYXRoLnJlc29sdmUoY3dkKSwgJ3NvdXJjZScpLFxuICAgICAgbG9nOiB0cnVlLFxuICAgICAgYWx3YXlzOiB0cnVlLFxuICAgIH0pIGFzIFBsdWdpbixcblxuICAgIG1rY2VydCgpLFxuXG4gICAgY2hlY2tlcih7XG4gICAgICB0eXBlc2NyaXB0OiB0cnVlLFxuICAgIH0pLFxuICBdO1xufVxuIiwiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHR5cGUge0NvbmZpZ0VudiwgVXNlckNvbmZpZ30gZnJvbSAndml0ZSc7XG5pbXBvcnQge2Jhc2VQbHVnaW5zfSBmcm9tICcuL3BsdWdpbnMvYmFzZSc7XG5pbXBvcnQge2J1aWxkUGx1Z2luc30gZnJvbSAnLi9wbHVnaW5zL2J1aWxkJztcbmltcG9ydCB7c2VydmVQbHVnaW5zfSBmcm9tICcuL3BsdWdpbnMvc2VydmUnO1xuaW1wb3J0IHtcbiAgY3dkLFxuICBkZWZpbmVCdWlsZENvbmZpZyxcbiAgZ2V0UGFnZVRvU2VydmUsXG4gIHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MsXG4gIHJlYWRKU09OLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgS2xvZWtWaXRlQ29uZmlnLFxuICBQYWNrYWdlR2FtZXNTZXR0aW5ncyxcbiAgVml0ZU9wdGlvbnMsXG59IGZyb20gJy4vdXRpbHMvaW50ZXJmYWNlcyc7XG5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVmaW5lS2xvZWtWaXRlQ29uZmlnKFxuICBlbnZpcm9ubWVudDogQ29uZmlnRW52LFxuKTogUHJvbWlzZTxVc2VyQ29uZmlnPiB7XG4gIGNvbnN0IHBrZyA9IHJlYWRKU09OKHBhdGgucmVzb2x2ZShjd2QsICdwYWNrYWdlLmpzb24nKSkgYXMgUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICB1bmtub3duXG4gID47XG4gIGNvbnN0IGtsb2VrQ29uZmlnID0gcGtnLnZpdGUgYXMgS2xvZWtWaXRlQ29uZmlnO1xuICBjb25zdCBicm93c2Vyc2xpc3QgPSBwa2cuYnJvd3NlcnNsaXN0IGFzIHN0cmluZyB8IHN0cmluZ1tdO1xuICBjb25zdCBvcHRpb25zOiBWaXRlT3B0aW9ucyA9IHtcbiAgICByb290OiBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJyksXG4gICAgZW52aXJvbm1lbnQsXG4gICAgc2V0dGluZ3M6IHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MocGtnLnNldHRpbmdzIGFzIFBhY2thZ2VHYW1lc1NldHRpbmdzKSxcbiAgICBjb25maWc6IHtcbiAgICAgIC4uLmtsb2VrQ29uZmlnLFxuICAgICAgYnVpbGQ6IHsuLi5rbG9la0NvbmZpZy5idWlsZCwgYnJvd3NlcnNsaXN0fSxcbiAgICAgIHNlcnZlOiB7XG4gICAgICAgIHBhcnRpYWxzOiBbXG4gICAgICAgICAgcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3BhcnRpYWxzJyksXG4gICAgICAgICAgcGF0aC5yZXNvbHZlKGN3ZCwgJ3NvdXJjZScsICdwYXJ0aWFscycpLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IGNvbmZpZzogVXNlckNvbmZpZyA9IHtcbiAgICBsb2dMZXZlbDogJ2luZm8nLFxuICAgIGJhc2U6IGtsb2VrQ29uZmlnLmJ1aWxkLmJhc2VQYXRoLFxuICAgIHJvb3Q6IG9wdGlvbnMucm9vdCxcbiAgICBlbnZEaXI6IHBhdGgucmVzb2x2ZShjd2QsICdlbnYnKSxcbiAgICBlbnZQcmVmaXg6IFsnS0xPRUtfJywgJ1ZJVEVfJ10sXG4gICAgcHVibGljRGlyOiAnc3RhdGljJyxcbiAgICBkZWZpbmU6IHt9LFxuXG4gICAgZXNidWlsZDoge1xuICAgICAgbGVnYWxDb21tZW50czogJ25vbmUnLFxuICAgIH0sXG5cbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczoge1xuICAgICAgICBsb2Rhc2g6ICdsb2Rhc2gtZXMnLFxuICAgICAgICAnQG1ldGEnOiBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgJ3N0YXRpYycsICdtZXRhJyksXG4gICAgICAgICdAZm9udHMnOiBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgJ3N0YXRpYycsICdmb250cycpLFxuICAgICAgfSxcbiAgICAgIGRlZHVwZTogWyAgICAgICAgICAgIFxuICAgICAgICAnQGNhcGFjaXRvci9hcHAnLFxuICAgICAgICAnQGNhcGFjaXRvci9jb3JlJyxcbiAgICAgICAgJ0BjYXBhY2l0b3IvZGV2aWNlJyxcbiAgICAgICAgJ0BjYXBhY2l0b3IvbmV0d29yaycsXG4gICAgICAgICdAY2FwYWNpdG9yL3ByZWZlcmVuY2VzJyxcbiAgICAgICAgJ0BjYXBhY2l0b3Ivc3BsYXNoLXNjcmVlbicsXG4gICAgICAgICdAY2FwYWNpdG9yL3N0YXR1cy1iYXInLFxuICAgICAgICAnYm93c2VyJyxcbiAgICAgICAgJ2RhdGUtZm5zLXR6JyxcbiAgICAgICAgJ2RhdGUtZm5zJyxcbiAgICAgICAgJ2Vycm9yLXN0YWNrLXBhcnNlci1lcycsXG4gICAgICAgICdmaXJlYmFzZScsXG4gICAgICAgICdmb250ZmFjZW9ic2VydmVyJyxcbiAgICAgICAgJ2dzYXAnLFxuICAgICAgICAnaG93bGVyJyxcbiAgICAgICAgJ2xvZGFzaC1kZWNvcmF0b3JzLWVzbScsXG4gICAgICAgICdsb2Rhc2gtZXMnLFxuICAgICAgICAnb3Zlcm1pbmQnLFxuICAgICAgICAncGl4aS1zcGluZScsXG4gICAgICAgICdwaXhpLmpzJyxcbiAgICAgICAgJ3B1YnN1Yi1qcycsXG4gICAgICAgICdyYW5kb20tanMnLFxuICAgICAgICAncmVzcycsXG4gICAgICAgICdzbHVnaWZ5JyxcbiAgICAgICAgJ3N1cGVyYWdlbnQnLFxuICAgICAgICAndHMtZXZlbnRzJyxcbiAgICAgICAgJ3RzLW1peGVyJyxcbiAgICAgICAgJ3RzbGliJyxcbiAgICAgIF0sXG4gICAgfSxcblxuICAgIGNzczoge1xuICAgICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgICBzY3NzOiB7XG4gICAgICAgICAgY2hhcnNldDogZmFsc2UsXG4gICAgICAgICAgLy8gQWRkaXRpb25hbERhdGE6IGBAY2hhcnNldCBcIlVURi04XCJgLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgcGx1Z2luczogWy4uLmJhc2VQbHVnaW5zKG9wdGlvbnMpXSxcbiAgfTtcblxuICBzd2l0Y2ggKGVudmlyb25tZW50LmNvbW1hbmQpIHtcbiAgICBjYXNlICdzZXJ2ZSc6XG4gICAgICBjb25maWcuc2VydmVyID0ge1xuICAgICAgICBob3N0OiB0cnVlLFxuICAgICAgICBjb3JzOiBvcHRpb25zLmNvbmZpZy5kZXYuY29ycyA/PyB0cnVlLFxuICAgICAgICBodHRwczogb3B0aW9ucy5jb25maWcuZGV2Lmh0dHBzID8/IHRydWUsXG4gICAgICAgIG9wZW46IGdldFBhZ2VUb1NlcnZlKG9wdGlvbnMuY29uZmlnLCBvcHRpb25zLnNldHRpbmdzLmdhbWVzKSxcbiAgICAgIH07XG4gICAgICBjb25maWcucGx1Z2lucyA9IFtcbiAgICAgICAgLi4uKGNvbmZpZy5wbHVnaW5zID8gY29uZmlnLnBsdWdpbnMgOiBbXSksXG4gICAgICAgIC4uLnNlcnZlUGx1Z2lucygpLFxuICAgICAgXTtcblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdidWlsZCc6XG4gICAgICBjb25maWcuYnVpbGQgPSBkZWZpbmVCdWlsZENvbmZpZyhvcHRpb25zKTtcbiAgICAgIGNvbmZpZy5wbHVnaW5zID0gW1xuICAgICAgICAuLi4oY29uZmlnLnBsdWdpbnMgPyBjb25maWcucGx1Z2lucyA6IFtdKSxcbiAgICAgICAgLi4uYnVpbGRQbHVnaW5zKG9wdGlvbnMpLFxuICAgICAgXTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59XG4iLCJpbXBvcnQge3R5cGUgVHlwZWRGbGFnc30gZnJvbSAnbWVvdyc7XG5pbXBvcnQge2J1aWxkLCBjcmVhdGVTZXJ2ZXJ9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHtkZWZpbmVLbG9la1ZpdGVDb25maWd9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGtsb2VrRGV2ZWxvcG1lbnQoXG4gIGZsYWdzOiBUeXBlZEZsYWdzPHtcbiAgICBtb2RlOiB7XG4gICAgICB0eXBlOiAnc3RyaW5nJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdD86IHN0cmluZztcbiAgICB9O1xuICB9Pixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb25maWcgPSBhd2FpdCBkZWZpbmVLbG9la1ZpdGVDb25maWcoe1xuICAgIGNvbW1hbmQ6ICdzZXJ2ZScsXG4gICAgbW9kZTogJ2RldmVsb3BtZW50JyxcbiAgfSk7XG5cbiAgLy8gRGlmZmVyZW50IG1vZGVcbiAgaWYgKHR5cGVvZiBmbGFncy5tb2RlID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZy5tb2RlID0gZmxhZ3MubW9kZTtcbiAgfVxuXG4gIGNvbnN0IHNlcnZlciA9IGF3YWl0IGNyZWF0ZVNlcnZlcih7XG4gICAgY29uZmlnRmlsZTogZmFsc2UsXG4gICAgLi4uY29uZmlnLFxuICB9KTtcblxuICBhd2FpdCBzZXJ2ZXIubGlzdGVuKCk7XG4gIHNlcnZlci5wcmludFVybHMoKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGtsb2VrQnVpbGQoXG4gIGZsYWdzOiBUeXBlZEZsYWdzPHtcbiAgICBlbXB0eU91dERpcjoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nO1xuICAgICAgc2hvcnRGbGFnOiBzdHJpbmc7XG4gICAgICBkZWZhdWx0OiB0cnVlO1xuICAgIH07XG4gICAgYmFzZToge1xuICAgICAgdHlwZTogJ3N0cmluZyc7XG4gICAgICBzaG9ydEZsYWc6IHN0cmluZztcbiAgICAgIGRlZmF1bHQ6IHN0cmluZztcbiAgICB9O1xuICAgIG1vZGU6IHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnO1xuICAgICAgc2hvcnRGbGFnOiBzdHJpbmc7XG4gICAgICBkZWZhdWx0Pzogc3RyaW5nO1xuICAgIH07XG4gIH0+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGRlZmluZUtsb2VrVml0ZUNvbmZpZyh7XG4gICAgY29tbWFuZDogJ2J1aWxkJyxcbiAgICBtb2RlOiAncHJvZHVjdGlvbicsXG4gIH0pO1xuXG4gIC8vIEVtcHR5IG91dCB0aGUgT3V0cHV0IGRpciBiZWZvcmUgYnVpbGRpbmc/XG4gIGlmIChmbGFncy5lbXB0eU91dERpciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uZmlnLmJ1aWxkID0ge1xuICAgICAgLi4uY29uZmlnLmJ1aWxkLFxuICAgICAgZW1wdHlPdXREaXI6IGZsYWdzLmVtcHR5T3V0RGlyLFxuICAgIH07XG4gIH1cblxuICAvLyBEaWZmZXJlbnQgYmFzZSBwYXRoXG4gIGlmICh0eXBlb2YgZmxhZ3MuYmFzZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcuYmFzZSA9IGZsYWdzLmJhc2U7XG4gIH1cblxuICAvLyBEaWZmZXJlbnQgbW9kZVxuICBpZiAodHlwZW9mIGZsYWdzLm1vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uZmlnLm1vZGUgPSBmbGFncy5tb2RlO1xuICB9XG5cbiAgYXdhaXQgYnVpbGQoe1xuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIC4uLmNvbmZpZyxcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsU0FBUyxpQkFBaUIsQ0FDeEIsT0FBcUIsRUFDckIsSUFBa0IsRUFDbEIsU0FBaUMsRUFBQTtJQUVqQyxNQUFNLFFBQVEsR0FBNEIsRUFBRSxDQUFDOztBQUc3QyxJQUFBLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO1FBQ2hDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRztZQUNuQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDcEIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2xCLENBQUM7QUFDSCxLQUFBO0FBRUQsSUFBQSxPQUFPLFFBQW1DLENBQUM7QUFDN0MsQ0FBQztBQUVLLFNBQVUseUJBQXlCLENBQ3ZDLGVBQXFDLEVBQUE7O0lBR3JDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQzNCLGVBQWUsQ0FBQyxPQUFPLENBQ0UsQ0FBQztBQUM1QixJQUFBLE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxlQUFlLENBQUM7QUFDbEMsSUFBQSxNQUFNLFdBQVcsR0FBc0I7QUFDckMsUUFBQSxXQUFXLEVBQUUsT0FBTztBQUNwQixRQUFBLEtBQUssRUFBRSxFQUFFO0tBQ1YsQ0FBQztJQUVGLEtBQUssTUFBTSxJQUFJ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
|
|
565
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy9nYW1lLnRzIiwiLi4vc3JjL3V0aWxzL2J1aWxkLnRzIiwiLi4vc3JjL3V0aWxzL2luZGV4LnRzIiwiLi4vc3JjL3BsdWdpbnMvbGliL2hhbmRsZWJhcnMtcGx1Z2luLnRzIiwiLi4vc3JjL3BsdWdpbnMvbGliL2h0bWwtcGx1Z2luLnRzIiwiLi4vc3JjL3BsdWdpbnMvYmFzZS50cyIsIi4uL3NyYy9wbHVnaW5zL2xpYi9pbWFnZS1wbHVnaW4udHMiLCIuLi9zcmMvcGx1Z2lucy9saWIvbWFuaWZlc3QtcGx1Z2luLnRzIiwiLi4vc3JjL3BsdWdpbnMvYnVpbGQudHMiLCIuLi9zcmMvcGx1Z2lucy9zZXJ2ZS50cyIsIi4uL3NyYy9jb25maWcudHMiLCIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHtcbiAgR2FtZVNldHRpbmdzLFxuICBHYW1lU2V0dGluZ3NQcm9wZXJ0eSxcbiAgR2FtZXNTZXR0aW5ncyxcbiAgR2FtZXNTZXR0aW5nc0RhdGEsXG4gIEtsb2VrVml0ZUNvbmZpZyxcbiAgUGFja2FnZUdhbWVzU2V0dGluZ3MsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmZ1bmN0aW9uIG1lcmdlR2FtZVNldHRpbmdzKFxuICBnZW5lcmljOiBHYW1lU2V0dGluZ3MsXG4gIGdhbWU6IEdhbWVTZXR0aW5ncyxcbiAgaW5mb1R5cGVzOiBHYW1lU2V0dGluZ3NQcm9wZXJ0eVtdLFxuKTogR2FtZVNldHRpbmdzIHtcbiAgY29uc3Qgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgLy8gQWxsZSBwcm9wcyBvcCDDqcOpbiBsZXZlbCBkaWVwIG1lcmdlblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGluZm9UeXBlcykge1xuICAgIHNldHRpbmdzW3Byb3BlcnR5XSA9IHtcbiAgICAgIC4uLmdlbmVyaWNbcHJvcGVydHldLFxuICAgICAgLi4uZ2FtZVtwcm9wZXJ0eV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzZXR0aW5ncyBhcyB1bmtub3duIGFzIEdhbWVTZXR0aW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MoXG4gIHBhY2thZ2VTZXR0aW5nczogUGFja2FnZUdhbWVzU2V0dGluZ3MsXG4pOiBHYW1lc1NldHRpbmdzRGF0YSB7XG4gIC8vIE1lcmdlIHNldHRpbmdzXG4gIGNvbnN0IGluZm9UeXBlcyA9IE9iamVjdC5rZXlzKFxuICAgIHBhY2thZ2VTZXR0aW5ncy5nZW5lcmljLFxuICApIGFzIEdhbWVTZXR0aW5nc1Byb3BlcnR5W107XG4gIGNvbnN0IHtnZW5lcmljfSA9IHBhY2thZ2VTZXR0aW5ncztcbiAgY29uc3QgYWxsU2V0dGluZ3M6IEdhbWVzU2V0dGluZ3NEYXRhID0ge1xuICAgIGRldmVsb3BtZW50OiBnZW5lcmljLFxuICAgIGdhbWVzOiB7fSxcbiAgfTtcblxuICBmb3IgKGNvbnN0IGdhbWUgb2YgcGFja2FnZVNldHRpbmdzLmdhbWVzID8/IFtdKSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSBtZXJnZUdhbWVTZXR0aW5ncyhnZW5lcmljLCBnYW1lLCBpbmZvVHlwZXMpO1xuXG4gICAgLy8gWm9yZyBlciB2b29yIGRhdCBwYWdlIGFsdGlqZCBnZXpldCBpc1xuICAgIGNvbnN0IHBhZ2VJZCA9IHNldHRpbmdzLmluZm8ucGFnZSA/PyBzZXR0aW5ncy5pbmZvLmlkID8/ICd1bmtub3duJztcbiAgICBzZXR0aW5ncy5pbmZvLnBhZ2UgPSBwYWdlSWQ7XG5cbiAgICAvLyBTbGEgc2V0dGluZ3Mgb3Agb25kZXIgcGFnZSBpZFxuICAgIGFsbFNldHRpbmdzLmdhbWVzW3BhZ2VJZF0gPSBzZXR0aW5ncztcbiAgfVxuXG4gIHJldHVybiBhbGxTZXR0aW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhUb0dhbWVEYXRhKFxuICBmdWxsRmlsZVBhdGg6IHN0cmluZyxcbiAgc2V0dGluZ3M6IEdhbWVzU2V0dGluZ3MsXG4pOiBHYW1lU2V0dGluZ3MgfCB1bmRlZmluZWQge1xuICAvLyBEZXRlcm1pbmUgZmlsZW5hbWUgd2l0aG91dCBleHRlbnNpb25cbiAgbGV0IGZpbGVQYXRoID0gcGF0aC5iYXNlbmFtZShmdWxsRmlsZVBhdGgsIHBhdGguZXh0bmFtZShmdWxsRmlsZVBhdGgpKTtcblxuICAvLyBEZXRlcm1pbmUgZGlyICYgcmVtb3ZlIGxlYWRpbmcgc2xhc2hcbiAgbGV0IGZpbGVEaXJlY3RvcnkgPSBwYXRoLmRpcm5hbWUoZnVsbEZpbGVQYXRoKTtcbiAgZmlsZURpcmVjdG9yeSA9IGZpbGVEaXJlY3RvcnkucmVwbGFjZSgvXlxcLysvZywgJycpO1xuXG4gIGlmIChmaWxlRGlyZWN0b3J5KSB7XG4gICAgZmlsZVBhdGggPSBgJHtmaWxlRGlyZWN0b3J5fS8ke2ZpbGVQYXRofWA7XG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3NbZmlsZVBhdGhdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZVRvU2VydmUoXG4gIGNvbmZpZzogS2xvZWtWaXRlQ29uZmlnLFxuICBzZXR0aW5nczogR2FtZXNTZXR0aW5ncyxcbik6IHN0cmluZyB7XG4gIC8vIEhvZXZlZWwgcGFnZXMgemlqbiBlcj9cbiAgY29uc3QgcGFnZUlkcyA9IE9iamVjdC5rZXlzKHNldHRpbmdzKTtcbiAgY29uc3QgcGFnZSA9IHBhZ2VJZHMubGVuZ3RoID09PSAxID8gcGFnZUlkc1swXSA6ICdkZXZlbG9wbWVudCc7XG5cbiAgcmV0dXJuIHBhdGgucG9zaXguam9pbihcbiAgICBjb25maWcuYnVpbGQuYmFzZVBhdGgsXG4gICAgYCR7cGFnZX0uaHRtbCR7Y29uZmlnLmRldi5zZXJ2ZVBhcmFtcyA/PyAnJ31gLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZUlkRnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbGV0IHBhdGhuYW1lOiBzdHJpbmc7XG5cbiAgdHJ5IHtcbiAgICBwYXRobmFtZSA9IG5ldyBVUkwodXJsLCAnaHR0cHM6Ly9zdHVkaW9rbG9lay5ubCcpLnBhdGhuYW1lO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBJZiByZXF1ZXN0IGlzIG5vdCBodG1sICwgZGlyZWN0bHkgcmV0dXJuIG5leHQoKVxuICBpZiAoIXBhdGhuYW1lLmVuZHNXaXRoKCcuaHRtbCcpICYmIHBhdGhuYW1lICE9PSAnLycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBQYWdpbmEgaWQgb3B2cmFnZW5cbiAgY29uc3QgaW5kZXggPSBwYXRobmFtZS5sYXN0SW5kZXhPZignLycpO1xuICBjb25zdCBmaWxlTmFtZSA9IGluZGV4ID09PSAtMSA/IHBhdGhuYW1lIDogcGF0aG5hbWUuc2xpY2UoaW5kZXggKyAxKTtcblxuICByZXR1cm4gZmlsZU5hbWUucmVwbGFjZSgnLmh0bWwnLCAnJyk7XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUge0J1aWxkT3B0aW9uc30gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHlwZSB7Vml0ZU9wdGlvbnN9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVCdWlsZENvbmZpZyhvcHRpb25zOiBWaXRlT3B0aW9ucyk6IEJ1aWxkT3B0aW9ucyB7XG4gIGNvbnN0IGlucHV0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgZm9yIChjb25zdCBnYW1lSWQgb2YgT2JqZWN0LmtleXMob3B0aW9ucy5zZXR0aW5ncy5nYW1lcykpIHtcbiAgICBpbnB1dFtnYW1lSWRdID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgYCR7Z2FtZUlkfS5odG1sYCk7XG4gIH1cblxuICAvLyBMaWJzIGRpZSBhcGFydGUganMga3JpamdlbjpcbiAgY29uc3QgdmVuZG9yQ2h1bmtzID0gWydwaXhpJywgJ2NhcGFjaXRvcicsICdmaXJlYmFzZScsICdsb2Rhc2gnLCAnZ3NhcCcsICdzdHVkaW9rbG9layddO1xuXG4gIHJldHVybiB7XG4gICAgcmVwb3J0Q29tcHJlc3NlZFNpemU6IHRydWUsXG4gICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAxMDAwLFxuICAgIG91dERpcjogJy4uL3B1YmxpYycsXG4gICAgYXNzZXRzRGlyOiAnZ2VuZXJhdGVkJyxcbiAgICBtaW5pZnk6ICd0ZXJzZXInLFxuICAgIHNvdXJjZW1hcDogb3B0aW9ucy5jb25maWcuYnVpbGQuc291cmNlTWFwcyA9PT0gdHJ1ZSxcbiAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICBpbnB1dCxcbiAgICAgIG91dHB1dDoge1xuICAgICAgICBtYW51YWxDaHVua3MoaWQpIHtcbiAgICAgICAgICBpZiAoaWQuaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gaWRcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgLnNwbGl0KCdub2RlX21vZHVsZXMvJylbMV1cbiAgICAgICAgICAgICAgLnNwbGl0KCcvJylbMF1cbiAgICAgICAgICAgICAgLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmVuZG9yQ2h1bmtzKSB7XG4gICAgICAgICAgICAgIGlmIChuYW1lLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJ3ZlbmRvcic7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cbiIsImltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQge25vcm1hbGl6ZVBhdGh9IGZyb20gJ3ZpdGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEpTT04ocGF0aDogc3RyaW5nKTogdW5rbm93biB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IHJlYWRGaWxlU3luYyhwYXRoKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhLnRvU3RyaW5nKCkpO1xuICB9IGNhdGNoIHtcbiAgICAvL1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgY29uc3QgY3dkID0gbm9ybWFsaXplUGF0aChwcm9jZXNzLmN3ZCgpKTtcblxuZXhwb3J0ICogZnJvbSAnLi9nYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vYnVpbGQnO1xuIiwiaW1wb3J0IG9zIGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHtQbHVnaW59IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHZpdGVIYW5kbGViYXJzUGx1Z2luIGZyb20gJ3ZpdGUtcGx1Z2luLWhhbmRsZWJhcnMnO1xuaW1wb3J0IHR5cGUge1ZpdGVPcHRpb25zfSBmcm9tICcuLi8uLi91dGlscy9pbnRlcmZhY2VzJztcbmltcG9ydCB7Z2V0UGFnZUlkRnJvbVVybH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG4vLyBIZWxwZXJzIHZvb3IgaGFuZGxlYmFyc1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZWJhcnNQbHVnaW4oXG4gIHBhcnRpYWxEaXJlY3Rvcnk6IHN0cmluZyB8IHN0cmluZ1tdLFxuICBvcHRpb25zOiBWaXRlT3B0aW9ucyxcbik6IFBsdWdpbiB7XG4gIHJldHVybiB2aXRlSGFuZGxlYmFyc1BsdWdpbih7XG4gICAgcGFydGlhbERpcmVjdG9yeSxcblxuICAgIGhlbHBlcnM6IHtcbiAgICAgIGpzb246IChvYmplY3Q6IGFueSwgaW5kZW50ID0gMCkgPT5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkob2JqZWN0LCB1bmRlZmluZWQsIGluZGVudCksXG4gICAgICBjb25jYXQ6ICguLi5hcmd1bWVudHNfOiBhbnlbXSkgPT4gYXJndW1lbnRzXy5zbGljZSgwLCAtMSkuam9pbignJyksXG4gICAgICBlcTogKGE6IGFueSwgYjogYW55KSA9PiBhID09PSBiLFxuICAgICAgbmVxOiAoYTogYW55LCBiOiBhbnkpID0+IGEgIT09IGIsXG4gICAgICBpc2RlZmluZWQ6ICh2YWx1ZTogdW5kZWZpbmVkKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgJ3Jlc29sdmUtcm9vdCcocDogc3RyaW5nKSB7XG4gICAgICAgIC8vIFRpamRlbGlqa2UgaGFjayB2b29yIGJ1ZyBpbiBoYW5kbGViYXJzIHBsdWdpblxuICAgICAgICAvLyB6aWUgb29rIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4bGFmcm9zY2lhL3ZpdGUtcGx1Z2luLWhhbmRsZWJhcnMvcHVsbC8xMjlcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgcCk7XG4gICAgICAgIHJldHVybiBvcy5wbGF0Zm9ybSgpID09PSAnd2luMzInID8gYC8ke3Jlc29sdmVkUGF0aH1gIDogcmVzb2x2ZWRQYXRoO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgY29udGV4dChwYWdlUGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgICAgY29uc3QgZ2FtZUlkID0gZ2V0UGFnZUlkRnJvbVVybChwYWdlUGF0aCk7XG5cbiAgICAgIGlmICghZ2FtZUlkKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdhbWVJZCA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAvLyBQYWdpbmEgc2V0dGluZ3MgdGVydWdnZXZlblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVudjogb3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgICAgICBkYXRhOiBvcHRpb25zLnNldHRpbmdzLmRldmVsb3BtZW50LFxuICAgICAgICAgIGdhbWVzOiBvcHRpb25zLnNldHRpbmdzLmdhbWVzLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBPcCBiYXNpcyB2YW4gcGFkIGRhdGEgYmVwYWxlblxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBvcHRpb25zLnNldHRpbmdzLmdhbWVzW2dhbWVJZF07XG5cbiAgICAgIC8vIFBhZ2luYSBzZXR0aW5ncyB0ZXJ1Z2dldmVuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnY6IG9wdGlvbnMuZW52aXJvbm1lbnQsXG4gICAgICAgIGRhdGE6IHNldHRpbmdzID8/IHt9LFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbn1cbiIsImltcG9ydCB7ZXhpc3RzU3luYywgcHJvbWlzZXN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHtDb25maWdFbnYsIFBsdWdpbiwgVXNlckNvbmZpZywgVml0ZURldlNlcnZlcn0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHlwZSB7R2FtZXNTZXR0aW5nc30gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5pbXBvcnQge2N3ZCwgZ2V0UGFnZUlkRnJvbVVybH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5jb25zdCBQQUdFX1RFTVBMQVRFID0gJ3t7PiBnYW1lIGRhdGE9ZGF0YX19JztcbmNvbnN0IERFVkVMT1BNRU5UX1RFTVBMQVRFID0gJ3t7PiBkZXZlbG9wbWVudCBkYXRhPWRhdGF9fSc7XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclRlbXBvcmFyeUZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBCZXN0YWF0IGRpZSBmaWxlIG5vZyBuaWV0P1xuICBpZiAoIWV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XG4gICAgLy8gQWFubWFrZW5cbiAgICBhd2FpdCBwcm9taXNlcy53cml0ZUZpbGUoZmlsZVBhdGgsIFBBR0VfVEVNUExBVEUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodG1sUGx1Z2luKGdhbWVzOiBHYW1lc1NldHRpbmdzKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAndml0ZS1wbHVnaW4ta2xvZWstaHRtbCcsXG4gICAgZW5mb3JjZTogJ3ByZScsXG5cbiAgICBhc3luYyBjb25maWcoX2NvbmZpZzogVXNlckNvbmZpZywgZW52aXJvbm1lbnQ6IENvbmZpZ0Vudikge1xuICAgICAgLy8gQmlqIGVlbiBidWlsZCBtYWtlbiB3ZSB0aWpkZWxpamsgZmlsZXMgYWFuXG4gICAgICBpZiAoZW52aXJvbm1lbnQuY29tbWFuZCA9PT0gJ2J1aWxkJykge1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxQcm9taXNlPHZvaWQ+PiA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgcGFnZUlkIG9mIE9iamVjdC5rZXlzKGdhbWVzKSkge1xuICAgICAgICAgIC8vIFBhZCBuYWFyIGZpbGVcbiAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShjd2QsICdzb3VyY2UnLCBgJHtwYWdlSWR9Lmh0bWxgKTtcbiAgICAgICAgICBhY3Rpb25zLnB1c2gocmVuZGVyVGVtcG9yYXJ5RmlsZShmaWxlUGF0aCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYWN0aW9ucyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbmZpZ3VyZVNlcnZlcihzZXJ2ZXI6IFZpdGVEZXZTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIFpvcmcgZXIgdm9vciBkYXQgdGlqZGVucyBkZXZlbG9wbWVudCBkZSBwYWdpbmEgZ2UtcmVuZGVyZWQgdGVydWcgZ2VnZXZlbiB3b3JkdCB3b3JkdFxuICAgICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKCcvJywgYXN5bmMgKHJlcXVlc3QsIHJlc3BvbnNlLCBuZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXJsID0gcmVxdWVzdD8udXJsID8/ICcnO1xuICAgICAgICAgIGNvbnN0IHBhZ2VJZCA9IGdldFBhZ2VJZEZyb21VcmwodXJsKTtcblxuICAgICAgICAgIGlmICghcGFnZUlkKSB7XG4gICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhZ2VJZCA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgLy8gRGV2ZWxvcG1lbnQ/IGdlZWYgdGVydWcuLi5cbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChcbiAgICAgICAgICAgICAgYXdhaXQgc2VydmVyLnRyYW5zZm9ybUluZGV4SHRtbChcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgREVWRUxPUE1FTlRfVEVNUExBVEUsXG4gICAgICAgICAgICAgICAgcmVxdWVzdC5vcmlnaW5hbFVybCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIGlmIChPYmplY3Qua2V5cyhnYW1lcykuaW5jbHVkZXMocGFnZUlkKSkge1xuICAgICAgICAgICAgLy8gQmVzdGFhbmRlIGdhbWU/IHpvcmcgZXIgdm9vciBkYXQgZGUgdGVtcGxhdGUgZ2UtcmVuZGVyZWQgd29yZHRcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChcbiAgICAgICAgICAgICAgYXdhaXQgc2VydmVyLnRyYW5zZm9ybUluZGV4SHRtbChcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgUEFHRV9URU1QTEFURSxcbiAgICAgICAgICAgICAgICByZXF1ZXN0Lm9yaWdpbmFsVXJsLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTmlrcyBnZXZvbmRlblxuICAgICAgICAgICAgcmVzcG9uc2UuZW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSxcblxuICAgIGFzeW5jIGNsb3NlQnVuZGxlKCkge1xuICAgICAgLy8gVmVyd2lqZGVyIGRlIGFhbmdlbWFha3RlIGZpbGVzXG4gICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxQcm9taXNlPHZvaWQ+PiA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwYWdlSWQgb2YgT2JqZWN0LmtleXMoZ2FtZXMpKSB7XG4gICAgICAgIC8vIFBhZCBuYWFyIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgYCR7cGFnZUlkfS5odG1sYCk7XG4gICAgICAgIGlmIChleGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhY3Rpb25zLnB1c2gocHJvbWlzZXMucm0oZmlsZVBhdGgpKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGFjdGlvbnMpO1xuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHtzdmVsdGUsIHZpdGVQcmVwcm9jZXNzfSBmcm9tICdAc3ZlbHRlanMvdml0ZS1wbHVnaW4tc3ZlbHRlJztcbmltcG9ydCB7dHlwZSBQbHVnaW4sIHR5cGUgUGx1Z2luT3B0aW9ufSBmcm9tICd2aXRlJztcbmltcG9ydCB0c2NvbmZpZ1BhdGhzUGx1Z2luIGZyb20gJ3ZpdGUtdHNjb25maWctcGF0aHMnO1xuaW1wb3J0IHt0eXBlIFZpdGVPcHRpb25zfSBmcm9tICcuLi91dGlscy9pbnRlcmZhY2VzJztcbmltcG9ydCB7Y3dkfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2hhbmRsZWJhcnNQbHVnaW59IGZyb20gJy4vbGliL2hhbmRsZWJhcnMtcGx1Z2luJztcbmltcG9ydCB7aHRtbFBsdWdpbn0gZnJvbSAnLi9saWIvaHRtbC1wbHVnaW4nO1xuXG5leHBvcnQgZnVuY3Rpb24gYmFzZVBsdWdpbnMoXG4gIG9wdGlvbnM6IFZpdGVPcHRpb25zLFxuKTogQXJyYXk8UGx1Z2luIHwgUGx1Z2luT3B0aW9uPiB7XG4gIHJldHVybiBbXG4gICAgaHRtbFBsdWdpbihvcHRpb25zLnNldHRpbmdzLmdhbWVzKSxcblxuICAgIC4uLnN2ZWx0ZSh7XG4gICAgICBwcmVwcm9jZXNzOnZpdGVQcmVwcm9jZXNzKCksXG5cbiAgICAgIG9ud2Fybih3YXJuaW5nLCB3YXJuKSB7XG4gICAgICAgIGlmICghd2Fybikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vIGExMXkgd2FybmluZ3MuLi5cbiAgICAgICAgaWYgKHdhcm5pbmcuY29kZS5zdGFydHNXaXRoKCdhMTF5LScpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgd2Fybih3YXJuaW5nKTtcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICB0c2NvbmZpZ1BhdGhzUGx1Z2luKHtcbiAgICAgIHJvb3Q6IHBhdGgucmVzb2x2ZShjd2QpLFxuICAgICAgLy8gZXh0ZW5zaW9uczogWycudHMnLCAnLmpzb24nXSxcbiAgICAgIGxvb3NlOiB0cnVlLFxuICAgIH0pLFxuICBcbiAgICBoYW5kbGViYXJzUGx1Z2luKG9wdGlvbnMuY29uZmlnLnNlcnZlLnBhcnRpYWxzLCBvcHRpb25zKSxcbiAgXTtcbn1cbiIsIlxuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7Y3dkfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgdHlwZSB7Q29uZmlnRW52LCBQbHVnaW59IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHR5cGUge0ltYWdlUXVhbGl0eUNvbmZpZ30gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7IFxuXG5pbXBvcnQgdml0ZUltYWdlbWluIGZyb20gJ0B2aGVlbXN0cmEvdml0ZS1wbHVnaW4taW1hZ2VtaW4nXG5cbi8vIFRoZSBtaW5pZmllcnMgeW91IHdhbnQgdG8gdXNlOlxuaW1wb3J0IGltYWdlbWluTW96anBlZyBmcm9tICdpbWFnZW1pbi1tb3pqcGVnJ1xuaW1wb3J0IGltYWdlbWluUG5nUXVhbnQgZnJvbSAnaW1hZ2VtaW4tcG5ncXVhbnQnXG5pbXBvcnQgaW1hZ2VtaW5PcHRpUG5nIGZyb20gJ2ltYWdlbWluLW9wdGlwbmcnXG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZW1pblBsdWdpbihcbiAgZW52aXJvbm1lbnQ6IENvbmZpZ0VudixcbiAgb3B0aW9uczogSW1hZ2VRdWFsaXR5Q29uZmlnLFxuKTogUGx1Z2luIHwgdW5kZWZpbmVkIHtcblxuICBpZiAoZW52aXJvbm1lbnQubW9kZSAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIHZpdGVJbWFnZW1pbih7XG4gICAgc2tpcElmTGFyZ2VyOiB0cnVlLFxuICAgIHZlcmJvc2U6IHRydWUsXG4gICAgcm9vdDogcGF0aC5qb2luKHBhdGgucmVzb2x2ZShjd2QpLCAncHVibGljJyksXG4gICAgcGx1Z2luczoge1xuICAgICAganBnOiBbXG4gICAgICAgIGltYWdlbWluTW96anBlZyh7XG4gICAgICAgICAgcXVhbGl0eTogb3B0aW9ucz8uanBlZyA/PyA4MCxcbiAgICAgICAgfSlcbiAgICAgIF0sXG4gICAgICBwbmc6IFtcbiAgICAgICAgaW1hZ2VtaW5QbmdRdWFudCh7XG4gICAgICAgICAgc3RyaXA6IHRydWUsXG4gICAgICAgICAgc3BlZWQ6IDIsXG4gICAgICAgICAgZGl0aGVyaW5nOiAwLjI1LFxuICAgICAgICAgIHF1YWxpdHk6IG9wdGlvbnM/LnBuZyA/PyBbMC41LCAwLjddLFxuICAgICAgICB9KSwgXG4gICAgICAgIGltYWdlbWluT3B0aVBuZygpXG4gICAgICBdXG4gICAgfVxuICB9KSBhcyBQbHVnaW47XG59O1xuIiwiaW1wb3J0IHR5cGUge1BsdWdpbiwgUmVzb2x2ZWRDb25maWd9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHR5cGUge0dhbWVTZXR0aW5ncywgR2FtZXNTZXR0aW5nc30gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5cbmZ1bmN0aW9uIHJlbmRlckdhbWVNYW5pZmVzdChcbiAgcGFnZUlkOiBzdHJpbmcsXG4gIHNldHRpbmdzOiBHYW1lU2V0dGluZ3MsXG4gIGNvbmZpZzogUmVzb2x2ZWRDb25maWcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBtYW5pZmVzdCA9IHtcbiAgICBzaG9ydF9uYW1lOiBgJHtzZXR0aW5ncy5tZXRhLmFwcHRpdGxlfWAsXG4gICAgbmFtZTogYCR7c2V0dGluZ3MubWV0YS50aXRsZX1gLFxuICAgIGRlc2NyaXB0aW9uOiBgJHtzZXR0aW5ncy5tZXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgc2NvcGU6IGAke2NvbmZpZy5iYXNlfSR7cGFnZUlkfS5odG1sYCxcbiAgICBzdGFydF91cmw6IGAke2NvbmZpZy5iYXNlfSR7cGFnZUlkfS5odG1sYCxcbiAgICBkaXNwbGF5OiAnZnVsbHNjcmVlbicsXG4gICAgb3JpZW50YXRpb246IGAke3NldHRpbmdzLm9wdGlvbnMub3JpZW50YXRpb24gPz8gJ2xhbmRzY2FwZSd9YCxcbiAgICBpY29uczogW1xuICAgICAge1xuICAgICAgICBzcmM6IGAke2NvbmZpZy5iYXNlfW1ldGEvJHtzZXR0aW5ncy5pbmZvLmlkfS9pY29ucy9jaHJvbWUtdG91Y2gtaWNvbi0xOTJ4MTkyLnBuZ2AsXG4gICAgICAgIHR5cGU6ICdpbWFnZS9wbmcnLFxuICAgICAgICBzaXplczogJzE5MngxOTInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3JjOiBgJHtjb25maWcuYmFzZX1tZXRhLyR7c2V0dGluZ3MuaW5mby5pZH0vaWNvbnMvaWNvbi5wbmdgLFxuICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgc2l6ZXM6ICcxMDI0eDEwMjQnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGJhY2tncm91bmRfY29sb3I6IGAke3NldHRpbmdzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yfWAsXG4gICAgdGhlbWVfY29sb3I6IGAke3NldHRpbmdzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yfWAsXG4gIH07XG5cbiAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKX1cXG5gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFuaWZlc3RQbHVnaW4oZ2FtZXM6IEdhbWVzU2V0dGluZ3MpOiBQbHVnaW4ge1xuICBsZXQgY29uZmlnOiBSZXNvbHZlZENvbmZpZztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1rbG9lay1tYW5pZmVzdCcsXG4gICAgZW5mb3JjZTogJ3Bvc3QnLFxuICAgIGFwcGx5OiAnYnVpbGQnLFxuICAgIGFzeW5jIGNvbmZpZ1Jlc29sdmVkKHJlc29sdmVkQ29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICAgICAgY29uZmlnID0gcmVzb2x2ZWRDb25maWc7XG4gICAgfSxcbiAgICBnZW5lcmF0ZUJ1bmRsZShfLCBidW5kbGUpIHtcbiAgICAgIC8vIFZvb3IgaWVkZXJlIGFwcCBlZW4gbWFuaWZlc3QgbWFrZW46XG4gICAgICBmb3IgKGNvbnN0IFtwYWdlSWQsIHNldHRpbmdzXSBvZiBPYmplY3QuZW50cmllcyhnYW1lcykpIHtcbiAgICAgICAgYnVuZGxlW2Ake3BhZ2VJZH0ud2VibWFuaWZlc3RgXSA9IHtcbiAgICAgICAgICBuZWVkc0NvZGVSZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdhc3NldCcsXG4gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNvdXJjZTogcmVuZGVyR2FtZU1hbmlmZXN0KHBhZ2VJZCwgc2V0dGluZ3MsIGNvbmZpZyksXG4gICAgICAgICAgZmlsZU5hbWU6IGAke3BhZ2VJZH0ud2VibWFuaWZlc3RgLFxuICAgICAgICB9O1xuXG4gICAgICAgIGJ1bmRsZVtgJHtwYWdlSWR9LXNlcnZpY2V3b3JrZXIuanNgXSA9IHtcbiAgICAgICAgICBuZWVkc0NvZGVSZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdhc3NldCcsXG4gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNvdXJjZTogXCJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZnVuY3Rpb24oKSB7IHJldHVybjsgfSk7XCIsXG4gICAgICAgICAgZmlsZU5hbWU6IGAke3BhZ2VJZH0tc2VydmljZXdvcmtlci5qc2AsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiIsImltcG9ydCBsZWdhY3lQbHVnaW4gZnJvbSAnQHZpdGVqcy9wbHVnaW4tbGVnYWN5JztcbmltcG9ydCB0eXBlIHtQbHVnaW4sIFBsdWdpbk9wdGlvbn0gZnJvbSAndml0ZSc7XG5pbXBvcnQgYmFubmVyUGx1Z2luIGZyb20gJ3ZpdGUtcGx1Z2luLWJhbm5lcic7XG5pbXBvcnQge2NyZWF0ZUh0bWxQbHVnaW59IGZyb20gJ3ZpdGUtcGx1Z2luLWh0bWwnO1xuaW1wb3J0IHR5cGUge1ZpdGVPcHRpb25zfSBmcm9tICcuLi91dGlscy9pbnRlcmZhY2VzJztcbmltcG9ydCB7aW1hZ2VtaW5QbHVnaW59IGZyb20gJy4vbGliL2ltYWdlLXBsdWdpbic7XG5pbXBvcnQge21hbmlmZXN0UGx1Z2lufSBmcm9tICcuL2xpYi9tYW5pZmVzdC1wbHVnaW4nO1xuaW1wb3J0IHt2aXN1YWxpemVyfSBmcm9tICdyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXInO1xuXG4vLyBCdWlsZCBwbHVnaW5zXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQbHVnaW5zKFxuICBvcHRpb25zOiBWaXRlT3B0aW9ucyxcbik6IEFycmF5PFBsdWdpbiB8IFBsdWdpbk9wdGlvbj4ge1xuICAvLyBObyBidWlsZD8gbm8gcGx1Z2lucy4uXG4gIGlmIChvcHRpb25zLmVudmlyb25tZW50LmNvbW1hbmQgIT09ICdidWlsZCcpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwbHVnaW5zOiBBcnJheTxQbHVnaW4gfCBQbHVnaW5PcHRpb24gfCB1bmRlZmluZWQ+ID0gW107XG5cbiAgaWYgKG9wdGlvbnMuY29uZmlnLmJ1aWxkLmxlZ2FjeSkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFnZSB3b3JrcyBpbiBvbGRlciBicm93c2Vyc1xuICAgIHBsdWdpbnMucHVzaChcbiAgICAgIC4uLmxlZ2FjeVBsdWdpbih7XG4gICAgICAgIHRhcmdldHM6IChvcHRpb25zLmNvbmZpZy5idWlsZC5icm93c2Vyc2xpc3QgYXMgc3RyaW5nW10pID8/ICdkZWZhdWx0cycsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgcGFnZXMgPSBPYmplY3Qua2V5cyhvcHRpb25zLnNldHRpbmdzLmdhbWVzKS5tYXAoKGdhbWVJZCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBmaWxlbmFtZTogYCR7Z2FtZUlkfS5odG1sYCxcbiAgICAgIHRlbXBsYXRlOiBgJHtnYW1lSWR9Lmh0bWxgLFxuICAgIH07XG4gIH0pO1xuXG4gIHBsdWdpbnMucHVzaChcbiAgICAvLyBNaW5pZnkgaW1hZ2UgYXNzZXRzXG4gICAgaW1hZ2VtaW5QbHVnaW4ob3B0aW9ucy5lbnZpcm9ubWVudCwgb3B0aW9ucy5jb25maWcuYnVpbGQuaW1hZ2VRdWFsaXR5KSxcblxuICAgIC8vIE1ha2UgdGhlIGh0bWwgb3V0cHV0IHNtYWxsZXJcbiAgICAuLi4oY3JlYXRlSHRtbFBsdWdpbih7bWluaWZ5OiB0cnVlLCBwYWdlc30pIGFzIFBsdWdpbltdKSxcblxuICAgIC8vIEFkZCBhIGJhbm5lciB0byBnZW5lcmF0ZWQganMvY3NzXG4gICAgYmFubmVyUGx1Z2luKFxuICAgICAgYFxuICAgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC5cblxuICAgICAgICAgX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgICAgICBfICAgICAgICAgICAgX1xuICAgICAgICAvICApICAgICAgICAgICAgICB8ICBvICAgICAgICAgL3wgICAvIHwgfCAgICAgICAgICB8IHxcbiAgICAgICAgXFxcXF9fIF98XyAgICAgICAgIF9ffCAgICAgIF9fICAgICB8X18vICB8IHwgIF9fICAgXyAgfCB8XG4gICAgICAgICAgIFxcXFwgfCAgfCAgIHwgIC8gIHwgIHwgIC8gIFxcXFxfICAgfCBcXFxcICAgfC8gIC8gIFxcXFxffC8gIHwvXylcbiAgICAgICAoX19fLyB8Xy8gXFxcXF8vfF8vXFxcXF8vfF8vfF8vXFxcXF9fLyAgICB8ICBcXFxcXy98X18vXFxcXF9fLyB8X18vfCBcXFxcXy9cblxuICAgICAgICBDb25jZXB0LCBvbnR3ZXJwICYgb250d2lra2VsaW5nXG4gICAgICAgIGh0dHBzOi8vc3R1ZGlva2xvZWsubmxcblxuICAgICAgICBTdHVkaW8gS2xvZWsg4p2kIFBpeGlKUywgR1NBUCAmIGhvd2xlci5qc1xuXG4gICAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLlxuXG4gICAgYCxcbiAgICApLFxuICApO1xuXG4gIC8vIENyZWF0ZSBhIG1hbmlmZXN0IGFuZCBtaW5pbWFsIHdlYndvcmtlciBmb3IgZXZlcnkgZ2FtZVxuICBpZiAob3B0aW9ucy5jb25maWcuYnVpbGQubWFuaWZlc3QpIHtcbiAgICBwbHVnaW5zLnB1c2gobWFuaWZlc3RQbHVnaW4ob3B0aW9ucy5zZXR0aW5ncy5nYW1lcykpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuY29uZmlnLmJ1aWxkLmFuYWx5emVCdW5kbGUpIHtcbiAgICBwbHVnaW5zLnB1c2godmlzdWFsaXplcih7XG4gICAgICB0ZW1wbGF0ZTogXCJ0cmVlbWFwXCIsIC8vIG9yIHN1bmJ1cnN0XG4gICAgICBvcGVuOiB0cnVlLFxuICAgICAgZ3ppcFNpemU6IHRydWUsXG4gICAgICBmaWxlbmFtZTogXCJidW5kbGUtYW5hbHlzZS5odG1sXCIsIC8vIHdpbGwgYmUgc2F2ZWQgaW4gcHJvamVjdCdzIHJvb3RcbiAgICB9KSBhcyBQbHVnaW5PcHRpb24pO1xuICB9XG5cbiAgcmV0dXJuIHBsdWdpbnMuZmlsdGVyKHBsdWdpbiA9PiBwbHVnaW4gIT09IHVuZGVmaW5lZCk7XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHt0eXBlIFBsdWdpbiwgdHlwZSBQbHVnaW5PcHRpb259IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IGZ1bGxSZWxvYWQgZnJvbSAndml0ZS1wbHVnaW4tZnVsbC1yZWxvYWQnO1xuaW1wb3J0IG1rY2VydCBmcm9tICd2aXRlLXBsdWdpbi1ta2NlcnQnO1xuaW1wb3J0IGNoZWNrZXIgZnJvbSAndml0ZS1wbHVnaW4tY2hlY2tlcic7XG5pbXBvcnQge2N3ZH0gZnJvbSAnLi4vdXRpbHMnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlcnZlUGx1Z2lucygpOiBBcnJheTxQbHVnaW4gfCBQbHVnaW5PcHRpb24+IHtcbiAgcmV0dXJuIFtcbiAgICBmdWxsUmVsb2FkKFsnc2NyaXB0LyoqLyoudHMnLCAnc3ZlbHRlLyoqLyouc3ZlbHRlJ10sIHtcbiAgICAgIHJvb3Q6IHBhdGguam9pbihwYXRoLnJlc29sdmUoY3dkKSwgJ3NvdXJjZScpLFxuICAgICAgbG9nOiB0cnVlLFxuICAgICAgYWx3YXlzOiB0cnVlLFxuICAgIH0pIGFzIFBsdWdpbixcblxuICAgIG1rY2VydCgpLFxuXG4gICAgY2hlY2tlcih7XG4gICAgICB0eXBlc2NyaXB0OiB0cnVlLFxuICAgIH0pLFxuICBdO1xufVxuIiwiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHR5cGUge0NvbmZpZ0VudiwgVXNlckNvbmZpZ30gZnJvbSAndml0ZSc7XG5pbXBvcnQge2Jhc2VQbHVnaW5zfSBmcm9tICcuL3BsdWdpbnMvYmFzZSc7XG5pbXBvcnQge2J1aWxkUGx1Z2luc30gZnJvbSAnLi9wbHVnaW5zL2J1aWxkJztcbmltcG9ydCB7c2VydmVQbHVnaW5zfSBmcm9tICcuL3BsdWdpbnMvc2VydmUnO1xuaW1wb3J0IHtcbiAgY3dkLFxuICBkZWZpbmVCdWlsZENvbmZpZyxcbiAgZ2V0UGFnZVRvU2VydmUsXG4gIHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MsXG4gIHJlYWRKU09OLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgS2xvZWtWaXRlQ29uZmlnLFxuICBQYWNrYWdlR2FtZXNTZXR0aW5ncyxcbiAgVml0ZU9wdGlvbnMsXG59IGZyb20gJy4vdXRpbHMvaW50ZXJmYWNlcyc7XG5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVmaW5lS2xvZWtWaXRlQ29uZmlnKFxuICBlbnZpcm9ubWVudDogQ29uZmlnRW52LFxuKTogUHJvbWlzZTxVc2VyQ29uZmlnPiB7XG4gIGNvbnN0IHBrZyA9IHJlYWRKU09OKHBhdGgucmVzb2x2ZShjd2QsICdwYWNrYWdlLmpzb24nKSkgYXMgUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICB1bmtub3duXG4gID47XG4gIGNvbnN0IGtsb2VrQ29uZmlnID0gcGtnLnZpdGUgYXMgS2xvZWtWaXRlQ29uZmlnO1xuICBjb25zdCBicm93c2Vyc2xpc3QgPSBwa2cuYnJvd3NlcnNsaXN0IGFzIHN0cmluZyB8IHN0cmluZ1tdO1xuICBjb25zdCBvcHRpb25zOiBWaXRlT3B0aW9ucyA9IHtcbiAgICByb290OiBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJyksXG4gICAgZW52aXJvbm1lbnQsXG4gICAgc2V0dGluZ3M6IHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MocGtnLnNldHRpbmdzIGFzIFBhY2thZ2VHYW1lc1NldHRpbmdzKSxcbiAgICBjb25maWc6IHtcbiAgICAgIC4uLmtsb2VrQ29uZmlnLFxuICAgICAgYnVpbGQ6IHsuLi5rbG9la0NvbmZpZy5idWlsZCwgYnJvd3NlcnNsaXN0fSxcbiAgICAgIHNlcnZlOiB7XG4gICAgICAgIHBhcnRpYWxzOiBbXG4gICAgICAgICAgcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3BhcnRpYWxzJyksXG4gICAgICAgICAgcGF0aC5yZXNvbHZlKGN3ZCwgJ3NvdXJjZScsICdwYXJ0aWFscycpLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IGNvbmZpZzogVXNlckNvbmZpZyA9IHtcbiAgICBsb2dMZXZlbDogJ2luZm8nLFxuICAgIGJhc2U6IGtsb2VrQ29uZmlnLmJ1aWxkLmJhc2VQYXRoLFxuICAgIHJvb3Q6IG9wdGlvbnMucm9vdCxcbiAgICBlbnZEaXI6IHBhdGgucmVzb2x2ZShjd2QsICdlbnYnKSxcbiAgICBlbnZQcmVmaXg6IFsnS0xPRUtfJywgJ1ZJVEVfJ10sXG4gICAgcHVibGljRGlyOiAnc3RhdGljJyxcbiAgICBkZWZpbmU6IHt9LFxuXG4gICAgZXNidWlsZDoge1xuICAgICAgbGVnYWxDb21tZW50czogJ25vbmUnLFxuICAgIH0sXG5cbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczoge1xuICAgICAgICBsb2Rhc2g6ICdsb2Rhc2gtZXMnLFxuICAgICAgICAnQG1ldGEnOiBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgJ3N0YXRpYycsICdtZXRhJyksXG4gICAgICAgICdAZm9udHMnOiBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgJ3N0YXRpYycsICdmb250cycpLFxuICAgICAgfSxcbiAgICAgIGRlZHVwZTogWyAgICAgICAgICAgIFxuICAgICAgICAnQHN0dWRpb2tsb2VrL3RzLWNvcmUtbGliJyxcbiAgICAgICAgJ0BjYXBhY2l0b3IvYXBwJyxcbiAgICAgICAgJ0BjYXBhY2l0b3IvYXBwJyxcbiAgICAgICAgJ0BjYXBhY2l0b3IvY29yZScsXG4gICAgICAgICdAY2FwYWNpdG9yL2RldmljZScsXG4gICAgICAgICdAY2FwYWNpdG9yL25ldHdvcmsnLFxuICAgICAgICAnQGNhcGFjaXRvci9wcmVmZXJlbmNlcycsXG4gICAgICAgICdAY2FwYWNpdG9yL3NwbGFzaC1zY3JlZW4nLFxuICAgICAgICAnQGNhcGFjaXRvci9zdGF0dXMtYmFyJyxcbiAgICAgICAgJ2Jvd3NlcicsXG4gICAgICAgICdkYXRlLWZucy10eicsXG4gICAgICAgICdkYXRlLWZucycsXG4gICAgICAgICdlcnJvci1zdGFjay1wYXJzZXItZXMnLFxuICAgICAgICAnZmlyZWJhc2UnLFxuICAgICAgICAnZm9udGZhY2VvYnNlcnZlcicsXG4gICAgICAgICdnc2FwJyxcbiAgICAgICAgJ2hvd2xlcicsXG4gICAgICAgICdsb2Rhc2gtZGVjb3JhdG9ycy1lc20nLFxuICAgICAgICAnbG9kYXNoLWVzJyxcbiAgICAgICAgJ292ZXJtaW5kJyxcbiAgICAgICAgJ3BpeGktc3BpbmUnLFxuICAgICAgICAncGl4aS5qcycsXG4gICAgICAgICdwdWJzdWItanMnLFxuICAgICAgICAncmFuZG9tLWpzJyxcbiAgICAgICAgJ3Jlc3MnLFxuICAgICAgICAnc2x1Z2lmeScsXG4gICAgICAgICdzdXBlcmFnZW50JyxcbiAgICAgICAgJ3RzLWV2ZW50cycsXG4gICAgICAgICd0cy1taXhlcicsXG4gICAgICAgICd0c2xpYicsXG4gICAgICBdLFxuICAgIH0sXG5cbiAgICBjc3M6IHtcbiAgICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcbiAgICAgICAgc2Nzczoge1xuICAgICAgICAgIGNoYXJzZXQ6IGZhbHNlLFxuICAgICAgICAgIC8vIEFkZGl0aW9uYWxEYXRhOiBgQGNoYXJzZXQgXCJVVEYtOFwiYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHBsdWdpbnM6IFsuLi5iYXNlUGx1Z2lucyhvcHRpb25zKV0sXG4gIH07XG5cbiAgc3dpdGNoIChlbnZpcm9ubWVudC5jb21tYW5kKSB7XG4gICAgY2FzZSAnc2VydmUnOlxuICAgICAgY29uZmlnLnNlcnZlciA9IHtcbiAgICAgICAgaG9zdDogdHJ1ZSxcbiAgICAgICAgY29yczogb3B0aW9ucy5jb25maWcuZGV2LmNvcnMgPz8gdHJ1ZSxcbiAgICAgICAgaHR0cHM6IG9wdGlvbnMuY29uZmlnLmRldi5odHRwcyA/PyB0cnVlLFxuICAgICAgICBvcGVuOiBnZXRQYWdlVG9TZXJ2ZShvcHRpb25zLmNvbmZpZywgb3B0aW9ucy5zZXR0aW5ncy5nYW1lcyksXG4gICAgICB9O1xuICAgICAgY29uZmlnLnBsdWdpbnMgPSBbXG4gICAgICAgIC4uLihjb25maWcucGx1Z2lucyA/IGNvbmZpZy5wbHVnaW5zIDogW10pLFxuICAgICAgICAuLi5zZXJ2ZVBsdWdpbnMoKSxcbiAgICAgIF07XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnYnVpbGQnOlxuICAgICAgY29uZmlnLmJ1aWxkID0gZGVmaW5lQnVpbGRDb25maWcob3B0aW9ucyk7XG4gICAgICBjb25maWcucGx1Z2lucyA9IFtcbiAgICAgICAgLi4uKGNvbmZpZy5wbHVnaW5zID8gY29uZmlnLnBsdWdpbnMgOiBbXSksXG4gICAgICAgIC4uLmJ1aWxkUGx1Z2lucyhvcHRpb25zKSxcbiAgICAgIF07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufVxuIiwiaW1wb3J0IHt0eXBlIFR5cGVkRmxhZ3N9IGZyb20gJ21lb3cnO1xuaW1wb3J0IHtidWlsZCwgY3JlYXRlU2VydmVyfSBmcm9tICd2aXRlJztcbmltcG9ydCB7ZGVmaW5lS2xvZWtWaXRlQ29uZmlnfSBmcm9tICcuL2NvbmZpZyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBrbG9la0RldmVsb3BtZW50KFxuICBmbGFnczogVHlwZWRGbGFnczx7XG4gICAgbW9kZToge1xuICAgICAgdHlwZTogJ3N0cmluZyc7XG4gICAgICBzaG9ydEZsYWc6IHN0cmluZztcbiAgICAgIGRlZmF1bHQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgfT4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgZGVmaW5lS2xvZWtWaXRlQ29uZmlnKHtcbiAgICBjb21tYW5kOiAnc2VydmUnLFxuICAgIG1vZGU6ICdkZXZlbG9wbWVudCcsXG4gIH0pO1xuXG4gIC8vIERpZmZlcmVudCBtb2RlXG4gIGlmICh0eXBlb2YgZmxhZ3MubW9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcubW9kZSA9IGZsYWdzLm1vZGU7XG4gIH1cblxuICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBjcmVhdGVTZXJ2ZXIoe1xuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIC4uLmNvbmZpZyxcbiAgfSk7XG5cbiAgYXdhaXQgc2VydmVyLmxpc3RlbigpO1xuICBzZXJ2ZXIucHJpbnRVcmxzKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBrbG9la0J1aWxkKFxuICBmbGFnczogVHlwZWRGbGFnczx7XG4gICAgZW1wdHlPdXREaXI6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdDogdHJ1ZTtcbiAgICB9O1xuICAgIGJhc2U6IHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnO1xuICAgICAgc2hvcnRGbGFnOiBzdHJpbmc7XG4gICAgICBkZWZhdWx0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBtb2RlOiB7XG4gICAgICB0eXBlOiAnc3RyaW5nJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdD86IHN0cmluZztcbiAgICB9O1xuICB9Pixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb25maWcgPSBhd2FpdCBkZWZpbmVLbG9la1ZpdGVDb25maWcoe1xuICAgIGNvbW1hbmQ6ICdidWlsZCcsXG4gICAgbW9kZTogJ3Byb2R1Y3Rpb24nLFxuICB9KTtcblxuICAvLyBFbXB0eSBvdXQgdGhlIE91dHB1dCBkaXIgYmVmb3JlIGJ1aWxkaW5nP1xuICBpZiAoZmxhZ3MuZW1wdHlPdXREaXIgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbmZpZy5idWlsZCA9IHtcbiAgICAgIC4uLmNvbmZpZy5idWlsZCxcbiAgICAgIGVtcHR5T3V0RGlyOiBmbGFncy5lbXB0eU91dERpcixcbiAgICB9O1xuICB9XG5cbiAgLy8gRGlmZmVyZW50IGJhc2UgcGF0aFxuICBpZiAodHlwZW9mIGZsYWdzLmJhc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uZmlnLmJhc2UgPSBmbGFncy5iYXNlO1xuICB9XG5cbiAgLy8gRGlmZmVyZW50IG1vZGVcbiAgaWYgKHR5cGVvZiBmbGFncy5tb2RlID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZy5tb2RlID0gZmxhZ3MubW9kZTtcbiAgfVxuXG4gIGF3YWl0IGJ1aWxkKHtcbiAgICBjb25maWdGaWxlOiBmYWxzZSxcbiAgICAuLi5jb25maWcsXG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVVBLFNBQVMsaUJBQWlCLENBQ3hCLE9BQXFCLEVBQ3JCLElBQWtCLEVBQ2xCLFNBQWlDLEVBQUE7SUFFakMsTUFBTSxRQUFRLEdBQTRCLEVBQUUsQ0FBQzs7QUFHN0MsSUFBQSxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRTtRQUNoQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUc7WUFDbkIsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ3BCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUNsQixDQUFDO0FBQ0gsS0FBQTtBQUVELElBQUEsT0FBTyxRQUFtQyxDQUFDO0FBQzdDLENBQUM7QUFFSyxTQUFVLHlCQUF5QixDQUN2QyxlQUFxQyxFQUFBOztJQUdyQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUMzQixlQUFlLENBQUMsT0FBTyxDQUNFLENBQUM7QUFDNUIsSUFB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studiokloek/vite-config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Martijn Swart <opensource@studiokloek.nl> (https://studiokloek.nl)",
|
|
6
6
|
"description": "Base Vite config for usage in our projects.",
|
|
@@ -66,16 +66,16 @@
|
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"@sveltejs/vite-plugin-svelte": "^2.4.6",
|
|
69
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
70
|
-
"@typescript-eslint/parser": "^6.
|
|
69
|
+
"@typescript-eslint/eslint-plugin": "^6.8.0",
|
|
70
|
+
"@typescript-eslint/parser": "^6.8.0",
|
|
71
71
|
"@vheemstra/vite-plugin-imagemin": "^1.0.11",
|
|
72
72
|
"@vitejs/plugin-legacy": "^4.1.1",
|
|
73
|
-
"eslint": "^8.
|
|
73
|
+
"eslint": "^8.52.0",
|
|
74
74
|
"eslint-config-prettier": "^9.0.0",
|
|
75
75
|
"eslint-formatter-pretty": "^5.0.0",
|
|
76
76
|
"eslint-import-resolver-typescript": "^3.6.1",
|
|
77
77
|
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
78
|
-
"eslint-plugin-import": "^2.
|
|
78
|
+
"eslint-plugin-import": "^2.29.0",
|
|
79
79
|
"eslint-plugin-prettier": "^5.0.1",
|
|
80
80
|
"eslint-plugin-promise": "^6.1.1",
|
|
81
81
|
"eslint-plugin-svelte": "^2.34.0",
|
|
@@ -91,11 +91,11 @@
|
|
|
91
91
|
"prettier-package-json": "^2.8.0",
|
|
92
92
|
"prettier-plugin-svelte": "^3.0.3",
|
|
93
93
|
"rollup-plugin-visualizer": "^5.9.2",
|
|
94
|
-
"sass": "^1.69.
|
|
95
|
-
"stylelint": "^15.
|
|
94
|
+
"sass": "^1.69.4",
|
|
95
|
+
"stylelint": "^15.11.0",
|
|
96
96
|
"svelte": "^3.59.2",
|
|
97
|
-
"terser": "^5.
|
|
98
|
-
"vite": "v4.
|
|
97
|
+
"terser": "^5.22.0",
|
|
98
|
+
"vite": "v4.5.0",
|
|
99
99
|
"vite-plugin-banner": "^0.7.1",
|
|
100
100
|
"vite-plugin-checker": "^0.6.2",
|
|
101
101
|
"vite-plugin-full-reload": "^1.0.5",
|
|
@@ -109,23 +109,23 @@
|
|
|
109
109
|
"@microsoft/api-extractor": "7.38.0",
|
|
110
110
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
111
111
|
"@rollup/plugin-typescript": "^11.1.5",
|
|
112
|
-
"@sveltejs/kit": "^1.
|
|
113
|
-
"@types/ejs": "^3.1.
|
|
114
|
-
"@types/estree": "^1.0.
|
|
115
|
-
"@types/html-minifier-terser": "^7.0.
|
|
116
|
-
"@types/imagemin": "^8.0.
|
|
117
|
-
"@types/imagemin-mozjpeg": "^8.0.
|
|
118
|
-
"@types/imagemin-optipng": "^5.2.
|
|
119
|
-
"@types/node": "^20.8.
|
|
112
|
+
"@sveltejs/kit": "^1.26.0",
|
|
113
|
+
"@types/ejs": "^3.1.4",
|
|
114
|
+
"@types/estree": "^1.0.3",
|
|
115
|
+
"@types/html-minifier-terser": "^7.0.1",
|
|
116
|
+
"@types/imagemin": "^8.0.3",
|
|
117
|
+
"@types/imagemin-mozjpeg": "^8.0.3",
|
|
118
|
+
"@types/imagemin-optipng": "^5.2.3",
|
|
119
|
+
"@types/node": "^20.8.7",
|
|
120
120
|
"rimraf": "^5.0.5",
|
|
121
121
|
"rollup": "^3.29.4",
|
|
122
122
|
"typescript": "4.9.5",
|
|
123
123
|
"xo": "^0.56.0"
|
|
124
124
|
},
|
|
125
125
|
"resolutions": {
|
|
126
|
-
"@types/estree": "^1.0.
|
|
127
|
-
"@types/node": "^20.8.
|
|
128
|
-
"vite": "v4.
|
|
126
|
+
"@types/estree": "^1.0.3",
|
|
127
|
+
"@types/node": "^20.8.7",
|
|
128
|
+
"vite": "v4.5.0"
|
|
129
129
|
},
|
|
130
130
|
"volta": {
|
|
131
131
|
"node": "16.20.0",
|