@brainfish-ai/devdoc 0.1.24 → 0.1.25

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.
@@ -232,16 +232,34 @@ async function create(projectDirectory, options) {
232
232
  process.exit(1);
233
233
  }
234
234
  // Check subdomain availability via API (server validates blacklist)
235
- logger_1.logger.info(`Checking if ${subdomain}.devdoc.sh is available...`);
236
- const availability = await checkSubdomainAvailability(subdomain, apiUrl);
237
- if (!availability.available) {
238
- logger_1.logger.error(availability.error || `Subdomain "${subdomain}" is not available`);
239
- if (availability.suggestion) {
240
- logger_1.logger.info(`Suggestion: Try "${availability.suggestion}"`);
235
+ // Loop until we find an available subdomain
236
+ let subdomainAvailable = false;
237
+ while (!subdomainAvailable) {
238
+ logger_1.logger.info(`Checking if ${subdomain}.devdoc.sh is available...`);
239
+ const availability = await checkSubdomainAvailability(subdomain, apiUrl);
240
+ if (!availability.available) {
241
+ console.log();
242
+ logger_1.logger.warn(availability.error || `Subdomain "${subdomain}" is not available`);
243
+ const suggestion = availability.suggestion || `${subdomain}-docs`;
244
+ console.log();
245
+ logger_1.logger.info(`Suggestion: ${suggestion}.devdoc.sh`);
246
+ console.log();
247
+ // Prompt for new subdomain
248
+ subdomain = await prompt('Enter a different subdomain', suggestion);
249
+ subdomain = subdomain.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/^-|-$/g, '');
250
+ // Validate format
251
+ const formatCheck = isValidSubdomainFormat(subdomain);
252
+ if (!formatCheck.valid) {
253
+ logger_1.logger.error(formatCheck.error);
254
+ continue;
255
+ }
256
+ console.log();
257
+ }
258
+ else {
259
+ subdomainAvailable = true;
260
+ logger_1.logger.success(`✓ ${subdomain}.devdoc.sh is available!`);
241
261
  }
242
- process.exit(1);
243
262
  }
244
- logger_1.logger.success(`✓ ${subdomain}.devdoc.sh is available!`);
245
263
  // Check if directory exists
246
264
  if (fs_extra_1.default.existsSync(resolvedPath)) {
247
265
  const files = fs_extra_1.default.readdirSync(resolvedPath);
@@ -354,4 +372,4 @@ async function create(projectDirectory, options) {
354
372
  console.log('Happy documenting! 📚');
355
373
  console.log();
356
374
  }
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4TEEsd0JBbU1DO0FBallELGlEQUF5QztBQUN6QyxnREFBd0I7QUFDeEIsd0RBQTBCO0FBQzFCLCtDQUE0QztBQUM1QywrQ0FBa0Q7QUFFbEQsc0JBQXNCO0FBQ3RCLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLEtBQUssRUFBRTtRQUNMLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLGlEQUFpRDtLQUMvRDtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLHlEQUF5RDtLQUN2RTtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLDJDQUEyQztLQUN6RDtDQUNPLENBQUM7QUFrQlgsc0NBQXNDO0FBQ3RDLEtBQUssVUFBVSxNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFxQjtJQUMzRCxNQUFNLFFBQVEsR0FBRyx3REFBYSxVQUFVLEdBQUMsQ0FBQztJQUMxQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sZUFBZSxHQUFHLFlBQVk7WUFDbEMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxLQUFLLFlBQVksS0FBSztZQUNuQyxDQUFDLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQztRQUVwQixFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLEVB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SUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDcEQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDckMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyJztcbmltcG9ydCB7IERFRkFVTFRfQVBJX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbi8vIEF2YWlsYWJsZSB0ZW1wbGF0ZXNcbmNvbnN0IFRFTVBMQVRFUyA9IHtcbiAgYmFzaWM6IHtcbiAgICBuYW1lOiAnQmFzaWMnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2ltcGxlIGRvY3VtZW50YXRpb24gc2l0ZSB3aXRoIGd1aWRlcyBhbmQgcGFnZXMnLFxuICB9LFxuICBvcGVuYXBpOiB7XG4gICAgbmFtZTogJ09wZW5BUEknLFxuICAgIGRlc2NyaXB0aW9uOiAnRG9jdW1lbnRhdGlvbiB3aXRoIFJFU1QgQVBJIHJlZmVyZW5jZSAoT3BlbkFQSS9Td2FnZ2VyKScsXG4gIH0sXG4gIGdyYXBocWw6IHtcbiAgICBuYW1lOiAnR3JhcGhRTCcsXG4gICAgZGVzY3JpcHRpb246ICdEb2N1bWVudGF0aW9uIHdpdGggR3JhcGhRTCBBUEkgcGxheWdyb3VuZCcsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG50eXBlIFRlbXBsYXRlVHlwZSA9IGtleW9mIHR5cGVvZiBURU1QTEFURVM7XG5cbmludGVyZmFjZSBDcmVhdGVPcHRpb25zIHtcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVR5cGU7XG4gIGdpdD86IGJvb2xlYW47XG4gIGluc3RhbGw/OiBib29sZWFuO1xuICB1cmw/OiBzdHJpbmc7XG4gIHN1YmRvbWFpbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENoZWNrU3ViZG9tYWluUmVzcG9uc2Uge1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nO1xuICBzdWdnZXN0aW9uPzogc3RyaW5nO1xufVxuXG4vLyBTaW1wbGUgcHJvbXB0IGhlbHBlciB1c2luZyByZWFkbGluZVxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0KHF1ZXN0aW9uOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJlYWRsaW5lID0gYXdhaXQgaW1wb3J0KCdyZWFkbGluZScpO1xuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheVF1ZXN0aW9uID0gZGVmYXVsdFZhbHVlIFxuICAgICAgPyBgJHtxdWVzdGlvbn0gKCR7ZGVmYXVsdFZhbHVlfSk6IGBcbiAgICAgIDogYCR7cXVlc3Rpb259OiBgO1xuICAgIFxuICAgIHJsLnF1ZXN0aW9uKGRpc3BsYXlRdWVzdGlvbiwgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIHJlc29sdmUoYW5zd2VyLnRyaW0oKSB8fCBkZWZhdWx0VmFsdWUgfHwgJycpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0U2VsZWN0KHF1ZXN0aW9uOiBzdHJpbmcsIGNob2ljZXM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zb2xlLmxvZyhgXFxuJHtxdWVzdGlvbn1cXG5gKTtcbiAgY2hvaWNlcy5mb3JFYWNoKChjaG9pY2UsIGkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgICAke2kgKyAxfS4gJHtjaG9pY2UubGFiZWx9YCk7XG4gIH0pO1xuICBjb25zb2xlLmxvZygpO1xuICBcbiAgY29uc3QgcmVhZGxpbmUgPSBhd2FpdCBpbXBvcnQoJ3JlYWRsaW5lJyk7XG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBybC5xdWVzdGlvbignRW50ZXIgbnVtYmVyOiAnLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChhbnN3ZXIudHJpbSgpLCAxMCkgLSAxO1xuICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBjaG9pY2VzLmxlbmd0aCkge1xuICAgICAgICByZXNvbHZlKGNob2ljZXNbaW5kZXhdLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERlZmF1bHQgdG8gZmlyc3QgY2hvaWNlXG4gICAgICAgIHJlc29sdmUoY2hvaWNlc1swXS52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcm9tcHRDb25maXJtKHF1ZXN0aW9uOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZSA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHJlYWRsaW5lID0gYXdhaXQgaW1wb3J0KCdyZWFkbGluZScpO1xuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgaGludCA9IGRlZmF1bHRWYWx1ZSA/ICdbWS9uXScgOiAnW3kvTl0nO1xuICAgIHJsLnF1ZXN0aW9uKGAke3F1ZXN0aW9ufSAke2hpbnR9OiBgLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGFuc3dlci50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChub3JtYWxpemVkID09PSAnJykge1xuICAgICAgICByZXNvbHZlKGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG5vcm1hbGl6ZWQgPT09ICd5JyB8fCBub3JtYWxpemVkID09PSAneWVzJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb2plY3ROYW1lKG5hbWU6IHN0cmluZyk6IHsgdmFsaWQ6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnUHJvamVjdCBuYW1lIGlzIHJlcXVpcmVkJyB9O1xuICB9XG4gIFxuICAvLyBDaGVjayBmb3IgdmFsaWQgbnBtIHBhY2thZ2UgbmFtZVxuICBpZiAoIS9eW2EtejAtOV1bYS16MC05LS5fXSokL2kudGVzdChuYW1lKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdJbnZhbGlkIHByb2plY3QgbmFtZS4gVXNlIGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgZGFzaGVzLicgfTtcbiAgfVxuICBcbiAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfTtcbn1cblxuLyoqXG4gKiBCYXNpYyBzdWJkb21haW4gZm9ybWF0IHZhbGlkYXRpb24gKHNlcnZlciBkb2VzIGZ1bGwgdmFsaWRhdGlvbiBpbmNsdWRpbmcgYmxhY2tsaXN0KVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkU3ViZG9tYWluRm9ybWF0KHN1YmRvbWFpbjogc3RyaW5nKTogeyB2YWxpZDogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmcgfSB7XG4gIGlmICghc3ViZG9tYWluKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBpcyByZXF1aXJlZCcgfTtcbiAgfVxuICBcbiAgaWYgKHN1YmRvbWFpbi5sZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycycgfTtcbiAgfVxuICBcbiAgaWYgKHN1YmRvbWFpbi5sZW5ndGggPiA2Mykge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gbXVzdCBiZSA2MyBjaGFyYWN0ZXJzIG9yIGxlc3MnIH07XG4gIH1cbiAgXG4gIGlmICghL15bYS16MC05XShbYS16MC05LV0qW2EtejAtOV0pPyQvLnRlc3Qoc3ViZG9tYWluKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gbXVzdCBzdGFydCBhbmQgZW5kIHdpdGggYWxwaGFudW1lcmljLCBjYW4gY29udGFpbiBoeXBoZW5zJyB9O1xuICB9XG4gIFxuICBpZiAoLy0tLy50ZXN0KHN1YmRvbWFpbikpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIGNhbm5vdCBjb250YWluIGNvbnNlY3V0aXZlIGh5cGhlbnMnIH07XG4gIH1cbiAgXG4gIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG59XG5cbi8qKlxuICogQ2hlY2sgc3ViZG9tYWluIGF2YWlsYWJpbGl0eSB2aWEgQVBJIChhbHNvIHZhbGlkYXRlcyBhZ2FpbnN0IHNlcnZlciBibGFja2xpc3QpXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrU3ViZG9tYWluQXZhaWxhYmlsaXR5KFxuICBzdWJkb21haW46IHN0cmluZyxcbiAgYXBpVXJsOiBzdHJpbmdcbik6IFByb21pc2U8Q2hlY2tTdWJkb21haW5SZXNwb25zZT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YXBpVXJsfS9hcGkvc3ViZG9tYWlucy9jaGVja2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgc3ViZG9tYWluIH0pLFxuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBDaGVja1N1YmRvbWFpblJlc3BvbnNlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2gge1xuICAgIC8vIElmIEFQSSBpcyB1bmF2YWlsYWJsZSwgYWxsb3cgcHJvY2VlZGluZyAod2lsbCBmYWlsIGF0IHJlZ2lzdHJhdGlvbiBpZiBpbnZhbGlkKVxuICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFByb2plY3ROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lXG4gICAgLnJlcGxhY2UoLy0vZywgJyAnKVxuICAgIC5yZXBsYWNlKC9cXGJcXHcvZywgKGNoYXIpID0+IGNoYXIudG9VcHBlckNhc2UoKSk7XG59XG5cbmZ1bmN0aW9uIGdldFBhY2thZ2VNYW5hZ2VyKCk6IHN0cmluZyB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHByb2Nlc3MuZW52Lm5wbV9jb25maWdfdXNlcl9hZ2VudCB8fCAnJztcbiAgXG4gIGlmICh1c2VyQWdlbnQuc3RhcnRzV2l0aCgneWFybicpKSB7XG4gICAgcmV0dXJuICd5YXJuJztcbiAgfVxuICBcbiAgaWYgKHVzZXJBZ2VudC5zdGFydHNXaXRoKCdwbnBtJykpIHtcbiAgICByZXR1cm4gJ3BucG0nO1xuICB9XG4gIFxuICByZXR1cm4gJ25wbSc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGUocHJvamVjdERpcmVjdG9yeTogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcHRpb25zOiBDcmVhdGVPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGxvZ2dlci5pbmZvKCfwn5CfIENyZWF0ZSBEZXZEb2MgRG9jJyk7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgY29uc3QgYXBpVXJsID0gb3B0aW9ucy51cmwgfHwgcHJvY2Vzcy5lbnYuREVWRE9DX0FQSV9VUkwgfHwgREVGQVVMVF9BUElfVVJMO1xuXG4gIC8vIEdldCBwcm9qZWN0IG5hbWUgaWYgbm90IHByb3ZpZGVkXG4gIGxldCBwcm9qZWN0UGF0aCA9IHByb2plY3REaXJlY3Rvcnk7XG5cbiAgaWYgKCFwcm9qZWN0UGF0aCkge1xuICAgIHByb2plY3RQYXRoID0gYXdhaXQgcHJvbXB0KCdXaGF0IGlzIHlvdXIgcHJvamVjdCBuYW1lZD8nLCAnbXktZG9jcycpO1xuICAgIFxuICAgIGlmICghcHJvamVjdFBhdGgpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignUHJvamVjdCBuYW1lIGlzIHJlcXVpcmVkJyk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVmFsaWRhdGUgcHJvamVjdCBuYW1lXG4gIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb2plY3ROYW1lKHByb2plY3RQYXRoKTtcbiAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgbG9nZ2VyLmVycm9yKHZhbGlkYXRpb24uZXJyb3IgfHwgJ0ludmFsaWQgcHJvamVjdCBuYW1lJyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgLy8gR2V0IHRlbXBsYXRlIHNlbGVjdGlvbiBpZiBub3QgcHJvdmlkZWRcbiAgbGV0IHRlbXBsYXRlOiBUZW1wbGF0ZVR5cGUgPSBvcHRpb25zLnRlbXBsYXRlIHx8ICdiYXNpYyc7XG4gIFxuICBpZiAoIW9wdGlvbnMudGVtcGxhdGUpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZUNob2ljZXMgPSBPYmplY3QuZW50cmllcyhURU1QTEFURVMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgdmFsdWU6IGtleSxcbiAgICAgIGxhYmVsOiBgJHt2YWx1ZS5uYW1lfSAtICR7dmFsdWUuZGVzY3JpcHRpb259YCxcbiAgICB9KSk7XG5cbiAgICB0ZW1wbGF0ZSA9IGF3YWl0IHByb21wdFNlbGVjdCgnV2hpY2ggdGVtcGxhdGUgd291bGQgeW91IGxpa2UgdG8gdXNlPycsIHRlbXBsYXRlQ2hvaWNlcykgYXMgVGVtcGxhdGVUeXBlO1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBmdWxsIHBhdGhcbiAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcGF0aC5yZXNvbHZlKHByb2plY3RQYXRoKTtcbiAgY29uc3QgcHJvamVjdE5hbWUgPSBwYXRoLmJhc2VuYW1lKHJlc29sdmVkUGF0aCk7XG4gIGNvbnN0IHNsdWcgPSBwcm9qZWN0TmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKS5yZXBsYWNlKC9eLXwtJC9nLCAnJyk7XG5cbiAgLy8gR2V0IHN1YmRvbWFpbiAtIHByb21wdCBpZiBub3QgcHJvdmlkZWRcbiAgbGV0IHN1YmRvbWFpbiA9IG9wdGlvbnMuc3ViZG9tYWluO1xuICBcbiAgaWYgKCFzdWJkb21haW4pIHtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIHN1YmRvbWFpbiA9IGF3YWl0IHByb21wdChgRW50ZXIgc3ViZG9tYWluIGZvciB5b3VyIGRvY3MgKCR7c2x1Z30uZGV2ZG9jLnNoKWAsIHNsdWcpO1xuICAgIHN1YmRvbWFpbiA9IHN1YmRvbWFpbi50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05LV0vZywgJy0nKS5yZXBsYWNlKC9eLXwtJC9nLCAnJyk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBzdWJkb21haW4gZm9ybWF0IGxvY2FsbHlcbiAgY29uc3QgZm9ybWF0Q2hlY2sgPSBpc1ZhbGlkU3ViZG9tYWluRm9ybWF0KHN1YmRvbWFpbik7XG4gIGlmICghZm9ybWF0Q2hlY2sudmFsaWQpIHtcbiAgICBsb2dnZXIuZXJyb3IoZm9ybWF0Q2hlY2suZXJyb3IhKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICAvLyBDaGVjayBzdWJkb21haW4gYXZhaWxhYmlsaXR5IHZpYSBBUEkgKHNlcnZlciB2YWxpZGF0ZXMgYmxhY2tsaXN0KVxuICBsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgaWYgJHtzdWJkb21haW59LmRldmRvYy5zaCBpcyBhdmFpbGFibGUuLi5gKTtcbiAgY29uc3QgYXZhaWxhYmlsaXR5ID0gYXdhaXQgY2hlY2tTdWJkb21haW5BdmFpbGFiaWxpdHkoc3ViZG9tYWluLCBhcGlVcmwpO1xuICBcbiAgaWYgKCFhdmFpbGFiaWxpdHkuYXZhaWxhYmxlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGF2YWlsYWJpbGl0eS5lcnJvciB8fCBgU3ViZG9tYWluIFwiJHtzdWJkb21haW59XCIgaXMgbm90IGF2YWlsYWJsZWApO1xuICAgIGlmIChhdmFpbGFiaWxpdHkuc3VnZ2VzdGlvbikge1xuICAgICAgbG9nZ2VyLmluZm8oYFN1Z2dlc3Rpb246IFRyeSBcIiR7YXZhaWxhYmlsaXR5LnN1Z2dlc3Rpb259XCJgKTtcbiAgICB9XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG4gIFxuICBsb2dnZXIuc3VjY2Vzcyhg4pyTICR7c3ViZG9tYWlufS5kZXZkb2Muc2ggaXMgYXZhaWxhYmxlIWApO1xuXG4gIC8vIENoZWNrIGlmIGRpcmVjdG9yeSBleGlzdHNcbiAgaWYgKGZzLmV4aXN0c1N5bmMocmVzb2x2ZWRQYXRoKSkge1xuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMocmVzb2x2ZWRQYXRoKTtcbiAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgb3ZlcndyaXRlID0gYXdhaXQgcHJvbXB0Q29uZmlybShgRGlyZWN0b3J5ICR7cHJvamVjdE5hbWV9IGlzIG5vdCBlbXB0eS4gQ29udGludWUgYW55d2F5P2AsIGZhbHNlKTtcbiAgICAgIFxuICAgICAgaWYgKCFvdmVyd3JpdGUpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdPcGVyYXRpb24gY2FuY2VsbGVkJyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzZWxlY3RlZFRlbXBsYXRlID0gVEVNUExBVEVTW3RlbXBsYXRlXTtcbiAgY29uc29sZS5sb2coKTtcbiAgbG9nZ2VyLmluZm8oYENyZWF0aW5nIGEgbmV3ICR7c2VsZWN0ZWRUZW1wbGF0ZS5uYW1lfSBEZXZEb2MgZG9jdW1lbnRhdGlvbiBzaXRlIGluICR7cmVzb2x2ZWRQYXRofWApO1xuICBjb25zb2xlLmxvZygpO1xuXG4gIC8vIENyZWF0ZSBwcm9qZWN0IGRpcmVjdG9yeVxuICBmcy5lbnN1cmVEaXJTeW5jKHJlc29sdmVkUGF0aCk7XG5cbiAgLy8gQ29weSB0ZW1wbGF0ZVxuICBjb25zdCB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICd0ZW1wbGF0ZXMnLCB0ZW1wbGF0ZSk7XG4gIFxuICBpZiAoIWZzLmV4aXN0c1N5bmModGVtcGxhdGVEaXIpKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBUZW1wbGF0ZSBcIiR7dGVtcGxhdGV9XCIgbm90IGZvdW5kYCk7XG4gICAgbG9nZ2VyLmRlYnVnKGBMb29rZWQgZm9yIHRlbXBsYXRlIGF0OiAke3RlbXBsYXRlRGlyfWApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKCdDb3B5aW5nIHRlbXBsYXRlIGZpbGVzLi4uJyk7XG4gIGZzLmNvcHlTeW5jKHRlbXBsYXRlRGlyLCByZXNvbHZlZFBhdGgsIHsgb3ZlcndyaXRlOiB0cnVlIH0pO1xuXG4gIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb24gd2l0aCBwcm9qZWN0IG5hbWVcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihyZXNvbHZlZFBhdGgsICdwYWNrYWdlLmpzb24nKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMocGtnUGF0aCkpIHtcbiAgICBjb25zdCBwa2cgPSBmcy5yZWFkSnNvblN5bmMocGtnUGF0aCk7XG4gICAgcGtnLm5hbWUgPSBwcm9qZWN0TmFtZTtcbiAgICBmcy53cml0ZUpzb25TeW5jKHBrZ1BhdGgsIHBrZywgeyBzcGFjZXM6IDIgfSk7XG4gIH1cblxuICAvLyBVcGRhdGUgZG9jcy5qc29uIHdpdGggcHJvamVjdCBuYW1lXG4gIGNvbnN0IGRvY3NQYXRoID0gcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgJ2RvY3MuanNvbicpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhkb2NzUGF0aCkpIHtcbiAgICBjb25zdCBkb2NzID0gZnMucmVhZEpzb25TeW5jKGRvY3NQYXRoKTtcbiAgICBkb2NzLm5hbWUgPSBmb3JtYXRQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSk7XG4gICAgZnMud3JpdGVKc29uU3luYyhkb2NzUGF0aCwgZG9jcywgeyBzcGFjZXM6IDIgfSk7XG4gIH1cblxuICAvLyBDcmVhdGUgLmRldmRvYy5qc29uIHdpdGggc3ViZG9tYWluIChub3QgcmVnaXN0ZXJlZCB1bnRpbCBkZXBsb3kpXG4gIC8vIFRoZSBzdWJkb21haW4gd2lsbCBvbmx5IGJlIHJlc2VydmVkIHdoZW4gdGhlIHVzZXIgYWN0dWFsbHkgZGVwbG95c1xuICBjb25zdCBkZXZkb2NDb25maWdQYXRoID0gcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgJy5kZXZkb2MuanNvbicpO1xuICBcbiAgY29uc3QgZGV2ZG9jQ29uZmlnID0ge1xuICAgIHByb2plY3RJZDogYCR7c2x1Z30tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOCl9YCxcbiAgICBuYW1lOiBmb3JtYXRQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSksXG4gICAgc2x1Zzogc2x1ZyxcbiAgICBzdWJkb21haW46IHN1YmRvbWFpbixcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAvLyBOb3RlOiBObyBhcGlLZXkgLSBzdWJkb21haW4gaXMgbm90IHJlc2VydmVkIHVudGlsIGRlcGxveVxuICB9O1xuICBmcy53cml0ZUpzb25TeW5jKGRldmRvY0NvbmZpZ1BhdGgsIGRldmRvY0NvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gIGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIC5kZXZkb2MuanNvbicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBTdWJkb21haW46JywgYCR7c3ViZG9tYWlufS5kZXZkb2Muc2hgKTtcbiAgY29uc29sZS5sb2coJyAgU3RhdHVzOicsICdOb3QgeWV0IGRlcGxveWVkIChzdWJkb21haW4gd2lsbCBiZSByZXNlcnZlZCBvbiBmaXJzdCBkZXBsb3kpJyk7XG5cbiAgLy8gSW5pdGlhbGl6ZSBnaXRcbiAgaWYgKG9wdGlvbnMuZ2l0ICE9PSBmYWxzZSkge1xuICAgIGxvZ2dlci5pbmZvKCdJbml0aWFsaXppbmcgZ2l0IHJlcG9zaXRvcnkuLi4nKTtcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBpbml0JywgeyBjd2Q6IHJlc29sdmVkUGF0aCwgc3RkaW86ICdpZ25vcmUnIH0pO1xuICAgICAgZXhlY1N5bmMoJ2dpdCBhZGQgLUEnLCB7IGN3ZDogcmVzb2x2ZWRQYXRoLCBzdGRpbzogJ2lnbm9yZScgfSk7XG4gICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIkluaXRpYWwgY29tbWl0IGZyb20gZGV2ZG9jIGNyZWF0ZVwiJywge1xuICAgICAgICBjd2Q6IHJlc29sdmVkUGF0aCxcbiAgICAgICAgc3RkaW86ICdpZ25vcmUnLFxuICAgICAgfSk7XG4gICAgICBsb2dnZXIuc3VjY2VzcygnR2l0IHJlcG9zaXRvcnkgaW5pdGlhbGl6ZWQnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGxvZ2dlci53YXJuKCdDb3VsZCBub3QgaW5pdGlhbGl6ZSBnaXQgcmVwb3NpdG9yeScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEluc3RhbGwgZGVwZW5kZW5jaWVzXG4gIGlmIChvcHRpb25zLmluc3RhbGwgIT09IGZhbHNlKSB7XG4gICAgbG9nZ2VyLmluZm8oJ0luc3RhbGxpbmcgZGVwZW5kZW5jaWVzLi4uJyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VNYW5hZ2VyID0gZ2V0UGFja2FnZU1hbmFnZXIoKTtcbiAgICAgIGV4ZWNTeW5jKGAke3BhY2thZ2VNYW5hZ2VyfSBpbnN0YWxsYCwge1xuICAgICAgICBjd2Q6IHJlc29sdmVkUGF0aCxcbiAgICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICAgIH0pO1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ0RlcGVuZGVuY2llcyBpbnN0YWxsZWQnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGxvZ2dlci53YXJuKCdDb3VsZCBub3QgaW5zdGFsbCBkZXBlbmRlbmNpZXMnKTtcbiAgICB9XG4gIH1cblxuICAvLyBTdWNjZXNzIG1lc3NhZ2VcbiAgY29uc29sZS5sb2coKTtcbiAgbG9nZ2VyLnN1Y2Nlc3MoYENyZWF0ZWQgJHtwcm9qZWN0TmFtZX0gYXQgJHtyZXNvbHZlZFBhdGh9YCk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCdZb3VyIGRvY3Mgd2lsbCBiZSBhdmFpbGFibGUgYXQ6Jyk7XG4gIGNvbnNvbGUubG9nKGAgIGh0dHBzOi8vJHtzdWJkb21haW59LmRldmRvYy5zaGApO1xuICBjb25zb2xlLmxvZygpO1xuICBsb2dnZXIuaW5mbygnTm90ZTogVGhlIHN1YmRvbWFpbiB3aWxsIGJlIHJlc2VydmVkIHdoZW4geW91IHJ1biBcImRldmRvYyBkZXBsb3lcIicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnSW5zaWRlIHRoYXQgZGlyZWN0b3J5LCB5b3UgY2FuIHJ1biBzZXZlcmFsIGNvbW1hbmRzOicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBucG0gcnVuIGRldicpO1xuICBjb25zb2xlLmxvZygnICAgIFN0YXJ0cyB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyLicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBkZXZkb2MgZGVwbG95Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgRGVwbG95cyBhbmQgY2xhaW1zIHlvdXIgc3ViZG9tYWluLicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnV2Ugc3VnZ2VzdCB0aGF0IHlvdSBiZWdpbiBieSB0eXBpbmc6Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKGAgIGNkICR7cHJvamVjdE5hbWV9YCk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBydW4gZGV2Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCdIYXBweSBkb2N1bWVudGluZyEg8J+TmicpO1xuICBjb25zb2xlLmxvZygpO1xufVxuIl19
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4TEEsd0JBdU5DO0FBclpELGlEQUF5QztBQUN6QyxnREFBd0I7QUFDeEIsd0RBQTBCO0FBQzFCLCtDQUE0QztBQUM1QywrQ0FBa0Q7QUFFbEQsc0JBQXNCO0FBQ3RCLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLEtBQUssRUFBRTtRQUNMLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLGlEQUFpRDtLQUMvRDtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLHlEQUF5RDtLQUN2RTtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLDJDQUEyQztLQUN6RDtDQUNPLENBQUM7QUFrQlgsc0NBQXNDO0FBQ3RDLEtBQUssVUFBVSxNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFxQjtJQUMzRCxNQUFNLFFBQVEsR0FBRyx3REFBYSxVQUFVLEdBQUMsQ0FBQztJQUMxQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sZUFBZSxHQUFHLFlBQVk7WUFDbEMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxLQUFLLFlBQVksS0FBSztZQUNuQyxDQUFDLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQztRQUVwQixFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLEVB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ICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlcic7XG5pbXBvcnQgeyBERUZBVUxUX0FQSV9VUkwgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG4vLyBBdmFpbGFibGUgdGVtcGxhdGVzXG5jb25zdCBURU1QTEFURVMgPSB7XG4gIGJhc2ljOiB7XG4gICAgbmFtZTogJ0Jhc2ljJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NpbXBsZSBkb2N1bWVudGF0aW9uIHNpdGUgd2l0aCBndWlkZXMgYW5kIHBhZ2VzJyxcbiAgfSxcbiAgb3BlbmFwaToge1xuICAgIG5hbWU6ICdPcGVuQVBJJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RvY3VtZW50YXRpb24gd2l0aCBSRVNUIEFQSSByZWZlcmVuY2UgKE9wZW5BUEkvU3dhZ2dlciknLFxuICB9LFxuICBncmFwaHFsOiB7XG4gICAgbmFtZTogJ0dyYXBoUUwnLFxuICAgIGRlc2NyaXB0aW9uOiAnRG9jdW1lbnRhdGlvbiB3aXRoIEdyYXBoUUwgQVBJIHBsYXlncm91bmQnLFxuICB9LFxufSBhcyBjb25zdDtcblxudHlwZSBUZW1wbGF0ZVR5cGUgPSBrZXlvZiB0eXBlb2YgVEVNUExBVEVTO1xuXG5pbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVUeXBlO1xuICBnaXQ/OiBib29sZWFuO1xuICBpbnN0YWxsPzogYm9vbGVhbjtcbiAgdXJsPzogc3RyaW5nO1xuICBzdWJkb21haW4/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGVja1N1YmRvbWFpblJlc3BvbnNlIHtcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xuICBlcnJvcj86IHN0cmluZztcbiAgc3VnZ2VzdGlvbj86IHN0cmluZztcbn1cblxuLy8gU2ltcGxlIHByb21wdCBoZWxwZXIgdXNpbmcgcmVhZGxpbmVcbmFzeW5jIGZ1bmN0aW9uIHByb21wdChxdWVzdGlvbjogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCByZWFkbGluZSA9IGF3YWl0IGltcG9ydCgncmVhZGxpbmUnKTtcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG4gIH0pO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGRpc3BsYXlRdWVzdGlvbiA9IGRlZmF1bHRWYWx1ZSBcbiAgICAgID8gYCR7cXVlc3Rpb259ICgke2RlZmF1bHRWYWx1ZX0pOiBgXG4gICAgICA6IGAke3F1ZXN0aW9ufTogYDtcbiAgICBcbiAgICBybC5xdWVzdGlvbihkaXNwbGF5UXVlc3Rpb24sIChhbnN3ZXIpID0+IHtcbiAgICAgIHJsLmNsb3NlKCk7XG4gICAgICByZXNvbHZlKGFuc3dlci50cmltKCkgfHwgZGVmYXVsdFZhbHVlIHx8ICcnKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb21wdFNlbGVjdChxdWVzdGlvbjogc3RyaW5nLCBjaG9pY2VzOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc29sZS5sb2coYFxcbiR7cXVlc3Rpb259XFxuYCk7XG4gIGNob2ljZXMuZm9yRWFjaCgoY2hvaWNlLCBpKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCAgJHtpICsgMX0uICR7Y2hvaWNlLmxhYmVsfWApO1xuICB9KTtcbiAgY29uc29sZS5sb2coKTtcbiAgXG4gIGNvbnN0IHJlYWRsaW5lID0gYXdhaXQgaW1wb3J0KCdyZWFkbGluZScpO1xuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcmwucXVlc3Rpb24oJ0VudGVyIG51bWJlcjogJywgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQoYW5zd2VyLnRyaW0oKSwgMTApIC0gMTtcbiAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgY2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzb2x2ZShjaG9pY2VzW2luZGV4XS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEZWZhdWx0IHRvIGZpcnN0IGNob2ljZVxuICAgICAgICByZXNvbHZlKGNob2ljZXNbMF0udmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0Q29uZmlybShxdWVzdGlvbjogc3RyaW5nLCBkZWZhdWx0VmFsdWUgPSBmYWxzZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCByZWFkbGluZSA9IGF3YWl0IGltcG9ydCgncmVhZGxpbmUnKTtcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG4gIH0pO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGhpbnQgPSBkZWZhdWx0VmFsdWUgPyAnW1kvbl0nIDogJ1t5L05dJztcbiAgICBybC5xdWVzdGlvbihgJHtxdWVzdGlvbn0gJHtoaW50fTogYCwgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBhbnN3ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAobm9ybWFsaXplZCA9PT0gJycpIHtcbiAgICAgICAgcmVzb2x2ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShub3JtYWxpemVkID09PSAneScgfHwgbm9ybWFsaXplZCA9PT0gJ3llcycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9qZWN0TmFtZShuYW1lOiBzdHJpbmcpOiB7IHZhbGlkOiBib29sZWFuOyBlcnJvcj86IHN0cmluZyB9IHtcbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1Byb2plY3QgbmFtZSBpcyByZXF1aXJlZCcgfTtcbiAgfVxuICBcbiAgLy8gQ2hlY2sgZm9yIHZhbGlkIG5wbSBwYWNrYWdlIG5hbWVcbiAgaWYgKCEvXlthLXowLTldW2EtejAtOS0uX10qJC9pLnRlc3QobmFtZSkpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnSW52YWxpZCBwcm9qZWN0IG5hbWUuIFVzZSBsb3dlcmNhc2UgbGV0dGVycywgbnVtYmVycywgYW5kIGRhc2hlcy4nIH07XG4gIH1cbiAgXG4gIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG59XG5cbi8qKlxuICogQmFzaWMgc3ViZG9tYWluIGZvcm1hdCB2YWxpZGF0aW9uIChzZXJ2ZXIgZG9lcyBmdWxsIHZhbGlkYXRpb24gaW5jbHVkaW5nIGJsYWNrbGlzdClcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFN1YmRvbWFpbkZvcm1hdChzdWJkb21haW46IHN0cmluZyk6IHsgdmFsaWQ6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuICBpZiAoIXN1YmRvbWFpbikge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gaXMgcmVxdWlyZWQnIH07XG4gIH1cbiAgXG4gIGlmIChzdWJkb21haW4ubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gbXVzdCBiZSBhdCBsZWFzdCAzIGNoYXJhY3RlcnMnIH07XG4gIH1cbiAgXG4gIGlmIChzdWJkb21haW4ubGVuZ3RoID4gNjMpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIG11c3QgYmUgNjMgY2hhcmFjdGVycyBvciBsZXNzJyB9O1xuICB9XG4gIFxuICBpZiAoIS9eW2EtejAtOV0oW2EtejAtOS1dKlthLXowLTldKT8kLy50ZXN0KHN1YmRvbWFpbikpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIG11c3Qgc3RhcnQgYW5kIGVuZCB3aXRoIGFscGhhbnVtZXJpYywgY2FuIGNvbnRhaW4gaHlwaGVucycgfTtcbiAgfVxuICBcbiAgaWYgKC8tLS8udGVzdChzdWJkb21haW4pKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBjYW5ub3QgY29udGFpbiBjb25zZWN1dGl2ZSBoeXBoZW5zJyB9O1xuICB9XG4gIFxuICByZXR1cm4geyB2YWxpZDogdHJ1ZSB9O1xufVxuXG4vKipcbiAqIENoZWNrIHN1YmRvbWFpbiBhdmFpbGFiaWxpdHkgdmlhIEFQSSAoYWxzbyB2YWxpZGF0ZXMgYWdhaW5zdCBzZXJ2ZXIgYmxhY2tsaXN0KVxuICovXG5hc3luYyBmdW5jdGlvbiBjaGVja1N1YmRvbWFpbkF2YWlsYWJpbGl0eShcbiAgc3ViZG9tYWluOiBzdHJpbmcsXG4gIGFwaVVybDogc3RyaW5nXG4pOiBQcm9taXNlPENoZWNrU3ViZG9tYWluUmVzcG9uc2U+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2FwaVVybH0vYXBpL3N1YmRvbWFpbnMvY2hlY2tgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHN1YmRvbWFpbiB9KSxcbiAgICB9KTtcbiAgICBcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgQ2hlY2tTdWJkb21haW5SZXNwb25zZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIHtcbiAgICAvLyBJZiBBUEkgaXMgdW5hdmFpbGFibGUsIGFsbG93IHByb2NlZWRpbmcgKHdpbGwgZmFpbCBhdCByZWdpc3RyYXRpb24gaWYgaW52YWxpZClcbiAgICByZXR1cm4geyBhdmFpbGFibGU6IHRydWUgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRQcm9qZWN0TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZVxuICAgIC5yZXBsYWNlKC8tL2csICcgJylcbiAgICAucmVwbGFjZSgvXFxiXFx3L2csIChjaGFyKSA9PiBjaGFyLnRvVXBwZXJDYXNlKCkpO1xufVxuXG5mdW5jdGlvbiBnZXRQYWNrYWdlTWFuYWdlcigpOiBzdHJpbmcge1xuICBjb25zdCB1c2VyQWdlbnQgPSBwcm9jZXNzLmVudi5ucG1fY29uZmlnX3VzZXJfYWdlbnQgfHwgJyc7XG4gIFxuICBpZiAodXNlckFnZW50LnN0YXJ0c1dpdGgoJ3lhcm4nKSkge1xuICAgIHJldHVybiAneWFybic7XG4gIH1cbiAgXG4gIGlmICh1c2VyQWdlbnQuc3RhcnRzV2l0aCgncG5wbScpKSB7XG4gICAgcmV0dXJuICdwbnBtJztcbiAgfVxuICBcbiAgcmV0dXJuICducG0nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlKHByb2plY3REaXJlY3Rvcnk6IHN0cmluZyB8IHVuZGVmaW5lZCwgb3B0aW9uczogQ3JlYXRlT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zb2xlLmxvZygpO1xuICBsb2dnZXIuaW5mbygn8J+QnyBDcmVhdGUgRGV2RG9jIERvYycpO1xuICBjb25zb2xlLmxvZygpO1xuXG4gIGNvbnN0IGFwaVVybCA9IG9wdGlvbnMudXJsIHx8IHByb2Nlc3MuZW52LkRFVkRPQ19BUElfVVJMIHx8IERFRkFVTFRfQVBJX1VSTDtcblxuICAvLyBHZXQgcHJvamVjdCBuYW1lIGlmIG5vdCBwcm92aWRlZFxuICBsZXQgcHJvamVjdFBhdGggPSBwcm9qZWN0RGlyZWN0b3J5O1xuXG4gIGlmICghcHJvamVjdFBhdGgpIHtcbiAgICBwcm9qZWN0UGF0aCA9IGF3YWl0IHByb21wdCgnV2hhdCBpcyB5b3VyIHByb2plY3QgbmFtZWQ/JywgJ215LWRvY3MnKTtcbiAgICBcbiAgICBpZiAoIXByb2plY3RQYXRoKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ1Byb2plY3QgbmFtZSBpcyByZXF1aXJlZCcpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHByb2plY3QgbmFtZVxuICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9qZWN0TmFtZShwcm9qZWN0UGF0aCk7XG4gIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgIGxvZ2dlci5lcnJvcih2YWxpZGF0aW9uLmVycm9yIHx8ICdJbnZhbGlkIHByb2plY3QgbmFtZScpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIC8vIEdldCB0ZW1wbGF0ZSBzZWxlY3Rpb24gaWYgbm90IHByb3ZpZGVkXG4gIGxldCB0ZW1wbGF0ZTogVGVtcGxhdGVUeXBlID0gb3B0aW9ucy50ZW1wbGF0ZSB8fCAnYmFzaWMnO1xuICBcbiAgaWYgKCFvcHRpb25zLnRlbXBsYXRlKSB7XG4gICAgY29uc3QgdGVtcGxhdGVDaG9pY2VzID0gT2JqZWN0LmVudHJpZXMoVEVNUExBVEVTKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgIHZhbHVlOiBrZXksXG4gICAgICBsYWJlbDogYCR7dmFsdWUubmFtZX0gLSAke3ZhbHVlLmRlc2NyaXB0aW9ufWAsXG4gICAgfSkpO1xuXG4gICAgdGVtcGxhdGUgPSBhd2FpdCBwcm9tcHRTZWxlY3QoJ1doaWNoIHRlbXBsYXRlIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT8nLCB0ZW1wbGF0ZUNob2ljZXMpIGFzIFRlbXBsYXRlVHlwZTtcbiAgfVxuXG4gIC8vIFJlc29sdmUgZnVsbCBwYXRoXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9qZWN0UGF0aCk7XG4gIGNvbnN0IHByb2plY3ROYW1lID0gcGF0aC5iYXNlbmFtZShyZXNvbHZlZFBhdGgpO1xuICBjb25zdCBzbHVnID0gcHJvamVjdE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJykucmVwbGFjZSgvXi18LSQvZywgJycpO1xuXG4gIC8vIEdldCBzdWJkb21haW4gLSBwcm9tcHQgaWYgbm90IHByb3ZpZGVkXG4gIGxldCBzdWJkb21haW4gPSBvcHRpb25zLnN1YmRvbWFpbjtcbiAgXG4gIGlmICghc3ViZG9tYWluKSB7XG4gICAgY29uc29sZS5sb2coKTtcbiAgICBzdWJkb21haW4gPSBhd2FpdCBwcm9tcHQoYEVudGVyIHN1YmRvbWFpbiBmb3IgeW91ciBkb2NzICgke3NsdWd9LmRldmRvYy5zaClgLCBzbHVnKTtcbiAgICBzdWJkb21haW4gPSBzdWJkb21haW4udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS1dL2csICctJykucmVwbGFjZSgvXi18LSQvZywgJycpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgc3ViZG9tYWluIGZvcm1hdCBsb2NhbGx5XG4gIGNvbnN0IGZvcm1hdENoZWNrID0gaXNWYWxpZFN1YmRvbWFpbkZvcm1hdChzdWJkb21haW4pO1xuICBpZiAoIWZvcm1hdENoZWNrLnZhbGlkKSB7XG4gICAgbG9nZ2VyLmVycm9yKGZvcm1hdENoZWNrLmVycm9yISk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgLy8gQ2hlY2sgc3ViZG9tYWluIGF2YWlsYWJpbGl0eSB2aWEgQVBJIChzZXJ2ZXIgdmFsaWRhdGVzIGJsYWNrbGlzdClcbiAgLy8gTG9vcCB1bnRpbCB3ZSBmaW5kIGFuIGF2YWlsYWJsZSBzdWJkb21haW5cbiAgbGV0IHN1YmRvbWFpbkF2YWlsYWJsZSA9IGZhbHNlO1xuICB3aGlsZSAoIXN1YmRvbWFpbkF2YWlsYWJsZSkge1xuICAgIGxvZ2dlci5pbmZvKGBDaGVja2luZyBpZiAke3N1YmRvbWFpbn0uZGV2ZG9jLnNoIGlzIGF2YWlsYWJsZS4uLmApO1xuICAgIGNvbnN0IGF2YWlsYWJpbGl0eSA9IGF3YWl0IGNoZWNrU3ViZG9tYWluQXZhaWxhYmlsaXR5KHN1YmRvbWFpbiwgYXBpVXJsKTtcbiAgICBcbiAgICBpZiAoIWF2YWlsYWJpbGl0eS5hdmFpbGFibGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBsb2dnZXIud2FybihhdmFpbGFiaWxpdHkuZXJyb3IgfHwgYFN1YmRvbWFpbiBcIiR7c3ViZG9tYWlufVwiIGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgICAgIFxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbiA9IGF2YWlsYWJpbGl0eS5zdWdnZXN0aW9uIHx8IGAke3N1YmRvbWFpbn0tZG9jc2A7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgbG9nZ2VyLmluZm8oYFN1Z2dlc3Rpb246ICR7c3VnZ2VzdGlvbn0uZGV2ZG9jLnNoYCk7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgXG4gICAgICAvLyBQcm9tcHQgZm9yIG5ldyBzdWJkb21haW5cbiAgICAgIHN1YmRvbWFpbiA9IGF3YWl0IHByb21wdCgnRW50ZXIgYSBkaWZmZXJlbnQgc3ViZG9tYWluJywgc3VnZ2VzdGlvbik7XG4gICAgICBzdWJkb21haW4gPSBzdWJkb21haW4udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS1dL2csICctJykucmVwbGFjZSgvXi18LSQvZywgJycpO1xuICAgICAgXG4gICAgICAvLyBWYWxpZGF0ZSBmb3JtYXRcbiAgICAgIGNvbnN0IGZvcm1hdENoZWNrID0gaXNWYWxpZFN1YmRvbWFpbkZvcm1hdChzdWJkb21haW4pO1xuICAgICAgaWYgKCFmb3JtYXRDaGVjay52YWxpZCkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoZm9ybWF0Q2hlY2suZXJyb3IhKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YmRvbWFpbkF2YWlsYWJsZSA9IHRydWU7XG4gICAgICBsb2dnZXIuc3VjY2Vzcyhg4pyTICR7c3ViZG9tYWlufS5kZXZkb2Muc2ggaXMgYXZhaWxhYmxlIWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIGRpcmVjdG9yeSBleGlzdHNcbiAgaWYgKGZzLmV4aXN0c1N5bmMocmVzb2x2ZWRQYXRoKSkge1xuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMocmVzb2x2ZWRQYXRoKTtcbiAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgb3ZlcndyaXRlID0gYXdhaXQgcHJvbXB0Q29uZmlybShgRGlyZWN0b3J5ICR7cHJvamVjdE5hbWV9IGlzIG5vdCBlbXB0eS4gQ29udGludWUgYW55d2F5P2AsIGZhbHNlKTtcbiAgICAgIFxuICAgICAgaWYgKCFvdmVyd3JpdGUpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdPcGVyYXRpb24gY2FuY2VsbGVkJyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzZWxlY3RlZFRlbXBsYXRlID0gVEVNUExBVEVTW3RlbXBsYXRlXTtcbiAgY29uc29sZS5sb2coKTtcbiAgbG9nZ2VyLmluZm8oYENyZWF0aW5nIGEgbmV3ICR7c2VsZWN0ZWRUZW1wbGF0ZS5uYW1lfSBEZXZEb2MgZG9jdW1lbnRhdGlvbiBzaXRlIGluICR7cmVzb2x2ZWRQYXRofWApO1xuICBjb25zb2xlLmxvZygpO1xuXG4gIC8vIENyZWF0ZSBwcm9qZWN0IGRpcmVjdG9yeVxuICBmcy5lbnN1cmVEaXJTeW5jKHJlc29sdmVkUGF0aCk7XG5cbiAgLy8gQ29weSB0ZW1wbGF0ZVxuICBjb25zdCB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICd0ZW1wbGF0ZXMnLCB0ZW1wbGF0ZSk7XG4gIFxuICBpZiAoIWZzLmV4aXN0c1N5bmModGVtcGxhdGVEaXIpKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBUZW1wbGF0ZSBcIiR7dGVtcGxhdGV9XCIgbm90IGZvdW5kYCk7XG4gICAgbG9nZ2VyLmRlYnVnKGBMb29rZWQgZm9yIHRlbXBsYXRlIGF0OiAke3RlbXBsYXRlRGlyfWApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKCdDb3B5aW5nIHRlbXBsYXRlIGZpbGVzLi4uJyk7XG4gIGZzLmNvcHlTeW5jKHRlbXBsYXRlRGlyLCByZXNvbHZlZFBhdGgsIHsgb3ZlcndyaXRlOiB0cnVlIH0pO1xuXG4gIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb24gd2l0aCBwcm9qZWN0IG5hbWVcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihyZXNvbHZlZFBhdGgsICdwYWNrYWdlLmpzb24nKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMocGtnUGF0aCkpIHtcbiAgICBjb25zdCBwa2cgPSBmcy5yZWFkSnNvblN5bmMocGtnUGF0aCk7XG4gICAgcGtnLm5hbWUgPSBwcm9qZWN0TmFtZTtcbiAgICBmcy53cml0ZUpzb25TeW5jKHBrZ1BhdGgsIHBrZywgeyBzcGFjZXM6IDIgfSk7XG4gIH1cblxuICAvLyBVcGRhdGUgZG9jcy5qc29uIHdpdGggcHJvamVjdCBuYW1lXG4gIGNvbnN0IGRvY3NQYXRoID0gcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgJ2RvY3MuanNvbicpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhkb2NzUGF0aCkpIHtcbiAgICBjb25zdCBkb2NzID0gZnMucmVhZEpzb25TeW5jKGRvY3NQYXRoKTtcbiAgICBkb2NzLm5hbWUgPSBmb3JtYXRQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSk7XG4gICAgZnMud3JpdGVKc29uU3luYyhkb2NzUGF0aCwgZG9jcywgeyBzcGFjZXM6IDIgfSk7XG4gIH1cblxuICAvLyBDcmVhdGUgLmRldmRvYy5qc29uIHdpdGggc3ViZG9tYWluIChub3QgcmVnaXN0ZXJlZCB1bnRpbCBkZXBsb3kpXG4gIC8vIFRoZSBzdWJkb21haW4gd2lsbCBvbmx5IGJlIHJlc2VydmVkIHdoZW4gdGhlIHVzZXIgYWN0dWFsbHkgZGVwbG95c1xuICBjb25zdCBkZXZkb2NDb25maWdQYXRoID0gcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgJy5kZXZkb2MuanNvbicpO1xuICBcbiAgY29uc3QgZGV2ZG9jQ29uZmlnID0ge1xuICAgIHByb2plY3RJZDogYCR7c2x1Z30tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOCl9YCxcbiAgICBuYW1lOiBmb3JtYXRQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSksXG4gICAgc2x1Zzogc2x1ZyxcbiAgICBzdWJkb21haW46IHN1YmRvbWFpbixcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAvLyBOb3RlOiBObyBhcGlLZXkgLSBzdWJkb21haW4gaXMgbm90IHJlc2VydmVkIHVudGlsIGRlcGxveVxuICB9O1xuICBmcy53cml0ZUpzb25TeW5jKGRldmRvY0NvbmZpZ1BhdGgsIGRldmRvY0NvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gIGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIC5kZXZkb2MuanNvbicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBTdWJkb21haW46JywgYCR7c3ViZG9tYWlufS5kZXZkb2Muc2hgKTtcbiAgY29uc29sZS5sb2coJyAgU3RhdHVzOicsICdOb3QgeWV0IGRlcGxveWVkIChzdWJkb21haW4gd2lsbCBiZSByZXNlcnZlZCBvbiBmaXJzdCBkZXBsb3kpJyk7XG5cbiAgLy8gSW5pdGlhbGl6ZSBnaXRcbiAgaWYgKG9wdGlvbnMuZ2l0ICE9PSBmYWxzZSkge1xuICAgIGxvZ2dlci5pbmZvKCdJbml0aWFsaXppbmcgZ2l0IHJlcG9zaXRvcnkuLi4nKTtcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBpbml0JywgeyBjd2Q6IHJlc29sdmVkUGF0aCwgc3RkaW86ICdpZ25vcmUnIH0pO1xuICAgICAgZXhlY1N5bmMoJ2dpdCBhZGQgLUEnLCB7IGN3ZDogcmVzb2x2ZWRQYXRoLCBzdGRpbzogJ2lnbm9yZScgfSk7XG4gICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIkluaXRpYWwgY29tbWl0IGZyb20gZGV2ZG9jIGNyZWF0ZVwiJywge1xuICAgICAgICBjd2Q6IHJlc29sdmVkUGF0aCxcbiAgICAgICAgc3RkaW86ICdpZ25vcmUnLFxuICAgICAgfSk7XG4gICAgICBsb2dnZXIuc3VjY2VzcygnR2l0IHJlcG9zaXRvcnkgaW5pdGlhbGl6ZWQnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGxvZ2dlci53YXJuKCdDb3VsZCBub3QgaW5pdGlhbGl6ZSBnaXQgcmVwb3NpdG9yeScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEluc3RhbGwgZGVwZW5kZW5jaWVzXG4gIGlmIChvcHRpb25zLmluc3RhbGwgIT09IGZhbHNlKSB7XG4gICAgbG9nZ2VyLmluZm8oJ0luc3RhbGxpbmcgZGVwZW5kZW5jaWVzLi4uJyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VNYW5hZ2VyID0gZ2V0UGFja2FnZU1hbmFnZXIoKTtcbiAgICAgIGV4ZWNTeW5jKGAke3BhY2thZ2VNYW5hZ2VyfSBpbnN0YWxsYCwge1xuICAgICAgICBjd2Q6IHJlc29sdmVkUGF0aCxcbiAgICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICAgIH0pO1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ0RlcGVuZGVuY2llcyBpbnN0YWxsZWQnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGxvZ2dlci53YXJuKCdDb3VsZCBub3QgaW5zdGFsbCBkZXBlbmRlbmNpZXMnKTtcbiAgICB9XG4gIH1cblxuICAvLyBTdWNjZXNzIG1lc3NhZ2VcbiAgY29uc29sZS5sb2coKTtcbiAgbG9nZ2VyLnN1Y2Nlc3MoYENyZWF0ZWQgJHtwcm9qZWN0TmFtZX0gYXQgJHtyZXNvbHZlZFBhdGh9YCk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCdZb3VyIGRvY3Mgd2lsbCBiZSBhdmFpbGFibGUgYXQ6Jyk7XG4gIGNvbnNvbGUubG9nKGAgIGh0dHBzOi8vJHtzdWJkb21haW59LmRldmRvYy5zaGApO1xuICBjb25zb2xlLmxvZygpO1xuICBsb2dnZXIuaW5mbygnTm90ZTogVGhlIHN1YmRvbWFpbiB3aWxsIGJlIHJlc2VydmVkIHdoZW4geW91IHJ1biBcImRldmRvYyBkZXBsb3lcIicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnSW5zaWRlIHRoYXQgZGlyZWN0b3J5LCB5b3UgY2FuIHJ1biBzZXZlcmFsIGNvbW1hbmRzOicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBucG0gcnVuIGRldicpO1xuICBjb25zb2xlLmxvZygnICAgIFN0YXJ0cyB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyLicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBkZXZkb2MgZGVwbG95Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgRGVwbG95cyBhbmQgY2xhaW1zIHlvdXIgc3ViZG9tYWluLicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnV2Ugc3VnZ2VzdCB0aGF0IHlvdSBiZWdpbiBieSB0eXBpbmc6Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKGAgIGNkICR7cHJvamVjdE5hbWV9YCk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBydW4gZGV2Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCdIYXBweSBkb2N1bWVudGluZyEg8J+TmicpO1xuICBjb25zb2xlLmxvZygpO1xufVxuIl19
@@ -143,24 +143,42 @@ async function init(options) {
143
143
  subdomain = subdomain.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/^-|-$/g, '');
144
144
  }
145
145
  // Validate subdomain format locally
146
- const formatCheck = isValidSubdomainFormat(subdomain);
146
+ let formatCheck = isValidSubdomainFormat(subdomain);
147
147
  if (!formatCheck.valid) {
148
148
  logger_1.logger.error(formatCheck.error);
149
149
  process.exit(1);
150
150
  }
151
151
  // Check subdomain availability via API (server validates blacklist)
152
152
  // Note: This only checks availability, it does NOT reserve the subdomain
153
- logger_1.logger.info(`Checking if ${subdomain}.devdoc.sh is available...`);
154
- const availability = await checkSubdomainAvailability(subdomain, apiUrl);
155
- if (!availability.available) {
156
- logger_1.logger.error(availability.error || `Subdomain "${subdomain}" is not available`);
157
- if (availability.suggestion) {
158
- logger_1.logger.info(`Suggestion: Try "${availability.suggestion}"`);
153
+ // Loop until we find an available subdomain
154
+ let subdomainAvailable = false;
155
+ while (!subdomainAvailable) {
156
+ logger_1.logger.info(`Checking if ${subdomain}.devdoc.sh is available...`);
157
+ const availability = await checkSubdomainAvailability(subdomain, apiUrl);
158
+ if (!availability.available) {
159
+ console.log('');
160
+ logger_1.logger.warn(availability.error || `Subdomain "${subdomain}" is not available`);
161
+ const suggestion = availability.suggestion || `${subdomain}-docs`;
162
+ console.log('');
163
+ logger_1.logger.info(`Suggestion: ${suggestion}.devdoc.sh`);
164
+ console.log('');
165
+ // Prompt for new subdomain
166
+ subdomain = await prompt('Enter a different subdomain', suggestion);
167
+ subdomain = subdomain.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/^-|-$/g, '');
168
+ // Validate format
169
+ formatCheck = isValidSubdomainFormat(subdomain);
170
+ if (!formatCheck.valid) {
171
+ logger_1.logger.error(formatCheck.error);
172
+ continue;
173
+ }
174
+ console.log('');
175
+ }
176
+ else {
177
+ subdomainAvailable = true;
178
+ logger_1.logger.success(`✓ ${subdomain}.devdoc.sh is available!`);
179
+ console.log('');
159
180
  }
160
- process.exit(1);
161
181
  }
162
- logger_1.logger.success(`✓ ${subdomain}.devdoc.sh is available!`);
163
- console.log('');
164
182
  // Create .devdoc.json with subdomain (but NO API key - not registered yet)
165
183
  // The subdomain will only be reserved when the user actually deploys
166
184
  const projectId = `${slug}-${generateId()}`;
@@ -197,4 +215,4 @@ function generateSlug(name) {
197
215
  function generateId() {
198
216
  return Math.random().toString(36).substring(2, 8);
199
217
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9HQSxvQkEyRkM7QUEvTEQsZ0RBQXVCO0FBQ3ZCLHdEQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsK0NBQTJDO0FBQzNDLCtDQUFpRDtBQXdCakQsc0NBQXNDO0FBQ3RDLEtBQUssVUFBVSxNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFxQjtJQUMzRCxNQUFNLFFBQVEsR0FBRyx3REFBYSxVQUFVLEdBQUMsQ0FBQTtJQUN6QyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzVELEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLEdBQUcsV0FBVyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwRCxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM5QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxTQUFpQjtJQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSx5Q0FBeUMsRUFBRSxDQUFBO0lBQzNFLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHlDQUF5QyxFQUFFLENBQUE7SUFDM0UsQ0FBQztJQUVELElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUscUVBQXFFLEVBQUUsQ0FBQTtJQUN2RyxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLDhDQUE4QyxFQUFFLENBQUE7SUFDaEYsQ0FBQztJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUE7QUFDeEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsS0FBSyxVQUFVLDBCQUEwQixDQUN2QyxTQUFpQixFQUNqQixNQUFjO0lBRWQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxNQUFNLHVCQUF1QixFQUFFO1lBQzdELE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7WUFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO1NBQ3BDLENBQUMsQ0FBQTtRQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBNEIsQ0FBQTtRQUM5RCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxpRkFBaUY7UUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUM1QixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNJLEtBQUssVUFBVSxJQUFJLENBQUMsT0FBb0I7SUFDN0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksMkJBQWUsQ0FBQTtJQUUzRSxlQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUE7SUFFL0Msc0JBQXNCO0lBQ3RCLE1BQU0sVUFBVSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ3RELElBQUksQ0FBQyxrQkFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQy9CLGVBQU0sQ0FBQyxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQTtRQUN4RCxlQUFNLENBQUMsSUFBSSxDQUFDLCtEQUErRCxDQUFDLENBQUE7UUFDNUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsdUVBQXVFO0lBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDL0QsSUFBSSxrQkFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RELE1BQU0sY0FBYyxHQUFHLGtCQUFFLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFpQixDQUFBO1FBQ3hFLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLGVBQU0sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLENBQUMsQ0FBQTtZQUM3RSxlQUFNLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUE7WUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxJQUFJLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtJQUNwQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsbUJBQVUsRUFBQyxXQUFXLENBQUMsQ0FBQTtRQUM1QyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUE7SUFDMUMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLG1CQUFtQjtJQUNyQixDQUFDO0lBRUQsdURBQXVEO0lBQ3ZELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRXRELHlDQUF5QztJQUN6QyxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFBO0lBRWpDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFBO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDZixTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsdUJBQXVCLGtCQUFrQixZQUFZLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtRQUNuRyxTQUFTLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN2RixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsZUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBTSxDQUFDLENBQUE7UUFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLHlFQUF5RTtJQUN6RSxlQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsU0FBUyw0QkFBNEIsQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sWUFBWSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBRXhFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUIsZUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLGNBQWMsU0FBUyxvQkFBb0IsQ0FBQyxDQUFBO1FBQy9FLElBQUksWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVCLGVBQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFlBQVksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFBO1FBQzdELENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxlQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUywwQkFBMEIsQ0FBQyxDQUFBO0lBQ3hELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFZiwyRUFBMkU7SUFDM0UscUVBQXFFO0lBQ3JFLE1BQU0sU0FBUyxHQUFHLEdBQUcsSUFBSSxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUE7SUFDM0MsTUFBTSxZQUFZLEdBQWlCO1FBQ2pDLFNBQVM7UUFDVCxJQUFJLEVBQUUsV0FBVztRQUNqQixJQUFJO1FBQ0osU0FBUztRQUNULFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtRQUNuQywyREFBMkQ7S0FDNUQsQ0FBQTtJQUVELGtCQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRS9ELGVBQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtJQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxTQUFTLFlBQVksQ0FBQyxDQUFBO0lBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNmLGVBQU0sQ0FBQyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQTtJQUNwRSxlQUFNLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUE7QUFDeEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxZQUFZLENBQUMsSUFBWTtJQUNoQyxPQUFPLElBQUk7U0FDUixXQUFXLEVBQUU7U0FDYixPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQztTQUMzQixPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztTQUNyQixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3JCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsVUFBVTtJQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSdcbmltcG9ydCB7IGxvYWRDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWcnXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInXG5pbXBvcnQgeyBERUZBVUxUX0FQSV9VUkwgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnXG5cbmludGVyZmFjZSBJbml0T3B0aW9ucyB7XG4gIHNsdWc/OiBzdHJpbmdcbiAgc3ViZG9tYWluPzogc3RyaW5nXG4gIGZvcmNlPzogYm9vbGVhblxuICB1cmw/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERldkRvY0NvbmZpZyB7XG4gIHByb2plY3RJZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzbHVnOiBzdHJpbmdcbiAgc3ViZG9tYWluOiBzdHJpbmdcbiAgYXBpS2V5Pzogc3RyaW5nXG4gIGNyZWF0ZWRBdDogc3RyaW5nXG59XG5cbmludGVyZmFjZSBDaGVja1N1YmRvbWFpblJlc3BvbnNlIHtcbiAgYXZhaWxhYmxlOiBib29sZWFuXG4gIGVycm9yPzogc3RyaW5nXG4gIHN1Z2dlc3Rpb24/OiBzdHJpbmdcbn1cblxuLy8gU2ltcGxlIHByb21wdCBoZWxwZXIgdXNpbmcgcmVhZGxpbmVcbmFzeW5jIGZ1bmN0aW9uIHByb21wdChxdWVzdGlvbjogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCByZWFkbGluZSA9IGF3YWl0IGltcG9ydCgncmVhZGxpbmUnKVxuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSlcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0SGludCA9IGRlZmF1bHRWYWx1ZSA/IGAgKCR7ZGVmYXVsdFZhbHVlfSlgIDogJydcbiAgICBybC5xdWVzdGlvbihgJHtxdWVzdGlvbn0ke2RlZmF1bHRIaW50fTogYCwgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKVxuICAgICAgcmVzb2x2ZShhbnN3ZXIudHJpbSgpIHx8IGRlZmF1bHRWYWx1ZSB8fCAnJylcbiAgICB9KVxuICB9KVxufVxuXG4vKipcbiAqIEJhc2ljIHN1YmRvbWFpbiBmb3JtYXQgdmFsaWRhdGlvbiAoc2VydmVyIGRvZXMgZnVsbCB2YWxpZGF0aW9uKVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkU3ViZG9tYWluRm9ybWF0KHN1YmRvbWFpbjogc3RyaW5nKTogeyB2YWxpZDogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmcgfSB7XG4gIGlmICghc3ViZG9tYWluKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBpcyByZXF1aXJlZCcgfVxuICB9XG4gIFxuICBpZiAoc3ViZG9tYWluLmxlbmd0aCA8IDMpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIG11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzJyB9XG4gIH1cbiAgXG4gIGlmIChzdWJkb21haW4ubGVuZ3RoID4gNjMpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIG11c3QgYmUgNjMgY2hhcmFjdGVycyBvciBsZXNzJyB9XG4gIH1cbiAgXG4gIGlmICghL15bYS16MC05XShbYS16MC05LV0qW2EtejAtOV0pPyQvLnRlc3Qoc3ViZG9tYWluKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gbXVzdCBzdGFydCBhbmQgZW5kIHdpdGggYWxwaGFudW1lcmljLCBjYW4gY29udGFpbiBoeXBoZW5zJyB9XG4gIH1cbiAgXG4gIGlmICgvLS0vLnRlc3Qoc3ViZG9tYWluKSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gY2Fubm90IGNvbnRhaW4gY29uc2VjdXRpdmUgaHlwaGVucycgfVxuICB9XG4gIFxuICByZXR1cm4geyB2YWxpZDogdHJ1ZSB9XG59XG5cbi8qKlxuICogQ2hlY2sgc3ViZG9tYWluIGF2YWlsYWJpbGl0eSB2aWEgQVBJIChhbHNvIHZhbGlkYXRlcyBhZ2FpbnN0IHNlcnZlciBibGFja2xpc3QpXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrU3ViZG9tYWluQXZhaWxhYmlsaXR5KFxuICBzdWJkb21haW46IHN0cmluZyxcbiAgYXBpVXJsOiBzdHJpbmdcbik6IFByb21pc2U8Q2hlY2tTdWJkb21haW5SZXNwb25zZT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YXBpVXJsfS9hcGkvc3ViZG9tYWlucy9jaGVja2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgc3ViZG9tYWluIH0pLFxuICAgIH0pXG4gICAgXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIENoZWNrU3ViZG9tYWluUmVzcG9uc2VcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0gY2F0Y2gge1xuICAgIC8vIElmIEFQSSBpcyB1bmF2YWlsYWJsZSwgYWxsb3cgcHJvY2VlZGluZyAod2lsbCBmYWlsIGF0IHJlZ2lzdHJhdGlvbiBpZiBpbnZhbGlkKVxuICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGEgRGV2RG9jIHByb2plY3Qgd2l0aCAuZGV2ZG9jLmpzb25cbiAqIE5vdGU6IFN1YmRvbWFpbiBpcyBvbmx5IHJlc2VydmVkIHdoZW4gZG9jdW1lbnRhdGlvbiBpcyBhY3R1YWxseSBkZXBsb3llZCAoZGV2ZG9jIGRlcGxveSlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXQob3B0aW9uczogSW5pdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvamVjdFJvb3QgPSBwcm9jZXNzLmN3ZCgpXG4gIGNvbnN0IGFwaVVybCA9IG9wdGlvbnMudXJsIHx8IHByb2Nlc3MuZW52LkRFVkRPQ19BUElfVVJMIHx8IERFRkFVTFRfQVBJX1VSTFxuICBcbiAgbG9nZ2VyLmluZm8oJ0luaXRpYWxpemluZyBEZXZEb2MgcHJvamVjdC4uLlxcbicpXG4gIFxuICAvLyBDaGVjayBmb3IgZG9jcy5qc29uXG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLmpvaW4ocHJvamVjdFJvb3QsICdkb2NzLmpzb24nKVxuICBpZiAoIWZzLmV4aXN0c1N5bmMoY29uZmlnUGF0aCkpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ2RvY3MuanNvbiBub3QgZm91bmQgaW4gY3VycmVudCBkaXJlY3RvcnknKVxuICAgIGxvZ2dlci5pbmZvKCdNYWtlIHN1cmUgeW91IGFyZSBpbiBhIERldkRvYyBkb2N1bWVudGF0aW9uIHByb2plY3QgZGlyZWN0b3J5JylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgLy8gQ2hlY2sgaWYgLmRldmRvYy5qc29uIGFscmVhZHkgZXhpc3RzIHdpdGggQVBJIGtleSAoYWxyZWFkeSBkZXBsb3llZClcbiAgY29uc3QgZGV2ZG9jQ29uZmlnUGF0aCA9IHBhdGguam9pbihwcm9qZWN0Um9vdCwgJy5kZXZkb2MuanNvbicpXG4gIGlmIChmcy5leGlzdHNTeW5jKGRldmRvY0NvbmZpZ1BhdGgpICYmICFvcHRpb25zLmZvcmNlKSB7XG4gICAgY29uc3QgZXhpc3RpbmdDb25maWcgPSBmcy5yZWFkSnNvblN5bmMoZGV2ZG9jQ29uZmlnUGF0aCkgYXMgRGV2RG9jQ29uZmlnXG4gICAgaWYgKGV4aXN0aW5nQ29uZmlnLmFwaUtleSkge1xuICAgICAgbG9nZ2VyLndhcm4oJy5kZXZkb2MuanNvbiBhbHJlYWR5IGV4aXN0cyB3aXRoIEFQSSBrZXkgKHByb2plY3QgaXMgZGVwbG95ZWQpJylcbiAgICAgIGxvZ2dlci5pbmZvKCdVc2UgLS1mb3JjZSB0byBvdmVyd3JpdGUgYW5kIGNyZWF0ZSBhIG5ldyBwcm9qZWN0JylcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgfVxuICBcbiAgLy8gTG9hZCBkb2NzLmpzb24gdG8gZ2V0IHByb2plY3QgbmFtZVxuICBsZXQgcHJvamVjdE5hbWUgPSAnTXkgRG9jdW1lbnRhdGlvbidcbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkQ29uZmlnKHByb2plY3RSb290KVxuICAgIHByb2plY3ROYW1lID0gY29uZmlnLm5hbWUgfHwgcHJvamVjdE5hbWVcbiAgfSBjYXRjaCB7XG4gICAgLy8gVXNlIGRlZmF1bHQgbmFtZVxuICB9XG4gIFxuICAvLyBHZW5lcmF0ZSBzbHVnIGZyb20gcHJvamVjdCBuYW1lIG9yIHVzZSBwcm92aWRlZCBzbHVnXG4gIGNvbnN0IHNsdWcgPSBvcHRpb25zLnNsdWcgfHwgZ2VuZXJhdGVTbHVnKHByb2plY3ROYW1lKVxuICBcbiAgLy8gR2V0IHN1YmRvbWFpbiAtIHByb21wdCBpZiBub3QgcHJvdmlkZWRcbiAgbGV0IHN1YmRvbWFpbiA9IG9wdGlvbnMuc3ViZG9tYWluXG4gIFxuICBpZiAoIXN1YmRvbWFpbikge1xuICAgIGNvbnN0IHN1Z2dlc3RlZFN1YmRvbWFpbiA9IHNsdWdcbiAgICBjb25zb2xlLmxvZygnJylcbiAgICBzdWJkb21haW4gPSBhd2FpdCBwcm9tcHQoYEVudGVyIHN1YmRvbWFpbiBmb3IgJHtzdWdnZXN0ZWRTdWJkb21haW59LmRldmRvYy5zaGAsIHN1Z2dlc3RlZFN1YmRvbWFpbilcbiAgICBzdWJkb21haW4gPSBzdWJkb21haW4udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS1dL2csICctJykucmVwbGFjZSgvXi18LSQvZywgJycpXG4gIH1cbiAgXG4gIC8vIFZhbGlkYXRlIHN1YmRvbWFpbiBmb3JtYXQgbG9jYWxseVxuICBjb25zdCBmb3JtYXRDaGVjayA9IGlzVmFsaWRTdWJkb21haW5Gb3JtYXQoc3ViZG9tYWluKVxuICBpZiAoIWZvcm1hdENoZWNrLnZhbGlkKSB7XG4gICAgbG9nZ2VyLmVycm9yKGZvcm1hdENoZWNrLmVycm9yISlcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgLy8gQ2hlY2sgc3ViZG9tYWluIGF2YWlsYWJpbGl0eSB2aWEgQVBJIChzZXJ2ZXIgdmFsaWRhdGVzIGJsYWNrbGlzdClcbiAgLy8gTm90ZTogVGhpcyBvbmx5IGNoZWNrcyBhdmFpbGFiaWxpdHksIGl0IGRvZXMgTk9UIHJlc2VydmUgdGhlIHN1YmRvbWFpblxuICBsb2dnZXIuaW5mbyhgQ2hlY2tpbmcgaWYgJHtzdWJkb21haW59LmRldmRvYy5zaCBpcyBhdmFpbGFibGUuLi5gKVxuICBjb25zdCBhdmFpbGFiaWxpdHkgPSBhd2FpdCBjaGVja1N1YmRvbWFpbkF2YWlsYWJpbGl0eShzdWJkb21haW4sIGFwaVVybClcbiAgXG4gIGlmICghYXZhaWxhYmlsaXR5LmF2YWlsYWJsZSkge1xuICAgIGxvZ2dlci5lcnJvcihhdmFpbGFiaWxpdHkuZXJyb3IgfHwgYFN1YmRvbWFpbiBcIiR7c3ViZG9tYWlufVwiIGlzIG5vdCBhdmFpbGFibGVgKVxuICAgIGlmIChhdmFpbGFiaWxpdHkuc3VnZ2VzdGlvbikge1xuICAgICAgbG9nZ2VyLmluZm8oYFN1Z2dlc3Rpb246IFRyeSBcIiR7YXZhaWxhYmlsaXR5LnN1Z2dlc3Rpb259XCJgKVxuICAgIH1cbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBcbiAgbG9nZ2VyLnN1Y2Nlc3MoYOKckyAke3N1YmRvbWFpbn0uZGV2ZG9jLnNoIGlzIGF2YWlsYWJsZSFgKVxuICBjb25zb2xlLmxvZygnJylcbiAgXG4gIC8vIENyZWF0ZSAuZGV2ZG9jLmpzb24gd2l0aCBzdWJkb21haW4gKGJ1dCBOTyBBUEkga2V5IC0gbm90IHJlZ2lzdGVyZWQgeWV0KVxuICAvLyBUaGUgc3ViZG9tYWluIHdpbGwgb25seSBiZSByZXNlcnZlZCB3aGVuIHRoZSB1c2VyIGFjdHVhbGx5IGRlcGxveXNcbiAgY29uc3QgcHJvamVjdElkID0gYCR7c2x1Z30tJHtnZW5lcmF0ZUlkKCl9YFxuICBjb25zdCBkZXZkb2NDb25maWc6IERldkRvY0NvbmZpZyA9IHtcbiAgICBwcm9qZWN0SWQsXG4gICAgbmFtZTogcHJvamVjdE5hbWUsXG4gICAgc2x1ZyxcbiAgICBzdWJkb21haW4sXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgLy8gTm90ZTogTm8gYXBpS2V5IC0gc3ViZG9tYWluIGlzIG5vdCByZXNlcnZlZCB1bnRpbCBkZXBsb3lcbiAgfVxuICBcbiAgZnMud3JpdGVKc29uU3luYyhkZXZkb2NDb25maWdQYXRoLCBkZXZkb2NDb25maWcsIHsgc3BhY2VzOiAyIH0pXG4gIFxuICBsb2dnZXIuc3VjY2Vzcygn4pyTIFByb2plY3QgaW5pdGlhbGl6ZWQnKVxuICBjb25zb2xlLmxvZygnJylcbiAgY29uc29sZS5sb2coJyAgU3ViZG9tYWluOicsIGAke3N1YmRvbWFpbn0uZGV2ZG9jLnNoYClcbiAgY29uc29sZS5sb2coJyAgU3RhdHVzOicsICdOb3QgeWV0IGRlcGxveWVkJylcbiAgY29uc29sZS5sb2coJycpXG4gIGxvZ2dlci5pbmZvKCdOb3RlOiBUaGUgc3ViZG9tYWluIGlzIG5vdCByZXNlcnZlZCB1bnRpbCB5b3UgZGVwbG95LicpXG4gIGxvZ2dlci5pbmZvKCdSdW4gXCJkZXZkb2MgZGVwbG95XCIgdG8gZGVwbG95IGFuZCBjbGFpbSB5b3VyIHN1YmRvbWFpbi4nKVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgVVJMLWZyaWVuZGx5IHNsdWcgZnJvbSBhIG5hbWVcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVTbHVnKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvW15hLXowLTldKy9nLCAnLScpXG4gICAgLnJlcGxhY2UoL14tfC0kL2csICcnKVxuICAgIC5zdWJzdHJpbmcoMCwgNTApXG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzaG9ydCByYW5kb20gSURcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVJZCgpOiBzdHJpbmcge1xuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDgpXG59XG4iXX0=
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9HQSxvQkErR0M7QUFuTkQsZ0RBQXVCO0FBQ3ZCLHdEQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsK0NBQTJDO0FBQzNDLCtDQUFpRDtBQXdCakQsc0NBQXNDO0FBQ3RDLEtBQUssVUFBVSxNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFxQjtJQUMzRCxNQUFNLFFBQVEsR0FBRyx3REFBYSxVQUFVLEdBQUMsQ0FBQTtJQUN6QyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzVELEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLEdBQUcsV0FBVyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwRCxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM5QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxTQUFpQjtJQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUss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Q0FBQyxDQUFBO0FBQ3hFLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsWUFBWSxDQUFDLElBQVk7SUFDaEMsT0FBTyxJQUFJO1NBQ1IsV0FBVyxFQUFFO1NBQ2IsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7U0FDM0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7U0FDckIsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNyQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFVBQVU7SUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnXG5pbXBvcnQgeyBsb2FkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnJ1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyJ1xuaW1wb3J0IHsgREVGQVVMVF9BUElfVVJMIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xuXG5pbnRlcmZhY2UgSW5pdE9wdGlvbnMge1xuICBzbHVnPzogc3RyaW5nXG4gIHN1YmRvbWFpbj86IHN0cmluZ1xuICBmb3JjZT86IGJvb2xlYW5cbiAgdXJsPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBEZXZEb2NDb25maWcge1xuICBwcm9qZWN0SWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2x1Zzogc3RyaW5nXG4gIHN1YmRvbWFpbjogc3RyaW5nXG4gIGFwaUtleT86IHN0cmluZ1xuICBjcmVhdGVkQXQ6IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgQ2hlY2tTdWJkb21haW5SZXNwb25zZSB7XG4gIGF2YWlsYWJsZTogYm9vbGVhblxuICBlcnJvcj86IHN0cmluZ1xuICBzdWdnZXN0aW9uPzogc3RyaW5nXG59XG5cbi8vIFNpbXBsZSBwcm9tcHQgaGVscGVyIHVzaW5nIHJlYWRsaW5lXG5hc3luYyBmdW5jdGlvbiBwcm9tcHQocXVlc3Rpb246IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcmVhZGxpbmUgPSBhd2FpdCBpbXBvcnQoJ3JlYWRsaW5lJylcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG4gIH0pXG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEhpbnQgPSBkZWZhdWx0VmFsdWUgPyBgICgke2RlZmF1bHRWYWx1ZX0pYCA6ICcnXG4gICAgcmwucXVlc3Rpb24oYCR7cXVlc3Rpb259JHtkZWZhdWx0SGludH06IGAsIChhbnN3ZXIpID0+IHtcbiAgICAgIHJsLmNsb3NlKClcbiAgICAgIHJlc29sdmUoYW5zd2VyLnRyaW0oKSB8fCBkZWZhdWx0VmFsdWUgfHwgJycpXG4gICAgfSlcbiAgfSlcbn1cblxuLyoqXG4gKiBCYXNpYyBzdWJkb21haW4gZm9ybWF0IHZhbGlkYXRpb24gKHNlcnZlciBkb2VzIGZ1bGwgdmFsaWRhdGlvbilcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFN1YmRvbWFpbkZvcm1hdChzdWJkb21haW46IHN0cmluZyk6IHsgdmFsaWQ6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuICBpZiAoIXN1YmRvbWFpbikge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICdTdWJkb21haW4gaXMgcmVxdWlyZWQnIH1cbiAgfVxuICBcbiAgaWYgKHN1YmRvbWFpbi5sZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycycgfVxuICB9XG4gIFxuICBpZiAoc3ViZG9tYWluLmxlbmd0aCA+IDYzKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ1N1YmRvbWFpbiBtdXN0IGJlIDYzIGNoYXJhY3RlcnMgb3IgbGVzcycgfVxuICB9XG4gIFxuICBpZiAoIS9eW2EtejAtOV0oW2EtejAtOS1dKlthLXowLTldKT8kLy50ZXN0KHN1YmRvbWFpbikpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIG11c3Qgc3RhcnQgYW5kIGVuZCB3aXRoIGFscGhhbnVtZXJpYywgY2FuIGNvbnRhaW4gaHlwaGVucycgfVxuICB9XG4gIFxuICBpZiAoLy0tLy50ZXN0KHN1YmRvbWFpbikpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAnU3ViZG9tYWluIGNhbm5vdCBjb250YWluIGNvbnNlY3V0aXZlIGh5cGhlbnMnIH1cbiAgfVxuICBcbiAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfVxufVxuXG4vKipcbiAqIENoZWNrIHN1YmRvbWFpbiBhdmFpbGFiaWxpdHkgdmlhIEFQSSAoYWxzbyB2YWxpZGF0ZXMgYWdhaW5zdCBzZXJ2ZXIgYmxhY2tsaXN0KVxuICovXG5hc3luYyBmdW5jdGlvbiBjaGVja1N1YmRvbWFpbkF2YWlsYWJpbGl0eShcbiAgc3ViZG9tYWluOiBzdHJpbmcsXG4gIGFwaVVybDogc3RyaW5nXG4pOiBQcm9taXNlPENoZWNrU3ViZG9tYWluUmVzcG9uc2U+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2FwaVVybH0vYXBpL3N1YmRvbWFpbnMvY2hlY2tgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHN1YmRvbWFpbiB9KSxcbiAgICB9KVxuICAgIFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBDaGVja1N1YmRvbWFpblJlc3BvbnNlXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9IGNhdGNoIHtcbiAgICAvLyBJZiBBUEkgaXMgdW5hdmFpbGFibGUsIGFsbG93IHByb2NlZWRpbmcgKHdpbGwgZmFpbCBhdCByZWdpc3RyYXRpb24gaWYgaW52YWxpZClcbiAgICByZXR1cm4geyBhdmFpbGFibGU6IHRydWUgfVxuICB9XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIERldkRvYyBwcm9qZWN0IHdpdGggLmRldmRvYy5qc29uXG4gKiBOb3RlOiBTdWJkb21haW4gaXMgb25seSByZXNlcnZlZCB3aGVuIGRvY3VtZW50YXRpb24gaXMgYWN0dWFsbHkgZGVwbG95ZWQgKGRldmRvYyBkZXBsb3kpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KG9wdGlvbnM6IEluaXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb2plY3RSb290ID0gcHJvY2Vzcy5jd2QoKVxuICBjb25zdCBhcGlVcmwgPSBvcHRpb25zLnVybCB8fCBwcm9jZXNzLmVudi5ERVZET0NfQVBJX1VSTCB8fCBERUZBVUxUX0FQSV9VUkxcbiAgXG4gIGxvZ2dlci5pbmZvKCdJbml0aWFsaXppbmcgRGV2RG9jIHByb2plY3QuLi5cXG4nKVxuICBcbiAgLy8gQ2hlY2sgZm9yIGRvY3MuanNvblxuICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5qb2luKHByb2plY3RSb290LCAnZG9jcy5qc29uJylcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGNvbmZpZ1BhdGgpKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdkb2NzLmpzb24gbm90IGZvdW5kIGluIGN1cnJlbnQgZGlyZWN0b3J5JylcbiAgICBsb2dnZXIuaW5mbygnTWFrZSBzdXJlIHlvdSBhcmUgaW4gYSBEZXZEb2MgZG9jdW1lbnRhdGlvbiBwcm9qZWN0IGRpcmVjdG9yeScpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgXG4gIC8vIENoZWNrIGlmIC5kZXZkb2MuanNvbiBhbHJlYWR5IGV4aXN0cyB3aXRoIEFQSSBrZXkgKGFscmVhZHkgZGVwbG95ZWQpXG4gIGNvbnN0IGRldmRvY0NvbmZpZ1BhdGggPSBwYXRoLmpvaW4ocHJvamVjdFJvb3QsICcuZGV2ZG9jLmpzb24nKVxuICBpZiAoZnMuZXhpc3RzU3luYyhkZXZkb2NDb25maWdQYXRoKSAmJiAhb3B0aW9ucy5mb3JjZSkge1xuICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gZnMucmVhZEpzb25TeW5jKGRldmRvY0NvbmZpZ1BhdGgpIGFzIERldkRvY0NvbmZpZ1xuICAgIGlmIChleGlzdGluZ0NvbmZpZy5hcGlLZXkpIHtcbiAgICAgIGxvZ2dlci53YXJuKCcuZGV2ZG9jLmpzb24gYWxyZWFkeSBleGlzdHMgd2l0aCBBUEkga2V5IChwcm9qZWN0IGlzIGRlcGxveWVkKScpXG4gICAgICBsb2dnZXIuaW5mbygnVXNlIC0tZm9yY2UgdG8gb3ZlcndyaXRlIGFuZCBjcmVhdGUgYSBuZXcgcHJvamVjdCcpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9XG4gIH1cbiAgXG4gIC8vIExvYWQgZG9jcy5qc29uIHRvIGdldCBwcm9qZWN0IG5hbWVcbiAgbGV0IHByb2plY3ROYW1lID0gJ015IERvY3VtZW50YXRpb24nXG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZyhwcm9qZWN0Um9vdClcbiAgICBwcm9qZWN0TmFtZSA9IGNvbmZpZy5uYW1lIHx8IHByb2plY3ROYW1lXG4gIH0gY2F0Y2gge1xuICAgIC8vIFVzZSBkZWZhdWx0IG5hbWVcbiAgfVxuICBcbiAgLy8gR2VuZXJhdGUgc2x1ZyBmcm9tIHByb2plY3QgbmFtZSBvciB1c2UgcHJvdmlkZWQgc2x1Z1xuICBjb25zdCBzbHVnID0gb3B0aW9ucy5zbHVnIHx8IGdlbmVyYXRlU2x1Zyhwcm9qZWN0TmFtZSlcbiAgXG4gIC8vIEdldCBzdWJkb21haW4gLSBwcm9tcHQgaWYgbm90IHByb3ZpZGVkXG4gIGxldCBzdWJkb21haW4gPSBvcHRpb25zLnN1YmRvbWFpblxuICBcbiAgaWYgKCFzdWJkb21haW4pIHtcbiAgICBjb25zdCBzdWdnZXN0ZWRTdWJkb21haW4gPSBzbHVnXG4gICAgY29uc29sZS5sb2coJycpXG4gICAgc3ViZG9tYWluID0gYXdhaXQgcHJvbXB0KGBFbnRlciBzdWJkb21haW4gZm9yICR7c3VnZ2VzdGVkU3ViZG9tYWlufS5kZXZkb2Muc2hgLCBzdWdnZXN0ZWRTdWJkb21haW4pXG4gICAgc3ViZG9tYWluID0gc3ViZG9tYWluLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTktXS9nLCAnLScpLnJlcGxhY2UoL14tfC0kL2csICcnKVxuICB9XG4gIFxuICAvLyBWYWxpZGF0ZSBzdWJkb21haW4gZm9ybWF0IGxvY2FsbHlcbiAgbGV0IGZvcm1hdENoZWNrID0gaXNWYWxpZFN1YmRvbWFpbkZvcm1hdChzdWJkb21haW4pXG4gIGlmICghZm9ybWF0Q2hlY2sudmFsaWQpIHtcbiAgICBsb2dnZXIuZXJyb3IoZm9ybWF0Q2hlY2suZXJyb3IhKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIFxuICAvLyBDaGVjayBzdWJkb21haW4gYXZhaWxhYmlsaXR5IHZpYSBBUEkgKHNlcnZlciB2YWxpZGF0ZXMgYmxhY2tsaXN0KVxuICAvLyBOb3RlOiBUaGlzIG9ubHkgY2hlY2tzIGF2YWlsYWJpbGl0eSwgaXQgZG9lcyBOT1QgcmVzZXJ2ZSB0aGUgc3ViZG9tYWluXG4gIC8vIExvb3AgdW50aWwgd2UgZmluZCBhbiBhdmFpbGFibGUgc3ViZG9tYWluXG4gIGxldCBzdWJkb21haW5BdmFpbGFibGUgPSBmYWxzZVxuICB3aGlsZSAoIXN1YmRvbWFpbkF2YWlsYWJsZSkge1xuICAgIGxvZ2dlci5pbmZvKGBDaGVja2luZyBpZiAke3N1YmRvbWFpbn0uZGV2ZG9jLnNoIGlzIGF2YWlsYWJsZS4uLmApXG4gICAgY29uc3QgYXZhaWxhYmlsaXR5ID0gYXdhaXQgY2hlY2tTdWJkb21haW5BdmFpbGFiaWxpdHkoc3ViZG9tYWluLCBhcGlVcmwpXG4gICAgXG4gICAgaWYgKCFhdmFpbGFiaWxpdHkuYXZhaWxhYmxlKSB7XG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGxvZ2dlci53YXJuKGF2YWlsYWJpbGl0eS5lcnJvciB8fCBgU3ViZG9tYWluIFwiJHtzdWJkb21haW59XCIgaXMgbm90IGF2YWlsYWJsZWApXG4gICAgICBcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb24gPSBhdmFpbGFiaWxpdHkuc3VnZ2VzdGlvbiB8fCBgJHtzdWJkb21haW59LWRvY3NgXG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIGxvZ2dlci5pbmZvKGBTdWdnZXN0aW9uOiAke3N1Z2dlc3Rpb259LmRldmRvYy5zaGApXG4gICAgICBjb25zb2xlLmxvZygnJylcbiAgICAgIFxuICAgICAgLy8gUHJvbXB0IGZvciBuZXcgc3ViZG9tYWluXG4gICAgICBzdWJkb21haW4gPSBhd2FpdCBwcm9tcHQoJ0VudGVyIGEgZGlmZmVyZW50IHN1YmRvbWFpbicsIHN1Z2dlc3Rpb24pXG4gICAgICBzdWJkb21haW4gPSBzdWJkb21haW4udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOS1dL2csICctJykucmVwbGFjZSgvXi18LSQvZywgJycpXG4gICAgICBcbiAgICAgIC8vIFZhbGlkYXRlIGZvcm1hdFxuICAgICAgZm9ybWF0Q2hlY2sgPSBpc1ZhbGlkU3ViZG9tYWluRm9ybWF0KHN1YmRvbWFpbilcbiAgICAgIGlmICghZm9ybWF0Q2hlY2sudmFsaWQpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKGZvcm1hdENoZWNrLmVycm9yISlcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc29sZS5sb2coJycpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YmRvbWFpbkF2YWlsYWJsZSA9IHRydWVcbiAgICAgIGxvZ2dlci5zdWNjZXNzKGDinJMgJHtzdWJkb21haW59LmRldmRvYy5zaCBpcyBhdmFpbGFibGUhYClcbiAgICAgIGNvbnNvbGUubG9nKCcnKVxuICAgIH1cbiAgfVxuICBcbiAgLy8gQ3JlYXRlIC5kZXZkb2MuanNvbiB3aXRoIHN1YmRvbWFpbiAoYnV0IE5PIEFQSSBrZXkgLSBub3QgcmVnaXN0ZXJlZCB5ZXQpXG4gIC8vIFRoZSBzdWJkb21haW4gd2lsbCBvbmx5IGJlIHJlc2VydmVkIHdoZW4gdGhlIHVzZXIgYWN0dWFsbHkgZGVwbG95c1xuICBjb25zdCBwcm9qZWN0SWQgPSBgJHtzbHVnfS0ke2dlbmVyYXRlSWQoKX1gXG4gIGNvbnN0IGRldmRvY0NvbmZpZzogRGV2RG9jQ29uZmlnID0ge1xuICAgIHByb2plY3RJZCxcbiAgICBuYW1lOiBwcm9qZWN0TmFtZSxcbiAgICBzbHVnLFxuICAgIHN1YmRvbWFpbixcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAvLyBOb3RlOiBObyBhcGlLZXkgLSBzdWJkb21haW4gaXMgbm90IHJlc2VydmVkIHVudGlsIGRlcGxveVxuICB9XG4gIFxuICBmcy53cml0ZUpzb25TeW5jKGRldmRvY0NvbmZpZ1BhdGgsIGRldmRvY0NvbmZpZywgeyBzcGFjZXM6IDIgfSlcbiAgXG4gIGxvZ2dlci5zdWNjZXNzKCfinJMgUHJvamVjdCBpbml0aWFsaXplZCcpXG4gIGNvbnNvbGUubG9nKCcnKVxuICBjb25zb2xlLmxvZygnICBTdWJkb21haW46JywgYCR7c3ViZG9tYWlufS5kZXZkb2Muc2hgKVxuICBjb25zb2xlLmxvZygnICBTdGF0dXM6JywgJ05vdCB5ZXQgZGVwbG95ZWQnKVxuICBjb25zb2xlLmxvZygnJylcbiAgbG9nZ2VyLmluZm8oJ05vdGU6IFRoZSBzdWJkb21haW4gaXMgbm90IHJlc2VydmVkIHVudGlsIHlvdSBkZXBsb3kuJylcbiAgbG9nZ2VyLmluZm8oJ1J1biBcImRldmRvYyBkZXBsb3lcIiB0byBkZXBsb3kgYW5kIGNsYWltIHlvdXIgc3ViZG9tYWluLicpXG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBVUkwtZnJpZW5kbHkgc2x1ZyBmcm9tIGEgbmFtZVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZVNsdWcobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWVcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAucmVwbGFjZSgvXi18LSQvZywgJycpXG4gICAgLnN1YnN0cmluZygwLCA1MClcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNob3J0IHJhbmRvbSBJRFxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOClcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainfish-ai/devdoc",
3
- "version": "0.1.24",
3
+ "version": "0.1.25",
4
4
  "description": "Documentation framework for developers. Write docs in MDX, preview locally, deploy to Brainfish.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",