awslint 2.231.0-alpha.0 → 2.232.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/awslint.js CHANGED
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable max-len */
4
3
  /* eslint-disable no-console */
5
4
  const child_process = require("child_process");
6
5
  const path = require("path");
@@ -262,4 +261,4 @@ async function shell(command) {
262
261
  child.once('error', ko);
263
262
  });
264
263
  }
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzbGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3c2xpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLCtDQUErQztBQUMvQyw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQix3Q0FBd0M7QUFDeEMsK0JBQStCO0FBQy9CLGdDQUEwRTtBQUUxRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFFdkIsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxJQUFJLEdBQUcsS0FBSztTQUNmLEdBQUcsQ0FBQyxTQUFTLENBQUM7U0FDZCxLQUFLLENBQUMsNkJBQTZCLENBQUM7U0FDcEMsY0FBYyxDQUFDLElBQUksQ0FBQztTQUNwQixPQUFPLENBQUMsSUFBSSxFQUFFLG1DQUFtQyxDQUFDO1NBQ2xELE9BQU8sQ0FBQyxNQUFNLEVBQUUsMEJBQTBCLENBQUM7U0FDM0MsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztTQUNwRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSw2REFBNkQsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDbEksTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLHFHQUFxRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNoSyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSx3Q0FBd0MsRUFBRSxPQUFPLEVBQUUsS0FBSyxF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QUNOLE9BQU8sRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsT0FBTyx1QkFBdUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgcmVmbGVjdCBmcm9tICdqc2lpLXJlZmxlY3QnO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgQUxMX1JVTEVTX0xJTlRFUiwgRGlhZ25vc3RpY0xldmVsLCBSdWxlRmlsdGVyU2V0IH0gZnJvbSAnLi4vbGliJztcblxubGV0IHN0YWNrVHJhY2UgPSBmYWxzZTtcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJndiA9IHlhcmdzXG4gICAgLmVudignQVdTTElOVCcpXG4gICAgLnVzYWdlKCdhd3NsaW50IFtvcHRpb25zXSBbY29tbWFuZF0nKVxuICAgIC5zaG93SGVscE9uRmFpbCh0cnVlKVxuICAgIC5jb21tYW5kKCckMCcsICdsaW50IHRoZSBjdXJyZW50IG1vZHVsZSAoZGVmYXVsdCknKVxuICAgIC5jb21tYW5kKCdsaXN0JywgJ2xpc3QgYWxsIGF2YWlsYWJsZSBydWxlcycpXG4gICAgLm9wdGlvbignaW5jbHVkZScsIHsgYWxpYXM6ICdpJywgdHlwZTogJ2FycmF5JywgZGVzYzogJ2V2YWx1YXRlIG9ubHkgdGhpcyBydWxlKHMpJywgZGVmYXVsdDogWycqJ10gfSlcbiAgICAub3B0aW9uKCdleGNsdWRlJywgeyBhbGlhczogJ3gnLCB0eXBlOiAnYXJyYXknLCBkZXNjOiAnZG8gbm90IGV2YWx1YXRlIHRoZXNlIHJ1bGVzICh0YWtlcyBwcmlvcml0eSBvdmVyIC0taW5jbHVkZSknLCBkZWZhdWx0OiBbXSB9KVxuICAgIC5vcHRpb24oJ3NhdmUnLCB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3VwZGF0ZXMgcGFja2FnZS5qc29uIChvciBhd3NsaW50Lmpzb24gaWYgaXQgZXhpc3RzKSB3aXRoIFwiZXhjbHVkZVwiIHN0YXRlbWVudHMgZm9yIGFsbCBmYWlsaW5nIHJ1bGVzJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAub3B0aW9uKCd2ZXJib3NlJywgeyBhbGlhczogJ3YnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICd2ZXJib3NlIG91dHB1dCAocHJpbnRzIGFsbCBhc3NlcnRpb25zKScsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgLm9wdGlvbigncXVpZXQnLCB7IGFsaWFzOiAncScsIHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3F1aWV0IG1vZGUgLSBzaG93cyBvbmx5IGVycm9ycycsIGRlZmF1bHQ6IHRydWUgfSlcbiAgICAub3B0aW9uKCdmb3JjZScsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnc3VjY2VlZCBzaWxlbnRseSBpZiB0aGlzIGlzIG5vdCBhIGpzaWkgbW9kdWxlJywgZGVmYXVsdDogdHJ1ZSB9KVxuICAgIC5vcHRpb24oJ2NvbmZpZycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAncmVhZHMgb3B0aW9ucyBmcm9tIFwiYXdzbGludC5qc29uXCIgaWYgaXQgZXhpc3RzLCBhbmQgb3RoZXJ3aXNlIGZyb20gdGhlIFwiYXdzbGludFwiIHNlY3Rpb24gaW4gcGFja2FnZS5qc29uJywgZGVmYXVsdDogdHJ1ZSB9KVxuICAgIC5vcHRpb24oJ2RlYnVnJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdkZWJ1ZyBvdXRwdXQnLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgIC5vcHRpb24oJ2NvbXBpbGUnLCB7IGFsaWFzOiAnYycsIHR5cGU6ICdib29sZWFuJywgZGVzYzogJ2Fsd2F5cyBydW4gdGhlIGpzaWkgY29tcGlsZXIgKHVzZSBcIi0tbm8tY29tcGlsZVwiIHRvIG5ldmVyIHJ1biB0aGUgY29tcGlsZXIsIGV2ZW4gaWYgLmpzaWkgZG9lc25cXCd0IGV4aXN0KScgfSlcbiAgICAuZ3JvdXAoJ2luY2x1ZGUnLCAnRmlsdGVyaW5nJylcbiAgICAuZ3JvdXAoJ2V4Y2x1ZGUnLCAnRmlsdGVyaW5nJylcbiAgICAuZ3JvdXAoJ2NvbmZpZycsICdDb25maWd1cmF0aW9uJylcbiAgICAuZ3JvdXAoJ3NhdmUnLCAnQ29uZmlndXJhdGlvbicpXG4gICAgLmdyb3VwKCd2ZXJib3NlJywgJ091dHB1dCcpXG4gICAgLmdyb3VwKCdxdWlldCcsICdPdXRwdXQnKVxuICAgIC5ncm91cCgnZGVidWcnLCAnT3V0cHV0JylcbiAgICAuZ3JvdXAoJ2NvbXBpbGUnLCAnQnVpbGQnKVxuICAgIC5leGFtcGxlKCdhd3NsaW50JywgJ2xpbnRzIHRoZSBjdXJyZW50IG1vZHVsZSBhZ2FpbnN0IGFsbCBydWxlcycpXG4gICAgLmV4YW1wbGUoJ2F3c2xpbnQgLXYgLWkgXCJyZXNvdXJjZSpcIiAtaSBcImltcG9ydCpcIicsICdsaW50cyBhZ2FpbnN0IGFsbCBydWxlcyB0aGF0IHN0YXJ0IHdpdGggXCJyZXNvdXJjZVwiIG9yIFwiaW1wb3J0XCIgYW5kIHByaW50IHN1Y2Nlc3NlcycpXG4gICAgLmV4YW1wbGUoJ2F3c2xpbnQgLXggXCIqOkBhd3MtY2RrL2F3cy1zMypcIicsICdldmFsdWF0ZSBhbGwgcnVsZXMgaW4gYWxsIHNjb3BlcyBiZXNpZGVzIG9uZXMgdGhhdCBiZWdpbiB3aXRoIFwiQGF3cy1jZGsvYXdzLXMzXCInKVxuICAgIC5leGFtcGxlKCdhd3NsaW50IC0tc2F2ZScsICd1cGRhdGVkIFwiYXdzbGludC5qc29uXCIgd2l0aCBcImV4Y2x1ZGVcInMgZm9yIGFsbCBmYWlsaW5nIHJ1bGVzJyk7XG5cbiAgaWYgKCFwcm9jZXNzLnN0ZG91dC5pc1RUWSkge1xuICAgIC8vIERpc2FibGUgY2hhbGsgY29sb3IgaGlnaGxpZ2h0aW5nXG4gICAgcHJvY2Vzcy5lbnYuRk9SQ0VfQ09MT1IgPSAnMCc7XG4gIH1cblxuICBjb25zdCBhcmdzID0gYXJndi5hcmd2O1xuXG4gIHN0YWNrVHJhY2UgPSBhcmdzLnZlcmJvc2UgfHwgYXJncy5kZWJ1ZztcblxuICBpZiAoYXJncy5fLmxlbmd0aCA+IDEpIHtcbiAgICBhcmd2LnNob3dIZWxwKCk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29tbWFuZCA9IGFyZ3MuX1swXSB8fCAnbGludCc7XG4gIGNvbnN0IHdvcmtkaXIgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIGNvbnN0IHBrZ0NvbmZpZyA9IHBhdGguam9pbih3b3JrZGlyLCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IGF3c2xpbnRDb25maWcgPSBwYXRoLmpvaW4od29ya2RpciwgJ2F3c2xpbnQuanNvbicpO1xuXG4gIGlmIChjb21tYW5kID09PSAnbGlzdCcpIHtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgQUxMX1JVTEVTX0xJTlRFUi5ydWxlcykge1xuICAgICAgY29uc29sZS5pbmZvKGAke2NoYWxrLmN5YW4ocnVsZS5jb2RlKX06ICR7cnVsZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBpZiBubyBwYWNrYWdlLmpzb24gYW5kIGZvcmNlIGlzIHRydWUgKGRlZmF1bHQpLCBqdXN0IGRvbid0IGRvIGFueXRoaW5nXG4gIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhwa2dDb25maWcpICYmIGFyZ3MuZm9yY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwa2cgPSBhd2FpdCBmcy5yZWFkSlNPTihwa2dDb25maWcpO1xuXG4gIC8vIGlmIHRoaXMgaXMgbm90IGEganNpaSBtb2R1bGUgd2UgaGF2ZSBub3RoaW5nIHRvIGxvb2sgZm9yXG4gIGlmICghcGtnLmpzaWkpIHtcbiAgICBpZiAoYXJncy5mb3JjZSkge1xuICAgICAgcmV0dXJuOyAvLyBqdXN0IHNpbGVudGx5IHN1Y2NlZWRcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBpbiAke3dvcmtkaXJ9IGlzIG5vdCBhIGpzaWkgbW9kdWxlIChubyBcImpzaWlcIiBzZWN0aW9uIGluIHBhY2thZ2UuanNvbilgKTtcbiAgfVxuXG4gIC8vIGlmIHBhY2thZ2UuanNvbiBjb250YWlucyBhIGBqc2lpYCBzZWN0aW9uIGJ1dCB0aGVyZSBpcyBubyAuanNpaSBmaWxlXG4gIC8vIGl0IG1lYW5zIHdlIGhhdmVuJ3QgY29tcGlsZWQgdGhlIG1vZHVsZS5cbiAgaWYgKGF3YWl0IHNob3VsZENvbXBpbGUoKSkge1xuICAgIGF3YWl0IHNoZWxsKCdqc2lpJyk7XG4gIH1cblxuICAvLyBhd3NsaW50Lmpzb24gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHBhY2thZ2UuanNvbiBmb3IgYXdzbGludCBvcHRpb25zLlxuICBjb25zdCBzdGFuZGxvbmVPcHRpb25zID0gYXdhaXQgcmVhZFN0YW5kYWxvbmVPcHRpb25zKGF3c2xpbnRDb25maWcpO1xuXG4gIC8vIHJlYWQgXCJhd3NsaW50XCIgZnJvbSBwYWNrYWdlLmpzb25cbiAgaWYgKGFyZ3MuY29uZmlnKSB7XG4gICAgaWYgKHN0YW5kbG9uZU9wdGlvbnMpIHtcbiAgICAgIGlmIChwa2cuYXdzbGludCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2F3c2xpbnQgb3B0aW9ucyBpbiBwYWNrYWdlLmpzb24gd2lsbCBiZSBpZ25vcmVkIHNpbmNlIGF3c2xpbnQuanNvbiBleGlzdHMuJyk7XG4gICAgICB9XG4gICAgICBtZXJnZU9wdGlvbnMoYXJncywgc3RhbmRsb25lT3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlT3B0aW9ucyhhcmdzLCBwa2cuYXdzbGludCk7XG4gICAgfVxuICB9XG5cblxuICBpZiAoYXJncy5kZWJ1Zykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ2NvbW1hbmQ6ICcgKyBjb21tYW5kKTtcbiAgICBjb25zb2xlLmVycm9yKCdvcHRpb25zOiAnICsgSlNPTi5zdHJpbmdpZnkoYXJncywgdW5kZWZpbmVkLCAyKSk7XG4gIH1cblxuICBpZiAoY29tbWFuZCA9PT0gJ2xpbnQnKSB7XG4gICAgY29uc3QgYXNzZW1ibHkgPSBhd2FpdCBsb2FkTW9kdWxlKHdvcmtkaXIpO1xuICAgIGlmICghYXNzZW1ibHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleGNsdWRlc1RvU2F2ZSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgbGV0IGVycm9ycyA9IDA7XG5cbiAgICBjb25zdCBpbmNsdWRlUnVsZXMgPSBuZXcgUnVsZUZpbHRlclNldChhcmdzLmluY2x1ZGUpO1xuICAgIGNvbnN0IGV4Y2x1ZGVSdWxlcyA9IG5ldyBSdWxlRmlsdGVyU2V0KGFyZ3MuZXhjbHVkZSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICByZXN1bHRzLnB1c2goLi4uQUxMX1JVTEVTX0xJTlRFUi5ldmFsKGFzc2VtYmx5LCB7XG4gICAgICBpbmNsdWRlUnVsZXM6IGluY2x1ZGVSdWxlcyxcbiAgICAgIGV4Y2x1ZGVSdWxlczogZXhjbHVkZVJ1bGVzLFxuICAgIH0pKTtcblxuICAgIC8vIFNvcnQgZXJyb3JzIHRvIHRoZSB0b3AgKGhpZ2hlc3Qgc2V2ZXJpdHkgZmlyc3QpXG4gICAgcmVzdWx0cy5zb3J0KChhLCBiKSA9PiBiLmxldmVsIC0gYS5sZXZlbCk7XG5cbiAgICAvLyBwcm9jZXNzIHJlc3VsdHNcblxuICAgIGZvciAoY29uc3QgZGlhZyBvZiByZXN1bHRzKSB7XG4gICAgICBjb25zdCBzdXBwcmVzc2lvbktleSA9IGAke2RpYWcucnVsZS5jb2RlfToke2RpYWcuc2NvcGV9YDtcblxuICAgICAgbGV0IGNvbG9yO1xuICAgICAgc3dpdGNoIChkaWFnLmxldmVsKSB7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLlN1Y2Nlc3M6XG4gICAgICAgICAgaWYgKGFyZ3MudmVyYm9zZSkge1xuICAgICAgICAgICAgY29sb3IgPSBjaGFsay5ncmF5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBEaWFnbm9zdGljTGV2ZWwuRXJyb3I6XG4gICAgICAgICAgZXJyb3JzKys7XG4gICAgICAgICAgY29sb3IgPSBjaGFsay5yZWQ7XG4gICAgICAgICAgaWYgKGFyZ3Muc2F2ZSkge1xuICAgICAgICAgICAgZXhjbHVkZXNUb1NhdmUucHVzaChzdXBwcmVzc2lvbktleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpYWdub3N0aWNMZXZlbC5XYXJuaW5nOlxuICAgICAgICAgIGlmICghYXJncy5xdWlldCkge1xuICAgICAgICAgICAgY29sb3IgPSBjaGFsay55ZWxsb3c7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpYWdub3N0aWNMZXZlbC5Ta2lwcGVkOlxuICAgICAgICAgIGlmICghYXJncy5xdWlldCkge1xuICAgICAgICAgICAgY29sb3IgPSBjaGFsay5ibHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbG9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoY29sb3IoYCR7RGlhZ25vc3RpY0xldmVsW2RpYWcubGV2ZWxdLnRvTG93ZXJDYXNlKCl9OiBbJHtjaGFsay5ib2xkKGBhd3NsaW50OiR7ZGlhZy5ydWxlLmNvZGV9YCl9OiR7Y2hhbGsuYm9sZChkaWFnLnNjb3BlKX1dICR7ZGlhZy5tZXNzYWdlfWApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhjbHVkZXNUb1NhdmUubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHN0YW5kbG9uZU9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFzdGFuZGxvbmVPcHRpb25zLmV4Y2x1ZGUpIHtcbiAgICAgICAgICBzdGFuZGxvbmVPcHRpb25zLmV4Y2x1ZGUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFwa2cuYXdzbGludCkge1xuICAgICAgICAgIHBrZy5hd3NsaW50ID0geyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwa2cuYXdzbGludC5leGNsdWRlKSB7XG4gICAgICAgICAgcGtnLmF3c2xpbnQuZXhjbHVkZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4Y2x1ZGVzOiBzdHJpbmdbXSA9IHN0YW5kbG9uZU9wdGlvbnMgPyBzdGFuZGxvbmVPcHRpb25zLmV4Y2x1ZGUgOiBwa2cuYXdzbGludC5leGNsdWRlO1xuXG4gICAgICBmb3IgKGNvbnN0IGV4Y2x1ZGUgb2YgZXhjbHVkZXNUb1NhdmUpIHtcbiAgICAgICAgaWYgKGV4Y2x1ZGVzLmluZGV4T2YoZXhjbHVkZSkgPT09IC0xKSB7XG4gICAgICAgICAgZXhjbHVkZXMucHVzaChleGNsdWRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZXhjbHVkZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoc3RhbmRsb25lT3B0aW9ucykge1xuICAgICAgICAgIC8vIElmIGF3c2xpbnQuanNvbiBleGlzdHMsIHdyaXRlIHRoZSBleGNsdWRlcyB0aGVyZSBpbnN0ZWFkIG9mIHRoZSBvbGQgcGFja2FnZS5qc29uIChsZWdhY3kgZm9ybWF0KS5cbiAgICAgICAgICBpZiAocGtnLmF3c2xpbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRXhjbHVkZXMgd2lsbCBiZSB3cml0dGVuIHRvIGF3c2xpbnQuanNvbi4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgZnMud3JpdGVKU09OKGF3c2xpbnRDb25maWcsIHN0YW5kbG9uZU9wdGlvbnMsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGZzLndyaXRlSlNPTihwa2dDb25maWcsIHBrZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzICYmICFhcmdzLnNhdmUpIHtcbiAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGFyZ3Yuc2hvd0hlbHAoKTtcbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcblxuICBhc3luYyBmdW5jdGlvbiBzaG91bGRDb21waWxlKCkge1xuXG4gICAgLy8gaWYgLS1jb21waWxlIGlzIGV4cGxpY2l0bHkgZW5hYmxlZCB0aGVuIGp1c3QgY29tcGlsZSBhbHdheXNcbiAgICBpZiAoYXJncy5jb21waWxlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBoYXZlIGEgLmpzaWkgZmlsZSBhbmQgd2UgYXJlIG5vdCBmb3JjZWQgdG8gY29tcGlsZSwgdGhlbiBkb24ndCBjb21waWxlXG4gICAgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtkaXIsICcuanNpaScpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHdlIGRvbid0IGhhdmUgYSAuanNpaSBmaWxlLCBhbmQgLS1uby1jb21waWxlIGlzIGV4cGxpY2lseSBzZXQsIHRoZW4gaXQncyBhbiBlcnJvclxuICAgIGlmIChhcmdzLmNvbXBpbGUgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIC5qc2lpIGZpbGUgYW5kIC0tbm8tY29tcGlsZSBpcyBzZXQnKTtcbiAgICB9XG5cbiAgICAvLyBjb21waWxlIVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlLm1lc3NhZ2UpKTtcbiAgaWYgKHN0YWNrVHJhY2UpIHtcbiAgICBjb25zb2xlLmVycm9yKGUuc3RhY2spO1xuICB9XG4gIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGUoZGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgdHMgPSBuZXcgcmVmbGVjdC5UeXBlU3lzdGVtKCk7XG4gIGF3YWl0IHRzLmxvYWQoZGlyLCB7XG4gICAgdmFsaWRhdGU6IGZhbHNlLCAvLyBEb24ndCB2YWxpZGF0ZSB0byBzYXZlIDY2JSBvZiBleGVjdXRpb24gdGltZSAoMjBzIHZzIDFtaW4pLlxuICAgIHN1cHBvcnRlZEZlYXR1cmVzOiBbJ2ludGVyc2VjdGlvbi10eXBlcycsICdjbGFzcy1jb3ZhcmlhbnQtb3ZlcnJpZGVzJ10sXG4gIH0pO1xuICAvLyBXZSBydW4gJ2F3c2xpbnQnIGR1cmluZyBidWlsZCB0aW1lLCBhc3NlbWJsaWVzIGFyZSBndWFyYW50ZWVkIHRvIGJlIG9rLlxuXG4gIC8vIFdlIHdvbid0IGxvYWQgYW55IG1vcmUgYXNzZW1ibGllcy4gTG9jayB0aGUgdHlwZXN5c3RlbSB0byBiZW5lZml0IGZyb20gcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLlxuICB0cy5sb2NrKCk7XG5cbiAgaWYgKHRzLnJvb3RzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0aW5nIG9ubHkgYSBzaW5nbGUgcm9vdCBhc3NlbWJseScpO1xuICB9XG5cbiAgcmV0dXJuIHRzLnJvb3RzWzBdO1xufVxuXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMoZGVzdDogYW55LCBwa2c/OiBhbnkpIHtcbiAgaWYgKCFwa2cpIHsgcmV0dXJuOyB9IC8vIG5vIG9wdGlvbnMgaW4gcGFja2FnZS5qc29uXG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGtnKSkge1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhbiBhcnJheSBvcHRpb24sIHRoZW4gYWRkIHZhbHVlcyB0byBkZXN0aW5hdGlvblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY29uc3QgYXJyID0gZGVzdFtrZXldIHx8IFtdO1xuICAgICAgYXJyLnB1c2goLi4udmFsdWUpO1xuICAgICAgZGVzdFtrZXldID0gYXJyO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gb2JqZWN0cyBhcmUgbm90IGFsbG93ZWRcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG9wdGlvbiBcIiR7a2V5fVwiIGluIHBhY2thZ2UuanNvbjogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgfVxuXG4gICAgLy8gcHJpbWl0aXZlcyBzaW1wbHkgb3ZlcnJpZGVcbiAgICBkZXN0W2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU3RhbmRhbG9uZU9wdGlvbnMoYXdzbGludENvbmZpZzogc3RyaW5nKSB7XG4gIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhhd3NsaW50Q29uZmlnKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBmcy5yZWFkSlNPTihhd3NsaW50Q29uZmlnKTtcbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNoZWxsKGNvbW1hbmQ6IHN0cmluZykge1xuICBjb25zdCBjaGlsZCA9IGNoaWxkX3Byb2Nlc3Muc3Bhd24oY29tbWFuZCwgW10sIHsgc3RkaW86IFsnaW5oZXJpdCcsICdpbmhlcml0JywgJ2luaGVyaXQnXSB9KTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChvaywga28pID0+IHtcbiAgICBjaGlsZC5vbmNlKCdleGl0JywgKHN0YXR1czogYW55KSA9PiB7XG4gICAgICBpZiAoc3RhdHVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiBvaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtvKG5ldyBFcnJvcihgJHtjb21tYW5kfSBleGl0ZWQgd2l0aCBzdGF0dXMgJHtzdGF0dXN9YCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNoaWxkLm9uY2UoJ2Vycm9yJywga28pO1xuICB9KTtcbn1cbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzbGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3c2xpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwrQkFBK0I7QUFDL0IsK0NBQStDO0FBQy9DLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLHdDQUF3QztBQUN4QywrQkFBK0I7QUFDL0IsZ0NBQTBFO0FBRTFFLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztBQUV2QixLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxLQUFLO1NBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQztTQUNkLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQztTQUNwQyxjQUFjLENBQUMsSUFBSSxDQUFDO1NBQ3BCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLENBQUM7U0FDbEQsT0FBTyxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQztTQUMzQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQ3BHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLDZEQUE2RCxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUNsSSxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUscUdBQXFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ2hLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLHdDQUF3QyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNs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LENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxPQUFPLHVCQUF1QixNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IEFMTF9SVUxFU19MSU5URVIsIERpYWdub3N0aWNMZXZlbCwgUnVsZUZpbHRlclNldCB9IGZyb20gJy4uL2xpYic7XG5cbmxldCBzdGFja1RyYWNlID0gZmFsc2U7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IGFyZ3YgPSB5YXJnc1xuICAgIC5lbnYoJ0FXU0xJTlQnKVxuICAgIC51c2FnZSgnYXdzbGludCBbb3B0aW9uc10gW2NvbW1hbmRdJylcbiAgICAuc2hvd0hlbHBPbkZhaWwodHJ1ZSlcbiAgICAuY29tbWFuZCgnJDAnLCAnbGludCB0aGUgY3VycmVudCBtb2R1bGUgKGRlZmF1bHQpJylcbiAgICAuY29tbWFuZCgnbGlzdCcsICdsaXN0IGFsbCBhdmFpbGFibGUgcnVsZXMnKVxuICAgIC5vcHRpb24oJ2luY2x1ZGUnLCB7IGFsaWFzOiAnaScsIHR5cGU6ICdhcnJheScsIGRlc2M6ICdldmFsdWF0ZSBvbmx5IHRoaXMgcnVsZShzKScsIGRlZmF1bHQ6IFsnKiddIH0pXG4gICAgLm9wdGlvbignZXhjbHVkZScsIHsgYWxpYXM6ICd4JywgdHlwZTogJ2FycmF5JywgZGVzYzogJ2RvIG5vdCBldmFsdWF0ZSB0aGVzZSBydWxlcyAodGFrZXMgcHJpb3JpdHkgb3ZlciAtLWluY2x1ZGUpJywgZGVmYXVsdDogW10gfSlcbiAgICAub3B0aW9uKCdzYXZlJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICd1cGRhdGVzIHBhY2thZ2UuanNvbiAob3IgYXdzbGludC5qc29uIGlmIGl0IGV4aXN0cykgd2l0aCBcImV4Y2x1ZGVcIiBzdGF0ZW1lbnRzIGZvciBhbGwgZmFpbGluZyBydWxlcycsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgLm9wdGlvbigndmVyYm9zZScsIHsgYWxpYXM6ICd2JywgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAndmVyYm9zZSBvdXRwdXQgKHByaW50cyBhbGwgYXNzZXJ0aW9ucyknLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgIC5vcHRpb24oJ3F1aWV0JywgeyBhbGlhczogJ3EnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdxdWlldCBtb2RlIC0gc2hvd3Mgb25seSBlcnJvcnMnLCBkZWZhdWx0OiB0cnVlIH0pXG4gICAgLm9wdGlvbignZm9yY2UnLCB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3N1Y2NlZWQgc2lsZW50bHkgaWYgdGhpcyBpcyBub3QgYSBqc2lpIG1vZHVsZScsIGRlZmF1bHQ6IHRydWUgfSlcbiAgICAub3B0aW9uKCdjb25maWcnLCB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3JlYWRzIG9wdGlvbnMgZnJvbSBcImF3c2xpbnQuanNvblwiIGlmIGl0IGV4aXN0cywgYW5kIG90aGVyd2lzZSBmcm9tIHRoZSBcImF3c2xpbnRcIiBzZWN0aW9uIGluIHBhY2thZ2UuanNvbicsIGRlZmF1bHQ6IHRydWUgfSlcbiAgICAub3B0aW9uKCdkZWJ1ZycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnZGVidWcgb3V0cHV0JywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAub3B0aW9uKCdjb21waWxlJywgeyBhbGlhczogJ2MnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdhbHdheXMgcnVuIHRoZSBqc2lpIGNvbXBpbGVyICh1c2UgXCItLW5vLWNvbXBpbGVcIiB0byBuZXZlciBydW4gdGhlIGNvbXBpbGVyLCBldmVuIGlmIC5qc2lpIGRvZXNuXFwndCBleGlzdCknIH0pXG4gICAgLmdyb3VwKCdpbmNsdWRlJywgJ0ZpbHRlcmluZycpXG4gICAgLmdyb3VwKCdleGNsdWRlJywgJ0ZpbHRlcmluZycpXG4gICAgLmdyb3VwKCdjb25maWcnLCAnQ29uZmlndXJhdGlvbicpXG4gICAgLmdyb3VwKCdzYXZlJywgJ0NvbmZpZ3VyYXRpb24nKVxuICAgIC5ncm91cCgndmVyYm9zZScsICdPdXRwdXQnKVxuICAgIC5ncm91cCgncXVpZXQnLCAnT3V0cHV0JylcbiAgICAuZ3JvdXAoJ2RlYnVnJywgJ091dHB1dCcpXG4gICAgLmdyb3VwKCdjb21waWxlJywgJ0J1aWxkJylcbiAgICAuZXhhbXBsZSgnYXdzbGludCcsICdsaW50cyB0aGUgY3VycmVudCBtb2R1bGUgYWdhaW5zdCBhbGwgcnVsZXMnKVxuICAgIC5leGFtcGxlKCdhd3NsaW50IC12IC1pIFwicmVzb3VyY2UqXCIgLWkgXCJpbXBvcnQqXCInLCAnbGludHMgYWdhaW5zdCBhbGwgcnVsZXMgdGhhdCBzdGFydCB3aXRoIFwicmVzb3VyY2VcIiBvciBcImltcG9ydFwiIGFuZCBwcmludCBzdWNjZXNzZXMnKVxuICAgIC5leGFtcGxlKCdhd3NsaW50IC14IFwiKjpAYXdzLWNkay9hd3MtczMqXCInLCAnZXZhbHVhdGUgYWxsIHJ1bGVzIGluIGFsbCBzY29wZXMgYmVzaWRlcyBvbmVzIHRoYXQgYmVnaW4gd2l0aCBcIkBhd3MtY2RrL2F3cy1zM1wiJylcbiAgICAuZXhhbXBsZSgnYXdzbGludCAtLXNhdmUnLCAndXBkYXRlZCBcImF3c2xpbnQuanNvblwiIHdpdGggXCJleGNsdWRlXCJzIGZvciBhbGwgZmFpbGluZyBydWxlcycpO1xuXG4gIGlmICghcHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHtcbiAgICAvLyBEaXNhYmxlIGNoYWxrIGNvbG9yIGhpZ2hsaWdodGluZ1xuICAgIHByb2Nlc3MuZW52LkZPUkNFX0NPTE9SID0gJzAnO1xuICB9XG5cbiAgY29uc3QgYXJncyA9IGFyZ3YuYXJndjtcblxuICBzdGFja1RyYWNlID0gYXJncy52ZXJib3NlIHx8IGFyZ3MuZGVidWc7XG5cbiAgaWYgKGFyZ3MuXy5sZW5ndGggPiAxKSB7XG4gICAgYXJndi5zaG93SGVscCgpO1xuICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNvbW1hbmQgPSBhcmdzLl9bMF0gfHwgJ2xpbnQnO1xuICBjb25zdCB3b3JrZGlyID0gcHJvY2Vzcy5jd2QoKTtcblxuICBjb25zdCBwa2dDb25maWcgPSBwYXRoLmpvaW4od29ya2RpciwgJ3BhY2thZ2UuanNvbicpO1xuICBjb25zdCBhd3NsaW50Q29uZmlnID0gcGF0aC5qb2luKHdvcmtkaXIsICdhd3NsaW50Lmpzb24nKTtcblxuICBpZiAoY29tbWFuZCA9PT0gJ2xpc3QnKSB7XG4gICAgZm9yIChjb25zdCBydWxlIG9mIEFMTF9SVUxFU19MSU5URVIucnVsZXMpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhgJHtjaGFsay5jeWFuKHJ1bGUuY29kZSl9OiAke3J1bGUubWVzc2FnZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gaWYgbm8gcGFja2FnZS5qc29uIGFuZCBmb3JjZSBpcyB0cnVlIChkZWZhdWx0KSwganVzdCBkb24ndCBkbyBhbnl0aGluZ1xuICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMocGtnQ29uZmlnKSAmJiBhcmdzLmZvcmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGtnID0gYXdhaXQgZnMucmVhZEpTT04ocGtnQ29uZmlnKTtcblxuICAvLyBpZiB0aGlzIGlzIG5vdCBhIGpzaWkgbW9kdWxlIHdlIGhhdmUgbm90aGluZyB0byBsb29rIGZvclxuICBpZiAoIXBrZy5qc2lpKSB7XG4gICAgaWYgKGFyZ3MuZm9yY2UpIHtcbiAgICAgIHJldHVybjsgLy8ganVzdCBzaWxlbnRseSBzdWNjZWVkXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgaW4gJHt3b3JrZGlyfSBpcyBub3QgYSBqc2lpIG1vZHVsZSAobm8gXCJqc2lpXCIgc2VjdGlvbiBpbiBwYWNrYWdlLmpzb24pYCk7XG4gIH1cblxuICAvLyBpZiBwYWNrYWdlLmpzb24gY29udGFpbnMgYSBganNpaWAgc2VjdGlvbiBidXQgdGhlcmUgaXMgbm8gLmpzaWkgZmlsZVxuICAvLyBpdCBtZWFucyB3ZSBoYXZlbid0IGNvbXBpbGVkIHRoZSBtb2R1bGUuXG4gIGlmIChhd2FpdCBzaG91bGRDb21waWxlKCkpIHtcbiAgICBhd2FpdCBzaGVsbCgnanNpaScpO1xuICB9XG5cbiAgLy8gYXdzbGludC5qc29uIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBwYWNrYWdlLmpzb24gZm9yIGF3c2xpbnQgb3B0aW9ucy5cbiAgY29uc3Qgc3RhbmRsb25lT3B0aW9ucyA9IGF3YWl0IHJlYWRTdGFuZGFsb25lT3B0aW9ucyhhd3NsaW50Q29uZmlnKTtcblxuICAvLyByZWFkIFwiYXdzbGludFwiIGZyb20gcGFja2FnZS5qc29uXG4gIGlmIChhcmdzLmNvbmZpZykge1xuICAgIGlmIChzdGFuZGxvbmVPcHRpb25zKSB7XG4gICAgICBpZiAocGtnLmF3c2xpbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdhd3NsaW50IG9wdGlvbnMgaW4gcGFja2FnZS5qc29uIHdpbGwgYmUgaWdub3JlZCBzaW5jZSBhd3NsaW50Lmpzb24gZXhpc3RzLicpO1xuICAgICAgfVxuICAgICAgbWVyZ2VPcHRpb25zKGFyZ3MsIHN0YW5kbG9uZU9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZU9wdGlvbnMoYXJncywgcGtnLmF3c2xpbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhcmdzLmRlYnVnKSB7XG4gICAgY29uc29sZS5lcnJvcignY29tbWFuZDogJyArIGNvbW1hbmQpO1xuICAgIGNvbnNvbGUuZXJyb3IoJ29wdGlvbnM6ICcgKyBKU09OLnN0cmluZ2lmeShhcmdzLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIGlmIChjb21tYW5kID09PSAnbGludCcpIHtcbiAgICBjb25zdCBhc3NlbWJseSA9IGF3YWl0IGxvYWRNb2R1bGUod29ya2Rpcik7XG4gICAgaWYgKCFhc3NlbWJseSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV4Y2x1ZGVzVG9TYXZlID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBsZXQgZXJyb3JzID0gMDtcblxuICAgIGNvbnN0IGluY2x1ZGVSdWxlcyA9IG5ldyBSdWxlRmlsdGVyU2V0KGFyZ3MuaW5jbHVkZSk7XG4gICAgY29uc3QgZXhjbHVkZVJ1bGVzID0gbmV3IFJ1bGVGaWx0ZXJTZXQoYXJncy5leGNsdWRlKTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIHJlc3VsdHMucHVzaCguLi5BTExfUlVMRVNfTElOVEVSLmV2YWwoYXNzZW1ibHksIHtcbiAgICAgIGluY2x1ZGVSdWxlczogaW5jbHVkZVJ1bGVzLFxuICAgICAgZXhjbHVkZVJ1bGVzOiBleGNsdWRlUnVsZXMsXG4gICAgfSkpO1xuXG4gICAgLy8gU29ydCBlcnJvcnMgdG8gdGhlIHRvcCAoaGlnaGVzdCBzZXZlcml0eSBmaXJzdClcbiAgICByZXN1bHRzLnNvcnQoKGEsIGIpID0+IGIubGV2ZWwgLSBhLmxldmVsKTtcblxuICAgIC8vIHByb2Nlc3MgcmVzdWx0c1xuXG4gICAgZm9yIChjb25zdCBkaWFnIG9mIHJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IHN1cHByZXNzaW9uS2V5ID0gYCR7ZGlhZy5ydWxlLmNvZGV9OiR7ZGlhZy5zY29wZX1gO1xuXG4gICAgICBsZXQgY29sb3I7XG4gICAgICBzd2l0Y2ggKGRpYWcubGV2ZWwpIHtcbiAgICAgICAgY2FzZSBEaWFnbm9zdGljTGV2ZWwuU3VjY2VzczpcbiAgICAgICAgICBpZiAoYXJncy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLmdyYXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpYWdub3N0aWNMZXZlbC5FcnJvcjpcbiAgICAgICAgICBlcnJvcnMrKztcbiAgICAgICAgICBjb2xvciA9IGNoYWxrLnJlZDtcbiAgICAgICAgICBpZiAoYXJncy5zYXZlKSB7XG4gICAgICAgICAgICBleGNsdWRlc1RvU2F2ZS5wdXNoKHN1cHByZXNzaW9uS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLldhcm5pbmc6XG4gICAgICAgICAgaWYgKCFhcmdzLnF1aWV0KSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLnllbGxvdztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLlNraXBwZWQ6XG4gICAgICAgICAgaWYgKCFhcmdzLnF1aWV0KSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLmJsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihjb2xvcihgJHtEaWFnbm9zdGljTGV2ZWxbZGlhZy5sZXZlbF0udG9Mb3dlckNhc2UoKX06IFske2NoYWxrLmJvbGQoYGF3c2xpbnQ6JHtkaWFnLnJ1bGUuY29kZX1gKX06JHtjaGFsay5ib2xkKGRpYWcuc2NvcGUpfV0gJHtkaWFnLm1lc3NhZ2V9YCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleGNsdWRlc1RvU2F2ZS5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoc3RhbmRsb25lT3B0aW9ucykge1xuICAgICAgICBpZiAoIXN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSkge1xuICAgICAgICAgIHN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXBrZy5hd3NsaW50KSB7XG4gICAgICAgICAgcGtnLmF3c2xpbnQgPSB7IH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBrZy5hd3NsaW50LmV4Y2x1ZGUpIHtcbiAgICAgICAgICBwa2cuYXdzbGludC5leGNsdWRlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhjbHVkZXM6IHN0cmluZ1tdID0gc3RhbmRsb25lT3B0aW9ucyA/IHN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSA6IHBrZy5hd3NsaW50LmV4Y2x1ZGU7XG5cbiAgICAgIGZvciAoY29uc3QgZXhjbHVkZSBvZiBleGNsdWRlc1RvU2F2ZSkge1xuICAgICAgICBpZiAoZXhjbHVkZXMuaW5kZXhPZihleGNsdWRlKSA9PT0gLTEpIHtcbiAgICAgICAgICBleGNsdWRlcy5wdXNoKGV4Y2x1ZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChleGNsdWRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChzdGFuZGxvbmVPcHRpb25zKSB7XG4gICAgICAgICAgLy8gSWYgYXdzbGludC5qc29uIGV4aXN0cywgd3JpdGUgdGhlIGV4Y2x1ZGVzIHRoZXJlIGluc3RlYWQgb2YgdGhlIG9sZCBwYWNrYWdlLmpzb24gKGxlZ2FjeSBmb3JtYXQpLlxuICAgICAgICAgIGlmIChwa2cuYXdzbGludCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdFeGNsdWRlcyB3aWxsIGJlIHdyaXR0ZW4gdG8gYXdzbGludC5qc29uLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBmcy53cml0ZUpTT04oYXdzbGludENvbmZpZywgc3RhbmRsb25lT3B0aW9ucywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgZnMud3JpdGVKU09OKHBrZ0NvbmZpZywgcGtnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMgJiYgIWFyZ3Muc2F2ZSkge1xuICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXJndi5zaG93SGVscCgpO1xuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNob3VsZENvbXBpbGUoKSB7XG4gICAgLy8gaWYgLS1jb21waWxlIGlzIGV4cGxpY2l0bHkgZW5hYmxlZCB0aGVuIGp1c3QgY29tcGlsZSBhbHdheXNcbiAgICBpZiAoYXJncy5jb21waWxlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBoYXZlIGEgLmpzaWkgZmlsZSBhbmQgd2UgYXJlIG5vdCBmb3JjZWQgdG8gY29tcGlsZSwgdGhlbiBkb24ndCBjb21waWxlXG4gICAgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtkaXIsICcuanNpaScpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHdlIGRvbid0IGhhdmUgYSAuanNpaSBmaWxlLCBhbmQgLS1uby1jb21waWxlIGlzIGV4cGxpY2lseSBzZXQsIHRoZW4gaXQncyBhbiBlcnJvclxuICAgIGlmIChhcmdzLmNvbXBpbGUgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIC5qc2lpIGZpbGUgYW5kIC0tbm8tY29tcGlsZSBpcyBzZXQnKTtcbiAgICB9XG5cbiAgICAvLyBjb21waWxlIVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgY29uc29sZS5lcnJvcihjaGFsay5yZWQoZS5tZXNzYWdlKSk7XG4gIGlmIChzdGFja1RyYWNlKSB7XG4gICAgY29uc29sZS5lcnJvcihlLnN0YWNrKTtcbiAgfVxuICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkTW9kdWxlKGRpcjogc3RyaW5nKSB7XG4gIGNvbnN0IHRzID0gbmV3IHJlZmxlY3QuVHlwZVN5c3RlbSgpO1xuICBhd2FpdCB0cy5sb2FkKGRpciwge1xuICAgIHZhbGlkYXRlOiBmYWxzZSwgLy8gRG9uJ3QgdmFsaWRhdGUgdG8gc2F2ZSA2NiUgb2YgZXhlY3V0aW9uIHRpbWUgKDIwcyB2cyAxbWluKS5cbiAgICBzdXBwb3J0ZWRGZWF0dXJlczogWydpbnRlcnNlY3Rpb24tdHlwZXMnLCAnY2xhc3MtY292YXJpYW50LW92ZXJyaWRlcyddLFxuICB9KTtcbiAgLy8gV2UgcnVuICdhd3NsaW50JyBkdXJpbmcgYnVpbGQgdGltZSwgYXNzZW1ibGllcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBvay5cblxuICAvLyBXZSB3b24ndCBsb2FkIGFueSBtb3JlIGFzc2VtYmxpZXMuIExvY2sgdGhlIHR5cGVzeXN0ZW0gdG8gYmVuZWZpdCBmcm9tIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy5cbiAgdHMubG9jaygpO1xuXG4gIGlmICh0cy5yb290cy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGluZyBvbmx5IGEgc2luZ2xlIHJvb3QgYXNzZW1ibHknKTtcbiAgfVxuXG4gIHJldHVybiB0cy5yb290c1swXTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGRlc3Q6IGFueSwgcGtnPzogYW55KSB7XG4gIGlmICghcGtnKSB7IHJldHVybjsgfSAvLyBubyBvcHRpb25zIGluIHBhY2thZ2UuanNvblxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBrZykpIHtcbiAgICAvLyBpZiB0aGlzIGlzIGFuIGFycmF5IG9wdGlvbiwgdGhlbiBhZGQgdmFsdWVzIHRvIGRlc3RpbmF0aW9uXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb25zdCBhcnIgPSBkZXN0W2tleV0gfHwgW107XG4gICAgICBhcnIucHVzaCguLi52YWx1ZSk7XG4gICAgICBkZXN0W2tleV0gPSBhcnI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBvYmplY3RzIGFyZSBub3QgYWxsb3dlZFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgb3B0aW9uIFwiJHtrZXl9XCIgaW4gcGFja2FnZS5qc29uOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcbiAgICB9XG5cbiAgICAvLyBwcmltaXRpdmVzIHNpbXBseSBvdmVycmlkZVxuICAgIGRlc3Rba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRTdGFuZGFsb25lT3B0aW9ucyhhd3NsaW50Q29uZmlnOiBzdHJpbmcpIHtcbiAgaWYgKCFhd2FpdCBmcy5wYXRoRXhpc3RzKGF3c2xpbnRDb25maWcpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGZzLnJlYWRKU09OKGF3c2xpbnRDb25maWcpO1xuICByZXR1cm4gb3B0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2hlbGwoY29tbWFuZDogc3RyaW5nKSB7XG4gIGNvbnN0IGNoaWxkID0gY2hpbGRfcHJvY2Vzcy5zcGF3bihjb21tYW5kLCBbXSwgeyBzdGRpbzogWydpbmhlcml0JywgJ2luaGVyaXQnLCAnaW5oZXJpdCddIH0pO1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKG9rLCBrbykgPT4ge1xuICAgIGNoaWxkLm9uY2UoJ2V4aXQnLCAoc3RhdHVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChzdGF0dXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG9rKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga28obmV3IEVycm9yKGAke2NvbW1hbmR9IGV4aXRlZCB3aXRoIHN0YXR1cyAke3N0YXR1c31gKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2hpbGQub25jZSgnZXJyb3InLCBrbyk7XG4gIH0pO1xufVxuIl19
package/bin/awslint.ts CHANGED
@@ -1,4 +1,4 @@
1
- /* eslint-disable max-len */
1
+
2
2
  /* eslint-disable no-console */
