@mnaoumov/typescript-dev-toolkit 5.4.2 → 6.0.1
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/README.md +6 -0
- package/dist/lib/cjs/docs-site/docs-snippets.cjs +3 -3
- package/dist/lib/cjs/docs-site/link-check.cjs +4 -4
- package/dist/lib/cjs/docs-site/satteri-github-alerts.cjs +2 -5
- package/dist/lib/cjs/link-check-skip.cjs +2 -5
- package/dist/lib/cjs/linters/eslint-config.cjs +13 -1
- package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.cjs +1 -1
- package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.cjs +4 -7
- package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.cjs +3 -6
- package/dist/lib/cjs/linters/eslint-rules/prefer-dedent.cjs +2 -5
- package/dist/lib/cjs/linters/eslint-rules/prefer-logical-operator-over-ternary.cjs +20 -2
- package/dist/lib/cjs/linters/eslint-rules/prefer-logical-operator-over-ternary.d.cts +6 -3
- package/dist/lib/cjs/linters/markdownlint.cjs +5 -3
- package/dist/lib/cjs/linters/over-exposure.cjs +2 -2
- package/dist/lib/cjs/root.cjs +1 -1
- package/dist/lib/cjs/test-runners/jest.cjs +3 -3
- package/dist/lib/cjs/upstream-sync.cjs +2 -2
- package/dist/lib/esm/docs-site/docs-snippets.mjs +3 -3
- package/dist/lib/esm/docs-site/link-check.mjs +4 -4
- package/dist/lib/esm/docs-site/satteri-github-alerts.mjs +2 -5
- package/dist/lib/esm/link-check-skip.mjs +2 -5
- package/dist/lib/esm/linters/eslint-config.mjs +13 -1
- package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.mjs +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.mjs +4 -7
- package/dist/lib/esm/linters/eslint-rules/params-options-name-match.mjs +3 -6
- package/dist/lib/esm/linters/eslint-rules/prefer-dedent.mjs +2 -5
- package/dist/lib/esm/linters/eslint-rules/prefer-logical-operator-over-ternary.d.mts +6 -3
- package/dist/lib/esm/linters/eslint-rules/prefer-logical-operator-over-ternary.mjs +20 -2
- package/dist/lib/esm/linters/markdownlint.mjs +5 -3
- package/dist/lib/esm/linters/over-exposure.mjs +2 -2
- package/dist/lib/esm/root.mjs +1 -1
- package/dist/lib/esm/test-runners/jest.mjs +3 -3
- package/dist/lib/esm/upstream-sync.mjs +2 -2
- package/package.json +2 -2
|
@@ -60,8 +60,8 @@ async function testCoverage(options = {}) {
|
|
|
60
60
|
async function testWatch(options = {}) {
|
|
61
61
|
await runJest(["--watch"], options, true);
|
|
62
62
|
}
|
|
63
|
-
function addExperimentalVmModulesFlag(nodeOptions) {
|
|
64
|
-
const flags =
|
|
63
|
+
function addExperimentalVmModulesFlag(nodeOptions = "") {
|
|
64
|
+
const flags = nodeOptions.split(/\s+/).filter(Boolean);
|
|
65
65
|
if (!flags.includes(EXPERIMENTAL_VM_MODULES_FLAG)) {
|
|
66
66
|
flags.push(EXPERIMENTAL_VM_MODULES_FLAG);
|
|
67
67
|
}
|
|
@@ -85,4 +85,4 @@ export {
|
|
|
85
85
|
testCoverage,
|
|
86
86
|
testWatch
|
|
87
87
|
};
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9qZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBydW5uaW5nIHRlc3RzIHVzaW5nIHRoZSBKZXN0IGZyYW1ld29yay5cbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7IE93bmVkT3B0aW9uIH0gZnJvbSAnLi9mb3J3YXJkZWQtYXJndW1lbnRzLnRzJztcblxuaW1wb3J0IHsgcmVhZFBhY2thZ2VKc29uIH0gZnJvbSAnLi4vbnBtLnRzJztcbmltcG9ydCB7IHJlc29sdmVUb29sQ29tbWFuZCB9IGZyb20gJy4uL3BhY2thZ2UtbWFuYWdlci50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuLi9yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBhc3NlcnROb093bmVkQXJndW1lbnRzIH0gZnJvbSAnLi9mb3J3YXJkZWQtYXJndW1lbnRzLnRzJztcbmltcG9ydCB7IGlzRXNtUGFja2FnZSB9IGZyb20gJy4vamVzdC1jb25maWcudHMnO1xuXG5jb25zdCBPV05FRF9PUFRJT05TOiByZWFkb25seSBPd25lZE9wdGlvbltdID0gW1xuICB7IG5hbWVzOiBbJy0tc2VsZWN0UHJvamVjdHMnLCAnLS1zZWxlY3QtcHJvamVjdHMnXSwgcmVwbGFjZW1lbnQ6ICd0aGUgYHByb2plY3RzYCBvcHRpb24nIH0sXG4gIHsgbmFtZXM6IFsnLS13YXRjaCcsICctLXdhdGNoQWxsJywgJy0td2F0Y2gtYWxsJ10sIHJlcGxhY2VtZW50OiAndGhlIGB0ZXN0V2F0Y2hgIHdyYXBwZXInIH0sXG4gIHtcbiAgICBuYW1lczogWyctLWNvdmVyYWdlJywgJy0tbm8tY292ZXJhZ2UnLCAnLS1jb2xsZWN0Q292ZXJhZ2UnLCAnLS1jb2xsZWN0LWNvdmVyYWdlJywgJy0tbm8tY29sbGVjdENvdmVyYWdlJywgJy0tY292ZXJhZ2VUaHJlc2hvbGQnLCAnLS1jb3ZlcmFnZS10aHJlc2hvbGQnXSxcbiAgICByZXBsYWNlbWVudDogJ3RoZSBgdGVzdENvdmVyYWdlYCB3cmFwcGVyIGFuZCBpdHMgYG1pbkNvdmVyYWdlSW5QZXJjZW50c2Agb3B0aW9uJ1xuICB9XG5dO1xuXG4vKipcbiAqIEV2ZXJ5IGZpbGUgamVzdCByZWFkcyBpdHMgY29uZmlndXJhdGlvbiBmcm9tLCBiZXNpZGVzIHRoZSBgamVzdGAga2V5IG9mIGBwYWNrYWdlLmpzb25gLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vamVzdGpzLmlvL2RvY3MvY29uZmlndXJhdGlvbn1cbiAqL1xuZXhwb3J0IGNvbnN0IEpFU1RfQ09ORklHX0ZJTEVfTkFNRVM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAnamVzdC5jb25maWcuY2pzJyxcbiAgJ2plc3QuY29uZmlnLmN0cycsXG4gICdqZXN0LmNvbmZpZy5qcycsXG4gICdqZXN0LmNvbmZpZy5qc29uJyxcbiAgJ2plc3QuY29uZmlnLm1qcycsXG4gICdqZXN0LmNvbmZpZy5tdHMnLFxuICAnamVzdC5jb25maWcudHMnXG5dO1xuXG4vKipcbiAqIFRoZSBOb2RlIGZsYWcgamVzdCdzIEVTTSBsb2FkZXIgbmVlZHM6IGl0IGlzIGJ1aWx0IG9uIGB2bS5TeW50aGV0aWNNb2R1bGVgLCB3aGljaCBOb2RlIG9ubHkgZXhwb3NlcyB1bmRlciBpdC5cbiAqIFdpdGhvdXQgaXQgZXZlcnkgRVNNIHN1aXRlIGZhaWxzIHRvIGxvYWQgd2l0aCBgTXVzdCB1c2UgaW1wb3J0IHRvIGxvYWQgRVMgTW9kdWxlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUcgPSAnLS1leHBlcmltZW50YWwtdm0tbW9kdWxlcyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cyB3aXRoIGNvdmVyYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb3ZlcmFnZU9wdGlvbnMgZXh0ZW5kcyBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIGNvdmVyYWdlIHBlcmNlbnRhZ2UgcmVxdWlyZWQsIGZvciBsaW5lcywgZnVuY3Rpb25zLCBicmFuY2hlcyBhbmQgc3RhdGVtZW50cyBhbGlrZS4gSWYgdGhlIGFjdHVhbCBjb3ZlcmFnZVxuICAgKiBmYWxscyBiZWxvdyBpdCwgamVzdCBleGl0cyB3aXRoIGEgbm9uLXplcm8gY29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDBgXG4gICAqL1xuICByZWFkb25seSBtaW5Db3ZlcmFnZUluUGVyY2VudHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGdXJ0aGVyIGplc3QgQ0xJIGFyZ3VtZW50cywgYXBwZW5kZWQgYWZ0ZXIgdGhlIHdyYXBwZXIncyBvd246IHRlc3QgcGF0aCBwYXR0ZXJucywgYC10YCwgYC0tbWF4V29ya2Vyc2AsIGAtLWJhaWxgLlxuICAgKiBBbiBhcmd1bWVudCBuYW1pbmcgYW4gb3B0aW9uIHRoZSB3cmFwcGVyIHNldHMgaXRzZWxmIChgLS1zZWxlY3RQcm9qZWN0c2AsIGAtLWNvdmVyYWdlKmAsIGAtLXdhdGNoKmApIHRocm93cy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxBcmd1bWVudHM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciBqZXN0IHJ1bnMgdGhlIHN1aXRlIGFzIEVTIG1vZHVsZXMsIHdoaWNoIGFkZHMge0BsaW5rIEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUd9IHRvIGBOT0RFX09QVElPTlNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWAgd2hlbiBgcGFja2FnZS5qc29uYCBkZWNsYXJlcyBgXCJ0eXBlXCI6IFwibW9kdWxlXCJgLCB0aGUgcnVsZSBgZGVmaW5lSmVzdENvbmZpZ2AgZm9sbG93cyB0b29cbiAgICovXG4gIHJlYWRvbmx5IGVzbT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0cyB0byBydW4sIGJ5IHRoZWlyIGBkaXNwbGF5TmFtZWAsIHBhc3NlZCB0byBqZXN0J3MgYC0tc2VsZWN0UHJvamVjdHNgLiBVbmxpa2Ugdml0ZXN0J3MgcnVubmVyLCBhIG5hbWVcbiAgICogbWF0Y2hlcyBvbmx5IGl0c2VsZjogamVzdCBoYXMgbm8gYG5hbWU6KmAgZm9ybS5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cyBpbiB3YXRjaCBtb2RlLlxuICovXG5leHBvcnQgdHlwZSBUZXN0V2F0Y2hPcHRpb25zID0gVGVzdE9wdGlvbnM7XG5cbi8qKlxuICogU2F5cyB3aGV0aGVyIHRoZSBwcm9qZWN0IGNvbmZpZ3VyZXMgamVzdC5cbiAqXG4gKiBAcmV0dXJucyBXaGV0aGVyIGEgamVzdCBjb25maWd1cmF0aW9uIGZpbGUsIG9yIGEgYGplc3RgIGtleSBpbiBgcGFja2FnZS5qc29uYCwgZXhpc3RzIGF0IHRoZSBwcm9qZWN0IHJvb3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYXNKZXN0Q29uZmlnKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoSkVTVF9DT05GSUdfRklMRV9OQU1FUy5zb21lKChmaWxlTmFtZSkgPT4gZXhpc3RzU3luYyhyZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGZpbGVOYW1lIH0pKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICghZXhpc3RzU3luYyhyZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IFJlcG9QYXRocy5QYWNrYWdlSnNvbiB9KSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwYWNrYWdlSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSnNvbigpO1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihwYWNrYWdlSnNvbiwgJ2plc3QnKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSB0ZXN0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3Qob3B0aW9uczogVGVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBydW5KZXN0KFtdLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIHdpdGggY292ZXJhZ2UuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjb3ZlcmFnZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RDb3ZlcmFnZShvcHRpb25zOiBUZXN0Q292ZXJhZ2VPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdGhyZXNob2xkID0gb3B0aW9ucy5taW5Db3ZlcmFnZUluUGVyY2VudHMgPz8gMDtcbiAgY29uc3QgY292ZXJhZ2VUaHJlc2hvbGQgPSB7XG4gICAgZ2xvYmFsOiB7XG4gICAgICBicmFuY2hlczogdGhyZXNob2xkLFxuICAgICAgZnVuY3Rpb25zOiB0aHJlc2hvbGQsXG4gICAgICBsaW5lczogdGhyZXNob2xkLFxuICAgICAgc3RhdGVtZW50czogdGhyZXNob2xkXG4gICAgfVxuICB9O1xuICBhd2FpdCBydW5KZXN0KFsnLS1jb3ZlcmFnZScsIGAtLWNvdmVyYWdlVGhyZXNob2xkPSR7SlNPTi5zdHJpbmdpZnkoY292ZXJhZ2VUaHJlc2hvbGQpfWBdLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIGluIHdhdGNoIG1vZGUsIHJlLXJ1bm5pbmcgdGhlIHRlc3RzIHRoZSBjaGFuZ2VkIGZpbGVzIGFmZmVjdC4gSmVzdCBuZWVkcyBhIGdpdCBvciBNZXJjdXJpYWxcbiAqIHJlcG9zaXRvcnkgZm9yIHRoYXQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHRlc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHdhdGNoZXIgZXhpdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2F0Y2gob3B0aW9uczogVGVzdFdhdGNoT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJ1bkplc3QoWyctLXdhdGNoJ10sIG9wdGlvbnMsIHRydWUpO1xufVxuXG4vKipcbiAqIEFwcGVuZHMge0BsaW5rIEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUd9IHRvIGEgYE5PREVfT1BUSU9OU2AgdmFsdWUsIGtlZXBpbmcgd2hhdGV2ZXIgaXQgYWxyZWFkeSBob2xkcy5cbiAqXG4gKiBAcGFyYW0gbm9kZU9wdGlvbnMgLSBUaGUgaW5oZXJpdGVkIGBOT0RFX09QVElPTlNgLlxuICogQHJldHVybnMgVGhlIGBOT0RFX09QVElPTlNgIGplc3QgcnVucyB3aXRoLlxuICovXG5mdW5jdGlvbiBhZGRFeHBlcmltZW50YWxWbU1vZHVsZXNGbGFnKG5vZGVPcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBjb25zdCBmbGFncyA9IChub2RlT3B0aW9ucyA/PyAnJykuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmICghZmxhZ3MuaW5jbHVkZXMoRVhQRVJJTUVOVEFMX1ZNX01PRFVMRVNfRkxBRykpIHtcbiAgICBmbGFncy5wdXNoKEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUcpO1xuICB9XG5cbiAgcmV0dXJuIGZsYWdzLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBqZXN0IENMSSBmcm9tIHRoZSBwcm9qZWN0IHJvb3QuXG4gKlxuICogQHBhcmFtIHJ1bkFyZ3VtZW50cyAtIFRoZSBhcmd1bWVudHMgdGhhdCBzZWxlY3Qgd2hhdCBqZXN0IGRvZXMuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgVGVzdE9wdGlvbnN9LlxuICogQHBhcmFtIGlzSW50ZXJhY3RpdmUgLSBXaGV0aGVyIGplc3QgZ2V0cyB0aGUgdGVybWluYWwsIGFzIGl0cyB3YXRjaCBtb2RlIG5lZWRzIHRvIHJlYWQga2V5cy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiBqZXN0IGV4aXRzLlxuICovXG5hc3luYyBmdW5jdGlvbiBydW5KZXN0KHJ1bkFyZ3VtZW50czogc3RyaW5nW10sIG9wdGlvbnM6IFRlc3RPcHRpb25zLCBpc0ludGVyYWN0aXZlID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhZGRpdGlvbmFsQXJndW1lbnRzID0gW10sIGVzbSA9IGlzRXNtUGFja2FnZSgpLCBwcm9qZWN0cyA9IFtdIH0gPSBvcHRpb25zO1xuICBhc3NlcnROb093bmVkQXJndW1lbnRzKHsgZm9yd2FyZGVkQXJndW1lbnRzOiBhZGRpdGlvbmFsQXJndW1lbnRzLCBvd25lZE9wdGlvbnM6IE9XTkVEX09QVElPTlMsIHJ1bm5lck5hbWU6ICdqZXN0JyB9KTtcbiAgY29uc3QgcHJvamVjdEFyZ3VtZW50cyA9IHByb2plY3RzLmxlbmd0aCA+IDAgPyBbJy0tc2VsZWN0UHJvamVjdHMnLCAuLi5wcm9qZWN0c10gOiBbXTtcbiAgY29uc3QgZW52ID0gZXNtID8geyBOT0RFX09QVElPTlM6IGFkZEV4cGVyaW1lbnRhbFZtTW9kdWxlc0ZsYWcocHJvY2Vzcy5lbnZbJ05PREVfT1BUSU9OUyddKSB9IDoge307XG5cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsuLi5yZXNvbHZlVG9vbENvbW1hbmQoeyB0b29sOiAnamVzdCcgfSksIC4uLnJ1bkFyZ3VtZW50cywgLi4ucHJvamVjdEFyZ3VtZW50cywgLi4uYWRkaXRpb25hbEFyZ3VtZW50c10sIHtcbiAgICBlbnYsXG4gICAgaXNJbnRlcmFjdGl2ZVxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBTUEsU0FBUyxrQkFBa0I7QUFDM0IsT0FBTyxhQUFhO0FBSXBCLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMsaUJBQWlCO0FBQzFCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyw4QkFBOEI7QUFDdkMsU0FBUyxvQkFBb0I7QUFFN0IsTUFBTSxnQkFBd0M7QUFBQSxFQUM1QyxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsbUJBQW1CLEdBQUcsYUFBYSx3QkFBd0I7QUFBQSxFQUN6RixFQUFFLE9BQU8sQ0FBQyxXQUFXLGNBQWMsYUFBYSxHQUFHLGFBQWEsMEJBQTBCO0FBQUEsRUFDMUY7QUFBQSxJQUNFLE9BQU8sQ0FBQyxjQUFjLGlCQUFpQixxQkFBcUIsc0JBQXNCLHdCQUF3Qix1QkFBdUIsc0JBQXNCO0FBQUEsSUFDdkosYUFBYTtBQUFBLEVBQ2Y7QUFDRjtBQU9PLE1BQU0seUJBQTRDO0FBQUEsRUFDdkQ7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQU1PLE1BQU0sK0JBQStCO0FBaUQ1QyxlQUFzQixnQkFBa0M7QUFDdEQsTUFBSSx1QkFBdUIsS0FBSyxDQUFDLGFBQWEsV0FBVyx3QkFBd0IsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRztBQUN0RyxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksQ0FBQyxXQUFXLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBQyxHQUFHO0FBQ3pFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxjQUFjLE1BQU0sZ0JBQWdCO0FBQzFDLFNBQU8sT0FBTyxPQUFPLGFBQWEsTUFBTTtBQUMxQztBQVFBLGVBQXNCLEtBQUssVUFBdUIsQ0FBQyxHQUFrQjtBQUNuRSxRQUFNLFFBQVEsQ0FBQyxHQUFHLE9BQU87QUFDM0I7QUFRQSxlQUFzQixhQUFhLFVBQStCLENBQUMsR0FBa0I7QUFDbkYsUUFBTSxZQUFZLFFBQVEseUJBQXlCO0FBQ25ELFFBQU0sb0JBQW9CO0FBQUEsSUFDeEIsUUFBUTtBQUFBLE1BQ04sVUFBVTtBQUFBLE1BQ1YsV0FBVztBQUFBLE1BQ1gsT0FBTztBQUFBLE1BQ1AsWUFBWTtBQUFBLElBQ2Q7QUFBQSxFQUNGO0FBQ0EsUUFBTSxRQUFRLENBQUMsY0FBYyx1QkFBdUIsS0FBSyxVQUFVLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxPQUFPO0FBQ25HO0FBU0EsZUFBc0IsVUFBVSxVQUE0QixDQUFDLEdBQWtCO0FBQzdFLFFBQU0sUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUk7QUFDMUM7QUFRQSxTQUFTLDZCQUE2QixhQUF5QztBQUM3RSxRQUFNLFNBQVMsZUFBZSxJQUFJLE1BQU0sS0FBSyxFQUFFLE9BQU8sT0FBTztBQUM3RCxNQUFJLENBQUMsTUFBTSxTQUFTLDRCQUE0QixHQUFHO0FBQ2pELFVBQU0sS0FBSyw0QkFBNEI7QUFBQSxFQUN6QztBQUVBLFNBQU8sTUFBTSxLQUFLLEdBQUc7QUFDdkI7QUFVQSxlQUFlLFFBQVEsY0FBd0IsU0FBc0IsZ0JBQWdCLE9BQXNCO0FBQ3pHLFFBQU0sRUFBRSxzQkFBc0IsQ0FBQyxHQUFHLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxFQUFFLElBQUk7QUFDMUUseUJBQXVCLEVBQUUsb0JBQW9CLHFCQUFxQixjQUFjLGVBQWUsWUFBWSxPQUFPLENBQUM7QUFDbkgsUUFBTSxtQkFBbUIsU0FBUyxTQUFTLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLElBQUksQ0FBQztBQUNwRixRQUFNLE1BQU0sTUFBTSxFQUFFLGNBQWMsNkJBQTZCLFFBQVEsSUFBSSxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUM7QUFFakcsUUFBTSxhQUFhLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLEdBQUcsY0FBYyxHQUFHLGtCQUFrQixHQUFHLG1CQUFtQixHQUFHO0FBQUEsSUFDMUg7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9qZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBydW5uaW5nIHRlc3RzIHVzaW5nIHRoZSBKZXN0IGZyYW1ld29yay5cbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7IE93bmVkT3B0aW9uIH0gZnJvbSAnLi9mb3J3YXJkZWQtYXJndW1lbnRzLnRzJztcblxuaW1wb3J0IHsgcmVhZFBhY2thZ2VKc29uIH0gZnJvbSAnLi4vbnBtLnRzJztcbmltcG9ydCB7IHJlc29sdmVUb29sQ29tbWFuZCB9IGZyb20gJy4uL3BhY2thZ2UtbWFuYWdlci50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuLi9yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBhc3NlcnROb093bmVkQXJndW1lbnRzIH0gZnJvbSAnLi9mb3J3YXJkZWQtYXJndW1lbnRzLnRzJztcbmltcG9ydCB7IGlzRXNtUGFja2FnZSB9IGZyb20gJy4vamVzdC1jb25maWcudHMnO1xuXG5jb25zdCBPV05FRF9PUFRJT05TOiByZWFkb25seSBPd25lZE9wdGlvbltdID0gW1xuICB7IG5hbWVzOiBbJy0tc2VsZWN0UHJvamVjdHMnLCAnLS1zZWxlY3QtcHJvamVjdHMnXSwgcmVwbGFjZW1lbnQ6ICd0aGUgYHByb2plY3RzYCBvcHRpb24nIH0sXG4gIHsgbmFtZXM6IFsnLS13YXRjaCcsICctLXdhdGNoQWxsJywgJy0td2F0Y2gtYWxsJ10sIHJlcGxhY2VtZW50OiAndGhlIGB0ZXN0V2F0Y2hgIHdyYXBwZXInIH0sXG4gIHtcbiAgICBuYW1lczogWyctLWNvdmVyYWdlJywgJy0tbm8tY292ZXJhZ2UnLCAnLS1jb2xsZWN0Q292ZXJhZ2UnLCAnLS1jb2xsZWN0LWNvdmVyYWdlJywgJy0tbm8tY29sbGVjdENvdmVyYWdlJywgJy0tY292ZXJhZ2VUaHJlc2hvbGQnLCAnLS1jb3ZlcmFnZS10aHJlc2hvbGQnXSxcbiAgICByZXBsYWNlbWVudDogJ3RoZSBgdGVzdENvdmVyYWdlYCB3cmFwcGVyIGFuZCBpdHMgYG1pbkNvdmVyYWdlSW5QZXJjZW50c2Agb3B0aW9uJ1xuICB9XG5dO1xuXG4vKipcbiAqIEV2ZXJ5IGZpbGUgamVzdCByZWFkcyBpdHMgY29uZmlndXJhdGlvbiBmcm9tLCBiZXNpZGVzIHRoZSBgamVzdGAga2V5IG9mIGBwYWNrYWdlLmpzb25gLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vamVzdGpzLmlvL2RvY3MvY29uZmlndXJhdGlvbn1cbiAqL1xuZXhwb3J0IGNvbnN0IEpFU1RfQ09ORklHX0ZJTEVfTkFNRVM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAnamVzdC5jb25maWcuY2pzJyxcbiAgJ2plc3QuY29uZmlnLmN0cycsXG4gICdqZXN0LmNvbmZpZy5qcycsXG4gICdqZXN0LmNvbmZpZy5qc29uJyxcbiAgJ2plc3QuY29uZmlnLm1qcycsXG4gICdqZXN0LmNvbmZpZy5tdHMnLFxuICAnamVzdC5jb25maWcudHMnXG5dO1xuXG4vKipcbiAqIFRoZSBOb2RlIGZsYWcgamVzdCdzIEVTTSBsb2FkZXIgbmVlZHM6IGl0IGlzIGJ1aWx0IG9uIGB2bS5TeW50aGV0aWNNb2R1bGVgLCB3aGljaCBOb2RlIG9ubHkgZXhwb3NlcyB1bmRlciBpdC5cbiAqIFdpdGhvdXQgaXQgZXZlcnkgRVNNIHN1aXRlIGZhaWxzIHRvIGxvYWQgd2l0aCBgTXVzdCB1c2UgaW1wb3J0IHRvIGxvYWQgRVMgTW9kdWxlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUcgPSAnLS1leHBlcmltZW50YWwtdm0tbW9kdWxlcyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cyB3aXRoIGNvdmVyYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb3ZlcmFnZU9wdGlvbnMgZXh0ZW5kcyBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIGNvdmVyYWdlIHBlcmNlbnRhZ2UgcmVxdWlyZWQsIGZvciBsaW5lcywgZnVuY3Rpb25zLCBicmFuY2hlcyBhbmQgc3RhdGVtZW50cyBhbGlrZS4gSWYgdGhlIGFjdHVhbCBjb3ZlcmFnZVxuICAgKiBmYWxscyBiZWxvdyBpdCwgamVzdCBleGl0cyB3aXRoIGEgbm9uLXplcm8gY29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDBgXG4gICAqL1xuICByZWFkb25seSBtaW5Db3ZlcmFnZUluUGVyY2VudHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGdXJ0aGVyIGplc3QgQ0xJIGFyZ3VtZW50cywgYXBwZW5kZWQgYWZ0ZXIgdGhlIHdyYXBwZXIncyBvd246IHRlc3QgcGF0aCBwYXR0ZXJucywgYC10YCwgYC0tbWF4V29ya2Vyc2AsIGAtLWJhaWxgLlxuICAgKiBBbiBhcmd1bWVudCBuYW1pbmcgYW4gb3B0aW9uIHRoZSB3cmFwcGVyIHNldHMgaXRzZWxmIChgLS1zZWxlY3RQcm9qZWN0c2AsIGAtLWNvdmVyYWdlKmAsIGAtLXdhdGNoKmApIHRocm93cy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxBcmd1bWVudHM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciBqZXN0IHJ1bnMgdGhlIHN1aXRlIGFzIEVTIG1vZHVsZXMsIHdoaWNoIGFkZHMge0BsaW5rIEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUd9IHRvIGBOT0RFX09QVElPTlNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWAgd2hlbiBgcGFja2FnZS5qc29uYCBkZWNsYXJlcyBgXCJ0eXBlXCI6IFwibW9kdWxlXCJgLCB0aGUgcnVsZSBgZGVmaW5lSmVzdENvbmZpZ2AgZm9sbG93cyB0b29cbiAgICovXG4gIHJlYWRvbmx5IGVzbT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0cyB0byBydW4sIGJ5IHRoZWlyIGBkaXNwbGF5TmFtZWAsIHBhc3NlZCB0byBqZXN0J3MgYC0tc2VsZWN0UHJvamVjdHNgLiBVbmxpa2Ugdml0ZXN0J3MgcnVubmVyLCBhIG5hbWVcbiAgICogbWF0Y2hlcyBvbmx5IGl0c2VsZjogamVzdCBoYXMgbm8gYG5hbWU6KmAgZm9ybS5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cyBpbiB3YXRjaCBtb2RlLlxuICovXG5leHBvcnQgdHlwZSBUZXN0V2F0Y2hPcHRpb25zID0gVGVzdE9wdGlvbnM7XG5cbi8qKlxuICogU2F5cyB3aGV0aGVyIHRoZSBwcm9qZWN0IGNvbmZpZ3VyZXMgamVzdC5cbiAqXG4gKiBAcmV0dXJucyBXaGV0aGVyIGEgamVzdCBjb25maWd1cmF0aW9uIGZpbGUsIG9yIGEgYGplc3RgIGtleSBpbiBgcGFja2FnZS5qc29uYCwgZXhpc3RzIGF0IHRoZSBwcm9qZWN0IHJvb3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYXNKZXN0Q29uZmlnKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoSkVTVF9DT05GSUdfRklMRV9OQU1FUy5zb21lKChmaWxlTmFtZSkgPT4gZXhpc3RzU3luYyhyZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGZpbGVOYW1lIH0pKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICghZXhpc3RzU3luYyhyZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IFJlcG9QYXRocy5QYWNrYWdlSnNvbiB9KSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwYWNrYWdlSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSnNvbigpO1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihwYWNrYWdlSnNvbiwgJ2plc3QnKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSB0ZXN0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3Qob3B0aW9uczogVGVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBydW5KZXN0KFtdLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIHdpdGggY292ZXJhZ2UuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjb3ZlcmFnZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RDb3ZlcmFnZShvcHRpb25zOiBUZXN0Q292ZXJhZ2VPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdGhyZXNob2xkID0gb3B0aW9ucy5taW5Db3ZlcmFnZUluUGVyY2VudHMgPz8gMDtcbiAgY29uc3QgY292ZXJhZ2VUaHJlc2hvbGQgPSB7XG4gICAgZ2xvYmFsOiB7XG4gICAgICBicmFuY2hlczogdGhyZXNob2xkLFxuICAgICAgZnVuY3Rpb25zOiB0aHJlc2hvbGQsXG4gICAgICBsaW5lczogdGhyZXNob2xkLFxuICAgICAgc3RhdGVtZW50czogdGhyZXNob2xkXG4gICAgfVxuICB9O1xuICBhd2FpdCBydW5KZXN0KFsnLS1jb3ZlcmFnZScsIGAtLWNvdmVyYWdlVGhyZXNob2xkPSR7SlNPTi5zdHJpbmdpZnkoY292ZXJhZ2VUaHJlc2hvbGQpfWBdLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIGluIHdhdGNoIG1vZGUsIHJlLXJ1bm5pbmcgdGhlIHRlc3RzIHRoZSBjaGFuZ2VkIGZpbGVzIGFmZmVjdC4gSmVzdCBuZWVkcyBhIGdpdCBvciBNZXJjdXJpYWxcbiAqIHJlcG9zaXRvcnkgZm9yIHRoYXQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHRlc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHdhdGNoZXIgZXhpdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2F0Y2gob3B0aW9uczogVGVzdFdhdGNoT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJ1bkplc3QoWyctLXdhdGNoJ10sIG9wdGlvbnMsIHRydWUpO1xufVxuXG4vKipcbiAqIEFwcGVuZHMge0BsaW5rIEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUd9IHRvIGEgYE5PREVfT1BUSU9OU2AgdmFsdWUsIGtlZXBpbmcgd2hhdGV2ZXIgaXQgYWxyZWFkeSBob2xkcy5cbiAqXG4gKiBAcGFyYW0gbm9kZU9wdGlvbnMgLSBUaGUgaW5oZXJpdGVkIGBOT0RFX09QVElPTlNgLlxuICogQHJldHVybnMgVGhlIGBOT0RFX09QVElPTlNgIGplc3QgcnVucyB3aXRoLlxuICovXG5mdW5jdGlvbiBhZGRFeHBlcmltZW50YWxWbU1vZHVsZXNGbGFnKG5vZGVPcHRpb25zID0gJycpOiBzdHJpbmcge1xuICBjb25zdCBmbGFncyA9IG5vZGVPcHRpb25zLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICBpZiAoIWZsYWdzLmluY2x1ZGVzKEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUcpKSB7XG4gICAgZmxhZ3MucHVzaChFWFBFUklNRU5UQUxfVk1fTU9EVUxFU19GTEFHKTtcbiAgfVxuXG4gIHJldHVybiBmbGFncy5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogUnVucyB0aGUgamVzdCBDTEkgZnJvbSB0aGUgcHJvamVjdCByb290LlxuICpcbiAqIEBwYXJhbSBydW5Bcmd1bWVudHMgLSBUaGUgYXJndW1lbnRzIHRoYXQgc2VsZWN0IHdoYXQgamVzdCBkb2VzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIFRlc3RPcHRpb25zfS5cbiAqIEBwYXJhbSBpc0ludGVyYWN0aXZlIC0gV2hldGhlciBqZXN0IGdldHMgdGhlIHRlcm1pbmFsLCBhcyBpdHMgd2F0Y2ggbW9kZSBuZWVkcyB0byByZWFkIGtleXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gamVzdCBleGl0cy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuSmVzdChydW5Bcmd1bWVudHM6IHN0cmluZ1tdLCBvcHRpb25zOiBUZXN0T3B0aW9ucywgaXNJbnRlcmFjdGl2ZSA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYWRkaXRpb25hbEFyZ3VtZW50cyA9IFtdLCBlc20gPSBpc0VzbVBhY2thZ2UoKSwgcHJvamVjdHMgPSBbXSB9ID0gb3B0aW9ucztcbiAgYXNzZXJ0Tm9Pd25lZEFyZ3VtZW50cyh7IGZvcndhcmRlZEFyZ3VtZW50czogYWRkaXRpb25hbEFyZ3VtZW50cywgb3duZWRPcHRpb25zOiBPV05FRF9PUFRJT05TLCBydW5uZXJOYW1lOiAnamVzdCcgfSk7XG4gIGNvbnN0IHByb2plY3RBcmd1bWVudHMgPSBwcm9qZWN0cy5sZW5ndGggPiAwID8gWyctLXNlbGVjdFByb2plY3RzJywgLi4ucHJvamVjdHNdIDogW107XG4gIGNvbnN0IGVudiA9IGVzbSA/IHsgTk9ERV9PUFRJT05TOiBhZGRFeHBlcmltZW50YWxWbU1vZHVsZXNGbGFnKHByb2Nlc3MuZW52WydOT0RFX09QVElPTlMnXSkgfSA6IHt9O1xuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ2plc3QnIH0pLCAuLi5ydW5Bcmd1bWVudHMsIC4uLnByb2plY3RBcmd1bWVudHMsIC4uLmFkZGl0aW9uYWxBcmd1bWVudHNdLCB7XG4gICAgZW52LFxuICAgIGlzSW50ZXJhY3RpdmVcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQU1BLFNBQVMsa0JBQWtCO0FBQzNCLE9BQU8sYUFBYTtBQUlwQixTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLGlCQUFpQjtBQUMxQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsb0JBQW9CO0FBRTdCLE1BQU0sZ0JBQXdDO0FBQUEsRUFDNUMsRUFBRSxPQUFPLENBQUMsb0JBQW9CLG1CQUFtQixHQUFHLGFBQWEsd0JBQXdCO0FBQUEsRUFDekYsRUFBRSxPQUFPLENBQUMsV0FBVyxjQUFjLGFBQWEsR0FBRyxhQUFhLDBCQUEwQjtBQUFBLEVBQzFGO0FBQUEsSUFDRSxPQUFPLENBQUMsY0FBYyxpQkFBaUIscUJBQXFCLHNCQUFzQix3QkFBd0IsdUJBQXVCLHNCQUFzQjtBQUFBLElBQ3ZKLGFBQWE7QUFBQSxFQUNmO0FBQ0Y7QUFPTyxNQUFNLHlCQUE0QztBQUFBLEVBQ3ZEO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFNTyxNQUFNLCtCQUErQjtBQWlENUMsZUFBc0IsZ0JBQWtDO0FBQ3RELE1BQUksdUJBQXVCLEtBQUssQ0FBQyxhQUFhLFdBQVcsd0JBQXdCLEVBQUUsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDdEcsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLENBQUMsV0FBVyx3QkFBd0IsRUFBRSxNQUFNLFVBQVUsWUFBWSxDQUFDLENBQUMsR0FBRztBQUN6RSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sY0FBYyxNQUFNLGdCQUFnQjtBQUMxQyxTQUFPLE9BQU8sT0FBTyxhQUFhLE1BQU07QUFDMUM7QUFRQSxlQUFzQixLQUFLLFVBQXVCLENBQUMsR0FBa0I7QUFDbkUsUUFBTSxRQUFRLENBQUMsR0FBRyxPQUFPO0FBQzNCO0FBUUEsZUFBc0IsYUFBYSxVQUErQixDQUFDLEdBQWtCO0FBQ25GLFFBQU0sWUFBWSxRQUFRLHlCQUF5QjtBQUNuRCxRQUFNLG9CQUFvQjtBQUFBLElBQ3hCLFFBQVE7QUFBQSxNQUNOLFVBQVU7QUFBQSxNQUNWLFdBQVc7QUFBQSxNQUNYLE9BQU87QUFBQSxNQUNQLFlBQVk7QUFBQSxJQUNkO0FBQUEsRUFDRjtBQUNBLFFBQU0sUUFBUSxDQUFDLGNBQWMsdUJBQXVCLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsT0FBTztBQUNuRztBQVNBLGVBQXNCLFVBQVUsVUFBNEIsQ0FBQyxHQUFrQjtBQUM3RSxRQUFNLFFBQVEsQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJO0FBQzFDO0FBUUEsU0FBUyw2QkFBNkIsY0FBYyxJQUFZO0FBQzlELFFBQU0sUUFBUSxZQUFZLE1BQU0sS0FBSyxFQUFFLE9BQU8sT0FBTztBQUNyRCxNQUFJLENBQUMsTUFBTSxTQUFTLDRCQUE0QixHQUFHO0FBQ2pELFVBQU0sS0FBSyw0QkFBNEI7QUFBQSxFQUN6QztBQUVBLFNBQU8sTUFBTSxLQUFLLEdBQUc7QUFDdkI7QUFVQSxlQUFlLFFBQVEsY0FBd0IsU0FBc0IsZ0JBQWdCLE9BQXNCO0FBQ3pHLFFBQU0sRUFBRSxzQkFBc0IsQ0FBQyxHQUFHLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxFQUFFLElBQUk7QUFDMUUseUJBQXVCLEVBQUUsb0JBQW9CLHFCQUFxQixjQUFjLGVBQWUsWUFBWSxPQUFPLENBQUM7QUFDbkgsUUFBTSxtQkFBbUIsU0FBUyxTQUFTLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLElBQUksQ0FBQztBQUNwRixRQUFNLE1BQU0sTUFBTSxFQUFFLGNBQWMsNkJBQTZCLFFBQVEsSUFBSSxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUM7QUFFakcsUUFBTSxhQUFhLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLEdBQUcsY0FBYyxHQUFHLGtCQUFrQixHQUFHLG1CQUFtQixHQUFHO0FBQUEsSUFDMUg7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -79,7 +79,7 @@ async function compareWithUpstream(entry, dependencies) {
|
|
|
79
79
|
}
|
|
80
80
|
const compare = await dependencies.fetchJson(`https://api.github.com/repos/${entry.repo}/compare/${entry.commit}...${head}`);
|
|
81
81
|
const files = compare.files ?? [];
|
|
82
|
-
const touched = new Set(files.flatMap((file) => file.previous_filename === void 0 ?
|
|
82
|
+
const touched = new Set(files.flatMap((file) => file.previous_filename === void 0 ? file.filename : [file.filename, file.previous_filename]));
|
|
83
83
|
const changedPaths = [...touched].filter((path) => entry.paths.some((glob) => matchesGlob(path, glob))).sort();
|
|
84
84
|
const isTruncated = files.length >= COMPARE_FILE_LIMIT;
|
|
85
85
|
return {
|
|
@@ -291,4 +291,4 @@ export {
|
|
|
291
291
|
syncUpstreams,
|
|
292
292
|
writePin
|
|
293
293
|
};
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Vwc3RyZWFtLXN5bmMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBXYXRjaGVzIHRoZSB1cHN0cmVhbXMgYSByZXBvc2l0b3J5IG1pcnJvcnMgYW5kIG9wZW5zIG9uZSB1cGRhdGUgUFIgcGVyIHVwc3RyZWFtIHRoYXQgbW92ZWQuXG4gKlxuICogRXZlcnl0aGluZyBoZXJlIGlzIGRyaXZlbiBieSBgdXBzdHJlYW1zLmpzb25gIGFuZCB0aGUgaGFuZGxlciBjb21tYW5kcyBpdCBuYW1lcywgc28gYW55IHJlcG9zaXRvcnkgdGhhdCB2ZW5kb3JzXG4gKiB1cHN0cmVhbSBjb2RlIGNhbiB1c2UgaXQ6IHRocm91Z2ggdGhlIGBzeW5jLXVwc3RyZWFtc2AgYmluLCBvciB0aGUgcmV1c2FibGUgYHN5bmMtdXBzdHJlYW1zLnltbGAgd29ya2Zsb3cuXG4gKi9cblxuaW1wb3J0IHtcbiAgcmVhZEZpbGVTeW5jLFxuICB3cml0ZUZpbGVTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgbWF0Y2hlc0dsb2IgfSBmcm9tICdub2RlOnBhdGgnO1xuXG4vKipcbiAqIFdoYXQgYSBjb21tYW5kIHByaW50ZWQgYW5kIGhvdyBpdCBleGl0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZFJlc3VsdCB7XG4gIHJlYWRvbmx5IGV4aXRDb2RlOiBudW1iZXI7XG4gIHJlYWRvbmx5IG91dHB1dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIHVwc3RyZWFtIGZvbGxvd2VkIG9uIGEgR2l0SHViIGJyYW5jaCBvciB0YWcsIHBpbm5lZCB0byBhIGNvbW1pdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRVcHN0cmVhbUVudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBwaW5uZWQgY29tbWl0OiB0aGUgbGFzdCB1cHN0cmVhbSBzdGF0ZSB0aGUgaGFuZGxlciB3YXMgcnVuIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBjb21taXQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzaGVsbCBjb21tYW5kIHRoYXQgdHVybnMgYSBuZXdlciB1cHN0cmVhbSBzdGF0ZSBpbnRvIGNoYW5nZXMgaW4gdGhpcyByZXBvc2l0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlcjogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcGF0aHMgd2F0Y2hlZCB1cHN0cmVhbSwgYXMgZ2xvYnMgcmVsYXRpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdC4gQSBtb3ZlIHRoYXQgdG91Y2hlcyBub25lIG9mIHRoZW0gb3BlbnMgbm8gUFIuXG4gICAqL1xuICByZWFkb25seSBwYXRoczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgYnJhbmNoIG9yIHRhZyBmb2xsb3dlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlZjogc3RyaW5nO1xuICAvKipcbiAgICogYDxvd25lcj4vPHJlcG8+YCBvbiBHaXRIdWIuXG4gICAqL1xuICByZWFkb25seSByZXBvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hlbGwgY29tbWFuZCB0aGF0IGNoZWNrcyB0aGUgaGFuZGxlcidzIHJlc3VsdC4gT3ZlcnJpZGVzIHRoZSBmaWxlJ3MgdG9wLWxldmVsIGB2ZXJpZnlgLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIHVwc3RyZWFtIGZvbGxvd2VkIGFzIGFuIG5wbSBwYWNrYWdlJ3MgZGlzdC10YWcsIHBpbm5lZCB0byBhIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnBtVXBzdHJlYW1FbnRyeSB7XG4gIHJlYWRvbmx5IGhhbmRsZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhY2thZ2UgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG5wbTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRpc3QtdGFnIGZvbGxvd2VkLiBgbGF0ZXN0YCB3aGVuIGFic2VudC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyaWZ5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBpbm5lZCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZXJ5dGhpbmcgdGhlIHN5bmMgZG9lcyB0byB0aGUgb3V0c2lkZSB3b3JsZCwgc28gYSB0ZXN0IGNhbiBzdGFuZCBhIGZpeHR1cmUgaW4gZm9yIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bmNEZXBlbmRlbmNpZXMge1xuICAvKipcbiAgICogUnVucyBhbiBleGVjdXRhYmxlIHdpdGggYXJndW1lbnRzIGFuZCBubyBzaGVsbC5cbiAgICovXG4gIHJlYWRvbmx5IGV4ZWM6IChmaWxlOiBzdHJpbmcsIGFyZ3VtZW50c186IHJlYWRvbmx5IHN0cmluZ1tdLCBlbnY/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PikgPT4gQ29tbWFuZFJlc3VsdDtcbiAgLyoqXG4gICAqIEdFVHMgYSBVUkwgYW5kIHBhcnNlcyB0aGUgSlNPTiBpdCByZXR1cm5zLCB0aHJvd2luZyBvbiBhbiBIVFRQIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hKc29uOiAodXJsOiBzdHJpbmcpID0+IFByb21pc2U8dW5rbm93bj47XG4gIHJlYWRvbmx5IGxvZzogKHRleHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJ1bnMgYSBjb21tYW5kIGxpbmUgdGhyb3VnaCB0aGUgc2hlbGw6IGEgaGFuZGxlciBvciBhIHZlcmlmeSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGw6IChjb21tYW5kOiBzdHJpbmcsIGVudj86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KSA9PiBDb21tYW5kUmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBQUiBhbiB1cHN0cmVhbSBtb3ZlIGFza3MgZm9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bmNQbGFuIHtcbiAgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YXR1czogVXBzdHJlYW1TdGF0dXM7XG4gIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2hhdCBoYXBwZW5lZCB0byBvbmUgZW50cnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3luY1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBTZXQgd2hlbiBjaGVja2luZyBvciBhcHBseWluZyB0aHJldzogdGhlIGpvYiByZXBvcnRzIGl0IGFuZCBtb3ZlcyBvbiB0byB0aGUgbmV4dCBlbnRyeS5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgcGxhbm5lZGAgaW4gYSBkcnkgcnVuLCBgb3BlbmVkYC9gdXBkYXRlZGAgd2hlbiBhIFBSIHdhcyBwdXNoZWQsIGB1bmNoYW5nZWRgIHdoZW4gdGhlIGJyYW5jaCBhbHJlYWR5IGhlbGQgdGhpcyByZXN1bHQuXG4gICAqL1xuICByZWFkb25seSBvdXRjb21lOiAnY3VycmVudCcgfCAnZXJyb3InIHwgJ29wZW5lZCcgfCAncGxhbm5lZCcgfCAndW5jaGFuZ2VkJyB8ICd1bndhdGNoZWQnIHwgJ3VwZGF0ZWQnO1xuICByZWFkb25seSBwck51bWJlcj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBXaGF0IHtAbGluayBzeW5jVXBzdHJlYW1zfSBzeW5jcywgYW5kIGhvdy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW5jVXBzdHJlYW1zT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYnJhbmNoIGVhY2ggUFIgdGFyZ2V0cyBhbmQgZWFjaCB1cGRhdGUgYnJhbmNoIGlzIGN1dCBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUJyYW5jaDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhdGggdG8gYHVwc3RyZWFtcy5qc29uYCwgd2hpY2ggdGhlIHN5bmMgdXBkYXRlcyB0aGUgcGluIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnUGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogUGxhbiBhbmQgcHJpbnQgZXZlcnkgUFIsIGFuZCBjaGFuZ2Ugbm90aGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9ubHkgdGhlIGVudHJpZXMgd2l0aCB0aGVzZSBuYW1lcywgb3IgZXZlcnkgZW50cnkgd2hlbiBlbXB0eS5cbiAgICovXG4gIHJlYWRvbmx5IG9ubHk6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9uZSB1cHN0cmVhbSB0aGF0IGB1cHN0cmVhbXMuanNvbmAgbGlzdHM6IGEgZ2l0IG9uZSBvciBhbiBucG0gb25lLlxuICovXG5leHBvcnQgdHlwZSBVcHN0cmVhbUVudHJ5ID0gR2l0VXBzdHJlYW1FbnRyeSB8IE5wbVVwc3RyZWFtRW50cnk7XG5cbi8qKlxuICogVGhlIGNvbnRlbnQgb2YgYHVwc3RyZWFtcy5qc29uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcHN0cmVhbXNDb25maWcge1xuICByZWFkb25seSB1cHN0cmVhbXM6IHJlYWRvbmx5IFVwc3RyZWFtRW50cnlbXTtcbiAgLyoqXG4gICAqIFRoZSBzaGVsbCBjb21tYW5kIHRoYXQgY2hlY2tzIGV2ZXJ5IGhhbmRsZXIncyByZXN1bHQsIHVubGVzcyBhbiBlbnRyeSBuYW1lcyBpdHMgb3duLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoYXQgb25lIGNvbXBhcmlzb24gb2YgYW4gZW50cnkgd2l0aCBpdHMgdXBzdHJlYW0gZm91bmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBzdHJlYW1TdGF0dXMge1xuICAvKipcbiAgICogVGhlIHVwc3RyZWFtIHBhdGhzIHRoYXQgY2hhbmdlZCBhbmQgYXJlIHdhdGNoZWQsIHNvcnRlZC4gQWx3YXlzIGVtcHR5IGZvciBhbiBucG0gdXBzdHJlYW0uXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VkUGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKipcbiAgICogQSBsaW5rIHRoYXQgc2hvd3Mgd2hhdCBjaGFuZ2VkIGJldHdlZW4gdGhlIHBpbiBhbmQgdGhlIGhlYWQuXG4gICAqL1xuICByZWFkb25seSBjb21wYXJlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudHJ5OiBVcHN0cmVhbUVudHJ5O1xuICAvKipcbiAgICogVGhlIGNvbW1pdCBvciB2ZXJzaW9uIHRoZSB1cHN0cmVhbSBpcyBhdCBub3cuXG4gICAqL1xuICByZWFkb25seSBoZWFkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IG9yIHZlcnNpb24gYHVwc3RyZWFtcy5qc29uYCByZWNvcmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGluOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgY3VycmVudGA6IG5vdGhpbmcgdG8gZG8uIGBtb3ZlZGA6IGEgUFIgaXMgZHVlLiBgdW53YXRjaGVkYDogdXBzdHJlYW0gbW92ZWQsIGJ1dCBubyB3YXRjaGVkIHBhdGggY2hhbmdlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlOiAnY3VycmVudCcgfCAnbW92ZWQnIHwgJ3Vud2F0Y2hlZCc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIEdpdEh1YiB0cnVuY2F0ZWQgdGhlIGNvbXBhcmUncyBmaWxlIGxpc3QsIHNvIGEgd2F0Y2hlZCBwYXRoIG1heSBiZSBtaXNzaW5nIGZyb20gYGNoYW5nZWRQYXRoc2AuXG4gICAqL1xuICByZWFkb25seSB0cnVuY2F0ZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBHaXRIdWJDb21taXQge1xuICByZWFkb25seSBzaGE6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdpdEh1YkNvbXBhcmUge1xuICByZWFkb25seSBmaWxlcz86IHJlYWRvbmx5IEdpdEh1YkNvbXBhcmVGaWxlW107XG59XG5cbi8qKlxuICogT25lIGZpbGUgb2YgYSBHaXRIdWIgY29tcGFyZSwgYXMgdGhlIEFQSSBzcGVsbHMgaXQuXG4gKi9cbmludGVyZmFjZSBHaXRIdWJDb21wYXJlRmlsZSB7XG4gIHJlYWRvbmx5IGZpbGVuYW1lOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgcHJldmlvdXNfZmlsZW5hbWU/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBOcG1QYWNrdW1lbnQge1xuICByZWFkb25seSAnZGlzdC10YWdzJzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuaW50ZXJmYWNlIFN0ZXBSZXN1bHQge1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlc3VsdDogQ29tbWFuZFJlc3VsdDtcbn1cblxuLyoqXG4gKiBUaGUgaGFuZGxlciBhbmQgdmVyaWZ5IHJ1bnMgYSBQUiBib2R5IHJlcG9ydHMuXG4gKi9cbmludGVyZmFjZSBTdGVwUmVzdWx0cyB7XG4gIHJlYWRvbmx5IGhhbmRsZXI6IFN0ZXBSZXN1bHQ7XG4gIHJlYWRvbmx5IHZlcmlmeTogbnVsbCB8IFN0ZXBSZXN1bHQ7XG59XG5cbi8qKlxuICogYHVwc3RyZWFtcy5qc29uYCByZWFkIGxvb3NlbHksIHRvIHdyaXRlIG9uZSB2YWx1ZSBiYWNrIHdpdGhvdXQgZGlzdHVyYmluZyB0aGUgcmVzdC5cbiAqL1xuaW50ZXJmYWNlIFVwc3RyZWFtc0ZpbGVTaGFwZSB7XG4gIHJlYWRvbmx5IHVwc3RyZWFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn1cblxuLyoqXG4gKiBHaXRIdWIncyBjb21wYXJlIEFQSSBsaXN0cyBhdCBtb3N0IHRoaXMgbWFueSBmaWxlcywgYW5kIHNheXMgbm90aGluZyB3aGVuIGl0IHN0b3BzLlxuICovXG5jb25zdCBDT01QQVJFX0ZJTEVfTElNSVQgPSAzMDA7XG5cbmNvbnN0IFNIT1JUX1NIQV9MRU5HVEggPSAxMjtcblxuLyoqXG4gKiBUaGUgdGFpbCBvZiBhIGNvbW1hbmQncyBvdXRwdXQgYSBQUiBib2R5IHF1b3RlczogZW5vdWdoIHRvIHJlYWQgYSBmYWlsdXJlLCBzaG9ydCBlbm91Z2ggdG8gc3RheSB1bmRlciBHaXRIdWIncyBib2R5IGxpbWl0LlxuICovXG5jb25zdCBPVVRQVVRfVEFJTF9MSU5FUyA9IDYwO1xuXG4vKipcbiAqIFRoZSBtb3N0IGxpbmVzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBhIGZhaWxlZCBzdGVwJ3Mgc2VjdGlvbiBvcGVucyB3aXRoLCBhaGVhZCBvZiBpdHMgb3V0cHV0IHRhaWwuXG4gKi9cbmNvbnN0IEZBSUxVUkVfTElORV9MSU1JVCA9IDIwO1xuXG5jb25zdCBKU09OX0lOREVOVF9TUEFDRVMgPSAyO1xuXG4vKipcbiAqIFRoZSBFU0MgdGhhdCBvcGVucyBhIHRlcm1pbmFsIGNvbnRyb2wgc2VxdWVuY2UsIGVpdGhlciBhcyB0aGUgYnl0ZSBvciBhcyB0aGUgY2FyZXQgdGV4dCBgXltgIGEgbG9nIHZpZXdlciBvciBhblxuICogZWFybGllciBjb3B5IHR1cm5lZCBpdCBpbnRvLiBCb3RoIHJlYWNoZWQgYSBQUiBib2R5OiBjcmVhdGUtb2JzaWRpYW4tcGx1Z2luIzIgY2FycmllZCB0aGUgY2FyZXQgZm9ybS5cbiAqL1xuY29uc3QgRVNDID0gU3RyaW5nLnJhd2AoPzpcXHUwMDFCfFxcXlxcWylgO1xuXG4vKipcbiAqIENvbnRyb2wgU2VxdWVuY2UgSW50cm9kdWNlciBzZXF1ZW5jZXMgKGNvbG9ycywgY3Vyc29yIG1vdmVzKSwgT3BlcmF0aW5nIFN5c3RlbSBDb21tYW5kIHNlcXVlbmNlcyAoaHlwZXJsaW5rcyxcbiAqIHRpdGxlcywgZW5kZWQgYnkgQkVMIG9yIFNULCBhbHNvIGFzIGBeR2ApLCBhbmQgdGhlIHR3by1jaGFyYWN0ZXIgZXNjYXBlcy4gQSB0d28tY2hhcmFjdGVyIGVzY2FwZSBpcyBtYXRjaGVkIG9ubHkgYXNcbiAqIHRoZSBieXRlLCBiZWNhdXNlIGl0cyBjYXJldCB0ZXh0IGFsc28gc3BlbGxzIGFuIG9yZGluYXJ5IHJlZ3VsYXIgZXhwcmVzc2lvbiwgc3VjaCBhcyBgXltBLVpdYC5cbiAqL1xuY29uc3QgVEVSTUlOQUxfQ09OVFJPTF9SRUdfRVhQID0gbmV3IFJlZ0V4cChcbiAgU3RyaW5nLnJhd2Ake0VTQ31cXFtbMC0/XSpbIC0vXSpbQC1+XXwke0VTQ31cXF1bXlxcdTAwMDdcXHUwMDFCXl0qKD86XFx1MDAwN3xcXF5HfCR7RVNDfVxcXFwpfFxcdTAwMUJbQC1aXFxcXC1fXWAsXG4gICdnJ1xuKTtcblxuLyoqXG4gKiBBIGxpbmUgdGhhdCByZXBvcnRzIGEgZmFpbHVyZSwgd2hpY2ggYSBmYWlsZWQgc3RlcCdzIHNlY3Rpb24gcXVvdGVzIGZpcnN0LCBiZWNhdXNlIHRoZSB0YWlsIG1heSBiZSBhIGdyZWVuIHRlc3QgcnVuXG4gKiB0aGF0IGZpbmlzaGVkIGFmdGVyIGl0LlxuICovXG5jb25zdCBGQUlMVVJFX0xJTkVfUkVHX0VYUCA9IC9zdGVwLWZhaWxlZHxcXGJmYWlsKD86c3xlZHx1cmV8aW5nKT9cXGJ8XFxiZXJyb3JcXGJ8XFxibm90IGZvdW5kXFxifFxcYkVSUiF8W1x1MjcxN1x1MDBEN10vaTtcblxuLyoqXG4gKiBXcml0ZXMgdGhlIFBSIGJvZHkuXG4gKlxuICogQHBhcmFtIHBsYW4gLSBUaGUgcGxhbi5cbiAqIEBwYXJhbSBzdGVwcyAtIFRoZSBoYW5kbGVyIGFuZCB2ZXJpZnkgcnVucywgb3IgYG51bGxgIGluIGEgZHJ5IHJ1biwgd2hlcmUgbmVpdGhlciBydW5zLlxuICogQHBhcmFtIGRpZmZTdGF0IC0gYGdpdCBkaWZmIC0tc3RhdGAgb2YgdGhlIHVwZGF0ZSBjb21taXQsIG9yIGBudWxsYCBpbiBhIGRyeSBydW4uXG4gKiBAcmV0dXJucyBUaGUgYm9keSwgaW4gTWFya2Rvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByQm9keShwbGFuOiBTeW5jUGxhbiwgc3RlcHM6IG51bGwgfCBTdGVwUmVzdWx0cywgZGlmZlN0YXQ6IG51bGwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB7IGVudHJ5LCBoZWFkLCBwaW4gfSA9IHBsYW4uc3RhdHVzO1xuICBjb25zdCBzb3VyY2UgPSBpc0dpdFVwc3RyZWFtKGVudHJ5KSA/IGBcXGAke2VudHJ5LnJlcG99QCR7ZW50cnkucmVmfVxcYGAgOiBgbnBtIFxcYCR7ZW50cnkubnBtfUAke2VudHJ5LnRhZyA/PyAnbGF0ZXN0J31cXGBgO1xuICBjb25zdCBsaW5lcyA9IFtcbiAgICBgVXBzdHJlYW0gXFxgJHtlbnRyeS5uYW1lfVxcYCBtb3ZlZDogJHtzb3VyY2V9IGZyb20gXFxgJHtwaW59XFxgIHRvIFxcYCR7aGVhZH1cXGAuYCxcbiAgICAnJyxcbiAgICBgQ29tcGFyZTogJHtwbGFuLnN0YXR1cy5jb21wYXJlVXJsfWAsXG4gICAgJydcbiAgXTtcblxuICBpZiAoaXNHaXRVcHN0cmVhbShlbnRyeSkpIHtcbiAgICBsaW5lcy5wdXNoKCcjIyMgQ2hhbmdlZCB1cHN0cmVhbSBmaWxlcycsICcnLCAuLi5wbGFuLnN0YXR1cy5jaGFuZ2VkUGF0aHMubWFwKChwYXRoKSA9PiBgLSBcXGAke3BhdGh9XFxgYCkpO1xuICAgIGlmIChwbGFuLnN0YXR1cy50cnVuY2F0ZWQpIHtcbiAgICAgIGxpbmVzLnB1c2goYC0gR2l0SHViIGxpc3RzIGF0IG1vc3QgJHtTdHJpbmcoQ09NUEFSRV9GSUxFX0xJTUlUKX0gZmlsZXM6IG9wZW4gdGhlIGNvbXBhcmUgbGluayBmb3IgdGhlIHJlc3QuYCk7XG4gICAgfVxuICAgIGxpbmVzLnB1c2goJycpO1xuICB9XG5cbiAgaWYgKHN0ZXBzID09PSBudWxsKSB7XG4gICAgbGluZXMucHVzaCgnIyMjIEhhbmRsZXInLCAnJywgYFxcYCR7ZW50cnkuaGFuZGxlcn1cXGA6IG5vdCBydW4gKGRyeSBydW4pLmAsICcnKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKC4uLmRlc2NyaWJlU3RlcCgnSGFuZGxlcicsIHN0ZXBzLmhhbmRsZXIpKTtcbiAgICBpZiAoc3RlcHMudmVyaWZ5ICE9PSBudWxsKSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLmRlc2NyaWJlU3RlcCgnVmVyaWZ5Jywgc3RlcHMudmVyaWZ5KSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpZmZTdGF0ICE9PSBudWxsKSB7XG4gICAgbGluZXMucHVzaCgnIyMjIEdlbmVyYXRlZCBjaGFuZ2VzJywgJycsICdgYGB0ZXh0JywgY2xlYW5Db21tYW5kT3V0cHV0KGRpZmZTdGF0KS50cmltRW5kKCksICdgYGAnLCAnJyk7XG4gIH1cblxuICBsaW5lcy5wdXNoKCdUaGlzIFBSIHdhcyBvcGVuZWQgYnkgdGhlIHVwc3RyZWFtLXN5bmMgam9iIGFuZCBpcyBuZXZlciBtZXJnZWQgYXV0b21hdGljYWxseS4nKTtcbiAgcmV0dXJuIGAke2xpbmVzLmpvaW4oJ1xcbicpfVxcbmA7XG59XG5cbi8qKlxuICogVHVybnMgYSBjb21tYW5kJ3MgY2FwdHVyZWQgb3V0cHV0IGludG8gcGxhaW4gdGV4dCBhIFBSIGJvZHkgY2FuIHF1b3RlOiB0ZXJtaW5hbCBjb250cm9sIHNlcXVlbmNlcyBhcmUgcmVtb3ZlZCxcbiAqIHdoZXRoZXIgdGhleSBhcnJpdmVkIGFzIEVTQyBieXRlcyBvciBhcyB0aGVpciBjYXJldC1yZW5kZXJlZCBgXltbLi4ubWAgdGV4dCwgYW5kIGEgbGluZSBhIHByb2dyZXNzIGRpc3BsYXkgcmV3cm90ZVxuICogd2l0aCBgXFxyYCBrZWVwcyBvbmx5IGl0cyBsYXN0IHN0YXRlLlxuICpcbiAqIEBwYXJhbSBvdXRwdXQgLSBUaGUgY2FwdHVyZWQgb3V0cHV0LlxuICogQHJldHVybnMgVGhlIHBsYWluIHRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkNvbW1hbmRPdXRwdXQob3V0cHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gb3V0cHV0XG4gICAgLnJlcGxhY2VBbGwoVEVSTUlOQUxfQ09OVFJPTF9SRUdfRVhQLCAnJylcbiAgICAucmVwbGFjZUFsbCgnXFxyXFxuJywgJ1xcbicpXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHRvTGFzdExpbmVTdGF0ZShsaW5lKSlcbiAgICAuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogQ29tcGFyZXMgb25lIGVudHJ5IHdpdGggaXRzIHVwc3RyZWFtLlxuICpcbiAqIEBwYXJhbSBlbnRyeSAtIFRoZSBlbnRyeS5cbiAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgLSBUaGUgb3V0c2lkZSB3b3JsZC5cbiAqIEByZXR1cm5zIFdoYXQgdGhlIGNvbXBhcmlzb24gZm91bmQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb21wYXJlV2l0aFVwc3RyZWFtKGVudHJ5OiBVcHN0cmVhbUVudHJ5LCBkZXBlbmRlbmNpZXM6IFBpY2s8U3luY0RlcGVuZGVuY2llcywgJ2ZldGNoSnNvbic+KTogUHJvbWlzZTxVcHN0cmVhbVN0YXR1cz4ge1xuICBpZiAoIWlzR2l0VXBzdHJlYW0oZW50cnkpKSB7XG4gICAgY29uc3QgdGFnID0gZW50cnkudGFnID8/ICdsYXRlc3QnO1xuICAgIGNvbnN0IHBhY2t1bWVudCA9IGF3YWl0IGRlcGVuZGVuY2llcy5mZXRjaEpzb24oYGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyR7ZW50cnkubnBtLnJlcGxhY2UoJy8nLCAnJTJmJyl9YCkgYXMgTnBtUGFja3VtZW50O1xuICAgIGNvbnN0IGhlYWQgPSBwYWNrdW1lbnRbJ2Rpc3QtdGFncyddW3RhZ107XG4gICAgaWYgKGhlYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBucG0gcGFja2FnZSAke2VudHJ5Lm5wbX0gaGFzIG5vIGRpc3QtdGFnIFwiJHt0YWd9XCIuYCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjaGFuZ2VkUGF0aHM6IFtdLFxuICAgICAgY29tcGFyZVVybDogYGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlLyR7ZW50cnkubnBtfS92LyR7aGVhZH1gLFxuICAgICAgZW50cnksXG4gICAgICBoZWFkLFxuICAgICAgcGluOiBlbnRyeS52ZXJzaW9uLFxuICAgICAgc3RhdGU6IGhlYWQgPT09IGVudHJ5LnZlcnNpb24gPyAnY3VycmVudCcgOiAnbW92ZWQnLFxuICAgICAgdHJ1bmNhdGVkOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBjb25zdCBjb21taXQgPSBhd2FpdCBkZXBlbmRlbmNpZXMuZmV0Y2hKc29uKGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7ZW50cnkucmVwb30vY29tbWl0cy8ke2VuY29kZVVSSUNvbXBvbmVudChlbnRyeS5yZWYpfWApIGFzIEdpdEh1YkNvbW1pdDtcbiAgY29uc3QgaGVhZCA9IGNvbW1pdC5zaGE7XG4gIGNvbnN0IGNvbXBhcmVVcmwgPSBgaHR0cHM6Ly9naXRodWIuY29tLyR7ZW50cnkucmVwb30vY29tcGFyZS8ke2VudHJ5LmNvbW1pdH0uLi4ke2hlYWR9YDtcbiAgaWYgKGhlYWQgPT09IGVudHJ5LmNvbW1pdCkge1xuICAgIHJldHVybiB7IGNoYW5nZWRQYXRoczogW10sIGNvbXBhcmVVcmwsIGVudHJ5LCBoZWFkLCBwaW46IGVudHJ5LmNvbW1pdCwgc3RhdGU6ICdjdXJyZW50JywgdHJ1bmNhdGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgY29uc3QgY29tcGFyZSA9IGF3YWl0IGRlcGVuZGVuY2llcy5mZXRjaEpzb24oYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHtlbnRyeS5yZXBvfS9jb21wYXJlLyR7ZW50cnkuY29tbWl0fS4uLiR7aGVhZH1gKSBhcyBHaXRIdWJDb21wYXJlO1xuICBjb25zdCBmaWxlcyA9IGNvbXBhcmUuZmlsZXMgPz8gW107XG4gIGNvbnN0IHRvdWNoZWQgPSBuZXcgU2V0KGZpbGVzLmZsYXRNYXAoKGZpbGUpID0+IGZpbGUucHJldmlvdXNfZmlsZW5hbWUgPT09IHVuZGVmaW5lZCA/IFtmaWxlLmZpbGVuYW1lXSA6IFtmaWxlLmZpbGVuYW1lLCBmaWxlLnByZXZpb3VzX2ZpbGVuYW1lXSkpO1xuICBjb25zdCBjaGFuZ2VkUGF0aHMgPSBbLi4udG91Y2hlZF0uZmlsdGVyKChwYXRoKSA9PiBlbnRyeS5wYXRocy5zb21lKChnbG9iKSA9PiBtYXRjaGVzR2xvYihwYXRoLCBnbG9iKSkpLnNvcnQoKTtcbiAgY29uc3QgaXNUcnVuY2F0ZWQgPSBmaWxlcy5sZW5ndGggPj0gQ09NUEFSRV9GSUxFX0xJTUlUO1xuICByZXR1cm4ge1xuICAgIGNoYW5nZWRQYXRocyxcbiAgICBjb21wYXJlVXJsLFxuICAgIGVudHJ5LFxuICAgIGhlYWQsXG4gICAgcGluOiBlbnRyeS5jb21taXQsXG4gICAgc3RhdGU6IGNoYW5nZWRQYXRocy5sZW5ndGggPiAwIHx8IGlzVHJ1bmNhdGVkID8gJ21vdmVkJyA6ICd1bndhdGNoZWQnLFxuICAgIHRydW5jYXRlZDogaXNUcnVuY2F0ZWRcbiAgfTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYW5kIHZhbGlkYXRlcyBhbiBgdXBzdHJlYW1zLmpzb25gLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIGZpbGUncyBjb250ZW50LlxuICogQHJldHVybnMgVGhlIGNvbmZpZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVXBzdHJlYW1zQ29uZmlnKHRleHQ6IHN0cmluZyk6IFVwc3RyZWFtc0NvbmZpZyB7XG4gIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UodGV4dCkgYXMgUGFydGlhbDxVcHN0cmVhbXNDb25maWc+O1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLnVwc3RyZWFtcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1cHN0cmVhbXMuanNvbiBoYXMgbm8gXCJ1cHN0cmVhbXNcIiBhcnJheS4nKTtcbiAgfVxuICAvLyBSZWFkIHRocm91Z2ggYFJlZmxlY3QuZ2V0YCwgYmVjYXVzZSBub3RoaW5nIGFib3V0IHRoZSBwYXJzZWQgZW50cmllcyBpcyBrbm93biB5ZXQuXG4gIGNvbnN0IGVudHJpZXM6IHJlYWRvbmx5IG9iamVjdFtdID0gY29uZmlnLnVwc3RyZWFtcztcbiAgY29uc3QgbmFtZXMgPSBuZXcgU2V0PHVua25vd24+KCk7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IG5hbWU6IHVua25vd24gPSBSZWZsZWN0LmdldChlbnRyeSwgJ25hbWUnKTtcbiAgICBjb25zdCBsYWJlbCA9IHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyA/IGBcIiR7bmFtZX1cImAgOiAnd2l0aCBubyBuYW1lJztcbiAgICBjb25zdCBpc0dpdCA9ICdyZXBvJyBpbiBlbnRyeTtcbiAgICBjb25zdCByZXF1aXJlZCA9IGlzR2l0ID8gWyduYW1lJywgJ3JlcG8nLCAncmVmJywgJ2NvbW1pdCcsICdoYW5kbGVyJ10gOiBbJ25hbWUnLCAnbnBtJywgJ3ZlcnNpb24nLCAnaGFuZGxlciddO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHJlcXVpcmVkKSB7XG4gICAgICBpZiAodHlwZW9mIFJlZmxlY3QuZ2V0KGVudHJ5LCBrZXkpICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGB1cHN0cmVhbXMuanNvbjogZW50cnkgJHtsYWJlbH0gbmVlZHMgYSBzdHJpbmcgXCIke2tleX1cIi5gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzR2l0ICYmICFBcnJheS5pc0FycmF5KFJlZmxlY3QuZ2V0KGVudHJ5LCAncGF0aHMnKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdXBzdHJlYW1zLmpzb246IGVudHJ5ICR7bGFiZWx9IG5lZWRzIGEgXCJwYXRoc1wiIGFycmF5LmApO1xuICAgIH1cbiAgICBpZiAobmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVwc3RyZWFtcy5qc29uOiB0aGUgbmFtZSAke2xhYmVsfSBpcyB1c2VkIHR3aWNlLmApO1xuICAgIH1cbiAgICBuYW1lcy5hZGQobmFtZSk7XG4gIH1cbiAgcmV0dXJuIGNvbmZpZyBhcyBVcHN0cmVhbXNDb25maWc7XG59XG5cbi8qKlxuICogUGxhbnMgdGhlIFBSIGEgbW92ZWQgdXBzdHJlYW0gYXNrcyBmb3IuXG4gKlxuICogQHBhcmFtIHN0YXR1cyAtIFRoZSBjb21wYXJpc29uIG9mIGEgbW92ZWQgZW50cnkuXG4gKiBAcmV0dXJucyBUaGUgYnJhbmNoIGFuZCB0aXRsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsYW5TeW5jKHN0YXR1czogVXBzdHJlYW1TdGF0dXMpOiBTeW5jUGxhbiB7XG4gIHJldHVybiB7XG4gICAgYnJhbmNoOiBgdXBzdHJlYW0vJHtzdGF0dXMuZW50cnkubmFtZX1gLFxuICAgIHN0YXR1cyxcbiAgICB0aXRsZTogYGNob3JlKHVwc3RyZWFtKTogc3luYyAke3N0YXR1cy5lbnRyeS5uYW1lfSB0byAke3Nob3J0ZW4oc3RhdHVzLmhlYWQpfWBcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgZXZlcnkgZW50cnksIGFuZCBvcGVucyBvciB1cGRhdGVzIG9uZSBQUiBwZXIgbW92ZWQgdXBzdHJlYW0uXG4gKlxuICogQSBoYW5kbGVyIG9yIHZlcmlmeSBmYWlsdXJlIHN0aWxsIG9wZW5zIHRoZSBQUiwgYXMgYSBkcmFmdCB3aXRoIHRoZSBmYWlsdXJlIGluIGl0cyBib2R5LCBzbyBhIGJyZWFraW5nIHVwc3RyZWFtIGNoYW5nZVxuICogaXMgc2VlbiByYXRoZXIgdGhhbiBza2lwcGVkLiBBbiBlcnJvciBpbiB0aGUgc3luYyBpdHNlbGYsIHN1Y2ggYXMgYSBmYWlsZWQgQVBJIGNhbGwsIGlzIHJlcG9ydGVkIGluIHRoZSBlbnRyeSdzIHJlc3VsdFxuICogYW5kIHRoZSBuZXh0IGVudHJ5IHN0aWxsIHJ1bnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBXaGF0IHRvIHN5bmMsIGFuZCBob3cuXG4gKiBAcGFyYW0gZGVwZW5kZW5jaWVzIC0gVGhlIG91dHNpZGUgd29ybGQuXG4gKiBAcmV0dXJucyBPbmUgcmVzdWx0IHBlciBlbnRyeSBjaGVja2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3luY1Vwc3RyZWFtcyhvcHRpb25zOiBTeW5jVXBzdHJlYW1zT3B0aW9ucywgZGVwZW5kZW5jaWVzOiBTeW5jRGVwZW5kZW5jaWVzKTogUHJvbWlzZTxTeW5jUmVzdWx0W10+IHtcbiAgY29uc3QgY29uZmlnID0gcGFyc2VVcHN0cmVhbXNDb25maWcocmVhZEZpbGVTeW5jKG9wdGlvbnMuY29uZmlnUGF0aCwgJ3V0Zi04JykpO1xuICBjb25zdCB1bmtub3duID0gb3B0aW9ucy5vbmx5LmZpbHRlcigobmFtZSkgPT4gY29uZmlnLnVwc3RyZWFtcy5ldmVyeSgoZW50cnkpID0+IGVudHJ5Lm5hbWUgIT09IG5hbWUpKTtcbiAgaWYgKHVua25vd24ubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdXBzdHJlYW1zLmpzb24gaGFzIG5vIGVudHJ5IG5hbWVkICR7dW5rbm93bi5tYXAoKG5hbWUpID0+IGBcIiR7bmFtZX1cImApLmpvaW4oJywgJyl9LmApO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0czogU3luY1Jlc3VsdFtdID0gW107XG4gIGZvciAoY29uc3QgZW50cnkgb2YgY29uZmlnLnVwc3RyZWFtcykge1xuICAgIGlmIChvcHRpb25zLm9ubHkubGVuZ3RoID4gMCAmJiAhb3B0aW9ucy5vbmx5LmluY2x1ZGVzKGVudHJ5Lm5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdHMucHVzaChhd2FpdCBzeW5jRW50cnkoZW50cnksIGNvbmZpZywgb3B0aW9ucywgZGVwZW5kZW5jaWVzKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICBkZXBlbmRlbmNpZXMubG9nKGAke2VudHJ5Lm5hbWV9OiBFUlJPUiAke21lc3NhZ2V9YCk7XG4gICAgICByZXN1bHRzLnB1c2goeyBlcnJvcjogbWVzc2FnZSwgbmFtZTogZW50cnkubmFtZSwgb3V0Y29tZTogJ2Vycm9yJyB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qKlxuICogUmVjb3JkcyBgaGVhZGAgYXMgdGhlIGVudHJ5J3MgcGluIGluIGB1cHN0cmVhbXMuanNvbmAsIHVubGVzcyB0aGUgaGFuZGxlciBhbHJlYWR5IG1vdmVkIGl0LCBrZWVwaW5nIHRoZSBmaWxlJ3NcbiAqIGtleSBvcmRlciBhbmQgZm9ybWF0dGluZy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnUGF0aCAtIFRoZSBwYXRoIHRvIGB1cHN0cmVhbXMuanNvbmAuXG4gKiBAcGFyYW0gc3RhdHVzIC0gVGhlIGNvbXBhcmlzb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVBpbihjb25maWdQYXRoOiBzdHJpbmcsIHN0YXR1czogVXBzdHJlYW1TdGF0dXMpOiB2b2lkIHtcbiAgY29uc3QgdGV4dCA9IHJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmLTgnKTtcbiAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh0ZXh0KSBhcyBVcHN0cmVhbXNGaWxlU2hhcGU7XG4gIGNvbnN0IGtleSA9IGlzR2l0VXBzdHJlYW0oc3RhdHVzLmVudHJ5KSA/ICdjb21taXQnIDogJ3ZlcnNpb24nO1xuICBjb25zdCB0YXJnZXQgPSBwYXJzZWQudXBzdHJlYW1zLmZpbmQoKGVudHJ5KSA9PiBlbnRyeVsnbmFtZSddID09PSBzdGF0dXMuZW50cnkubmFtZSk7XG4gIGlmICh0YXJnZXQ/LltrZXldICE9PSBzdGF0dXMucGluKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRhcmdldFtrZXldID0gc3RhdHVzLmhlYWQ7XG4gIHdyaXRlRmlsZVN5bmMoY29uZmlnUGF0aCwgYCR7SlNPTi5zdHJpbmdpZnkocGFyc2VkLCBudWxsLCBKU09OX0lOREVOVF9TUEFDRVMpfVxcbmApO1xufVxuXG5mdW5jdGlvbiBhcHBseVBsYW4ocGxhbjogU3luY1BsYW4sIGNvbmZpZzogVXBzdHJlYW1zQ29uZmlnLCBvcHRpb25zOiBTeW5jVXBzdHJlYW1zT3B0aW9ucywgZGVwZW5kZW5jaWVzOiBTeW5jRGVwZW5kZW5jaWVzKTogU3luY1Jlc3VsdCB7XG4gIGNvbnN0IHsgZW50cnkgfSA9IHBsYW4uc3RhdHVzO1xuICAvLyBObyBjb2xvcjogdGhlIG91dHB1dCBpcyBxdW90ZWQgaW4gYSBQUiBib2R5LCB3aGVyZSBhIGNvbG9yIGNvZGUgaXMgb25seSBub2lzZS4gYENJYCBpcyBsZWZ0IGFsb25lLCBiZWNhdXNlIGl0XG4gIC8vIGNoYW5nZXMgd2hhdCBzb21lIHRvb2xzIGRvLCBub3QganVzdCBob3cgdGhleSBwcmludC5cbiAgY29uc3QgZW52ID0geyBGT1JDRV9DT0xPUjogJzAnLCBOT19DT0xPUjogJzEnLCBVUFNUUkVBTV9OQU1FOiBlbnRyeS5uYW1lLCBVUFNUUkVBTV9UQVJHRVQ6IHBsYW4uc3RhdHVzLmhlYWQgfTtcbiAgY29uc3QgaGFuZGxlcjogU3RlcFJlc3VsdCA9IHsgY29tbWFuZDogZW50cnkuaGFuZGxlciwgcmVzdWx0OiBkZXBlbmRlbmNpZXMuc2hlbGwoZW50cnkuaGFuZGxlciwgZW52KSB9O1xuICB3cml0ZVBpbihvcHRpb25zLmNvbmZpZ1BhdGgsIHBsYW4uc3RhdHVzKTtcbiAgY29uc3QgdmVyaWZ5Q29tbWFuZCA9IGVudHJ5LnZlcmlmeSA/PyBjb25maWcudmVyaWZ5O1xuICBjb25zdCB2ZXJpZnk6IG51bGwgfCBTdGVwUmVzdWx0ID0gdmVyaWZ5Q29tbWFuZCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHsgY29tbWFuZDogdmVyaWZ5Q29tbWFuZCwgcmVzdWx0OiBkZXBlbmRlbmNpZXMuc2hlbGwodmVyaWZ5Q29tbWFuZCwgZW52KSB9O1xuICBjb25zdCBpc0ZhaWxlZCA9IGhhbmRsZXIucmVzdWx0LmV4aXRDb2RlICE9PSAwIHx8ICh2ZXJpZnkgIT09IG51bGwgJiYgdmVyaWZ5LnJlc3VsdC5leGl0Q29kZSAhPT0gMCk7XG5cbiAgZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2l0JywgWydhZGQnLCAnLS1hbGwnXSk7XG4gIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2dpdCcsIFsnY29tbWl0JywgJy0tbm8tdmVyaWZ5JywgJy0tbWVzc2FnZScsIHBsYW4udGl0bGVdKTtcbiAgY29uc3QgZGlmZlN0YXQgPSBleGVjT3JUaHJvdyhkZXBlbmRlbmNpZXMsICdnaXQnLCBbJ2RpZmYnLCAnLS1zdGF0JywgJ0hFQUR+MScsICdIRUFEJ10pO1xuXG4gIGNvbnN0IGJvZHkgPSBidWlsZFByQm9keShwbGFuLCB7IGhhbmRsZXIsIHZlcmlmeSB9LCBkaWZmU3RhdCk7XG4gIGNvbnN0IGlzUmVtb3RlQnJhbmNoID0gZGVwZW5kZW5jaWVzLmV4ZWMoJ2dpdCcsIFsnbHMtcmVtb3RlJywgJy0tZXhpdC1jb2RlJywgJy0taGVhZHMnLCAnb3JpZ2luJywgcGxhbi5icmFuY2hdKS5leGl0Q29kZSA9PT0gMDtcbiAgaWYgKGlzUmVtb3RlQnJhbmNoKSB7XG4gICAgZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2l0JywgWydmZXRjaCcsICdvcmlnaW4nLCBwbGFuLmJyYW5jaF0pO1xuICAgIGlmIChkZXBlbmRlbmNpZXMuZXhlYygnZ2l0JywgWydkaWZmJywgJy0tcXVpZXQnLCAnRkVUQ0hfSEVBRCcsICdIRUFEJ10pLmV4aXRDb2RlID09PSAwKSB7XG4gICAgICAvLyBUaGUgYm9keSBpcyBzdGlsbCByZXdyaXR0ZW4sIHNvIGEgY2hhbmdlIHRvIGhvdyBpdCBpcyB3cml0dGVuIHJlYWNoZXMgYSBQUiB3aG9zZSBicmFuY2ggaGFzIG5vdCBtb3ZlZC5cbiAgICAgIGNvbnN0IG9wZW4gPSBmaW5kT3BlblByKGRlcGVuZGVuY2llcywgcGxhbi5icmFuY2gpO1xuICAgICAgaWYgKG9wZW4gIT09IG51bGwpIHtcbiAgICAgICAgZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2gnLCBbJ3ByJywgJ2VkaXQnLCBvcGVuLCAnLS1ib2R5JywgYm9keV0pO1xuICAgICAgfVxuICAgICAgZGVwZW5kZW5jaWVzLmxvZyhgJHtlbnRyeS5uYW1lfTogJHtwbGFuLmJyYW5jaH0gYWxyZWFkeSBob2xkcyB0aGlzIHJlc3VsdDsgbm90aGluZyBwdXNoZWQke29wZW4gPT09IG51bGwgPyAnJyA6IGAsIFBSICMke29wZW59J3MgYm9keSByZXdyaXR0ZW5gfS5gKTtcbiAgICAgIHJldHVybiB7IG5hbWU6IGVudHJ5Lm5hbWUsIG91dGNvbWU6ICd1bmNoYW5nZWQnIH07XG4gICAgfVxuICB9XG4gIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2dpdCcsIFsncHVzaCcsICctLWZvcmNlJywgJ29yaWdpbicsIGBIRUFEOnJlZnMvaGVhZHMvJHtwbGFuLmJyYW5jaH1gXSk7XG5cbiAgY29uc3QgZXhpc3RpbmcgPSBmaW5kT3BlblByKGRlcGVuZGVuY2llcywgcGxhbi5icmFuY2gpO1xuICBpZiAoZXhpc3RpbmcgIT09IG51bGwpIHtcbiAgICBjb25zdCBwck51bWJlciA9IE51bWJlcihleGlzdGluZyk7XG4gICAgZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2gnLCBbJ3ByJywgJ2VkaXQnLCBleGlzdGluZywgJy0tdGl0bGUnLCBwbGFuLnRpdGxlLCAnLS1ib2R5JywgYm9keV0pO1xuICAgIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2doJywgaXNGYWlsZWQgPyBbJ3ByJywgJ3JlYWR5JywgZXhpc3RpbmcsICctLXVuZG8nXSA6IFsncHInLCAncmVhZHknLCBleGlzdGluZ10pO1xuICAgIGRlcGVuZGVuY2llcy5sb2coYCR7ZW50cnkubmFtZX06IHVwZGF0ZWQgUFIgIyR7ZXhpc3Rpbmd9JHtpc0ZhaWxlZCA/ICcgKGRyYWZ0OiBhIHN0ZXAgZmFpbGVkKScgOiAnJ30uYCk7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkubmFtZSwgb3V0Y29tZTogJ3VwZGF0ZWQnLCBwck51bWJlciB9O1xuICB9XG5cbiAgY29uc3QgdXJsID0gZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2gnLCBbXG4gICAgJ3ByJyxcbiAgICAnY3JlYXRlJyxcbiAgICAnLS1iYXNlJyxcbiAgICBvcHRpb25zLmJhc2VCcmFuY2gsXG4gICAgJy0taGVhZCcsXG4gICAgcGxhbi5icmFuY2gsXG4gICAgJy0tdGl0bGUnLFxuICAgIHBsYW4udGl0bGUsXG4gICAgJy0tYm9keScsXG4gICAgYm9keSxcbiAgICAuLi4oaXNGYWlsZWQgPyBbJy0tZHJhZnQnXSA6IFtdKVxuICBdKS50cmltKCk7XG4gIGRlcGVuZGVuY2llcy5sb2coYCR7ZW50cnkubmFtZX06IG9wZW5lZCAke3VybH0ke2lzRmFpbGVkID8gJyAoZHJhZnQ6IGEgc3RlcCBmYWlsZWQpJyA6ICcnfS5gKTtcbiAgY29uc3QgcHJOdW1iZXIgPSBOdW1iZXIoL1xcL3B1bGxcXC8oPzxOdW1iZXI+XFxkKykvLmV4ZWModXJsKT8uZ3JvdXBzPy5bJ051bWJlciddID8/IE5hTik7XG4gIHJldHVybiBOdW1iZXIuaXNOYU4ocHJOdW1iZXIpID8geyBuYW1lOiBlbnRyeS5uYW1lLCBvdXRjb21lOiAnb3BlbmVkJyB9IDogeyBuYW1lOiBlbnRyeS5uYW1lLCBvdXRjb21lOiAnb3BlbmVkJywgcHJOdW1iZXIgfTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVTdGVwKGhlYWRpbmc6IHN0cmluZywgc3RlcDogU3RlcFJlc3VsdCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgaXNQYXNzZWQgPSBzdGVwLnJlc3VsdC5leGl0Q29kZSA9PT0gMDtcbiAgY29uc3Qgb3V0cHV0TGluZXMgPSBjbGVhbkNvbW1hbmRPdXRwdXQoc3RlcC5yZXN1bHQub3V0cHV0KS50cmltRW5kKCkuc3BsaXQoJ1xcbicpO1xuICBjb25zdCB0YWlsID0gb3V0cHV0TGluZXMuc2xpY2UoLU9VVFBVVF9UQUlMX0xJTkVTKS5qb2luKCdcXG4nKTtcbiAgY29uc3QgZmFpbHVyZUxpbmVzID0gaXNQYXNzZWQgPyBbXSA6IG91dHB1dExpbmVzLmZpbHRlcigobGluZSkgPT4gRkFJTFVSRV9MSU5FX1JFR19FWFAudGVzdChsaW5lKSkuc2xpY2UoMCwgRkFJTFVSRV9MSU5FX0xJTUlUKTtcbiAgcmV0dXJuIFtcbiAgICBgIyMjICR7aGVhZGluZ31gLFxuICAgICcnLFxuICAgIGBcXGAke3N0ZXAuY29tbWFuZH1cXGA6ICR7aXNQYXNzZWQgPyAncGFzc2VkJyA6IGAqKkZBSUxFRCoqIChleGl0ICR7U3RyaW5nKHN0ZXAucmVzdWx0LmV4aXRDb2RlKX0pYH0uYCxcbiAgICAnJyxcbiAgICAuLi4oZmFpbHVyZUxpbmVzLmxlbmd0aCA9PT0gMCA/IFtdIDogWydMaW5lcyByZXBvcnRpbmcgdGhlIGZhaWx1cmU6JywgJycsICdgYGB0ZXh0JywgLi4uZmFpbHVyZUxpbmVzLCAnYGBgJywgJyddKSxcbiAgICBpc1Bhc3NlZCA/ICc8ZGV0YWlscz48c3VtbWFyeT5PdXRwdXQ8L3N1bW1hcnk+JyA6ICc8ZGV0YWlscyBvcGVuPjxzdW1tYXJ5Pk91dHB1dDwvc3VtbWFyeT4nLFxuICAgICcnLFxuICAgICdgYGB0ZXh0JyxcbiAgICB0YWlsLFxuICAgICdgYGAnLFxuICAgICcnLFxuICAgICc8L2RldGFpbHM+JyxcbiAgICAnJ1xuICBdO1xufVxuXG5mdW5jdGlvbiBleGVjT3JUaHJvdyhkZXBlbmRlbmNpZXM6IFN5bmNEZXBlbmRlbmNpZXMsIGZpbGU6IHN0cmluZywgYXJndW1lbnRzXzogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCByZXN1bHQgPSBkZXBlbmRlbmNpZXMuZXhlYyhmaWxlLCBhcmd1bWVudHNfKTtcbiAgaWYgKHJlc3VsdC5leGl0Q29kZSAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtmaWxlfSAke2FyZ3VtZW50c18uam9pbignICcpfSBmYWlsZWQgKGV4aXQgJHtTdHJpbmcocmVzdWx0LmV4aXRDb2RlKX0pOiAke3Jlc3VsdC5vdXRwdXQudHJpbSgpfWApO1xuICB9XG4gIHJldHVybiByZXN1bHQub3V0cHV0O1xufVxuXG5mdW5jdGlvbiBmaW5kT3BlblByKGRlcGVuZGVuY2llczogU3luY0RlcGVuZGVuY2llcywgYnJhbmNoOiBzdHJpbmcpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgJG51bWJlciA9IGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2doJywgWydwcicsICdsaXN0JywgJy0taGVhZCcsIGJyYW5jaCwgJy0tc3RhdGUnLCAnb3BlbicsICctLWpzb24nLCAnbnVtYmVyJywgJy0tanEnLCAnLlswXS5udW1iZXInXSkudHJpbSgpO1xuICByZXR1cm4gJG51bWJlciA9PT0gJycgfHwgJG51bWJlciA9PT0gJ251bGwnID8gbnVsbCA6ICRudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGlzR2l0VXBzdHJlYW0oZW50cnk6IFVwc3RyZWFtRW50cnkpOiBlbnRyeSBpcyBHaXRVcHN0cmVhbUVudHJ5IHtcbiAgcmV0dXJuICdyZXBvJyBpbiBlbnRyeTtcbn1cblxuZnVuY3Rpb24gc2hvcnRlbihoZWFkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gL15bMC05YS1mXXs0MH0kLy50ZXN0KGhlYWQpID8gaGVhZC5zbGljZSgwLCBTSE9SVF9TSEFfTEVOR1RIKSA6IGhlYWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN5bmNFbnRyeShlbnRyeTogVXBzdHJlYW1FbnRyeSwgY29uZmlnOiBVcHN0cmVhbXNDb25maWcsIG9wdGlvbnM6IFN5bmNVcHN0cmVhbXNPcHRpb25zLCBkZXBlbmRlbmNpZXM6IFN5bmNEZXBlbmRlbmNpZXMpOiBQcm9taXNlPFN5bmNSZXN1bHQ+IHtcbiAgY29uc3Qgc3RhdHVzID0gYXdhaXQgY29tcGFyZVdpdGhVcHN0cmVhbShlbnRyeSwgZGVwZW5kZW5jaWVzKTtcbiAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2N1cnJlbnQnKSB7XG4gICAgZGVwZW5kZW5jaWVzLmxvZyhgJHtlbnRyeS5uYW1lfTogY3VycmVudCBhdCAke3Nob3J0ZW4oc3RhdHVzLmhlYWQpfS5gKTtcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeS5uYW1lLCBvdXRjb21lOiAnY3VycmVudCcgfTtcbiAgfVxuICBpZiAoc3RhdHVzLnN0YXRlID09PSAndW53YXRjaGVkJykge1xuICAgIGRlcGVuZGVuY2llcy5sb2coYCR7ZW50cnkubmFtZX06IG1vdmVkIHRvICR7c2hvcnRlbihzdGF0dXMuaGVhZCl9LCBidXQgbm8gd2F0Y2hlZCBwYXRoIGNoYW5nZWQgc2luY2UgJHtzaG9ydGVuKHN0YXR1cy5waW4pfS5gKTtcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeS5uYW1lLCBvdXRjb21lOiAndW53YXRjaGVkJyB9O1xuICB9XG5cbiAgY29uc3QgcGxhbiA9IHBsYW5TeW5jKHN0YXR1cyk7XG4gIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgIGRlcGVuZGVuY2llcy5sb2coYCR7ZW50cnkubmFtZX06IG1vdmVkIGZyb20gJHtzaG9ydGVuKHN0YXR1cy5waW4pfSB0byAke3Nob3J0ZW4oc3RhdHVzLmhlYWQpfS4gV291bGQgcHVzaCAke3BsYW4uYnJhbmNofSBhbmQgb3BlbjpgKTtcbiAgICBkZXBlbmRlbmNpZXMubG9nKGAgIHRpdGxlOiAke3BsYW4udGl0bGV9YCk7XG4gICAgZGVwZW5kZW5jaWVzLmxvZyhidWlsZFByQm9keShwbGFuLCBudWxsLCBudWxsKS5yZXBsYWNlQWxsKC9eL2dtLCAnICB8ICcpKTtcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeS5uYW1lLCBvdXRjb21lOiAncGxhbm5lZCcgfTtcbiAgfVxuXG4gIC8vIFRoZSB1cGRhdGUgY29tbWl0IHRha2VzIGV2ZXJ5IGZpbGUgaW4gdGhlIHRyZWUsIHNvIGEgZmlsZSBsZWZ0IGx5aW5nIGFyb3VuZCB3b3VsZCBiZSBwdXNoZWQgd2l0aCBpdC5cbiAgY29uc3QgZGlydHkgPSBleGVjT3JUaHJvdyhkZXBlbmRlbmNpZXMsICdnaXQnLCBbJ3N0YXR1cycsICctLXBvcmNlbGFpbiddKS50cmltKCk7XG4gIGlmIChkaXJ0eSAhPT0gJycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHRoZSB3b3JraW5nIHRyZWUgaXMgbm90IGNsZWFuLCBhbmQgdGhlIHVwZGF0ZSBjb21taXQgd291bGQgdGFrZSB0aGVzZSBmaWxlcyB3aXRoIGl0OlxcbiR7ZGlydHl9YCk7XG4gIH1cbiAgZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2l0JywgWydmZXRjaCcsICdvcmlnaW4nLCBvcHRpb25zLmJhc2VCcmFuY2hdKTtcbiAgZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2l0JywgWydjaGVja291dCcsICctQicsIHBsYW4uYnJhbmNoLCBgb3JpZ2luLyR7b3B0aW9ucy5iYXNlQnJhbmNofWBdKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXBwbHlQbGFuKHBsYW4sIGNvbmZpZywgb3B0aW9ucywgZGVwZW5kZW5jaWVzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBkZXBlbmRlbmNpZXMuZXhlYygnZ2l0JywgWydjaGVja291dCcsICctLWZvcmNlJywgb3B0aW9ucy5iYXNlQnJhbmNoXSk7XG4gICAgZGVwZW5kZW5jaWVzLmV4ZWMoJ2dpdCcsIFsnYnJhbmNoJywgJy0tZGVsZXRlJywgJy0tZm9yY2UnLCBwbGFuLmJyYW5jaF0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvTGFzdExpbmVTdGF0ZShsaW5lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzdGF0ZXMgPSBsaW5lLnJlcGxhY2UoL1xcciskLywgJycpO1xuICByZXR1cm4gc3RhdGVzLnNsaWNlKHN0YXRlcy5sYXN0SW5kZXhPZignXFxyJykgKyAxKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBU0E7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG1CQUFtQjtBQTJONUIsTUFBTSxxQkFBcUI7QUFFM0IsTUFBTSxtQkFBbUI7QUFLekIsTUFBTSxvQkFBb0I7QUFLMUIsTUFBTSxxQkFBcUI7QUFFM0IsTUFBTSxxQkFBcUI7QUFNM0IsTUFBTSxNQUFNLE9BQU87QUFPbkIsTUFBTSwyQkFBMkIsSUFBSTtBQUFBLEVBQ25DLE9BQU8sTUFBTSxHQUFHLHVCQUF1QixHQUFHLG9DQUFvQyxH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
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Vwc3RyZWFtLXN5bmMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBXYXRjaGVzIHRoZSB1cHN0cmVhbXMgYSByZXBvc2l0b3J5IG1pcnJvcnMgYW5kIG9wZW5zIG9uZSB1cGRhdGUgUFIgcGVyIHVwc3RyZWFtIHRoYXQgbW92ZWQuXG4gKlxuICogRXZlcnl0aGluZyBoZXJlIGlzIGRyaXZlbiBieSBgdXBzdHJlYW1zLmpzb25gIGFuZCB0aGUgaGFuZGxlciBjb21tYW5kcyBpdCBuYW1lcywgc28gYW55IHJlcG9zaXRvcnkgdGhhdCB2ZW5kb3JzXG4gKiB1cHN0cmVhbSBjb2RlIGNhbiB1c2UgaXQ6IHRocm91Z2ggdGhlIGBzeW5jLXVwc3RyZWFtc2AgYmluLCBvciB0aGUgcmV1c2FibGUgYHN5bmMtdXBzdHJlYW1zLnltbGAgd29ya2Zsb3cuXG4gKi9cblxuaW1wb3J0IHtcbiAgcmVhZEZpbGVTeW5jLFxuICB3cml0ZUZpbGVTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgbWF0Y2hlc0dsb2IgfSBmcm9tICdub2RlOnBhdGgnO1xuXG4vKipcbiAqIFdoYXQgYSBjb21tYW5kIHByaW50ZWQgYW5kIGhvdyBpdCBleGl0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZFJlc3VsdCB7XG4gIHJlYWRvbmx5IGV4aXRDb2RlOiBudW1iZXI7XG4gIHJlYWRvbmx5IG91dHB1dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIHVwc3RyZWFtIGZvbGxvd2VkIG9uIGEgR2l0SHViIGJyYW5jaCBvciB0YWcsIHBpbm5lZCB0byBhIGNvbW1pdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRVcHN0cmVhbUVudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBwaW5uZWQgY29tbWl0OiB0aGUgbGFzdCB1cHN0cmVhbSBzdGF0ZSB0aGUgaGFuZGxlciB3YXMgcnVuIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBjb21taXQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzaGVsbCBjb21tYW5kIHRoYXQgdHVybnMgYSBuZXdlciB1cHN0cmVhbSBzdGF0ZSBpbnRvIGNoYW5nZXMgaW4gdGhpcyByZXBvc2l0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlcjogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcGF0aHMgd2F0Y2hlZCB1cHN0cmVhbSwgYXMgZ2xvYnMgcmVsYXRpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdC4gQSBtb3ZlIHRoYXQgdG91Y2hlcyBub25lIG9mIHRoZW0gb3BlbnMgbm8gUFIuXG4gICAqL1xuICByZWFkb25seSBwYXRoczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgYnJhbmNoIG9yIHRhZyBmb2xsb3dlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlZjogc3RyaW5nO1xuICAvKipcbiAgICogYDxvd25lcj4vPHJlcG8+YCBvbiBHaXRIdWIuXG4gICAqL1xuICByZWFkb25seSByZXBvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hlbGwgY29tbWFuZCB0aGF0IGNoZWNrcyB0aGUgaGFuZGxlcidzIHJlc3VsdC4gT3ZlcnJpZGVzIHRoZSBmaWxlJ3MgdG9wLWxldmVsIGB2ZXJpZnlgLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIHVwc3RyZWFtIGZvbGxvd2VkIGFzIGFuIG5wbSBwYWNrYWdlJ3MgZGlzdC10YWcsIHBpbm5lZCB0byBhIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnBtVXBzdHJlYW1FbnRyeSB7XG4gIHJlYWRvbmx5IGhhbmRsZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhY2thZ2UgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG5wbTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRpc3QtdGFnIGZvbGxvd2VkLiBgbGF0ZXN0YCB3aGVuIGFic2VudC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyaWZ5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBpbm5lZCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZXJ5dGhpbmcgdGhlIHN5bmMgZG9lcyB0byB0aGUgb3V0c2lkZSB3b3JsZCwgc28gYSB0ZXN0IGNhbiBzdGFuZCBhIGZpeHR1cmUgaW4gZm9yIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bmNEZXBlbmRlbmNpZXMge1xuICAvKipcbiAgICogUnVucyBhbiBleGVjdXRhYmxlIHdpdGggYXJndW1lbnRzIGFuZCBubyBzaGVsbC5cbiAgICovXG4gIHJlYWRvbmx5IGV4ZWM6IChmaWxlOiBzdHJpbmcsIGFyZ3VtZW50c186IHJlYWRvbmx5IHN0cmluZ1tdLCBlbnY/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PikgPT4gQ29tbWFuZFJlc3VsdDtcbiAgLyoqXG4gICAqIEdFVHMgYSBVUkwgYW5kIHBhcnNlcyB0aGUgSlNPTiBpdCByZXR1cm5zLCB0aHJvd2luZyBvbiBhbiBIVFRQIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hKc29uOiAodXJsOiBzdHJpbmcpID0+IFByb21pc2U8dW5rbm93bj47XG4gIHJlYWRvbmx5IGxvZzogKHRleHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJ1bnMgYSBjb21tYW5kIGxpbmUgdGhyb3VnaCB0aGUgc2hlbGw6IGEgaGFuZGxlciBvciBhIHZlcmlmeSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGw6IChjb21tYW5kOiBzdHJpbmcsIGVudj86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KSA9PiBDb21tYW5kUmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBQUiBhbiB1cHN0cmVhbSBtb3ZlIGFza3MgZm9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bmNQbGFuIHtcbiAgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YXR1czogVXBzdHJlYW1TdGF0dXM7XG4gIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2hhdCBoYXBwZW5lZCB0byBvbmUgZW50cnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3luY1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBTZXQgd2hlbiBjaGVja2luZyBvciBhcHBseWluZyB0aHJldzogdGhlIGpvYiByZXBvcnRzIGl0IGFuZCBtb3ZlcyBvbiB0byB0aGUgbmV4dCBlbnRyeS5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgcGxhbm5lZGAgaW4gYSBkcnkgcnVuLCBgb3BlbmVkYC9gdXBkYXRlZGAgd2hlbiBhIFBSIHdhcyBwdXNoZWQsIGB1bmNoYW5nZWRgIHdoZW4gdGhlIGJyYW5jaCBhbHJlYWR5IGhlbGQgdGhpcyByZXN1bHQuXG4gICAqL1xuICByZWFkb25seSBvdXRjb21lOiAnY3VycmVudCcgfCAnZXJyb3InIHwgJ29wZW5lZCcgfCAncGxhbm5lZCcgfCAndW5jaGFuZ2VkJyB8ICd1bndhdGNoZWQnIHwgJ3VwZGF0ZWQnO1xuICByZWFkb25seSBwck51bWJlcj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBXaGF0IHtAbGluayBzeW5jVXBzdHJlYW1zfSBzeW5jcywgYW5kIGhvdy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW5jVXBzdHJlYW1zT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYnJhbmNoIGVhY2ggUFIgdGFyZ2V0cyBhbmQgZWFjaCB1cGRhdGUgYnJhbmNoIGlzIGN1dCBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUJyYW5jaDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhdGggdG8gYHVwc3RyZWFtcy5qc29uYCwgd2hpY2ggdGhlIHN5bmMgdXBkYXRlcyB0aGUgcGluIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnUGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogUGxhbiBhbmQgcHJpbnQgZXZlcnkgUFIsIGFuZCBjaGFuZ2Ugbm90aGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9ubHkgdGhlIGVudHJpZXMgd2l0aCB0aGVzZSBuYW1lcywgb3IgZXZlcnkgZW50cnkgd2hlbiBlbXB0eS5cbiAgICovXG4gIHJlYWRvbmx5IG9ubHk6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9uZSB1cHN0cmVhbSB0aGF0IGB1cHN0cmVhbXMuanNvbmAgbGlzdHM6IGEgZ2l0IG9uZSBvciBhbiBucG0gb25lLlxuICovXG5leHBvcnQgdHlwZSBVcHN0cmVhbUVudHJ5ID0gR2l0VXBzdHJlYW1FbnRyeSB8IE5wbVVwc3RyZWFtRW50cnk7XG5cbi8qKlxuICogVGhlIGNvbnRlbnQgb2YgYHVwc3RyZWFtcy5qc29uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcHN0cmVhbXNDb25maWcge1xuICByZWFkb25seSB1cHN0cmVhbXM6IHJlYWRvbmx5IFVwc3RyZWFtRW50cnlbXTtcbiAgLyoqXG4gICAqIFRoZSBzaGVsbCBjb21tYW5kIHRoYXQgY2hlY2tzIGV2ZXJ5IGhhbmRsZXIncyByZXN1bHQsIHVubGVzcyBhbiBlbnRyeSBuYW1lcyBpdHMgb3duLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoYXQgb25lIGNvbXBhcmlzb24gb2YgYW4gZW50cnkgd2l0aCBpdHMgdXBzdHJlYW0gZm91bmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBzdHJlYW1TdGF0dXMge1xuICAvKipcbiAgICogVGhlIHVwc3RyZWFtIHBhdGhzIHRoYXQgY2hhbmdlZCBhbmQgYXJlIHdhdGNoZWQsIHNvcnRlZC4gQWx3YXlzIGVtcHR5IGZvciBhbiBucG0gdXBzdHJlYW0uXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VkUGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKipcbiAgICogQSBsaW5rIHRoYXQgc2hvd3Mgd2hhdCBjaGFuZ2VkIGJldHdlZW4gdGhlIHBpbiBhbmQgdGhlIGhlYWQuXG4gICAqL1xuICByZWFkb25seSBjb21wYXJlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudHJ5OiBVcHN0cmVhbUVudHJ5O1xuICAvKipcbiAgICogVGhlIGNvbW1pdCBvciB2ZXJzaW9uIHRoZSB1cHN0cmVhbSBpcyBhdCBub3cuXG4gICAqL1xuICByZWFkb25seSBoZWFkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IG9yIHZlcnNpb24gYHVwc3RyZWFtcy5qc29uYCByZWNvcmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGluOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgY3VycmVudGA6IG5vdGhpbmcgdG8gZG8uIGBtb3ZlZGA6IGEgUFIgaXMgZHVlLiBgdW53YXRjaGVkYDogdXBzdHJlYW0gbW92ZWQsIGJ1dCBubyB3YXRjaGVkIHBhdGggY2hhbmdlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlOiAnY3VycmVudCcgfCAnbW92ZWQnIHwgJ3Vud2F0Y2hlZCc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIEdpdEh1YiB0cnVuY2F0ZWQgdGhlIGNvbXBhcmUncyBmaWxlIGxpc3QsIHNvIGEgd2F0Y2hlZCBwYXRoIG1heSBiZSBtaXNzaW5nIGZyb20gYGNoYW5nZWRQYXRoc2AuXG4gICAqL1xuICByZWFkb25seSB0cnVuY2F0ZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBHaXRIdWJDb21taXQge1xuICByZWFkb25seSBzaGE6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdpdEh1YkNvbXBhcmUge1xuICByZWFkb25seSBmaWxlcz86IHJlYWRvbmx5IEdpdEh1YkNvbXBhcmVGaWxlW107XG59XG5cbi8qKlxuICogT25lIGZpbGUgb2YgYSBHaXRIdWIgY29tcGFyZSwgYXMgdGhlIEFQSSBzcGVsbHMgaXQuXG4gKi9cbmludGVyZmFjZSBHaXRIdWJDb21wYXJlRmlsZSB7XG4gIHJlYWRvbmx5IGZpbGVuYW1lOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgcHJldmlvdXNfZmlsZW5hbWU/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBOcG1QYWNrdW1lbnQge1xuICByZWFkb25seSAnZGlzdC10YWdzJzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuaW50ZXJmYWNlIFN0ZXBSZXN1bHQge1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlc3VsdDogQ29tbWFuZFJlc3VsdDtcbn1cblxuLyoqXG4gKiBUaGUgaGFuZGxlciBhbmQgdmVyaWZ5IHJ1bnMgYSBQUiBib2R5IHJlcG9ydHMuXG4gKi9cbmludGVyZmFjZSBTdGVwUmVzdWx0cyB7XG4gIHJlYWRvbmx5IGhhbmRsZXI6IFN0ZXBSZXN1bHQ7XG4gIHJlYWRvbmx5IHZlcmlmeTogbnVsbCB8IFN0ZXBSZXN1bHQ7XG59XG5cbi8qKlxuICogYHVwc3RyZWFtcy5qc29uYCByZWFkIGxvb3NlbHksIHRvIHdyaXRlIG9uZSB2YWx1ZSBiYWNrIHdpdGhvdXQgZGlzdHVyYmluZyB0aGUgcmVzdC5cbiAqL1xuaW50ZXJmYWNlIFVwc3RyZWFtc0ZpbGVTaGFwZSB7XG4gIHJlYWRvbmx5IHVwc3RyZWFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn1cblxuLyoqXG4gKiBHaXRIdWIncyBjb21wYXJlIEFQSSBsaXN0cyBhdCBtb3N0IHRoaXMgbWFueSBmaWxlcywgYW5kIHNheXMgbm90aGluZyB3aGVuIGl0IHN0b3BzLlxuICovXG5jb25zdCBDT01QQVJFX0ZJTEVfTElNSVQgPSAzMDA7XG5cbmNvbnN0IFNIT1JUX1NIQV9MRU5HVEggPSAxMjtcblxuLyoqXG4gKiBUaGUgdGFpbCBvZiBhIGNvbW1hbmQncyBvdXRwdXQgYSBQUiBib2R5IHF1b3RlczogZW5vdWdoIHRvIHJlYWQgYSBmYWlsdXJlLCBzaG9ydCBlbm91Z2ggdG8gc3RheSB1bmRlciBHaXRIdWIncyBib2R5IGxpbWl0LlxuICovXG5jb25zdCBPVVRQVVRfVEFJTF9MSU5FUyA9IDYwO1xuXG4vKipcbiAqIFRoZSBtb3N0IGxpbmVzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBhIGZhaWxlZCBzdGVwJ3Mgc2VjdGlvbiBvcGVucyB3aXRoLCBhaGVhZCBvZiBpdHMgb3V0cHV0IHRhaWwuXG4gKi9cbmNvbnN0IEZBSUxVUkVfTElORV9MSU1JVCA9IDIwO1xuXG5jb25zdCBKU09OX0lOREVOVF9TUEFDRVMgPSAyO1xuXG4vKipcbiAqIFRoZSBFU0MgdGhhdCBvcGVucyBhIHRlcm1pbmFsIGNvbnRyb2wgc2VxdWVuY2UsIGVpdGhlciBhcyB0aGUgYnl0ZSBvciBhcyB0aGUgY2FyZXQgdGV4dCBgXltgIGEgbG9nIHZpZXdlciBvciBhblxuICogZWFybGllciBjb3B5IHR1cm5lZCBpdCBpbnRvLiBCb3RoIHJlYWNoZWQgYSBQUiBib2R5OiBjcmVhdGUtb2JzaWRpYW4tcGx1Z2luIzIgY2FycmllZCB0aGUgY2FyZXQgZm9ybS5cbiAqL1xuY29uc3QgRVNDID0gU3RyaW5nLnJhd2AoPzpcXHUwMDFCfFxcXlxcWylgO1xuXG4vKipcbiAqIENvbnRyb2wgU2VxdWVuY2UgSW50cm9kdWNlciBzZXF1ZW5jZXMgKGNvbG9ycywgY3Vyc29yIG1vdmVzKSwgT3BlcmF0aW5nIFN5c3RlbSBDb21tYW5kIHNlcXVlbmNlcyAoaHlwZXJsaW5rcyxcbiAqIHRpdGxlcywgZW5kZWQgYnkgQkVMIG9yIFNULCBhbHNvIGFzIGBeR2ApLCBhbmQgdGhlIHR3by1jaGFyYWN0ZXIgZXNjYXBlcy4gQSB0d28tY2hhcmFjdGVyIGVzY2FwZSBpcyBtYXRjaGVkIG9ubHkgYXNcbiAqIHRoZSBieXRlLCBiZWNhdXNlIGl0cyBjYXJldCB0ZXh0IGFsc28gc3BlbGxzIGFuIG9yZGluYXJ5IHJlZ3VsYXIgZXhwcmVzc2lvbiwgc3VjaCBhcyBgXltBLVpdYC5cbiAqL1xuY29uc3QgVEVSTUlOQUxfQ09OVFJPTF9SRUdfRVhQID0gbmV3IFJlZ0V4cChcbiAgU3RyaW5nLnJhd2Ake0VTQ31cXFtbMC0/XSpbIC0vXSpbQC1+XXwke0VTQ31cXF1bXlxcdTAwMDdcXHUwMDFCXl0qKD86XFx1MDAwN3xcXF5HfCR7RVNDfVxcXFwpfFxcdTAwMUJbQC1aXFxcXC1fXWAsXG4gICdnJ1xuKTtcblxuLyoqXG4gKiBBIGxpbmUgdGhhdCByZXBvcnRzIGEgZmFpbHVyZSwgd2hpY2ggYSBmYWlsZWQgc3RlcCdzIHNlY3Rpb24gcXVvdGVzIGZpcnN0LCBiZWNhdXNlIHRoZSB0YWlsIG1heSBiZSBhIGdyZWVuIHRlc3QgcnVuXG4gKiB0aGF0IGZpbmlzaGVkIGFmdGVyIGl0LlxuICovXG5jb25zdCBGQUlMVVJFX0xJTkVfUkVHX0VYUCA9IC9zdGVwLWZhaWxlZHxcXGJmYWlsKD86c3xlZHx1cmV8aW5nKT9cXGJ8XFxiZXJyb3JcXGJ8XFxibm90IGZvdW5kXFxifFxcYkVSUiF8W1x1MjcxN1x1MDBEN10vaTtcblxuLyoqXG4gKiBXcml0ZXMgdGhlIFBSIGJvZHkuXG4gKlxuICogQHBhcmFtIHBsYW4gLSBUaGUgcGxhbi5cbiAqIEBwYXJhbSBzdGVwcyAtIFRoZSBoYW5kbGVyIGFuZCB2ZXJpZnkgcnVucywgb3IgYG51bGxgIGluIGEgZHJ5IHJ1biwgd2hlcmUgbmVpdGhlciBydW5zLlxuICogQHBhcmFtIGRpZmZTdGF0IC0gYGdpdCBkaWZmIC0tc3RhdGAgb2YgdGhlIHVwZGF0ZSBjb21taXQsIG9yIGBudWxsYCBpbiBhIGRyeSBydW4uXG4gKiBAcmV0dXJucyBUaGUgYm9keSwgaW4gTWFya2Rvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByQm9keShwbGFuOiBTeW5jUGxhbiwgc3RlcHM6IG51bGwgfCBTdGVwUmVzdWx0cywgZGlmZlN0YXQ6IG51bGwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB7IGVudHJ5LCBoZWFkLCBwaW4gfSA9IHBsYW4uc3RhdHVzO1xuICBjb25zdCBzb3VyY2UgPSBpc0dpdFVwc3RyZWFtKGVudHJ5KSA/IGBcXGAke2VudHJ5LnJlcG99QCR7ZW50cnkucmVmfVxcYGAgOiBgbnBtIFxcYCR7ZW50cnkubnBtfUAke2VudHJ5LnRhZyA/PyAnbGF0ZXN0J31cXGBgO1xuICBjb25zdCBsaW5lcyA9IFtcbiAgICBgVXBzdHJlYW0gXFxgJHtlbnRyeS5uYW1lfVxcYCBtb3ZlZDogJHtzb3VyY2V9IGZyb20gXFxgJHtwaW59XFxgIHRvIFxcYCR7aGVhZH1cXGAuYCxcbiAgICAnJyxcbiAgICBgQ29tcGFyZTogJHtwbGFuLnN0YXR1cy5jb21wYXJlVXJsfWAsXG4gICAgJydcbiAgXTtcblxuICBpZiAoaXNHaXRVcHN0cmVhbShlbnRyeSkpIHtcbiAgICBsaW5lcy5wdXNoKCcjIyMgQ2hhbmdlZCB1cHN0cmVhbSBmaWxlcycsICcnLCAuLi5wbGFuLnN0YXR1cy5jaGFuZ2VkUGF0aHMubWFwKChwYXRoKSA9PiBgLSBcXGAke3BhdGh9XFxgYCkpO1xuICAgIGlmIChwbGFuLnN0YXR1cy50cnVuY2F0ZWQpIHtcbiAgICAgIGxpbmVzLnB1c2goYC0gR2l0SHViIGxpc3RzIGF0IG1vc3QgJHtTdHJpbmcoQ09NUEFSRV9GSUxFX0xJTUlUKX0gZmlsZXM6IG9wZW4gdGhlIGNvbXBhcmUgbGluayBmb3IgdGhlIHJlc3QuYCk7XG4gICAgfVxuICAgIGxpbmVzLnB1c2goJycpO1xuICB9XG5cbiAgaWYgKHN0ZXBzID09PSBudWxsKSB7XG4gICAgbGluZXMucHVzaCgnIyMjIEhhbmRsZXInLCAnJywgYFxcYCR7ZW50cnkuaGFuZGxlcn1cXGA6IG5vdCBydW4gKGRyeSBydW4pLmAsICcnKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKC4uLmRlc2NyaWJlU3RlcCgnSGFuZGxlcicsIHN0ZXBzLmhhbmRsZXIpKTtcbiAgICBpZiAoc3RlcHMudmVyaWZ5ICE9PSBudWxsKSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLmRlc2NyaWJlU3RlcCgnVmVyaWZ5Jywgc3RlcHMudmVyaWZ5KSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpZmZTdGF0ICE9PSBudWxsKSB7XG4gICAgbGluZXMucHVzaCgnIyMjIEdlbmVyYXRlZCBjaGFuZ2VzJywgJycsICdgYGB0ZXh0JywgY2xlYW5Db21tYW5kT3V0cHV0KGRpZmZTdGF0KS50cmltRW5kKCksICdgYGAnLCAnJyk7XG4gIH1cblxuICBsaW5lcy5wdXNoKCdUaGlzIFBSIHdhcyBvcGVuZWQgYnkgdGhlIHVwc3RyZWFtLXN5bmMgam9iIGFuZCBpcyBuZXZlciBtZXJnZWQgYXV0b21hdGljYWxseS4nKTtcbiAgcmV0dXJuIGAke2xpbmVzLmpvaW4oJ1xcbicpfVxcbmA7XG59XG5cbi8qKlxuICogVHVybnMgYSBjb21tYW5kJ3MgY2FwdHVyZWQgb3V0cHV0IGludG8gcGxhaW4gdGV4dCBhIFBSIGJvZHkgY2FuIHF1b3RlOiB0ZXJtaW5hbCBjb250cm9sIHNlcXVlbmNlcyBhcmUgcmVtb3ZlZCxcbiAqIHdoZXRoZXIgdGhleSBhcnJpdmVkIGFzIEVTQyBieXRlcyBvciBhcyB0aGVpciBjYXJldC1yZW5kZXJlZCBgXltbLi4ubWAgdGV4dCwgYW5kIGEgbGluZSBhIHByb2dyZXNzIGRpc3BsYXkgcmV3cm90ZVxuICogd2l0aCBgXFxyYCBrZWVwcyBvbmx5IGl0cyBsYXN0IHN0YXRlLlxuICpcbiAqIEBwYXJhbSBvdXRwdXQgLSBUaGUgY2FwdHVyZWQgb3V0cHV0LlxuICogQHJldHVybnMgVGhlIHBsYWluIHRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkNvbW1hbmRPdXRwdXQob3V0cHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gb3V0cHV0XG4gICAgLnJlcGxhY2VBbGwoVEVSTUlOQUxfQ09OVFJPTF9SRUdfRVhQLCAnJylcbiAgICAucmVwbGFjZUFsbCgnXFxyXFxuJywgJ1xcbicpXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHRvTGFzdExpbmVTdGF0ZShsaW5lKSlcbiAgICAuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogQ29tcGFyZXMgb25lIGVudHJ5IHdpdGggaXRzIHVwc3RyZWFtLlxuICpcbiAqIEBwYXJhbSBlbnRyeSAtIFRoZSBlbnRyeS5cbiAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgLSBUaGUgb3V0c2lkZSB3b3JsZC5cbiAqIEByZXR1cm5zIFdoYXQgdGhlIGNvbXBhcmlzb24gZm91bmQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb21wYXJlV2l0aFVwc3RyZWFtKGVudHJ5OiBVcHN0cmVhbUVudHJ5LCBkZXBlbmRlbmNpZXM6IFBpY2s8U3luY0RlcGVuZGVuY2llcywgJ2ZldGNoSnNvbic+KTogUHJvbWlzZTxVcHN0cmVhbVN0YXR1cz4ge1xuICBpZiAoIWlzR2l0VXBzdHJlYW0oZW50cnkpKSB7XG4gICAgY29uc3QgdGFnID0gZW50cnkudGFnID8/ICdsYXRlc3QnO1xuICAgIGNvbnN0IHBhY2t1bWVudCA9IGF3YWl0IGRlcGVuZGVuY2llcy5mZXRjaEpzb24oYGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyR7ZW50cnkubnBtLnJlcGxhY2UoJy8nLCAnJTJmJyl9YCkgYXMgTnBtUGFja3VtZW50O1xuICAgIGNvbnN0IGhlYWQgPSBwYWNrdW1lbnRbJ2Rpc3QtdGFncyddW3RhZ107XG4gICAgaWYgKGhlYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBucG0gcGFja2FnZSAke2VudHJ5Lm5wbX0gaGFzIG5vIGRpc3QtdGFnIFwiJHt0YWd9XCIuYCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjaGFuZ2VkUGF0aHM6IFtdLFxuICAgICAgY29tcGFyZVVybDogYGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlLyR7ZW50cnkubnBtfS92LyR7aGVhZH1gLFxuICAgICAgZW50cnksXG4gICAgICBoZWFkLFxuICAgICAgcGluOiBlbnRyeS52ZXJzaW9uLFxuICAgICAgc3RhdGU6IGhlYWQgPT09IGVudHJ5LnZlcnNpb24gPyAnY3VycmVudCcgOiAnbW92ZWQnLFxuICAgICAgdHJ1bmNhdGVkOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBjb25zdCBjb21taXQgPSBhd2FpdCBkZXBlbmRlbmNpZXMuZmV0Y2hKc29uKGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7ZW50cnkucmVwb30vY29tbWl0cy8ke2VuY29kZVVSSUNvbXBvbmVudChlbnRyeS5yZWYpfWApIGFzIEdpdEh1YkNvbW1pdDtcbiAgY29uc3QgaGVhZCA9IGNvbW1pdC5zaGE7XG4gIGNvbnN0IGNvbXBhcmVVcmwgPSBgaHR0cHM6Ly9naXRodWIuY29tLyR7ZW50cnkucmVwb30vY29tcGFyZS8ke2VudHJ5LmNvbW1pdH0uLi4ke2hlYWR9YDtcbiAgaWYgKGhlYWQgPT09IGVudHJ5LmNvbW1pdCkge1xuICAgIHJldHVybiB7IGNoYW5nZWRQYXRoczogW10sIGNvbXBhcmVVcmwsIGVudHJ5LCBoZWFkLCBwaW46IGVudHJ5LmNvbW1pdCwgc3RhdGU6ICdjdXJyZW50JywgdHJ1bmNhdGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgY29uc3QgY29tcGFyZSA9IGF3YWl0IGRlcGVuZGVuY2llcy5mZXRjaEpzb24oYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHtlbnRyeS5yZXBvfS9jb21wYXJlLyR7ZW50cnkuY29tbWl0fS4uLiR7aGVhZH1gKSBhcyBHaXRIdWJDb21wYXJlO1xuICBjb25zdCBmaWxlcyA9IGNvbXBhcmUuZmlsZXMgPz8gW107XG4gIGNvbnN0IHRvdWNoZWQgPSBuZXcgU2V0KGZpbGVzLmZsYXRNYXAoKGZpbGUpID0+IGZpbGUucHJldmlvdXNfZmlsZW5hbWUgPT09IHVuZGVmaW5lZCA/IGZpbGUuZmlsZW5hbWUgOiBbZmlsZS5maWxlbmFtZSwgZmlsZS5wcmV2aW91c19maWxlbmFtZV0pKTtcbiAgY29uc3QgY2hhbmdlZFBhdGhzID0gWy4uLnRvdWNoZWRdLmZpbHRlcigocGF0aCkgPT4gZW50cnkucGF0aHMuc29tZSgoZ2xvYikgPT4gbWF0Y2hlc0dsb2IocGF0aCwgZ2xvYikpKS5zb3J0KCk7XG4gIGNvbnN0IGlzVHJ1bmNhdGVkID0gZmlsZXMubGVuZ3RoID49IENPTVBBUkVfRklMRV9MSU1JVDtcbiAgcmV0dXJuIHtcbiAgICBjaGFuZ2VkUGF0aHMsXG4gICAgY29tcGFyZVVybCxcbiAgICBlbnRyeSxcbiAgICBoZWFkLFxuICAgIHBpbjogZW50cnkuY29tbWl0LFxuICAgIHN0YXRlOiBjaGFuZ2VkUGF0aHMubGVuZ3RoID4gMCB8fCBpc1RydW5jYXRlZCA/ICdtb3ZlZCcgOiAndW53YXRjaGVkJyxcbiAgICB0cnVuY2F0ZWQ6IGlzVHJ1bmNhdGVkXG4gIH07XG59XG5cbi8qKlxuICogUGFyc2VzIGFuZCB2YWxpZGF0ZXMgYW4gYHVwc3RyZWFtcy5qc29uYC5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSBmaWxlJ3MgY29udGVudC5cbiAqIEByZXR1cm5zIFRoZSBjb25maWcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVwc3RyZWFtc0NvbmZpZyh0ZXh0OiBzdHJpbmcpOiBVcHN0cmVhbXNDb25maWcge1xuICBjb25zdCBjb25maWcgPSBKU09OLnBhcnNlKHRleHQpIGFzIFBhcnRpYWw8VXBzdHJlYW1zQ29uZmlnPjtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy51cHN0cmVhbXMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndXBzdHJlYW1zLmpzb24gaGFzIG5vIFwidXBzdHJlYW1zXCIgYXJyYXkuJyk7XG4gIH1cbiAgLy8gUmVhZCB0aHJvdWdoIGBSZWZsZWN0LmdldGAsIGJlY2F1c2Ugbm90aGluZyBhYm91dCB0aGUgcGFyc2VkIGVudHJpZXMgaXMga25vd24geWV0LlxuICBjb25zdCBlbnRyaWVzOiByZWFkb25seSBvYmplY3RbXSA9IGNvbmZpZy51cHN0cmVhbXM7XG4gIGNvbnN0IG5hbWVzID0gbmV3IFNldDx1bmtub3duPigpO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBuYW1lOiB1bmtub3duID0gUmVmbGVjdC5nZXQoZW50cnksICduYW1lJyk7XG4gICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgPyBgXCIke25hbWV9XCJgIDogJ3dpdGggbm8gbmFtZSc7XG4gICAgY29uc3QgaXNHaXQgPSAncmVwbycgaW4gZW50cnk7XG4gICAgY29uc3QgcmVxdWlyZWQgPSBpc0dpdCA/IFsnbmFtZScsICdyZXBvJywgJ3JlZicsICdjb21taXQnLCAnaGFuZGxlciddIDogWyduYW1lJywgJ25wbScsICd2ZXJzaW9uJywgJ2hhbmRsZXInXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiByZXF1aXJlZCkge1xuICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0LmdldChlbnRyeSwga2V5KSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgdXBzdHJlYW1zLmpzb246IGVudHJ5ICR7bGFiZWx9IG5lZWRzIGEgc3RyaW5nIFwiJHtrZXl9XCIuYCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc0dpdCAmJiAhQXJyYXkuaXNBcnJheShSZWZsZWN0LmdldChlbnRyeSwgJ3BhdGhzJykpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVwc3RyZWFtcy5qc29uOiBlbnRyeSAke2xhYmVsfSBuZWVkcyBhIFwicGF0aHNcIiBhcnJheS5gKTtcbiAgICB9XG4gICAgaWYgKG5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1cHN0cmVhbXMuanNvbjogdGhlIG5hbWUgJHtsYWJlbH0gaXMgdXNlZCB0d2ljZS5gKTtcbiAgICB9XG4gICAgbmFtZXMuYWRkKG5hbWUpO1xuICB9XG4gIHJldHVybiBjb25maWcgYXMgVXBzdHJlYW1zQ29uZmlnO1xufVxuXG4vKipcbiAqIFBsYW5zIHRoZSBQUiBhIG1vdmVkIHVwc3RyZWFtIGFza3MgZm9yLlxuICpcbiAqIEBwYXJhbSBzdGF0dXMgLSBUaGUgY29tcGFyaXNvbiBvZiBhIG1vdmVkIGVudHJ5LlxuICogQHJldHVybnMgVGhlIGJyYW5jaCBhbmQgdGl0bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbGFuU3luYyhzdGF0dXM6IFVwc3RyZWFtU3RhdHVzKTogU3luY1BsYW4ge1xuICByZXR1cm4ge1xuICAgIGJyYW5jaDogYHVwc3RyZWFtLyR7c3RhdHVzLmVudHJ5Lm5hbWV9YCxcbiAgICBzdGF0dXMsXG4gICAgdGl0bGU6IGBjaG9yZSh1cHN0cmVhbSk6IHN5bmMgJHtzdGF0dXMuZW50cnkubmFtZX0gdG8gJHtzaG9ydGVuKHN0YXR1cy5oZWFkKX1gXG4gIH07XG59XG5cbi8qKlxuICogQ2hlY2tzIGV2ZXJ5IGVudHJ5LCBhbmQgb3BlbnMgb3IgdXBkYXRlcyBvbmUgUFIgcGVyIG1vdmVkIHVwc3RyZWFtLlxuICpcbiAqIEEgaGFuZGxlciBvciB2ZXJpZnkgZmFpbHVyZSBzdGlsbCBvcGVucyB0aGUgUFIsIGFzIGEgZHJhZnQgd2l0aCB0aGUgZmFpbHVyZSBpbiBpdHMgYm9keSwgc28gYSBicmVha2luZyB1cHN0cmVhbSBjaGFuZ2VcbiAqIGlzIHNlZW4gcmF0aGVyIHRoYW4gc2tpcHBlZC4gQW4gZXJyb3IgaW4gdGhlIHN5bmMgaXRzZWxmLCBzdWNoIGFzIGEgZmFpbGVkIEFQSSBjYWxsLCBpcyByZXBvcnRlZCBpbiB0aGUgZW50cnkncyByZXN1bHRcbiAqIGFuZCB0aGUgbmV4dCBlbnRyeSBzdGlsbCBydW5zLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gV2hhdCB0byBzeW5jLCBhbmQgaG93LlxuICogQHBhcmFtIGRlcGVuZGVuY2llcyAtIFRoZSBvdXRzaWRlIHdvcmxkLlxuICogQHJldHVybnMgT25lIHJlc3VsdCBwZXIgZW50cnkgY2hlY2tlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN5bmNVcHN0cmVhbXMob3B0aW9uczogU3luY1Vwc3RyZWFtc09wdGlvbnMsIGRlcGVuZGVuY2llczogU3luY0RlcGVuZGVuY2llcyk6IFByb21pc2U8U3luY1Jlc3VsdFtdPiB7XG4gIGNvbnN0IGNvbmZpZyA9IHBhcnNlVXBzdHJlYW1zQ29uZmlnKHJlYWRGaWxlU3luYyhvcHRpb25zLmNvbmZpZ1BhdGgsICd1dGYtOCcpKTtcbiAgY29uc3QgdW5rbm93biA9IG9wdGlvbnMub25seS5maWx0ZXIoKG5hbWUpID0+IGNvbmZpZy51cHN0cmVhbXMuZXZlcnkoKGVudHJ5KSA9PiBlbnRyeS5uYW1lICE9PSBuYW1lKSk7XG4gIGlmICh1bmtub3duLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVwc3RyZWFtcy5qc29uIGhhcyBubyBlbnRyeSBuYW1lZCAke3Vua25vd24ubWFwKChuYW1lKSA9PiBgXCIke25hbWV9XCJgKS5qb2luKCcsICcpfS5gKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHM6IFN5bmNSZXN1bHRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGNvbmZpZy51cHN0cmVhbXMpIHtcbiAgICBpZiAob3B0aW9ucy5vbmx5Lmxlbmd0aCA+IDAgJiYgIW9wdGlvbnMub25seS5pbmNsdWRlcyhlbnRyeS5uYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXN1bHRzLnB1c2goYXdhaXQgc3luY0VudHJ5KGVudHJ5LCBjb25maWcsIG9wdGlvbnMsIGRlcGVuZGVuY2llcykpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgZGVwZW5kZW5jaWVzLmxvZyhgJHtlbnRyeS5uYW1lfTogRVJST1IgJHttZXNzYWdlfWApO1xuICAgICAgcmVzdWx0cy5wdXNoKHsgZXJyb3I6IG1lc3NhZ2UsIG5hbWU6IGVudHJ5Lm5hbWUsIG91dGNvbWU6ICdlcnJvcicgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIFJlY29yZHMgYGhlYWRgIGFzIHRoZSBlbnRyeSdzIHBpbiBpbiBgdXBzdHJlYW1zLmpzb25gLCB1bmxlc3MgdGhlIGhhbmRsZXIgYWxyZWFkeSBtb3ZlZCBpdCwga2VlcGluZyB0aGUgZmlsZSdzXG4gKiBrZXkgb3JkZXIgYW5kIGZvcm1hdHRpbmcuXG4gKlxuICogQHBhcmFtIGNvbmZpZ1BhdGggLSBUaGUgcGF0aCB0byBgdXBzdHJlYW1zLmpzb25gLlxuICogQHBhcmFtIHN0YXR1cyAtIFRoZSBjb21wYXJpc29uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVQaW4oY29uZmlnUGF0aDogc3RyaW5nLCBzdGF0dXM6IFVwc3RyZWFtU3RhdHVzKTogdm9pZCB7XG4gIGNvbnN0IHRleHQgPSByZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0Zi04Jyk7XG4gIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodGV4dCkgYXMgVXBzdHJlYW1zRmlsZVNoYXBlO1xuICBjb25zdCBrZXkgPSBpc0dpdFVwc3RyZWFtKHN0YXR1cy5lbnRyeSkgPyAnY29tbWl0JyA6ICd2ZXJzaW9uJztcbiAgY29uc3QgdGFyZ2V0ID0gcGFyc2VkLnVwc3RyZWFtcy5maW5kKChlbnRyeSkgPT4gZW50cnlbJ25hbWUnXSA9PT0gc3RhdHVzLmVudHJ5Lm5hbWUpO1xuICBpZiAodGFyZ2V0Py5ba2V5XSAhPT0gc3RhdHVzLnBpbikge1xuICAgIHJldHVybjtcbiAgfVxuICB0YXJnZXRba2V5XSA9IHN0YXR1cy5oZWFkO1xuICB3cml0ZUZpbGVTeW5jKGNvbmZpZ1BhdGgsIGAke0pTT04uc3RyaW5naWZ5KHBhcnNlZCwgbnVsbCwgSlNPTl9JTkRFTlRfU1BBQ0VTKX1cXG5gKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlQbGFuKHBsYW46IFN5bmNQbGFuLCBjb25maWc6IFVwc3RyZWFtc0NvbmZpZywgb3B0aW9uczogU3luY1Vwc3RyZWFtc09wdGlvbnMsIGRlcGVuZGVuY2llczogU3luY0RlcGVuZGVuY2llcyk6IFN5bmNSZXN1bHQge1xuICBjb25zdCB7IGVudHJ5IH0gPSBwbGFuLnN0YXR1cztcbiAgLy8gTm8gY29sb3I6IHRoZSBvdXRwdXQgaXMgcXVvdGVkIGluIGEgUFIgYm9keSwgd2hlcmUgYSBjb2xvciBjb2RlIGlzIG9ubHkgbm9pc2UuIGBDSWAgaXMgbGVmdCBhbG9uZSwgYmVjYXVzZSBpdFxuICAvLyBjaGFuZ2VzIHdoYXQgc29tZSB0b29scyBkbywgbm90IGp1c3QgaG93IHRoZXkgcHJpbnQuXG4gIGNvbnN0IGVudiA9IHsgRk9SQ0VfQ09MT1I6ICcwJywgTk9fQ09MT1I6ICcxJywgVVBTVFJFQU1fTkFNRTogZW50cnkubmFtZSwgVVBTVFJFQU1fVEFSR0VUOiBwbGFuLnN0YXR1cy5oZWFkIH07XG4gIGNvbnN0IGhhbmRsZXI6IFN0ZXBSZXN1bHQgPSB7IGNvbW1hbmQ6IGVudHJ5LmhhbmRsZXIsIHJlc3VsdDogZGVwZW5kZW5jaWVzLnNoZWxsKGVudHJ5LmhhbmRsZXIsIGVudikgfTtcbiAgd3JpdGVQaW4ob3B0aW9ucy5jb25maWdQYXRoLCBwbGFuLnN0YXR1cyk7XG4gIGNvbnN0IHZlcmlmeUNvbW1hbmQgPSBlbnRyeS52ZXJpZnkgPz8gY29uZmlnLnZlcmlmeTtcbiAgY29uc3QgdmVyaWZ5OiBudWxsIHwgU3RlcFJlc3VsdCA9IHZlcmlmeUNvbW1hbmQgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB7IGNvbW1hbmQ6IHZlcmlmeUNvbW1hbmQsIHJlc3VsdDogZGVwZW5kZW5jaWVzLnNoZWxsKHZlcmlmeUNvbW1hbmQsIGVudikgfTtcbiAgY29uc3QgaXNGYWlsZWQgPSBoYW5kbGVyLnJlc3VsdC5leGl0Q29kZSAhPT0gMCB8fCAodmVyaWZ5ICE9PSBudWxsICYmIHZlcmlmeS5yZXN1bHQuZXhpdENvZGUgIT09IDApO1xuXG4gIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2dpdCcsIFsnYWRkJywgJy0tYWxsJ10pO1xuICBleGVjT3JUaHJvdyhkZXBlbmRlbmNpZXMsICdnaXQnLCBbJ2NvbW1pdCcsICctLW5vLXZlcmlmeScsICctLW1lc3NhZ2UnLCBwbGFuLnRpdGxlXSk7XG4gIGNvbnN0IGRpZmZTdGF0ID0gZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2l0JywgWydkaWZmJywgJy0tc3RhdCcsICdIRUFEfjEnLCAnSEVBRCddKTtcblxuICBjb25zdCBib2R5ID0gYnVpbGRQckJvZHkocGxhbiwgeyBoYW5kbGVyLCB2ZXJpZnkgfSwgZGlmZlN0YXQpO1xuICBjb25zdCBpc1JlbW90ZUJyYW5jaCA9IGRlcGVuZGVuY2llcy5leGVjKCdnaXQnLCBbJ2xzLXJlbW90ZScsICctLWV4aXQtY29kZScsICctLWhlYWRzJywgJ29yaWdpbicsIHBsYW4uYnJhbmNoXSkuZXhpdENvZGUgPT09IDA7XG4gIGlmIChpc1JlbW90ZUJyYW5jaCkge1xuICAgIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2dpdCcsIFsnZmV0Y2gnLCAnb3JpZ2luJywgcGxhbi5icmFuY2hdKTtcbiAgICBpZiAoZGVwZW5kZW5jaWVzLmV4ZWMoJ2dpdCcsIFsnZGlmZicsICctLXF1aWV0JywgJ0ZFVENIX0hFQUQnLCAnSEVBRCddKS5leGl0Q29kZSA9PT0gMCkge1xuICAgICAgLy8gVGhlIGJvZHkgaXMgc3RpbGwgcmV3cml0dGVuLCBzbyBhIGNoYW5nZSB0byBob3cgaXQgaXMgd3JpdHRlbiByZWFjaGVzIGEgUFIgd2hvc2UgYnJhbmNoIGhhcyBub3QgbW92ZWQuXG4gICAgICBjb25zdCBvcGVuID0gZmluZE9wZW5QcihkZXBlbmRlbmNpZXMsIHBsYW4uYnJhbmNoKTtcbiAgICAgIGlmIChvcGVuICE9PSBudWxsKSB7XG4gICAgICAgIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2doJywgWydwcicsICdlZGl0Jywgb3BlbiwgJy0tYm9keScsIGJvZHldKTtcbiAgICAgIH1cbiAgICAgIGRlcGVuZGVuY2llcy5sb2coYCR7ZW50cnkubmFtZX06ICR7cGxhbi5icmFuY2h9IGFscmVhZHkgaG9sZHMgdGhpcyByZXN1bHQ7IG5vdGhpbmcgcHVzaGVkJHtvcGVuID09PSBudWxsID8gJycgOiBgLCBQUiAjJHtvcGVufSdzIGJvZHkgcmV3cml0dGVuYH0uYCk7XG4gICAgICByZXR1cm4geyBuYW1lOiBlbnRyeS5uYW1lLCBvdXRjb21lOiAndW5jaGFuZ2VkJyB9O1xuICAgIH1cbiAgfVxuICBleGVjT3JUaHJvdyhkZXBlbmRlbmNpZXMsICdnaXQnLCBbJ3B1c2gnLCAnLS1mb3JjZScsICdvcmlnaW4nLCBgSEVBRDpyZWZzL2hlYWRzLyR7cGxhbi5icmFuY2h9YF0pO1xuXG4gIGNvbnN0IGV4aXN0aW5nID0gZmluZE9wZW5QcihkZXBlbmRlbmNpZXMsIHBsYW4uYnJhbmNoKTtcbiAgaWYgKGV4aXN0aW5nICE9PSBudWxsKSB7XG4gICAgY29uc3QgcHJOdW1iZXIgPSBOdW1iZXIoZXhpc3RpbmcpO1xuICAgIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2doJywgWydwcicsICdlZGl0JywgZXhpc3RpbmcsICctLXRpdGxlJywgcGxhbi50aXRsZSwgJy0tYm9keScsIGJvZHldKTtcbiAgICBleGVjT3JUaHJvdyhkZXBlbmRlbmNpZXMsICdnaCcsIGlzRmFpbGVkID8gWydwcicsICdyZWFkeScsIGV4aXN0aW5nLCAnLS11bmRvJ10gOiBbJ3ByJywgJ3JlYWR5JywgZXhpc3RpbmddKTtcbiAgICBkZXBlbmRlbmNpZXMubG9nKGAke2VudHJ5Lm5hbWV9OiB1cGRhdGVkIFBSICMke2V4aXN0aW5nfSR7aXNGYWlsZWQgPyAnIChkcmFmdDogYSBzdGVwIGZhaWxlZCknIDogJyd9LmApO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5Lm5hbWUsIG91dGNvbWU6ICd1cGRhdGVkJywgcHJOdW1iZXIgfTtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2doJywgW1xuICAgICdwcicsXG4gICAgJ2NyZWF0ZScsXG4gICAgJy0tYmFzZScsXG4gICAgb3B0aW9ucy5iYXNlQnJhbmNoLFxuICAgICctLWhlYWQnLFxuICAgIHBsYW4uYnJhbmNoLFxuICAgICctLXRpdGxlJyxcbiAgICBwbGFuLnRpdGxlLFxuICAgICctLWJvZHknLFxuICAgIGJvZHksXG4gICAgLi4uKGlzRmFpbGVkID8gWyctLWRyYWZ0J10gOiBbXSlcbiAgXSkudHJpbSgpO1xuICBkZXBlbmRlbmNpZXMubG9nKGAke2VudHJ5Lm5hbWV9OiBvcGVuZWQgJHt1cmx9JHtpc0ZhaWxlZCA/ICcgKGRyYWZ0OiBhIHN0ZXAgZmFpbGVkKScgOiAnJ30uYCk7XG4gIGNvbnN0IHByTnVtYmVyID0gTnVtYmVyKC9cXC9wdWxsXFwvKD88TnVtYmVyPlxcZCspLy5leGVjKHVybCk/Lmdyb3Vwcz8uWydOdW1iZXInXSA/PyBOYU4pO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKHByTnVtYmVyKSA/IHsgbmFtZTogZW50cnkubmFtZSwgb3V0Y29tZTogJ29wZW5lZCcgfSA6IHsgbmFtZTogZW50cnkubmFtZSwgb3V0Y29tZTogJ29wZW5lZCcsIHByTnVtYmVyIH07XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlU3RlcChoZWFkaW5nOiBzdHJpbmcsIHN0ZXA6IFN0ZXBSZXN1bHQpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGlzUGFzc2VkID0gc3RlcC5yZXN1bHQuZXhpdENvZGUgPT09IDA7XG4gIGNvbnN0IG91dHB1dExpbmVzID0gY2xlYW5Db21tYW5kT3V0cHV0KHN0ZXAucmVzdWx0Lm91dHB1dCkudHJpbUVuZCgpLnNwbGl0KCdcXG4nKTtcbiAgY29uc3QgdGFpbCA9IG91dHB1dExpbmVzLnNsaWNlKC1PVVRQVVRfVEFJTF9MSU5FUykuam9pbignXFxuJyk7XG4gIGNvbnN0IGZhaWx1cmVMaW5lcyA9IGlzUGFzc2VkID8gW10gOiBvdXRwdXRMaW5lcy5maWx0ZXIoKGxpbmUpID0+IEZBSUxVUkVfTElORV9SRUdfRVhQLnRlc3QobGluZSkpLnNsaWNlKDAsIEZBSUxVUkVfTElORV9MSU1JVCk7XG4gIHJldHVybiBbXG4gICAgYCMjIyAke2hlYWRpbmd9YCxcbiAgICAnJyxcbiAgICBgXFxgJHtzdGVwLmNvbW1hbmR9XFxgOiAke2lzUGFzc2VkID8gJ3Bhc3NlZCcgOiBgKipGQUlMRUQqKiAoZXhpdCAke1N0cmluZyhzdGVwLnJlc3VsdC5leGl0Q29kZSl9KWB9LmAsXG4gICAgJycsXG4gICAgLi4uKGZhaWx1cmVMaW5lcy5sZW5ndGggPT09IDAgPyBbXSA6IFsnTGluZXMgcmVwb3J0aW5nIHRoZSBmYWlsdXJlOicsICcnLCAnYGBgdGV4dCcsIC4uLmZhaWx1cmVMaW5lcywgJ2BgYCcsICcnXSksXG4gICAgaXNQYXNzZWQgPyAnPGRldGFpbHM+PHN1bW1hcnk+T3V0cHV0PC9zdW1tYXJ5PicgOiAnPGRldGFpbHMgb3Blbj48c3VtbWFyeT5PdXRwdXQ8L3N1bW1hcnk+JyxcbiAgICAnJyxcbiAgICAnYGBgdGV4dCcsXG4gICAgdGFpbCxcbiAgICAnYGBgJyxcbiAgICAnJyxcbiAgICAnPC9kZXRhaWxzPicsXG4gICAgJydcbiAgXTtcbn1cblxuZnVuY3Rpb24gZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzOiBTeW5jRGVwZW5kZW5jaWVzLCBmaWxlOiBzdHJpbmcsIGFyZ3VtZW50c186IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzdWx0ID0gZGVwZW5kZW5jaWVzLmV4ZWMoZmlsZSwgYXJndW1lbnRzXyk7XG4gIGlmIChyZXN1bHQuZXhpdENvZGUgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZmlsZX0gJHthcmd1bWVudHNfLmpvaW4oJyAnKX0gZmFpbGVkIChleGl0ICR7U3RyaW5nKHJlc3VsdC5leGl0Q29kZSl9KTogJHtyZXN1bHQub3V0cHV0LnRyaW0oKX1gKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0Lm91dHB1dDtcbn1cblxuZnVuY3Rpb24gZmluZE9wZW5QcihkZXBlbmRlbmNpZXM6IFN5bmNEZXBlbmRlbmNpZXMsIGJyYW5jaDogc3RyaW5nKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0ICRudW1iZXIgPSBleGVjT3JUaHJvdyhkZXBlbmRlbmNpZXMsICdnaCcsIFsncHInLCAnbGlzdCcsICctLWhlYWQnLCBicmFuY2gsICctLXN0YXRlJywgJ29wZW4nLCAnLS1qc29uJywgJ251bWJlcicsICctLWpxJywgJy5bMF0ubnVtYmVyJ10pLnRyaW0oKTtcbiAgcmV0dXJuICRudW1iZXIgPT09ICcnIHx8ICRudW1iZXIgPT09ICdudWxsJyA/IG51bGwgOiAkbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBpc0dpdFVwc3RyZWFtKGVudHJ5OiBVcHN0cmVhbUVudHJ5KTogZW50cnkgaXMgR2l0VXBzdHJlYW1FbnRyeSB7XG4gIHJldHVybiAncmVwbycgaW4gZW50cnk7XG59XG5cbmZ1bmN0aW9uIHNob3J0ZW4oaGVhZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIC9eWzAtOWEtZl17NDB9JC8udGVzdChoZWFkKSA/IGhlYWQuc2xpY2UoMCwgU0hPUlRfU0hBX0xFTkdUSCkgOiBoZWFkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzeW5jRW50cnkoZW50cnk6IFVwc3RyZWFtRW50cnksIGNvbmZpZzogVXBzdHJlYW1zQ29uZmlnLCBvcHRpb25zOiBTeW5jVXBzdHJlYW1zT3B0aW9ucywgZGVwZW5kZW5jaWVzOiBTeW5jRGVwZW5kZW5jaWVzKTogUHJvbWlzZTxTeW5jUmVzdWx0PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNvbXBhcmVXaXRoVXBzdHJlYW0oZW50cnksIGRlcGVuZGVuY2llcyk7XG4gIGlmIChzdGF0dXMuc3RhdGUgPT09ICdjdXJyZW50Jykge1xuICAgIGRlcGVuZGVuY2llcy5sb2coYCR7ZW50cnkubmFtZX06IGN1cnJlbnQgYXQgJHtzaG9ydGVuKHN0YXR1cy5oZWFkKX0uYCk7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkubmFtZSwgb3V0Y29tZTogJ2N1cnJlbnQnIH07XG4gIH1cbiAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ3Vud2F0Y2hlZCcpIHtcbiAgICBkZXBlbmRlbmNpZXMubG9nKGAke2VudHJ5Lm5hbWV9OiBtb3ZlZCB0byAke3Nob3J0ZW4oc3RhdHVzLmhlYWQpfSwgYnV0IG5vIHdhdGNoZWQgcGF0aCBjaGFuZ2VkIHNpbmNlICR7c2hvcnRlbihzdGF0dXMucGluKX0uYCk7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkubmFtZSwgb3V0Y29tZTogJ3Vud2F0Y2hlZCcgfTtcbiAgfVxuXG4gIGNvbnN0IHBsYW4gPSBwbGFuU3luYyhzdGF0dXMpO1xuICBpZiAob3B0aW9ucy5kcnlSdW4pIHtcbiAgICBkZXBlbmRlbmNpZXMubG9nKGAke2VudHJ5Lm5hbWV9OiBtb3ZlZCBmcm9tICR7c2hvcnRlbihzdGF0dXMucGluKX0gdG8gJHtzaG9ydGVuKHN0YXR1cy5oZWFkKX0uIFdvdWxkIHB1c2ggJHtwbGFuLmJyYW5jaH0gYW5kIG9wZW46YCk7XG4gICAgZGVwZW5kZW5jaWVzLmxvZyhgICB0aXRsZTogJHtwbGFuLnRpdGxlfWApO1xuICAgIGRlcGVuZGVuY2llcy5sb2coYnVpbGRQckJvZHkocGxhbiwgbnVsbCwgbnVsbCkucmVwbGFjZUFsbCgvXi9nbSwgJyAgfCAnKSk7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkubmFtZSwgb3V0Y29tZTogJ3BsYW5uZWQnIH07XG4gIH1cblxuICAvLyBUaGUgdXBkYXRlIGNvbW1pdCB0YWtlcyBldmVyeSBmaWxlIGluIHRoZSB0cmVlLCBzbyBhIGZpbGUgbGVmdCBseWluZyBhcm91bmQgd291bGQgYmUgcHVzaGVkIHdpdGggaXQuXG4gIGNvbnN0IGRpcnR5ID0gZXhlY09yVGhyb3coZGVwZW5kZW5jaWVzLCAnZ2l0JywgWydzdGF0dXMnLCAnLS1wb3JjZWxhaW4nXSkudHJpbSgpO1xuICBpZiAoZGlydHkgIT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0aGUgd29ya2luZyB0cmVlIGlzIG5vdCBjbGVhbiwgYW5kIHRoZSB1cGRhdGUgY29tbWl0IHdvdWxkIHRha2UgdGhlc2UgZmlsZXMgd2l0aCBpdDpcXG4ke2RpcnR5fWApO1xuICB9XG4gIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2dpdCcsIFsnZmV0Y2gnLCAnb3JpZ2luJywgb3B0aW9ucy5iYXNlQnJhbmNoXSk7XG4gIGV4ZWNPclRocm93KGRlcGVuZGVuY2llcywgJ2dpdCcsIFsnY2hlY2tvdXQnLCAnLUInLCBwbGFuLmJyYW5jaCwgYG9yaWdpbi8ke29wdGlvbnMuYmFzZUJyYW5jaH1gXSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGFwcGx5UGxhbihwbGFuLCBjb25maWcsIG9wdGlvbnMsIGRlcGVuZGVuY2llcyk7XG4gIH0gZmluYWxseSB7XG4gICAgZGVwZW5kZW5jaWVzLmV4ZWMoJ2dpdCcsIFsnY2hlY2tvdXQnLCAnLS1mb3JjZScsIG9wdGlvbnMuYmFzZUJyYW5jaF0pO1xuICAgIGRlcGVuZGVuY2llcy5leGVjKCdnaXQnLCBbJ2JyYW5jaCcsICctLWRlbGV0ZScsICctLWZvcmNlJywgcGxhbi5icmFuY2hdKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0xhc3RMaW5lU3RhdGUobGluZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RhdGVzID0gbGluZS5yZXBsYWNlKC9cXHIrJC8sICcnKTtcbiAgcmV0dXJuIHN0YXRlcy5zbGljZShzdGF0ZXMubGFzdEluZGV4T2YoJ1xccicpICsgMSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQVNBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxtQkFBbUI7QUEyTjVCLE1BQU0scUJBQXFCO0FBRTNCLE1BQU0sbUJBQW1CO0FBS3pCLE1BQU0sb0JBQW9CO0FBSzFCLE1BQU0scUJBQXFCO0FBRTNCLE1BQU0scUJBQXFCO0FBTTNCLE1BQU0sTUFBTSxPQUFPO0FBT25CLE1BQU0sMkJBQTJCLElBQUk7QUFBQSxFQUNuQyxPQUFPLE1BQU0sR0FBRyx1QkFBdUIsR0FBRyxvQ0FBb0MsR0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnaoumov/typescript-dev-toolkit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.1",
|
|
4
4
|
"description": "Generic TypeScript project tooling: build, lint, format, spellcheck, test, gate and release scripts.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -306,7 +306,7 @@
|
|
|
306
306
|
"eslint-plugin-import-x": "^4.17.1",
|
|
307
307
|
"eslint-plugin-n": "^18.5.0",
|
|
308
308
|
"eslint-plugin-perfectionist": "^5.13.0",
|
|
309
|
-
"eslint-plugin-unicorn": "
|
|
309
|
+
"eslint-plugin-unicorn": "^79.0.0",
|
|
310
310
|
"jiti": "^2.7.0",
|
|
311
311
|
"markdownlint": "^0.42.0",
|
|
312
312
|
"markdownlint-cli2": "^0.24.0",
|