construct-hub 0.4.96 → 0.4.97

Sign up to get free protection for your applications and to get access to all the features.
@@ -91,11 +91,21 @@ async function handler(event, context) {
91
91
  continuationObjectKey: keyName,
92
92
  };
93
93
  }
94
- // The maximum time the handler needs to create metrics and upload
95
- // reports once it's done processing all S3 object keys.
96
- const maxMetricProcessingTime = 60000;
94
+ /**
95
+ * The time margin when we need to stop working through S3 keys when we're nearing the end of the Lambda time slice.
96
+ *
97
+ * Needs to account for the time taken to do both:
98
+ *
99
+ * - Going through the list+process loop one more time
100
+ * - Creating metrics and uploading reports
101
+ *
102
+ * When we used to have this at 1 minute, we hit ~1 timeout a day. So set the margin
103
+ * a bit wider than that.
104
+ */
105
+ const maxMetricProcessingTime = 120000;
97
106
  const packageDataBucket = env_lambda_shared_1.requireEnv('PACKAGE_DATA_BUCKET_NAME');
98
107
  for await (const [keys, latestContinuationToken] of relevantObjectKeys(packageDataBucket, continuationToken)) {
108
+ console.log(`Got a page of ${keys.length} keys`);
99
109
  for (const key of keys) {
100
110
  const [, name, version] = constants.STORAGE_KEY_FORMAT_REGEX.exec(key);
101
111
  packageNames.add(name);
@@ -452,4 +462,4 @@ function deserialize(value) {
452
462
  return JSON.parse(value, safeReviver);
453
463
  }
454
464
  exports.deserialize = deserialize;
455
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYXJ5LmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZW5kL2ludmVudG9yeS9jYW5hcnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFrQztBQUNsQywrREFBd0U7QUFHeEUsbUNBQWdDO0FBQ2hDLG1EQUFtRDtBQUNuRCw2RkFBMkU7QUFDM0UsaURBQWlEO0FBQ2pELG1FQUF5RDtBQUN6RCxpREFBMkQ7QUFDM0QsMkNBQWdGO0FBRWhGLG9DQUFhLENBQUMsU0FBUyxHQUFHLDZCQUFpQixDQUFDO0FBRXJDLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBMkIsRUFBRSxPQUFnQjtJQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0RCxNQUFNLGlCQUFpQixHQUFHLDhCQUFVLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUVoRSxNQUFNLEVBQ0osaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLFdBQVcsR0FDWixHQUFHLEtBQUssQ0FBQyxxQkFBcUI7UUFDN0IsQ0FBQyxDQUFDLE1BQU0sWUFBWSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztRQUNqRCxDQUFDLENBQUM7WUFDRSxpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLGVBQWUsRUFBRSxJQUFJLEdBQUcsRUFBZ0M7WUFDeEQsWUFBWSxFQUFFLElBQUksR0FBRyxFQUFVO1lBQy9CLG9CQUFvQixFQUFFLElBQUksR0FBRyxFQUFVO1lBQ3ZDLFdBQVcsRUFBRSxJQUFJLEdBQUcsRUFBMkI7U0FDaEQsQ0FBQztJQUVOLEtBQUssVUFBVSxZQUFZLENBQUMscUJBQTZCO1FBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQ1QsMkVBQTJFLENBQzVFLENBQUM7UUFDRixJQUFJLEVB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QUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7S0FDRjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQWdCLFNBQVMsQ0FBSSxLQUFRO0lBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBa0IsQ0FBQztBQUNqRSxDQUFDO0FBRkQsOEJBRUM7QUFFRCxTQUFnQixXQUFXLENBQUksS0FBb0I7SUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsa0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBtZXRyaWNTY29wZSwgQ29uZmlndXJhdGlvbiwgVW5pdCB9IGZyb20gJ2F3cy1lbWJlZGRlZC1tZXRyaWNzJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgUHJvbWlzZVJlc3VsdCB9IGZyb20gJ2F3cy1zZGsvbGliL3JlcXVlc3QnO1xuaW1wb3J0IHsgU2VtVmVyIH0gZnJvbSAnc2VtdmVyJztcbmltcG9ydCAqIGFzIGF3cyBmcm9tICcuLi9zaGFyZWQvYXdzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgY29tcHJlc3NDb250ZW50IH0gZnJvbSAnLi4vc2hhcmVkL2NvbXByZXNzLWNvbnRlbnQubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5pbXBvcnQgeyByZXF1aXJlRW52IH0gZnJvbSAnLi4vc2hhcmVkL2Vudi5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IERvY3VtZW50YXRpb25MYW5ndWFnZSB9IGZyb20gJy4uL3NoYXJlZC9sYW5ndWFnZSc7XG5pbXBvcnQgeyBNRVRSSUNTX05BTUVTUEFDRSwgTWV0cmljTmFtZSwgTEFOR1VBR0VfRElNRU5TSU9OIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5Db25maWd1cmF0aW9uLm5hbWVzcGFjZSA9IE1FVFJJQ1NfTkFNRVNQQUNFO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogSW52ZW50b3J5Q2FuYXJ5RXZlbnQsIGNvbnRleHQ6IENvbnRleHQpIHtcbiAgY29uc29sZS5sb2coJ0V2ZW50OicsIEpTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKSk7XG5cbiAgY29uc3Qgc2NyYXRjaHdvcmtCdWNrZXQgPSByZXF1aXJlRW52KCdTQ1JBVENIV09SS19CVUNLRVRfTkFNRScpO1xuXG4gIGNvbnN0IHtcbiAgICBjb250aW51YXRpb25Ub2tlbixcbiAgICBpbmRleGVkUGFja2FnZXMsXG4gICAgcGFja2FnZU5hbWVzLFxuICAgIHBhY2thZ2VNYWpvclZlcnNpb25zLFxuICAgIHBlckxhbmd1YWdlLFxuICB9ID0gZXZlbnQuY29udGludWF0aW9uT2JqZWN0S2V5XG4gICAgPyBhd2FpdCBsb2FkUHJvZ3Jlc3MoZXZlbnQuY29udGludWF0aW9uT2JqZWN0S2V5KVxuICAgIDoge1xuICAgICAgICBjb250aW51YXRpb25Ub2tlbjogdW5kZWZpbmVkLFxuICAgICAgICBpbmRleGVkUGFja2FnZXM6IG5ldyBNYXA8c3RyaW5nLCBJbmRleGVkUGFja2FnZVN0YXR1cz4oKSxcbiAgICAgICAgcGFja2FnZU5hbWVzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgICAgcGFja2FnZU1ham9yVmVyc2lvbnM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgICBwZXJMYW5ndWFnZTogbmV3IE1hcDxzdHJpbmcsIFBlckxhbmd1YWdlRGF0YT4oKSxcbiAgICAgIH07XG5cbiAgYXN5bmMgZnVuY3Rpb24gbG9hZFByb2dyZXNzKGNvbnRpbnVhdGlvbk9iamVjdEtleTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAnRm91bmQgYSBjb250aW51YXRpb24gb2JqZWN0IGtleSwgcmV0cmlldmluZyBkYXRhIGZyb20gdGhlIGV4aXN0aW5nIHJ1bi4uLidcbiAgICApO1xuICAgIGxldCB7IEJvZHksIENvbnRlbnRFbmNvZGluZyB9ID0gYXdhaXQgYXdzXG4gICAgICAuczMoKVxuICAgICAgLmdldE9iamVjdCh7XG4gICAgICAgIEJ1Y2tldDogc2NyYXRjaHdvcmtCdWNrZXQsXG4gICAgICAgIEtleTogY29udGludWF0aW9uT2JqZWN0S2V5LFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKCk7XG4gICAgLy8gSWYgaXQgd2FzIGNvbXByZXNzZWQsIGRlY29tcHJlc3MgaXQuXG4gICAgaWYgKENvbnRlbnRFbmNvZGluZyA9PT0gJ2d6aXAnKSB7XG4gICAgICBCb2R5ID0gZ3VuemlwU3luYyhCdWZmZXIuZnJvbShCb2R5ISBhcyBhbnkpKTtcbiAgICB9XG4gICAgaWYgKCFCb2R5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBPYmplY3Qga2V5IFwiJHtldmVudC5jb250aW51YXRpb25PYmplY3RLZXl9XCIgbm90IGZvdW5kIGluIGJ1Y2tldCBcIiR7c2NyYXRjaHdvcmtCdWNrZXR9XCIuYFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ0Rlc2VyaWFsaXppbmcgZGF0YS4uLicpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRTdGF0ZSA9IEJvZHkudG9TdHJpbmcoXG4gICAgICAndXRmLTgnXG4gICAgKSBhcyBTZXJpYWxpemVkPEludmVudG9yeUNhbmFyeVN0YXRlPjtcbiAgICBjb25zdCBzdGF0ZSA9IGRlc2VyaWFsaXplKHNlcmlhbGl6ZWRTdGF0ZSk7XG4gICAgY29uc29sZS5sb2coJ0Rlc2VyaWFsaXppbmcgZmluaXNoZWQuJyk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIHN0YXR1cyBvZiBhIHBhcnRpY3VsYXIgcGFja2FnZSwgcGFja2FnZSBtYWpvciB2ZXJzaW9uLCBwYWNrYWdlXG4gICAqIHZlcnNpb24sIGFuZCBwYWNrYWdlIHZlcnNpb24gc3VibW9kdWxlIGluIHRoZSBwZXItbGFuZ3VhZ2Ugc3RhdGUgc3RvcmFnZS5cbiAgICogV2hlbmV2ZXIgYSBuZXcgZW50cnkgaXMgYWRkZWQsIGEgYE1JU1NJTkdgIGVudHJ5IGlzIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWRcbiAgICogZm9yIHRoZSBvdGhlciBsYW5ndWFnZXMgKHVubGVzcyBhbm90aGVyIGVudHJ5IGFscmVhZHkgZXhpc3RzKS5cbiAgICpcbiAgICogSWYgYSBzdWJtb2R1bGUgaXMgcHJvdmlkZWQsIG9ubHkgdGhhdCBzdWJtb2R1bGUncyBhdmFpbGFiaWxpdHkgaXMgdXBkYXRlZC5cbiAgICovXG4gIGZ1bmN0aW9uIHJlY29yZFBlckxhbmd1YWdlKFxuICAgIGxhbmd1YWdlOiBEb2N1bWVudGF0aW9uTGFuZ3VhZ2UsXG4gICAgc3RhdHVzOiBEb2N1bWVudGF0aW9uU3RhdHVzLFxuICAgIHBrZ05hbWU6IHN0cmluZyxcbiAgICBwa2dNYWpvcjogc3RyaW5nLFxuICAgIHBrZ1ZlcnNpb246IHN0cmluZyxcbiAgICBzdWJtb2R1bGU/OiBzdHJpbmdcbiAgKSB7XG4gICAgZm9yIChjb25zdCBsYW5nIG9mIERvY3VtZW50YXRpb25MYW5ndWFnZS5BTEwpIHtcbiAgICAgIGRvUmVjb3JkUGVyTGFuZ3VhZ2UoXG4gICAgICAgIHBlckxhbmd1YWdlLFxuICAgICAgICBsYW5nLFxuICAgICAgICAvLyBJZiB0aGUgbGFuZ3VhZ2UgaXMgTk9UIHRoZSByZWdpc3RlcmVkIG9uZSwgdGhlbiB3ZSBpbnNlcnQgXCJNSVNTSU5HXCIuXG4gICAgICAgIGxhbmcgPT09IGxhbmd1YWdlID8gc3RhdHVzIDogRG9jdW1lbnRhdGlvblN0YXR1cy5NSVNTSU5HLFxuICAgICAgICBwa2dOYW1lLFxuICAgICAgICBwa2dNYWpvcixcbiAgICAgICAgcGtnVmVyc2lvbixcbiAgICAgICAgc3VibW9kdWxlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHNhdmVQcm9ncmVzcyhcbiAgICBsYXRlc3RDb250aW51YXRpb25Ub2tlbjogc3RyaW5nXG4gICk6IFByb21pc2U8SW52ZW50b3J5Q2FuYXJ5RXZlbnQ+IHtcbiAgICBjb25zb2xlLmxvZygnU2VyaWFsaXppbmcgZGF0YS4uLicpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRTdGF0ZTogU2VyaWFsaXplZDxJbnZlbnRvcnlDYW5hcnlTdGF0ZT4gPSBzZXJpYWxpemUoe1xuICAgICAgY29udGludWF0aW9uVG9rZW46IGxhdGVzdENvbnRpbnVhdGlvblRva2VuLFxuICAgICAgcGFja2FnZU5hbWVzLFxuICAgICAgcGFja2FnZU1ham9yVmVyc2lvbnMsXG4gICAgICBpbmRleGVkUGFja2FnZXMsXG4gICAgICBwZXJMYW5ndWFnZSxcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZygnU2VyaWFsaXppbmcgZmluaXNoZWQuJyk7XG5cbiAgICBjb25zdCB7IGJ1ZmZlciwgY29udGVudEVuY29kaW5nIH0gPSBjb21wcmVzc0NvbnRlbnQoXG4gICAgICBCdWZmZXIuZnJvbShzZXJpYWxpemVkU3RhdGUpXG4gICAgKTtcblxuICAgIGNvbnN0IGtleU5hbWUgPSBgaW52ZW50b3J5LWNhbmFyeS1wcm9ncmVzcy0ke0RhdGUubm93KCl9YDtcbiAgICBhd2FpdCBhd3NcbiAgICAgIC5zMygpXG4gICAgICAucHV0T2JqZWN0KHtcbiAgICAgICAgQnVja2V0OiBzY3JhdGNod29ya0J1Y2tldCxcbiAgICAgICAgS2V5OiBrZXlOYW1lLFxuICAgICAgICBCb2R5OiBidWZmZXIsXG4gICAgICAgIENvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIENvbnRlbnRFbmNvZGluZzogY29udGVudEVuY29kaW5nLFxuICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICdMYW1iZGEtTG9nLUdyb3VwJzogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gICAgICAgICAgJ0xhbWJkYS1Mb2ctU3RyZWFtJzogY29udGV4dC5sb2dTdHJlYW1OYW1lLFxuICAgICAgICAgICdMYW1iZGEtUnVuLUlkJzogY29udGV4dC5hd3NSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnByb21pc2UoKTtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGludWF0aW9uT2JqZWN0S2V5OiBrZXlOYW1lLFxuICAgIH07XG4gIH1cblxuICAvLyBUaGUgbWF4aW11bSB0aW1lIHRoZSBoYW5kbGVyIG5lZWRzIHRvIGNyZWF0ZSBtZXRyaWNzIGFuZCB1cGxvYWRcbiAgLy8gcmVwb3J0cyBvbmNlIGl0J3MgZG9uZSBwcm9jZXNzaW5nIGFsbCBTMyBvYmplY3Qga2V5cy5cbiAgY29uc3QgbWF4TWV0cmljUHJvY2Vzc2luZ1RpbWUgPSA2MF8wMDA7XG5cbiAgY29uc3QgcGFja2FnZURhdGFCdWNrZXQgPSByZXF1aXJlRW52KCdQQUNLQUdFX0RBVEFfQlVDS0VUX05BTUUnKTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IFtrZXlzLCBsYXRlc3RDb250aW51YXRpb25Ub2tlbl0gb2YgcmVsZXZhbnRPYmplY3RLZXlzKFxuICAgIHBhY2thZ2VEYXRhQnVja2V0LFxuICAgIGNvbnRpbnVhdGlvblRva2VuXG4gICkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBjb25zdCBbLCBuYW1lLCB2ZXJzaW9uXSA9IGNvbnN0YW50cy5TVE9SQUdFX0tFWV9GT1JNQVRfUkVHRVguZXhlYyhrZXkpITtcblxuICAgICAgcGFja2FnZU5hbWVzLmFkZChuYW1lKTtcbiAgICAgIGNvbnN0IG1ham9yVmVyc2lvbiA9IGAke25hbWV9QCR7bmV3IFNlbVZlcih2ZXJzaW9uKS5tYWpvcn1gO1xuICAgICAgcGFja2FnZU1ham9yVmVyc2lvbnMuYWRkKG1ham9yVmVyc2lvbik7XG5cbiAgICAgIGNvbnN0IGZ1bGxOYW1lID0gYCR7bmFtZX1AJHt2ZXJzaW9ufWA7XG5cbiAgICAgIC8vIEVuc3VyZSB0aGUgcGFja2FnZSBpcyBmdWxseSByZWdpc3RlcmVkIGZvciBwZXItbGFuZ3VhZ2Ugc3RhdHVzLCBldmVuIGlmIG5vIGRvYyBleGlzdHMgeWV0LlxuICAgICAgZm9yIChjb25zdCBsYW5ndWFnZSBvZiBEb2N1bWVudGF0aW9uTGFuZ3VhZ2UuQUxMKSB7XG4gICAgICAgIHJlY29yZFBlckxhbmd1YWdlKFxuICAgICAgICAgIGxhbmd1YWdlLFxuICAgICAgICAgIERvY3VtZW50YXRpb25TdGF0dXMuTUlTU0lORyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIG1ham9yVmVyc2lvbixcbiAgICAgICAgICBmdWxsTmFtZVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWluZGV4ZWRQYWNrYWdlcy5oYXMoZnVsbE5hbWUpKSB7XG4gICAgICAgIGluZGV4ZWRQYWNrYWdlcy5zZXQoZnVsbE5hbWUsIHt9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXR1cyA9IGluZGV4ZWRQYWNrYWdlcy5nZXQoZnVsbE5hbWUpITtcblxuICAgICAgaWYgKGtleS5lbmRzV2l0aChjb25zdGFudHMuTUVUQURBVEFfS0VZX1NVRkZJWCkpIHtcbiAgICAgICAgc3RhdHVzLm1ldGFkYXRhUHJlc2VudCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGtleS5lbmRzV2l0aChjb25zdGFudHMuUEFDS0FHRV9LRVlfU1VGRklYKSkge1xuICAgICAgICBzdGF0dXMudGFyYmFsbFByZXNlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChrZXkuZW5kc1dpdGgoY29uc3RhbnRzLkFTU0VNQkxZX0tFWV9TVUZGSVgpKSB7XG4gICAgICAgIHN0YXR1cy5hc3NlbWJseVByZXNlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChrZXkuZW5kc1dpdGgoY29uc3RhbnRzLlVOSU5TVEFMTEFCTEVfUEFDS0FHRV9TVUZGSVgpKSB7XG4gICAgICAgIHN0YXR1cy51bmluc3RhbGxhYmxlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpZGVudGlmaWVkID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgbGFuZ3VhZ2Ugb2YgRG9jdW1lbnRhdGlvbkxhbmd1YWdlLkFMTCkge1xuICAgICAgICAgIGNvbnN0IG1hdGNoSnNvbiA9IHN1Ym1vZHVsZUtleVJlZ2V4cChsYW5ndWFnZSwgJ2pzb24nKS5leGVjKGtleSk7XG4gICAgICAgICAgY29uc3QgbWF0Y2hNZCA9IHN1Ym1vZHVsZUtleVJlZ2V4cChsYW5ndWFnZSwgJ21kJykuZXhlYyhrZXkpO1xuICAgICAgICAgIGlmIChtYXRjaEpzb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgWywgc3VibW9kdWxlLCBpc1Vuc3VwcG9ydGVkXSA9IG1hdGNoSnNvbjtcbiAgICAgICAgICAgIGlmIChzdGF0dXMuc3VibW9kdWxlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN0YXR1cy5zdWJtb2R1bGVzID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdHVzLnN1Ym1vZHVsZXMuYWRkKGAke2Z1bGxOYW1lfS4ke3N1Ym1vZHVsZX1gKTtcbiAgICAgICAgICAgIHJlY29yZFBlckxhbmd1YWdlKFxuICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgaXNVbnN1cHBvcnRlZFxuICAgICAgICAgICAgICAgID8gRG9jdW1lbnRhdGlvblN0YXR1cy5VTlNVUFBPUlRFRFxuICAgICAgICAgICAgICAgIDogRG9jdW1lbnRhdGlvblN0YXR1cy5TVVBQT1JURUQsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIG1ham9yVmVyc2lvbixcbiAgICAgICAgICAgICAgZnVsbE5hbWUsXG4gICAgICAgICAgICAgIHN1Ym1vZHVsZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlkZW50aWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBrZXkuZW5kc1dpdGgoY29uc3RhbnRzLmRvY3NLZXlTdWZmaXgobGFuZ3VhZ2UsIHVuZGVmaW5lZCwgJ2pzb24nKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJlY29yZFBlckxhbmd1YWdlKFxuICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvblN0YXR1cy5TVVBQT1JURUQsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIG1ham9yVmVyc2lvbixcbiAgICAgICAgICAgICAgZnVsbE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZGVudGlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAga2V5LmVuZHNXaXRoKFxuICAgICAgICAgICAgICBjb25zdGFudHMubm90U3VwcG9ydGVkS2V5U3VmZml4KGxhbmd1YWdlLCB1bmRlZmluZWQsICdqc29uJylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJlY29yZFBlckxhbmd1YWdlKFxuICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvblN0YXR1cy5VTlNVUFBPUlRFRCxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgbWFqb3JWZXJzaW9uLFxuICAgICAgICAgICAgICBmdWxsTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlkZW50aWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBrZXkuZW5kc1dpdGgoXG4gICAgICAgICAgICAgIGNvbnN0YW50cy5jb3JydXB0QXNzZW1ibHlLZXlTdWZmaXgobGFuZ3VhZ2UsIHVuZGVmaW5lZCwgJ2pzb24nKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmVjb3JkUGVyTGFuZ3VhZ2UoXG4gICAgICAgICAgICAgIGxhbmd1YWdlLFxuICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uU3RhdHVzLkNPUlJVUFRfQVNTRU1CTFksXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIG1ham9yVmVyc2lvbixcbiAgICAgICAgICAgICAgZnVsbE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZGVudGlmaWVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGdlbmVyYXRlIGJvdGggSlNPTiBmaWxlcyBhbmQgbWFya2Rvd24gZmlsZXMsIHNvIGZvciBub3dcbiAgICAgICAgICAgIC8vIHdlIHJlY29yZCBKU09OIGZpbGVzIGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGgsIGJ1dCBzdGlsbCBpZGVudGlmeVxuICAgICAgICAgICAgLy8gbWFya2Rvd24gZmlsZXMgc28gdGhleSBhcmUgbm90IGNvdW50ZWQgYXMgdW5rbm93bi5cbiAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoTWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWRlbnRpZmllZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGtleS5lbmRzV2l0aChjb25zdGFudHMuZG9jc0tleVN1ZmZpeChsYW5ndWFnZSwgdW5kZWZpbmVkLCAnbWQnKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlkZW50aWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBrZXkuZW5kc1dpdGgoXG4gICAgICAgICAgICAgIGNvbnN0YW50cy5ub3RTdXBwb3J0ZWRLZXlTdWZmaXgobGFuZ3VhZ2UsIHVuZGVmaW5lZCwgJ21kJylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlkZW50aWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBrZXkuZW5kc1dpdGgoXG4gICAgICAgICAgICAgIGNvbnN0YW50cy5jb3JydXB0QXNzZW1ibHlLZXlTdWZmaXgobGFuZ3VhZ2UsIHVuZGVmaW5lZCwgJ21kJylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlkZW50aWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlkZW50aWZpZWQpIHtcbiAgICAgICAgICBzdGF0dXMudW5rbm93bk9iamVjdHMgPSBzdGF0dXMudW5rbm93bk9iamVjdHMgPz8gW107XG4gICAgICAgICAgc3RhdHVzLnVua25vd25PYmplY3RzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGxhdGVzdENvbnRpbnVhdGlvblRva2VuICYmXG4gICAgICBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpIDw9IG1heE1ldHJpY1Byb2Nlc3NpbmdUaW1lXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ1J1bm5pbmcgdXAgdG8gdGhlIExhbWJkYSB0aW1lIGxpbWl0IGFuZCB0aGVyZSBhcmUgc3RpbGwgaXRlbXMgdG8gcHJvY2Vzcy4gU2F2aW5nIG91ciBjdXJyZW50IHByb2dyZXNzLi4uJ1xuICAgICAgKTtcbiAgICAgIHJldHVybiBzYXZlUHJvZ3Jlc3MobGF0ZXN0Q29udGludWF0aW9uVG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlcG9ydHM6IFByb21pc2U8XG4gICAgUHJvbWlzZVJlc3VsdDxBV1MuUzMuUHV0T2JqZWN0T3V0cHV0LCBBV1MuQVdTRXJyb3I+XG4gID5bXSA9IFtdO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJlcG9ydChyZXBvcnRLZXk6IHN0cmluZywgcGFja2FnZVZlcnNpb25zOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHJlcG9ydCA9IEpTT04uc3RyaW5naWZ5KHBhY2thZ2VWZXJzaW9ucywgbnVsbCwgMik7XG4gICAgY29uc3QgeyBidWZmZXIsIGNvbnRlbnRFbmNvZGluZyB9ID0gY29tcHJlc3NDb250ZW50KEJ1ZmZlci5mcm9tKHJlcG9ydCkpO1xuICAgIGNvbnNvbGUubG9nKGBVcGxvYWRpbmcgbGlzdCB0byBzMzovLyR7cGFja2FnZURhdGFCdWNrZXR9LyR7cmVwb3J0S2V5fWApO1xuICAgIHJlcG9ydHMucHVzaChcbiAgICAgIGF3c1xuICAgICAgICAuczMoKVxuICAgICAgICAucHV0T2JqZWN0KHtcbiAgICAgICAgICBCb2R5OiBidWZmZXIsXG4gICAgICAgICAgQnVja2V0OiBwYWNrYWdlRGF0YUJ1Y2tldCxcbiAgICAgICAgICBDb250ZW50RW5jb2Rpbmc6IGNvbnRlbnRFbmNvZGluZyxcbiAgICAgICAgICBDb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIEV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzMDBfMDAwKSwgLy8gNSBtaW51dGVzIGZyb20gbm93XG4gICAgICAgICAgS2V5OiByZXBvcnRLZXksXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICdMYW1iZGEtUnVuLUlkJzogY29udGV4dC5hd3NSZXF1ZXN0SWQsXG4gICAgICAgICAgICAnTGFtYmRhLUxvZy1Hcm91cC1OYW1lJzogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gICAgICAgICAgICAnTGFtYmRhLUxvZy1TdHJlYW0tTmFtZSc6IGNvbnRleHQubG9nU3RyZWFtTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucHJvbWlzZSgpXG4gICAgKTtcbiAgfVxuXG4gIGF3YWl0IG1ldHJpY1Njb3BlKChtZXRyaWNzKSA9PiAoKSA9PiB7XG4gICAgLy8gQ2xlYXIgb3V0IGRlZmF1bHQgZGltZW5zaW9ucyBhcyB3ZSBkb24ndCBuZWVkIHRob3NlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWVtYmVkZGVkLW1ldHJpY3Mtbm9kZS9pc3N1ZXMvNzMuXG4gICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG5cbiAgICBjb25zdCBtaXNzaW5nTWV0YWRhdGEgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGNvbnN0IG1pc3NpbmdBc3NlbWJseSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgY29uc3QgbWlzc2luZ1RhcmJhbGwgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGNvbnN0IHVuaW5zdGFsbGFibGUgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGNvbnN0IHVua25vd25PYmplY3RzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBjb25zdCBzdWJtb2R1bGVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBzdGF0dXNdIG9mIGluZGV4ZWRQYWNrYWdlcy5lbnRyaWVzKCkpIHtcbiAgICAgIGlmICghc3RhdHVzLm1ldGFkYXRhUHJlc2VudCkge1xuICAgICAgICBtaXNzaW5nTWV0YWRhdGEucHVzaChuYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RhdHVzLmFzc2VtYmx5UHJlc2VudCkge1xuICAgICAgICBtaXNzaW5nQXNzZW1ibHkucHVzaChuYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RhdHVzLnRhcmJhbGxQcmVzZW50KSB7XG4gICAgICAgIG1pc3NpbmdUYXJiYWxsLnB1c2gobmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzLnVuaW5zdGFsbGFibGUpIHtcbiAgICAgICAgdW5pbnN0YWxsYWJsZS5wdXNoKG5hbWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cy51bmtub3duT2JqZWN0cz8ubGVuZ3RoID8/IDAgPiAwKSB7XG4gICAgICAgIHVua25vd25PYmplY3RzLnB1c2goLi4uc3RhdHVzLnVua25vd25PYmplY3RzISk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgc3VibW9kdWxlIG9mIHN0YXR1cy5zdWJtb2R1bGVzID8/IFtdKSB7XG4gICAgICAgIHN1Ym1vZHVsZXMucHVzaChzdWJtb2R1bGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ2RldGFpbCcsIHtcbiAgICAgIG1pc3NpbmdNZXRhZGF0YSxcbiAgICAgIG1pc3NpbmdBc3NlbWJseSxcbiAgICAgIG1pc3NpbmdUYXJiYWxsLFxuICAgICAgdW5rbm93bk9iamVjdHMsXG4gICAgfSk7XG5cbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuVU5JTlNUQUxMQUJMRV9QQUNLQUdFX0NPVU5ULFxuICAgICAgdW5pbnN0YWxsYWJsZS5sZW5ndGgsXG4gICAgICBVbml0LkNvdW50XG4gICAgKTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuTUlTU0lOR19NRVRBREFUQV9DT1VOVCxcbiAgICAgIG1pc3NpbmdNZXRhZGF0YS5sZW5ndGgsXG4gICAgICBVbml0LkNvdW50XG4gICAgKTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuTUlTU0lOR19BU1NFTUJMWV9DT1VOVCxcbiAgICAgIG1pc3NpbmdBc3NlbWJseS5sZW5ndGgsXG4gICAgICBVbml0LkNvdW50XG4gICAgKTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuTUlTU0lOR19UQVJCQUxMX0NPVU5ULFxuICAgICAgbWlzc2luZ1RhcmJhbGwubGVuZ3RoLFxuICAgICAgVW5pdC5Db3VudFxuICAgICk7XG4gICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5QQUNLQUdFX0NPVU5ULCBwYWNrYWdlTmFtZXMuc2l6ZSwgVW5pdC5Db3VudCk7XG4gICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICBNZXRyaWNOYW1lLlBBQ0tBR0VfTUFKT1JfQ09VTlQsXG4gICAgICBwYWNrYWdlTWFqb3JWZXJzaW9ucy5zaXplLFxuICAgICAgVW5pdC5Db3VudFxuICAgICk7XG4gICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICBNZXRyaWNOYW1lLlBBQ0tBR0VfVkVSU0lPTl9DT1VOVCxcbiAgICAgIGluZGV4ZWRQYWNrYWdlcy5zaXplLFxuICAgICAgVW5pdC5Db3VudFxuICAgICk7XG4gICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICBNZXRyaWNOYW1lLlNVQk1PRFVMRV9DT1VOVCxcbiAgICAgIHN1Ym1vZHVsZXMubGVuZ3RoLFxuICAgICAgVW5pdC5Db3VudFxuICAgICk7XG4gICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICBNZXRyaWNOYW1lLlVOS05PV05fT0JKRUNUX0NPVU5ULFxuICAgICAgdW5rbm93bk9iamVjdHMubGVuZ3RoLFxuICAgICAgVW5pdC5Db3VudFxuICAgICk7XG5cbiAgICBjcmVhdGVSZXBvcnQoY29uc3RhbnRzLlVOSU5TVEFMTEFCTEVfUEFDS0FHRVNfUkVQT1JULCB1bmluc3RhbGxhYmxlKTtcbiAgfSkoKTtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIEFycmF5LmZyb20ocGVyTGFuZ3VhZ2UuZW50cmllcygpKSkge1xuICAgIGF3YWl0IG1ldHJpY1Njb3BlKFxuICAgICAgKG1ldHJpY3MpID0+IGFzeW5jIChsYW5ndWFnZTogc3RyaW5nLCBkYXRhOiBQZXJMYW5ndWFnZURhdGEpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMnKTtcbiAgICAgICAgY29uc29sZS5sb2coYCMjIyBTdGFydCBvZiBkYXRhIGZvciAke2xhbmd1YWdlfWApO1xuXG4gICAgICAgIG1ldHJpY3Muc2V0RGltZW5zaW9ucyh7IFtMQU5HVUFHRV9ESU1FTlNJT05dOiBsYW5ndWFnZS50b1N0cmluZygpIH0pO1xuXG4gICAgICAgIGZvciAoY29uc3QgZm9yU3RhdHVzIG9mIFtcbiAgICAgICAgICBEb2N1bWVudGF0aW9uU3RhdHVzLlNVUFBPUlRFRCxcbiAgICAgICAgICBEb2N1bWVudGF0aW9uU3RhdHVzLlVOU1VQUE9SVEVELFxuICAgICAgICAgIERvY3VtZW50YXRpb25TdGF0dXMuTUlTU0lORyxcbiAgICAgICAgICBEb2N1bWVudGF0aW9uU3RhdHVzLkNPUlJVUFRfQVNTRU1CTFksXG4gICAgICAgIF0pIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHN0YXR1c2VzXSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgbGV0IGZpbHRlcmVkID0gQXJyYXkuZnJvbShzdGF0dXNlcy5lbnRyaWVzKCkpLmZpbHRlcihcbiAgICAgICAgICAgICAgKFssIHN0YXR1c10pID0+IGZvclN0YXR1cyA9PT0gc3RhdHVzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGV0IG1ldHJpY05hbWUgPVxuICAgICAgICAgICAgICBNRVRSSUNfTkFNRV9CWV9TVEFUVVNfQU5EX0dSQUlOW2ZvclN0YXR1cyBhcyBEb2N1bWVudGF0aW9uU3RhdHVzXVtcbiAgICAgICAgICAgICAgICBrZXkgYXMgR3JhaW5cbiAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoZm9yU3RhdHVzID09PSBEb2N1bWVudGF0aW9uU3RhdHVzLk1JU1NJTkcgJiZcbiAgICAgICAgICAgICAgICBtZXRyaWNOYW1lID09PSBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9NSVNTSU5HX1ZFUlNJT05TKSB8fFxuICAgICAgICAgICAgICAoZm9yU3RhdHVzID09PSBEb2N1bWVudGF0aW9uU3RhdHVzLkNPUlJVUFRfQVNTRU1CTFkgJiZcbiAgICAgICAgICAgICAgICBtZXRyaWNOYW1lID09PVxuICAgICAgICAgICAgICAgICAgTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfQ09SUlVQVF9BU1NFTUJMWV9WRVJTSU9OUylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSByZXBvcnRzIGZvciBtaXNzaW5nL2NvcnJ1cHQgb25seSBmb3IgcGFja2FnZSB2ZXJzaW9ucyBncmFudWxhcml0eVxuICAgICAgICAgICAgICBjb25zdCBsYW5nID0gRG9jdW1lbnRhdGlvbkxhbmd1YWdlLmZyb21TdHJpbmcobGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICBjb25zdCByZXBvcnRLZXkgPVxuICAgICAgICAgICAgICAgIGZvclN0YXR1cyA9PT0gRG9jdW1lbnRhdGlvblN0YXR1cy5NSVNTSU5HXG4gICAgICAgICAgICAgICAgICA/IGNvbnN0YW50cy5taXNzaW5nRG9jdW1lbnRhdGlvblJlcG9ydChsYW5nKVxuICAgICAgICAgICAgICAgICAgOiBjb25zdGFudHMuY29ycnVwdEFzc2VtYmx5UmVwb3J0KGxhbmcpO1xuICAgICAgICAgICAgICBjcmVhdGVSZXBvcnQocmVwb3J0S2V5LCBmaWx0ZXJlZC5tYXAoKFtuYW1lXSkgPT4gbmFtZSkuc29ydCgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGAke2ZvclN0YXR1c30gJHtrZXl9IGZvciAke2xhbmd1YWdlfTogJHtmaWx0ZXJlZC5sZW5ndGh9IGVudHJpZXNgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMobWV0cmljTmFtZSwgZmlsdGVyZWQubGVuZ3RoLCBVbml0LkNvdW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgIyMjIEVuZCBvZiBkYXRhIGZvciAke2xhbmd1YWdlfWApO1xuICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMnKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgfVxuICAgICkoLi4uZW50cnkpO1xuICB9XG5cbiAgZm9yIChjb25zdCByZXBvcnQgb2YgcmVwb3J0cykge1xuICAgIGF3YWl0IHJlcG9ydDtcbiAgfVxuXG4gIHJldHVybiB7fTtcbn1cblxuLyoqXG4gKiBMaXN0IGFsbCBvYmplY3RzIGluIHRoZSBidWNrZXQsIHlpZWxkaW5nIGJhdGNoZXMgb2YgdXAgdG8gMTAwMCBrZXlzLiBBbHNvXG4gKiB5aWVsZHMgdGhlIG5leHQgY29udGludWF0aW9uIHRva2VuIGlmIHRoZXJlIGlzIG9uZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24qIHJlbGV2YW50T2JqZWN0S2V5cyhcbiAgYnVja2V0OiBzdHJpbmcsXG4gIGNvbnRpbnVhdGlvblRva2VuPzogc3RyaW5nXG4pOiBBc3luY0dlbmVyYXRvcjxbc3RyaW5nW10sIHN0cmluZyB8IHVuZGVmaW5lZF0sIHZvaWQsIHZvaWQ+IHtcbiAgY29uc3QgcmVxdWVzdDogQVdTLlMzLkxpc3RPYmplY3RzVjJSZXF1ZXN0ID0ge1xuICAgIEJ1Y2tldDogYnVja2V0LFxuICAgIFByZWZpeDogY29uc3RhbnRzLlNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgfTtcbiAgaWYgKGNvbnRpbnVhdGlvblRva2VuKSByZXF1ZXN0LkNvbnRpbnVhdGlvblRva2VuID0gY29udGludWF0aW9uVG9rZW47XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXdzLnMzKCkubGlzdE9iamVjdHNWMihyZXF1ZXN0KS5wcm9taXNlKCk7XG4gICAgY29uc3Qga2V5cyA9IFtdO1xuICAgIGZvciAoY29uc3QgeyBLZXkgfSBvZiByZXNwb25zZS5Db250ZW50cyA/PyBbXSkge1xuICAgICAgaWYgKEtleSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAga2V5cy5wdXNoKEtleSk7XG4gICAgfVxuICAgIHlpZWxkIFtrZXlzLCByZXNwb25zZS5Db250aW51YXRpb25Ub2tlbl07XG4gICAgcmVxdWVzdC5Db250aW51YXRpb25Ub2tlbiA9IHJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbjtcbiAgfSB3aGlsZSAocmVxdWVzdC5Db250aW51YXRpb25Ub2tlbiAhPSBudWxsKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIG9idGFpbnMgYSByZWd1bGFyIGV4cHJlc3Npb24gd2l0aCBhIGNhcHR1cmUgZ3JvdXAgdGhhdCBhbGxvd3NcbiAqIGRldGVybWluaW5nIHRoZSBzdWJtb2R1bGUgbmFtZSBmcm9tIGEgc3VibW9kdWxlIGRvY3VtZW50YXRpb24ga2V5LCBhbmRcbiAqIGFub3RoZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBhbiBcInVuc3VwcG9ydGVkIGJlYWNvblwiIG9yIG5vdC5cbiAqL1xuZnVuY3Rpb24gc3VibW9kdWxlS2V5UmVnZXhwKFxuICBsYW5ndWFnZTogRG9jdW1lbnRhdGlvbkxhbmd1YWdlLFxuICBmaWxlRXh0OiBzdHJpbmdcbik6IFJlZ0V4cCB7XG4gIC8vIFdlIHVzZSBhIHBsYWNlaG9sZGVyIHRvIGJlIGFibGUgdG8gaW5zZXJ0IHRoZSBjYXB0dXJlIGdyb3VwIG9uY2Ugd2UgaGF2ZVxuICAvLyBmdWxseSBxdW90ZWQgdGhlIGtleSBwcmVmaXggZm9yIFJlZ2V4IHNhZmV0eS5cbiAgY29uc3QgcGxhY2Vob2xkZXIgPSAnPFNVQk1PRFVMRU5BTUU+JztcblxuICAvLyBXZSBvYnRhaW4gdGhlIHN0YW5kYXJkIGtleSBzdWZmaXguXG4gIGNvbnN0IGtleVByZWZpeCA9IGNvbnN0YW50cy5kb2NzS2V5U3VmZml4KGxhbmd1YWdlLCBwbGFjZWhvbGRlciwgZmlsZUV4dCk7XG5cbiAgLy8gRmluYWxseSwgYXNzZW1ibGUgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIHRoZSBjYXB0dXJlIGdyb3VwLlxuICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICBgLioke3JlUXVvdGUoa2V5UHJlZml4KS5yZXBsYWNlKHBsYWNlaG9sZGVyLCAnKC4rKScpfSgke3JlUXVvdGUoXG4gICAgICBjb25zdGFudHMuTk9UX1NVUFBPUlRFRF9TVUZGSVhcbiAgICApfSk/JGBcbiAgKTtcblxuICAvKipcbiAgICogRXNjYXBlcyBhbGwgXCJzcGVhY2lhbCBtZWFuaW5nXCIgY2hhcmFjdGVycyBpbiBhIHN0cmluZywgc28gaXQgY2FuIGJlIHVzZWQgYXNcbiAgICogcGFydCBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICovXG4gIGZ1bmN0aW9uIHJlUXVvdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFsrKi4oKT8kW1xcXV0pL2csICdcXFxcJDEnKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgSW5kZXhlZFBhY2thZ2VTdGF0dXMge1xuICBtZXRhZGF0YVByZXNlbnQ/OiBib29sZWFuO1xuICBhc3NlbWJseVByZXNlbnQ/OiBib29sZWFuO1xuICB1bmluc3RhbGxhYmxlPzogYm9vbGVhbjtcbiAgc3VibW9kdWxlcz86IFNldDxzdHJpbmc+O1xuICB0YXJiYWxsUHJlc2VudD86IGJvb2xlYW47XG4gIHVua25vd25PYmplY3RzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIEdyYWluIHtcbiAgUEFDS0FHRV9NQUpPUl9WRVJTSU9OUyA9ICdwYWNrYWdlIG1ham9yIHZlcnNpb25zJyxcbiAgUEFDS0FHRV9WRVJTSU9OX1NVQk1PRFVMRVMgPSAncGFja2FnZSB2ZXJzaW9uIHN1Ym1vZHVsZXMnLFxuICBQQUNLQUdFX1ZFUlNJT05TID0gJ3BhY2thZ2UgdmVyc2lvbnMnLFxuICBQQUNLQUdFUyA9ICdwYWNrYWdlcycsXG59XG5cbnR5cGUgUGVyTGFuZ3VhZ2VEYXRhID0gTWFwPEdyYWluLCBNYXA8c3RyaW5nLCBEb2N1bWVudGF0aW9uU3RhdHVzPj47XG5cbmV4cG9ydCBjb25zdCBlbnVtIERvY3VtZW50YXRpb25TdGF0dXMge1xuICAvKipcbiAgICogVGhpcyBwYWNrYWdlIGlzIG1pc3NpbmcgYW55IGtpbmQgb2YgZG9jdW1lbnRhdGlvbiBvciBtYXJrZXIgZmlsZS5cbiAgICovXG4gIE1JU1NJTkcgPSAnTWlzc2luZycsXG5cbiAgLyoqXG4gICAqIFRoaXMgcGFja2FnZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBnaXZlbiBsYW5ndWFnZS5cbiAgICovXG4gIFVOU1VQUE9SVEVEID0gJ1Vuc3VwcG9ydGVkJyxcblxuICAvKipcbiAgICogVGhpcyBwYWNrYWdlIGhhcyBhIGNvcnJ1cHRlZCBKU0lJIGFzc2VtYmx5IHNvIHdlIGNhbid0IGdlbmVyYXRlXG4gICAqIGRvY3VtZW50YXRpb24gZm9yIGl0LlxuICAgKi9cbiAgQ09SUlVQVF9BU1NFTUJMWSA9ICdDb3JydXB0QXNzZW1ibHknLFxuXG4gIC8qKlxuICAgKiBUaGlzIHBhY2thZ2Ugc3VwcG9ydHMgdGhlIGdpdmVuIGxhbmd1YWdlIGFuZCBoYXMgZG9jdW1lbnRhdGlvbiBmb3IgaXQuXG4gICAqL1xuICBTVVBQT1JURUQgPSAnU3VwcG9ydGVkJyxcbn1cblxuY29uc3QgTUVUUklDX05BTUVfQllfU1RBVFVTX0FORF9HUkFJTjoge1xuICByZWFkb25seSBbc3RhdHVzIGluIERvY3VtZW50YXRpb25TdGF0dXNdOiB7XG4gICAgcmVhZG9ubHkgW2dyYWluIGluIEdyYWluXTogTWV0cmljTmFtZTtcbiAgfTtcbn0gPSB7XG4gIFtEb2N1bWVudGF0aW9uU3RhdHVzLk1JU1NJTkddOiB7XG4gICAgW0dyYWluLlBBQ0tBR0VTXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfTUlTU0lOR19QQUNLQUdFUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9NQUpPUl9WRVJTSU9OU106IE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX01JU1NJTkdfTUFKT1JTLFxuICAgIFtHcmFpbi5QQUNLQUdFX1ZFUlNJT05TXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfTUlTU0lOR19WRVJTSU9OUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9WRVJTSU9OX1NVQk1PRFVMRVNdOlxuICAgICAgTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfTUlTU0lOR19TVUJNT0RVTEVTLFxuICB9LFxuICBbRG9jdW1lbnRhdGlvblN0YXR1cy5VTlNVUFBPUlRFRF06IHtcbiAgICBbR3JhaW4uUEFDS0FHRVNdOiBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9VTlNVUFBPUlRFRF9QQUNLQUdFUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9NQUpPUl9WRVJTSU9OU106IE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX1VOU1VQUE9SVEVEX01BSk9SUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9WRVJTSU9OU106IE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX1VOU1VQUE9SVEVEX1ZFUlNJT05TLFxuICAgIFtHcmFpbi5QQUNLQUdFX1ZFUlNJT05fU1VCTU9EVUxFU106XG4gICAgICBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9VTlNVUFBPUlRFRF9TVUJNT0RVTEVTLFxuICB9LFxuICBbRG9jdW1lbnRhdGlvblN0YXR1cy5TVVBQT1JURURdOiB7XG4gICAgW0dyYWluLlBBQ0tBR0VTXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfU1VQUE9SVEVEX1BBQ0tBR0VTLFxuICAgIFtHcmFpbi5QQUNLQUdFX01BSk9SX1ZFUlNJT05TXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfU1VQUE9SVEVEX01BSk9SUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9WRVJTSU9OU106IE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX1NVUFBPUlRFRF9WRVJTSU9OUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9WRVJTSU9OX1NVQk1PRFVMRVNdOlxuICAgICAgTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfU1VQUE9SVEVEX1NVQk1PRFVMRVMsXG4gIH0sXG4gIFtEb2N1bWVudGF0aW9uU3RhdHVzLkNPUlJVUFRfQVNTRU1CTFldOiB7XG4gICAgW0dyYWluLlBBQ0tBR0VTXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfQ09SUlVQVF9BU1NFTUJMWV9QQUNLQUdFUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9NQUpPUl9WRVJTSU9OU106XG4gICAgICBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9DT1JSVVBUX0FTU0VNQkxZX01BSk9SUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9WRVJTSU9OU106IE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX0NPUlJVUFRfQVNTRU1CTFlfVkVSU0lPTlMsXG4gICAgW0dyYWluLlBBQ0tBR0VfVkVSU0lPTl9TVUJNT0RVTEVTXTpcbiAgICAgIE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX0NPUlJVUFRfQVNTRU1CTFlfU1VCTU9EVUxFUyxcbiAgfSxcbn07XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHByb3ZpZGVkIGxhbmd1YWdlLiBBIFwiTUlTU0lOR1wiIHN0YXR1c1xuICogd2lsbCBiZSBpZ25vcmVkIGlmIGFub3RoZXIgc3RhdHVzIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIHRoZSBzYW1lXG4gKiBlbnRpdHkuIEFuIFwiVU5TVVBQT1JURURcIiBzdGF0dXMgd2lsbCBiZSBpZ25vcmVkIGlmIGEgXCJTVVBQT1JURURcIiBzdGF0dXNcbiAqIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIHRoZSBzYW1lIGVudGl0eS5cbiAqXG4gKiBJZiBhIHN1Ym1vZHVsZSBpcyBwcm92aWRlZCwgb25seSB0aGF0IHN1Ym1vZHVsZSdzIGF2YWlsYWJpbGl0eSBpcyB1cGRhdGVkLlxuICovXG5mdW5jdGlvbiBkb1JlY29yZFBlckxhbmd1YWdlKFxuICBwZXJMYW5ndWFnZTogTWFwPHN0cmluZywgUGVyTGFuZ3VhZ2VEYXRhPixcbiAgbGFuZ3VhZ2U6IERvY3VtZW50YXRpb25MYW5ndWFnZSxcbiAgc3RhdHVzOiBEb2N1bWVudGF0aW9uU3RhdHVzLFxuICBwa2dOYW1lOiBzdHJpbmcsXG4gIHBrZ01ham9yOiBzdHJpbmcsXG4gIHBrZ1ZlcnNpb246IHN0cmluZyxcbiAgc3VibW9kdWxlPzogc3RyaW5nXG4pIHtcbiAgaWYgKCFwZXJMYW5ndWFnZS5oYXMobGFuZ3VhZ2UubmFtZSkpIHtcbiAgICBjb25zdCBwZXJHcmFpbkRhdGEgPSBuZXcgTWFwPEdyYWluLCBNYXA8c3RyaW5nLCBEb2N1bWVudGF0aW9uU3RhdHVzPj4oKTtcbiAgICBwZXJHcmFpbkRhdGEuc2V0KEdyYWluLlBBQ0tBR0VfTUFKT1JfVkVSU0lPTlMsIG5ldyBNYXAoKSk7XG4gICAgcGVyR3JhaW5EYXRhLnNldChHcmFpbi5QQUNLQUdFUywgbmV3IE1hcCgpKTtcbiAgICBwZXJHcmFpbkRhdGEuc2V0KEdyYWluLlBBQ0tBR0VfVkVSU0lPTl9TVUJNT0RVTEVTLCBuZXcgTWFwKCkpO1xuICAgIHBlckdyYWluRGF0YS5zZXQoR3JhaW4uUEFDS0FHRV9WRVJTSU9OUywgbmV3IE1hcCgpKTtcbiAgICBwZXJMYW5ndWFnZS5zZXQobGFuZ3VhZ2UubmFtZSwgcGVyR3JhaW5EYXRhKTtcbiAgfVxuICBjb25zdCBkYXRhID0gcGVyTGFuZ3VhZ2UuZ2V0KGxhbmd1YWdlLm5hbWUpITtcblxuICAvLyBJZiB0aGVyZSBpcyBhIHN1Ym1vZHVsZSwgb25seSB1cGRhdGUgdGhlIHN1Ym1vZHVsZSBkb21haW4uXG4gIGNvbnN0IG91dHB1dERvbWFpbnM6IHJlYWRvbmx5IFtNYXA8c3RyaW5nLCBEb2N1bWVudGF0aW9uU3RhdHVzPiwgc3RyaW5nXVtdID1cbiAgICBzdWJtb2R1bGVcbiAgICAgID8gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGRhdGEuZ2V0KEdyYWluLlBBQ0tBR0VfVkVSU0lPTl9TVUJNT0RVTEVTKSEsXG4gICAgICAgICAgICBgJHtwa2dWZXJzaW9ufS4ke3N1Ym1vZHVsZX1gLFxuICAgICAgICAgIF0sXG4gICAgICAgIF1cbiAgICAgIDogW1xuICAgICAgICAgIFtkYXRhLmdldChHcmFpbi5QQUNLQUdFX01BSk9SX1ZFUlNJT05TKSEsIHBrZ01ham9yXSxcbiAgICAgICAgICBbZGF0YS5nZXQoR3JhaW4uUEFDS0FHRV9WRVJTSU9OUykhLCBwa2dWZXJzaW9uXSxcbiAgICAgICAgICBbZGF0YS5nZXQoR3JhaW4uUEFDS0FHRVMpISwgcGtnTmFtZV0sXG4gICAgICAgIF07XG4gIGZvciAoY29uc3QgW21hcCwgbmFtZV0gb2Ygb3V0cHV0RG9tYWlucykge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlIERvY3VtZW50YXRpb25TdGF0dXMuTUlTU0lORzpcbiAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgc3RhdHVzLCBkb24ndCBvdmVycmlkZSBpdCB3aXRoIFwiTUlTU0lOR1wiLlxuICAgICAgICBpZiAoIW1hcC5oYXMobmFtZSkpIHtcbiAgICAgICAgICBtYXAuc2V0KG5hbWUsIHN0YXR1cyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERvY3VtZW50YXRpb25TdGF0dXMuU1VQUE9SVEVEOlxuICAgICAgICAvLyBJZiB0aGUgcGFja2FnZSBpcyBcInN1cHBvcnRlZFwiLCB0aGlzIGFsd2F5cyBcIndpbnNcIlxuICAgICAgICBtYXAuc2V0KG5hbWUsIHN0YXR1cyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEb2N1bWVudGF0aW9uU3RhdHVzLlVOU1VQUE9SVEVEOlxuICAgICAgY2FzZSBEb2N1bWVudGF0aW9uU3RhdHVzLkNPUlJVUFRfQVNTRU1CTFk6XG4gICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIHN0YXR1cywgb25seSBvdmVycmlkZSB3aXRoIGlmIGl0IHdhcyBcIk1JU1NJTkdcIi5cbiAgICAgICAgaWYgKCFtYXAuaGFzKG5hbWUpIHx8IG1hcC5nZXQobmFtZSkgPT09IERvY3VtZW50YXRpb25TdGF0dXMuTUlTU0lORykge1xuICAgICAgICAgIG1hcC5zZXQobmFtZSwgc3RhdHVzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBlY3RlZCBpbnB1dCBldmVudCBzdHJ1Y3R1cmUgYXMgcGFzc2VkIGJ5IHRoZSBzdGF0ZSBtYWNoaW5lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludmVudG9yeUNhbmFyeUV2ZW50IHtcbiAgcmVhZG9ubHkgY29udGludWF0aW9uT2JqZWN0S2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVybWVkaWF0ZSBzdGF0ZSBzdG9yZWQgYmV0d2VlbiBpbnZvY2F0aW9ucyBvZiB0aGUgaW52ZW50b3J5IGNhbmFyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZlbnRvcnlDYW5hcnlTdGF0ZSB7XG4gIHJlYWRvbmx5IGNvbnRpbnVhdGlvblRva2VuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluZGV4ZWRQYWNrYWdlczogTWFwPHN0cmluZywgSW5kZXhlZFBhY2thZ2VTdGF0dXM+O1xuICByZWFkb25seSBwYWNrYWdlTmFtZXM6IFNldDxzdHJpbmc+O1xuICByZWFkb25seSBwYWNrYWdlTWFqb3JWZXJzaW9uczogU2V0PHN0cmluZz47XG4gIHJlYWRvbmx5IHBlckxhbmd1YWdlOiBNYXA8c3RyaW5nLCBQZXJMYW5ndWFnZURhdGE+O1xufVxuXG50eXBlIFNlcmlhbGl6ZWQ8VD4gPSBzdHJpbmcgJiB7IF9zZXJpYWxpemVkOiBUIH07XG5cbi8qKlxuICogUmVwbGFjZXIgdGhhdCBjYW4gYmUgdXNlZCBpbiBKU09OLnN0cmluZ2lmeSB0byBhdXRvbWF0aWNhbGx5IHR1cm4gb2JqZWN0cyBiYWNrIGludG8gbWFwc1xuICogYW5kIGFycmF5cyBiYWNrIGludG8gc2V0cyB3aGVyZSBhcHByb3ByaWF0ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZVJlcGxhY2VyKF9rZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICByZXR1cm4ge1xuICAgICAgX3R5cGU6ICdNYXAnLFxuICAgICAgdmFsdWU6IEFycmF5LmZyb20odmFsdWUuZW50cmllcygpKSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF90eXBlOiAnU2V0JyxcbiAgICAgIHZhbHVlOiBBcnJheS5mcm9tKFsuLi52YWx1ZV0pLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNhZmVSZXZpdmVyKF9rZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGlmICh2YWx1ZS5fdHlwZSA9PT0gJ01hcCcpIHtcbiAgICAgIHJldHVybiBuZXcgTWFwKHZhbHVlLnZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLl90eXBlID09PSAnU2V0Jykge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodmFsdWUudmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemU8VD4odmFsdWU6IFQpOiBTZXJpYWxpemVkPFQ+IHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBzYWZlUmVwbGFjZXIsIDIpIGFzIFNlcmlhbGl6ZWQ8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZTxUPih2YWx1ZTogU2VyaWFsaXplZDxUPik6IFQge1xuICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSwgc2FmZVJldml2ZXIpO1xufVxuIl19
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYXJ5LmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZW5kL2ludmVudG9yeS9jYW5hcnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFrQztBQUNsQywrREFBd0U7QUFHeEUsbUNBQWdDO0FBQ2hDLG1EQUFtRDtBQUNuRCw2RkFBMkU7QUFDM0UsaURBQWlEO0FBQ2pELG1FQUF5RDtBQUN6RCxpREFBMkQ7QUFDM0QsMkNBQWdGO0FBRWhGLG9DQUFhLENBQUMsU0FBUyxHQUFHLDZCQUFpQixDQUFDO0FBRXJDLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBMkIsRUFBRSxPQUFnQjtJQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0RCxNQUFNLGlCQUFpQixHQUFHLDhCQUFVLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUVoRSxNQUFNLEVBQ0osaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLFdBQVcsR0FDWixHQUFHLEtBQUssQ0FBQyxxQkFBcUI7UUFDN0IsQ0FBQyxDQUFDLE1BQU0sWUFBWSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztRQUNqRCxDQUFDLENBQUM7WUFDRSxpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLGVBQWUsRUFBRSxJQUFJLEdBQUcsRUFBZ0M7WUFDeEQsWUFBWSxFQUFFLElBQUksR0FBRyxFQUFVO1lBQy9CLG9CQUFvQixFQUFFLElBQUksR0FBRyxFQUFVO1lBQ3ZDLFdBQVcsRUFBRSxJQUFJLEdBQUcsRUFBMkI7U0FDaEQsQ0FBQztJQUVOLEtBQUssVUFBVSxZQUFZLENBQUMscUJBQTZCO1FBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQ1QsMkVBQTJFLENBQzVFLENBQUM7UUFDRixJQUFJLEVB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QzdCO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtZQUN6QixPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtLQUNGO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBZ0IsU0FBUyxDQUFJLEtBQVE7SUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFrQixDQUFDO0FBQ2pFLENBQUM7QUFGRCw4QkFFQztBQUVELFNBQWdCLFdBQVcsQ0FBSSxLQUFvQjtJQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFGRCxrQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGd1bnppcFN5bmMgfSBmcm9tICd6bGliJztcbmltcG9ydCB7IG1ldHJpY1Njb3BlLCBDb25maWd1cmF0aW9uLCBVbml0IH0gZnJvbSAnYXdzLWVtYmVkZGVkLW1ldHJpY3MnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0IH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBQcm9taXNlUmVzdWx0IH0gZnJvbSAnYXdzLXNkay9saWIvcmVxdWVzdCc7XG5pbXBvcnQgeyBTZW1WZXIgfSBmcm9tICdzZW12ZXInO1xuaW1wb3J0ICogYXMgYXdzIGZyb20gJy4uL3NoYXJlZC9hd3MubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBjb21wcmVzc0NvbnRlbnQgfSBmcm9tICcuLi9zaGFyZWQvY29tcHJlc3MtY29udGVudC5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcbmltcG9ydCB7IHJlcXVpcmVFbnYgfSBmcm9tICcuLi9zaGFyZWQvZW52LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgRG9jdW1lbnRhdGlvbkxhbmd1YWdlIH0gZnJvbSAnLi4vc2hhcmVkL2xhbmd1YWdlJztcbmltcG9ydCB7IE1FVFJJQ1NfTkFNRVNQQUNFLCBNZXRyaWNOYW1lLCBMQU5HVUFHRV9ESU1FTlNJT04gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbkNvbmZpZ3VyYXRpb24ubmFtZXNwYWNlID0gTUVUUklDU19OQU1FU1BBQ0U7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBJbnZlbnRvcnlDYW5hcnlFdmVudCwgY29udGV4dDogQ29udGV4dCkge1xuICBjb25zb2xlLmxvZygnRXZlbnQ6JywgSlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpKTtcblxuICBjb25zdCBzY3JhdGNod29ya0J1Y2tldCA9IHJlcXVpcmVFbnYoJ1NDUkFUQ0hXT1JLX0JVQ0tFVF9OQU1FJyk7XG5cbiAgY29uc3Qge1xuICAgIGNvbnRpbnVhdGlvblRva2VuLFxuICAgIGluZGV4ZWRQYWNrYWdlcyxcbiAgICBwYWNrYWdlTmFtZXMsXG4gICAgcGFja2FnZU1ham9yVmVyc2lvbnMsXG4gICAgcGVyTGFuZ3VhZ2UsXG4gIH0gPSBldmVudC5jb250aW51YXRpb25PYmplY3RLZXlcbiAgICA/IGF3YWl0IGxvYWRQcm9ncmVzcyhldmVudC5jb250aW51YXRpb25PYmplY3RLZXkpXG4gICAgOiB7XG4gICAgICAgIGNvbnRpbnVhdGlvblRva2VuOiB1bmRlZmluZWQsXG4gICAgICAgIGluZGV4ZWRQYWNrYWdlczogbmV3IE1hcDxzdHJpbmcsIEluZGV4ZWRQYWNrYWdlU3RhdHVzPigpLFxuICAgICAgICBwYWNrYWdlTmFtZXM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgICBwYWNrYWdlTWFqb3JWZXJzaW9uczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICAgIHBlckxhbmd1YWdlOiBuZXcgTWFwPHN0cmluZywgUGVyTGFuZ3VhZ2VEYXRhPigpLFxuICAgICAgfTtcblxuICBhc3luYyBmdW5jdGlvbiBsb2FkUHJvZ3Jlc3MoY29udGludWF0aW9uT2JqZWN0S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgICdGb3VuZCBhIGNvbnRpbnVhdGlvbiBvYmplY3Qga2V5LCByZXRyaWV2aW5nIGRhdGEgZnJvbSB0aGUgZXhpc3RpbmcgcnVuLi4uJ1xuICAgICk7XG4gICAgbGV0IHsgQm9keSwgQ29udGVudEVuY29kaW5nIH0gPSBhd2FpdCBhd3NcbiAgICAgIC5zMygpXG4gICAgICAuZ2V0T2JqZWN0KHtcbiAgICAgICAgQnVja2V0OiBzY3JhdGNod29ya0J1Y2tldCxcbiAgICAgICAgS2V5OiBjb250aW51YXRpb25PYmplY3RLZXksXG4gICAgICB9KVxuICAgICAgLnByb21pc2UoKTtcbiAgICAvLyBJZiBpdCB3YXMgY29tcHJlc3NlZCwgZGVjb21wcmVzcyBpdC5cbiAgICBpZiAoQ29udGVudEVuY29kaW5nID09PSAnZ3ppcCcpIHtcbiAgICAgIEJvZHkgPSBndW56aXBTeW5jKEJ1ZmZlci5mcm9tKEJvZHkhIGFzIGFueSkpO1xuICAgIH1cbiAgICBpZiAoIUJvZHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE9iamVjdCBrZXkgXCIke2V2ZW50LmNvbnRpbnVhdGlvbk9iamVjdEtleX1cIiBub3QgZm91bmQgaW4gYnVja2V0IFwiJHtzY3JhdGNod29ya0J1Y2tldH1cIi5gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnRGVzZXJpYWxpemluZyBkYXRhLi4uJyk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFN0YXRlID0gQm9keS50b1N0cmluZyhcbiAgICAgICd1dGYtOCdcbiAgICApIGFzIFNlcmlhbGl6ZWQ8SW52ZW50b3J5Q2FuYXJ5U3RhdGU+O1xuICAgIGNvbnN0IHN0YXRlID0gZGVzZXJpYWxpemUoc2VyaWFsaXplZFN0YXRlKTtcbiAgICBjb25zb2xlLmxvZygnRGVzZXJpYWxpemluZyBmaW5pc2hlZC4nKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3JkcyB0aGUgc3RhdHVzIG9mIGEgcGFydGljdWxhciBwYWNrYWdlLCBwYWNrYWdlIG1ham9yIHZlcnNpb24sIHBhY2thZ2VcbiAgICogdmVyc2lvbiwgYW5kIHBhY2thZ2UgdmVyc2lvbiBzdWJtb2R1bGUgaW4gdGhlIHBlci1sYW5ndWFnZSBzdGF0ZSBzdG9yYWdlLlxuICAgKiBXaGVuZXZlciBhIG5ldyBlbnRyeSBpcyBhZGRlZCwgYSBgTUlTU0lOR2AgZW50cnkgaXMgYXV0b21hdGljYWxseSBpbnNlcnRlZFxuICAgKiBmb3IgdGhlIG90aGVyIGxhbmd1YWdlcyAodW5sZXNzIGFub3RoZXIgZW50cnkgYWxyZWFkeSBleGlzdHMpLlxuICAgKlxuICAgKiBJZiBhIHN1Ym1vZHVsZSBpcyBwcm92aWRlZCwgb25seSB0aGF0IHN1Ym1vZHVsZSdzIGF2YWlsYWJpbGl0eSBpcyB1cGRhdGVkLlxuICAgKi9cbiAgZnVuY3Rpb24gcmVjb3JkUGVyTGFuZ3VhZ2UoXG4gICAgbGFuZ3VhZ2U6IERvY3VtZW50YXRpb25MYW5ndWFnZSxcbiAgICBzdGF0dXM6IERvY3VtZW50YXRpb25TdGF0dXMsXG4gICAgcGtnTmFtZTogc3RyaW5nLFxuICAgIHBrZ01ham9yOiBzdHJpbmcsXG4gICAgcGtnVmVyc2lvbjogc3RyaW5nLFxuICAgIHN1Ym1vZHVsZT86IHN0cmluZ1xuICApIHtcbiAgICBmb3IgKGNvbnN0IGxhbmcgb2YgRG9jdW1lbnRhdGlvbkxhbmd1YWdlLkFMTCkge1xuICAgICAgZG9SZWNvcmRQZXJMYW5ndWFnZShcbiAgICAgICAgcGVyTGFuZ3VhZ2UsXG4gICAgICAgIGxhbmcsXG4gICAgICAgIC8vIElmIHRoZSBsYW5ndWFnZSBpcyBOT1QgdGhlIHJlZ2lzdGVyZWQgb25lLCB0aGVuIHdlIGluc2VydCBcIk1JU1NJTkdcIi5cbiAgICAgICAgbGFuZyA9PT0gbGFuZ3VhZ2UgPyBzdGF0dXMgOiBEb2N1bWVudGF0aW9uU3RhdHVzLk1JU1NJTkcsXG4gICAgICAgIHBrZ05hbWUsXG4gICAgICAgIHBrZ01ham9yLFxuICAgICAgICBwa2dWZXJzaW9uLFxuICAgICAgICBzdWJtb2R1bGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2F2ZVByb2dyZXNzKFxuICAgIGxhdGVzdENvbnRpbnVhdGlvblRva2VuOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxJbnZlbnRvcnlDYW5hcnlFdmVudD4ge1xuICAgIGNvbnNvbGUubG9nKCdTZXJpYWxpemluZyBkYXRhLi4uJyk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFN0YXRlOiBTZXJpYWxpemVkPEludmVudG9yeUNhbmFyeVN0YXRlPiA9IHNlcmlhbGl6ZSh7XG4gICAgICBjb250aW51YXRpb25Ub2tlbjogbGF0ZXN0Q29udGludWF0aW9uVG9rZW4sXG4gICAgICBwYWNrYWdlTmFtZXMsXG4gICAgICBwYWNrYWdlTWFqb3JWZXJzaW9ucyxcbiAgICAgIGluZGV4ZWRQYWNrYWdlcyxcbiAgICAgIHBlckxhbmd1YWdlLFxuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCdTZXJpYWxpemluZyBmaW5pc2hlZC4nKTtcblxuICAgIGNvbnN0IHsgYnVmZmVyLCBjb250ZW50RW5jb2RpbmcgfSA9IGNvbXByZXNzQ29udGVudChcbiAgICAgIEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRTdGF0ZSlcbiAgICApO1xuXG4gICAgY29uc3Qga2V5TmFtZSA9IGBpbnZlbnRvcnktY2FuYXJ5LXByb2dyZXNzLSR7RGF0ZS5ub3coKX1gO1xuICAgIGF3YWl0IGF3c1xuICAgICAgLnMzKClcbiAgICAgIC5wdXRPYmplY3Qoe1xuICAgICAgICBCdWNrZXQ6IHNjcmF0Y2h3b3JrQnVja2V0LFxuICAgICAgICBLZXk6IGtleU5hbWUsXG4gICAgICAgIEJvZHk6IGJ1ZmZlcixcbiAgICAgICAgQ29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgQ29udGVudEVuY29kaW5nOiBjb250ZW50RW5jb2RpbmcsXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ0xhbWJkYS1Mb2ctR3JvdXAnOiBjb250ZXh0LmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgICAnTGFtYmRhLUxvZy1TdHJlYW0nOiBjb250ZXh0LmxvZ1N0cmVhbU5hbWUsXG4gICAgICAgICAgJ0xhbWJkYS1SdW4tSWQnOiBjb250ZXh0LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250aW51YXRpb25PYmplY3RLZXk6IGtleU5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBtYXJnaW4gd2hlbiB3ZSBuZWVkIHRvIHN0b3Agd29ya2luZyB0aHJvdWdoIFMzIGtleXMgd2hlbiB3ZSdyZSBuZWFyaW5nIHRoZSBlbmQgb2YgdGhlIExhbWJkYSB0aW1lIHNsaWNlLlxuICAgKlxuICAgKiBOZWVkcyB0byBhY2NvdW50IGZvciB0aGUgdGltZSB0YWtlbiB0byBkbyBib3RoOlxuICAgKlxuICAgKiAtIEdvaW5nIHRocm91Z2ggdGhlIGxpc3QrcHJvY2VzcyBsb29wIG9uZSBtb3JlIHRpbWVcbiAgICogLSBDcmVhdGluZyBtZXRyaWNzIGFuZCB1cGxvYWRpbmcgcmVwb3J0c1xuICAgKlxuICAgKiBXaGVuIHdlIHVzZWQgdG8gaGF2ZSB0aGlzIGF0IDEgbWludXRlLCB3ZSBoaXQgfjEgdGltZW91dCBhIGRheS4gU28gc2V0IHRoZSBtYXJnaW5cbiAgICogYSBiaXQgd2lkZXIgdGhhbiB0aGF0LlxuICAgKi9cbiAgY29uc3QgbWF4TWV0cmljUHJvY2Vzc2luZ1RpbWUgPSAxMjBfMDAwO1xuXG4gIGNvbnN0IHBhY2thZ2VEYXRhQnVja2V0ID0gcmVxdWlyZUVudignUEFDS0FHRV9EQVRBX0JVQ0tFVF9OQU1FJyk7XG5cbiAgZm9yIGF3YWl0IChjb25zdCBba2V5cywgbGF0ZXN0Q29udGludWF0aW9uVG9rZW5dIG9mIHJlbGV2YW50T2JqZWN0S2V5cyhcbiAgICBwYWNrYWdlRGF0YUJ1Y2tldCxcbiAgICBjb250aW51YXRpb25Ub2tlblxuICApKSB7XG4gICAgY29uc29sZS5sb2coYEdvdCBhIHBhZ2Ugb2YgJHtrZXlzLmxlbmd0aH0ga2V5c2ApO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IFssIG5hbWUsIHZlcnNpb25dID0gY29uc3RhbnRzLlNUT1JBR0VfS0VZX0ZPUk1BVF9SRUdFWC5leGVjKGtleSkhO1xuXG4gICAgICBwYWNrYWdlTmFtZXMuYWRkKG5hbWUpO1xuICAgICAgY29uc3QgbWFqb3JWZXJzaW9uID0gYCR7bmFtZX1AJHtuZXcgU2VtVmVyKHZlcnNpb24pLm1ham9yfWA7XG4gICAgICBwYWNrYWdlTWFqb3JWZXJzaW9ucy5hZGQobWFqb3JWZXJzaW9uKTtcblxuICAgICAgY29uc3QgZnVsbE5hbWUgPSBgJHtuYW1lfUAke3ZlcnNpb259YDtcblxuICAgICAgLy8gRW5zdXJlIHRoZSBwYWNrYWdlIGlzIGZ1bGx5IHJlZ2lzdGVyZWQgZm9yIHBlci1sYW5ndWFnZSBzdGF0dXMsIGV2ZW4gaWYgbm8gZG9jIGV4aXN0cyB5ZXQuXG4gICAgICBmb3IgKGNvbnN0IGxhbmd1YWdlIG9mIERvY3VtZW50YXRpb25MYW5ndWFnZS5BTEwpIHtcbiAgICAgICAgcmVjb3JkUGVyTGFuZ3VhZ2UoXG4gICAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgICAgRG9jdW1lbnRhdGlvblN0YXR1cy5NSVNTSU5HLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgbWFqb3JWZXJzaW9uLFxuICAgICAgICAgIGZ1bGxOYW1lXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaW5kZXhlZFBhY2thZ2VzLmhhcyhmdWxsTmFtZSkpIHtcbiAgICAgICAgaW5kZXhlZFBhY2thZ2VzLnNldChmdWxsTmFtZSwge30pO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhdHVzID0gaW5kZXhlZFBhY2thZ2VzLmdldChmdWxsTmFtZSkhO1xuXG4gICAgICBpZiAoa2V5LmVuZHNXaXRoKGNvbnN0YW50cy5NRVRBREFUQV9LRVlfU1VGRklYKSkge1xuICAgICAgICBzdGF0dXMubWV0YWRhdGFQcmVzZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5LmVuZHNXaXRoKGNvbnN0YW50cy5QQUNLQUdFX0tFWV9TVUZGSVgpKSB7XG4gICAgICAgIHN0YXR1cy50YXJiYWxsUHJlc2VudCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGtleS5lbmRzV2l0aChjb25zdGFudHMuQVNTRU1CTFlfS0VZX1NVRkZJWCkpIHtcbiAgICAgICAgc3RhdHVzLmFzc2VtYmx5UHJlc2VudCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGtleS5lbmRzV2l0aChjb25zdGFudHMuVU5JTlNUQUxMQUJMRV9QQUNLQUdFX1NVRkZJWCkpIHtcbiAgICAgICAgc3RhdHVzLnVuaW5zdGFsbGFibGUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlkZW50aWZpZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBsYW5ndWFnZSBvZiBEb2N1bWVudGF0aW9uTGFuZ3VhZ2UuQUxMKSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hKc29uID0gc3VibW9kdWxlS2V5UmVnZXhwKGxhbmd1YWdlLCAnanNvbicpLmV4ZWMoa2V5KTtcbiAgICAgICAgICBjb25zdCBtYXRjaE1kID0gc3VibW9kdWxlS2V5UmVnZXhwKGxhbmd1YWdlLCAnbWQnKS5leGVjKGtleSk7XG4gICAgICAgICAgaWYgKG1hdGNoSnNvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBbLCBzdWJtb2R1bGUsIGlzVW5zdXBwb3J0ZWRdID0gbWF0Y2hKc29uO1xuICAgICAgICAgICAgaWYgKHN0YXR1cy5zdWJtb2R1bGVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgc3RhdHVzLnN1Ym1vZHVsZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGF0dXMuc3VibW9kdWxlcy5hZGQoYCR7ZnVsbE5hbWV9LiR7c3VibW9kdWxlfWApO1xuICAgICAgICAgICAgcmVjb3JkUGVyTGFuZ3VhZ2UoXG4gICAgICAgICAgICAgIGxhbmd1YWdlLFxuICAgICAgICAgICAgICBpc1Vuc3VwcG9ydGVkXG4gICAgICAgICAgICAgICAgPyBEb2N1bWVudGF0aW9uU3RhdHVzLlVOU1VQUE9SVEVEXG4gICAgICAgICAgICAgICAgOiBEb2N1bWVudGF0aW9uU3RhdHVzLlNVUFBPUlRFRCxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgbWFqb3JWZXJzaW9uLFxuICAgICAgICAgICAgICBmdWxsTmFtZSxcbiAgICAgICAgICAgICAgc3VibW9kdWxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWRlbnRpZmllZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGtleS5lbmRzV2l0aChjb25zdGFudHMuZG9jc0tleVN1ZmZpeChsYW5ndWFnZSwgdW5kZWZpbmVkLCAnanNvbicpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmVjb3JkUGVyTGFuZ3VhZ2UoXG4gICAgICAgICAgICAgIGxhbmd1YWdlLFxuICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uU3RhdHVzLlNVUFBPUlRFRCxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgbWFqb3JWZXJzaW9uLFxuICAgICAgICAgICAgICBmdWxsTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlkZW50aWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBrZXkuZW5kc1dpdGgoXG4gICAgICAgICAgICAgIGNvbnN0YW50cy5ub3RTdXBwb3J0ZWRLZXlTdWZmaXgobGFuZ3VhZ2UsIHVuZGVmaW5lZCwgJ2pzb24nKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmVjb3JkUGVyTGFuZ3VhZ2UoXG4gICAgICAgICAgICAgIGxhbmd1YWdlLFxuICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uU3RhdHVzLlVOU1VQUE9SVEVELFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICBtYWpvclZlcnNpb24sXG4gICAgICAgICAgICAgIGZ1bGxOYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWRlbnRpZmllZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGtleS5lbmRzV2l0aChcbiAgICAgICAgICAgICAgY29uc3RhbnRzLmNvcnJ1cHRBc3NlbWJseUtleVN1ZmZpeChsYW5ndWFnZSwgdW5kZWZpbmVkLCAnanNvbicpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZWNvcmRQZXJMYW5ndWFnZShcbiAgICAgICAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgIERvY3VtZW50YXRpb25TdGF0dXMuQ09SUlVQVF9BU1NFTUJMWSxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgbWFqb3JWZXJzaW9uLFxuICAgICAgICAgICAgICBmdWxsTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlkZW50aWZpZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgZ2VuZXJhdGUgYm90aCBKU09OIGZpbGVzIGFuZCBtYXJrZG93biBmaWxlcywgc28gZm9yIG5vd1xuICAgICAgICAgICAgLy8gd2UgcmVjb3JkIEpTT04gZmlsZXMgYXMgdGhlIHNvdXJjZSBvZiB0cnV0aCwgYnV0IHN0aWxsIGlkZW50aWZ5XG4gICAgICAgICAgICAvLyBtYXJrZG93biBmaWxlcyBzbyB0aGV5IGFyZSBub3QgY291bnRlZCBhcyB1bmtub3duLlxuICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2hNZCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZGVudGlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAga2V5LmVuZHNXaXRoKGNvbnN0YW50cy5kb2NzS2V5U3VmZml4KGxhbmd1YWdlLCB1bmRlZmluZWQsICdtZCcpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWRlbnRpZmllZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGtleS5lbmRzV2l0aChcbiAgICAgICAgICAgICAgY29uc3RhbnRzLm5vdFN1cHBvcnRlZEtleVN1ZmZpeChsYW5ndWFnZSwgdW5kZWZpbmVkLCAnbWQnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWRlbnRpZmllZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGtleS5lbmRzV2l0aChcbiAgICAgICAgICAgICAgY29uc3RhbnRzLmNvcnJ1cHRBc3NlbWJseUtleVN1ZmZpeChsYW5ndWFnZSwgdW5kZWZpbmVkLCAnbWQnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWRlbnRpZmllZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaWRlbnRpZmllZCkge1xuICAgICAgICAgIHN0YXR1cy51bmtub3duT2JqZWN0cyA9IHN0YXR1cy51bmtub3duT2JqZWN0cyA/PyBbXTtcbiAgICAgICAgICBzdGF0dXMudW5rbm93bk9iamVjdHMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbGF0ZXN0Q29udGludWF0aW9uVG9rZW4gJiZcbiAgICAgIGNvbnRleHQuZ2V0UmVtYWluaW5nVGltZUluTWlsbGlzKCkgPD0gbWF4TWV0cmljUHJvY2Vzc2luZ1RpbWVcbiAgICApIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnUnVubmluZyB1cCB0byB0aGUgTGFtYmRhIHRpbWUgbGltaXQgYW5kIHRoZXJlIGFyZSBzdGlsbCBpdGVtcyB0byBwcm9jZXNzLiBTYXZpbmcgb3VyIGN1cnJlbnQgcHJvZ3Jlc3MuLi4nXG4gICAgICApO1xuICAgICAgcmV0dXJuIHNhdmVQcm9ncmVzcyhsYXRlc3RDb250aW51YXRpb25Ub2tlbik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVwb3J0czogUHJvbWlzZTxcbiAgICBQcm9taXNlUmVzdWx0PEFXUy5TMy5QdXRPYmplY3RPdXRwdXQsIEFXUy5BV1NFcnJvcj5cbiAgPltdID0gW107XG5cbiAgZnVuY3Rpb24gY3JlYXRlUmVwb3J0KHJlcG9ydEtleTogc3RyaW5nLCBwYWNrYWdlVmVyc2lvbnM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgcmVwb3J0ID0gSlNPTi5zdHJpbmdpZnkocGFja2FnZVZlcnNpb25zLCBudWxsLCAyKTtcbiAgICBjb25zdCB7IGJ1ZmZlciwgY29udGVudEVuY29kaW5nIH0gPSBjb21wcmVzc0NvbnRlbnQoQnVmZmVyLmZyb20ocmVwb3J0KSk7XG4gICAgY29uc29sZS5sb2coYFVwbG9hZGluZyBsaXN0IHRvIHMzOi8vJHtwYWNrYWdlRGF0YUJ1Y2tldH0vJHtyZXBvcnRLZXl9YCk7XG4gICAgcmVwb3J0cy5wdXNoKFxuICAgICAgYXdzXG4gICAgICAgIC5zMygpXG4gICAgICAgIC5wdXRPYmplY3Qoe1xuICAgICAgICAgIEJvZHk6IGJ1ZmZlcixcbiAgICAgICAgICBCdWNrZXQ6IHBhY2thZ2VEYXRhQnVja2V0LFxuICAgICAgICAgIENvbnRlbnRFbmNvZGluZzogY29udGVudEVuY29kaW5nLFxuICAgICAgICAgIENvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgRXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwMF8wMDApLCAvLyA1IG1pbnV0ZXMgZnJvbSBub3dcbiAgICAgICAgICBLZXk6IHJlcG9ydEtleSxcbiAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgJ0xhbWJkYS1SdW4tSWQnOiBjb250ZXh0LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgICAgICdMYW1iZGEtTG9nLUdyb3VwLU5hbWUnOiBjb250ZXh0LmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgICAgICdMYW1iZGEtTG9nLVN0cmVhbS1OYW1lJzogY29udGV4dC5sb2dTdHJlYW1OYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5wcm9taXNlKClcbiAgICApO1xuICB9XG5cbiAgYXdhaXQgbWV0cmljU2NvcGUoKG1ldHJpY3MpID0+ICgpID0+IHtcbiAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoKTtcblxuICAgIGNvbnN0IG1pc3NpbmdNZXRhZGF0YSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgY29uc3QgbWlzc2luZ0Fzc2VtYmx5ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBjb25zdCBtaXNzaW5nVGFyYmFsbCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgY29uc3QgdW5pbnN0YWxsYWJsZSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgY29uc3QgdW5rbm93bk9iamVjdHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGNvbnN0IHN1Ym1vZHVsZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgW25hbWUsIHN0YXR1c10gb2YgaW5kZXhlZFBhY2thZ2VzLmVudHJpZXMoKSkge1xuICAgICAgaWYgKCFzdGF0dXMubWV0YWRhdGFQcmVzZW50KSB7XG4gICAgICAgIG1pc3NpbmdNZXRhZGF0YS5wdXNoKG5hbWUpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdGF0dXMuYXNzZW1ibHlQcmVzZW50KSB7XG4gICAgICAgIG1pc3NpbmdBc3NlbWJseS5wdXNoKG5hbWUpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdGF0dXMudGFyYmFsbFByZXNlbnQpIHtcbiAgICAgICAgbWlzc2luZ1RhcmJhbGwucHVzaChuYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0dXMudW5pbnN0YWxsYWJsZSkge1xuICAgICAgICB1bmluc3RhbGxhYmxlLnB1c2gobmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzLnVua25vd25PYmplY3RzPy5sZW5ndGggPz8gMCA+IDApIHtcbiAgICAgICAgdW5rbm93bk9iamVjdHMucHVzaCguLi5zdGF0dXMudW5rbm93bk9iamVjdHMhKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBzdWJtb2R1bGUgb2Ygc3RhdHVzLnN1Ym1vZHVsZXMgPz8gW10pIHtcbiAgICAgICAgc3VibW9kdWxlcy5wdXNoKHN1Ym1vZHVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnZGV0YWlsJywge1xuICAgICAgbWlzc2luZ01ldGFkYXRhLFxuICAgICAgbWlzc2luZ0Fzc2VtYmx5LFxuICAgICAgbWlzc2luZ1RhcmJhbGwsXG4gICAgICB1bmtub3duT2JqZWN0cyxcbiAgICB9KTtcblxuICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgTWV0cmljTmFtZS5VTklOU1RBTExBQkxFX1BBQ0tBR0VfQ09VTlQsXG4gICAgICB1bmluc3RhbGxhYmxlLmxlbmd0aCxcbiAgICAgIFVuaXQuQ291bnRcbiAgICApO1xuICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgTWV0cmljTmFtZS5NSVNTSU5HX01FVEFEQVRBX0NPVU5ULFxuICAgICAgbWlzc2luZ01ldGFkYXRhLmxlbmd0aCxcbiAgICAgIFVuaXQuQ291bnRcbiAgICApO1xuICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgTWV0cmljTmFtZS5NSVNTSU5HX0FTU0VNQkxZX0NPVU5ULFxuICAgICAgbWlzc2luZ0Fzc2VtYmx5Lmxlbmd0aCxcbiAgICAgIFVuaXQuQ291bnRcbiAgICApO1xuICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgTWV0cmljTmFtZS5NSVNTSU5HX1RBUkJBTExfQ09VTlQsXG4gICAgICBtaXNzaW5nVGFyYmFsbC5sZW5ndGgsXG4gICAgICBVbml0LkNvdW50XG4gICAgKTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLlBBQ0tBR0VfQ09VTlQsIHBhY2thZ2VOYW1lcy5zaXplLCBVbml0LkNvdW50KTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuUEFDS0FHRV9NQUpPUl9DT1VOVCxcbiAgICAgIHBhY2thZ2VNYWpvclZlcnNpb25zLnNpemUsXG4gICAgICBVbml0LkNvdW50XG4gICAgKTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0NPVU5ULFxuICAgICAgaW5kZXhlZFBhY2thZ2VzLnNpemUsXG4gICAgICBVbml0LkNvdW50XG4gICAgKTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuU1VCTU9EVUxFX0NPVU5ULFxuICAgICAgc3VibW9kdWxlcy5sZW5ndGgsXG4gICAgICBVbml0LkNvdW50XG4gICAgKTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuVU5LTk9XTl9PQkpFQ1RfQ09VTlQsXG4gICAgICB1bmtub3duT2JqZWN0cy5sZW5ndGgsXG4gICAgICBVbml0LkNvdW50XG4gICAgKTtcblxuICAgIGNyZWF0ZVJlcG9ydChjb25zdGFudHMuVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsIHVuaW5zdGFsbGFibGUpO1xuICB9KSgpO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgQXJyYXkuZnJvbShwZXJMYW5ndWFnZS5lbnRyaWVzKCkpKSB7XG4gICAgYXdhaXQgbWV0cmljU2NvcGUoXG4gICAgICAobWV0cmljcykgPT4gYXN5bmMgKGxhbmd1YWdlOiBzdHJpbmcsIGRhdGE6IFBlckxhbmd1YWdlRGF0YSkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIycpO1xuICAgICAgICBjb25zb2xlLmxvZyhgIyMjIFN0YXJ0IG9mIGRhdGEgZm9yICR7bGFuZ3VhZ2V9YCk7XG5cbiAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKHsgW0xBTkdVQUdFX0RJTUVOU0lPTl06IGxhbmd1YWdlLnRvU3RyaW5nKCkgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBmb3JTdGF0dXMgb2YgW1xuICAgICAgICAgIERvY3VtZW50YXRpb25TdGF0dXMuU1VQUE9SVEVELFxuICAgICAgICAgIERvY3VtZW50YXRpb25TdGF0dXMuVU5TVVBQT1JURUQsXG4gICAgICAgICAgRG9jdW1lbnRhdGlvblN0YXR1cy5NSVNTSU5HLFxuICAgICAgICAgIERvY3VtZW50YXRpb25TdGF0dXMuQ09SUlVQVF9BU1NFTUJMWSxcbiAgICAgICAgXSkge1xuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgc3RhdHVzZXNdIG9mIGRhdGEuZW50cmllcygpKSB7XG4gICAgICAgICAgICBsZXQgZmlsdGVyZWQgPSBBcnJheS5mcm9tKHN0YXR1c2VzLmVudHJpZXMoKSkuZmlsdGVyKFxuICAgICAgICAgICAgICAoWywgc3RhdHVzXSkgPT4gZm9yU3RhdHVzID09PSBzdGF0dXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsZXQgbWV0cmljTmFtZSA9XG4gICAgICAgICAgICAgIE1FVFJJQ19OQU1FX0JZX1NUQVRVU19BTkRfR1JBSU5bZm9yU3RhdHVzIGFzIERvY3VtZW50YXRpb25TdGF0dXNdW1xuICAgICAgICAgICAgICAgIGtleSBhcyBHcmFpblxuICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIChmb3JTdGF0dXMgPT09IERvY3VtZW50YXRpb25TdGF0dXMuTUlTU0lORyAmJlxuICAgICAgICAgICAgICAgIG1ldHJpY05hbWUgPT09IE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX01JU1NJTkdfVkVSU0lPTlMpIHx8XG4gICAgICAgICAgICAgIChmb3JTdGF0dXMgPT09IERvY3VtZW50YXRpb25TdGF0dXMuQ09SUlVQVF9BU1NFTUJMWSAmJlxuICAgICAgICAgICAgICAgIG1ldHJpY05hbWUgPT09XG4gICAgICAgICAgICAgICAgICBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9DT1JSVVBUX0FTU0VNQkxZX1ZFUlNJT05TKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIGdlbmVyYXRlIHJlcG9ydHMgZm9yIG1pc3NpbmcvY29ycnVwdCBvbmx5IGZvciBwYWNrYWdlIHZlcnNpb25zIGdyYW51bGFyaXR5XG4gICAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBEb2N1bWVudGF0aW9uTGFuZ3VhZ2UuZnJvbVN0cmluZyhsYW5ndWFnZSk7XG4gICAgICAgICAgICAgIGNvbnN0IHJlcG9ydEtleSA9XG4gICAgICAgICAgICAgICAgZm9yU3RhdHVzID09PSBEb2N1bWVudGF0aW9uU3RhdHVzLk1JU1NJTkdcbiAgICAgICAgICAgICAgICAgID8gY29uc3RhbnRzLm1pc3NpbmdEb2N1bWVudGF0aW9uUmVwb3J0KGxhbmcpXG4gICAgICAgICAgICAgICAgICA6IGNvbnN0YW50cy5jb3JydXB0QXNzZW1ibHlSZXBvcnQobGFuZyk7XG4gICAgICAgICAgICAgIGNyZWF0ZVJlcG9ydChyZXBvcnRLZXksIGZpbHRlcmVkLm1hcCgoW25hbWVdKSA9PiBuYW1lKS5zb3J0KCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYCR7Zm9yU3RhdHVzfSAke2tleX0gZm9yICR7bGFuZ3VhZ2V9OiAke2ZpbHRlcmVkLmxlbmd0aH0gZW50cmllc2BcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhtZXRyaWNOYW1lLCBmaWx0ZXJlZC5sZW5ndGgsIFVuaXQuQ291bnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGAjIyMgRW5kIG9mIGRhdGEgZm9yICR7bGFuZ3VhZ2V9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIycpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICB9XG4gICAgKSguLi5lbnRyeSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHJlcG9ydCBvZiByZXBvcnRzKSB7XG4gICAgYXdhaXQgcmVwb3J0O1xuICB9XG5cbiAgcmV0dXJuIHt9O1xufVxuXG4vKipcbiAqIExpc3QgYWxsIG9iamVjdHMgaW4gdGhlIGJ1Y2tldCwgeWllbGRpbmcgYmF0Y2hlcyBvZiB1cCB0byAxMDAwIGtleXMuIEFsc29cbiAqIHlpZWxkcyB0aGUgbmV4dCBjb250aW51YXRpb24gdG9rZW4gaWYgdGhlcmUgaXMgb25lLlxuICovXG5hc3luYyBmdW5jdGlvbiogcmVsZXZhbnRPYmplY3RLZXlzKFxuICBidWNrZXQ6IHN0cmluZyxcbiAgY29udGludWF0aW9uVG9rZW4/OiBzdHJpbmdcbik6IEFzeW5jR2VuZXJhdG9yPFtzdHJpbmdbXSwgc3RyaW5nIHwgdW5kZWZpbmVkXSwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCByZXF1ZXN0OiBBV1MuUzMuTGlzdE9iamVjdHNWMlJlcXVlc3QgPSB7XG4gICAgQnVja2V0OiBidWNrZXQsXG4gICAgUHJlZml4OiBjb25zdGFudHMuU1RPUkFHRV9LRVlfUFJFRklYLFxuICB9O1xuICBpZiAoY29udGludWF0aW9uVG9rZW4pIHJlcXVlc3QuQ29udGludWF0aW9uVG9rZW4gPSBjb250aW51YXRpb25Ub2tlbjtcblxuICBkbyB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhd3MuczMoKS5saXN0T2JqZWN0c1YyKHJlcXVlc3QpLnByb21pc2UoKTtcbiAgICBjb25zdCBrZXlzID0gW107XG4gICAgZm9yIChjb25zdCB7IEtleSB9IG9mIHJlc3BvbnNlLkNvbnRlbnRzID8/IFtdKSB7XG4gICAgICBpZiAoS2V5ID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBrZXlzLnB1c2goS2V5KTtcbiAgICB9XG4gICAgeWllbGQgW2tleXMsIHJlc3BvbnNlLkNvbnRpbnVhdGlvblRva2VuXTtcbiAgICByZXF1ZXN0LkNvbnRpbnVhdGlvblRva2VuID0gcmVzcG9uc2UuTmV4dENvbnRpbnVhdGlvblRva2VuO1xuICB9IHdoaWxlIChyZXF1ZXN0LkNvbnRpbnVhdGlvblRva2VuICE9IG51bGwpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gb2J0YWlucyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGEgY2FwdHVyZSBncm91cCB0aGF0IGFsbG93c1xuICogZGV0ZXJtaW5pbmcgdGhlIHN1Ym1vZHVsZSBuYW1lIGZyb20gYSBzdWJtb2R1bGUgZG9jdW1lbnRhdGlvbiBrZXksIGFuZFxuICogYW5vdGhlciB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgb2JqZWN0IGlzIGFuIFwidW5zdXBwb3J0ZWQgYmVhY29uXCIgb3Igbm90LlxuICovXG5mdW5jdGlvbiBzdWJtb2R1bGVLZXlSZWdleHAoXG4gIGxhbmd1YWdlOiBEb2N1bWVudGF0aW9uTGFuZ3VhZ2UsXG4gIGZpbGVFeHQ6IHN0cmluZ1xuKTogUmVnRXhwIHtcbiAgLy8gV2UgdXNlIGEgcGxhY2Vob2xkZXIgdG8gYmUgYWJsZSB0byBpbnNlcnQgdGhlIGNhcHR1cmUgZ3JvdXAgb25jZSB3ZSBoYXZlXG4gIC8vIGZ1bGx5IHF1b3RlZCB0aGUga2V5IHByZWZpeCBmb3IgUmVnZXggc2FmZXR5LlxuICBjb25zdCBwbGFjZWhvbGRlciA9ICc8U1VCTU9EVUxFTkFNRT4nO1xuXG4gIC8vIFdlIG9idGFpbiB0aGUgc3RhbmRhcmQga2V5IHN1ZmZpeC5cbiAgY29uc3Qga2V5UHJlZml4ID0gY29uc3RhbnRzLmRvY3NLZXlTdWZmaXgobGFuZ3VhZ2UsIHBsYWNlaG9sZGVyLCBmaWxlRXh0KTtcblxuICAvLyBGaW5hbGx5LCBhc3NlbWJsZSB0aGUgcmVndWxhciBleHByZXNzaW9uIHdpdGggdGhlIGNhcHR1cmUgZ3JvdXAuXG4gIHJldHVybiBuZXcgUmVnRXhwKFxuICAgIGAuKiR7cmVRdW90ZShrZXlQcmVmaXgpLnJlcGxhY2UocGxhY2Vob2xkZXIsICcoLispJyl9KCR7cmVRdW90ZShcbiAgICAgIGNvbnN0YW50cy5OT1RfU1VQUE9SVEVEX1NVRkZJWFxuICAgICl9KT8kYFxuICApO1xuXG4gIC8qKlxuICAgKiBFc2NhcGVzIGFsbCBcInNwZWFjaWFsIG1lYW5pbmdcIiBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLCBzbyBpdCBjYW4gYmUgdXNlZCBhc1xuICAgKiBwYXJ0IG9mIGEgcmVndWxhciBleHByZXNzaW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gcmVRdW90ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oWysqLigpPyRbXFxdXSkvZywgJ1xcXFwkMScpO1xuICB9XG59XG5cbmludGVyZmFjZSBJbmRleGVkUGFja2FnZVN0YXR1cyB7XG4gIG1ldGFkYXRhUHJlc2VudD86IGJvb2xlYW47XG4gIGFzc2VtYmx5UHJlc2VudD86IGJvb2xlYW47XG4gIHVuaW5zdGFsbGFibGU/OiBib29sZWFuO1xuICBzdWJtb2R1bGVzPzogU2V0PHN0cmluZz47XG4gIHRhcmJhbGxQcmVzZW50PzogYm9vbGVhbjtcbiAgdW5rbm93bk9iamVjdHM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gR3JhaW4ge1xuICBQQUNLQUdFX01BSk9SX1ZFUlNJT05TID0gJ3BhY2thZ2UgbWFqb3IgdmVyc2lvbnMnLFxuICBQQUNLQUdFX1ZFUlNJT05fU1VCTU9EVUxFUyA9ICdwYWNrYWdlIHZlcnNpb24gc3VibW9kdWxlcycsXG4gIFBBQ0tBR0VfVkVSU0lPTlMgPSAncGFja2FnZSB2ZXJzaW9ucycsXG4gIFBBQ0tBR0VTID0gJ3BhY2thZ2VzJyxcbn1cblxudHlwZSBQZXJMYW5ndWFnZURhdGEgPSBNYXA8R3JhaW4sIE1hcDxzdHJpbmcsIERvY3VtZW50YXRpb25TdGF0dXM+PjtcblxuZXhwb3J0IGNvbnN0IGVudW0gRG9jdW1lbnRhdGlvblN0YXR1cyB7XG4gIC8qKlxuICAgKiBUaGlzIHBhY2thZ2UgaXMgbWlzc2luZyBhbnkga2luZCBvZiBkb2N1bWVudGF0aW9uIG9yIG1hcmtlciBmaWxlLlxuICAgKi9cbiAgTUlTU0lORyA9ICdNaXNzaW5nJyxcblxuICAvKipcbiAgICogVGhpcyBwYWNrYWdlIGRvZXMgbm90IHN1cHBvcnQgdGhlIGdpdmVuIGxhbmd1YWdlLlxuICAgKi9cbiAgVU5TVVBQT1JURUQgPSAnVW5zdXBwb3J0ZWQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIHBhY2thZ2UgaGFzIGEgY29ycnVwdGVkIEpTSUkgYXNzZW1ibHkgc28gd2UgY2FuJ3QgZ2VuZXJhdGVcbiAgICogZG9jdW1lbnRhdGlvbiBmb3IgaXQuXG4gICAqL1xuICBDT1JSVVBUX0FTU0VNQkxZID0gJ0NvcnJ1cHRBc3NlbWJseScsXG5cbiAgLyoqXG4gICAqIFRoaXMgcGFja2FnZSBzdXBwb3J0cyB0aGUgZ2l2ZW4gbGFuZ3VhZ2UgYW5kIGhhcyBkb2N1bWVudGF0aW9uIGZvciBpdC5cbiAgICovXG4gIFNVUFBPUlRFRCA9ICdTdXBwb3J0ZWQnLFxufVxuXG5jb25zdCBNRVRSSUNfTkFNRV9CWV9TVEFUVVNfQU5EX0dSQUlOOiB7XG4gIHJlYWRvbmx5IFtzdGF0dXMgaW4gRG9jdW1lbnRhdGlvblN0YXR1c106IHtcbiAgICByZWFkb25seSBbZ3JhaW4gaW4gR3JhaW5dOiBNZXRyaWNOYW1lO1xuICB9O1xufSA9IHtcbiAgW0RvY3VtZW50YXRpb25TdGF0dXMuTUlTU0lOR106IHtcbiAgICBbR3JhaW4uUEFDS0FHRVNdOiBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9NSVNTSU5HX1BBQ0tBR0VTLFxuICAgIFtHcmFpbi5QQUNLQUdFX01BSk9SX1ZFUlNJT05TXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfTUlTU0lOR19NQUpPUlMsXG4gICAgW0dyYWluLlBBQ0tBR0VfVkVSU0lPTlNdOiBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9NSVNTSU5HX1ZFUlNJT05TLFxuICAgIFtHcmFpbi5QQUNLQUdFX1ZFUlNJT05fU1VCTU9EVUxFU106XG4gICAgICBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9NSVNTSU5HX1NVQk1PRFVMRVMsXG4gIH0sXG4gIFtEb2N1bWVudGF0aW9uU3RhdHVzLlVOU1VQUE9SVEVEXToge1xuICAgIFtHcmFpbi5QQUNLQUdFU106IE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX1VOU1VQUE9SVEVEX1BBQ0tBR0VTLFxuICAgIFtHcmFpbi5QQUNLQUdFX01BSk9SX1ZFUlNJT05TXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfVU5TVVBQT1JURURfTUFKT1JTLFxuICAgIFtHcmFpbi5QQUNLQUdFX1ZFUlNJT05TXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfVU5TVVBQT1JURURfVkVSU0lPTlMsXG4gICAgW0dyYWluLlBBQ0tBR0VfVkVSU0lPTl9TVUJNT0RVTEVTXTpcbiAgICAgIE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX1VOU1VQUE9SVEVEX1NVQk1PRFVMRVMsXG4gIH0sXG4gIFtEb2N1bWVudGF0aW9uU3RhdHVzLlNVUFBPUlRFRF06IHtcbiAgICBbR3JhaW4uUEFDS0FHRVNdOiBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9TVVBQT1JURURfUEFDS0FHRVMsXG4gICAgW0dyYWluLlBBQ0tBR0VfTUFKT1JfVkVSU0lPTlNdOiBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9TVVBQT1JURURfTUFKT1JTLFxuICAgIFtHcmFpbi5QQUNLQUdFX1ZFUlNJT05TXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfU1VQUE9SVEVEX1ZFUlNJT05TLFxuICAgIFtHcmFpbi5QQUNLQUdFX1ZFUlNJT05fU1VCTU9EVUxFU106XG4gICAgICBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9TVVBQT1JURURfU1VCTU9EVUxFUyxcbiAgfSxcbiAgW0RvY3VtZW50YXRpb25TdGF0dXMuQ09SUlVQVF9BU1NFTUJMWV06IHtcbiAgICBbR3JhaW4uUEFDS0FHRVNdOiBNZXRyaWNOYW1lLlBFUl9MQU5HVUFHRV9DT1JSVVBUX0FTU0VNQkxZX1BBQ0tBR0VTLFxuICAgIFtHcmFpbi5QQUNLQUdFX01BSk9SX1ZFUlNJT05TXTpcbiAgICAgIE1ldHJpY05hbWUuUEVSX0xBTkdVQUdFX0NPUlJVUFRfQVNTRU1CTFlfTUFKT1JTLFxuICAgIFtHcmFpbi5QQUNLQUdFX1ZFUlNJT05TXTogTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfQ09SUlVQVF9BU1NFTUJMWV9WRVJTSU9OUyxcbiAgICBbR3JhaW4uUEFDS0FHRV9WRVJTSU9OX1NVQk1PRFVMRVNdOlxuICAgICAgTWV0cmljTmFtZS5QRVJfTEFOR1VBR0VfQ09SUlVQVF9BU1NFTUJMWV9TVUJNT0RVTEVTLFxuICB9LFxufTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGluZm9ybWF0aW9uIGZvciB0aGUgcHJvdmlkZWQgbGFuZ3VhZ2UuIEEgXCJNSVNTSU5HXCIgc3RhdHVzXG4gKiB3aWxsIGJlIGlnbm9yZWQgaWYgYW5vdGhlciBzdGF0dXMgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgdGhlIHNhbWVcbiAqIGVudGl0eS4gQW4gXCJVTlNVUFBPUlRFRFwiIHN0YXR1cyB3aWxsIGJlIGlnbm9yZWQgaWYgYSBcIlNVUFBPUlRFRFwiIHN0YXR1c1xuICogd2FzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgdGhlIHNhbWUgZW50aXR5LlxuICpcbiAqIElmIGEgc3VibW9kdWxlIGlzIHByb3ZpZGVkLCBvbmx5IHRoYXQgc3VibW9kdWxlJ3MgYXZhaWxhYmlsaXR5IGlzIHVwZGF0ZWQuXG4gKi9cbmZ1bmN0aW9uIGRvUmVjb3JkUGVyTGFuZ3VhZ2UoXG4gIHBlckxhbmd1YWdlOiBNYXA8c3RyaW5nLCBQZXJMYW5ndWFnZURhdGE+LFxuICBsYW5ndWFnZTogRG9jdW1lbnRhdGlvbkxhbmd1YWdlLFxuICBzdGF0dXM6IERvY3VtZW50YXRpb25TdGF0dXMsXG4gIHBrZ05hbWU6IHN0cmluZyxcbiAgcGtnTWFqb3I6IHN0cmluZyxcbiAgcGtnVmVyc2lvbjogc3RyaW5nLFxuICBzdWJtb2R1bGU/OiBzdHJpbmdcbikge1xuICBpZiAoIXBlckxhbmd1YWdlLmhhcyhsYW5ndWFnZS5uYW1lKSkge1xuICAgIGNvbnN0IHBlckdyYWluRGF0YSA9IG5ldyBNYXA8R3JhaW4sIE1hcDxzdHJpbmcsIERvY3VtZW50YXRpb25TdGF0dXM+PigpO1xuICAgIHBlckdyYWluRGF0YS5zZXQoR3JhaW4uUEFDS0FHRV9NQUpPUl9WRVJTSU9OUywgbmV3IE1hcCgpKTtcbiAgICBwZXJHcmFpbkRhdGEuc2V0KEdyYWluLlBBQ0tBR0VTLCBuZXcgTWFwKCkpO1xuICAgIHBlckdyYWluRGF0YS5zZXQoR3JhaW4uUEFDS0FHRV9WRVJTSU9OX1NVQk1PRFVMRVMsIG5ldyBNYXAoKSk7XG4gICAgcGVyR3JhaW5EYXRhLnNldChHcmFpbi5QQUNLQUdFX1ZFUlNJT05TLCBuZXcgTWFwKCkpO1xuICAgIHBlckxhbmd1YWdlLnNldChsYW5ndWFnZS5uYW1lLCBwZXJHcmFpbkRhdGEpO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBwZXJMYW5ndWFnZS5nZXQobGFuZ3VhZ2UubmFtZSkhO1xuXG4gIC8vIElmIHRoZXJlIGlzIGEgc3VibW9kdWxlLCBvbmx5IHVwZGF0ZSB0aGUgc3VibW9kdWxlIGRvbWFpbi5cbiAgY29uc3Qgb3V0cHV0RG9tYWluczogcmVhZG9ubHkgW01hcDxzdHJpbmcsIERvY3VtZW50YXRpb25TdGF0dXM+LCBzdHJpbmddW10gPVxuICAgIHN1Ym1vZHVsZVxuICAgICAgPyBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgZGF0YS5nZXQoR3JhaW4uUEFDS0FHRV9WRVJTSU9OX1NVQk1PRFVMRVMpISxcbiAgICAgICAgICAgIGAke3BrZ1ZlcnNpb259LiR7c3VibW9kdWxlfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgXVxuICAgICAgOiBbXG4gICAgICAgICAgW2RhdGEuZ2V0KEdyYWluLlBBQ0tBR0VfTUFKT1JfVkVSU0lPTlMpISwgcGtnTWFqb3JdLFxuICAgICAgICAgIFtkYXRhLmdldChHcmFpbi5QQUNLQUdFX1ZFUlNJT05TKSEsIHBrZ1ZlcnNpb25dLFxuICAgICAgICAgIFtkYXRhLmdldChHcmFpbi5QQUNLQUdFUykhLCBwa2dOYW1lXSxcbiAgICAgICAgXTtcbiAgZm9yIChjb25zdCBbbWFwLCBuYW1lXSBvZiBvdXRwdXREb21haW5zKSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgRG9jdW1lbnRhdGlvblN0YXR1cy5NSVNTSU5HOlxuICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBzdGF0dXMsIGRvbid0IG92ZXJyaWRlIGl0IHdpdGggXCJNSVNTSU5HXCIuXG4gICAgICAgIGlmICghbWFwLmhhcyhuYW1lKSkge1xuICAgICAgICAgIG1hcC5zZXQobmFtZSwgc3RhdHVzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRG9jdW1lbnRhdGlvblN0YXR1cy5TVVBQT1JURUQ6XG4gICAgICAgIC8vIElmIHRoZSBwYWNrYWdlIGlzIFwic3VwcG9ydGVkXCIsIHRoaXMgYWx3YXlzIFwid2luc1wiXG4gICAgICAgIG1hcC5zZXQobmFtZSwgc3RhdHVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERvY3VtZW50YXRpb25TdGF0dXMuVU5TVVBQT1JURUQ6XG4gICAgICBjYXNlIERvY3VtZW50YXRpb25TdGF0dXMuQ09SUlVQVF9BU1NFTUJMWTpcbiAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgc3RhdHVzLCBvbmx5IG92ZXJyaWRlIHdpdGggaWYgaXQgd2FzIFwiTUlTU0lOR1wiLlxuICAgICAgICBpZiAoIW1hcC5oYXMobmFtZSkgfHwgbWFwLmdldChuYW1lKSA9PT0gRG9jdW1lbnRhdGlvblN0YXR1cy5NSVNTSU5HKSB7XG4gICAgICAgICAgbWFwLnNldChuYW1lLCBzdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEV4cGVjdGVkIGlucHV0IGV2ZW50IHN0cnVjdHVyZSBhcyBwYXNzZWQgYnkgdGhlIHN0YXRlIG1hY2hpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52ZW50b3J5Q2FuYXJ5RXZlbnQge1xuICByZWFkb25seSBjb250aW51YXRpb25PYmplY3RLZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJtZWRpYXRlIHN0YXRlIHN0b3JlZCBiZXR3ZWVuIGludm9jYXRpb25zIG9mIHRoZSBpbnZlbnRvcnkgY2FuYXJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludmVudG9yeUNhbmFyeVN0YXRlIHtcbiAgcmVhZG9ubHkgY29udGludWF0aW9uVG9rZW46IHN0cmluZztcbiAgcmVhZG9ubHkgaW5kZXhlZFBhY2thZ2VzOiBNYXA8c3RyaW5nLCBJbmRleGVkUGFja2FnZVN0YXR1cz47XG4gIHJlYWRvbmx5IHBhY2thZ2VOYW1lczogU2V0PHN0cmluZz47XG4gIHJlYWRvbmx5IHBhY2thZ2VNYWpvclZlcnNpb25zOiBTZXQ8c3RyaW5nPjtcbiAgcmVhZG9ubHkgcGVyTGFuZ3VhZ2U6IE1hcDxzdHJpbmcsIFBlckxhbmd1YWdlRGF0YT47XG59XG5cbnR5cGUgU2VyaWFsaXplZDxUPiA9IHN0cmluZyAmIHsgX3NlcmlhbGl6ZWQ6IFQgfTtcblxuLyoqXG4gKiBSZXBsYWNlciB0aGF0IGNhbiBiZSB1c2VkIGluIEpTT04uc3RyaW5naWZ5IHRvIGF1dG9tYXRpY2FsbHkgdHVybiBvYmplY3RzIGJhY2sgaW50byBtYXBzXG4gKiBhbmQgYXJyYXlzIGJhY2sgaW50byBzZXRzIHdoZXJlIGFwcHJvcHJpYXRlLlxuICovXG5mdW5jdGlvbiBzYWZlUmVwbGFjZXIoX2tleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgIHJldHVybiB7XG4gICAgICBfdHlwZTogJ01hcCcsXG4gICAgICB2YWx1ZTogQXJyYXkuZnJvbSh2YWx1ZS5lbnRyaWVzKCkpLFxuICAgIH07XG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX3R5cGU6ICdTZXQnLFxuICAgICAgdmFsdWU6IEFycmF5LmZyb20oWy4uLnZhbHVlXSksXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2FmZVJldml2ZXIoX2tleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgaWYgKHZhbHVlLl90eXBlID09PSAnTWFwJykge1xuICAgICAgcmV0dXJuIG5ldyBNYXAodmFsdWUudmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUuX3R5cGUgPT09ICdTZXQnKSB7XG4gICAgICByZXR1cm4gbmV3IFNldCh2YWx1ZS52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZTxUPih2YWx1ZTogVCk6IFNlcmlhbGl6ZWQ8VD4ge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHNhZmVSZXBsYWNlciwgMikgYXMgU2VyaWFsaXplZDxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplPFQ+KHZhbHVlOiBTZXJpYWxpemVkPFQ+KTogVCB7XG4gIHJldHVybiBKU09OLnBhcnNlKHZhbHVlLCBzYWZlUmV2aXZlcik7XG59XG4iXX0=
@@ -389,7 +389,7 @@ class ConstructHub extends constructs_1.Construct {
389
389
  }
390
390
  exports.ConstructHub = ConstructHub;
391
391
  _a = JSII_RTTI_SYMBOL_1;
392
- ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.96" };
392
+ ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.97" };
393
393
  /**
394
394
  * How possibly risky operations (such as doc-generation, which requires
395
395
  * installing the indexed packages in order to trans-literate sample code) are
@@ -278,5 +278,5 @@ class CodeArtifact {
278
278
  }
279
279
  exports.CodeArtifact = CodeArtifact;
280
280
  _a = JSII_RTTI_SYMBOL_1;
281
- CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.96" };
281
+ CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.97" };
282
282
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvY29kZS1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE4RDtBQUM5RCwrREFRb0M7QUFFcEMsdURBQThDO0FBQzlDLHVFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsdURBQWlEO0FBQ2pELCtDQUFnRTtBQUNoRSxpREFBNkQ7QUFFN0QsNENBS3NCO0FBQ3RCLGtEQUE2QztBQU03QywyQ0FBaUQ7QUFDakQsb0ZBQStFO0FBQy9FLG9GQU1nRDtBQWNoRDs7O0dBR0c7QUFDSCxNQUFhLFlBQVk7SUFDdkIsWUFBb0MsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFBRyxDQUFDO0lBRXpELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsS0FBSyxHQUNvQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUxSSxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2pCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsRUFBRTtnQkFDM0QsaUJBQWlCLEVBQUUsMEJBQWlCLENB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dCI6WyJpbXBvcnQgeyBBcm5Gb3JtYXQsIEF3cywgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBHcmFwaFdpZGdldCxcbiAgTWF0aEV4cHJlc3Npb24sXG4gIE1ldHJpYyxcbiAgTWV0cmljT3B0aW9ucyxcbiAgU3RhdGlzdGljLFxuICBUcmVhdE1pc3NpbmdEYXRhLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBDZm5SZXBvc2l0b3J5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVhcnRpZmFjdCc7XG5pbXBvcnQgeyBSdWxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgVHJhY2luZyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQmxvY2tQdWJsaWNBY2Nlc3MsIElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgUXVldWUsIFF1ZXVlRW5jcnlwdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zcXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge1xuICBjb2RlQXJ0aWZhY3RSZXBvc2l0b3J5VXJsLFxuICBsYW1iZGFGdW5jdGlvblVybCxcbiAgbGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwsXG4gIHNxc1F1ZXVlVXJsLFxufSBmcm9tICcuLi9kZWVwLWxpbmsnO1xuaW1wb3J0IHsgZmlsbE1ldHJpYyB9IGZyb20gJy4uL21ldHJpYy11dGlscyc7XG5pbXBvcnQgdHlwZSB7XG4gIElQYWNrYWdlU291cmNlLFxuICBQYWNrYWdlU291cmNlQmluZE9wdGlvbnMsXG4gIFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0LFxufSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZSc7XG5pbXBvcnQgeyBTM1N0b3JhZ2VGYWN0b3J5IH0gZnJvbSAnLi4vczMvc3RvcmFnZSc7XG5pbXBvcnQgeyBDb2RlQXJ0aWZhY3RGb3J3YXJkZXIgfSBmcm9tICcuL2NvZGVhcnRpZmFjdC9jb2RlLWFydGlmYWN0LWZvcndhcmRlcic7XG5pbXBvcnQge1xuICBNRVRSSUNTX05BTUVTUEFDRSxcbiAgTWV0cmljTmFtZSxcbiAgRE9NQUlOX05BTUVfRElNRU5TSU9OLFxuICBET01BSU5fT1dORVJfRElNRU5TSU9OLFxuICBSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OLFxufSBmcm9tICcuL2NvZGVhcnRpZmFjdC9jb25zdGFudHMubGFtYmRhLXNoYXJlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUFydGlmYWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIENvZGVBcnRpZmFjdCByZXBvc2l0b3J5IHdoZXJlIHBhY2thZ2VzIGFyZSBvYnRhaW5lZCBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeTogQ2ZuUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogVGhlIFMzIGJ1Y2tldCB3aGVyZSBwYWNrYWdlcyB3aWxsIGJlIHN0YWdlZC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldD86IElCdWNrZXQ7XG59XG5cbi8qKlxuICogQSBwYWNrYWdlIHNvdXJjZSB0aGF0IG9idGFpbnMgcGFja2FnZSBkYXRhIGZyb20gYW4gbnBtIENvZGVBcnRpZmFjdFxuICogcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZGVBcnRpZmFjdCBpbXBsZW1lbnRzIElQYWNrYWdlU291cmNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IENvZGVBcnRpZmFjdFByb3BzKSB7fVxuXG4gIHB1YmxpYyBiaW5kKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAge1xuICAgICAgZGVueUxpc3QsXG4gICAgICBpbmdlc3Rpb24sXG4gICAgICBsaWNlbnNlTGlzdCxcbiAgICAgIG1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZCxcbiAgICAgIHF1ZXVlLFxuICAgIH06IFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9uc1xuICApOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB7XG4gICAgY29uc3QgaWRQcmVmaXggPSB0aGlzLnByb3BzLnJlcG9zaXRvcnkubm9kZS5wYXRoO1xuICAgIGNvbnN0IHJlcG9zaXRvcnlJZCA9IGAke3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXJ9OiR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lfS8ke3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZX1gO1xuXG4gICAgY29uc3Qgc3RvcmFnZUZhY3RvcnkgPSBTM1N0b3JhZ2VGYWN0b3J5LmdldE9yQ3JlYXRlKHNjb3BlKTtcbiAgICBjb25zdCBidWNrZXQgPVxuICAgICAgdGhpcy5wcm9wcy5idWNrZXQgfHxcbiAgICAgIHN0b3JhZ2VGYWN0b3J5Lm5ld0J1Y2tldChzY29wZSwgYCR7aWRQcmVmaXh9L1N0YWdpbmdCdWNrZXRgLCB7XG4gICAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbeyBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDMwKSB9XSxcbiAgICAgIH0pO1xuICAgIGJ1Y2tldC5ncmFudFJlYWQoaW5nZXN0aW9uKTtcblxuICAgIGNvbnN0IGRscSA9IG5ldyBRdWV1ZShzY29wZSwgYCR7aWRQcmVmaXh9L0RMUWAsIHtcbiAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCxcbiAgICAgIHJldGVudGlvblBlcmlvZDogRHVyYXRpb24uZGF5cygxNCksXG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgfSk7XG5cbiAgICBjb25zdCBmb3J3YXJkZXIgPSBuZXcgQ29kZUFydGlmYWN0Rm9yd2FyZGVyKFxuICAgICAgc2NvcGUsXG4gICAgICBgJHtpZFByZWZpeH0vRm9yd2FyZGVyYCxcbiAgICAgIHtcbiAgICAgICAgZGVhZExldHRlclF1ZXVlOiBkbHEsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgWyR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9XSBIYW5kbGUgQ29kZUFydGlmYWN0IEV2ZW50QnJpZGdlIGV2ZW50c2AsXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgQVdTX0VNRl9FTlZJUk9OTUVOVDogJ0xvY2FsJyxcbiAgICAgICAgICBCVUNLRVRfTkFNRTogYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgUVVFVUVfVVJMOiBxdWV1ZS5xdWV1ZVVybCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtb3J5U2l6ZTogMTAyNCxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgICAgfVxuICAgICk7XG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKGZvcndhcmRlcik7XG4gICAgZGVueUxpc3Q/LmdyYW50UmVhZChmb3J3YXJkZXIpO1xuICAgIGxpY2Vuc2VMaXN0LmdyYW50UmVhZChmb3J3YXJkZXIpO1xuICAgIHF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKGZvcndhcmRlcik7XG4gICAgZm9yd2FyZGVyLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWydjb2RlYXJ0aWZhY3Q6R2V0UGFja2FnZVZlcnNpb25Bc3NldCddLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBTdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgICAgIHNlcnZpY2U6ICdjb2RlYXJ0aWZhY3QnLFxuICAgICAgICAgICAgcmVzb3VyY2U6ICdwYWNrYWdlJyxcbiAgICAgICAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgICAgICAgICByZXNvdXJjZU5hbWU6IFtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICAgICAgICAgICducG0nLCAvLyBwYWNrYWdlIGZvcm1hdFxuICAgICAgICAgICAgICAnKicsIC8vIG5hbWVzcGFjZS9wYWNrYWdlLW5hbWVcbiAgICAgICAgICAgIF0uam9pbignLycpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgcnVsZSA9IG5ldyBSdWxlKHNjb3BlLCBgJHtpZFByZWZpeH0vRXZlbnRCcmlkZ2VgLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYCR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9L0V2ZW50QnJpZGdlYCxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBzb3VyY2U6IFsnYXdzLmNvZGVhcnRpZmFjdCddLFxuICAgICAgICBkZXRhaWxUeXBlOiBbJ0NvZGVBcnRpZmFjdCBQYWNrYWdlIFZlcnNpb24gU3RhdGUgQ2hhbmdlJ10sXG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIGRvbWFpbk93bmVyOiBbdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lcl0sXG4gICAgICAgICAgZG9tYWluTmFtZTogW3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZV0sXG4gICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IFt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWVdLFxuICAgICAgICAgIHBhY2thZ2VGb3JtYXQ6IFsnbnBtJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0czogW25ldyBMYW1iZGFGdW5jdGlvbihmb3J3YXJkZXIpXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGZhaWx1cmVBbGFybSA9IGZvcndhcmRlclxuICAgICAgLm1ldHJpY0Vycm9ycygpXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsIGAke2lkUHJlZml4fS9Gb3J3YXJkZXIvRmFpbHVyZXNgLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9L0ZvcndhcmRlcmAsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICBgVGhlIENvZGVBcnRpZmFjdCBmb3dhcmRlciBmb3IgJHtyZXBvc2l0b3J5SWR9IGlzIGZhaWxpbmdgLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBMaW5rIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9yd2FyZGVyKX1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6XG4gICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTUlTU0lORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oXG4gICAgICBgQ29kZUFydGlmYWN0OiR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lfSBGYWlsdXJlc2AsXG4gICAgICBmYWlsdXJlQWxhcm1cbiAgICApO1xuXG4gICAgY29uc3QgZGxxTm90RW1wdHlBbGFybSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICBleHByZXNzaW9uOiAnbVZpc2libGUgKyBtSGlkZGVuJyxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtVmlzaWJsZTogZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoe1xuICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgfSksXG4gICAgICAgIG1IaWRkZW46IGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKHtcbiAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybShzY29wZSwgYCR7aWRQcmVmaXh9L0ZvcndhcmRlci9ETFFOb3RFbXB0eWAsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9L0RMUU5vdEVtcHR5YCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgYFRoZSBDb2RlQXJ0aWZhY3QgZm93YXJkZXIgZm9yICR7cmVwb3NpdG9yeUlkfSBpcyBmYWlsaW5nYCxcbiAgICAgICAgJycsXG4gICAgICAgIGBMaW5rIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9yd2FyZGVyKX1gLFxuICAgICAgICBgTGluayB0byB0aGUgZGVhZCBsZXR0ZXIgcXVldWU6ICR7c3FzUXVldWVVcmwoZGxxKX1gLFxuICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgIGBDb2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9IERMUSBOb3QgRW1wdHlgLFxuICAgICAgZGxxTm90RW1wdHlBbGFybVxuICAgICk7XG5cbiAgICBydWxlLm5vZGUuYWRkRGVwZW5kZW5jeShmYWlsdXJlQWxhcm0sIGRscU5vdEVtcHR5QWxhcm0pO1xuXG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBgQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfSBETFFgLFxuICAgICAgZGxxXG4gICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBmb3J3YXJkZXIsXG4gICAgICBgJHtpZFByZWZpeH0vRm9yd2FyZGVyTGFtYmRhYFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYENvZGVBcnRpZmFjdDogJHtyZXBvc2l0b3J5SWR9YCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ29kZUFydGlmYWN0JyxcbiAgICAgICAgICB1cmw6IGNvZGVBcnRpZmFjdFJlcG9zaXRvcnlVcmwodGhpcy5wcm9wcy5yZXBvc2l0b3J5KSxcbiAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0ZvcndhcmRlciBGdW5jdGlvbicsXG4gICAgICAgICAgdXJsOiBsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1NlYXJjaCBMb2cgZ3JvdXAnLFxuICAgICAgICAgIHVybDogbGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoZm9yd2FyZGVyKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdETFEnLFxuICAgICAgICAgIHVybDogc3FzUXVldWVVcmwoZGxxKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkYXNoYm9hcmRXaWRnZXRzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdGdW5jdGlvbiBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvcndhcmRlci5tZXRyaWNJbnZvY2F0aW9ucyh7IGxhYmVsOiAnSW52b2NhdGlvbnMnIH0pKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb3J3YXJkZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW2ZvcndhcmRlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0RlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVmlzaWJsZSBNZXNzYWdlcycsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSGlkZGVuIE1lc3NhZ2VzJyxcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1F1YWxpdHkgTWV0cmljcycsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNOb3RKc2lpRW5hYmxlZENvdW50KHsgbGFiZWw6ICdOb3QgYSBqc2lpIHBhY2thZ2UnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHsgbGFiZWw6ICdJbmVsaWdpYmxlIExpY2Vuc2UnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0RlbnlMaXN0ZWRDb3VudCh7IGxhYmVsOiAnRGVueSBMaXN0ZWQnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0RlbGV0ZWRDb3VudCh7IGxhYmVsOiAnRGVsZXRpb24gRXZlbnRzJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpZ25vcmVkIGR1ZSB0byBiZWluZyBpbiB0aGUgZGVueSBsaXN0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0RlbnlMaXN0ZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyLFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkRFTllfTElTVEVEX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCB3ZXJlIGlnbm9yZWQgZHVlIHRvIHVzaW5nIGFuIGluZWxvaWdpYmxlIGxpY2Vuc2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSW5lbGlnaWJsZUxpY2Vuc2Uob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTpcbiAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyID8/IEF3cy5BQ0NPVU5UX0lELFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLklORUxJR0lCTEVfTElDRU5TRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBkZWxldGVkIGZyb20gQ29kZUFydGlmYWN0ICh0aG9zZSBldmVudHMgYXJlIG5vdFxuICAgKiBoYW5kbGVkIGN1cnJlbnRseSkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljRGVsZXRlZENvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBbRE9NQUlOX09XTkVSX0RJTUVOU0lPTl06XG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lciA/PyBBd3MuQUNDT1VOVF9JRCxcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5ERUxFVEVEX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCBkbyBub3QgaGF2ZSBhIGpzaWkgYXNzZW1ibHkgaW4gdGhlIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTm90SnNpaUVuYWJsZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOlxuICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXIgPz8gQXdzLkFDQ09VTlRfSUQsXG4gICAgICAgIFtET01BSU5fTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgIFtSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuTk9UX0pTSUlfRU5BQkxFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -534,7 +534,7 @@ class NpmJs {
534
534
  }
535
535
  exports.NpmJs = NpmJs;
536
536
  _a = JSII_RTTI_SYMBOL_1;
537
- NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.96" };
537
+ NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.97" };
538
538
  /**
539
539
  * How often 'rate' goes into 'duration' (rounded up)
540
540
  */
@@ -50,7 +50,7 @@ class TagCondition {
50
50
  }
51
51
  exports.TagCondition = TagCondition;
52
52
  _a = JSII_RTTI_SYMBOL_1;
53
- TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.96" };
53
+ TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.97" };
54
54
  /**
55
55
  * Logic operators for performing specific conditional logic.
56
56
  */
@@ -130,7 +130,7 @@ class TagConditionField {
130
130
  }
131
131
  exports.TagConditionField = TagConditionField;
132
132
  _b = JSII_RTTI_SYMBOL_1;
133
- TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.96" };
133
+ TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.97" };
134
134
  /**
135
135
  * Target the README of the package to dictate whether a tag is relevant.
136
136
  */
@@ -147,5 +147,5 @@ class TagConditionReadme {
147
147
  }
148
148
  exports.TagConditionReadme = TagConditionReadme;
149
149
  _c = JSII_RTTI_SYMBOL_1;
150
- TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.96" };
150
+ TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.97" };
151
151
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE4RUEsSUFBWSxrQkFHWDtBQUhELFdBQVksa0JBQWtCO0lBQzVCLG1EQUE2QixDQUFBO0lBQzdCLHVDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxrQkFBa0IsR0FBbEIsMEJBQWtCLEtBQWxCLDBCQUFrQixRQUc3QjtBQXNCRDs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUFDaEM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQXFCO1FBQ2pDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFxQjtRQUNoQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFxQjtRQUNqQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFjO1FBQzVCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNYLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O0FBdkNILG9DQTBDQzs7O0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0Isb0NBQVcsQ0FBQTtJ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dCB7IFBhY2thZ2VUYWdHcm91cCB9IGZyb20gJy4uL3BhY2thZ2UtdGFnLWdyb3VwJztcblxuaW50ZXJmYWNlIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIHRhZyBiZWluZyBhcHBsaWVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaGV4IHZhbHVlIHN0cmluZyBmb3IgdGhlIGNvbG9yIG9mIHRoZSB0YWcgd2hlbiBkaXNwbGF5ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQgZXh0ZW5kcyBQYWNrYWdlVGFnUHJlc2VudGF0aW9uQmFzZSB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodCBleHRlbmRzIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIEljb24gZGlzcGxheWVkIG5leHQgdG8gaGlnaGxpZ2h0IG9uIHBhY2thZ2UgY2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hGaWx0ZXIge1xuICAvKipcbiAgICogRGlzcGxheSBuYW1lIGZvciBmaWx0ZXJcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXk6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiBncm91cCB0byBpbmNsdWRlIGZpbHRlciBpblxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGdyb3VwYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBncm91cEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlVGFnR3JvdXAgdG8gaW5jbHVkZSBmaWx0ZXIgaW5cbiAgICovXG4gIHJlYWRvbmx5IGdyb3VwPzogUGFja2FnZVRhZ0dyb3VwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgZm9yIHRhZywgdXNlZCBmb3Igc2VhcmNoLiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHRhZ3MuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBoaWdsaWdodGluZyB0YWcgb24gcGFja2FnZSBjYXJkXG4gICAqIEBkZWZhdWx0IGRvbid0IGhpZ2hsaWdodCB0YWdcbiAgICovXG4gIHJlYWRvbmx5IGhpZ2hsaWdodD86IEhpZ2hsaWdodDtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3Igc2hvd2luZyB0YWcgYXMga2V5d29yZFxuICAgKiBAZGVmYXVsdCBkb24ndCBzaG93IHRhZyBpbiBrZXl3b3JkIGxpc3RcbiAgICovXG4gIHJlYWRvbmx5IGtleXdvcmQ/OiBLZXl3b3JkO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBzaG93aW5nIHRhZyBhcyBzZWFyY2ggZmlsdGVyXG4gICAqIEBkZWZhdWx0IGRvbid0IHNob3cgdGFnIGluIHNlYXJjaCBmaWx0ZXJzXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hGaWx0ZXI/OiBTZWFyY2hGaWx0ZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYXBwbHlpbmcgY3VzdG9tIHRhZ3MgdG8gcmVsZXZhbnQgcGFja2FnZXMuIEN1c3RvbSB0YWdzIGFyZVxuICogZGlzcGxheWVkIG9uIHRoZSBwYWNrYWdlIGRldGFpbHMgcGFnZSwgYW5kIGNhbiBiZSB1c2VkIGZvciBzZWFyY2hpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZyBleHRlbmRzIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbG9naWMgdGhhdCBkaWN0YXRlcyB3aGV0aGVyIHRoZVxuICAgKiBwYWNrYWdlIGhhcyB0aGUgdGFnIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gVGFnQ29uZGl0aW9uU291cmNlIHtcbiAgUEFDS0FHRV9KU09OID0gJ1BBQ0tBR0VfSlNPTicsXG4gIFJFQURNRSA9ICdSRUFETUUnLFxufVxuXG4vKipcbiAqIFNlcmlhbGl6ZWQgY29uZmlnIGZvciBhIHRhZyBjb25kaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdDb25kaXRpb25Db25maWcge1xuICByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGU7XG4gIHJlYWRvbmx5IHNvdXJjZT86IFRhZ0NvbmRpdGlvblNvdXJjZTtcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBUYWdDb25kaXRpb25Db25maWdbXTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVkIHRhZyBkZWNsYXJhdGlvbiB0byBiZSBwYXNzZWQgdG8gbGFtYmRhcyB2aWEgZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVGFnQ29uZmlnIGV4dGVuZHMgUGFja2FnZVRhZ0Jhc2Uge1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBDb25kaXRpb24gZm9yIGFwcGx5aW5nIGEgY3VzdG9tIHRhZyB0byBhIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWdDb25kaXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuICYmIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIG9ubHkgd2hlbiBhbGwgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmVcbiAgICogdHJ1ZS5cbiAgICovXG4gIHN0YXRpYyBhbmQoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5BTkQsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gfHwgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgYW55IG9mIHRoZSBjb25kaXRpb24gYXJndW1lbnRzIGFyZVxuICAgKiB0cnVlLlxuICAgKi9cbiAgc3RhdGljIG9yKC4uLmNvbmRzOiBUYWdDb25kaXRpb25bXSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25Mb2dpYyhUYWdDb25kaXRpb25Mb2dpY1R5cGUuT1IsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSAhIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBjb25kaXRpb24gYXJndW1lbnQgaXMgZmFsc2VcbiAgICovXG4gIHN0YXRpYyBub3QoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5OT1QsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYXJnZXQgYSBmaWVsZCB3aXRoaW4gdGhlIGBwYWNrYWdlLmpzb25gIHRvIGFzc2VydCBhZ2FpbnN0LiBOZXN0ZWQgZmllbGRzXG4gICAqIGNhbiBiZSBhY2Nlc3NlZCBieSBwYXNzaW5nIG11bHRpcGxlIGtleXMuXG4gICAqIGBUYWdDb25kaXRpb24uZmllbGQoJ2tleTEnLCAna2V5MicpYCB3aWxsIGFjY2Vzc1xuICAgKiBgcGFja2FnZUpzb24/LmtleTE/LmtleTJgLlxuICAgKi9cbiAgc3RhdGljIGZpZWxkKC4uLmtleXM6IHN0cmluZ1tdKTogVGFnQ29uZGl0aW9uRmllbGQge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uRmllbGQoa2V5cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29uZGl0aW9uIHdpdGggbG9naWMgdGFyZ2V0aW5nIHRoZSBSRUFETUUgb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICBzdGF0aWMgcmVhZG1lKCk6IFRhZ0NvbmRpdGlvblJlYWRtZSB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25SZWFkbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBMb2dpYyBvcGVyYXRvcnMgZm9yIHBlcmZvcm1pbmcgc3BlY2lmaWMgY29uZGl0aW9uYWwgbG9naWMuXG4gKi9cbmV4cG9ydCBlbnVtIFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZSB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUicsXG4gIE5PVCA9ICdOT1QnLFxuICBFUVVBTFMgPSAnRVFVQUxTJyxcbiAgSU5DTFVERVMgPSAnSU5DTFVERVMnLFxuICBTVEFSVFNfV0lUSCA9ICdTVEFSVFNfV0lUSCcsXG59XG5cbmNsYXNzIFRhZ0NvbmRpdGlvbkxvZ2ljIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzTG9naWMgPSB0cnVlO1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGlsZHJlbjogVGFnQ29uZGl0aW9uW11cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNoaWxkcmVuLm1hcCgoY29uZCkgPT4gY29uZC5iaW5kKCkpLFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgVGFnQ29uZGl0aW9uUHJlZGljYXRlIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJlZGljYXRlID0gdHJ1ZTtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogVGFnQ29uZGl0aW9uTG9naWNUeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc291cmNlPzogVGFnQ29uZGl0aW9uU291cmNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Pzogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZT86IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM/OiBUYWdDb25kaXRpb25JbmNsdWRlc09wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRhcmdldCBhIGZpZWxkIHRvIHVzZSBpbiBsb2dpYyB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25GaWVsZCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBzdHJpbmdbXSkge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgPT09IGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBzcGVjaWZpZWQgZmllbGQgd2l0aGluIHRoZVxuICAgKiBwYWNrYWdlJ3MgcGFja2FnZS5qc29uIGlzIGVxdWFsIHRvIHRoZSBwYXNzZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgZXEodmFsdWU6IGFueSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuRVFVQUxTLFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIHNwZWNpZmllZFxuICAgKiBmaWVsZCB3aXRoaW4gdGhlIHBhY2thZ2UncyBwYWNrYWdlLmpzb24gaW5jbHVkZXMgdGhlIHZhbHVlLiBUaGlzIHdvcmtzIGZvclxuICAgKiBhcnJheXMgb3Igc3RyaW5ncy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUEFDS0FHRV9KU09OLFxuICAgICAgdGhpcy5maWVsZCxcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLnN0YXJ0c1dpdGgodmFsdWUpYCBjb25kaXRpb24gd2hpY2ggYXBwbGllcyBpZiB0aGUgc3BlY2lmaWVkXG4gICAqIGZpZWxkIHdpdGhpbiB0aGUgcGFja2FnZSdzIHBhY2thZ2UuanNvbiBiZWdpbnMgd2l0aCB0aGUgdmFsdWUuIFRoaXMgd29ya3NcbiAgICogb25seSBmb3Igc3RyaW5nIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGFydHNXaXRoKHZhbHVlOiBzdHJpbmcpOiBUYWdDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uUHJlZGljYXRlKFxuICAgICAgVGFnQ29uZGl0aW9uTG9naWNUeXBlLlNUQVJUU19XSVRILFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUYXJnZXQgdGhlIFJFQURNRSBvZiB0aGUgcGFja2FnZSB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25SZWFkbWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgcmVhZG1lLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIFJFQURNRVxuICAgKiBpbmNsdWRlcyB0aGUgc3BlY2lmaWVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUkVBRE1FLFxuICAgICAgdW5kZWZpbmVkLCAvLyBubyBrZXlcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgaW5jbHVkZXNgIG9wZXJhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBhcHBlYXIgYXQgbGVhc3QgdGhpcyBtYW55IHRpbWVzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBhdExlYXN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdHJpbmcgbWF0Y2hlcyBtdXN0IG1hdGNoIHRoZSBjYXNpbmcgb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gVGhpcyBvcHRpb25cbiAgICogaXMgaWdub3JlZCBpZiB0aGUgdmFsdWUgd2UgYXJlIGNoZWNraW5nIGlzIGFuIGFycmF5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XG59XG4iXX0=
@@ -13,7 +13,7 @@ class FilterType {
13
13
  }
14
14
  exports.FilterType = FilterType;
15
15
  _a = JSII_RTTI_SYMBOL_1;
16
- FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.96" };
16
+ FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.97" };
17
17
  class FilterTypeRadio extends FilterType {
18
18
  bind() {
19
19
  return { type: 'radio' };
@@ -45,5 +45,5 @@ class PackageTagGroup {
45
45
  }
46
46
  exports.PackageTagGroup = PackageTagGroup;
47
47
  _b = JSII_RTTI_SYMBOL_1;
48
- PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.96" };
48
+ PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.97" };
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWctZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxNQUFzQixVQUFVO0lBQzlCLE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBUEgsZ0NBVUM7OztBQUVELE1BQU0sZUFBZ0IsU0FBUSxVQUFVO0lBQy9CLElBQUk7UUFDVCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sa0JBQW1CLFNBQVEsVUFBVTtJQUNsQyxJQUFJO1FBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUF3QkQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFLMUIsWUFBNEIsRUFBVSxFQUFFLEtBQTRCO1FBQXhDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0UsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztJQUNKLENBQUM7O0FBbEJILDBDQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyVHlwZVZhbHVlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2NoZWNrYm94JyB8ICdyYWRpbyc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWx0ZXJUeXBlIHtcbiAgc3RhdGljIGNoZWNrYm94KCk6IEZpbHRlclR5cGUge1xuICAgIHJldHVybiBuZXcgRmlsdGVyVHlwZUNoZWNrYm94KCk7XG4gIH1cblxuICBzdGF0aWMgcmFkaW8oKTogRmlsdGVyVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJUeXBlUmFkaW8oKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZTtcbn1cblxuY2xhc3MgRmlsdGVyVHlwZVJhZGlvIGV4dGVuZHMgRmlsdGVyVHlwZSB7XG4gIHB1YmxpYyBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZSB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ3JhZGlvJyB9O1xuICB9XG59XG5cbmNsYXNzIEZpbHRlclR5cGVDaGVja2JveCBleHRlbmRzIEZpbHRlclR5cGUge1xuICBwdWJsaWMgYmluZCgpOiBGaWx0ZXJUeXBlVmFsdWUge1xuICAgIHJldHVybiB7IHR5cGU6ICdjaGVja2JveCcgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdHcm91cFByb3BzIHtcbiAgLyoqXG4gICAqIEdyb3VwIGxhYmVsIHRvIGRpc3BsYXkuIEZhbGxzIGJhY2sgdG8gaWQgaWYgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1lc3NhZ2UgdG8gc2hvdyB3aXRoaW4gYSB0b29sdGlwIG5leHQgdG8gdGhlIGZpbHRlciBsYWJlbFxuICAgKi9cbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzcGVjaWZ5IHRoZSBncm91cCBmaWx0ZXIgdHlwZS4gRGVmYXVsdHMgdG8gY2hlY2tib3ggaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyVHlwZT86IEZpbHRlclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIGN1c3RvbSBwYWNrYWdlIHRhZyBncm91cFxuICovXG5leHBvcnQgY2xhc3MgUGFja2FnZVRhZ0dyb3VwIHtcbiAgcHVibGljIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsIHByb3BzPzogUGFja2FnZVRhZ0dyb3VwUHJvcHMpIHtcbiAgICB0aGlzLmxhYmVsID0gcHJvcHM/LmxhYmVsO1xuICAgIHRoaXMudG9vbHRpcCA9IHByb3BzPy50b29sdGlwO1xuICAgIHRoaXMuZmlsdGVyVHlwZSA9IChwcm9wcz8uZmlsdGVyVHlwZSA/PyBGaWx0ZXJUeXBlLmNoZWNrYm94KCkpLmJpbmQoKS50eXBlO1xuICB9XG5cbiAgcHVibGljIGJpbmQoKTogUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgIHRvb2x0aXA6IHRoaXMudG9vbHRpcCxcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMuZmlsdGVyVHlwZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -31,5 +31,5 @@ class PreloadFile {
31
31
  }
32
32
  exports.PreloadFile = PreloadFile;
33
33
  _a = JSII_RTTI_SYMBOL_1;
34
- PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.96" };
34
+ PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.97" };
35
35
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJlbG9hZC1maWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQWtDO0FBRWxDOzs7R0FHRztBQUNILE1BQWEsV0FBVztJQWdCdEIsWUFBNkIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDO0lBZjdDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGlCQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBSU0sSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDOztBQXBCSCxrQ0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGphdmFzY3JpcHQgZmlsZSB0byBsb2FkIGJlZm9yZSB0aGUgd2ViYXBwLlxuICogVGhpcyBjYW4gYWxsb3cgb3BlcmF0b3JzIHRvIGFkZCB0aGVpciBvd24gY2xpZW50IG1vbml0b3JzIG9yIGFuYWx5dGljcyBpZiB0aGV5IHdpc2hcbiAqL1xuZXhwb3J0IGNsYXNzIFByZWxvYWRGaWxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQcmVsb2FkRmlsZSBpbnN0YW5jZSBmcm9tIGEgZmlsZXBhdGggdG8gbG9hZFxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlKHBhdGg6IHN0cmluZyk6IFByZWxvYWRGaWxlIHtcbiAgICBjb25zdCBkYXRhID0gcmVhZEZpbGVTeW5jKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgcmV0dXJuIG5ldyBQcmVsb2FkRmlsZShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUHJlbG9hZEZpbGUgaW5zdGFuY2UgZGlyZWN0bHkgZnJvbSBzb3VyY2UgY29kZVxuICAgKi9cbiAgc3RhdGljIGZyb21Db2RlKGNvZGU6IHN0cmluZyk6IFByZWxvYWRGaWxlIHtcbiAgICByZXR1cm4gbmV3IFByZWxvYWRGaWxlKGNvZGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYXRhOiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIGJpbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG59XG4iXX0=
package/lib/s3/storage.js CHANGED
@@ -52,6 +52,6 @@ class S3StorageFactory extends constructs_1.Construct {
52
52
  }
53
53
  exports.S3StorageFactory = S3StorageFactory;
54
54
  _a = JSII_RTTI_SYMBOL_1;
55
- S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.96" };
55
+ S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.97" };
56
56
  S3StorageFactory.UID = 'S3StorageFactory';
57
57
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zMy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXFEO0FBQ3JELHlDQUF5QztBQUN6QywyQ0FBdUM7QUFjdkM7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBc0I3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixRQUErQixFQUFFO1FBRWpDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBNUJEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUN2QixLQUFnQixFQUNoQixRQUErQixFQUFFO1FBRWpDLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFxQixDQUFDO0lBQ3hFLENBQUM7SUFlRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUNkLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQjtRQUV0QixTQUFTLFdBQVcsQ0FBQyxNQUFpQjtZQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0Qsa0JBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUzQyxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUN0QyxXQUFXLEVBQUUsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDM0MsS0FBSyxFQUFFLG9CQUFvQixNQUFNLENBQUMsVUFBVSxTQUFTLFNBQVMsQ0FBQyxVQUFVLEVBQUU7YUFDNUUsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELDZFQUE2RTtRQUM3RSxrRkFBa0Y7UUFDbEYseUJBQXlCO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xELENBQUM7O0FBNURILDRDQTZEQzs7O0FBM0N5QixvQkFBRyxHQUFHLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBTdGFjaywgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgUzNTdG9yYWdlRmFjdG9yeWBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM1N0b3JhZ2VGYWN0b3J5UHJvcHMge1xuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZmFjdG9yeSB3aWxsIHJldHVybiB0aGUgZmFpbG92ZXIgYnVja2V0cyBpbnN0ZWFkIG9mIHRoZSBwcmltYXJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbG92ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBzMyBzdG9yYWdlIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFMzU3RvcmFnZUZhY3RvcnkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0cmlldmUgb3IgY3JlYXRlIHRoZSBzdG9yYWdlIGZhY3RvcnkgZm9yIHRoZSBjdXJyZW50IHNjb3BlLlxuICAgKlxuICAgKiBUaGlzIGlzIHN0YWNrIHNpbmdsZXRvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcm9wczogUzNTdG9yYWdlRmFjdG9yeVByb3BzID0ge31cbiAgKTogUzNTdG9yYWdlRmFjdG9yeSB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gICAgY29uc3QgZmFjdG9yeSA9IHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKFMzU3RvcmFnZUZhY3RvcnkuVUlEKTtcbiAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgIHJldHVybiBuZXcgUzNTdG9yYWdlRmFjdG9yeShzdGFjaywgUzNTdG9yYWdlRmFjdG9yeS5VSUQsIHByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWNrLm5vZGUuZmluZENoaWxkKFMzU3RvcmFnZUZhY3RvcnkuVUlEKSBhcyBTM1N0b3JhZ2VGYWN0b3J5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVUlEID0gJ1MzU3RvcmFnZUZhY3RvcnknO1xuXG4gIHByaXZhdGUgZmFpbG92ZXJBY3RpdmU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFMzU3RvcmFnZUZhY3RvcnlQcm9wcyA9IHt9XG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5mYWlsb3ZlckFjdGl2ZSA9IHByb3BzLmZhaWxvdmVyID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBidWNrZXQgaW4gYSBzdG9yYWdlIGNvbmZpZyBhd2FyZSBtYW5uZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHMzLkJ1Y2tldFxuICAgKi9cbiAgcHVibGljIG5ld0J1Y2tldChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBzMy5CdWNrZXRQcm9wc1xuICApOiBzMy5CdWNrZXQge1xuICAgIGZ1bmN0aW9uIGZhaWxvdmVyRm9yKGJ1Y2tldDogczMuQnVja2V0KTogczMuQnVja2V0IHtcbiAgICAgIGNvbnN0IF9mYWlsb3ZlciA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGBGYWlsb3ZlciR7aWR9YCwgcHJvcHMpO1xuICAgICAgVGFncy5vZihfZmFpbG92ZXIpLmFkZCgnZmFpbG92ZXInLCAndHJ1ZScpO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCAnU25hcHNob3RDb21tYW5kJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogYFNuYXBzaG90ICR7YnVja2V0Lm5vZGUucGF0aH1gLFxuICAgICAgICB2YWx1ZTogYGF3cyBzMyBzeW5jIHMzOi8vJHtidWNrZXQuYnVja2V0TmFtZX0gczM6Ly8ke19mYWlsb3Zlci5idWNrZXROYW1lfWAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBfZmFpbG92ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgcHJpbWFyeSA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBub3RlIHRoYXQgd2UgY3JlYXRlIHRoZSBmYWlsb3ZlciBidWNrZXQgZXZlbiBpZiB3ZSBkb24ndCBjdXJyZW50bHkgdXNlIGl0LlxuICAgIC8vIHRoaXMgaXMgYmVjYXVzZSBjb25kaXRpb25pbmcgYnVja2V0IGNyZWF0aW9uIHdpbGwgZXZlbnR1YWxseSBmYWlsIHNpbmNlIGJ1Y2tldHNcbiAgICAvLyBhcmUgbm9ybWFsbHkgcmV0YWluZWQuXG4gICAgY29uc3QgZmFpbG92ZXIgPSBmYWlsb3ZlckZvcihwcmltYXJ5KTtcblxuICAgIHJldHVybiB0aGlzLmZhaWxvdmVyQWN0aXZlID8gZmFpbG92ZXIgOiBwcmltYXJ5O1xuICB9XG59XG4iXX0=
@@ -245,7 +245,7 @@ class SpdxLicense {
245
245
  }
246
246
  exports.SpdxLicense = SpdxLicense;
247
247
  _a = JSII_RTTI_SYMBOL_1;
248
- SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.4.96" };
248
+ SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.4.97" };
249
249
  SpdxLicense._ALL = new Map();
250
250
  //#region Individual SPDX Licenses
251
251
  /**
package/package.json CHANGED
@@ -182,7 +182,7 @@
182
182
  "main": "lib/index.js",
183
183
  "license": "Apache-2.0",
184
184
  "homepage": "https://github.com/cdklabs",
185
- "version": "0.4.96",
185
+ "version": "0.4.97",
186
186
  "jest": {
187
187
  "maxConcurrency": 2,
188
188
  "moduleNameMapper": {