@nlabs/lex 1.51.5 โ†’ 1.51.7

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.
@@ -203,12 +203,24 @@ export const dev = async (cmd, callback = ()=>({}))=>{
203
203
  webpackOptions.push('--port', port.toString());
204
204
  }
205
205
  try {
206
- const finalWebpackOptions = webpackPath === 'npx' ? [
207
- 'webpack',
208
- ...webpackOptions
209
- ] : webpackOptions;
206
+ let executablePath = webpackPath;
207
+ let finalWebpackOptions;
208
+ if (webpackPath === 'npx') {
209
+ finalWebpackOptions = [
210
+ 'webpack',
211
+ ...webpackOptions
212
+ ];
213
+ } else if (webpackPath.endsWith('.js')) {
214
+ executablePath = 'node';
215
+ finalWebpackOptions = [
216
+ webpackPath,
217
+ ...webpackOptions
218
+ ];
219
+ } else {
220
+ finalWebpackOptions = webpackOptions;
221
+ }
210
222
  spinner.start('Starting development server...');
211
- const childProcess = execa(webpackPath, finalWebpackOptions, {
223
+ const childProcess = execa(executablePath, finalWebpackOptions, {
212
224
  encoding: 'utf8',
213
225
  env: {
214
226
  LEX_QUIET: quiet,
@@ -279,4 +291,4 @@ export const dev = async (cmd, callback = ()=>({}))=>{
279
291
  }
280
292
  };
281
293
 
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldk9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGVBbmFseXplcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZz86IHN0cmluZztcbiAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuICByZWFkb25seSBvcGVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSB0cmFuc2xhdGlvbnM/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VQdWJsaWNJcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRGV2Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBQdWJsaWNJcENhY2hlIHtcbiAgaXA6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbmNvbnN0IGdldENhY2hlRGlyID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNhY2hlRGlyID0gam9pbihob21lZGlyKCksICcubGV4LWNhY2hlJyk7XG4gIGlmKCFleGlzdHNTeW5jKGNhY2hlRGlyKSkge1xuICAgIG1rZGlyU3luYyhjYWNoZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9XG4gIHJldHVybiBjYWNoZURpcjtcbn07XG5cbmNvbnN0IGdldENhY2hlUGF0aCA9ICgpOiBzdHJpbmcgPT4gam9pbihnZXRDYWNoZURpcigpLCAncHVibGljLWlwLmpzb24nKTtcblxuY29uc3QgcmVhZFB1YmxpY0lwQ2FjaGUgPSAoKTogUHVibGljSXBDYWNoZSB8IG51bGwgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjYWNoZURhdGEgPSByZWFkRmlsZVN5bmMoY2FjaGVQYXRoLCAndXRmOCcpO1xuICAgIGNvbnN0IGNhY2hlOiBQdWJsaWNJcENhY2hlID0gSlNPTi5wYXJzZShjYWNoZURhdGEpO1xuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgaWYoRGF0ZS5ub3coKSAtIGNhY2hlLnRpbWVzdGFtcCA+IG9uZVdlZWtNcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCB3cml0ZVB1YmxpY0lwQ2FjaGUgPSAoaXA6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSB7XG4gICAgaXAsXG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gIH07XG4gIHdyaXRlRmlsZVN5bmMoY2FjaGVQYXRoLCBKU09OLnN0cmluZ2lmeShjYWNoZSwgbnVsbCwgMikpO1xufTtcblxuY29uc3QgZmV0Y2hQdWJsaWNJcCA9IChmb3JjZVJlZnJlc2g6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCxcbiAgICBwdWJsaWM6IG51bGxcbiAgfTtcblxuICBmb3IoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnRlcmZhY2VzKSkge1xuICAgIGNvbnN0IG5ldHdvcmtJbnRlcmZhY2UgPSBpbnRlcmZhY2VzW25hbWVdO1xuICAgIGlmKCFuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IoY29uc3QgaWZhY2Ugb2YgbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgaWYoaWZhY2UuZmFtaWx5ID09PSAnSVB2NCcgJiYgIWlmYWNlLmludGVybmFsKSB7XG4gICAgICAgIGNvbnN0IGlwID0gaWZhY2UuYWRkcmVzcztcblxuICAgICAgICBpZihpcC5zdGFydHNXaXRoKCcxMC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxOTIuMTY4LicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE3Mi4nKSkge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnByaXZhdGUgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wdWJsaWMpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wdWJsaWMgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWRkcmVzc2VzO1xufTtcblxuY29uc3QgZGlzcGxheVNlcnZlclN0YXR1cyA9IChwb3J0OiBudW1iZXIgPSAzMDAwLCBxdWlldDogYm9vbGVhbiwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCfwn5qAIERldmVsb3BtZW50IFNlcnZlciBSdW5uaW5nJyl9XFxuXFxuJHt1cmxMaW5lc31cXG5gICtcbiAgICBgJHtjaGFsay55ZWxsb3coJ1ByZXNzIEN0cmwrQyB0byBzdG9wIHRoZSBzZXJ2ZXInKX1gLFxuICAgIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnLFxuICAgICAgYm9yZGVyQ29sb3I6ICdjeWFuJyxcbiAgICAgIGJvcmRlclN0eWxlOiAncm91bmQnLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgcGFkZGluZzogMVxuICAgIH1cbiAgKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhgXFxuJHtzdGF0dXNCb3h9XFxuYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGV2ID0gYXN5bmMgKGNtZDogRGV2T3B0aW9ucywgY2FsbGJhY2s6IERldkNhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtidW5kbGVBbmFseXplciwgY2xpTmFtZSA9ICdMZXgnLCBjb25maWcsIGZvcm1hdCA9ICdlc20nLCBvcGVuID0gZmFsc2UsIHBvcnQgPSAzMDAwLCBxdWlldCwgcmVtb3ZlLCB0cmFuc2xhdGlvbnMgPSBmYWxzZSwgdXNlUHVibGljSXAsIHZhcmlhYmxlc30gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBzdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdkZXZlbG9wbWVudCd9O1xuXG4gIGlmKHZhcmlhYmxlcykge1xuICAgIHRyeSB7XG4gICAgICB2YXJpYWJsZXNPYmogPSBKU09OLnBhcnNlKHZhcmlhYmxlcyk7XG4gICAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRW52aXJvbm1lbnQgdmFyaWFibGVzIG9wdGlvbiBpcyBub3QgYSB2YWxpZCBKU09OIG9iamVjdC5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MuZW52ID0gey4uLnByb2Nlc3MuZW52LCAuLi52YXJpYWJsZXNPYmp9O1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICBMZXhDb25maWcuY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCk7XG4gIH1cblxuICBpZihyZW1vdmUpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdDbGVhbmluZyBvdXRwdXQgZGlyZWN0b3J5Li4uJyk7XG5cbiAgICBhd2FpdCByZW1vdmVGaWxlcyhvdXRwdXRGdWxsUGF0aCB8fCAnJyk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBjbGVhbmVkIG91dHB1dCBkaXJlY3RvcnkhJyk7XG4gIH1cblxuICBpZih0cmFuc2xhdGlvbnMpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdQcm9jZXNzaW5nIHRyYW5zbGF0aW9ucy4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBMZXhDb25maWcuY29uZmlnLnNvdXJjZUZ1bGxQYXRoIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgICBjb25zdCBvdXRwdXRQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5vdXRwdXRGdWxsUGF0aCB8fCAnbGliJztcblxuICAgICAgYXdhaXQgcHJvY2Vzc1RyYW5zbGF0aW9ucyhzb3VyY2VQYXRoLCBvdXRwdXRQYXRoLCBxdWlldCk7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1RyYW5zbGF0aW9ucyBwcm9jZXNzZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIH0gY2F0Y2godHJhbnNsYXRpb25FcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnM6ICR7dHJhbnNsYXRpb25FcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHByb2Nlc3MgdHJhbnNsYXRpb25zLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBsZXQgd2VicGFja0NvbmZpZzogc3RyaW5nO1xuXG4gIGlmKGNvbmZpZykge1xuICAgIGNvbnN0IGlzUmVsYXRpdmVDb25maWc6IGJvb2xlYW4gPSBjb25maWcuc3Vic3RyKDAsIDIpID09PSAnLi8nO1xuICAgIHdlYnBhY2tDb25maWcgPSBpc1JlbGF0aXZlQ29uZmlnID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgY29uZmlnKSA6IGNvbmZpZztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7d2VicGFja0NvbmZpZzogcmVzb2x2ZWRDb25maWd9ID0gcmVzb2x2ZVdlYnBhY2tQYXRocyhjdXJyZW50RGlybmFtZSk7XG4gICAgd2VicGFja0NvbmZpZyA9IHJlc29sdmVkQ29uZmlnO1xuICB9XG5cbiAgY29uc3Qge3dlYnBhY2tQYXRofSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuXG4gIGNvbnN0IHdlYnBhY2tPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAnLS1jb2xvcicsXG4gICAgJy0td2F0Y2gnLFxuICAgICctLWNvbmZpZycsIHdlYnBhY2tDb25maWdcbiAgXTtcblxuICBpZihidW5kbGVBbmFseXplcikge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tYnVuZGxlQW5hbHl6ZXInKTtcbiAgfVxuXG4gIGlmKHBvcnQgIT09IDMwMDApIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLXBvcnQnLCBwb3J0LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaW5hbFdlYnBhY2tPcHRpb25zID0gd2VicGFja1BhdGggPT09ICducHgnID8gWyd3ZWJwYWNrJywgLi4ud2VicGFja09wdGlvbnNdIDogd2VicGFja09wdGlvbnM7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdTdGFydGluZyBkZXZlbG9wbWVudCBzZXJ2ZXIuLi4nKTtcblxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKHdlYnBhY2tQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52OiB7XG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW5cbiAgICAgIH0sXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgbGV0IHNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgc3RhdHVzU2hvd24gPSBmYWxzZTtcbiAgICBjb25zdCBzaG93U3RhdHVzT25jZSA9IChwb3J0VG9TaG93OiBudW1iZXIpID0+IHtcbiAgICAgIGlmKHN0YXR1c1Nob3duKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0YXR1c1Nob3duID0gdHJ1ZTtcbiAgICAgIGlmKHVzZVB1YmxpY0lwKSB7XG4gICAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhwb3J0VG9TaG93LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMocG9ydFRvU2hvdywgcXVpZXQpO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IGRldGVjdGVkUG9ydCA9IDMwMDA7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICfwn5qAJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQgJiYgKG91dHB1dC5pbmNsdWRlcygnTG9jYWw6JykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrIGNvbXBpbGVkJykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrLXBsdWdpbi1zZXJ2ZScpIHx8IG91dHB1dC5pbmNsdWRlcygnaHR0cDovL2xvY2FsaG9zdCcpIHx8IG91dHB1dC5pbmNsdWRlcygnbGlzdGVuaW5nIG9uIHBvcnQnKSkpIHtcbiAgICAgICAgc2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ/CfmoAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICBjb25zdCBwb3J0TWF0Y2ggPSBvdXRwdXQubWF0Y2goL0xvY2FsOlxccypodHRwOlxcL1xcL1teOl0rOihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9odHRwOlxcL1xcL2xvY2FsaG9zdDooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvcG9ydDpcXHMqKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2xpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9XZWJwYWNrUGx1Z2luU2VydmUgbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLyk7XG4gICAgICAgIGlmKHBvcnRNYXRjaCkge1xuICAgICAgICAgIGRldGVjdGVkUG9ydCA9IHBhcnNlSW50KHBvcnRNYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZighc2VydmVyU3RhcnRlZCkge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuXG4gICAgYXdhaXQgY2hpbGRQcm9jZXNzO1xuXG4gICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG4gICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcnVubmluZyBXZWJwYWNrLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07Il0sIm5hbWVzIjpbImJveGVuIiwiY2hhbGsiLCJleGVjYSIsImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwibWtkaXJTeW5jIiwiaHR0cHMiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImhvbWVkaXIiLCJkaXJuYW1lIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiam9pbiIsIkxleENvbmZpZyIsImNyZWF0ZVNwaW5uZXIiLCJoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MiLCJyZW1vdmVGaWxlcyIsInJlc29sdmVXZWJwYWNrUGF0aHMiLCJsb2ciLCJwcm9jZXNzVHJhbnNsYXRpb25zIiwiY3VycmVudEZpbGVuYW1lIiwiY3VycmVudERpcm5hbWUiLCJldmFsIiwicHJvY2VzcyIsImN3ZCIsImdldENhY2hlRGlyIiwiY2FjaGVEaXIiLCJyZWN1cnNpdmUiLCJnZXRDYWNoZVBhdGgiLCJyZWFkUHVibGljSXBDYWNoZSIsImNhY2hlUGF0aCIsImNhY2hlRGF0YSIsImNhY2hlIiwiSlNPTiIsInBhcnNlIiwib25lV2Vla01zIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsIndyaXRlUHVibGljSXBDYWNoZSIsImlwIiwic3RyaW5naWZ5IiwiZmV0Y2hQdWJsaWNJcCIsImZvcmNlUmVmcmVzaCIsIlByb21pc2UiLCJjYWNoZWQiLCJnZXQiLCJyZXMiLCJkYXRhIiwib24iLCJjaHVuayIsInRyaW0iLCJ1bmRlZmluZWQiLCJnZXROZXR3b3JrQWRkcmVzc2VzIiwiaW50ZXJmYWNlcyIsImFkZHJlc3NlcyIsImxvY2FsIiwicHJpdmF0ZSIsInB1YmxpYyIsIm5hbWUiLCJPYmplY3QiLCJrZXlzIiwibmV0d29ya0ludGVyZmFjZSIsImlmYWNlIiwiZmFtaWx5IiwiaW50ZXJuYWwiLCJhZGRyZXNzIiwic3RhcnRzV2l0aCIsImRpc3BsYXlTZXJ2ZXJTdGF0dXMiLCJwb3J0IiwicXVpZXQiLCJwdWJsaWNJcCIsImxvY2FsVXJsIiwicHJpdmF0ZVVybCIsInB1YmxpY1VybCIsInVybExpbmVzIiwiZ3JlZW4iLCJ1bmRlcmxpbmUiLCJzdGF0dXNCb3giLCJjeWFuIiwiYm9sZCIsInllbGxvdyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyU3R5bGUiLCJtYXJnaW4iLCJwYWRkaW5nIiwiY29uc29sZSIsImRldiIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlQW5hbHl6ZXIiLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3BlbiIsInJlbW92ZSIsInRyYW5zbGF0aW9ucyIsInVzZVB1YmxpY0lwIiwidmFyaWFibGVzIiwic3Bpbm5lciIsInBhcnNlQ29uZmlnIiwib3V0cHV0RnVsbFBhdGgiLCJ1c2VUeXBlc2NyaXB0IiwidmFyaWFibGVzT2JqIiwiTk9ERV9FTlYiLCJfZXJyb3IiLCJlbnYiLCJjaGVja1R5cGVzY3JpcHRDb25maWciLCJzdGFydCIsInN1Y2NlZWQiLCJzb3VyY2VQYXRoIiwic291cmNlRnVsbFBhdGgiLCJvdXRwdXRQYXRoIiwidHJhbnNsYXRpb25FcnJvciIsIm1lc3NhZ2UiLCJmYWlsIiwid2VicGFja0NvbmZpZyIsImlzUmVsYXRpdmVDb25maWciLCJzdWJzdHIiLCJyZXNvbHZlZENvbmZpZyIsIndlYnBhY2tQYXRoIiwid2VicGFja09wdGlvbnMiLCJwdXNoIiwidG9TdHJpbmciLCJmaW5hbFdlYnBhY2tPcHRpb25zIiwiY2hpbGRQcm9jZXNzIiwiZW5jb2RpbmciLCJMRVhfUVVJRVQiLCJXRUJQQUNLX0RFVl9PUEVOIiwic3RkaW8iLCJzZXJ2ZXJTdGFydGVkIiwic3RhdHVzU2hvd24iLCJzaG93U3RhdHVzT25jZSIsInBvcnRUb1Nob3ciLCJ0aGVuIiwiZGV0ZWN0ZWRQb3J0Iiwic3Rkb3V0Iiwib3V0cHV0IiwiaW5jbHVkZXMiLCJwb3J0TWF0Y2giLCJtYXRjaCIsInBhcnNlSW50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
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldk9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGVBbmFseXplcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZz86IHN0cmluZztcbiAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuICByZWFkb25seSBvcGVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSB0cmFuc2xhdGlvbnM/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VQdWJsaWNJcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRGV2Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBQdWJsaWNJcENhY2hlIHtcbiAgaXA6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbmNvbnN0IGdldENhY2hlRGlyID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNhY2hlRGlyID0gam9pbihob21lZGlyKCksICcubGV4LWNhY2hlJyk7XG4gIGlmKCFleGlzdHNTeW5jKGNhY2hlRGlyKSkge1xuICAgIG1rZGlyU3luYyhjYWNoZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9XG4gIHJldHVybiBjYWNoZURpcjtcbn07XG5cbmNvbnN0IGdldENhY2hlUGF0aCA9ICgpOiBzdHJpbmcgPT4gam9pbihnZXRDYWNoZURpcigpLCAncHVibGljLWlwLmpzb24nKTtcblxuY29uc3QgcmVhZFB1YmxpY0lwQ2FjaGUgPSAoKTogUHVibGljSXBDYWNoZSB8IG51bGwgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjYWNoZURhdGEgPSByZWFkRmlsZVN5bmMoY2FjaGVQYXRoLCAndXRmOCcpO1xuICAgIGNvbnN0IGNhY2hlOiBQdWJsaWNJcENhY2hlID0gSlNPTi5wYXJzZShjYWNoZURhdGEpO1xuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgaWYoRGF0ZS5ub3coKSAtIGNhY2hlLnRpbWVzdGFtcCA+IG9uZVdlZWtNcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCB3cml0ZVB1YmxpY0lwQ2FjaGUgPSAoaXA6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSB7XG4gICAgaXAsXG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gIH07XG4gIHdyaXRlRmlsZVN5bmMoY2FjaGVQYXRoLCBKU09OLnN0cmluZ2lmeShjYWNoZSwgbnVsbCwgMikpO1xufTtcblxuY29uc3QgZmV0Y2hQdWJsaWNJcCA9IChmb3JjZVJlZnJlc2g6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCxcbiAgICBwdWJsaWM6IG51bGxcbiAgfTtcblxuICBmb3IoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnRlcmZhY2VzKSkge1xuICAgIGNvbnN0IG5ldHdvcmtJbnRlcmZhY2UgPSBpbnRlcmZhY2VzW25hbWVdO1xuICAgIGlmKCFuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IoY29uc3QgaWZhY2Ugb2YgbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgaWYoaWZhY2UuZmFtaWx5ID09PSAnSVB2NCcgJiYgIWlmYWNlLmludGVybmFsKSB7XG4gICAgICAgIGNvbnN0IGlwID0gaWZhY2UuYWRkcmVzcztcblxuICAgICAgICBpZihpcC5zdGFydHNXaXRoKCcxMC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxOTIuMTY4LicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE3Mi4nKSkge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnByaXZhdGUgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wdWJsaWMpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wdWJsaWMgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWRkcmVzc2VzO1xufTtcblxuY29uc3QgZGlzcGxheVNlcnZlclN0YXR1cyA9IChwb3J0OiBudW1iZXIgPSAzMDAwLCBxdWlldDogYm9vbGVhbiwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCfwn5qAIERldmVsb3BtZW50IFNlcnZlciBSdW5uaW5nJyl9XFxuXFxuJHt1cmxMaW5lc31cXG5gICtcbiAgICBgJHtjaGFsay55ZWxsb3coJ1ByZXNzIEN0cmwrQyB0byBzdG9wIHRoZSBzZXJ2ZXInKX1gLFxuICAgIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnLFxuICAgICAgYm9yZGVyQ29sb3I6ICdjeWFuJyxcbiAgICAgIGJvcmRlclN0eWxlOiAncm91bmQnLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgcGFkZGluZzogMVxuICAgIH1cbiAgKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhgXFxuJHtzdGF0dXNCb3h9XFxuYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGV2ID0gYXN5bmMgKGNtZDogRGV2T3B0aW9ucywgY2FsbGJhY2s6IERldkNhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtidW5kbGVBbmFseXplciwgY2xpTmFtZSA9ICdMZXgnLCBjb25maWcsIGZvcm1hdCA9ICdlc20nLCBvcGVuID0gZmFsc2UsIHBvcnQgPSAzMDAwLCBxdWlldCwgcmVtb3ZlLCB0cmFuc2xhdGlvbnMgPSBmYWxzZSwgdXNlUHVibGljSXAsIHZhcmlhYmxlc30gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBzdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdkZXZlbG9wbWVudCd9O1xuXG4gIGlmKHZhcmlhYmxlcykge1xuICAgIHRyeSB7XG4gICAgICB2YXJpYWJsZXNPYmogPSBKU09OLnBhcnNlKHZhcmlhYmxlcyk7XG4gICAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRW52aXJvbm1lbnQgdmFyaWFibGVzIG9wdGlvbiBpcyBub3QgYSB2YWxpZCBKU09OIG9iamVjdC5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MuZW52ID0gey4uLnByb2Nlc3MuZW52LCAuLi52YXJpYWJsZXNPYmp9O1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICBMZXhDb25maWcuY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCk7XG4gIH1cblxuICBpZihyZW1vdmUpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdDbGVhbmluZyBvdXRwdXQgZGlyZWN0b3J5Li4uJyk7XG5cbiAgICBhd2FpdCByZW1vdmVGaWxlcyhvdXRwdXRGdWxsUGF0aCB8fCAnJyk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBjbGVhbmVkIG91dHB1dCBkaXJlY3RvcnkhJyk7XG4gIH1cblxuICBpZih0cmFuc2xhdGlvbnMpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdQcm9jZXNzaW5nIHRyYW5zbGF0aW9ucy4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBMZXhDb25maWcuY29uZmlnLnNvdXJjZUZ1bGxQYXRoIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgICBjb25zdCBvdXRwdXRQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5vdXRwdXRGdWxsUGF0aCB8fCAnbGliJztcblxuICAgICAgYXdhaXQgcHJvY2Vzc1RyYW5zbGF0aW9ucyhzb3VyY2VQYXRoLCBvdXRwdXRQYXRoLCBxdWlldCk7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1RyYW5zbGF0aW9ucyBwcm9jZXNzZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIH0gY2F0Y2godHJhbnNsYXRpb25FcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnM6ICR7dHJhbnNsYXRpb25FcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHByb2Nlc3MgdHJhbnNsYXRpb25zLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBsZXQgd2VicGFja0NvbmZpZzogc3RyaW5nO1xuXG4gIGlmKGNvbmZpZykge1xuICAgIGNvbnN0IGlzUmVsYXRpdmVDb25maWc6IGJvb2xlYW4gPSBjb25maWcuc3Vic3RyKDAsIDIpID09PSAnLi8nO1xuICAgIHdlYnBhY2tDb25maWcgPSBpc1JlbGF0aXZlQ29uZmlnID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgY29uZmlnKSA6IGNvbmZpZztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7d2VicGFja0NvbmZpZzogcmVzb2x2ZWRDb25maWd9ID0gcmVzb2x2ZVdlYnBhY2tQYXRocyhjdXJyZW50RGlybmFtZSk7XG4gICAgd2VicGFja0NvbmZpZyA9IHJlc29sdmVkQ29uZmlnO1xuICB9XG5cbiAgY29uc3Qge3dlYnBhY2tQYXRofSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuXG4gIGNvbnN0IHdlYnBhY2tPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAnLS1jb2xvcicsXG4gICAgJy0td2F0Y2gnLFxuICAgICctLWNvbmZpZycsIHdlYnBhY2tDb25maWdcbiAgXTtcblxuICBpZihidW5kbGVBbmFseXplcikge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tYnVuZGxlQW5hbHl6ZXInKTtcbiAgfVxuXG4gIGlmKHBvcnQgIT09IDMwMDApIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLXBvcnQnLCBwb3J0LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsZXQgZXhlY3V0YWJsZVBhdGggPSB3ZWJwYWNrUGF0aDtcbiAgICBsZXQgZmluYWxXZWJwYWNrT3B0aW9uczogc3RyaW5nW107XG5cbiAgICBpZih3ZWJwYWNrUGF0aCA9PT0gJ25weCcpIHtcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSBbJ3dlYnBhY2snLCAuLi53ZWJwYWNrT3B0aW9uc107XG4gICAgfSBlbHNlIGlmKHdlYnBhY2tQYXRoLmVuZHNXaXRoKCcuanMnKSkge1xuICAgICAgZXhlY3V0YWJsZVBhdGggPSAnbm9kZSc7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gW3dlYnBhY2tQYXRoLCAuLi53ZWJwYWNrT3B0aW9uc107XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSB3ZWJwYWNrT3B0aW9ucztcbiAgICB9XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdTdGFydGluZyBkZXZlbG9wbWVudCBzZXJ2ZXIuLi4nKTtcblxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKGV4ZWN1dGFibGVQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52OiB7XG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW5cbiAgICAgIH0sXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgbGV0IHNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgc3RhdHVzU2hvd24gPSBmYWxzZTtcbiAgICBjb25zdCBzaG93U3RhdHVzT25jZSA9IChwb3J0VG9TaG93OiBudW1iZXIpID0+IHtcbiAgICAgIGlmKHN0YXR1c1Nob3duKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0YXR1c1Nob3duID0gdHJ1ZTtcbiAgICAgIGlmKHVzZVB1YmxpY0lwKSB7XG4gICAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhwb3J0VG9TaG93LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMocG9ydFRvU2hvdywgcXVpZXQpO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IGRldGVjdGVkUG9ydCA9IDMwMDA7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICfwn5qAJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQgJiYgKG91dHB1dC5pbmNsdWRlcygnTG9jYWw6JykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrIGNvbXBpbGVkJykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrLXBsdWdpbi1zZXJ2ZScpIHx8IG91dHB1dC5pbmNsdWRlcygnaHR0cDovL2xvY2FsaG9zdCcpIHx8IG91dHB1dC5pbmNsdWRlcygnbGlzdGVuaW5nIG9uIHBvcnQnKSkpIHtcbiAgICAgICAgc2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ/CfmoAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICBjb25zdCBwb3J0TWF0Y2ggPSBvdXRwdXQubWF0Y2goL0xvY2FsOlxccypodHRwOlxcL1xcL1teOl0rOihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9odHRwOlxcL1xcL2xvY2FsaG9zdDooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvcG9ydDpcXHMqKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2xpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9XZWJwYWNrUGx1Z2luU2VydmUgbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLyk7XG4gICAgICAgIGlmKHBvcnRNYXRjaCkge1xuICAgICAgICAgIGRldGVjdGVkUG9ydCA9IHBhcnNlSW50KHBvcnRNYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZighc2VydmVyU3RhcnRlZCkge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuXG4gICAgYXdhaXQgY2hpbGRQcm9jZXNzO1xuXG4gICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG4gICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcnVubmluZyBXZWJwYWNrLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07Il0sIm5hbWVzIjpbImJveGVuIiwiY2hhbGsiLCJleGVjYSIsImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwibWtkaXJTeW5jIiwiaHR0cHMiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImhvbWVkaXIiLCJkaXJuYW1lIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiam9pbiIsIkxleENvbmZpZyIsImNyZWF0ZVNwaW5uZXIiLCJoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MiLCJyZW1vdmVGaWxlcyIsInJlc29sdmVXZWJwYWNrUGF0aHMiLCJsb2ciLCJwcm9jZXNzVHJhbnNsYXRpb25zIiwiY3VycmVudEZpbGVuYW1lIiwiY3VycmVudERpcm5hbWUiLCJldmFsIiwicHJvY2VzcyIsImN3ZCIsImdldENhY2hlRGlyIiwiY2FjaGVEaXIiLCJyZWN1cnNpdmUiLCJnZXRDYWNoZVBhdGgiLCJyZWFkUHVibGljSXBDYWNoZSIsImNhY2hlUGF0aCIsImNhY2hlRGF0YSIsImNhY2hlIiwiSlNPTiIsInBhcnNlIiwib25lV2Vla01zIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsIndyaXRlUHVibGljSXBDYWNoZSIsImlwIiwic3RyaW5naWZ5IiwiZmV0Y2hQdWJsaWNJcCIsImZvcmNlUmVmcmVzaCIsIlByb21pc2UiLCJjYWNoZWQiLCJnZXQiLCJyZXMiLCJkYXRhIiwib24iLCJjaHVuayIsInRyaW0iLCJ1bmRlZmluZWQiLCJnZXROZXR3b3JrQWRkcmVzc2VzIiwiaW50ZXJmYWNlcyIsImFkZHJlc3NlcyIsImxvY2FsIiwicHJpdmF0ZSIsInB1YmxpYyIsIm5hbWUiLCJPYmplY3QiLCJrZXlzIiwibmV0d29ya0ludGVyZmFjZSIsImlmYWNlIiwiZmFtaWx5IiwiaW50ZXJuYWwiLCJhZGRyZXNzIiwic3RhcnRzV2l0aCIsImRpc3BsYXlTZXJ2ZXJTdGF0dXMiLCJwb3J0IiwicXVpZXQiLCJwdWJsaWNJcCIsImxvY2FsVXJsIiwicHJpdmF0ZVVybCIsInB1YmxpY1VybCIsInVybExpbmVzIiwiZ3JlZW4iLCJ1bmRlcmxpbmUiLCJzdGF0dXNCb3giLCJjeWFuIiwiYm9sZCIsInllbGxvdyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyU3R5bGUiLCJtYXJnaW4iLCJwYWRkaW5nIiwiY29uc29sZSIsImRldiIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlQW5hbHl6ZXIiLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3BlbiIsInJlbW92ZSIsInRyYW5zbGF0aW9ucyIsInVzZVB1YmxpY0lwIiwidmFyaWFibGVzIiwic3Bpbm5lciIsInBhcnNlQ29uZmlnIiwib3V0cHV0RnVsbFBhdGgiLCJ1c2VUeXBlc2NyaXB0IiwidmFyaWFibGVzT2JqIiwiTk9ERV9FTlYiLCJfZXJyb3IiLCJlbnYiLCJjaGVja1R5cGVzY3JpcHRDb25maWciLCJzdGFydCIsInN1Y2NlZWQiLCJzb3VyY2VQYXRoIiwic291cmNlRnVsbFBhdGgiLCJvdXRwdXRQYXRoIiwidHJhbnNsYXRpb25FcnJvciIsIm1lc3NhZ2UiLCJmYWlsIiwid2VicGFja0NvbmZpZyIsImlzUmVsYXRpdmVDb25maWciLCJzdWJzdHIiLCJyZXNvbHZlZENvbmZpZyIsIndlYnBhY2tQYXRoIiwid2VicGFja09wdGlvbnMiLCJwdXNoIiwidG9TdHJpbmciLCJleGVjdXRhYmxlUGF0aCIsImZpbmFsV2VicGFja09wdGlvbnMiLCJlbmRzV2l0aCIsImNoaWxkUHJvY2VzcyIsImVuY29kaW5nIiwiTEVYX1FVSUVUIiwiV0VCUEFDS19ERVZfT1BFTiIsInN0ZGlvIiwic2VydmVyU3RhcnRlZCIsInN0YXR1c1Nob3duIiwic2hvd1N0YXR1c09uY2UiLCJwb3J0VG9TaG93IiwidGhlbiIsImRldGVjdGVkUG9ydCIsInN0ZG91dCIsIm91dHB1dCIsImluY2x1ZGVzIiwicG9ydE1hdGNoIiwibWF0Y2giLCJwYXJzZUludCIsInN0ZGVyciIsInNldFRpbWVvdXQiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBT0EsV0FBVyxRQUFRO0FBQzFCLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxLQUFLLFFBQU8sUUFBUTtBQUM1QixTQUFRQyxVQUFVLEVBQUVDLFlBQVksRUFBRUMsYUFBYSxFQUFFQyxTQUFTLFFBQU8sS0FBSztBQUN0RSxPQUFPQyxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsaUJBQWlCLEVBQUVDLE9BQU8sUUFBTyxLQUFLO0FBQzlDLFNBQVFDLE9BQU8sRUFBRUMsV0FBV0MsV0FBVyxFQUFFQyxJQUFJLFFBQU8sT0FBTztBQUUzRCxTQUFRQyxTQUFTLFFBQU8scUJBQXFCO0FBQzdDLFNBQVFDLGFBQWEsRUFBRUMscUJBQXFCLEVBQUVDLFdBQVcsUUFBTyxxQkFBcUI7QUFDckYsU0FBUUMsbUJBQW1CLFFBQU8sc0JBQXNCO0FBQ3hELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFDdkMsU0FBUUMsbUJBQW1CLFFBQU8sOEJBQThCO0FBRWhFLElBQUlDO0FBQ0osSUFBSUM7QUFFSixJQUFJO0lBQ0YsbUNBQW1DO0lBQ25DRCxrQkFBa0JFLEtBQUs7SUFDdkJELGlCQUFpQlosUUFBUVc7QUFDM0IsRUFBRSxPQUFLO0lBQ0xBLGtCQUFrQkcs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
package/lib/utils/file.js CHANGED
@@ -201,7 +201,21 @@ export const resolveWebpackPaths = (currentDirname)=>{
201
201
  }
202
202
  }
203
203
  if (!webpackPath) {
204
- webpackPath = 'npx';
204
+ try {
205
+ const lexPackagePath = getLexPackageJsonPath();
206
+ const lexPackageDir = dirname(lexPackagePath);
207
+ const lexWebpackCli = pathResolve(lexPackageDir, 'node_modules/webpack-cli/bin/cli.js');
208
+ const lexWebpackBin = pathResolve(lexPackageDir, 'node_modules/.bin/webpack');
209
+ if (existsSync(lexWebpackCli)) {
210
+ webpackPath = lexWebpackCli;
211
+ } else if (existsSync(lexWebpackBin)) {
212
+ webpackPath = lexWebpackBin;
213
+ } else {
214
+ webpackPath = 'npx';
215
+ }
216
+ } catch {
217
+ webpackPath = 'npx';
218
+ }
205
219
  }
206
220
  const possibleWebpackConfigPaths = [
207
221
  pathResolve(process.cwd(), 'webpack.config.js'),
@@ -221,7 +235,14 @@ export const resolveWebpackPaths = (currentDirname)=>{
221
235
  }
222
236
  }
223
237
  if (!webpackConfig) {
224
- webpackConfig = pathResolve(currentDirname, '../../webpack.config.js');
238
+ const lexPackagePath = getLexPackageJsonPath();
239
+ const lexPackageDir = dirname(lexPackagePath);
240
+ const lexWebpackConfig = pathResolve(lexPackageDir, 'webpack.config.js');
241
+ if (existsSync(lexWebpackConfig)) {
242
+ webpackConfig = lexWebpackConfig;
243
+ } else {
244
+ webpackConfig = pathResolve(currentDirname, '../../webpack.config.js');
245
+ }
225
246
  }
226
247
  return {
227
248
  webpackConfig,
@@ -229,4 +250,4 @@ export const resolveWebpackPaths = (currentDirname)=>{
229
250
  };
230
251
  };
231
252
 
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZmluZEZpbGVVcCBmcm9tICdmaW5kLWZpbGUtdXAnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCByZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmUsIGRpcm5hbWV9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcblxuZXhwb3J0IGNvbnN0IGdldERpck5hbWUgPSAoKTogc3RyaW5nID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXZhbCgnbmV3IFVSTChcIi5cIiwgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZScpO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZVBhdGggPSAocmVsYXRpdmVQYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBldmFsKCdyZXF1aXJlKFwidXJsXCIpLmZpbGVVUkxUb1BhdGgobmV3IFVSTChyZWxhdGl2ZVBhdGgsIGltcG9ydC5tZXRhLnVybCkpJyk7XG4gIH0gY2F0Y2h7XG4gICAgaWYocmVsYXRpdmVQYXRoID09PSAnLi4vLi4vLi4vcGFja2FnZS5qc29uJykge1xuICAgICAgcmV0dXJuIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlLmpzb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIHJlbGF0aXZlUGF0aCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMZXhQYWNrYWdlSnNvblBhdGggPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgTEVYX1BBQ0tBR0VfTkFNRSA9ICdAbmxhYnMvbGV4JztcblxuICBjb25zdCBsZXhJbk5vZGVNb2R1bGVzID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4L3BhY2thZ2UuanNvbicpO1xuXG4gIGlmKGV4aXN0c1N5bmMobGV4SW5Ob2RlTW9kdWxlcykpIHtcbiAgICByZXR1cm4gbGV4SW5Ob2RlTW9kdWxlcztcbiAgfVxuXG4gIGxldCBzdGFydERpcjogc3RyaW5nO1xuXG4gIGlmKHByb2Nlc3MuZW52LkxFWF9ST09UKSB7XG4gICAgc3RhcnREaXIgPSBwcm9jZXNzLmVudi5MRVhfUk9PVDtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgc3RhcnREaXIgPSBldmFsKCduZXcgVVJMKFwiLlwiLCBpbXBvcnQubWV0YS51cmwpLnBhdGhuYW1lJyk7XG4gICAgfSBjYXRjaHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0YXJ0RGlyID0gZXZhbCgnX19maWxlbmFtZSA/IHJlcXVpcmUoXCJwYXRoXCIpLmRpcm5hbWUoX19maWxlbmFtZSkgOiBudWxsJyk7XG4gICAgICAgIGlmKCFzdGFydERpcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignX19maWxlbmFtZSBub3QgYXZhaWxhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2h7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYocHJvY2Vzcy5hcmd2WzFdICYmICFwcm9jZXNzLmFyZ3ZbMV0uaW5jbHVkZXMoJ25vZGUnKSkge1xuICAgICAgICAgICAgc3RhcnREaXIgPSBkaXJuYW1lKHByb2Nlc3MuYXJndlsxXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5hcmd2WzFdIG5vdCBzdWl0YWJsZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaHtcbiAgICAgICAgICBzdGFydERpciA9IHByb2Nlc3MuY3dkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgZGlyID0gc3RhcnREaXI7XG4gIGZvcihsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICBjb25zdCBwa2dQYXRoID0gcGF0aFJlc29sdmUoZGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwa2dQYXRoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0ZjgnKSk7XG4gICAgICAgIGlmKHBrZy5uYW1lID09PSBMRVhfUEFDS0FHRV9OQU1FKSB7XG4gICAgICAgICAgcmV0dXJuIHBrZ1BhdGg7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2h7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKTtcbiAgICBpZihwYXJlbnQgPT09IGRpcikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRpciA9IHBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVsYXRpdmVGaWxlUGF0aCA9IChmaWxlbmFtZTogc3RyaW5nLCBkaXJQYXRoOiBzdHJpbmcgPSAnLi8nLCBiYWNrVXA6IG51bWJlciA9IDApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBuZXN0RGVwdGg6IG51bWJlciA9IDEwO1xuXG4gIGlmKGJhY2tVcCkge1xuICAgIGNvbnN0IGZpbGVQYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMoZmlsZW5hbWUsIGRpclBhdGgsIG5lc3REZXB0aCk7XG4gICAgY29uc3QgcHJldmlvdXNQYXRoOiBzdHJpbmcgPSBBcnJheShiYWNrVXApLmZpbGwobnVsbCkubWFwKCgpID0+ICcuLi8nKS5qb2luKCcnKTtcbiAgICByZXR1cm4gcGF0aFJlc29sdmUoZmlsZVBhdGgsIHByZXZpb3VzUGF0aCk7XG4gIH1cblxuICByZXR1cm4gZmluZEZpbGVVcC5zeW5jKGZpbGVuYW1lLCBkaXJQYXRoLCBuZXN0RGVwdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbGF0aXZlTm9kZVBhdGggPSAoZmlsZW5hbWU6IHN0cmluZywgZGlyUGF0aDogc3RyaW5nID0gJy4vJywgYmFja1VwOiBudW1iZXIgPSAwKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbmVzdERlcHRoOiBudW1iZXIgPSAxMDtcbiAgY29uc3QgbW9kdWxlUGF0aCA9IGBub2RlX21vZHVsZXMvJHtmaWxlbmFtZX1gO1xuXG4gIGlmKGRpclBhdGggIT09ICcuLycpIHtcbiAgICBjb25zdCBsZXhNb2R1bGVQYXRoID0gcGF0aFJlc29sdmUoZGlyUGF0aCwgbW9kdWxlUGF0aCk7XG4gICAgaWYoZXhpc3RzU3luYyhsZXhNb2R1bGVQYXRoKSkge1xuICAgICAgcmV0dXJuIGxleE1vZHVsZVBhdGg7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJvamVjdFBhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBtb2R1bGVQYXRoKTtcbiAgaWYoZXhpc3RzU3luYyhwcm9qZWN0UGF0aCkpIHtcbiAgICByZXR1cm4gcHJvamVjdFBhdGg7XG4gIH1cblxuICBpZihiYWNrVXApIHtcbiAgICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsIGRpclBhdGgsIG5lc3REZXB0aCk7XG4gICAgY29uc3QgcHJldmlvdXNQYXRoOiBzdHJpbmcgPSBBcnJheShuZXN0RGVwdGgpLmZpbGwobnVsbCkubWFwKCgpID0+ICcuLi8nKS5qb2luKCcnKTtcbiAgICByZXR1cm4gcGF0aFJlc29sdmUoZmlsZVBhdGgsIHByZXZpb3VzUGF0aCk7XG4gIH1cblxuICByZXR1cm4gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsIGRpclBhdGgsIG5lc3REZXB0aCkgfHwgYC9ub2RlX21vZHVsZXMvJHtmaWxlbmFtZX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5vZGVQYXRoID0gKG1vZHVsZU5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG4gIGNvbnN0IG1vZHVsZVBhdGg6IHN0cmluZyA9IGBub2RlX21vZHVsZXMvJHttb2R1bGVOYW1lfWA7XG5cbiAgY29uc3QgcHJvamVjdFBhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBtb2R1bGVQYXRoKTtcbiAgaWYoZXhpc3RzU3luYyhwcm9qZWN0UGF0aCkpIHtcbiAgICByZXR1cm4gcHJvamVjdFBhdGg7XG4gIH1cblxuICBjb25zdCByZXBvUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsIGRpck5hbWUpO1xuICBpZihyZXBvUGF0aCAmJiBleGlzdHNTeW5jKHJlcG9QYXRoKSkge1xuICAgIHJldHVybiByZXBvUGF0aDtcbiAgfVxuXG4gIGNvbnN0IGxvY2FsUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsICcuLycsIDEwKSB8fCBgLi8ke21vZHVsZVBhdGh9YDtcbiAgcmV0dXJuIGxvY2FsUGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlQmluYXJ5UGF0aCA9IChiaW5hcnlOYW1lOiBzdHJpbmcsIHBhY2thZ2VOYW1lPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuXG4gIGNvbnN0IGxleEJpblBhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsIGBub2RlX21vZHVsZXMvLmJpbi8ke2JpbmFyeU5hbWV9YCk7XG4gIGlmKGV4aXN0c1N5bmMobGV4QmluUGF0aCkpIHtcbiAgICByZXR1cm4gbGV4QmluUGF0aDtcbiAgfVxuXG4gIGlmKHBhY2thZ2VOYW1lKSB7XG4gICAgY29uc3QgbGV4UGFja2FnZUJpblBhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsIGBub2RlX21vZHVsZXMvJHtwYWNrYWdlTmFtZX0vYmluLyR7YmluYXJ5TmFtZX1gKTtcbiAgICBpZihleGlzdHNTeW5jKGxleFBhY2thZ2VCaW5QYXRoKSkge1xuICAgICAgcmV0dXJuIGxleFBhY2thZ2VCaW5QYXRoO1xuICAgIH1cblxuICAgIGNvbnN0IGxleFBhY2thZ2VCaW5Kc1BhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsIGBub2RlX21vZHVsZXMvJHtwYWNrYWdlTmFtZX0vYmluLyR7YmluYXJ5TmFtZX0uanNgKTtcbiAgICBpZihleGlzdHNTeW5jKGxleFBhY2thZ2VCaW5Kc1BhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4UGFja2FnZUJpbkpzUGF0aDtcbiAgICB9XG5cbiAgICBjb25zdCBsZXhQYWNrYWdlQmluQ2pzUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfS9iaW4vJHtiaW5hcnlOYW1lfS5janNgKTtcbiAgICBpZihleGlzdHNTeW5jKGxleFBhY2thZ2VCaW5DanNQYXRoKSkge1xuICAgICAgcmV0dXJuIGxleFBhY2thZ2VCaW5DanNQYXRoO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNoZWNrQmluVXAgPSAoc3RhcnREaXI6IHN0cmluZykgPT4ge1xuICAgIGxldCBjaGVja0RpciA9IHN0YXJ0RGlyO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIGNvbnN0IG1vbm9yZXBvQmluUGF0aCA9IHBhdGhSZXNvbHZlKGNoZWNrRGlyLCBgbm9kZV9tb2R1bGVzLy5iaW4vJHtiaW5hcnlOYW1lfWApO1xuICAgICAgaWYoZXhpc3RzU3luYyhtb25vcmVwb0JpblBhdGgpKSB7XG4gICAgICAgIHJldHVybiBtb25vcmVwb0JpblBhdGg7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnREaXIgPSBwYXRoUmVzb2x2ZShjaGVja0RpciwgJy4uJyk7XG4gICAgICBpZihwYXJlbnREaXIgPT09IGNoZWNrRGlyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2hlY2tEaXIgPSBwYXJlbnREaXI7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfTtcblxuICBjb25zdCBmcm9tQ3dkID0gY2hlY2tCaW5VcChwcm9jZXNzLmN3ZCgpKTtcbiAgaWYoZnJvbUN3ZCkge1xuICAgIHJldHVybiBmcm9tQ3dkO1xuICB9XG5cbiAgY29uc3QgZnJvbUxleCA9IGNoZWNrQmluVXAobGV4RGlyKTtcbiAgaWYoZnJvbUxleCkge1xuICAgIHJldHVybiBmcm9tTGV4O1xuICB9XG5cbiAgcmV0dXJuICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRUYWlsd2luZENzc1BhdGggPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdGFpbHdpbmRQYXR0ZXJucyA9IFsnKiovdGFpbHdpbmQuY3NzJ107XG5cbiAgZm9yKGNvbnN0IHBhdHRlcm4gb2YgdGFpbHdpbmRQYXR0ZXJucykge1xuICAgIGNvbnN0IGZpbGVzID0gZ2xvYlN5bmMocGF0dGVybiwge1xuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi9kaXN0LyoqJywgJyoqL2xpYi8qKicsICcqKi9idWlsZC8qKicsICcqKi8uc3Rvcnlib29rLyoqJ11cbiAgICB9KTtcblxuICAgIGlmKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVXZWJwYWNrUGF0aHMgPSAoY3VycmVudERpcm5hbWU6IHN0cmluZyk6IHt3ZWJwYWNrUGF0aDogc3RyaW5nOyB3ZWJwYWNrQ29uZmlnOiBzdHJpbmd9ID0+IHtcbiAgY29uc3QgcG9zc2libGVXZWJwYWNrUGF0aHMgPSBbXG4gICAgcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy93ZWJwYWNrLWNsaS9iaW4vY2xpLmpzJyksXG4gICAgcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy8uYmluL3dlYnBhY2snKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgnLCAnbm9kZV9tb2R1bGVzL3dlYnBhY2stY2xpL2Jpbi9jbGkuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgnLCAnbm9kZV9tb2R1bGVzLy5iaW4vd2VicGFjaycpLFxuICAgIHBhdGhSZXNvbHZlKGN1cnJlbnREaXJuYW1lLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgvbm9kZV9tb2R1bGVzL3dlYnBhY2stY2xpL2Jpbi9jbGkuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShjdXJyZW50RGlybmFtZSwgJ25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4L25vZGVfbW9kdWxlcy8uYmluL3dlYnBhY2snKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmVudi5MRVhfSE9NRSB8fCAnL25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4JywgJ25vZGVfbW9kdWxlcy93ZWJwYWNrLWNsaS9iaW4vY2xpLmpzJyksXG4gICAgcGF0aFJlc29sdmUocHJvY2Vzcy5lbnYuTEVYX0hPTUUgfHwgJy9ub2RlX21vZHVsZXMvQG5sYWJzL2xleCcsICdub2RlX21vZHVsZXMvLmJpbi93ZWJwYWNrJylcbiAgXTtcblxuICBsZXQgd2VicGFja1BhdGggPSAnJztcblxuICBmb3IoY29uc3QgcGF0aCBvZiBwb3NzaWJsZVdlYnBhY2tQYXRocykge1xuICAgIGlmKGV4aXN0c1N5bmMocGF0aCkpIHtcbiAgICAgIHdlYnBhY2tQYXRoID0gcGF0aDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmKCF3ZWJwYWNrUGF0aCkge1xuICAgIHdlYnBhY2tQYXRoID0gJ25weCc7XG4gIH1cblxuICBjb25zdCBwb3NzaWJsZVdlYnBhY2tDb25maWdQYXRocyA9IFtcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcudHMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgvd2VicGFjay5jb25maWcuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgvd2VicGFjay5jb25maWcudHMnKSxcbiAgICBwYXRoUmVzb2x2ZShjdXJyZW50RGlybmFtZSwgJ25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4L3dlYnBhY2suY29uZmlnLmpzJyksXG4gICAgcGF0aFJlc29sdmUoY3VycmVudERpcm5hbWUsICdub2RlX21vZHVsZXMvQG5sYWJzL2xleC93ZWJwYWNrLmNvbmZpZy50cycpLFxuICAgIHBhdGhSZXNvbHZlKHByb2Nlc3MuZW52LkxFWF9IT01FIHx8ICcvbm9kZV9tb2R1bGVzL0BubGFicy9sZXgnLCAnd2VicGFjay5jb25maWcuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmVudi5MRVhfSE9NRSB8fCAnL25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4JywgJ3dlYnBhY2suY29uZmlnLnRzJylcbiAgXTtcblxuICBsZXQgd2VicGFja0NvbmZpZyA9ICcnO1xuXG4gIGZvcihjb25zdCBwYXRoIG9mIHBvc3NpYmxlV2VicGFja0NvbmZpZ1BhdGhzKSB7XG4gICAgaWYoZXhpc3RzU3luYyhwYXRoKSkge1xuICAgICAgd2VicGFja0NvbmZpZyA9IHBhdGg7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZighd2VicGFja0NvbmZpZykge1xuICAgIHdlYnBhY2tDb25maWcgPSBwYXRoUmVzb2x2ZShjdXJyZW50RGlybmFtZSwgJy4uLy4uL3dlYnBhY2suY29uZmlnLmpzJyk7XG4gIH1cblxuICByZXR1cm4ge3dlYnBhY2tDb25maWcsIHdlYnBhY2tQYXRofTtcbn07Il0sIm5hbWVzIjpbImZpbmRGaWxlVXAiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwic3luYyIsImdsb2JTeW5jIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiZGlybmFtZSIsIkxleENvbmZpZyIsImdldERpck5hbWUiLCJldmFsIiwicHJvY2VzcyIsImN3ZCIsImdldEZpbGVQYXRoIiwicmVsYXRpdmVQYXRoIiwiZ2V0TGV4UGFja2FnZUpzb25QYXRoIiwiTEVYX1BBQ0tBR0VfTkFNRSIsImxleEluTm9kZU1vZHVsZXMiLCJzdGFydERpciIsImVudiIsIkxFWF9ST09UIiwiRXJyb3IiLCJhcmd2IiwiaW5jbHVkZXMiLCJkaXIiLCJpIiwicGtnUGF0aCIsInBrZyIsIkpTT04iLCJwYXJzZSIsIm5hbWUiLCJwYXJlbnQiLCJyZWxhdGl2ZUZpbGVQYXRoIiwiZmlsZW5hbWUiLCJkaXJQYXRoIiwiYmFja1VwIiwibmVzdERlcHRoIiwiZmlsZVBhdGgiLCJwcmV2aW91c1BhdGgiLCJBcnJheSIsImZpbGwiLCJtYXAiLCJqb2luIiwicmVsYXRpdmVOb2RlUGF0aCIsIm1vZHVsZVBhdGgiLCJsZXhNb2R1bGVQYXRoIiwicHJvamVjdFBhdGgiLCJnZXROb2RlUGF0aCIsIm1vZHVsZU5hbWUiLCJkaXJOYW1lIiwicmVwb1BhdGgiLCJsb2NhbFBhdGgiLCJyZXNvbHZlQmluYXJ5UGF0aCIsImJpbmFyeU5hbWUiLCJwYWNrYWdlTmFtZSIsImxleERpciIsImdldExleERpciIsImxleEJpblBhdGgiLCJsZXhQYWNrYWdlQmluUGF0aCIsImxleFBhY2thZ2VCaW5Kc1BhdGgiLCJsZXhQYWNrYWdlQmluQ2pzUGF0aCIsImNoZWNrQmluVXAiLCJjaGVja0RpciIsIm1vbm9yZXBvQmluUGF0aCIsInBhcmVudERpciIsImZyb21Dd2QiLCJmcm9tTGV4IiwiZmluZFRhaWx3aW5kQ3NzUGF0aCIsInRhaWx3aW5kUGF0dGVybnMiLCJwYXR0ZXJuIiwiZmlsZXMiLCJpZ25vcmUiLCJsZW5ndGgiLCJyZXNvbHZlV2VicGFja1BhdGhzIiwiY3VycmVudERpcm5hbWUiLCJwb3NzaWJsZVdlYnBhY2tQYXRocyIsIkxFWF9IT01FIiwid2VicGFja1BhdGgiLCJwYXRoIiwicG9zc2libGVXZWJwYWNrQ29uZmlnUGF0aHMiLCJ3ZWJwYWNrQ29uZmlnIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxnQkFBZ0IsZUFBZTtBQUN0QyxTQUFRQyxVQUFVLEVBQUVDLFlBQVksUUFBTyxLQUFLO0FBQzVDLFNBQVFDLFFBQVFDLFFBQVEsUUFBTyxPQUFPO0FBQ3RDLFNBQVFDLFdBQVdDLFdBQVcsRUFBRUMsT0FBTyxRQUFPLE9BQU87QUFFckQsU0FBUUMsU0FBUyxRQUFPLGtCQUFrQjtBQUUxQyxPQUFPLE1BQU1DLGFBQWE7SUFDeEIsSUFBSTtRQUNGLE9BQU9DLEtBQUs7SUFDZCxFQUFFLE9BQUs7UUFDTCxPQUFPQyxRQUFRQyxHQUFHO0lBQ3BCO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTUMsY0FBYyxDQUFDQztJQUMxQixJQUFJO1FBQ0YsT0FBT0osS0FBSztJQUNkLEVBQUUsT0FBSztRQUNMLElBQUdJLGlCQUFpQix5QkFBeUI7WUFDM0MsT0FBT1IsWUFBWUssUUFBUUMsR0FBRyxJQUFJO1FBQ3BDO1FBQ0EsT0FBT04sWUFBWUssUUFBUUMsR0FBRyxJQUFJRTtJQUNwQztBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1DLHdCQUF3QjtJQUNuQyxNQUFNQyxtQkFBbUI7SUFFekIsTUFBTUMsbUJBQW1CWCxZQUFZSyxRQUFRQyxHQUFHLElBQUk7SUFFcEQsSUFBR1gsV0FBV2dCLG1CQUFt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
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZmluZEZpbGVVcCBmcm9tICdmaW5kLWZpbGUtdXAnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCByZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmUsIGRpcm5hbWV9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcblxuZXhwb3J0IGNvbnN0IGdldERpck5hbWUgPSAoKTogc3RyaW5nID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXZhbCgnbmV3IFVSTChcIi5cIiwgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZScpO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZVBhdGggPSAocmVsYXRpdmVQYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBldmFsKCdyZXF1aXJlKFwidXJsXCIpLmZpbGVVUkxUb1BhdGgobmV3IFVSTChyZWxhdGl2ZVBhdGgsIGltcG9ydC5tZXRhLnVybCkpJyk7XG4gIH0gY2F0Y2h7XG4gICAgaWYocmVsYXRpdmVQYXRoID09PSAnLi4vLi4vLi4vcGFja2FnZS5qc29uJykge1xuICAgICAgcmV0dXJuIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlLmpzb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIHJlbGF0aXZlUGF0aCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMZXhQYWNrYWdlSnNvblBhdGggPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgTEVYX1BBQ0tBR0VfTkFNRSA9ICdAbmxhYnMvbGV4JztcblxuICBjb25zdCBsZXhJbk5vZGVNb2R1bGVzID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4L3BhY2thZ2UuanNvbicpO1xuXG4gIGlmKGV4aXN0c1N5bmMobGV4SW5Ob2RlTW9kdWxlcykpIHtcbiAgICByZXR1cm4gbGV4SW5Ob2RlTW9kdWxlcztcbiAgfVxuXG4gIGxldCBzdGFydERpcjogc3RyaW5nO1xuXG4gIGlmKHByb2Nlc3MuZW52LkxFWF9ST09UKSB7XG4gICAgc3RhcnREaXIgPSBwcm9jZXNzLmVudi5MRVhfUk9PVDtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgc3RhcnREaXIgPSBldmFsKCduZXcgVVJMKFwiLlwiLCBpbXBvcnQubWV0YS51cmwpLnBhdGhuYW1lJyk7XG4gICAgfSBjYXRjaHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0YXJ0RGlyID0gZXZhbCgnX19maWxlbmFtZSA/IHJlcXVpcmUoXCJwYXRoXCIpLmRpcm5hbWUoX19maWxlbmFtZSkgOiBudWxsJyk7XG4gICAgICAgIGlmKCFzdGFydERpcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignX19maWxlbmFtZSBub3QgYXZhaWxhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2h7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYocHJvY2Vzcy5hcmd2WzFdICYmICFwcm9jZXNzLmFyZ3ZbMV0uaW5jbHVkZXMoJ25vZGUnKSkge1xuICAgICAgICAgICAgc3RhcnREaXIgPSBkaXJuYW1lKHByb2Nlc3MuYXJndlsxXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5hcmd2WzFdIG5vdCBzdWl0YWJsZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaHtcbiAgICAgICAgICBzdGFydERpciA9IHByb2Nlc3MuY3dkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgZGlyID0gc3RhcnREaXI7XG4gIGZvcihsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICBjb25zdCBwa2dQYXRoID0gcGF0aFJlc29sdmUoZGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwa2dQYXRoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0ZjgnKSk7XG4gICAgICAgIGlmKHBrZy5uYW1lID09PSBMRVhfUEFDS0FHRV9OQU1FKSB7XG4gICAgICAgICAgcmV0dXJuIHBrZ1BhdGg7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2h7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKTtcbiAgICBpZihwYXJlbnQgPT09IGRpcikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRpciA9IHBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVsYXRpdmVGaWxlUGF0aCA9IChmaWxlbmFtZTogc3RyaW5nLCBkaXJQYXRoOiBzdHJpbmcgPSAnLi8nLCBiYWNrVXA6IG51bWJlciA9IDApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBuZXN0RGVwdGg6IG51bWJlciA9IDEwO1xuXG4gIGlmKGJhY2tVcCkge1xuICAgIGNvbnN0IGZpbGVQYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMoZmlsZW5hbWUsIGRpclBhdGgsIG5lc3REZXB0aCk7XG4gICAgY29uc3QgcHJldmlvdXNQYXRoOiBzdHJpbmcgPSBBcnJheShiYWNrVXApLmZpbGwobnVsbCkubWFwKCgpID0+ICcuLi8nKS5qb2luKCcnKTtcbiAgICByZXR1cm4gcGF0aFJlc29sdmUoZmlsZVBhdGgsIHByZXZpb3VzUGF0aCk7XG4gIH1cblxuICByZXR1cm4gZmluZEZpbGVVcC5zeW5jKGZpbGVuYW1lLCBkaXJQYXRoLCBuZXN0RGVwdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbGF0aXZlTm9kZVBhdGggPSAoZmlsZW5hbWU6IHN0cmluZywgZGlyUGF0aDogc3RyaW5nID0gJy4vJywgYmFja1VwOiBudW1iZXIgPSAwKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbmVzdERlcHRoOiBudW1iZXIgPSAxMDtcbiAgY29uc3QgbW9kdWxlUGF0aCA9IGBub2RlX21vZHVsZXMvJHtmaWxlbmFtZX1gO1xuXG4gIGlmKGRpclBhdGggIT09ICcuLycpIHtcbiAgICBjb25zdCBsZXhNb2R1bGVQYXRoID0gcGF0aFJlc29sdmUoZGlyUGF0aCwgbW9kdWxlUGF0aCk7XG4gICAgaWYoZXhpc3RzU3luYyhsZXhNb2R1bGVQYXRoKSkge1xuICAgICAgcmV0dXJuIGxleE1vZHVsZVBhdGg7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJvamVjdFBhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBtb2R1bGVQYXRoKTtcbiAgaWYoZXhpc3RzU3luYyhwcm9qZWN0UGF0aCkpIHtcbiAgICByZXR1cm4gcHJvamVjdFBhdGg7XG4gIH1cblxuICBpZihiYWNrVXApIHtcbiAgICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsIGRpclBhdGgsIG5lc3REZXB0aCk7XG4gICAgY29uc3QgcHJldmlvdXNQYXRoOiBzdHJpbmcgPSBBcnJheShuZXN0RGVwdGgpLmZpbGwobnVsbCkubWFwKCgpID0+ICcuLi8nKS5qb2luKCcnKTtcbiAgICByZXR1cm4gcGF0aFJlc29sdmUoZmlsZVBhdGgsIHByZXZpb3VzUGF0aCk7XG4gIH1cblxuICByZXR1cm4gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsIGRpclBhdGgsIG5lc3REZXB0aCkgfHwgYC9ub2RlX21vZHVsZXMvJHtmaWxlbmFtZX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5vZGVQYXRoID0gKG1vZHVsZU5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG4gIGNvbnN0IG1vZHVsZVBhdGg6IHN0cmluZyA9IGBub2RlX21vZHVsZXMvJHttb2R1bGVOYW1lfWA7XG5cbiAgY29uc3QgcHJvamVjdFBhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBtb2R1bGVQYXRoKTtcbiAgaWYoZXhpc3RzU3luYyhwcm9qZWN0UGF0aCkpIHtcbiAgICByZXR1cm4gcHJvamVjdFBhdGg7XG4gIH1cblxuICBjb25zdCByZXBvUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsIGRpck5hbWUpO1xuICBpZihyZXBvUGF0aCAmJiBleGlzdHNTeW5jKHJlcG9QYXRoKSkge1xuICAgIHJldHVybiByZXBvUGF0aDtcbiAgfVxuXG4gIGNvbnN0IGxvY2FsUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKG1vZHVsZVBhdGgsICcuLycsIDEwKSB8fCBgLi8ke21vZHVsZVBhdGh9YDtcbiAgcmV0dXJuIGxvY2FsUGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlQmluYXJ5UGF0aCA9IChiaW5hcnlOYW1lOiBzdHJpbmcsIHBhY2thZ2VOYW1lPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuXG4gIGNvbnN0IGxleEJpblBhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsIGBub2RlX21vZHVsZXMvLmJpbi8ke2JpbmFyeU5hbWV9YCk7XG4gIGlmKGV4aXN0c1N5bmMobGV4QmluUGF0aCkpIHtcbiAgICByZXR1cm4gbGV4QmluUGF0aDtcbiAgfVxuXG4gIGlmKHBhY2thZ2VOYW1lKSB7XG4gICAgY29uc3QgbGV4UGFja2FnZUJpblBhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsIGBub2RlX21vZHVsZXMvJHtwYWNrYWdlTmFtZX0vYmluLyR7YmluYXJ5TmFtZX1gKTtcbiAgICBpZihleGlzdHNTeW5jKGxleFBhY2thZ2VCaW5QYXRoKSkge1xuICAgICAgcmV0dXJuIGxleFBhY2thZ2VCaW5QYXRoO1xuICAgIH1cblxuICAgIGNvbnN0IGxleFBhY2thZ2VCaW5Kc1BhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsIGBub2RlX21vZHVsZXMvJHtwYWNrYWdlTmFtZX0vYmluLyR7YmluYXJ5TmFtZX0uanNgKTtcbiAgICBpZihleGlzdHNTeW5jKGxleFBhY2thZ2VCaW5Kc1BhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4UGFja2FnZUJpbkpzUGF0aDtcbiAgICB9XG5cbiAgICBjb25zdCBsZXhQYWNrYWdlQmluQ2pzUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfS9iaW4vJHtiaW5hcnlOYW1lfS5janNgKTtcbiAgICBpZihleGlzdHNTeW5jKGxleFBhY2thZ2VCaW5DanNQYXRoKSkge1xuICAgICAgcmV0dXJuIGxleFBhY2thZ2VCaW5DanNQYXRoO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNoZWNrQmluVXAgPSAoc3RhcnREaXI6IHN0cmluZykgPT4ge1xuICAgIGxldCBjaGVja0RpciA9IHN0YXJ0RGlyO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIGNvbnN0IG1vbm9yZXBvQmluUGF0aCA9IHBhdGhSZXNvbHZlKGNoZWNrRGlyLCBgbm9kZV9tb2R1bGVzLy5iaW4vJHtiaW5hcnlOYW1lfWApO1xuICAgICAgaWYoZXhpc3RzU3luYyhtb25vcmVwb0JpblBhdGgpKSB7XG4gICAgICAgIHJldHVybiBtb25vcmVwb0JpblBhdGg7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnREaXIgPSBwYXRoUmVzb2x2ZShjaGVja0RpciwgJy4uJyk7XG4gICAgICBpZihwYXJlbnREaXIgPT09IGNoZWNrRGlyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2hlY2tEaXIgPSBwYXJlbnREaXI7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfTtcblxuICBjb25zdCBmcm9tQ3dkID0gY2hlY2tCaW5VcChwcm9jZXNzLmN3ZCgpKTtcbiAgaWYoZnJvbUN3ZCkge1xuICAgIHJldHVybiBmcm9tQ3dkO1xuICB9XG5cbiAgY29uc3QgZnJvbUxleCA9IGNoZWNrQmluVXAobGV4RGlyKTtcbiAgaWYoZnJvbUxleCkge1xuICAgIHJldHVybiBmcm9tTGV4O1xuICB9XG5cbiAgcmV0dXJuICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRUYWlsd2luZENzc1BhdGggPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdGFpbHdpbmRQYXR0ZXJucyA9IFsnKiovdGFpbHdpbmQuY3NzJ107XG5cbiAgZm9yKGNvbnN0IHBhdHRlcm4gb2YgdGFpbHdpbmRQYXR0ZXJucykge1xuICAgIGNvbnN0IGZpbGVzID0gZ2xvYlN5bmMocGF0dGVybiwge1xuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi9kaXN0LyoqJywgJyoqL2xpYi8qKicsICcqKi9idWlsZC8qKicsICcqKi8uc3Rvcnlib29rLyoqJ11cbiAgICB9KTtcblxuICAgIGlmKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVXZWJwYWNrUGF0aHMgPSAoY3VycmVudERpcm5hbWU6IHN0cmluZyk6IHt3ZWJwYWNrUGF0aDogc3RyaW5nOyB3ZWJwYWNrQ29uZmlnOiBzdHJpbmd9ID0+IHtcbiAgY29uc3QgcG9zc2libGVXZWJwYWNrUGF0aHMgPSBbXG4gICAgcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy93ZWJwYWNrLWNsaS9iaW4vY2xpLmpzJyksXG4gICAgcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy8uYmluL3dlYnBhY2snKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgnLCAnbm9kZV9tb2R1bGVzL3dlYnBhY2stY2xpL2Jpbi9jbGkuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgnLCAnbm9kZV9tb2R1bGVzLy5iaW4vd2VicGFjaycpLFxuICAgIHBhdGhSZXNvbHZlKGN1cnJlbnREaXJuYW1lLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgvbm9kZV9tb2R1bGVzL3dlYnBhY2stY2xpL2Jpbi9jbGkuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShjdXJyZW50RGlybmFtZSwgJ25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4L25vZGVfbW9kdWxlcy8uYmluL3dlYnBhY2snKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmVudi5MRVhfSE9NRSB8fCAnL25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4JywgJ25vZGVfbW9kdWxlcy93ZWJwYWNrLWNsaS9iaW4vY2xpLmpzJyksXG4gICAgcGF0aFJlc29sdmUocHJvY2Vzcy5lbnYuTEVYX0hPTUUgfHwgJy9ub2RlX21vZHVsZXMvQG5sYWJzL2xleCcsICdub2RlX21vZHVsZXMvLmJpbi93ZWJwYWNrJylcbiAgXTtcblxuICBsZXQgd2VicGFja1BhdGggPSAnJztcblxuICBmb3IoY29uc3QgcGF0aCBvZiBwb3NzaWJsZVdlYnBhY2tQYXRocykge1xuICAgIGlmKGV4aXN0c1N5bmMocGF0aCkpIHtcbiAgICAgIHdlYnBhY2tQYXRoID0gcGF0aDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmKCF3ZWJwYWNrUGF0aCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBsZXhQYWNrYWdlUGF0aCA9IGdldExleFBhY2thZ2VKc29uUGF0aCgpO1xuICAgICAgY29uc3QgbGV4UGFja2FnZURpciA9IGRpcm5hbWUobGV4UGFja2FnZVBhdGgpO1xuICAgICAgY29uc3QgbGV4V2VicGFja0NsaSA9IHBhdGhSZXNvbHZlKGxleFBhY2thZ2VEaXIsICdub2RlX21vZHVsZXMvd2VicGFjay1jbGkvYmluL2NsaS5qcycpO1xuICAgICAgY29uc3QgbGV4V2VicGFja0JpbiA9IHBhdGhSZXNvbHZlKGxleFBhY2thZ2VEaXIsICdub2RlX21vZHVsZXMvLmJpbi93ZWJwYWNrJyk7XG5cbiAgICAgIGlmKGV4aXN0c1N5bmMobGV4V2VicGFja0NsaSkpIHtcbiAgICAgICAgd2VicGFja1BhdGggPSBsZXhXZWJwYWNrQ2xpO1xuICAgICAgfSBlbHNlIGlmKGV4aXN0c1N5bmMobGV4V2VicGFja0JpbikpIHtcbiAgICAgICAgd2VicGFja1BhdGggPSBsZXhXZWJwYWNrQmluO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2VicGFja1BhdGggPSAnbnB4JztcbiAgICAgIH1cbiAgICB9IGNhdGNoe1xuICAgICAgd2VicGFja1BhdGggPSAnbnB4JztcbiAgICB9XG4gIH1cblxuICBjb25zdCBwb3NzaWJsZVdlYnBhY2tDb25maWdQYXRocyA9IFtcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcudHMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgvd2VicGFjay5jb25maWcuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BubGFicy9sZXgvd2VicGFjay5jb25maWcudHMnKSxcbiAgICBwYXRoUmVzb2x2ZShjdXJyZW50RGlybmFtZSwgJ25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4L3dlYnBhY2suY29uZmlnLmpzJyksXG4gICAgcGF0aFJlc29sdmUoY3VycmVudERpcm5hbWUsICdub2RlX21vZHVsZXMvQG5sYWJzL2xleC93ZWJwYWNrLmNvbmZpZy50cycpLFxuICAgIHBhdGhSZXNvbHZlKHByb2Nlc3MuZW52LkxFWF9IT01FIHx8ICcvbm9kZV9tb2R1bGVzL0BubGFicy9sZXgnLCAnd2VicGFjay5jb25maWcuanMnKSxcbiAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmVudi5MRVhfSE9NRSB8fCAnL25vZGVfbW9kdWxlcy9AbmxhYnMvbGV4JywgJ3dlYnBhY2suY29uZmlnLnRzJylcbiAgXTtcblxuICBsZXQgd2VicGFja0NvbmZpZyA9ICcnO1xuXG4gIGZvcihjb25zdCBwYXRoIG9mIHBvc3NpYmxlV2VicGFja0NvbmZpZ1BhdGhzKSB7XG4gICAgaWYoZXhpc3RzU3luYyhwYXRoKSkge1xuICAgICAgd2VicGFja0NvbmZpZyA9IHBhdGg7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZighd2VicGFja0NvbmZpZykge1xuICAgIGNvbnN0IGxleFBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG4gICAgY29uc3QgbGV4UGFja2FnZURpciA9IGRpcm5hbWUobGV4UGFja2FnZVBhdGgpO1xuICAgIGNvbnN0IGxleFdlYnBhY2tDb25maWcgPSBwYXRoUmVzb2x2ZShsZXhQYWNrYWdlRGlyLCAnd2VicGFjay5jb25maWcuanMnKTtcblxuICAgIGlmKGV4aXN0c1N5bmMobGV4V2VicGFja0NvbmZpZykpIHtcbiAgICAgIHdlYnBhY2tDb25maWcgPSBsZXhXZWJwYWNrQ29uZmlnO1xuICAgIH0gZWxzZSB7XG4gICAgICB3ZWJwYWNrQ29uZmlnID0gcGF0aFJlc29sdmUoY3VycmVudERpcm5hbWUsICcuLi8uLi93ZWJwYWNrLmNvbmZpZy5qcycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7d2VicGFja0NvbmZpZywgd2VicGFja1BhdGh9O1xufTsiXSwibmFtZXMiOlsiZmluZEZpbGVVcCIsImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJzeW5jIiwiZ2xvYlN5bmMiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJkaXJuYW1lIiwiTGV4Q29uZmlnIiwiZ2V0RGlyTmFtZSIsImV2YWwiLCJwcm9jZXNzIiwiY3dkIiwiZ2V0RmlsZVBhdGgiLCJyZWxhdGl2ZVBhdGgiLCJnZXRMZXhQYWNrYWdlSnNvblBhdGgiLCJMRVhfUEFDS0FHRV9OQU1FIiwibGV4SW5Ob2RlTW9kdWxlcyIsInN0YXJ0RGlyIiwiZW52IiwiTEVYX1JPT1QiLCJFcnJvciIsImFyZ3YiLCJpbmNsdWRlcyIsImRpciIsImkiLCJwa2dQYXRoIiwicGtnIiwiSlNPTiIsInBhcnNlIiwibmFtZSIsInBhcmVudCIsInJlbGF0aXZlRmlsZVBhdGgiLCJmaWxlbmFtZSIsImRpclBhdGgiLCJiYWNrVXAiLCJuZXN0RGVwdGgiLCJmaWxlUGF0aCIsInByZXZpb3VzUGF0aCIsIkFycmF5IiwiZmlsbCIsIm1hcCIsImpvaW4iLCJyZWxhdGl2ZU5vZGVQYXRoIiwibW9kdWxlUGF0aCIsImxleE1vZHVsZVBhdGgiLCJwcm9qZWN0UGF0aCIsImdldE5vZGVQYXRoIiwibW9kdWxlTmFtZSIsImRpck5hbWUiLCJyZXBvUGF0aCIsImxvY2FsUGF0aCIsInJlc29sdmVCaW5hcnlQYXRoIiwiYmluYXJ5TmFtZSIsInBhY2thZ2VOYW1lIiwibGV4RGlyIiwiZ2V0TGV4RGlyIiwibGV4QmluUGF0aCIsImxleFBhY2thZ2VCaW5QYXRoIiwibGV4UGFja2FnZUJpbkpzUGF0aCIsImxleFBhY2thZ2VCaW5DanNQYXRoIiwiY2hlY2tCaW5VcCIsImNoZWNrRGlyIiwibW9ub3JlcG9CaW5QYXRoIiwicGFyZW50RGlyIiwiZnJvbUN3ZCIsImZyb21MZXgiLCJmaW5kVGFpbHdpbmRDc3NQYXRoIiwidGFpbHdpbmRQYXR0ZXJucyIsInBhdHRlcm4iLCJmaWxlcyIsImlnbm9yZSIsImxlbmd0aCIsInJlc29sdmVXZWJwYWNrUGF0aHMiLCJjdXJyZW50RGlybmFtZSIsInBvc3NpYmxlV2VicGFja1BhdGhzIiwiTEVYX0hPTUUiLCJ3ZWJwYWNrUGF0aCIsInBhdGgiLCJsZXhQYWNrYWdlUGF0aCIsImxleFBhY2thZ2VEaXIiLCJsZXhXZWJwYWNrQ2xpIiwibGV4V2VicGFja0JpbiIsInBvc3NpYmxlV2VicGFja0NvbmZpZ1BhdGhzIiwid2VicGFja0NvbmZpZyIsImxleFdlYnBhY2tDb25maWciXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELE9BQU9BLGdCQUFnQixlQUFlO0FBQ3RDLFNBQVFDLFVBQVUsRUFBRUMsWUFBWSxRQUFPLEtBQUs7QUFDNUMsU0FBUUMsUUFBUUMsUUFBUSxRQUFPLE9BQU87QUFDdEMsU0FBUUMsV0FBV0MsV0FBVyxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUVyRCxTQUFRQyxTQUFTLFFBQU8sa0JBQWtCO0FBRTFDLE9BQU8sTUFBTUMsYUFBYTtJQUN4QixJQUFJO1FBQ0YsT0FBT0MsS0FBSztJQUNkLEVBQUUsT0FBSztRQUNMLE9BQU9DLFFBQVFDLEdBQUc7SUFDcEI7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNQyxjQUFjLENBQUNDO0lBQzFCLElBQUk7UUFDRixPQUFPSixLQUFLO0lBQ2QsRUFBRSxPQUFLO1FBQ0wsSUFBR0ksaUJBQWlCLHlCQUF5QjtZQUMzQyxPQUFPUixZQUFZSyxRQUFRQyxHQUFHLElBQUk7UUFDcEM7UUFDQSxPQUFPTixZQUFZSyxRQUFRQyxHQUFHLElBQUlFO0lBQ3BDO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTUMsd0JBQXdCO0lBQ25DLE1BQU1DLG1CQUFtQjtJQUV6QixNQUFNQyxtQkFBbUJYLFlBQVlLLFFBQVFDLEdBQUcsSUFBSTtJQUVwRCxJQUFHWCxXQUFXZ0IsbUJBQW1CO1FBQy9CLE9BQU9BO0lBQ1Q7SUFFQSxJQUFJQztJQUVKLElBQUdQLFFBQVFRLEdBQUcsQ0FBQ0MsUUFBUSxFQUFFO1FBQ3ZCRixXQUFXUCxRQUFRUSxHQUFHLENBQUNDLFFBQVE7SUFDakMsT0FBTztRQUNMLElBQUk7WUFDRkYsV0FBV1IsS0FBSztRQUNsQixFQUFFLE9BQUs7WUFDTCxJQUFJO2dCQUNGUSxXQUFXUixLQUFLO2dCQUNoQixJQUFHLENBQUNRLFVBQVU7b0JBQ1osTUFBTSxJQUFJRyxNQUFNO2dCQUNsQjtZQUNGLEVBQUUsT0FBSztnQkFDTCxJQUFJO29CQUNGLElBQUdWLFFBQVFXLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQ1gsUUFBUVcsSUFBSSxDQUFDLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLFNBQVM7d0JBQ3ZETCxXQUFXWCxRQUFRSSxRQUFRVyxJQUFJLENBQUMsRUFBRTtvQkFDcEMsT0FBTzt3QkFDTCxNQUFNLElBQUlELE1BQU07b0JBQ2xCO2dCQUNGLEVBQUUsT0FBSztvQkFDTEgsV0FBV1AsUUFBUUMsR0FBRztnQkFDeEI7WUFDRjtRQUNGO0lBQ0Y7SUFFQSxJQUFJWSxNQUFNTjtJQUNWLElBQUksSUFBSU8sSUFBSSxHQUFHQSxJQUFJLEdBQUdBLElBQUs7UUFDekIsTUFBTUMsVUFBVXBCLFlBQVlrQixLQUFLO1FBQ2pDLElBQUd2QixXQUFXeUIsVUFBVTtZQUN0QixJQUFJO2dCQUNGLE1BQU1DLE1BQU1DLEtBQUtDLEtBQUssQ0FBQzNCLGFBQWF3QixTQUFTO2dCQUM3QyxJQUFHQyxJQUFJRyxJQUFJLEtBQUtkLGtCQUFrQjtvQkFDaEMsT0FBT1U7Z0JBQ1Q7WUFDRixFQUFFLE9BQUssQ0FDUDtRQUNGO1FBQ0EsTUFBTUssU0FBU3hCLFFBQVFpQjtRQUN2QixJQUFHTyxXQUFXUCxLQUFLO1lBQ2pCO1FBQ0Y7UUFDQUEsTUFBTU87SUFDUjtJQUVBLE9BQU96QixZQUFZSyxRQUFRQyxHQUFHLElBQUk7QUFDcEMsRUFBRTtBQUVGLE9BQU8sTUFBTW9CLG1CQUFtQixDQUFDQyxVQUFrQkMsVUFBa0IsSUFBSSxFQUFFQyxTQUFpQixDQUFDO0lBQzNGLE1BQU1DLFlBQW9CO0lBRTFCLElBQUdELFFBQVE7UUFDVCxNQUFNRSxXQUFtQnJDLFdBQVdHLElBQUksQ0FBQzhCLFVBQVVDLFNBQVNFO1FBQzVELE1BQU1FLGVBQXVCQyxNQUFNSixRQUFRSyxJQUFJLENBQUMsTUFBTUMsR0FBRyxDQUFDLElBQU0sT0FBT0MsSUFBSSxDQUFDO1FBQzVFLE9BQU9wQyxZQUFZK0IsVUFBVUM7SUFDL0I7SUFFQSxPQUFPdEMsV0FBV0csSUFBSSxDQUFDOEIsVUFBVUMsU0FBU0U7QUFDNUMsRUFBRTtBQUVGLE9BQU8sTUFBTU8sbUJBQW1CLENBQUNWLFVBQWtCQyxVQUFrQixJQUFJLEVBQUVDLFNBQWlCLENBQUM7SUFDM0YsTUFBTUMsWUFBb0I7SUFDMUIsTUFBTVEsYUFBYSxDQUFDLGFBQWEsRUFBRVgsVUFBVTtJQUU3QyxJQUFHQyxZQUFZLE1BQU07UUFDbkIsTUFBTVcsZ0JBQWdCdkMsWUFBWTRCLFNBQVNVO1FBQzNDLElBQUczQyxXQUFXNEMsZ0JBQWdCO1lBQzVCLE9BQU9BO1FBQ1Q7SUFDRjtJQUVBLE1BQU1DLGNBQWN4QyxZQUFZSyxRQUFRQyxHQUFHLElBQUlnQztJQUMvQyxJQUFHM0MsV0FBVzZDLGNBQWM7UUFDMUIsT0FBT0E7SUFDVDtJQUVBLElBQUdYLFFBQVE7UUFDVCxNQUFNRSxXQUFtQnJDLFdBQVdHLElBQUksQ0FBQ3lDLFlBQVlWLFNBQVNFO1FBQzlELE1BQU1FLGVBQXVCQyxNQUFNSCxXQUFXSSxJQUFJLENBQUMsTUFBTUMsR0FBRyxDQUFDLElBQU0sT0FBT0MsSUFBSSxDQUFDO1FBQy9FLE9BQU9wQyxZQUFZK0IsVUFBVUM7SUFDL0I7SUFFQSxPQUFPdEMsV0FBV0csSUFBSSxDQUFDeUMsWUFBWVYsU0FBU0UsY0FBYyxDQUFDLGNBQWMsRUFBRUgsVUFBVTtBQUN2RixFQUFFO0FBRUYsT0FBTyxNQUFNYyxjQUFjLENBQUNDO0lBQzFCLE1BQU1DLFVBQVV4QztJQUNoQixNQUFNbUMsYUFBcUIsQ0FBQyxhQUFhLEVBQUVJLFlBQVk7SUFFdkQsTUFBTUYsY0FBY3hDLFlBQVlLLFFBQVFDLEdBQUcsSUFBSWdDO0lBQy9DLElBQUczQyxXQUFXNkMsY0FBYztRQUMxQixPQUFPQTtJQUNUO0lBRUEsTUFBTUksV0FBbUJsRCxXQUFXRyxJQUFJLENBQUN5QyxZQUFZSztJQUNyRCxJQUFHQyxZQUFZakQsV0FBV2lELFdBQVc7UUFDbkMsT0FBT0E7SUFDVDtJQUVBLE1BQU1DLFlBQW9CbkQsV0FBV0csSUFBSSxDQUFDeUMsWUFBWSxNQUFNLE9BQU8sQ0FBQyxFQUFFLEVBQUVBLFlBQVk7SUFDcEYsT0FBT087QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNQyxvQkFBb0IsQ0FBQ0MsWUFBb0JDO0lBQ3BELE1BQU1DLFNBQVMvQyxVQUFVZ0QsU0FBUztJQUVsQyxNQUFNQyxhQUFhbkQsWUFBWWlELFFBQVEsQ0FBQyxrQkFBa0IsRUFBRUYsWUFBWTtJQUN4RSxJQUFHcEQsV0FBV3dELGFBQWE7UUFDekIsT0FBT0E7SUFDVDtJQUVBLElBQUdILGFBQWE7UUFDZCxNQUFNSSxvQkFBb0JwRCxZQUFZaUQsUUFBUSxDQUFDLGFBQWEsRUFBRUQsWUFBWSxLQUFLLEVBQUVELFlBQVk7UUFDN0YsSUFBR3BELFdBQVd5RCxvQkFBb0I7WUFDaEMsT0FBT0E7UUFDVDtRQUVBLE1BQU1DLHNCQUFzQnJELFlBQVlpRCxRQUFRLENBQUMsYUFBYSxFQUFFRCxZQUFZLEtBQUssRUFBRUQsV0FBVyxHQUFHLENBQUM7UUFDbEcsSUFBR3BELFdBQVcwRCxzQkFBc0I7WUFDbEMsT0FBT0E7UUFDVDtRQUVBLE1BQU1DLHVCQUF1QnRELFlBQVlpRCxRQUFRLENBQUMsYUFBYSxFQUFFRCxZQUFZLEtBQUssRUFBRUQsV0FBVyxJQUFJLENBQUM7UUFDcEcsSUFBR3BELFdBQVcyRCx1QkFBdUI7WUFDbkMsT0FBT0E7UUFDVDtJQUNGO0lBRUEsTUFBTUMsYUFBYSxDQUFDM0M7UUFDbEIsSUFBSTRDLFdBQVc1QztRQUNmLElBQUksSUFBSU8sSUFBSSxHQUFHQSxJQUFJLEdBQUdBLElBQUs7WUFDekIsTUFBTXNDLGtCQUFrQnpELFlBQVl3RCxVQUFVLENBQUMsa0JBQWtCLEVBQUVULFlBQVk7WUFDL0UsSUFBR3BELFdBQVc4RCxrQkFBa0I7Z0JBQzlCLE9BQU9BO1lBQ1Q7WUFDQSxNQUFNQyxZQUFZMUQsWUFBWXdELFVBQVU7WUFDeEMsSUFBR0UsY0FBY0YsVUFBVTtnQkFDekI7WUFDRjtZQUNBQSxXQUFXRTtRQUNiO1FBQ0EsT0FBTztJQUNUO0lBRUEsTUFBTUMsVUFBVUosV0FBV2xELFFBQVFDLEdBQUc7SUFDdEMsSUFBR3FELFNBQVM7UUFDVixPQUFPQTtJQUNUO0lBRUEsTUFBTUMsVUFBVUwsV0FBV047SUFDM0IsSUFBR1csU0FBUztRQUNWLE9BQU9BO0lBQ1Q7SUFFQSxPQUFPO0FBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTUMsc0JBQXNCO0lBQ2pDLE1BQU1DLG1CQUFtQjtRQUFDO0tBQWtCO0lBRTVDLEtBQUksTUFBTUMsV0FBV0QsaUJBQWtCO1FBQ3JDLE1BQU1FLFFBQVFsRSxTQUFTaUUsU0FBUztZQUM5QnpELEtBQUtELFFBQVFDLEdBQUc7WUFDaEIyRCxRQUFRO2dCQUFDO2dCQUFzQjtnQkFBYztnQkFBYTtnQkFBZTthQUFtQjtRQUM5RjtRQUVBLElBQUdELE1BQU1FLE1BQU0sR0FBRyxHQUFHO1lBQ25CLE9BQU9sRSxZQUFZSyxRQUFRQyxHQUFHLElBQUkwRCxLQUFLLENBQUMsRUFBRTtRQUM1QztJQUNGO0lBRUEsT0FBTztBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1HLHNCQUFzQixDQUFDQztJQUNsQyxNQUFNQyx1QkFBdUI7UUFDM0JyRSxZQUFZSyxRQUFRQyxHQUFHLElBQUk7UUFDM0JOLFlBQVlLLFFBQVFDLEdBQUcsSUFBSTtRQUMzQk4sWUFBWUssUUFBUUMsR0FBRyxJQUFJLDJCQUEyQjtRQUN0RE4sWUFBWUssUUFBUUMsR0FBRyxJQUFJLDJCQUEyQjtRQUN0RE4sWUFBWW9FLGdCQUFnQjtRQUM1QnBFLFlBQVlvRSxnQkFBZ0I7UUFDNUJwRSxZQUFZSyxRQUFRUSxHQUFHLENBQUN5RCxRQUFRLElBQUksNEJBQTRCO1FBQ2hFdEUsWUFBWUssUUFBUVEsR0FBRyxDQUFDeUQsUUFBUSxJQUFJLDRCQUE0QjtLQUNqRTtJQUVELElBQUlDLGNBQWM7SUFFbEIsS0FBSSxNQUFNQyxRQUFRSCxxQkFBc0I7UUFDdEMsSUFBRzFFLFdBQVc2RSxPQUFPO1lBQ25CRCxjQUFjQztZQUNkO1FBQ0Y7SUFDRjtJQUVBLElBQUcsQ0FBQ0QsYUFBYTtRQUNmLElBQUk7WUFDRixNQUFNRSxpQkFBaUJoRTtZQUN2QixNQUFNaUUsZ0JBQWdCekUsUUFBUXdFO1lBQzlCLE1BQU1FLGdCQUFnQjNFLFlBQVkwRSxlQUFlO1lBQ2pELE1BQU1FLGdCQUFnQjVFLFlBQVkwRSxlQUFlO1lBRWpELElBQUcvRSxXQUFXZ0YsZ0JBQWdCO2dCQUM1QkosY0FBY0k7WUFDaEIsT0FBTyxJQUFHaEYsV0FBV2lGLGdCQUFnQjtnQkFDbkNMLGNBQWNLO1lBQ2hCLE9BQU87Z0JBQ0xMLGNBQWM7WUFDaEI7UUFDRixFQUFFLE9BQUs7WUFDTEEsY0FBYztRQUNoQjtJQUNGO0lBRUEsTUFBTU0sNkJBQTZCO1FBQ2pDN0UsWUFBWUssUUFBUUMsR0FBRyxJQUFJO1FBQzNCTixZQUFZSyxRQUFRQyxHQUFHLElBQUk7UUFDM0JOLFlBQVlLLFFBQVFDLEdBQUcsSUFBSTtRQUMzQk4sWUFBWUssUUFBUUMsR0FBRyxJQUFJO1FBQzNCTixZQUFZb0UsZ0JBQWdCO1FBQzVCcEUsWUFBWW9FLGdCQUFnQjtRQUM1QnBFLFlBQVlLLFFBQVFRLEdBQUcsQ0FBQ3lELFFBQVEsSUFBSSw0QkFBNEI7UUFDaEV0RSxZQUFZSyxRQUFRUSxHQUFHLENBQUN5RCxRQUFRLElBQUksNEJBQTRCO0tBQ2pFO0lBRUQsSUFBSVEsZ0JBQWdCO0lBRXBCLEtBQUksTUFBTU4sUUFBUUssMkJBQTRCO1FBQzVDLElBQUdsRixXQUFXNkUsT0FBTztZQUNuQk0sZ0JBQWdCTjtZQUNoQjtRQUNGO0lBQ0Y7SUFFQSxJQUFHLENBQUNNLGVBQWU7UUFDakIsTUFBTUwsaUJBQWlCaEU7UUFDdkIsTUFBTWlFLGdCQUFnQnpFLFFBQVF3RTtRQUM5QixNQUFNTSxtQkFBbUIvRSxZQUFZMEUsZUFBZTtRQUVwRCxJQUFHL0UsV0FBV29GLG1CQUFtQjtZQUMvQkQsZ0JBQWdCQztRQUNsQixPQUFPO1lBQ0xELGdCQUFnQjlFLFlBQVlvRSxnQkFBZ0I7UUFDOUM7SUFDRjtJQUVBLE9BQU87UUFBQ1U7UUFBZVA7SUFBVztBQUNwQyxFQUFFIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/lex",
3
- "version": "1.51.5",
3
+ "version": "1.51.7",
4
4
  "description": "Lex",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Manual test script to verify static file serving
4
+ * This script starts the dev server and tests static file access
5
+ */
6
+
7
+ import {spawn} from 'child_process';
8
+ import {createConnection} from 'net';
9
+ import {join} from 'path';
10
+ import {fileURLToPath} from 'url';
11
+ import {dirname} from 'path';
12
+
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
15
+ const projectRoot = join(__dirname, '..');
16
+
17
+ const testPort = 3002;
18
+ const lexPath = join(projectRoot, 'lib', 'lex.js');
19
+
20
+ console.log('๐Ÿงช Starting dev server to test static file serving...');
21
+ console.log(` Port: ${testPort}`);
22
+ console.log(` Static path: ${join(projectRoot, 'src', 'static')}`);
23
+ console.log(` Test file: ${join(projectRoot, 'src', 'static', 'test.txt')}\n`);
24
+
25
+ const devServerProcess = spawn('node', [lexPath, 'dev', '--port', testPort.toString()], {
26
+ cwd: projectRoot,
27
+ stdio: 'inherit',
28
+ env: {
29
+ ...process.env,
30
+ NODE_ENV: 'development'
31
+ }
32
+ });
33
+
34
+ const checkPort = (port) => {
35
+ return new Promise((resolve) => {
36
+ const socket = createConnection(port, 'localhost');
37
+ socket.on('connect', () => {
38
+ socket.destroy();
39
+ resolve(true);
40
+ });
41
+ socket.on('error', () => {
42
+ resolve(false);
43
+ });
44
+ socket.setTimeout(2000, () => {
45
+ socket.destroy();
46
+ resolve(false);
47
+ });
48
+ });
49
+ };
50
+
51
+ const waitForServer = async () => {
52
+ console.log('โณ Waiting for server to start...');
53
+ for (let i = 0; i < 60; i++) {
54
+ await new Promise(resolve => setTimeout(resolve, 1000));
55
+ const portOpen = await checkPort(testPort);
56
+ if (portOpen) {
57
+ console.log(`โœ… Server is running on port ${testPort}\n`);
58
+ return true;
59
+ }
60
+ if (i % 5 === 4) {
61
+ process.stdout.write('.');
62
+ }
63
+ }
64
+ return false;
65
+ };
66
+
67
+ const testStaticFile = async () => {
68
+ try {
69
+ console.log('๐ŸŒ Testing static file access...');
70
+ const response = await fetch(`http://localhost:${testPort}/test.txt`);
71
+ console.log(` Status: ${response.status}`);
72
+ console.log(` Headers:`, Object.fromEntries(response.headers.entries()));
73
+
74
+ if (response.ok) {
75
+ const content = await response.text();
76
+ console.log(` Content: "${content}"`);
77
+ console.log('\nโœ… Static file is accessible!');
78
+ return true;
79
+ } else {
80
+ console.log(`\nโŒ Static file returned status ${response.status}`);
81
+ const text = await response.text();
82
+ console.log(` Response: ${text.substring(0, 200)}`);
83
+ return false;
84
+ }
85
+ } catch (error) {
86
+ console.log(`\nโŒ Error accessing static file: ${error.message}`);
87
+ return false;
88
+ }
89
+ };
90
+
91
+ waitForServer().then(async (serverReady) => {
92
+ if (!serverReady) {
93
+ console.log('\nโŒ Server did not start within 60 seconds');
94
+ devServerProcess.kill('SIGTERM');
95
+ process.exit(1);
96
+ }
97
+
98
+ // Give it a moment to fully initialize
99
+ await new Promise(resolve => setTimeout(resolve, 2000));
100
+
101
+ const success = await testStaticFile();
102
+
103
+ console.log('\n๐Ÿ›‘ Stopping dev server...');
104
+ devServerProcess.kill('SIGTERM');
105
+ setTimeout(() => {
106
+ if (!devServerProcess.killed) {
107
+ devServerProcess.kill('SIGKILL');
108
+ }
109
+ process.exit(success ? 0 : 1);
110
+ }, 1000);
111
+ });
112
+
113
+ devServerProcess.on('error', (error) => {
114
+ console.error('โŒ Failed to start dev server:', error.message);
115
+ process.exit(1);
116
+ });
117
+