3
3
  import * as child_process from 'child_process';
4
4
  import * as path from 'path';
@@ -104,7 +104,6 @@ async function main() {
104
104
  }
105
105
  }
106
106
 
107
-
108
107
  if (args.debug) {
109
108
  console.error('command: ' + command);
110
109
  console.error('options: ' + JSON.stringify(args, undefined, 2));
@@ -215,7 +214,6 @@ async function main() {
215
214
  throw new Error(`Invalid command: ${command}`);
216
215
 
217
216
  async function shouldCompile() {
218
-
219
217
  // if --compile is explicitly enabled then just compile always
220
218
  if (args.compile === true) {
221
219
  return true;
@@ -234,7 +232,6 @@ async function main() {
234
232
  // compile!
235
233
  return true;
236
234
  }
237
-
238
235
  }
239
236
 
240
237
  main().catch(e => {
@@ -267,7 +264,6 @@ function mergeOptions(dest: any, pkg?: any) {
267
264
  if (!pkg) { return; } // no options in package.json
268
265
 
269
266
  for (const [key, value] of Object.entries(pkg)) {
270
-
271
267
  // if this is an array option, then add values to destination
272
268
  if (Array.isArray(value)) {
273
269
  const arr = dest[key] || [];
package/lib/linter.js CHANGED
@@ -225,4 +225,4 @@ function typeReferenceFrom(ts, x) {
225
225
  function isTypeReference(x) {
226
226
  return x instanceof reflect.TypeReference;
227
227
  }
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUU3Qix3Q0FBd0M7QUFpQnhDLE1BQXNCLFVBQVU7Q0FHL0I7QUFIRCxnQ0FHQztBQUVELE1BQWEsZUFBZ0IsU0FBUSxVQUFVO0lBQ3JDLE9BQU8sQ0FBZTtJQUU5QixZQUFZLEdBQUcsT0FBcUI7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQVEsQ0FBQztRQUM5QixLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxJQUFJLENBQUMsUUFBMEIsRUFBRSxPQUFrQztRQUN4RSxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBQ3RDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQXZCRCwwQ0F1QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsTUFBVSxTQUFRLFVBQVU7SUFHVjtJQUZaLE1BQU0sR0FBd0MsRUFBRyxDQUFDO0lBRW5FLFlBQTZCLElBQWtFO1FBQzdGLEtBQUssRUFBRSxDQUFDO1FBRG1CLFNBQUksR0FBSixJQUFJLENBQThEO0lBRS9GLENBQUM7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ZUFBZSwrQkFBZixlQUFlLFFBSzFCO0FBU0Q7O0dBRUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEVBQXNCLEVBQUUsQ0FBZ0I7SUFDakUsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUVyQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sQ0FBQyxZQUFZLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBQcmltaXRpdmVUeXBlIH0gZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBSdWxlRmlsdGVyU2V0IH0gZnJvbSAnLi9ydWxlLXNwZWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBMaW50ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcnVsZXMgdG8gaW5jbHVkZS5cbiAgICogQGRlZmF1bHQgYWxsIHJ1bGVzXG4gICAqL1xuICBpbmNsdWRlUnVsZXM/OiBSdWxlRmlsdGVyU2V0O1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHJ1bGVzIHRvIGV4Y2x1ZGUgKHRha2VzIHByZWNlZGVuY2Ugb24gXCJpbmNsdWRlXCIpXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIGV4Y2x1ZGVSdWxlcz86IFJ1bGVGaWx0ZXJTZXQ7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMaW50ZXJCYXNlIHtcbiAgcHVibGljIGFic3RyYWN0IHJ1bGVzOiBSdWxlW107XG4gIHB1YmxpYyBhYnN0cmFjdCBldmFsKGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5LCBvcHRpb25zOiBMaW50ZXJPcHRpb25zIHwgdW5kZWZpbmVkKTogRGlhZ25vc3RpY1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQWdncmVnYXRlTGludGVyIGV4dGVuZHMgTGludGVyQmFzZSB7XG4gIHByaXZhdGUgbGludGVyczogTGludGVyQmFzZVtdO1xuXG4gIGNvbnN0cnVjdG9yKC4uLmxpbnRlcnM6IExpbnRlckJhc2VbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5saW50ZXJzID0gbGludGVycztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcnVsZXMoKTogUnVsZVtdIHtcbiAgICBjb25zdCByZXQgPSBuZXcgQXJyYXk8UnVsZT4oKTtcbiAgICBmb3IgKGNvbnN0IGxpbnRlciBvZiB0aGlzLmxpbnRlcnMpIHtcbiAgICAgIHJldC5wdXNoKC4uLmxpbnRlci5ydWxlcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgZXZhbChhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseSwgb3B0aW9uczogTGludGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IERpYWdub3N0aWNbXSB7XG4gICAgY29uc3QgZGlhZ3MgPSBuZXcgQXJyYXk8RGlhZ25vc3RpYz4oKTtcbiAgICBmb3IgKGNvbnN0IGxpbnRlciBvZiB0aGlzLmxpbnRlcnMpIHtcbiAgICAgIGRpYWdzLnB1c2goLi4ubGludGVyLmV2YWwoYXNzZW1ibHksIG9wdGlvbnMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpYWdzO1xuICB9XG59XG5cbi8qKlxuICogRXZhbHVhdGVzIGEgYnVuY2ggb2YgcnVsZXMgYWdhaW5zdCBzb21lIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBMaW50ZXI8VD4gZXh0ZW5kcyBMaW50ZXJCYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVsZXM6IHsgW25hbWU6IHN0cmluZ106IENvbmNyZXRlUnVsZTxUPiB9ID0geyB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaW5pdDogKGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5KSA9PiBUIHwgcmVhZG9ubHkgVFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcnVsZXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fcnVsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGwgYW5vdGhlciBydWxlLlxuICAgKi9cbiAgcHVibGljIGFkZChydWxlOiBDb25jcmV0ZVJ1bGU8VD4pIHtcbiAgICBpZiAocnVsZS5jb2RlIGluIHRoaXMuX3J1bGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHJ1bGUgXCIke3J1bGUuY29kZX1cIiBhbHJlYWR5IGV4aXN0c2ApO1xuICAgIH1cblxuICAgIHRoaXMuX3J1bGVzW3J1bGUuY29kZV0gPSBydWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIGFsbCBydWxlcyBhZ2FpbnN0IHRoZSBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIGV2YWwoYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHksIG9wdGlvbnM6IExpbnRlck9wdGlvbnMgfCB1bmRlZmluZWQpOiBEaWFnbm9zdGljW10ge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHsgfTtcblxuICAgIGxldCBjdHhzID0gdGhpcy5pbml0KGFzc2VtYmx5KTtcbiAgICBpZiAoIWN0eHMpIHtcbiAgICAgIHJldHVybiBbXTsgLy8gc2tpcFxuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShjdHhzKSkge1xuICAgICAgY3R4cyA9IFtjdHhzXSBhcyByZWFkb25seSBUW107XG4gICAgfVxuXG4gICAgY29uc3QgZGlhZyA9IG5ldyBBcnJheTxEaWFnbm9zdGljPigpO1xuXG4gICAgZm9yIChjb25zdCBjdHggb2YgY3R4cykge1xuICAgICAgZm9yIChjb25zdCBydWxlIG9mIE9iamVjdC52YWx1ZXModGhpcy5fcnVsZXMpKSB7XG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb24gPSBuZXcgRXZhbHVhdGlvbihjdHgsIHJ1bGUsIGRpYWcsIG9wdGlvbnMpO1xuICAgICAgICBydWxlLmV2YWwoZXZhbHVhdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpYWc7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXNzZWQgaW4gdG8gZWFjaCBydWxlIGR1cmluZyBldmFsdWF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvbjxUPiB7XG4gIHB1YmxpYyByZWFkb25seSBjdHg6IFQ7XG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBMaW50ZXJPcHRpb25zO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycjogQ29uY3JldGVSdWxlPFQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW107XG5cbiAgY29uc3RydWN0b3IoY3R4OiBULCBydWxlOiBDb25jcmV0ZVJ1bGU8VD4sIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW10sIG9wdGlvbnM6IExpbnRlck9wdGlvbnMpIHtcbiAgICB0aGlzLmN0eCA9IGN0eDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY3VyciA9IHJ1bGU7XG4gICAgdGhpcy5kaWFnbm9zdGljcyA9IGRpYWdub3N0aWNzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZCBhIGZhaWx1cmUgaWYgYGNvbmRpdGlvbmAgaXMgbm90IHRydXRoeS5cbiAgICpcbiAgICogQHBhcmFtIGNvbmRpdGlvbiBUaGUgY29uZGl0aW9uIHRvIGFzc2VydC5cbiAgICogQHBhcmFtIHNjb3BlIFVzZWQgdG8gZGlhZ25vc2UgdGhlIGxvY2F0aW9uIGluIHRoZSBzb3VyY2UsIGFuZCBpcyB1c2VkIGluIHRoZVxuICAgKiBpZ25vcmUgcGF0dGVybi5cbiAgICogQHBhcmFtIGV4dHJhIFVzZWQgdG8gcmVwbGFjZSAlcyBpbiB0aGUgZGVmYXVsdCBtZXNzYWdlIGZvcm1hdCBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYXNzZXJ0KGNvbmRpdGlvbjogYW55LCBzY29wZTogc3RyaW5nLCBleHRyYT86IHN0cmluZyk6IGNvbmRpdGlvbiBpcyB0cnVlIHtcbiAgICAvLyBkZWR1cGxpY2F0ZTogc2tpcCBpZiB0aGlzIHNwZWNpZmljIGFzc2VydGlvbiAoXCJydWxlOnNjb3BlXCIpIHdhcyBhbHJlYWR5IGV4YW1pbmVkXG4gICAgaWYgKHRoaXMuZGlhZ25vc3RpY3MuZmluZChkID0+IGQucnVsZS5jb2RlID09PSB0aGlzLmN1cnIuY29kZSAmJiBkLnNjb3BlID09PSBzY29wZSkpIHtcbiAgICAgIHJldHVybiBjb25kaXRpb247XG4gICAgfVxuXG4gICAgY29uc3QgaW5jbHVkZSA9IHRoaXMuc2hvdWxkRXZhbHVhdGUodGhpcy5jdXJyLmNvZGUsIHNjb3BlKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdXRpbC5mb3JtYXQodGhpcy5jdXJyLm1lc3NhZ2UsIGV4dHJhIHx8ICcnKTtcblxuICAgIC8vIERvbid0IGFkZCBhIFwiU3VjY2Vzc1wiIGRpYWdub3N0aWMuIEl0IHdpbGwgYnJlYWsgaWYgd2UgcnVuIGEgY29tcG91bmRcbiAgICAvLyBsaW50ZXIgcnVsZSB3aGljaCBjb25zaXN0cyBvZiAzIGNoZWNrcyB3aXRoIHRoZSBzYW1lIHNjb3BlIChzdWNoXG4gICAgLy8gYXMgZm9yIGV4YW1wbGUgYGFzc2VydFNpZ25hdHVyZSgpYCkuIElmIHRoZSBmaXJzdCBjaGVjayBmYWlscywgd2Ugd291bGRcbiAgICAvLyBhZGQgYSBcIlN1Y2Nlc3NcIiBkaWFnbm9zdGljIGFuZCBhbGwgb3RoZXIgZGlhZ25vc3RpY3Mgd291bGQgYmUgc2tpcHBlZCBiZWNhdXNlXG4gICAgLy8gb2YgdGhlIGRlZHVwbGljYXRpb24gY2hlY2sgYWJvdmUuIENoYW5naW5nIHRoZSBzY29wZSBtYWtlcyBpdCB3b3JzZSwgc2luY2VcbiAgICAvLyB0aGUgc2NvcGUgaXMgYWxzbyB0aGUgaWdub3JlIHBhdHRlcm4gYW5kIHRoZXkncmUgYWxsIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBydWxlLlxuICAgIC8vXG4gICAgLy8gU2ltcGxlc3Qgc29sdXRpb24gaXMgdG8gbm90IHJlY29yZCBzdWNjZXNzZXMgLS0gd2h5IGRvIHdlIGV2ZW4gbmVlZCB0aGVtP1xuICAgIGlmIChpbmNsdWRlICYmIGNvbmRpdGlvbikgeyByZXR1cm4gY29uZGl0aW9uOyB9XG5cbiAgICBsZXQgbGV2ZWw6IERpYWdub3N0aWNMZXZlbDtcbiAgICBpZiAoIWluY2x1ZGUpIHtcbiAgICAgIGxldmVsID0gRGlhZ25vc3RpY0xldmVsLlNraXBwZWQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnIud2FybmluZykge1xuICAgICAgbGV2ZWwgPSBEaWFnbm9zdGljTGV2ZWwuV2FybmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgbGV2ZWwgPSBEaWFnbm9zdGljTGV2ZWwuRXJyb3I7XG4gICAgfVxuXG4gICAgY29uc3QgZGlhZzogRGlhZ25vc3RpYyA9IHtcbiAgICAgIGxldmVsLFxuICAgICAgcnVsZTogdGhpcy5jdXJyLFxuICAgICAgc2NvcGUsXG4gICAgICBtZXNzYWdlLFxuICAgIH07XG5cbiAgICB0aGlzLmRpYWdub3N0aWNzLnB1c2goZGlhZyk7XG5cbiAgICByZXR1cm4gY29uZGl0aW9uO1xuICB9XG5cbiAgcHVibGljIGFzc2VydEVxdWFscyhhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSwgc2NvcGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBzY29wZSwgYCAoZXhwZWN0ZWQ9XCIke2V4cGVjdGVkfVwiLGFjdHVhbD1cIiR7YWN0dWFsfVwiKWApO1xuICB9XG5cbiAgcHVibGljIGFzc2VydFR5cGVzRXF1YWwodHM6IHJlZmxlY3QuVHlwZVN5c3RlbSwgYWN0dWFsOiBUeXBlU3BlY2lmaWVyLCBleHBlY3RlZDogVHlwZVNwZWNpZmllciwgc2NvcGU6IHN0cmluZykge1xuICAgIGNvbnN0IGEgPSB0eXBlUmVmZXJlbmNlRnJvbSh0cywgYWN0dWFsKTtcbiAgICBjb25zdCBlID0gdHlwZVJlZmVyZW5jZUZyb20odHMsIGV4cGVjdGVkKTtcbiAgICByZXR1cm4gdGhpcy5hc3NlcnQoYS50b1N0cmluZygpID09PSBlLnRvU3RyaW5nKCksIHNjb3BlLCBgIChleHBlY3RlZD1cIiR7ZX1cIixhY3R1YWw9XCIke2F9XCIpYCk7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0VHlwZXNBc3NpZ25hYmxlKHRzOiByZWZsZWN0LlR5cGVTeXN0ZW0sIGFjdHVhbDogVHlwZVNwZWNpZmllciwgZXhwZWN0ZWQ6IFR5cGVTcGVjaWZpZXIsIHNjb3BlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhID0gdHlwZVJlZmVyZW5jZUZyb20odHMsIGFjdHVhbCk7XG4gICAgY29uc3QgZSA9IHR5cGVSZWZlcmVuY2VGcm9tKHRzLCBleHBlY3RlZCk7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0KGEudG9TdHJpbmcoKSA9PT0gZS50b1N0cmluZygpIHx8IChhLmZxbiAmJiBlLmZxbiAmJiBhLnR5cGUhLmV4dGVuZHMoZS50eXBlISkpLCBzY29wZSwgYCAoXCIke2F9XCIgbm90IGFzc2lnbmFibGUgdG8gXCIke2V9XCIpYCk7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0UGFyYW1ldGVyT3B0aW9uYWwoYWN0dWFsOiBib29sZWFuLCBleHBlY3RlZDogYm9vbGVhbiwgc2NvcGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBzY29wZSwgYCAoJHtzY29wZX0gc2hvdWxkIGJlICR7ZXhwZWN0ZWQgPyAnb3B0aW9uYWwnIDogJ21hbmRhdG9yeSd9KWApO1xuICB9XG5cbiAgcHVibGljIGFzc2VydFNpZ25hdHVyZShtZXRob2Q6IHJlZmxlY3QuQ2FsbGFibGUsIGV4cGVjdGF0aW9uczogTWV0aG9kU2lnbmF0dXJlRXhwZWN0YXRpb25zKSB7XG4gICAgY29uc3Qgc2NvcGUgPSBtZXRob2QucGFyZW50VHlwZS5mcW4gKyAnLicgKyBtZXRob2QubmFtZTtcbiAgICBpZiAoZXhwZWN0YXRpb25zLnJldHVybnMgJiYgcmVmbGVjdC5NZXRob2QuaXNNZXRob2QobWV0aG9kKSkge1xuICAgICAgdGhpcy5hc3NlcnRUeXBlc0VxdWFsKG1ldGhvZC5zeXN0ZW0sIG1ldGhvZC5yZXR1cm5zLnR5cGUsIGV4cGVjdGF0aW9ucy5yZXR1cm5zLCBzY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKGV4cGVjdGF0aW9ucy5wYXJhbWV0ZXJzKSB7XG4gICAgICBjb25zdCBleHBlY3RlZENvdW50ID0gZXhwZWN0YXRpb25zLnBhcmFtZXRlcnMubGVuZ3RoO1xuICAgICAgY29uc3QgYWN0dWFsQ291bnQgPSBtZXRob2QucGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5hc3NlcnRFcXVhbHMoYWN0dWFsQ291bnQsIGV4cGVjdGVkQ291bnQsIHNjb3BlKSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4cGVjdGF0aW9ucy5wYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ID0gZXhwZWN0YXRpb25zLnBhcmFtZXRlcnNbaV07XG4gICAgICAgICAgY29uc3QgYWN0dWFsID0gbWV0aG9kLnBhcmFtZXRlcnNbaV07XG4gICAgICAgICAgY29uc3QgcHNjb3BlID0gc2NvcGUgKyBgLnBhcmFtc1ske2l9XWA7XG4gICAgICAgICAgaWYgKGV4cGVjdC5uYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZE5hbWUgPSBleHBlY3QubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbE5hbWUgPSBhY3R1YWwubmFtZTtcbiAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWxzKGFjdHVhbE5hbWUsIGV4cGVjdGVkTmFtZSwgcHNjb3BlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4cGVjdC50eXBlKSB7XG4gICAgICAgICAgICBpZiAoZXhwZWN0LnN1YnR5cGVBbGxvd2VkKSB7XG4gICAgICAgICAgICAgIHRoaXMuYXNzZXJ0VHlwZXNBc3NpZ25hYmxlKG1ldGhvZC5zeXN0ZW0sIGFjdHVhbC50eXBlLCBleHBlY3QudHlwZSwgcHNjb3BlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuYXNzZXJ0VHlwZXNFcXVhbChtZXRob2Quc3lzdGVtLCBhY3R1YWwudHlwZSwgZXhwZWN0LnR5cGUsIHBzY29wZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChleHBlY3Qub3B0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5hc3NlcnRQYXJhbWV0ZXJPcHRpb25hbChhY3R1YWwub3B0aW9uYWwsIGV4cGVjdC5vcHRpb25hbCwgcHNjb3BlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGVzIHdoZXRoZXIgdGhlIHJ1bGUgc2hvdWxkIGJlIGV2YWx1YXRlZCBiYXNlZCBvbiB0aGUgZmlsdGVycyBhcHBsaWVkLlxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRFdmFsdWF0ZShjb2RlOiBzdHJpbmcsIHNjb3BlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5pbmNsdWRlUnVsZXMgfHwgdGhpcy5vcHRpb25zLmluY2x1ZGVSdWxlcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaW5jbHVkZVJ1bGVzLm1hdGNoZXMoY29kZSwgc2NvcGUpKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmV4Y2x1ZGVSdWxlcz8ubWF0Y2hlcyhjb2RlLCBzY29wZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIFJ1bGUge1xuICBjb2RlOiBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgd2FybmluZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uY3JldGVSdWxlPFQ+IGV4dGVuZHMgUnVsZSB7XG4gIGV2YWwobGludGVyOiBFdmFsdWF0aW9uPFQ+KTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIHR5cGUgY29uc3RyYWludFxuICpcbiAqIEJlIHN1cGVyIGZsZXhpYmxlIGFib3V0IGhvdyB0eXBlcyBjYW4gYmUgcmVwcmVzZW50ZWQuIFVsdGltYXRlbHksIHdlIHdpbGxcbiAqIGNvbXBhcmUgd2hhdCB5b3UgZ2l2ZSB0byBhIFR5cGVSZWZlcmVuY2UsIGJlY2F1c2UgdGhhdCdzIHdoYXQncyBpbiB0aGUgSlNJSVxuICogUmVmbGVjdCBtb2RlbC4gSG93ZXZlciwgaWYgeW91IGFscmVhZHkgaGF2ZSBhIHJlYWwgVHlwZSwgb3IganVzdCBhIHN0cmluZyB0b1xuICogYSB1c2VyLWRlZmluZWQgdHlwZSwgdGhhdCdzIGZpbmUgdG9vLiBXZSdsbCBEbyBUaGUgUmlnaHQgVGhpbmcuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVTcGVjaWZpZXIgPSByZWZsZWN0LlR5cGVSZWZlcmVuY2UgfCByZWZsZWN0LlR5cGUgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWV0aG9kU2lnbmF0dXJlUGFyYW1ldGVyRXhwZWN0YXRpb24ge1xuICBuYW1lPzogc3RyaW5nO1xuICB0eXBlPzogVHlwZVNwZWNpZmllcjtcbiAgc3VidHlwZUFsbG93ZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBzaG91bGQgdGhpcyBwYXJhbSBiZSBvcHRpb25hbD8gKi9cbiAgb3B0aW9uYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGhvZFNpZ25hdHVyZUV4cGVjdGF0aW9ucyB7XG4gIHBhcmFtZXRlcnM/OiBNZXRob2RTaWduYXR1cmVQYXJhbWV0ZXJFeHBlY3RhdGlvbltdO1xuICByZXR1cm5zPzogVHlwZVNwZWNpZmllcjtcbn1cblxuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0xldmVsIHtcbiAgU2tpcHBlZCxcbiAgU3VjY2VzcyxcbiAgV2FybmluZyxcbiAgRXJyb3IsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhZ25vc3RpYyB7XG4gIGxldmVsOiBEaWFnbm9zdGljTGV2ZWw7XG4gIHJ1bGU6IFJ1bGU7XG4gIHNjb3BlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgdHlwZSBzcGVjaWZpZXIgdG8gYSBUeXBlUmVmZXJlbmNlXG4gKi9cbmZ1bmN0aW9uIHR5cGVSZWZlcmVuY2VGcm9tKHRzOiByZWZsZWN0LlR5cGVTeXN0ZW0sIHg6IFR5cGVTcGVjaWZpZXIpOiByZWZsZWN0LlR5cGVSZWZlcmVuY2Uge1xuICBpZiAoaXNUeXBlUmVmZXJlbmNlKHgpKSB7IHJldHVybiB4OyB9XG5cbiAgaWYgKHR5cGVvZiB4ID09PSAnc3RyaW5nJykge1xuICAgIGlmICh4LmluZGV4T2YoJy4nKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBuZXcgcmVmbGVjdC5UeXBlUmVmZXJlbmNlKHRzLCB7IHByaW1pdGl2ZTogeCBhcyBQcmltaXRpdmVUeXBlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IHJlZmxlY3QuVHlwZVJlZmVyZW5jZSh0cywgeyBmcW46IHggfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyByZWZsZWN0LlR5cGVSZWZlcmVuY2UodHMsIHgpO1xufVxuXG5mdW5jdGlvbiBpc1R5cGVSZWZlcmVuY2UoeDogYW55KTogeCBpcyByZWZsZWN0LlR5cGVSZWZlcmVuY2Uge1xuICByZXR1cm4geCBpbnN0YW5jZW9mIHJlZmxlY3QuVHlwZVJlZmVyZW5jZTtcbn1cbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUU3Qix3Q0FBd0M7QUFpQnhDLE1BQXNCLFVBQVU7Q0FHL0I7QUFIRCxnQ0FHQztBQUVELE1BQWEsZUFBZ0IsU0FBUSxVQUFVO0lBQ3JDLE9BQU8sQ0FBZTtJQUU5QixZQUFZLEdBQUcsT0FBcUI7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQVEsQ0FBQztRQUM5QixLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxJQUFJLENBQUMsUUFBMEIsRUFBRSxPQUFrQztRQUN4RSxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBQ3RDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQXZCRCwwQ0F1QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsTUFBVSxTQUFRLFVBQVU7SUFHVjtJQUZaLE1BQU0sR0FBd0MsRUFBRyxDQUFDO0lBRW5FLFlBQTZCLElBQWtFO1FBQzdGLEtBQUssRUFBRSxDQUFDO1FBRG1CLFNBQUksR0FBSixJQUFJLENBQThEO0lBRS9GLENBQUM7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ZUFBZSwrQkFBZixlQUFlLFFBSzFCO0FBU0Q7O0dBRUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEVBQXNCLEVBQUUsQ0FBZ0I7SUFDakUsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUVyQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sQ0FBQyxZQUFZLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBQcmltaXRpdmVUeXBlIH0gZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBSdWxlRmlsdGVyU2V0IH0gZnJvbSAnLi9ydWxlLXNwZWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBMaW50ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcnVsZXMgdG8gaW5jbHVkZS5cbiAgICogQGRlZmF1bHQgYWxsIHJ1bGVzXG4gICAqL1xuICBpbmNsdWRlUnVsZXM/OiBSdWxlRmlsdGVyU2V0O1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHJ1bGVzIHRvIGV4Y2x1ZGUgKHRha2VzIHByZWNlZGVuY2Ugb24gXCJpbmNsdWRlXCIpXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIGV4Y2x1ZGVSdWxlcz86IFJ1bGVGaWx0ZXJTZXQ7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMaW50ZXJCYXNlIHtcbiAgcHVibGljIGFic3RyYWN0IHJ1bGVzOiBSdWxlW107XG4gIHB1YmxpYyBhYnN0cmFjdCBldmFsKGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5LCBvcHRpb25zOiBMaW50ZXJPcHRpb25zIHwgdW5kZWZpbmVkKTogRGlhZ25vc3RpY1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQWdncmVnYXRlTGludGVyIGV4dGVuZHMgTGludGVyQmFzZSB7XG4gIHByaXZhdGUgbGludGVyczogTGludGVyQmFzZVtdO1xuXG4gIGNvbnN0cnVjdG9yKC4uLmxpbnRlcnM6IExpbnRlckJhc2VbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5saW50ZXJzID0gbGludGVycztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcnVsZXMoKTogUnVsZVtdIHtcbiAgICBjb25zdCByZXQgPSBuZXcgQXJyYXk8UnVsZT4oKTtcbiAgICBmb3IgKGNvbnN0IGxpbnRlciBvZiB0aGlzLmxpbnRlcnMpIHtcbiAgICAgIHJldC5wdXNoKC4uLmxpbnRlci5ydWxlcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgZXZhbChhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseSwgb3B0aW9uczogTGludGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IERpYWdub3N0aWNbXSB7XG4gICAgY29uc3QgZGlhZ3MgPSBuZXcgQXJyYXk8RGlhZ25vc3RpYz4oKTtcbiAgICBmb3IgKGNvbnN0IGxpbnRlciBvZiB0aGlzLmxpbnRlcnMpIHtcbiAgICAgIGRpYWdzLnB1c2goLi4ubGludGVyLmV2YWwoYXNzZW1ibHksIG9wdGlvbnMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpYWdzO1xuICB9XG59XG5cbi8qKlxuICogRXZhbHVhdGVzIGEgYnVuY2ggb2YgcnVsZXMgYWdhaW5zdCBzb21lIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBMaW50ZXI8VD4gZXh0ZW5kcyBMaW50ZXJCYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVsZXM6IHsgW25hbWU6IHN0cmluZ106IENvbmNyZXRlUnVsZTxUPiB9ID0geyB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaW5pdDogKGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5KSA9PiBUIHwgcmVhZG9ubHkgVFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcnVsZXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fcnVsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGwgYW5vdGhlciBydWxlLlxuICAgKi9cbiAgcHVibGljIGFkZChydWxlOiBDb25jcmV0ZVJ1bGU8VD4pIHtcbiAgICBpZiAocnVsZS5jb2RlIGluIHRoaXMuX3J1bGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHJ1bGUgXCIke3J1bGUuY29kZX1cIiBhbHJlYWR5IGV4aXN0c2ApO1xuICAgIH1cblxuICAgIHRoaXMuX3J1bGVzW3J1bGUuY29kZV0gPSBydWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIGFsbCBydWxlcyBhZ2FpbnN0IHRoZSBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIGV2YWwoYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHksIG9wdGlvbnM6IExpbnRlck9wdGlvbnMgfCB1bmRlZmluZWQpOiBEaWFnbm9zdGljW10ge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHsgfTtcblxuICAgIGxldCBjdHhzID0gdGhpcy5pbml0KGFzc2VtYmx5KTtcbiAgICBpZiAoIWN0eHMpIHtcbiAgICAgIHJldHVybiBbXTsgLy8gc2tpcFxuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShjdHhzKSkge1xuICAgICAgY3R4cyA9IFtjdHhzXSBhcyByZWFkb25seSBUW107XG4gICAgfVxuXG4gICAgY29uc3QgZGlhZyA9IG5ldyBBcnJheTxEaWFnbm9zdGljPigpO1xuXG4gICAgZm9yIChjb25zdCBjdHggb2YgY3R4cykge1xuICAgICAgZm9yIChjb25zdCBydWxlIG9mIE9iamVjdC52YWx1ZXModGhpcy5fcnVsZXMpKSB7XG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb24gPSBuZXcgRXZhbHVhdGlvbihjdHgsIHJ1bGUsIGRpYWcsIG9wdGlvbnMpO1xuICAgICAgICBydWxlLmV2YWwoZXZhbHVhdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpYWc7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXNzZWQgaW4gdG8gZWFjaCBydWxlIGR1cmluZyBldmFsdWF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvbjxUPiB7XG4gIHB1YmxpYyByZWFkb25seSBjdHg6IFQ7XG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBMaW50ZXJPcHRpb25zO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycjogQ29uY3JldGVSdWxlPFQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW107XG5cbiAgY29uc3RydWN0b3IoY3R4OiBULCBydWxlOiBDb25jcmV0ZVJ1bGU8VD4sIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW10sIG9wdGlvbnM6IExpbnRlck9wdGlvbnMpIHtcbiAgICB0aGlzLmN0eCA9IGN0eDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY3VyciA9IHJ1bGU7XG4gICAgdGhpcy5kaWFnbm9zdGljcyA9IGRpYWdub3N0aWNzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZCBhIGZhaWx1cmUgaWYgYGNvbmRpdGlvbmAgaXMgbm90IHRydXRoeS5cbiAgICpcbiAgICogQHBhcmFtIGNvbmRpdGlvbiBUaGUgY29uZGl0aW9uIHRvIGFzc2VydC5cbiAgICogQHBhcmFtIHNjb3BlIFVzZWQgdG8gZGlhZ25vc2UgdGhlIGxvY2F0aW9uIGluIHRoZSBzb3VyY2UsIGFuZCBpcyB1c2VkIGluIHRoZVxuICAgKiBpZ25vcmUgcGF0dGVybi5cbiAgICogQHBhcmFtIGV4dHJhIFVzZWQgdG8gcmVwbGFjZSAlcyBpbiB0aGUgZGVmYXVsdCBtZXNzYWdlIGZvcm1hdCBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYXNzZXJ0KGNvbmRpdGlvbjogYW55LCBzY29wZTogc3RyaW5nLCBleHRyYT86IHN0cmluZyk6IGNvbmRpdGlvbiBpcyB0cnVlIHtcbiAgICAvLyBkZWR1cGxpY2F0ZTogc2tpcCBpZiB0aGlzIHNwZWNpZmljIGFzc2VydGlvbiAoXCJydWxlOnNjb3BlXCIpIHdhcyBhbHJlYWR5IGV4YW1pbmVkXG4gICAgaWYgKHRoaXMuZGlhZ25vc3RpY3MuZmluZChkID0+IGQucnVsZS5jb2RlID09PSB0aGlzLmN1cnIuY29kZSAmJiBkLnNjb3BlID09PSBzY29wZSkpIHtcbiAgICAgIHJldHVybiBjb25kaXRpb247XG4gICAgfVxuXG4gICAgY29uc3QgaW5jbHVkZSA9IHRoaXMuc2hvdWxkRXZhbHVhdGUodGhpcy5jdXJyLmNvZGUsIHNjb3BlKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdXRpbC5mb3JtYXQodGhpcy5jdXJyLm1lc3NhZ2UsIGV4dHJhIHx8ICcnKTtcblxuICAgIC8vIERvbid0IGFkZCBhIFwiU3VjY2Vzc1wiIGRpYWdub3N0aWMuIEl0IHdpbGwgYnJlYWsgaWYgd2UgcnVuIGEgY29tcG91bmRcbiAgICAvLyBsaW50ZXIgcnVsZSB3aGljaCBjb25zaXN0cyBvZiAzIGNoZWNrcyB3aXRoIHRoZSBzYW1lIHNjb3BlIChzdWNoXG4gICAgLy8gYXMgZm9yIGV4YW1wbGUgYGFzc2VydFNpZ25hdHVyZSgpYCkuIElmIHRoZSBmaXJzdCBjaGVjayBmYWlscywgd2Ugd291bGRcbiAgICAvLyBhZGQgYSBcIlN1Y2Nlc3NcIiBkaWFnbm9zdGljIGFuZCBhbGwgb3RoZXIgZGlhZ25vc3RpY3Mgd291bGQgYmUgc2tpcHBlZCBiZWNhdXNlXG4gICAgLy8gb2YgdGhlIGRlZHVwbGljYXRpb24gY2hlY2sgYWJvdmUuIENoYW5naW5nIHRoZSBzY29wZSBtYWtlcyBpdCB3b3JzZSwgc2luY2VcbiAgICAvLyB0aGUgc2NvcGUgaXMgYWxzbyB0aGUgaWdub3JlIHBhdHRlcm4gYW5kIHRoZXkncmUgYWxsIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBydWxlLlxuICAgIC8vXG4gICAgLy8gU2ltcGxlc3Qgc29sdXRpb24gaXMgdG8gbm90IHJlY29yZCBzdWNjZXNzZXMgLS0gd2h5IGRvIHdlIGV2ZW4gbmVlZCB0aGVtP1xuICAgIGlmIChpbmNsdWRlICYmIGNvbmRpdGlvbikgeyByZXR1cm4gY29uZGl0aW9uOyB9XG5cbiAgICBsZXQgbGV2ZWw6IERpYWdub3N0aWNMZXZlbDtcbiAgICBpZiAoIWluY2x1ZGUpIHtcbiAgICAgIGxldmVsID0gRGlhZ25vc3RpY0xldmVsLlNraXBwZWQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnIud2FybmluZykge1xuICAgICAgbGV2ZWwgPSBEaWFnbm9zdGljTGV2ZWwuV2FybmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgbGV2ZWwgPSBEaWFnbm9zdGljTGV2ZWwuRXJyb3I7XG4gICAgfVxuXG4gICAgY29uc3QgZGlhZzogRGlhZ25vc3RpYyA9IHtcbiAgICAgIGxldmVsLFxuICAgICAgcnVsZTogdGhpcy5jdXJyLFxuICAgICAgc2NvcGUsXG4gICAgICBtZXNzYWdlLFxuICAgIH07XG5cbiAgICB0aGlzLmRpYWdub3N0aWNzLnB1c2goZGlhZyk7XG5cbiAgICByZXR1cm4gY29uZGl0aW9uO1xuICB9XG5cbiAgcHVibGljIGFzc2VydEVxdWFscyhhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSwgc2NvcGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBzY29wZSwgYCAoZXhwZWN0ZWQ9XCIke2V4cGVjdGVkfVwiLGFjdHVhbD1cIiR7YWN0dWFsfVwiKWApO1xuICB9XG5cbiAgcHVibGljIGFzc2VydFR5cGVzRXF1YWwodHM6IHJlZmxlY3QuVHlwZVN5c3RlbSwgYWN0dWFsOiBUeXBlU3BlY2lmaWVyLCBleHBlY3RlZDogVHlwZVNwZWNpZmllciwgc2NvcGU6IHN0cmluZykge1xuICAgIGNvbnN0IGEgPSB0eXBlUmVmZXJlbmNlRnJvbSh0cywgYWN0dWFsKTtcbiAgICBjb25zdCBlID0gdHlwZVJlZmVyZW5jZUZyb20odHMsIGV4cGVjdGVkKTtcbiAgICByZXR1cm4gdGhpcy5hc3NlcnQoYS50b1N0cmluZygpID09PSBlLnRvU3RyaW5nKCksIHNjb3BlLCBgIChleHBlY3RlZD1cIiR7ZX1cIixhY3R1YWw9XCIke2F9XCIpYCk7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0VHlwZXNBc3NpZ25hYmxlKHRzOiByZWZsZWN0LlR5cGVTeXN0ZW0sIGFjdHVhbDogVHlwZVNwZWNpZmllciwgZXhwZWN0ZWQ6IFR5cGVTcGVjaWZpZXIsIHNjb3BlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhID0gdHlwZVJlZmVyZW5jZUZyb20odHMsIGFjdHVhbCk7XG4gICAgY29uc3QgZSA9IHR5cGVSZWZlcmVuY2VGcm9tKHRzLCBleHBlY3RlZCk7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0KGEudG9TdHJpbmcoKSA9PT0gZS50b1N0cmluZygpIHx8IChhLmZxbiAmJiBlLmZxbiAmJiBhLnR5cGUhLmV4dGVuZHMoZS50eXBlISkpLCBzY29wZSwgYCAoXCIke2F9XCIgbm90IGFzc2lnbmFibGUgdG8gXCIke2V9XCIpYCk7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0UGFyYW1ldGVyT3B0aW9uYWwoYWN0dWFsOiBib29sZWFuLCBleHBlY3RlZDogYm9vbGVhbiwgc2NvcGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFzc2VydChhY3R1YWwgPT09IGV4cGVjdGVkLCBzY29wZSwgYCAoJHtzY29wZX0gc2hvdWxkIGJlICR7ZXhwZWN0ZWQgPyAnb3B0aW9uYWwnIDogJ21hbmRhdG9yeSd9KWApO1xuICB9XG5cbiAgcHVibGljIGFzc2VydFNpZ25hdHVyZShtZXRob2Q6IHJlZmxlY3QuQ2FsbGFibGUsIGV4cGVjdGF0aW9uczogTWV0aG9kU2lnbmF0dXJlRXhwZWN0YXRpb25zKSB7XG4gICAgY29uc3Qgc2NvcGUgPSBtZXRob2QucGFyZW50VHlwZS5mcW4gKyAnLicgKyBtZXRob2QubmFtZTtcbiAgICBpZiAoZXhwZWN0YXRpb25zLnJldHVybnMgJiYgcmVmbGVjdC5NZXRob2QuaXNNZXRob2QobWV0aG9kKSkge1xuICAgICAgdGhpcy5hc3NlcnRUeXBlc0VxdWFsKG1ldGhvZC5zeXN0ZW0sIG1ldGhvZC5yZXR1cm5zLnR5cGUsIGV4cGVjdGF0aW9ucy5yZXR1cm5zLCBzY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKGV4cGVjdGF0aW9ucy5wYXJhbWV0ZXJzKSB7XG4gICAgICBjb25zdCBleHBlY3RlZENvdW50ID0gZXhwZWN0YXRpb25zLnBhcmFtZXRlcnMubGVuZ3RoO1xuICAgICAgY29uc3QgYWN0dWFsQ291bnQgPSBtZXRob2QucGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5hc3NlcnRFcXVhbHMoYWN0dWFsQ291bnQsIGV4cGVjdGVkQ291bnQsIHNjb3BlKSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4cGVjdGF0aW9ucy5wYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ID0gZXhwZWN0YXRpb25zLnBhcmFtZXRlcnNbaV07XG4gICAgICAgICAgY29uc3QgYWN0dWFsID0gbWV0aG9kLnBhcmFtZXRlcnNbaV07XG4gICAgICAgICAgY29uc3QgcHNjb3BlID0gc2NvcGUgKyBgLnBhcmFtc1ske2l9XWA7XG4gICAgICAgICAgaWYgKGV4cGVjdC5uYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZE5hbWUgPSBleHBlY3QubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbE5hbWUgPSBhY3R1YWwubmFtZTtcbiAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWxzKGFjdHVhbE5hbWUsIGV4cGVjdGVkTmFtZSwgcHNjb3BlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4cGVjdC50eXBlKSB7XG4gICAgICAgICAgICBpZiAoZXhwZWN0LnN1YnR5cGVBbGxvd2VkKSB7XG4gICAgICAgICAgICAgIHRoaXMuYXNzZXJ0VHlwZXNBc3NpZ25hYmxlKG1ldGhvZC5zeXN0ZW0sIGFjdHVhbC50eXBlLCBleHBlY3QudHlwZSwgcHNjb3BlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuYXNzZXJ0VHlwZXNFcXVhbChtZXRob2Quc3lzdGVtLCBhY3R1YWwudHlwZSwgZXhwZWN0LnR5cGUsIHBzY29wZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChleHBlY3Qub3B0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5hc3NlcnRQYXJhbWV0ZXJPcHRpb25hbChhY3R1YWwub3B0aW9uYWwsIGV4cGVjdC5vcHRpb25hbCwgcHNjb3BlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGVzIHdoZXRoZXIgdGhlIHJ1bGUgc2hvdWxkIGJlIGV2YWx1YXRlZCBiYXNlZCBvbiB0aGUgZmlsdGVycyBhcHBsaWVkLlxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRFdmFsdWF0ZShjb2RlOiBzdHJpbmcsIHNjb3BlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5pbmNsdWRlUnVsZXMgfHwgdGhpcy5vcHRpb25zLmluY2x1ZGVSdWxlcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaW5jbHVkZVJ1bGVzLm1hdGNoZXMoY29kZSwgc2NvcGUpKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmV4Y2x1ZGVSdWxlcz8ubWF0Y2hlcyhjb2RlLCBzY29wZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIFJ1bGUge1xuICBjb2RlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgd2FybmluZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uY3JldGVSdWxlPFQ+IGV4dGVuZHMgUnVsZSB7XG4gIGV2YWwobGludGVyOiBFdmFsdWF0aW9uPFQ+KTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIHR5cGUgY29uc3RyYWludFxuICpcbiAqIEJlIHN1cGVyIGZsZXhpYmxlIGFib3V0IGhvdyB0eXBlcyBjYW4gYmUgcmVwcmVzZW50ZWQuIFVsdGltYXRlbHksIHdlIHdpbGxcbiAqIGNvbXBhcmUgd2hhdCB5b3UgZ2l2ZSB0byBhIFR5cGVSZWZlcmVuY2UsIGJlY2F1c2UgdGhhdCdzIHdoYXQncyBpbiB0aGUgSlNJSVxuICogUmVmbGVjdCBtb2RlbC4gSG93ZXZlciwgaWYgeW91IGFscmVhZHkgaGF2ZSBhIHJlYWwgVHlwZSwgb3IganVzdCBhIHN0cmluZyB0b1xuICogYSB1c2VyLWRlZmluZWQgdHlwZSwgdGhhdCdzIGZpbmUgdG9vLiBXZSdsbCBEbyBUaGUgUmlnaHQgVGhpbmcuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVTcGVjaWZpZXIgPSByZWZsZWN0LlR5cGVSZWZlcmVuY2UgfCByZWZsZWN0LlR5cGUgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWV0aG9kU2lnbmF0dXJlUGFyYW1ldGVyRXhwZWN0YXRpb24ge1xuICBuYW1lPzogc3RyaW5nO1xuICB0eXBlPzogVHlwZVNwZWNpZmllcjtcbiAgc3VidHlwZUFsbG93ZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBzaG91bGQgdGhpcyBwYXJhbSBiZSBvcHRpb25hbD8gKi9cbiAgb3B0aW9uYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGhvZFNpZ25hdHVyZUV4cGVjdGF0aW9ucyB7XG4gIHBhcmFtZXRlcnM/OiBNZXRob2RTaWduYXR1cmVQYXJhbWV0ZXJFeHBlY3RhdGlvbltdO1xuICByZXR1cm5zPzogVHlwZVNwZWNpZmllcjtcbn1cblxuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0xldmVsIHtcbiAgU2tpcHBlZCxcbiAgU3VjY2VzcyxcbiAgV2FybmluZyxcbiAgRXJyb3IsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhZ25vc3RpYyB7XG4gIGxldmVsOiBEaWFnbm9zdGljTGV2ZWw7XG4gIHJ1bGU6IFJ1bGU7XG4gIHNjb3BlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgdHlwZSBzcGVjaWZpZXIgdG8gYSBUeXBlUmVmZXJlbmNlXG4gKi9cbmZ1bmN0aW9uIHR5cGVSZWZlcmVuY2VGcm9tKHRzOiByZWZsZWN0LlR5cGVTeXN0ZW0sIHg6IFR5cGVTcGVjaWZpZXIpOiByZWZsZWN0LlR5cGVSZWZlcmVuY2Uge1xuICBpZiAoaXNUeXBlUmVmZXJlbmNlKHgpKSB7IHJldHVybiB4OyB9XG5cbiAgaWYgKHR5cGVvZiB4ID09PSAnc3RyaW5nJykge1xuICAgIGlmICh4LmluZGV4T2YoJy4nKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBuZXcgcmVmbGVjdC5UeXBlUmVmZXJlbmNlKHRzLCB7IHByaW1pdGl2ZTogeCBhcyBQcmltaXRpdmVUeXBlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IHJlZmxlY3QuVHlwZVJlZmVyZW5jZSh0cywgeyBmcW46IHggfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyByZWZsZWN0LlR5cGVSZWZlcmVuY2UodHMsIHgpO1xufVxuXG5mdW5jdGlvbiBpc1R5cGVSZWZlcmVuY2UoeDogYW55KTogeCBpcyByZWZsZWN0LlR5cGVSZWZlcmVuY2Uge1xuICByZXR1cm4geCBpbnN0YW5jZW9mIHJlZmxlY3QuVHlwZVJlZmVyZW5jZTtcbn1cbiJdfQ==
package/lib/linter.ts CHANGED
@@ -238,7 +238,7 @@ export class Evaluation<T> {
238
238
  }
239
239
  }
240
240
  export interface Rule {
241
- code: string,
241
+ code: string;
242
242
  message: string;
243
243
  warning?: boolean;
244
244
  }
package/lib/rule-specs.js CHANGED
@@ -22,7 +22,7 @@ class RuleFilterSet {
22
22
  if (!ruleFilterList || ruleFilterList.length == 0) {
23
23
  this._isEmpty = true;
24
24
  }
25
- for (var filter of ruleFilterList) {
25
+ for (let filter of ruleFilterList) {
26
26
  if (filter.indexOf(':') === -1) {
27
27
  filter += ':*'; // add "*" scope filter if there isn't one
28
28
  }
@@ -96,4 +96,4 @@ class RuleFilterSet {
96
96
  }
97
97
  }
98
98
  exports.RuleFilterSet = RuleFilterSet;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bGUtc3BlY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDeEI7Ozs7Ozs7T0FPRztJQUVLLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQyxDQUFDLHlCQUF5QjtJQUV6RSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQyxDQUFDLDZDQUE2QztJQUVwRyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDLHFDQUFxQztJQUVqRSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDLDhDQUE4QztJQUVqRixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRWxDLFlBQVksY0FBd0I7UUFDbEMsSUFBSSxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxLQUFLLElBQUksTUFBTSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsMENBQTBDO1lBQzVELENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFeEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxrRUFBa0UsQ0FBQyxDQUFDO2dCQUN6SCxDQUFDO3FCQUFNLENB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QUFDO0lBQ25DLENBQUM7Q0FDRjtBQTFHRCxzQ0EwR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENhY2hlcyB0aGUgbGlzdCBvZiBydWxlIGZpbHRlcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBpbmNsdWRlIGFuZCBleGNsdWRlIG9wdGlvbnMgaW4gYXdzbGludC5qc29uLlxuICovXG5leHBvcnQgY2xhc3MgUnVsZUZpbHRlclNldCB7XG4gIC8qKlxuICAgKiBSdWxlIGZpbHRlciBmb3JtYXQgaXMgY29kZTpzY29wZSBlLmcuICdkb2NzLXB1YmxpYy1hcGlzOmF3cy1jZGstbGliLlRhZ1R5cGUnLlxuICAgKiBXaWxkY2FyZHMgY2FuIGJlIHVzZWQgaW4gdGhlIGZvbGxvd2luZyB3YXlzOlxuICAgKlxuICAgKiAxLiBNYXRjaCBhbnkgY29kZSBlLmcuOiAnKjphd3MtY2RrLWxpYi5UYWdUeXBlJ1xuICAgKiAyLiBNYXRjaCBhbnkgc2NvcGUgZS5nLjogJ2RvY3MtcHVibGljLWFwaXM6KidcbiAgICogMy4gTWF0Y2ggYW55IHNjb3BlIHByZWZpeCBlLmcuOiAnZG9jcy1wdWJsaWMtYXBpczphd3MtY2RrLWxpYi5UYWcqJ1xuICAgKi9cblxuICBwcml2YXRlIGNvZGVzVG9TY29wZXMgPSBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCk7IC8vIGNvZGUgLT4gbGlzdCBvZiBzY29wZXNcblxuICBwcml2YXRlIGNvZGVzVG9TY29wZVByZWZpeGVzID0gbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpOyAvLyBjb2RlIC0+IGxpc3Qgb2Ygc2NvcGUgcHJlZml4ZXMgKHdpbGRjYXJkcylcblxuICBwcml2YXRlIHNjb3BlcyA9IG5ldyBTZXQ8c3RyaW5nPigpOyAvLyBsaXN0IG9mIHNjb3BlcyB3aXRoIGEgd2lsY2FyZCBjb2RlXG5cbiAgcHJpdmF0ZSBzY29wZVByZWZpeGVzID0gbmV3IFNldDxzdHJpbmc+KCk7IC8vIGxpc3Qgb2Ygc2NvcGUgcHJlZml4ZXMgd2l0aCBhIHdpbGRjYXJkIGNvZGVcblxuICBwcml2YXRlIF9pc0VtcHR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocnVsZUZpbHRlckxpc3Q6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFydWxlRmlsdGVyTGlzdCB8fCBydWxlRmlsdGVyTGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy5faXNFbXB0eSA9IHRydWU7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgZmlsdGVyIG9mIHJ1bGVGaWx0ZXJMaXN0KSB7XG4gICAgICBpZiAoZmlsdGVyLmluZGV4T2YoJzonKSA9PT0gLTEpIHtcbiAgICAgICAgZmlsdGVyICs9ICc6Kic7IC8vIGFkZCBcIipcIiBzY29wZSBmaWx0ZXIgaWYgdGhlcmUgaXNuJ3Qgb25lXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFtjb2RlLCBzY29wZV0gPSBmaWx0ZXIuc3BsaXQoJzonKTtcblxuICAgICAgaWYgKHRoaXMuaGFzV2lsZGNhcmQoY29kZSkpIHtcbiAgICAgICAgaWYgKGNvZGUubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgcGFyc2luZyBydWxlIGZpbHRlciAke2ZpbHRlcn06IHJ1bGUgY29kZSBjYW4gb25seSBiZSBhIHNpbmdsZSB3aWxkY2FyZCwgb3IgYSBjb21wbGV0ZSBzdHJpbmcuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzV2lsZGNhcmQoc2NvcGUpKSB7XG4gICAgICAgICAgICB0aGlzLnNjb3BlUHJlZml4ZXMuYWRkKHNjb3BlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zY29wZXMuYWRkKHNjb3BlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmhhc1dpbGRjYXJkKHNjb3BlKSkge1xuICAgICAgICAgIHRoaXMuYWRkVG9NYXAodGhpcy5jb2Rlc1RvU2NvcGVQcmVmaXhlcywgY29kZSwgc2NvcGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYWRkVG9NYXAodGhpcy5jb2Rlc1RvU2NvcGVzLCBjb2RlLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWF0Y2hlcyhjb2RlOiBzdHJpbmcsIHNjb3BlOiBzdHJpbmcpIHtcbiAgICAvLyBDaGVjayBjb21wbGV0ZSBmaWx0ZXJcbiAgICBjb25zdCBjb21wbGV0ZVNjb3BlcyA9IHRoaXMuY29kZXNUb1Njb3Blcy5nZXQoY29kZSk7XG4gICAgaWYgKGNvbXBsZXRlU2NvcGVzICYmIGNvbXBsZXRlU2NvcGVzLmhhcyhzY29wZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHNjb3BlIG1hdGNoZXMgYSBwcmVmaXggZS5nLiAnZG9jcy1wdWJsaWMtYXBpczphd3MtY2RrLWxpYi5UYWcqJ1xuICAgIGNvbnN0IHNjb3BlUHJlZml4ZXNGb3JDb2RlID0gdGhpcy5jb2Rlc1RvU2NvcGVQcmVmaXhlcy5nZXQoY29kZSk7XG4gICAgaWYgKHNjb3BlUHJlZml4ZXNGb3JDb2RlKSB7XG4gICAgICBpZiAodGhpcy5jb250YWluc1ByZWZpeChzY29wZVByZWZpeGVzRm9yQ29kZSwgc2NvcGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHNjb3BlIGhhcyBhIHdpbGRjYXJkIGNvZGUgZS5nLiAnKjphd3MtY2RrLWxpYi5UYWdUeXBlJ1xuICAgIGlmICh0aGlzLnNjb3Blcy5oYXMoc2NvcGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBzY29wZSBtYXRjaGVzIGEgcHJlZml4IHdpdGggYSB3aWxkY2FyZCBjb2RlIGUuZy4gJyo6YXdzLWNkay1saWIuVGFnVHlwZSonXG4gICAgaWYgKHRoaXMuY29udGFpbnNQcmVmaXgodGhpcy5zY29wZVByZWZpeGVzLCBzY29wZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udGFpbnNQcmVmaXgocHJlZml4ZXM6IFNldDxzdHJpbmc+LCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBwcmVmaXggb2YgcHJlZml4ZXMpIHtcbiAgICAgIGNvbnN0IHByZWZpeFN0ciA9IHByZWZpeC5zbGljZSgwLCAtMSk7IC8vIFN0cmlwIHRoZSBhc3Rlcmlza1xuICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgocHJlZml4U3RyKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNFbXB0eTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVG9NYXAobWFwOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4sIGNvZGU6IHN0cmluZywgc2NvcGU6IHN0cmluZykge1xuICAgIGlmICghbWFwLmhhcyhjb2RlKSkge1xuICAgICAgbWFwLnNldChjb2RlLCBuZXcgU2V0PHN0cmluZz4oKSk7XG4gICAgfVxuXG4gICAgbWFwLmdldChjb2RlKT8uYWRkKHNjb3BlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzV2lsZGNhcmQodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKCcqJykgIT09IC0xO1xuICB9XG59Il19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bGUtc3BlY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDeEI7Ozs7Ozs7T0FPRztJQUVLLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQyxDQUFDLHlCQUF5QjtJQUV6RSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQyxDQUFDLDZDQUE2QztJQUVwRyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDLHFDQUFxQztJQUVqRSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDLDhDQUE4QztJQUVqRixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRWxDLFlBQVksY0FBd0I7UUFDbEMsSUFBSSxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxLQUFLLElBQUksTUFBTSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsMENBQTBDO1lBQzVELENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFeEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxrRUFBa0UsQ0FBQyxDQUFDO2dCQUN6SCxDQUFDO3FCQUFNLENB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QUFDO0lBQ25DLENBQUM7Q0FDRjtBQTFHRCxzQ0EwR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENhY2hlcyB0aGUgbGlzdCBvZiBydWxlIGZpbHRlcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBpbmNsdWRlIGFuZCBleGNsdWRlIG9wdGlvbnMgaW4gYXdzbGludC5qc29uLlxuICovXG5leHBvcnQgY2xhc3MgUnVsZUZpbHRlclNldCB7XG4gIC8qKlxuICAgKiBSdWxlIGZpbHRlciBmb3JtYXQgaXMgY29kZTpzY29wZSBlLmcuICdkb2NzLXB1YmxpYy1hcGlzOmF3cy1jZGstbGliLlRhZ1R5cGUnLlxuICAgKiBXaWxkY2FyZHMgY2FuIGJlIHVzZWQgaW4gdGhlIGZvbGxvd2luZyB3YXlzOlxuICAgKlxuICAgKiAxLiBNYXRjaCBhbnkgY29kZSBlLmcuOiAnKjphd3MtY2RrLWxpYi5UYWdUeXBlJ1xuICAgKiAyLiBNYXRjaCBhbnkgc2NvcGUgZS5nLjogJ2RvY3MtcHVibGljLWFwaXM6KidcbiAgICogMy4gTWF0Y2ggYW55IHNjb3BlIHByZWZpeCBlLmcuOiAnZG9jcy1wdWJsaWMtYXBpczphd3MtY2RrLWxpYi5UYWcqJ1xuICAgKi9cblxuICBwcml2YXRlIGNvZGVzVG9TY29wZXMgPSBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCk7IC8vIGNvZGUgLT4gbGlzdCBvZiBzY29wZXNcblxuICBwcml2YXRlIGNvZGVzVG9TY29wZVByZWZpeGVzID0gbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpOyAvLyBjb2RlIC0+IGxpc3Qgb2Ygc2NvcGUgcHJlZml4ZXMgKHdpbGRjYXJkcylcblxuICBwcml2YXRlIHNjb3BlcyA9IG5ldyBTZXQ8c3RyaW5nPigpOyAvLyBsaXN0IG9mIHNjb3BlcyB3aXRoIGEgd2lsY2FyZCBjb2RlXG5cbiAgcHJpdmF0ZSBzY29wZVByZWZpeGVzID0gbmV3IFNldDxzdHJpbmc+KCk7IC8vIGxpc3Qgb2Ygc2NvcGUgcHJlZml4ZXMgd2l0aCBhIHdpbGRjYXJkIGNvZGVcblxuICBwcml2YXRlIF9pc0VtcHR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocnVsZUZpbHRlckxpc3Q6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFydWxlRmlsdGVyTGlzdCB8fCBydWxlRmlsdGVyTGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy5faXNFbXB0eSA9IHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgZmlsdGVyIG9mIHJ1bGVGaWx0ZXJMaXN0KSB7XG4gICAgICBpZiAoZmlsdGVyLmluZGV4T2YoJzonKSA9PT0gLTEpIHtcbiAgICAgICAgZmlsdGVyICs9ICc6Kic7IC8vIGFkZCBcIipcIiBzY29wZSBmaWx0ZXIgaWYgdGhlcmUgaXNuJ3Qgb25lXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFtjb2RlLCBzY29wZV0gPSBmaWx0ZXIuc3BsaXQoJzonKTtcblxuICAgICAgaWYgKHRoaXMuaGFzV2lsZGNhcmQoY29kZSkpIHtcbiAgICAgICAgaWYgKGNvZGUubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgcGFyc2luZyBydWxlIGZpbHRlciAke2ZpbHRlcn06IHJ1bGUgY29kZSBjYW4gb25seSBiZSBhIHNpbmdsZSB3aWxkY2FyZCwgb3IgYSBjb21wbGV0ZSBzdHJpbmcuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzV2lsZGNhcmQoc2NvcGUpKSB7XG4gICAgICAgICAgICB0aGlzLnNjb3BlUHJlZml4ZXMuYWRkKHNjb3BlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zY29wZXMuYWRkKHNjb3BlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmhhc1dpbGRjYXJkKHNjb3BlKSkge1xuICAgICAgICAgIHRoaXMuYWRkVG9NYXAodGhpcy5jb2Rlc1RvU2NvcGVQcmVmaXhlcywgY29kZSwgc2NvcGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYWRkVG9NYXAodGhpcy5jb2Rlc1RvU2NvcGVzLCBjb2RlLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWF0Y2hlcyhjb2RlOiBzdHJpbmcsIHNjb3BlOiBzdHJpbmcpIHtcbiAgICAvLyBDaGVjayBjb21wbGV0ZSBmaWx0ZXJcbiAgICBjb25zdCBjb21wbGV0ZVNjb3BlcyA9IHRoaXMuY29kZXNUb1Njb3Blcy5nZXQoY29kZSk7XG4gICAgaWYgKGNvbXBsZXRlU2NvcGVzICYmIGNvbXBsZXRlU2NvcGVzLmhhcyhzY29wZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHNjb3BlIG1hdGNoZXMgYSBwcmVmaXggZS5nLiAnZG9jcy1wdWJsaWMtYXBpczphd3MtY2RrLWxpYi5UYWcqJ1xuICAgIGNvbnN0IHNjb3BlUHJlZml4ZXNGb3JDb2RlID0gdGhpcy5jb2Rlc1RvU2NvcGVQcmVmaXhlcy5nZXQoY29kZSk7XG4gICAgaWYgKHNjb3BlUHJlZml4ZXNGb3JDb2RlKSB7XG4gICAgICBpZiAodGhpcy5jb250YWluc1ByZWZpeChzY29wZVByZWZpeGVzRm9yQ29kZSwgc2NvcGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHNjb3BlIGhhcyBhIHdpbGRjYXJkIGNvZGUgZS5nLiAnKjphd3MtY2RrLWxpYi5UYWdUeXBlJ1xuICAgIGlmICh0aGlzLnNjb3Blcy5oYXMoc2NvcGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBzY29wZSBtYXRjaGVzIGEgcHJlZml4IHdpdGggYSB3aWxkY2FyZCBjb2RlIGUuZy4gJyo6YXdzLWNkay1saWIuVGFnVHlwZSonXG4gICAgaWYgKHRoaXMuY29udGFpbnNQcmVmaXgodGhpcy5zY29wZVByZWZpeGVzLCBzY29wZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udGFpbnNQcmVmaXgocHJlZml4ZXM6IFNldDxzdHJpbmc+LCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBwcmVmaXggb2YgcHJlZml4ZXMpIHtcbiAgICAgIGNvbnN0IHByZWZpeFN0ciA9IHByZWZpeC5zbGljZSgwLCAtMSk7IC8vIFN0cmlwIHRoZSBhc3Rlcmlza1xuICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgocHJlZml4U3RyKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNFbXB0eTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVG9NYXAobWFwOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4sIGNvZGU6IHN0cmluZywgc2NvcGU6IHN0cmluZykge1xuICAgIGlmICghbWFwLmhhcyhjb2RlKSkge1xuICAgICAgbWFwLnNldChjb2RlLCBuZXcgU2V0PHN0cmluZz4oKSk7XG4gICAgfVxuXG4gICAgbWFwLmdldChjb2RlKT8uYWRkKHNjb3BlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzV2lsZGNhcmQodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKCcqJykgIT09IC0xO1xuICB9XG59XG4iXX0=
package/lib/rule-specs.ts CHANGED
@@ -26,7 +26,7 @@ export class RuleFilterSet {
26
26
  this._isEmpty = true;
27
27
  }
28
28
 
29
- for (var filter of ruleFilterList) {
29
+ for (let filter of ruleFilterList) {
30
30
  if (filter.indexOf(':') === -1) {
31
31
  filter += ':*'; // add "*" scope filter if there isn't one
32
32
  }
@@ -107,4 +107,4 @@ export class RuleFilterSet {
107
107
  private hasWildcard(value: string) {
108
108
  return value.indexOf('*') !== -1;
109
109
  }
110
- }
110
+ }
package/lib/rules/api.js CHANGED
@@ -116,4 +116,4 @@ exports.apiLinter.add({
116
116
  }
117
117
  },
118
118
  });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUFrRDtBQUNsRCw2Q0FBeUM7QUFDekMsc0NBQW1DO0FBRW5DLE1BQU0sb0NBQW9DLEdBQUcscUNBQXFDLENBQUM7QUFFbkYsZ0RBQWdEO0FBQ25DLFFBQUEsU0FBUyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsK0JBQW1CO0tBQ3pELGlCQUFpQixDQUFDLENBQUMsQ0FBQztLQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFdkQsaUJBQVMsQ0FBQyxHQUFHLENBQUM7SUFDWixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSw0REFBNEQ7UUFDbkUsZ0NBQWdDLG9DQUFvQyxzQkFBc0I7SUFDNUYsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUVsQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakIsU0FBUyxXQUFXLENBQUMsSUFBdUI7WUFDMUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUFDLE9BQU87WUFBQyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXRCLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNyQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFB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QyxvQ0FBb0MsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLG9DQUFvQyxDQUFDLEVBQUUsQ0FBQztvQkFDL0gsT0FBTztnQkFDVCxDQUFDO2dCQUVELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RSZWZsZWN0aW9uIH0gZnJvbSAnLi9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgQ29yZVR5cGVzIH0gZnJvbSAnLi9jb3JlLXR5cGVzJztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmNvbnN0IEVYQ0xVREVfQU5OT1RBVElPTl9SRUZfVklBX0lOVEVSRkFDRSA9ICdbZGlzYWJsZS1hd3NsaW50OnJlZi12aWEtaW50ZXJmYWNlXSc7XG5cbi8vIGxpbnQgYWxsIGNvbnN0cnVjdHMgdGhhdCBhcmUgbm90IEwxIHJlc291cmNlc1xuZXhwb3J0IGNvbnN0IGFwaUxpbnRlciA9IG5ldyBMaW50ZXIoYSA9PiBDb25zdHJ1Y3RSZWZsZWN0aW9uXG4gIC5maW5kQWxsQ29uc3RydWN0cyhhKVxuICAuZmlsdGVyKGMgPT4gIUNvcmVUeXBlcy5pc0NmblJlc291cmNlKGMuY2xhc3NUeXBlKSkpO1xuXG5hcGlMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3JlZi12aWEtaW50ZXJmYWNlJyxcbiAgbWVzc2FnZTogJ0FQSSBzaG91bGQgdXNlIGludGVyZmFjZSBhbmQgbm90IHRoZSBjb25jcmV0ZSBjbGFzcyAoJXMpLiAnICtcbiAgICBgSWYgdGhpcyBpcyBpbnRlbnRpb25hbCwgYWRkIFwiJHtFWENMVURFX0FOTk9UQVRJT05fUkVGX1ZJQV9JTlRFUkZBQ0V9XCIgdG8gZWxlbWVudCdzIGpzZG9jYCxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgY2xzID0gZS5jdHguY2xhc3NUeXBlO1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGFzc2VydENsYXNzKGNscyk7XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRDbGFzcyh0eXBlOiByZWZsZWN0LkNsYXNzVHlwZSk6IHZvaWQge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKHR5cGUuZnFuKSkgeyByZXR1cm47IH1cbiAgICAgIHZpc2l0ZWQuYWRkKHR5cGUuZnFuKTtcblxuICAgICAgZm9yIChjb25zdCBtZXRob2Qgb2YgdHlwZS5hbGxNZXRob2RzKSB7XG4gICAgICAgIGFzc2VydE1ldGhvZChtZXRob2QpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5pbml0aWFsaXplcikge1xuICAgICAgICBhc3NlcnRNZXRob2QodHlwZS5pbml0aWFsaXplcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0RGF0YVR5cGUodHlwZTogcmVmbGVjdC5JbnRlcmZhY2VUeXBlKTogdm9pZCB7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHR5cGUuYWxsUHJvcGVydGllcykge1xuICAgICAgICBhc3NlcnRQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0SW50ZXJmYWNlKHR5cGU6IHJlZmxlY3QuSW50ZXJmYWNlVHlwZSk6IHZvaWQge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKHR5cGUuZnFuKSkgeyByZXR1cm47IH1cbiAgICAgIHZpc2l0ZWQuYWRkKHR5cGUuZnFuKTtcblxuICAgICAgaWYgKHR5cGUuZGF0YXR5cGUpIHtcbiAgICAgICAgYXNzZXJ0RGF0YVR5cGUodHlwZSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgbWV0aG9kIG9mIHR5cGUuYWxsTWV0aG9kcykge1xuICAgICAgICBhc3NlcnRNZXRob2QobWV0aG9kKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRQcm9wZXJ0eShwcm9wZXJ0eTogcmVmbGVjdC5Qcm9wZXJ0eSkge1xuXG4gICAgICBpZiAocHJvcGVydHkucHJvdGVjdGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2l0ZSA9IHByb3BlcnR5Lm92ZXJyaWRlcyA/IHByb3BlcnR5Lm92ZXJyaWRlcyA6IHByb3BlcnR5LnBhcmVudFR5cGU7XG4gICAgICBhc3NlcnRUeXBlKHByb3BlcnR5LnR5cGUsIHByb3BlcnR5LmRvY3MsIGAke3NpdGUuZnFufS4ke3Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0TWV0aG9kKG1ldGhvZDogcmVmbGVjdC5DYWxsYWJsZSkge1xuXG4gICAgICBpZiAobWV0aG9kLnByb3RlY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNpdGUgPSBtZXRob2Qub3ZlcnJpZGVzID8gbWV0aG9kLm92ZXJyaWRlcyA6IG1ldGhvZC5wYXJlbnRUeXBlO1xuICAgICAgY29uc3Qgc2NvcGUgPSBgJHtzaXRlLmZxbn0uJHttZXRob2QubmFtZX1gO1xuXG4gICAgICBsZXQgZmlyc3RNZXRob2Q6IHJlZmxlY3QuQ2FsbGFibGUgfCB1bmRlZmluZWQgPSBzaXRlLmlzQ2xhc3NUeXBlKCkgfHwgc2l0ZS5pc0ludGVyZmFjZVR5cGUoKVxuICAgICAgICA/IHNpdGUuYWxsTWV0aG9kcy5maW5kKG0gPT4gbS5uYW1lID09PSBtZXRob2QubmFtZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghZmlyc3RNZXRob2QpIHtcbiAgICAgICAgZmlyc3RNZXRob2QgPSBtZXRob2Q7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgcGFyYW0gb2YgZmlyc3RNZXRob2QucGFyYW1ldGVycykge1xuICAgICAgICBhc3NlcnRUeXBlKHBhcmFtLnR5cGUsIHBhcmFtLmRvY3MsIGAke3Njb3BlfS4ke3BhcmFtLm5hbWV9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5vdGUgdGhhdCB3ZSBkbyBub3QgcmVxdWlyZSB0aGF0IHJldHVybiB2YWx1ZXMgd2lsbCB1c2UgYW4gaW50ZXJmYWNlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0VHlwZSh0eXBlOiByZWZsZWN0LlR5cGVSZWZlcmVuY2UsIGRvY3M6IHJlZmxlY3QuRG9jcywgc2NvcGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgaWYgKHR5cGUucHJpbWl0aXZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUudm9pZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLmFycmF5T2ZUeXBlKSB7XG4gICAgICAgIHJldHVybiBhc3NlcnRUeXBlKHR5cGUuYXJyYXlPZlR5cGUsIGRvY3MsIHNjb3BlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUubWFwT2ZUeXBlKSB7XG4gICAgICAgIHJldHVybiBhc3NlcnRUeXBlKHR5cGUubWFwT2ZUeXBlLCBkb2NzLCBzY29wZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLnVuaW9uT2ZUeXBlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdHlwZS51bmlvbk9mVHlwZXMpIHtcbiAgICAgICAgICBhc3NlcnRUeXBlKHQsIGRvY3MsIHNjb3BlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGludGVyZmFjZXMgYXJlIG9rYXlcbiAgICAgIGlmICh0eXBlLnR5cGUgJiYgdHlwZS50eXBlLmlzSW50ZXJmYWNlVHlwZSgpKSB7XG4gICAgICAgIHJldHVybiBhc3NlcnRJbnRlcmZhY2UodHlwZS50eXBlKTtcbiAgICAgIH1cblxuICAgICAgLy8gZW51bXMgYXJlIG9rYXlcbiAgICAgIGlmICh0eXBlLnR5cGUgJiYgdHlwZS50eXBlLmlzRW51bVR5cGUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGNsYXNzZXMgYXJlIG9rYXkgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3QgcmVzb3VyY2UgY29uc3RydWN0c1xuICAgICAgaWYgKHR5cGUudHlwZSAmJiB0eXBlLnR5cGUuaXNDbGFzc1R5cGUoKSkge1xuICAgICAgICBpZiAoIUNvcmVUeXBlcy5pc1Jlc291cmNlQ2xhc3ModHlwZS50eXBlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlLnR5cGUuZnFuID09PSBlLmN0eC5jb3JlLmJhc2VDb25zdHJ1Y3RDbGFzc0Zxbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFsbG93IGV4Y2x1c2lvbiBvZiB0aGlzIHJ1bGVcbiAgICAgICAgaWYgKGRvY3Muc3VtbWFyeS5pbmNsdWRlcyhFWENMVURFX0FOTk9UQVRJT05fUkVGX1ZJQV9JTlRFUkZBQ0UpIHx8IGRvY3MucmVtYXJrcy5pbmNsdWRlcyhFWENMVURFX0FOTk9UQVRJT05fUkVGX1ZJQV9JTlRFUkZBQ0UpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZS5hc3NlcnQoZmFsc2UsIHNjb3BlLCB0eXBlLnR5cGUuZnFuKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdHlwZSByZWZlcmVuY2U6ICR7dHlwZS50b1N0cmluZygpfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUFrRDtBQUNsRCw2Q0FBeUM7QUFDekMsc0NBQW1DO0FBRW5DLE1BQU0sb0NBQW9DLEdBQUcscUNBQXFDLENBQUM7QUFFbkYsZ0RBQWdEO0FBQ25DLFFBQUEsU0FBUyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsK0JBQW1CO0tBQ3pELGlCQUFpQixDQUFDLENBQUMsQ0FBQztLQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFdkQsaUJBQVMsQ0FBQyxHQUFHLENBQUM7SUFDWixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSw0REFBNEQ7UUFDbkUsZ0NBQWdDLG9DQUFvQyxzQkFBc0I7SUFDNUYsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUVsQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakIsU0FBUyxXQUFXLENBQUMsSUFBdUI7WUFDMUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUFDLE9BQU87WUFBQyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXRCLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNyQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFB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QyxvQ0FBb0MsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLG9DQUFvQyxDQUFDLEVBQUUsQ0FBQztvQkFDL0gsT0FBTztnQkFDVCxDQUFDO2dCQUVELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RSZWZsZWN0aW9uIH0gZnJvbSAnLi9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgQ29yZVR5cGVzIH0gZnJvbSAnLi9jb3JlLXR5cGVzJztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmNvbnN0IEVYQ0xVREVfQU5OT1RBVElPTl9SRUZfVklBX0lOVEVSRkFDRSA9ICdbZGlzYWJsZS1hd3NsaW50OnJlZi12aWEtaW50ZXJmYWNlXSc7XG5cbi8vIGxpbnQgYWxsIGNvbnN0cnVjdHMgdGhhdCBhcmUgbm90IEwxIHJlc291cmNlc1xuZXhwb3J0IGNvbnN0IGFwaUxpbnRlciA9IG5ldyBMaW50ZXIoYSA9PiBDb25zdHJ1Y3RSZWZsZWN0aW9uXG4gIC5maW5kQWxsQ29uc3RydWN0cyhhKVxuICAuZmlsdGVyKGMgPT4gIUNvcmVUeXBlcy5pc0NmblJlc291cmNlKGMuY2xhc3NUeXBlKSkpO1xuXG5hcGlMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3JlZi12aWEtaW50ZXJmYWNlJyxcbiAgbWVzc2FnZTogJ0FQSSBzaG91bGQgdXNlIGludGVyZmFjZSBhbmQgbm90IHRoZSBjb25jcmV0ZSBjbGFzcyAoJXMpLiAnICtcbiAgICBgSWYgdGhpcyBpcyBpbnRlbnRpb25hbCwgYWRkIFwiJHtFWENMVURFX0FOTk9UQVRJT05fUkVGX1ZJQV9JTlRFUkZBQ0V9XCIgdG8gZWxlbWVudCdzIGpzZG9jYCxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgY2xzID0gZS5jdHguY2xhc3NUeXBlO1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGFzc2VydENsYXNzKGNscyk7XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRDbGFzcyh0eXBlOiByZWZsZWN0LkNsYXNzVHlwZSk6IHZvaWQge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKHR5cGUuZnFuKSkgeyByZXR1cm47IH1cbiAgICAgIHZpc2l0ZWQuYWRkKHR5cGUuZnFuKTtcblxuICAgICAgZm9yIChjb25zdCBtZXRob2Qgb2YgdHlwZS5hbGxNZXRob2RzKSB7XG4gICAgICAgIGFzc2VydE1ldGhvZChtZXRob2QpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5pbml0aWFsaXplcikge1xuICAgICAgICBhc3NlcnRNZXRob2QodHlwZS5pbml0aWFsaXplcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0RGF0YVR5cGUodHlwZTogcmVmbGVjdC5JbnRlcmZhY2VUeXBlKTogdm9pZCB7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHR5cGUuYWxsUHJvcGVydGllcykge1xuICAgICAgICBhc3NlcnRQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0SW50ZXJmYWNlKHR5cGU6IHJlZmxlY3QuSW50ZXJmYWNlVHlwZSk6IHZvaWQge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKHR5cGUuZnFuKSkgeyByZXR1cm47IH1cbiAgICAgIHZpc2l0ZWQuYWRkKHR5cGUuZnFuKTtcblxuICAgICAgaWYgKHR5cGUuZGF0YXR5cGUpIHtcbiAgICAgICAgYXNzZXJ0RGF0YVR5cGUodHlwZSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgbWV0aG9kIG9mIHR5cGUuYWxsTWV0aG9kcykge1xuICAgICAgICBhc3NlcnRNZXRob2QobWV0aG9kKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRQcm9wZXJ0eShwcm9wZXJ0eTogcmVmbGVjdC5Qcm9wZXJ0eSkge1xuICAgICAgaWYgKHByb3BlcnR5LnByb3RlY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNpdGUgPSBwcm9wZXJ0eS5vdmVycmlkZXMgPyBwcm9wZXJ0eS5vdmVycmlkZXMgOiBwcm9wZXJ0eS5wYXJlbnRUeXBlO1xuICAgICAgYXNzZXJ0VHlwZShwcm9wZXJ0eS50eXBlLCBwcm9wZXJ0eS5kb2NzLCBgJHtzaXRlLmZxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzc2VydE1ldGhvZChtZXRob2Q6IHJlZmxlY3QuQ2FsbGFibGUpIHtcbiAgICAgIGlmIChtZXRob2QucHJvdGVjdGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2l0ZSA9IG1ldGhvZC5vdmVycmlkZXMgPyBtZXRob2Qub3ZlcnJpZGVzIDogbWV0aG9kLnBhcmVudFR5cGU7XG4gICAgICBjb25zdCBzY29wZSA9IGAke3NpdGUuZnFufS4ke21ldGhvZC5uYW1lfWA7XG5cbiAgICAgIGxldCBmaXJzdE1ldGhvZDogcmVmbGVjdC5DYWxsYWJsZSB8IHVuZGVmaW5lZCA9IHNpdGUuaXNDbGFzc1R5cGUoKSB8fCBzaXRlLmlzSW50ZXJmYWNlVHlwZSgpXG4gICAgICAgID8gc2l0ZS5hbGxNZXRob2RzLmZpbmQobSA9PiBtLm5hbWUgPT09IG1ldGhvZC5uYW1lKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKCFmaXJzdE1ldGhvZCkge1xuICAgICAgICBmaXJzdE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBmaXJzdE1ldGhvZC5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIGFzc2VydFR5cGUocGFyYW0udHlwZSwgcGFyYW0uZG9jcywgYCR7c2NvcGV9LiR7cGFyYW0ubmFtZX1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gbm90ZSB0aGF0IHdlIGRvIG5vdCByZXF1aXJlIHRoYXQgcmV0dXJuIHZhbHVlcyB3aWxsIHVzZSBhbiBpbnRlcmZhY2VcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRUeXBlKHR5cGU6IHJlZmxlY3QuVHlwZVJlZmVyZW5jZSwgZG9jczogcmVmbGVjdC5Eb2NzLCBzY29wZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICBpZiAodHlwZS5wcmltaXRpdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS52b2lkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUuYXJyYXlPZlR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGFzc2VydFR5cGUodHlwZS5hcnJheU9mVHlwZSwgZG9jcywgc2NvcGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5tYXBPZlR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGFzc2VydFR5cGUodHlwZS5tYXBPZlR5cGUsIGRvY3MsIHNjb3BlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUudW5pb25PZlR5cGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgdCBvZiB0eXBlLnVuaW9uT2ZUeXBlcykge1xuICAgICAgICAgIGFzc2VydFR5cGUodCwgZG9jcywgc2NvcGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gaW50ZXJmYWNlcyBhcmUgb2theVxuICAgICAgaWYgKHR5cGUudHlwZSAmJiB0eXBlLnR5cGUuaXNJbnRlcmZhY2VUeXBlKCkpIHtcbiAgICAgICAgcmV0dXJuIGFzc2VydEludGVyZmFjZSh0eXBlLnR5cGUpO1xuICAgICAgfVxuXG4gICAgICAvLyBlbnVtcyBhcmUgb2theVxuICAgICAgaWYgKHR5cGUudHlwZSAmJiB0eXBlLnR5cGUuaXNFbnVtVHlwZSgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gY2xhc3NlcyBhcmUgb2theSBhcyBsb25nIGFzIHRoZXkgYXJlIG5vdCByZXNvdXJjZSBjb25zdHJ1Y3RzXG4gICAgICBpZiAodHlwZS50eXBlICYmIHR5cGUudHlwZS5pc0NsYXNzVHlwZSgpKSB7XG4gICAgICAgIGlmICghQ29yZVR5cGVzLmlzUmVzb3VyY2VDbGFzcyh0eXBlLnR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUudHlwZS5mcW4gPT09IGUuY3R4LmNvcmUuYmFzZUNvbnN0cnVjdENsYXNzRnFuKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYWxsb3cgZXhjbHVzaW9uIG9mIHRoaXMgcnVsZVxuICAgICAgICBpZiAoZG9jcy5zdW1tYXJ5LmluY2x1ZGVzKEVYQ0xVREVfQU5OT1RBVElPTl9SRUZfVklBX0lOVEVSRkFDRSkgfHwgZG9jcy5yZW1hcmtzLmluY2x1ZGVzKEVYQ0xVREVfQU5OT1RBVElPTl9SRUZfVklBX0lOVEVSRkFDRSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBlLmFzc2VydChmYWxzZSwgc2NvcGUsIHR5cGUudHlwZS5mcW4pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0eXBlIHJlZmVyZW5jZTogJHt0eXBlLnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuICB9LFxufSk7XG4iXX0=
package/lib/rules/api.ts CHANGED
@@ -53,7 +53,6 @@ apiLinter.add({
53
53
  }
54
54
 
55
55
  function assertProperty(property: reflect.Property) {
56
-
57
56
  if (property.protected) {
58
57
  return;
59
58
  }
@@ -63,7 +62,6 @@ apiLinter.add({
63
62
  }
64
63
 
65
64
  function assertMethod(method: reflect.Callable) {
66
-
67
65
  if (method.protected) {
68
66
  return;
69
67
  }
@@ -84,4 +84,4 @@ class CfnResourceReflection {
84
84
  }
85
85
  }
86
86
  exports.CfnResourceReflection = CfnResourceReflection;
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2ZuLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUN6Qyx5Q0FBZ0Q7QUFDaEQsa0NBQW9DO0FBQ3BDLHNDQUFtQztBQUVuQyxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDO0FBRXBELHlGQUF5RjtBQUN6RixnRkFBZ0Y7QUFDbkUsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLGVBQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRW5GLHVDQUF1QztBQUN2QyxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFzRCxDQUFDO0FBRXZGLFNBQVMsOEJBQThCLENBQUMsR0FBdUI7SUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9CLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQTZCLENBQUMsQ0FBQztRQUVoRSxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRTlELElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELHlCQUFpQixDQUFDLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLE9BQU8sRUFBRSx1RkFBdUY7SUFDaEcsT0FBTyxFQUFF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RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVPLGdDQUFnQyxDQUFDLElBQVk7UUFFbkQsc0VBQXNFO1FBQ3RFLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxlQUFlLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQWpFRCxzREFpRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBDb3JlVHlwZXMgfSBmcm9tICcuL2NvcmUtdHlwZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VSZWZsZWN0aW9uIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBwYXNjYWxpemUgfSBmcm9tICcuLi9jYXNlJztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmNvbnN0IGNmblJlc291cmNlVGFnTmFtZSA9ICdjbG91ZGZvcm1hdGlvblJlc291cmNlJztcblxuLy8gdGhpcyBsaW50ZXIgdmVyaWZpZXMgdGhhdCB3ZSBoYXZlIEwyIGNvdmVyYWdlLiBpdCBmaW5kcyBhbGwgXCJDZm5cIiBjbGFzc2VzIGFuZCB2ZXJpZmllc1xuLy8gdGhhdCB3ZSBoYXZlIGEgY29ycmVzcG9uZGluZyBMMSBjbGFzcyBmb3IgaXQgdGhhdCdzIGlkZW50aWZpZWQgYXMgYSByZXNvdXJjZS5cbmV4cG9ydCBjb25zdCBjZm5SZXNvdXJjZUxpbnRlciA9IG5ldyBMaW50ZXIoYSA9PiBDZm5SZXNvdXJjZVJlZmxlY3Rpb24uZmluZEFsbChhKSk7XG5cbi8vIENhY2hlIEwxIGNvbnN0cnVjdHMgcGVyIHR5cGUgc3lzdGVtLlxuY29uc3QgbDFDb25zdHJ1Y3RDYWNoZSA9IG5ldyBNYXA8cmVmbGVjdC5UeXBlU3lzdGVtLCBNYXA8c3RyaW5nLCByZWZsZWN0LkNsYXNzVHlwZT4+KCk7XG5cbmZ1bmN0aW9uIGNhY2hlTDFDb25zdHJ1Y3RzRm9yVHlwZVN5c3RlbShzeXM6IHJlZmxlY3QuVHlwZVN5c3RlbSkge1xuICBpZiAoIWwxQ29uc3RydWN0Q2FjaGUuaGFzKHN5cykpIHtcbiAgICBsMUNvbnN0cnVjdENhY2hlLnNldChzeXMsIG5ldyBNYXA8c3RyaW5nLCByZWZsZWN0LkNsYXNzVHlwZT4oKSk7XG5cbiAgICBmb3IgKGNvbnN0IGNscyBvZiBzeXMuY2xhc3Nlcykge1xuICAgICAgY29uc3QgY2ZuUmVzb3VyY2VUYWcgPSBjbHMuZG9jcy5jdXN0b21UYWcoY2ZuUmVzb3VyY2VUYWdOYW1lKTtcblxuICAgICAgaWYgKGNmblJlc291cmNlVGFnKSB7XG4gICAgICAgIGwxQ29uc3RydWN0Q2FjaGUuZ2V0KHN5cyk/LnNldChjZm5SZXNvdXJjZVRhZz8udG9Mb2NhbGVMb3dlckNhc2UoKSEsIGNscyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNmblJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1jbGFzcycsXG4gIG1lc3NhZ2U6ICdldmVyeSByZXNvdXJjZSBtdXN0IGhhdmUgYSByZXNvdXJjZSBjbGFzcyAoTDIpLCBhZGQgXFwnQHJlc291cmNlICVzXFwnIHRvIGl0cyBkb2NzdHJpbmcnLFxuICB3YXJuaW5nOiB0cnVlLFxuICBldmFsOiBlID0+IHtcbiAgICBjb25zdCBsMiA9IFJlc291cmNlUmVmbGVjdGlvbi5maW5kQWxsKGUuY3R4LmNsYXNzVHlwZS5hc3NlbWJseSkuZmluZChyID0+IHIuY2ZuLmZ1bGxuYW1lID09PSBlLmN0eC5mdWxsbmFtZSk7XG4gICAgZS5hc3NlcnQobDIsIGUuY3R4LmZ1bGxuYW1lLCBlLmN0eC5mdWxsbmFtZSk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNsYXNzIENmblJlc291cmNlUmVmbGVjdGlvbiB7XG4gIC8qKlxuICAgKiBGaW5kcyBhIENmbiByZXNvdXJjZSBjbGFzcyBieSBmdWxsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKGUuZy4gYEFXUzo6UzM6OkJ1Y2tldGApXG4gICAqIEBwYXJhbSBmdWxsTmFtZSBmaXJzdCB0d28gY29tcG9uZW50cyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSAoZS5nLiBgYXdzOjpzMzo6QnVja2V0YCBpcyBlcXVpdmFsZW50IHRvIGBBd3M6OlMzOjpCdWNrZXRgKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmaW5kQnlOYW1lKHN5czogcmVmbGVjdC5UeXBlU3lzdGVtLCBmdWxsTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFsMUNvbnN0cnVjdENhY2hlLmhhcyhzeXMpKSB7XG4gICAgICBjYWNoZUwxQ29uc3RydWN0c0ZvclR5cGVTeXN0ZW0oc3lzKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbHMgPSBsMUNvbnN0cnVjdENhY2hlLmdldChzeXMpPy5nZXQoZnVsbE5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgaWYgKGNscykge1xuICAgICAgcmV0dXJuIG5ldyBDZm5SZXNvdXJjZVJlZmxlY3Rpb24oY2xzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIENGTiByZXNvdXJjZSBjbGFzc2VzIHdpdGhpbiBhbiBhc3NlbWJseS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmluZEFsbChhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseSkge1xuICAgIHJldHVybiBhc3NlbWJseS5hbGxDbGFzc2VzXG4gICAgICAuZmlsdGVyKGMgPT4gQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoYykpXG4gICAgICAubWFwKGMgPT4gbmV3IENmblJlc291cmNlUmVmbGVjdGlvbihjKSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgY2xhc3NUeXBlOiByZWZsZWN0LkNsYXNzVHlwZTtcbiAgcHVibGljIHJlYWRvbmx5IGZ1bGxuYW1lOiBzdHJpbmc7IC8vIEFXUzo6UzM6OkJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7IC8vIEFXUzo6UzNcbiAgcHVibGljIHJlYWRvbmx5IGJhc2VuYW1lOiBzdHJpbmc7IC8vIEJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgYXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdOyAvLyAobm9ybWFsaXplZCkgYnVja2V0QXJuLCBidWNrZXROYW1lLCBxdWV1ZVVybFxuICBwdWJsaWMgcmVhZG9ubHkgZG9jOiBzdHJpbmc7IC8vIGxpbmsgdG8gQ2xvdWRGb3JtYXRpb24gZG9jc1xuXG4gIGNvbnN0cnVjdG9yKGNsczogcmVmbGVjdC5DbGFzc1R5cGUpIHtcbiAgICB0aGlzLmNsYXNzVHlwZSA9IGNscztcblxuICAgIHRoaXMuYmFzZW5hbWUgPSBjbHMubmFtZS5zbGljZSgnQ2ZuJy5sZW5ndGgpO1xuXG4gICAgY29uc3QgZnVsbG5hbWUgPSBjbHMuZG9jcy5jdXN0b21UYWcoJ2Nsb3VkZm9ybWF0aW9uUmVzb3VyY2UnKTtcbiAgICBpZiAoIWZ1bGxuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBleHRyYWN0IENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgZnJvbSBpbml0aWFsaXplciBkb2N1bWVudGF0aW9uIG9mICR7Y2xzfWApO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbG5hbWUgPSBmdWxsbmFtZTtcblxuICAgIHRoaXMubmFtZXNwYWNlID0gZnVsbG5hbWUuc3BsaXQoJzo6Jykuc2xpY2UoMCwgMikuam9pbignOjonKTtcblxuICAgIHRoaXMuYXR0cmlidXRlTmFtZXMgPSBjbHMub3duUHJvcGVydGllc1xuICAgICAgLmZpbHRlcihwID0+IChwLmRvY3MuZG9jcy5jdXN0b20gfHwge30pLmNsb3VkZm9ybWF0aW9uQXR0cmlidXRlKVxuICAgICAgLm1hcChwID0+IHAuZG9jcy5jdXN0b21UYWcoJ2Nsb3VkZm9ybWF0aW9uQXR0cmlidXRlJykgfHwgJzxlcnJvcj4nKVxuICAgICAgLm1hcChwID0+IHRoaXMuYXR0cmlidXRlUHJvcGVydHlOYW1lRnJvbUNmbk5hbWUocCkpO1xuXG4gICAgdGhpcy5kb2MgPSBjbHMuZG9jcy5kb2NzLnNlZSB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgYXR0cmlidXRlUHJvcGVydHlOYW1lRnJvbUNmbk5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblxuICAgIC8vIHNwZWNpYWwgY2FzZSAoc29tZW9uZSB3YXMgc21hcnQpLCBzcGVjaWFsIGNhc2UgY29waWVkIGZyb20gc3BlYzJjZGtcbiAgICBpZiAodGhpcy5iYXNlbmFtZSA9PT0gJ1NlY3VyaXR5R3JvdXAnICYmIG5hbWUgPT09ICdHcm91cElkJykge1xuICAgICAgcmV0dXJuICdJZCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhc2NhbGl6ZShuYW1lKTtcbiAgfVxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2ZuLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUN6Qyx5Q0FBZ0Q7QUFDaEQsa0NBQW9DO0FBQ3BDLHNDQUFtQztBQUVuQyxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDO0FBRXBELHlGQUF5RjtBQUN6RixnRkFBZ0Y7QUFDbkUsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLGVBQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRW5GLHVDQUF1QztBQUN2QyxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFzRCxDQUFDO0FBRXZGLFNBQVMsOEJBQThCLENBQUMsR0FBdUI7SUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9CLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQTZCLENBQUMsQ0FBQztRQUVoRSxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRTlELElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELHlCQUFpQixDQUFDLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLE9BQU8sRUFBRSx1RkFBdUY7SUFDaEcsT0FBTyxFQUFF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RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVPLGdDQUFnQyxDQUFDLElBQVk7UUFDbkQsc0VBQXNFO1FBQ3RFLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxlQUFlLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQWhFRCxzREFnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBDb3JlVHlwZXMgfSBmcm9tICcuL2NvcmUtdHlwZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VSZWZsZWN0aW9uIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBwYXNjYWxpemUgfSBmcm9tICcuLi9jYXNlJztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmNvbnN0IGNmblJlc291cmNlVGFnTmFtZSA9ICdjbG91ZGZvcm1hdGlvblJlc291cmNlJztcblxuLy8gdGhpcyBsaW50ZXIgdmVyaWZpZXMgdGhhdCB3ZSBoYXZlIEwyIGNvdmVyYWdlLiBpdCBmaW5kcyBhbGwgXCJDZm5cIiBjbGFzc2VzIGFuZCB2ZXJpZmllc1xuLy8gdGhhdCB3ZSBoYXZlIGEgY29ycmVzcG9uZGluZyBMMSBjbGFzcyBmb3IgaXQgdGhhdCdzIGlkZW50aWZpZWQgYXMgYSByZXNvdXJjZS5cbmV4cG9ydCBjb25zdCBjZm5SZXNvdXJjZUxpbnRlciA9IG5ldyBMaW50ZXIoYSA9PiBDZm5SZXNvdXJjZVJlZmxlY3Rpb24uZmluZEFsbChhKSk7XG5cbi8vIENhY2hlIEwxIGNvbnN0cnVjdHMgcGVyIHR5cGUgc3lzdGVtLlxuY29uc3QgbDFDb25zdHJ1Y3RDYWNoZSA9IG5ldyBNYXA8cmVmbGVjdC5UeXBlU3lzdGVtLCBNYXA8c3RyaW5nLCByZWZsZWN0LkNsYXNzVHlwZT4+KCk7XG5cbmZ1bmN0aW9uIGNhY2hlTDFDb25zdHJ1Y3RzRm9yVHlwZVN5c3RlbShzeXM6IHJlZmxlY3QuVHlwZVN5c3RlbSkge1xuICBpZiAoIWwxQ29uc3RydWN0Q2FjaGUuaGFzKHN5cykpIHtcbiAgICBsMUNvbnN0cnVjdENhY2hlLnNldChzeXMsIG5ldyBNYXA8c3RyaW5nLCByZWZsZWN0LkNsYXNzVHlwZT4oKSk7XG5cbiAgICBmb3IgKGNvbnN0IGNscyBvZiBzeXMuY2xhc3Nlcykge1xuICAgICAgY29uc3QgY2ZuUmVzb3VyY2VUYWcgPSBjbHMuZG9jcy5jdXN0b21UYWcoY2ZuUmVzb3VyY2VUYWdOYW1lKTtcblxuICAgICAgaWYgKGNmblJlc291cmNlVGFnKSB7XG4gICAgICAgIGwxQ29uc3RydWN0Q2FjaGUuZ2V0KHN5cyk/LnNldChjZm5SZXNvdXJjZVRhZz8udG9Mb2NhbGVMb3dlckNhc2UoKSEsIGNscyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNmblJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1jbGFzcycsXG4gIG1lc3NhZ2U6ICdldmVyeSByZXNvdXJjZSBtdXN0IGhhdmUgYSByZXNvdXJjZSBjbGFzcyAoTDIpLCBhZGQgXFwnQHJlc291cmNlICVzXFwnIHRvIGl0cyBkb2NzdHJpbmcnLFxuICB3YXJuaW5nOiB0cnVlLFxuICBldmFsOiBlID0+IHtcbiAgICBjb25zdCBsMiA9IFJlc291cmNlUmVmbGVjdGlvbi5maW5kQWxsKGUuY3R4LmNsYXNzVHlwZS5hc3NlbWJseSkuZmluZChyID0+IHIuY2ZuLmZ1bGxuYW1lID09PSBlLmN0eC5mdWxsbmFtZSk7XG4gICAgZS5hc3NlcnQobDIsIGUuY3R4LmZ1bGxuYW1lLCBlLmN0eC5mdWxsbmFtZSk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNsYXNzIENmblJlc291cmNlUmVmbGVjdGlvbiB7XG4gIC8qKlxuICAgKiBGaW5kcyBhIENmbiByZXNvdXJjZSBjbGFzcyBieSBmdWxsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKGUuZy4gYEFXUzo6UzM6OkJ1Y2tldGApXG4gICAqIEBwYXJhbSBmdWxsTmFtZSBmaXJzdCB0d28gY29tcG9uZW50cyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSAoZS5nLiBgYXdzOjpzMzo6QnVja2V0YCBpcyBlcXVpdmFsZW50IHRvIGBBd3M6OlMzOjpCdWNrZXRgKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmaW5kQnlOYW1lKHN5czogcmVmbGVjdC5UeXBlU3lzdGVtLCBmdWxsTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFsMUNvbnN0cnVjdENhY2hlLmhhcyhzeXMpKSB7XG4gICAgICBjYWNoZUwxQ29uc3RydWN0c0ZvclR5cGVTeXN0ZW0oc3lzKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbHMgPSBsMUNvbnN0cnVjdENhY2hlLmdldChzeXMpPy5nZXQoZnVsbE5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgaWYgKGNscykge1xuICAgICAgcmV0dXJuIG5ldyBDZm5SZXNvdXJjZVJlZmxlY3Rpb24oY2xzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIENGTiByZXNvdXJjZSBjbGFzc2VzIHdpdGhpbiBhbiBhc3NlbWJseS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmluZEFsbChhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseSkge1xuICAgIHJldHVybiBhc3NlbWJseS5hbGxDbGFzc2VzXG4gICAgICAuZmlsdGVyKGMgPT4gQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoYykpXG4gICAgICAubWFwKGMgPT4gbmV3IENmblJlc291cmNlUmVmbGVjdGlvbihjKSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgY2xhc3NUeXBlOiByZWZsZWN0LkNsYXNzVHlwZTtcbiAgcHVibGljIHJlYWRvbmx5IGZ1bGxuYW1lOiBzdHJpbmc7IC8vIEFXUzo6UzM6OkJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7IC8vIEFXUzo6UzNcbiAgcHVibGljIHJlYWRvbmx5IGJhc2VuYW1lOiBzdHJpbmc7IC8vIEJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgYXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdOyAvLyAobm9ybWFsaXplZCkgYnVja2V0QXJuLCBidWNrZXROYW1lLCBxdWV1ZVVybFxuICBwdWJsaWMgcmVhZG9ubHkgZG9jOiBzdHJpbmc7IC8vIGxpbmsgdG8gQ2xvdWRGb3JtYXRpb24gZG9jc1xuXG4gIGNvbnN0cnVjdG9yKGNsczogcmVmbGVjdC5DbGFzc1R5cGUpIHtcbiAgICB0aGlzLmNsYXNzVHlwZSA9IGNscztcblxuICAgIHRoaXMuYmFzZW5hbWUgPSBjbHMubmFtZS5zbGljZSgnQ2ZuJy5sZW5ndGgpO1xuXG4gICAgY29uc3QgZnVsbG5hbWUgPSBjbHMuZG9jcy5jdXN0b21UYWcoJ2Nsb3VkZm9ybWF0aW9uUmVzb3VyY2UnKTtcbiAgICBpZiAoIWZ1bGxuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBleHRyYWN0IENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgZnJvbSBpbml0aWFsaXplciBkb2N1bWVudGF0aW9uIG9mICR7Y2xzfWApO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbG5hbWUgPSBmdWxsbmFtZTtcblxuICAgIHRoaXMubmFtZXNwYWNlID0gZnVsbG5hbWUuc3BsaXQoJzo6Jykuc2xpY2UoMCwgMikuam9pbignOjonKTtcblxuICAgIHRoaXMuYXR0cmlidXRlTmFtZXMgPSBjbHMub3duUHJvcGVydGllc1xuICAgICAgLmZpbHRlcihwID0+IChwLmRvY3MuZG9jcy5jdXN0b20gfHwge30pLmNsb3VkZm9ybWF0aW9uQXR0cmlidXRlKVxuICAgICAgLm1hcChwID0+IHAuZG9jcy5jdXN0b21UYWcoJ2Nsb3VkZm9ybWF0aW9uQXR0cmlidXRlJykgfHwgJzxlcnJvcj4nKVxuICAgICAgLm1hcChwID0+IHRoaXMuYXR0cmlidXRlUHJvcGVydHlOYW1lRnJvbUNmbk5hbWUocCkpO1xuXG4gICAgdGhpcy5kb2MgPSBjbHMuZG9jcy5kb2NzLnNlZSB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgYXR0cmlidXRlUHJvcGVydHlOYW1lRnJvbUNmbk5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBzcGVjaWFsIGNhc2UgKHNvbWVvbmUgd2FzIHNtYXJ0KSwgc3BlY2lhbCBjYXNlIGNvcGllZCBmcm9tIHNwZWMyY2RrXG4gICAgaWYgKHRoaXMuYmFzZW5hbWUgPT09ICdTZWN1cml0eUdyb3VwJyAmJiBuYW1lID09PSAnR3JvdXBJZCcpIHtcbiAgICAgIHJldHVybiAnSWQnO1xuICAgIH1cblxuICAgIHJldHVybiBwYXNjYWxpemUobmFtZSk7XG4gIH1cbn1cbiJdfQ==
@@ -94,7 +94,6 @@ export class CfnResourceReflection {
94
94
  }
95
95
 
96
96
  private attributePropertyNameFromCfnName(name: string): string {
97
-
98
97
  // special case (someone was smart), special case copied from spec2cdk
99
98
  if (this.basename === 'SecurityGroup' && name === 'GroupId') {
100
99
  return 'Id';
@@ -282,4 +282,4 @@ function baseConstructAddendum() {
282
282
  }
283
283
  return '';
284
284
  }
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUN6QyxzQ0FBd0U7QUFFM0QsUUFBQSxlQUFlLEdBQUcsSUFBSSxlQUFNLENBQXNCLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVU7S0FDM0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV6RCxNQUFhLG1CQUFtQjtJQTRCRjtJQTFCckIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQTBCO1FBQ3hELE9BQU8sUUFBUSxDQUFDLFVBQVU7YUFDdkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUE4QjtRQUM1RCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQy9CLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUVlLEdBQUcsQ0FBUztJQUNaLFlBQVksQ0FBUztJQUNyQixRQUFRLENBQVM7SUFDakIsYUFB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QUcsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxTQUFTLHFCQUFxQjtJQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3hDLE9BQU8scUhBQXFILENBQUM7SUFDL0gsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IENvcmVUeXBlcyB9IGZyb20gJy4vY29yZS10eXBlcyc7XG5pbXBvcnQgeyBMaW50ZXIsIE1ldGhvZFNpZ25hdHVyZVBhcmFtZXRlckV4cGVjdGF0aW9uIH0gZnJvbSAnLi4vbGludGVyJztcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdExpbnRlciA9IG5ldyBMaW50ZXI8Q29uc3RydWN0UmVmbGVjdGlvbj4oYXNzZW1ibHkgPT4gYXNzZW1ibHkuYWxsQ2xhc3Nlc1xuICAuZmlsdGVyKHQgPT4gQ29yZVR5cGVzLmlzQ29uc3RydWN0Q2xhc3ModCkpXG4gIC5tYXAoY29uc3RydWN0ID0+IG5ldyBDb25zdHJ1Y3RSZWZsZWN0aW9uKGNvbnN0cnVjdCkpKTtcblxuZXhwb3J0IGNsYXNzIENvbnN0cnVjdFJlZmxlY3Rpb24ge1xuXG4gIHB1YmxpYyBzdGF0aWMgZmluZEFsbENvbnN0cnVjdHMoYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHkpIHtcbiAgICByZXR1cm4gYXNzZW1ibHkuYWxsQ2xhc3Nlc1xuICAgICAgLmZpbHRlcihjID0+IENvcmVUeXBlcy5pc0NvbnN0cnVjdENsYXNzKGMpKVxuICAgICAgLm1hcChjID0+IG5ldyBDb25zdHJ1Y3RSZWZsZWN0aW9uKGMpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RnFuRnJvbVR5cGVSZWYodHlwZVJlZjogcmVmbGVjdC5UeXBlUmVmZXJlbmNlKSB7XG4gICAgaWYgKHR5cGVSZWYuYXJyYXlPZlR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlUmVmLmFycmF5T2ZUeXBlLmZxbjtcbiAgICB9IGVsc2UgaWYgKHR5cGVSZWYubWFwT2ZUeXBlKSB7XG4gICAgICByZXR1cm4gdHlwZVJlZi5tYXBPZlR5cGUuZnFuO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlUmVmLmZxbjtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBmcW46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGludGVyZmFjZUZxbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHNGcW46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGludGVyZmFjZVR5cGU/OiByZWZsZWN0LkludGVyZmFjZVR5cGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9wc1R5cGU/OiByZWZsZWN0LkludGVyZmFjZVR5cGU7XG4gIHB1YmxpYyByZWFkb25seSBpbml0aWFsaXplcj86IHJlZmxlY3QuSW5pdGlhbGl6ZXI7XG4gIHB1YmxpYyByZWFkb25seSBoYXNQcm9wc0FyZ3VtZW50OiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgc3lzOiByZWZsZWN0LlR5cGVTeXN0ZW07XG4gIHB1YmxpYyByZWFkb25seSBjb3JlOiBDb3JlVHlwZXM7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNsYXNzVHlwZTogcmVmbGVjdC5DbGFzc1R5cGUpIHtcbiAgICB0aGlzLmZxbiA9IGNsYXNzVHlwZS5mcW47XG4gICAgdGhpcy5zeXMgPSBjbGFzc1R5cGUuc3lzdGVtO1xuICAgIHRoaXMuY29yZSA9IG5ldyBDb3JlVHlwZXModGhpcy5zeXMpO1xuICAgIHRoaXMuaW50ZXJmYWNlRnFuID0gYCR7dGhpcy50eXBlUHJlZml4KGNsYXNzVHlwZSl9Lkkke2NsYXNzVHlwZS5uYW1lfWA7XG4gICAgdGhpcy5wcm9wc0ZxbiA9IGAke3RoaXMudHlwZVByZWZpeChjbGFzc1R5cGUpfS4ke2NsYXNzVHlwZS5uYW1lfVByb3BzYDtcbiAgICB0aGlzLmludGVyZmFjZVR5cGUgPSB0aGlzLnRyeUZpbmRJbnRlcmZhY2UoKTtcbiAgICB0aGlzLnByb3BzVHlwZSA9IHRoaXMudHJ5RmluZFByb3BzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplciA9IGNsYXNzVHlwZS5pbml0aWFsaXplcjtcbiAgICB0aGlzLmhhc1Byb3BzQXJndW1lbnQgPSB0aGlzLmluaXRpYWxpemVyICE9IG51bGwgJiYgdGhpcy5pbml0aWFsaXplci5wYXJhbWV0ZXJzLmxlbmd0aCA+PSAzO1xuICB9XG5cbiAgcHJpdmF0ZSB0eXBlUHJlZml4KGNsYXNzVHlwZTogcmVmbGVjdC5DbGFzc1R5cGUpIHtcbiAgICByZXR1cm4gY2xhc3NUeXBlLmFzc2VtYmx5Lm5hbWUgKyAoY2xhc3NUeXBlLm5hbWVzcGFjZSA/IGAuJHtjbGFzc1R5cGUubmFtZXNwYWNlfWAgOiAnJyk7XG4gIH1cblxuICBwcml2YXRlIHRyeUZpbmRJbnRlcmZhY2UoKSB7XG4gICAgY29uc3Qgc3lzID0gdGhpcy5jbGFzc1R5cGUuc3lzdGVtO1xuICAgIGNvbnN0IGZvdW5kID0gc3lzLnRyeUZpbmRGcW4odGhpcy5pbnRlcmZhY2VGcW4pO1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCFmb3VuZC5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RpbmcgdHlwZSAke3RoaXMuaW50ZXJmYWNlRnFufSB0byBiZSBhbiBpbnRlcmZhY2VgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICBwcml2YXRlIHRyeUZpbmRQcm9wcygpIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuc3lzLnRyeUZpbmRGcW4odGhpcy5wcm9wc0Zxbik7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWZvdW5kLmlzSW50ZXJmYWNlVHlwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGluZyBwcm9wcyBzdHJ1Y3QgJHt0aGlzLnByb3BzRnFufSB0byBiZSBhbiBpbnRlcmZhY2VgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn1cblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtY3RvcicsXG4gIG1lc3NhZ2U6ICdzaWduYXR1cmUgb2YgYWxsIGNvbnN0cnVjdCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIFwic2NvcGUsIGlkLCBwcm9wc1wiLiAnICsgYmFzZUNvbnN0cnVjdEFkZGVuZHVtKCksXG4gIGV2YWw6IGUgPT4ge1xuICAgIC8vIG9ubHkgYXBwbGllcyB0byBub24gYWJzdHJhY3QgY2xhc3Nlc1xuICAgIGlmIChlLmN0eC5jbGFzc1R5cGUuYWJzdHJhY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWFsaXplciA9IGUuY3R4LmluaXRpYWxpemVyO1xuICAgIGlmICghZS5hc3NlcnQoaW5pdGlhbGl6ZXIsIGUuY3R4LmZxbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHBlY3RlZFBhcmFtcyA9IG5ldyBBcnJheTxNZXRob2RTaWduYXR1cmVQYXJhbWV0ZXJFeHBlY3RhdGlvbj4oKTtcbiAgICBleHBlY3RlZFBhcmFtcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdzY29wZScsXG4gICAgICB0eXBlOiBlLmN0eC5jb3JlLmJhc2VDb25zdHJ1Y3RDbGFzc0ZxbixcbiAgICB9KTtcblxuICAgIGV4cGVjdGVkUGFyYW1zLnB1c2goe1xuICAgICAgbmFtZTogJ2lkJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIH0pO1xuXG4gICAgLy8gaXQncyBva2F5IGZvciBhIGNvbnN0cnVjdCBub3QgdG8gaGF2ZSBhIFwicHJvcHNcIiBhcmd1bWVudCBzbyB3ZSBvbmx5XG4gICAgLy8gYXNzZXJ0IHRoZSBcInByb3BzXCIgYXJndW1lbnQgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiB0d28gcGFyYW1ldGVyc1xuICAgIGlmIChpbml0aWFsaXplci5wYXJhbWV0ZXJzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGV4cGVjdGVkUGFyYW1zLnB1c2goe1xuICAgICAgICBuYW1lOiAncHJvcHMnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZS5hc3NlcnRTaWduYXR1cmUoaW5pdGlhbGl6ZXIsIHtcbiAgICAgIHBhcmFtZXRlcnM6IGV4cGVjdGVkUGFyYW1zLFxuICAgIH0pO1xuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtc3RydWN0LW5hbWUnLFxuICBtZXNzYWdlOiAnYWxsIGNvbnN0cnVjdHMgbXVzdCBoYXZlIGEgcHJvcHMgc3RydWN0JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYWJzdHJhY3QgY2xhc3NlcyBhcmUgZXhlbXB0XG4gICAgaWYgKGUuY3R4LmNsYXNzVHlwZS5hYnN0cmFjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUuYXNzZXJ0KGUuY3R4LnByb3BzVHlwZSwgZS5jdHguaW50ZXJmYWNlRnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2NvbnN0cnVjdC1jdG9yLXByb3BzLXR5cGUnLFxuICBtZXNzYWdlOiAnY29uc3RydWN0IFwicHJvcHNcIiB0eXBlIHNob3VsZCB1c2UgdGhlIHByb3BzIHN0cnVjdCAlcycsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguaW5pdGlhbGl6ZXIpIHsgcmV0dXJuOyB9XG4gICAgaWYgKGUuY3R4LmluaXRpYWxpemVyLnBhcmFtZXRlcnMubGVuZ3RoIDwgMykgeyByZXR1cm47IH1cblxuICAgIGUuYXNzZXJ0KFxuICAgICAgZS5jdHguaW5pdGlhbGl6ZXIucGFyYW1ldGVyc1syXS50eXBlLnR5cGUgPT09IGUuY3R4LnByb3BzVHlwZSxcbiAgICAgIGUuY3R4LmZxbixcbiAgICAgIGUuY3R4LnByb3BzRnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2NvbnN0cnVjdC1jdG9yLXByb3BzLW9wdGlvbmFsJyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBcInByb3BzXCIgbXVzdCBiZSBvcHRpb25hbCBzaW5jZSBhbGwgcHJvcHMgYXJlIG9wdGlvbmFsJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5pbml0aWFsaXplcikgeyByZXR1cm47IH1cbiAgICBpZiAoIWUuY3R4Lmhhc1Byb3BzQXJndW1lbnQpIHsgcmV0dXJuOyB9XG5cbiAgICAvLyB0aGlzIHJ1bGUgYXBwbGllcyBvbmx5IGlmIGFsbCBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbFxuICAgIGNvbnN0IGFsbE9wdGlvbmFsID0gZS5jdHgucHJvcHNUeXBlLmFsbFByb3BlcnRpZXMuZXZlcnkocCA9PiBwLm9wdGlvbmFsKTtcbiAgICBpZiAoIWFsbE9wdGlvbmFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5hc3NlcnQoZS5jdHguaW5pdGlhbGl6ZXIucGFyYW1ldGVyc1syXS5vcHRpb25hbCwgZS5jdHguZnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2NvbnN0cnVjdC1pbnRlcmZhY2UtZXh0ZW5kcy1pY29uc3RydWN0JyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBpbnRlcmZhY2UgbXVzdCBleHRlbmQgY29yZS5JQ29uc3RydWN0JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5pbnRlcmZhY2VUeXBlKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IGludGVyZmFjZUJhc2UgPSBlLmN0eC5zeXMuZmluZEludGVyZmFjZShlLmN0eC5jb3JlLmJhc2VDb25zdHJ1Y3RJbnRlcmZhY2VGcW4pO1xuICAgIGUuYXNzZXJ0KGUuY3R4LmludGVyZmFjZVR5cGUuZXh0ZW5kcyhpbnRlcmZhY2VCYXNlKSwgZS5jdHguaW50ZXJmYWNlVHlwZS5mcW4pO1xuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAnY29uc3RydWN0LWJhc2UtaXMtcHJpdmF0ZScsXG4gIG1lc3NhZ2U6ICdwcmVmZXIgdGhhdCB0aGUgY29uc3RydWN0IGJhc2UgY2xhc3MgaXMgcHJpdmF0ZScsXG4gIHdhcm5pbmc6IHRydWUsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguaW50ZXJmYWNlVHlwZSkgeyByZXR1cm47IH1cbiAgICBjb25zdCBiYXNlRnFuID0gYCR7ZS5jdHguY2xhc3NUeXBlLmZxbn1CYXNlYDtcbiAgICBlLmFzc2VydCghZS5jdHguc3lzLnRyeUZpbmRGcW4oYmFzZUZxbiksIGJhc2VGcW4pO1xuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtbm8tdW5pb25zJyxcbiAgbWVzc2FnZTogJ3Byb3BzIG11c3Qgbm90IHVzZSBUeXBlU2NyaXB0IHVuaW9ucycsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBlLmFzc2VydCghcHJvcGVydHkudHlwZS51bmlvbk9mVHlwZXMsIGAke2UuY3R4LnByb3BzRnFufS4ke3Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgfVxuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtbm8tYXJuLXJlZnMnLFxuICBtZXNzYWdlOiAncHJvcHMgbXVzdCB1c2Ugc3Ryb25nIHR5cGVzIGluc3RlYWQgb2YgYXR0cmlidXRlcy4gcHJvcHMgc2hvdWxkIG5vdCBoYXZlIFwiYXJuXCIgc3VmZml4JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIEwxIGNvbnN0cnVjdHNcbiAgICBpZiAoQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoZS5jdHguY2xhc3NUeXBlKSkgeyByZXR1cm47IH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgZS5jdHgucHJvcHNUeXBlLm93blByb3BlcnRpZXMpIHtcbiAgICAgIGUuYXNzZXJ0KCFwcm9wZXJ0eS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ2FybicpLCBgJHtlLmN0eC5wcm9wc0Zxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLW5vLXRva2VucycsXG4gIG1lc3NhZ2U6ICdwcm9wcyBtdXN0IG5vdCB1c2UgdGhlIFwiVG9rZW5cIiB0eXBlJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIEwxIGNvbnN0cnVjdHNcbiAgICBpZiAoQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoZS5jdHguY2xhc3NUeXBlKSkgeyByZXR1cm47IH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgZS5jdHgucHJvcHNUeXBlLmFsbFByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnN0IGZxbiA9IENvbnN0cnVjdFJlZmxlY3Rpb24uZ2V0RnFuRnJvbVR5cGVSZWYocHJvcGVydHkudHlwZSk7XG5cbiAgICAgIGNvbnN0IGZvdW5kID0gKGZxbiAmJiBlLmN0eC5zeXMudHJ5RmluZEZxbihmcW4pKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBlLmFzc2VydCghKGZxbiA9PT0gZS5jdHguY29yZS50b2tlbkludGVyZmFjZUZxbiksIGAke2UuY3R4LnByb3BzRnFufS4ke3Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtbm8tY2ZuLXR5cGVzJyxcbiAgbWVzc2FnZTogJ3Byb3BzIG11c3Qgbm90IGV4cG9zZSBMMSB0eXBlcyAodHlwZXMgd2hpY2ggc3RhcnQgd2l0aCBcIkNmblwiKScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zdCBmcW4gPSBDb25zdHJ1Y3RSZWZsZWN0aW9uLmdldEZxbkZyb21UeXBlUmVmKHByb3BlcnR5LnR5cGUpO1xuXG4gICAgICBjb25zdCBmb3VuZCA9IChmcW4gJiYgZS5jdHguc3lzLnRyeUZpbmRGcW4oZnFuKSk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgZS5hc3NlcnQoIWZvdW5kLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdjZm4nKSwgYCR7ZS5jdHgucHJvcHNGcW59LiR7cHJvcGVydHkubmFtZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1uby1hbnknLFxuICBtZXNzYWdlOiAncHJvcHMgbXVzdCBub3QgdXNlIFR5cGVzY3JpcHQgXCJhbnlcIiB0eXBlJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIEwxIGNvbnN0cnVjdHNcbiAgICBpZiAoQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoZS5jdHguY2xhc3NUeXBlKSkgeyByZXR1cm47IH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgZS5jdHgucHJvcHNUeXBlLm93blByb3BlcnRpZXMpIHtcbiAgICAgIGUuYXNzZXJ0KCFwcm9wZXJ0eS50eXBlLmlzQW55LCBgJHtlLmN0eC5wcm9wc0Zxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5mdW5jdGlvbiBiYXNlQ29uc3RydWN0QWRkZW5kdW0oKTogc3RyaW5nIHtcbiAgaWYgKCFwcm9jZXNzLmVudi5BV1NMSU5UX0JBU0VfQ09OU1RSVUNUKSB7XG4gICAgcmV0dXJuICdJZiB0aGUgY29uc3RydWN0IGlzIHVzaW5nIHRoZSBcImNvbnN0cnVjdHNcIiBtb2R1bGUsIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgXCJBV1NMSU5UX0JBU0VfQ09OU1RSVUNUXCIgYW5kIHJlLXJ1bic7XG4gIH1cbiAgcmV0dXJuICcnO1xufSJdfQ==
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUN6QyxzQ0FBd0U7QUFFM0QsUUFBQSxlQUFlLEdBQUcsSUFBSSxlQUFNLENBQXNCLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVU7S0FDM0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV6RCxNQUFhLG1CQUFtQjtJQTJCRjtJQTFCckIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQTBCO1FBQ3hELE9BQU8sUUFBUSxDQUFDLFVBQVU7YUFDdkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUE4QjtRQUM1RCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQy9CLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUVlLEdBQUcsQ0FBUztJQUNaLFlBQVksQ0FBUztJQUNyQixRQUFRLENBQVM7SUFDakIsYUFBYSxDQUF5QjtJQUN0QyxTQUFTLENBQXlCO0lBQ2xDLFdBQVcsQ0FBdUI7SUFDbEMsZ0JBQWdCLENBQVU7SUFDMUIsR0FBRyxDQUFxQjtJQUN4QixJQUFJLENBQVk7SUFFaEMsWUFBNEIsU0FBNEI7UUFBNUIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDdEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksc0JBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQztRQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRU8sVUFBVSxDQUFDLFNBQTRCO1FBQzdDLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxZQUFZLHFCQUFxQixDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsSUFBSSxDQUFDLFFBQVEscUJBQXFCLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFyRUQsa0RBcUVDO0FBRUQsdUJBQWUsQ0FBQyxHQUFHLENBQUM7SUFDbEIsSUFBSSxFQUFFLGdCQUFnQjtJQUN0QixPQUFPLEVBQUUsd0VBQXdFLEdBQUcscUJBQXFCLEVBQUU7SUFDM0csSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUN0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxLQUFLLEVBQXVDLENBQUM7UUFDeEUsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNsQixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUI7U0FDdkMsQ0FBQyxDQUFDO1FBRUgsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsc0VBQXNFO1FBQ3RFLG9FQUFvRTtRQUNwRSxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLElBQUksRUFBRSxPQUFPO2FBQ2QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELENBQUMsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFO1lBQzdCLFVBQVUsRUFBRSxjQUFjO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCx1QkFBZSxDQUFDLEdBQUcsQ0FBQztJQUNsQixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSx5Q0FBeUM7SUFDbEQsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELDhCQUE4QjtRQUM5QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBRUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCx1QkFBZSxDQUFDLEdBQUcsQ0FBQztJQUNsQixJQUFJLEVBQUUsMkJBQTJCO0lBQ2pDLE9BQU8sRUFBRSx1REFBdUQ7SUFDaEUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUV4RCxDQUFDLENBQUMsTUFBTSxDQUNOLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUM3RCxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFDVCxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCx1QkFBZSxDQUFDLEdBQUcsQ0FBQztJQUNsQixJQUFJLEVBQUUsK0JBQStCO0lBQ3JDLE9BQU8sRUFBRSxpRUFBaUU7SUFDMUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUV4Qyx3REFBd0Q7UUFDeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsT0FBTztRQUNULENBQUM7UUFFRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsdUJBQWUsQ0FBQyxHQUFHLENBQUM7SUFDbEIsSUFBSSxFQUFFLHdDQUF3QztJQUM5QyxPQUFPLEVBQUUsaURBQWlEO0lBQzFELElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDckMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEYsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILHVCQUFlLENBQUMsR0FBRyxDQUFDO0lBQ2xCLElBQUksRUFBRSwyQkFBMkI7SUFDakMsT0FBTyxFQUFFLGlEQUFpRDtJQUMxRCxPQUFPLEVBQUUsSUFBSTtJQUNiLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUM3QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCx1QkFBZSxDQUFDLEdBQUcsQ0FBQztJQUNsQixJQUFJLEVBQUUsaUJBQWlCO0lBQ3ZCLE9BQU8sRUFBRSxzQ0FBc0M7SUFDL0MsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFeEMsNENBQTRDO1FBQzVDLElBQUksc0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFekQsS0FBSyxNQUFNLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILHVCQUFlLENBQUMsR0FBRyxDQUFDO0lBQ2xCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsT0FBTyxFQUFFLHVGQUF1RjtJQUNoRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDUixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUV4Qyw0Q0FBNEM7UUFDNUMsSUFBSSxzQkFBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUV6RCxLQUFLLE1BQU0sUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9GLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsdUJBQWUsQ0FBQyxHQUFHLENBQUM7SUFDbEIsSUFBSSxFQUFFLGlCQUFpQjtJQUN2QixPQUFPLEVBQUUscUNBQXFDO0lBQzlDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRXhDLDRDQUE0QztRQUM1QyxJQUFJLHNCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRXpELEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckQsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWpFLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxRixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCx1QkFBZSxDQUFDLEdBQUcsQ0FBQztJQUNsQixJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLE9BQU8sRUFBRSwrREFBK0Q7SUFDeEUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFeEMsNENBQTRDO1FBQzVDLElBQUksc0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFekQsS0FBSyxNQUFNLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyRCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFakUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM5RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCx1QkFBZSxDQUFDLEdBQUcsQ0FBQztJQUNsQixJQUFJLEVBQUUsY0FBYztJQUNwQixPQUFPLEVBQUUsMENBQTBDO0lBQ25ELElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRXhDLDRDQUE0QztRQUM1QyxJQUFJLHNCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRXpELEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxTQUFTLHFCQUFxQjtJQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3hDLE9BQU8scUhBQXFILENBQUM7SUFDL0gsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IENvcmVUeXBlcyB9IGZyb20gJy4vY29yZS10eXBlcyc7XG5pbXBvcnQgeyBMaW50ZXIsIE1ldGhvZFNpZ25hdHVyZVBhcmFtZXRlckV4cGVjdGF0aW9uIH0gZnJvbSAnLi4vbGludGVyJztcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdExpbnRlciA9IG5ldyBMaW50ZXI8Q29uc3RydWN0UmVmbGVjdGlvbj4oYXNzZW1ibHkgPT4gYXNzZW1ibHkuYWxsQ2xhc3Nlc1xuICAuZmlsdGVyKHQgPT4gQ29yZVR5cGVzLmlzQ29uc3RydWN0Q2xhc3ModCkpXG4gIC5tYXAoY29uc3RydWN0ID0+IG5ldyBDb25zdHJ1Y3RSZWZsZWN0aW9uKGNvbnN0cnVjdCkpKTtcblxuZXhwb3J0IGNsYXNzIENvbnN0cnVjdFJlZmxlY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIGZpbmRBbGxDb25zdHJ1Y3RzKGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5KSB7XG4gICAgcmV0dXJuIGFzc2VtYmx5LmFsbENsYXNzZXNcbiAgICAgIC5maWx0ZXIoYyA9PiBDb3JlVHlwZXMuaXNDb25zdHJ1Y3RDbGFzcyhjKSlcbiAgICAgIC5tYXAoYyA9PiBuZXcgQ29uc3RydWN0UmVmbGVjdGlvbihjKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEZxbkZyb21UeXBlUmVmKHR5cGVSZWY6IHJlZmxlY3QuVHlwZVJlZmVyZW5jZSkge1xuICAgIGlmICh0eXBlUmVmLmFycmF5T2ZUeXBlKSB7XG4gICAgICByZXR1cm4gdHlwZVJlZi5hcnJheU9mVHlwZS5mcW47XG4gICAgfSBlbHNlIGlmICh0eXBlUmVmLm1hcE9mVHlwZSkge1xuICAgICAgcmV0dXJuIHR5cGVSZWYubWFwT2ZUeXBlLmZxbjtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVJlZi5mcW47XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZnFuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBpbnRlcmZhY2VGcW46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHByb3BzRnFuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBpbnRlcmZhY2VUeXBlPzogcmVmbGVjdC5JbnRlcmZhY2VUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHNUeXBlPzogcmVmbGVjdC5JbnRlcmZhY2VUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5pdGlhbGl6ZXI/OiByZWZsZWN0LkluaXRpYWxpemVyO1xuICBwdWJsaWMgcmVhZG9ubHkgaGFzUHJvcHNBcmd1bWVudDogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IHN5czogcmVmbGVjdC5UeXBlU3lzdGVtO1xuICBwdWJsaWMgcmVhZG9ubHkgY29yZTogQ29yZVR5cGVzO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjbGFzc1R5cGU6IHJlZmxlY3QuQ2xhc3NUeXBlKSB7XG4gICAgdGhpcy5mcW4gPSBjbGFzc1R5cGUuZnFuO1xuICAgIHRoaXMuc3lzID0gY2xhc3NUeXBlLnN5c3RlbTtcbiAgICB0aGlzLmNvcmUgPSBuZXcgQ29yZVR5cGVzKHRoaXMuc3lzKTtcbiAgICB0aGlzLmludGVyZmFjZUZxbiA9IGAke3RoaXMudHlwZVByZWZpeChjbGFzc1R5cGUpfS5JJHtjbGFzc1R5cGUubmFtZX1gO1xuICAgIHRoaXMucHJvcHNGcW4gPSBgJHt0aGlzLnR5cGVQcmVmaXgoY2xhc3NUeXBlKX0uJHtjbGFzc1R5cGUubmFtZX1Qcm9wc2A7XG4gICAgdGhpcy5pbnRlcmZhY2VUeXBlID0gdGhpcy50cnlGaW5kSW50ZXJmYWNlKCk7XG4gICAgdGhpcy5wcm9wc1R5cGUgPSB0aGlzLnRyeUZpbmRQcm9wcygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZXIgPSBjbGFzc1R5cGUuaW5pdGlhbGl6ZXI7XG4gICAgdGhpcy5oYXNQcm9wc0FyZ3VtZW50ID0gdGhpcy5pbml0aWFsaXplciAhPSBudWxsICYmIHRoaXMuaW5pdGlhbGl6ZXIucGFyYW1ldGVycy5sZW5ndGggPj0gMztcbiAgfVxuXG4gIHByaXZhdGUgdHlwZVByZWZpeChjbGFzc1R5cGU6IHJlZmxlY3QuQ2xhc3NUeXBlKSB7XG4gICAgcmV0dXJuIGNsYXNzVHlwZS5hc3NlbWJseS5uYW1lICsgKGNsYXNzVHlwZS5uYW1lc3BhY2UgPyBgLiR7Y2xhc3NUeXBlLm5hbWVzcGFjZX1gIDogJycpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnlGaW5kSW50ZXJmYWNlKCkge1xuICAgIGNvbnN0IHN5cyA9IHRoaXMuY2xhc3NUeXBlLnN5c3RlbTtcbiAgICBjb25zdCBmb3VuZCA9IHN5cy50cnlGaW5kRnFuKHRoaXMuaW50ZXJmYWNlRnFuKTtcbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghZm91bmQuaXNJbnRlcmZhY2VUeXBlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0aW5nIHR5cGUgJHt0aGlzLmludGVyZmFjZUZxbn0gdG8gYmUgYW4gaW50ZXJmYWNlYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnlGaW5kUHJvcHMoKSB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLnN5cy50cnlGaW5kRnFuKHRoaXMucHJvcHNGcW4pO1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCFmb3VuZC5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RpbmcgcHJvcHMgc3RydWN0ICR7dGhpcy5wcm9wc0Zxbn0gdG8gYmUgYW4gaW50ZXJmYWNlYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG59XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAnY29uc3RydWN0LWN0b3InLFxuICBtZXNzYWdlOiAnc2lnbmF0dXJlIG9mIGFsbCBjb25zdHJ1Y3QgY29uc3RydWN0b3JzIHNob3VsZCBiZSBcInNjb3BlLCBpZCwgcHJvcHNcIi4gJyArIGJhc2VDb25zdHJ1Y3RBZGRlbmR1bSgpLFxuICBldmFsOiBlID0+IHtcbiAgICAvLyBvbmx5IGFwcGxpZXMgdG8gbm9uIGFic3RyYWN0IGNsYXNzZXNcbiAgICBpZiAoZS5jdHguY2xhc3NUeXBlLmFic3RyYWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbGl6ZXIgPSBlLmN0eC5pbml0aWFsaXplcjtcbiAgICBpZiAoIWUuYXNzZXJ0KGluaXRpYWxpemVyLCBlLmN0eC5mcW4pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXhwZWN0ZWRQYXJhbXMgPSBuZXcgQXJyYXk8TWV0aG9kU2lnbmF0dXJlUGFyYW1ldGVyRXhwZWN0YXRpb24+KCk7XG4gICAgZXhwZWN0ZWRQYXJhbXMucHVzaCh7XG4gICAgICBuYW1lOiAnc2NvcGUnLFxuICAgICAgdHlwZTogZS5jdHguY29yZS5iYXNlQ29uc3RydWN0Q2xhc3NGcW4sXG4gICAgfSk7XG5cbiAgICBleHBlY3RlZFBhcmFtcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdpZCcsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9KTtcblxuICAgIC8vIGl0J3Mgb2theSBmb3IgYSBjb25zdHJ1Y3Qgbm90IHRvIGhhdmUgYSBcInByb3BzXCIgYXJndW1lbnQgc28gd2Ugb25seVxuICAgIC8vIGFzc2VydCB0aGUgXCJwcm9wc1wiIGFyZ3VtZW50IGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gdHdvIHBhcmFtZXRlcnNcbiAgICBpZiAoaW5pdGlhbGl6ZXIucGFyYW1ldGVycy5sZW5ndGggPiAyKSB7XG4gICAgICBleHBlY3RlZFBhcmFtcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ3Byb3BzJyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGUuYXNzZXJ0U2lnbmF0dXJlKGluaXRpYWxpemVyLCB7XG4gICAgICBwYXJhbWV0ZXJzOiBleHBlY3RlZFBhcmFtcyxcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLXN0cnVjdC1uYW1lJyxcbiAgbWVzc2FnZTogJ2FsbCBjb25zdHJ1Y3RzIG11c3QgaGF2ZSBhIHByb3BzIHN0cnVjdCcsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGFic3RyYWN0IGNsYXNzZXMgYXJlIGV4ZW1wdFxuICAgIGlmIChlLmN0eC5jbGFzc1R5cGUuYWJzdHJhY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlLmFzc2VydChlLmN0eC5wcm9wc1R5cGUsIGUuY3R4LmludGVyZmFjZUZxbik7XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtY3Rvci1wcm9wcy10eXBlJyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBcInByb3BzXCIgdHlwZSBzaG91bGQgdXNlIHRoZSBwcm9wcyBzdHJ1Y3QgJXMnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LmluaXRpYWxpemVyKSB7IHJldHVybjsgfVxuICAgIGlmIChlLmN0eC5pbml0aWFsaXplci5wYXJhbWV0ZXJzLmxlbmd0aCA8IDMpIHsgcmV0dXJuOyB9XG5cbiAgICBlLmFzc2VydChcbiAgICAgIGUuY3R4LmluaXRpYWxpemVyLnBhcmFtZXRlcnNbMl0udHlwZS50eXBlID09PSBlLmN0eC5wcm9wc1R5cGUsXG4gICAgICBlLmN0eC5mcW4sXG4gICAgICBlLmN0eC5wcm9wc0Zxbik7XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtY3Rvci1wcm9wcy1vcHRpb25hbCcsXG4gIG1lc3NhZ2U6ICdjb25zdHJ1Y3QgXCJwcm9wc1wiIG11c3QgYmUgb3B0aW9uYWwgc2luY2UgYWxsIHByb3BzIGFyZSBvcHRpb25hbCcsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaW5pdGlhbGl6ZXIpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGFwcGxpZXMgb25seSBpZiBhbGwgcHJvcGVydGllcyBhcmUgb3B0aW9uYWxcbiAgICBjb25zdCBhbGxPcHRpb25hbCA9IGUuY3R4LnByb3BzVHlwZS5hbGxQcm9wZXJ0aWVzLmV2ZXJ5KHAgPT4gcC5vcHRpb25hbCk7XG4gICAgaWYgKCFhbGxPcHRpb25hbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUuYXNzZXJ0KGUuY3R4LmluaXRpYWxpemVyLnBhcmFtZXRlcnNbMl0ub3B0aW9uYWwsIGUuY3R4LmZxbik7XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtaW50ZXJmYWNlLWV4dGVuZHMtaWNvbnN0cnVjdCcsXG4gIG1lc3NhZ2U6ICdjb25zdHJ1Y3QgaW50ZXJmYWNlIG11c3QgZXh0ZW5kIGNvcmUuSUNvbnN0cnVjdCcsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguaW50ZXJmYWNlVHlwZSkgeyByZXR1cm47IH1cbiAgICBjb25zdCBpbnRlcmZhY2VCYXNlID0gZS5jdHguc3lzLmZpbmRJbnRlcmZhY2UoZS5jdHguY29yZS5iYXNlQ29uc3RydWN0SW50ZXJmYWNlRnFuKTtcbiAgICBlLmFzc2VydChlLmN0eC5pbnRlcmZhY2VUeXBlLmV4dGVuZHMoaW50ZXJmYWNlQmFzZSksIGUuY3R4LmludGVyZmFjZVR5cGUuZnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2NvbnN0cnVjdC1iYXNlLWlzLXByaXZhdGUnLFxuICBtZXNzYWdlOiAncHJlZmVyIHRoYXQgdGhlIGNvbnN0cnVjdCBiYXNlIGNsYXNzIGlzIHByaXZhdGUnLFxuICB3YXJuaW5nOiB0cnVlLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LmludGVyZmFjZVR5cGUpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgYmFzZUZxbiA9IGAke2UuY3R4LmNsYXNzVHlwZS5mcW59QmFzZWA7XG4gICAgZS5hc3NlcnQoIWUuY3R4LnN5cy50cnlGaW5kRnFuKGJhc2VGcW4pLCBiYXNlRnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLW5vLXVuaW9ucycsXG4gIG1lc3NhZ2U6ICdwcm9wcyBtdXN0IG5vdCB1c2UgVHlwZVNjcmlwdCB1bmlvbnMnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LnByb3BzVHlwZSkgeyByZXR1cm47IH1cbiAgICBpZiAoIWUuY3R4Lmhhc1Byb3BzQXJndW1lbnQpIHsgcmV0dXJuOyB9XG5cbiAgICAvLyB0aGlzIHJ1bGUgZG9lcyBub3QgYXBwbHkgdG8gTDEgY29uc3RydWN0c1xuICAgIGlmIChDb3JlVHlwZXMuaXNDZm5SZXNvdXJjZShlLmN0eC5jbGFzc1R5cGUpKSB7IHJldHVybjsgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBlLmN0eC5wcm9wc1R5cGUub3duUHJvcGVydGllcykge1xuICAgICAgZS5hc3NlcnQoIXByb3BlcnR5LnR5cGUudW5pb25PZlR5cGVzLCBgJHtlLmN0eC5wcm9wc0Zxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLW5vLWFybi1yZWZzJyxcbiAgbWVzc2FnZTogJ3Byb3BzIG11c3QgdXNlIHN0cm9uZyB0eXBlcyBpbnN0ZWFkIG9mIGF0dHJpYnV0ZXMuIHByb3BzIHNob3VsZCBub3QgaGF2ZSBcImFyblwiIHN1ZmZpeCcsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBlLmFzc2VydCghcHJvcGVydHkubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdhcm4nKSwgYCR7ZS5jdHgucHJvcHNGcW59LiR7cHJvcGVydHkubmFtZX1gKTtcbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1uby10b2tlbnMnLFxuICBtZXNzYWdlOiAncHJvcHMgbXVzdCBub3QgdXNlIHRoZSBcIlRva2VuXCIgdHlwZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5hbGxQcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zdCBmcW4gPSBDb25zdHJ1Y3RSZWZsZWN0aW9uLmdldEZxbkZyb21UeXBlUmVmKHByb3BlcnR5LnR5cGUpO1xuXG4gICAgICBjb25zdCBmb3VuZCA9IChmcW4gJiYgZS5jdHguc3lzLnRyeUZpbmRGcW4oZnFuKSk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgZS5hc3NlcnQoIShmcW4gPT09IGUuY3R4LmNvcmUudG9rZW5JbnRlcmZhY2VGcW4pLCBgJHtlLmN0eC5wcm9wc0Zxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLW5vLWNmbi10eXBlcycsXG4gIG1lc3NhZ2U6ICdwcm9wcyBtdXN0IG5vdCBleHBvc2UgTDEgdHlwZXMgKHR5cGVzIHdoaWNoIHN0YXJ0IHdpdGggXCJDZm5cIiknLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LnByb3BzVHlwZSkgeyByZXR1cm47IH1cbiAgICBpZiAoIWUuY3R4Lmhhc1Byb3BzQXJndW1lbnQpIHsgcmV0dXJuOyB9XG5cbiAgICAvLyB0aGlzIHJ1bGUgZG9lcyBub3QgYXBwbHkgdG8gTDEgY29uc3RydWN0c1xuICAgIGlmIChDb3JlVHlwZXMuaXNDZm5SZXNvdXJjZShlLmN0eC5jbGFzc1R5cGUpKSB7IHJldHVybjsgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBlLmN0eC5wcm9wc1R5cGUub3duUHJvcGVydGllcykge1xuICAgICAgY29uc3QgZnFuID0gQ29uc3RydWN0UmVmbGVjdGlvbi5nZXRGcW5Gcm9tVHlwZVJlZihwcm9wZXJ0eS50eXBlKTtcblxuICAgICAgY29uc3QgZm91bmQgPSAoZnFuICYmIGUuY3R4LnN5cy50cnlGaW5kRnFuKGZxbikpO1xuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIGUuYXNzZXJ0KCFmb3VuZC5uYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnY2ZuJyksIGAke2UuY3R4LnByb3BzRnFufS4ke3Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtbm8tYW55JyxcbiAgbWVzc2FnZTogJ3Byb3BzIG11c3Qgbm90IHVzZSBUeXBlc2NyaXB0IFwiYW55XCIgdHlwZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBlLmFzc2VydCghcHJvcGVydHkudHlwZS5pc0FueSwgYCR7ZS5jdHgucHJvcHNGcW59LiR7cHJvcGVydHkubmFtZX1gKTtcbiAgICB9XG4gIH0sXG59KTtcblxuZnVuY3Rpb24gYmFzZUNvbnN0cnVjdEFkZGVuZHVtKCk6IHN0cmluZyB7XG4gIGlmICghcHJvY2Vzcy5lbnYuQVdTTElOVF9CQVNFX0NPTlNUUlVDVCkge1xuICAgIHJldHVybiAnSWYgdGhlIGNvbnN0cnVjdCBpcyB1c2luZyB0aGUgXCJjb25zdHJ1Y3RzXCIgbW9kdWxlLCBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFwiQVdTTElOVF9CQVNFX0NPTlNUUlVDVFwiIGFuZCByZS1ydW4nO1xuICB9XG4gIHJldHVybiAnJztcbn1cbiJdfQ==
@@ -7,7 +7,6 @@ export const constructLinter = new Linter<ConstructReflection>(assembly => assem
7
7
  .map(construct => new ConstructReflection(construct)));
8
8
 
9
9
  export class ConstructReflection {
10
-
11
10
  public static findAllConstructs(assembly: reflect.Assembly) {
12
11
  return assembly.allClasses
13
12
  .filter(c => CoreTypes.isConstructClass(c))
@@ -282,4 +281,4 @@ function baseConstructAddendum(): string {
282
281
  return 'If the construct is using the "constructs" module, set the environment variable "AWSLINT_BASE_CONSTRUCT" and re-run';
283
282
  }
284
283
  return '';
285
- }
284
+ }
@@ -183,4 +183,4 @@ class CoreTypes {
183
183
  }
184
184
  }
185
185
  exports.CoreTypes = CoreTypes;
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvcmUtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQW1DO0FBRW5DLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztBQUNsQyxJQUFLLFlBU0o7QUFURCxXQUFLLFlBQVk7SUFDZix1REFBdUMsQ0FBQTtJQUN2QyxpREFBaUMsQ0FBQTtJQUNqQywyREFBMkMsQ0FBQTtJQUMzQywrREFBK0MsQ0FBQTtJQUMvQyx5REFBeUMsQ0FBQTtJQUV6QyxrREFBa0MsQ0FBQTtJQUNsQyw0REFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBVEksWUFBWSxLQUFaLFlBQVksUUFTaEI7QUFFRCxNQUFhLFNBQVM7SUFFcEI7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQTBCO1FBQ3BELE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQW9CO1FBQzlDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FB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bUJBQW1CLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFZ0IsR0FBRyxDQUFxQjtJQUV6QyxZQUFZLEdBQXVCO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLHFCQUFxQjtZQUNyQixPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTFNRCw4QkEwTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBnZXREb2NUYWcgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBDT1JFX01PRFVMRSA9ICdhd3MtY2RrLWxpYic7XG5lbnVtIENvcmVUeXBlc0ZxbiB7XG4gIENmblJlc291cmNlID0gJ2F3cy1jZGstbGliLkNmblJlc291cmNlJyxcbiAgUmVzb3VyY2UgPSAnYXdzLWNkay1saWIuUmVzb3VyY2UnLFxuICBSZXNvdXJjZUludGVyZmFjZSA9ICdhd3MtY2RrLWxpYi5JUmVzb3VyY2UnLFxuICBSZXNvbHZhYmxlSW50ZXJmYWNlID0gJ2F3cy1jZGstbGliLklSZXNvbHZhYmxlJyxcbiAgUGh5c2ljYWxOYW1lID0gJ2F3cy1jZGstbGliLlBoeXNpY2FsTmFtZScsXG5cbiAgQ29uc3RydWN0ID0gJ2NvbnN0cnVjdHMuQ29uc3RydWN0JyxcbiAgQ29uc3RydWN0SW50ZXJmYWNlID0gJ2NvbnN0cnVjdHMuSUNvbnN0cnVjdCcsXG59XG5cbmV4cG9ydCBjbGFzcyBDb3JlVHlwZXMge1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGFzc2VtYmx5IGhhcyB0aGUgQ29yZSBtb2R1bGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaGFzQ29yZU1vZHVsZShhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseSkge1xuICAgIHJldHVybiAoIWFzc2VtYmx5LnN5c3RlbS5hc3NlbWJsaWVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IENPUkVfTU9EVUxFKSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBgY2xhc3NUeXBlYCByZXByZXNlbnRzIGFuIEwxIENmbiBSZXNvdXJjZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0NmblJlc291cmNlKGM6IHJlZmxlY3QuQ2xhc3NUeXBlKSB7XG4gICAgaWYgKCFjLnN5c3RlbS5pbmNsdWRlc0Fzc2VtYmx5KENPUkVfTU9EVUxFKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHNraXAgQ2ZuUmVzb3VyY2UgaXRzZWxmXG4gICAgaWYgKGMuZnFuID09PSBDb3JlVHlwZXNGcW4uQ2ZuUmVzb3VyY2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNDb25zdHJ1Y3RDbGFzcyhjKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNmblJlc291cmNlQ2xhc3MgPSBjLnN5c3RlbS5maW5kRnFuKENvcmVUeXBlc0Zxbi5DZm5SZXNvdXJjZSk7XG4gICAgaWYgKCFjLmV4dGVuZHMoY2ZuUmVzb3VyY2VDbGFzcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYy5uYW1lLnN0YXJ0c1dpdGgoJ0NmbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYGNsYXNzVHlwZWAgcmVwcmVzZW50cyBhIENvbnN0cnVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0NvbnN0cnVjdENsYXNzKGM6IHJlZmxlY3QuQ2xhc3NUeXBlKSB7XG4gICAgaWYgKCFjLnN5c3RlbS5pbmNsdWRlc0Fzc2VtYmx5KENPUkVfTU9EVUxFKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghYy5pc0NsYXNzVHlwZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGMuYWJzdHJhY3QpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYy5leHRlbmRzKGMuc3lzdGVtLmZpbmRGcW4oQ29yZVR5cGVzRnFuLkNvbnN0cnVjdCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYGNsYXNzVHlwZWAgcmVwcmVzZW50cyBhbiBBV1MgcmVzb3VyY2UgKGkuZS4gZXh0ZW5kcyBgY2RrLlJlc291cmNlYCkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzUmVzb3VyY2VDbGFzcyhjbGFzc1R5cGU6IHJlZmxlY3QuQ2xhc3NUeXBlKSB7XG4gICAgY29uc3QgYmFzZVJlc291cmNlID0gY2xhc3NUeXBlLnN5c3RlbS5maW5kQ2xhc3MoQ29yZVR5cGVzRnFuLlJlc291cmNlKTtcbiAgICByZXR1cm4gY2xhc3NUeXBlLmV4dGVuZHMoYmFzZVJlc291cmNlKSB8fCBnZXREb2NUYWcoY2xhc3NUeXBlLCAncmVzb3VyY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmVzdGluZyBwYXJlbnQgb2YgdGhlIGdpdmVuIGludGVyZmFjZSBpcyBhIENGTiBjbGFzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0Nmbk5lc3RlZFR5cGUoaW50ZXJmYWNlVHlwZTogcmVmbGVjdC5UeXBlKSB7XG4gICAgcmV0dXJuIGludGVyZmFjZVR5cGUubmVzdGluZ1BhcmVudCAmJiBDb3JlVHlwZXMuaXNDZm5UeXBlKGludGVyZmFjZVR5cGUubmVzdGluZ1BhcmVudCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGludGVyZmFjZSB0eXBlIGlzIGEgQ0ZOIGNsYXNzLCBwcm9wIHR5cGUgb3IgaW50ZXJmYWNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQ2ZuVHlwZShpbnRlcmZhY2VUeXBlOiByZWZsZWN0LlR5cGUpOiBib29sZWFuIHtcbiAgICAvLyBhd3Nfc2VydmljZS5DZm5UaGVSZXNvdXJjZVxuICAgIGlmIChpbnRlcmZhY2VUeXBlLm5hbWUuc3RhcnRzV2l0aCgnQ2ZuJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGF3c19zZXJ2aWNlLklUaGVSZXNvdXJjZVJmXG4gICAgaWYgKC9eSVxcdytSZWYvLnRlc3QoaW50ZXJmYWNlVHlwZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGludGVyZmFjZVR5cGUubmFtZXNwYWNlKSB7XG4gICAgICBpZiAoaW50ZXJmYWNlVHlwZS5uYW1lc3BhY2Uuc3RhcnRzV2l0aCgnQ2ZuJykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5hbWVzcGFjZVBhcnRzID0gaW50ZXJmYWNlVHlwZS5uYW1lc3BhY2Uuc3BsaXQoJy4nKTtcblxuICAgICAgLy8gYXdzX3NlcnZpY2UuQ2ZuVGhlUmVzb3VyY2UuU3ViVHlwZVxuICAgICAgaWYgKG5hbWVzcGFjZVBhcnRzLmF0KDEpPy5zdGFydHNXaXRoKCdDZm4nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gYXdzX3NlcnZpY2UubWl4aW5zLkNmblRoZVJlc291cmNlLlN1YlR5cGVcbiAgICAgIGlmIChuYW1lc3BhY2VQYXJ0cy5hdCgxKSA9PT0gJ21peGlucycgJiYgbmFtZXNwYWNlUGFydHMuYXQoMik/LnN0YXJ0c1dpdGgoJ0NmbicpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBgY2xhc3NUeXBlYCBmb3IgdGhlIGNvcmUgdHlwZSBDb25zdHJ1Y3RcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgYGJhc2VDb25zdHJ1Y3RDbGFzcygpYFxuICAgKi9cbiAgcHVibGljIGdldCBjb25zdHJ1Y3RDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29uc3RydWN0Q2xhc3M7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYGNsYXNzVHlwZWAgZm9yIHRoZSBjb3JlIHR5cGUgQ29uc3RydWN0XG4gICAqL1xuICBwdWJsaWMgZ2V0IGJhc2VDb25zdHJ1Y3RDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5zeXMuZmluZENsYXNzKHRoaXMuYmFzZUNvbnN0cnVjdENsYXNzRnFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBgY2xhc3NUeXBlYCBmb3IgdGhlIGNvcmUgdHlwZSBDb25zdHJ1Y3RcbiAgICovXG4gIHB1YmxpYyBnZXQgYmFzZUNvbnN0cnVjdENsYXNzRnFuKCkge1xuICAgIHJldHVybiBDb3JlVHlwZXNGcW4uQ29uc3RydWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGBpbnRlcmZhY2V0eXBlYCBmb3IgdGhlIGNvcmUgdHlwZSBDb25zdHJ1Y3RcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgYGJhc2VDb25zdHJ1Y3RJbnRlcmZhY2UoKWBcbiAgICovXG4gIHB1YmxpYyBnZXQgY29uc3RydWN0SW50ZXJmYWNlKCkge1xuICAgIHJldHVybiB0aGlzLmJhc2VDb25zdHJ1Y3RJbnRlcmZhY2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYGludGVyZmFjZXR5cGVgIGZvciB0aGUgY29yZSB0eXBlIENvbnN0cnVjdFxuICAgKi9cbiAgcHVibGljIGdldCBiYXNlQ29uc3RydWN0SW50ZXJmYWNlKCkge1xuICAgIHJldHVybiB0aGlzLnN5cy5maW5kSW50ZXJmYWNlKHRoaXMuYmFzZUNvbnN0cnVjdEludGVyZmFjZUZxbik7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgZnFuIGZvciBmb3IgdGhlIGNvcmUgQ29uc3RydWN0IGludGVyZmFjZVxuICAgKi9cbiAgcHVibGljIGdldCBiYXNlQ29uc3RydWN0SW50ZXJmYWNlRnFuKCkge1xuICAgIHJldHVybiBDb3JlVHlwZXNGcW4uQ29uc3RydWN0SW50ZXJmYWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGBjbGFzc1R5cGVgIGZvciB0aGUgY29yZSB0eXBlIFJlc291cmNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlc291cmNlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzLmZpbmRDbGFzcyh0aGlzLnJlc291cmNlQ2xhc3NGcW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGZxbiBmb3IgdGhlIGNvcmUgdHlwZSBSZXNvdXJjZVxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZUNsYXNzRnFuKCkge1xuICAgIHJldHVybiBDb3JlVHlwZXNGcW4uUmVzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgZnFuIGZvciB0aGUgY29yZSBSZXNvdXJjZSBpbnRlcmZhY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VJbnRlcmZhY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzLmZpbmRJbnRlcmZhY2UodGhpcy5yZXNvdXJjZUludGVyZmFjZUZxbik7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYGludGVyZmFjZVR5cGVgIGZvciB0aGUgY29yZSB0eXBlIFJlc291cmNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlc291cmNlSW50ZXJmYWNlRnFuKCkge1xuICAgIHJldHVybiBDb3JlVHlwZXNGcW4uUmVzb3VyY2VJbnRlcmZhY2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYGNsYXNzVHlwZWAgZm9yIHRoZSBjb3JlIHR5cGUgVG9rZW5cbiAgICovXG4gIHB1YmxpYyBnZXQgdG9rZW5JbnRlcmZhY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzLmZpbmRJbnRlcmZhY2UodGhpcy50b2tlbkludGVyZmFjZUZxbik7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgZnFuIGZvciB0aGUgY29yZSB0eXBlIFRva2VuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRva2VuSW50ZXJmYWNlRnFuKCkge1xuICAgIHJldHVybiBDb3JlVHlwZXNGcW4uUmVzb2x2YWJsZUludGVyZmFjZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGh5c2ljYWxOYW1lQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzLmZpbmRDbGFzcyhDb3JlVHlwZXNGcW4uUGh5c2ljYWxOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3lzOiByZWZsZWN0LlR5cGVTeXN0ZW07XG5cbiAgY29uc3RydWN0b3Ioc3lzOiByZWZsZWN0LlR5cGVTeXN0ZW0pIHtcbiAgICB0aGlzLnN5cyA9IHN5cztcbiAgICBpZiAoIXN5cy5pbmNsdWRlc0Fzc2VtYmx5KENPUkVfTU9EVUxFKSkge1xuICAgICAgLy8gZGlzYWJsZS1hbGwtY2hlY2tzXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG4iXX0=
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvcmUtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQW1DO0FBRW5DLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztBQUNsQyxJQUFLLFlBU0o7QUFURCxXQUFLLFlBQVk7SUFDZix1REFBdUMsQ0FBQTtJQUN2QyxpREFBaUMsQ0FBQTtJQUNqQywyREFBMkMsQ0FBQTtJQUMzQywrREFBK0MsQ0FBQTtJQUMvQyx5REFBeUMsQ0FBQTtJQUV6QyxrREFBa0MsQ0FBQTtJQUNsQyw0REFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBVEksWUFBWSxLQUFaLFlBQVksUUFTaEI7QUFFRCxNQUFhLFNBQVM7SUFDcEI7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQTBCO1FBQ3BELE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQW9CO1FBQzlDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FB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bUJBQW1CLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFZ0IsR0FBRyxDQUFxQjtJQUV6QyxZQUFZLEdBQXVCO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLHFCQUFxQjtZQUNyQixPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpNRCw4QkF5TUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBnZXREb2NUYWcgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBDT1JFX01PRFVMRSA9ICdhd3MtY2RrLWxpYic7XG5lbnVtIENvcmVUeXBlc0ZxbiB7XG4gIENmblJlc291cmNlID0gJ2F3cy1jZGstbGliLkNmblJlc291cmNlJyxcbiAgUmVzb3VyY2UgPSAnYXdzLWNkay1saWIuUmVzb3VyY2UnLFxuICBSZXNvdXJjZUludGVyZmFjZSA9ICdhd3MtY2RrLWxpYi5JUmVzb3VyY2UnLFxuICBSZXNvbHZhYmxlSW50ZXJmYWNlID0gJ2F3cy1jZGstbGliLklSZXNvbHZhYmxlJyxcbiAgUGh5c2ljYWxOYW1lID0gJ2F3cy1jZGstbGliLlBoeXNpY2FsTmFtZScsXG5cbiAgQ29uc3RydWN0ID0gJ2NvbnN0cnVjdHMuQ29uc3RydWN0JyxcbiAgQ29uc3RydWN0SW50ZXJmYWNlID0gJ2NvbnN0cnVjdHMuSUNvbnN0cnVjdCcsXG59XG5cbmV4cG9ydCBjbGFzcyBDb3JlVHlwZXMge1xuICAvKipcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhc3NlbWJseSBoYXMgdGhlIENvcmUgbW9kdWxlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhhc0NvcmVNb2R1bGUoYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHkpIHtcbiAgICByZXR1cm4gKCFhc3NlbWJseS5zeXN0ZW0uYXNzZW1ibGllcy5maW5kKGEgPT4gYS5uYW1lID09PSBDT1JFX01PRFVMRSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYGNsYXNzVHlwZWAgcmVwcmVzZW50cyBhbiBMMSBDZm4gUmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDZm5SZXNvdXJjZShjOiByZWZsZWN0LkNsYXNzVHlwZSkge1xuICAgIGlmICghYy5zeXN0ZW0uaW5jbHVkZXNBc3NlbWJseShDT1JFX01PRFVMRSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBza2lwIENmblJlc291cmNlIGl0c2VsZlxuICAgIGlmIChjLmZxbiA9PT0gQ29yZVR5cGVzRnFuLkNmblJlc291cmNlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzQ29uc3RydWN0Q2xhc3MoYykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjZm5SZXNvdXJjZUNsYXNzID0gYy5zeXN0ZW0uZmluZEZxbihDb3JlVHlwZXNGcW4uQ2ZuUmVzb3VyY2UpO1xuICAgIGlmICghYy5leHRlbmRzKGNmblJlc291cmNlQ2xhc3MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGMubmFtZS5zdGFydHNXaXRoKCdDZm4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGBjbGFzc1R5cGVgIHJlcHJlc2VudHMgYSBDb25zdHJ1Y3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDb25zdHJ1Y3RDbGFzcyhjOiByZWZsZWN0LkNsYXNzVHlwZSkge1xuICAgIGlmICghYy5zeXN0ZW0uaW5jbHVkZXNBc3NlbWJseShDT1JFX01PRFVMRSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWMuaXNDbGFzc1R5cGUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChjLmFic3RyYWN0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGMuZXh0ZW5kcyhjLnN5c3RlbS5maW5kRnFuKENvcmVUeXBlc0Zxbi5Db25zdHJ1Y3QpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGBjbGFzc1R5cGVgIHJlcHJlc2VudHMgYW4gQVdTIHJlc291cmNlIChpLmUuIGV4dGVuZHMgYGNkay5SZXNvdXJjZWApLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1Jlc291cmNlQ2xhc3MoY2xhc3NUeXBlOiByZWZsZWN0LkNsYXNzVHlwZSkge1xuICAgIGNvbnN0IGJhc2VSZXNvdXJjZSA9IGNsYXNzVHlwZS5zeXN0ZW0uZmluZENsYXNzKENvcmVUeXBlc0Zxbi5SZXNvdXJjZSk7XG4gICAgcmV0dXJuIGNsYXNzVHlwZS5leHRlbmRzKGJhc2VSZXNvdXJjZSkgfHwgZ2V0RG9jVGFnKGNsYXNzVHlwZSwgJ3Jlc291cmNlJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIG5lc3RpbmcgcGFyZW50IG9mIHRoZSBnaXZlbiBpbnRlcmZhY2UgaXMgYSBDRk4gY2xhc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDZm5OZXN0ZWRUeXBlKGludGVyZmFjZVR5cGU6IHJlZmxlY3QuVHlwZSkge1xuICAgIHJldHVybiBpbnRlcmZhY2VUeXBlLm5lc3RpbmdQYXJlbnQgJiYgQ29yZVR5cGVzLmlzQ2ZuVHlwZShpbnRlcmZhY2VUeXBlLm5lc3RpbmdQYXJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBpbnRlcmZhY2UgdHlwZSBpcyBhIENGTiBjbGFzcywgcHJvcCB0eXBlIG9yIGludGVyZmFjZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0NmblR5cGUoaW50ZXJmYWNlVHlwZTogcmVmbGVjdC5UeXBlKTogYm9vbGVhbiB7XG4gICAgLy8gYXdzX3NlcnZpY2UuQ2ZuVGhlUmVzb3VyY2VcbiAgICBpZiAoaW50ZXJmYWNlVHlwZS5uYW1lLnN0YXJ0c1dpdGgoJ0NmbicpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBhd3Nfc2VydmljZS5JVGhlUmVzb3VyY2VSZlxuICAgIGlmICgvXklcXHcrUmVmLy50ZXN0KGludGVyZmFjZVR5cGUubmFtZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpbnRlcmZhY2VUeXBlLm5hbWVzcGFjZSkge1xuICAgICAgaWYgKGludGVyZmFjZVR5cGUubmFtZXNwYWNlLnN0YXJ0c1dpdGgoJ0NmbicpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuYW1lc3BhY2VQYXJ0cyA9IGludGVyZmFjZVR5cGUubmFtZXNwYWNlLnNwbGl0KCcuJyk7XG5cbiAgICAgIC8vIGF3c19zZXJ2aWNlLkNmblRoZVJlc291cmNlLlN1YlR5cGVcbiAgICAgIGlmIChuYW1lc3BhY2VQYXJ0cy5hdCgxKT8uc3RhcnRzV2l0aCgnQ2ZuJykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIGF3c19zZXJ2aWNlLm1peGlucy5DZm5UaGVSZXNvdXJjZS5TdWJUeXBlXG4gICAgICBpZiAobmFtZXNwYWNlUGFydHMuYXQoMSkgPT09ICdtaXhpbnMnICYmIG5hbWVzcGFjZVBhcnRzLmF0KDIpPy5zdGFydHNXaXRoKCdDZm4nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYGNsYXNzVHlwZWAgZm9yIHRoZSBjb3JlIHR5cGUgQ29uc3RydWN0XG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGBiYXNlQ29uc3RydWN0Q2xhc3MoKWBcbiAgICovXG4gIHB1YmxpYyBnZXQgY29uc3RydWN0Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUNvbnN0cnVjdENsYXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGBjbGFzc1R5cGVgIGZvciB0aGUgY29yZSB0eXBlIENvbnN0cnVjdFxuICAgKi9cbiAgcHVibGljIGdldCBiYXNlQ29uc3RydWN0Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzLmZpbmRDbGFzcyh0aGlzLmJhc2VDb25zdHJ1Y3RDbGFzc0Zxbik7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYGNsYXNzVHlwZWAgZm9yIHRoZSBjb3JlIHR5cGUgQ29uc3RydWN0XG4gICAqL1xuICBwdWJsaWMgZ2V0IGJhc2VDb25zdHJ1Y3RDbGFzc0ZxbigpIHtcbiAgICByZXR1cm4gQ29yZVR5cGVzRnFuLkNvbnN0cnVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBgaW50ZXJmYWNldHlwZWAgZm9yIHRoZSBjb3JlIHR5cGUgQ29uc3RydWN0XG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGBiYXNlQ29uc3RydWN0SW50ZXJmYWNlKClgXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNvbnN0cnVjdEludGVyZmFjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29uc3RydWN0SW50ZXJmYWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGBpbnRlcmZhY2V0eXBlYCBmb3IgdGhlIGNvcmUgdHlwZSBDb25zdHJ1Y3RcbiAgICovXG4gIHB1YmxpYyBnZXQgYmFzZUNvbnN0cnVjdEludGVyZmFjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zeXMuZmluZEludGVyZmFjZSh0aGlzLmJhc2VDb25zdHJ1Y3RJbnRlcmZhY2VGcW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGZxbiBmb3IgZm9yIHRoZSBjb3JlIENvbnN0cnVjdCBpbnRlcmZhY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgYmFzZUNvbnN0cnVjdEludGVyZmFjZUZxbigpIHtcbiAgICByZXR1cm4gQ29yZVR5cGVzRnFuLkNvbnN0cnVjdEludGVyZmFjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBgY2xhc3NUeXBlYCBmb3IgdGhlIGNvcmUgdHlwZSBSZXNvdXJjZVxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZUNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLnN5cy5maW5kQ2xhc3ModGhpcy5yZXNvdXJjZUNsYXNzRnFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBmcW4gZm9yIHRoZSBjb3JlIHR5cGUgUmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VDbGFzc0ZxbigpIHtcbiAgICByZXR1cm4gQ29yZVR5cGVzRnFuLlJlc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGZxbiBmb3IgdGhlIGNvcmUgUmVzb3VyY2UgaW50ZXJmYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlc291cmNlSW50ZXJmYWNlKCkge1xuICAgIHJldHVybiB0aGlzLnN5cy5maW5kSW50ZXJmYWNlKHRoaXMucmVzb3VyY2VJbnRlcmZhY2VGcW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGBpbnRlcmZhY2VUeXBlYCBmb3IgdGhlIGNvcmUgdHlwZSBSZXNvdXJjZVxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZUludGVyZmFjZUZxbigpIHtcbiAgICByZXR1cm4gQ29yZVR5cGVzRnFuLlJlc291cmNlSW50ZXJmYWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGBjbGFzc1R5cGVgIGZvciB0aGUgY29yZSB0eXBlIFRva2VuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRva2VuSW50ZXJmYWNlKCkge1xuICAgIHJldHVybiB0aGlzLnN5cy5maW5kSW50ZXJmYWNlKHRoaXMudG9rZW5JbnRlcmZhY2VGcW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGZxbiBmb3IgdGhlIGNvcmUgdHlwZSBUb2tlblxuICAgKi9cbiAgcHVibGljIGdldCB0b2tlbkludGVyZmFjZUZxbigpIHtcbiAgICByZXR1cm4gQ29yZVR5cGVzRnFuLlJlc29sdmFibGVJbnRlcmZhY2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBoeXNpY2FsTmFtZUNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLnN5cy5maW5kQ2xhc3MoQ29yZVR5cGVzRnFuLlBoeXNpY2FsTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHN5czogcmVmbGVjdC5UeXBlU3lzdGVtO1xuXG4gIGNvbnN0cnVjdG9yKHN5czogcmVmbGVjdC5UeXBlU3lzdGVtKSB7XG4gICAgdGhpcy5zeXMgPSBzeXM7XG4gICAgaWYgKCFzeXMuaW5jbHVkZXNBc3NlbWJseShDT1JFX01PRFVMRSkpIHtcbiAgICAgIC8vIGRpc2FibGUtYWxsLWNoZWNrc1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -14,7 +14,6 @@ enum CoreTypesFqn {
14
14
  }
15
15
 
16
16
  export class CoreTypes {
17
-
18
17
  /**
19
18
  * @returns true if assembly has the Core module
20
19
  */
@@ -12,4 +12,4 @@ exports.exportsLinter.add({
12
12
  }
13
13
  },
14
14
  });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQW1DO0FBRXRCLFFBQUEsYUFBYSxHQUFHLElBQUksZUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXBFLHFCQUFhLENBQUMsR0FBRyxDQUFDO0lBQ2hCLElBQUksRUFBRSxXQUFXO0lBQ2pCLE9BQU8sRUFBRSxxQ0FBcUM7SUFDOUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGludGVyIH0gZnJvbSAnLi4vbGludGVyJztcblxuZXhwb3J0IGNvbnN0IGV4cG9ydHNMaW50ZXIgPSBuZXcgTGludGVyKGFzc2VtYmx5ID0+IGFzc2VtYmx5LnR5cGVzKTtcblxuZXhwb3J0c0xpbnRlci5hZGQoe1xuICBjb2RlOiAnbm8tZXhwb3J0JyxcbiAgbWVzc2FnZTogJ3RoZSBcImV4cG9ydFwiIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoZS5jdHguaXNDbGFzc1R5cGUoKSB8fCBlLmN0eC5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgZS5hc3NlcnQoIWUuY3R4LmFsbE1ldGhvZHMuc29tZShtID0+IG0ubmFtZSA9PT0gJ2V4cG9ydCcpLCBlLmN0eC5mcW4pO1xuICAgIH1cbiAgfSxcbn0pOyJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQW1DO0FBRXRCLFFBQUEsYUFBYSxHQUFHLElBQUksZUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXBFLHFCQUFhLENBQUMsR0FBRyxDQUFDO0lBQ2hCLElBQUksRUFBRSxXQUFXO0lBQ2pCLE9BQU8sRUFBRSxxQ0FBcUM7SUFDOUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGludGVyIH0gZnJvbSAnLi4vbGludGVyJztcblxuZXhwb3J0IGNvbnN0IGV4cG9ydHNMaW50ZXIgPSBuZXcgTGludGVyKGFzc2VtYmx5ID0+IGFzc2VtYmx5LnR5cGVzKTtcblxuZXhwb3J0c0xpbnRlci5hZGQoe1xuICBjb2RlOiAnbm8tZXhwb3J0JyxcbiAgbWVzc2FnZTogJ3RoZSBcImV4cG9ydFwiIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoZS5jdHguaXNDbGFzc1R5cGUoKSB8fCBlLmN0eC5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgZS5hc3NlcnQoIWUuY3R4LmFsbE1ldGhvZHMuc29tZShtID0+IG0ubmFtZSA9PT0gJ2V4cG9ydCcpLCBlLmN0eC5mcW4pO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
@@ -10,4 +10,4 @@ exportsLinter.add({
10
10
  e.assert(!e.ctx.allMethods.some(m => m.name === 'export'), e.ctx.fqn);
11
11
  }
12
12
  },
13
- });
13
+ });
@@ -107,4 +107,4 @@ function baseConstructAddendum() {
107
107
  }
108
108
  return '';
109
109
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQStEO0FBQy9ELHNDQUFtQztBQUV0QixRQUFBLGFBQWEsR0FBRyxJQUFJLGVBQU0sQ0FBb0IsUUFBUSxDQUFDLEVBQUUsQ0FBQyw2QkFBa0I7S0FDdEYsT0FBTyxDQUFDLFFBQVEsQ0FBQztLQUNqQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsbUVBQW1FO0tBQ3pILEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXZELE1BQU0saUJBQWlCO0lBUU87SUFQWixXQUFXLENBQW1CO0lBQzlCLE1BQU0sQ0FBUztJQUNmLHdCQUF3QixDQUFTO0lBQ2pDLG9CQUFvQixDQUFrQjtJQUN0QyxvQkFBb0IsQ0FBUztJQUM3QixnQkFBZ0IsQ0FBeUI7SUFFekQsWUFBNEIsUUFBNEI7UUFBNUIsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDdEQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQy9DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLFlBQVksQ0FBQztRQUMzRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXJHLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakQsQ0FBQyxDQUFDLE1BQU07ZUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLE9BQU8sQ0FBQztlQUNwQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRWpELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDN0QsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLG1CQUFtQiw4QkFBOEIsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFFRCxxQkFBYSxDQUFDLEdBQUcsQ0FBQztJQUNoQixJQUFJLEVBQUUsa0JBQWtCO0lBQ3hCLE9BQU8sRUFBRSxzRkFBc0Y7SUFDL0YsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxxQkFBYSxDQUFDLEdBQUcsQ0FBQztJQUNoQixJQUFJLEVBQUUsYUFBYTtJQUNuQixPQUFPLEVBQUUsa0ZBQWtGO0lBQzNGLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLHFGQUFxRjtRQUNyRixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssd0JBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdFLE9BQU87UUFDVCxDQUFDO1FBRUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0YsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILHFCQUFhLENBQUMsR0FBRyxDQUFDO0lBQ2hCLElBQUksRUFBRSxnQkFBZ0I7SUFDdEIsT0FBTyxFQUFFLCtDQUErQyxHQUFHLHFCQUFxQixFQUFFO0lBQ2xGLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV2Qyw2QkFBNkI7WUFDN0IsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUV0RyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDeEQsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3hCLFVBQVUsRUFBRTtvQkFDVixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDakMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQzlCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2lCQUNsQztnQkFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWE7YUFDaEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxxQkFBYSxDQUFDLEdBQUcsQ0FBQztJQUNoQixJQUFJLEVBQUUsaUJBQWlCO0lBQ3ZCLE9BQU8sRUFBRSwrRUFBK0UsR0FBRyxxQkFBcUIsRUFBRTtJQUNsSCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDUixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ3hELENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtZQUM1QyxVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUM5QixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUU7YUFDaEQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgscUJBQWEsQ0FBQyxHQUFHLENBQUM7SUFDaEIsSUFBSSxFQUFFLHdCQUF3QjtJQUM5QixPQUFPLEVBQUUsOENBQThDO0lBQ3ZELElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLDZCQUE2QjtRQUN2QyxDQUFDO1FBRUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsU0FBUyxxQkFBcUI7SUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN4QyxPQUFPLHFIQUFxSCxDQUFDO0lBQy9ILENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVTaXRlLCBSZXNvdXJjZVJlZmxlY3Rpb24gfSBmcm9tICcuL3Jlc291cmNlJztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmV4cG9ydCBjb25zdCBpbXBvcnRzTGludGVyID0gbmV3IExpbnRlcjxJbXBvcnRzUmVmbGVjdGlvbj4oYXNzZW1ibHkgPT4gUmVzb3VyY2VSZWZsZWN0aW9uXG4gIC5maW5kQWxsKGFzc2VtYmx5KVxuICAuZmlsdGVyKHIgPT4gci5jb25zdHJ1Y3QgJiYgci5jb25zdHJ1Y3QuaW50ZXJmYWNlVHlwZSkgLy8gb25seSByZXNvdXJjZXMgdGhhdCBoYXZlIGFuIGludGVyZmFjZSBjYW4gaGF2ZSBcImZyb21YeHhcIiBtZXRob2RzXG4gIC5tYXAoY29uc3RydWN0ID0+IG5ldyBJbXBvcnRzUmVmbGVjdGlvbihjb25zdHJ1Y3QpKSk7XG5cbmNsYXNzIEltcG9ydHNSZWZsZWN0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGZyb21NZXRob2RzOiByZWZsZWN0Lk1ldGhvZFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBmcm9tQXR0cmlidXRlc01ldGhvZE5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZyb21BdHRyaWJ1dGVzTWV0aG9kPzogcmVmbGVjdC5NZXRob2Q7XG4gIHB1YmxpYyByZWFkb25seSBhdHRyaWJ1dGVzU3RydWN0TmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0cmlidXRlc1N0cnVjdD86IHJlZmxlY3QuSW50ZXJmYWNlVHlwZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IFJlc291cmNlUmVmbGVjdGlvbikge1xuICAgIGNvbnN0IHN5cyA9IHJlc291cmNlLnN5cztcbiAgICB0aGlzLnByZWZpeCA9IGBmcm9tJHtyZXNvdXJjZS5iYXNlbmFtZX1gO1xuICAgIGNvbnN0IGNsYXNzVHlwZSA9IHJlc291cmNlLmNvbnN0cnVjdC5jbGFzc1R5cGU7XG4gICAgdGhpcy5mcm9tQXR0cmlidXRlc01ldGhvZE5hbWUgPSBgJHt0aGlzLnByZWZpeH1BdHRyaWJ1dGVzYDtcbiAgICB0aGlzLmZyb21BdHRyaWJ1dGVzTWV0aG9kID0gY2xhc3NUeXBlLmFsbE1ldGhvZHMuZmluZCh4ID0+IHgubmFtZSA9PT0gdGhpcy5mcm9tQXR0cmlidXRlc01ldGhvZE5hbWUpO1xuXG4gICAgdGhpcy5mcm9tTWV0aG9kcyA9IGNsYXNzVHlwZS5hbGxNZXRob2RzLmZpbHRlcih4ID0+XG4gICAgICB4LnN0YXRpY1xuICAgICAgICAmJiB4Lm5hbWUubWF0Y2goYF4ke3RoaXMucHJlZml4fVtBLVpdYClcbiAgICAgICAgJiYgeC5uYW1lICE9PSB0aGlzLmZyb21BdHRyaWJ1dGVzTWV0aG9kTmFtZSk7XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzU3RydWN0RnFuID0gYCR7Y2xhc3NUeXBlLmZxbn1BdHRyaWJ1dGVzYDtcbiAgICBjb25zdCBhdHRyaWJ1dGVzU3RydWN0ID0gc3lzLnRyeUZpbmRGcW4oYXR0cmlidXRlc1N0cnVjdEZxbik7XG4gICAgaWYgKGF0dHJpYnV0ZXNTdHJ1Y3QpIHtcbiAgICAgIGlmICghYXR0cmlidXRlc1N0cnVjdC5pc0ludGVyZmFjZVR5cGUoKSB8fCAhYXR0cmlidXRlc1N0cnVjdC5pc0RhdGFUeXBlKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRyaWJ1dGVzIHR5cGUgJHthdHRyaWJ1dGVzU3RydWN0RnFufSBtdXN0IGJlIGFuIGludGVyZmFjZSBzdHJ1Y3RgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hdHRyaWJ1dGVzU3RydWN0TmFtZSA9IGF0dHJpYnV0ZXNTdHJ1Y3RGcW47XG4gICAgdGhpcy5hdHRyaWJ1dGVzU3RydWN0ID0gYXR0cmlidXRlc1N0cnVjdDtcbiAgfVxufVxuXG5pbXBvcnRzTGludGVyLmFkZCh7XG4gIGNvZGU6ICduby1zdGF0aWMtaW1wb3J0JyxcbiAgbWVzc2FnZTogJ3N0YXRpYyBcImltcG9ydFwiIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgXCJmcm9tQXR0cmlidXRlc1wiIChzZWUgZ3VpZGVsaW5lcyknLFxuICBldmFsOiBlID0+IHtcbiAgICBjb25zdCBoYXNJbXBvcnQgPSBlLmN0eC5yZXNvdXJjZS5jb25zdHJ1Y3QuY2xhc3NUeXBlLmFsbE1ldGhvZHMuZmluZCh4ID0+IHguc3RhdGljICYmIHgubmFtZSA9PT0gJ2ltcG9ydCcpO1xuICAgIGUuYXNzZXJ0KCFoYXNJbXBvcnQsIGUuY3R4LnJlc291cmNlLmZxbiArICcuaW1wb3J0Jyk7XG4gIH0sXG59KTtcblxuaW1wb3J0c0xpbnRlci5hZGQoe1xuICBjb2RlOiAnZnJvbS1tZXRob2QnLFxuICBtZXNzYWdlOiAncmVzb3VyY2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3Qgb25lIFwiZnJvbVh4eFwiIHN0YXRpYyBtZXRob2Qgb3IgXCJmcm9tWHh4QXR0cmlidXRlc1wiJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgLy8gbm8gYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBvbiB0aGUgaW50ZXJmYWNlLCBzbyB3ZSBkb24ndCBleHBlY3QgYW55IFwiZnJvbVwiIG1ldGhvZHMuXG4gICAgaWYgKCFlLmN0eC5yZXNvdXJjZS5hdHRyaWJ1dGVzLnNvbWUoYSA9PiBhLnNpdGUgPT09IEF0dHJpYnV0ZVNpdGUuSW50ZXJmYWNlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUuYXNzZXJ0KGUuY3R4LmZyb21NZXRob2RzLmxlbmd0aCA+IDAgfHwgZS5jdHguZnJvbUF0dHJpYnV0ZXNNZXRob2QsIGUuY3R4LnJlc291cmNlLmZxbik7XG4gIH0sXG59KTtcblxuaW1wb3J0c0xpbnRlci5hZGQoe1xuICBjb2RlOiAnZnJvbS1zaWduYXR1cmUnLFxuICBtZXNzYWdlOiAnaW52YWxpZCBtZXRob2Qgc2lnbmF0dXJlIGZvciBmcm9tWHh4IG1ldGhvZC4gJyArIGJhc2VDb25zdHJ1Y3RBZGRlbmR1bSgpLFxuICBldmFsOiBlID0+IHtcbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBlLmN0eC5mcm9tTWV0aG9kcykge1xuXG4gICAgICAvLyBcImZyb21Sb2xlQXJuXCIgPT4gXCJyb2xlQXJuXCJcbiAgICAgIGNvbnN0IGFyZ05hbWUgPSBlLmN0eC5yZXNvdXJjZS5iYXNlbmFtZVswXS50b0xvY2FsZUxvd2VyQ2FzZSgpICsgbWV0aG9kLm5hbWUuc2xpY2UoJ2Zyb20nLmxlbmd0aCArIDEpO1xuXG4gICAgICBjb25zdCBiYXNlVHlwZSA9IGUuY3R4LnJlc291cmNlLmNvcmUuYmFzZUNvbnN0cnVjdENsYXNzO1xuICAgICAgZS5hc3NlcnRTaWduYXR1cmUobWV0aG9kLCB7XG4gICAgICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgICAgICB7IG5hbWU6ICdzY29wZScsIHR5cGU6IGJhc2VUeXBlIH0sXG4gICAgICAgICAgeyBuYW1lOiAnaWQnLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgIHsgbmFtZTogYXJnTmFtZSwgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcmV0dXJuczogZS5jdHgucmVzb3VyY2UuY29uc3RydWN0LmludGVyZmFjZVR5cGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG59KTtcblxuaW1wb3J0c0xpbnRlci5hZGQoe1xuICBjb2RlOiAnZnJvbS1hdHRyaWJ1dGVzJyxcbiAgbWVzc2FnZTogJ3N0YXRpYyBmcm9tWHh4QXR0cmlidXRlcyBpcyBhIGZhY3Rvcnkgb2YgSVh4eCBmcm9tIGl0cyBwcmltaXRpdmUgYXR0cmlidXRlcy4gJyArIGJhc2VDb25zdHJ1Y3RBZGRlbmR1bSgpLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LmZyb21BdHRyaWJ1dGVzTWV0aG9kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVR5cGUgPSBlLmN0eC5yZXNvdXJjZS5jb3JlLmJhc2VDb25zdHJ1Y3RDbGFzcztcbiAgICBlLmFzc2VydFNpZ25hdHVyZShlLmN0eC5mcm9tQXR0cmlidXRlc01ldGhvZCwge1xuICAgICAgcGFyYW1ldGVyczogW1xuICAgICAgICB7IG5hbWU6ICdzY29wZScsIHR5cGU6IGJhc2VUeXBlIH0sXG4gICAgICAgIHsgbmFtZTogJ2lkJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgeyBuYW1lOiAnYXR0cnMnLCB0eXBlOiBlLmN0eC5hdHRyaWJ1dGVzU3RydWN0IH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9LFxufSk7XG5cbmltcG9ydHNMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2Zyb20tYXR0cmlidXRlcy1zdHJ1Y3QnLFxuICBtZXNzYWdlOiAncmVzb3VyY2Ugc2hvdWxkIGhhdmUgYW4gWHh4QXR0cmlidXRlcyBzdHJ1Y3QnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LmZyb21BdHRyaWJ1dGVzTWV0aG9kKSB7XG4gICAgICByZXR1cm47IC8vIG5vIFwiZnJvbUF0dHJpYnV0ZXNcIiBtZXRob2RcbiAgICB9XG5cbiAgICBlLmFzc2VydChlLmN0eC5hdHRyaWJ1dGVzU3RydWN0LCBlLmN0eC5hdHRyaWJ1dGVzU3RydWN0TmFtZSk7XG4gIH0sXG59KTtcblxuZnVuY3Rpb24gYmFzZUNvbnN0cnVjdEFkZGVuZHVtKCk6IHN0cmluZyB7XG4gIGlmICghcHJvY2Vzcy5lbnYuQVdTTElOVF9CQVNFX0NPTlNUUlVDVCkge1xuICAgIHJldHVybiAnSWYgdGhlIGNvbnN0cnVjdCBpcyB1c2luZyB0aGUgXCJjb25zdHJ1Y3RzXCIgbW9kdWxlLCBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFwiQVdTTElOVF9CQVNFX0NPTlNUUlVDVFwiIGFuZCByZS1ydW4nO1xuICB9XG4gIHJldHVybiAnJztcbn1cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQStEO0FBQy9ELHNDQUFtQztBQUV0QixRQUFBLGFBQWEsR0FBRyxJQUFJLGVBQU0sQ0FBb0IsUUFBUSxDQUFDLEVBQUUsQ0FBQyw2QkFBa0I7S0FDdEYsT0FBTyxDQUFDLFFBQVEsQ0FBQztLQUNqQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsbUVBQW1FO0tBQ3pILEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXZELE1BQU0saUJBQWlCO0lBUU87SUFQWixXQUFXLENBQW1CO0lBQzlCLE1BQU0sQ0FBUztJQUNmLHdCQUF3QixDQUFTO0lBQ2pDLG9CQUFvQixDQUFrQjtJQUN0QyxvQkFBb0IsQ0FBUztJQUM3QixnQkFBZ0IsQ0FBeUI7SUFFekQsWUFBNEIsUUFBNEI7UUFBNUIsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDdEQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQy9DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLFlBQVksQ0FBQztRQUMzRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXJH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LEVBQUU7YUFDaEQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgscUJBQWEsQ0FBQyxHQUFHLENBQUM7SUFDaEIsSUFBSSxFQUFFLHdCQUF3QjtJQUM5QixPQUFPLEVBQUUsOENBQThDO0lBQ3ZELElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLDZCQUE2QjtRQUN2QyxDQUFDO1FBRUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsU0FBUyxxQkFBcUI7SUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN4QyxPQUFPLHFIQUFxSCxDQUFDO0lBQy9ILENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVTaXRlLCBSZXNvdXJjZVJlZmxlY3Rpb24gfSBmcm9tICcuL3Jlc291cmNlJztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmV4cG9ydCBjb25zdCBpbXBvcnRzTGludGVyID0gbmV3IExpbnRlcjxJbXBvcnRzUmVmbGVjdGlvbj4oYXNzZW1ibHkgPT4gUmVzb3VyY2VSZWZsZWN0aW9uXG4gIC5maW5kQWxsKGFzc2VtYmx5KVxuICAuZmlsdGVyKHIgPT4gci5jb25zdHJ1Y3QgJiYgci5jb25zdHJ1Y3QuaW50ZXJmYWNlVHlwZSkgLy8gb25seSByZXNvdXJjZXMgdGhhdCBoYXZlIGFuIGludGVyZmFjZSBjYW4gaGF2ZSBcImZyb21YeHhcIiBtZXRob2RzXG4gIC5tYXAoY29uc3RydWN0ID0+IG5ldyBJbXBvcnRzUmVmbGVjdGlvbihjb25zdHJ1Y3QpKSk7XG5cbmNsYXNzIEltcG9ydHNSZWZsZWN0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGZyb21NZXRob2RzOiByZWZsZWN0Lk1ldGhvZFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBmcm9tQXR0cmlidXRlc01ldGhvZE5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZyb21BdHRyaWJ1dGVzTWV0aG9kPzogcmVmbGVjdC5NZXRob2Q7XG4gIHB1YmxpYyByZWFkb25seSBhdHRyaWJ1dGVzU3RydWN0TmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0cmlidXRlc1N0cnVjdD86IHJlZmxlY3QuSW50ZXJmYWNlVHlwZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IFJlc291cmNlUmVmbGVjdGlvbikge1xuICAgIGNvbnN0IHN5cyA9IHJlc291cmNlLnN5cztcbiAgICB0aGlzLnByZWZpeCA9IGBmcm9tJHtyZXNvdXJjZS5iYXNlbmFtZX1gO1xuICAgIGNvbnN0IGNsYXNzVHlwZSA9IHJlc291cmNlLmNvbnN0cnVjdC5jbGFzc1R5cGU7XG4gICAgdGhpcy5mcm9tQXR0cmlidXRlc01ldGhvZE5hbWUgPSBgJHt0aGlzLnByZWZpeH1BdHRyaWJ1dGVzYDtcbiAgICB0aGlzLmZyb21BdHRyaWJ1dGVzTWV0aG9kID0gY2xhc3NUeXBlLmFsbE1ldGhvZHMuZmluZCh4ID0+IHgubmFtZSA9PT0gdGhpcy5mcm9tQXR0cmlidXRlc01ldGhvZE5hbWUpO1xuXG4gICAgdGhpcy5mcm9tTWV0aG9kcyA9IGNsYXNzVHlwZS5hbGxNZXRob2RzLmZpbHRlcih4ID0+XG4gICAgICB4LnN0YXRpY1xuICAgICAgICAmJiB4Lm5hbWUubWF0Y2goYF4ke3RoaXMucHJlZml4fVtBLVpdYClcbiAgICAgICAgJiYgeC5uYW1lICE9PSB0aGlzLmZyb21BdHRyaWJ1dGVzTWV0aG9kTmFtZSk7XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzU3RydWN0RnFuID0gYCR7Y2xhc3NUeXBlLmZxbn1BdHRyaWJ1dGVzYDtcbiAgICBjb25zdCBhdHRyaWJ1dGVzU3RydWN0ID0gc3lzLnRyeUZpbmRGcW4oYXR0cmlidXRlc1N0cnVjdEZxbik7XG4gICAgaWYgKGF0dHJpYnV0ZXNTdHJ1Y3QpIHtcbiAgICAgIGlmICghYXR0cmlidXRlc1N0cnVjdC5pc0ludGVyZmFjZVR5cGUoKSB8fCAhYXR0cmlidXRlc1N0cnVjdC5pc0RhdGFUeXBlKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRyaWJ1dGVzIHR5cGUgJHthdHRyaWJ1dGVzU3RydWN0RnFufSBtdXN0IGJlIGFuIGludGVyZmFjZSBzdHJ1Y3RgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hdHRyaWJ1dGVzU3RydWN0TmFtZSA9IGF0dHJpYnV0ZXNTdHJ1Y3RGcW47XG4gICAgdGhpcy5hdHRyaWJ1dGVzU3RydWN0ID0gYXR0cmlidXRlc1N0cnVjdDtcbiAgfVxufVxuXG5pbXBvcnRzTGludGVyLmFkZCh7XG4gIGNvZGU6ICduby1zdGF0aWMtaW1wb3J0JyxcbiAgbWVzc2FnZTogJ3N0YXRpYyBcImltcG9ydFwiIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgXCJmcm9tQXR0cmlidXRlc1wiIChzZWUgZ3VpZGVsaW5lcyknLFxuICBldmFsOiBlID0+IHtcbiAgICBjb25zdCBoYXNJbXBvcnQgPSBlLmN0eC5yZXNvdXJjZS5jb25zdHJ1Y3QuY2xhc3NUeXBlLmFsbE1ldGhvZHMuZmluZCh4ID0+IHguc3RhdGljICYmIHgubmFtZSA9PT0gJ2ltcG9ydCcpO1xuICAgIGUuYXNzZXJ0KCFoYXNJbXBvcnQsIGUuY3R4LnJlc291cmNlLmZxbiArICcuaW1wb3J0Jyk7XG4gIH0sXG59KTtcblxuaW1wb3J0c0xpbnRlci5hZGQoe1xuICBjb2RlOiAnZnJvbS1tZXRob2QnLFxuICBtZXNzYWdlOiAncmVzb3VyY2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3Qgb25lIFwiZnJvbVh4eFwiIHN0YXRpYyBtZXRob2Qgb3IgXCJmcm9tWHh4QXR0cmlidXRlc1wiJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgLy8gbm8gYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBvbiB0aGUgaW50ZXJmYWNlLCBzbyB3ZSBkb24ndCBleHBlY3QgYW55IFwiZnJvbVwiIG1ldGhvZHMuXG4gICAgaWYgKCFlLmN0eC5yZXNvdXJjZS5hdHRyaWJ1dGVzLnNvbWUoYSA9PiBhLnNpdGUgPT09IEF0dHJpYnV0ZVNpdGUuSW50ZXJmYWNlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUuYXNzZXJ0KGUuY3R4LmZyb21NZXRob2RzLmxlbmd0aCA+IDAgfHwgZS5jdHguZnJvbUF0dHJpYnV0ZXNNZXRob2QsIGUuY3R4LnJlc291cmNlLmZxbik7XG4gIH0sXG59KTtcblxuaW1wb3J0c0xpbnRlci5hZGQoe1xuICBjb2RlOiAnZnJvbS1zaWduYXR1cmUnLFxuICBtZXNzYWdlOiAnaW52YWxpZCBtZXRob2Qgc2lnbmF0dXJlIGZvciBmcm9tWHh4IG1ldGhvZC4gJyArIGJhc2VDb25zdHJ1Y3RBZGRlbmR1bSgpLFxuICBldmFsOiBlID0+IHtcbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBlLmN0eC5mcm9tTWV0aG9kcykge1xuICAgICAgLy8gXCJmcm9tUm9sZUFyblwiID0+IFwicm9sZUFyblwiXG4gICAgICBjb25zdCBhcmdOYW1lID0gZS5jdHgucmVzb3VyY2UuYmFzZW5hbWVbMF0udG9Mb2NhbGVMb3dlckNhc2UoKSArIG1ldGhvZC5uYW1lLnNsaWNlKCdmcm9tJy5sZW5ndGggKyAxKTtcblxuICAgICAgY29uc3QgYmFzZVR5cGUgPSBlLmN0eC5yZXNvdXJjZS5jb3JlLmJhc2VDb25zdHJ1Y3RDbGFzcztcbiAgICAgIGUuYXNzZXJ0U2lnbmF0dXJlKG1ldGhvZCwge1xuICAgICAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnc2NvcGUnLCB0eXBlOiBiYXNlVHlwZSB9LFxuICAgICAgICAgIHsgbmFtZTogJ2lkJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICB7IG5hbWU6IGFyZ05hbWUsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHJldHVybnM6IGUuY3R4LnJlc291cmNlLmNvbnN0cnVjdC5pbnRlcmZhY2VUeXBlLFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxufSk7XG5cbmltcG9ydHNMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2Zyb20tYXR0cmlidXRlcycsXG4gIG1lc3NhZ2U6ICdzdGF0aWMgZnJvbVh4eEF0dHJpYnV0ZXMgaXMgYSBmYWN0b3J5IG9mIElYeHggZnJvbSBpdHMgcHJpbWl0aXZlIGF0dHJpYnV0ZXMuICcgKyBiYXNlQ29uc3RydWN0QWRkZW5kdW0oKSxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5mcm9tQXR0cmlidXRlc01ldGhvZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VUeXBlID0gZS5jdHgucmVzb3VyY2UuY29yZS5iYXNlQ29uc3RydWN0Q2xhc3M7XG4gICAgZS5hc3NlcnRTaWduYXR1cmUoZS5jdHguZnJvbUF0dHJpYnV0ZXNNZXRob2QsIHtcbiAgICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgICAgeyBuYW1lOiAnc2NvcGUnLCB0eXBlOiBiYXNlVHlwZSB9LFxuICAgICAgICB7IG5hbWU6ICdpZCcsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgIHsgbmFtZTogJ2F0dHJzJywgdHlwZTogZS5jdHguYXR0cmlidXRlc1N0cnVjdCB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG5pbXBvcnRzTGludGVyLmFkZCh7XG4gIGNvZGU6ICdmcm9tLWF0dHJpYnV0ZXMtc3RydWN0JyxcbiAgbWVzc2FnZTogJ3Jlc291cmNlIHNob3VsZCBoYXZlIGFuIFh4eEF0dHJpYnV0ZXMgc3RydWN0JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5mcm9tQXR0cmlidXRlc01ldGhvZCkge1xuICAgICAgcmV0dXJuOyAvLyBubyBcImZyb21BdHRyaWJ1dGVzXCIgbWV0aG9kXG4gICAgfVxuXG4gICAgZS5hc3NlcnQoZS5jdHguYXR0cmlidXRlc1N0cnVjdCwgZS5jdHguYXR0cmlidXRlc1N0cnVjdE5hbWUpO1xuICB9LFxufSk7XG5cbmZ1bmN0aW9uIGJhc2VDb25zdHJ1Y3RBZGRlbmR1bSgpOiBzdHJpbmcge1xuICBpZiAoIXByb2Nlc3MuZW52LkFXU0xJTlRfQkFTRV9DT05TVFJVQ1QpIHtcbiAgICByZXR1cm4gJ0lmIHRoZSBjb25zdHJ1Y3QgaXMgdXNpbmcgdGhlIFwiY29uc3RydWN0c1wiIG1vZHVsZSwgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBcIkFXU0xJTlRfQkFTRV9DT05TVFJVQ1RcIiBhbmQgcmUtcnVuJztcbiAgfVxuICByZXR1cm4gJyc7XG59XG4iXX0=
@@ -66,7 +66,6 @@ importsLinter.add({
66
66
  message: 'invalid method signature for fromXxx method. ' + baseConstructAddendum(),
67
67
  eval: e => {
68
68
  for (const method of e.ctx.fromMethods) {
69
-
70
69
  // "fromRoleArn" => "roleArn"
71
70
  const argName = e.ctx.resource.basename[0].toLocaleLowerCase() + method.name.slice('from'.length + 1);
72
71
 
@@ -17,4 +17,4 @@ const public_static_properties_1 = require("./public-static-properties");
17
17
  const resource_1 = require("./resource");
18
18
  const linter_1 = require("../linter");
19
19
  exports.ALL_RULES_LINTER = new linter_1.AggregateLinter(module_1.moduleLinter, construct_1.constructLinter, cfn_resource_1.cfnResourceLinter, resource_1.resourceLinter, api_1.apiLinter, imports_1.importsLinter, attributes_1.attributesLinter, exports_1.exportsLinter, cloudwatch_events_1.eventsLinter, integrations_1.integrationLinter, no_unused_type_1.noUnusedTypeLinter, durations_1.durationsLinter, public_static_properties_1.publicStaticPropertiesLinter, docs_1.docsLinter);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBa0M7QUFDbEMsNkNBQWdEO0FBQ2hELGlEQUFtRDtBQUNuRCwyREFBbUQ7QUFDbkQsMkNBQThDO0FBQzlDLGlDQUFvQztBQUNwQywyQ0FBOEM7QUFDOUMsdUNBQTBDO0FBQzFDLHVDQUEwQztBQUMxQyxpREFBbUQ7QUFDbkQscUNBQXdDO0FBQ3hDLHFEQUFzRDtBQUN0RCx5RUFBMEU7QUFDMUUseUNBQTRDO0FBQzVDLHNDQUE0QztBQUUvQixRQUFBLGdCQUFnQixHQUFHLElBQUksd0JBQWUsQ0FDakQscUJBQVksRUFDWiwyQkFBZSxFQUNmLGdDQUFpQixFQUNqQix5QkFBYyxFQUNkLGVBQVMsRUFDVCx1QkFBYSxFQUNiLDZCQUFnQixFQUNoQix1QkFBYSxFQUNiLGdDQUFZLEVBQ1osZ0NBQWlCLEVBQ2pCLG1DQUFrQixFQUNsQiwyQkFBZSxFQUNmLHVEQUE0QixFQUM1QixpQkFBVSxDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcGlMaW50ZXIgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBhdHRyaWJ1dGVzTGludGVyIH0gZnJvbSAnLi9hdHRyaWJ1dGVzJztcbmltcG9ydCB7IGNmblJlc291cmNlTGludGVyIH0gZnJvbSAnLi9jZm4tcmVzb3VyY2UnO1xuaW1wb3J0IHsgZXZlbnRzTGludGVyIH0gZnJvbSAnLi9jbG91ZHdhdGNoLWV2ZW50cyc7XG5pbXBvcnQgeyBjb25zdHJ1Y3RMaW50ZXIgfSBmcm9tICcuL2NvbnN0cnVjdCc7XG5pbXBvcnQgeyBkb2NzTGludGVyIH0gZnJvbSAnLi9kb2NzJztcbmltcG9ydCB7IGR1cmF0aW9uc0xpbnRlciB9IGZyb20gJy4vZHVyYXRpb25zJztcbmltcG9ydCB7IGV4cG9ydHNMaW50ZXIgfSBmcm9tICcuL2V4cG9ydHMnO1xuaW1wb3J0IHsgaW1wb3J0c0xpbnRlciB9IGZyb20gJy4vaW1wb3J0cyc7XG5pbXBvcnQgeyBpbnRlZ3JhdGlvbkxpbnRlciB9IGZyb20gJy4vaW50ZWdyYXRpb25zJztcbmltcG9ydCB7IG1vZHVsZUxpbnRlciB9IGZyb20gJy4vbW9kdWxlJztcbmltcG9ydCB7IG5vVW51c2VkVHlwZUxpbnRlciB9IGZyb20gJy4vbm8tdW51c2VkLXR5cGUnO1xuaW1wb3J0IHsgcHVibGljU3RhdGljUHJvcGVydGllc0xpbnRlciB9IGZyb20gJy4vcHVibGljLXN0YXRpYy1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IHJlc291cmNlTGludGVyIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBBZ2dyZWdhdGVMaW50ZXIgfSBmcm9tICcuLi9saW50ZXInO1xuXG5leHBvcnQgY29uc3QgQUxMX1JVTEVTX0xJTlRFUiA9IG5ldyBBZ2dyZWdhdGVMaW50ZXIoXG4gIG1vZHVsZUxpbnRlcixcbiAgY29uc3RydWN0TGludGVyLFxuICBjZm5SZXNvdXJjZUxpbnRlcixcbiAgcmVzb3VyY2VMaW50ZXIsXG4gIGFwaUxpbnRlcixcbiAgaW1wb3J0c0xpbnRlcixcbiAgYXR0cmlidXRlc0xpbnRlcixcbiAgZXhwb3J0c0xpbnRlcixcbiAgZXZlbnRzTGludGVyLFxuICBpbnRlZ3JhdGlvbkxpbnRlcixcbiAgbm9VbnVzZWRUeXBlTGludGVyLFxuICBkdXJhdGlvbnNMaW50ZXIsXG4gIHB1YmxpY1N0YXRpY1Byb3BlcnRpZXNMaW50ZXIsXG4gIGRvY3NMaW50ZXIsXG4pOyJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBa0M7QUFDbEMsNkNBQWdEO0FBQ2hELGlEQUFtRDtBQUNuRCwyREFBbUQ7QUFDbkQsMkNBQThDO0FBQzlDLGlDQUFvQztBQUNwQywyQ0FBOEM7QUFDOUMsdUNBQTBDO0FBQzFDLHVDQUEwQztBQUMxQyxpREFBbUQ7QUFDbkQscUNBQXdDO0FBQ3hDLHFEQUFzRDtBQUN0RCx5RUFBMEU7QUFDMUUseUNBQTRDO0FBQzVDLHNDQUE0QztBQUUvQixRQUFBLGdCQUFnQixHQUFHLElBQUksd0JBQWUsQ0FDakQscUJBQVksRUFDWiwyQkFBZSxFQUNmLGdDQUFpQixFQUNqQix5QkFBYyxFQUNkLGVBQVMsRUFDVCx1QkFBYSxFQUNiLDZCQUFnQixFQUNoQix1QkFBYSxFQUNiLGdDQUFZLEVBQ1osZ0NBQWlCLEVBQ2pCLG1DQUFrQixFQUNsQiwyQkFBZSxFQUNmLHVEQUE0QixFQUM1QixpQkFBVSxDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcGlMaW50ZXIgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBhdHRyaWJ1dGVzTGludGVyIH0gZnJvbSAnLi9hdHRyaWJ1dGVzJztcbmltcG9ydCB7IGNmblJlc291cmNlTGludGVyIH0gZnJvbSAnLi9jZm4tcmVzb3VyY2UnO1xuaW1wb3J0IHsgZXZlbnRzTGludGVyIH0gZnJvbSAnLi9jbG91ZHdhdGNoLWV2ZW50cyc7XG5pbXBvcnQgeyBjb25zdHJ1Y3RMaW50ZXIgfSBmcm9tICcuL2NvbnN0cnVjdCc7XG5pbXBvcnQgeyBkb2NzTGludGVyIH0gZnJvbSAnLi9kb2NzJztcbmltcG9ydCB7IGR1cmF0aW9uc0xpbnRlciB9IGZyb20gJy4vZHVyYXRpb25zJztcbmltcG9ydCB7IGV4cG9ydHNMaW50ZXIgfSBmcm9tICcuL2V4cG9ydHMnO1xuaW1wb3J0IHsgaW1wb3J0c0xpbnRlciB9IGZyb20gJy4vaW1wb3J0cyc7XG5pbXBvcnQgeyBpbnRlZ3JhdGlvbkxpbnRlciB9IGZyb20gJy4vaW50ZWdyYXRpb25zJztcbmltcG9ydCB7IG1vZHVsZUxpbnRlciB9IGZyb20gJy4vbW9kdWxlJztcbmltcG9ydCB7IG5vVW51c2VkVHlwZUxpbnRlciB9IGZyb20gJy4vbm8tdW51c2VkLXR5cGUnO1xuaW1wb3J0IHsgcHVibGljU3RhdGljUHJvcGVydGllc0xpbnRlciB9IGZyb20gJy4vcHVibGljLXN0YXRpYy1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IHJlc291cmNlTGludGVyIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBBZ2dyZWdhdGVMaW50ZXIgfSBmcm9tICcuLi9saW50ZXInO1xuXG5leHBvcnQgY29uc3QgQUxMX1JVTEVTX0xJTlRFUiA9IG5ldyBBZ2dyZWdhdGVMaW50ZXIoXG4gIG1vZHVsZUxpbnRlcixcbiAgY29uc3RydWN0TGludGVyLFxuICBjZm5SZXNvdXJjZUxpbnRlcixcbiAgcmVzb3VyY2VMaW50ZXIsXG4gIGFwaUxpbnRlcixcbiAgaW1wb3J0c0xpbnRlcixcbiAgYXR0cmlidXRlc0xpbnRlcixcbiAgZXhwb3J0c0xpbnRlcixcbiAgZXZlbnRzTGludGVyLFxuICBpbnRlZ3JhdGlvbkxpbnRlcixcbiAgbm9VbnVzZWRUeXBlTGludGVyLFxuICBkdXJhdGlvbnNMaW50ZXIsXG4gIHB1YmxpY1N0YXRpY1Byb3BlcnRpZXNMaW50ZXIsXG4gIGRvY3NMaW50ZXIsXG4pO1xuIl19
@@ -29,4 +29,4 @@ export const ALL_RULES_LINTER = new AggregateLinter(
29
29
  durationsLinter,
30
30
  publicStaticPropertiesLinter,
31
31
  docsLinter,
32
- );
32
+ );
@@ -22,4 +22,4 @@ exports.publicStaticPropertiesLinter.add({
22
22
  e.assert(UPPER_SNAKE_CASE_ALLOWED_PATTERN.test(name), `${e.ctx.parentType.fqn}.${name}`);
23
23
  },
24
24
  });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLXN0YXRpYy1wcm9wZXJ0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHVibGljLXN0YXRpYy1wcm9wZXJ0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNDQUFtQztBQUVuQyxNQUFNLGdDQUFnQyxHQUFHLElBQUksTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFFeEUsUUFBQSw0QkFBNEIsR0FBRyxJQUFJLGVBQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBWSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxvQ0FBNEIsQ0FBQyxHQUFHLENBQUM7SUFDL0IsSUFBSSxFQUFFLDhCQUE4QjtJQUNwQyxPQUFPLEVBQUUsdURBQXVEO0lBQ2hFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmNvbnN0IFVQUEVSX1NOQUtFX0NBU0VfQUxMT1dFRF9QQVRURVJOID0gbmV3IFJlZ0V4cCgnXltBLVowLTldW0EtWjAtOV9dKltBLVowLTldKyQnKTtcblxuZXhwb3J0IGNvbnN0IHB1YmxpY1N0YXRpY1Byb3BlcnRpZXNMaW50ZXIgPSBuZXcgTGludGVyKGFzc2VtYmx5ID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PFByb3BlcnR5PigpO1xuICBmb3IgKGNvbnN0IGMgb2YgYXNzZW1ibHkuYWxsQ2xhc3Nlcykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgYy5hbGxQcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAocHJvcGVydHkuY29uc3QgJiYgcHJvcGVydHkuc3RhdGljKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHByb3BlcnR5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5wdWJsaWNTdGF0aWNQcm9wZXJ0aWVzTGludGVyLmFkZCh7XG4gIGNvZGU6ICdwdWJsaWMtc3RhdGljLXByb3BzLWFsbC1jYXBzJyxcbiAgbWVzc2FnZTogJ3B1YmxpYyBzdGF0aWMgcHJvcGVydGllcyBtdXN0IGJlIG5hbWVkIHVzaW5nIEFMTF9DQVBTJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGUuY3R4Lm5hbWU7XG4gICAgZS5hc3NlcnQoVVBQRVJfU05BS0VfQ0FTRV9BTExPV0VEX1BBVFRFUk4udGVzdChuYW1lKSwgYCR7ZS5jdHgucGFyZW50VHlwZS5mcW59LiR7bmFtZX1gKTtcbiAgfSxcbn0pOyJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLXN0YXRpYy1wcm9wZXJ0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHVibGljLXN0YXRpYy1wcm9wZXJ0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNDQUFtQztBQUVuQyxNQUFNLGdDQUFnQyxHQUFHLElBQUksTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFFeEUsUUFBQSw0QkFBNEIsR0FBRyxJQUFJLGVBQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBWSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxvQ0FBNEIsQ0FBQyxHQUFHLENBQUM7SUFDL0IsSUFBSSxFQUFFLDhCQUE4QjtJQUNwQyxPQUFPLEVBQUUsdURBQXVEO0lBQ2hFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmNvbnN0IFVQUEVSX1NOQUtFX0NBU0VfQUxMT1dFRF9QQVRURVJOID0gbmV3IFJlZ0V4cCgnXltBLVowLTldW0EtWjAtOV9dKltBLVowLTldKyQnKTtcblxuZXhwb3J0IGNvbnN0IHB1YmxpY1N0YXRpY1Byb3BlcnRpZXNMaW50ZXIgPSBuZXcgTGludGVyKGFzc2VtYmx5ID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PFByb3BlcnR5PigpO1xuICBmb3IgKGNvbnN0IGMgb2YgYXNzZW1ibHkuYWxsQ2xhc3Nlcykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgYy5hbGxQcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAocHJvcGVydHkuY29uc3QgJiYgcHJvcGVydHkuc3RhdGljKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHByb3BlcnR5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5wdWJsaWNTdGF0aWNQcm9wZXJ0aWVzTGludGVyLmFkZCh7XG4gIGNvZGU6ICdwdWJsaWMtc3RhdGljLXByb3BzLWFsbC1jYXBzJyxcbiAgbWVzc2FnZTogJ3B1YmxpYyBzdGF0aWMgcHJvcGVydGllcyBtdXN0IGJlIG5hbWVkIHVzaW5nIEFMTF9DQVBTJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGUuY3R4Lm5hbWU7XG4gICAgZS5hc3NlcnQoVVBQRVJfU05BS0VfQ0FTRV9BTExPV0VEX1BBVFRFUk4udGVzdChuYW1lKSwgYCR7ZS5jdHgucGFyZW50VHlwZS5mcW59LiR7bmFtZX1gKTtcbiAgfSxcbn0pO1xuIl19
@@ -22,4 +22,4 @@ publicStaticPropertiesLinter.add({
22
22
  const name = e.ctx.name;
23
23
  e.assert(UPPER_SNAKE_CASE_ALLOWED_PATTERN.test(name), `${e.ctx.parentType.fqn}.${name}`);
24
24
  },
25
- });
25
+ });
@@ -251,7 +251,7 @@ function tryResolveCfnResource(resourceClass) {
251
251
  }
252
252
  function guessResourceName(fqn) {
253
253
  // Strip any version suffixes e.g. 'TableV2' becomes 'Table'
254
- var match = /^(.+?)(V[0-9]+)?$/.exec(fqn);
254
+ let match = /^(.+?)(V[0-9]+)?$/.exec(fqn);
255
255
  if (!match) {
256
256
  return undefined;
257
257
  }
@@ -270,4 +270,4 @@ function guessResourceName(fqn) {
270
270
  }
271
271
  return `${org}::${ns}::${rs}`;
272
272
  }
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFBdUQ7QUFDdkQsMkNBQWtEO0FBQ2xELDZDQUF5QztBQUN6QyxpQ0FBbUM7QUFDbkMsa0NBQThDO0FBQzlDLHNDQUFtQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFRN0UsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHdDQUF1QixDQUFBO0lBQ3ZCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsNkJBQWIsYUFBYSxRQUd4QjtBQUVELE1BQWEsa0JBQWtCO0lBeUJEO0lBdkI1Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBMEI7UUFDOUMsSUFBSSxzQkFBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxDQUFDLENBQUMsNEJBQTRCO1FBQ3pDLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxVQUFVO2FBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHNCQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDMUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLCtCQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRWUsVUFBVSxDQUFjLENBQUMseUJBQXlCO0lBQ2xELEdBQUcsQ0FBUyxDQUFDLGlDQUFpQztJQUU5QyxRQUFRLENBQW1CO0lBQzNCLEdB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Y2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBDZm5SZXNvdXJjZVJlZmxlY3Rpb24gfSBmcm9tICcuL2Nmbi1yZXNvdXJjZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RSZWZsZWN0aW9uIH0gZnJvbSAnLi9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgQ29yZVR5cGVzIH0gZnJvbSAnLi9jb3JlLXR5cGVzJztcbmltcG9ydCB7IGdldERvY1RhZyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBjYW1lbGl6ZSwgcGFzY2FsaXplIH0gZnJvbSAnLi4vY2FzZSc7XG5pbXBvcnQgeyBMaW50ZXIgfSBmcm9tICcuLi9saW50ZXInO1xuXG5jb25zdCBHUkFOVF9SRVNVTFRfRlFOID0gJ0Bhd3MtY2RrL2F3cy1pYW0uR3JhbnQnO1xuXG5leHBvcnQgY29uc3QgcmVzb3VyY2VMaW50ZXIgPSBuZXcgTGludGVyKGEgPT4gUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRBbGwoYSkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIHNpdGU6IEF0dHJpYnV0ZVNpdGU7XG4gIHByb3BlcnR5OiByZWZsZWN0LlByb3BlcnR5O1xuICBjZm5BdHRyaWJ1dGVOYW1lczogc3RyaW5nW107IC8vIGJ1Y2tldEFyblxufVxuXG5leHBvcnQgZW51bSBBdHRyaWJ1dGVTaXRlIHtcbiAgSW50ZXJmYWNlID0gJ2ludGVyZmFjZScsXG4gIENsYXNzID0gJ2NsYXNzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlUmVmbGVjdGlvbiB7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGFsbCByZXNvdXJjZSBjb25zdHJ1Y3RzIChldmVyeXRoaW5nIHRoYXQgZXh0ZW5kcyBgY2RrLlJlc291cmNlYClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmluZEFsbChhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseSkge1xuICAgIGlmIChDb3JlVHlwZXMuaGFzQ29yZU1vZHVsZShhc3NlbWJseSkpIHtcbiAgICAgIHJldHVybiBbXTsgLy8gbm90IHBhcnQgb2YgdGhlIGRlcCBzdGFja1xuICAgIH1cblxuICAgIHJldHVybiBhc3NlbWJseS5hbGxDbGFzc2VzXG4gICAgICAuZmlsdGVyKGMgPT4gQ29yZVR5cGVzLmlzQ29uc3RydWN0Q2xhc3MoYykgJiYgQ29yZVR5cGVzLmlzUmVzb3VyY2VDbGFzcyhjKSlcbiAgICAgIC5tYXAoYyA9PiBuZXcgUmVzb3VyY2VSZWZsZWN0aW9uKG5ldyBDb25zdHJ1Y3RSZWZsZWN0aW9uKGMpKSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlW107IC8vIGFjdHVhbCBhdHRyaWJ1dGUgcHJvcHNcbiAgcHVibGljIHJlYWRvbmx5IGZxbjogc3RyaW5nOyAvLyBleHBlY3RlZCBmcW4gb2YgcmVzb3VyY2UgY2xhc3NcblxuICBwdWJsaWMgcmVhZG9ubHkgYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHk7XG4gIHB1YmxpYyByZWFkb25seSBzeXM6IHJlZmxlY3QuVHlwZVN5c3RlbTtcbiAgcHVibGljIHJlYWRvbmx5IGNmbjogQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgYmFzZW5hbWU6IHN0cmluZzsgLy8gaS5lLiBCdWNrZXRcbiAgcHVibGljIHJlYWRvbmx5IGNvcmU6IENvcmVUeXBlcztcbiAgcHVibGljIHJlYWRvbmx5IHBoeXNpY2FsTmFtZVByb3A/OiByZWZsZWN0LlByb3BlcnR5O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb25zdHJ1Y3Q6IENvbnN0cnVjdFJlZmxlY3Rpb24pIHtcbiAgICB0aGlzLmFzc2VtYmx5ID0gY29uc3RydWN0LmNsYXNzVHlwZS5hc3NlbWJseTtcbiAgICB0aGlzLnN5cyA9IHRoaXMuYXNzZW1ibHkuc3lzdGVtO1xuXG4gICAgY29uc3QgY2ZuID0gdHJ5UmVzb2x2ZUNmblJlc291cmNlKGNvbnN0cnVjdC5jbGFzc1R5cGUpO1xuICAgIGlmICghY2ZuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIEwxIGNsYXNzIGZvciBMMiAke2NvbnN0cnVjdC5mcW59LiBgICtcbiAgICAgICAgYElzIFwiJHtndWVzc1Jlc291cmNlTmFtZShjb25zdHJ1Y3QuZnFuKX1cIiBhbiBhY3R1YWwgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UuIGAgK1xuICAgICAgICAnSWYgbm90LCB1c2UgdGhlIFwiQHJlc291cmNlXCIgZG9jIHRhZyB0byBpbmRpY2F0ZSB0aGUgZnVsbCByZXNvdXJjZSBuYW1lIChlLmcuIFwiQHJlc291cmNlIEFXUzo6Um91dGU1Mzo6SG9zdGVkWm9uZVwiKScpO1xuICAgIH1cblxuICAgIHRoaXMuY29yZSA9IG5ldyBDb3JlVHlwZXModGhpcy5zeXMpO1xuICAgIHRoaXMuY2ZuID0gY2ZuO1xuICAgIHRoaXMuYmFzZW5hbWUgPSBjb25zdHJ1Y3QuY2xhc3NUeXBlLm5hbWU7XG4gICAgdGhpcy5mcW4gPSBjb25zdHJ1Y3QuZnFuO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHRoaXMuZmluZEF0dHJpYnV0ZVByb3BlcnRpZXMoKTtcbiAgICB0aGlzLnBoeXNpY2FsTmFtZVByb3AgPSB0aGlzLmZpbmRQaHlzaWNhbE5hbWVQcm9wKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQaHlzaWNhbE5hbWVQcm9wKCkge1xuICAgIGlmICghdGhpcy5jb25zdHJ1Y3QucHJvcHNUeXBlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IGNhbWVsaXplKHRoaXMuY2ZuLmJhc2VuYW1lKTtcblxuICAgIC8vIGlmIHJlc291cmNlIG5hbWUgZW5kcyB3aXRoIFwiTmFtZVwiIChlLmcuIERvbWFpbk5hbWUsIHRoZW4ganVzdCB1c2UgaXQgYXMtaXMsIG90aGVyd2lzZSBhcHBlbmQgXCJOYW1lXCIpXG4gICAgY29uc3QgcGh5c2ljYWxOYW1lUHJvcCA9IHJlc291cmNlTmFtZS5lbmRzV2l0aCgnTmFtZScpID8gcmVzb3VyY2VOYW1lIDogYCR7cmVzb3VyY2VOYW1lfU5hbWVgO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdC5wcm9wc1R5cGUuYWxsUHJvcGVydGllcy5maW5kKHggPT4geC5uYW1lID09PSBwaHlzaWNhbE5hbWVQcm9wKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgcHJvcGVydGllcyBhcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYmVnaW4gd2l0aCB0aGUgdHlwZSBuYW1lIChlLmcuIGJ1Y2tldFh4eCkuXG4gICAqXG4gICAqIFdlIGFyZSBhZGRpbmcgYSBgYnVja2V0UmVmYCBwcm9wZXJ0eSBhcyB3ZWxsIHRoYXQgd2UgZG9uJ3QgbmVjZXNzYXJpbHkgd2FudCB0byBob2xkIHRvIHRoZSBzYW1lIGxpbnRlclxuICAgKiBydWxlcyBhcyB0aGUgb3RoZXIgYXR0cmlidXRlcywgc28gd2UgZG9uJ3QgY29uc2lkZXIgaXQgYW4gYXR0cmlidXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBmaW5kQXR0cmlidXRlUHJvcGVydGllcygpOiBBdHRyaWJ1dGVbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PEF0dHJpYnV0ZT4oKTtcblxuICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLmNvbnN0cnVjdC5jbGFzc1R5cGUuYWxsUHJvcGVydGllcykge1xuICAgICAgaWYgKHAucHJvdGVjdGVkKSB7XG4gICAgICAgIGNvbnRpbnVlOyAvLyBza2lwIGFueSBwcm90ZWN0ZWQgcHJvcGVydGllc1xuICAgICAgfVxuICAgICAgaWYgKHAubmFtZS5lbmRzV2l0aCgnUmVmJykpIHtcbiAgICAgICAgY29udGludWU7IC8vIHNraXAgYW55IFwiUmVmXCIgcHJvcGVydGllcywgdGhlc2UgYXJlIG5vdCBhdHRyaWJ1dGVzXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJhc2VuYW1lID0gY2FtZWxpemUodGhpcy5jZm4uYmFzZW5hbWUpO1xuXG4gICAgICAvLyBhbiBhdHRyaWJ1dGUgcHJvcGVydHkgaXMgYSBwcm9wZXJ0eSB3aGljaCBzdGFydHMgd2l0aCB0aGUgdHlwZSBuYW1lXG4gICAgICAvLyAoZS5nLiBcImJ1Y2tldFh4eFwiKSBhbmQvb3IgaGFzIGFuIEBhdHRyaWJ1dGUgZG9jIHRhZy5cbiAgICAgIGNvbnN0IHRhZyA9IGdldERvY1RhZyhwLCAnYXR0cmlidXRlJyk7XG4gICAgICBpZiAoIXAubmFtZS5zdGFydHNXaXRoKGJhc2VuYW1lKSAmJiAhdGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2ZuQXR0cmlidXRlTmFtZXM7XG4gICAgICBpZiAodGFnICYmIHRhZyAhPT0gJ3RydWUnKSB7XG4gICAgICAgIC8vIGlmIHRoZXJlJ3MgYW4gYEBhdHRyaWJ1dGVgIGRvYyB0YWcgd2l0aCBhIHZhbHVlIG90aGVyIHRoYW4gXCJ0cnVlXCJcbiAgICAgICAgLy8gaXQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIENGTiBhdHRyaWJ1dGUgbmFtZSBpbnN0ZWFkIG9mIHRoZSBwcm9wZXJ0eSBuYW1lXG4gICAgICAgIC8vIG11bHRpcGxlIGF0dHJpYnV0ZSBuYW1lcyBjYW4gYmUgbGlzdGVkIGFzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3RcbiAgICAgICAgY2ZuQXR0cmlidXRlTmFtZXMgPSB0YWcuc3BsaXQoJywnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG9rYXksIHdlIGRvbid0IGhhdmUgYW4gZXhwbGljaXQgQ0ZOIGF0dHJpYnV0ZSBuYW1lLCBzbyB3ZSdsbCBndWVzcyBpdFxuICAgICAgICAvLyBmcm9tIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cblxuICAgICAgICBjb25zdCBuYW1lID0gcGFzY2FsaXplKHAubmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmNmbi5hdHRyaWJ1dGVOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogdGhlcmUgaXMgYSBjbG91ZGZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIGluIHRoZSBhdHRyaWJ1dGUgbmFtZVxuICAgICAgICAgIC8vIGZvciBleGFtcGxlICdSb2xlSWQnLlxuICAgICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzID0gW25hbWVdO1xuICAgICAgICB9IGVsc2UgaWYgKHAubmFtZS5zdGFydHNXaXRoKGJhc2VuYW1lKSkge1xuICAgICAgICAgIC8vIGJlZ2lucyB3aXRoIHRoZSByZXNvdXJjZSBuYW1lLCBqdXN0IHRyaW0gaXRcbiAgICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyA9IFtuYW1lLnN1YnN0cmluZyh0aGlzLmNmbi5iYXNlbmFtZS5sZW5ndGgpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB3ZSBjb3VsZG4ndCBkZXRlcm1pbmUgQ0ZOIGF0dHJpYnV0ZSBuYW1lLCBzbyB3ZSBkb24ndCBhY2NvdW50IGZvciB0aGlzXG4gICAgICAgICAgLy8gYXMgYW4gYXR0cmlidXRlLiB0aGlzIGNvdWxkIGJlLCBmb3IgZXhhbXBsZSwgd2hlbiBhIGNvbnN0cnVjdCBpbXBsZW1lbnRzXG4gICAgICAgICAgLy8gYW4gaW50ZXJmYWNlIHRoYXQgcmVwcmVzZW50cyBhbm90aGVyIHJlc291cmNlIChlLmcuIGBsYW1iZGEuQWxpYXNgIGltcGxlbWVudHMgYElGdW5jdGlvbmApLlxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrIGlmIHRoaXMgYXR0cmlidXRlIGlzIGRlZmluZWQgb24gYW4gaW50ZXJmYWNlIG9yIG9uIGEgY2xhc3NcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gZmluZERlY2xhcmF0aW9uU2l0ZShwKTtcbiAgICAgIGNvbnN0IHNpdGUgPSBwcm9wZXJ0eS5wYXJlbnRUeXBlLmlzSW50ZXJmYWNlVHlwZSgpID8gQXR0cmlidXRlU2l0ZS5JbnRlcmZhY2UgOiBBdHRyaWJ1dGVTaXRlLkNsYXNzO1xuXG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIHNpdGUsXG4gICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzLFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZERlY2xhcmF0aW9uU2l0ZShwcm9wOiByZWZsZWN0LlByb3BlcnR5KTogcmVmbGVjdC5Qcm9wZXJ0eSB7XG4gIGlmICghcHJvcC5vdmVycmlkZXMgfHwgKCFwcm9wLm92ZXJyaWRlcy5pc0NsYXNzVHlwZSgpICYmICFwcm9wLm92ZXJyaWRlcy5pc0ludGVyZmFjZVR5cGUoKSkpIHtcbiAgICBpZiAoIXByb3AucGFyZW50VHlwZS5pc0NsYXNzVHlwZSgpICYmICFwcm9wLnBhcmVudFR5cGUuaXNJbnRlcmZhY2VUeXBlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwYXJlbnQgdHlwZScpO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcDtcbiAgfVxuXG4gIGNvbnN0IG92ZXJyaWRlc1Byb3AgPSBwcm9wLm92ZXJyaWRlcy5hbGxQcm9wZXJ0aWVzLmZpbmQocCA9PiBwLm5hbWUgPT09IHByb3AubmFtZSk7XG4gIGlmICghb3ZlcnJpZGVzUHJvcCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcHJvcGVydHkgJHtwcm9wLm5hbWV9IGluIG92ZXJyaWRlIHNpdGUgJHtwcm9wLm92ZXJyaWRlcy5mcW59YCk7XG4gIH1cbiAgcmV0dXJuIGZpbmREZWNsYXJhdGlvblNpdGUob3ZlcnJpZGVzUHJvcCk7XG59XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1jbGFzcy1leHRlbmRzLXJlc291cmNlJyxcbiAgbWVzc2FnZTogJ3Jlc291cmNlIGNsYXNzZXMgbXVzdCBleHRlbmQgXCJjZGsuUmVzb3VyY2VcIiBkaXJlY3RseSBvciBpbmRpcmVjdGx5JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2VCYXNlID0gZS5jdHguc3lzLmZpbmRDbGFzcyhlLmN0eC5jb3JlLnJlc291cmNlQ2xhc3NGcW4pO1xuICAgIGUuYXNzZXJ0KGUuY3R4LmNvbnN0cnVjdC5jbGFzc1R5cGUuZXh0ZW5kcyhyZXNvdXJjZUJhc2UpLCBlLmN0eC5jb25zdHJ1Y3QuZnFuKTtcbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtaW50ZXJmYWNlJyxcbiAgd2FybmluZzogdHJ1ZSxcbiAgbWVzc2FnZTogJ2V2ZXJ5IHJlc291cmNlIG11c3QgaGF2ZSBhIHJlc291cmNlIGludGVyZmFjZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGUuYXNzZXJ0KGUuY3R4LmNvbnN0cnVjdC5pbnRlcmZhY2VUeXBlLCBlLmN0eC5jb25zdHJ1Y3QuZnFuKTtcbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtaW50ZXJmYWNlLWV4dGVuZHMtcmVzb3VyY2UnLFxuICBtZXNzYWdlOiAnY29uc3RydWN0IGludGVyZmFjZXMgb2YgQVdTIHJlc291cmNlcyBtdXN0IGV4dGVuZCBjZGsuSVJlc291cmNlJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2VJbnRlcmZhY2UgPSBlLmN0eC5jb25zdHJ1Y3QuaW50ZXJmYWNlVHlwZTtcbiAgICBpZiAoIXJlc291cmNlSW50ZXJmYWNlKSB7IHJldHVybjsgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VJbnRlcmZhY2VGcW4gPSBlLmN0eC5jb3JlLnJlc291cmNlSW50ZXJmYWNlRnFuO1xuICAgIGNvbnN0IGludGVyZmFjZUJhc2UgPSBlLmN0eC5zeXMuZmluZEludGVyZmFjZShyZXNvdXJjZUludGVyZmFjZUZxbik7XG4gICAgZS5hc3NlcnQocmVzb3VyY2VJbnRlcmZhY2UuZXh0ZW5kcyhpbnRlcmZhY2VCYXNlKSwgcmVzb3VyY2VJbnRlcmZhY2UuZnFuKTtcbiAgfSxcbn0pO1xuXG4vKlxuLy8gVGhpcyBydWxlIGlzIHRoZSB3b3JzdFxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWF0dHJpYnV0ZScsXG4gIG1lc3NhZ2U6XG4gICAgJ3Jlc291cmNlcyBtdXN0IHJlcHJlc2VudCBhbGwgY2xvdWRmb3JtYXRpb24gYXR0cmlidXRlcyBhcyBhdHRyaWJ1dGUgcHJvcGVydGllcy4gJyArXG4gICAgJ1wiQGF0dHJpYnV0ZSBBVFRSWyxBVFRSXVwiIGNhbiBiZSB1c2VkIHRvIHRhZyBub24tc3RhbmRhcmQgYXR0cmlidXRlIG5hbWVzLiAnICtcbiAgICAnbWlzc2luZyBwcm9wZXJ0eTonLFxuICBldmFsOiBlID0+IHtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgZS5jdHguY2ZuLmF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IGNhbWVsY2FzZShuYW1lKS5zdGFydHNXaXRoKGNhbWVsY2FzZShlLmN0eC5jZm4uYmFzZW5hbWUpKVxuICAgICAgICA/IGNhbWVsY2FzZShuYW1lKVxuICAgICAgICA6IGNhbWVsY2FzZShlLmN0eC5jZm4uYmFzZW5hbWUgKyBuYW1lKTtcblxuICAgICAgY29uc3QgZm91bmQgPSBlLmN0eC5hdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLmNmbkF0dHJpYnV0ZU5hbWVzLmluY2x1ZGVzKG5hbWUpKTtcbiAgICAgIGUuYXNzZXJ0KGZvdW5kLCBgJHtlLmN0eC5mcW59LiR7ZXhwZWN0ZWR9YCwgZXhwZWN0ZWQpO1xuICAgIH1cbiAgfSxcbn0pO1xuKi9cblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2dyYW50LXJlc3VsdCcsXG4gIG1lc3NhZ2U6IGBcImdyYW50XCIgbWV0aG9kIG11c3QgcmV0dXJuICR7R1JBTlRfUkVTVUxUX0ZRTn1gLFxuICBldmFsOiBlID0+IHtcbiAgICBjb25zdCBncmFudFJlc3VsdFR5cGUgPSBlLmN0eC5zeXMudHJ5RmluZEZxbihHUkFOVF9SRVNVTFRfRlFOKTtcblxuICAgIC8vIHRoaXMgaW1wbGllcyB0aGF0IHdlIGFyZSBhdCBhIGxvd2VyIGxheWVyIChpLmUuIEBhd3MtY2RrL2NvcmUpXG4gICAgaWYgKCFncmFudFJlc3VsdFR5cGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBncmFudE1ldGhvZHMgPSBlLmN0eC5jb25zdHJ1Y3QuY2xhc3NUeXBlLmFsbE1ldGhvZHMuZmlsdGVyKG0gPT4gbS5uYW1lLnN0YXJ0c1dpdGgoJ2dyYW50JykpO1xuXG4gICAgZm9yIChjb25zdCBncmFudE1ldGhvZCBvZiBncmFudE1ldGhvZHMpIHtcbiAgICAgIGUuYXNzZXJ0U2lnbmF0dXJlKGdyYW50TWV0aG9kLCB7XG4gICAgICAgIHJldHVybnM6IGdyYW50UmVzdWx0VHlwZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtcGh5c2ljYWwtbmFtZScsXG4gIG1lc3NhZ2U6ICdFdmVyeSBSZXNvdXJjZSBtdXN0IGhhdmUgYSBzaW5nbGUgcGh5c2ljYWwgbmFtZSBjb25zdHJ1Y3Rpb24gcHJvcGVydHksICcgK1xuICAgICd3aXRoIGEgbmFtZSB0aGF0IGlzIGFuIGVuZGluZyBzdWJzdHJpbmcgb2YgPGNmblJlc291cmNlPk5hbWUnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LmNvbnN0cnVjdC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgZS5hc3NlcnQoZS5jdHgucGh5c2ljYWxOYW1lUHJvcCwgZS5jdHguY29uc3RydWN0LnByb3BzRnFuKTtcbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtcGh5c2ljYWwtbmFtZS10eXBlJyxcbiAgbWVzc2FnZTogJ1RoZSB0eXBlIG9mIHRoZSBwaHlzaWNhbCBuYW1lIHByb3Agc2hvdWxkIGFsd2F5cyBiZSBhIFwic3RyaW5nXCInLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LnBoeXNpY2FsTmFtZVByb3ApIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgcHJvcCA9IGUuY3R4LnBoeXNpY2FsTmFtZVByb3A7XG4gICAgZS5hc3NlcnRUeXBlc0VxdWFsKGUuY3R4LnN5cywgcHJvcC50eXBlLCAnc3RyaW5nJywgYCR7ZS5jdHguY29uc3RydWN0LnByb3BzRnFufS4ke3Byb3AubmFtZX1gKTtcbiAgfSxcbn0pO1xuXG5mdW5jdGlvbiB0cnlSZXNvbHZlQ2ZuUmVzb3VyY2UocmVzb3VyY2VDbGFzczogcmVmbGVjdC5DbGFzc1R5cGUpOiBDZm5SZXNvdXJjZVJlZmxlY3Rpb24gfCB1bmRlZmluZWQge1xuICBjb25zdCBzeXMgPSByZXNvdXJjZUNsYXNzLnN5c3RlbTtcblxuICAvLyBpZiB0aGVyZSBpcyBhIEByZXNvdXJjZSBkb2MgdGFnLCBpdCB0YWtlcyBwcmVjZWRlY2VcbiAgY29uc3QgdGFnID0gcmVzb3VyY2VDbGFzcy5kb2NzLmN1c3RvbVRhZygncmVzb3VyY2UnKTtcbiAgaWYgKHRhZykge1xuICAgIHJldHVybiBDZm5SZXNvdXJjZVJlZmxlY3Rpb24uZmluZEJ5TmFtZShzeXMsIHRhZyk7XG4gIH1cblxuICAvLyBwYXJzZSB0aGUgRlFOIG9mIHRoZSBjbGFzcyBuYW1lIGFuZCBzZWUgaWYgd2UgY2FuIGZpbmQgYSBtYXRjaGluZyBDRk4gcmVzb3VyY2VcbiAgY29uc3QgZ3Vlc3MgPSBndWVzc1Jlc291cmNlTmFtZShyZXNvdXJjZUNsYXNzLmZxbik7XG4gIGlmIChndWVzcykge1xuICAgIGNvbnN0IGNmbiA9IENmblJlc291cmNlUmVmbGVjdGlvbi5maW5kQnlOYW1lKHN5cywgZ3Vlc3MpO1xuICAgIGlmIChjZm4pIHtcbiAgICAgIHJldHVybiBjZm47XG4gICAgfVxuICB9XG5cbiAgLy8gdHJ5IHRvIHJlc29sdmUgdGhyb3VnaCBhbmNlc3RvcnNcbiAgZm9yIChjb25zdCBiYXNlIG9mIHJlc291cmNlQ2xhc3MuYW5jZXN0b3JzKSB7XG4gICAgY29uc3QgcmV0ID0gdHJ5UmVzb2x2ZUNmblJlc291cmNlKGJhc2UpO1xuICAgIGlmIChyZXQpIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9XG5cbiAgLy8gZmFpbGVkIG1pc3JhYmx5XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGd1ZXNzUmVzb3VyY2VOYW1lKGZxbjogc3RyaW5nKSB7XG4gIC8vIFN0cmlwIGFueSB2ZXJzaW9uIHN1ZmZpeGVzIGUuZy4gJ1RhYmxlVjInIGJlY29tZXMgJ1RhYmxlJ1xuICB2YXIgbWF0Y2ggPSAvXiguKz8pKFZbMC05XSspPyQvLmV4ZWMoZnFuKTtcbiAgaWYgKCFtYXRjaCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IFssIHZlcnNpb25sZXNzXSA9IG1hdGNoO1xuXG4gIG1hdGNoID0gL2F3cy1jZGstbGliXFwuKFthLXpdKylfKFthLXowLTldKylcXC4oW0EtWl1bYS16QS1aMC05XSspLy5leGVjKHZlcnNpb25sZXNzKTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgLy8gQWxwaGEgbmFtZVxuICAgIG1hdGNoID0gL0Bhd3MtY2RrXFwvKFthLXpdKyktKFthLXowLTldKyktYWxwaGFcXC4oW0EtWl1bYS16QS1aMC05XSspLy5leGVjKGZxbik7XG4gIH1cblxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IFssIG9yZywgbnMsIHJzXSA9IG1hdGNoO1xuICBpZiAoIW9yZyB8fCAhbnMgfHwgIXJzKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICByZXR1cm4gYCR7b3JnfTo6JHtuc306OiR7cnN9YDtcbn1cbiJdfQ==
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFBdUQ7QUFDdkQsMkNBQWtEO0FBQ2xELDZDQUF5QztBQUN6QyxpQ0FBbUM7QUFDbkMsa0NBQThDO0FBQzlDLHNDQUFtQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFRN0UsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHdDQUF1QixDQUFBO0lBQ3ZCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsNkJBQWIsYUFBYSxRQUd4QjtBQUVELE1BQWEsa0JBQWtCO0lBd0JEO0lBdkI1Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBMEI7UUFDOUMsSUFBSSxzQkFBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxDQUFDLENBQUMsNEJBQTRCO1FBQ3pDLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxVQUFVO2FBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHNCQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDMUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLCtCQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRWUsVUFBVSxDQUFjLENBQUMseUJBQXlCO0lBQ2xELEdBQUcsQ0FBUyxDQUFDLGlDQUFpQztJQUU5QyxRQUFRLENBQW1CO0lBQzNCLEdB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Y2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBDZm5SZXNvdXJjZVJlZmxlY3Rpb24gfSBmcm9tICcuL2Nmbi1yZXNvdXJjZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RSZWZsZWN0aW9uIH0gZnJvbSAnLi9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgQ29yZVR5cGVzIH0gZnJvbSAnLi9jb3JlLXR5cGVzJztcbmltcG9ydCB7IGdldERvY1RhZyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBjYW1lbGl6ZSwgcGFzY2FsaXplIH0gZnJvbSAnLi4vY2FzZSc7XG5pbXBvcnQgeyBMaW50ZXIgfSBmcm9tICcuLi9saW50ZXInO1xuXG5jb25zdCBHUkFOVF9SRVNVTFRfRlFOID0gJ0Bhd3MtY2RrL2F3cy1pYW0uR3JhbnQnO1xuXG5leHBvcnQgY29uc3QgcmVzb3VyY2VMaW50ZXIgPSBuZXcgTGludGVyKGEgPT4gUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRBbGwoYSkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIHNpdGU6IEF0dHJpYnV0ZVNpdGU7XG4gIHByb3BlcnR5OiByZWZsZWN0LlByb3BlcnR5O1xuICBjZm5BdHRyaWJ1dGVOYW1lczogc3RyaW5nW107IC8vIGJ1Y2tldEFyblxufVxuXG5leHBvcnQgZW51bSBBdHRyaWJ1dGVTaXRlIHtcbiAgSW50ZXJmYWNlID0gJ2ludGVyZmFjZScsXG4gIENsYXNzID0gJ2NsYXNzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlUmVmbGVjdGlvbiB7XG4gIC8qKlxuICAgKiBAcmV0dXJucyBhbGwgcmVzb3VyY2UgY29uc3RydWN0cyAoZXZlcnl0aGluZyB0aGF0IGV4dGVuZHMgYGNkay5SZXNvdXJjZWApXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbmRBbGwoYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHkpIHtcbiAgICBpZiAoQ29yZVR5cGVzLmhhc0NvcmVNb2R1bGUoYXNzZW1ibHkpKSB7XG4gICAgICByZXR1cm4gW107IC8vIG5vdCBwYXJ0IG9mIHRoZSBkZXAgc3RhY2tcbiAgICB9XG5cbiAgICByZXR1cm4gYXNzZW1ibHkuYWxsQ2xhc3Nlc1xuICAgICAgLmZpbHRlcihjID0+IENvcmVUeXBlcy5pc0NvbnN0cnVjdENsYXNzKGMpICYmIENvcmVUeXBlcy5pc1Jlc291cmNlQ2xhc3MoYykpXG4gICAgICAubWFwKGMgPT4gbmV3IFJlc291cmNlUmVmbGVjdGlvbihuZXcgQ29uc3RydWN0UmVmbGVjdGlvbihjKSkpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdOyAvLyBhY3R1YWwgYXR0cmlidXRlIHByb3BzXG4gIHB1YmxpYyByZWFkb25seSBmcW46IHN0cmluZzsgLy8gZXhwZWN0ZWQgZnFuIG9mIHJlc291cmNlIGNsYXNzXG5cbiAgcHVibGljIHJlYWRvbmx5IGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5O1xuICBwdWJsaWMgcmVhZG9ubHkgc3lzOiByZWZsZWN0LlR5cGVTeXN0ZW07XG4gIHB1YmxpYyByZWFkb25seSBjZm46IENmblJlc291cmNlUmVmbGVjdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IGJhc2VuYW1lOiBzdHJpbmc7IC8vIGkuZS4gQnVja2V0XG4gIHB1YmxpYyByZWFkb25seSBjb3JlOiBDb3JlVHlwZXM7XG4gIHB1YmxpYyByZWFkb25seSBwaHlzaWNhbE5hbWVQcm9wPzogcmVmbGVjdC5Qcm9wZXJ0eTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY29uc3RydWN0OiBDb25zdHJ1Y3RSZWZsZWN0aW9uKSB7XG4gICAgdGhpcy5hc3NlbWJseSA9IGNvbnN0cnVjdC5jbGFzc1R5cGUuYXNzZW1ibHk7XG4gICAgdGhpcy5zeXMgPSB0aGlzLmFzc2VtYmx5LnN5c3RlbTtcblxuICAgIGNvbnN0IGNmbiA9IHRyeVJlc29sdmVDZm5SZXNvdXJjZShjb25zdHJ1Y3QuY2xhc3NUeXBlKTtcbiAgICBpZiAoIWNmbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBMMSBjbGFzcyBmb3IgTDIgJHtjb25zdHJ1Y3QuZnFufS4gYCArXG4gICAgICAgIGBJcyBcIiR7Z3Vlc3NSZXNvdXJjZU5hbWUoY29uc3RydWN0LmZxbil9XCIgYW4gYWN0dWFsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLiBgICtcbiAgICAgICAgJ0lmIG5vdCwgdXNlIHRoZSBcIkByZXNvdXJjZVwiIGRvYyB0YWcgdG8gaW5kaWNhdGUgdGhlIGZ1bGwgcmVzb3VyY2UgbmFtZSAoZS5nLiBcIkByZXNvdXJjZSBBV1M6OlJvdXRlNTM6Okhvc3RlZFpvbmVcIiknKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvcmUgPSBuZXcgQ29yZVR5cGVzKHRoaXMuc3lzKTtcbiAgICB0aGlzLmNmbiA9IGNmbjtcbiAgICB0aGlzLmJhc2VuYW1lID0gY29uc3RydWN0LmNsYXNzVHlwZS5uYW1lO1xuICAgIHRoaXMuZnFuID0gY29uc3RydWN0LmZxbjtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB0aGlzLmZpbmRBdHRyaWJ1dGVQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5waHlzaWNhbE5hbWVQcm9wID0gdGhpcy5maW5kUGh5c2ljYWxOYW1lUHJvcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGh5c2ljYWxOYW1lUHJvcCgpIHtcbiAgICBpZiAoIXRoaXMuY29uc3RydWN0LnByb3BzVHlwZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBjYW1lbGl6ZSh0aGlzLmNmbi5iYXNlbmFtZSk7XG5cbiAgICAvLyBpZiByZXNvdXJjZSBuYW1lIGVuZHMgd2l0aCBcIk5hbWVcIiAoZS5nLiBEb21haW5OYW1lLCB0aGVuIGp1c3QgdXNlIGl0IGFzLWlzLCBvdGhlcndpc2UgYXBwZW5kIFwiTmFtZVwiKVxuICAgIGNvbnN0IHBoeXNpY2FsTmFtZVByb3AgPSByZXNvdXJjZU5hbWUuZW5kc1dpdGgoJ05hbWUnKSA/IHJlc291cmNlTmFtZSA6IGAke3Jlc291cmNlTmFtZX1OYW1lYDtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3QucHJvcHNUeXBlLmFsbFByb3BlcnRpZXMuZmluZCh4ID0+IHgubmFtZSA9PT0gcGh5c2ljYWxOYW1lUHJvcCk7XG4gIH1cblxuICAvKipcbiAgICogQXR0cmlidXRlIHByb3BlcnRpZXMgYXJlIGFsbCB0aGUgcHJvcGVydGllcyB0aGF0IGJlZ2luIHdpdGggdGhlIHR5cGUgbmFtZSAoZS5nLiBidWNrZXRYeHgpLlxuICAgKlxuICAgKiBXZSBhcmUgYWRkaW5nIGEgYGJ1Y2tldFJlZmAgcHJvcGVydHkgYXMgd2VsbCB0aGF0IHdlIGRvbid0IG5lY2Vzc2FyaWx5IHdhbnQgdG8gaG9sZCB0byB0aGUgc2FtZSBsaW50ZXJcbiAgICogcnVsZXMgYXMgdGhlIG90aGVyIGF0dHJpYnV0ZXMsIHNvIHdlIGRvbid0IGNvbnNpZGVyIGl0IGFuIGF0dHJpYnV0ZS5cbiAgICovXG4gIHByaXZhdGUgZmluZEF0dHJpYnV0ZVByb3BlcnRpZXMoKTogQXR0cmlidXRlW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxBdHRyaWJ1dGU+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5jb25zdHJ1Y3QuY2xhc3NUeXBlLmFsbFByb3BlcnRpZXMpIHtcbiAgICAgIGlmIChwLnByb3RlY3RlZCkge1xuICAgICAgICBjb250aW51ZTsgLy8gc2tpcCBhbnkgcHJvdGVjdGVkIHByb3BlcnRpZXNcbiAgICAgIH1cbiAgICAgIGlmIChwLm5hbWUuZW5kc1dpdGgoJ1JlZicpKSB7XG4gICAgICAgIGNvbnRpbnVlOyAvLyBza2lwIGFueSBcIlJlZlwiIHByb3BlcnRpZXMsIHRoZXNlIGFyZSBub3QgYXR0cmlidXRlc1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGNhbWVsaXplKHRoaXMuY2ZuLmJhc2VuYW1lKTtcblxuICAgICAgLy8gYW4gYXR0cmlidXRlIHByb3BlcnR5IGlzIGEgcHJvcGVydHkgd2hpY2ggc3RhcnRzIHdpdGggdGhlIHR5cGUgbmFtZVxuICAgICAgLy8gKGUuZy4gXCJidWNrZXRYeHhcIikgYW5kL29yIGhhcyBhbiBAYXR0cmlidXRlIGRvYyB0YWcuXG4gICAgICBjb25zdCB0YWcgPSBnZXREb2NUYWcocCwgJ2F0dHJpYnV0ZScpO1xuICAgICAgaWYgKCFwLm5hbWUuc3RhcnRzV2l0aChiYXNlbmFtZSkgJiYgIXRhZykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNmbkF0dHJpYnV0ZU5hbWVzO1xuICAgICAgaWYgKHRhZyAmJiB0YWcgIT09ICd0cnVlJykge1xuICAgICAgICAvLyBpZiB0aGVyZSdzIGFuIGBAYXR0cmlidXRlYCBkb2MgdGFnIHdpdGggYSB2YWx1ZSBvdGhlciB0aGFuIFwidHJ1ZVwiXG4gICAgICAgIC8vIGl0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBDRk4gYXR0cmlidXRlIG5hbWUgaW5zdGVhZCBvZiB0aGUgcHJvcGVydHkgbmFtZVxuICAgICAgICAvLyBtdWx0aXBsZSBhdHRyaWJ1dGUgbmFtZXMgY2FuIGJlIGxpc3RlZCBhcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4gICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzID0gdGFnLnNwbGl0KCcsJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBva2F5LCB3ZSBkb24ndCBoYXZlIGFuIGV4cGxpY2l0IENGTiBhdHRyaWJ1dGUgbmFtZSwgc28gd2UnbGwgZ3Vlc3MgaXRcbiAgICAgICAgLy8gZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG5cbiAgICAgICAgY29uc3QgbmFtZSA9IHBhc2NhbGl6ZShwLm5hbWUpO1xuICAgICAgICBpZiAodGhpcy5jZm4uYXR0cmlidXRlTmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgICAvLyBzcGVjaWFsIGNhc2U6IHRoZXJlIGlzIGEgY2xvdWRmb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBpbiB0aGUgYXR0cmlidXRlIG5hbWVcbiAgICAgICAgICAvLyBmb3IgZXhhbXBsZSAnUm9sZUlkJy5cbiAgICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyA9IFtuYW1lXTtcbiAgICAgICAgfSBlbHNlIGlmIChwLm5hbWUuc3RhcnRzV2l0aChiYXNlbmFtZSkpIHtcbiAgICAgICAgICAvLyBiZWdpbnMgd2l0aCB0aGUgcmVzb3VyY2UgbmFtZSwganVzdCB0cmltIGl0XG4gICAgICAgICAgY2ZuQXR0cmlidXRlTmFtZXMgPSBbbmFtZS5zdWJzdHJpbmcodGhpcy5jZm4uYmFzZW5hbWUubGVuZ3RoKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gd2UgY291bGRuJ3QgZGV0ZXJtaW5lIENGTiBhdHRyaWJ1dGUgbmFtZSwgc28gd2UgZG9uJ3QgYWNjb3VudCBmb3IgdGhpc1xuICAgICAgICAgIC8vIGFzIGFuIGF0dHJpYnV0ZS4gdGhpcyBjb3VsZCBiZSwgZm9yIGV4YW1wbGUsIHdoZW4gYSBjb25zdHJ1Y3QgaW1wbGVtZW50c1xuICAgICAgICAgIC8vIGFuIGludGVyZmFjZSB0aGF0IHJlcHJlc2VudHMgYW5vdGhlciByZXNvdXJjZSAoZS5nLiBgbGFtYmRhLkFsaWFzYCBpbXBsZW1lbnRzIGBJRnVuY3Rpb25gKS5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBjaGVjayBpZiB0aGlzIGF0dHJpYnV0ZSBpcyBkZWZpbmVkIG9uIGFuIGludGVyZmFjZSBvciBvbiBhIGNsYXNzXG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGZpbmREZWNsYXJhdGlvblNpdGUocCk7XG4gICAgICBjb25zdCBzaXRlID0gcHJvcGVydHkucGFyZW50VHlwZS5pc0ludGVyZmFjZVR5cGUoKSA/IEF0dHJpYnV0ZVNpdGUuSW50ZXJmYWNlIDogQXR0cmlidXRlU2l0ZS5DbGFzcztcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBzaXRlLFxuICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyxcbiAgICAgICAgcHJvcGVydHksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmREZWNsYXJhdGlvblNpdGUocHJvcDogcmVmbGVjdC5Qcm9wZXJ0eSk6IHJlZmxlY3QuUHJvcGVydHkge1xuICBpZiAoIXByb3Aub3ZlcnJpZGVzIHx8ICghcHJvcC5vdmVycmlkZXMuaXNDbGFzc1R5cGUoKSAmJiAhcHJvcC5vdmVycmlkZXMuaXNJbnRlcmZhY2VUeXBlKCkpKSB7XG4gICAgaWYgKCFwcm9wLnBhcmVudFR5cGUuaXNDbGFzc1R5cGUoKSAmJiAhcHJvcC5wYXJlbnRUeXBlLmlzSW50ZXJmYWNlVHlwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcGFyZW50IHR5cGUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3A7XG4gIH1cblxuICBjb25zdCBvdmVycmlkZXNQcm9wID0gcHJvcC5vdmVycmlkZXMuYWxsUHJvcGVydGllcy5maW5kKHAgPT4gcC5uYW1lID09PSBwcm9wLm5hbWUpO1xuICBpZiAoIW92ZXJyaWRlc1Byb3ApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHByb3BlcnR5ICR7cHJvcC5uYW1lfSBpbiBvdmVycmlkZSBzaXRlICR7cHJvcC5vdmVycmlkZXMuZnFufWApO1xuICB9XG4gIHJldHVybiBmaW5kRGVjbGFyYXRpb25TaXRlKG92ZXJyaWRlc1Byb3ApO1xufVxuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtY2xhc3MtZXh0ZW5kcy1yZXNvdXJjZScsXG4gIG1lc3NhZ2U6ICdyZXNvdXJjZSBjbGFzc2VzIG11c3QgZXh0ZW5kIFwiY2RrLlJlc291cmNlXCIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlQmFzZSA9IGUuY3R4LnN5cy5maW5kQ2xhc3MoZS5jdHguY29yZS5yZXNvdXJjZUNsYXNzRnFuKTtcbiAgICBlLmFzc2VydChlLmN0eC5jb25zdHJ1Y3QuY2xhc3NUeXBlLmV4dGVuZHMocmVzb3VyY2VCYXNlKSwgZS5jdHguY29uc3RydWN0LmZxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWludGVyZmFjZScsXG4gIHdhcm5pbmc6IHRydWUsXG4gIG1lc3NhZ2U6ICdldmVyeSByZXNvdXJjZSBtdXN0IGhhdmUgYSByZXNvdXJjZSBpbnRlcmZhY2UnLFxuICBldmFsOiBlID0+IHtcbiAgICBlLmFzc2VydChlLmN0eC5jb25zdHJ1Y3QuaW50ZXJmYWNlVHlwZSwgZS5jdHguY29uc3RydWN0LmZxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWludGVyZmFjZS1leHRlbmRzLXJlc291cmNlJyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBpbnRlcmZhY2VzIG9mIEFXUyByZXNvdXJjZXMgbXVzdCBleHRlbmQgY2RrLklSZXNvdXJjZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlSW50ZXJmYWNlID0gZS5jdHguY29uc3RydWN0LmludGVyZmFjZVR5cGU7XG4gICAgaWYgKCFyZXNvdXJjZUludGVyZmFjZSkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHJlc291cmNlSW50ZXJmYWNlRnFuID0gZS5jdHguY29yZS5yZXNvdXJjZUludGVyZmFjZUZxbjtcbiAgICBjb25zdCBpbnRlcmZhY2VCYXNlID0gZS5jdHguc3lzLmZpbmRJbnRlcmZhY2UocmVzb3VyY2VJbnRlcmZhY2VGcW4pO1xuICAgIGUuYXNzZXJ0KHJlc291cmNlSW50ZXJmYWNlLmV4dGVuZHMoaW50ZXJmYWNlQmFzZSksIHJlc291cmNlSW50ZXJmYWNlLmZxbik7XG4gIH0sXG59KTtcblxuLypcbi8vIFRoaXMgcnVsZSBpcyB0aGUgd29yc3RcbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1hdHRyaWJ1dGUnLFxuICBtZXNzYWdlOlxuICAgICdyZXNvdXJjZXMgbXVzdCByZXByZXNlbnQgYWxsIGNsb3VkZm9ybWF0aW9uIGF0dHJpYnV0ZXMgYXMgYXR0cmlidXRlIHByb3BlcnRpZXMuICcgK1xuICAgICdcIkBhdHRyaWJ1dGUgQVRUUlssQVRUUl1cIiBjYW4gYmUgdXNlZCB0byB0YWcgbm9uLXN0YW5kYXJkIGF0dHJpYnV0ZSBuYW1lcy4gJyArXG4gICAgJ21pc3NpbmcgcHJvcGVydHk6JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIGUuY3R4LmNmbi5hdHRyaWJ1dGVOYW1lcykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSBjYW1lbGNhc2UobmFtZSkuc3RhcnRzV2l0aChjYW1lbGNhc2UoZS5jdHguY2ZuLmJhc2VuYW1lKSlcbiAgICAgICAgPyBjYW1lbGNhc2UobmFtZSlcbiAgICAgICAgOiBjYW1lbGNhc2UoZS5jdHguY2ZuLmJhc2VuYW1lICsgbmFtZSk7XG5cbiAgICAgIGNvbnN0IGZvdW5kID0gZS5jdHguYXR0cmlidXRlcy5maW5kKGEgPT4gYS5jZm5BdHRyaWJ1dGVOYW1lcy5pbmNsdWRlcyhuYW1lKSk7XG4gICAgICBlLmFzc2VydChmb3VuZCwgYCR7ZS5jdHguZnFufS4ke2V4cGVjdGVkfWAsIGV4cGVjdGVkKTtcbiAgICB9XG4gIH0sXG59KTtcbiovXG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdncmFudC1yZXN1bHQnLFxuICBtZXNzYWdlOiBgXCJncmFudFwiIG1ldGhvZCBtdXN0IHJldHVybiAke0dSQU5UX1JFU1VMVF9GUU59YCxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgZ3JhbnRSZXN1bHRUeXBlID0gZS5jdHguc3lzLnRyeUZpbmRGcW4oR1JBTlRfUkVTVUxUX0ZRTik7XG5cbiAgICAvLyB0aGlzIGltcGxpZXMgdGhhdCB3ZSBhcmUgYXQgYSBsb3dlciBsYXllciAoaS5lLiBAYXdzLWNkay9jb3JlKVxuICAgIGlmICghZ3JhbnRSZXN1bHRUeXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ3JhbnRNZXRob2RzID0gZS5jdHguY29uc3RydWN0LmNsYXNzVHlwZS5hbGxNZXRob2RzLmZpbHRlcihtID0+IG0ubmFtZS5zdGFydHNXaXRoKCdncmFudCcpKTtcblxuICAgIGZvciAoY29uc3QgZ3JhbnRNZXRob2Qgb2YgZ3JhbnRNZXRob2RzKSB7XG4gICAgICBlLmFzc2VydFNpZ25hdHVyZShncmFudE1ldGhvZCwge1xuICAgICAgICByZXR1cm5zOiBncmFudFJlc3VsdFR5cGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLXBoeXNpY2FsLW5hbWUnLFxuICBtZXNzYWdlOiAnRXZlcnkgUmVzb3VyY2UgbXVzdCBoYXZlIGEgc2luZ2xlIHBoeXNpY2FsIG5hbWUgY29uc3RydWN0aW9uIHByb3BlcnR5LCAnICtcbiAgICAnd2l0aCBhIG5hbWUgdGhhdCBpcyBhbiBlbmRpbmcgc3Vic3RyaW5nIG9mIDxjZm5SZXNvdXJjZT5OYW1lJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5jb25zdHJ1Y3QucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGUuYXNzZXJ0KGUuY3R4LnBoeXNpY2FsTmFtZVByb3AsIGUuY3R4LmNvbnN0cnVjdC5wcm9wc0Zxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLXBoeXNpY2FsLW5hbWUtdHlwZScsXG4gIG1lc3NhZ2U6ICdUaGUgdHlwZSBvZiB0aGUgcGh5c2ljYWwgbmFtZSBwcm9wIHNob3VsZCBhbHdheXMgYmUgYSBcInN0cmluZ1wiJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5waHlzaWNhbE5hbWVQcm9wKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb3AgPSBlLmN0eC5waHlzaWNhbE5hbWVQcm9wO1xuICAgIGUuYXNzZXJ0VHlwZXNFcXVhbChlLmN0eC5zeXMsIHByb3AudHlwZSwgJ3N0cmluZycsIGAke2UuY3R4LmNvbnN0cnVjdC5wcm9wc0Zxbn0uJHtwcm9wLm5hbWV9YCk7XG4gIH0sXG59KTtcblxuZnVuY3Rpb24gdHJ5UmVzb2x2ZUNmblJlc291cmNlKHJlc291cmNlQ2xhc3M6IHJlZmxlY3QuQ2xhc3NUeXBlKTogQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3lzID0gcmVzb3VyY2VDbGFzcy5zeXN0ZW07XG5cbiAgLy8gaWYgdGhlcmUgaXMgYSBAcmVzb3VyY2UgZG9jIHRhZywgaXQgdGFrZXMgcHJlY2VkZWNlXG4gIGNvbnN0IHRhZyA9IHJlc291cmNlQ2xhc3MuZG9jcy5jdXN0b21UYWcoJ3Jlc291cmNlJyk7XG4gIGlmICh0YWcpIHtcbiAgICByZXR1cm4gQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRCeU5hbWUoc3lzLCB0YWcpO1xuICB9XG5cbiAgLy8gcGFyc2UgdGhlIEZRTiBvZiB0aGUgY2xhc3MgbmFtZSBhbmQgc2VlIGlmIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgQ0ZOIHJlc291cmNlXG4gIGNvbnN0IGd1ZXNzID0gZ3Vlc3NSZXNvdXJjZU5hbWUocmVzb3VyY2VDbGFzcy5mcW4pO1xuICBpZiAoZ3Vlc3MpIHtcbiAgICBjb25zdCBjZm4gPSBDZm5SZXNvdXJjZVJlZmxlY3Rpb24uZmluZEJ5TmFtZShzeXMsIGd1ZXNzKTtcbiAgICBpZiAoY2ZuKSB7XG4gICAgICByZXR1cm4gY2ZuO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRyeSB0byByZXNvbHZlIHRocm91Z2ggYW5jZXN0b3JzXG4gIGZvciAoY29uc3QgYmFzZSBvZiByZXNvdXJjZUNsYXNzLmFuY2VzdG9ycykge1xuICAgIGNvbnN0IHJldCA9IHRyeVJlc29sdmVDZm5SZXNvdXJjZShiYXNlKTtcbiAgICBpZiAocmV0KSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfVxuXG4gIC8vIGZhaWxlZCBtaXNyYWJseVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBndWVzc1Jlc291cmNlTmFtZShmcW46IHN0cmluZykge1xuICAvLyBTdHJpcCBhbnkgdmVyc2lvbiBzdWZmaXhlcyBlLmcuICdUYWJsZVYyJyBiZWNvbWVzICdUYWJsZSdcbiAgbGV0IG1hdGNoID0gL14oLis/KShWWzAtOV0rKT8kLy5leGVjKGZxbik7XG4gIGlmICghbWF0Y2gpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCBbLCB2ZXJzaW9ubGVzc10gPSBtYXRjaDtcblxuICBtYXRjaCA9IC9hd3MtY2RrLWxpYlxcLihbYS16XSspXyhbYS16MC05XSspXFwuKFtBLVpdW2EtekEtWjAtOV0rKS8uZXhlYyh2ZXJzaW9ubGVzcyk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIC8vIEFscGhhIG5hbWVcbiAgICBtYXRjaCA9IC9AYXdzLWNka1xcLyhbYS16XSspLShbYS16MC05XSspLWFscGhhXFwuKFtBLVpdW2EtekEtWjAtOV0rKS8uZXhlYyhmcW4pO1xuICB9XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBbLCBvcmcsIG5zLCByc10gPSBtYXRjaDtcbiAgaWYgKCFvcmcgfHwgIW5zIHx8ICFycykgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG5cbiAgcmV0dXJuIGAke29yZ306OiR7bnN9Ojoke3JzfWA7XG59XG4iXX0=
@@ -22,7 +22,6 @@ export enum AttributeSite {
22
22
  }
23
23
 
24
24
  export class ResourceReflection {
25
-
26
25
  /**
27
26
  * @returns all resource constructs (everything that extends `cdk.Resource`)
28
27
  */
@@ -284,7 +283,7 @@ function tryResolveCfnResource(resourceClass: reflect.ClassType): CfnResourceRef
284
283
 
285
284
  function guessResourceName(fqn: string) {
286
285
  // Strip any version suffixes e.g. 'TableV2' becomes 'Table'
287
- var match = /^(.+?)(V[0-9]+)?$/.exec(fqn);
286
+ let match = /^(.+?)(V[0-9]+)?$/.exec(fqn);
288
287
  if (!match) { return undefined; }
289
288
  const [, versionless] = match;
290
289
 
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "awslint",
3
- "version": "2.231.0-alpha.0",
3
+ "version": "2.232.0-alpha.0",
4
4
  "description": "Enforces the AWS Construct Library guidelines",
5
5
  "scripts": {
6
- "build": "tsc -b && eslint . --ext=.ts && pkglint && chmod +x bin/awslint",
7
- "lint": "eslint . --ext=.ts && pkglint",
6
+ "build": "tsc -b && eslint && pkglint && chmod +x bin/awslint",
7
+ "lint": "eslint && pkglint",
8
8
  "test": "echo ok",
9
9
  "watch": "tsc -b -w",
10
10
  "package": "mkdir -p dist/js && mv $( npm pack ) dist/js/",
@@ -18,27 +18,19 @@
18
18
  "awslint": "bin/awslint"
19
19
  },
20
20
  "dependencies": {
21
- "@jsii/spec": "1.119.0",
21
+ "@jsii/spec": "1.120.0",
22
22
  "chalk": "^4",
23
23
  "fs-extra": "^9.1.0",
24
- "jsii-reflect": "1.119.0",
24
+ "jsii-reflect": "1.120.0",
25
25
  "change-case": "^4.1.2",
26
26
  "yargs": "^16.2.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@cdklabs/eslint-plugin": "^1.3.4",
30
- "@aws-cdk/pkglint": "2.231.0-alpha.0",
29
+ "@aws-cdk/eslint-config": "2.232.0-alpha.0",
30
+ "@aws-cdk/pkglint": "2.232.0-alpha.0",
31
31
  "@types/fs-extra": "^9.0.13",
32
32
  "@types/jest": "^29.5.14",
33
- "@types/yargs": "^15.0.19",
34
- "@typescript-eslint/eslint-plugin": "^8",
35
- "@stylistic/eslint-plugin": "^2",
36
- "@typescript-eslint/parser": "^8",
37
- "eslint": "^8",
38
- "eslint-import-resolver-node": "^0.3.9",
39
- "eslint-import-resolver-typescript": "^2.7.1",
40
- "eslint-plugin-import": "^2.32.0",
41
- "eslint-plugin-jest": "^28",
33
+ "@types/yargs": "^15.0.20",
42
34
  "jest": "^29.7.0",
43
35
  "typescript": "~5.5.4"
44
36
  },